From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/2] drm/i915: Use intel_ types more consistently for watermark code Date: Mon, 10 Dec 2018 21:27:45 +0200 Message-ID: <20181210192745.GJ9144@intel.com> References: <20181207005401.13988-1-matthew.d.roper@intel.com> <20181207005401.13988-2-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7B01E6EB74 for ; Mon, 10 Dec 2018 19:27:49 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181207005401.13988-2-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBEZWMgMDYsIDIwMTggYXQgMDQ6NTQ6MDBQTSAtMDgwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBUcnkgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGFib3V0IGludGVsXyogdHlwZXMgcmF0aGVy IHRoYW4gZHJtXyogdHlwZXMKPiBmb3IgbG93ZXItbGV2ZWwgZHJpdmVyIGZ1bmN0aW9ucy4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+ IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDUgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDMyICsrLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAxMCArLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCAyNTAgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAxMzQgaW5zZXJ0aW9ucygrKSwgMTYzIGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDA2ODllNjdjOTY2ZS4u NzQ2OWE3Nzg1MjUzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTI4MSw4ICsy ODEsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZGlzcGxheV9mdW5jcyB7Cj4gIAlpbnQgKCpnZXRfZmlm b19zaXplKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgICAgZW51 bSBpOXh4X3BsYW5lX2lkIGk5eHhfcGxhbmUpOwo+ICAJaW50ICgqY29tcHV0ZV9waXBlX3dtKShz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKTsKPiAtCWludCAoKmNvbXB1dGVfaW50ZXJt ZWRpYXRlX3dtKShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0JCQkJICAgICAgIHN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICsJaW50ICgqY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20p KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAoKV2UgY291bGQgb21pdCB0aGlzIGFyZ3Vt ZW50IHRvbyBzaW5jZSBpdCBjYW4gYmUgZGVyaXZlZCBmcm9tIHRoZSBjcnRjCnN0YXRlLgoKQW55 d2F5cywgcGF0Y2ggaXMKUmV2aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFs YUBsaW51eC5pbnRlbC5jb20+Cgo+ICAJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpuZXdzdGF0ZSk7Cj4gIAl2b2lkICgqaW5pdGlhbF93YXRlcm1hcmtzKShzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUpOwo+IEBAIC0yOTAsNyArMjg5LDcgQEAgc3RydWN0IGRybV9pOTE1X2Rpc3BsYXlfZnVu Y3Mgewo+ICAJCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKTsKPiAgCXZvaWQg KCpvcHRpbWl6ZV93YXRlcm1hcmtzKShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwK PiAgCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKTsKPiAtCWludCAoKmNv bXB1dGVfZ2xvYmFsX3dhdGVybWFya3MpKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7 Cj4gKwlpbnQgKCpjb21wdXRlX2dsb2JhbF93YXRlcm1hcmtzKShzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICpzdGF0ZSk7Cj4gIAl2b2lkICgqdXBkYXRlX3dtKShzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0Yyk7Cj4gIAlpbnQgKCptb2Rlc2V0X2NhbGNfY2RjbGspKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSk7Cj4gIAkvKiBSZXR1cm5zIHRoZSBhY3RpdmUgc3RhdGUgb2YgdGhlIGNydGMs IGFuZCBpZiB0aGUgY3J0YyBpcyBhY3RpdmUsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+IGluZGV4IDA3Yzg2MTg4NGM3MC4uZGI2MDA0YTg4M2M3IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMDY2MSwxMiArMTA2NjEsOSBAQCBzdGF0aWMg dm9pZCBpbnRlbF9jcnRjX2Rlc3Ryb3koc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAgKgo+ICAg KiBSZXR1cm5zIHRydWUgb3IgZmFsc2UuCj4gICAqLwo+IC1zdGF0aWMgYm9vbCBpbnRlbF93bV9u ZWVkX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAtCQkJCSBzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlICpzdGF0ZSkKPiArc3RhdGljIGJvb2wgaW50ZWxfd21fbmVlZF91cGRhdGUoc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpjdXIsCj4gKwkJCQkgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpuZXcpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqbmV3ID0gdG9faW50 ZWxfcGxhbmVfc3RhdGUoc3RhdGUpOwo+IC0Jc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpjdXIg PSB0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpOwo+IC0KPiAgCS8qIFVwZGF0ZSB3 YXRlcm1hcmtzIG9uIHRpbGluZyBvciBzaXplIGNoYW5nZXMuICovCj4gIAlpZiAobmV3LT5iYXNl LnZpc2libGUgIT0gY3VyLT5iYXNlLnZpc2libGUpCj4gIAkJcmV0dXJuIHRydWU7Cj4gQEAgLTEw Nzc1LDcgKzEwNzcyLDggQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCQkvKiBtdXN0IGRp c2FibGUgY3hzciBhcm91bmQgcGxhbmUgZW5hYmxlL2Rpc2FibGUgKi8KPiAgCQlpZiAocGxhbmUt PmlkICE9IFBMQU5FX0NVUlNPUikKPiAgCQkJcGlwZV9jb25maWctPmRpc2FibGVfY3hzciA9IHRy dWU7Cj4gLQl9IGVsc2UgaWYgKGludGVsX3dtX25lZWRfdXBkYXRlKCZwbGFuZS0+YmFzZSwgcGxh bmVfc3RhdGUpKSB7Cj4gKwl9IGVsc2UgaWYgKGludGVsX3dtX25lZWRfdXBkYXRlKHRvX2ludGVs X3BsYW5lX3N0YXRlKHBsYW5lLT5iYXNlLnN0YXRlKSwKPiArCQkJCQl0b19pbnRlbF9wbGFuZV9z dGF0ZShwbGFuZV9zdGF0ZSkpKSB7Cj4gIAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1ICYm ICFJU19HNFgoZGV2X3ByaXYpKSB7Cj4gIAkJCS8qIEZJWE1FIGJvbGxvY2tzICovCj4gIAkJCXBp cGVfY29uZmlnLT51cGRhdGVfd21fcHJlID0gdHJ1ZTsKPiBAQCAtMTA5NTQsOCArMTA5NTIsNyBA QCBzdGF0aWMgaW50IGljbF9jaGVja19udjEyX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPiAgc3RhdGljIGludCBpbnRlbF9jcnRjX2F0b21pY19jaGVjayhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJCQkgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7Cj4gIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gIAlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQo+ICAJCXRvX2ludGVsX2NydGNf c3RhdGUoY3J0Y19zdGF0ZSk7Cj4gQEAgLTExMDA0LDggKzExMDAxLDcgQEAgc3RhdGljIGludCBp bnRlbF9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJICogb2xk IHN0YXRlIGFuZCB0aGUgbmV3IHN0YXRlLiAgV2UgY2FuIHByb2dyYW0gdGhlc2UKPiAgCQkgKiBp bW1lZGlhdGVseS4KPiAgCQkgKi8KPiAtCQlyZXQgPSBkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRl X2ludGVybWVkaWF0ZV93bShkZXYsCj4gLQkJCQkJCQkJaW50ZWxfY3J0YywKPiArCQlyZXQgPSBk ZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX2ludGVybWVkaWF0ZV93bShpbnRlbF9jcnRjLAo+ICAJ CQkJCQkJCXBpcGVfY29uZmlnKTsKPiAgCQlpZiAocmV0KSB7Cj4gIAkJCURSTV9ERUJVR19LTVMo Ik5vIHZhbGlkIGludGVybWVkaWF0ZSBwaXBlIHdhdGVybWFya3MgYXJlIHBvc3NpYmxlXG4iKTsK PiBAQCAtMTE5NjQsNyArMTE5NjAsNyBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfd21fc3RhdGUoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5IHx8ICFu ZXdfc3RhdGUtPmFjdGl2ZSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0Jc2tsX3BpcGVfd21fZ2V0X2h3 X3N0YXRlKGNydGMsICZod193bSk7Cj4gKwlza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoaW50ZWxf Y3J0YywgJmh3X3dtKTsKPiAgCXN3X3dtID0gJnRvX2ludGVsX2NydGNfc3RhdGUobmV3X3N0YXRl KS0+d20uc2tsLm9wdGltYWw7Cj4gIAo+ICAJc2tsX3BpcGVfZGRiX2dldF9od19zdGF0ZShpbnRl bF9jcnRjLCBod19kZGJfeSwgaHdfZGRiX3V2KTsKPiBAQCAtMTI2MTksOSArMTI2MTUsOSBAQCBz dGF0aWMgaW50IGludGVsX21vZGVzZXRfY2hlY2tzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPiAgICogcGhhc2UuICBUaGUgY29kZSBoZXJlIHNob3VsZCBiZSBydW4gYWZ0ZXIgdGhl IHBlci1jcnRjIGFuZCBwZXItcGxhbmUgJ2NoZWNrJwo+ICAgKiBoYW5kbGVycyB0byBlbnN1cmUg dGhhdCBhbGwgZGVyaXZlZCBzdGF0ZSBoYXMgYmVlbiB1cGRhdGVkLgo+ICAgKi8KPiAtc3RhdGlj IGludCBjYWxjX3dhdGVybWFya19kYXRhKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkK PiArc3RhdGljIGludCBjYWxjX3dhdGVybWFya19kYXRhKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsK PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAo+ICAJLyogSXMg dGhlcmUgcGxhdGZvcm0tc3BlY2lmaWMgd2F0ZXJtYXJrIGluZm9ybWF0aW9uIHRvIGNhbGN1bGF0 ZT8gKi8KPiBAQCAtMTI3MTMsNyArMTI3MDksNyBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19j aGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCXJldHVybiByZXQ7Cj4gIAo+ICAJaW50 ZWxfZmJjX2Nob29zZV9jcnRjKGRldl9wcml2LCBpbnRlbF9zdGF0ZSk7Cj4gLQlyZXR1cm4gY2Fs Y193YXRlcm1hcmtfZGF0YShzdGF0ZSk7Cj4gKwlyZXR1cm4gY2FsY193YXRlcm1hcmtfZGF0YShp bnRlbF9zdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX3ByZXBhcmVf Y29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gQEAgLTE1ODQzLDE1ICsxNTgzOSwxNSBA QCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g IAl9Cj4gIAo+ICAJaWYgKElTX0c0WChkZXZfcHJpdikpIHsKPiAtCQlnNHhfd21fZ2V0X2h3X3N0 YXRlKGRldik7Cj4gKwkJZzR4X3dtX2dldF9od19zdGF0ZShkZXZfcHJpdik7Cj4gIAkJZzR4X3dt X3Nhbml0aXplKGRldl9wcml2KTsKPiAgCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJp dikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiAtCQl2bHZfd21fZ2V0X2h3X3N0YXRl KGRldik7Cj4gKwkJdmx2X3dtX2dldF9od19zdGF0ZShkZXZfcHJpdik7Cj4gIAkJdmx2X3dtX3Nh bml0aXplKGRldl9wcml2KTsKPiAgCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 KSB7Cj4gLQkJc2tsX3dtX2dldF9od19zdGF0ZShkZXYpOwo+ICsJCXNrbF93bV9nZXRfaHdfc3Rh dGUoZGV2X3ByaXYpOwo+ICAJfSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSkgewo+ IC0JCWlsa193bV9nZXRfaHdfc3RhdGUoZGV2KTsKPiArCQlpbGtfd21fZ2V0X2h3X3N0YXRlKGRl dl9wcml2KTsKPiAgCX0KPiAgCj4gIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggZjk0YTA0YjRhZDg3Li5hODE3N2NjZjFk NGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0yMjAwLDE2ICsyMjAwLDE2 IEBAIHZvaWQgZ2VuNl9ycHNfYnVzeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owo+ICB2b2lkIGdlbjZfcnBzX3Jlc2V0X2VpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7Cj4gIHZvaWQgZ2VuNl9ycHNfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ICB2b2lkIGdlbjZfcnBzX2Jvb3N0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBz dHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzKTsKPiAtdm9pZCBnNHhfd21fZ2V0X2h3X3N0YXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IC12b2lkIHZsdl93bV9nZXRfaHdfc3RhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7Cj4gLXZvaWQgaWxrX3dtX2dldF9od19zdGF0ZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKPiAtdm9pZCBza2xfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwo+ICt2b2lkIGc0eF93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9pZCB2bHZfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3ZvaWQgaWxrX3dtX2dldF9od19zdGF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICt2b2lkIHNrbF93bV9nZXRfaHdf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBza2xfcGlw ZV9kZGJfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQkgICAgICAg c3RydWN0IHNrbF9kZGJfZW50cnkgKmRkYl95LAo+ICAJCQkgICAgICAgc3RydWN0IHNrbF9kZGJf ZW50cnkgKmRkYl91dik7Cj4gIHZvaWQgc2tsX2RkYl9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24g KmRkYiAvKiBvdXQgKi8pOwo+IC12b2lkIHNrbF9waXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gK3ZvaWQgc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAo+ICAJCQkgICAgICBzdHJ1Y3Qgc2tsX3BpcGVfd20gKm91dCk7Cj4g IHZvaWQgZzR4X3dtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 Cj4gIHZvaWQgdmx2X3dtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggYTI2YjRlZGRkYTI1Li5lZmI4YmNm NzdmYjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtMTM5OSw4ICsxMzk5LDcg QEAgc3RhdGljIGludCBnNHhfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgZzR4X2Nv bXB1dGVfaW50ZXJtZWRpYXRlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJCQkgICAg ICAgc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gK3N0YXRpYyBpbnQgZzR4X2NvbXB1dGVfaW50 ZXJtZWRpYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQkJICAgICAgIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGc0eF93 bV9zdGF0ZSAqaW50ZXJtZWRpYXRlID0gJm5ld19jcnRjX3N0YXRlLT53bS5nNHguaW50ZXJtZWRp YXRlOwo+IEBAIC0yMDMyLDggKzIwMzEsNyBAQCBzdGF0aWMgdm9pZCB2bHZfYXRvbWljX3VwZGF0 ZV9maWZvKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAKPiAgI3VuZGVmIFZM Vl9GSUZPCj4gIAo+IC1zdGF0aWMgaW50IHZsdl9jb21wdXRlX2ludGVybWVkaWF0ZV93bShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0JCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LAo+ICtzdGF0aWMgaW50IHZsdl9jb21wdXRlX2ludGVybWVkaWF0ZV93bShzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKPiAgCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2Ny dGNfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCB2bHZfd21fc3RhdGUgKmludGVybWVkaWF0ZSA9ICZu ZXdfY3J0Y19zdGF0ZS0+d20udmx2LmludGVybWVkaWF0ZTsKPiBAQCAtMjYyNiwxMyArMjYyNCwx MiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGlsa19mYmNfd21fcmVnX21heChjb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIH0KPiAgCj4gIC8qIENhbGN1bGF0ZSB0aGUg bWF4aW11bSBwcmltYXJ5L3Nwcml0ZSBwbGFuZSB3YXRlcm1hcmsgKi8KPiAtc3RhdGljIHVuc2ln bmVkIGludCBpbGtfcGxhbmVfd21fbWF4KGNvbnN0IHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g K3N0YXRpYyB1bnNpZ25lZCBpbnQgaWxrX3BsYW5lX3dtX21heChjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgICAgIGludCBsZXZlbCwKPiAgCQkJCSAgICAg Y29uc3Qgc3RydWN0IGludGVsX3dtX2NvbmZpZyAqY29uZmlnLAo+ICAJCQkJICAgICBlbnVtIGlu dGVsX2RkYl9wYXJ0aXRpb25pbmcgZGRiX3BhcnRpdGlvbmluZywKPiAgCQkJCSAgICAgYm9vbCBp c19zcHJpdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKPiAgCXVuc2lnbmVkIGludCBmaWZvX3NpemUgPSBpbGtfZGlzcGxheV9maWZv X3NpemUoZGV2X3ByaXYpOwo+ICAKPiAgCS8qIGlmIHNwcml0ZXMgYXJlbid0IGVuYWJsZWQsIHNw cml0ZXMgZ2V0IG5vdGhpbmcgKi8KPiBAQCAtMjY2OCw3ICsyNjY1LDcgQEAgc3RhdGljIHVuc2ln bmVkIGludCBpbGtfcGxhbmVfd21fbWF4KGNvbnN0IHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g IH0KPiAgCj4gIC8qIENhbGN1bGF0ZSB0aGUgbWF4aW11bSBjdXJzb3IgcGxhbmUgd2F0ZXJtYXJr ICovCj4gLXN0YXRpYyB1bnNpZ25lZCBpbnQgaWxrX2N1cnNvcl93bV9tYXgoY29uc3Qgc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiArc3RhdGljIHVuc2lnbmVkIGludCBpbGtfY3Vyc29yX3dtX21h eChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgICAgICBp bnQgbGV2ZWwsCj4gIAkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfd21fY29uZmlnICpjb25m aWcpCj4gIHsKPiBAQCAtMjY3NywxOSArMjY3NCwxOSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGls a19jdXJzb3Jfd21fbWF4KGNvbnN0IHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJcmV0dXJu IDY0Owo+ICAKPiAgCS8qIG90aGVyd2lzZSBqdXN0IHJlcG9ydCBtYXggdGhhdCByZWdpc3RlcnMg Y2FuIGhvbGQgKi8KPiAtCXJldHVybiBpbGtfY3Vyc29yX3dtX3JlZ19tYXgodG9faTkxNShkZXYp LCBsZXZlbCk7Cj4gKwlyZXR1cm4gaWxrX2N1cnNvcl93bV9yZWdfbWF4KGRldl9wcml2LCBsZXZl bCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGlsa19jb21wdXRlX3dtX21heGltdW1zKGNvbnN0 IHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gK3N0YXRpYyB2b2lkIGlsa19jb21wdXRlX3dtX21h eGltdW1zKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCSAg ICBpbnQgbGV2ZWwsCj4gIAkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX3dtX2NvbmZpZyAqY29u ZmlnLAo+ICAJCQkJICAgIGVudW0gaW50ZWxfZGRiX3BhcnRpdGlvbmluZyBkZGJfcGFydGl0aW9u aW5nLAo+ICAJCQkJICAgIHN0cnVjdCBpbGtfd21fbWF4aW11bXMgKm1heCkKPiAgewo+IC0JbWF4 LT5wcmkgPSBpbGtfcGxhbmVfd21fbWF4KGRldiwgbGV2ZWwsIGNvbmZpZywgZGRiX3BhcnRpdGlv bmluZywgZmFsc2UpOwo+IC0JbWF4LT5zcHIgPSBpbGtfcGxhbmVfd21fbWF4KGRldiwgbGV2ZWws IGNvbmZpZywgZGRiX3BhcnRpdGlvbmluZywgdHJ1ZSk7Cj4gLQltYXgtPmN1ciA9IGlsa19jdXJz b3Jfd21fbWF4KGRldiwgbGV2ZWwsIGNvbmZpZyk7Cj4gLQltYXgtPmZiYyA9IGlsa19mYmNfd21f cmVnX21heCh0b19pOTE1KGRldikpOwo+ICsJbWF4LT5wcmkgPSBpbGtfcGxhbmVfd21fbWF4KGRl dl9wcml2LCBsZXZlbCwgY29uZmlnLCBkZGJfcGFydGl0aW9uaW5nLCBmYWxzZSk7Cj4gKwltYXgt PnNwciA9IGlsa19wbGFuZV93bV9tYXgoZGV2X3ByaXYsIGxldmVsLCBjb25maWcsIGRkYl9wYXJ0 aXRpb25pbmcsIHRydWUpOwo+ICsJbWF4LT5jdXIgPSBpbGtfY3Vyc29yX3dtX21heChkZXZfcHJp diwgbGV2ZWwsIGNvbmZpZyk7Cj4gKwltYXgtPmZiYyA9IGlsa19mYmNfd21fcmVnX21heChkZXZf cHJpdik7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGlsa19jb21wdXRlX3dtX3JlZ19tYXhpbXVt cyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gQEAgLTMwNzMsNyAr MzA3MCw3IEBAIHN0YXRpYyB2b2lkIHNrbF9zZXR1cF93bV9sYXRlbmN5KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWludGVsX3ByaW50X3dtX2xhdGVuY3koZGV2X3ByaXYs ICJHZW45IFBsYW5lIiwgZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5KTsKPiAgfQo+ICAKPiAtc3Rh dGljIGJvb2wgaWxrX3ZhbGlkYXRlX3BpcGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAr c3RhdGljIGJvb2wgaWxrX3ZhbGlkYXRlX3BpcGVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAJCQkJIHN0cnVjdCBpbnRlbF9waXBlX3dtICpwaXBlX3dtKQo+ ICB7Cj4gIAkvKiBMUDAgd2F0ZXJtYXJrIG1heGltdW1zIGRlcGVuZCBvbiB0aGlzIHBpcGUgYWxv bmUgKi8KPiBAQCAtMzA4NSw3ICszMDgyLDcgQEAgc3RhdGljIGJvb2wgaWxrX3ZhbGlkYXRlX3Bp cGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCXN0cnVjdCBpbGtfd21fbWF4aW11bXMg bWF4Owo+ICAKPiAgCS8qIExQMCB3YXRlcm1hcmtzIGFsd2F5cyB1c2UgMS8yIEREQiBwYXJ0aXRp b25pbmcgKi8KPiAtCWlsa19jb21wdXRlX3dtX21heGltdW1zKGRldiwgMCwgJmNvbmZpZywgSU5U RUxfRERCX1BBUlRfMV8yLCAmbWF4KTsKPiArCWlsa19jb21wdXRlX3dtX21heGltdW1zKGRldl9w cml2LCAwLCAmY29uZmlnLCBJTlRFTF9EREJfUEFSVF8xXzIsICZtYXgpOwo+ICAKPiAgCS8qIEF0 IGxlYXN0IExQMCBtdXN0IGJlIHZhbGlkICovCj4gIAlpZiAoIWlsa192YWxpZGF0ZV93bV9sZXZl bCgwLCAmbWF4LCAmcGlwZV93bS0+d21bMF0pKSB7Cj4gQEAgLTMxNTAsNyArMzE0Nyw3IEBAIHN0 YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0 YXRlKQo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJp dikpCj4gIAkJcGlwZV93bS0+bGluZXRpbWUgPSBoc3dfY29tcHV0ZV9saW5ldGltZV93bShjc3Rh dGUpOwo+ICAKPiAtCWlmICghaWxrX3ZhbGlkYXRlX3BpcGVfd20oZGV2LCBwaXBlX3dtKSkKPiAr CWlmICghaWxrX3ZhbGlkYXRlX3BpcGVfd20oZGV2X3ByaXYsIHBpcGVfd20pKQo+ICAJCXJldHVy biAtRUlOVkFMOwo+ICAKPiAgCWlsa19jb21wdXRlX3dtX3JlZ19tYXhpbXVtcyhkZXZfcHJpdiwg MSwgJm1heCk7Cj4gQEAgLTMxODAsMTcgKzMxNzcsMTcgQEAgc3RhdGljIGludCBpbGtfY29tcHV0 ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4gICAqIHN0YXRlIGFu ZCB0aGUgbmV3IHN0YXRlLiAgVGhlc2UgY2FuIGJlIHByb2dyYW1tZWQgdG8gdGhlIGhhcmR3YXJl Cj4gICAqIGltbWVkaWF0ZWx5Lgo+ICAgKi8KPiAtc3RhdGljIGludCBpbGtfY29tcHV0ZV9pbnRl cm1lZGlhdGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAtCQkJCSAgICAgICBzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiArc3RhdGljIGludCBpbGtfY29tcHV0ZV9pbnRlcm1l ZGlhdGVfd20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gIAkJCQkgICAgICAgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKm5ld3N0YXRlKQo+ICB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2NydGMtPmJhc2UuZGV2KTsKPiAgCXN0 cnVjdCBpbnRlbF9waXBlX3dtICphID0gJm5ld3N0YXRlLT53bS5pbGsuaW50ZXJtZWRpYXRlOwo+ ICAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQo+ICAJCXRvX2ludGVs X2F0b21pY19zdGF0ZShuZXdzdGF0ZS0+YmFzZS5zdGF0ZSk7Cj4gIAljb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqb2xkc3RhdGUgPQo+ICAJCWludGVsX2F0b21pY19nZXRfb2xkX2NydGNf c3RhdGUoaW50ZWxfc3RhdGUsIGludGVsX2NydGMpOwo+ICAJY29uc3Qgc3RydWN0IGludGVsX3Bp cGVfd20gKmIgPSAmb2xkc3RhdGUtPndtLmlsay5vcHRpbWFsOwo+IC0JaW50IGxldmVsLCBtYXhf bGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKHRvX2k5MTUoZGV2KSk7Cj4gKwlpbnQgbGV2ZWwsIG1h eF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwo+ICAKPiAgCS8qCj4gIAkgKiBT dGFydCB3aXRoIHRoZSBmaW5hbCwgdGFyZ2V0IHdhdGVybWFya3MsIHRoZW4gY29tYmluZSB3aXRo IHRoZQo+IEBAIC0zMjIzLDcgKzMyMjAsNyBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX2ludGVy bWVkaWF0ZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJICogdGhlcmUncyBubyBzYWZl IHdheSB0byB0cmFuc2l0aW9uIGZyb20gdGhlIG9sZCBzdGF0ZSB0bwo+ICAJICogdGhlIG5ldyBz dGF0ZSwgc28gd2UgbmVlZCB0byBmYWlsIHRoZSBhdG9taWMgdHJhbnNhY3Rpb24uCj4gIAkgKi8K PiAtCWlmICghaWxrX3ZhbGlkYXRlX3BpcGVfd20oZGV2LCBhKSkKPiArCWlmICghaWxrX3ZhbGlk YXRlX3BpcGVfd20oZGV2X3ByaXYsIGEpKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCS8q Cj4gQEAgLTMyMzksNyArMzIzNiw3IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfaW50ZXJtZWRp YXRlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIC8qCj4gICAqIE1lcmdlIHRoZSB3YXRl cm1hcmtzIGZyb20gYWxsIGFjdGl2ZSBwaXBlcyBmb3IgYSBzcGVjaWZpYyBsZXZlbC4KPiAgICov Cj4gLXN0YXRpYyB2b2lkIGlsa19tZXJnZV93bV9sZXZlbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICtzdGF0aWMgdm9pZCBpbGtfbWVyZ2Vfd21fbGV2ZWwoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJCQkgICAgICAgaW50IGxldmVsLAo+ICAJCQkgICAgICAgc3RydWN0 IGludGVsX3dtX2xldmVsICpyZXRfd20pCj4gIHsKPiBAQCAtMzI0Nyw3ICszMjQ0LDcgQEAgc3Rh dGljIHZvaWQgaWxrX21lcmdlX3dtX2xldmVsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ ICAJcmV0X3dtLT5lbmFibGUgPSB0cnVlOwo+ICAKPiAtCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2 LCBpbnRlbF9jcnRjKSB7Cj4gKwlmb3JfZWFjaF9pbnRlbF9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBp bnRlbF9jcnRjKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGludGVsX3BpcGVfd20gKmFjdGl2ZSA9ICZp bnRlbF9jcnRjLT53bS5hY3RpdmUuaWxrOwo+ICAJCWNvbnN0IHN0cnVjdCBpbnRlbF93bV9sZXZl bCAqd20gPSAmYWN0aXZlLT53bVtsZXZlbF07Cj4gIAo+IEBAIC0zMjcyLDEyICszMjY5LDExIEBA IHN0YXRpYyB2b2lkIGlsa19tZXJnZV93bV9sZXZlbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAvKgo+ICAgKiBNZXJnZSBhbGwgbG93IHBvd2VyIHdhdGVybWFya3MgZm9yIGFsbCBhY3RpdmUg cGlwZXMuCj4gICAqLwo+IC1zdGF0aWMgdm9pZCBpbGtfd21fbWVyZ2Uoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiArc3RhdGljIHZvaWQgaWxrX3dtX21lcmdlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZp ZywKPiAgCQkJIGNvbnN0IHN0cnVjdCBpbGtfd21fbWF4aW11bXMgKm1heCwKPiAgCQkJIHN0cnVj dCBpbnRlbF9waXBlX3dtICptZXJnZWQpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxr X3dtX21heF9sZXZlbChkZXZfcHJpdik7Cj4gIAlpbnQgbGFzdF9lbmFibGVkX2xldmVsID0gbWF4 X2xldmVsOwo+ICAKPiBAQCAtMzI5Myw3ICszMjg5LDcgQEAgc3RhdGljIHZvaWQgaWxrX3dtX21l cmdlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlmb3IgKGxldmVsID0gMTsgbGV2ZWwgPD0g bWF4X2xldmVsOyBsZXZlbCsrKSB7Cj4gIAkJc3RydWN0IGludGVsX3dtX2xldmVsICp3bSA9ICZt ZXJnZWQtPndtW2xldmVsXTsKPiAgCj4gLQkJaWxrX21lcmdlX3dtX2xldmVsKGRldiwgbGV2ZWws IHdtKTsKPiArCQlpbGtfbWVyZ2Vfd21fbGV2ZWwoZGV2X3ByaXYsIGxldmVsLCB3bSk7Cj4gIAo+ ICAJCWlmIChsZXZlbCA+IGxhc3RfZW5hYmxlZF9sZXZlbCkKPiAgCQkJd20tPmVuYWJsZSA9IGZh bHNlOwo+IEBAIC0zMzM1LDIyICszMzMxLDIwIEBAIHN0YXRpYyBpbnQgaWxrX3dtX2xwX3RvX2xl dmVsKGludCB3bV9scCwgY29uc3Qgc3RydWN0IGludGVsX3BpcGVfd20gKnBpcGVfd20pCj4gIH0K PiAgCj4gIC8qIFRoZSB2YWx1ZSB3ZSBuZWVkIHRvIHByb2dyYW0gaW50byB0aGUgV01fTFB4IGxh dGVuY3kgZmllbGQgKi8KPiAtc3RhdGljIHVuc2lnbmVkIGludCBpbGtfd21fbHBfbGF0ZW5jeShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgbGV2ZWwpCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQg aWxrX3dtX2xwX2xhdGVuY3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJ CQkJICAgICAgaW50IGxldmVsKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gLQo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8 IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gIAkJcmV0dXJuIDIgKiBsZXZlbDsKPiAgCWVsc2UK PiAgCQlyZXR1cm4gZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5W2xldmVsXTsKPiAgfQo+ICAKPiAt c3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21fcmVzdWx0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICtzdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9yZXN1bHRzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9waXBlX3dtICpt ZXJnZWQsCj4gIAkJCQkgICBlbnVtIGludGVsX2RkYl9wYXJ0aXRpb25pbmcgcGFydGl0aW9uaW5n LAo+ICAJCQkJICAgc3RydWN0IGlsa193bV92YWx1ZXMgKnJlc3VsdHMpCj4gIHsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjOwo+ICAJaW50IGxldmVsLCB3bV9scDsKPiAgCj4gQEAgLTMz NzAsNyArMzM2NCw3IEBAIHN0YXRpYyB2b2lkIGlsa19jb21wdXRlX3dtX3Jlc3VsdHMoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiAgCQkgKiBkaXNhYmxlZC4gRG9pbmcgb3RoZXJ3aXNlIGNvdWxk IGNhdXNlIHVuZGVycnVucy4KPiAgCQkgKi8KPiAgCQlyZXN1bHRzLT53bV9scFt3bV9scCAtIDFd ID0KPiAtCQkJKGlsa193bV9scF9sYXRlbmN5KGRldiwgbGV2ZWwpIDw8IFdNMV9MUF9MQVRFTkNZ X1NISUZUKSB8Cj4gKwkJCShpbGtfd21fbHBfbGF0ZW5jeShkZXZfcHJpdiwgbGV2ZWwpIDw8IFdN MV9MUF9MQVRFTkNZX1NISUZUKSB8Cj4gIAkJCShyLT5wcmlfdmFsIDw8IFdNMV9MUF9TUl9TSElG VCkgfAo+ICAJCQlyLT5jdXJfdmFsOwo+ICAKPiBAQCAtMzM5Niw3ICszMzkwLDcgQEAgc3RhdGlj IHZvaWQgaWxrX2NvbXB1dGVfd21fcmVzdWx0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJ fQo+ICAKPiAgCS8qIExQMCByZWdpc3RlciB2YWx1ZXMgKi8KPiAtCWZvcl9lYWNoX2ludGVsX2Ny dGMoZGV2LCBpbnRlbF9jcnRjKSB7Cj4gKwlmb3JfZWFjaF9pbnRlbF9jcnRjKCZkZXZfcHJpdi0+ ZHJtLCBpbnRlbF9jcnRjKSB7Cj4gIAkJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBl Owo+ICAJCWNvbnN0IHN0cnVjdCBpbnRlbF93bV9sZXZlbCAqciA9Cj4gIAkJCSZpbnRlbF9jcnRj LT53bS5hY3RpdmUuaWxrLndtWzBdOwo+IEBAIC0zNDE1LDExICszNDA5LDEyIEBAIHN0YXRpYyB2 b2lkIGlsa19jb21wdXRlX3dtX3Jlc3VsdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCj4g IC8qIEZpbmQgdGhlIHJlc3VsdCB3aXRoIHRoZSBoaWdoZXN0IGxldmVsIGVuYWJsZWQuIENoZWNr IGZvciBlbmFibGVfZmJjX3dtIGluCj4gICAqIGNhc2UgYm90aCBhcmUgYXQgdGhlIHNhbWUgbGV2 ZWwuIFByZWZlciByMSBpbiBjYXNlIHRoZXkncmUgdGhlIHNhbWUuICovCj4gLXN0YXRpYyBzdHJ1 Y3QgaW50ZWxfcGlwZV93bSAqaWxrX2ZpbmRfYmVzdF9yZXN1bHQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAtCQkJCQkJICBzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqcjEsCj4gLQkJCQkJCSAgc3Ry dWN0IGludGVsX3BpcGVfd20gKnIyKQo+ICtzdGF0aWMgc3RydWN0IGludGVsX3BpcGVfd20gKgo+ ICtpbGtfZmluZF9iZXN0X3Jlc3VsdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gKwkJICAgICBzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqcjEsCj4gKwkJICAgICBzdHJ1Y3QgaW50 ZWxfcGlwZV93bSAqcjIpCj4gIHsKPiAtCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21h eF9sZXZlbCh0b19pOTE1KGRldikpOwo+ICsJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21f bWF4X2xldmVsKGRldl9wcml2KTsKPiAgCWludCBsZXZlbDEgPSAwLCBsZXZlbDIgPSAwOwo+ICAK PiAgCWZvciAobGV2ZWwgPSAxOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiBAQCAt NDMwNywxMCArNDMwMiw5IEBAIGljbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9jc3RhdGUsCj4gIH0KPiAgCj4gIHN0YXRpYyB1aW50 MTZfdAo+IC1za2xfZGRiX21pbl9hbGxvYyhjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpw c3RhdGUsIGNvbnN0IGludCBwbGFuZSkKPiArc2tsX2RkYl9taW5fYWxsb2MoY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwgY29uc3QgaW50IHBsYW5lKQo+ICB7Cj4g LQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBzdGF0ZS0+ZmI7Cj4gLQlzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBzdGF0 ZSk7Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZi Owo+ICAJdWludDMyX3Qgc3JjX3csIHNyY19oOwo+ICAJdWludDMyX3QgbWluX3NjYW5saW5lcyA9 IDg7Cj4gIAl1aW50OF90IHBsYW5lX2JwcDsKPiBAQCAtNDMzNCw4ICs0MzI4LDggQEAgc2tsX2Rk Yl9taW5fYWxsb2MoY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlLCBjb25zdCBp bnQgcGxhbmUpCj4gIAkgKiB0aGUgOTAvMjcwIGRlZ3JlZSBwbGFuZSByb3RhdGlvbiBjYXNlcyAo dG8gbWF0Y2ggdGhlCj4gIAkgKiBHVFQgbWFwcGluZyksIGhlbmNlIG5vIG5lZWQgdG8gYWNjb3Vu dCBmb3Igcm90YXRpb24gaGVyZS4KPiAgCSAqLwo+IC0Jc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgm aW50ZWxfcHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQlzcmNfaCA9IGRybV9yZWN0X2hlaWdo dCgmaW50ZWxfcHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwlzcmNfdyA9IGRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ICsJc3JjX2ggPSBkcm1fcmVjdF9o ZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gIAo+ICAJLyogSGFsdmUgVVYg cGxhbmUgd2lkdGggYW5kIGhlaWdodCBmb3IgTlYxMiAqLwo+ICAJaWYgKHBsYW5lID09IDEpIHsK PiBAQCAtNDM0NSw3ICs0MzM5LDcgQEAgc2tsX2RkYl9taW5fYWxsb2MoY29uc3Qgc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqcHN0YXRlLCBjb25zdCBpbnQgcGxhbmUpCj4gIAo+ICAJcGxhbmVfYnBw ID0gZmItPmZvcm1hdC0+Y3BwW3BsYW5lXTsKPiAgCj4gLQlpZiAoZHJtX3JvdGF0aW9uXzkwX29y XzI3MChwc3RhdGUtPnJvdGF0aW9uKSkgewo+ICsJaWYgKGRybV9yb3RhdGlvbl85MF9vcl8yNzAo cGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24pKSB7Cj4gIAkJc3dpdGNoIChwbGFuZV9icHApIHsK PiAgCQljYXNlIDE6Cj4gIAkJCW1pbl9zY2FubGluZXMgPSAzMjsKPiBAQCAtNDM4OCwxNCArNDM4 MiwxNSBAQCBza2xfZGRiX2NhbGNfbWluKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUsIGludCBudW1fYWN0aXZlLAo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYgKCFwbGFu ZV9zdGF0ZS0+bGlua2VkX3BsYW5lKSB7Cj4gLQkJCW1pbmltdW1bcGxhbmVfaWRdID0gc2tsX2Rk Yl9taW5fYWxsb2MocHN0YXRlLCAwKTsKPiAtCQkJdXZfbWluaW11bVtwbGFuZV9pZF0gPSBza2xf ZGRiX21pbl9hbGxvYyhwc3RhdGUsIDEpOwo+ICsJCQltaW5pbXVtW3BsYW5lX2lkXSA9IHNrbF9k ZGJfbWluX2FsbG9jKHBsYW5lX3N0YXRlLCAwKTsKPiArCQkJdXZfbWluaW11bVtwbGFuZV9pZF0g PQo+ICsJCQkJc2tsX2RkYl9taW5fYWxsb2MocGxhbmVfc3RhdGUsIDEpOwo+ICAJCX0gZWxzZSB7 Cj4gIAkJCWVudW0gcGxhbmVfaWQgeV9wbGFuZV9pZCA9Cj4gIAkJCQlwbGFuZV9zdGF0ZS0+bGlu a2VkX3BsYW5lLT5pZDsKPiAgCj4gLQkJCW1pbmltdW1beV9wbGFuZV9pZF0gPSBza2xfZGRiX21p bl9hbGxvYyhwc3RhdGUsIDApOwo+IC0JCQltaW5pbXVtW3BsYW5lX2lkXSA9IHNrbF9kZGJfbWlu X2FsbG9jKHBzdGF0ZSwgMSk7Cj4gKwkJCW1pbmltdW1beV9wbGFuZV9pZF0gPSBza2xfZGRiX21p bl9hbGxvYyhwbGFuZV9zdGF0ZSwgMCk7Cj4gKwkJCW1pbmltdW1bcGxhbmVfaWRdID0gc2tsX2Rk Yl9taW5fYWxsb2MocGxhbmVfc3RhdGUsIDEpOwo+ICAJCX0KPiAgCX0KPiAgCj4gQEAgLTUyNTEs MTUgKzUyNDYsMTQgQEAgYm9vbCBza2xfZGRiX2FsbG9jYXRpb25fb3ZlcmxhcHMoY29uc3Qgc3Ry dWN0IHNrbF9kZGJfZW50cnkgKmRkYiwKPiAgCXJldHVybiBmYWxzZTsKPiAgfQo+ICAKPiAtc3Rh dGljIGludCBza2xfdXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGUs Cj4gK3N0YXRpYyBpbnQgc2tsX3VwZGF0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUsCj4gIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBza2xfcGlwZV93bSAqb2xkX3BpcGVf d20sCj4gIAkJCSAgICAgIHN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSwgLyogb3V0ICovCj4g IAkJCSAgICAgIGJvb2wgKmNoYW5nZWQgLyogb3V0ICovKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqaW50ZWxfY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjc3RhdGUpOwo+ ICAJaW50IHJldDsKPiAgCj4gLQlyZXQgPSBza2xfYnVpbGRfcGlwZV93bShpbnRlbF9jc3RhdGUs IHBpcGVfd20pOwo+ICsJcmV0ID0gc2tsX2J1aWxkX3BpcGVfd20oY3N0YXRlLCBwaXBlX3dtKTsK PiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gQEAgLTUyNzIsMTQgKzUyNjYsMTQg QEAgc3RhdGljIGludCBza2xfdXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjX3N0YXRlICpj c3RhdGUsCj4gIH0KPiAgCj4gIHN0YXRpYyB1aW50MzJfdAo+IC1waXBlc19tb2RpZmllZChzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK3BpcGVzX21vZGlmaWVkKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4g LQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNzdGF0ZTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZTsKPiAgCXVpbnQzMl90IGks IHJldCA9IDA7Cj4gIAo+IC0JZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IGNzdGF0ZSwgaSkKPiAtCQlyZXQgfD0gZHJtX2NydGNfbWFzayhjcnRjKTsKPiArCWZvcl9lYWNo X25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjc3RhdGUsIGkpCj4gKwkJcmV0 IHw9IGRybV9jcnRjX21hc2soJmNydGMtPmJhc2UpOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0K PiBAQCAtNTMxNCwxMSArNTMwOCwxMCBAQCBza2xfZGRiX2FkZF9hZmZlY3RlZF9wbGFuZXMoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ICB9Cj4gIAo+ICBz dGF0aWMgaW50Cj4gLXNrbF9jb21wdXRlX2RkYihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpCj4gK3NrbF9jb21wdXRlX2RkYihzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkK PiAgewo+IC0JY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShzdGF0ZS0+ZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRl ID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPiAtCXN0cnVjdCBza2xfZGRiX2FsbG9j YXRpb24gKmRkYiA9ICZpbnRlbF9zdGF0ZS0+d21fcmVzdWx0cy5kZGI7Cj4gKwljb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7 Cj4gKwlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgPSAmc3RhdGUtPndtX3Jlc3VsdHMu ZGRiOwo+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOwo+ICAJc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+ICAJc3RydWN0IGludGVsX2Ny dGMgKmNydGM7Cj4gQEAgLTUzMjYsNyArNTMxOSw3IEBAIHNrbF9jb21wdXRlX2RkYihzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAo+ICAJbWVtY3B5KGRkYiwgJmRldl9wcml2LT53 bS5za2xfaHcuZGRiLCBzaXplb2YoKmRkYikpOwo+ICAKPiAtCWZvcl9lYWNoX29sZG5ld19pbnRl bF9jcnRjX2luX3N0YXRlKGludGVsX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwKPiArCWZv cl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19z dGF0ZSwKPiAgCQkJCQkgICAgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiAgCQlyZXQgPSBza2xfYWxs b2NhdGVfcGlwZV9kZGIobmV3X2NydGNfc3RhdGUsIGRkYik7Cj4gIAkJaWYgKHJldCkKPiBAQCAt NTM3MiwxNCArNTM2NSwxMiBAQCBza2xfcHJpbnRfd21fY2hhbmdlcyhzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpzdGF0ZSkKPiAgfQo+ICAKPiAgc3RhdGljIGludAo+IC1za2xfZGRiX2FkZF9h ZmZlY3RlZF9waXBlcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsIGJvb2wgKmNoYW5n ZWQpCj4gK3NrbF9kZGJfYWRkX2FmZmVjdGVkX3BpcGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlLCBib29sICpjaGFuZ2VkKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gc3RhdGUtPmRldjsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFzZS5k ZXY7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRldik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gLQljb25zdCBzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNzdGF0ZTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj Owo+IC0Jc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9h dG9taWNfc3RhdGUoc3RhdGUpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gKwlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiAgCXVpbnQzMl90IHJlYWxsb2NfcGlw ZXMgPSBwaXBlc19tb2RpZmllZChzdGF0ZSk7Cj4gIAlpbnQgcmV0LCBpOwo+ICAKPiBAQCAtNTM5 OCw3ICs1Mzg5LDcgQEAgc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGlwZXMoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlLCBib29sICpjaGFuZ2VkKQo+ICAJICogc2luY2UgYW55IHJhY2luZyBj b21taXRzIHRoYXQgd2FudCB0byB1cGRhdGUgdGhlbSB3b3VsZCBuZWVkIHRvCj4gIAkgKiBob2xk IF9hbGxfIENSVEMgc3RhdGUgbXV0ZXhlcy4KPiAgCSAqLwo+IC0JZm9yX2VhY2hfbmV3X2NydGNf aW5fc3RhdGUoc3RhdGUsIGNydGMsIGNzdGF0ZSwgaSkKPiArCWZvcl9lYWNoX25ld19pbnRlbF9j cnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKQo+ICAJCSgqY2hhbmdlZCkg PSB0cnVlOwo+ICAKPiAgCWlmICghKmNoYW5nZWQpCj4gQEAgLTU0MTIsMjAgKzU0MDMsMjAgQEAg c2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGlwZXMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl LCBib29sICpjaGFuZ2VkKQo+ICAJICovCj4gIAlpZiAoZGV2X3ByaXYtPndtLmRpc3RydXN0X2Jp b3Nfd20pIHsKPiAgCQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNv bm5lY3Rpb25fbXV0ZXgsCj4gLQkJCQkgICAgICAgc3RhdGUtPmFjcXVpcmVfY3R4KTsKPiArCQkJ CSAgICAgICBzdGF0ZS0+YmFzZS5hY3F1aXJlX2N0eCk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0 dXJuIHJldDsKPiAgCj4gLQkJaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMgPSB+MDsK PiArCQlzdGF0ZS0+YWN0aXZlX3BpcGVfY2hhbmdlcyA9IH4wOwo+ICAKPiAgCQkvKgo+IC0JCSAq IFdlIHVzdWFsbHkgb25seSBpbml0aWFsaXplIGludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MgaWYg d2UKPiArCQkgKiBXZSB1c3VhbGx5IG9ubHkgaW5pdGlhbGl6ZSBzdGF0ZS0+YWN0aXZlX2NydGNz IGlmIHdlCj4gIAkJICogd2UncmUgZG9pbmcgYSBtb2Rlc2V0OyBtYWtlIHN1cmUgdGhpcyBmaWVs ZCBpcyBhbHdheXMKPiAgCQkgKiBpbml0aWFsaXplZCBkdXJpbmcgdGhlIHNhbml0aXphdGlvbiBw cm9jZXNzIHRoYXQgaGFwcGVucwo+ICAJCSAqIG9uIHRoZSBmaXJzdCBjb21taXQgdG9vLgo+ICAJ CSAqLwo+IC0JCWlmICghaW50ZWxfc3RhdGUtPm1vZGVzZXQpCj4gLQkJCWludGVsX3N0YXRlLT5h Y3RpdmVfY3J0Y3MgPSBkZXZfcHJpdi0+YWN0aXZlX2NydGNzOwo+ICsJCWlmICghc3RhdGUtPm1v ZGVzZXQpCj4gKwkJCXN0YXRlLT5hY3RpdmVfY3J0Y3MgPSBkZXZfcHJpdi0+YWN0aXZlX2NydGNz Owo+ICAJfQo+ICAKPiAgCS8qCj4gQEAgLTU0NDEsMjEgKzU0MzIsMTkgQEAgc2tsX2RkYl9hZGRf YWZmZWN0ZWRfcGlwZXMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLCBib29sICpjaGFu Z2VkKQo+ICAJICogYW55IG90aGVyIGRpc3BsYXkgdXBkYXRlcyByYWNlIHdpdGggdGhpcyB0cmFu c2FjdGlvbiwgc28gd2UgbmVlZAo+ICAJICogdG8gZ3JhYiB0aGUgbG9jayBvbiAqYWxsKiBDUlRD J3MuCj4gIAkgKi8KPiAtCWlmIChpbnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVfY2hhbmdlcyB8fCBp bnRlbF9zdGF0ZS0+bW9kZXNldCkgewo+ICsJaWYgKHN0YXRlLT5hY3RpdmVfcGlwZV9jaGFuZ2Vz IHx8IHN0YXRlLT5tb2Rlc2V0KSB7Cj4gIAkJcmVhbGxvY19waXBlcyA9IH4wOwo+IC0JCWludGVs X3N0YXRlLT53bV9yZXN1bHRzLmRpcnR5X3BpcGVzID0gfjA7Cj4gKwkJc3RhdGUtPndtX3Jlc3Vs dHMuZGlydHlfcGlwZXMgPSB+MDsKPiAgCX0KPiAgCj4gIAkvKgo+ICAJICogV2UncmUgbm90IHJl Y29tcHV0aW5nIGZvciB0aGUgcGlwZXMgbm90IGluY2x1ZGVkIGluIHRoZSBjb21taXQsIHNvCj4g IAkgKiBtYWtlIHN1cmUgd2Ugc3RhcnQgd2l0aCB0aGUgY3VycmVudCBzdGF0ZS4KPiAgCSAqLwo+ IC0JZm9yX2VhY2hfaW50ZWxfY3J0Y19tYXNrKGRldiwgaW50ZWxfY3J0YywgcmVhbGxvY19waXBl cykgewo+IC0JCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGU7Cj4gLQo+IC0JCWNzdGF0 ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7Cj4gLQkJ aWYgKElTX0VSUihjc3RhdGUpKQo+IC0JCQlyZXR1cm4gUFRSX0VSUihjc3RhdGUpOwo+ICsJZm9y X2VhY2hfaW50ZWxfY3J0Y19tYXNrKGRldiwgY3J0YywgcmVhbGxvY19waXBlcykgewo+ICsJCWNy dGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoJnN0YXRlLT5iYXNlLCBjcnRj KTsKPiArCQlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihjcnRj X3N0YXRlKTsKPiAgCX0KPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAtNTUyMiwxMiArNTUxMSwxMSBA QCBzdGF0aWMgaW50IHNrbF93bV9hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKnN0YXRlLAo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gLXNrbF9jb21wdXRlX3dt KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArc2tsX2NvbXB1dGVfd20oc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YzsKPiAtCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlOwo+IC0Jc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ IC0Jc3RydWN0IHNrbF9kZGJfdmFsdWVzICpyZXN1bHRzID0gJmludGVsX3N0YXRlLT53bV9yZXN1 bHRzOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3N0YXRlOwo+ICsJc3RydWN0IHNrbF9kZGJfdmFsdWVzICpyZXN1bHRzID0gJnN0YXRl LT53bV9yZXN1bHRzOwo+ICAJc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtOwo+ICAJYm9vbCBj aGFuZ2VkID0gZmFsc2U7Cj4gIAlpbnQgcmV0LCBpOwo+IEBAIC01NTUzLDMzICs1NTQxLDMwIEBA IHNrbF9jb21wdXRlX3dtKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCSAqIHNo b3VsZCBhbGxvdyBza2xfdXBkYXRlX3BpcGVfd20oKSB0byByZXR1cm4gZmFpbHVyZSBpbiBjYXNl cyB3aGVyZQo+ICAJICogbm8gc3VpdGFibGUgd2F0ZXJtYXJrIHZhbHVlcyBjYW4gYmUgZm91bmQu Cj4gIAkgKi8KPiAtCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjc3Rh dGUsIGkpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfY3N0YXRlID0KPiAt CQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjc3RhdGUpOwo+ICsJZm9yX2VhY2hfbmV3X2ludGVsX2Ny dGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNzdGF0ZSwgaSkgewo+ICAJCWNvbnN0IHN0cnVjdCBz a2xfcGlwZV93bSAqb2xkX3BpcGVfd20gPQo+IC0JCQkmdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRj LT5zdGF0ZSktPndtLnNrbC5vcHRpbWFsOwo+ICsJCQkmdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRj LT5iYXNlLnN0YXRlKS0+d20uc2tsLm9wdGltYWw7Cj4gIAo+IC0JCXBpcGVfd20gPSAmaW50ZWxf Y3N0YXRlLT53bS5za2wub3B0aW1hbDsKPiArCQlwaXBlX3dtID0gJmNzdGF0ZS0+d20uc2tsLm9w dGltYWw7Cj4gIAkJcmV0ID0gc2tsX3VwZGF0ZV9waXBlX3dtKGNzdGF0ZSwgb2xkX3BpcGVfd20s IHBpcGVfd20sICZjaGFuZ2VkKTsKPiAgCQlpZiAocmV0KQo+ICAJCQlyZXR1cm4gcmV0Owo+ICAK PiAtCQlyZXQgPSBza2xfd21fYWRkX2FmZmVjdGVkX3BsYW5lcyhpbnRlbF9zdGF0ZSwKPiAtCQkJ CQkJIHRvX2ludGVsX2NydGMoY3J0YykpOwo+ICsJCXJldCA9IHNrbF93bV9hZGRfYWZmZWN0ZWRf cGxhbmVzKHN0YXRlLCBjcnRjKTsKPiAgCQlpZiAocmV0KQo+ICAJCQlyZXR1cm4gcmV0Owo+ICAK PiAgCQlpZiAoY2hhbmdlZCkKPiAtCQkJcmVzdWx0cy0+ZGlydHlfcGlwZXMgfD0gZHJtX2NydGNf bWFzayhjcnRjKTsKPiArCQkJcmVzdWx0cy0+ZGlydHlfcGlwZXMgfD0gZHJtX2NydGNfbWFzaygm Y3J0Yy0+YmFzZSk7Cj4gIAo+IC0JCWlmICgocmVzdWx0cy0+ZGlydHlfcGlwZXMgJiBkcm1fY3J0 Y19tYXNrKGNydGMpKSA9PSAwKQo+ICsJCWlmICgocmVzdWx0cy0+ZGlydHlfcGlwZXMgJiBkcm1f Y3J0Y19tYXNrKCZjcnRjLT5iYXNlKSkgPT0gMCkKPiAgCQkJLyogVGhpcyBwaXBlJ3MgV00ncyBk aWQgbm90IGNoYW5nZSAqLwo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJaW50ZWxfY3N0YXRlLT51 cGRhdGVfd21fcHJlID0gdHJ1ZTsKPiArCQljc3RhdGUtPnVwZGF0ZV93bV9wcmUgPSB0cnVlOwo+ ICAJfQo+ICAKPiAtCXNrbF9wcmludF93bV9jaGFuZ2VzKGludGVsX3N0YXRlKTsKPiArCXNrbF9w cmludF93bV9jaGFuZ2VzKHN0YXRlKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC01NjE3 LDEzICs1NjAyLDEzIEBAIHN0YXRpYyB2b2lkIHNrbF9pbml0aWFsX3dtKHN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0 ZXgpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9jb25maWcoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiArc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21fY29uZmlnKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCSAgc3RydWN0IGludGVsX3dt X2NvbmZpZyAqY29uZmlnKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiAgCj4g IAkvKiBDb21wdXRlIHRoZSBjdXJyZW50bHkgX2FjdGl2ZV8gY29uZmlnICovCj4gLQlmb3JfZWFj aF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+ICsJZm9yX2VhY2hfaW50ZWxfY3J0YygmZGV2X3By aXYtPmRybSwgY3J0Yykgewo+ICAJCWNvbnN0IHN0cnVjdCBpbnRlbF9waXBlX3dtICp3bSA9ICZj cnRjLT53bS5hY3RpdmUuaWxrOwo+ICAKPiAgCQlpZiAoIXdtLT5waXBlX2VuYWJsZWQpCj4gQEAg LTU2MzcsMjUgKzU2MjIsMjQgQEAgc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21fY29uZmlnKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICBzdGF0aWMgdm9pZCBpbGtfcHJvZ3JhbV93YXRl cm1hcmtzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwo+ICAJc3RydWN0IGludGVsX3BpcGVf d20gbHBfd21fMV8yID0ge30sIGxwX3dtXzVfNiA9IHt9LCAqYmVzdF9scF93bTsKPiAgCXN0cnVj dCBpbGtfd21fbWF4aW11bXMgbWF4Owo+ICAJc3RydWN0IGludGVsX3dtX2NvbmZpZyBjb25maWcg PSB7fTsKPiAgCXN0cnVjdCBpbGtfd21fdmFsdWVzIHJlc3VsdHMgPSB7fTsKPiAgCWVudW0gaW50 ZWxfZGRiX3BhcnRpdGlvbmluZyBwYXJ0aXRpb25pbmc7Cj4gIAo+IC0JaWxrX2NvbXB1dGVfd21f Y29uZmlnKGRldiwgJmNvbmZpZyk7Cj4gKwlpbGtfY29tcHV0ZV93bV9jb25maWcoZGV2X3ByaXYs ICZjb25maWcpOwo+ICAKPiAtCWlsa19jb21wdXRlX3dtX21heGltdW1zKGRldiwgMSwgJmNvbmZp ZywgSU5URUxfRERCX1BBUlRfMV8yLCAmbWF4KTsKPiAtCWlsa193bV9tZXJnZShkZXYsICZjb25m aWcsICZtYXgsICZscF93bV8xXzIpOwo+ICsJaWxrX2NvbXB1dGVfd21fbWF4aW11bXMoZGV2X3By aXYsIDEsICZjb25maWcsIElOVEVMX0REQl9QQVJUXzFfMiwgJm1heCk7Cj4gKwlpbGtfd21fbWVy Z2UoZGV2X3ByaXYsICZjb25maWcsICZtYXgsICZscF93bV8xXzIpOwo+ICAKPiAgCS8qIDUvNiBz cGxpdCBvbmx5IGluIHNpbmdsZSBwaXBlIGNvbmZpZyBvbiBJVkIrICovCj4gIAlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA3ICYmCj4gIAkgICAgY29uZmlnLm51bV9waXBlc19hY3RpdmUgPT0g MSAmJiBjb25maWcuc3ByaXRlc19lbmFibGVkKSB7Cj4gLQkJaWxrX2NvbXB1dGVfd21fbWF4aW11 bXMoZGV2LCAxLCAmY29uZmlnLCBJTlRFTF9EREJfUEFSVF81XzYsICZtYXgpOwo+IC0JCWlsa193 bV9tZXJnZShkZXYsICZjb25maWcsICZtYXgsICZscF93bV81XzYpOwo+ICsJCWlsa19jb21wdXRl X3dtX21heGltdW1zKGRldl9wcml2LCAxLCAmY29uZmlnLCBJTlRFTF9EREJfUEFSVF81XzYsICZt YXgpOwo+ICsJCWlsa193bV9tZXJnZShkZXZfcHJpdiwgJmNvbmZpZywgJm1heCwgJmxwX3dtXzVf Nik7Cj4gIAo+IC0JCWJlc3RfbHBfd20gPSBpbGtfZmluZF9iZXN0X3Jlc3VsdChkZXYsICZscF93 bV8xXzIsICZscF93bV81XzYpOwo+ICsJCWJlc3RfbHBfd20gPSBpbGtfZmluZF9iZXN0X3Jlc3Vs dChkZXZfcHJpdiwgJmxwX3dtXzFfMiwgJmxwX3dtXzVfNik7Cj4gIAl9IGVsc2Ugewo+ICAJCWJl c3RfbHBfd20gPSAmbHBfd21fMV8yOwo+ICAJfQo+IEBAIC01NjYzLDcgKzU2NDcsNyBAQCBzdGF0 aWMgdm9pZCBpbGtfcHJvZ3JhbV93YXRlcm1hcmtzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgCXBhcnRpdGlvbmluZyA9IChiZXN0X2xwX3dtID09ICZscF93bV8xXzIpID8K PiAgCQkgICAgICAgSU5URUxfRERCX1BBUlRfMV8yIDogSU5URUxfRERCX1BBUlRfNV82Owo+ICAK PiAtCWlsa19jb21wdXRlX3dtX3Jlc3VsdHMoZGV2LCBiZXN0X2xwX3dtLCBwYXJ0aXRpb25pbmcs ICZyZXN1bHRzKTsKPiArCWlsa19jb21wdXRlX3dtX3Jlc3VsdHMoZGV2X3ByaXYsIGJlc3RfbHBf d20sIHBhcnRpdGlvbmluZywgJnJlc3VsdHMpOwo+ICAKPiAgCWlsa193cml0ZV93bV92YWx1ZXMo ZGV2X3ByaXYsICZyZXN1bHRzKTsKPiAgfQo+IEBAIC01NzAzLDE5ICs1Njg3LDE4IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBza2xfd21fbGV2ZWxfZnJvbV9yZWdfdmFsKHVpbnQzMl90IHZhbCwKPiAg CQlQTEFORV9XTV9MSU5FU19NQVNLOwo+ICB9Cj4gIAo+IC12b2lkIHNrbF9waXBlX3dtX2dldF9o d19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gK3ZvaWQgc2tsX3BpcGVfd21fZ2V0X2h3 X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQkgICAgICBzdHJ1Y3Qgc2tsX3Bp cGVfd20gKm91dCkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShjcnRjLT5kZXYpOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNydGMpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBl Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5i YXNlLmRldik7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAlpbnQgbGV2ZWws IG1heF9sZXZlbDsKPiAgCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQ7Cj4gIAl1aW50MzJfdCB2YWw7 Cj4gIAo+ICAJbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7Cj4gIAo+IC0J Zm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkgewo+ICsJZm9y X2VhY2hfcGxhbmVfaWRfb25fY3J0YyhjcnRjLCBwbGFuZV9pZCkgewo+ICAJCXN0cnVjdCBza2xf cGxhbmVfd20gKndtID0gJm91dC0+cGxhbmVzW3BsYW5lX2lkXTsKPiAgCj4gIAkJZm9yIChsZXZl bCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IEBAIC01NzM1LDMwICs1NzE4 LDI3IEBAIHZvaWQgc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiAgCQlza2xfd21fbGV2ZWxfZnJvbV9yZWdfdmFsKHZhbCwgJndtLT50cmFuc193bSk7Cj4g IAl9Cj4gIAo+IC0JaWYgKCFpbnRlbF9jcnRjLT5hY3RpdmUpCj4gKwlpZiAoIWNydGMtPmFjdGl2 ZSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJb3V0LT5saW5ldGltZSA9IEk5MTVfUkVBRChQSVBFX1dN X0xJTkVUSU1FKHBpcGUpKTsKPiAgfQo+ICAKPiAtdm9pZCBza2xfd21fZ2V0X2h3X3N0YXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3ZvaWQgc2tsX3dtX2dldF9od19zdGF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVjdCBza2xfZGRiX3ZhbHVlcyAq aHcgPSAmZGV2X3ByaXYtPndtLnNrbF9odzsKPiAgCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24g KmRkYiA9ICZkZXZfcHJpdi0+d20uc2tsX2h3LmRkYjsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YzsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+ICsJc3RydWN0IGludGVsX2Ny dGMgKmNydGM7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlOwo+ICAKPiAgCXNr bF9kZGJfZ2V0X2h3X3N0YXRlKGRldl9wcml2LCBkZGIpOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRy eShjcnRjLCAmZGV2LT5tb2RlX2NvbmZpZy5jcnRjX2xpc3QsIGhlYWQpIHsKPiAtCQlpbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCQljc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0 YXRlKGNydGMtPnN0YXRlKTsKPiArCWZvcl9lYWNoX2ludGVsX2NydGMoJmRldl9wcml2LT5kcm0s IGNydGMpIHsKPiArCQljc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3Rh dGUpOwo+ICAKPiAgCQlza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoY3J0YywgJmNzdGF0ZS0+d20u c2tsLm9wdGltYWwpOwo+ICAKPiAtCQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKQo+IC0JCQlody0+ ZGlydHlfcGlwZXMgfD0gZHJtX2NydGNfbWFzayhjcnRjKTsKPiArCQlpZiAoY3J0Yy0+YWN0aXZl KQo+ICsJCQlody0+ZGlydHlfcGlwZXMgfD0gZHJtX2NydGNfbWFzaygmY3J0Yy0+YmFzZSk7Cj4g IAl9Cj4gIAo+ICAJaWYgKGRldl9wcml2LT5hY3RpdmVfY3J0Y3MpIHsKPiBAQCAtNTc2NywxNSAr NTc0NywxNCBAQCB2b2lkIHNrbF93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaWxrX3BpcGVfd21fZ2V0X2h3X3N0YXRl KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArc3RhdGljIHZvaWQgaWxrX3BpcGVfd21fZ2V0X2h3 X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJh c2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOwo+ICAJc3RydWN0IGlsa193bV92YWx1ZXMgKmh3ID0gJmRldl9wcml2LT53bS5odzsKPiAt CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAt CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNy dGMtPnN0YXRlKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19pbnRl bF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwo+ICAJc3RydWN0IGludGVsX3BpcGVfd20g KmFjdGl2ZSA9ICZjc3RhdGUtPndtLmlsay5vcHRpbWFsOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBp bnRlbF9jcnRjLT5waXBlOwo+ICsJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJc3Rh dGljIGNvbnN0IGk5MTVfcmVnX3Qgd20wX3BpcGVfcmVnW10gPSB7Cj4gIAkJW1BJUEVfQV0gPSBX TTBfUElQRUFfSUxLLAo+ICAJCVtQSVBFX0JdID0gV00wX1BJUEVCX0lMSywKPiBAQCAtNTc4OCw3 ICs1NzY3LDcgQEAgc3RhdGljIHZvaWQgaWxrX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKPiAgCj4gIAltZW1zZXQoYWN0aXZlLCAwLCBzaXplb2YoKmFjdGl2ZSkp Owo+ICAKPiAtCWFjdGl2ZS0+cGlwZV9lbmFibGVkID0gaW50ZWxfY3J0Yy0+YWN0aXZlOwo+ICsJ YWN0aXZlLT5waXBlX2VuYWJsZWQgPSBjcnRjLT5hY3RpdmU7Cj4gIAo+ICAJaWYgKGFjdGl2ZS0+ cGlwZV9lbmFibGVkKSB7Cj4gIAkJdTMyIHRtcCA9IGh3LT53bV9waXBlW3BpcGVdOwo+IEBAIC01 ODE2LDcgKzU3OTUsNyBAQCBzdGF0aWMgdm9pZCBpbGtfcGlwZV93bV9nZXRfaHdfc3RhdGUoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+ICAJCQlhY3RpdmUtPndtW2xldmVsXS5lbmFibGUgPSB0cnVl Owo+ICAJfQo+ICAKPiAtCWludGVsX2NydGMtPndtLmFjdGl2ZS5pbGsgPSAqYWN0aXZlOwo+ICsJ Y3J0Yy0+d20uYWN0aXZlLmlsayA9ICphY3RpdmU7Cj4gIH0KPiAgCj4gICNkZWZpbmUgX0ZXX1dN KHZhbHVlLCBwbGFuZSkgXAo+IEBAIC01OTI2LDkgKzU5MDUsOCBAQCBzdGF0aWMgdm9pZCB2bHZf cmVhZF93bV92YWx1ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAjdW5k ZWYgX0ZXX1dNCj4gICN1bmRlZiBfRldfV01fVkxWCj4gIAo+IC12b2lkIGc0eF93bV9nZXRfaHdf c3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArdm9pZCBnNHhfd21fZ2V0X2h3X3N0YXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJc3RydWN0IGc0eF93bV92 YWx1ZXMgKndtID0gJmRldl9wcml2LT53bS5nNHg7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YzsKPiAgCj4gQEAgLTU5MzYsNyArNTkxNCw3IEBAIHZvaWQgZzR4X3dtX2dldF9od19zdGF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCXdtLT5jeHNyID0gSTkxNV9SRUFEKEZXX0JM Q19TRUxGKSAmIEZXX0JMQ19TRUxGX0VOOwo+ICAKPiAtCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2 LCBjcnRjKSB7Cj4gKwlmb3JfZWFjaF9pbnRlbF9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRjKSB7 Cj4gIAkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQo+ICAJCQl0b19pbnRl bF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwo+ICAJCXN0cnVjdCBnNHhfd21fc3RhdGUg KmFjdGl2ZSA9ICZjcnRjLT53bS5hY3RpdmUuZzR4Owo+IEBAIC02MDY3LDkgKzYwNDUsOCBAQCB2 b2lkIGc0eF93bV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAltdXRleF91bmxvY2soJmRldl9wcml2LT53bS53bV9tdXRleCk7Cj4gIH0KPiAgCj4gLXZvaWQg dmx2X3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt2b2lkIHZsdl93 bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAlz dHJ1Y3Qgdmx2X3dtX3ZhbHVlcyAqd20gPSAmZGV2X3ByaXYtPndtLnZsdjsKPiAgCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjOwo+ICAJdTMyIHZhbDsKPiBAQCAtNjExMyw3ICs2MDkwLDcgQEAgdm9p ZCB2bHZfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwo+ICAJfQo+ICAKPiAtCWZvcl9lYWNoX2ludGVs X2NydGMoZGV2LCBjcnRjKSB7Cj4gKwlmb3JfZWFjaF9pbnRlbF9jcnRjKCZkZXZfcHJpdi0+ZHJt LCBjcnRjKSB7Cj4gIAkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQo+ICAJ CQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwo+ICAJCXN0cnVjdCB2bHZf d21fc3RhdGUgKmFjdGl2ZSA9ICZjcnRjLT53bS5hY3RpdmUudmx2Owo+IEBAIC02MjMwLDE1ICs2 MjA3LDE0IEBAIHN0YXRpYyB2b2lkIGlsa19pbml0X2xwX3dhdGVybWFya3Moc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJICovCj4gIH0KPiAgCj4gLXZvaWQgaWxrX3dtX2dl dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt2b2lkIGlsa193bV9nZXRfaHdf c3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAlzdHJ1Y3QgaWxr X3dtX3ZhbHVlcyAqaHcgPSAmZGV2X3ByaXYtPndtLmh3Owo+IC0Jc3RydWN0IGRybV9jcnRjICpj cnRjOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gIAo+ICAJaWxrX2luaXRfbHBfd2F0 ZXJtYXJrcyhkZXZfcHJpdik7Cj4gIAo+IC0JZm9yX2VhY2hfY3J0YyhkZXYsIGNydGMpCj4gKwlm b3JfZWFjaF9pbnRlbF9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRjKQo+ICAJCWlsa19waXBlX3dt X2dldF9od19zdGF0ZShjcnRjKTsKPiAgCj4gIAlody0+d21fbHBbMF0gPSBJOTE1X1JFQUQoV00x X0xQX0lMSyk7Cj4gLS0gCj4gMi4xNC40Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=