From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 3/8] drm/i915/huc: Add HuC fw loading support Date: Wed, 18 Jan 2017 12:00:36 +0200 Message-ID: <871sw04ri3.fsf@intel.com> References: <1484356631-16139-1-git-send-email-anusha.srivatsa@intel.com> <1484356631-16139-4-git-send-email-anusha.srivatsa@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id EB47E6E822 for ; Wed, 18 Jan 2017 10:00:38 +0000 (UTC) In-Reply-To: <1484356631-16139-4-git-send-email-anusha.srivatsa@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Anusha Srivatsa , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gU2F0LCAxNCBKYW4gMjAxNywgQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50 ZWwuY29tPiB3cm90ZToKPiBUaGUgSHVDIGxvYWRpbmcgcHJvY2VzcyBpcyBzaW1pbGFyIHRvIEd1 Qy4gVGhlIGludGVsX3VjX2Z3X2ZldGNoKCkKPiBpcyB1c2VkIGZvciBib3RoIGNhc2VzLgoKUHVz aGVkIHBhdGNoZXMgMS0yLCBzdG9wcGVkIGhlcmUgYmVjYXVzZSB0aGlzIG9uZSBkb2Vzbid0IGFw cGx5IHRvCmRybS1pbnRlbC1uZXh0LXF1ZXVlZC4gVGhhbmtzIGZvciB0aGUgcGF0Y2hlcy4KCkJS LApKYW5pLgoKPgo+IEh1QyBsb2FkaW5nIG5lZWRzIHRvIGJlIGJlZm9yZSBHdUMgbG9hZGluZy4g VGhlIFdPUENNIHNldHRpbmcgbXVzdAo+IGJlIGRvbmUgZWFybHkgYmVmb3JlIGxvYWRpbmcgYW55 IG9mIHRoZW0uCj4KPiB2MjogcmViYXNlZCBvbi10b3Agb2YgZHJtLWludGVsLW5pZ2h0bHkuCj4g ICAgIHJlbW92ZWQgaWYoSEFTX0dVQygpKSBiZWZvcmUgdGhlIGd1YyBjYWxsLiAoRC5Hb3Jkb24p Cj4gICAgIHVwZGF0ZSBodWNfdmVyc2lvbiBudW1iZXIgb2YgZm9ybWF0Lgo+IHYzOiByZWJhc2Vk IHRvIGRybS1pbnRlbC1uaWdodGx5LCBjaGFuZ2VkIHRoZSBmaWxlIG5hbWUgZm9ybWF0IHRvCj4g ICAgIG1hdGNoIHRoZSBvbmUgaW4gdGhlIGh1YyBwYWNrYWdlLgo+ICAgICBDaGFuZ2VkIGRldi0+ ZGV2X3ByaXZhdGUgdG8gdG9faTkxNSgpCj4gdjQ6IG1vdmVkIGZ1bmN0aW9uIGJhY2sgdG8gd2hl cmUgaXQgd2FzLgo+ICAgICBjaGFuZ2Ugd2FpdF9mb3JfYXRvbWljIHRvIHdhaXRfZm9yLgo+IHY1 OiByZWJhc2VkLiBDaGFuZ2VkIHRoZSB5ZWFyIGluIHRoZSBjb3B5cmlnaHQgbWVzc2FnZSB0byBy ZWZsZWN0Cj4gdGhlIHJpZ2h0IHllYXIuQ29ycmVjdCB0aGUgY29tbWVudHMscmVtb3ZlIHRoZSB1 bndhbnRlZCBXQVJOIG1lc3NhZ2UsCj4gcmVwbGFjZSBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5j ZSgpIHdpdGggaTkxNV9nZW1fb2JqZWN0X3B1dCgpLk1ha2UgdGhlCj4gcHJvdG90eXBlcyBpbiBp bnRlbF9odWMuaCBub24tZXh0ZXJuLgo+IHY2OiByZWJhc2VkLiBVcGRhdGUgdGhlIGZpbGUgY29u c3RydWN0aW9uIGRvbmUgYnkgSHVDLiBJdCBpcyBzaW1pbGFyIHRvCj4gR3VDLkFkb3B0ZWQgdGhl IGFwcHJvYWNoIHVzZWQgaW4tCj4gaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Bh dGNoLzEwNDM1NS8gPFR2cnRrbyBVcnN1bGluPgo+IHY3OiBDaGFuZ2UgZGV2IHRvIGRldl9wcml2 IGluIG1hY3JvIGRlZmluaXRpb24uCj4gQ29ycmVjdGVkIGNvbW1lbnRzLgo+IHY4OiByZWJhc2Vk IG9uIHRvcCBvZiBkcm0tdGlwLiBVcGRhdGVkIGZ1bmN0aW9ucyBpbnRlbF9odWNfbG9hZCgpLGlu dGVsX2h1Y19pbml0KCkgYW5kCj4gaW50ZWxfdWNfZndfZmV0Y2goKSB0byBhY2NlcHQgZGV2X3By aXYgaW5zdGVhZCBvZiBkZXYuIE1vdmVkIGNvbnRlbnRzCj4gb2YgaW50ZWxfaHVjLmggdG8gaW50 ZWxfdWMuaAo+IHY5OiBjaGFuZ2UgU0tMX0ZXXyB0byBTS0xfSFVDX0ZXXy4gQWRkIGludGVsXyBw cmVmaXggdG8gZ3VjX3dvcGNtX3NpemUoKS4KPiBSZW1vdmUgdW53YW50ZWQgY2hlY2tzIGluIGlu dGVsX3VjLmguIFJlbmFtZSBodWNfZncgaW4gc3RydWN0IGludGVsX2h1YyB0bwo+IHNpbXBseSBm dyB0byBhdm9pZCByZWR1bmRlbmN5Lgo+IHYxMDogcmViYXNlZC4gQ29ycmVjdCBjb21tZW50cy4g TWFrZSBpbnRlbF9odWNfZmluaSgpIGFjY2VwdCBkZXZfcHJpdiBpbnN0ZWFkIG9mIGRldgo+IGxp a2UgaW50ZWxfaHVjX2luaXQoKSBhbmQgaW50ZWxfaHVjX2xvYWQoKS5Nb3ZlIGRlZmluaXRpb24g dG8gaTkxNV9ndWNfcmVnLmggZnJvbQo+IGludGVsX3VjLmguIENsZWFuIERNQV9DVFJMIGJpdHMg YWZ0ZXIgSHVDIERNQSB0cmFuc2ZlciBpbiBodWNfdWNvZGVfeGZlcigpCj4gaW5zdGVhZCBvZiBn dWNfdWNvZGVfeGZlcigpLiBBZGQgc3VpdGFibGUgV0FSTnMgdG8gZ2l2ZSBleHRyYSBpbmZvLgo+ IHYxMTogcmViYXNlZC4gQWRkIHByb3BlciBiaWFzIGZvciBIdUMgYW5kIG1ha2Ugc3VyZSB0aGVy ZSBhcmUKPiBhc3NlcnRzIG9uIGZhaWx1cmUgYnkgdXNpbmcgZ3VjX2dndHRfb2Zmc2V0X3ZtYSgp LiBJbnRyb2R1Y2UKPiBpbnRlbF9odWMuYyBhbmQgcmVtb3ZlIGludGVsX2h1Y19sb2FkZXIuYyBz aW5jZSBpdCBoYXMgZnVuY3Rpb25zIHRoYXQKPiBkbyBtb3JlIHRoYW4ganVzdCBsb2FkaW5nLkNv cnJlY3QgeWVhciBpbiBjb3B5cmlnaHQuCj4gdjEyOiByZW1vdmUgaW52YWxpZGF0ZXMgdGhhdCBh cmUgbm90IHJlcXVpcmVkIGFueW1vcmUuCj4KPiBDYzogQXJrYWRpdXN6IEhpbGVyIDxhcmthZGl1 c3ouaGlsZXJAaW50ZWwuY29tPgo+IENjOiBNaWNoYWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVj emtvQGludGVsLmNvbT4KPiBUZXN0ZWQtYnk6IFhpYW5nIEhhaWhhbyA8aGFpaGFvLnhpYW5nQGlu dGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRz YUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+ Cj4gU2lnbmVkLW9mZi1ieTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+ Cj4gUmV2aWV3ZWQtYnk6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwu Y29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgfCAg IDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgfCAgIDMgKwo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDIgKwo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaCAgICAgfCAgIDYgKwo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgfCAgIDcgKy0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaHVjLmMgICAgICAgIHwgMjYyICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmggICAgICAgICB8ICAxNCAr Kwo+ICA3IGZpbGVzIGNoYW5nZWQsIDI5MiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMKPgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCj4gaW5kZXggNTE5NjUwOS4uMWVhMDUxYSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlCj4gQEAgLTU3LDYgKzU3LDcgQEAgaTkxNS15ICs9IGk5MTVfY21kX3BhcnNl ci5vIFwKPiAgIyBnZW5lcmFsLXB1cnBvc2UgbWljcm9jb250cm9sbGVyIChHdUMpIHN1cHBvcnQK PiAgaTkxNS15ICs9IGludGVsX3VjLm8gXAo+ICAJICBpbnRlbF9ndWNfbG9hZGVyLm8gXAo+ICsJ ICBpbnRlbF9odWMubyBcCj4gIAkgIGk5MTVfZ3VjX3N1Ym1pc3Npb24ubwo+ICAKPiAgIyBhdXRv Z2VuZXJhdGVkIG51bGwgcmVuZGVyIHN0YXRlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5k ZXggNGU1ZWE1OC4uZDdhMGI0OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC01 OTksNiArNTk5LDcgQEAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gY2xlYW51cF9pcnE7Cj4gIAo+ ICsJaW50ZWxfaHVjX2luaXQoZGV2X3ByaXYpOwo+ICAJaW50ZWxfZ3VjX2luaXQoZGV2X3ByaXYp Owo+ICAKPiAgCXJldCA9IGk5MTVfZ2VtX2luaXQoZGV2X3ByaXYpOwo+IEBAIC02MjcsNiArNjI4 LDcgQEAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gIAlpOTE1X2dlbV9maW5pKGRldl9wcml2KTsKPiAgY2xlYW51cF9pcnE6Cj4gIAlp bnRlbF9ndWNfZmluaShkZXZfcHJpdik7Cj4gKwlpbnRlbF9odWNfZmluaShkZXZfcHJpdik7Cj4g IAlkcm1faXJxX3VuaW5zdGFsbChkZXYpOwo+ICAJaW50ZWxfdGVhcmRvd25fZ21idXMoZGV2X3By aXYpOwo+ICBjbGVhbnVwX2NzcjoKPiBAQCAtMTMxNCw2ICsxMzE2LDcgQEAgdm9pZCBpOTE1X2Ry aXZlcl91bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWRyYWluX3dvcmtxdWV1ZShk ZXZfcHJpdi0+d3EpOwo+ICAKPiAgCWludGVsX2d1Y19maW5pKGRldl9wcml2KTsKPiArCWludGVs X2h1Y19maW5pKGRldl9wcml2KTsKPiAgCWk5MTVfZ2VtX2ZpbmkoZGV2X3ByaXYpOwo+ICAJaW50 ZWxfZmJjX2NsZWFudXBfY2ZiKGRldl9wcml2KTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gaW5kZXggZjg2MTQxOC4uZWQ4NDVhOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ IEBAIC0yMDc0LDYgKzIwNzQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAo+ICAJ c3RydWN0IGludGVsX2d2dCAqZ3Z0Owo+ICAKPiArCXN0cnVjdCBpbnRlbF9odWMgaHVjOwo+ICAJ c3RydWN0IGludGVsX2d1YyBndWM7Cj4gIAo+ICAJc3RydWN0IGludGVsX2NzciBjc3I7Cj4gQEAg LTI4NDgsNiArMjg0OSw3IEBAIGludGVsX2luZm8oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAjZGVmaW5lIEhBU19HVUMoZGV2X3ByaXYpCSgoZGV2X3ByaXYpLT5p bmZvLmhhc19ndWMpCj4gICNkZWZpbmUgSEFTX0dVQ19VQ09ERShkZXZfcHJpdikJKEhBU19HVUMo ZGV2X3ByaXYpKQo+ICAjZGVmaW5lIEhBU19HVUNfU0NIRUQoZGV2X3ByaXYpCShIQVNfR1VDKGRl dl9wcml2KSkKPiArI2RlZmluZSBIQVNfSFVDX1VDT0RFKGRldl9wcml2KQkoSEFTX0dVQyhkZXZf cHJpdikpCj4gIAo+ICAjZGVmaW5lIEhBU19SRVNPVVJDRV9TVFJFQU1FUihkZXZfcHJpdikgKChk ZXZfcHJpdiktPmluZm8uaGFzX3Jlc291cmNlX3N0cmVhbWVyKQo+ICAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2d1Y19yZWcuaAo+IGluZGV4IDZhMGFkYWYuLjM1Y2Y5OTEgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+IEBAIC02MSwxMiArNjEsMTggQEAKPiAgI2RlZmluZSAg IERNQV9BRERSRVNTX1NQQUNFX0dUVAkJICAoOCA8PCAxNikKPiAgI2RlZmluZSBETUFfQ09QWV9T SVpFCQkJX01NSU8oMHhjMzEwKQo+ICAjZGVmaW5lIERNQV9DVFJMCQkJX01NSU8oMHhjMzE0KQo+ ICsjZGVmaW5lICAgSFVDX1VLRVJORUwJCQkgICgxPDw5KQo+ICAjZGVmaW5lICAgVU9TX01PVkUJ CQkgICgxPDw0KQo+ICAjZGVmaW5lICAgU1RBUlRfRE1BCQkJICAoMTw8MCkKPiAgI2RlZmluZSBE TUFfR1VDX1dPUENNX09GRlNFVAkJX01NSU8oMHhjMzQwKQo+ICsjZGVmaW5lICAgSFVDX0xPQURJ TkdfQUdFTlRfVkNSCQkgICgwPDwxKQo+ICsjZGVmaW5lICAgSFVDX0xPQURJTkdfQUdFTlRfR1VD CQkgICgxPDwxKQo+ICAjZGVmaW5lICAgR1VDX1dPUENNX09GRlNFVF9WQUxVRQkgIDB4ODAwMDAJ LyogNTEyS0IgKi8KPiAgI2RlZmluZSBHVUNfTUFYX0lETEVfQ09VTlQJCV9NTUlPKDB4QzNFNCkK PiAgCj4gKyNkZWZpbmUgSFVDX1NUQVRVUzIgICAgICAgICAgICAgX01NSU8oMHhEM0IwKQo+ICsj ZGVmaW5lICAgSFVDX0ZXX1ZFUklGSUVEICAgICAgICgxPDw3KQo+ICsKPiAgLyogRGVmaW5lcyBX T1BDTSBzcGFjZSBhdmFpbGFibGUgdG8gR3VDIGZpcm13YXJlICovCj4gICNkZWZpbmUgR1VDX1dP UENNX1NJWkUJCQlfTU1JTygweGMwNTApCj4gIC8qIEd1QyBhZGRyZXNzZXMgYmVsb3cgR1VDX1dP UENNX1RPUCBkb24ndCBtYXAgdGhyb3VnaCB0aGUgR1RUICovCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19sb2FkZXIuYwo+IGluZGV4IDMwODAxZWUuLjUyNzU1OGYgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gQEAgLTMzNCw3ICszMzQsNyBAQCBz dGF0aWMgaW50IGd1Y191Y29kZV94ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC1zdGF0aWMgdTMyIGd1Y193b3BjbV9z aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArdTMyIGludGVsX2d1Y193 b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJdTMy IHdvcGNtX3NpemUgPSBHVUNfV09QQ01fVE9QOwo+ICAKPiBAQCAtMzcwLDcgKzM3MCw3IEBAIHN0 YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwp Owo+ICAKPiAgCS8qIGluaXQgV09QQ00gKi8KPiAtCUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUs IGd1Y193b3BjbV9zaXplKGRldl9wcml2KSk7Cj4gKwlJOTE1X1dSSVRFKEdVQ19XT1BDTV9TSVpF LCBpbnRlbF9ndWNfd29wY21fc2l6ZShkZXZfcHJpdikpOwo+ICAJSTkxNV9XUklURShETUFfR1VD X1dPUENNX09GRlNFVCwgR1VDX1dPUENNX09GRlNFVF9WQUxVRSk7Cj4gIAo+ICAJLyogRW5hYmxl IE1JQSBjYWNoaW5nLiBHdUMgY2xvY2sgZ2F0aW5nIGlzIGRpc2FibGVkLiAqLwo+IEBAIC01MTIs NiArNTEyLDcgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAkJaWYgKGVycikKPiAgCQkJZ290byBmYWlsOwo+ICAKPiArCQlpbnRlbF9o dWNfbG9hZChkZXZfcHJpdik7Cj4gIAkJZXJyID0gZ3VjX3Vjb2RlX3hmZXIoZGV2X3ByaXYpOwo+ ICAJCWlmICghZXJyKQo+ICAJCQlicmVhazsKPiBAQCAtNjYwLDcgKzY2MSw3IEBAIHZvaWQgaW50 ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXNp emUgPSB1Y19mdy0+aGVhZGVyX3NpemUgKyB1Y19mdy0+dWNvZGVfc2l6ZTsKPiAgCj4gIAkJLyog VG9wIDMyayBvZiBXT1BDTSBpcyByZXNlcnZlZCAoOEsgc3RhY2sgKyAyNGsgUkM2IGNvbnRleHQp LiAqLwo+IC0JCWlmIChzaXplID4gZ3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKSB7Cj4gKwkJaWYg KHNpemUgPiBpbnRlbF9ndWNfd29wY21fc2l6ZShkZXZfcHJpdikpIHsKPiAgCQkJRFJNX0VSUk9S KCJGaXJtd2FyZSBpcyB0b28gbGFyZ2UgdG8gZml0IGluIFdPUENNXG4iKTsKPiAgCQkJZ290byBm YWlsOwo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYwo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMC4uNTc0NzFmMgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYwo+IEBAIC0wLDAgKzEsMjYyIEBACj4gKy8qCj4g KyAqIENvcHlyaWdodCDCqSAyMDE2LTIwMTcgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0 aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh dGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBD T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF Ugo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElO IFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICovCj4gKyNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5o Pgo+ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1ZGUgImludGVsX3VjLmgiCj4gKwo+ ICsvKioKPiArICogRE9DOiBIdUMgRmlybXdhcmUKPiArICoKPiArICogTW90aXZhdGlvbjoKPiAr ICogR0VOOSBpbnRyb2R1Y2VzIGEgbmV3IGRlZGljYXRlZCBmaXJtd2FyZSBmb3IgdXNhZ2UgaW4g bWVkaWEgSEVWQyAoSGlnaAo+ICsgKiBFZmZpY2llbmN5IFZpZGVvIENvZGluZykgb3BlcmF0aW9u cy4gVXNlcnNwYWNlIGNhbiB1c2UgdGhlIGZpcm13YXJlCj4gKyAqIGNhcGFiaWxpdGllcyBieSBh ZGRpbmcgSHVDIHNwZWNpZmljIGNvbW1hbmRzIHRvIGJhdGNoIGJ1ZmZlcnMuCj4gKyAqCj4gKyAq IEltcGxlbWVudGF0aW9uOgo+ICsgKiBUaGUgc2FtZSBmaXJtd2FyZSBsb2FkZXIgaXMgdXNlZCBh cyB0aGUgR3VDLiBIb3dldmVyLCB0aGUgYWN0dWFsCj4gKyAqIGxvYWRpbmcgdG8gSFcgaXMgZGVm ZXJyZWQgdW50aWwgR0VNIGluaXRpYWxpemF0aW9uIGlzIGRvbmUuCj4gKyAqCj4gKyAqIE5vdGUg dGhhdCBIdUMgZmlybXdhcmUgbG9hZGluZyBtdXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBsb2FkaW5n Lgo+ICsgKi8KPiArCj4gKyNkZWZpbmUgU0tMX0hVQ19GV19NQUpPUiAwMQo+ICsjZGVmaW5lIFNL TF9IVUNfRldfTUlOT1IgMDcKPiArI2RlZmluZSBTS0xfQkxEX05VTSAxMzk4Cj4gKwo+ICsjZGVm aW5lIEhVQ19GV19QQVRIKHBsYXRmb3JtLCBtYWpvciwgbWlub3IsIGJsZF9udW0pIFwKPiArCSJp OTE1LyIgX19zdHJpbmdpZnkocGxhdGZvcm0pICJfaHVjX3ZlciIgX19zdHJpbmdpZnkobWFqb3Ip ICJfIiBcCj4gKwlfX3N0cmluZ2lmeShtaW5vcikgIl8iIF9fc3RyaW5naWZ5KGJsZF9udW0pICIu YmluIgo+ICsKPiArI2RlZmluZSBJOTE1X1NLTF9IVUNfVUNPREUgSFVDX0ZXX1BBVEgoc2tsLCBT S0xfSFVDX0ZXX01BSk9SLCBcCj4gKwlTS0xfSFVDX0ZXX01JTk9SLCBTS0xfQkxEX05VTSkKPiAr TU9EVUxFX0ZJUk1XQVJFKEk5MTVfU0tMX0hVQ19VQ09ERSk7Cj4gKwo+ICsvKioKPiArICogaHVj X3Vjb2RlX3hmZXIoKSAtIERNQSdzIHRoZSBmaXJtd2FyZQo+ICsgKiBAZGV2X3ByaXY6IHRoZSBk cm1faTkxNV9wcml2YXRlIGRldmljZQo+ICsgKgo+ICsgKiBUcmFuc2ZlciB0aGUgZmlybXdhcmUg aW1hZ2UgdG8gUkFNIGZvciBleGVjdXRpb24gYnkgdGhlIG1pY3JvY29udHJvbGxlci4KPiArICoK PiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG9uIGZhaWx1cmUKPiArICovCj4g K3N0YXRpYyBpbnQgaHVjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVj LmZ3Owo+ICsJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gKwl1bnNpZ25lZCBsb25nIG9mZnNldCA9 IDA7Cj4gKwl1MzIgc2l6ZTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gaTkxNV9nZW1fb2Jq ZWN0X3NldF90b19ndHRfZG9tYWluKGh1Y19mdy0+b2JqLCBmYWxzZSk7Cj4gKwlpZiAocmV0KSB7 Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWlsZWQgJWRcbiIsIHJldCk7Cj4g KwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9w aW4oaHVjX2Z3LT5vYmosIE5VTEwsIDAsIDAsCj4gKwkJCQlQSU5fT0ZGU0VUX0JJQVMgfCBHVUNf V09QQ01fVE9QKTsKPiArCWlmIChJU19FUlIodm1hKSkgewo+ICsJCURSTV9ERUJVR19EUklWRVIo InBpbiBmYWlsZWQgJWRcbiIsIChpbnQpUFRSX0VSUih2bWEpKTsKPiArCQlyZXR1cm4gUFRSX0VS Uih2bWEpOwo+ICsJfQo+ICsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2 LCBGT1JDRVdBS0VfQUxMKTsKPiArCj4gKwkvKiBpbml0IFdPUENNICovCj4gKwlJOTE1X1dSSVRF KEdVQ19XT1BDTV9TSVpFLCBpbnRlbF9ndWNfd29wY21fc2l6ZShkZXZfcHJpdikpOwo+ICsJSTkx NV9XUklURShETUFfR1VDX1dPUENNX09GRlNFVCwgR1VDX1dPUENNX09GRlNFVF9WQUxVRSB8Cj4g KwkJCUhVQ19MT0FESU5HX0FHRU5UX0dVQyk7Cj4gKwo+ICsJLyogU2V0IHRoZSBzb3VyY2UgYWRk cmVzcyBmb3IgdGhlIHVDb2RlICovCj4gKwlvZmZzZXQgPSBndWNfZ2d0dF9vZmZzZXQodm1hKSAr IGh1Y19mdy0+aGVhZGVyX29mZnNldDsKPiArCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9MT1csIGxv d2VyXzMyX2JpdHMob2Zmc2V0KSk7Cj4gKwlJOTE1X1dSSVRFKERNQV9BRERSXzBfSElHSCwgdXBw ZXJfMzJfYml0cyhvZmZzZXQpICYgMHhGRkZGKTsKPiArCj4gKwkvKiBIYXJkd2FyZSBkb2Vzbid0 IGxvb2sgYXQgZGVzdGluYXRpb24gYWRkcmVzcyBmb3IgSHVDLiBTZXQgaXQgdG8gMCwKPiArCSAq IGJ1dCBzdGlsbCBwcm9ncmFtIHRoZSBjb3JyZWN0IGFkZHJlc3Mgc3BhY2UuCj4gKwkgKi8KPiAr CUk5MTVfV1JJVEUoRE1BX0FERFJfMV9MT1csIDApOwo+ICsJSTkxNV9XUklURShETUFfQUREUl8x X0hJR0gsIERNQV9BRERSRVNTX1NQQUNFX1dPUENNKTsKPiArCj4gKwlzaXplID0gaHVjX2Z3LT5o ZWFkZXJfc2l6ZSArIGh1Y19mdy0+dWNvZGVfc2l6ZTsKPiArCUk5MTVfV1JJVEUoRE1BX0NPUFlf U0laRSwgc2l6ZSk7Cj4gKwo+ICsJLyogU3RhcnQgdGhlIERNQSAqLwo+ICsJSTkxNV9XUklURShE TUFfQ1RSTCwgX01BU0tFRF9CSVRfRU5BQkxFKEhVQ19VS0VSTkVMIHwgU1RBUlRfRE1BKSk7Cj4g Kwo+ICsJLyogV2FpdCBmb3IgRE1BIHRvIGZpbmlzaCAqLwo+ICsJcmV0ID0gd2FpdF9mb3IoKEk5 MTVfUkVBRChETUFfQ1RSTCkgJiBTVEFSVF9ETUEpID09IDAsIDEwMCk7Cj4gKwo+ICsJRFJNX0RF QlVHX0RSSVZFUigiSHVDIERNQSB0cmFuc2ZlciB3YWl0IG92ZXIgd2l0aCByZXQgJWRcbiIsIHJl dCk7Cj4gKwo+ICsJLyogRGlzYWJsZSB0aGUgYml0cyBvbmNlIERNQSBpcyBvdmVyICovCj4gKwlJ OTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9ESVNBQkxFKEhVQ19VS0VSTkVMKSk7Cj4g Kwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwp Owo+ICsKPiArCS8qCj4gKwkgKiBXZSBrZWVwIHRoZSBvYmplY3QgcGFnZXMgZm9yIHJldXNlIGR1 cmluZyByZXN1bWUuIEJ1dCB3ZSBjYW4gdW5waW4gaXQKPiArCSAqIG5vdyB0aGF0IERNQSBoYXMg Y29tcGxldGVkLCBzbyBpdCBkb2Vzbid0IGNvbnRpbnVlIHRvIHRha2UgdXAgc3BhY2UuCj4gKwkg Ki8KPiArCWk5MTVfdm1hX3VucGluKHZtYSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsK PiArLyoqCj4gKyAqIGludGVsX2h1Y19pbml0KCkgLSBpbml0aWF0ZSBIdUMgZmlybXdhcmUgbG9h ZGluZyByZXF1ZXN0Cj4gKyAqIEBkZXZfcHJpdjogdGhlIGRybV9pOTE1X3ByaXZhdGUgZGV2aWNl Cj4gKyAqCj4gKyAqIENhbGxlZCBlYXJseSBkdXJpbmcgZHJpdmVyIGxvYWQsIGJ1dCBhZnRlciBH RU0gaXMgaW5pdGlhbGlzZWQuIFRoZSBsb2FkaW5nCj4gKyAqIHdpbGwgY29udGludWUgb25seSB3 aGVuIGRyaXZlciBleHBsaWNpdGx5IHNwZWNpZnkgZmlybXdhcmUgbmFtZSBhbmQgdmVyc2lvbi4K PiArICogQWxsIG90aGVyIGNhc2VzIGFyZSBjb25zaWRlcmVkIGFzIElOVEVMX1VDX0ZJUk1XQVJF X05PTkUgZWl0aGVyIGJlY2F1c2UgSFcKPiArICogaXMgbm90IGNhcGFibGUgb3IgZHJpdmVyIHll dCBzdXBwb3J0IGl0LiBBbmQgdGhlcmUgd2lsbCBiZSBubyBlcnJvciBtZXNzYWdlCj4gKyAqIGZv ciBJTlRFTF9VQ19GSVJNV0FSRV9OT05FIGNhc2VzLgo+ICsgKgo+ICsgKiBUaGUgRE1BLWNvcHlp bmcgdG8gSFcgaXMgZG9uZSBsYXRlciB3aGVuIGludGVsX2h1Y19sb2FkKCkgaXMgY2FsbGVkLgo+ ICsgKi8KPiArdm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9odWMgKmh1YyA9ICZkZXZfcHJpdi0+aHVjOwo+ ICsJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmaHVjLT5mdzsKPiArCWNvbnN0IGNoYXIg KmZ3X3BhdGggPSBOVUxMOwo+ICsKPiArCWh1Y19mdy0+cGF0aCA9IE5VTEw7Cj4gKwlodWNfZnct PmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7Cj4gKwlodWNfZnctPmxvYWRf c3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9ORTsKPiArCWh1Y19mdy0+ZncgPSBJTlRFTF9V Q19GV19UWVBFX0hVQzsKPiArCj4gKwlpZiAoIUhBU19IVUNfVUNPREUoZGV2X3ByaXYpKQo+ICsJ CXJldHVybjsKPiArCj4gKwlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpIHsKPiArCQlmd19wYXRo ID0gSTkxNV9TS0xfSFVDX1VDT0RFOwo+ICsJCWh1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IFNL TF9IVUNfRldfTUFKT1I7Cj4gKwkJaHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gU0tMX0hVQ19G V19NSU5PUjsKPiArCX0KPiArCj4gKwlodWNfZnctPnBhdGggPSBmd19wYXRoOwo+ICsJaHVjX2Z3 LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HOwo+ICsKPiArCURSTV9E RUJVR19EUklWRVIoIkh1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBmd19wYXRoKTsK PiArCj4gKwlXQVJOKGh1Y19mdy0+cGF0aCA9PSBOVUxMLCAiSHVDIHByZXNlbnQgYnV0IG5vIGZ3 IHBhdGhcbiIpOwo+ICsKPiArCWludGVsX3VjX2Z3X2ZldGNoKGRldl9wcml2LCBodWNfZncpOwo+ ICt9Cj4gKwo+ICsvKioKPiArICogaW50ZWxfaHVjX2xvYWQoKSAtIGxvYWQgSHVDIHVDb2RlIHRv IGRldmljZQo+ICsgKiBAZGV2X3ByaXY6IHRoZSBkcm1faTkxNV9wcml2YXRlIGRldmljZQo+ICsg Kgo+ICsgKiBDYWxsZWQgZnJvbSBndWNfc2V0dXAoKSBkdXJpbmcgZHJpdmVyIGxvYWRpbmcgYW5k IGFsc28gYWZ0ZXIgYSBHUFUgcmVzZXQuCj4gKyAqIEJlIG5vdGUgdGhhdCBIdUMgbG9hZGluZyBt dXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBsb2FkaW5nLgo+ICsgKgo+ICsgKiBUaGUgZmlybXdhcmUg aW1hZ2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGZldGNoZWQgaW50byBtZW1vcnkgYnkgdGhl Cj4gKyAqIGVhcmxpZXIgY2FsbCB0byBpbnRlbF9odWNfaW5pdCgpLCBzbyBoZXJlIHdlIG5lZWQg b25seSBjaGVjayB0aGF0Cj4gKyAqIGlzIHN1Y2NlZWRlZCwgYW5kIHRoZW4gdHJhbnNmZXIgdGhl IGltYWdlIHRvIHRoZSBoL3cuCj4gKyAqCj4gKyAqIFJldHVybjoJbm9uLXplcm8gY29kZSBvbiBl cnJvcgo+ICsgKi8KPiAraW50IGludGVsX2h1Y19sb2FkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiArewo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3By aXYtPmh1Yy5mdzsKPiArCWludCBlcnI7Cj4gKwo+ICsJaWYgKGh1Y19mdy0+ZmV0Y2hfc3RhdHVz ID09IElOVEVMX1VDX0ZJUk1XQVJFX05PTkUpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJRFJNX0RF QlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPiArCQlodWNf ZnctPnBhdGgsCj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0 dXMpLAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsK PiArCj4gKwlpZiAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfU1VD Q0VTUyAmJgo+ICsJICAgIGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVf RkFJTCkKPiArCQlyZXR1cm4gLUVOT0VYRUM7Cj4gKwo+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9 IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4gKwo+ICsJc3dpdGNoIChodWNfZnctPmZldGNo X3N0YXR1cykgewo+ICsJY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOgo+ICsJCS8qIHNvbWV0 aGluZyB3ZW50IHdyb25nIDooICovCj4gKwkJZXJyID0gLUVJTzsKPiArCQlnb3RvIGZhaWw7Cj4g Kwo+ICsJY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FOgo+ICsJY2FzZSBJTlRFTF9VQ19GSVJN V0FSRV9QRU5ESU5HOgo+ICsJZGVmYXVsdDoKPiArCQkvKiAiY2FuJ3QgaGFwcGVuIiAqLwo+ICsJ CVdBUk5fT05DRSgxLCAiSHVDIGZ3ICVzIGludmFsaWQgZmV0Y2hfc3RhdHVzICVzIFslZF1cbiIs Cj4gKwkJCWh1Y19mdy0+cGF0aCwKPiArCQkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3 LT5mZXRjaF9zdGF0dXMpLAo+ICsJCQlodWNfZnctPmZldGNoX3N0YXR1cyk7Cj4gKwkJZXJyID0g LUVOWElPOwo+ICsJCWdvdG8gZmFpbDsKPiArCj4gKwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX1NV Q0NFU1M6Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJZXJyID0gaHVjX3Vjb2RlX3hmZXIoZGV2 X3ByaXYpOwo+ICsJaWYgKGVycikKPiArCQlnb3RvIGZhaWw7Cj4gKwo+ICsJaHVjX2Z3LT5sb2Fk X3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1M7Cj4gKwo+ICsJRFJNX0RFQlVHX0RS SVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPiArCQlodWNfZnctPnBh dGgsCj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+ ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsKPiArCj4g KwlyZXR1cm4gMDsKPiArCj4gK2ZhaWw6Cj4gKwlpZiAoaHVjX2Z3LT5sb2FkX3N0YXR1cyA9PSBJ TlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HKQo+ICsJCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRF TF9VQ19GSVJNV0FSRV9GQUlMOwo+ICsKPiArCURSTV9FUlJPUigiRmFpbGVkIHRvIGNvbXBsZXRl IEh1QyB1Q29kZSBsb2FkIHdpdGggcmV0ICVkXG4iLCBlcnIpOwo+ICsKPiArCXJldHVybiBlcnI7 Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9odWNfZmluaSgpIC0gY2xlYW4gdXAgcmVzb3Vy Y2VzIGFsbG9jYXRlZCBmb3IgSHVDCj4gKyAqIEBkZXZfcHJpdjogdGhlIGRybV9pOTE1X3ByaXZh dGUgZGV2aWNlCj4gKyAqCj4gKyAqIENsZWFucyB1cCBieSByZWxlYXNpbmcgdGhlIGh1YyBmaXJt d2FyZSBHRU0gb2JqLgo+ICsgKi8KPiArdm9pZCBpbnRlbF9odWNfZmluaShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3 ID0gJmRldl9wcml2LT5odWMuZnc7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+ICsJaWYgKGh1Y19mdy0+b2JqKQo+ICsJCWk5MTVfZ2VtX29iamVjdF9w dXQoaHVjX2Z3LT5vYmopOwo+ICsJaHVjX2Z3LT5vYmogPSBOVUxMOwo+ICsJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwo+ICsJaHVjX2Z3LT5mZXRjaF9zdGF0 dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FOwo+ICt9Cj4gKwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dWMuaAo+IGluZGV4IGMyYzM5MTkuLjY1YzdkNmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdWMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Vj LmgKPiBAQCAtMTc2LDYgKzE3NiwxMyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjIHsKPiAgCXN0cnVjdCBt dXRleCBzZW5kX211dGV4Owo+ICB9Owo+ICAKPiArc3RydWN0IGludGVsX2h1YyB7Cj4gKwkvKiBH ZW5lcmljIHVDIGZpcm13YXJlIG1hbmFnZW1lbnQgKi8KPiArCXN0cnVjdCBpbnRlbF91Y19mdyBm dzsKPiArCj4gKwkvKiBIdUMtc3BlY2lmaWMgYWRkaXRpb25zICovCj4gK307Cj4gKwo+ICAvKiBp bnRlbF91Yy5jICovCj4gIHZvaWQgaW50ZWxfdWNfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICBpbnQgaW50ZWxfZ3VjX3NlbmQoc3RydWN0IGludGVsX2d1 YyAqZ3VjLCBjb25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbik7Cj4gQEAgLTE5MSw2ICsxOTgsOCBA QCBleHRlcm4gdm9pZCBpbnRlbF9ndWNfZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ICBleHRlcm4gY29uc3QgY2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51 bSBpbnRlbF91Y19md19zdGF0dXMgc3RhdHVzKTsKPiAgZXh0ZXJuIGludCBpbnRlbF9ndWNfc3Vz cGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICBleHRlcm4gaW50IGlu dGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9p ZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g KwlzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KTsKPiAgdTMyIGludGVsX2d1Y193b3BjbV9zaXpl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIAo+ICAvKiBpOTE1X2d1Y19z dWJtaXNzaW9uLmMgKi8KPiBAQCAtMjE0LDQgKzIyMyw5IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGd1 Y19nZ3R0X29mZnNldChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgCXJldHVybiBvZmZzZXQ7Cj4g IH0KPiAgCj4gKy8qIGludGVsX2h1Yy5jICovCj4gK3ZvaWQgaW50ZWxfaHVjX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9pZCBpbnRlbF9odWNfZmluaShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAgKmRldl9wcml2KTsKPiAraW50IGludGVsX2h1Y19sb2FkKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gKwo+ICAjZW5kaWYKCi0tIApKYW5p IE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==