From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v14 04/33] drm/i915: MEI interface implementation Date: Wed, 20 Feb 2019 20:39:39 +0100 Message-ID: <20190220193939.GA2665@phenom.ffwll.local> References: <1550338640-17470-1-git-send-email-ramalingam.c@intel.com> <1550338640-17470-5-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2FFC8892AE for ; Wed, 20 Feb 2019 19:39:44 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id d9so20909239edh.12 for ; Wed, 20 Feb 2019 11:39:44 -0800 (PST) Content-Disposition: inline In-Reply-To: <1550338640-17470-5-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ramalingam C Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, tomas.winkler@intel.com, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gU2F0LCBGZWIgMTYsIDIwMTkgYXQgMTE6MDY6NTFQTSArMDUzMCwgUmFtYWxpbmdhbSBDIHdy b3RlOgo+IERlZmluaW5nIHRoZSBtZWktaTkxNSBpbnRlcmZhY2UgZnVuY3Rpb25zIGFuZCBpbml0 aWFsaXphdGlvbiBvZgo+IHRoZSBpbnRlcmZhY2UuCj4gCj4gdjI6Cj4gICBBZGp1c3QgdG8gdGhl IG5ldyBpbnRlcmZhY2UgY2hhbmdlcy4gW1RvbWFzXQo+ICAgQWRkZWQgZnVydGhlciBkZWJ1ZyBs b2dzIGZvciB0aGUgZmFpbHVyZXMgYXQgTUVJIGkvZi4KPiAgIHBvcnQgaW4gaGRjcF9wb3J0IGRh dGEgaXMgZXF1aXBwZWQgdG8gaGFuZGxlIC12ZSB2YWx1ZXMuCj4gdjM6Cj4gICBtZWkgY29tcCBp cyBtYXRjaGVkIGZvciBnbG9iYWwgaTkxNSBjb21wIG1hc3Rlci4gW0RhbmllbF0KPiAgIEluIGhk Y3Bfc2hpbSBoZGNwX3Byb3RvY29sKCkgaXMgcmVwbGFjZWQgd2l0aCBjb25zdCB2YXJpYWJsZS4g W0RhbmllbF0KPiAgIG1laSB3cmFwcGVycyBhcmUgYWRqdXN0ZWQgYXMgcGVyIHRoZSBpL2YgY2hh bmdlIFtEYW5pZWxdCj4gdjQ6Cj4gICBwb3J0IGluaXRpYWxpemF0aW9uIGlzIGRvbmUgb25seSBh dCBoZGNwMl9pbml0IG9ubHkgW0RhbnZldF0KPiB2NToKPiAgIEk5MTUgcmVnaXN0ZXJzIGEgc3Vi Y29tcG9uZW50IHRvIGJlIG1hdGNoZWQgd2l0aCBtZWlfaGRjcCBbRGFuaWVsXQo+IHY2Ogo+ICAg SERDUF9kaXNhYmxlIGZvciBhbGwgY29ubmVjdG9ycyBpbmNhc2Ugb2YgY29tcF91bmJpbmQuCj4g ICBUZWFyIGRvd24gSERDUCBjb21wIGludGVyZmFjZSBhdCBpOTE1X3VubG9hZCBbRGFuaWVsXQo+ IHY3Ogo+ICAgQ29tcG9uZW50IGluaXQgYW5kIGZpbmkgYXJlIG1vdmVkIG91dCBvZiBjb25uZWN0 b3Igb3BzIFtEYW5pZWxdCj4gICBoZGNwX2Rpc2FibGUgaXMgbm90IGNhbGxlZCBmcm9tIHVuYmlu ZC4gW0RhbmllbF0KPiB2ODoKPiAgIHN1YmNvbXBvbmVudCBuYW1lIGlzIGRyb3BwZWQgYXMgaXQg aXMgYWxyZWFkeSBtZXJnZWQuCj4gCj4gU2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1h bGluZ2FtLmNAaW50ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwu dmV0dGVyQGZmd2xsLmNoPiBbdjExXQoKSSB0aGluayB0aGF0IHItYiB3YXMgZm9yIHY3LCBub3Qg djgsIGFuZCB2MTEgb2YgdGhpcyBwYXRjaCBkb2Vzbid0IGV2ZW4KZXhpc3QuIFNlcmllcyBpdHNl bGYgaXMgYXMgdjE0LiBBbnl3YXlzLCBtZXJnZWQsIHRoYW5rcyBmb3IgYWxsIHlvdXIgd29yayEK LURhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAg fCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICB8ICAgNyAr Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nvbm5lY3Rvci5jIHwgICAyICsKPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgfCAgIDQgKwo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICB8ICAgOCArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkY3AuYyAgICAgIHwgMzk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLQo+ICA2IGZpbGVzIGNoYW5nZWQsIDQxOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggNjYzMDIxMmYyZmFmLi5jNjM1NGY2 Y2RiZGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtOTA2LDYgKzkwNiw3IEBA IHN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIAltdXRleF9pbml0KCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+ICAJbXV0 ZXhfaW5pdCgmZGV2X3ByaXYtPndtLndtX211dGV4KTsKPiAgCW11dGV4X2luaXQoJmRldl9wcml2 LT5wcHNfbXV0ZXgpOwo+ICsJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7 Cj4gIAo+ICAJaTkxNV9tZW1jcHlfaW5pdF9lYXJseShkZXZfcHJpdik7Cj4gIAlpbnRlbF9ydW50 aW1lX3BtX2luaXRfZWFybHkoZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGlu ZGV4IDVjOGQwNDg5YTFjZC4uZDM3NWQxY2Y4NmY1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gQEAgLTU1LDYgKzU1LDcgQEAKPiAgI2luY2x1ZGUgPGRybS9kcm1fdXRpbC5oPgo+ICAj aW5jbHVkZSA8ZHJtL2RybV9kc2MuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+ Cj4gKyNpbmNsdWRlIDxkcm0vaTkxNV9tZWlfaGRjcF9pbnRlcmZhY2UuaD4KPiAgCj4gICNpbmNs dWRlICJpOTE1X2ZpeGVkLmgiCj4gICNpbmNsdWRlICJpOTE1X3BhcmFtcy5oIgo+IEBAIC0yMDUy LDYgKzIwNTMsMTIgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAKPiAgCXN0cnVjdCBp OTE1X3BtdSBwbXU7Cj4gIAo+ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqaGRjcF9t YXN0ZXI7Cj4gKwlib29sIGhkY3BfY29tcF9hZGRlZDsKPiArCj4gKwkvKiBNdXRleCB0byBwcm90 ZWN0IHRoZSBhYm92ZSBoZGNwIGNvbXBvbmVudCByZWxhdGVkIHZhbHVlcy4gKi8KPiArCXN0cnVj dCBtdXRleCBoZGNwX2NvbXBfbXV0ZXg7Cj4gKwo+ICAJLyoKPiAgCSAqIE5PVEU6IFRoaXMgaXMg dGhlIGRyaTEvdW1zIGR1bmdlb24sIGRvbid0IGFkZCBzdHVmZiBoZXJlLiBZb3VyIHBhdGNoCj4g IAkgKiB3aWxsIGJlIHJlamVjdGVkLiBJbnN0ZWFkIGxvb2sgZm9yIGEgYmV0dGVyIHBsYWNlLgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb25uZWN0b3IuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nvbm5lY3Rvci5jCj4gaW5kZXggZWUxNjc1ODc0N2M1 Li42NmVkM2VlNTk5OGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Y29ubmVjdG9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb25uZWN0b3Iu Ywo+IEBAIC04OCw2ICs4OCw4IEBAIHZvaWQgaW50ZWxfY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCj4gIAlrZnJlZShpbnRlbF9jb25uZWN0b3It PmRldGVjdF9lZGlkKTsKPiAgCj4gKwlpbnRlbF9oZGNwX2NsZWFudXAoaW50ZWxfY29ubmVjdG9y KTsKPiArCj4gIAlpZiAoIUlTX0VSUl9PUl9OVUxMKGludGVsX2Nvbm5lY3Rvci0+ZWRpZCkpCj4g IAkJa2ZyZWUoaW50ZWxfY29ubmVjdG9yLT5lZGlkKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+IGluZGV4IDczYTEwN2I2ZWI5YS4uYWNiOTkzY2U3ZWFhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xNTQ1Myw2ICsxNTQ1Myw4IEBA IGludCBpbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWludGVs X3VwZGF0ZV9jemNsayhkZXZfcHJpdik7Cj4gIAlpbnRlbF9tb2Rlc2V0X2luaXRfaHcoZGV2KTsK PiAgCj4gKwlpbnRlbF9oZGNwX2NvbXBvbmVudF9pbml0KGRldl9wcml2KTsKPiArCj4gIAlpZiAo ZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxID09IDApCj4gIAkJaW50ZWxfdXBkYXRlX21heF9jZGNs ayhkZXZfcHJpdik7Cj4gIAo+IEBAIC0xNjMxNCw2ICsxNjMxNiw4IEBAIHZvaWQgaW50ZWxfbW9k ZXNldF9jbGVhbnVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkvKiBmbHVzaCBhbnkgZGVs YXllZCB0YXNrcyBvciBwZW5kaW5nIHdvcmsgKi8KPiAgCWZsdXNoX3NjaGVkdWxlZF93b3JrKCk7 Cj4gIAo+ICsJaW50ZWxfaGRjcF9jb21wb25lbnRfZmluaShkZXZfcHJpdik7Cj4gKwo+ICAJZHJt X21vZGVfY29uZmlnX2NsZWFudXAoZGV2KTsKPiAgCj4gIAlpbnRlbF9vdmVybGF5X2NsZWFudXAo ZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggMTFjNjk2MDI1MDg1 Li5mOGU4NDgyNTczYzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC00MSw2 ICs0MSw3IEBACj4gICNpbmNsdWRlIDxkcm0vZHJtX3JlY3QuaD4KPiAgI2luY2x1ZGUgPGRybS9k cm1fdmJsYW5rLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ICsjaW5jbHVkZSA8 ZHJtL2k5MTVfbWVpX2hkY3BfaW50ZXJmYWNlLmg+Cj4gICNpbmNsdWRlIDxtZWRpYS9jZWMtbm90 aWZpZXIuaD4KPiAgCj4gIHN0cnVjdCBkcm1fcHJpbnRlcjsKPiBAQCAtMzk1LDYgKzM5Niw5IEBA IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gewo+ICAJLyogRGV0ZWN0cyBwYW5lbCdzIGhkY3AgY2Fw YWJpbGl0eS4gVGhpcyBpcyBvcHRpb25hbCBmb3IgSERNSS4gKi8KPiAgCWludCAoKmhkY3BfY2Fw YWJsZSkoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gIAkJCSAg ICBib29sICpoZGNwX2NhcGFibGUpOwo+ICsKPiArCS8qIEhEQ1AgYWRhcHRhdGlvbihEUC9IRE1J KSByZXF1aXJlZCBvbiB0aGUgcG9ydCAqLwo+ICsJZW51bSBoZGNwX3dpcmVkX3Byb3RvY29sIHBy b3RvY29sOwo+ICB9Owo+ICAKPiAgc3RydWN0IGludGVsX2hkY3Agewo+IEBAIC00MTUsNiArNDE5 LDcgQEAgc3RydWN0IGludGVsX2hkY3Agewo+ICAJICogY29udGVudCBjYW4gZmxvdyBvbmx5IHRo cm91Z2ggYSBsaW5rIHByb3RlY3RlZCBieSBIRENQMi4yLgo+ICAJICovCj4gIAl1OCBjb250ZW50 X3R5cGU7Cj4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgcG9ydF9kYXRhOwo+ICB9Owo+ICAKPiAg c3RydWN0IGludGVsX2Nvbm5lY3RvciB7Cj4gQEAgLTIwODgsNiArMjA5Myw5IEBAIGludCBpbnRl bF9oZGNwX2Rpc2FibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiAgaW50 IGludGVsX2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Ip Owo+ICBib29sIGlzX2hkY3Bfc3VwcG9ydGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgZW51bSBwb3J0IHBvcnQpOwo+ICBib29sIGludGVsX2hkY3BfY2FwYWJsZShzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ICt2b2lkIGludGVsX2hkY3BfY29tcG9uZW50 X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9pZCBpbnRlbF9o ZGNwX2NvbXBvbmVudF9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4g K3ZvaWQgaW50ZWxfaGRjcF9jbGVhbnVwKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cik7Cj4gIAo+ICAvKiBpbnRlbF9wc3IuYyAqLwo+ICAjZGVmaW5lIENBTl9QU1IoZGV2X3ByaXYp IChIQVNfUFNSKGRldl9wcml2KSAmJiBkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gaW5kZXggN2IxMDk3ZDc5ZmI4Li5kMDZiZWY5ZDFhYjIg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gQEAgLTcsOCArNywxMCBAQAo+ICAg Ki8KPiAgCj4gICNpbmNsdWRlIDxkcm0vZHJtX2hkY3AuaD4KPiArI2luY2x1ZGUgPGRybS9pOTE1 X2NvbXBvbmVudC5oPgo+ICAjaW5jbHVkZSA8bGludXgvaTJjLmg+Cj4gICNpbmNsdWRlIDxsaW51 eC9yYW5kb20uaD4KPiArI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgo+ICAKPiAgI2luY2x1 ZGUgImludGVsX2Rydi5oIgo+ICAjaW5jbHVkZSAiaTkxNV9yZWcuaCIKPiBAQCAtODMyLDYgKzgz NCwzNDcgQEAgYm9vbCBpc19oZGNwX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0KQo+ICAJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOSAmJiBwb3J0IDwgUE9SVF9FOwo+ICB9Cj4gIAo+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygo dW51c2VkKSkgaW50Cj4gK2hkY3AyX3ByZXBhcmVfYWtlX2luaXQoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yLAo+ICsJCSAgICAgICBzdHJ1Y3QgaGRjcDJfYWtlX2luaXQgKmFrZV9k YXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5o ZGNwLnBvcnRfZGF0YTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFz dGVyICpjb21wOwo+ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRj cF9jb21wX211dGV4KTsKPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7Cj4gKwo+ICsJ aWYgKCFjb21wIHx8ICFjb21wLT5vcHMpIHsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5o ZGNwX2NvbXBfbXV0ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9 IGNvbXAtPm9wcy0+aW5pdGlhdGVfaGRjcDJfc2Vzc2lvbihjb21wLT5tZWlfZGV2LCBkYXRhLCBh a2VfZGF0YSk7Cj4gKwlpZiAocmV0KQo+ICsJCURSTV9ERUJVR19LTVMoIlByZXBhcmVfYWtlX2lu aXQgZmFpbGVkLiAlZFxuIiwgcmV0KTsKPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3Bf Y29tcF9tdXRleCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIF9fYXR0 cmlidXRlX18oKHVudXNlZCkpIGludAo+ICtoZGNwMl92ZXJpZnlfcnhfY2VydF9wcmVwYXJlX2tt KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJCXN0cnVjdCBoZGNwMl9h a2Vfc2VuZF9jZXJ0ICpyeF9jZXJ0LAo+ICsJCQkJYm9vbCAqcGFpcmVkLAo+ICsJCQkJc3RydWN0 IGhkY3AyX2FrZV9ub19zdG9yZWRfa20gKmVrX3B1Yl9rbSwKPiArCQkJCXNpemVfdCAqbXNnX3N6 KQo+ICt7Cj4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNw LnBvcnRfZGF0YTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVy ICpjb21wOwo+ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9j b21wX211dGV4KTsKPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7Cj4gKwo+ICsJaWYg KCFjb21wIHx8ICFjb21wLT5vcHMpIHsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNw X2NvbXBfbXV0ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9IGNv bXAtPm9wcy0+dmVyaWZ5X3JlY2VpdmVyX2NlcnRfcHJlcGFyZV9rbShjb21wLT5tZWlfZGV2LCBk YXRhLAo+ICsJCQkJCQkJIHJ4X2NlcnQsIHBhaXJlZCwKPiArCQkJCQkJCSBla19wdWJfa20sIG1z Z19zeik7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlEUk1fREVCVUdfS01TKCJWZXJpZnkgcnhfY2Vy dCBmYWlsZWQuICVkXG4iLCByZXQpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9j b21wX211dGV4KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgX19hdHRy aWJ1dGVfXygodW51c2VkKSkgaW50Cj4gK2hkY3AyX3ZlcmlmeV9ocHJpbWUoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICsJCSAgICBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfaHBy aW1lICpyeF9ocHJpbWUpCj4gK3sKPiArCXN0cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZj b25uZWN0b3ItPmhkY3AucG9ydF9kYXRhOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpOTE1X2hk Y3BfY29tcF9tYXN0ZXIgKmNvbXA7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCW11dGV4X2xvY2soJmRl dl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsJY29tcCA9IGRldl9wcml2LT5oZGNwX21hc3Rl cjsKPiArCj4gKwlpZiAoIWNvbXAgfHwgIWNvbXAtPm9wcykgewo+ICsJCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4g Kwo+ICsJcmV0ID0gY29tcC0+b3BzLT52ZXJpZnlfaHByaW1lKGNvbXAtPm1laV9kZXYsIGRhdGEs IHJ4X2hwcmltZSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlEUk1fREVCVUdfS01TKCJWZXJpZnkg aHByaW1lIGZhaWxlZC4gJWRcbiIsIHJldCk7Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5o ZGNwX2NvbXBfbXV0ZXgpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBf X2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKPiAraGRjcDJfc3RvcmVfcGFpcmluZ19pbmZvKHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJIHN0cnVjdCBoZGNwMl9ha2Vf c2VuZF9wYWlyaW5nX2luZm8gKnBhaXJpbmdfaW5mbykKPiArewo+ICsJc3RydWN0IGhkY3BfcG9y dF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKPiArCWludCByZXQ7Cj4gKwo+ ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwljb21wID0gZGV2 X3ByaXYtPmhkY3BfbWFzdGVyOwo+ICsKPiArCWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7Cj4g KwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCQlyZXR1cm4g LUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXQgPSBjb21wLT5vcHMtPnN0b3JlX3BhaXJpbmdfaW5m byhjb21wLT5tZWlfZGV2LCBkYXRhLCBwYWlyaW5nX2luZm8pOwo+ICsJaWYgKHJldCA8IDApCj4g KwkJRFJNX0RFQlVHX0tNUygiU3RvcmUgcGFpcmluZyBpbmZvIGZhaWxlZC4gJWRcbiIsIHJldCk7 Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsKPiArCXJl dHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQK PiAraGRjcDJfcHJlcGFyZV9sY19pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKPiArCQkgICAgICBzdHJ1Y3QgaGRjcDJfbGNfaW5pdCAqbGNfaW5pdCkKPiArewo+ICsJc3Ry dWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+ YmFzZS5kZXYpOwo+ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKPiArCWlu dCByZXQ7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4g Kwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOwo+ICsKPiArCWlmICghY29tcCB8fCAhY29t cC0+b3BzKSB7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsK PiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXQgPSBjb21wLT5vcHMtPmluaXRp YXRlX2xvY2FsaXR5X2NoZWNrKGNvbXAtPm1laV9kZXYsIGRhdGEsIGxjX2luaXQpOwo+ICsJaWYg KHJldCA8IDApCj4gKwkJRFJNX0RFQlVHX0tNUygiUHJlcGFyZSBsY19pbml0IGZhaWxlZC4gJWRc biIsIHJldCk7Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVz ZWQpKSBpbnQKPiAraGRjcDJfdmVyaWZ5X2xwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IsCj4gKwkJICAgIHN0cnVjdCBoZGNwMl9sY19zZW5kX2xwcmltZSAqcnhfbHByaW1l KQo+ICt7Cj4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNw LnBvcnRfZGF0YTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVy ICpjb21wOwo+ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9j b21wX211dGV4KTsKPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7Cj4gKwo+ICsJaWYg KCFjb21wIHx8ICFjb21wLT5vcHMpIHsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNw X2NvbXBfbXV0ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9IGNv bXAtPm9wcy0+dmVyaWZ5X2xwcmltZShjb21wLT5tZWlfZGV2LCBkYXRhLCByeF9scHJpbWUpOwo+ ICsJaWYgKHJldCA8IDApCj4gKwkJRFJNX0RFQlVHX0tNUygiVmVyaWZ5IExfUHJpbWUgZmFpbGVk LiAlZFxuIiwgcmV0KTsKPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRl eCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIF9fYXR0cmlidXRlX18o KHVudXNlZCkpCj4gK2ludCBoZGNwMl9wcmVwYXJlX3NrZXkoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+ICsJCSAgICAgICBzdHJ1Y3QgaGRjcDJfc2tlX3NlbmRfZWtzICpza2Vf ZGF0YSkKPiArewo+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+ aGRjcC5wb3J0X2RhdGE7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wX21h c3RlciAqY29tcDsKPiArCWludCByZXQ7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhk Y3BfY29tcF9tdXRleCk7Cj4gKwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOwo+ICsKPiAr CWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ aGRjcF9jb21wX211dGV4KTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXQg PSBjb21wLT5vcHMtPmdldF9zZXNzaW9uX2tleShjb21wLT5tZWlfZGV2LCBkYXRhLCBza2VfZGF0 YSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlEUk1fREVCVUdfS01TKCJHZXQgc2Vzc2lvbiBrZXkg ZmFpbGVkLiAlZFxuIiwgcmV0KTsKPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29t cF9tdXRleCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIF9fYXR0cmli dXRlX18oKHVudXNlZCkpIGludAo+ICtoZGNwMl92ZXJpZnlfcmVwX3RvcG9sb2d5X3ByZXBhcmVf YWNrKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJCSAgICAgIHN0cnVj dCBoZGNwMl9yZXBfc2VuZF9yZWNlaXZlcmlkX2xpc3QKPiArCQkJCQkJCQkqcmVwX3RvcG9sb2d5 LAo+ICsJCQkJICAgICAgc3RydWN0IGhkY3AyX3JlcF9zZW5kX2FjayAqcmVwX3NlbmRfYWNrKQo+ ICt7Cj4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBv cnRfZGF0YTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y29ubmVjdG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVyICpj b21wOwo+ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21w X211dGV4KTsKPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7Cj4gKwo+ICsJaWYgKCFj b21wIHx8ICFjb21wLT5vcHMpIHsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2Nv bXBfbXV0ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9IGNvbXAt Pm9wcy0+cmVwZWF0ZXJfY2hlY2tfZmxvd19wcmVwYXJlX2Fjayhjb21wLT5tZWlfZGV2LCBkYXRh LAo+ICsJCQkJCQkJIHJlcF90b3BvbG9neSwKPiArCQkJCQkJCSByZXBfc2VuZF9hY2spOwo+ICsJ aWYgKHJldCA8IDApCj4gKwkJRFJNX0RFQlVHX0tNUygiVmVyaWZ5IHJlcCB0b3BvbG9neSBmYWls ZWQuICVkXG4iLCByZXQpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211 dGV4KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgX19hdHRyaWJ1dGVf XygodW51c2VkKSkgaW50Cj4gK2hkY3AyX3ZlcmlmeV9tcHJpbWUoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yLAo+ICsJCSAgICBzdHJ1Y3QgaGRjcDJfcmVwX3N0cmVhbV9yZWFkeSAq c3RyZWFtX3JlYWR5KQo+ICt7Cj4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29u bmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9oZGNw X2NvbXBfbWFzdGVyICpjb21wOwo+ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZf cHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7 Cj4gKwo+ICsJaWYgKCFjb21wIHx8ICFjb21wLT5vcHMpIHsKPiArCQltdXRleF91bmxvY2soJmRl dl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsK PiArCXJldCA9IGNvbXAtPm9wcy0+dmVyaWZ5X21wcmltZShjb21wLT5tZWlfZGV2LCBkYXRhLCBz dHJlYW1fcmVhZHkpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJRFJNX0RFQlVHX0tNUygiVmVyaWZ5 IG1wcmltZSBmYWlsZWQuICVkXG4iLCByZXQpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ aGRjcF9jb21wX211dGV4KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMg X19hdHRyaWJ1dGVfXygodW51c2VkKSkKPiAraW50IGhkY3AyX2F1dGhlbnRpY2F0ZV9wb3J0KHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0IGhkY3BfcG9y dF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKPiArCWludCByZXQ7Cj4gKwo+ ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwljb21wID0gZGV2 X3ByaXYtPmhkY3BfbWFzdGVyOwo+ICsKPiArCWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7Cj4g KwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCQlyZXR1cm4g LUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXQgPSBjb21wLT5vcHMtPmVuYWJsZV9oZGNwX2F1dGhl bnRpY2F0aW9uKGNvbXAtPm1laV9kZXYsIGRhdGEpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJRFJN X0RFQlVHX0tNUygiRW5hYmxlIGhkY3AgYXV0aCBmYWlsZWQuICVkXG4iLCByZXQpOwo+ICsJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCj4gKwlyZXR1cm4gcmV0 Owo+ICt9Cj4gKwo+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKPiAraW50IGhkY3Ay X2Nsb3NlX21laV9zZXNzaW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAr ewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0 b3ItPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7Cj4g KwlpbnQgcmV0Owo+ICsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgp Owo+ICsJY29tcCA9IGRldl9wcml2LT5oZGNwX21hc3RlcjsKPiArCj4gKwlpZiAoIWNvbXAgfHwg IWNvbXAtPm9wcykgewo+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRl eCk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY29tcC0+b3BzLT5j bG9zZV9oZGNwX3Nlc3Npb24oY29tcC0+bWVpX2RldiwKPiArCQkJCQkgICAgICZjb25uZWN0b3It PmhkY3AucG9ydF9kYXRhKTsKPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9t dXRleCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIF9fYXR0cmlidXRl X18oKHVudXNlZCkpCj4gK2ludCBoZGNwMl9kZWF1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJcmV0dXJuIGhkY3AyX2Nsb3NlX21laV9z ZXNzaW9uKGNvbm5lY3Rvcik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaTkxNV9oZGNwX2NvbXBv bmVudF9iaW5kKHN0cnVjdCBkZXZpY2UgKmk5MTVfa2RldiwKPiArCQkJCSAgICBzdHJ1Y3QgZGV2 aWNlICptZWlfa2Rldiwgdm9pZCAqZGF0YSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0ga2Rldl90b19pOTE1KGk5MTVfa2Rldik7Cj4gKwo+ICsJRFJNX0RFQlVH KCJJOTE1IEhEQ1AgY29tcCBiaW5kXG4iKTsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNw X2NvbXBfbXV0ZXgpOwo+ICsJZGV2X3ByaXYtPmhkY3BfbWFzdGVyID0gKHN0cnVjdCBpOTE1X2hk Y3BfY29tcF9tYXN0ZXIgKilkYXRhOwo+ICsJZGV2X3ByaXYtPmhkY3BfbWFzdGVyLT5tZWlfZGV2 ID0gbWVpX2tkZXY7Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgp Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpOTE1X2hkY3BfY29t cG9uZW50X3VuYmluZChzdHJ1Y3QgZGV2aWNlICppOTE1X2tkZXYsCj4gKwkJCQkgICAgICAgc3Ry dWN0IGRldmljZSAqbWVpX2tkZXYsIHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfdG9faTkxNShpOTE1X2tkZXYpOwo+ICsKPiArCURS TV9ERUJVRygiSTkxNSBIRENQIGNvbXAgdW5iaW5kXG4iKTsKPiArCW11dGV4X2xvY2soJmRldl9w cml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsJZGV2X3ByaXYtPmhkY3BfbWFzdGVyID0gTlVMTDsK PiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gK30KPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBpOTE1X2hkY3BfY29tcG9uZW50X29w cyA9IHsKPiArCS5iaW5kICAgPSBpOTE1X2hkY3BfY29tcG9uZW50X2JpbmQsCj4gKwkudW5iaW5k ID0gaTkxNV9oZGNwX2NvbXBvbmVudF91bmJpbmQsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW5saW5l IGludCBpbml0aWFsaXplX2hkY3BfcG9ydF9kYXRhKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikKPiArewo+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5o ZGNwOwo+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmhkY3AtPnBvcnRfZGF0YTsK PiArCj4gKwlkYXRhLT5wb3J0ID0gY29ubmVjdG9yLT5lbmNvZGVyLT5wb3J0Owo+ICsJZGF0YS0+ cG9ydF90eXBlID0gKHU4KUhEQ1BfUE9SVF9UWVBFX0lOVEVHUkFURUQ7Cj4gKwlkYXRhLT5wcm90 b2NvbCA9ICh1OCloZGNwLT5zaGltLT5wcm90b2NvbDsKPiArCj4gKwlkYXRhLT5rID0gMTsKPiAr CWlmICghZGF0YS0+c3RyZWFtcykKPiArCQlkYXRhLT5zdHJlYW1zID0ga2NhbGxvYyhkYXRhLT5r LAo+ICsJCQkJCXNpemVvZihzdHJ1Y3QgaGRjcDJfc3RyZWFtaWRfdHlwZSksCj4gKwkJCQkJR0ZQ X0tFUk5FTCk7Cj4gKwlpZiAoIWRhdGEtPnN0cmVhbXMpIHsKPiArCQlEUk1fRVJST1IoIk91dCBv ZiBNZW1vcnlcbiIpOwo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiArCWRhdGEtPnN0 cmVhbXNbMF0uc3RyZWFtX2lkID0gMDsKPiArCWRhdGEtPnN0cmVhbXNbMF0uc3RyZWFtX3R5cGUg PSBoZGNwLT5jb250ZW50X3R5cGU7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRp YyBib29sIGlzX2hkY3AyX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIHsKPiAgCWlmICghSVNfRU5BQkxFRChDT05GSUdfSU5URUxfTUVJX0hEQ1ApKQo+IEBA IC04NDEsMTEgKzExODQsNDAgQEAgc3RhdGljIGJvb2wgaXNfaGRjcDJfc3VwcG9ydGVkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlJU19LQUJZTEFLRShkZXZfcHJpdikp Owo+ICB9Cj4gIAo+ICt2b2lkIGludGVsX2hkY3BfY29tcG9uZW50X2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICghaXNf aGRjcDJfc3VwcG9ydGVkKGRldl9wcml2KSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJbXV0ZXhfbG9j aygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwlXQVJOX09OKGRldl9wcml2LT5oZGNw X2NvbXBfYWRkZWQpOwo+ICsKPiArCWRldl9wcml2LT5oZGNwX2NvbXBfYWRkZWQgPSB0cnVlOwo+ ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCXJldCA9IGNv bXBvbmVudF9hZGRfdHlwZWQoZGV2X3ByaXYtPmRybS5kZXYsICZpOTE1X2hkY3BfY29tcG9uZW50 X29wcywKPiArCQkJCSAgSTkxNV9DT01QT05FTlRfSERDUCk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ ICsJCURSTV9ERUJVR19LTVMoIkZhaWxlZCBhdCBjb21wb25lbnQgYWRkKCVkKVxuIiwgcmV0KTsK PiArCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCQlkZXZfcHJp di0+aGRjcF9jb21wX2FkZGVkID0gZmFsc2U7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ aGRjcF9jb21wX211dGV4KTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gK30KPiArCj4gIHN0YXRpYyB2 b2lkIGludGVsX2hkY3AyX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7Cj4gKwlp bnQgcmV0Owo+ICsKPiArCXJldCA9IGluaXRpYWxpemVfaGRjcF9wb3J0X2RhdGEoY29ubmVjdG9y KTsKPiArCWlmIChyZXQpIHsKPiArCQlEUk1fREVCVUdfS01TKCJNZWkgaGRjcCBkYXRhIGluaXQg ZmFpbGVkXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gIAo+IC0JLyogVE9ETzogTUVJIGludGVy ZmFjZSBuZWVkcyB0byBiZSBpbml0aWFsaXplZCBoZXJlICovCj4gIAloZGNwLT5oZGNwMl9zdXBw b3J0ZWQgPSB0cnVlOwo+ICB9Cj4gIAo+IEBAIC05MTcsNiArMTI4OSwzMCBAQCBpbnQgaW50ZWxf aGRjcF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCXJldHVy biByZXQ7Cj4gIH0KPiAgCj4gK3ZvaWQgaW50ZWxfaGRjcF9jb21wb25lbnRfZmluaShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCW11dGV4X2xvY2soJmRldl9wcml2 LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsJaWYgKCFkZXZfcHJpdi0+aGRjcF9jb21wX2FkZGVkKSB7 Cj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCQlyZXR1 cm47Cj4gKwl9Cj4gKwo+ICsJZGV2X3ByaXYtPmhkY3BfY29tcF9hZGRlZCA9IGZhbHNlOwo+ICsJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCj4gKwljb21wb25l bnRfZGVsKGRldl9wcml2LT5kcm0uZGV2LCAmaTkxNV9oZGNwX2NvbXBvbmVudF9vcHMpOwo+ICt9 Cj4gKwo+ICt2b2lkIGludGVsX2hkY3BfY2xlYW51cChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpCj4gK3sKPiArCWlmICghY29ubmVjdG9yLT5oZGNwLnNoaW0pCj4gKwkJcmV0dXJu Owo+ICsKPiArCW11dGV4X2xvY2soJmNvbm5lY3Rvci0+aGRjcC5tdXRleCk7Cj4gKwlrZnJlZShj b25uZWN0b3ItPmhkY3AucG9ydF9kYXRhLnN0cmVhbXMpOwo+ICsJbXV0ZXhfdW5sb2NrKCZjb25u ZWN0b3ItPmhkY3AubXV0ZXgpOwo+ICt9Cj4gKwo+ICB2b2lkIGludGVsX2hkY3BfYXRvbWljX2No ZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAkJCSAgICAgc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9zdGF0ZSwKPiAgCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9zdGF0ZSAqbmV3X3N0YXRlKQo+IC0tIAo+IDIuNy40Cj4gCgotLSAKRGFuaWVsIFZldHRl cgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwu Y2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4