From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [RFC 12/12] drm/i915: Remove I915_READ16 and I915_WRITE16 Date: Fri, 07 Jun 2019 15:59:55 +0300 Message-ID: <87muitzh2s.fsf@intel.com> References: <20190607120838.20514-1-tvrtko.ursulin@linux.intel.com> <20190607120838.20514-13-tvrtko.ursulin@linux.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 ESMTPS id F1FD289C99 for ; Fri, 7 Jun 2019 12:56:54 +0000 (UTC) In-Reply-To: <20190607120838.20514-13-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAwNyBKdW4gMjAxOSwgVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4 LmludGVsLmNvbT4gd3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGlu QGludGVsLmNvbT4KPgo+IFJlbW92ZSBjYWxsIHNpdGVzIGluIGZhdm91ciBvZiB1bmNvcmUgbW1p byBhY2Nlc3NvcnMgYW5kIHJlbW92ZSB0aGUgb2xkCj4gbWFjcm9zLgo+Cj4gU2lnbmVkLW9mZi1i eTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClRoaXMgcGF0Y2gg cmVhbGx5IHN0YXJ0cyB0byBzaG93IHRoZSB1Z2x5IHNpZGUgb2Ygc3dpdGNoaW5nIHRvCmludGVs X3VuY29yZV8qIGZ1bmN0aW9ucywgd2l0aCBvbmUtbGluZXJzIHR1cm5pbmcgaW50byB0aHJlZS4K CllldCwgSSB0aGluayB0aGlzIGlzIGZpbmUgZm9yIHRoZSBzcGVjaWFsIGNhc2UgdmFyaWFudHMg UkVBRDE2IGFuZApXUklURTE2LgoKUmV2aWV3ZWQtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3Vs YUBpbnRlbC5jb20+CgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmlu Z2J1ZmZlci5jIHwgICA2ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j ICAgICAgICB8ICAzNyArKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o ICAgICAgICAgICAgfCAgIDMgLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jICAgICAgfCAxMDQgKysrKysrKysrKysrLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfaXJxLmMgICAgICAgICAgICB8ICA0MCArKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICAgICAgfCAgOTMgKysrKysrKysrKy0tLS0tLS0tCj4g IDYgZmlsZXMgY2hhbmdlZCwgMTYxIGluc2VydGlvbnMoKyksIDEyMiBkZWxldGlvbnMoLSkKPgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCAwMzcz YWY2NDhlNzIuLmJlMGJhMGI3NDJmNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtOTg2LDEwICs5ODYsMTAgQEAgaTh4eF9pcnFfZW5hYmxl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgc3RhdGljIHZvaWQKPiAgaTh4eF9p cnFfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIHsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1Owo+ICAKPiAtCWRldl9wcml2LT5p cnFfbWFzayB8PSBlbmdpbmUtPmlycV9lbmFibGVfbWFzazsKPiAtCUk5MTVfV1JJVEUxNihHRU4y X0lNUiwgZGV2X3ByaXYtPmlycV9tYXNrKTsKPiArCWk5MTUtPmlycV9tYXNrIHw9IGVuZ2luZS0+ aXJxX2VuYWJsZV9tYXNrOwo+ICsJaW50ZWxfdW5jb3JlX3dyaXRlMTYoJmk5MTUtPnVuY29yZSwg R0VOMl9JTVIsIGk5MTUtPmlycV9tYXNrKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggZjIxMjI0MWEyNzU4Li5hMTFlMDZjMjEx NjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC05OTgsNiArOTk4 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaTkxNV9lcnJvcl9zdGF0 ZV9mb3BzID0gewo+ICBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICp1bnVzZWQpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPiArCXN0cnVjdCBpbnRlbF91bmNv cmUgKnVuY29yZSA9ICZkZXZfcHJpdi0+dW5jb3JlOwo+ICAJc3RydWN0IGludGVsX3JwcyAqcnBz ID0gJmRldl9wcml2LT5ndF9wbS5ycHM7Cj4gIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAg CWludCByZXQgPSAwOwo+IEBAIC0xMDA1LDggKzEwMDYsOCBAQCBzdGF0aWMgaW50IGk5MTVfZnJl cXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAl3YWtlcmVm ID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICAKPiAgCWlmIChJU19HRU4oZGV2 X3ByaXYsIDUpKSB7Cj4gLQkJdTE2IHJndnN3Y3RsID0gSTkxNV9SRUFEMTYoTUVNU1dDVEwpOwo+ IC0JCXUxNiByZ3ZzdGF0ID0gSTkxNV9SRUFEMTYoTUVNU1RBVF9JTEspOwo+ICsJCXUxNiByZ3Zz d2N0bCA9IGludGVsX3VuY29yZV9yZWFkMTYodW5jb3JlLCBNRU1TV0NUTCk7Cj4gKwkJdTE2IHJn dnN0YXQgPSBpbnRlbF91bmNvcmVfcmVhZDE2KHVuY29yZSwgTUVNU1RBVF9JTEspOwo+ICAKPiAg CQlzZXFfcHJpbnRmKG0sICJSZXF1ZXN0ZWQgUC1zdGF0ZTogJWRcbiIsIChyZ3Zzd2N0bCA+PiA4 KSAmIDB4Zik7Cj4gIAkJc2VxX3ByaW50ZihtLCAiUmVxdWVzdGVkIFZJRDogJWRcbiIsIHJndnN3 Y3RsICYgMHgzZik7Cj4gQEAgLTEzMjgsMTMgKzEzMjksMTQgQEAgc3RhdGljIGludCBpOTE1X3Jl c2V0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAo+ICBzdGF0aWMg aW50IGlyb25sYWtlX2RycGNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4gIHsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gbm9kZV90b19pOTE1KG0tPnByaXZh dGUpOwo+ICsJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKPiAg CXUzMiByZ3Ztb2RlY3RsLCByc3RkYnljdGw7Cj4gIAl1MTYgY3JzdGFuZHZpZDsKPiAgCj4gLQly Z3Ztb2RlY3RsID0gSTkxNV9SRUFEKE1FTU1PREVDVEwpOwo+IC0JcnN0ZGJ5Y3RsID0gSTkxNV9S RUFEKFJTVERCWUNUTCk7Cj4gLQljcnN0YW5kdmlkID0gSTkxNV9SRUFEMTYoQ1JTVEFORFZJRCk7 Cj4gKwlyZ3Ztb2RlY3RsID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBNRU1NT0RFQ1RMKTsK PiArCXJzdGRieWN0bCA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgUlNUREJZQ1RMKTsKPiAr CWNyc3RhbmR2aWQgPSBpbnRlbF91bmNvcmVfcmVhZDE2KHVuY29yZSwgQ1JTVEFORFZJRCk7Cj4g IAo+ICAJc2VxX3ByaW50ZihtLCAiSEQgYm9vc3Q6ICVzXG4iLCB5ZXNubyhyZ3Ztb2RlY3RsICYg TUVNTU9ERV9CT09TVF9FTikpOwo+ICAJc2VxX3ByaW50ZihtLCAiQm9vc3QgZnJlcTogJWRcbiIs Cj4gQEAgLTE5MTcsNiArMTkxOSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpzd2l6emxlX3N0cmlu Zyh1bnNpZ25lZCBzd2l6emxlKQo+ICBzdGF0aWMgaW50IGk5MTVfc3dpenpsZV9pbmZvKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+ICsJc3RydWN0IGludGVs X3VuY29yZSAqdW5jb3JlID0gJmRldl9wcml2LT51bmNvcmU7Cj4gIAlpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZjsKPiAgCj4gIAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYp Owo+IEBAIC0xOTI4LDMwICsxOTMxLDMwIEBAIHN0YXRpYyBpbnQgaTkxNV9zd2l6emxlX2luZm8o c3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAKPiAgCWlmIChJU19HRU5fUkFOR0Uo ZGV2X3ByaXYsIDMsIDQpKSB7Cj4gIAkJc2VxX3ByaW50ZihtLCAiRERDID0gMHglMDh4XG4iLAo+ IC0JCQkgICBJOTE1X1JFQUQoRENDKSk7Cj4gKwkJCSAgIGludGVsX3VuY29yZV9yZWFkKHVuY29y ZSwgRENDKSk7Cj4gIAkJc2VxX3ByaW50ZihtLCAiRERDMiA9IDB4JTA4eFxuIiwKPiAtCQkJICAg STkxNV9SRUFEKERDQzIpKTsKPiArCQkJICAgaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBEQ0My KSk7Cj4gIAkJc2VxX3ByaW50ZihtLCAiQzBEUkIzID0gMHglMDR4XG4iLAo+IC0JCQkgICBJOTE1 X1JFQUQxNihDMERSQjMpKTsKPiArCQkJICAgaW50ZWxfdW5jb3JlX3JlYWQxNih1bmNvcmUsIEMw RFJCMykpOwo+ICAJCXNlcV9wcmludGYobSwgIkMxRFJCMyA9IDB4JTA0eFxuIiwKPiAtCQkJICAg STkxNV9SRUFEMTYoQzFEUkIzKSk7Cj4gKwkJCSAgIGludGVsX3VuY29yZV9yZWFkMTYodW5jb3Jl LCBDMURSQjMpKTsKPiAgCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4g IAkJc2VxX3ByaW50ZihtLCAiTUFEX0RJTU1fQzAgPSAweCUwOHhcbiIsCj4gLQkJCSAgIEk5MTVf UkVBRChNQURfRElNTV9DMCkpOwo+ICsJCQkgICBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIE1B RF9ESU1NX0MwKSk7Cj4gIAkJc2VxX3ByaW50ZihtLCAiTUFEX0RJTU1fQzEgPSAweCUwOHhcbiIs Cj4gLQkJCSAgIEk5MTVfUkVBRChNQURfRElNTV9DMSkpOwo+ICsJCQkgICBpbnRlbF91bmNvcmVf cmVhZCh1bmNvcmUsIE1BRF9ESU1NX0MxKSk7Cj4gIAkJc2VxX3ByaW50ZihtLCAiTUFEX0RJTU1f QzIgPSAweCUwOHhcbiIsCj4gLQkJCSAgIEk5MTVfUkVBRChNQURfRElNTV9DMikpOwo+ICsJCQkg ICBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIE1BRF9ESU1NX0MyKSk7Cj4gIAkJc2VxX3ByaW50 ZihtLCAiVElMRUNUTCA9IDB4JTA4eFxuIiwKPiAtCQkJICAgSTkxNV9SRUFEKFRJTEVDVEwpKTsK PiArCQkJICAgaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBUSUxFQ1RMKSk7Cj4gIAkJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOCkKPiAgCQkJc2VxX3ByaW50ZihtLCAiR0FNVEFSQk1PREUg PSAweCUwOHhcbiIsCj4gLQkJCQkgICBJOTE1X1JFQUQoR0FNVEFSQk1PREUpKTsKPiArCQkJCSAg IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0FNVEFSQk1PREUpKTsKPiAgCQllbHNlCj4gIAkJ CXNlcV9wcmludGYobSwgIkFSQl9NT0RFID0gMHglMDh4XG4iLAo+IC0JCQkJICAgSTkxNV9SRUFE KEFSQl9NT0RFKSk7Cj4gKwkJCQkgICBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEFSQl9NT0RF KSk7Cj4gIAkJc2VxX3ByaW50ZihtLCAiRElTUF9BUkJfQ1RMID0gMHglMDh4XG4iLAo+IC0JCQkg ICBJOTE1X1JFQUQoRElTUF9BUkJfQ1RMKSk7Cj4gKwkJCSAgIGludGVsX3VuY29yZV9yZWFkKHVu Y29yZSwgRElTUF9BUkJfQ1RMKSk7Cj4gIAl9Cj4gIAo+ICAJaWYgKGRldl9wcml2LT5xdWlya3Mg JiBRVUlSS19QSU5fU1dJWlpMRURfUEFHRVMpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5k ZXggOWYwMjA4ZTQxMGVkLi4yNjFiNjVjYWFmODAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiBAQCAtMjg1Miw5ICsyODUyLDYgQEAgZXh0ZXJuIHZvaWQgaW50ZWxfZGlzcGxheV9wcmlu dF9lcnJvcl9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICplLAo+ICAjZGVm aW5lIF9fSTkxNV9SRUdfT1Aob3BfXywgZGV2X3ByaXZfXywgLi4uKSBcCj4gIAlpbnRlbF91bmNv cmVfIyNvcF9fKCYoZGV2X3ByaXZfXyktPnVuY29yZSwgX19WQV9BUkdTX18pCj4gIAo+IC0jZGVm aW5lIEk5MTVfUkVBRDE2KHJlZ19fKQkgICBfX0k5MTVfUkVHX09QKHJlYWQxNiwgZGV2X3ByaXYs IChyZWdfXykpCj4gLSNkZWZpbmUgSTkxNV9XUklURTE2KHJlZ19fLCB2YWxfXykgX19JOTE1X1JF R19PUCh3cml0ZTE2LCBkZXZfcHJpdiwgKHJlZ19fKSwgKHZhbF9fKSkKPiAtCj4gICNkZWZpbmUg STkxNV9SRUFEKHJlZ19fKQkgX19JOTE1X1JFR19PUChyZWFkLCBkZXZfcHJpdiwgKHJlZ19fKSkK PiAgI2RlZmluZSBJOTE1X1dSSVRFKHJlZ19fLCB2YWxfXykgX19JOTE1X1JFR19PUCh3cml0ZSwg ZGV2X3ByaXYsIChyZWdfXyksICh2YWxfXykpCj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYwo+IGluZGV4IGE1MjNiZjA1MGEyNS4uOWNhZjkxZDk4YjI3IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gQEAgLTE1NzYsNyArMTU3Niw4IEBAIHN0 YXRpYyB2b2lkIGNhcHR1cmVfdWNfc3RhdGUoc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvcikK PiAgLyogQ2FwdHVyZSBhbGwgcmVnaXN0ZXJzIHdoaWNoIGRvbid0IGZpdCBpbnRvIGFub3RoZXIg Y2F0ZWdvcnkuICovCj4gIHN0YXRpYyB2b2lkIGNhcHR1cmVfcmVnX3N0YXRlKHN0cnVjdCBpOTE1 X2dwdV9zdGF0ZSAqZXJyb3IpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGVycm9yLT5pOTE1Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBl cnJvci0+aTkxNTsKPiArCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51bmNv cmU7Cj4gIAlpbnQgaTsKPiAgCj4gIAkvKiBHZW5lcmFsIG9yZ2FuaXphdGlvbgo+IEBAIC0xNTg4 LDcxICsxNTg5LDg0IEBAIHN0YXRpYyB2b2lkIGNhcHR1cmVfcmVnX3N0YXRlKHN0cnVjdCBpOTE1 X2dwdV9zdGF0ZSAqZXJyb3IpCj4gIAkgKi8KPiAgCj4gIAkvKiAxOiBSZWdpc3RlcnMgc3BlY2lm aWMgdG8gYSBzaW5nbGUgZ2VuZXJhdGlvbiAqLwo+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3By aXYpKSB7Cj4gLQkJZXJyb3ItPmd0aWVyWzBdID0gSTkxNV9SRUFEKEdUSUVSKTsKPiAtCQllcnJv ci0+aWVyID0gSTkxNV9SRUFEKFZMVl9JRVIpOwo+IC0JCWVycm9yLT5mb3JjZXdha2UgPSBJOTE1 X1JFQURfRlcoRk9SQ0VXQUtFX1ZMVik7Cj4gKwlpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSkgewo+ ICsJCWVycm9yLT5ndGllclswXSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR1RJRVIpOwo+ ICsJCWVycm9yLT5pZXIgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIFZMVl9JRVIpOwo+ICsJ CWVycm9yLT5mb3JjZXdha2UgPSBpbnRlbF91bmNvcmVfcmVhZF9mdyh1bmNvcmUsIEZPUkNFV0FL RV9WTFYpOwo+ICAJfQo+ICAKPiAtCWlmIChJU19HRU4oZGV2X3ByaXYsIDcpKQo+IC0JCWVycm9y LT5lcnJfaW50ID0gSTkxNV9SRUFEKEdFTjdfRVJSX0lOVCk7Cj4gKwlpZiAoSVNfR0VOKGk5MTUs IDcpKQo+ICsJCWVycm9yLT5lcnJfaW50ID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU43 X0VSUl9JTlQpOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsKPiAtCQll cnJvci0+ZmF1bHRfZGF0YTAgPSBJOTE1X1JFQUQoR0VOOF9GQVVMVF9UTEJfREFUQTApOwo+IC0J CWVycm9yLT5mYXVsdF9kYXRhMSA9IEk5MTVfUkVBRChHRU44X0ZBVUxUX1RMQl9EQVRBMSk7Cj4g KwlpZiAoSU5URUxfR0VOKGk5MTUpID49IDgpIHsKPiArCQllcnJvci0+ZmF1bHRfZGF0YTAgPSBp bnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsCj4gKwkJCQkJCSAgICAgICBHRU44X0ZBVUxUX1RMQl9E QVRBMCk7Cj4gKwkJZXJyb3ItPmZhdWx0X2RhdGExID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3Jl LAo+ICsJCQkJCQkgICAgICAgR0VOOF9GQVVMVF9UTEJfREFUQTEpOwo+ICAJfQo+ICAKPiAtCWlm IChJU19HRU4oZGV2X3ByaXYsIDYpKSB7Cj4gLQkJZXJyb3ItPmZvcmNld2FrZSA9IEk5MTVfUkVB RF9GVyhGT1JDRVdBS0UpOwo+IC0JCWVycm9yLT5nYWJfY3RsID0gSTkxNV9SRUFEKEdBQl9DVEwp Owo+IC0JCWVycm9yLT5nZnhfbW9kZSA9IEk5MTVfUkVBRChHRlhfTU9ERSk7Cj4gKwlpZiAoSVNf R0VOKGk5MTUsIDYpKSB7Cj4gKwkJZXJyb3ItPmZvcmNld2FrZSA9IGludGVsX3VuY29yZV9yZWFk X2Z3KHVuY29yZSwgRk9SQ0VXQUtFKTsKPiArCQllcnJvci0+Z2FiX2N0bCA9IGludGVsX3VuY29y ZV9yZWFkKHVuY29yZSwgR0FCX0NUTCk7Cj4gKwkJZXJyb3ItPmdmeF9tb2RlID0gaW50ZWxfdW5j b3JlX3JlYWQodW5jb3JlLCBHRlhfTU9ERSk7Cj4gIAl9Cj4gIAo+ICAJLyogMjogUmVnaXN0ZXJz IHdoaWNoIGJlbG9uZyB0byBtdWx0aXBsZSBnZW5lcmF0aW9ucyAqLwo+IC0JaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gNykKPiAtCQllcnJvci0+Zm9yY2V3YWtlID0gSTkxNV9SRUFEX0ZXKEZP UkNFV0FLRV9NVCk7Cj4gKwlpZiAoSU5URUxfR0VOKGk5MTUpID49IDcpCj4gKwkJZXJyb3ItPmZv cmNld2FrZSA9IGludGVsX3VuY29yZV9yZWFkX2Z3KHVuY29yZSwgRk9SQ0VXQUtFX01UKTsKPiAg Cj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2KSB7Cj4gLQkJZXJyb3ItPmRlcnJtciA9 IEk5MTVfUkVBRChERVJSTVIpOwo+IC0JCWVycm9yLT5lcnJvciA9IEk5MTVfUkVBRChFUlJPUl9H RU42KTsKPiAtCQllcnJvci0+ZG9uZV9yZWcgPSBJOTE1X1JFQUQoRE9ORV9SRUcpOwo+ICsJaWYg KElOVEVMX0dFTihpOTE1KSA+PSA2KSB7Cj4gKwkJZXJyb3ItPmRlcnJtciA9IGludGVsX3VuY29y ZV9yZWFkKHVuY29yZSwgREVSUk1SKTsKPiArCQllcnJvci0+ZXJyb3IgPSBpbnRlbF91bmNvcmVf cmVhZCh1bmNvcmUsIEVSUk9SX0dFTjYpOwo+ICsJCWVycm9yLT5kb25lX3JlZyA9IGludGVsX3Vu Y29yZV9yZWFkKHVuY29yZSwgRE9ORV9SRUcpOwo+ICAJfQo+ICAKPiAtCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDUpCj4gLQkJZXJyb3ItPmNjaWQgPSBJOTE1X1JFQUQoQ0NJRChSRU5ERVJf UklOR19CQVNFKSk7Cj4gKwlpZiAoSU5URUxfR0VOKGk5MTUpID49IDUpCj4gKwkJZXJyb3ItPmNj aWQgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIENDSUQoUkVOREVSX1JJTkdfQkFTRSkpOwo+ ICAKPiAgCS8qIDM6IEZlYXR1cmUgc3BlY2lmaWMgcmVnaXN0ZXJzICovCj4gLQlpZiAoSVNfR0VO X1JBTkdFKGRldl9wcml2LCA2LCA3KSkgewo+IC0JCWVycm9yLT5nYW1fZWNvY2hrID0gSTkxNV9S RUFEKEdBTV9FQ09DSEspOwo+IC0JCWVycm9yLT5nYWNfZWNvID0gSTkxNV9SRUFEKEdBQ19FQ09f QklUUyk7Cj4gKwlpZiAoSVNfR0VOX1JBTkdFKGk5MTUsIDYsIDcpKSB7Cj4gKwkJZXJyb3ItPmdh bV9lY29jaGsgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdBTV9FQ09DSEspOwo+ICsJCWVy cm9yLT5nYWNfZWNvID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHQUNfRUNPX0JJVFMpOwo+ ICAJfQo+ICAKPiAgCS8qIDQ6IEV2ZXJ5dGhpbmcgZWxzZSAqLwo+IC0JaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTEpIHsKPiAtCQllcnJvci0+aWVyID0gSTkxNV9SRUFEKEdFTjhfREVfTUlT Q19JRVIpOwo+IC0JCWVycm9yLT5ndGllclswXSA9IEk5MTVfUkVBRChHRU4xMV9SRU5ERVJfQ09Q WV9JTlRSX0VOQUJMRSk7Cj4gLQkJZXJyb3ItPmd0aWVyWzFdID0gSTkxNV9SRUFEKEdFTjExX1ZD U19WRUNTX0lOVFJfRU5BQkxFKTsKPiAtCQllcnJvci0+Z3RpZXJbMl0gPSBJOTE1X1JFQUQoR0VO MTFfR1VDX1NHX0lOVFJfRU5BQkxFKTsKPiAtCQllcnJvci0+Z3RpZXJbM10gPSBJOTE1X1JFQUQo R0VOMTFfR1BNX1dHQk9YUEVSRl9JTlRSX0VOQUJMRSk7Cj4gLQkJZXJyb3ItPmd0aWVyWzRdID0g STkxNV9SRUFEKEdFTjExX0NSWVBUT19SU1ZEX0lOVFJfRU5BQkxFKTsKPiAtCQllcnJvci0+Z3Rp ZXJbNV0gPSBJOTE1X1JFQUQoR0VOMTFfR1VOSVRfQ1NNRV9JTlRSX0VOQUJMRSk7Cj4gKwlpZiAo SU5URUxfR0VOKGk5MTUpID49IDExKSB7Cj4gKwkJZXJyb3ItPmllciA9IGludGVsX3VuY29yZV9y ZWFkKHVuY29yZSwgR0VOOF9ERV9NSVNDX0lFUik7Cj4gKwkJZXJyb3ItPmd0aWVyWzBdID0KPiAr CQkJaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAo+ICsJCQkJCSAgR0VOMTFfUkVOREVSX0NPUFlf SU5UUl9FTkFCTEUpOwo+ICsJCWVycm9yLT5ndGllclsxXSA9Cj4gKwkJCWludGVsX3VuY29yZV9y ZWFkKHVuY29yZSwgR0VOMTFfVkNTX1ZFQ1NfSU5UUl9FTkFCTEUpOwo+ICsJCWVycm9yLT5ndGll clsyXSA9Cj4gKwkJCWludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VOMTFfR1VDX1NHX0lOVFJf RU5BQkxFKTsKPiArCQllcnJvci0+Z3RpZXJbM10gPQo+ICsJCQlpbnRlbF91bmNvcmVfcmVhZCh1 bmNvcmUsCj4gKwkJCQkJICBHRU4xMV9HUE1fV0dCT1hQRVJGX0lOVFJfRU5BQkxFKTsKPiArCQll cnJvci0+Z3RpZXJbNF0gPQo+ICsJCQlpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsCj4gKwkJCQkJ ICBHRU4xMV9DUllQVE9fUlNWRF9JTlRSX0VOQUJMRSk7Cj4gKwkJZXJyb3ItPmd0aWVyWzVdID0K PiArCQkJaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAo+ICsJCQkJCSAgR0VOMTFfR1VOSVRfQ1NN RV9JTlRSX0VOQUJMRSk7Cj4gIAkJZXJyb3ItPm5ndGllciA9IDY7Cj4gLQl9IGVsc2UgaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+IC0JCWVycm9yLT5pZXIgPSBJOTE1X1JFQUQoR0VO OF9ERV9NSVNDX0lFUik7Cj4gKwl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSA4KSB7Cj4g KwkJZXJyb3ItPmllciA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VOOF9ERV9NSVNDX0lF Uik7Cj4gIAkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKPiAtCQkJZXJyb3ItPmd0aWVyW2ldID0g STkxNV9SRUFEKEdFTjhfR1RfSUVSKGkpKTsKPiArCQkJZXJyb3ItPmd0aWVyW2ldID0gaW50ZWxf dW5jb3JlX3JlYWQodW5jb3JlLAo+ICsJCQkJCQkJICAgIEdFTjhfR1RfSUVSKGkpKTsKPiAgCQll cnJvci0+bmd0aWVyID0gNDsKPiAtCX0gZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikp IHsKPiAtCQllcnJvci0+aWVyID0gSTkxNV9SRUFEKERFSUVSKTsKPiAtCQllcnJvci0+Z3RpZXJb MF0gPSBJOTE1X1JFQUQoR1RJRVIpOwo+ICsJfSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGk5MTUp KSB7Cj4gKwkJZXJyb3ItPmllciA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgREVJRVIpOwo+ ICsJCWVycm9yLT5ndGllclswXSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR1RJRVIpOwo+ ICAJCWVycm9yLT5uZ3RpZXIgPSAxOwo+IC0JfSBlbHNlIGlmIChJU19HRU4oZGV2X3ByaXYsIDIp KSB7Cj4gLQkJZXJyb3ItPmllciA9IEk5MTVfUkVBRDE2KEdFTjJfSUVSKTsKPiAtCX0gZWxzZSBp ZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKSB7Cj4gLQkJZXJyb3ItPmllciA9IEk5MTVfUkVB RChHRU4yX0lFUik7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCAyKSkgewo+ICsJCWVycm9y LT5pZXIgPSBpbnRlbF91bmNvcmVfcmVhZDE2KHVuY29yZSwgR0VOMl9JRVIpOwo+ICsJfSBlbHNl IGlmICghSVNfVkFMTEVZVklFVyhpOTE1KSkgewo+ICsJCWVycm9yLT5pZXIgPSBpbnRlbF91bmNv cmVfcmVhZCh1bmNvcmUsIEdFTjJfSUVSKTsKPiAgCX0KPiAtCWVycm9yLT5laXIgPSBJOTE1X1JF QUQoRUlSKTsKPiAtCWVycm9yLT5wZ3RibF9lciA9IEk5MTVfUkVBRChQR1RCTF9FUik7Cj4gKwll cnJvci0+ZWlyID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBFSVIpOwo+ICsJZXJyb3ItPnBn dGJsX2VyID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBQR1RCTF9FUik7Cj4gIH0KPiAgCj4g IHN0YXRpYyBjb25zdCBjaGFyICoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBpbmRleCAwNzYz ZmZmZmVhNTMuLjk2ODBmMTM3NmFjNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IEBA IC0xMjMxLDIwICsxMjMxLDIzIEBAIGludCBpbnRlbF9nZXRfY3J0Y19zY2FubGluZShzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YykKPiAgCj4gIHN0YXRpYyB2b2lkIGlyb25sYWtlX3Jwc19jaGFuZ2Vf aXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gKwlz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmZGV2X3ByaXYtPnVuY29yZTsKPiAgCXUzMiBi dXN5X3VwLCBidXN5X2Rvd24sIG1heF9hdmcsIG1pbl9hdmc7Cj4gIAl1OCBuZXdfZGVsYXk7Cj4g IAo+ICAJc3Bpbl9sb2NrKCZtY2hkZXZfbG9jayk7Cj4gIAo+IC0JSTkxNV9XUklURTE2KE1FTUlO VFJTVFMsIEk5MTVfUkVBRChNRU1JTlRSU1RTKSk7Cj4gKwlpbnRlbF91bmNvcmVfd3JpdGUxNih1 bmNvcmUsCj4gKwkJCSAgICAgTUVNSU5UUlNUUywKPiArCQkJICAgICBpbnRlbF91bmNvcmVfcmVh ZCh1bmNvcmUsIE1FTUlOVFJTVFMpKTsKPiAgCj4gIAluZXdfZGVsYXkgPSBkZXZfcHJpdi0+aXBz LmN1cl9kZWxheTsKPiAgCj4gLQlJOTE1X1dSSVRFMTYoTUVNSU5UUlNUUywgTUVNSU5UX0VWQUxf Q0hHKTsKPiAtCWJ1c3lfdXAgPSBJOTE1X1JFQUQoUkNQUkVWQlNZVFVQQVZHKTsKPiAtCWJ1c3lf ZG93biA9IEk5MTVfUkVBRChSQ1BSRVZCU1lURE5BVkcpOwo+IC0JbWF4X2F2ZyA9IEk5MTVfUkVB RChSQ0JNQVhBVkcpOwo+IC0JbWluX2F2ZyA9IEk5MTVfUkVBRChSQ0JNSU5BVkcpOwo+ICsJaW50 ZWxfdW5jb3JlX3dyaXRlMTYodW5jb3JlLCBNRU1JTlRSU1RTLCBNRU1JTlRfRVZBTF9DSEcpOwo+ ICsJYnVzeV91cCA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgUkNQUkVWQlNZVFVQQVZHKTsK PiArCWJ1c3lfZG93biA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgUkNQUkVWQlNZVEROQVZH KTsKPiArCW1heF9hdmcgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIFJDQk1BWEFWRyk7Cj4g KwltaW5fYXZnID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBSQ0JNSU5BVkcpOwo+ICAKPiAg CS8qIEhhbmRsZSBSQ1MgY2hhbmdlIHJlcXVlc3QgZnJvbSBodyAqLwo+ICAJaWYgKGJ1c3lfdXAg PiBtYXhfYXZnKSB7Cj4gQEAgLTQzMjMsOCArNDMyNiwxMCBAQCBzdGF0aWMgaW50IGk4eHhfaXJx X3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlzdHJ1Y3QgaW50ZWxfdW5j b3JlICp1bmNvcmUgPSAmZGV2X3ByaXYtPnVuY29yZTsKPiAgCXUxNiBlbmFibGVfbWFzazsKPiAg Cj4gLQlJOTE1X1dSSVRFMTYoRU1SLCB+KEk5MTVfRVJST1JfUEFHRV9UQUJMRSB8Cj4gLQkJCSAg ICBJOTE1X0VSUk9SX01FTU9SWV9SRUZSRVNIKSk7Cj4gKwlpbnRlbF91bmNvcmVfd3JpdGUxNih1 bmNvcmUsCj4gKwkJCSAgICAgRU1SLAo+ICsJCQkgICAgIH4oSTkxNV9FUlJPUl9QQUdFX1RBQkxF IHwKPiArCQkJICAgICAgIEk5MTVfRVJST1JfTUVNT1JZX1JFRlJFU0gpKTsKPiAgCj4gIAkvKiBV bm1hc2sgdGhlIGludGVycnVwdHMgdGhhdCB3ZSBhbHdheXMgd2FudCBvbi4gKi8KPiAgCWRldl9w cml2LT5pcnFfbWFzayA9Cj4gQEAgLTQzNTAsMTcgKzQzNTUsMTggQEAgc3RhdGljIGludCBpOHh4 X2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gLXN0YXRpYyB2b2lkIGk4eHhfZXJyb3JfaXJxX2FjayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gK3N0YXRpYyB2b2lkIGk4eHhfZXJyb3JfaXJxX2FjayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCQkJICAgICAgIHUxNiAqZWlyLCB1MTYgKmVp cl9zdHVjaykKPiAgewo+ICsJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmk5MTUtPnVu Y29yZTsKPiAgCXUxNiBlbXI7Cj4gIAo+IC0JKmVpciA9IEk5MTVfUkVBRDE2KEVJUik7Cj4gKwkq ZWlyID0gaW50ZWxfdW5jb3JlX3JlYWQxNih1bmNvcmUsIEVJUik7Cj4gIAo+ICAJaWYgKCplaXIp Cj4gLQkJSTkxNV9XUklURTE2KEVJUiwgKmVpcik7Cj4gKwkJaW50ZWxfdW5jb3JlX3dyaXRlMTYo dW5jb3JlLCBFSVIsICplaXIpOwo+ICAKPiAtCSplaXJfc3R1Y2sgPSBJOTE1X1JFQUQxNihFSVIp Owo+ICsJKmVpcl9zdHVjayA9IGludGVsX3VuY29yZV9yZWFkMTYodW5jb3JlLCBFSVIpOwo+ICAJ aWYgKCplaXJfc3R1Y2sgPT0gMCkKPiAgCQlyZXR1cm47Cj4gIAo+IEBAIC00Mzc0LDkgKzQzODAs OSBAQCBzdGF0aWMgdm9pZCBpOHh4X2Vycm9yX2lycV9hY2soc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJICogKG9yIGJ5IGEgR1BVIHJlc2V0KSBzbyB3ZSBtYXNrIGFueSBi aXQgdGhhdAo+ICAJICogcmVtYWlucyBzZXQuCj4gIAkgKi8KPiAtCWVtciA9IEk5MTVfUkVBRDE2 KEVNUik7Cj4gLQlJOTE1X1dSSVRFMTYoRU1SLCAweGZmZmYpOwo+IC0JSTkxNV9XUklURTE2KEVN UiwgZW1yIHwgKmVpcl9zdHVjayk7Cj4gKwllbXIgPSBpbnRlbF91bmNvcmVfcmVhZDE2KHVuY29y ZSwgRU1SKTsKPiArCWludGVsX3VuY29yZV93cml0ZTE2KHVuY29yZSwgRU1SLCAweGZmZmYpOwo+ ICsJaW50ZWxfdW5jb3JlX3dyaXRlMTYodW5jb3JlLCBFTVIsIGVtciB8ICplaXJfc3R1Y2spOwo+ ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpOHh4X2Vycm9yX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAtNDQ0Miw3ICs0NDQ4LDcgQEAgc3RhdGljIGly cXJldHVybl90IGk4eHhfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+ICAJCXUxNiBl aXIgPSAwLCBlaXJfc3R1Y2sgPSAwOwo+ICAJCXUxNiBpaXI7Cj4gIAo+IC0JCWlpciA9IEk5MTVf UkVBRDE2KEdFTjJfSUlSKTsKPiArCQlpaXIgPSBpbnRlbF91bmNvcmVfcmVhZDE2KCZkZXZfcHJp di0+dW5jb3JlLCBHRU4yX0lJUik7Cj4gIAkJaWYgKGlpciA9PSAwKQo+ICAJCQlicmVhazsKPiAg Cj4gQEAgLTQ0NTUsNyArNDQ2MSw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpOHh4X2lycV9oYW5k bGVyKGludCBpcnEsIHZvaWQgKmFyZykKPiAgCQlpZiAoaWlyICYgSTkxNV9NQVNURVJfRVJST1Jf SU5URVJSVVBUKQo+ICAJCQlpOHh4X2Vycm9yX2lycV9hY2soZGV2X3ByaXYsICZlaXIsICZlaXJf c3R1Y2spOwo+ICAKPiAtCQlJOTE1X1dSSVRFMTYoR0VOMl9JSVIsIGlpcik7Cj4gKwkJaW50ZWxf dW5jb3JlX3dyaXRlMTYoJmRldl9wcml2LT51bmNvcmUsIEdFTjJfSUlSLCBpaXIpOwo+ICAKPiAg CQlpZiAoaWlyICYgSTkxNV9VU0VSX0lOVEVSUlVQVCkKPiAgCQkJaW50ZWxfZW5naW5lX2JyZWFk Y3J1bWJzX2lycShkZXZfcHJpdi0+ZW5naW5lW1JDUzBdKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKPiBpbmRleCA1YTY2NzllMmI2ZWUuLjJjN2YzZWJjMDExNyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+IEBAIC0xOTEsOCArMTkxLDggQEAgc3RhdGljIHZvaWQgaTkxNV9pcm9ubGFr ZV9nZXRfbWVtX2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4g IAl1MTYgZGRycGxsLCBjc2lwbGw7Cj4gIAo+IC0JZGRycGxsID0gSTkxNV9SRUFEMTYoRERSTVBM TDEpOwo+IC0JY3NpcGxsID0gSTkxNV9SRUFEMTYoQ1NJUExMMCk7Cj4gKwlkZHJwbGwgPSBpbnRl bF91bmNvcmVfcmVhZDE2KCZkZXZfcHJpdi0+dW5jb3JlLCBERFJNUExMMSk7Cj4gKwljc2lwbGwg PSBpbnRlbF91bmNvcmVfcmVhZDE2KCZkZXZfcHJpdi0+dW5jb3JlLCBDU0lQTEwwKTsKPiAgCj4g IAlzd2l0Y2ggKGRkcnBsbCAmIDB4ZmYpIHsKPiAgCWNhc2UgMHhjOgo+IEBAIC02NDMyLDI2ICs2 NDMyLDI3IEBAIGJvb2wgaXJvbmxha2Vfc2V0X2RycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsIHU4IHZhbCkKPiAgCj4gIHN0YXRpYyB2b2lkIGlyb25sYWtlX2VuYWJsZV9kcnBzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICsJc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlID0gJmRldl9wcml2LT51bmNvcmU7Cj4gIAl1MzIgcmd2bW9kZWN0bDsKPiAg CXU4IGZtYXgsIGZtaW4sIGZzdGFydCwgdnN0YXJ0Owo+ICAKPiAgCXNwaW5fbG9ja19pcnEoJm1j aGRldl9sb2NrKTsKPiAgCj4gLQlyZ3Ztb2RlY3RsID0gSTkxNV9SRUFEKE1FTU1PREVDVEwpOwo+ ICsJcmd2bW9kZWN0bCA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgTUVNTU9ERUNUTCk7Cj4g IAo+ICAJLyogRW5hYmxlIHRlbXAgcmVwb3J0aW5nICovCj4gLQlJOTE1X1dSSVRFMTYoUE1NSVND LCBJOTE1X1JFQUQoUE1NSVNDKSB8IE1DUFBDRV9FTik7Cj4gLQlJOTE1X1dSSVRFMTYoVFNDMSwg STkxNV9SRUFEKFRTQzEpIHwgVFNFKTsKPiArCWludGVsX3VuY29yZV93cml0ZTE2KHVuY29yZSwg UE1NSVNDLCBJOTE1X1JFQUQoUE1NSVNDKSB8IE1DUFBDRV9FTik7Cj4gKwlpbnRlbF91bmNvcmVf d3JpdGUxNih1bmNvcmUsIFRTQzEsIEk5MTVfUkVBRChUU0MxKSB8IFRTRSk7Cj4gIAo+ICAJLyog MTAwbXMgUkMgZXZhbHVhdGlvbiBpbnRlcnZhbHMgKi8KPiAtCUk5MTVfV1JJVEUoUkNVUEVJLCAx MDAwMDApOwo+IC0JSTkxNV9XUklURShSQ0RORUksIDEwMDAwMCk7Cj4gKwlpbnRlbF91bmNvcmVf d3JpdGUodW5jb3JlLCBSQ1VQRUksIDEwMDAwMCk7Cj4gKwlpbnRlbF91bmNvcmVfd3JpdGUodW5j b3JlLCBSQ0RORUksIDEwMDAwMCk7Cj4gIAo+ICAJLyogU2V0IG1heC9taW4gdGhyZXNob2xkcyB0 byA5MG1zIGFuZCA4MG1zIHJlc3BlY3RpdmVseSAqLwo+IC0JSTkxNV9XUklURShSQ0JNQVhBVkcs IDkwMDAwKTsKPiAtCUk5MTVfV1JJVEUoUkNCTUlOQVZHLCA4MDAwMCk7Cj4gKwlpbnRlbF91bmNv cmVfd3JpdGUodW5jb3JlLCBSQ0JNQVhBVkcsIDkwMDAwKTsKPiArCWludGVsX3VuY29yZV93cml0 ZSh1bmNvcmUsIFJDQk1JTkFWRywgODAwMDApOwo+ICAKPiAtCUk5MTVfV1JJVEUoTUVNSUhZU1Qs IDEpOwo+ICsJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwgTUVNSUhZU1QsIDEpOwo+ICAKPiAg CS8qIFNldCB1cCBtaW4sIG1heCwgYW5kIGN1ciBmb3IgaW50ZXJydXB0IGhhbmRsaW5nICovCj4g IAlmbWF4ID0gKHJndm1vZGVjdGwgJiBNRU1NT0RFX0ZNQVhfTUFTSykgPj4gTUVNTU9ERV9GTUFY X1NISUZUOwo+IEBAIC02NDU5LDggKzY0NjAsOCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9lbmFi bGVfZHJwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlmc3RhcnQgPSAo cmd2bW9kZWN0bCAmIE1FTU1PREVfRlNUQVJUX01BU0spID4+Cj4gIAkJTUVNTU9ERV9GU1RBUlRf U0hJRlQ7Cj4gIAo+IC0JdnN0YXJ0ID0gKEk5MTVfUkVBRChQWFZGUkVRKGZzdGFydCkpICYgUFhW RlJFUV9QWF9NQVNLKSA+Pgo+IC0JCVBYVkZSRVFfUFhfU0hJRlQ7Cj4gKwl2c3RhcnQgPSAoaW50 ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBQWFZGUkVRKGZzdGFydCkpICYKPiArCQkgIFBYVkZSRVFf UFhfTUFTSykgPj4gUFhWRlJFUV9QWF9TSElGVDsKPiAgCj4gIAlkZXZfcHJpdi0+aXBzLmZtYXgg PSBmbWF4OyAvKiBJUFMgY2FsbGJhY2sgd2lsbCBpbmNyZWFzZSB0aGlzICovCj4gIAlkZXZfcHJp di0+aXBzLmZzdGFydCA9IGZzdGFydDsKPiBAQCAtNjQ3Miw1MyArNjQ3Myw2NiBAQCBzdGF0aWMg dm9pZCBpcm9ubGFrZV9lbmFibGVfZHJwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAlEUk1fREVCVUdfRFJJVkVSKCJmbWF4OiAlZCwgZm1pbjogJWQsIGZzdGFydDogJWRc biIsCj4gIAkJCSBmbWF4LCBmbWluLCBmc3RhcnQpOwo+ICAKPiAtCUk5MTVfV1JJVEUoTUVNSU5U UkVOLCBNRU1JTlRfQ1hfU1VQUl9FTiB8IE1FTUlOVF9FVkFMX0NIR19FTik7Cj4gKwlpbnRlbF91 bmNvcmVfd3JpdGUodW5jb3JlLAo+ICsJCQkgICBNRU1JTlRSRU4sCj4gKwkJCSAgIE1FTUlOVF9D WF9TVVBSX0VOIHwgTUVNSU5UX0VWQUxfQ0hHX0VOKTsKPiAgCj4gIAkvKgo+ICAJICogSW50ZXJy dXB0cyB3aWxsIGJlIGVuYWJsZWQgaW4gaXJvbmxha2VfaXJxX3Bvc3RpbnN0YWxsCj4gIAkgKi8K PiAgCj4gLQlJOTE1X1dSSVRFKFZJRFNUQVJULCB2c3RhcnQpOwo+IC0JUE9TVElOR19SRUFEKFZJ RFNUQVJUKTsKPiArCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIFZJRFNUQVJULCB2c3RhcnQp Owo+ICsJaW50ZWxfdW5jb3JlX3Bvc3RpbmdfcmVhZCh1bmNvcmUsIFZJRFNUQVJUKTsKPiAgCj4g IAlyZ3Ztb2RlY3RsIHw9IE1FTU1PREVfU1dNT0RFX0VOOwo+IC0JSTkxNV9XUklURShNRU1NT0RF Q1RMLCByZ3Ztb2RlY3RsKTsKPiArCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIE1FTU1PREVD VEwsIHJndm1vZGVjdGwpOwo+ICAKPiAtCWlmICh3YWl0X2Zvcl9hdG9taWMoKEk5MTVfUkVBRChN RU1TV0NUTCkgJiBNRU1DVExfQ01EX1NUUykgPT0gMCwgMTApKQo+ICsJaWYgKHdhaXRfZm9yX2F0 b21pYygoaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBNRU1TV0NUTCkgJgo+ICsJCQkgICAgIE1F TUNUTF9DTURfU1RTKSA9PSAwLCAxMCkpCj4gIAkJRFJNX0VSUk9SKCJzdHVjayB0cnlpbmcgdG8g Y2hhbmdlIHBlcmYgbW9kZVxuIik7Cj4gIAltZGVsYXkoMSk7Cj4gIAo+ICAJaXJvbmxha2Vfc2V0 X2RycHMoZGV2X3ByaXYsIGZzdGFydCk7Cj4gIAo+IC0JZGV2X3ByaXYtPmlwcy5sYXN0X2NvdW50 MSA9IEk5MTVfUkVBRChETUlFQykgKwo+IC0JCUk5MTVfUkVBRChERFJFQykgKyBJOTE1X1JFQUQo Q1NJRUMpOwo+ICsJZGV2X3ByaXYtPmlwcy5sYXN0X2NvdW50MSA9Cj4gKwkJaW50ZWxfdW5jb3Jl X3JlYWQodW5jb3JlLCBETUlFQykgKwo+ICsJCWludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgRERS RUMpICsKPiArCQlpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIENTSUVDKTsKPiAgCWRldl9wcml2 LT5pcHMubGFzdF90aW1lMSA9IGppZmZpZXNfdG9fbXNlY3MoamlmZmllcyk7Cj4gLQlkZXZfcHJp di0+aXBzLmxhc3RfY291bnQyID0gSTkxNV9SRUFEKEdGWEVDKTsKPiArCWRldl9wcml2LT5pcHMu bGFzdF9jb3VudDIgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdGWEVDKTsKPiAgCWRldl9w cml2LT5pcHMubGFzdF90aW1lMiA9IGt0aW1lX2dldF9yYXdfbnMoKTsKPiAgCj4gIAlzcGluX3Vu bG9ja19pcnEoJm1jaGRldl9sb2NrKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaXJvbmxha2Vf ZGlzYWJsZV9kcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArc3RhdGlj IHZvaWQgaXJvbmxha2VfZGlzYWJsZV9kcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmaTkxNS0+dW5jb3JlOwo+ ICAJdTE2IHJndnN3Y3RsOwo+ICAKPiAgCXNwaW5fbG9ja19pcnEoJm1jaGRldl9sb2NrKTsKPiAg Cj4gLQlyZ3Zzd2N0bCA9IEk5MTVfUkVBRDE2KE1FTVNXQ1RMKTsKPiArCXJndnN3Y3RsID0gaW50 ZWxfdW5jb3JlX3JlYWQxNih1bmNvcmUsIE1FTVNXQ1RMKTsKPiAgCj4gIAkvKiBBY2sgaW50ZXJy dXB0cywgZGlzYWJsZSBFRkMgaW50ZXJydXB0ICovCj4gLQlJOTE1X1dSSVRFKE1FTUlOVFJFTiwg STkxNV9SRUFEKE1FTUlOVFJFTikgJiB+TUVNSU5UX0VWQUxfQ0hHX0VOKTsKPiAtCUk5MTVfV1JJ VEUoTUVNSU5UUlNUUywgTUVNSU5UX0VWQUxfQ0hHKTsKPiAtCUk5MTVfV1JJVEUoREVJRVIsIEk5 MTVfUkVBRChERUlFUikgJiB+REVfUENVX0VWRU5UKTsKPiAtCUk5MTVfV1JJVEUoREVJSVIsIERF X1BDVV9FVkVOVCk7Cj4gLQlJOTE1X1dSSVRFKERFSU1SLCBJOTE1X1JFQUQoREVJTVIpIHwgREVf UENVX0VWRU5UKTsKPiArCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsCj4gKwkJCSAgIE1FTUlO VFJFTiwKPiArCQkJICAgaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBNRU1JTlRSRU4pICYKPiAr CQkJICAgfk1FTUlOVF9FVkFMX0NIR19FTik7Cj4gKwlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3Jl LCBNRU1JTlRSU1RTLCBNRU1JTlRfRVZBTF9DSEcpOwo+ICsJaW50ZWxfdW5jb3JlX3dyaXRlKHVu Y29yZSwKPiArCQkJICAgREVJRVIsCj4gKwkJCSAgIGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwg REVJRVIpICYgfkRFX1BDVV9FVkVOVCk7Cj4gKwlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBE RUlJUiwgREVfUENVX0VWRU5UKTsKPiArCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsCj4gKwkJ CSAgIERFSU1SLAo+ICsJCQkgICBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIERFSU1SKSB8IERF X1BDVV9FVkVOVCk7Cj4gIAo+ICAJLyogR28gYmFjayB0byB0aGUgc3RhcnRpbmcgZnJlcXVlbmN5 ICovCj4gLQlpcm9ubGFrZV9zZXRfZHJwcyhkZXZfcHJpdiwgZGV2X3ByaXYtPmlwcy5mc3RhcnQp Owo+ICsJaXJvbmxha2Vfc2V0X2RycHMoaTkxNSwgaTkxNS0+aXBzLmZzdGFydCk7Cj4gIAltZGVs YXkoMSk7Cj4gIAlyZ3Zzd2N0bCB8PSBNRU1DVExfQ01EX1NUUzsKPiAtCUk5MTVfV1JJVEUoTUVN U1dDVEwsIHJndnN3Y3RsKTsKPiArCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIE1FTVNXQ1RM LCByZ3Zzd2N0bCk7Cj4gIAltZGVsYXkoMSk7Cj4gIAo+ICAJc3Bpbl91bmxvY2tfaXJxKCZtY2hk ZXZfbG9jayk7Cj4gQEAgLTk1MDQsMTYgKzk1MTgsMjEgQEAgc3RhdGljIHZvaWQgZzR4X2luaXRf Y2xvY2tfZ2F0aW5nKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIHN0 YXRpYyB2b2lkIGk5NjVnbV9pbml0X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCUk5MTVfV1JJVEUoUkVOQ0xLX0dBVEVfRDEsIEk5NjVfUkND X0NMT0NLX0dBVEVfRElTQUJMRSk7Cj4gLQlJOTE1X1dSSVRFKFJFTkNMS19HQVRFX0QyLCAwKTsK PiAtCUk5MTVfV1JJVEUoRFNQQ0xLX0dBVEVfRCwgMCk7Cj4gLQlJOTE1X1dSSVRFKFJBTUNMS19H QVRFX0QsIDApOwo+IC0JSTkxNV9XUklURTE2KERFVUMsIDApOwo+IC0JSTkxNV9XUklURShNSV9B UkJfU1RBVEUsCj4gLQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKE1JX0FSQl9ESVNQTEFZX1RSSUNL TEVfRkVFRF9ESVNBQkxFKSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmZGV2 X3ByaXYtPnVuY29yZTsKPiArCj4gKwlpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBSRU5DTEtf R0FURV9EMSwgSTk2NV9SQ0NfQ0xPQ0tfR0FURV9ESVNBQkxFKTsKPiArCWludGVsX3VuY29yZV93 cml0ZSh1bmNvcmUsIFJFTkNMS19HQVRFX0QyLCAwKTsKPiArCWludGVsX3VuY29yZV93cml0ZSh1 bmNvcmUsIERTUENMS19HQVRFX0QsIDApOwo+ICsJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwg UkFNQ0xLX0dBVEVfRCwgMCk7Cj4gKwlpbnRlbF91bmNvcmVfd3JpdGUxNih1bmNvcmUsIERFVUMs IDApOwo+ICsJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwKPiArCQkJICAgTUlfQVJCX1NUQVRF LAo+ICsJCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoTUlfQVJCX0RJU1BMQVlfVFJJQ0tMRV9GRUVE X0RJU0FCTEUpKTsKPiAgCj4gIAkvKiBXYURpc2FibGVfUmVuZGVyQ2FjaGVfT3BlcmF0aW9uYWxG bHVzaDpnZW40ICovCj4gLQlJOTE1X1dSSVRFKENBQ0hFX01PREVfMCwgX01BU0tFRF9CSVRfRElT QUJMRShSQ19PUF9GTFVTSF9FTkFCTEUpKTsKPiArCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUs Cj4gKwkJCSAgIENBQ0hFX01PREVfMCwKPiArCQkJICAgX01BU0tFRF9CSVRfRElTQUJMRShSQ19P UF9GTFVTSF9FTkFCTEUpKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaTk2NWdfaW5pdF9jbG9j a19nYXRpbmcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoKLS0gCkphbmkgTmlr dWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBHcmFwaGljcyBDZW50ZXIKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4