From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 02/10] drm/i915: Lift acquiring the vlv punit magic to a common sb-get Date: Tue, 23 Apr 2019 19:55:58 +0300 Message-ID: <20190423165558.GZ1747@intel.com> References: <20190419171402.30596-1-chris@chris-wilson.co.uk> <20190419171402.30596-3-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4AA5C89491 for ; Tue, 23 Apr 2019 16:56:02 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190419171402.30596-3-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBBcHIgMTksIDIwMTkgYXQgMDY6MTM6NTRQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IEFzIHdlIG5vdyBlbXBsb3kgYSB2ZXJ5IGhlYXZ5IHBtX3FvcyBhcm91bmQgdGhlIHB1 bml0IGFjY2Vzcywgd2Ugd2FudCB0bwo+IG1pbmltaXNlIHRoZSBudW1iZXIgb2Ygc3luY2hyb25v dXMgcmVxdWVzdHMgYnkgcGVyZm9ybWluZyBvbmUgZm9yIHRoZQo+IHdob2xlIHB1bml0IHNlcXVl bmNlIHJhdGhlciB0aGFuIGFyb3VuZCBpbmRpdmlkdWFsIGFjY2Vzc2VzLiBUaGUKPiBzaWRlYmFu ZCBsb2NrIGlzIHVzZWQgZm9yIHRoaXMsIHNvIHB1c2ggdGhlIHBtX3FvcyBpbnRvIHRoZSBzaWRl YmFuZAo+IGxvY2sgYWNxdWlzaXRpb24gYW5kIHJlbGVhc2UsIG1vdmluZyBpdCBmcm9tIHRoZSBs b3dsZXZlbCBwdW5pdCBydwo+IHJvdXRpbmUgdG8gdGhlIGNhbGxlcnMuIEluIHRoZSBmaXJzdCBz dGVwLCB3ZSBtb3ZlIHRoZSBwdW5pdCBtYWdpYyBpbnRvCj4gdGhlIGNvbW1vbiBzaWRlYmFuZCBs b2NrIHNvIHRoYXQgd2UgY2FuIGFjcXVpcmUgYSBidW5jaCBvZiBwb3J0cwo+IHNpbXVsdGFuZW91 c2x5LCBhbmQgaWYgbmVlZCBiZSBleHRlbmQgdGhlIHdvcmthcm91bmQgcHJvdGVjdGlvbiBsYXRl ci4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5j by51az4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwg MTI0ICsrKysrKysrKysrKysrKysrKysrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9jZGNsay5jICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jICAgIHwgIDM3ICsrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu YyAgICAgICAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5 LmMgICB8ICAzNyArKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV92YnQu YyAgICB8ICAgOCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICAgICAg fCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgIHwgICA0 ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyB8ICAgOCArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jICAgfCAgNDUgKysrKysrLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Zsdl9kc2kuYyAgICAgICAgICB8ICAgOCArLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS92bHZfZHNpX3BsbC5jICAgICAgfCAgMTQgKy0tCj4gIDEyIGZp bGVzIGNoYW5nZWQsIDIwNiBpbnNlcnRpb25zKCspLCA5MyBkZWxldGlvbnMoLSkKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBhZmI5NzlmZjQxNmYuLjE2MmQ5ODhkYmNlYiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0zNDQ5LDI1ICszNDQ5LDExOSBAQCBpbnQg c2tsX3Bjb2RlX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIg bWJveCwgdTMyIHJlcXVlc3QsCj4gIAkJICAgICAgdTMyIHJlcGx5X21hc2ssIHUzMiByZXBseSwg aW50IHRpbWVvdXRfYmFzZV9tcyk7Cj4gIAo+ICAvKiBpbnRlbF9zaWRlYmFuZC5jICovCgpJbnRy b2R1Y2UgaW50ZWxfc2lkZWJhbmQuaCBtYXliZT8KCj4gLXUzMiB2bHZfcHVuaXRfcmVhZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBhZGRyKTsKPiAtaW50IHZsdl9wdW5p dF93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBhZGRyLCB1MzIg dmFsKTsKPiAtdTMyIHZsdl9uY19yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgdTggYWRkcik7Cj4gLXUzMiB2bHZfaW9zZl9zYl9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTggcG9ydCwgdTMyIHJlZyk7Cj4gLXZvaWQgdmx2X2lvc2Zfc2Jfd3Jp dGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCBwb3J0LCB1MzIgcmVnLCB1 MzIgdmFsKTsKPiAtdTMyIHZsdl9jY2tfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHUzMiByZWcpOwo+IC12b2lkIHZsdl9jY2tfd3JpdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1MzIgcmVnLCB1MzIgdmFsKTsKPiAtdTMyIHZsdl9jY3VfcmVhZChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiByZWcpOwo+IC12b2lkIHZsdl9j Y3Vfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcmVnLCB1MzIg dmFsKTsKPiAtdTMyIHZsdl9idW5pdF9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgdTMyIHJlZyk7Cj4gLXZvaWQgdmx2X2J1bml0X3dyaXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgdTMyIHJlZywgdTMyIHZhbCk7Cj4gLXUzMiB2bHZfZHBpb19yZWFk KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUsIGludCBy ZWcpOwo+IC12b2lkIHZsdl9kcGlvX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgZW51bSBwaXBlIHBpcGUsIGludCByZWcsIHUzMiB2YWwpOwo+ICsKPiArZW51bSB7Cj4g KwlWTFZfSU9TRl9TQl9CVU5JVCwKPiArCVZMVl9JT1NGX1NCX0NDSywKPiArCVZMVl9JT1NGX1NC X0NDVSwKPiArCVZMVl9JT1NGX1NCX0RQSU8sCj4gKwlWTFZfSU9TRl9TQl9GTElTRFNJLAo+ICsJ VkxWX0lPU0ZfU0JfR1BJTywKPiArCVZMVl9JT1NGX1NCX05DLAo+ICsJVkxWX0lPU0ZfU0JfUFVO SVQsCj4gK307CgpIb3BlZnVsbHkgbm8gb25lIHdpbGwgY29uZnVzZSB0aGVzZSB3aXRoIHRoZSBJ T1NGIFNCIHBvcnQgbnVtYmVycy4KCj4gKwo+ICt2b2lkIHZsdl9pb3NmX3NiX2dldChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgbG9uZyBwb3J0cyk7Cj4gK3UzMiB2bHZf aW9zZl9zYl9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1OCBwb3J0LCB1MzIg cmVnKTsKPiArdm9pZCB2bHZfaW9zZl9zYl93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKPiArCQkgICAgICAgdTggcG9ydCwgdTMyIHJlZywgdTMyIHZhbCk7Cj4gK3ZvaWQgdmx2 X2lvc2Zfc2JfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1bnNpZ25lZCBsb25n IHBvcnRzKTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB2bHZfYnVuaXRfZ2V0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwl2bHZfaW9zZl9zYl9nZXQoaTkxNSwgQklU KFZMVl9JT1NGX1NCX0JVTklUKSk7Cj4gK30KPiArCj4gK3UzMiB2bHZfYnVuaXRfcmVhZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHJlZyk7Cj4gK3ZvaWQgdmx2X2J1bml0X3dy aXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgcmVnLCB1MzIgdmFsKTsKPiAr Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB2bHZfYnVuaXRfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQo+ICt7Cj4gKwl2bHZfaW9zZl9zYl9wdXQoaTkxNSwgQklUKFZMVl9JT1NGX1NC X0JVTklUKSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB2bHZfY2NrX2dldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJdmx2X2lvc2Zfc2JfZ2V0KGk5MTUs IEJJVChWTFZfSU9TRl9TQl9DQ0spKTsKPiArfQo+ICsKPiArdTMyIHZsdl9jY2tfcmVhZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHJlZyk7Cj4gK3ZvaWQgdmx2X2Nja193cml0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHJlZywgdTMyIHZhbCk7Cj4gKwo+ ICtzdGF0aWMgaW5saW5lIHZvaWQgdmx2X2Nja19wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCj4gK3sKPiArCXZsdl9pb3NmX3NiX3B1dChpOTE1LCBCSVQoVkxWX0lPU0ZfU0JfQ0NL KSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB2bHZfY2N1X2dldChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJdmx2X2lvc2Zfc2JfZ2V0KGk5MTUsIEJJVChW TFZfSU9TRl9TQl9DQ1UpKTsKPiArfQo+ICsKPiArdTMyIHZsdl9jY3VfcmVhZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHJlZyk7Cj4gK3ZvaWQgdmx2X2NjdV93cml0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHJlZywgdTMyIHZhbCk7Cj4gKwo+ICtzdGF0 aWMgaW5saW5lIHZvaWQgdmx2X2NjdV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Cj4gK3sKPiArCXZsdl9pb3NmX3NiX3B1dChpOTE1LCBCSVQoVkxWX0lPU0ZfU0JfQ0NVKSk7Cj4g K30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB2bHZfZHBpb19nZXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCXZsdl9pb3NmX3NiX2dldChpOTE1LCBCSVQoVkxWX0lP U0ZfU0JfRFBJTykpOwo+ICt9Cj4gKwo+ICt1MzIgdmx2X2RwaW9fcmVhZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwgZW51bSBwaXBlIHBpcGUsIGludCByZWcpOwo+ICt2b2lkIHZsdl9k cGlvX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICsJCSAgICBlbnVtIHBp cGUgcGlwZSwgaW50IHJlZywgdTMyIHZhbCk7Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgdmx2 X2RwaW9fcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwl2bHZfaW9z Zl9zYl9wdXQoaTkxNSwgQklUKFZMVl9JT1NGX1NCX0RQSU8pKTsKPiArfQo+ICsKPiArc3RhdGlj IGlubGluZSB2b2lkIHZsdl9mbGlzZHNpX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiArewo+ICsJdmx2X2lvc2Zfc2JfZ2V0KGk5MTUsIEJJVChWTFZfSU9TRl9TQl9GTElTRFNJ KSk7Cj4gK30KPiArCj4gK3UzMiB2bHZfZmxpc2RzaV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LCB1MzIgcmVnKTsKPiArdm9pZCB2bHZfZmxpc2RzaV93cml0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHJlZywgdTMyIHZhbCk7Cj4gKwo+ICtzdGF0aWMgaW5s aW5lIHZvaWQgdmx2X2ZsaXNkc2lfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ ICt7Cj4gKwl2bHZfaW9zZl9zYl9wdXQoaTkxNSwgQklUKFZMVl9JT1NGX1NCX0ZMSVNEU0kpKTsK PiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIHZsdl9uY19nZXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCXZsdl9pb3NmX3NiX2dldChpOTE1LCBCSVQoVkxWX0lP U0ZfU0JfTkMpKTsKPiArfQo+ICsKPiArdTMyIHZsdl9uY19yZWFkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LCB1OCBhZGRyKTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB2bHZfbmNf cHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwl2bHZfaW9zZl9zYl9w dXQoaTkxNSwgQklUKFZMVl9JT1NGX1NCX05DKSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUg dm9pZCB2bHZfcHVuaXRfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4g Kwl2bHZfaW9zZl9zYl9nZXQoaTkxNSwgQklUKFZMVl9JT1NGX1NCX1BVTklUKSk7Cj4gK30KPiAr Cj4gK3UzMiB2bHZfcHVuaXRfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMy IGFkZHIpOwo+ICtpbnQgdmx2X3B1bml0X3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LCB1MzIgYWRkciwgdTMyIHZhbCk7Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgdmx2X3B1 bml0X3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJdmx2X2lvc2Zf c2JfcHV0KGk5MTUsIEJJVChWTFZfSU9TRl9TQl9QVU5JVCkpOwo+ICt9Cj4gKwo+ICB1MzIgaW50 ZWxfc2JpX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MTYgcmVnLAo+ ICAJCSAgIGVudW0gaW50ZWxfc2JpX2Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKTsKPiAgdm9pZCBp bnRlbF9zYmlfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MTYgcmVn LCB1MzIgdmFsdWUsCj4gIAkJICAgICBlbnVtIGludGVsX3NiaV9kZXN0aW5hdGlvbiBkZXN0aW5h dGlvbik7Cj4gLXUzMiB2bHZfZmxpc2RzaV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTMyIHJlZyk7Cj4gLXZvaWQgdmx2X2ZsaXNkc2lfd3JpdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcmVnLCB1MzIgdmFsKTsKPiAgCj4gIC8qIGludGVs X2RwaW9fcGh5LmMgKi8KPiAgdm9pZCBieHRfcG9ydF90b19waHlfY2hhbm5lbChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0LAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY2RjbGsuYwo+IGluZGV4IGFlNDBhODY3OTMxNC4uNTg0NWQwYTM3NTk5IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCj4gQEAgLTU1Nyw3ICs1NTcsOCBAQCBzdGF0aWMg dm9pZCB2bHZfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg CX0KPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiAgCj4gLQltdXRleF9s b2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfaW9zZl9zYl9nZXQoZGV2X3ByaXYsCj4g KwkJCUJJVChWTFZfSU9TRl9TQl9DQ0spIHwgQklUKFZMVl9JT1NGX1NCX0JVTklUKSk7Cj4gIAo+ ICAJaWYgKGNkY2xrID09IDQwMDAwMCkgewo+ICAJCXUzMiBkaXZpZGVyOwo+IEBAIC01OTEsNyAr NTkyLDggQEAgc3RhdGljIHZvaWQgdmx2X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gIAkJdmFsIHw9IDMwMDAgLyAyNTA7IC8qIDMuMCB1c2VjICovCj4gIAl2 bHZfYnVuaXRfd3JpdGUoZGV2X3ByaXYsIEJVTklUX1JFR19CSVNPQywgdmFsKTsKPiAgCj4gLQlt dXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9pb3NmX3NiX3B1dChkZXZf cHJpdiwKPiArCQkJQklUKFZMVl9JT1NGX1NCX0NDSykgfCBCSVQoVkxWX0lPU0ZfU0JfQlVOSVQp KTsKPiAgCj4gIAlpbnRlbF91cGRhdGVfY2RjbGsoZGV2X3ByaXYpOwo+ICAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggM2JkNDBhNGE2NzM5Li4xMWJiMDc2NTBmODcg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTE1MywxMCArMTUz LDEwIEBAIGludCB2bHZfZ2V0X2hwbGxfdmNvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCWludCBocGxsX2ZyZXEsIHZjb19mcmVxW10gPSB7IDgwMCwgMTYwMCwgMjAwMCwg MjQwMCB9Owo+ICAKPiAgCS8qIE9idGFpbiBTS1UgaW5mb3JtYXRpb24gKi8KPiAtCW11dGV4X2xv Y2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9jY2tfZ2V0KGRldl9wcml2KTsKPiAgCWhw bGxfZnJlcSA9IHZsdl9jY2tfcmVhZChkZXZfcHJpdiwgQ0NLX0ZVU0VfUkVHKSAmCj4gIAkJQ0NL X0ZVU0VfSFBMTF9GUkVRX01BU0s7Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2Nr KTsKPiArCXZsdl9jY2tfcHV0KGRldl9wcml2KTsKPiAgCj4gIAlyZXR1cm4gdmNvX2ZyZXFbaHBs bF9mcmVxXSAqIDEwMDA7Cj4gIH0KPiBAQCAtMTY3LDkgKzE2Nyw5IEBAIGludCB2bHZfZ2V0X2Nj a19jbG9jayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAl1MzIgdmFsOwo+ ICAJaW50IGRpdmlkZXI7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ ICsJdmx2X2Nja19nZXQoZGV2X3ByaXYpOwo+ICAJdmFsID0gdmx2X2Nja19yZWFkKGRldl9wcml2 LCByZWcpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfY2Nr X3B1dChkZXZfcHJpdik7Cj4gIAo+ICAJZGl2aWRlciA9IHZhbCAmIENDS19GUkVRVUVOQ1lfVkFM VUVTOwo+ICAKPiBAQCAtMTA4MCw5ICsxMDgwLDkgQEAgdm9pZCBhc3NlcnRfZHNpX3BsbChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgc3RhdGUpCj4gIAl1MzIgdmFsOwo+ ICAJYm9vbCBjdXJfc3RhdGU7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2sp Owo+ICsJdmx2X2Nja19nZXQoZGV2X3ByaXYpOwo+ICAJdmFsID0gdmx2X2Nja19yZWFkKGRldl9w cml2LCBDQ0tfUkVHX0RTSV9QTExfQ09OVFJPTCk7Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2 LT5zYl9sb2NrKTsKPiArCXZsdl9jY2tfcHV0KGRldl9wcml2KTsKPiAgCj4gIAljdXJfc3RhdGUg PSB2YWwgJiBEU0lfUExMX1ZDT19FTjsKPiAgCUk5MTVfU1RBVEVfV0FSTihjdXJfc3RhdGUgIT0g c3RhdGUsCj4gQEAgLTEzOTIsMTQgKzEzOTIsMTQgQEAgc3RhdGljIHZvaWQgX2Nodl9lbmFibGVf cGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJZW51bSBkcGlvX2NoYW5uZWwgcG9ydCA9 IHZsdl9waXBlX3RvX2NoYW5uZWwocGlwZSk7Cj4gIAl1MzIgdG1wOwo+ICAKPiAtCW11dGV4X2xv Y2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX2dldChkZXZfcHJpdik7Cj4gIAo+ ICAJLyogRW5hYmxlIGJhY2sgdGhlIDEwYml0IGNsb2NrIHRvIGRpc3BsYXkgY29udHJvbGxlciAq Lwo+ICAJdG1wID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX0NNTl9EVzE0KHBv cnQpKTsKPiAgCXRtcCB8PSBEUElPX0RDTEtQX0VOOwo+ICAJdmx2X2RwaW9fd3JpdGUoZGV2X3By aXYsIHBpcGUsIENIVl9DTU5fRFcxNChwb3J0KSwgdG1wKTsKPiAgCj4gLQltdXRleF91bmxvY2so JmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX3B1dChkZXZfcHJpdik7Cj4gIAo+ICAJ LyoKPiAgCSAqIE5lZWQgdG8gd2FpdCA+IDEwMG5zIGJldHdlZW4gZGNsa3AgY2xvY2sgZW5hYmxl IGJpdCBhbmQgUExMIGVuYWJsZS4KPiBAQCAtMTU1NiwxNCArMTU1NiwxNCBAQCBzdGF0aWMgdm9p ZCBjaHZfZGlzYWJsZV9wbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVt IHBpcGUgcGlwZSkKPiAgCUk5MTVfV1JJVEUoRFBMTChwaXBlKSwgdmFsKTsKPiAgCVBPU1RJTkdf UkVBRChEUExMKHBpcGUpKTsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7 Cj4gKwl2bHZfZHBpb19nZXQoZGV2X3ByaXYpOwo+ICAKPiAgCS8qIERpc2FibGUgMTBiaXQgY2xv Y2sgdG8gZGlzcGxheSBjb250cm9sbGVyICovCj4gIAl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9w cml2LCBwaXBlLCBDSFZfQ01OX0RXMTQocG9ydCkpOwo+ICAJdmFsICY9IH5EUElPX0RDTEtQX0VO Owo+ICAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIENIVl9DTU5fRFcxNChwb3J0KSwg dmFsKTsKPiAgCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9k cGlvX3B1dChkZXZfcHJpdik7Cj4gIH0KPiAgCj4gIHZvaWQgdmx2X3dhaXRfcG9ydF9yZWFkeShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gQEAgLTcyMjUsNyArNzIyNSw3IEBA IHN0YXRpYyB2b2lkIHZsdl9wcmVwYXJlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAg CWlmICgocGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbCAmIERQTExfVkNPX0VOQUJMRSkg PT0gMCkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2sp Owo+ICsJdmx2X2RwaW9fZ2V0KGRldl9wcml2KTsKPiAgCj4gIAliZXN0biA9IHBpcGVfY29uZmln LT5kcGxsLm47Cj4gIAliZXN0bTEgPSBwaXBlX2NvbmZpZy0+ZHBsbC5tMTsKPiBAQCAtNzMwMiw3 ICs3MzAyLDggQEAgc3RhdGljIHZvaWQgdmx2X3ByZXBhcmVfcGxsKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAo+ICAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QTExfRFc3KHBp cGUpLCBjb3JlY2xrKTsKPiAgCj4gIAl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxW X1BMTF9EVzExKHBpcGUpLCAweDg3ODcxMDAwKTsKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PnNiX2xvY2spOwo+ICsKPiArCXZsdl9kcGlvX3B1dChkZXZfcHJpdik7Cj4gIH0KPiAgCj4gIHN0 YXRpYyB2b2lkIGNodl9wcmVwYXJlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiBAQCAt NzMzNSw3ICs3MzM2LDcgQEAgc3RhdGljIHZvaWQgY2h2X3ByZXBhcmVfcGxsKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ICAJZHBpb192YWwgPSAwOwo+ICAJbG9vcGZpbHRlciA9IDA7Cj4gIAo+ IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2RwaW9fZ2V0KGRldl9w cml2KTsKPiAgCj4gIAkvKiBwMSBhbmQgcDIgZGl2aWRlciAqLwo+ICAJdmx2X2RwaW9fd3JpdGUo ZGV2X3ByaXYsIHBpcGUsIENIVl9DTU5fRFcxMyhwb3J0KSwKPiBAQCAtNzQwNyw3ICs3NDA4LDcg QEAgc3RhdGljIHZvaWQgY2h2X3ByZXBhcmVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ ICAJCQl2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBDSFZfQ01OX0RXMTQocG9ydCkpIHwK PiAgCQkJRFBJT19BRkNfUkVDQUwpOwo+ICAKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNi X2xvY2spOwo+ICsJdmx2X2RwaW9fcHV0KGRldl9wcml2KTsKPiAgfQo+ICAKPiAgLyoqCj4gQEAg LTgwMzMsOSArODAzNCw5IEBAIHN0YXRpYyB2b2lkIHZsdl9jcnRjX2Nsb2NrX2dldChzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPiAgCWlmICgocGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuZHBs bCAmIERQTExfVkNPX0VOQUJMRSkgPT0gMCkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JbXV0ZXhfbG9j aygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2RwaW9fZ2V0KGRldl9wcml2KTsKPiAgCW1k aXYgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUExMX0RXMyhwaXBlKSk7Cj4g LQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX3B1dChkZXZf cHJpdik7Cj4gIAo+ICAJY2xvY2subTEgPSAobWRpdiA+PiBEUElPX00xRElWX1NISUZUKSAmIDc7 Cj4gIAljbG9jay5tMiA9IG1kaXYgJiBEUElPX00yRElWX01BU0s7Cj4gQEAgLTgxNDQsMTMgKzgx NDUsMTMgQEAgc3RhdGljIHZvaWQgY2h2X2NydGNfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAo+ICAJaWYgKChwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZS5kcGxsICYgRFBMTF9W Q09fRU5BQkxFKSA9PSAwKQo+ICAJCXJldHVybjsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJp di0+c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19nZXQoZGV2X3ByaXYpOwo+ICAJY21uX2R3MTMgPSB2 bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBDSFZfQ01OX0RXMTMocG9ydCkpOwo+ICAJcGxs X2R3MCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIENIVl9QTExfRFcwKHBvcnQpKTsK PiAgCXBsbF9kdzEgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBDSFZfUExMX0RXMShw b3J0KSk7Cj4gIAlwbGxfZHcyID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1BM TF9EVzIocG9ydCkpOwo+ICAJcGxsX2R3MyA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUs IENIVl9QTExfRFczKHBvcnQpKTsKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2sp Owo+ICsJdmx2X2RwaW9fcHV0KGRldl9wcml2KTsKPiAgCj4gIAljbG9jay5tMSA9IChwbGxfZHcx ICYgMHg3KSA9PSBEUElPX0NIVl9NMV9ESVZfQllfMiA/IDIgOiAwOwo+ICAJY2xvY2subTIgPSAo cGxsX2R3MCAmIDB4ZmYpIDw8IDIyOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGluZGV4IDU2 MDI3NGQxYzUwYi4uNGZjMjVkY2M5N2Q0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4g QEAgLTMxNDgsMTIgKzMxNDgsMTIgQEAgc3RhdGljIHZvaWQgY2h2X3Bvc3RfZGlzYWJsZV9kcChz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCj4gIAlpbnRlbF9kcF9saW5rX2Rvd24o ZW5jb2Rlciwgb2xkX2NydGNfc3RhdGUpOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5z Yl9sb2NrKTsKPiArCXZsdl9kcGlvX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJLyogQXNzZXJ0IGRh dGEgbGFuZSByZXNldCAqLwo+ICAJY2h2X2RhdGFfbGFuZV9zb2Z0X3Jlc2V0KGVuY29kZXIsIG9s ZF9jcnRjX3N0YXRlLCB0cnVlKTsKPiAgCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9s b2NrKTsKPiArCXZsdl9kcGlvX3B1dChkZXZfcHJpdik7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lk Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jCj4gaW5kZXggYWI0YWM3MTU4Yjc5 Li5jNzg0ZjNkYWFmNTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHBpb19waHkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMK PiBAQCAtNjQ4LDcgKzY0OCw3IEBAIHZvaWQgY2h2X3NldF9waHlfc2lnbmFsX2xldmVsKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJdTMyIHZhbDsKPiAgCWludCBpOwo+ICAKPiAt CW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX2dldChkZXZfcHJp dik7Cj4gIAo+ICAJLyogQ2xlYXIgY2FsYyBpbml0ICovCj4gIAl2YWwgPSB2bHZfZHBpb19yZWFk KGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxMChjaCkpOwo+IEBAIC03MjksOCArNzI5LDcg QEAgdm9pZCBjaHZfc2V0X3BoeV9zaWduYWxfbGV2ZWwoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gIAkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEw KGNoKSwgdmFsKTsKPiAgCX0KPiAgCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2Nr KTsKPiAtCj4gKwl2bHZfZHBpb19wdXQoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICB2b2lkIGNodl9k YXRhX2xhbmVfc29mdF9yZXNldChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiBAQCAt ODAwLDcgKzc5OSw3IEBAIHZvaWQgY2h2X3BoeV9wcmVfcGxsX2VuYWJsZShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiAgCj4gIAljaHZfcGh5X3Bvd2VyZ2F0ZV9sYW5lcyhlbmNvZGVy LCB0cnVlLCBsYW5lX21hc2spOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2Nr KTsKPiArCXZsdl9kcGlvX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJLyogQXNzZXJ0IGRhdGEgbGFu ZSByZXNldCAqLwo+ICAJY2h2X2RhdGFfbGFuZV9zb2Z0X3Jlc2V0KGVuY29kZXIsIGNydGNfc3Rh dGUsIHRydWUpOwo+IEBAIC04NTUsNyArODU0LDcgQEAgdm9pZCBjaHZfcGh5X3ByZV9wbGxfZW5h YmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCXZhbCB8PSBDSFZfQ01OX1VT RURDTEtDSEFOTkVMOwo+ICAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIENIVl9DTU5f RFcxOShjaCksIHZhbCk7Cj4gIAo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7 Cj4gKwl2bHZfZHBpb19wdXQoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICB2b2lkIGNodl9waHlfcHJl X2VuY29kZXJfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IEBAIC04NzAs NyArODY5LDcgQEAgdm9pZCBjaHZfcGh5X3ByZV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiAgCWludCBkYXRhLCBpLCBzdGFnZ2VyOwo+ICAJdTMyIHZhbDsK PiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19nZXQo ZGV2X3ByaXYpOwo+ICAKPiAgCS8qIGFsbG93IGhhcmR3YXJlIHRvIG1hbmFnZSBUWCBGSUZPIHJl c2V0IHNvdXJjZSAqLwo+ICAJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxW X1BDUzAxX0RXMTEoY2gpKTsKPiBAQCAtOTM1LDcgKzkzNCw3IEBAIHZvaWQgY2h2X3BoeV9wcmVf ZW5jb2Rlcl9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkvKiBEZWFz c2VydCBkYXRhIGxhbmUgcmVzZXQgKi8KPiAgCWNodl9kYXRhX2xhbmVfc29mdF9yZXNldChlbmNv ZGVyLCBjcnRjX3N0YXRlLCBmYWxzZSk7Cj4gIAo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19wdXQoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICB2b2lkIGNo dl9waHlfcmVsZWFzZV9jbDJfb3ZlcnJpZGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIp Cj4gQEAgLTk1Niw3ICs5NTUsNyBAQCB2b2lkIGNodl9waHlfcG9zdF9wbGxfZGlzYWJsZShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxf Y3J0YyhvbGRfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKS0+cGlwZTsKPiAgCXUzMiB2YWw7Cj4gIAo+ IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2RwaW9fZ2V0KGRldl9w cml2KTsKPiAgCj4gIAkvKiBkaXNhYmxlIGxlZnQvcmlnaHQgY2xvY2sgZGlzdHJpYnV0aW9uICov Cj4gIAlpZiAocGlwZSAhPSBQSVBFX0IpIHsKPiBAQCAtOTY5LDcgKzk2OCw3IEBAIHZvaWQgY2h2 X3BoeV9wb3N0X3BsbF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJ CXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBfQ0hWX0NNTl9EVzFfQ0gxLCB2YWwpOwo+ ICAJfQo+ICAKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2Rw aW9fcHV0KGRldl9wcml2KTsKPiAgCj4gIAkvKgo+ICAJICogTGVhdmUgdGhlIHBvd2VyIGRvd24g Yml0IGNsZWFyZWQgZm9yIGF0IGxlYXN0IG9uZQo+IEBAIC05OTMsNyArOTkyLDggQEAgdm9pZCB2 bHZfc2V0X3BoeV9zaWduYWxfbGV2ZWwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g IAllbnVtIGRwaW9fY2hhbm5lbCBwb3J0ID0gdmx2X2Rwb3J0X3RvX2NoYW5uZWwoZHBvcnQpOwo+ ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICAKPiAtCW11dGV4X2xvY2so JmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX2dldChkZXZfcHJpdik7Cj4gKwo+ICAJ dmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9UWF9EVzUocG9ydCksIDB4MDAwMDAw MDApOwo+ICAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9UWF9EVzQocG9ydCks IGRlbXBoX3JlZ192YWx1ZSk7Cj4gIAl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxW X1RYX0RXMihwb3J0KSwKPiBAQCAtMTAwNiw3ICsxMDA2LDggQEAgdm9pZCB2bHZfc2V0X3BoeV9z aWduYWxfbGV2ZWwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAl2bHZfZHBpb193 cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDU19EVzExKHBvcnQpLCAweDAwMDMwMDAwKTsKPiAg CXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTX0RXOShwb3J0KSwgcHJlZW1w aF9yZWdfdmFsdWUpOwo+ICAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9UWF9E VzUocG9ydCksIERQSU9fVFhfT0NBTElOSVRfRU4pOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+c2JfbG9jayk7Cj4gKwo+ICsJdmx2X2RwaW9fcHV0KGRldl9wcml2KTsKPiAgfQo+ICAKPiAg dm9pZCB2bHZfcGh5X3ByZV9wbGxfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAo+IEBAIC0xMDE5LDcgKzEwMjAsOCBAQCB2b2lkIHZsdl9waHlfcHJlX3BsbF9lbmFibGUoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBp cGU7Cj4gIAo+ICAJLyogUHJvZ3JhbSBUeCBsYW5lIHJlc2V0cyB0byBkZWZhdWx0ICovCj4gLQlt dXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19nZXQoZGV2X3ByaXYp Owo+ICsKPiAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTX0RXMChwb3J0 KSwKPiAgCQkJIERQSU9fUENTX1RYX0xBTkUyX1JFU0VUIHwKPiAgCQkJIERQSU9fUENTX1RYX0xB TkUxX1JFU0VUKTsKPiBAQCAtMTAzMyw3ICsxMDM1LDggQEAgdm9pZCB2bHZfcGh5X3ByZV9wbGxf ZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJdmx2X2RwaW9fd3JpdGUo ZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1NfRFcxMihwb3J0KSwgMHgwMDc1MGYwMCk7Cj4gIAl2bHZf ZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1RYX0RXMTEocG9ydCksIDB4MDAwMDE1MDAp Owo+ICAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9UWF9EVzE0KHBvcnQpLCAw eDQwNDAwMDAwKTsKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsKPiAr CXZsdl9kcGlvX3B1dChkZXZfcHJpdik7Cj4gIH0KPiAgCj4gIHZvaWQgdmx2X3BoeV9wcmVfZW5j b2Rlcl9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gQEAgLTEwNDcsNyAr MTA1MCw3IEBAIHZvaWQgdmx2X3BoeV9wcmVfZW5jb2Rlcl9lbmFibGUoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAl1MzIg dmFsOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlv X2dldChkZXZfcHJpdik7Cj4gIAo+ICAJLyogRW5hYmxlIGNsb2NrIGNoYW5uZWxzIGZvciB0aGlz IHBvcnQgKi8KPiAgCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1Mw MV9EVzgocG9ydCkpOwo+IEBAIC0xMDYzLDcgKzEwNjYsNyBAQCB2b2lkIHZsdl9waHlfcHJlX2Vu Y29kZXJfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJdmx2X2RwaW9f d3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1NfRFcxNChwb3J0KSwgMHgwMDc2MDAxOCk7Cj4g IAl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDU19EVzIzKHBvcnQpLCAweDAw NDAwODg4KTsKPiAgCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZs dl9kcGlvX3B1dChkZXZfcHJpdik7Cj4gIH0KPiAgCj4gIHZvaWQgdmx2X3BoeV9yZXNldF9sYW5l cyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiBAQCAtMTA3NSw4ICsxMDc4LDggQEAg dm9pZCB2bHZfcGh5X3Jlc2V0X2xhbmVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ ICAJZW51bSBkcGlvX2NoYW5uZWwgcG9ydCA9IHZsdl9kcG9ydF90b19jaGFubmVsKGRwb3J0KTsK PiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXZf cHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19nZXQoZGV2X3ByaXYpOwo+ICAJdmx2X2RwaW9f d3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1NfRFcwKHBvcnQpLCAweDAwMDAwMDAwKTsKPiAg CXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTX0RXMShwb3J0KSwgMHgwMGUw MDA2MCk7Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlv X3B1dChkZXZfcHJpdik7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHNpX3ZidC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3ZidC5jCj4g aW5kZXggMzA3NDQ0ODQ0NmJjLi4yMzA0NDg4ZjJkMzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHNpX3ZidC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHNpX3ZidC5jCj4gQEAgLTI0OCw3ICsyNDgsNyBAQCBzdGF0aWMgdm9pZCB2bHZfZXhl Y19ncGlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXBjb25mMCA9IFZM Vl9HUElPX1BDT05GMChtYXAtPmJhc2Vfb2Zmc2V0KTsKPiAgCXBhZHZhbCA9IFZMVl9HUElPX1BB RF9WQUwobWFwLT5iYXNlX29mZnNldCk7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNi X2xvY2spOwo+ICsJdmx2X2lvc2Zfc2JfZ2V0KGRldl9wcml2LCBCSVQoVkxWX0lPU0ZfU0JfR1BJ TykpOwo+ICAJaWYgKCFtYXAtPmluaXQpIHsKPiAgCQkvKiBGSVhNRTogcmVtb3ZlIGNvbnN0YW50 IGJlbG93ICovCj4gIAkJdmx2X2lvc2Zfc2Jfd3JpdGUoZGV2X3ByaXYsIHBvcnQsIHBjb25mMCwg MHgyMDAwQ0MwMCk7Cj4gQEAgLTI1Nyw3ICsyNTcsNyBAQCBzdGF0aWMgdm9pZCB2bHZfZXhlY19n cGlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAl0bXAgPSAweDQg fCB2YWx1ZTsKPiAgCXZsdl9pb3NmX3NiX3dyaXRlKGRldl9wcml2LCBwb3J0LCBwYWR2YWwsIHRt cCk7Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9pb3NmX3Ni X3B1dChkZXZfcHJpdiwgQklUKFZMVl9JT1NGX1NCX0dQSU8pKTsKPiAgfQo+ICAKPiAgc3RhdGlj IHZvaWQgY2h2X2V4ZWNfZ3BpbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g QEAgLTMwMywxMiArMzAzLDEyIEBAIHN0YXRpYyB2b2lkIGNodl9leGVjX2dwaW8oc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJY2ZnMCA9IENIVl9HUElPX1BBRF9DRkcwKGZh bWlseV9udW0sIGdwaW9faW5kZXgpOwo+ICAJY2ZnMSA9IENIVl9HUElPX1BBRF9DRkcxKGZhbWls eV9udW0sIGdwaW9faW5kZXgpOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2Nr KTsKPiArCXZsdl9pb3NmX3NiX2dldChkZXZfcHJpdiwgQklUKFZMVl9JT1NGX1NCX0dQSU8pKTsK PiAgCXZsdl9pb3NmX3NiX3dyaXRlKGRldl9wcml2LCBwb3J0LCBjZmcxLCAwKTsKPiAgCXZsdl9p b3NmX3NiX3dyaXRlKGRldl9wcml2LCBwb3J0LCBjZmcwLAo+ICAJCQkgIENIVl9HUElPX0dQSU9F TiB8IENIVl9HUElPX0dQSU9DRkdfR1BPIHwKPiAgCQkJICBDSFZfR1BJT19HUElPVFhTVEFURSh2 YWx1ZSkpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfaW9z Zl9zYl9wdXQoZGV2X3ByaXYsIEJJVChWTFZfSU9TRl9TQl9HUElPKSk7Cj4gIH0KPiAgCj4gIHN0 YXRpYyB2b2lkIGJ4dF9leGVjX2dwaW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiBpbmRleCBlMTAwNWQ3Yjc1ZmQuLjhiNzIz NjVmOTMwOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiBAQCAtMjYzMCwxMiAr MjYzMCwxMiBAQCBzdGF0aWMgdm9pZCBjaHZfaGRtaV9wb3N0X2Rpc2FibGUoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRldik7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2Rw aW9fZ2V0KGRldl9wcml2KTsKPiAgCj4gIAkvKiBBc3NlcnQgZGF0YSBsYW5lIHJlc2V0ICovCj4g IAljaHZfZGF0YV9sYW5lX3NvZnRfcmVzZXQoZW5jb2Rlciwgb2xkX2NydGNfc3RhdGUsIHRydWUp Owo+ICAKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2RwaW9f cHV0KGRldl9wcml2KTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgY2h2X2hkbWlfcHJlX2VuYWJs ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK PiBpbmRleCA3YWE5YThjMTJiNTQuLjZjMmY0MTZiOTVhNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYwo+IEBAIC03ODAzLDkgKzc4MDMsOSBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2lu aXRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4g IAl2bHZfaW5pdF9ncGxsX3JlZl9mcmVxKGRldl9wcml2KTsKPiAgCj4gLQltdXRleF9sb2NrKCZk ZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfY2NrX2dldChkZXZfcHJpdik7Cj4gIAl2YWwgPSB2 bHZfY2NrX3JlYWQoZGV2X3ByaXYsIENDS19GVVNFX1JFRyk7Cj4gLQltdXRleF91bmxvY2soJmRl dl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9jY2tfcHV0KGRldl9wcml2KTsKPiAgCj4gIAlzd2l0 Y2ggKCh2YWwgPj4gMikgJiAweDcpIHsKPiAgCWNhc2UgMzoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcnVudGltZV9wbS5jCj4gaW5kZXggZDRmNDI2MmQwZmVlLi45YzEyOTRjMjk1NjYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gQEAgLTE1NjksNyAr MTU2OSw3IEBAIHN0YXRpYyB2b2lkIGNodl9kcGlvX2Ntbl9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgICAgMSkpCj4gIAkJRFJNX0VS Uk9SKCJEaXNwbGF5IFBIWSAlZCBpcyBub3QgcG93ZXIgdXBcbiIsIHBoeSk7Cj4gIAo+IC0JbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2RwaW9fZ2V0KGRldl9wcml2KTsK PiAgCj4gIAkvKiBFbmFibGUgZHluYW1pYyBwb3dlciBkb3duICovCj4gIAl0bXAgPSB2bHZfZHBp b19yZWFkKGRldl9wcml2LCBwaXBlLCBDSFZfQ01OX0RXMjgpOwo+IEBAIC0xNTkyLDcgKzE1OTIs NyBAQCBzdGF0aWMgdm9pZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBw aXBlLCBDSFZfQ01OX0RXMzAsIHRtcCk7Cj4gIAl9Cj4gIAo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZf cHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19wdXQoZGV2X3ByaXYpOwo+ICAKPiAgCWRldl9w cml2LT5jaHZfcGh5X2NvbnRyb2wgfD0gUEhZX0NPTV9MQU5FX1JFU0VUX0RFQVNTRVJUKHBoeSk7 Cj4gIAlJOTE1X1dSSVRFKERJU1BMQVlfUEhZX0NPTlRST0wsIGRldl9wcml2LT5jaHZfcGh5X2Nv bnRyb2wpOwo+IEBAIC0xNjU1LDkgKzE2NTUsOSBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfY2h2X3Bo eV9wb3dlcmdhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIGRwaQo+ ICAJZWxzZQo+ICAJCXJlZyA9IF9DSFZfQ01OX0RXNl9DSDE7Cj4gIAo+IC0JbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2RwaW9fZ2V0KGRldl9wcml2KTsKPiAgCXZhbCA9 IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIHJlZyk7Cj4gLQltdXRleF91bmxvY2soJmRl dl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX3B1dChkZXZfcHJpdik7Cj4gIAo+ICAJLyoK PiAgCSAqIFRoaXMgYXNzdW1lcyAhb3ZlcnJpZGUgaXMgb25seSB1c2VkIHdoZW4gdGhlIHBvcnQg aXMgZGlzYWJsZWQuCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Np ZGViYW5kLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5jCj4gaW5kZXgg ZmM4OTEzNDYxNjIyLi5iMmZjNjA1ZTJlMjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc2lkZWJhbmQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3NpZGViYW5kLmMKPiBAQCAtNzMsNiArNzMsMjIgQEAgc3RhdGljIHZvaWQgX192bHZfcHVuaXRf cHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJaW9zZl9tYmlfcHVuaXRfcmVs ZWFzZSgpOwo+ICB9Cj4gIAo+ICt2b2lkIHZsdl9pb3NmX3NiX2dldChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgbG9uZyBwb3J0cykKPiArewo+ICsJaWYgKHBvcnRzICYg QklUKFZMVl9JT1NGX1NCX1BVTklUKSkKPiArCQlfX3Zsdl9wdW5pdF9nZXQoaTkxNSk7CgpTaG91 bGQgdGhpcyBiZSBhZnRlciB0aGUgbG9jaz8gSG1tLCBJIGd1ZXNzIHdlIGhhdmUgdGhlIHBjdV9s b2NrCmFscmVhZHkgaGVsZCBmb3IgdGhlIHB1bml0IGFjY2Vzcy4gT2ggYW5kIF9fdmx2X3B1bnV0 X2dldCgpIGl0c2VsZgpncmFicyB0aGUgaW9zZl9tYmkgbG9jay4KClJldmlld2VkLWJ5OiBWaWxs ZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgoKPiArCj4gKwltdXRl eF9sb2NrKCZpOTE1LT5zYl9sb2NrKTsKPiArfQo+ICsKPiArdm9pZCB2bHZfaW9zZl9zYl9wdXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVuc2lnbmVkIGxvbmcgcG9ydHMpCj4gK3sK PiArCW11dGV4X3VubG9jaygmaTkxNS0+c2JfbG9jayk7Cj4gKwo+ICsJaWYgKHBvcnRzICYgQklU KFZMVl9JT1NGX1NCX1BVTklUKSkKPiArCQlfX3Zsdl9wdW5pdF9wdXQoaTkxNSk7Cj4gK30KPiAr Cj4gIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAo+ICAJCQkgICB1MzIgZGV2Zm4sIHUzMiBwb3J0LCB1MzIgb3Bjb2RlLAo+ICAJCQkgICB1 MzIgYWRkciwgdTMyICp2YWwpCj4gQEAgLTgyLDYgKzk4LDggQEAgc3RhdGljIGludCB2bHZfc2lk ZWJhbmRfcncoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gIAlpbnQgZXJyOwo+ICAK PiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPnNiX2xvY2spOwo+ICsJaWYgKHBvcnQgPT0g SU9TRl9QT1JUX1BVTklUKQo+ICsJCWlvc2ZfbWJpX2Fzc2VydF9wdW5pdF9hY3F1aXJlZCgpOwo+ ICAKPiAgCS8qIEZsdXNoIHRoZSBwcmV2aW91cyBjb21tcywganVzdCBpbiBjYXNlIGl0IGZhaWxl ZCBsYXN0IHRpbWUuICovCj4gIAlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIodW5jb3JlLAo+ IEBAIC0xMjUsMTYgKzE0MywxNCBAQCB1MzIgdmx2X3B1bml0X3JlYWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsIHUzMiBhZGRyKQo+ICB7Cj4gIAl1MzIgdmFsID0gMDsKPiAgCj4gLQlX QVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmk5MTUtPnBjdV9sb2NrKSk7Cj4gKwlsb2NrZGVwX2Fz c2VydF9oZWxkKCZpOTE1LT5wY3VfbG9jayk7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+c2Jf bG9jayk7Cj4gLQlfX3Zsdl9wdW5pdF9nZXQoaTkxNSk7Cj4gKwl2bHZfcHVuaXRfZ2V0KGk5MTUp Owo+ICAKPiAgCXZsdl9zaWRlYmFuZF9ydyhpOTE1LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9S VF9QVU5JVCwKPiAgCQkJU0JfQ1JSRERBX05QLCBhZGRyLCAmdmFsKTsKPiAgCj4gLQlfX3Zsdl9w dW5pdF9wdXQoaTkxNSk7Cj4gLQltdXRleF91bmxvY2soJmk5MTUtPnNiX2xvY2spOwo+ICsJdmx2 X3B1bml0X3B1dChpOTE1KTsKPiAgCj4gIAlyZXR1cm4gdmFsOwo+ICB9Cj4gQEAgLTE0MywxNiAr MTU5LDE0IEBAIGludCB2bHZfcHVuaXRfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIHUzMiBhZGRyLCB1MzIgdmFsKQo+ICB7Cj4gIAlpbnQgZXJyOwo+ICAKPiAtCVdBUk5fT04o IW11dGV4X2lzX2xvY2tlZCgmaTkxNS0+cGN1X2xvY2spKTsKPiArCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmk5MTUtPnBjdV9sb2NrKTsKPiAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5zYl9sb2NrKTsK PiAtCV9fdmx2X3B1bml0X2dldChpOTE1KTsKPiArCXZsdl9wdW5pdF9nZXQoaTkxNSk7Cj4gIAo+ ICAJZXJyID0gdmx2X3NpZGViYW5kX3J3KGk5MTUsIFBDSV9ERVZGTigwLCAwKSwgSU9TRl9QT1JU X1BVTklULAo+ICAJCQkgICAgICBTQl9DUldSREFfTlAsIGFkZHIsICZ2YWwpOwo+ICAKPiAtCV9f dmx2X3B1bml0X3B1dChpOTE1KTsKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+c2JfbG9jayk7Cj4g Kwl2bHZfcHVuaXRfcHV0KGk5MTUpOwo+ICAKPiAgCXJldHVybiBlcnI7Cj4gIH0KPiBAQCAtMTc3 LDEyICsxOTEsMTAgQEAgdTMyIHZsdl9uY19yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LCB1OCBhZGRyKQo+ICB7Cj4gIAl1MzIgdmFsID0gMDsKPiAgCj4gLQlXQVJOX09OKCFtdXRl eF9pc19sb2NrZWQoJmk5MTUtPnBjdV9sb2NrKSk7Cj4gLQo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ c2JfbG9jayk7Cj4gKwl2bHZfbmNfZ2V0KGk5MTUpOwo+ICAJdmx2X3NpZGViYW5kX3J3KGk5MTUs IFBDSV9ERVZGTigwLCAwKSwgSU9TRl9QT1JUX05DLAo+ICAJCQlTQl9DUlJEREFfTlAsIGFkZHIs ICZ2YWwpOwo+IC0JbXV0ZXhfdW5sb2NrKCZpOTE1LT5zYl9sb2NrKTsKPiArCXZsdl9uY19wdXQo aTkxNSk7Cj4gIAo+ICAJcmV0dXJuIHZhbDsKPiAgfQo+IEBAIC0yODEsNyArMjkzLDggQEAgdTMy IGludGVsX3NiaV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTE2IHJl ZywKPiAgCQkgICBlbnVtIGludGVsX3NiaV9kZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKPiAgewo+ ICAJdTMyIHZhbHVlID0gMDsKPiAtCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYt PnNiX2xvY2spKTsKPiArCj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+c2JfbG9j ayk7Cj4gIAo+ICAJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKCZkZXZfcHJpdi0+dW5jb3Jl LAo+ICAJCQkJICAgIFNCSV9DVExfU1RBVCwgU0JJX0JVU1ksIDAsCj4gQEAgLTMyMSw3ICszMzQs NyBAQCB2b2lkIGludGVsX3NiaV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHUxNiByZWcsIHUzMiB2YWx1ZSwKPiAgewo+ICAJdTMyIHRtcDsKPiAgCj4gLQlXQVJOX09O KCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5zYl9sb2NrKSk7Cj4gKwlsb2NrZGVwX2Fzc2Vy dF9oZWxkKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gIAo+ICAJaWYgKGludGVsX3dhaXRfZm9yX3Jl Z2lzdGVyKCZkZXZfcHJpdi0+dW5jb3JlLAo+ICAJCQkJICAgIFNCSV9DVExfU1RBVCwgU0JJX0JV U1ksIDAsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Zsdl9kc2kuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3Zsdl9kc2kuYwo+IGluZGV4IGUwYjFlYzgyMTk2MC4uZGMxODM5 YmZkZTNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Zsdl9kc2kuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Zsdl9kc2kuYwo+IEBAIC0yNDgsNyArMjQ4LDcgQEAg c3RhdGljIGludCBkcGlfc2VuZF9jbWQoc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpLCB1MzIg Y21kLCBib29sIGhzLAo+ICAKPiAgc3RhdGljIHZvaWQgYmFuZF9nYXBfcmVzZXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ c2JfbG9jayk7Cj4gKwl2bHZfZmxpc2RzaV9nZXQoZGV2X3ByaXYpOwo+ICAKPiAgCXZsdl9mbGlz ZHNpX3dyaXRlKGRldl9wcml2LCAweDA4LCAweDAwMDEpOwo+ICAJdmx2X2ZsaXNkc2lfd3JpdGUo ZGV2X3ByaXYsIDB4MEYsIDB4MDAwNSk7Cj4gQEAgLTI1Nyw3ICsyNTcsNyBAQCBzdGF0aWMgdm9p ZCBiYW5kX2dhcF9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAl2 bHZfZmxpc2RzaV93cml0ZShkZXZfcHJpdiwgMHgwRiwgMHgwMDAwKTsKPiAgCXZsdl9mbGlzZHNp X3dyaXRlKGRldl9wcml2LCAweDA4LCAweDAwMDApOwo+ICAKPiAtCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2ZsaXNkc2lfcHV0KGRldl9wcml2KTsKPiAgfQo+ICAK PiAgc3RhdGljIGludCBiZHdfZ2V0X3BpcGVtaXNjX2JwcChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YykKPiBAQCAtNTE1LDExICs1MTUsMTEgQEAgc3RhdGljIHZvaWQgdmx2X2RzaV9kZXZpY2VfcmVh ZHkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAo+ICAJRFJNX0RFQlVHX0tNUygi XG4iKTsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfZmxp c2RzaV9nZXQoZGV2X3ByaXYpOwo+ICAJLyogcHJvZ3JhbSByY29tcCBmb3IgY29tcGxpYW5jZSwg cmVkdWNlIGZyb20gNTAgb2htcyB0byA0NSBvaG1zCj4gIAkgKiBuZWVkZWQgZXZlcnl0aW1lIGFm dGVyIHBvd2VyIGdhdGUgKi8KPiAgCXZsdl9mbGlzZHNpX3dyaXRlKGRldl9wcml2LCAweDA0LCAw eDAwMDQpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfZmxp c2RzaV9wdXQoZGV2X3ByaXYpOwo+ICAKPiAgCS8qIGJhbmRnYXAgcmVzZXQgaXMgbmVlZGVkIGFm dGVyIGV2ZXJ5dGltZSB3ZSBkbyBwb3dlciBnYXRlICovCj4gIAliYW5kX2dhcF9yZXNldChkZXZf cHJpdik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Zsdl9kc2lfcGxsLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS92bHZfZHNpX3BsbC5jCj4gaW5kZXggNWU3YjFmYjJkYjVk Li4yNWI4MTExNzRmNWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvdmx2X2Rz aV9wbGwuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Zsdl9kc2lfcGxsLmMKPiBAQCAt MTQ5LDcgKzE0OSw3IEBAIHZvaWQgdmx2X2RzaV9wbGxfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+ICAKPiAgCURSTV9ERUJVR19LTVMoIlxuIik7Cj4gIAo+IC0JbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2Nja19nZXQoZGV2X3ByaXYpOwo+ICAK PiAgCXZsdl9jY2tfd3JpdGUoZGV2X3ByaXYsIENDS19SRUdfRFNJX1BMTF9DT05UUk9MLCAwKTsK PiAgCXZsdl9jY2tfd3JpdGUoZGV2X3ByaXYsIENDS19SRUdfRFNJX1BMTF9ESVZJREVSLCBjb25m aWctPmRzaV9wbGwuZGl2KTsKPiBAQCAtMTY2LDExICsxNjYsMTEgQEAgdm9pZCB2bHZfZHNpX3Bs bF9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlpZiAod2FpdF9mb3Io dmx2X2Nja19yZWFkKGRldl9wcml2LCBDQ0tfUkVHX0RTSV9QTExfQ09OVFJPTCkgJgo+ICAJCQkJ CQlEU0lfUExMX0xPQ0ssIDIwKSkgewo+ICAKPiAtCQltdXRleF91bmxvY2soJmRldl9wcml2LT5z Yl9sb2NrKTsKPiArCQl2bHZfY2NrX3B1dChkZXZfcHJpdik7Cj4gIAkJRFJNX0VSUk9SKCJEU0kg UExMIGxvY2sgZmFpbGVkXG4iKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gLQltdXRleF91bmxvY2so JmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9jY2tfcHV0KGRldl9wcml2KTsKPiAgCj4gIAlE Uk1fREVCVUdfS01TKCJEU0kgUExMIGxvY2tlZFxuIik7Cj4gIH0KPiBAQCAtMTgyLDE0ICsxODIs MTQgQEAgdm9pZCB2bHZfZHNpX3BsbF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyKQo+ICAKPiAgCURSTV9ERUJVR19LTVMoIlxuIik7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2Nja19nZXQoZGV2X3ByaXYpOwo+ICAKPiAgCXRtcCA9 IHZsdl9jY2tfcmVhZChkZXZfcHJpdiwgQ0NLX1JFR19EU0lfUExMX0NPTlRST0wpOwo+ICAJdG1w ICY9IH5EU0lfUExMX1ZDT19FTjsKPiAgCXRtcCB8PSBEU0lfUExMX0xET19HQVRFOwo+ICAJdmx2 X2Nja193cml0ZShkZXZfcHJpdiwgQ0NLX1JFR19EU0lfUExMX0NPTlRST0wsIHRtcCk7Cj4gIAo+ IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfY2NrX3B1dChkZXZf cHJpdik7Cj4gIH0KPiAgCj4gIGJvb2wgYnh0X2RzaV9wbGxfaXNfZW5hYmxlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gQEAgLTI2NiwxMCArMjY2LDEwIEBAIHUzMiB2bHZf ZHNpX2dldF9wY2xrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAKPiAgCURSTV9E RUJVR19LTVMoIlxuIik7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ ICsJdmx2X2Nja19nZXQoZGV2X3ByaXYpOwo+ICAJcGxsX2N0bCA9IHZsdl9jY2tfcmVhZChkZXZf cHJpdiwgQ0NLX1JFR19EU0lfUExMX0NPTlRST0wpOwo+ICAJcGxsX2RpdiA9IHZsdl9jY2tfcmVh ZChkZXZfcHJpdiwgQ0NLX1JFR19EU0lfUExMX0RJVklERVIpOwo+IC0JbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfY2NrX3B1dChkZXZfcHJpdik7Cj4gIAo+ICAJY29u ZmlnLT5kc2lfcGxsLmN0cmwgPSBwbGxfY3RsICYgfkRTSV9QTExfTE9DSzsKPiAgCWNvbmZpZy0+ ZHNpX3BsbC5kaXYgPSBwbGxfZGl2Owo+IC0tIAo+IDIuMjAuMQo+IAo+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrDpGzD pApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=