From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 12/27] drm/i915: Move request runtime management onto gt Date: Wed, 25 Sep 2019 11:57:53 +0100 Message-ID: References: <20190925100137.17956-1-chris@chris-wilson.co.uk> <20190925100137.17956-13-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id E1E406EB99 for ; Wed, 25 Sep 2019 10:57:57 +0000 (UTC) In-Reply-To: <20190925100137.17956-13-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDI1LzA5LzIwMTkgMTE6MDEsIENocmlzIFdpbHNvbiB3cm90ZToKPiBSZXF1ZXN0cyBhcmUg cnVuIGZyb20gdGhlIGd0IGFuZCBhcmUgdGlkZWQgaW50byB0aGUgZ3QgcnVudGltZSBwb3dlcgo+ IG1hbmFnZW1lbnQsIHNvIHB1bGwgdGhlIHJ1bnRpbWUgcmVxdWVzdCBtYW5hZ2VtZW50IHVuZGVy IGd0Lwo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAg ICAgICAgIHwgICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFu LmMgICAgICB8ICAgNiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3Bt LmMgICAgICAgIHwgIDIyICstLS0KPiAgIC4uLi9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVf Z2VtX2NvbnRleHQuYyB8ICAgNSArLQo+ICAgLi4uL2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkx NV9nZW1fbW1hbi5jICAgIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9ndC5jICAgICAgICAgICAgfCAgIDIgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZ3RfcG0uYyAgICAgICAgIHwgICAzICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2d0X3JlcXVlc3RzLmMgICB8IDEyMyArKysrKysrKysrKysrKysrKysKPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3JlcXVlc3RzLmggICB8ICAyNCArKysrCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oICAgICAgfCAgMTEgKysKPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMgICB8ICAgOCArLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAgIHwgIDE3ICstLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgIDEwIC0t Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAgMTcg LS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jICAgICAgICAgfCAg MTQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICAgICB8 ICAgNSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgICAgICAgICAg IHwgIDY0ICstLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0Lmgg ICAgICAgICAgIHwgICA3ICstCj4gICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1 c2hfdGVzdC5jICAgfCAgIDkgKy0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9s aXZlX3Rlc3QuYyAgICB8ICAgNSArLQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9j a19nZW1fZGV2aWNlLmMgIHwgIDEwICstCj4gICAyMSBmaWxlcyBjaGFuZ2VkLCAyMTEgaW5zZXJ0 aW9ucygrKSwgMTU0IGRlbGV0aW9ucygtKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3JlcXVlc3RzLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9yZXF1ZXN0cy5oCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUKPiBpbmRleCA2MzEzZTdiNGJkNzguLmNiYTE5NDcwZmViNSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlCj4gQEAgLTgzLDYgKzgzLDcgQEAgZ3QteSArPSBcCj4gICAJZ3QvaW50 ZWxfZ3RfaXJxLm8gXAo+ICAgCWd0L2ludGVsX2d0X3BtLm8gXAo+ICAgCWd0L2ludGVsX2d0X3Bt X2lycS5vIFwKPiArCWd0L2ludGVsX2d0X3JlcXVlc3RzLm8gXAo+ICAgCWd0L2ludGVsX2hhbmdj aGVjay5vIFwKPiAgIAlndC9pbnRlbF9scmMubyBcCj4gICAJZ3QvaW50ZWxfcmVuZGVyc3RhdGUu byBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9tbWFu LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fbW1hbi5jCj4gaW5kZXggOWNi NTlmZTFhNzM2Li45NmMwOWQ0MGJiN2EgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX21tYW4uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9tbWFuLmMKPiBAQCAtOCw2ICs4LDcgQEAKPiAgICNpbmNsdWRlIDxsaW51eC9zaXpl cy5oPgo+ICAgCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIKPiArI2luY2x1ZGUgImd0L2lu dGVsX2d0X3JlcXVlc3RzLmgiCj4gICAKPiAgICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAgI2lu Y2x1ZGUgImk5MTVfZ2VtX2d0dC5oIgo+IEBAIC00MjMsNiArNDI0LDcgQEAgdm9pZCBpOTE1X2dl bV9vYmplY3RfcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4g ICBzdGF0aWMgaW50IGNyZWF0ZV9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkx NShvYmotPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSAmaTkxNS0+Z3Q7Cj4g ICAJaW50IGVycjsKPiAgIAo+ICAgCWVyciA9IGRybV9nZW1fY3JlYXRlX21tYXBfb2Zmc2V0KCZv YmotPmJhc2UpOwo+IEBAIC00MzEsNyArNDMzLDcgQEAgc3RhdGljIGludCBjcmVhdGVfbW1hcF9v ZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIAo+ICAgCS8qIEF0dGVt cHQgdG8gcmVhcCBzb21lIG1tYXAgc3BhY2UgZnJvbSBkZWFkIG9iamVjdHMgKi8KPiAgIAlkbyB7 Cj4gLQkJZXJyID0gaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShpOTE1LCBNQVhfU0NIRURVTEVfVElN RU9VVCk7Cj4gKwkJZXJyID0gaW50ZWxfZ3Rfd2FpdF9mb3JfaWRsZShndCwgTUFYX1NDSEVEVUxF X1RJTUVPVVQpOwoKSXQgbWF5IGJlIHVzZWZ1bCB0byBrZWVwIHRoZSBpOTE1X2dlbV93YWl0X2Zv cl9pZGxlIGFzIHRyaXZpYWwgd3JhcHBlciAKd2hpY2ggY2FuIHRoZW4gY2FsbCBpbnRlbF9ndF93 YWl0X2Zvcl9pZGxlLiBLZWVwcyB0aGUgc2VwYXJhdGlvbiBvZiBHRU0gCmFuZCBHVCBiZXR0ZXIs IGJ1dCBhbHNvLi4KPiAgIAkJaWYgKGVycikKPiAgIAkJCWJyZWFrOwo+ICAgCj4gQEAgLTQ0MCw3 ICs0NDIsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9tbWFwX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQo+ICAgCQlpZiAoIWVycikKPiAgIAkJCWJyZWFrOwo+ICAgCj4gLQl9 IHdoaWxlIChmbHVzaF9kZWxheWVkX3dvcmsoJmk5MTUtPmdlbS5yZXRpcmVfd29yaykpOwo+ICsJ fSB3aGlsZSAoZmx1c2hfZGVsYXllZF93b3JrKCZndC0+cmVxdWVzdHMucmV0aXJlX3dvcmspKTsK Ci4uIGhlcmUgY291bGQgYmUgY29uc2lkZXJlZCBhIGxheWVyaW5nIHZpb2xhdGlvbiB0aGF0IEdF TSBpcyBwZWVraW5nIAppbnRvIEdUIGludGVybmFscyBsaWtlIHRoaXMuIFNoYWxsIHdlIGhhdmUg YW5vdGhlciB3cmFwcGVyIGxpa2UgCmk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19zeW5jIHdoaWNo IHdvdWxkIGNhbGwgaW50ZWxfZ3RfcmV0aXJlX3JlcXVlc3RzIAphbmQgbmV3IGludGVsX2d0X2Zs dXNoX3JldGlyZSwgb3Igc29tZXRoaW5nPwoKPiAgIAo+ICAgCXJldHVybiBlcnI7Cj4gICB9Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMKPiBpbmRleCAwNGE5YTI3ZDY1OWQu LjFlMTgwNDVlZTk4MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5j Cj4gQEAgLTcsMzEgKzcsMTggQEAKPiAgICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fcG0uaCIKPiAg ICNpbmNsdWRlICJndC9pbnRlbF9ndC5oIgo+ICAgI2luY2x1ZGUgImd0L2ludGVsX2d0X3BtLmgi Cj4gKyNpbmNsdWRlICJndC9pbnRlbF9ndF9yZXF1ZXN0cy5oIgo+ICAgCj4gICAjaW5jbHVkZSAi aTkxNV9kcnYuaCIKPiAgICNpbmNsdWRlICJpOTE1X2dsb2JhbHMuaCIKPiAgIAo+ICAgc3RhdGlj IHZvaWQgaTkxNV9nZW1fcGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsK PiAtCWNhbmNlbF9kZWxheWVkX3dvcmsoJmk5MTUtPmdlbS5yZXRpcmVfd29yayk7Cj4gLQo+ICAg CWk5MTVfdm1hX3BhcmtlZChpOTE1KTsKPiAgIAo+ICAgCWk5MTVfZ2xvYmFsc19wYXJrKCk7Cj4g ICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgcmV0aXJlX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0KPiAt CQljb250YWluZXJfb2Yod29yaywgdHlwZW9mKCppOTE1KSwgZ2VtLnJldGlyZV93b3JrLndvcmsp Owo+IC0KPiAtCWk5MTVfcmV0aXJlX3JlcXVlc3RzKGk5MTUpOwo+IC0KPiAtCXF1ZXVlX2RlbGF5 ZWRfd29yayhpOTE1LT53cSwKPiAtCQkJICAgJmk5MTUtPmdlbS5yZXRpcmVfd29yaywKPiAtCQkJ ICAgcm91bmRfamlmZmllc191cF9yZWxhdGl2ZShIWikpOwo+IC19Cj4gLQo+ICAgc3RhdGljIGlu dCBwbV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAo+ICAgCQkgICAgICAgdW5z aWduZWQgbG9uZyBhY3Rpb24sCj4gICAJCSAgICAgICB2b2lkICpkYXRhKQo+IEBAIC00Miw5ICsy OSw2IEBAIHN0YXRpYyBpbnQgcG1fbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwK PiAgIAlzd2l0Y2ggKGFjdGlvbikgewo+ICAgCWNhc2UgSU5URUxfR1RfVU5QQVJLOgo+ICAgCQlp OTE1X2dsb2JhbHNfdW5wYXJrKCk7Cj4gLQkJcXVldWVfZGVsYXllZF93b3JrKGk5MTUtPndxLAo+ IC0JCQkJICAgJmk5MTUtPmdlbS5yZXRpcmVfd29yaywKPiAtCQkJCSAgIHJvdW5kX2ppZmZpZXNf dXBfcmVsYXRpdmUoSFopKTsKPiAgIAkJYnJlYWs7Cj4gICAKPiAgIAljYXNlIElOVEVMX0dUX1BB Uks6Cj4gQEAgLTU5LDcgKzQzLDcgQEAgc3RhdGljIGJvb2wgc3dpdGNoX3RvX2tlcm5lbF9jb250 ZXh0X3N5bmMoc3RydWN0IGludGVsX2d0ICpndCkKPiAgIHsKPiAgIAlib29sIHJlc3VsdCA9ICFp bnRlbF9ndF9pc193ZWRnZWQoZ3QpOwo+ICAgCj4gLQlpZiAoaTkxNV9nZW1fd2FpdF9mb3JfaWRs ZShndC0+aTkxNSwgSTkxNV9HRU1fSURMRV9USU1FT1VUKSA9PSAtRVRJTUUpIHsKPiArCWlmIChp bnRlbF9ndF93YWl0X2Zvcl9pZGxlKGd0LCBJOTE1X0dFTV9JRExFX1RJTUVPVVQpID09IC1FVElN RSkgewo+ICAgCQkvKiBYWFggaGlkZSB3YXJuaW5nIGZyb20gZ2VtX2VpbyAqLwo+ICAgCQlpZiAo aTkxNV9tb2RwYXJhbXMucmVzZXQpIHsKPiAgIAkJCWRldl9lcnIoZ3QtPmk5MTUtPmRybS5kZXYs Cj4gQEAgLTIzOSw4ICsyMjMsNiBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAo+ICAgdm9pZCBpOTE1X2dlbV9pbml0X19wbShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAtCUlOSVRfREVMQVlFRF9XT1JLKCZpOTE1 LT5nZW0ucmV0aXJlX3dvcmssIHJldGlyZV93b3JrX2hhbmRsZXIpOwo+IC0KPiAgIAlpOTE1LT5n ZW0ucG1fbm90aWZpZXIubm90aWZpZXJfY2FsbCA9IHBtX25vdGlmaWVyOwo+ICAgCWJsb2NraW5n X25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKCZpOTE1LT5ndC5wbV9ub3RpZmljYXRpb25zLAo+ICAg CQkJCQkgJmk5MTUtPmdlbS5wbV9ub3RpZmllcik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCBiMjZmNTUw Zjg0MzAuLmIzOTIyNGVkMzgxNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTgsNiArOCw3IEBACj4g ICAKPiAgICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fcG0uaCIKPiAgICNpbmNsdWRlICJndC9pbnRl bF9ndC5oIgo+ICsjaW5jbHVkZSAiZ3QvaW50ZWxfZ3RfcmVxdWVzdHMuaCIKPiAgICNpbmNsdWRl ICJndC9pbnRlbF9yZXNldC5oIgo+ICAgI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKPiAgIAo+ IEBAIC0zMDQsNyArMzA1LDcgQEAgY3JlYXRlX3Rlc3Rfb2JqZWN0KHN0cnVjdCBpOTE1X2FkZHJl c3Nfc3BhY2UgKnZtLAo+ICAgCWludCBlcnI7Cj4gICAKPiAgIAkvKiBLZWVwIGluIEdFTSdzIGdv b2QgZ3JhY2VzICovCj4gLQlpOTE1X3JldGlyZV9yZXF1ZXN0cyh2bS0+aTkxNSk7Cj4gKwlpbnRl bF9ndF9yZXRpcmVfcmVxdWVzdHModm0tPmd0KTsKPiAgIAo+ICAgCXNpemUgPSBtaW4odm0tPnRv dGFsIC8gMiwgMTAyNHVsbCAqIERXX1BFUl9QQUdFICogUEFHRV9TSVpFKTsKPiAgIAlzaXplID0g cm91bmRfZG93bihzaXplLCBEV19QRVJfUEFHRSAqIFBBR0VfU0laRSk7Cj4gQEAgLTkyMiw3ICs5 MjMsNyBAQCBfX3NzZXVfZmluaXNoKGNvbnN0IGNoYXIgKm5hbWUsCj4gICAJCWlndF9zcGlubmVy X2VuZChzcGluKTsKPiAgIAo+ICAgCWlmICgoZmxhZ3MgJiBURVNUX0lETEUpICYmIHJldCA9PSAw KSB7Cj4gLQkJcmV0ID0gaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShjZS0+ZW5naW5lLT5pOTE1LAo+ ICsJCXJldCA9IGludGVsX2d0X3dhaXRfZm9yX2lkbGUoY2UtPmVuZ2luZS0+Z3QsCj4gICAJCQkJ CSAgICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJcmV0dXJu IHJldDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9p OTE1X2dlbV9tbWFuLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVf Z2VtX21tYW4uYwo+IGluZGV4IDRiYTZlZDVjODMxMy4uMWNkMjVjZmQwMjQ2IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMK PiBAQCAtNTczLDcgKzU3Myw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVfcmV0aXJlX3dvcmtlcihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAgIAlpOTE1X2dlbV9kcml2ZXJf dW5yZWdpc3Rlcl9fc2hyaW5rZXIoaTkxNSk7Cj4gICAJaW50ZWxfZ3RfcG1fZ2V0KCZpOTE1LT5n dCk7Cj4gLQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmk5MTUtPmdlbS5yZXRpcmVfd29yayk7 Cj4gKwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmk5MTUtPmd0LnJlcXVlc3RzLnJldGlyZV93 b3JrKTsKClNhbWUgcGF0dGVybiBvZiBHRU0gaGVscGVyIHRvIGNhbGwgYSBuZXcgR1QgZXhwb3J0 PwoKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgcmVzdG9yZV9yZXRpcmVfd29ya2VyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9ndC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYwo+ IGluZGV4IDk1ZTY3ZGI1MjY2OC4uMzlmYjY5NjA5YmU0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9ndC5jCj4gQEAgLTYsNiArNiw3IEBACj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIK PiAgICNpbmNsdWRlICJpbnRlbF9ndC5oIgo+ICAgI2luY2x1ZGUgImludGVsX2d0X3BtLmgiCj4g KyNpbmNsdWRlICJpbnRlbF9ndF9yZXF1ZXN0cy5oIgo+ICAgI2luY2x1ZGUgImludGVsX21vY3Mu aCIKPiAgICNpbmNsdWRlICJpbnRlbF91bmNvcmUuaCIKPiAgICNpbmNsdWRlICJpbnRlbF9wbS5o Igo+IEBAIC0yMiw2ICsyMyw3IEBAIHZvaWQgaW50ZWxfZ3RfaW5pdF9lYXJseShzdHJ1Y3QgaW50 ZWxfZ3QgKmd0LCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAo+ICAgCWludGVs X2d0X2luaXRfaGFuZ2NoZWNrKGd0KTsKPiAgIAlpbnRlbF9ndF9pbml0X3Jlc2V0KGd0KTsKPiAr CWludGVsX2d0X2luaXRfcmVxdWVzdHMoZ3QpOwo+ICAgCWludGVsX2d0X3BtX2luaXRfZWFybHko Z3QpOwo+ICAgCWludGVsX3VjX2luaXRfZWFybHkoJmd0LT51Yyk7Cj4gICB9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9ndF9wbS5jCj4gaW5kZXggMmNjZjhjYWNhYTBhLi43YjEyZTlkYzZj MmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcG0uYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3BtLmMKPiBAQCAtMTAsNiAr MTAsNyBAQAo+ICAgI2luY2x1ZGUgImludGVsX2VuZ2luZV9wbS5oIgo+ICAgI2luY2x1ZGUgImlu dGVsX2d0LmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfZ3RfcG0uaCIKPiArI2luY2x1ZGUgImludGVs X2d0X3JlcXVlc3RzLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfcG0uaCIKPiAgICNpbmNsdWRlICJp bnRlbF93YWtlcmVmLmgiCj4gICAKPiBAQCAtNDgsNiArNDksNyBAQCBzdGF0aWMgaW50IF9fZ3Rf dW5wYXJrKHN0cnVjdCBpbnRlbF93YWtlcmVmICp3ZikKPiAgIAlpOTE1X3BtdV9ndF91bnBhcmtl ZChpOTE1KTsKPiAgIAo+ICAgCWludGVsX2d0X3F1ZXVlX2hhbmdjaGVjayhndCk7Cj4gKwlpbnRl bF9ndF91bnBhcmtfcmVxdWVzdHMoZ3QpOwo+ICAgCj4gICAJcG1fbm90aWZ5KGd0LCBJTlRFTF9H VF9VTlBBUkspOwo+ICAgCj4gQEAgLTYzLDYgKzY1LDcgQEAgc3RhdGljIGludCBfX2d0X3Bhcmso c3RydWN0IGludGVsX3dha2VyZWYgKndmKQo+ICAgCUdFTV9UUkFDRSgiXG4iKTsKPiAgIAo+ICAg CXBtX25vdGlmeShndCwgSU5URUxfR1RfUEFSSyk7Cj4gKwlpbnRlbF9ndF9wYXJrX3JlcXVlc3Rz KGd0KTsKPiAgIAo+ICAgCWk5MTVfcG11X2d0X3BhcmtlZChpOTE1KTsKPiAgIAlpZiAoSU5URUxf R0VOKGk5MTUpID49IDYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2d0X3JlcXVlc3RzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9yZXF1 ZXN0cy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjhhZWQ4 OWZkMmNkYwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9ndF9yZXF1ZXN0cy5jCj4gQEAgLTAsMCArMSwxMjMgQEAKPiArLyoKPiArICogU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRl bCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJpOTE1X3JlcXVlc3QuaCIKPiAr I2luY2x1ZGUgImludGVsX2d0LmgiCj4gKyNpbmNsdWRlICJpbnRlbF9ndF9wbS5oIgo+ICsjaW5j bHVkZSAiaW50ZWxfZ3RfcmVxdWVzdHMuaCIKPiArI2luY2x1ZGUgImludGVsX3RpbWVsaW5lLmgi Cj4gKwo+ICtzdGF0aWMgdm9pZCByZXRpcmVfcmVxdWVzdHMoc3RydWN0IGludGVsX3RpbWVsaW5l ICp0bCkKPiArewo+ICsJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpybjsKPiArCj4gKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUocnEsIHJuLCAmdGwtPnJlcXVlc3RzLCBsaW5rKQo+ICsJCWlm ICghaTkxNV9yZXF1ZXN0X3JldGlyZShycSkpCj4gKwkJCWJyZWFrOwo+ICt9Cj4gKwo+ICtsb25n IGludGVsX2d0X3JldGlyZV9yZXF1ZXN0c190aW1lb3V0KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIGxv bmcgdGltZW91dCkKPiArewo+ICsJc3RydWN0IGludGVsX2d0X3RpbWVsaW5lcyAqdGltZWxpbmVz ID0gJmd0LT50aW1lbGluZXM7Cj4gKwlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsLCAqdG47Cj4g Kwl1bnNpZ25lZCBsb25nIGFjdGl2ZV9jb3VudCA9IDA7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdz Owo+ICsJYm9vbCBpbnRlcnJ1cHRpYmxlOwo+ICsJTElTVF9IRUFEKGZyZWUpOwo+ICsKPiArCWlu dGVycnVwdGlibGUgPSB0cnVlOwo+ICsJaWYgKHVubGlrZWx5KHRpbWVvdXQgPCAwKSkKPiArCQl0 aW1lb3V0ID0gLXRpbWVvdXQsIGludGVycnVwdGlibGUgPSBmYWxzZTsKPiArCj4gKwlzcGluX2xv Y2tfaXJxc2F2ZSgmdGltZWxpbmVzLT5sb2NrLCBmbGFncyk7Cj4gKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3NhZmUodGwsIHRuLCAmdGltZWxpbmVzLT5hY3RpdmVfbGlzdCwgbGluaykgewo+ICsJCWlm ICghbXV0ZXhfdHJ5bG9jaygmdGwtPm11dGV4KSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWlu dGVsX3RpbWVsaW5lX2dldCh0bCk7Cj4gKwkJR0VNX0JVR19PTighdGwtPmFjdGl2ZV9jb3VudCk7 Cj4gKwkJdGwtPmFjdGl2ZV9jb3VudCsrOyAvKiBwaW4gdGhlIGxpc3QgZWxlbWVudCAqLwo+ICsJ CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnRpbWVsaW5lcy0+bG9jaywgZmxhZ3MpOwo+ICsKPiAr CQlpZiAodGltZW91dCA+IDApIHsKPiArCQkJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4gKwo+ ICsJCQlmZW5jZSA9IGk5MTVfYWN0aXZlX2ZlbmNlX2dldCgmdGwtPmxhc3RfcmVxdWVzdCk7Cj4g KwkJCWlmIChmZW5jZSkgewo+ICsJCQkJdGltZW91dCA9IGRtYV9mZW5jZV93YWl0X3RpbWVvdXQo ZmVuY2UsCj4gKwkJCQkJCQkJIHRydWUsCj4gKwkJCQkJCQkJIHRpbWVvdXQpOwo+ICsJCQkJZG1h X2ZlbmNlX3B1dChmZW5jZSk7Cj4gKwkJCX0KPiArCQl9Cj4gKwo+ICsJCXJldGlyZV9yZXF1ZXN0 cyh0bCk7Cj4gKwo+ICsJCXNwaW5fbG9ja19pcnFzYXZlKCZ0aW1lbGluZXMtPmxvY2ssIGZsYWdz KTsKPiArCj4gKwkJLyogUmVzdW1lIGl0ZXJhdGlvbiBhZnRlciBkcm9wcGluZyBsb2NrICovCj4g KwkJbGlzdF9zYWZlX3Jlc2V0X25leHQodGwsIHRuLCBsaW5rKTsKPiArCQlpZiAoLS10bC0+YWN0 aXZlX2NvdW50KQo+ICsJCQlhY3RpdmVfY291bnQgKz0gISFyY3VfYWNjZXNzX3BvaW50ZXIodGwt Pmxhc3RfcmVxdWVzdC5mZW5jZSk7Cj4gKwkJZWxzZQo+ICsJCQlsaXN0X2RlbCgmdGwtPmxpbmsp Owo+ICsKPiArCQltdXRleF91bmxvY2soJnRsLT5tdXRleCk7Cj4gKwo+ICsJCS8qIERlZmVyIHRo ZSBmaW5hbCByZWxlYXNlIHRvIGFmdGVyIHRoZSBzcGlubG9jayAqLwo+ICsJCWlmIChyZWZjb3Vu dF9kZWNfYW5kX3Rlc3QoJnRsLT5rcmVmLnJlZmNvdW50KSkgewo+ICsJCQlHRU1fQlVHX09OKHRs LT5hY3RpdmVfY291bnQpOwo+ICsJCQlsaXN0X2FkZCgmdGwtPmxpbmssICZmcmVlKTsKPiArCQl9 Cj4gKwl9Cj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0aW1lbGluZXMtPmxvY2ssIGZsYWdz KTsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodGwsIHRuLCAmZnJlZSwgbGluaykK PiArCQlfX2ludGVsX3RpbWVsaW5lX2ZyZWUoJnRsLT5rcmVmKTsKPiArCj4gKwlyZXR1cm4gYWN0 aXZlX2NvdW50ID8gdGltZW91dCA6IDA7Cj4gK30KPiArCj4gK2ludCBpbnRlbF9ndF93YWl0X2Zv cl9pZGxlKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIGxvbmcgdGltZW91dCkKPiArewo+ICsJLyogSWYg dGhlIGRldmljZSBpcyBhc2xlZXAsIHdlIGhhdmUgbm8gcmVxdWVzdHMgb3V0c3RhbmRpbmcgKi8K PiArCWlmICghaW50ZWxfZ3RfcG1faXNfYXdha2UoZ3QpKQo+ICsJCXJldHVybiAwOwo+ICsKPiAr CXdoaWxlICgodGltZW91dCA9IGludGVsX2d0X3JldGlyZV9yZXF1ZXN0c190aW1lb3V0KGd0LCB0 aW1lb3V0KSkgPiAwKSB7Cj4gKwkJY29uZF9yZXNjaGVkKCk7Cj4gKwkJaWYgKHNpZ25hbF9wZW5k aW5nKGN1cnJlbnQpKQo+ICsJCQlyZXR1cm4gLUVJTlRSOwo+ICsJfQo+ICsKPiArCXJldHVybiB0 aW1lb3V0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCByZXRpcmVfd29ya19oYW5kbGVyKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKPiArewo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9Cj4gKwkJ Y29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZ3QpLCByZXF1ZXN0cy5yZXRpcmVfd29yay53b3Jr KTsKPiArCj4gKwlpbnRlbF9ndF9yZXRpcmVfcmVxdWVzdHMoZ3QpOwo+ICsJc2NoZWR1bGVfZGVs YXllZF93b3JrKCZndC0+cmVxdWVzdHMucmV0aXJlX3dvcmssCj4gKwkJCSAgICAgIHJvdW5kX2pp ZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9ndF9pbml0X3Jl cXVlc3RzKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gK3sKPiArCUlOSVRfREVMQVlFRF9XT1JLKCZn dC0+cmVxdWVzdHMucmV0aXJlX3dvcmssIHJldGlyZV93b3JrX2hhbmRsZXIpOwo+ICt9Cj4gKwo+ ICt2b2lkIGludGVsX2d0X3BhcmtfcmVxdWVzdHMoc3RydWN0IGludGVsX2d0ICpndCkKPiArewo+ ICsJY2FuY2VsX2RlbGF5ZWRfd29yaygmZ3QtPnJlcXVlc3RzLnJldGlyZV93b3JrKTsKPiArfQo+ ICsKPiArdm9pZCBpbnRlbF9ndF91bnBhcmtfcmVxdWVzdHMoc3RydWN0IGludGVsX2d0ICpndCkK PiArewo+ICsJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZndC0+cmVxdWVzdHMucmV0aXJlX3dvcmss Cj4gKwkJCSAgICAgIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKPiArfQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9yZXF1ZXN0cy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcmVxdWVzdHMuaAo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5iZDMxY2JjZTQ3ZTAKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfcmVxdWVzdHMuaAo+IEBA IC0wLDAgKzEsMjQgQEAKPiArLyoKPiArICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+ ICsgKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiAr Cj4gKyNpZm5kZWYgSU5URUxfR1RfUkVRVUVTVFNfSAo+ICsjZGVmaW5lIElOVEVMX0dUX1JFUVVF U1RTX0gKPiArCj4gK3N0cnVjdCBpbnRlbF9ndDsKPiArCj4gK2xvbmcgaW50ZWxfZ3RfcmV0aXJl X3JlcXVlc3RzX3RpbWVvdXQoc3RydWN0IGludGVsX2d0ICpndCwgbG9uZyB0aW1lb3V0KTsKPiAr c3RhdGljIGlubGluZSB2b2lkIGludGVsX2d0X3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxf Z3QgKmd0KQo+ICt7Cj4gKwlpbnRlbF9ndF9yZXRpcmVfcmVxdWVzdHNfdGltZW91dChndCwgMCk7 Cj4gK30KPiArCj4gK2ludCBpbnRlbF9ndF93YWl0X2Zvcl9pZGxlKHN0cnVjdCBpbnRlbF9ndCAq Z3QsIGxvbmcgdGltZW91dCk7Cj4gKwo+ICt2b2lkIGludGVsX2d0X2luaXRfcmVxdWVzdHMoc3Ry dWN0IGludGVsX2d0ICpndCk7Cj4gK3ZvaWQgaW50ZWxfZ3RfcGFya19yZXF1ZXN0cyhzdHJ1Y3Qg aW50ZWxfZ3QgKmd0KTsKPiArdm9pZCBpbnRlbF9ndF91bnBhcmtfcmVxdWVzdHMoc3RydWN0IGlu dGVsX2d0ICpndCk7Cj4gKwo+ICsjZW5kaWYgLyogSU5URUxfR1RfUkVRVUVTVFNfSCAqLwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaAo+IGluZGV4IDMwMzljZWY2NGIx MS4uZjUyNDk0MmM4MmFhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2d0X3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90 eXBlcy5oCj4gQEAgLTQ5LDYgKzQ5LDE3IEBAIHN0cnVjdCBpbnRlbF9ndCB7Cj4gICAJCXN0cnVj dCBsaXN0X2hlYWQgaHdzcF9mcmVlX2xpc3Q7Cj4gICAJfSB0aW1lbGluZXM7Cj4gICAKPiArCXN0 cnVjdCBpbnRlbF9ndF9yZXF1ZXN0cyB7Cj4gKwkJLyoqCj4gKwkJICogV2UgbGVhdmUgdGhlIHVz ZXIgSVJRIG9mZiBhcyBtdWNoIGFzIHBvc3NpYmxlLAo+ICsJCSAqIGJ1dCB0aGlzIG1lYW5zIHRo YXQgcmVxdWVzdHMgd2lsbCBmaW5pc2ggYW5kIG5ldmVyCj4gKwkJICogYmUgcmV0aXJlZCBvbmNl IHRoZSBzeXN0ZW0gZ29lcyBpZGxlLiBTZXQgYSB0aW1lciB0bwo+ICsJCSAqIGZpcmUgcGVyaW9k aWNhbGx5IHdoaWxlIHRoZSByaW5nIGlzIHJ1bm5pbmcuIFdoZW4gaXQKPiArCQkgKiBmaXJlcywg Z28gcmV0aXJlIHJlcXVlc3RzLgo+ICsJCSAqLwo+ICsJCXN0cnVjdCBkZWxheWVkX3dvcmsgcmV0 aXJlX3dvcms7Cj4gKwl9IHJlcXVlc3RzOwo+ICsKPiAgIAlzdHJ1Y3QgaW50ZWxfd2FrZXJlZiB3 YWtlcmVmOwo+ICAgCWF0b21pY190IHVzZXJfd2FrZXJlZjsKPiAgIAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYwo+IGluZGV4IDE2YWJmYWJmMDhjNy4uZDZk ZjQwY2RjOGE2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0 X3RpbWVsaW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1l bGluZS5jCj4gQEAgLTgsNiArOCw3IEBACj4gICAKPiAgICNpbmNsdWRlICJpbnRlbF9lbmdpbmVf cG0uaCIKPiAgICNpbmNsdWRlICJpbnRlbF9ndC5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZ3RfcmVx dWVzdHMuaCIKPiAgIAo+ICAgI2luY2x1ZGUgIi4uL3NlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oIgo+ ICAgI2luY2x1ZGUgIi4uL2k5MTVfc2VsZnRlc3QuaCIKPiBAQCAtNjQxLDYgKzY0Miw3IEBAIHN0 YXRpYyBpbnQgbGl2ZV9od3NwX2FsdGVybmF0ZSh2b2lkICphcmcpCj4gICBzdGF0aWMgaW50IGxp dmVfaHdzcF93cmFwKHZvaWQgKmFyZykKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9IGFyZzsKPiArCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSAmaTkxNS0+Z3Q7Cj4gICAJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAgCXN0cnVjdCBpbnRlbF90aW1lbGlu ZSAqdGw7Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gQEAgLTY1MSw3ICs2NTMsNyBA QCBzdGF0aWMgaW50IGxpdmVfaHdzcF93cmFwKHZvaWQgKmFyZykKPiAgIAkgKiBmb3JlaWduIEdQ VSByZWZlcmVuY2VzLgo+ICAgCSAqLwo+ICAgCj4gLQl0bCA9IGludGVsX3RpbWVsaW5lX2NyZWF0 ZSgmaTkxNS0+Z3QsIE5VTEwpOwo+ICsJdGwgPSBpbnRlbF90aW1lbGluZV9jcmVhdGUoZ3QsIE5V TEwpOwo+ICAgCWlmIChJU19FUlIodGwpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUih0bCk7Cj4gICAK PiBAQCAtNjYyLDcgKzY2NCw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9od3NwX3dyYXAodm9pZCAqYXJn KQo+ICAgCWlmIChlcnIpCj4gICAJCWdvdG8gb3V0X2ZyZWU7Cj4gICAKPiAtCWZvcl9lYWNoX2Vu Z2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndC0+ aTkxNSwgaWQpIHsKPiAgIAkJY29uc3QgdTMyICpod3NwX3NlcW5vWzJdOwo+ICAgCQlzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycTsKPiAgIAkJdTMyIHNlcW5vWzJdOwo+IEBAIC03MzQsNyArNzM2LDcg QEAgc3RhdGljIGludCBsaXZlX2h3c3Bfd3JhcCh2b2lkICphcmcpCj4gICAJCQlnb3RvIG91dDsK PiAgIAkJfQo+ICAgCj4gLQkJaTkxNV9yZXRpcmVfcmVxdWVzdHMoaTkxNSk7IC8qIHJlY3ljbGUg SFdTUCAqLwo+ICsJCWludGVsX2d0X3JldGlyZV9yZXF1ZXN0cyhndCk7IC8qIHJlY3ljbGUgSFdT UCAqLwo+ICAgCX0KPiAgIAo+ICAgb3V0Ogo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j Cj4gaW5kZXggMDMzNzY0MzI2NjAxLi41Zjk3MDNjYTMxMDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+IEBAIC00MSw2ICs0MSw3IEBACj4gICAKPiAgICNpbmNsdWRlICJn ZW0vaTkxNV9nZW1fY29udGV4dC5oIgo+ICAgI2luY2x1ZGUgImd0L2ludGVsX2d0X3BtLmgiCj4g KyNpbmNsdWRlICJndC9pbnRlbF9ndF9yZXF1ZXN0cy5oIgo+ICAgI2luY2x1ZGUgImd0L2ludGVs X3Jlc2V0LmgiCj4gICAjaW5jbHVkZSAiZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uaCIKPiAg IAo+IEBAIC0zNjE4LDMzICszNjE5LDMzIEBAIHN0YXRpYyBpbnQKPiAgIGk5MTVfZHJvcF9jYWNo ZXNfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSBkYXRhOwo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9ICZpOTE1LT5ndDsK PiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJRFJNX0RFQlVHKCJEcm9wcGluZyBjYWNoZXM6IDB4JTA4 bGx4IFsweCUwOGxseF1cbiIsCj4gICAJCSAgdmFsLCB2YWwgJiBEUk9QX0FMTCk7Cj4gICAKPiAg IAlpZiAodmFsICYgRFJPUF9SRVNFVF9BQ1RJVkUgJiYKPiAtCSAgICB3YWl0X2ZvcihpbnRlbF9l bmdpbmVzX2FyZV9pZGxlKCZpOTE1LT5ndCksCj4gLQkJICAgICBJOTE1X0lETEVfRU5HSU5FU19U SU1FT1VUKSkKPiAtCQlpbnRlbF9ndF9zZXRfd2VkZ2VkKCZpOTE1LT5ndCk7Cj4gKwkgICAgd2Fp dF9mb3IoaW50ZWxfZW5naW5lc19hcmVfaWRsZShndCksIEk5MTVfSURMRV9FTkdJTkVTX1RJTUVP VVQpKQo+ICsJCWludGVsX2d0X3NldF93ZWRnZWQoZ3QpOwo+ICAgCj4gICAJaWYgKHZhbCAmIERS T1BfUkVUSVJFKQo+IC0JCWk5MTVfcmV0aXJlX3JlcXVlc3RzKGk5MTUpOwo+ICsJCWludGVsX2d0 X3JldGlyZV9yZXF1ZXN0cyhndCk7Cj4gICAKPiAgIAlpZiAodmFsICYgKERST1BfSURMRSB8IERS T1BfQUNUSVZFKSkgewo+IC0JCXJldCA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwgTUFY X1NDSEVEVUxFX1RJTUVPVVQpOwo+ICsJCXJldCA9IGludGVsX2d0X3dhaXRfZm9yX2lkbGUoZ3Qs IE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJCXJldHVybiByZXQ7 Cj4gICAJfQo+ICAgCj4gICAJaWYgKHZhbCAmIERST1BfSURMRSkgewo+IC0JCXJldCA9IGludGVs X2d0X3BtX3dhaXRfZm9yX2lkbGUoJmk5MTUtPmd0KTsKPiArCQlyZXQgPSBpbnRlbF9ndF9wbV93 YWl0X2Zvcl9pZGxlKGd0KTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJCXJldHVybiByZXQ7Cj4gICAJ fQo+ICAgCj4gLQlpZiAodmFsICYgRFJPUF9SRVNFVF9BQ1RJVkUgJiYgaW50ZWxfZ3RfdGVybWlu YWxseV93ZWRnZWQoJmk5MTUtPmd0KSkKPiAtCQlpbnRlbF9ndF9oYW5kbGVfZXJyb3IoJmk5MTUt Pmd0LCBBTExfRU5HSU5FUywgMCwgTlVMTCk7Cj4gKwlpZiAodmFsICYgRFJPUF9SRVNFVF9BQ1RJ VkUgJiYgaW50ZWxfZ3RfdGVybWluYWxseV93ZWRnZWQoZ3QpKQo+ICsJCWludGVsX2d0X2hhbmRs ZV9lcnJvcihndCwgQUxMX0VOR0lORVMsIDAsIE5VTEwpOwo+ICAgCj4gICAJZnNfcmVjbGFpbV9h Y3F1aXJlKEdGUF9LRVJORUwpOwo+ICAgCWlmICh2YWwgJiBEUk9QX0JPVU5EKQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+IGluZGV4IDZlNWQ1ZTRjYTkxZC4uNGUwYzRiYTJkMjU3IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTE3MTcsMTUgKzE3MTcsNiBAQCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSB7Cj4gICAKPiAgIAlzdHJ1Y3Qgewo+ICAgCQlzdHJ1Y3Qgbm90aWZpZXJf YmxvY2sgcG1fbm90aWZpZXI7Cj4gLQo+IC0JCS8qKgo+IC0JCSAqIFdlIGxlYXZlIHRoZSB1c2Vy IElSUSBvZmYgYXMgbXVjaCBhcyBwb3NzaWJsZSwKPiAtCQkgKiBidXQgdGhpcyBtZWFucyB0aGF0 IHJlcXVlc3RzIHdpbGwgZmluaXNoIGFuZCBuZXZlcgo+IC0JCSAqIGJlIHJldGlyZWQgb25jZSB0 aGUgc3lzdGVtIGdvZXMgaWRsZS4gU2V0IGEgdGltZXIgdG8KPiAtCQkgKiBmaXJlIHBlcmlvZGlj YWxseSB3aGlsZSB0aGUgcmluZyBpcyBydW5uaW5nLiBXaGVuIGl0Cj4gLQkJICogZmlyZXMsIGdv IHJldGlyZSByZXF1ZXN0cy4KPiAtCQkgKi8KPiAtCQlzdHJ1Y3QgZGVsYXllZF93b3JrIHJldGly ZV93b3JrOwo+ICAgCX0gZ2VtOwo+ICAgCj4gICAJLyogRm9yIGk5NDVnbSB2YmxhbmsgaXJxIHZz LiBDMyB3b3JrYXJvdW5kICovCj4gQEAgLTIzMjgsNyArMjMxOSw2IEBAIHZvaWQgaTkxNV9nZW1f ZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgIHZvaWQg aTkxNV9nZW1fZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Owo+ICAgdm9pZCBpOTE1X2dlbV9kcml2ZXJfcmVtb3ZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7Cj4gICB2b2lkIGk5MTVfZ2VtX2RyaXZlcl9yZWxlYXNlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gLWludCBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgbG9uZyB0aW1lb3V0KTsKPiAgIHZvaWQg aTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAg dm9pZCBpOTE1X2dlbV9zdXNwZW5kX2xhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKPiAgIHZvaWQgaTkxNV9nZW1fcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggYWIyMzk0NDU3MWZhLi45 YzI4Nzc0NDE1NDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtODgzLDIzICs4 ODMsNiBAQCB2b2lkIGk5MTVfZ2VtX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPiAgIAl9Cj4gICB9Cj4gICAKPiAtaW50IGk5MTVfZ2VtX3dhaXRfZm9yX2lk bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGxvbmcgdGltZW91dCkKPiAtewo+IC0J c3RydWN0IGludGVsX2d0ICpndCA9ICZpOTE1LT5ndDsKPiAtCj4gLQkvKiBJZiB0aGUgZGV2aWNl IGlzIGFzbGVlcCwgd2UgaGF2ZSBubyByZXF1ZXN0cyBvdXRzdGFuZGluZyAqLwo+IC0JaWYgKCFp bnRlbF9ndF9wbV9pc19hd2FrZShndCkpCj4gLQkJcmV0dXJuIDA7Cj4gLQo+IC0Jd2hpbGUgKCh0 aW1lb3V0ID0gaTkxNV9yZXRpcmVfcmVxdWVzdHNfdGltZW91dChpOTE1LCB0aW1lb3V0KSkgPiAw KSB7Cj4gLQkJY29uZF9yZXNjaGVkKCk7Cj4gLQkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQp KQo+IC0JCQlyZXR1cm4gLUVJTlRSOwo+IC0JfQo+IC0KPiAtCXJldHVybiB0aW1lb3V0Owo+IC19 Cj4gLQo+ICAgc3RydWN0IGk5MTVfdm1hICoKPiAgIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3Bpbihz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCQkJIGNvbnN0IHN0cnVjdCBpOTE1 X2dndHRfdmlldyAqdmlldywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZXZpY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKPiBp bmRleCAwYTQxMmY2ZDAxZDcuLjdlNjJjMzEwMjkwZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZXZpY3QuYwo+IEBAIC0yOSw2ICsyOSw3IEBACj4gICAjaW5jbHVkZSA8ZHJtL2k5 MTVfZHJtLmg+Cj4gICAKPiAgICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fY29udGV4dC5oIgo+ICsj aW5jbHVkZSAiZ3QvaW50ZWxfZ3RfcmVxdWVzdHMuaCIKPiAgIAo+ICAgI2luY2x1ZGUgImk5MTVf ZHJ2LmgiCj4gICAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgo+IEBAIC0zNyw3ICszOCw3IEBAIEk5 MTVfU0VMRlRFU1RfREVDTEFSRShzdGF0aWMgc3RydWN0IGlndF9ldmljdF9jdGwgewo+ICAgCWJv b2wgZmFpbF9pZl9idXN5OjE7Cj4gICB9IGlndF9ldmljdF9jdGw7KQo+ICAgCj4gLXN0YXRpYyBp bnQgZ2d0dF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArc3RhdGljIGlu dCBnZ3R0X2ZsdXNoKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gICB7Cj4gICAJLyoKPiAgIAkgKiBO b3QgZXZlcnl0aGluZyBpbiB0aGUgR0dUVCBpcyB0cmFja2VkIHZpYSB2bWEgKG90aGVyd2lzZSB3 ZQo+IEBAIC00Niw3ICs0Nyw3IEBAIHN0YXRpYyBpbnQgZ2d0dF9mbHVzaChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAkgKiB0aGUgaG9wZXMgdGhhdCB3ZSBjYW4gdGhlbiByZW1v dmUgY29udGV4dHMgYW5kIHRoZSBsaWtlIG9ubHkKPiAgIAkgKiBib3VuZCBieSB0aGVpciBhY3Rp dmUgcmVmZXJlbmNlLgo+ICAgCSAqLwo+IC0JcmV0dXJuIGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUo aTkxNSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+ICsJcmV0dXJuIGludGVsX2d0X3dhaXRfZm9y X2lkbGUoZ3QsIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGJv b2wKPiBAQCAtOTIsNyArOTMsNiBAQCBpOTE1X2dlbV9ldmljdF9zb21ldGhpbmcoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gICAJCQkgdTY0IHN0YXJ0LCB1NjQgZW5kLAo+ICAgCQkJ IHVuc2lnbmVkIGZsYWdzKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdm0tPmk5MTU7Cj4gICAJc3RydWN0IGRybV9tbV9zY2FuIHNjYW47Cj4gICAJc3RydWN0 IGxpc3RfaGVhZCBldmljdGlvbl9saXN0Owo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hLCAqbmV4 dDsKPiBAQCAtMTI0LDcgKzEyNCw3IEBAIGk5MTVfZ2VtX2V2aWN0X3NvbWV0aGluZyhzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgIAkJCQkgICAgbWluX3NpemUsIGFsaWdubWVudCwg Y29sb3IsCj4gICAJCQkJICAgIHN0YXJ0LCBlbmQsIG1vZGUpOwo+ICAgCj4gLQlpOTE1X3JldGly ZV9yZXF1ZXN0cyh2bS0+aTkxNSk7Cj4gKwlpbnRlbF9ndF9yZXRpcmVfcmVxdWVzdHModm0tPmd0 KTsKPiAgIAo+ICAgc2VhcmNoX2FnYWluOgo+ICAgCWFjdGl2ZSA9IE5VTEw7Cj4gQEAgLTE5Nyw3 ICsxOTcsNyBAQCBpOTE1X2dlbV9ldmljdF9zb21ldGhpbmcoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0sCj4gICAJaWYgKEk5MTVfU0VMRlRFU1RfT05MWShpZ3RfZXZpY3RfY3RsLmZhaWxf aWZfYnVzeSkpCj4gICAJCXJldHVybiAtRUJVU1k7Cj4gICAKPiAtCXJldCA9IGdndHRfZmx1c2go ZGV2X3ByaXYpOwo+ICsJcmV0ID0gZ2d0dF9mbHVzaCh2bS0+Z3QpOwo+ICAgCWlmIChyZXQpCj4g ICAJCXJldHVybiByZXQ7Cj4gICAKPiBAQCAtMjcwLDcgKzI3MCw3IEBAIGludCBpOTE1X2dlbV9l dmljdF9mb3Jfbm9kZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgIAkgKiBhIHN0 cmF5IHBpbiAocHJldmVudGluZyBldmljdGlvbikgdGhhdCBjYW4gb25seSBiZSByZXNvbHZlZCBi eQo+ICAgCSAqIHJldGlyaW5nLgo+ICAgCSAqLwo+IC0JaTkxNV9yZXRpcmVfcmVxdWVzdHModm0t Pmk5MTUpOwo+ICsJaW50ZWxfZ3RfcmV0aXJlX3JlcXVlc3RzKHZtLT5ndCk7Cj4gICAKPiAgIAlp ZiAoaTkxNV92bV9oYXNfY2FjaGVfY29sb3Jpbmcodm0pKSB7Cj4gICAJCS8qIEV4cGFuZCBzZWFy Y2ggdG8gY292ZXIgbmVpZ2hib3VyaW5nIGd1YXJkIHBhZ2VzIChvciBsYWNrISkgKi8KPiBAQCAt MzcyLDcgKzM3Miw3IEBAIGludCBpOTE1X2dlbV9ldmljdF92bShzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSkKPiAgIAkgKiBzd2l0Y2ggb3RoZXJ3aXNlIGlzIGluZWZmZWN0aXZlLgo+ICAg CSAqLwo+ICAgCWlmIChpOTE1X2lzX2dndHQodm0pKSB7Cj4gLQkJcmV0ID0gZ2d0dF9mbHVzaCh2 bS0+aTkxNSk7Cj4gKwkJcmV0ID0gZ2d0dF9mbHVzaCh2bS0+Z3QpOwo+ICAgCQlpZiAocmV0KQo+ ICAgCQkJcmV0dXJuIHJldDsKPiAgIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMK PiBpbmRleCAzMGVlMDE2YWMyYmEuLjBkMDQwNTE3Nzg3YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTM4LDYgKzM4LDcgQEAKPiAgIAo+ICAgI2luY2x1ZGUgImRp c3BsYXkvaW50ZWxfZnJvbnRidWZmZXIuaCIKPiAgICNpbmNsdWRlICJndC9pbnRlbF9ndC5oIgo+ ICsjaW5jbHVkZSAiZ3QvaW50ZWxfZ3RfcmVxdWVzdHMuaCIKPiAgIAo+ICAgI2luY2x1ZGUgImk5 MTVfZHJ2LmgiCj4gICAjaW5jbHVkZSAiaTkxNV9zY2F0dGVybGlzdC5oIgo+IEBAIC0yNTI5LDgg KzI1MzAsOCBAQCB2b2lkIGk5MTVfZ2VtX2d0dF9maW5pc2hfcGFnZXMoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKPiAgIAo+ICAgCWlmICh1bmxpa2VseShnZ3R0LT5kb19pZGxlX21h cHMpKSB7Cj4gICAJCS8qIFhYWCBUaGlzIGRvZXMgbm90IHByZXZlbnQgbW9yZSByZXF1ZXN0cyBi ZWluZyBzdWJtaXR0ZWQhICovCj4gLQkJaWYgKGk5MTVfcmV0aXJlX3JlcXVlc3RzX3RpbWVvdXQo ZGV2X3ByaXYsCj4gLQkJCQkJCSAtTUFYX1NDSEVEVUxFX1RJTUVPVVQpKSB7Cj4gKwkJaWYgKGlu dGVsX2d0X3JldGlyZV9yZXF1ZXN0c190aW1lb3V0KGdndHQtPnZtLmd0LAo+ICsJCQkJCQkgICAg IC1NQVhfU0NIRURVTEVfVElNRU9VVCkpIHsKPiAgIAkJCURSTV9FUlJPUigiRmFpbGVkIHRvIHdh aXQgZm9yIGlkbGU7IFZUJ2QgbWF5IGhhbmcuXG4iKTsKPiAgIAkJCS8qIFdhaXQgYSBiaXQsIGlu IGhvcGVzIGl0IGF2b2lkcyB0aGUgaGFuZyAqLwo+ICAgCQkJdWRlbGF5KDEwKTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IDUyZjdjNGU1YjY0NC4uNDM3ZjlmYzYyODJl IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiBAQCAtMjE2LDcgKzIxNiw3 IEBAIHN0YXRpYyB2b2lkIHJlbW92ZV9mcm9tX2VuZ2luZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSkKPiAgIAlzcGluX3VubG9jaygmbG9ja2VkLT5hY3RpdmUubG9jayk7Cj4gICB9Cj4gICAKPiAt c3RhdGljIGJvb2wgaTkxNV9yZXF1ZXN0X3JldGlyZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkK PiArYm9vbCBpOTE1X3JlcXVlc3RfcmV0aXJlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAg ewo+ICAgCWlmICghaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCj4gICAJCXJldHVybiBmYWxz ZTsKPiBAQCAtMTUwOCw2OCArMTUwOCw2IEBAIGxvbmcgaTkxNV9yZXF1ZXN0X3dhaXQoc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEsCj4gICAJcmV0dXJuIHRpbWVvdXQ7Cj4gICB9Cj4gICAKPiAtbG9u ZyBpOTE1X3JldGlyZV9yZXF1ZXN0c190aW1lb3V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LCBsb25nIHRpbWVvdXQpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9ndF90aW1lbGluZXMgKnRp bWVsaW5lcyA9ICZpOTE1LT5ndC50aW1lbGluZXM7Cj4gLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUg KnRsLCAqdG47Cj4gLQl1bnNpZ25lZCBsb25nIGFjdGl2ZV9jb3VudCA9IDA7Cj4gLQl1bnNpZ25l ZCBsb25nIGZsYWdzOwo+IC0JYm9vbCBpbnRlcnJ1cHRpYmxlOwo+IC0JTElTVF9IRUFEKGZyZWUp Owo+IC0KPiAtCWludGVycnVwdGlibGUgPSB0cnVlOwo+IC0JaWYgKHRpbWVvdXQgPCAwKQo+IC0J CXRpbWVvdXQgPSAtdGltZW91dCwgaW50ZXJydXB0aWJsZSA9IGZhbHNlOwo+IC0KPiAtCXNwaW5f bG9ja19pcnFzYXZlKCZ0aW1lbGluZXMtPmxvY2ssIGZsYWdzKTsKPiAtCWxpc3RfZm9yX2VhY2hf ZW50cnlfc2FmZSh0bCwgdG4sICZ0aW1lbGluZXMtPmFjdGl2ZV9saXN0LCBsaW5rKSB7Cj4gLQkJ aWYgKCFtdXRleF90cnlsb2NrKCZ0bC0+bXV0ZXgpKQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJ aW50ZWxfdGltZWxpbmVfZ2V0KHRsKTsKPiAtCQlHRU1fQlVHX09OKCF0bC0+YWN0aXZlX2NvdW50 KTsKPiAtCQl0bC0+YWN0aXZlX2NvdW50Kys7IC8qIHBpbiB0aGUgbGlzdCBlbGVtZW50ICovCj4g LQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdGltZWxpbmVzLT5sb2NrLCBmbGFncyk7Cj4gLQo+ IC0JCWlmICh0aW1lb3V0ID4gMCkgewo+IC0JCQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiAt Cj4gLQkJCWZlbmNlID0gaTkxNV9hY3RpdmVfZmVuY2VfZ2V0KCZ0bC0+bGFzdF9yZXF1ZXN0KTsK PiAtCQkJaWYgKGZlbmNlKSB7Cj4gLQkJCQl0aW1lb3V0ID0gZG1hX2ZlbmNlX3dhaXRfdGltZW91 dChmZW5jZSwKPiAtCQkJCQkJCQkgaW50ZXJydXB0aWJsZSwKPiAtCQkJCQkJCQkgdGltZW91dCk7 Cj4gLQkJCQlkbWFfZmVuY2VfcHV0KGZlbmNlKTsKPiAtCQkJfQo+IC0JCX0KPiAtCj4gLQkJcmV0 aXJlX3JlcXVlc3RzKHRsKTsKPiAtCj4gLQkJc3Bpbl9sb2NrX2lycXNhdmUoJnRpbWVsaW5lcy0+ bG9jaywgZmxhZ3MpOwo+IC0KPiAtCQkvKiBSZXN1bWUgaXRlcmF0aW9uIGFmdGVyIGRyb3BwaW5n IGxvY2sgKi8KPiAtCQlsaXN0X3NhZmVfcmVzZXRfbmV4dCh0bCwgdG4sIGxpbmspOwo+IC0JCWlm ICgtLXRsLT5hY3RpdmVfY291bnQpCj4gLQkJCWFjdGl2ZV9jb3VudCArPSAhIXJjdV9hY2Nlc3Nf cG9pbnRlcih0bC0+bGFzdF9yZXF1ZXN0LmZlbmNlKTsKPiAtCQllbHNlCj4gLQkJCWxpc3RfZGVs KCZ0bC0+bGluayk7Cj4gLQo+IC0JCW11dGV4X3VubG9jaygmdGwtPm11dGV4KTsKPiAtCj4gLQkJ LyogRGVmZXIgdGhlIGZpbmFsIHJlbGVhc2UgdG8gYWZ0ZXIgdGhlIHNwaW5sb2NrICovCj4gLQkJ aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdCgmdGwtPmtyZWYucmVmY291bnQpKSB7Cj4gLQkJCUdF TV9CVUdfT04odGwtPmFjdGl2ZV9jb3VudCk7Cj4gLQkJCWxpc3RfYWRkKCZ0bC0+bGluaywgJmZy ZWUpOwo+IC0JCX0KPiAtCX0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnRpbWVsaW5lcy0+ bG9jaywgZmxhZ3MpOwo+IC0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh0bCwgdG4sICZm cmVlLCBsaW5rKQo+IC0JCV9faW50ZWxfdGltZWxpbmVfZnJlZSgmdGwtPmtyZWYpOwo+IC0KPiAt CXJldHVybiBhY3RpdmVfY291bnQgPyB0aW1lb3V0IDogMDsKPiAtfQo+IC0KPiAgICNpZiBJU19F TkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKPiAgICNpbmNsdWRlICJzZWxmdGVzdHMv bW9ja19yZXF1ZXN0LmMiCj4gICAjaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfcmVxdWVzdC5jIgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4gaW5kZXggMjU2YjA3MTUxODBmLi42YTk1 MjQyYjI4MGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+IEBAIC0yNTAs NiArMjUwLDcgQEAgc3RydWN0IGk5MTVfcmVxdWVzdCAqX19pOTE1X3JlcXVlc3RfY29tbWl0KHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpOwo+ICAgdm9pZCBfX2k5MTVfcmVxdWVzdF9xdWV1 ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiAgIAkJCSAgY29uc3Qgc3RydWN0IGk5MTVfc2No ZWRfYXR0ciAqYXR0cik7Cj4gICAKPiArYm9vbCBpOTE1X3JlcXVlc3RfcmV0aXJlKHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxKTsKPiAgIHZvaWQgaTkxNV9yZXF1ZXN0X3JldGlyZV91cHRvKHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxKTsKPiAgIAo+ICAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICoKPiBAQCAtNDU5LDEwICs0NjAsNCBAQCBpOTE1X3JlcXVlc3RfYWN0aXZlX3RpbWVs aW5lKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgCQkJCQkgbG9ja2RlcF9pc19oZWxkKCZy cS0+ZW5naW5lLT5hY3RpdmUubG9jaykpOwo+ICAgfQo+ICAgCj4gLWxvbmcgaTkxNV9yZXRpcmVf cmVxdWVzdHNfdGltZW91dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgbG9uZyB0aW1l b3V0KTsKPiAtc3RhdGljIGlubGluZSB2b2lkIGk5MTVfcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+IC17Cj4gLQlpOTE1X3JldGlyZV9yZXF1ZXN0c190aW1l b3V0KGk5MTUsIDApOwo+IC19Cj4gLQo+ICAgI2VuZGlmIC8qIEk5MTVfUkVRVUVTVF9IICovCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVz dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9mbHVzaF90ZXN0LmMKPiBp bmRleCBlZDQ5NmJkNmQ4NGYuLjdiMDkzOWUzZjAwNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5jCj4gQEAgLTQsOCArNCw4IEBACj4g ICAgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+ICAgICovCj4gICAKPiAt I2luY2x1ZGUgImdlbS9pOTE1X2dlbV9jb250ZXh0LmgiCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxf Z3QuaCIKPiArI2luY2x1ZGUgImd0L2ludGVsX2d0X3JlcXVlc3RzLmgiCj4gICAKPiAgICNpbmNs dWRlICJpOTE1X2Rydi5oIgo+ICAgI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKPiBAQCAtMTQs MTEgKzE0LDEyIEBACj4gICAKPiAgIGludCBpZ3RfZmx1c2hfdGVzdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAtCWludCByZXQgPSBpbnRlbF9ndF9pc193ZWRnZWQoJmk5 MTUtPmd0KSA/IC1FSU8gOiAwOwo+ICsJc3RydWN0IGludGVsX2d0ICpndCA9ICZpOTE1LT5ndDsK PiArCWludCByZXQgPSBpbnRlbF9ndF9pc193ZWRnZWQoZ3QpID8gLUVJTyA6IDA7Cj4gICAKPiAg IAljb25kX3Jlc2NoZWQoKTsKPiAgIAo+IC0JaWYgKGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkx NSwgSFogLyA1KSA9PSAtRVRJTUUpIHsKPiArCWlmIChpbnRlbF9ndF93YWl0X2Zvcl9pZGxlKGd0 LCBIWiAvIDUpID09IC1FVElNRSkgewo+ICAgCQlwcl9lcnIoIiVwUyB0aW1lZCBvdXQsIGNhbmNl bGxpbmcgYWxsIGZ1cnRoZXIgdGVzdGluZy5cbiIsCj4gICAJCSAgICAgICBfX2J1aWx0aW5fcmV0 dXJuX2FkZHJlc3MoMCkpOwo+ICAgCj4gQEAgLTI2LDcgKzI3LDcgQEAgaW50IGlndF9mbHVzaF90 ZXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCQkJICBfX2J1aWx0aW5fcmV0 dXJuX2FkZHJlc3MoMCkpOwo+ICAgCQlHRU1fVFJBQ0VfRFVNUCgpOwo+ICAgCj4gLQkJaW50ZWxf Z3Rfc2V0X3dlZGdlZCgmaTkxNS0+Z3QpOwo+ICsJCWludGVsX2d0X3NldF93ZWRnZWQoZ3QpOwo+ ICAgCQlyZXQgPSAtRUlPOwo+ICAgCX0KPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaWd0X2xpdmVfdGVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2lndF9saXZlX3Rlc3QuYwo+IGluZGV4IGVhZTkwZjk3ZGY2Yy4uODEwYjYwMTAw YzJjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3RfbGl2 ZV90ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaWd0X2xpdmVf dGVzdC5jCj4gQEAgLTQsNyArNCw4IEBACj4gICAgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBD b3Jwb3JhdGlvbgo+ICAgICovCj4gICAKPiAtI2luY2x1ZGUgIi4uL2k5MTVfZHJ2LmgiCj4gKyNp bmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAiZ3QvaW50ZWxfZ3RfcmVxdWVzdHMuaCIK PiAgIAo+ICAgI2luY2x1ZGUgIi4uL2k5MTVfc2VsZnRlc3QuaCIKPiAgICNpbmNsdWRlICJpZ3Rf Zmx1c2hfdGVzdC5oIgo+IEBAIC0yMyw3ICsyNCw3IEBAIGludCBpZ3RfbGl2ZV90ZXN0X2JlZ2lu KHN0cnVjdCBpZ3RfbGl2ZV90ZXN0ICp0LAo+ICAgCXQtPmZ1bmMgPSBmdW5jOwo+ICAgCXQtPm5h bWUgPSBuYW1lOwo+ICAgCj4gLQllcnIgPSBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsIE1B WF9TQ0hFRFVMRV9USU1FT1VUKTsKPiArCWVyciA9IGludGVsX2d0X3dhaXRfZm9yX2lkbGUoJmk5 MTUtPmd0LCBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gICAJaWYgKGVycikgewo+ICAgCQlwcl9l cnIoIiVzKCVzKTogZmFpbGVkIHRvIGlkbGUgYmVmb3JlLCB3aXRoIGVycj0lZCEiLAo+ICAgCQkg ICAgICAgZnVuYywgbmFtZSwgZXJyKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jCj4gaW5kZXggODdkMzQxNjdiZjg5Li5lZmU0MGMyOWZj ZjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2Vt X2RldmljZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2Vt X2RldmljZS5jCj4gQEAgLTI2LDYgKzI2LDcgQEAKPiAgICNpbmNsdWRlIDxsaW51eC9wbV9ydW50 aW1lLmg+Cj4gICAKPiAgICNpbmNsdWRlICJndC9pbnRlbF9ndC5oIgo+ICsjaW5jbHVkZSAiZ3Qv aW50ZWxfZ3RfcmVxdWVzdHMuaCIKPiAgICNpbmNsdWRlICJndC9tb2NrX2VuZ2luZS5oIgo+ICAg Cj4gICAjaW5jbHVkZSAibW9ja19yZXF1ZXN0LmgiCj4gQEAgLTQ0LDcgKzQ1LDggQEAgdm9pZCBt b2NrX2RldmljZV9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAlkbyB7 Cj4gICAJCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKQo+ICAgCQkJbW9ja19lbmdp bmVfZmx1c2goZW5naW5lKTsKPiAtCX0gd2hpbGUgKGk5MTVfcmV0aXJlX3JlcXVlc3RzX3RpbWVv dXQoaTkxNSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpKTsKPiArCX0gd2hpbGUgKGludGVsX2d0X3Jl dGlyZV9yZXF1ZXN0c190aW1lb3V0KCZpOTE1LT5ndCwKPiArCQkJCQkJICBNQVhfU0NIRURVTEVf VElNRU9VVCkpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBtb2NrX2RldmljZV9yZWxlYXNl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gQEAgLTk4LDEwICsxMDAsNiBAQCBzdGF0aWMgdm9p ZCByZWxlYXNlX2RldihzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gICAJa2ZyZWUocGRldik7Cj4gICB9 Cj4gICAKPiAtc3RhdGljIHZvaWQgbW9ja19yZXRpcmVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKPiAtewo+IC19Cj4gLQo+ICAgc3RhdGljIGludCBwbV9kb21haW5fcmVz dW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPiAgIHsKPiAgIAlyZXR1cm4gcG1fZ2VuZXJpY19ydW50 aW1lX3Jlc3VtZShkZXYpOwo+IEBAIC0xODAsOCArMTc4LDYgQEAgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKm1vY2tfZ2VtX2RldmljZSh2b2lkKQo+ICAgCj4gICAJbW9ja19pbml0X2NvbnRleHRz KGk5MTUpOwo+ICAgCj4gLQlJTklUX0RFTEFZRURfV09SSygmaTkxNS0+Z2VtLnJldGlyZV93b3Jr LCBtb2NrX3JldGlyZV93b3JrX2hhbmRsZXIpOwo+IC0KPiAgIAlpOTE1LT5ndC5hd2FrZSA9IC0x Owo+ICAgCj4gICAJaW50ZWxfdGltZWxpbmVzX2luaXQoaTkxNSk7Cj4gCgpJIGFtIHN0aWxsIHNs aWdodGx5IHVuZWFzeSBhYm91dCBoYXZpbmcgcmVxdWVzdHMsIHdoaWNoIEkgc2VlIGFzIGEgR0VN IApjb25jZXB0LCBiZSByZXRpcmVkIGZyb20gR1QsIGJ1dCBva2F5LCBpdCdzIG5vdCB0aGUgbW9z dCBpbXBvcnRhbnQgaXNzdWUgCmF0IHRoZSBtb21lbnQuCgpSZWdhcmRzLAoKVHZydGtvCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==