From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 20/29] drm/i915: Split engine setup/init into two phases Date: Wed, 10 Apr 2019 14:30:43 +0100 Message-ID: <7d2a0bcb-1a8f-e694-cad6-94abc0990ed1@linux.intel.com> References: <20190408091728.20207-1-chris@chris-wilson.co.uk> <20190408091728.20207-20-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id B77EA89561 for ; Wed, 10 Apr 2019 13:30:46 +0000 (UTC) In-Reply-To: <20190408091728.20207-20-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 Ck9uIDA4LzA0LzIwMTkgMTA6MTcsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbiB0aGUgbmV4dCBw YXRjaCwgd2UgcmVxdWlyZSB0aGUgZW5naW5lIHZmdW5jcyBzZXR1cCBwcmlvciB0bwo+IGluaXRp YWxpc2luZyB0aGUgcGlubmVkIGtlcm5lbCBjb250ZXh0cywgc28gc3BsaXQgdGhlIHZmdW5jIHNl dHVwIGZyb20KPiB0aGUgZW5naW5lIGluaXRpYWxpc2F0aW9uIGFuZCBjYWxsIGl0IGVhcmxpZXIu Cj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaCAgICAg ICAgfCAgIDggKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5j ICAgICB8ICA5OSArKysrLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJj LmMgICAgICAgICAgIHwgIDc0ICsrLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfbHJjLmggICAgICAgICAgIHwgICA1ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9yaW5nYnVmZmVyLmMgICAgfCAyMzIgKysrKysrKysrLS0tLS0tLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jICAgfCAgIDMgKy0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMgICAgICAgICB8ICA0OCArKy0tCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5oICAgICAgICAgfCAgIDIgKwo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgICA2ICsKPiAg IC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jICB8ICAxMiArLQo+ ICAgMTAgZmlsZXMgY2hhbmdlZCwgMjQ1IGluc2VydGlvbnMoKyksIDI0NCBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaAo+IGluZGV4IGExNzE1MmU5 NmJmOC4uYThkYzI3NDBiYTJmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5n aW5lLmgKPiBAQCAtMzYyLDE0ICszNjIsMTIgQEAgX19pbnRlbF9yaW5nX3NwYWNlKHVuc2lnbmVk IGludCBoZWFkLCB1bnNpZ25lZCBpbnQgdGFpbCwgdW5zaWduZWQgaW50IHNpemUpCj4gICAJcmV0 dXJuIChoZWFkIC0gdGFpbCAtIENBQ0hFTElORV9CWVRFUykgJiAoc2l6ZSAtIDEpOwo+ICAgfQo+ ICAgCj4gLWludCBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSk7Cj4gK2ludCBpbnRlbF9lbmdpbmVzX3NldHVwKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KTsKPiAgIGludCBpbnRlbF9lbmdpbmVfaW5pdF9jb21tb24oc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29t bW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gICAKPiAtaW50IGludGVsX2lu aXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4g LWludCBpbnRlbF9pbml0X2JzZF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpOwo+IC1pbnQgaW50ZWxfaW5pdF9ibHRfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKTsKPiAtaW50IGludGVsX2luaXRfdmVib3hfcmluZ19idWZmZXIoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAraW50IGludGVsX3Jpbmdfc3VibWlzc2lv bl9zZXR1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICtpbnQgaW50ZWxfcmlu Z19zdWJtaXNzaW9uX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgIAo+ ICAgaW50IGludGVsX2VuZ2luZV9zdG9wX2NzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSk7Cj4gICB2b2lkIGludGVsX2VuZ2luZV9jYW5jZWxfc3RvcF9jcyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9j cy5jCj4gaW5kZXggZjY4MjhjMDI3NmViLi4zZjc5NGJjNzE5NTggMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+IEBAIC01MCwzNSArNTAsMjQgQEAKPiAg IAo+ICAgc3RydWN0IGVuZ2luZV9jbGFzc19pbmZvIHsKPiAgIAljb25zdCBjaGFyICpuYW1lOwo+ IC0JaW50ICgqaW5pdF9sZWdhY3kpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4g LQlpbnQgKCppbml0X2V4ZWNsaXN0cykoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsK PiAtCj4gICAJdTggdWFiaV9jbGFzczsKPiAgIH07Cj4gICAKPiAgIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZW5naW5lX2NsYXNzX2luZm8gaW50ZWxfZW5naW5lX2NsYXNzZXNbXSA9IHsKPiAgIAlbUkVO REVSX0NMQVNTXSA9IHsKPiAgIAkJLm5hbWUgPSAicmNzIiwKPiAtCQkuaW5pdF9leGVjbGlzdHMg PSBsb2dpY2FsX3JlbmRlcl9yaW5nX2luaXQsCj4gLQkJLmluaXRfbGVnYWN5ID0gaW50ZWxfaW5p dF9yZW5kZXJfcmluZ19idWZmZXIsCj4gICAJCS51YWJpX2NsYXNzID0gSTkxNV9FTkdJTkVfQ0xB U1NfUkVOREVSLAo+ICAgCX0sCj4gICAJW0NPUFlfRU5HSU5FX0NMQVNTXSA9IHsKPiAgIAkJLm5h bWUgPSAiYmNzIiwKPiAtCQkuaW5pdF9leGVjbGlzdHMgPSBsb2dpY2FsX3hjc19yaW5nX2luaXQs Cj4gLQkJLmluaXRfbGVnYWN5ID0gaW50ZWxfaW5pdF9ibHRfcmluZ19idWZmZXIsCj4gICAJCS51 YWJpX2NsYXNzID0gSTkxNV9FTkdJTkVfQ0xBU1NfQ09QWSwKPiAgIAl9LAo+ICAgCVtWSURFT19E RUNPREVfQ0xBU1NdID0gewo+ICAgCQkubmFtZSA9ICJ2Y3MiLAo+IC0JCS5pbml0X2V4ZWNsaXN0 cyA9IGxvZ2ljYWxfeGNzX3JpbmdfaW5pdCwKPiAtCQkuaW5pdF9sZWdhY3kgPSBpbnRlbF9pbml0 X2JzZF9yaW5nX2J1ZmZlciwKPiAgIAkJLnVhYmlfY2xhc3MgPSBJOTE1X0VOR0lORV9DTEFTU19W SURFTywKPiAgIAl9LAo+ICAgCVtWSURFT19FTkhBTkNFTUVOVF9DTEFTU10gPSB7Cj4gICAJCS5u YW1lID0gInZlY3MiLAo+IC0JCS5pbml0X2V4ZWNsaXN0cyA9IGxvZ2ljYWxfeGNzX3JpbmdfaW5p dCwKPiAtCQkuaW5pdF9sZWdhY3kgPSBpbnRlbF9pbml0X3ZlYm94X3JpbmdfYnVmZmVyLAo+ICAg CQkudWFiaV9jbGFzcyA9IEk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPX0VOSEFOQ0UsCj4gICAJfSwK PiAgIH07Cj4gQEAgLTQwMCw0OCArMzg5LDM5IEBAIGludCBpbnRlbF9lbmdpbmVzX2luaXRfbW1p byhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAKPiAgIC8qKgo+ICAgICog aW50ZWxfZW5naW5lc19pbml0KCkgLSBpbml0IHRoZSBFbmdpbmUgQ29tbWFuZCBTdHJlYW1lcnMK PiAtICogQGRldl9wcml2OiBpOTE1IGRldmljZSBwcml2YXRlCj4gKyAqIEBpOTE1OiBpOTE1IGRl dmljZSBwcml2YXRlCj4gICAgKgo+ICAgICogUmV0dXJuOiBub24temVybyBpZiB0aGUgaW5pdGlh bGl6YXRpb24gZmFpbGVkLgo+ICAgICovCj4gLWludCBpbnRlbF9lbmdpbmVzX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICtpbnQgaW50ZWxfZW5naW5lc19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+ICsJaW50ICgqaW5pdCkoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7Cj4gICAJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQsIGVycl9pZDsKPiAgIAlpbnQgZXJy Owo+ICAgCj4gLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKPiAtCQlj b25zdCBzdHJ1Y3QgZW5naW5lX2NsYXNzX2luZm8gKmNsYXNzX2luZm8gPQo+IC0JCQkmaW50ZWxf ZW5naW5lX2NsYXNzZXNbZW5naW5lLT5jbGFzc107Cj4gLQkJaW50ICgqaW5pdCkoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAtCj4gLQkJaWYgKEhBU19FWEVDTElTVFMoZGV2X3By aXYpKQo+IC0JCQlpbml0ID0gY2xhc3NfaW5mby0+aW5pdF9leGVjbGlzdHM7Cj4gLQkJZWxzZQo+ IC0JCQlpbml0ID0gY2xhc3NfaW5mby0+aW5pdF9sZWdhY3k7Cj4gKwlpZiAoSEFTX0VYRUNMSVNU UyhpOTE1KSkKPiArCQlpbml0ID0gaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb25faW5pdDsKPiAr CWVsc2UKPiArCQlpbml0ID0gaW50ZWxfcmluZ19zdWJtaXNzaW9uX2luaXQ7Cj4gICAKPiAtCQll cnIgPSAtRUlOVkFMOwo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiAg IAkJZXJyX2lkID0gaWQ7Cj4gICAKPiAtCQlpZiAoR0VNX0RFQlVHX1dBUk5fT04oIWluaXQpKQo+ IC0JCQlnb3RvIGNsZWFudXA7Cj4gLQo+ICAgCQllcnIgPSBpbml0KGVuZ2luZSk7Cj4gICAJCWlm IChlcnIpCj4gICAJCQlnb3RvIGNsZWFudXA7Cj4gLQo+IC0JCUdFTV9CVUdfT04oIWVuZ2luZS0+ c3VibWl0X3JlcXVlc3QpOwo+ICAgCX0KPiAgIAo+ICAgCXJldHVybiAwOwo+ICAgCj4gICBjbGVh bnVwOgo+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7Cj4gKwlmb3Jf ZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+ICAgCQlpZiAoaWQgPj0gZXJyX2lkKSB7 Cj4gICAJCQlrZnJlZShlbmdpbmUpOwo+IC0JCQlkZXZfcHJpdi0+ZW5naW5lW2lkXSA9IE5VTEw7 Cj4gKwkJCWk5MTUtPmVuZ2luZVtpZF0gPSBOVUxMOwo+ICAgCQl9IGVsc2Ugewo+IC0JCQlkZXZf cHJpdi0+Z3QuY2xlYW51cF9lbmdpbmUoZW5naW5lKTsKPiArCQkJaTkxNS0+Z3QuY2xlYW51cF9l bmdpbmUoZW5naW5lKTsKPiAgIAkJfQo+ICAgCX0KPiAgIAlyZXR1cm4gZXJyOwo+IEBAIC01NTks MTYgKzUzOSw3IEBAIHN0YXRpYyBpbnQgaW5pdF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+IC0vKioKPiAtICog aW50ZWxfZW5naW5lc19zZXR1cF9jb21tb24gLSBzZXR1cCBlbmdpbmUgc3RhdGUgbm90IHJlcXVp cmluZyBodyBhY2Nlc3MKPiAtICogQGVuZ2luZTogRW5naW5lIHRvIHNldHVwLgo+IC0gKgo+IC0g KiBJbml0aWFsaXplcyBAZW5naW5lQCBzdHJ1Y3R1cmUgbWVtYmVycyBzaGFyZWQgYmV0d2VlbiBs ZWdhY3kgYW5kIGV4ZWNsaXN0cwo+IC0gKiBzdWJtaXNzaW9uIG1vZGVzIHdoaWNoIGRvIG5vdCBy ZXF1aXJlIGhhcmR3YXJlIGFjY2Vzcy4KPiAtICoKPiAtICogVHlwaWNhbGx5IGRvbmUgZWFybHkg aW4gdGhlIHN1Ym1pc3Npb24gbW9kZSBzcGVjaWZpYyBlbmdpbmUgc2V0dXAgc3RhZ2UuCj4gLSAq Lwo+IC1pbnQgaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4gK3N0YXRpYyBpbnQgaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJaW50IGVycjsKPiAgIAo+IEBAIC02 MDIsNiArNTczLDUyIEBAIGludCBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9uKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gKy8qKgo+ ICsgKiBpbnRlbF9lbmdpbmVzX3NldHVwLSBzZXR1cCBlbmdpbmUgc3RhdGUgbm90IHJlcXVpcmlu ZyBodyBhY2Nlc3MKPiArICogQGk5MTU6IERldmljZSB0byBzZXR1cC4KPiArICoKPiArICogSW5p dGlhbGl6ZXMgZW5naW5lIHN0cnVjdHVyZSBtZW1iZXJzIHNoYXJlZCBiZXR3ZWVuIGxlZ2FjeSBh bmQgZXhlY2xpc3RzCj4gKyAqIHN1Ym1pc3Npb24gbW9kZXMgd2hpY2ggZG8gbm90IHJlcXVpcmUg aGFyZHdhcmUgYWNjZXNzLgo+ICsgKgo+ICsgKiBUeXBpY2FsbHkgZG9uZSBlYXJseSBpbiB0aGUg c3VibWlzc2lvbiBtb2RlIHNwZWNpZmljIGVuZ2luZSBzZXR1cCBzdGFnZS4KPiArICovCj4gK2lu dCBpbnRlbF9lbmdpbmVzX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7 Cj4gKwlpbnQgKCpzZXR1cCkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiArCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lkIGlk Owo+ICsJaW50IGVycjsKPiArCj4gKwlpZiAoSEFTX0VYRUNMSVNUUyhpOTE1KSkKPiArCQlzZXR1 cCA9IGludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uX3NldHVwOwo+ICsJZWxzZQo+ICsJCXNldHVw ID0gaW50ZWxfcmluZ19zdWJtaXNzaW9uX3NldHVwOwo+ICsKPiArCWZvcl9lYWNoX2VuZ2luZShl bmdpbmUsIGk5MTUsIGlkKSB7Cj4gKwkJZXJyID0gaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihl bmdpbmUpOwo+ICsJCWlmIChlcnIpCj4gKwkJCWdvdG8gY2xlYW51cDsKPiArCj4gKwkJZXJyID0g c2V0dXAoZW5naW5lKTsKPiArCQlpZiAoZXJyKQo+ICsJCQlnb3RvIGNsZWFudXA7Cj4gKwo+ICsJ CUdFTV9CVUdfT04oIWVuZ2luZS0+Y29wcyk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ ICtjbGVhbnVwOgo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiArCQlp ZiAoZW5naW5lLT5jb3BzKQo+ICsJCQlpOTE1LT5ndC5jbGVhbnVwX2VuZ2luZShlbmdpbmUpOwo+ ICsJCWVsc2UKPiArCQkJa2ZyZWUoZW5naW5lKTsKPiArCQlpOTE1LT5lbmdpbmVbaWRdID0gTlVM TDsKPiArCX0KPiArCXJldHVybiBlcnI7Cj4gK30KPiArCj4gICB2b2lkIGludGVsX2VuZ2luZXNf c2V0X3NjaGVkdWxlcl9jYXBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+ ICAgCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5j Cj4gaW5kZXggN2E1ZTZlOTYyZTYxLi5kNGUyOGZiYjVkY2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9scmMuYwo+IEBAIC0xNzg2LDggKzE3ODYsOCBAQCBzdGF0aWMgaW50IGludGVs X2luaXRfd29ya2Fyb3VuZF9iYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJ dW5zaWduZWQgaW50IGk7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JaWYgKEdFTV9ERUJVR19XQVJO X09OKGVuZ2luZS0+aWQgIT0gUkNTMCkpCj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwlpZiAoZW5n aW5lLT5jbGFzcyAhPSBSRU5ERVJfQ0xBU1MpCj4gKwkJcmV0dXJuIDA7Cj4gICAKPiAgIAlzd2l0 Y2ggKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpKSB7Cj4gICAJY2FzZSAxMToKPiBAQCAtMjQyMywx NSArMjQyMyw4IEBAIGxvZ2ljYWxfcmluZ19kZWZhdWx0X2lycXMoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAgCWVuZ2luZS0+aXJxX2tlZXBfbWFzayA9IEdUX0NPTlRFWFRfU1dJ VENIX0lOVEVSUlVQVCA8PCBzaGlmdDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50Cj4gLWxvZ2lj YWxfcmluZ19zZXR1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK2ludCBpbnRl bF9leGVjbGlzdHNfc3VibWlzc2lvbl9zZXR1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gICB7Cj4gLQlpbnQgZXJyOwo+IC0KPiAtCWVyciA9IGludGVsX2VuZ2luZV9zZXR1cF9j b21tb24oZW5naW5lKTsKPiAtCWlmIChlcnIpCj4gLQkJcmV0dXJuIGVycjsKPiAtCj4gICAJLyog SW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rLiAqLwo+ICAgCWVuZ2luZS0+YnVmZmVyID0gTlVMTDsK PiAgIAo+IEBAIC0yNDQxLDEwICsyNDM0LDE2IEBAIGxvZ2ljYWxfcmluZ19zZXR1cChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJbG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNz KGVuZ2luZSk7Cj4gICAJbG9naWNhbF9yaW5nX2RlZmF1bHRfaXJxcyhlbmdpbmUpOwo+ICAgCj4g KwlpZiAoZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1MpIHsKPiArCQllbmdpbmUtPmluaXRf Y29udGV4dCA9IGdlbjhfaW5pdF9yY3NfY29udGV4dDsKPiArCQllbmdpbmUtPmVtaXRfZmx1c2gg PSBnZW44X2VtaXRfZmx1c2hfcmVuZGVyOwo+ICsJCWVuZ2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1 bWIgPSBnZW44X2VtaXRfZmluaV9icmVhZGNydW1iX3JjczsKPiArCX0KPiArCj4gICAJcmV0dXJu IDA7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGludCBsb2dpY2FsX3JpbmdfaW5pdChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK2ludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbl9p bml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKPiBA QCAtMjQ1Niw2ICsyNDU1LDE1IEBAIHN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX2luaXQoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCQlyZXR1cm4gcmV0Owo+ICAgCj4gICAJaW50 ZWxfZW5naW5lX2luaXRfd29ya2Fyb3VuZHMoZW5naW5lKTsKPiArCWludGVsX2VuZ2luZV9pbml0 X3doaXRlbGlzdChlbmdpbmUpOwo+ICsKPiArCWlmIChpbnRlbF9pbml0X3dvcmthcm91bmRfYmIo ZW5naW5lKSkKPiArCQkvKgo+ICsJCSAqIFdlIGNvbnRpbnVlIGV2ZW4gaWYgd2UgZmFpbCB0byBp bml0aWFsaXplIFdBIGJhdGNoCj4gKwkJICogYmVjYXVzZSB3ZSBvbmx5IGV4cGVjdCByYXJlIGds aXRjaGVzIGJ1dCBub3RoaW5nCj4gKwkJICogY3JpdGljYWwgdG8gcHJldmVudCB1cyBmcm9tIHVz aW5nIEdQVQo+ICsJCSAqLwo+ICsJCURSTV9FUlJPUigiV0EgYmF0Y2ggYnVmZmVyIGluaXRpYWxp emF0aW9uIGZhaWxlZFxuIik7Cj4gICAKPiAgIAlpZiAoSEFTX0xPR0lDQUxfUklOR19FTFNRKGk5 MTUpKSB7Cj4gICAJCWV4ZWNsaXN0cy0+c3VibWl0X3JlZyA9IGk5MTUtPnVuY29yZS5yZWdzICsK PiBAQCAtMjQ4Myw1MCArMjQ5MSw2IEBAIHN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX2luaXQoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4g LWludCBsb2dpY2FsX3JlbmRlcl9yaW5nX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+IC17Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCXJldCA9IGxvZ2ljYWxfcmluZ19zZXR1cChl bmdpbmUpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCS8qIE92ZXJyaWRl IHNvbWUgZm9yIHJlbmRlciByaW5nLiAqLwo+IC0JZW5naW5lLT5pbml0X2NvbnRleHQgPSBnZW44 X2luaXRfcmNzX2NvbnRleHQ7Cj4gLQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW44X2VtaXRfZmx1 c2hfcmVuZGVyOwo+IC0JZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjhfZW1pdF9m aW5pX2JyZWFkY3J1bWJfcmNzOwo+IC0KPiAtCXJldCA9IGxvZ2ljYWxfcmluZ19pbml0KGVuZ2lu ZSk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JcmV0ID0gaW50ZWxfaW5p dF93b3JrYXJvdW5kX2JiKGVuZ2luZSk7Cj4gLQlpZiAocmV0KSB7Cj4gLQkJLyoKPiAtCQkgKiBX ZSBjb250aW51ZSBldmVuIGlmIHdlIGZhaWwgdG8gaW5pdGlhbGl6ZSBXQSBiYXRjaAo+IC0JCSAq IGJlY2F1c2Ugd2Ugb25seSBleHBlY3QgcmFyZSBnbGl0Y2hlcyBidXQgbm90aGluZwo+IC0JCSAq IGNyaXRpY2FsIHRvIHByZXZlbnQgdXMgZnJvbSB1c2luZyBHUFUKPiAtCQkgKi8KPiAtCQlEUk1f RVJST1IoIldBIGJhdGNoIGJ1ZmZlciBpbml0aWFsaXphdGlvbiBmYWlsZWQ6ICVkXG4iLAo+IC0J CQkgIHJldCk7Cj4gLQl9Cj4gLQo+IC0JaW50ZWxfZW5naW5lX2luaXRfd2hpdGVsaXN0KGVuZ2lu ZSk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLWludCBsb2dpY2FsX3hjc19yaW5nX2lu aXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IC17Cj4gLQlpbnQgZXJyOwo+IC0K PiAtCWVyciA9IGxvZ2ljYWxfcmluZ19zZXR1cChlbmdpbmUpOwo+IC0JaWYgKGVycikKPiAtCQly ZXR1cm4gZXJyOwo+IC0KPiAtCXJldHVybiBsb2dpY2FsX3JpbmdfaW5pdChlbmdpbmUpOwo+IC19 Cj4gLQo+ICAgc3RhdGljIHUzMiBpbnRlbF9scl9pbmRpcmVjdF9jdHhfb2Zmc2V0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAl1MzIgaW5kaXJlY3RfY3R4X29mZnNl dDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuaAo+IGluZGV4IGE1OThmMmQ1NmRlMy4u YTU2ZWU0NWI5ZTNjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2xyYy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmgKPiBAQCAt NjcsOCArNjcsOSBAQCBlbnVtIHsKPiAgIAo+ICAgLyogTG9naWNhbCBSaW5ncyAqLwo+ICAgdm9p ZCBpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpOwo+IC1pbnQgbG9naWNhbF9yZW5kZXJfcmluZ19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSk7Cj4gLWludCBsb2dpY2FsX3hjc19yaW5nX2luaXQoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKTsKPiArCj4gK2ludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbl9z ZXR1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICtpbnQgaW50ZWxfZXhlY2xp c3RzX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICAg Cj4gICAvKiBMb2dpY2FsIFJpbmcgQ29udGV4dHMgKi8KPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCA3NDhjMTMzYjgzYjQuLjMyMDRkYmI1 NDFmNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVm ZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMK PiBAQCAtMTUyMyw1NCArMTUyMyw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4 dF9vcHMgcmluZ19jb250ZXh0X29wcyA9IHsKPiAgIAkuZGVzdHJveSA9IHJpbmdfY29udGV4dF9k ZXN0cm95LAo+ICAgfTsKPiAgIAo+IC1zdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IC17Cj4gLQlzdHJ1Y3QgaTkxNV90aW1l bGluZSAqdGltZWxpbmU7Cj4gLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKPiAtCWludCBlcnI7 Cj4gLQo+IC0JZXJyID0gaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihlbmdpbmUpOwo+IC0JaWYg KGVycikKPiAtCQlyZXR1cm4gZXJyOwo+IC0KPiAtCXRpbWVsaW5lID0gaTkxNV90aW1lbGluZV9j cmVhdGUoZW5naW5lLT5pOTE1LCBlbmdpbmUtPnN0YXR1c19wYWdlLnZtYSk7Cj4gLQlpZiAoSVNf RVJSKHRpbWVsaW5lKSkgewo+IC0JCWVyciA9IFBUUl9FUlIodGltZWxpbmUpOwo+IC0JCWdvdG8g ZXJyOwo+IC0JfQo+IC0JR0VNX0JVR19PTih0aW1lbGluZS0+aGFzX2luaXRpYWxfYnJlYWRjcnVt Yik7Cj4gLQo+IC0JcmluZyA9IGludGVsX2VuZ2luZV9jcmVhdGVfcmluZyhlbmdpbmUsIHRpbWVs aW5lLCAzMiAqIFBBR0VfU0laRSk7Cj4gLQlpOTE1X3RpbWVsaW5lX3B1dCh0aW1lbGluZSk7Cj4g LQlpZiAoSVNfRVJSKHJpbmcpKSB7Cj4gLQkJZXJyID0gUFRSX0VSUihyaW5nKTsKPiAtCQlnb3Rv IGVycjsKPiAtCX0KPiAtCj4gLQllcnIgPSBpbnRlbF9yaW5nX3BpbihyaW5nKTsKPiAtCWlmIChl cnIpCj4gLQkJZ290byBlcnJfcmluZzsKPiAtCj4gLQlHRU1fQlVHX09OKGVuZ2luZS0+YnVmZmVy KTsKPiAtCWVuZ2luZS0+YnVmZmVyID0gcmluZzsKPiAtCj4gLQllcnIgPSBpbnRlbF9lbmdpbmVf aW5pdF9jb21tb24oZW5naW5lKTsKPiAtCWlmIChlcnIpCj4gLQkJZ290byBlcnJfdW5waW47Cj4g LQo+IC0JR0VNX0JVR19PTihyaW5nLT50aW1lbGluZS0+aHdzcF9nZ3R0ICE9IGVuZ2luZS0+c3Rh dHVzX3BhZ2Uudm1hKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtCj4gLWVycl91bnBpbjoKPiAtCWlu dGVsX3JpbmdfdW5waW4ocmluZyk7Cj4gLWVycl9yaW5nOgo+IC0JaW50ZWxfcmluZ19wdXQocmlu Zyk7Cj4gLWVycjoKPiAtCWludGVsX2VuZ2luZV9jbGVhbnVwX2NvbW1vbihlbmdpbmUpOwo+IC0J cmV0dXJuIGVycjsKPiAtfQo+IC0KPiAgIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXAoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiBAQCAtMjE2NiwyNCArMjExOCw2IEBAIHN0 YXRpYyBpbnQgZ2VuNl9yaW5nX2ZsdXNoKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgbW9k ZSkKPiAgIAlyZXR1cm4gZ2VuNl9mbHVzaF9kdyhycSwgbW9kZSwgTUlfSU5WQUxJREFURV9UTEIp Owo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIGludGVsX3JpbmdfaW5pdF9pcnEoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0JCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+IC17Cj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4gLQkJZW5n aW5lLT5pcnFfZW5hYmxlID0gZ2VuNl9pcnFfZW5hYmxlOwo+IC0JCWVuZ2luZS0+aXJxX2Rpc2Fi bGUgPSBnZW42X2lycV9kaXNhYmxlOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDUpIHsKPiAtCQllbmdpbmUtPmlycV9lbmFibGUgPSBnZW41X2lycV9lbmFibGU7Cj4gLQkJ ZW5naW5lLT5pcnFfZGlzYWJsZSA9IGdlbjVfaXJxX2Rpc2FibGU7Cj4gLQl9IGVsc2UgaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gMykgewo+IC0JCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGk5eHhf aXJxX2VuYWJsZTsKPiAtCQllbmdpbmUtPmlycV9kaXNhYmxlID0gaTl4eF9pcnFfZGlzYWJsZTsK PiAtCX0gZWxzZSB7Cj4gLQkJZW5naW5lLT5pcnFfZW5hYmxlID0gaTh4eF9pcnFfZW5hYmxlOwo+ IC0JCWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBpOHh4X2lycV9kaXNhYmxlOwo+IC0JfQo+IC19Cj4g LQo+ICAgc3RhdGljIHZvaWQgaTl4eF9zZXRfZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAllbmdpbmUtPnN1Ym1pdF9yZXF1ZXN0ID0g aTl4eF9zdWJtaXRfcmVxdWVzdDsKPiBAQCAtMjE5OSwxMyArMjEzMywzMyBAQCBzdGF0aWMgdm9p ZCBnZW42X2JzZF9zZXRfZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiAgIAllbmdpbmUtPnN1Ym1pdF9yZXF1ZXN0ID0gZ2VuNl9ic2Rfc3VibWl0X3Jl cXVlc3Q7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgaW50ZWxfcmluZ19kZWZhdWx0X3ZmdW5j cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkgICAgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3N0YXRpYyB2b2lkIHNldHVwX2lycShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gZW5naW5lLT5pOTE1Owo+ICsKPiArCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikg ewo+ICsJCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjZfaXJxX2VuYWJsZTsKPiArCQllbmdpbmUt PmlycV9kaXNhYmxlID0gZ2VuNl9pcnFfZGlzYWJsZTsKPiArCX0gZWxzZSBpZiAoSU5URUxfR0VO KGk5MTUpID49IDUpIHsKPiArCQllbmdpbmUtPmlycV9lbmFibGUgPSBnZW41X2lycV9lbmFibGU7 Cj4gKwkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGdlbjVfaXJxX2Rpc2FibGU7Cj4gKwl9IGVsc2Ug aWYgKElOVEVMX0dFTihpOTE1KSA+PSAzKSB7Cj4gKwkJZW5naW5lLT5pcnFfZW5hYmxlID0gaTl4 eF9pcnFfZW5hYmxlOwo+ICsJCWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBpOXh4X2lycV9kaXNhYmxl Owo+ICsJfSBlbHNlIHsKPiArCQllbmdpbmUtPmlycV9lbmFibGUgPSBpOHh4X2lycV9lbmFibGU7 Cj4gKwkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGk4eHhfaXJxX2Rpc2FibGU7Cj4gKwl9Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIHNldHVwX3hjcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gICB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkx NTsKPiArCj4gICAJLyogZ2VuOCsgYXJlIG9ubHkgc3VwcG9ydGVkIHdpdGggZXhlY2xpc3RzICov Cj4gLQlHRU1fQlVHX09OKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCk7Cj4gKwlHRU1fQlVHX09O KElOVEVMX0dFTihpOTE1KSA+PSA4KTsKPiAgIAo+IC0JaW50ZWxfcmluZ19pbml0X2lycShkZXZf cHJpdiwgZW5naW5lKTsKPiArCXNldHVwX2lycShlbmdpbmUpOwo+ICAgCj4gICAJZW5naW5lLT5y ZXN1bWUgPSB4Y3NfcmVzdW1lOwo+ICAgCWVuZ2luZS0+cmVzZXQucHJlcGFyZSA9IHJlc2V0X3By ZXBhcmU7Cj4gQEAgLTIyMjEsMTE3ICsyMTc1LDk2IEBAIHN0YXRpYyB2b2lkIGludGVsX3Jpbmdf ZGVmYXVsdF92ZnVuY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCSAq IGVuZ2luZS0+ZW1pdF9pbml0X2JyZWFkY3J1bWIoKS4KPiAgIAkgKi8KPiAgIAllbmdpbmUtPmVt aXRfZmluaV9icmVhZGNydW1iID0gaTl4eF9lbWl0X2JyZWFkY3J1bWI7Cj4gLQlpZiAoSVNfR0VO KGRldl9wcml2LCA1KSkKPiArCWlmIChJU19HRU4oaTkxNSwgNSkpCj4gICAJCWVuZ2luZS0+ZW1p dF9maW5pX2JyZWFkY3J1bWIgPSBnZW41X2VtaXRfYnJlYWRjcnVtYjsKPiAgIAo+ICAgCWVuZ2lu ZS0+c2V0X2RlZmF1bHRfc3VibWlzc2lvbiA9IGk5eHhfc2V0X2RlZmF1bHRfc3VibWlzc2lvbjsK PiAgIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKPiArCWlmIChJTlRFTF9HRU4o aTkxNSkgPj0gNikKPiAgIAkJZW5naW5lLT5lbWl0X2JiX3N0YXJ0ID0gZ2VuNl9lbWl0X2JiX3N0 YXJ0Owo+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+ICsJZWxzZSBpZiAo SU5URUxfR0VOKGk5MTUpID49IDQpCj4gICAJCWVuZ2luZS0+ZW1pdF9iYl9zdGFydCA9IGk5NjVf ZW1pdF9iYl9zdGFydDsKPiAtCWVsc2UgaWYgKElTX0k4MzAoZGV2X3ByaXYpIHx8IElTX0k4NDVH KGRldl9wcml2KSkKPiArCWVsc2UgaWYgKElTX0k4MzAoaTkxNSkgfHwgSVNfSTg0NUcoaTkxNSkp Cj4gICAJCWVuZ2luZS0+ZW1pdF9iYl9zdGFydCA9IGk4MzBfZW1pdF9iYl9zdGFydDsKPiAgIAll bHNlCj4gICAJCWVuZ2luZS0+ZW1pdF9iYl9zdGFydCA9IGk5MTVfZW1pdF9iYl9zdGFydDsKPiAg IH0KPiAgIAo+IC1pbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmluZ19idWZmZXIoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICtzdGF0aWMgdm9pZCBzZXR1cF9yY3Moc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZW5naW5lLT5pOTE1Owo+IC0JaW50IHJldDsKPiAtCj4gLQlpbnRlbF9yaW5nX2Rl ZmF1bHRfdmZ1bmNzKGRldl9wcml2LCBlbmdpbmUpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7Cj4gICAKPiAtCWlmIChIQVNfTDNfRFBGKGRldl9wcml2 KSkKPiArCWlmIChIQVNfTDNfRFBGKGk5MTUpKQo+ICAgCQllbmdpbmUtPmlycV9rZWVwX21hc2sg PSBHVF9SRU5ERVJfTDNfUEFSSVRZX0VSUk9SX0lOVEVSUlVQVDsKPiAgIAo+ICAgCWVuZ2luZS0+ aXJxX2VuYWJsZV9tYXNrID0gR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUOwo+ICAgCj4gLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA3KSB7Cj4gKwlpZiAoSU5URUxfR0VOKGk5MTUpID49IDcp IHsKPiAgIAkJZW5naW5lLT5pbml0X2NvbnRleHQgPSBpbnRlbF9yY3NfY3R4X2luaXQ7Cj4gICAJ CWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjdfcmVuZGVyX3JpbmdfZmx1c2g7Cj4gICAJCWVuZ2lu ZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW43X3Jjc19lbWl0X2JyZWFkY3J1bWI7Cj4gLQl9 IGVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgNikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VOKGk5 MTUsIDYpKSB7Cj4gICAJCWVuZ2luZS0+aW5pdF9jb250ZXh0ID0gaW50ZWxfcmNzX2N0eF9pbml0 Owo+ICAgCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW42X3JlbmRlcl9yaW5nX2ZsdXNoOwo+ICAg CQllbmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1iID0gZ2VuNl9yY3NfZW1pdF9icmVhZGNydW1i Owo+IC0JfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDUpKSB7Cj4gKwl9IGVsc2UgaWYgKElT X0dFTihpOTE1LCA1KSkgewo+ICAgCQllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW40X3JlbmRlcl9y aW5nX2ZsdXNoOwo+ICAgCX0gZWxzZSB7Cj4gLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0 KQo+ICsJCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA0KQo+ICAgCQkJZW5naW5lLT5lbWl0X2ZsdXNo ID0gZ2VuMl9yZW5kZXJfcmluZ19mbHVzaDsKPiAgIAkJZWxzZQo+ICAgCQkJZW5naW5lLT5lbWl0 X2ZsdXNoID0gZ2VuNF9yZW5kZXJfcmluZ19mbHVzaDsKPiAgIAkJZW5naW5lLT5pcnFfZW5hYmxl X21hc2sgPSBJOTE1X1VTRVJfSU5URVJSVVBUOwo+ICAgCX0KPiAgIAo+IC0JaWYgKElTX0hBU1dF TEwoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0hBU1dFTEwoaTkxNSkpCj4gICAJCWVuZ2luZS0+ZW1p dF9iYl9zdGFydCA9IGhzd19lbWl0X2JiX3N0YXJ0Owo+ICAgCj4gICAJZW5naW5lLT5yZXN1bWUg PSByY3NfcmVzdW1lOwo+IC0KPiAtCXJldCA9IGludGVsX2luaXRfcmluZ19idWZmZXIoZW5naW5l KTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQlyZXR1cm4gMDsKPiAgIH0K PiAgIAo+IC1pbnQgaW50ZWxfaW5pdF9ic2RfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICtzdGF0aWMgdm9pZCBzZXR1cF92Y3Moc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZW5naW5lLT5pOTE1Owo+IC0KPiAtCWludGVsX3JpbmdfZGVmYXVsdF92ZnVuY3MoZGV2X3By aXYsIGVuZ2luZSk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+ aTkxNTsKPiAgIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewo+ICsJaWYgKElO VEVMX0dFTihpOTE1KSA+PSA2KSB7Cj4gICAJCS8qIGdlbjYgYnNkIG5lZWRzIGEgc3BlY2lhbCB3 YSBmb3IgdGFpbCB1cGRhdGVzICovCj4gLQkJaWYgKElTX0dFTihkZXZfcHJpdiwgNikpCj4gKwkJ aWYgKElTX0dFTihpOTE1LCA2KSkKPiAgIAkJCWVuZ2luZS0+c2V0X2RlZmF1bHRfc3VibWlzc2lv biA9IGdlbjZfYnNkX3NldF9kZWZhdWx0X3N1Ym1pc3Npb247Cj4gICAJCWVuZ2luZS0+ZW1pdF9m bHVzaCA9IGdlbjZfYnNkX3JpbmdfZmx1c2g7Cj4gICAJCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNr ID0gR1RfQlNEX1VTRVJfSU5URVJSVVBUOwo+ICAgCj4gLQkJaWYgKElTX0dFTihkZXZfcHJpdiwg NikpCj4gKwkJaWYgKElTX0dFTihpOTE1LCA2KSkKPiAgIAkJCWVuZ2luZS0+ZW1pdF9maW5pX2Jy ZWFkY3J1bWIgPSBnZW42X3hjc19lbWl0X2JyZWFkY3J1bWI7Cj4gICAJCWVsc2UKPiAgIAkJCWVu Z2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWIgPSBnZW43X3hjc19lbWl0X2JyZWFkY3J1bWI7Cj4g ICAJfSBlbHNlIHsKPiAgIAkJZW5naW5lLT5lbWl0X2ZsdXNoID0gYnNkX3JpbmdfZmx1c2g7Cj4g LQkJaWYgKElTX0dFTihkZXZfcHJpdiwgNSkpCj4gKwkJaWYgKElTX0dFTihpOTE1LCA1KSkKPiAg IAkJCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrID0gSUxLX0JTRF9VU0VSX0lOVEVSUlVQVDsKPiAg IAkJZWxzZQo+ICAgCQkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPSBJOTE1X0JTRF9VU0VSX0lO VEVSUlVQVDsKPiAgIAl9Cj4gLQo+IC0JcmV0dXJuIGludGVsX2luaXRfcmluZ19idWZmZXIoZW5n aW5lKTsKPiAgIH0KPiAgIAo+IC1pbnQgaW50ZWxfaW5pdF9ibHRfcmluZ19idWZmZXIoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICtzdGF0aWMgdm9pZCBzZXR1cF9iY3Moc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+IC0KPiAtCUdFTV9CVUdfT04oSU5URUxfR0VO KGRldl9wcml2KSA8IDYpOwo+IC0KPiAtCWludGVsX3JpbmdfZGVmYXVsdF92ZnVuY3MoZGV2X3By aXYsIGVuZ2luZSk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+ aTkxNTsKPiAgIAo+ICAgCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjZfcmluZ19mbHVzaDsKPiAg IAllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9IEdUX0JMVF9VU0VSX0lOVEVSUlVQVDsKPiAgIAo+ IC0JaWYgKElTX0dFTihkZXZfcHJpdiwgNikpCj4gKwlpZiAoSVNfR0VOKGk5MTUsIDYpKQo+ICAg CQllbmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1iID0gZ2VuNl94Y3NfZW1pdF9icmVhZGNydW1i Owo+ICAgCWVsc2UKPiAgIAkJZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjdfeGNz X2VtaXRfYnJlYWRjcnVtYjsKPiAtCj4gLQlyZXR1cm4gaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihl bmdpbmUpOwo+ICAgfQo+ICAgCj4gLWludCBpbnRlbF9pbml0X3ZlYm94X3JpbmdfYnVmZmVyKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArc3RhdGljIHZvaWQgc2V0dXBfdmVjcyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gLQo+IC0JR0VNX0JVR19PTihJTlRF TF9HRU4oZGV2X3ByaXYpIDwgNyk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IGVuZ2luZS0+aTkxNTsKPiAgIAo+IC0JaW50ZWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhkZXZfcHJp diwgZW5naW5lKTsKPiArCUdFTV9CVUdfT04oSU5URUxfR0VOKGk5MTUpIDwgNyk7Cj4gICAKPiAg IAllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW42X3JpbmdfZmx1c2g7Cj4gICAJZW5naW5lLT5pcnFf ZW5hYmxlX21hc2sgPSBQTV9WRUJPWF9VU0VSX0lOVEVSUlVQVDsKPiBAQCAtMjMzOSw2ICsyMjcy LDczIEBAIGludCBpbnRlbF9pbml0X3ZlYm94X3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgIAllbmdpbmUtPmlycV9kaXNhYmxlID0gaHN3X3ZlYm94X2lycV9k aXNhYmxlOwo+ICAgCj4gICAJZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYiA9IGdlbjdfeGNz X2VtaXRfYnJlYWRjcnVtYjsKPiArfQo+ICsKPiAraW50IGludGVsX3Jpbmdfc3VibWlzc2lvbl9z ZXR1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCXNldHVwX3hjcyhl bmdpbmUpOwoKSXQgaXMgYWN0dWFsbHkgc2V0dXBfY29tbW9uLCBubz8gSSB0aGluayBpdCB3b3Vs ZCBiZSBjbGVhcmVyIHNpbmNlIHdlIAp1c2UgdG8gaGF2ZSB4Y3MgbWVhbiAhcmNzLgoKPiArCj4g Kwlzd2l0Y2ggKGVuZ2luZS0+Y2xhc3MpIHsKPiArCWNhc2UgUkVOREVSX0NMQVNTOgo+ICsJCXNl dHVwX3JjcyhlbmdpbmUpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBWSURFT19ERUNPREVfQ0xBU1M6 Cj4gKwkJc2V0dXBfdmNzKGVuZ2luZSk7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIENPUFlfRU5HSU5F X0NMQVNTOgo+ICsJCXNldHVwX2JjcyhlbmdpbmUpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBWSURF T19FTkhBTkNFTUVOVF9DTEFTUzoKPiArCQlzZXR1cF92ZWNzKGVuZ2luZSk7Cj4gKwkJYnJlYWs7 Cj4gKwlkZWZhdWx0Ogo+ICsJCU1JU1NJTkdfQ0FTRShlbmdpbmUtPmNsYXNzKTsKPiArCQlyZXR1 cm4gLUVOT0RFVjsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IGludGVs X3Jpbmdfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAr ewo+ICsJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lOwo+ICsJc3RydWN0IGludGVsX3Jp bmcgKnJpbmc7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCXRpbWVsaW5lID0gaTkxNV90aW1lbGluZV9j cmVhdGUoZW5naW5lLT5pOTE1LCBlbmdpbmUtPnN0YXR1c19wYWdlLnZtYSk7Cj4gKwlpZiAoSVNf RVJSKHRpbWVsaW5lKSkgewo+ICsJCWVyciA9IFBUUl9FUlIodGltZWxpbmUpOwo+ICsJCWdvdG8g ZXJyOwo+ICsJfQo+ICsJR0VNX0JVR19PTih0aW1lbGluZS0+aGFzX2luaXRpYWxfYnJlYWRjcnVt Yik7Cj4gKwo+ICsJcmluZyA9IGludGVsX2VuZ2luZV9jcmVhdGVfcmluZyhlbmdpbmUsIHRpbWVs aW5lLCAzMiAqIFBBR0VfU0laRSk7Cj4gKwlpOTE1X3RpbWVsaW5lX3B1dCh0aW1lbGluZSk7Cj4g KwlpZiAoSVNfRVJSKHJpbmcpKSB7Cj4gKwkJZXJyID0gUFRSX0VSUihyaW5nKTsKPiArCQlnb3Rv IGVycjsKPiArCX0KPiArCj4gKwllcnIgPSBpbnRlbF9yaW5nX3BpbihyaW5nKTsKPiArCWlmIChl cnIpCj4gKwkJZ290byBlcnJfcmluZzsKPiAgIAo+IC0JcmV0dXJuIGludGVsX2luaXRfcmluZ19i dWZmZXIoZW5naW5lKTsKPiArCUdFTV9CVUdfT04oZW5naW5lLT5idWZmZXIpOwo+ICsJZW5naW5l LT5idWZmZXIgPSByaW5nOwo+ICsKPiArCWVyciA9IGludGVsX2VuZ2luZV9pbml0X2NvbW1vbihl bmdpbmUpOwo+ICsJaWYgKGVycikKPiArCQlnb3RvIGVycl91bnBpbjsKPiArCj4gKwlHRU1fQlVH X09OKHJpbmctPnRpbWVsaW5lLT5od3NwX2dndHQgIT0gZW5naW5lLT5zdGF0dXNfcGFnZS52bWEp Owo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZXJyX3VucGluOgo+ICsJaW50ZWxfcmluZ191bnBp bihyaW5nKTsKPiArZXJyX3Jpbmc6Cj4gKwlpbnRlbF9yaW5nX3B1dChyaW5nKTsKPiArZXJyOgo+ ICsJaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9uKGVuZ2luZSk7Cj4gKwlyZXR1cm4gZXJyOwo+ ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJv dW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYwo+IGlu ZGV4IDJkNmQxN2VlMzYwMS4uZTlkODE3NGIyNGU4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCj4gQEAgLTEwNjAsNyArMTA2MCw4IEBAIHZvaWQg aW50ZWxfZW5naW5lX2luaXRfd2hpdGVsaXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKPiAg IAlzdHJ1Y3QgaTkxNV93YV9saXN0ICp3ID0gJmVuZ2luZS0+d2hpdGVsaXN0Owo+ICAgCj4gLQlH RU1fQlVHX09OKGVuZ2luZS0+aWQgIT0gUkNTMCk7Cj4gKwlpZiAoZW5naW5lLT5jbGFzcyAhPSBS RU5ERVJfQ0xBU1MpCj4gKwkJcmV0dXJuOwo+ICAgCj4gICAJd2FfaW5pdF9zdGFydCh3LCAid2hp dGVsaXN0Iik7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9j a19lbmdpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMKPiBpbmRl eCBhNzlkOTkwOWQxNzEuLjNiNjcyZTAxMWNmMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv bW9ja19lbmdpbmUuYwo+IEBAIC0yMzksNyArMjM5LDYgQEAgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqbW9ja19lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJCQkJICAg IGludCBpZCkKPiAgIHsKPiAgIAlzdHJ1Y3QgbW9ja19lbmdpbmUgKmVuZ2luZTsKPiAtCWludCBl cnI7Cj4gICAKPiAgIAlHRU1fQlVHX09OKGlkID49IEk5MTVfTlVNX0VOR0lORVMpOwo+ICAgCj4g QEAgLTI2NSwzNyArMjY0LDQ0IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1vY2tfZW5naW5l KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCWVuZ2luZS0+YmFzZS5yZXNldC5m aW5pc2ggPSBtb2NrX3Jlc2V0X2ZpbmlzaDsKPiAgIAllbmdpbmUtPmJhc2UuY2FuY2VsX3JlcXVl c3RzID0gbW9ja19jYW5jZWxfcmVxdWVzdHM7Cj4gICAKPiAtCWlmIChpOTE1X3RpbWVsaW5lX2lu aXQoaTkxNSwgJmVuZ2luZS0+YmFzZS50aW1lbGluZSwgTlVMTCkpCj4gLQkJZ290byBlcnJfZnJl ZTsKPiAtCWk5MTVfdGltZWxpbmVfc2V0X3N1YmNsYXNzKCZlbmdpbmUtPmJhc2UudGltZWxpbmUs IFRJTUVMSU5FX0VOR0lORSk7Cj4gLQo+IC0JaW50ZWxfZW5naW5lX2luaXRfYnJlYWRjcnVtYnMo JmVuZ2luZS0+YmFzZSk7Cj4gLQlpbnRlbF9lbmdpbmVfaW5pdF9leGVjbGlzdHMoJmVuZ2luZS0+ YmFzZSk7Cj4gLQlpbnRlbF9lbmdpbmVfaW5pdF9fcG0oJmVuZ2luZS0+YmFzZSk7Cj4gLQo+ICAg CS8qIGZha2UgaHcgcXVldWUgKi8KPiAgIAlzcGluX2xvY2tfaW5pdCgmZW5naW5lLT5od19sb2Nr KTsKPiAgIAl0aW1lcl9zZXR1cCgmZW5naW5lLT5od19kZWxheSwgaHdfZGVsYXlfY29tcGxldGUs IDApOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmh3X3F1ZXVlKTsKPiAgIAo+IC0JZW5n aW5lLT5iYXNlLmtlcm5lbF9jb250ZXh0ID0KPiAtCQlpbnRlbF9jb250ZXh0X2luc3RhbmNlKGk5 MTUtPmtlcm5lbF9jb250ZXh0LCAmZW5naW5lLT5iYXNlKTsKPiAtCWlmIChJU19FUlIoZW5naW5l LT5iYXNlLmtlcm5lbF9jb250ZXh0KSkKPiArCXJldHVybiAmZW5naW5lLT5iYXNlOwo+ICt9Cj4g Kwo+ICtpbnQgbW9ja19lbmdpbmVfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1Owo+ ICsJaW50IGVycjsKPiArCj4gKwlpbnRlbF9lbmdpbmVfaW5pdF9icmVhZGNydW1icyhlbmdpbmUp Owo+ICsJaW50ZWxfZW5naW5lX2luaXRfZXhlY2xpc3RzKGVuZ2luZSk7Cj4gKwlpbnRlbF9lbmdp bmVfaW5pdF9fcG0oZW5naW5lKTsKPiArCj4gKwlpZiAoaTkxNV90aW1lbGluZV9pbml0KGk5MTUs ICZlbmdpbmUtPnRpbWVsaW5lLCBOVUxMKSkKPiAgIAkJZ290byBlcnJfYnJlYWRjcnVtYnM7Cj4g KwlpOTE1X3RpbWVsaW5lX3NldF9zdWJjbGFzcygmZW5naW5lLT50aW1lbGluZSwgVElNRUxJTkVf RU5HSU5FKTsKPiArCj4gKwllbmdpbmUtPmtlcm5lbF9jb250ZXh0ID0KPiArCQlpbnRlbF9jb250 ZXh0X2luc3RhbmNlKGk5MTUtPmtlcm5lbF9jb250ZXh0LCBlbmdpbmUpOwo+ICsJaWYgKElTX0VS UihlbmdpbmUtPmtlcm5lbF9jb250ZXh0KSkKPiArCQlnb3RvIGVycl90aW1lbGluZTsKPiAgIAo+ IC0JZXJyID0gaW50ZWxfY29udGV4dF9waW4oZW5naW5lLT5iYXNlLmtlcm5lbF9jb250ZXh0KTsK PiAtCWludGVsX2NvbnRleHRfcHV0KGVuZ2luZS0+YmFzZS5rZXJuZWxfY29udGV4dCk7Cj4gKwll cnIgPSBpbnRlbF9jb250ZXh0X3BpbihlbmdpbmUtPmtlcm5lbF9jb250ZXh0KTsKPiArCWludGVs X2NvbnRleHRfcHV0KGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+ICAgCWlmIChlcnIpCj4gLQkJ Z290byBlcnJfYnJlYWRjcnVtYnM7Cj4gKwkJZ290byBlcnJfdGltZWxpbmU7Cj4gICAKPiAtCXJl dHVybiAmZW5naW5lLT5iYXNlOwo+ICsJcmV0dXJuIDA7Cj4gICAKPiArZXJyX3RpbWVsaW5lOgo+ ICsJaTkxNV90aW1lbGluZV9maW5pKCZlbmdpbmUtPnRpbWVsaW5lKTsKPiAgIGVycl9icmVhZGNy dW1iczoKPiAtCWludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1bWJzKCZlbmdpbmUtPmJhc2UpOwo+ IC0JaTkxNV90aW1lbGluZV9maW5pKCZlbmdpbmUtPmJhc2UudGltZWxpbmUpOwo+IC1lcnJfZnJl ZToKPiAtCWtmcmVlKGVuZ2luZSk7Cj4gLQlyZXR1cm4gTlVMTDsKPiArCWludGVsX2VuZ2luZV9m aW5pX2JyZWFkY3J1bWJzKGVuZ2luZSk7Cj4gKwlyZXR1cm4gLUVOT01FTTsKPiAgIH0KPiAgIAo+ ICAgdm9pZCBtb2NrX2VuZ2luZV9mbHVzaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9tb2NrX2VuZ2luZS5oCj4gaW5kZXggNDRiMzVhODVlOWQx Li4zZjliNjk4YzQ5ZDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9j a19lbmdpbmUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmgK PiBAQCAtNDIsNiArNDIsOCBAQCBzdHJ1Y3QgbW9ja19lbmdpbmUgewo+ICAgc3RydWN0IGludGVs X2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4g ICAJCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUsCj4gICAJCQkJICAgIGludCBpZCk7Cj4gK2ludCBt b2NrX2VuZ2luZV9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gKwo+ICAg dm9pZCBtb2NrX2VuZ2luZV9mbHVzaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ ICAgdm9pZCBtb2NrX2VuZ2luZV9yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Owo+ICAgdm9pZCBtb2NrX2VuZ2luZV9mcmVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggYTY0MzZjNzcxMDlhLi41MDI2NmU4 N2MyMjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtNDUyMyw2ICs0NTIzLDEy IEBAIGludCBpOTE1X2dlbV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgIAkJZ290byBlcnJfZ2d0dDsKPiAgIAl9Cj4gICAKPiArCXJldCA9IGludGVsX2VuZ2luZXNf c2V0dXAoZGV2X3ByaXYpOwo+ICsJaWYgKHJldCkgewo+ICsJCUdFTV9CVUdfT04ocmV0ID09IC1F SU8pOwo+ICsJCWdvdG8gZXJyX3VubG9jazsKPiArCX0KPiArCj4gICAJcmV0ID0gaTkxNV9nZW1f Y29udGV4dHNfaW5pdChkZXZfcHJpdik7Cj4gICAJaWYgKHJldCkgewo+ICAgCQlHRU1fQlVHX09O KHJldCA9PSAtRUlPKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL21vY2tfZ2VtX2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21v Y2tfZ2VtX2RldmljZS5jCj4gaW5kZXggYzA3MjQyNGM2YjdjLi5lNDAzM2QwNTc2YzQgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5j Cj4gQEAgLTIwOSwxMiArMjA5LDE2IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICptb2NrX2dl bV9kZXZpY2Uodm9pZCkKPiAgIAltb2NrX2luaXRfZ2d0dChpOTE1LCAmaTkxNS0+Z2d0dCk7Cj4g ICAKPiAgIAlta3dyaXRlX2RldmljZV9pbmZvKGk5MTUpLT5lbmdpbmVfbWFzayA9IEJJVCgwKTsK PiAtCWk5MTUtPmtlcm5lbF9jb250ZXh0ID0gbW9ja19jb250ZXh0KGk5MTUsIE5VTEwpOwo+IC0J aWYgKCFpOTE1LT5rZXJuZWxfY29udGV4dCkKPiAtCQlnb3RvIGVycl91bmxvY2s7Cj4gICAKPiAg IAlpOTE1LT5lbmdpbmVbUkNTMF0gPSBtb2NrX2VuZ2luZShpOTE1LCAibW9jayIsIFJDUzApOwo+ ICAgCWlmICghaTkxNS0+ZW5naW5lW1JDUzBdKQo+ICsJCWdvdG8gZXJyX3VubG9jazsKPiArCj4g KwlpOTE1LT5rZXJuZWxfY29udGV4dCA9IG1vY2tfY29udGV4dChpOTE1LCBOVUxMKTsKPiArCWlm ICghaTkxNS0+a2VybmVsX2NvbnRleHQpCj4gKwkJZ290byBlcnJfZW5naW5lOwo+ICsKPiArCWlm IChtb2NrX2VuZ2luZV9pbml0KGk5MTUtPmVuZ2luZVtSQ1MwXSkpCj4gICAJCWdvdG8gZXJyX2Nv bnRleHQ7Cj4gICAKPiAgIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ IEBAIC0yMjUsNiArMjI5LDggQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKm1vY2tfZ2VtX2Rl dmljZSh2b2lkKQo+ICAgCj4gICBlcnJfY29udGV4dDoKPiAgIAlpOTE1X2dlbV9jb250ZXh0c19m aW5pKGk5MTUpOwo+ICtlcnJfZW5naW5lOgo+ICsJbW9ja19lbmdpbmVfZnJlZShpOTE1LT5lbmdp bmVbUkNTMF0pOwo+ICAgZXJyX3VubG9jazoKPiAgIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+ICAgCWk5MTVfdGltZWxpbmVzX2ZpbmkoaTkxNSk7Cj4gCgpBZnRlciBh IGNvdXBsZSBiYWNrcyBhbmQgZm9ydGggdG8gdHJpcGxlIGNoZWNrIHRoaW5ncyBJIGRpZCBub3Qg c3BvdCBhbnkgCm1pc3Rha2VzIGluIGNvZGUgc3BsaXQgYW5kIG1vdmVtZW50IHNvOgoKUmV2aWV3 ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdhcmRz LAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==