From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 23/25] drm/i915: Move the get/put irq locking into the caller Date: Mon, 27 Jun 2016 13:11:38 +0100 Message-ID: <577117FA.3080701@linux.intel.com> References: <1466849588-17558-1-git-send-email-chris@chris-wilson.co.uk> <1466849588-17558-24-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 27DAC6E215 for ; Mon, 27 Jun 2016 12:11:41 +0000 (UTC) In-Reply-To: <1466849588-17558-24-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDI1LzA2LzE2IDExOjEzLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gV2l0aCBvbmx5IGEgc2lu Z2xlIGNhbGxzaXRlIGZvciBpbnRlbF9lbmdpbmVfY3MtPmlycV9nZXQgYW5kIC0+aXJxX3B1dCwK PiB3ZSBjYW4gcmVkdWNlIHRoZSBjb2RlIHNpemUgYnkgbW92aW5nIHRoZSBjb21tb24gcHJlYW1i bGUgaW50byB0aGUKPiBjYWxsZXIsIGFuZCB3ZSBjYW4gYWxzbyBlbGltaW5hdGUgdGhlIHJlZmVy ZW5jZSBjb3VudGluZy4KPgo+IEZvciBjb21wbGV0ZW5lc3MsIGFzIHdlIGFyZSBubyBsb25nZXIg ZG9pbmcgcmVmZXJlbmNlIGNvdW50aW5nIG9uIGlycSwKPiByZW5hbWUgdGhlIGdldC9wdXQgdmZ1 bmN0aW9ucyB0byBlbmFibGUvZGlzYWJsZSByZXNwZWN0aXZlbHkgYW5kIGFyZQo+IGFibGUgdG8g cmV2aWV3IHRoZSB1c2Ugb2YgcG9zdGluZyByZWFkcy4gV2Ugb25seSByZXF1aXJlIHRoZQo+IHNl cmlhbGlzYXRpb24gd2l0aCBoYXJkd2FyZSB3aGVuIGVuYWJsaW5nIHRoZSBpbnRlcnJ1cHQgKGku ZS4gc28gd2UKPiBjYW5ub3QgbWlzcyBhbiBpbnRlcnJ1cHQgYnkgZ29pbmcgdG8gc2xlZXAgYmVm b3JlIHRoZSBoYXJkd2FyZSB0cnVseQo+IGVuYWJsZXMgaXQpLgo+Cj4gU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgIHwgICA4ICstCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jIHwgIDEwICstCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgIHwgIDM0ICstLS0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgfCAyNjkgKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICB8ICAg NSArLQo+ICAgNSBmaWxlcyBjaGFuZ2VkLCAxMDggaW5zZXJ0aW9ucygrKSwgMjE4IGRlbGV0aW9u cygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gaW5kZXggNzcyNGJhZTI3YmNmLi5iZTI1 YjdiZGFjZmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAtMjU5LDEyICsyNTks MTIgQEAgc3RhdGljIHZvaWQgaWxrX3VwZGF0ZV9ndF9pcnEoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAgCWRldl9wcml2LT5ndF9pcnFfbWFzayAmPSB+aW50ZXJydXB0X21h c2s7Cj4gICAJZGV2X3ByaXYtPmd0X2lycV9tYXNrIHw9ICh+ZW5hYmxlZF9pcnFfbWFzayAmIGlu dGVycnVwdF9tYXNrKTsKPiAgIAlJOTE1X1dSSVRFKEdUSU1SLCBkZXZfcHJpdi0+Z3RfaXJxX21h c2spOwo+IC0JUE9TVElOR19SRUFEKEdUSU1SKTsKPiAgIH0KPgo+ICAgdm9pZCBnZW41X2VuYWJs ZV9ndF9pcnEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1aW50MzJfdCBtYXNr KQo+ICAgewo+ICAgCWlsa191cGRhdGVfZ3RfaXJxKGRldl9wcml2LCBtYXNrLCBtYXNrKTsKPiAr CVBPU1RJTkdfUkVBRF9GVyhHVElNUik7Cj4gICB9Cj4KPiAgIHZvaWQgZ2VuNV9kaXNhYmxlX2d0 X2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVpbnQzMl90IG1hc2spCj4g QEAgLTI4MTksOSArMjgxOSw5IEBAIHJpbmdfaWRsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsIHUzMiBzZXFubykKPiAgIH0KPgo+ICAgc3RhdGljIGJvb2wKPiAtaXBlaHJfaXNfc2Vt YXBob3JlX3dhaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgaXBlaHIp Cj4gK2lwZWhyX2lzX3NlbWFwaG9yZV93YWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwgdTMyIGlwZWhyKQo+ICAgewo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkgewo+ ICsJaWYgKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpID49IDgpIHsKPiAgIAkJcmV0dXJuIChpcGVo ciA+PiAyMykgPT0gMHgxYzsKPiAgIAl9IGVsc2Ugewo+ICAgCQlpcGVociAmPSB+TUlfU0VNQVBI T1JFX1NZTkNfTUFTSzsKPiBAQCAtMjg5Miw3ICsyODkyLDcgQEAgc2VtYXBob3JlX3dhaXRzX2Zv cihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiAqc2Vxbm8pCj4gICAJCXJldHVy biBOVUxMOwo+Cj4gICAJaXBlaHIgPSBJOTE1X1JFQUQoUklOR19JUEVIUihlbmdpbmUtPm1taW9f YmFzZSkpOwo+IC0JaWYgKCFpcGVocl9pc19zZW1hcGhvcmVfd2FpdChlbmdpbmUtPmk5MTUsIGlw ZWhyKSkKPiArCWlmICghaXBlaHJfaXNfc2VtYXBob3JlX3dhaXQoZW5naW5lLCBpcGVocikpCj4g ICAJCXJldHVybiBOVUxMOwo+Cj4gICAJLyoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jy ZWFkY3J1bWJzLmMKPiBpbmRleCA2NjFkNmI0MTVhYzMuLjNjMmU1M2FjZDE4NyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwo+IEBAIC01MCwxMiArNTAsMTgg QEAgc3RhdGljIHZvaWQgaXJxX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gICAJICoganVzdCBpbiBjYXNlLgo+ICAgCSAqLwo+ICAgCWVuZ2luZS0+aXJxX3Bvc3RlZCA9 IHRydWU7Cj4gLQlXQVJOX09OKCFlbmdpbmUtPmlycV9nZXQoZW5naW5lKSk7Cj4gKwo+ICsJc3Bp bl9sb2NrX2lycSgmZW5naW5lLT5pOTE1LT5pcnFfbG9jayk7Cj4gKwllbmdpbmUtPmlycV9lbmFi bGUoZW5naW5lKTsKPiArCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT5pOTE1LT5pcnFfbG9jayk7 Cj4gICB9Cj4KPiAgIHN0YXRpYyB2b2lkIGlycV9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiAgIHsKPiAtCWVuZ2luZS0+aXJxX3B1dChlbmdpbmUpOwo+ICsJc3Bpbl9s b2NrX2lycSgmZW5naW5lLT5pOTE1LT5pcnFfbG9jayk7Cj4gKwllbmdpbmUtPmlycV9kaXNhYmxl KGVuZ2luZSk7Cj4gKwlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+aTkxNS0+aXJxX2xvY2spOwo+ ICsKPiAgIAllbmdpbmUtPmlycV9wb3N0ZWQgPSBmYWxzZTsKPiAgIH0KCldvdWxkbid0IGl0IGJl IGJldHRlciBpZiBsb2NrcyBzdGF5ZWQgaW4gdGhlIHZmdW5jcz8gSSBjYW4ndCBmaWd1cmUgb3V0 IAp3aHkgd291bGQgeW91IHdhbnQgdG8gcHVsbCB0aGF0IG91dCBsaWtlIHRoaXMuCgo+Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCA1MjZjNzE5NzVmMTEuLmU4ZmVjZjA1MWUyYyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTE2MTQsMzYgKzE2MTQsMTggQEAg c3RhdGljIGludCBnZW44X2VtaXRfYmJfc3RhcnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4KPiAtc3RhdGljIGJvb2wgZ2VuOF9sb2dpY2Fs X3JpbmdfZ2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3N0YXRpYyB2 b2lkIGdlbjhfbG9naWNhbF9yaW5nX2VuYWJsZV9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVu Z2luZS0+aTkxNTsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gLQo+IC0JaWYgKFdBUk5fT04o IWludGVsX2lycXNfZW5hYmxlZChkZXZfcHJpdikpKQo+IC0JCXJldHVybiBmYWxzZTsKPiAtCj4g LQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLQlpZiAo ZW5naW5lLT5pcnFfcmVmY291bnQrKyA9PSAwKSB7Cj4gLQkJSTkxNV9XUklURV9JTVIoZW5naW5l LAo+IC0JCQkgICAgICAgfihlbmdpbmUtPmlycV9lbmFibGVfbWFzayB8IGVuZ2luZS0+aXJxX2tl ZXBfbWFzaykpOwo+IC0JCVBPU1RJTkdfUkVBRChSSU5HX0lNUihlbmdpbmUtPm1taW9fYmFzZSkp Owo+IC0JfQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBm bGFncyk7Cj4gLQo+IC0JcmV0dXJuIHRydWU7Cj4gKwlJOTE1X1dSSVRFX0lNUihlbmdpbmUsCj4g KwkJICAgICAgIH4oZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgfCBlbmdpbmUtPmlycV9rZWVwX21h c2spKTsKPiArCVBPU1RJTkdfUkVBRF9GVyhSSU5HX0lNUihlbmdpbmUtPm1taW9fYmFzZSkpOwo+ ICAgfQo+Cj4gLXN0YXRpYyB2b2lkIGdlbjhfbG9naWNhbF9yaW5nX3B1dF9pcnEoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICtzdGF0aWMgdm9pZCBnZW44X2xvZ2ljYWxfcmluZ19k aXNhYmxlX2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+IC0JdW5zaWdu ZWQgbG9uZyBmbGFnczsKPiAtCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9s b2NrLCBmbGFncyk7Cj4gLQlpZiAoLS1lbmdpbmUtPmlycV9yZWZjb3VudCA9PSAwKSB7Cj4gLQkJ STkxNV9XUklURV9JTVIoZW5naW5lLCB+ZW5naW5lLT5pcnFfa2VlcF9tYXNrKTsKPiAtCQlQT1NU SU5HX1JFQUQoUklOR19JTVIoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAtCX0KPiAtCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+ICsJSTkxNV9XUklU RV9JTVIoZW5naW5lLCB+ZW5naW5lLT5pcnFfa2VlcF9tYXNrKTsKPiAgIH0KPgo+ICAgc3RhdGlj IGludCBnZW44X2VtaXRfZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 LAo+IEBAIC0xOTYzLDggKzE5NDUsOCBAQCBsb2dpY2FsX3JpbmdfZGVmYXVsdF92ZnVuY3Moc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCWVuZ2luZS0+aW5pdF9odyA9IGdlbjhf aW5pdF9jb21tb25fcmluZzsKPiAgIAllbmdpbmUtPmVtaXRfcmVxdWVzdCA9IGdlbjhfZW1pdF9y ZXF1ZXN0Owo+ICAgCWVuZ2luZS0+ZW1pdF9mbHVzaCA9IGdlbjhfZW1pdF9mbHVzaDsKPiAtCWVu Z2luZS0+aXJxX2dldCA9IGdlbjhfbG9naWNhbF9yaW5nX2dldF9pcnE7Cj4gLQllbmdpbmUtPmly cV9wdXQgPSBnZW44X2xvZ2ljYWxfcmluZ19wdXRfaXJxOwo+ICsJZW5naW5lLT5pcnFfZW5hYmxl ID0gZ2VuOF9sb2dpY2FsX3JpbmdfZW5hYmxlX2lycTsKPiArCWVuZ2luZS0+aXJxX2Rpc2FibGUg PSBnZW44X2xvZ2ljYWxfcmluZ19kaXNhYmxlX2lycTsKPiAgIAllbmdpbmUtPmVtaXRfYmJfc3Rh cnQgPSBnZW44X2VtaXRfYmJfc3RhcnQ7Cj4gICAJaWYgKElTX0JYVF9SRVZJRChlbmdpbmUtPmk5 MTUsIDAsIEJYVF9SRVZJRF9BMSkpCj4gICAJCWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIgPSBi eHRfYV9zZXFub19iYXJyaWVyOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMKPiBpbmRleCBhZDliNTQwNzExNTkuLmQ3YjVhYWU5Y2ZkMiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtMTYzMiwxMDMgKzE2MzIsNTQgQEAgZ2Vu Nl9zZXFub19iYXJyaWVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlzcGlu X3VubG9ja19pcnEoJmRldl9wcml2LT51bmNvcmUubG9jayk7Cj4gICB9Cj4KPiAtc3RhdGljIGJv b2wKPiAtZ2VuNV9yaW5nX2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICtzdGF0aWMgdm9pZAo+ICtnZW41X3JpbmdfZW5hYmxlX2lycShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBlbmdpbmUtPmk5MTU7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0KPiAtCWlmIChXQVJO X09OKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpKSkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4g LQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+IC0J aWYgKGVuZ2luZS0+aXJxX3JlZmNvdW50KysgPT0gMCkKPiAtCQlnZW41X2VuYWJsZV9ndF9pcnEo ZGV2X3ByaXYsIGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrKTsKPiAtCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+IC0KPiAtCXJldHVybiB0cnVlOwo+ ICsJZ2VuNV9lbmFibGVfZ3RfaXJxKGVuZ2luZS0+aTkxNSwgZW5naW5lLT5pcnFfZW5hYmxlX21h c2spOwo+ICAgfQo+Cj4gICBzdGF0aWMgdm9pZAo+IC1nZW41X3JpbmdfcHV0X2lycShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK2dlbjVfcmluZ19kaXNhYmxlX2lycShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0K PiAtCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiAtCWlm ICgtLWVuZ2luZS0+aXJxX3JlZmNvdW50ID09IDApCj4gLQkJZ2VuNV9kaXNhYmxlX2d0X2lycShk ZXZfcHJpdiwgZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gKwlnZW41X2Rpc2FibGVfZ3RfaXJx KGVuZ2luZS0+aTkxNSwgZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwo+ICAgfQo+Cj4gLXN0YXRp YyBib29sCj4gLWk5eHhfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiArc3RhdGljIHZvaWQKPiAraTl4eF9yaW5nX2VuYWJsZV9pcnEoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gLQo+IC0JaWYg KCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpKQo+IC0JCXJldHVybiBmYWxzZTsKPiAtCj4g LQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLQlpZiAo ZW5naW5lLT5pcnFfcmVmY291bnQrKyA9PSAwKSB7Cj4gLQkJZGV2X3ByaXYtPmlycV9tYXNrICY9 IH5lbmdpbmUtPmlycV9lbmFibGVfbWFzazsKPiAtCQlJOTE1X1dSSVRFKElNUiwgZGV2X3ByaXYt PmlycV9tYXNrKTsKPiAtCQlQT1NUSU5HX1JFQUQoSU1SKTsKPiAtCX0KPiAtCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+Cj4gLQlyZXR1cm4gdHJ1 ZTsKPiArCWRldl9wcml2LT5pcnFfbWFzayAmPSB+ZW5naW5lLT5pcnFfZW5hYmxlX21hc2s7Cj4g KwlJOTE1X1dSSVRFKElNUiwgZGV2X3ByaXYtPmlycV9tYXNrKTsKPiArCVBPU1RJTkdfUkVBRF9G VyhSSU5HX0lNUihlbmdpbmUtPm1taW9fYmFzZSkpOwo+ICAgfQo+Cj4gICBzdGF0aWMgdm9pZAo+ IC1pOXh4X3JpbmdfcHV0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK2k5 eHhfcmluZ19kaXNhYmxlX2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7 Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ IC0JdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2 LT5pcnFfbG9jaywgZmxhZ3MpOwo+IC0JaWYgKC0tZW5naW5lLT5pcnFfcmVmY291bnQgPT0gMCkg ewo+IC0JCWRldl9wcml2LT5pcnFfbWFzayB8PSBlbmdpbmUtPmlycV9lbmFibGVfbWFzazsKPiAt CQlJOTE1X1dSSVRFKElNUiwgZGV2X3ByaXYtPmlycV9tYXNrKTsKPiAtCQlQT1NUSU5HX1JFQUQo SU1SKTsKPiAtCX0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9j aywgZmxhZ3MpOwo+ICsJZGV2X3ByaXYtPmlycV9tYXNrIHw9IGVuZ2luZS0+aXJxX2VuYWJsZV9t YXNrOwo+ICsJSTkxNV9XUklURShJTVIsIGRldl9wcml2LT5pcnFfbWFzayk7Cj4gICB9Cj4KPiAt c3RhdGljIGJvb2wKPiAtaTh4eF9yaW5nX2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICtzdGF0aWMgdm9pZAo+ICtpOHh4X3JpbmdfZW5hYmxlX2lycShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsKPgo+IC0J aWYgKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpKQo+IC0JCXJldHVybiBmYWxzZTsKPiAt Cj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLQlp ZiAoZW5naW5lLT5pcnFfcmVmY291bnQrKyA9PSAwKSB7Cj4gLQkJZGV2X3ByaXYtPmlycV9tYXNr ICY9IH5lbmdpbmUtPmlycV9lbmFibGVfbWFzazsKPiAtCQlJOTE1X1dSSVRFMTYoSU1SLCBkZXZf cHJpdi0+aXJxX21hc2spOwo+IC0JCVBPU1RJTkdfUkVBRDE2KElNUik7Cj4gLQl9Cj4gLQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiAtCj4gLQly ZXR1cm4gdHJ1ZTsKPiArCWRldl9wcml2LT5pcnFfbWFzayAmPSB+ZW5naW5lLT5pcnFfZW5hYmxl X21hc2s7Cj4gKwlJOTE1X1dSSVRFMTYoSU1SLCBkZXZfcHJpdi0+aXJxX21hc2spOwo+ICsJUE9T VElOR19SRUFEMTYoUklOR19JTVIoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAgIH0KPgo+ICAgc3Rh dGljIHZvaWQKPiAtaTh4eF9yaW5nX3B1dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+ICtpOHh4X3JpbmdfZGlzYWJsZV9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2lu ZS0+aTkxNTsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4KPiAtCXNwaW5fbG9ja19pcnFzYXZl KCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiAtCWlmICgtLWVuZ2luZS0+aXJxX3JlZmNv dW50ID09IDApIHsKPiAtCQlkZXZfcHJpdi0+aXJxX21hc2sgfD0gZW5naW5lLT5pcnFfZW5hYmxl X21hc2s7Cj4gLQkJSTkxNV9XUklURTE2KElNUiwgZGV2X3ByaXYtPmlycV9tYXNrKTsKPiAtCQlQ T1NUSU5HX1JFQUQxNihJTVIpOwo+IC0JfQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2 X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gKwlkZXZfcHJpdi0+aXJxX21hc2sgfD0gZW5naW5l LT5pcnFfZW5hYmxlX21hc2s7Cj4gKwlJOTE1X1dSSVRFMTYoSU1SLCBkZXZfcHJpdi0+aXJxX21h c2spOwo+ICAgfQo+Cj4gICBzdGF0aWMgaW50Cj4gQEAgLTE3NjksMTIyICsxNzIwLDc0IEBAIGk5 eHhfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICAJcmV0 dXJuIDA7Cj4gICB9Cj4KPiAtc3RhdGljIGJvb2wKPiAtZ2VuNl9yaW5nX2dldF9pcnEoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICtzdGF0aWMgdm9pZAo+ICtnZW42X3JpbmdfZW5h YmxlX2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+IC0JdW5zaWduZWQg bG9uZyBmbGFnczsKPiAtCj4gLQlpZiAoV0FSTl9PTighaW50ZWxfaXJxc19lbmFibGVkKGRldl9w cml2KSkpCj4gLQkJcmV0dXJuIGZhbHNlOwo+Cj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3By aXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLQlpZiAoZW5naW5lLT5pcnFfcmVmY291bnQrKyA9PSAw KSB7Cj4gLQkJaWYgKEhBU19MM19EUEYoZGV2X3ByaXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKQo+ IC0JCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsCj4gLQkJCQkgICAgICAgfihlbmdpbmUtPmlycV9l bmFibGVfbWFzayB8Cj4gLQkJCQkJIEdUX1BBUklUWV9FUlJPUihkZXZfcHJpdikpKTsKPiAtCQll bHNlCj4gLQkJCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwgfmVuZ2luZS0+aXJxX2VuYWJsZV9tYXNr KTsKPiAtCQlnZW41X2VuYWJsZV9ndF9pcnEoZGV2X3ByaXYsIGVuZ2luZS0+aXJxX2VuYWJsZV9t YXNrKTsKPiAtCX0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9j aywgZmxhZ3MpOwo+IC0KPiAtCXJldHVybiB0cnVlOwo+ICsJaWYgKEhBU19MM19EUEYoZGV2X3By aXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKQo+ICsJCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwKPiAr CQkJICAgICAgIH4oZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgfAo+ICsJCQkJIEdUX1BBUklUWV9F UlJPUihkZXZfcHJpdikpKTsKPiArCWVsc2UKPiArCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsIH5l bmdpbmUtPmlycV9lbmFibGVfbWFzayk7Cj4gKwlnZW41X2VuYWJsZV9ndF9pcnEoZGV2X3ByaXYs IGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrKTsKPiAgIH0KPgo+ICAgc3RhdGljIHZvaWQKPiAtZ2Vu Nl9yaW5nX3B1dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICtnZW42X3Jp bmdfZGlzYWJsZV9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAtCXVu c2lnbmVkIGxvbmcgZmxhZ3M7Cj4KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJx X2xvY2ssIGZsYWdzKTsKPiAtCWlmICgtLWVuZ2luZS0+aXJxX3JlZmNvdW50ID09IDApIHsKPiAt CQlpZiAoSEFTX0wzX0RQRihkZXZfcHJpdikgJiYgZW5naW5lLT5pZCA9PSBSQ1MpCj4gLQkJCUk5 MTVfV1JJVEVfSU1SKGVuZ2luZSwgfkdUX1BBUklUWV9FUlJPUihkZXZfcHJpdikpOwo+IC0JCWVs c2UKPiAtCQkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+MCk7Cj4gLQkJZ2VuNV9kaXNhYmxlX2d0 X2lycShkZXZfcHJpdiwgZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwo+IC0JfQo+IC0Jc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gKwlpZiAoSEFT X0wzX0RQRihkZXZfcHJpdikgJiYgZW5naW5lLT5pZCA9PSBSQ1MpCj4gKwkJSTkxNV9XUklURV9J TVIoZW5naW5lLCB+R1RfUEFSSVRZX0VSUk9SKGRldl9wcml2KSk7Cj4gKwllbHNlCj4gKwkJSTkx NV9XUklURV9JTVIoZW5naW5lLCB+MCk7Cj4gKwlnZW41X2Rpc2FibGVfZ3RfaXJxKGRldl9wcml2 LCBlbmdpbmUtPmlycV9lbmFibGVfbWFzayk7Cj4gICB9Cj4KPiAtc3RhdGljIGJvb2wKPiAtaHN3 X3ZlYm94X2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICtzdGF0aWMg dm9pZAo+ICtoc3dfdmVib3hfZW5hYmxlX2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5l LT5pOTE1Owo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsKPiAtCj4gLQlpZiAoV0FSTl9PTighaW50 ZWxfaXJxc19lbmFibGVkKGRldl9wcml2KSkpCj4gLQkJcmV0dXJuIGZhbHNlOwo+Cj4gLQlzcGlu X2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLQlpZiAoZW5naW5l LT5pcnFfcmVmY291bnQrKyA9PSAwKSB7Cj4gLQkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+ZW5n aW5lLT5pcnFfZW5hYmxlX21hc2spOwo+IC0JCWdlbjZfZW5hYmxlX3BtX2lycShkZXZfcHJpdiwg ZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwo+IC0JfQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLQo+IC0JcmV0dXJuIHRydWU7Cj4gKwlJ OTE1X1dSSVRFX0lNUihlbmdpbmUsIH5lbmdpbmUtPmlycV9lbmFibGVfbWFzayk7Cj4gKwlnZW42 X2VuYWJsZV9wbV9pcnEoZGV2X3ByaXYsIGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrKTsKPiAgIH0K Pgo+ICAgc3RhdGljIHZvaWQKPiAtaHN3X3ZlYm94X3B1dF9pcnEoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICtoc3dfdmVib3hfZGlzYWJsZV9pcnEoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGVuZ2luZS0+aTkxNTsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4KPiAtCXNwaW5fbG9j a19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiAtCWlmICgtLWVuZ2luZS0+ aXJxX3JlZmNvdW50ID09IDApIHsKPiAtCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsIH4wKTsKPiAt CQlnZW42X2Rpc2FibGVfcG1faXJxKGRldl9wcml2LCBlbmdpbmUtPmlycV9lbmFibGVfbWFzayk7 Cj4gLQl9Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZs YWdzKTsKPiArCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwgfjApOwo+ICsJZ2VuNl9kaXNhYmxlX3Bt X2lycShkZXZfcHJpdiwgZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwo+ICAgfQo+Cj4gLXN0YXRp YyBib29sCj4gLWdlbjhfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiArc3RhdGljIHZvaWQKPiArZ2VuOF9yaW5nX2VuYWJsZV9pcnEoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4KPiAtCWlmIChX QVJOX09OKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpKSkKPiAtCQlyZXR1cm4gZmFsc2U7 Cj4gLQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+ IC0JaWYgKGVuZ2luZS0+aXJxX3JlZmNvdW50KysgPT0gMCkgewo+IC0JCWlmIChIQVNfTDNfRFBG KGRldl9wcml2KSAmJiBlbmdpbmUtPmlkID09IFJDUykgewo+IC0JCQlJOTE1X1dSSVRFX0lNUihl bmdpbmUsCj4gLQkJCQkgICAgICAgfihlbmdpbmUtPmlycV9lbmFibGVfbWFzayB8Cj4gLQkJCQkJ IEdUX1JFTkRFUl9MM19QQVJJVFlfRVJST1JfSU5URVJSVVBUKSk7Cj4gLQkJfSBlbHNlIHsKPiAt CQkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+ZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwo+IC0J CX0KPiAtCQlQT1NUSU5HX1JFQUQoUklOR19JTVIoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAtCX0K PiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+ IC0KPiAtCXJldHVybiB0cnVlOwo+ICsJaWYgKEhBU19MM19EUEYoZGV2X3ByaXYpICYmIGVuZ2lu ZS0+aWQgPT0gUkNTKQo+ICsJCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwKPiArCQkJICAgICAgIH4o ZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgfAo+ICsJCQkJIEdUX1JFTkRFUl9MM19QQVJJVFlfRVJS T1JfSU5URVJSVVBUKSk7Cj4gKwllbHNlCj4gKwkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+ZW5n aW5lLT5pcnFfZW5hYmxlX21hc2spOwo+ICsJUE9TVElOR19SRUFEX0ZXKFJJTkdfSU1SKGVuZ2lu ZS0+bW1pb19iYXNlKSk7Cj4gICB9Cj4KPiAgIHN0YXRpYyB2b2lkCj4gLWdlbjhfcmluZ19wdXRf aXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArZ2VuOF9yaW5nX2Rpc2FibGVf aXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gLQl1bnNpZ25lZCBsb25n IGZsYWdzOwo+Cj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFn cyk7Cj4gLQlpZiAoLS1lbmdpbmUtPmlycV9yZWZjb3VudCA9PSAwKSB7Cj4gLQkJaWYgKEhBU19M M19EUEYoZGV2X3ByaXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKSB7Cj4gLQkJCUk5MTVfV1JJVEVf SU1SKGVuZ2luZSwKPiAtCQkJCSAgICAgICB+R1RfUkVOREVSX0wzX1BBUklUWV9FUlJPUl9JTlRF UlJVUFQpOwo+IC0JCX0gZWxzZSB7Cj4gLQkJCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwgfjApOwo+ IC0JCX0KPiAtCQlQT1NUSU5HX1JFQUQoUklOR19JTVIoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAt CX0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3Mp Owo+ICsJaWYgKEhBU19MM19EUEYoZGV2X3ByaXYpICYmIGVuZ2luZS0+aWQgPT0gUkNTKQo+ICsJ CUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwKPiArCQkJICAgICAgIH5HVF9SRU5ERVJfTDNfUEFSSVRZ X0VSUk9SX0lOVEVSUlVQVCk7Cj4gKwllbHNlCj4gKwkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+ MCk7Cj4gICB9Cj4KPiAgIHN0YXRpYyBpbnQKPiBAQCAtMjgyOSw4ICsyNzMyLDggQEAgaW50IGlu dGVsX2luaXRfcmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJ CWVuZ2luZS0+aW5pdF9jb250ZXh0ID0gaW50ZWxfcmNzX2N0eF9pbml0Owo+ICAgCQllbmdpbmUt PmFkZF9yZXF1ZXN0ID0gZ2VuOF9yZW5kZXJfYWRkX3JlcXVlc3Q7Cj4gICAJCWVuZ2luZS0+Zmx1 c2ggPSBnZW44X3JlbmRlcl9yaW5nX2ZsdXNoOwo+IC0JCWVuZ2luZS0+aXJxX2dldCA9IGdlbjhf cmluZ19nZXRfaXJxOwo+IC0JCWVuZ2luZS0+aXJxX3B1dCA9IGdlbjhfcmluZ19wdXRfaXJxOwo+ ICsJCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjhfcmluZ19lbmFibGVfaXJxOwo+ICsJCWVuZ2lu ZS0+aXJxX2Rpc2FibGUgPSBnZW44X3JpbmdfZGlzYWJsZV9pcnE7Cj4gICAJCWVuZ2luZS0+aXJx X2VuYWJsZV9tYXNrID0gR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUOwo+ICAgCQlpZiAoaTkxNV9z ZW1hcGhvcmVfaXNfZW5hYmxlZChkZXZfcHJpdikpIHsKPiAgIAkJCVdBUk5fT04oIWRldl9wcml2 LT5zZW1hcGhvcmVfb2JqKTsKPiBAQCAtMjg0NCw4ICsyNzQ3LDggQEAgaW50IGludGVsX2luaXRf cmVuZGVyX3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCWVuZ2luZS0+ Zmx1c2ggPSBnZW43X3JlbmRlcl9yaW5nX2ZsdXNoOwo+ICAgCQlpZiAoSVNfR0VONihkZXZfcHJp dikpCj4gICAJCQllbmdpbmUtPmZsdXNoID0gZ2VuNl9yZW5kZXJfcmluZ19mbHVzaDsKPiAtCQll bmdpbmUtPmlycV9nZXQgPSBnZW42X3JpbmdfZ2V0X2lycTsKPiAtCQllbmdpbmUtPmlycV9wdXQg PSBnZW42X3JpbmdfcHV0X2lycTsKPiArCQllbmdpbmUtPmlycV9lbmFibGUgPSBnZW42X3Jpbmdf ZW5hYmxlX2lycTsKPiArCQllbmdpbmUtPmlycV9kaXNhYmxlID0gZ2VuNl9yaW5nX2Rpc2FibGVf aXJxOwo+ICAgCQllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9IEdUX1JFTkRFUl9VU0VSX0lOVEVS UlVQVDsKPiAgIAkJZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllciA9IGdlbjZfc2Vxbm9fYmFycmll cjsKPiAgIAkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2X3ByaXYpKSB7Cj4gQEAg LTI4NzIsOCArMjc3NSw4IEBAIGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCX0gZWxzZSBpZiAoSVNfR0VONShkZXZfcHJpdikpIHsK PiAgIAkJZW5naW5lLT5hZGRfcmVxdWVzdCA9IGk5eHhfYWRkX3JlcXVlc3Q7Cj4gICAJCWVuZ2lu ZS0+Zmx1c2ggPSBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoOwo+IC0JCWVuZ2luZS0+aXJxX2dldCA9 IGdlbjVfcmluZ19nZXRfaXJxOwo+IC0JCWVuZ2luZS0+aXJxX3B1dCA9IGdlbjVfcmluZ19wdXRf aXJxOwo+ICsJCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjVfcmluZ19lbmFibGVfaXJxOwo+ICsJ CWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBnZW41X3JpbmdfZGlzYWJsZV9pcnE7Cj4gICAJCWVuZ2lu ZS0+aXJxX3NlcW5vX2JhcnJpZXIgPSBnZW41X3NlcW5vX2JhcnJpZXI7Cj4gICAJCWVuZ2luZS0+ aXJxX2VuYWJsZV9tYXNrID0gR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUOwo+ICAgCX0gZWxzZSB7 Cj4gQEAgLTI4ODMsMTEgKzI3ODYsMTEgQEAgaW50IGludGVsX2luaXRfcmVuZGVyX3JpbmdfYnVm ZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCWVsc2UKPiAgIAkJCWVuZ2luZS0+Zmx1 c2ggPSBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoOwo+ICAgCQlpZiAoSVNfR0VOMihkZXZfcHJpdikp IHsKPiAtCQkJZW5naW5lLT5pcnFfZ2V0ID0gaTh4eF9yaW5nX2dldF9pcnE7Cj4gLQkJCWVuZ2lu ZS0+aXJxX3B1dCA9IGk4eHhfcmluZ19wdXRfaXJxOwo+ICsJCQllbmdpbmUtPmlycV9lbmFibGUg PSBpOHh4X3JpbmdfZW5hYmxlX2lycTsKPiArCQkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGk4eHhf cmluZ19kaXNhYmxlX2lycTsKPiAgIAkJfSBlbHNlIHsKPiAtCQkJZW5naW5lLT5pcnFfZ2V0ID0g aTl4eF9yaW5nX2dldF9pcnE7Cj4gLQkJCWVuZ2luZS0+aXJxX3B1dCA9IGk5eHhfcmluZ19wdXRf aXJxOwo+ICsJCQllbmdpbmUtPmlycV9lbmFibGUgPSBpOXh4X3JpbmdfZW5hYmxlX2lycTsKPiAr CQkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGk5eHhfcmluZ19kaXNhYmxlX2lycTsKPiAgIAkJfQo+ ICAgCQllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9IEk5MTVfVVNFUl9JTlRFUlJVUFQ7Cj4gICAJ fQo+IEBAIC0yOTQ3LDggKzI4NTAsOCBAQCBpbnQgaW50ZWxfaW5pdF9ic2RfcmluZ19idWZmZXIo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OCkgewo+ICAgCQkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPQo+ICAgCQkJCUdUX1JFTkRFUl9V U0VSX0lOVEVSUlVQVCA8PCBHRU44X1ZDUzFfSVJRX1NISUZUOwo+IC0JCQllbmdpbmUtPmlycV9n ZXQgPSBnZW44X3JpbmdfZ2V0X2lycTsKPiAtCQkJZW5naW5lLT5pcnFfcHV0ID0gZ2VuOF9yaW5n X3B1dF9pcnE7Cj4gKwkJCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjhfcmluZ19lbmFibGVfaXJx Owo+ICsJCQllbmdpbmUtPmlycV9kaXNhYmxlID0gZ2VuOF9yaW5nX2Rpc2FibGVfaXJxOwo+ICAg CQkJZW5naW5lLT5kaXNwYXRjaF9leGVjYnVmZmVyID0KPiAgIAkJCQlnZW44X3JpbmdfZGlzcGF0 Y2hfZXhlY2J1ZmZlcjsKPiAgIAkJCWlmIChpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKGRldl9w cml2KSkgewo+IEBAIC0yOTU4LDggKzI4NjEsOCBAQCBpbnQgaW50ZWxfaW5pdF9ic2RfcmluZ19i dWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJCX0KPiAgIAkJfSBlbHNlIHsKPiAg IAkJCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrID0gR1RfQlNEX1VTRVJfSU5URVJSVVBUOwo+IC0J CQllbmdpbmUtPmlycV9nZXQgPSBnZW42X3JpbmdfZ2V0X2lycTsKPiAtCQkJZW5naW5lLT5pcnFf cHV0ID0gZ2VuNl9yaW5nX3B1dF9pcnE7Cj4gKwkJCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjZf cmluZ19lbmFibGVfaXJxOwo+ICsJCQllbmdpbmUtPmlycV9kaXNhYmxlID0gZ2VuNl9yaW5nX2Rp c2FibGVfaXJxOwo+ICAgCQkJZW5naW5lLT5kaXNwYXRjaF9leGVjYnVmZmVyID0KPiAgIAkJCQln ZW42X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcjsKPiAgIAkJCWlmIChpOTE1X3NlbWFwaG9yZV9p c19lbmFibGVkKGRldl9wcml2KSkgewo+IEBAIC0yOTgzLDEzICsyODg2LDEzIEBAIGludCBpbnRl bF9pbml0X2JzZF9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQllbmdp bmUtPmFkZF9yZXF1ZXN0ID0gaTl4eF9hZGRfcmVxdWVzdDsKPiAgIAkJaWYgKElTX0dFTjUoZGV2 X3ByaXYpKSB7Cj4gICAJCQllbmdpbmUtPmlycV9lbmFibGVfbWFzayA9IElMS19CU0RfVVNFUl9J TlRFUlJVUFQ7Cj4gLQkJCWVuZ2luZS0+aXJxX2dldCA9IGdlbjVfcmluZ19nZXRfaXJxOwo+IC0J CQllbmdpbmUtPmlycV9wdXQgPSBnZW41X3JpbmdfcHV0X2lycTsKPiArCQkJZW5naW5lLT5pcnFf ZW5hYmxlID0gZ2VuNV9yaW5nX2VuYWJsZV9pcnE7Cj4gKwkJCWVuZ2luZS0+aXJxX2Rpc2FibGUg PSBnZW41X3JpbmdfZGlzYWJsZV9pcnE7Cj4gICAJCQllbmdpbmUtPmlycV9zZXFub19iYXJyaWVy ID0gZ2VuNV9zZXFub19iYXJyaWVyOwo+ICAgCQl9IGVsc2Ugewo+ICAgCQkJZW5naW5lLT5pcnFf ZW5hYmxlX21hc2sgPSBJOTE1X0JTRF9VU0VSX0lOVEVSUlVQVDsKPiAtCQkJZW5naW5lLT5pcnFf Z2V0ID0gaTl4eF9yaW5nX2dldF9pcnE7Cj4gLQkJCWVuZ2luZS0+aXJxX3B1dCA9IGk5eHhfcmlu Z19wdXRfaXJxOwo+ICsJCQllbmdpbmUtPmlycV9lbmFibGUgPSBpOXh4X3JpbmdfZW5hYmxlX2ly cTsKPiArCQkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGk5eHhfcmluZ19kaXNhYmxlX2lycTsKPiAg IAkJfQo+ICAgCQllbmdpbmUtPmRpc3BhdGNoX2V4ZWNidWZmZXIgPSBpOTY1X2Rpc3BhdGNoX2V4 ZWNidWZmZXI7Cj4gICAJfQo+IEBAIC0zMDE4LDggKzI5MjEsOCBAQCBpbnQgaW50ZWxfaW5pdF9i c2QyX3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJZW5naW5lLT5pcnFf c2Vxbm9fYmFycmllciA9IGdlbjZfc2Vxbm9fYmFycmllcjsKPiAgIAllbmdpbmUtPmlycV9lbmFi bGVfbWFzayA9Cj4gICAJCQlHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgPDwgR0VOOF9WQ1MyX0lS UV9TSElGVDsKPiAtCWVuZ2luZS0+aXJxX2dldCA9IGdlbjhfcmluZ19nZXRfaXJxOwo+IC0JZW5n aW5lLT5pcnFfcHV0ID0gZ2VuOF9yaW5nX3B1dF9pcnE7Cj4gKwllbmdpbmUtPmlycV9lbmFibGUg PSBnZW44X3JpbmdfZW5hYmxlX2lycTsKPiArCWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBnZW44X3Jp bmdfZGlzYWJsZV9pcnE7Cj4gICAJZW5naW5lLT5kaXNwYXRjaF9leGVjYnVmZmVyID0KPiAgIAkJ CWdlbjhfcmluZ19kaXNwYXRjaF9leGVjYnVmZmVyOwo+ICAgCWlmIChpOTE1X3NlbWFwaG9yZV9p c19lbmFibGVkKGRldl9wcml2KSkgewo+IEBAIC0zMDUwLDggKzI5NTMsOCBAQCBpbnQgaW50ZWxf aW5pdF9ibHRfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4gICAJCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrID0K PiAgIAkJCUdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PCBHRU44X0JDU19JUlFfU0hJRlQ7Cj4g LQkJZW5naW5lLT5pcnFfZ2V0ID0gZ2VuOF9yaW5nX2dldF9pcnE7Cj4gLQkJZW5naW5lLT5pcnFf cHV0ID0gZ2VuOF9yaW5nX3B1dF9pcnE7Cj4gKwkJZW5naW5lLT5pcnFfZW5hYmxlID0gZ2VuOF9y aW5nX2VuYWJsZV9pcnE7Cj4gKwkJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGdlbjhfcmluZ19kaXNh YmxlX2lycTsKPiAgIAkJZW5naW5lLT5kaXNwYXRjaF9leGVjYnVmZmVyID0gZ2VuOF9yaW5nX2Rp c3BhdGNoX2V4ZWNidWZmZXI7Cj4gICAJCWlmIChpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKGRl dl9wcml2KSkgewo+ICAgCQkJZW5naW5lLT5zZW1hcGhvcmUuc3luY190byA9IGdlbjhfcmluZ19z eW5jOwo+IEBAIC0zMDYwLDggKzI5NjMsOCBAQCBpbnQgaW50ZWxfaW5pdF9ibHRfcmluZ19idWZm ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJfQo+ICAgCX0gZWxzZSB7Cj4gICAJCWVu Z2luZS0+aXJxX2VuYWJsZV9tYXNrID0gR1RfQkxUX1VTRVJfSU5URVJSVVBUOwo+IC0JCWVuZ2lu ZS0+aXJxX2dldCA9IGdlbjZfcmluZ19nZXRfaXJxOwo+IC0JCWVuZ2luZS0+aXJxX3B1dCA9IGdl bjZfcmluZ19wdXRfaXJxOwo+ICsJCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjZfcmluZ19lbmFi bGVfaXJxOwo+ICsJCWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBnZW42X3JpbmdfZGlzYWJsZV9pcnE7 Cj4gICAJCWVuZ2luZS0+ZGlzcGF0Y2hfZXhlY2J1ZmZlciA9IGdlbjZfcmluZ19kaXNwYXRjaF9l eGVjYnVmZmVyOwo+ICAgCQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXZfcHJpdikp IHsKPiAgIAkJCWVuZ2luZS0+c2VtYXBob3JlLnNpZ25hbCA9IGdlbjZfc2lnbmFsOwo+IEBAIC0z MTA5LDggKzMwMTIsOCBAQCBpbnQgaW50ZWxfaW5pdF92ZWJveF9yaW5nX2J1ZmZlcihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsKPiAg IAkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPQo+ICAgCQkJR1RfUkVOREVSX1VTRVJfSU5URVJS VVBUIDw8IEdFTjhfVkVDU19JUlFfU0hJRlQ7Cj4gLQkJZW5naW5lLT5pcnFfZ2V0ID0gZ2VuOF9y aW5nX2dldF9pcnE7Cj4gLQkJZW5naW5lLT5pcnFfcHV0ID0gZ2VuOF9yaW5nX3B1dF9pcnE7Cj4g KwkJZW5naW5lLT5pcnFfZW5hYmxlID0gZ2VuOF9yaW5nX2VuYWJsZV9pcnE7Cj4gKwkJZW5naW5l LT5pcnFfZGlzYWJsZSA9IGdlbjhfcmluZ19kaXNhYmxlX2lycTsKPiAgIAkJZW5naW5lLT5kaXNw YXRjaF9leGVjYnVmZmVyID0gZ2VuOF9yaW5nX2Rpc3BhdGNoX2V4ZWNidWZmZXI7Cj4gICAJCWlm IChpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKGRldl9wcml2KSkgewo+ICAgCQkJZW5naW5lLT5z ZW1hcGhvcmUuc3luY190byA9IGdlbjhfcmluZ19zeW5jOwo+IEBAIC0zMTE5LDggKzMwMjIsOCBA QCBpbnQgaW50ZWxfaW5pdF92ZWJveF9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAgCQl9Cj4gICAJfSBlbHNlIHsKPiAgIAkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPSBQ TV9WRUJPWF9VU0VSX0lOVEVSUlVQVDsKPiAtCQllbmdpbmUtPmlycV9nZXQgPSBoc3dfdmVib3hf Z2V0X2lycTsKPiAtCQllbmdpbmUtPmlycV9wdXQgPSBoc3dfdmVib3hfcHV0X2lycTsKPiArCQll bmdpbmUtPmlycV9lbmFibGUgPSBoc3dfdmVib3hfZW5hYmxlX2lycTsKPiArCQllbmdpbmUtPmly cV9kaXNhYmxlID0gaHN3X3ZlYm94X2Rpc2FibGVfaXJxOwo+ICAgCQllbmdpbmUtPmRpc3BhdGNo X2V4ZWNidWZmZXIgPSBnZW42X3JpbmdfZGlzcGF0Y2hfZXhlY2J1ZmZlcjsKPiAgIAkJaWYgKGk5 MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2X3ByaXYpKSB7Cj4gICAJCQllbmdpbmUtPnNlbWFw aG9yZS5zeW5jX3RvID0gZ2VuNl9yaW5nX3N5bmM7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaAo+IGluZGV4IGI1NWI5OTYxZDlmNi4uNTllNzIzNGFiMTc4IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC0yMDEsMTEgKzIwMSwx MCBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfaHdfc3RhdHVz X3BhZ2Ugc3RhdHVzX3BhZ2U7Cj4gICAJc3RydWN0IGk5MTVfY3R4X3dvcmthcm91bmRzIHdhX2N0 eDsKPgo+IC0JdW5zaWduZWQgaXJxX3JlZmNvdW50OyAvKiBwcm90ZWN0ZWQgYnkgZGV2X3ByaXYt PmlycV9sb2NrICovCj4gICAJYm9vbAkJaXJxX3Bvc3RlZDsKPiAgIAl1MzIJCWlycV9lbmFibGVf bWFzazsJLyogYml0bWFzayB0byBlbmFibGUgcmluZyBpbnRlcnJ1cHQgKi8KPiAtCWJvb2wgX19t dXN0X2NoZWNrICgqaXJxX2dldCkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7Cj4gLQl2 b2lkCQkoKmlycV9wdXQpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+ICsJdm9pZAkJ KCppcnFfZW5hYmxlKShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiArCXZvaWQJCSgq aXJxX2Rpc2FibGUpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+Cj4gICAJaW50CQko KmluaXRfaHcpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+Cj4KClRoZSByZXN0IGxv b2tzIE9LIHRvIG1lLgoKUmVnYXJkcywKClR2cnRrbwoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==