From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 2/2] drm/i915: Render decompression support for Gen9 and above Date: Fri, 29 Apr 2016 17:45:29 +0300 Message-ID: <20160429144529.GT4329@intel.com> References: <1461941820-10951-1-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 5E3C56E0F4 for ; Fri, 29 Apr 2016 14:45:33 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1461941820-10951-1-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 T24gRnJpLCBBcHIgMjksIDIwMTYgYXQgMDg6Mjc6MDBQTSArMDUzMCwgVmFuZGFuYSBLYW5uYW4g d3JvdGU6Cj4gVGhpcyBwYXRjaCBpbmNsdWRlcyBlbmFibGluZyByZW5kZXIgZGVjb21wcmVzc2lv biAoUkMpIGFmdGVyIGNoZWNraW5nCj4gYWxsIHRoZSByZXF1aXJlbWVudHMgKGZvcm1hdCwgdGls aW5nLCByb3RhdGlvbiBldGMuKS4KPiAKPiBUT0RPOgo+IDEuIERpc2FibGUgc3RlcmVvIDNEIHdo ZW4gcmVuZGVyIGRlY29tcCBpcyBlbmFibGVkIChiaXQgNzo2KQo+IDIuIFJlbmRlciBkZWNvbXBy ZXNzaW9uIG11c3Qgbm90IGJlIHVzZWQgaW4gVlRkIHBhc3MtdGhyb3VnaCBtb2RlCj4gMy4gUHJv Z3JhbSBoYXNoaW5nIHNlbGVjdCBDSElDS0VOX01JU0MxIGJpdCAxNQo+IDQuIEZvciBHZW4xMCwg YWRkIHN1cHBvcnQgZm9yIFJHQiAxMDEwMTAyCj4gNS4gUkMtRkJDIHdvcmthcm91bmQKPiA2LiBS QyB3YXRlcm1hcmsgY2FsY3VsYXRpb24KPiAKPiBUaGUgcmVhc29uIGZvciB1c2luZyBhIHBsYW5l IHByb3BlcnR5IGluc3RlYWQgb2YgZmIgbW9kaWZpZXI6LQo+IEluIEFuZHJvaWQsIE9HTCBwYXNz ZXMgYSByZW5kZXIgY29tcHJlc3NlZCBidWZmZXIgdG8gaGFyZHdhcmUgY29tcG9zZXIKPiAoSFdD KSwgd2hpY2ggd291bGQgdGhlbiByZXF1ZXN0IGEgZmxpcCBvbiB0aGF0IGJ1ZmZlciBhZnRlciBj aGVja2luZyBpZgo+IHRoZSB0YXJnZXQgY2FuIHN1cHBvcnQgcmVuZGVyIGNvbXByZXNzZWQgYnVm ZmVyLiBGb3IgZXhhbXBsZSwgb25seSBwbGFuZXMKPiAxIGFuZCAyIG9uIHBpcGVzIDEgYW5kIDIg Y2FuIHN1cHBvcnQgUkMuIEluIGNhc2UgdGhlIHRhcmdldCBjYW5ub3QKPiBzdXBwb3J0IGl0LCBI V0Mgd2lsbCByZXZlcnQgYmFjayB0byBPR0wgcmVxdWVzdGluZyBmb3IgdW5jb21wcmVzc2VkCj4g YnVmZmVyLgo+IEhlcmUsCj4gaWYgcGxhbmUgcHJvcGVydHkgaXMgdXNlZCwgT0dMIHdvdWxkIHNl bmQgYmFjayB0aGUgYnVmZmVyIChzYW1lIElEKSBhZnRlcgo+IGRlY29tcHJlc3Npb24sIG1hcmtl ZCB1bmNvbXByZXNzZWQuIElmIGZiIG1vZGlmaWVyIHdhcyB1c2VkLCBhIGRpZmZlcmVudAo+IHZl cnNpb24gb2YgdGhlIGJ1ZmZlciB3b3VsZCBoYXZlIHRvIGJlIG1haW50YWluZWQgZm9yIGRpZmZl cmVudAo+IGNvbWJpbmF0aW9ucyAtIGluIHRoZSBzaW1wbGUgY2FzZSBvZiByZW5kZXIgY29tcHJl c3NlZCB2cyB1bmNvbXByZXNzZWQKPiBidWZmZXIsIHRoZXJlIHdvdWxkIGJlIDIgZmJzIHdpdGgg MiBJRHMuIFNvLCBpbiB0aGlzIGNhc2UsIE9HTCB3b3VsZCBnaXZlCj4gYSByZWZlcmVuY2UgdG8g YSBmYiB3aXRoIGEgZGlmZmVyZW50IElELgo+IFRvIGF2b2lkIHRoZSBkaWZmaWN1bHR5IG9mIGtl ZXBpbmcgdHJhY2sgb2YgbXVsdGlwbGUgZmJzIGFuZCB0aGUgc3Vic2VxdWVudAo+IGNvbXBsZXhp dHkgaW4gZGVidWcsIHRoZSBhcmNoaXRlY3R1cmUgZm9ydW0gZGVjaWRlZCB0byBnbyBhaGVhZCB3 aXRoIGEKPiBwbGFuZSBwcm9wZXJ0eSBmb3IgUkMuCj4gCj4gW01heXVyZXNoXSBBZGRlZCB0aGUg cGxhbmUgY2hlY2sgaW4gc2tsX2NoZWNrX2NvbXByZXNzaW9uKCkKPiAKPiB2MjogVmlsbGUncyBy ZXZpZXcgY29tbWVudHMgYWRkcmVzc2VkCj4gLSBSZW1vdmVkIFdBcyBzcGVjaWZpYyB0byBTS0wt QyBhbmQgQlhULUEKPiAtIEFzc2lnbiBjYXBhYmlsaXRpZXMgYWNjb3JkaW5nIHRvIHBpcGUgYW5k IHBsYW5lIGR1cmluZyBwcm9wZXJ0eSBjcmVhdGlvbgo+IC0gaW4gc2tsX2NoZWNrX2NvbXByZXNz aW9uKCksIGNoZWNrIGZvciBjb25kaXRpb25zIHRoYXQgbXVzdCBiZSBzYXRpc2lmZWQKPiAKPiBN YWludGFpbmluZyB0aGUgY2hlY2sgZm9yIHBpeGVsIGZvcm1hdCwgZXZlbiB0aG91Z2ggY29tcHJl c3NlZCBmYiBvZiBmb3JtYXQKPiBvdGhlciBSR0I4ODg4IHNob3VsZCBub3QgaGF2ZSBiZWVuIGNy ZWF0ZWQsIHRvIGJlIG9uIHRoZSBzYWZlciBzaWRlLgo+IEFkZGVkIGNoZWNrcyBmb3IgQkdSODg4 OCB0b28uCj4gQml0bWFzayBpcyBiZWluZyB1c2VkIGZvciB0aGUgcHJvcGVydHkgdG8gYWNjb21t b2RhdGUgMiBtb3JlIG9wdGlvbnMKPiBleHBlY3RlZCB0byBiZSBhZGRlZCBpbiBmdXR1cmUuCj4g Cj4gVGhpcyBwYXRjaCBkZXBlbmRzIG9uIFZpbGxlJ3MgcGF0Y2ggc2VyaWVzIG9uIGZiLT5vZmZz ZXRzLgo+IChSZWY6IGdpdDovL2dpdGh1Yi5jb20vdnN5cmphbGEvbGludXguZ2l0IGZiX29mZnNl dHNfMTQpCj4gCj4gVGVzdGluZyBpcyBpbiBwcm9ncmVzcyBmb3IgdjIgb2YgdGhlIHBhdGNoLgo+ IAo+IFNpZ25lZC1vZmYtYnk6IFZhbmRhbmEgS2FubmFuIDx2YW5kYW5hLmthbm5hbkBpbnRlbC5j b20+Cj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ Cj4gQ2M6IFNtaXRoLCBHYXJ5IEsgPGdhcnkuay5zbWl0aEBpbnRlbC5jb20+Cj4gLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAgfCAgMjIgKysrKysKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAgMjQgKysrKystCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgIHwgMTM1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAg ICAgICB8ICAxMCArKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgICAg ICAgfCAgMjcgKysrKystCj4gIDYgZmlsZXMgY2hhbmdlZCwgMjEzIGluc2VydGlvbnMoKyksIDYg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggMzJmMDU5Ny4u YmEzMmU3YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xOTAxLDYgKzE5MDEs NyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAo+ICAJc3RydWN0IGRybV9wcm9wZXJ0 eSAqYnJvYWRjYXN0X3JnYl9wcm9wZXJ0eTsKPiAgCXN0cnVjdCBkcm1fcHJvcGVydHkgKmZvcmNl X2F1ZGlvX3Byb3BlcnR5Owo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqcmVuZGVyX2NvbXBfcHJv cGVydHk7Cj4gIAo+ICAJLyogaGRhL2k5MTUgYXVkaW8gY29tcG9uZW50ICovCj4gIAlzdHJ1Y3Qg aTkxNV9hdWRpb19jb21wb25lbnQgKmF1ZGlvX2NvbXBvbmVudDsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmgKPiBpbmRleCAyNWUyMjliLi5kYTQ1Y2M5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oCj4gQEAgLTU4MTYsNiArNTgxNiwyOCBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsK PiAgCQkJX0lEKGlkLCBfUFNfRUNDX1NUQVRfMUEsIF9QU19FQ0NfU1RBVF8yQSksICAgXAo+ICAJ CQlfSUQoaWQsIF9QU19FQ0NfU1RBVF8xQiwgX1BTX0VDQ19TVEFUXzJCKSkKPiAgCj4gKyNkZWZp bmUgUExBTkVfQVVYX0RJU1RfMV9BCQkweDcwMWMwCj4gKyNkZWZpbmUgUExBTkVfQVVYX0RJU1Rf Ml9BCQkweDcwMmMwCj4gKyNkZWZpbmUgUExBTkVfQVVYX0RJU1RfMV9CCQkweDcxMWMwCj4gKyNk ZWZpbmUgUExBTkVfQVVYX0RJU1RfMl9CCQkweDcxMmMwCj4gKyNkZWZpbmUgX1BMQU5FX0FVWF9E SVNUXzEocGlwZSkgXAo+ICsJCQlfUElQRShwaXBlLCBQTEFORV9BVVhfRElTVF8xX0EsIFBMQU5F X0FVWF9ESVNUXzFfQikKPiArI2RlZmluZSBfUExBTkVfQVVYX0RJU1RfMihwaXBlKSBcCj4gKwkJ CV9QSVBFKHBpcGUsIFBMQU5FX0FVWF9ESVNUXzJfQSwgUExBTkVfQVVYX0RJU1RfMl9CKQo+ICsj ZGVmaW5lIFBMQU5FX0FVWF9ESVNUKHBpcGUsIHBsYW5lKSAgICAgXAo+ICsJX01NSU9fUExBTkUo cGxhbmUsIF9QTEFORV9BVVhfRElTVF8xKHBpcGUpLCBfUExBTkVfQVVYX0RJU1RfMihwaXBlKSkK PiArCj4gKyNkZWZpbmUgUExBTkVfQVVYX09GRlNFVF8xX0EJCTB4NzAxYzQKPiArI2RlZmluZSBQ TEFORV9BVVhfT0ZGU0VUXzJfQQkJMHg3MDJjNAo+ICsjZGVmaW5lIFBMQU5FX0FVWF9PRkZTRVRf MV9CCQkweDcxMWM0Cj4gKyNkZWZpbmUgUExBTkVfQVVYX09GRlNFVF8yX0IJCTB4NzEyYzQKPiAr I2RlZmluZSBfUExBTkVfQVVYX09GRlNFVF8xKHBpcGUpICAgICAgIFwKPiArCQlfUElQRShwaXBl LCBQTEFORV9BVVhfT0ZGU0VUXzFfQSwgUExBTkVfQVVYX09GRlNFVF8xX0IpCj4gKyNkZWZpbmUg X1BMQU5FX0FVWF9PRkZTRVRfMihwaXBlKSAgICAgICBcCj4gKwkJX1BJUEUocGlwZSwgUExBTkVf QVVYX09GRlNFVF8yX0EsIFBMQU5FX0FVWF9PRkZTRVRfMl9CKQo+ICsjZGVmaW5lIFBMQU5FX0FV WF9PRkZTRVQocGlwZSwgcGxhbmUpICAgXAo+ICsJX01NSU9fUExBTkUocGxhbmUsIF9QTEFORV9B VVhfT0ZGU0VUXzEocGlwZSksIF9QTEFORV9BVVhfT0ZGU0VUXzIocGlwZSkpCj4gKwo+ICAvKiBs ZWdhY3kgcGFsZXR0ZSAqLwo+ICAjZGVmaW5lIF9MR0NfUEFMRVRURV9BICAgICAgICAgICAweDRh MDAwCj4gICNkZWZpbmUgX0xHQ19QQUxFVFRFX0IgICAgICAgICAgIDB4NGE4MDAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IGluZGV4IDdkZTc3MjEuLjI2MTdi NzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5l LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IEBA IC0yMjgsOCArMjI4LDE2IEBAIGludGVsX3BsYW5lX2F0b21pY19nZXRfcHJvcGVydHkoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwK PiAgCQkJCXVpbnQ2NF90ICp2YWwpCj4gIHsKPiAtCURSTV9ERUJVR19LTVMoIlVua25vd24gcGxh bmUgcHJvcGVydHkgJyVzJ1xuIiwgcHJvcGVydHktPm5hbWUpOwo+IC0JcmV0dXJuIC1FSU5WQUw7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdGF0ZS0+cGxhbmUtPmRl di0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3N0YXRl ID0gdG9faW50ZWxfcGxhbmVfc3RhdGUoc3RhdGUpOwo+ICsKPiArCWlmIChwcm9wZXJ0eSA9PSBk ZXZfcHJpdi0+cmVuZGVyX2NvbXBfcHJvcGVydHkpIHsKPiArCQkqdmFsID0gaW50ZWxfc3RhdGUt PnJlbmRlcl9jb21wX2VuYWJsZTsKPiArCX0gZWxzZSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiVW5r bm93biBwbGFuZSBwcm9wZXJ0eSAnJXMnXG4iLCBwcm9wZXJ0eS0+bmFtZSk7Cj4gKwkJcmV0dXJu IC1FSU5WQUw7Cj4gKwl9Cj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTI1MCw2 ICsyNTgsMTQgQEAgaW50ZWxfcGxhbmVfYXRvbWljX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiAgCQkJCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAo+ICAJCQkJ dWludDY0X3QgdmFsKQo+ICB7Cj4gLQlEUk1fREVCVUdfS01TKCJVbmtub3duIHBsYW5lIHByb3Bl cnR5ICclcydcbiIsIHByb3BlcnR5LT5uYW1lKTsKPiAtCXJldHVybiAtRUlOVkFMOwo+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RhdGUtPnBsYW5lLT5kZXYtPmRldl9w cml2YXRlOwo+ICsJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2lu dGVsX3BsYW5lX3N0YXRlKHN0YXRlKTsKPiArCj4gKwlpZiAocHJvcGVydHkgPT0gZGV2X3ByaXYt PnJlbmRlcl9jb21wX3Byb3BlcnR5KSB7Cj4gKwkJaW50ZWxfc3RhdGUtPnJlbmRlcl9jb21wX2Vu YWJsZSA9IHZhbDsKPiArCX0gZWxzZSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiVW5rbm93biBwbGFu ZSBwcm9wZXJ0eSAnJXMnXG4iLCBwcm9wZXJ0eS0+bmFtZSk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4gKwl9Cj4gKwlyZXR1cm4gMDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiBpbmRleCBiZmNjMmViLi45YjJmZjIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+IEBAIC0xMTcsNiArMTE3LDkgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGZp dF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBib29sIGZvcmNlKTsKPiAgc3RhdGlj IHZvaWQgaXJvbmxha2VfcGZpdF9lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpOwo+ICBz dGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwo+ICBzdGF0aWMgdm9pZCBpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5X25vYXRvbWlj KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gK3N0YXRpYyBpbnQgc2tsX2NoZWNrX2NvbXByZXNz aW9uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZSwKPiArCQllbnVtIHBpcGUgcGlwZSwgaW50IHgsIGludCB5KTsKPiAgCj4g IHR5cGVkZWYgc3RydWN0IHsKPiAgCWludAltaW4sIG1heDsKPiBAQCAtMzA0NSw3ICszMDQ4LDcg QEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCXUzMiBwbGFu ZV9jdGwsIHN0cmlkZV9kaXYsIHN0cmlkZTsKPiAgCXUzMiB0aWxlX2hlaWdodCwgcGxhbmVfb2Zm c2V0LCBwbGFuZV9zaXplOwo+IC0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUt PmJhc2Uucm90YXRpb247Cj4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+ YmFzZS5yb3RhdGlvbiwgcmVuZGVyX2NvbXA7Cj4gIAlpbnQgeF9vZmZzZXQsIHlfb2Zmc2V0Owo+ ICAJdTMyIHN1cmZfYWRkcjsKPiAgCWludCBzY2FsZXJfaWQgPSBwbGFuZV9zdGF0ZS0+c2NhbGVy X2lkOwo+IEBAIC0zMDU3LDYgKzMwNjAsOSBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9w cmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJaW50IGRzdF95ID0gcGxh bmVfc3RhdGUtPmRzdC55MTsKPiAgCWludCBkc3RfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+ZHN0KTsKPiAgCWludCBkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUt PmRzdCk7Cj4gKwl1bnNpZ25lZCBsb25nIGF1eF9kaXN0ID0gMDsKPiArCXUzMiBhdXhfeF9vZmZz ZXQgPSAwLCBhdXhfeV9vZmZzZXQgPSAwLCBhdXhfc3RyaWRlID0gMDsKPiArCXUzMiB0aWxlX3Jv d19hZGp1c3RtZW50ID0gMCwgaGVpZ2h0X2luX21lbSA9IDA7Cj4gIAo+ICAJcGxhbmVfY3RsID0g UExBTkVfQ1RMX0VOQUJMRSB8Cj4gIAkJICAgIFBMQU5FX0NUTF9QSVBFX0dBTU1BX0VOQUJMRSB8 Cj4gQEAgLTMwOTMsMTAgKzMwOTksMjggQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJp bWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCWludGVsX2NydGMtPmFkanVz dGVkX3ggPSB4X29mZnNldDsKPiAgCWludGVsX2NydGMtPmFkanVzdGVkX3kgPSB5X29mZnNldDsK PiAgCj4gKwlyZW5kZXJfY29tcCA9IHBsYW5lX3N0YXRlLT5yZW5kZXJfY29tcF9lbmFibGU7Cj4g KwlpZiAocmVuZGVyX2NvbXApIHsKPiArCQlpbnQgY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAo ZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4gKwo+ICsJCXRpbGVfaGVpZ2h0ID0gaW50ZWxfdGlsZV9o ZWlnaHQoZGV2X3ByaXYsIGZiLT5tb2RpZmllclswXSwgY3BwKTsKPiArCj4gKwkJaGVpZ2h0X2lu X21lbSA9IChmYi0+b2Zmc2V0c1sxXS9mYi0+cGl0Y2hlc1swXSk7Cj4gKwkJdGlsZV9yb3dfYWRq dXN0bWVudCA9IGhlaWdodF9pbl9tZW0gJSB0aWxlX2hlaWdodDsKPiArCQlhdXhfZGlzdCA9IChm Yi0+cGl0Y2hlc1swXSAqCj4gKwkJCQkoaGVpZ2h0X2luX21lbSAtIHRpbGVfcm93X2FkanVzdG1l bnQpKTsKPiArCQlhdXhfc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShmYiwgMSwgcm90YXRpb24p OwoKVGhpcyBzdHVmZiBzaG91bGRuJ3QgYmUgaGVyZSBpZiBteSBzdHVmZiBpcyB1c2VkIGFzIGEg YmFzZS4gTGlrZSBmb3IKbnYxMiwgaXQgc2hvdWxkIGFsbCBiZSBjb21wdXRlZCB1cGZyb250LgoK SSBzaG91bGQgcHJvYmFibHkgZ28gcmVhZCB1cCBvbiByZW5kZXIgY29tcHJlc3Npb24gc28gSSdk IGFjdHVhbGx5IGtub3cKd2hhdCB0aGUgQVVYIG9mZnNldHMgYWN0dWFsbHkgbWVhbiBmb3IgaXQu Cgo+ICsJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfREVDT01QUkVTU0lPTl9FTkFCTEU7Cj4gKwl9 IGVsc2Ugewo+ICsJCXBsYW5lX2N0bCAmPSB+UExBTkVfQ1RMX0RFQ09NUFJFU1NJT05fRU5BQkxF Owo+ICsJfQo+ICsKPiAgCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIDApLCBwbGFuZV9jdGwp Owo+ICAJSTkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgMCksIHBsYW5lX29mZnNldCk7Cj4g IAlJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgMCksIHBsYW5lX3NpemUpOwo+ICAJSTkxNV9X UklURShQTEFORV9TVFJJREUocGlwZSwgMCksIHN0cmlkZSk7Cj4gKwlJOTE1X1dSSVRFKFBMQU5F X0FVWF9ESVNUKHBpcGUsIDApLCBhdXhfZGlzdCB8IGF1eF9zdHJpZGUpOwo+ICsJSTkxNV9XUklU RShQTEFORV9BVVhfT0ZGU0VUKHBpcGUsIDApLCBhdXhfeV9vZmZzZXQ8PDE2IHwgYXV4X3hfb2Zm c2V0KTsKPiAgCj4gIAlpZiAoc2NhbGVyX2lkID49IDApIHsKPiAgCQl1aW50MzJfdCBwc19jdHJs ID0gMDsKPiBAQCAtMTE4NTYsNiArMTE4ODAsMTcgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19j YWxjX2NoYW5nZXMoc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQlyZXR1 cm4gcmV0Owo+ICAJfQo+ICAKPiArCWlmIChmYiAmJiB0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFu ZV9zdGF0ZSktPgo+ICsJCQlyZW5kZXJfY29tcF9lbmFibGUpIHsKPiArCQlyZXQgPSBza2xfY2hl Y2tfY29tcHJlc3Npb24oZGV2LAo+ICsJCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmVfc3Rh dGUpLAo+ICsJCQkJaW50ZWxfY3J0Yy0+cGlwZSwgY3J0Yy0+eCwgY3J0Yy0+eSk7Cj4gKwkJaWYg KHJldCkgewo+ICsJCQlEUk1fREVCVUdfS01TKCJSZW5kZXIgY29tcHIgY2hlY2tzIGZhaWxlZFxu Iik7Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsJfQo+ICsKPiAgCXdhc192aXNpYmxlID0g b2xkX3BsYW5lX3N0YXRlLT52aXNpYmxlOwo+ICAJdmlzaWJsZSA9IHRvX2ludGVsX3BsYW5lX3N0 YXRlKHBsYW5lX3N0YXRlKS0+dmlzaWJsZTsKPiAgCj4gQEAgLTEzOTcyLDYgKzE0MDA3LDYzIEBA IHNrbF9tYXhfc2NhbGUoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsIHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlCj4gIAlyZXR1cm4gbWF4X3NjYWxlOwo+ICB9Cj4gIAo+ ICtzdGF0aWMgaW50IHNrbF9jaGVja19jb21wcmVzc2lvbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICsJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4gKwkJZW51bSBw aXBlIHBpcGUsIGludCB4LCBpbnQgeSkKPiArewo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCWludCB4X29mZnNldDsKPiArCWludCBzcmNf dyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+c3JjKSA+PiAxNjsKPiArCj4gKwlpZiAo IUlTX1NLWUxBS0UoZGV2KSAmJiAhSVNfQlJPWFRPTihkZXYpKSB7Cj4gKwkJRFJNX0RFQlVHX0tN UygiUkMgc3VwcG9ydCBvbiBDTkwrIG5lZWRzIHRvIGJlIHJldmlzaXRlZFxuIik7Cj4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIFRPRE86Cj4gKwkgKiAxLiBEaXNh YmxlIHN0ZXJlbyAzRCB3aGVuIHJlbmRlciBkZWNvbXAgaXMgZW5hYmxlZCAoYml0IDc6NikKPiAr CSAqIDIuIFJlbmRlciBkZWNvbXByZXNzaW9uIG11c3Qgbm90IGJlIHVzZWQgaW4gVlRkIHBhc3Mt dGhyb3VnaCBtb2RlCj4gKwkgKiAzLiBQcm9ncmFtIGhhc2hpbmcgc2VsZWN0IENISUNLRU5fTUlT QzEgYml0IDE1Cj4gKwkgKi8KPiArCj4gKwlpZiAocGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24g Jgo+ICsJCX4oQklUKERSTV9ST1RBVEVfMCkgfCBCSVQoRFJNX1JPVEFURV8xODApKSkgewo+ICsJ CURSTV9ERUJVR19LTVMoIlJDIHN1cHBvcnQgb25seSB3aXRoIDAvMTgwIGRlZ3JlZSByb3RhdGlv blxuIik7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJaWYgKChmYi0+bW9kaWZp ZXJbMF0gIT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQpICYmCj4gKwkJCShmYi0+bW9kaWZpZXJb MF0gIT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKSkgewo+ICsJCURSTV9ERUJVR19LTVMoIlJD IHN1cHBvcnRlZCBvbmx5IHdpdGggWS10aWxlXG4iKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiAr CX0KPiArCj4gKwlpZiAoKGZiLT5waXhlbF9mb3JtYXQgIT0gRFJNX0ZPUk1BVF9YQkdSODg4OCkg JiYKPiArCQkoZmItPnBpeGVsX2Zvcm1hdCAhPSBEUk1fRk9STUFUX0FCR1I4ODg4KSAmJgo+ICsJ CShmYi0+cGl4ZWxfZm9ybWF0ICE9IERSTV9GT1JNQVRfWFJHQjg4ODgpICYmCj4gKwkJKGZiLT5w aXhlbF9mb3JtYXQgIT0gRFJNX0ZPUk1BVF9BUkdCODg4OCkpIHsKPiArCQlEUk1fREVCVUdfS01T KCJSQyBzdXBwb3J0ZWQgb25seSB3aXRoIFJHQjg4ODggZm9ybWF0c1xuIik7Cj4gKwkJcmV0dXJu IC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIEZvciBTS0wgJiBCWFQsCj4gKwkgKiBX aGVuIHRoZSByZW5kZXIgY29tcHJlc3Npb24gaXMgZW5hYmxlZCB3aXRoIHBsYW5lCj4gKwkgKiB3 aWR0aCBncmVhdGVyIHRoYW4gMzg0MCBhbmQgaG9yaXpvbnRhbCBwYW5uaW5nLAo+ICsJICogdGhl IHN0cmlkZSBwcm9ncmFtbWVkIGluIHRoZSBQTEFORV9TVFJJREUgcmVnaXN0ZXIKPiArCSAqIG11 c3QgYmUgbXVsdGlwbGUgb2YgNC4KPiArCSAqLwo+ICsJeF9vZmZzZXQgPSB4Owo+ICsKPiArCWlm IChzcmNfdyA+IDM4NDAgJiYgeF9vZmZzZXQgIT0gMCkgewo+ICsJCURSTV9ERUJVR19LTVMoIlJD OiB3aWR0aCA+IDM4NDAsIGhvcml6b250YWwgcGFubmluZ1xuIik7Cj4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQKPiAgaW50 ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCQkJICBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiBAQCAtMTQxMjYsNiArMTQyMTgs OSBAQCBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0 KQo+ICAJCWludGVsX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShkZXYsIHByaW1hcnkpOwo+ICAK PiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+ICsJCWludGVsX2NyZWF0ZV9yZW5k ZXJfY29tcF9wcm9wZXJ0eShkZXYsIHByaW1hcnkpOwo+ICsKPiAgCWRybV9wbGFuZV9oZWxwZXJf YWRkKCZwcmltYXJ5LT5iYXNlLCAmaW50ZWxfcGxhbmVfaGVscGVyX2Z1bmNzKTsKPiAgCj4gIAly ZXR1cm4gJnByaW1hcnktPmJhc2U7Cj4gQEAgLTE0MTU1LDYgKzE0MjUwLDQ0IEBAIHZvaWQgaW50 ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBpbnRlbF9wbGFuZSAqCj4gIAkJCQlwbGFuZS0+YmFzZS5zdGF0ZS0+cm90YXRpb24pOwo+ICB9 Cj4gIAo+ICt2b2lkIGludGVsX2NyZWF0ZV9yZW5kZXJfY29tcF9wcm9wZXJ0eShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICsJCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCj4gK3sKPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlz dHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUgPSAmcGxhbmUtPmJhc2U7Cj4gKwl1bnNpZ25lZCBs b25nIGZsYWdzID0gQklUKENPTVBfVU5DT01QUkVTU0VEKTsKPiArCj4gKwlzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCByY19zdGF0dXNbXSA9IHsKPiArCQl7IENPTVBfVU5D T01QUkVTU0VELCAgICJVbmNvbXByZXNzZWQvbm90IGNhcGFibGUiIH0sCj4gKwkJeyBDT01QX1JF TkRFUiwgICJPbmx5IHJlbmRlciBkZWNvbXByZXNzaW9uIiB9LAo+ICsJfTsKPiArCj4gKwlpZiAo cGxhbmUtPnBpcGUgIT0gUElQRV9DIHx8Cj4gKwkJKGRybV9wbGFuZS0+dHlwZSA9PSBEUk1fUExB TkVfVFlQRV9QUklNQVJZIHx8Cj4gKwkJCShkcm1fcGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZ UEVfT1ZFUkxBWSAmJgo+ICsJCQkgcGxhbmUtPnBsYW5lID09IFBMQU5FX0EpKSkgewo+ICsJCWZs YWdzIHw9IEJJVChDT01QX1JFTkRFUik7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFkZXZfcHJpdi0+cmVu ZGVyX2NvbXBfcHJvcGVydHkpIHsKPiArCQlkZXZfcHJpdi0+cmVuZGVyX2NvbXBfcHJvcGVydHkg PQo+ICsJCQlkcm1fcHJvcGVydHlfY3JlYXRlX2JpdG1hc2soZGV2LCAwLAo+ICsJCQkJCSJyZW5k ZXIgY29tcHJlc3Npb24iLAo+ICsJCQkJCXJjX3N0YXR1cywgQVJSQVlfU0laRShyY19zdGF0dXMp LAo+ICsJCQkJCWZsYWdzKTsKPiArCQlpZiAoIWRldl9wcml2LT5yZW5kZXJfY29tcF9wcm9wZXJ0 eSkgewo+ICsJCQlEUk1fRVJST1IoIlJDOiBGYWlsZWQgdG8gY3JlYXRlIHByb3BlcnR5XG4iKTsK PiArCQkJcmV0dXJuOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAoZGV2X3ByaXYtPnJlbmRlcl9j b21wX3Byb3BlcnR5KSB7Cj4gKwkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5i YXNlLmJhc2UsCj4gKwkJCQlkZXZfcHJpdi0+cmVuZGVyX2NvbXBfcHJvcGVydHksIDApOwo+ICsJ fQo+ICsJZGV2LT5tb2RlX2NvbmZpZy5hbGxvd19hdXhfcGxhbmUgPSB0cnVlOwo+ICt9Cj4gKwo+ ICBzdGF0aWMgaW50Cj4gIGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKPiAgCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggY2YyNzk4OS4uMzgwMDZlNyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTMwMyw2ICszMDMsMTAgQEAgc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSB7Cj4gIAlib29sIHNraXBfaW50ZXJtZWRpYXRlX3dtOwo+ICB9Owo+ICAK PiArLyogcmVuZGVyIGNvbXByZXNzaW9uIHByb3BlcnR5IGJpdHMgKi8KPiArI2RlZmluZSBDT01Q X1VOQ09NUFJFU1NFRCAgICAgICAgICAwCj4gKyNkZWZpbmUgQ09NUF9SRU5ERVIgICAgICAgICAg ICAgICAgMQo+ICsKPiAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHsKPiAgCXN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgYmFzZTsKPiAgCXN0cnVjdCBkcm1fcmVjdCBzcmM7Cj4gQEAgLTMzNCw2ICsz MzgsOSBAQCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgewo+ICAKPiAgCS8qIGFzeW5jIGZsaXAg cmVsYXRlZCBzdHJ1Y3R1cmVzICovCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKndh aXRfcmVxOwo+ICsKPiArCS8qIFJlbmRlciBjb21wcmVzc2lvbiAqLwo+ICsJdW5zaWduZWQgaW50 IHJlbmRlcl9jb21wX2VuYWJsZTsKPiAgfTsKPiAgCj4gIHN0cnVjdCBpbnRlbF9pbml0aWFsX3Bs YW5lX2NvbmZpZyB7Cj4gQEAgLTExOTYsNiArMTIwMyw5IEBAIGludGVsX3JvdGF0aW9uXzkwX29y XzI3MCh1bnNpZ25lZCBpbnQgcm90YXRpb24pCj4gIHZvaWQgaW50ZWxfY3JlYXRlX3JvdGF0aW9u X3Byb3BlcnR5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkJc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSk7Cj4gIAo+ICt2b2lkIGludGVsX2NyZWF0ZV9yZW5kZXJfY29tcF9wcm9wZXJ0 eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUp Owo+ICsKPiAgdm9pZCBhc3NlcnRfcGNoX3RyYW5zY29kZXJfZGlzYWJsZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgIGVudW0gcGlwZSBwaXBlKTsKPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBpbmRleCAwZjNlMjMwLi4yNTkzYmNmIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBAQCAtMTkzLDcgKzE5Myw3IEBA IHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLAo+ICAJY29uc3Qg c3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tl eTsKPiAgCXUzMiBzdXJmX2FkZHI7Cj4gIAl1MzIgdGlsZV9oZWlnaHQsIHBsYW5lX29mZnNldCwg cGxhbmVfc2l6ZTsKPiAtCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNl LnJvdGF0aW9uOwo+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uu cm90YXRpb24sIHJlbmRlcl9jb21wOwo+ICAJaW50IHhfb2Zmc2V0LCB5X29mZnNldDsKPiAgCWlu dCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+ZHN0LngxOwo+ICAJaW50IGNydGNfeSA9IHBsYW5lX3N0 YXRlLT5kc3QueTE7Cj4gQEAgLTIwNSw2ICsyMDUsOSBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVj dCBkcm1fcGxhbmUgKmRybV9wbGFuZSwKPiAgCXVpbnQzMl90IHNyY19oID0gZHJtX3JlY3RfaGVp Z2h0KCZwbGFuZV9zdGF0ZS0+c3JjKSA+PiAxNjsKPiAgCWNvbnN0IHN0cnVjdCBpbnRlbF9zY2Fs ZXIgKnNjYWxlciA9Cj4gIAkJJmNydGNfc3RhdGUtPnNjYWxlcl9zdGF0ZS5zY2FsZXJzW3BsYW5l X3N0YXRlLT5zY2FsZXJfaWRdOwo+ICsJdW5zaWduZWQgbG9uZyBhdXhfZGlzdCA9IDA7Cj4gKwl1 MzIgYXV4X3hfb2Zmc2V0ID0gMCwgYXV4X3lfb2Zmc2V0ID0gMCwgYXV4X3N0cmlkZSA9IDA7Cj4g Kwl1MzIgdGlsZV9yb3dfYWRqdXN0bWVudCA9IDAsIGhlaWdodF9pbl9tZW0gPSAwOwo+ICAKPiAg CXBsYW5lX2N0bCA9IFBMQU5FX0NUTF9FTkFCTEUgfAo+ICAJCVBMQU5FX0NUTF9QSVBFX0dBTU1B X0VOQUJMRSB8Cj4gQEAgLTI1NCw5ICsyNTcsMjggQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3Qg ZHJtX3BsYW5lICpkcm1fcGxhbmUsCj4gIAl9Cj4gIAlwbGFuZV9vZmZzZXQgPSB5X29mZnNldCA8 PCAxNiB8IHhfb2Zmc2V0Owo+ICAKPiArCXJlbmRlcl9jb21wID0gcGxhbmVfc3RhdGUtPnJlbmRl cl9jb21wX2VuYWJsZTsKPiArCWlmIChyZW5kZXJfY29tcCkgewo+ICsJCWludCBjcHAgPSBkcm1f Zm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiArCj4gKwkJdGlsZV9oZWln aHQgPSBpbnRlbF90aWxlX2hlaWdodChkZXZfcHJpdiwgZmItPm1vZGlmaWVyWzBdLCBjcHApOwo+ ICsKPiArCQloZWlnaHRfaW5fbWVtID0gKGZiLT5vZmZzZXRzWzFdL2ZiLT5waXRjaGVzWzBdKTsK PiArCQl0aWxlX3Jvd19hZGp1c3RtZW50ID0gaGVpZ2h0X2luX21lbSAlIHRpbGVfaGVpZ2h0Owo+ ICsJCWF1eF9kaXN0ID0gKGZiLT5waXRjaGVzWzBdICoKPiArCQkJCShoZWlnaHRfaW5fbWVtIC0g dGlsZV9yb3dfYWRqdXN0bWVudCkpOwo+ICsJCWF1eF9zdHJpZGUgPSBza2xfcGxhbmVfc3RyaWRl KGZiLCAxLCByb3RhdGlvbik7Cj4gKwkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ERUNPTVBSRVNT SU9OX0VOQUJMRTsKPiArCX0gZWxzZSB7Cj4gKwkJcGxhbmVfY3RsICY9IH5QTEFORV9DVExfREVD T01QUkVTU0lPTl9FTkFCTEU7Cj4gKwl9Cj4gKwo+ICAJSTkxNV9XUklURShQTEFORV9PRkZTRVQo cGlwZSwgcGxhbmUpLCBwbGFuZV9vZmZzZXQpOwo+ICAJSTkxNV9XUklURShQTEFORV9TVFJJREUo cGlwZSwgcGxhbmUpLCBzdHJpZGUpOwo+ICAJSTkxNV9XUklURShQTEFORV9TSVpFKHBpcGUsIHBs YW5lKSwgcGxhbmVfc2l6ZSk7Cj4gKwlJOTE1X1dSSVRFKFBMQU5FX0FVWF9ESVNUKHBpcGUsIHBs YW5lKSwgYXV4X2Rpc3QgfCBhdXhfc3RyaWRlKTsKPiArCUk5MTVfV1JJVEUoUExBTkVfQVVYX09G RlNFVChwaXBlLCBwbGFuZSksCj4gKwkJCWF1eF95X29mZnNldDw8MTYgfCBhdXhfeF9vZmZzZXQp Owo+ICAKPiAgCS8qIHByb2dyYW0gcGxhbmUgc2NhbGVyICovCj4gIAlpZiAocGxhbmVfc3RhdGUt PnNjYWxlcl9pZCA+PSAwKSB7Cj4gQEAgLTExMjAsNiArMTE0Miw5IEBAIGludGVsX3BsYW5lX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUsIGludCBwbGFuZSkKPiAg Cj4gIAlpbnRlbF9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2LCBpbnRlbF9wbGFuZSk7Cj4g IAo+ICsJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCj4gKwkJaW50ZWxfY3JlYXRlX3Jl bmRlcl9jb21wX3Byb3BlcnR5KGRldiwgaW50ZWxfcGxhbmUpOwo+ICsKPiAgCWRybV9wbGFuZV9o ZWxwZXJfYWRkKCZpbnRlbF9wbGFuZS0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7 Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gLS0gCj4gMS45LjEKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50 ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=