From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/2] drm/i915: Render decompression support for Gen9 and above Date: Fri, 18 Mar 2016 19:12:08 +0200 Message-ID: <20160318171208.GQ4329@intel.com> References: <1458319853-22631-1-git-send-email-vandana.kannan@intel.com> <1458319853-22631-2-git-send-email-vandana.kannan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 52C216EB38 for ; Fri, 18 Mar 2016 17:12:11 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1458319853-22631-2-git-send-email-vandana.kannan@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Vandana Kannan Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBNYXIgMTgsIDIwMTYgYXQgMTA6MjA6NTNQTSArMDUzMCwgVmFuZGFuYSBLYW5uYW4g d3JvdGU6Cj4gVGhpcyBwYXRjaCBpbmNsdWRlcyBlbmFibGluZyByZW5kZXIgZGVjb21wcmVzc2lv biAoUkMpIGFmdGVyIGNoZWNraW5nIGFsbCB0aGUKPiByZXF1aXJlbWVudHMgKGZvcm1hdCwgdGls aW5nLCByb3RhdGlvbiBldGMuKS4gQWxvbmcgd2l0aCB0aGlzLCB0aGUgV0FzCj4gbWVudGlvbmVk IGluIEJTcGVjIFdvcmthcm91bmQgcGFnZSBoYXZlIGJlZW4gaW1wbGVtZW50ZWQuCj4gCj4gVE9E TzoKPiAxLiBEaXNhYmxlIHN0ZXJlbyAzRCB3aGVuIHJlbmRlciBkZWNvbXAgaXMgZW5hYmxlZCAo Yml0IDc6NikKPiAyLiBSZW5kZXIgZGVjb21wcmVzc2lvbiBtdXN0IG5vdCBiZSB1c2VkIGluIFZU ZCBwYXNzLXRocm91Z2ggbW9kZQo+IDMuIFByb2dyYW0gaGFzaGluZyBzZWxlY3QgQ0hJQ0tFTl9N SVNDMSBiaXQgMTUKPiA0LiBGb3IgR2VuMTAsIGFkZCBzdXBwb3J0IGZvciBSR0IgMTAxMDEwMgo+ IDUuIFJDLUZCQyB3b3JrYXJvdW5kCj4gNi4gUkMgd2F0ZXJtYXJrIGNhbGN1bGF0aW9uCj4gCj4g VGhlIHJlYXNvbiBmb3IgdXNpbmcgYSBwbGFuZSBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGZiIG1vZGlm aWVyOi0KPiBJbiBBbmRyb2lkLCBPR0wgcGFzc2VzIGEgcmVuZGVyIGNvbXByZXNzZWQgYnVmZmVy IHRvIGhhcmR3YXJlIGNvbXBvc2VyIChIV0MpLAo+IHdoaWNoIHdvdWxkIHRoZW4gcmVxdWVzdCBh IGZsaXAgb24gdGhhdCBidWZmZXIgYWZ0ZXIgY2hlY2tpbmcgaWYgdGhlIHRhcmdldAo+IGNhbiBz dXBwb3J0IHJlbmRlciBjb21wcmVzc2VkIGJ1ZmZlci4gRm9yIGV4YW1wbGUsIG9ubHkgcGxhbmVz IDEgYW5kIDIgb24KPiBwaXBlcyAxIGFuZCAyIGNhbiBzdXBwb3J0IFJDLiBJbiBjYXNlIHRoZSB0 YXJnZXQgY2Fubm90IHN1cHBvcnQgaXQsIEhXQyB3aWxsCj4gcmV2ZXJ0IGJhY2sgdG8gT0dMIHJl cXVlc3RpbmcgZm9yIHVuY29tcHJlc3NlZCBidWZmZXIuCj4gSGVyZSwKPiBpZiBwbGFuZSBwcm9w ZXJ0eSBpcyB1c2VkLCBPR0wgd291bGQgc2VuZCBiYWNrIHRoZSBidWZmZXIgKHNhbWUgSUQpIGFm dGVyCj4gZGVjb21wcmVzc2lvbiwgbWFya2VkIHVuY29tcHJlc3NlZC4gSWYgZmIgbW9kaWZpZXIg d2FzIHVzZWQsIGEgZGlmZmVyZW50Cj4gdmVyc2lvbiBvZiB0aGUgYnVmZmVyIHdvdWxkIGhhdmUg dG8gYmUgbWFpbnRhaW5lZCBmb3IgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyAtCj4gaW4gdGhlIHNp bXBsZSBjYXNlIG9mIHJlbmRlciBjb21wcmVzc2VkIHZzIHVuY29tcHJlc3NlZCBidWZmZXIsIHRo ZXJlIHdvdWxkIGJlCj4gMiBmYnMgd2l0aCAyIElEcy4gU28sIGluIHRoaXMgY2FzZSwgT0dMIHdv dWxkIGdpdmUgYSByZWZlcmVuY2UgdG8gYSBmYiB3aXRoIGEKPiBkaWZmZXJlbnQgSUQuCj4gVG8g YXZvaWQgdGhlIGRpZmZpY3VsdHkgb2Yga2VlcGluZyB0cmFjayBvZiBtdWx0aXBsZSBmYnMgYW5k IHRoZSBzdWJzZXF1ZW50Cj4gY29tcGxleGl0eSBpbiBkZWJ1ZywgdGhlIGFyY2hpdGVjdHVyZSBm b3J1bSBkZWNpZGVkIHRvIGdvIGFoZWFkIHdpdGggYSBwbGFuZQo+IHByb3BlcnR5IGZvciBSQy4K PiAKPiBbTWF5dXJlc2hdIEFkZGVkIHRoZSBwbGFuZSBjaGVjayBpbiBza2xfY2hlY2tfY29tcHJl c3Npb24oKQo+IAo+IFNpZ25lZC1vZmYtYnk6IFZhbmRhbmEgS2FubmFuIDx2YW5kYW5hLmthbm5h bkBpbnRlbC5jb20+Cj4gQ2M6IFNtaXRoLCBHYXJ5IEsgPGdhcnkuay5zbWl0aEBpbnRlbC5jb20+ Cj4gQ2M6IERhbmllbCBTdG9uZSA8ZGFuaWVsQGZvb2lzaGJhci5vcmc+Cj4gQ2M6IERhbmllbCBW ZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oICAgICAgICAgICB8ICAyMiArKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0 b21pY19wbGFuZS5jIHwgIDI0ICsrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jICAgICAgfCAyMDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgIHwgIDI0ICsrKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgICAgICAgfCAgNDIgKysrKystCj4gIDYgZmls ZXMgY2hhbmdlZCwgMzA1IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGYzN2FjMTIuLmJiNDdlZTEgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPiBAQCAtMTkyOSw2ICsxOTI5LDcgQEAgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgewo+ICAKPiAgCXN0cnVjdCBkcm1fcHJvcGVydHkgKmJyb2FkY2FzdF9yZ2JfcHJvcGVy dHk7Cj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpmb3JjZV9hdWRpb19wcm9wZXJ0eTsKPiArCXN0 cnVjdCBkcm1fcHJvcGVydHkgKnJlbmRlcl9jb21wX3Byb3BlcnR5Owo+ICAKPiAgCS8qIGhkYS9p OTE1IGF1ZGlvIGNvbXBvbmVudCAqLwo+ICAJc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50ICph dWRpb19jb21wb25lbnQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggN2RmYzQwMC4u NzczYzM3ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC01NzU2LDYgKzU3NTYs MjggQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gIAkJCV9JRChpZCwgX1BTX0VDQ19T VEFUXzFBLCBfUFNfRUNDX1NUQVRfMkEpLCAgIFwKPiAgCQkJX0lEKGlkLCBfUFNfRUNDX1NUQVRf MUIsIF9QU19FQ0NfU1RBVF8yQikpCj4gIAo+ICsjZGVmaW5lIFBMQU5FX0FVWF9ESVNUXzFfQQkJ MHg3MDFjMAo+ICsjZGVmaW5lIFBMQU5FX0FVWF9ESVNUXzJfQQkJMHg3MDJjMAo+ICsjZGVmaW5l IFBMQU5FX0FVWF9ESVNUXzFfQgkJMHg3MTFjMAo+ICsjZGVmaW5lIFBMQU5FX0FVWF9ESVNUXzJf QgkJMHg3MTJjMAo+ICsjZGVmaW5lIF9QTEFORV9BVVhfRElTVF8xKHBpcGUpIFwKPiArCQkJX1BJ UEUocGlwZSwgUExBTkVfQVVYX0RJU1RfMV9BLCBQTEFORV9BVVhfRElTVF8xX0IpCj4gKyNkZWZp bmUgX1BMQU5FX0FVWF9ESVNUXzIocGlwZSkgXAo+ICsJCQlfUElQRShwaXBlLCBQTEFORV9BVVhf RElTVF8yX0EsIFBMQU5FX0FVWF9ESVNUXzJfQikKPiArI2RlZmluZSBQTEFORV9BVVhfRElTVChw aXBlLCBwbGFuZSkgICAgIFwKPiArCQlfTU1JT19QTEFORShwbGFuZSwgX1BMQU5FX0FVWF9ESVNU XzEocGlwZSksIF9QTEFORV9BVVhfRElTVF8yKHBpcGUpKQo+ICsKPiArI2RlZmluZSBQTEFORV9B VVhfT0ZGU0VUXzFfQQkJMHg3MDFjNAo+ICsjZGVmaW5lIFBMQU5FX0FVWF9PRkZTRVRfMl9BCQkw eDcwMmM0Cj4gKyNkZWZpbmUgUExBTkVfQVVYX09GRlNFVF8xX0IJCTB4NzExYzQKPiArI2RlZmlu ZSBQTEFORV9BVVhfT0ZGU0VUXzJfQgkJMHg3MTJjNAo+ICsjZGVmaW5lIF9QTEFORV9BVVhfT0ZG U0VUXzEocGlwZSkgICAgICAgXAo+ICsJCV9QSVBFKHBpcGUsIFBMQU5FX0FVWF9PRkZTRVRfMV9B LCBQTEFORV9BVVhfT0ZGU0VUXzFfQikKPiArI2RlZmluZSBfUExBTkVfQVVYX09GRlNFVF8yKHBp cGUpICAgICAgIFwKPiArCQlfUElQRShwaXBlLCBQTEFORV9BVVhfT0ZGU0VUXzJfQSwgUExBTkVf QVVYX09GRlNFVF8yX0IpCj4gKyNkZWZpbmUgUExBTkVfQVVYX09GRlNFVChwaXBlLCBwbGFuZSkg ICBcCj4gKwkJX01NSU9fUExBTkUocGxhbmUsIF9QTEFORV9BVVhfT0ZGU0VUXzEocGlwZSksIF9Q TEFORV9BVVhfT0ZGU0VUXzIocGlwZSkpCj4gKwo+ICAvKiBsZWdhY3kgcGFsZXR0ZSAqLwo+ICAj ZGVmaW5lIF9MR0NfUEFMRVRURV9BICAgICAgICAgICAweDRhMDAwCj4gICNkZWZpbmUgX0xHQ19Q QUxFVFRFX0IgICAgICAgICAgIDB4NGE4MDAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9h dG9taWNfcGxhbmUuYwo+IGluZGV4IGUwYjg1MWEuLmM0MzEzMzMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IEBAIC0yMzAsOCArMjMwLDE2IEBAIGlu dGVsX3BsYW5lX2F0b21pY19nZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4g IAkJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKPiAgCQkJCXVpbnQ2NF90ICp2YWwp Cj4gIHsKPiAtCURSTV9ERUJVR19LTVMoIlVua25vd24gcGxhbmUgcHJvcGVydHkgJyVzJ1xuIiwg cHJvcGVydHktPm5hbWUpOwo+IC0JcmV0dXJuIC1FSU5WQUw7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBzdGF0ZS0+cGxhbmUtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfcGxhbmVfc3Rh dGUoc3RhdGUpOwo+ICsKPiArCWlmIChwcm9wZXJ0eSA9PSBkZXZfcHJpdi0+cmVuZGVyX2NvbXBf cHJvcGVydHkpIHsKPiArCQkqdmFsID0gaW50ZWxfc3RhdGUtPnJlbmRlcl9jb21wX2VuYWJsZTsK PiArCX0gZWxzZSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiVW5rbm93biBwbGFuZSBwcm9wZXJ0eSAn JXMnXG4iLCBwcm9wZXJ0eS0+bmFtZSk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwly ZXR1cm4gMDsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTI1Miw2ICsyNjAsMTQgQEAgaW50ZWxfcGxh bmVfYXRvbWljX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQkJCXN0 cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAo+ICAJCQkJdWludDY0X3QgdmFsKQo+ICB7Cj4g LQlEUk1fREVCVUdfS01TKCJVbmtub3duIHBsYW5lIHByb3BlcnR5ICclcydcbiIsIHByb3BlcnR5 LT5uYW1lKTsKPiAtCXJldHVybiAtRUlOVkFMOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gc3RhdGUtPnBsYW5lLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHN0YXRl KTsKPiArCj4gKwlpZiAocHJvcGVydHkgPT0gZGV2X3ByaXYtPnJlbmRlcl9jb21wX3Byb3BlcnR5 KSB7Cj4gKwkJaW50ZWxfc3RhdGUtPnJlbmRlcl9jb21wX2VuYWJsZSA9IHZhbDsKPiArCX0gZWxz ZSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiVW5rbm93biBwbGFuZSBwcm9wZXJ0eSAnJXMnXG4iLCBw cm9wZXJ0eS0+bmFtZSk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwlyZXR1cm4gMDsK PiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCBiMmZjYmU2Li42 NzY1MDdkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMTcs NiArMTE3LDkgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGZpdF9kaXNhYmxlKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLCBib29sIGZvcmNlKTsKPiAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGZpdF9l bmFibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpOwo+ICBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rl c2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICBzdGF0aWMgdm9p ZCBpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gK3N0 YXRpYyBpbnQgc2tsX2NoZWNrX2NvbXByZXNzaW9uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g KwkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiArCQllbnVtIHBpcGUg cGlwZSwgaW50IHgsIGludCB5KTsKPiAgCj4gIHR5cGVkZWYgc3RydWN0IHsKPiAgCWludAltaW4s IG1heDsKPiBAQCAtMzU3Myw3ICszNTc2LDcgQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVf cHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCXN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gIAlpbnQgcGlwZSA9IGludGVs X2NydGMtPnBpcGU7Cj4gIAl1MzIgcGxhbmVfY3RsOwo+IC0JdW5zaWduZWQgaW50IHJvdGF0aW9u ID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb24g PSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbiwgcmVuZGVyX2NvbXA7Cj4gIAl1MzIgc3RyaWRl ID0gc2tsX3BsYW5lX3N0cmlkZShmYiwgMCwgcm90YXRpb24pOwo+ICAJdTMyIHN1cmZfYWRkciA9 IHBsYW5lX3N0YXRlLT5tYWluLm9mZnNldDsKPiAgCWludCBzY2FsZXJfaWQgPSBwbGFuZV9zdGF0 ZS0+c2NhbGVyX2lkOwo+IEBAIC0zNTg1LDYgKzM1ODgsOSBAQCBzdGF0aWMgdm9pZCBza3lsYWtl X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJaW50IGRz dF95ID0gcGxhbmVfc3RhdGUtPmRzdC55MTsKPiAgCWludCBkc3RfdyA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+ZHN0KTsKPiAgCWludCBkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPmRzdCk7Cj4gKwl1bnNpZ25lZCBsb25nIGF1eF9kaXN0ID0gMDsKPiArCXUzMiBh dXhfeF9vZmZzZXQgPSAwLCBhdXhfeV9vZmZzZXQgPSAwLCBhdXhfc3RyaWRlID0gMDsKPiArCXUz MiB0aWxlX3Jvd19hZGp1c3RtZW50ID0gMDsKPiAgCj4gIAlwbGFuZV9jdGwgPSBQTEFORV9DVExf RU5BQkxFIHwKPiAgCQkgICAgUExBTkVfQ1RMX1BJUEVfR0FNTUFfRU5BQkxFIHwKPiBAQCAtMzYw NCwxMCArMzYxMCw0MyBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJaW50ZWxfY3J0Yy0+YWRqdXN0ZWRfeCA9IHNy Y194Owo+ICAJaW50ZWxfY3J0Yy0+YWRqdXN0ZWRfeSA9IHNyY195Owo+ICAKPiArCXJlbmRlcl9j b21wID0gcGxhbmVfc3RhdGUtPnJlbmRlcl9jb21wX2VuYWJsZTsKPiArCWlmIChyZW5kZXJfY29t cCkgewo+ICsJCXUzMiB0aWxlX2hlaWdodCA9IFBBR0VfU0laRSAvCj4gKwkJCWludGVsX2ZiX3N0 cmlkZV9hbGlnbm1lbnQoZGV2X3ByaXYsIGZiLT5tb2RpZmllclswXSwKPiArCQkJCQlmYi0+cGl4 ZWxfZm9ybWF0KTsKPiArCj4gKwkJdTMyIGhlaWdodF9pbl9tZW0gPSAoZmItPm9mZnNldHNbMV0v ZmItPnBpdGNoZXNbMF0pOwo+ICsJCXRpbGVfcm93X2FkanVzdG1lbnQgPSBoZWlnaHRfaW5fbWVt ICUgdGlsZV9oZWlnaHQ7Cj4gKwkJYXV4X2Rpc3QgPSAoZmItPnBpdGNoZXNbMF0gKgo+ICsJCQkJ KGhlaWdodF9pbl9tZW0gLSB0aWxlX3Jvd19hZGp1c3RtZW50KSk7Cj4gKwkJYXV4X3N0cmlkZSA9 IHNrbF9wbGFuZV9zdHJpZGUoZmIsIDEsIHJvdGF0aW9uKTsKCkNvdWxkIHlvdSBnbyByZWFkIG15 IGZiIG9mZnNldHMgc2VyaWVzIFsxXSBhbmQgc2VlIGlmIHRoZXJlJ3Mgc29tZXRoaW5nCnRoZXJl IHRoYXQgZG9lc24ndCBhZ3JlZSB3aXRoIHJlbmRlciBjb21wcmVzc2lvbj8KClsxXSBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9pbnRlbC1nZngvMjAxNi1GZWJydWFyeS8w ODc2NjAuaHRtbAoKPiArCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX0RFQ09NUFJFU1NJT05fRU5B QkxFOwo+ICsJfSBlbHNlIHsKPiArCQlwbGFuZV9jdGwgJj0gflBMQU5FX0NUTF9ERUNPTVBSRVNT SU9OX0VOQUJMRTsKPiArCX0KPiArCj4gIAlJOTE1X1dSSVRFKFBMQU5FX0NUTChwaXBlLCAwKSwg cGxhbmVfY3RsKTsKPiAgCUk5MTVfV1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUsIDApLCAoc3JjX3kg PDwgMTYpIHwgc3JjX3gpOwo+ICAJSTkxNV9XUklURShQTEFORV9TVFJJREUocGlwZSwgMCksIHN0 cmlkZSk7Cj4gIAlJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgMCksIChzcmNfaCA8PCAxNikg fCBzcmNfdyk7Cj4gKwlJOTE1X1dSSVRFKFBMQU5FX0FVWF9ESVNUKHBpcGUsIDApLCBhdXhfZGlz dCB8IGF1eF9zdHJpZGUpOwo+ICsJSTkxNV9XUklURShQTEFORV9BVVhfT0ZGU0VUKHBpcGUsIDAp LCBhdXhfeV9vZmZzZXQ8PDE2IHwgYXV4X3hfb2Zmc2V0KTsKPiArCj4gKwkvKgo+ICsJICogUGVy IGJzcGVjLCBmb3IgU0tMIEMgYW5kIEJYVCBBIHN0ZXBwaW5ncywgd2hlbiB0aGUgcGxhbmUgc291 cmNlIHBpeGVsCj4gKwkgKiBmb3JtYXQgaXMgTlYxMiwgdGhlIENISUNLRU5fUElQRVNMIHJlZ2lz dGVyIGJpdCAyMiBtdXN0IGJlIHNldCB0byAxLgo+ICsJICogV2hlbiByZW5kZXIgY29tcHJlc3Np b24gaXMgZW5hYmxlZCwgYml0IDIyIG11c3QgYmUgc2V0IHRvIDAuCj4gKwkgKi8KPiArCWlmIChJ U19TS0xfUkVWSUQoZGV2LCAwLCBTS0xfUkVWSURfQzApIHx8Cj4gKwkJCUlTX0JYVF9SRVZJRChk ZXYsIDAsIEJYVF9SRVZJRF9BMSkpIHsKCkRvZXMgYW55b25lIHJlYWxseSBjYXJlIGFib3V0IHRo ZXNlIGFueW1vcmU/CgpBbHNvIHlvdSByZWFsbHkgc2hvdWxkIGZpeCB5b3VyIGVkaXRvciB0byB3 cmFwIGxpbmVzIGNvcnJlY3RseS4KCj4gKwkJdTMyIHRlbXAgPSBJOTE1X1JFQUQoQ0hJQ0tFTl9Q SVBFU0xfMShwaXBlKSk7Cj4gKwkJaWYgKHJlbmRlcl9jb21wKSB7Cj4gKwkJCWlmICgodGVtcCAm IEhTV19GQkNRX0RJUykgPT0gSFNXX0ZCQ1FfRElTKQo+ICsJCQkJSTkxNV9XUklURShDSElDS0VO X1BJUEVTTF8xKHBpcGUpLAo+ICsJCQkJCQl0ZW1wICYgfkhTV19GQkNRX0RJUyk7Cj4gKwkJfQo+ ICsJfQo+ICAKPiAgCWlmIChzY2FsZXJfaWQgPj0gMCkgewo+ICAJCXVpbnQzMl90IHBzX2N0cmwg PSAwOwo+IEBAIC0xMjMzMyw2ICsxMjM3MiwxNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2Nh bGNfY2hhbmdlcyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCXRvX2lu dGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKSk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0dXJu IHJldDsKPiArCj4gKwkJaWYgKGZiICYmIHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRl KS0+Cj4gKwkJCQlyZW5kZXJfY29tcF9lbmFibGUpIHsKPiArCQkJcmV0ID0gc2tsX2NoZWNrX2Nv bXByZXNzaW9uKGRldiwKPiArCQkJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZV9zdGF0ZSks Cj4gKwkJCQkJaW50ZWxfY3J0Yy0+cGlwZSwgY3J0Yy0+eCwgY3J0Yy0+eSk7Cj4gKwkJCWlmIChy ZXQpIHsKPiArCQkJCURSTV9ERUJVR19LTVMoIlJlbmRlciBjb21wciBjaGVja3MgZmFpbGVkXG4i KTsKPiArCQkJCXJldHVybiByZXQ7Cj4gKwkJCX0KPiArCQl9Cj4gIAl9Cj4gIAo+ICAJd2FzX3Zp c2libGUgPSBvbGRfcGxhbmVfc3RhdGUtPnZpc2libGU7Cj4gQEAgLTEyMzg4LDcgKzEyNDM4LDYg QEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoc3RydWN0IGRybV9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICAJY2FzZSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOgo+ICAJCWlu dGVsX2NydGMtPmF0b21pYy5wb3N0X2VuYWJsZV9wcmltYXJ5ID0gdHVybl9vbjsKPiAgCQlpbnRl bF9jcnRjLT5hdG9taWMudXBkYXRlX2ZiYyA9IHRydWU7Cj4gLQo+ICAJCWJyZWFrOwo+ICAJY2Fz ZSBEUk1fUExBTkVfVFlQRV9DVVJTT1I6Cj4gIAkJYnJlYWs7Cj4gQEAgLTEyNTE2LDYgKzEyNTY1 LDQxIEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ICAJCX0KPiAgCX0KPiAgCj4gKwkvKgo+ICsJICogT24gU0tMOio6QyBhbmQgQlhU Oio6QSwgdGhlcmUgaXMgYSBwb3NzaWJsZSBoYW5nIHdpdGggTlYxMiBmb3JtYXQuCj4gKwkgKiBX QTogcmVuZGVyIGRlY29tcHJlc3Npb24gbXVzdCBub3QgYmUgZW5hYmxlZCBvbiBhbnkgb2YgdGhl IHBsYW5lcyBpbgo+ICsJICogdGhhdCBwaXBlLgo+ICsJICovCj4gKwlpZiAoSVNfU0tMX1JFVklE KGRldiwgMCwgU0tMX1JFVklEX0MwKSB8fAo+ICsJCQlJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRf UkVWSURfQTEpKSB7CgpNb3JlIGV4dGluY3QgYW5pbWFscwoKPiArCQlzdHJ1Y3QgZHJtX3BsYW5l ICpwOwo+ICsJCWJvb2wgcmNfZW5hYmxlZCA9IGZhbHNlLCBudjEyX2VuYWJsZWQgPSBmYWxzZTsK PiArCj4gKwkJZHJtX2Zvcl9lYWNoX3BsYW5lX21hc2socCwgZGV2LCBjcnRjX3N0YXRlLT5wbGFu ZV9tYXNrKSB7Cj4gKwkJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KPiAr CQkJCWRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRlLCBwKTsKPiArCj4gKwkJCWlmIChw bGFuZV9zdGF0ZSkgewo+ICsJCQkJaWYgKHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRl KS0+Cj4gKwkJCQkJCXJlbmRlcl9jb21wX2VuYWJsZSkKPiArCQkJCQlyY19lbmFibGVkID0gdHJ1 ZTsKPiArCj4gKwkJCQlpZiAocGxhbmVfc3RhdGUtPmZiICYmCj4gKwkJCQkJCXBsYW5lX3N0YXRl LT5mYi0+cGl4ZWxfZm9ybWF0ID09Cj4gKwkJCQkJCURSTV9GT1JNQVRfTlYxMikKPiArCQkJCQlu djEyX2VuYWJsZWQgPSB0cnVlOwo+ICsJCQl9Cj4gKwo+ICsJCX0KPiArCQlpZiAocmNfZW5hYmxl ZCAmJiBudjEyX2VuYWJsZWQpIHsKPiArCQkJRFJNX0RFQlVHX0tNUygiUkMgc2hvdWxkIG5vdCBi ZSBlbmFibGVkICIKPiArCQkJCQkib24gYW55IHBsYW5lIG9mIHRoZSAiCj4gKwkJCQkJInBpcGUg b24gd2hpY2ggTlYxMiBpcyAiCj4gKwkJCQkJImVuYWJsZWRcbiIpOwo+ICsJCQlyZXR1cm4gLUVJ TlZBTDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkp IHsKPiAgCQlpZiAobW9kZV9jaGFuZ2VkKQo+ICAJCQlyZXQgPSBza2xfdXBkYXRlX3NjYWxlcl9j cnRjKHBpcGVfY29uZmlnKTsKPiBAQCAtMTQ1MTcsNiArMTQ2MDEsOTEgQEAgc2tsX21heF9zY2Fs ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUKPiAgCXJldHVybiBtYXhfc2NhbGU7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQg c2tsX2NoZWNrX2NvbXByZXNzaW9uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiArCQllbnVtIHBpcGUgcGlwZSwgaW50 IHgsIGludCB5KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0 YXRlLT5iYXNlLmZiOwo+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBwbGFuZV9zdGF0ZS0+ YmFzZS5wbGFuZTsKPiArCWludCB4X29mZnNldDsKPiArCWludCBzcmNfdyA9IGRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+c3JjKSA+PiAxNjsKPiArCj4gKwlpZiAoIUlTX1NLWUxBS0UoZGV2 KSAmJiAhSVNfQlJPWFRPTihkZXYpKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiUkMgc3VwcG9ydCBv biBDTkwrIG5lZWRzIHRvIGJlIHJldmlzaXRlZFxuIik7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4g Kwl9Cj4gKwo+ICsJLyoKPiArCSAqIFRPRE86Cj4gKwkgKiAxLiBEaXNhYmxlIHN0ZXJlbyAzRCB3 aGVuIHJlbmRlciBkZWNvbXAgaXMgZW5hYmxlZCAoYml0IDc6NikKPiArCSAqIDIuIFJlbmRlciBk ZWNvbXByZXNzaW9uIG11c3Qgbm90IGJlIHVzZWQgaW4gVlRkIHBhc3MtdGhyb3VnaCBtb2RlCj4g KwkgKiAzLiBQcm9ncmFtIGhhc2hpbmcgc2VsZWN0IENISUNLRU5fTUlTQzEgYml0IDE1Cj4gKwkg Ki8KPiArCj4gKwkvKgo+ICsJICogT24gU0tMIEEgYW5kIFNLTCBCLAo+ICsJICogRG8gbm90IGVu YWJsZSByZW5kZXIgZGVjb21wcmVzc2lvbiB3aGVuIHRoZSBwbGFuZQo+ICsJICogd2lkdGggaXMg c21hbGxlciB0aGFuIDMyIHBpeGVscyBvciBncmVhdGVyIHRoYW4KPiArCSAqIDIwNDggcGl4ZWxz Cj4gKwkgKi8KPiArCWlmIChJU19TS0xfUkVWSUQoZGV2LCAwLCBTS0xfUkVWSURfQzApICYmICgo c3JjX3cgPCAzMikgfHwgKHNyY193ID4gMjA0OCkpKSB7YQoKQW5kIG1vcmUKCj4gKwkJRFJNX0RF QlVHX0tNUygiU0tMLUEsIFNLTC1CIFJDOiB3aWR0aCA+IDIwNDggb3IgPCAzMlxuIik7Cj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIENvbmRpdGlvbnMgdG8gc2F0 aXNmeSBiZWZvcmUgZW5hYmxpbmcgcmVuZGVyIGRlY29tcC4KPiArCSAqIFNLTCsKPiArCSAqIFBp cGUgQSAmIEIsIFBsYW5lcyAxICYgMgo+ICsJICogUkdCODg4OCBUaWxlLVkgZm9ybWF0Cj4gKwkg KiAwLzE4MCByb3RhdGlvbgo+ICsJICovCj4gKwlpZiAocGlwZSA9PSBQSVBFX0MpIHsKPiArCQlE Uk1fREVCVUdfS01TKCJSQyBzdXBwb3J0ZWQgb25seSBvbiBwaXBlIEEgJiBCXG4iKTsKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCX0KClNob3VsZG4ndCBoYXZlIGFkZGVkIHRoZSBwcm9wIG9uIHBp cGUgQyBhdCBhbGwgdGhlbi4gT3IgdGhlIHByb3AKc2hvdWxkIGFkdmVydGlzZSBvbmx5IHVuY29t cHJlc3NlZC4KCj4gKwo+ICsJaWYgKCEocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJ TUFSWSB8fAo+ICsJCQkJKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX09WRVJMQVkgJiYK PiArCQkJCSB0b19pbnRlbF9wbGFuZShwbGFuZSktPnBsYW5lID09IFBMQU5FX0EpKSkgewoKV2Ug c2hvdWxkIHJlYWxseSBoYXZlIGEgYmV0dGVyIHdheSB0byByZWZlciB0byBzcGVjaWZpYyBwbGFu ZXMuIE5vdCBzdXJlCm9mIGFueXRoaW5nIGhhcHBlbmVkIG9uIHRoYXQgZnJvbnQuCgo+ICsJCURS TV9ERUJVR19LTVMoIlJDIHN1cHBvcnRlZCBvbmx5IG9uIHBsYW5lcyAxICYgMlxuIik7Cj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3 MChwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbikpIHsKPiArCQlEUk1fREVCVUdfS01TKCJSQyBz dXBwb3J0IG9ubHkgd2l0aCAwLzE4MCBkZWdyZWUgcm90YXRpb25cbiIpOwo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsJfQo+ICsKPiArCWlmICgoZmItPm1vZGlmaWVyWzBdID09IERSTV9GT1JNQVRf TU9EX05PTkUpIHx8Cj4gKwkJCShmYi0+bW9kaWZpZXJbMF0gPT0gSTkxNV9GT1JNQVRfTU9EX1hf VElMRUQpKSB7CgpCZXR0ZXIgY2hlY2sgZm9yIHRoZSBzcGVjaWZpYyB0aGluZ3MgeW91IGRvIHN1 cHBvcnQgSSB0aGluay4KCj4gKwkJRFJNX0RFQlVHX0tNUygiUkMgc3VwcG9ydGVkIG9ubHkgd2l0 aCBZLXRpbGVcbiIpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCWlmICgoZmIt PnBpeGVsX2Zvcm1hdCAhPSBEUk1fRk9STUFUX1hCR1I4ODg4KSAmJgo+ICsJCQkoZmItPnBpeGVs X2Zvcm1hdCAhPSBEUk1fRk9STUFUX0FCR1I4ODg4KSkgewoKUHJlc3VtYWJseSB3ZSBzaG91bGRu J3QgaGF2ZSBhbGxvd2VkIHN1Y2ggYW4gZmIgdG8gYmUgZXZlbiBjcmVhdGVkLgoKPiArCQlEUk1f REVCVUdfS01TKCJSQyBzdXBwb3J0ZWQgb25seSB3aXRoIFJHQjg4ODggZm9ybWF0c1xuIik7Cj4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIEZvciBTS0wgJiBCWFQs Cj4gKwkgKiBXaGVuIHRoZSByZW5kZXIgY29tcHJlc3Npb24gaXMgZW5hYmxlZCB3aXRoIHBsYW5l Cj4gKwkgKiB3aWR0aCBncmVhdGVyIHRoYW4gMzg0MCBhbmQgaG9yaXpvbnRhbCBwYW5uaW5nLAo+ ICsJICogdGhlIHN0cmlkZSBwcm9ncmFtbWVkIGluIHRoZSBQTEFORV9TVFJJREUgcmVnaXN0ZXIK PiArCSAqIG11c3QgYmUgbXVsdGlwbGUgb2YgNC4KPiArCSAqLwo+ICsJeF9vZmZzZXQgPSB4Owo+ ICsKPiArCWlmIChzcmNfdyA+IDM4NDAgJiYgeF9vZmZzZXQgIT0gMCkgewo+ICsJCURSTV9ERUJV R19LTVMoIlJDOiB3aWR0aCA+IDM4NDAsIGhvcml6b250YWwgcGFubmluZ1xuIik7Cj4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyBp bnQKPiAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiAgCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiBAQCAtMTQ2Nzks NiArMTQ4NDgsOSBAQCBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqaW50ZWxfcHJpbWFyeV9wbGFu ZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA0KQo+ICAJCWludGVsX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShkZXYsIHByaW1h cnkpOwo+ICAKPiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ICsJCWludGVsX2Ny ZWF0ZV9yZW5kZXJfY29tcF9wcm9wZXJ0eShkZXYsIHByaW1hcnkpOwo+ICsKPiAgCWRybV9wbGFu ZV9oZWxwZXJfYWRkKCZwcmltYXJ5LT5iYXNlLCAmaW50ZWxfcGxhbmVfaGVscGVyX2Z1bmNzKTsK PiAgCj4gIAlyZXR1cm4gJnByaW1hcnktPmJhc2U7Cj4gQEAgLTE0NzAyLDYgKzE0ODc0LDM2IEBA IHZvaWQgaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdCBpbnRlbF9wbGFuZSAqCj4gIAkJCQlwbGFuZS0+YmFzZS5zdGF0ZS0+cm90YXRp b24pOwo+ICB9Cj4gIAo+ICt2b2lkIGludGVsX2NyZWF0ZV9yZW5kZXJfY29tcF9wcm9wZXJ0eShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCj4g K3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gKwo+ICsJc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJvcF9lbnVtX2xpc3QgcmNfc3Rh dHVzW10gPSB7Cj4gKwkJeyBDT01QX1VOQ09NUFJFU1NFRCwgICAiVW5jb21wcmVzc2VkL25vdCBj YXBhYmxlIiB9LAo+ICsJCXsgQ09NUF9SRU5ERVIsICAiT25seSByZW5kZXIgZGVjb21wcmVzc2lv biIgfSwKPiArCX07Cj4gKwo+ICsJaWYgKCFkZXZfcHJpdi0+cmVuZGVyX2NvbXBfcHJvcGVydHkp IHsKPiArCQlkZXZfcHJpdi0+cmVuZGVyX2NvbXBfcHJvcGVydHkgPQo+ICsJCQlkcm1fcHJvcGVy dHlfY3JlYXRlX2JpdG1hc2soZGV2LCAwLAo+ICsJCQkJCSJyZW5kZXIgY29tcHJlc3Npb24iLAo+ ICsJCQkJCXJjX3N0YXR1cywgQVJSQVlfU0laRShyY19zdGF0dXMpLAo+ICsJCQkJCUJJVChDT01Q X1VOQ09NUFJFU1NFRCkgfAo+ICsJCQkJCUJJVChDT01QX1JFTkRFUikpOwoKV2h5IGlzIGl0IGEg Yml0bWFzaz8gQXJlIHlvdSBleHBlY3RpbmcgdGhlIHVzZXIgdG8gc2V0IG11bHRpcGxlIGJpdHM/ CgpTbyBmYXIgaXQgbG9va3MgbW9yZSBsaWtlIGEgeWVzL25vIHR5cGUgb2YgdGhpbmcgdGhhbiBh biBlbnVtIGV2ZW4uIEFyZQp3ZSBleHBlY3RpbmcgbW9yZSBwb3NzaWJsZSB2YWx1ZXMgaGVyZT8K CkFsc28gc2VlbXMgbGlrZSB0aGlzIHJlYWxseSBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgc2V0IG9m IHN1cHBvcnRlZAp2YWx1ZXMgcGVyIHBsYW5lLgoKPiArCQlpZiAoIWRldl9wcml2LT5yZW5kZXJf Y29tcF9wcm9wZXJ0eSkgewo+ICsJCQlEUk1fRVJST1IoIlJDOiBGYWlsZWQgdG8gY3JlYXRlIHBy b3BlcnR5XG4iKTsKPiArCQkJcmV0dXJuOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAoZGV2X3By aXYtPnJlbmRlcl9jb21wX3Byb3BlcnR5KSB7Cj4gKwkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVy dHkoJnBsYW5lLT5iYXNlLmJhc2UsCj4gKwkJCQlkZXZfcHJpdi0+cmVuZGVyX2NvbXBfcHJvcGVy dHksIDApOwo+ICsJfQo+ICsJZGV2LT5tb2RlX2NvbmZpZy5hbGxvd19hdXhfcGxhbmUgPSB0cnVl Owo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50Cj4gIGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggNjhkZDdhYy4uMzE1OGQ5 ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTE1NCw3ICsxNTQsNyBAQCBz dHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgewo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsKPiAgCXN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvIHJvdF9pbmZvOwo+ICAKPiAtCS8q IGZvciBlYWNoIHBsYW5lIGluIHRoZSBub3JtYWwgR1RUIHZpZXcgKi8gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAo+ICsJLyogZm9yIGVhY2ggcGxhbmUgaW4gdGhlIG5vcm1hbCBHVFQgdmll dyAqLwo+ICAJc3RydWN0IHsKPiAgCQl1bnNpZ25lZCBpbnQgeCwgeTsKPiAgCX0gbm9ybWFsWzJd Owo+IEBAIC0zMTMsNiArMzEzLDEwIEBAIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgewo+ICAJ Ym9vbCBza2lwX2ludGVybWVkaWF0ZV93bTsKPiAgfTsKPiAgCj4gKy8qIHJlbmRlciBjb21wcmVz c2lvbiBwcm9wZXJ0eSBiaXRzICovCj4gKyNkZWZpbmUgQ09NUF9VTkNPTVBSRVNTRUQgICAgICAg ICAgMAo+ICsjZGVmaW5lIENPTVBfUkVOREVSICAgICAgICAgICAgICAgIDEKPiArCj4gIHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSB7Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIGJhc2U7Cj4g IAlzdHJ1Y3QgZHJtX3JlY3Qgc3JjOwo+IEBAIC0zNTIsNiArMzU2LDkgQEAgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlIHsKPiAgCj4gIAkvKiBhc3luYyBmbGlwIHJlbGF0ZWQgc3RydWN0dXJlcyAq Lwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp3YWl0X3JlcTsKPiArCj4gKwkvKiBS ZW5kZXIgY29tcHJlc3Npb24gKi8KPiArCXVuc2lnbmVkIGludCByZW5kZXJfY29tcF9lbmFibGU7 Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfaW5pdGlhbF9wbGFuZV9jb25maWcgewo+IEBAIC0x MTM1LDExICsxMTQyLDExIEBAIHZvaWQgaTkxNV9hdWRpb19jb21wb25lbnRfY2xlYW51cChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiAgLyogaW50ZWxfZGlzcGxheS5j ICovCj4gIGV4dGVybiBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGludGVsX3BsYW5lX2Z1 bmNzOwo+IC11bnNpZ25lZCBpbnQgaW50ZWxfZmJfeHlfdG9fbGluZWFyKGludCB4LCBpbnQgeSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCj4gLQkJY29uc3Qgc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpzdGF0ZSwgICAgICAgCj4gLQkJaW50IHBsYW5lKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCj4gLXZvaWQgaW50ZWxfYWRkX2ZiX29mZnNldHMoaW50ICp4LCBp bnQgKnksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPiAtCQljb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlLCBpbnQgcGxhbmUpOyAKPiArdW5zaWduZWQg aW50IGludGVsX2ZiX3h5X3RvX2xpbmVhcihpbnQgeCwgaW50IHksCj4gKwkJY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSwKPiArCQlpbnQgcGxhbmUpOwo+ICt2b2lkIGludGVs X2FkZF9mYl9vZmZzZXRzKGludCAqeCwgaW50ICp5LAo+ICsJCWNvbnN0IHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqc3RhdGUsIGludCBwbGFuZSk7Cj4gIHVuc2lnbmVkIGludCBpbnRlbF9yb3Rh dGlvbl9pbmZvX3NpemUoY29uc3Qgc3RydWN0IGludGVsX3JvdGF0aW9uX2luZm8gKnJvdF9pbmZv KTsKPiAgYm9vbCBpbnRlbF9oYXNfcGVuZGluZ19mYl91bnBpbihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKPiAgdm9pZCBpbnRlbF9tYXJrX2J1c3koc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4g QEAgLTEyMjMsNiArMTIzMCw5IEBAIGludGVsX3JvdGF0aW9uXzkwX29yXzI3MCh1bnNpZ25lZCBp bnQgcm90YXRpb24pCj4gIHZvaWQgaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSk7Cj4g IAo+ICt2b2lkIGludGVsX2NyZWF0ZV9yZW5kZXJfY29tcF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICsJCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpOwo+ICsKPiAgLyogc2hh cmVkIGRwbGwgZnVuY3Rpb25zICovCj4gIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqaW50ZWxf Y3J0Y190b19zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Cj4gIHZvaWQgYXNz ZXJ0X3NoYXJlZF9kcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAt MTI1Miw3ICsxMjYyLDcgQEAgdm9pZCBhc3NlcnRfZmRpX3J4X3BsbChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHZvaWQgYXNzZXJ0X3BpcGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSwgYm9vbCBzdGF0ZSk7Cj4gICNkZWZpbmUg YXNzZXJ0X3BpcGVfZW5hYmxlZChkLCBwKSBhc3NlcnRfcGlwZShkLCBwLCB0cnVlKQo+ICAjZGVm aW5lIGFzc2VydF9waXBlX2Rpc2FibGVkKGQsIHApIGFzc2VydF9waXBlKGQsIHAsIGZhbHNlKQo+ IC11MzIgaW50ZWxfY29tcHV0ZV90aWxlX29mZnNldChpbnQgKngsIGludCAqeSwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCj4gK3UzMiBpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0 KGludCAqeCwgaW50ICp5LAo+ICAJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3Rh dGUsIGludCBwbGFuZSk7Cj4gIHZvaWQgaW50ZWxfcHJlcGFyZV9yZXNldChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKPiAgdm9pZCBpbnRlbF9maW5pc2hfcmVzZXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBpbmRleCA3NWJmMDFkLi5i YjZiYmRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBAQCAtMTkxLDcg KzE5MSw3IEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLAo+ ICAJdTMyIHBsYW5lX2N0bDsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9y a2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gIAl1MzIgc3VyZl9hZGRyID0gcGxhbmVf c3RhdGUtPm1haW4ub2Zmc2V0Owo+IC0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3Rh dGUtPmJhc2Uucm90YXRpb247Cj4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0 ZS0+YmFzZS5yb3RhdGlvbiwgcmVuZGVyX2NvbXA7Cj4gIAl1MzIgc3RyaWRlID0gc2tsX3BsYW5l X3N0cmlkZShmYiwgMCwgcm90YXRpb24pOwo+ICAJaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5k c3QueDE7Cj4gIAlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmRzdC55MTsKPiBAQCAtMjAzLDYg KzIwMyw5IEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLAo+ ICAJdWludDMyX3Qgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5zcmMpID4+ IDE2Owo+ICAJY29uc3Qgc3RydWN0IGludGVsX3NjYWxlciAqc2NhbGVyID0KPiAgCQkmY3J0Y19z dGF0ZS0+c2NhbGVyX3N0YXRlLnNjYWxlcnNbcGxhbmVfc3RhdGUtPnNjYWxlcl9pZF07Cj4gKwl1 bnNpZ25lZCBsb25nIGF1eF9kaXN0ID0gMDsKPiArCXUzMiBhdXhfeF9vZmZzZXQgPSAwLCBhdXhf eV9vZmZzZXQgPSAwLCBhdXhfc3RyaWRlID0gMDsKPiArCXUzMiB0aWxlX3Jvd19hZGp1c3RtZW50 ID0gMDsKPiAgCj4gIAlwbGFuZV9jdGwgPSBQTEFORV9DVExfRU5BQkxFIHwKPiAgCQlQTEFORV9D VExfUElQRV9HQU1NQV9FTkFCTEUgfAo+IEBAIC0yMzAsOSArMjMzLDQzIEBAIHNrbF91cGRhdGVf cGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLAo+ICAJY3J0Y193LS07Cj4gIAljcnRj X2gtLTsKPiAgCj4gKwlyZW5kZXJfY29tcCA9IHBsYW5lX3N0YXRlLT5yZW5kZXJfY29tcF9lbmFi bGU7Cj4gKwlpZiAocmVuZGVyX2NvbXApIHsKPiArCQl1MzIgdGlsZV9oZWlnaHQgPSBQQUdFX1NJ WkUgLwo+ICsJCQlpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGRldl9wcml2LCBmYi0+bW9kaWZp ZXJbMF0sCj4gKwkJCQkJZmItPnBpeGVsX2Zvcm1hdCk7Cj4gKwo+ICsJCXUzMiBoZWlnaHRfaW5f bWVtID0gKGZiLT5vZmZzZXRzWzFdL2ZiLT5waXRjaGVzWzBdKTsKPiArCQl0aWxlX3Jvd19hZGp1 c3RtZW50ID0gaGVpZ2h0X2luX21lbSAlIHRpbGVfaGVpZ2h0Owo+ICsJCWF1eF9kaXN0ID0gKGZi LT5waXRjaGVzWzBdICoKPiArCQkJCShoZWlnaHRfaW5fbWVtIC0gdGlsZV9yb3dfYWRqdXN0bWVu dCkpOwo+ICsJCWF1eF9zdHJpZGUgPSBza2xfcGxhbmVfc3RyaWRlKGZiLCAxLCByb3RhdGlvbik7 Cj4gKwkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ERUNPTVBSRVNTSU9OX0VOQUJMRTsKPiArCX0g ZWxzZSB7Cj4gKwkJcGxhbmVfY3RsICY9IH5QTEFORV9DVExfREVDT01QUkVTU0lPTl9FTkFCTEU7 Cj4gKwl9Cj4gKwo+ICAJSTkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgcGxhbmUpLCAoeSA8 PCAxNikgfCB4KTsKPiAgCUk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIHBsYW5lKSwgc3Ry aWRlKTsKPiAgCUk5MTVfV1JJVEUoUExBTkVfU0laRShwaXBlLCBwbGFuZSksIChzcmNfaCA8PCAx NikgfCBzcmNfdyk7Cj4gKwlJOTE1X1dSSVRFKFBMQU5FX0FVWF9ESVNUKHBpcGUsIHBsYW5lKSwg YXV4X2Rpc3QgfCBhdXhfc3RyaWRlKTsKPiArCUk5MTVfV1JJVEUoUExBTkVfQVVYX09GRlNFVChw aXBlLCBwbGFuZSksCj4gKwkJCWF1eF95X29mZnNldDw8MTYgfCBhdXhfeF9vZmZzZXQpOwo+ICsK PiArCS8qCj4gKwkgKiBQZXIgYnNwZWMsIGZvciBTS0wgQyBhbmQgQlhUIEEgc3RlcHBpbmdzLCB3 aGVuIHRoZSBwbGFuZSBzb3VyY2UgcGl4ZWwKPiArCSAqIGZvcm1hdCBpcyBOVjEyLCB0aGUgQ0hJ Q0tFTl9QSVBFU0wgcmVnaXN0ZXIgYml0IDIyIG11c3QgYmUgc2V0IHRvIDEuCj4gKwkgKiBXaGVu IHJlbmRlciBjb21wcmVzc2lvbiBpcyBlbmFibGVkLCBiaXQgMjIgbXVzdCBiZSBzZXQgdG8gMC4K PiArCSAqLwo+ICsJaWYgKElTX1NLTF9SRVZJRChkZXYsIDAsIFNLTF9SRVZJRF9DMCkgfHwKPiAr CQkJSVNfQlhUX1JFVklEKGRldiwgMCwgQlhUX1JFVklEX0ExKSkgewo+ICsJCXUzMiB0ZW1wID0g STkxNV9SRUFEKENISUNLRU5fUElQRVNMXzEocGlwZSkpOwo+ICsJCWlmIChyZW5kZXJfY29tcCkg ewo+ICsJCQlpZiAoKHRlbXAgJiBIU1dfRkJDUV9ESVMpID09IEhTV19GQkNRX0RJUykKPiArCQkJ CUk5MTVfV1JJVEUoQ0hJQ0tFTl9QSVBFU0xfMShwaXBlKSwKPiArCQkJCQkJdGVtcCAmIH5IU1df RkJDUV9ESVMpOwo+ICsJCX0KPiArCX0KPiAgCj4gIAkvKiBwcm9ncmFtIHBsYW5lIHNjYWxlciAq Lwo+ICAJaWYgKHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQgPj0gMCkgewo+IEBAIC0xMDkyLDYgKzEx MjksOSBAQCBpbnRlbF9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlw ZSBwaXBlLCBpbnQgcGxhbmUpCj4gIAo+ICAJaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5 KGRldiwgaW50ZWxfcGxhbmUpOwo+ICAKPiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5 KQo+ICsJCWludGVsX2NyZWF0ZV9yZW5kZXJfY29tcF9wcm9wZXJ0eShkZXYsIGludGVsX3BsYW5l KTsKPiArCj4gIAlkcm1fcGxhbmVfaGVscGVyX2FkZCgmaW50ZWxfcGxhbmUtPmJhc2UsICZpbnRl bF9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+ICAKPiAgb3V0Ogo+IC0tIAo+IDEuOS4xCj4gCj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZngg bWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKVmls bGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK