From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 18/20] drm/i915: Move the get/put irq locking into the caller Date: Fri, 1 Jul 2016 15:39:16 +0100 Message-ID: <57768094.9050204@linux.intel.com> References: <1467372140-30422-1-git-send-email-chris@chris-wilson.co.uk> <1467372140-30422-19-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id CC2036EAA9 for ; Fri, 1 Jul 2016 14:39:17 +0000 (UTC) In-Reply-To: <1467372140-30422-19-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 Ck9uIDAxLzA3LzE2IDEyOjIyLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gV2l0aCBvbmx5IGEgc2lu Z2xlIGNhbGxzaXRlIGZvciBpbnRlbF9lbmdpbmVfY3MtPmlycV9nZXQgYW5kIC0+aXJxX3B1dCwK PiB3ZSBjYW4gcmVkdWNlIHRoZSBjb2RlIHNpemUgYnkgbW92aW5nIHRoZSBjb21tb24gcHJlYW1i bGUgaW50byB0aGUKPiBjYWxsZXIsIGFuZCB3ZSBjYW4gYWxzbyBlbGltaW5hdGUgdGhlIHJlZmVy ZW5jZSBjb3VudGluZy4KPgo+IEZvciBjb21wbGV0ZW5lc3MsIGFzIHdlIGFyZSBubyBsb25nZXIg ZG9pbmcgcmVmZXJlbmNlIGNvdW50aW5nIG9uIGlycSwKPiByZW5hbWUgdGhlIGdldC9wdXQgdmZ1 bmN0aW9ucyB0byBlbmFibGUvZGlzYWJsZSByZXNwZWN0aXZlbHkgYW5kIGFyZQo+IGFibGUgdG8g cmV2aWV3IHRoZSB1c2Ugb2YgcG9zdGluZyByZWFkcy4gV2Ugb25seSByZXF1aXJlIHRoZQo+IHNl cmlhbGlzYXRpb24gd2l0aCBoYXJkd2FyZSB3aGVuIGVuYWJsaW5nIHRoZSBpbnRlcnJ1cHQgKGku ZS4gc28gd2UKPiBjYW5ub3QgbWlzcyBhbiBpbnRlcnJ1cHQgYnkgZ29pbmcgdG8gc2xlZXAgYmVm b3JlIHRoZSBoYXJkd2FyZSB0cnVseQo+IGVuYWJsZXMgaXQpLgo+Cj4gU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICAgICAgIHwgICA4ICstCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jIHwgIDEwICstCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgIHwgIDM0ICsrLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgIHwgMjM3ICsrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgfCAg IDUgKy0KPiAgIDUgZmlsZXMgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygrKSwgMjAyIGRlbGV0aW9u 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 ZWFkY3J1bWJzLmMKPiBpbmRleCAzYjgzMTNiODdjZTQuLjI4YmM3MmI2MDFiOCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwo+IEBAIC01MCwxMiArNTAsMTgg QEAgc3RhdGljIHZvaWQgaXJxX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gICAJICoganVzdCBpbiBjYXNlLgo+ICAgCSAqLwo+ICAgCWVuZ2luZS0+aXJxX3Bvc3RlZCA9 IHRydWU7Cj4gLQlXQVJOX09OKCFlbmdpbmUtPmlycV9nZXQoZW5naW5lKSk7Cj4gKwo+ICsJc3Bp bl9sb2NrX2lycSgmZW5naW5lLT5pOTE1LT5pcnFfbG9jayk7Cj4gKwllbmdpbmUtPmlycV9lbmFi bGUoZW5naW5lKTsKPiArCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT5pOTE1LT5pcnFfbG9jayk7 Cj4gICB9Cj4KPiAgIHN0YXRpYyB2b2lkIGlycV9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiAgIHsKPiAtCWVuZ2luZS0+aXJxX3B1dChlbmdpbmUpOwo+ICsJc3Bpbl9s b2NrX2lycSgmZW5naW5lLT5pOTE1LT5pcnFfbG9jayk7Cj4gKwllbmdpbmUtPmlycV9kaXNhYmxl KGVuZ2luZSk7Cj4gKwlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+aTkxNS0+aXJxX2xvY2spOwo+ ICsKPiAgIAllbmdpbmUtPmlycV9wb3N0ZWQgPSBmYWxzZTsKPiAgIH0KPgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jCj4gaW5kZXggZjFhMDExMzczMzRjLi4zODAxNzUxNDk5MTYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC0xNjE3LDM2ICsxNjE3LDE4IEBAIHN0YXRpYyBp bnQgZ2VuOF9lbWl0X2JiX3N0YXJ0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ ICAgCXJldHVybiAwOwo+ICAgfQo+Cj4gLXN0YXRpYyBib29sIGdlbjhfbG9naWNhbF9yaW5nX2dl dF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICtzdGF0aWMgdm9pZCBnZW44 X2xvZ2ljYWxfcmluZ19lbmFibGVfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5 MTU7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0KPiAtCWlmIChXQVJOX09OKCFpbnRlbF9p cnFzX2VuYWJsZWQoZGV2X3ByaXYpKSkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gLQo+IC0Jc3Bpbl9s b2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+IC0JaWYgKGVuZ2luZS0+ aXJxX3JlZmNvdW50KysgPT0gMCkgewo+IC0JCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwKPiAtCQkJ ICAgICAgIH4oZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgfCBlbmdpbmUtPmlycV9rZWVwX21hc2sp KTsKPiAtCQlQT1NUSU5HX1JFQUQoUklOR19JTVIoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAtCX0K PiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+ IC0KPiAtCXJldHVybiB0cnVlOwo+ICsJSTkxNV9XUklURV9JTVIoZW5naW5lLAo+ICsJCSAgICAg ICB+KGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrIHwgZW5naW5lLT5pcnFfa2VlcF9tYXNrKSk7Cj4g KwlQT1NUSU5HX1JFQURfRlcoUklOR19JTVIoZW5naW5lLT5tbWlvX2Jhc2UpKTsKPiAgIH0KPgo+ IC1zdGF0aWMgdm9pZCBnZW44X2xvZ2ljYWxfcmluZ19wdXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiArc3RhdGljIHZvaWQgZ2VuOF9sb2dpY2FsX3JpbmdfZGlzYWJsZV9p cnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAtCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7Cj4gLQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxh Z3MpOwo+IC0JaWYgKC0tZW5naW5lLT5pcnFfcmVmY291bnQgPT0gMCkgewo+IC0JCUk5MTVfV1JJ VEVfSU1SKGVuZ2luZSwgfmVuZ2luZS0+aXJxX2tlZXBfbWFzayk7Cj4gLQkJUE9TVElOR19SRUFE KFJJTkdfSU1SKGVuZ2luZS0+bW1pb19iYXNlKSk7Cj4gLQl9Cj4gLQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiArCUk5MTVfV1JJVEVfSU1SKGVu Z2luZSwgfmVuZ2luZS0+aXJxX2tlZXBfbWFzayk7Cj4gICB9Cj4KPiAgIHN0YXRpYyBpbnQgZ2Vu OF9lbWl0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKPiBAQCAt MTk2Niw4ICsxOTQ4LDggQEAgbG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAllbmdpbmUtPmluaXRfaHcgPSBnZW44X2luaXRfY29t bW9uX3Jpbmc7Cj4gICAJZW5naW5lLT5lbWl0X3JlcXVlc3QgPSBnZW44X2VtaXRfcmVxdWVzdDsK PiAgIAllbmdpbmUtPmVtaXRfZmx1c2ggPSBnZW44X2VtaXRfZmx1c2g7Cj4gLQllbmdpbmUtPmly cV9nZXQgPSBnZW44X2xvZ2ljYWxfcmluZ19nZXRfaXJxOwo+IC0JZW5naW5lLT5pcnFfcHV0ID0g Z2VuOF9sb2dpY2FsX3JpbmdfcHV0X2lycTsKPiArCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjhf bG9naWNhbF9yaW5nX2VuYWJsZV9pcnE7Cj4gKwllbmdpbmUtPmlycV9kaXNhYmxlID0gZ2VuOF9s b2dpY2FsX3JpbmdfZGlzYWJsZV9pcnE7Cj4gICAJZW5naW5lLT5lbWl0X2JiX3N0YXJ0ID0gZ2Vu OF9lbWl0X2JiX3N0YXJ0Owo+ICAgCWlmIChJU19CWFRfUkVWSUQoZW5naW5lLT5pOTE1LCAwLCBC WFRfUkVWSURfQTEpKQo+ICAgCQllbmdpbmUtPmlycV9zZXFub19iYXJyaWVyID0gYnh0X2Ffc2Vx bm9fYmFycmllcjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5k ZXggZDkxOWU3MmYxMzI4Li5lYjYyZjMwMTJhYTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTE2MzYsMTAzICsxNjM2LDU0IEBAIGdlbjZfc2Vxbm9f YmFycmllcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJc3Bpbl91bmxvY2tf aXJxKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOwo+ICAgfQo+Cj4gLXN0YXRpYyBib29sCj4gLWdl bjVfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArc3RhdGlj IHZvaWQKPiArZ2VuNV9pcnFfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkx NTsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gLQo+IC0JaWYgKFdBUk5fT04oIWludGVsX2ly cXNfZW5hYmxlZChkZXZfcHJpdikpKQo+IC0JCXJldHVybiBmYWxzZTsKPiAtCj4gLQlzcGluX2xv Y2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLQlpZiAoZW5naW5lLT5p cnFfcmVmY291bnQrKyA9PSAwKQo+IC0JCWdlbjVfZW5hYmxlX2d0X2lycShkZXZfcHJpdiwgZW5n aW5lLT5pcnFfZW5hYmxlX21hc2spOwo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3By aXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLQo+IC0JcmV0dXJuIHRydWU7Cj4gKwlnZW41X2VuYWJs ZV9ndF9pcnEoZW5naW5lLT5pOTE1LCBlbmdpbmUtPmlycV9lbmFibGVfbWFzayk7Cj4gICB9Cj4K PiAgIHN0YXRpYyB2b2lkCj4gLWdlbjVfcmluZ19wdXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiArZ2VuNV9pcnFfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdp bmUtPmk5MTU7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0KPiAtCXNwaW5fbG9ja19pcnFz YXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiAtCWlmICgtLWVuZ2luZS0+aXJxX3Jl ZmNvdW50ID09IDApCj4gLQkJZ2VuNV9kaXNhYmxlX2d0X2lycShkZXZfcHJpdiwgZW5naW5lLT5p cnFfZW5hYmxlX21hc2spOwo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPmly cV9sb2NrLCBmbGFncyk7Cj4gKwlnZW41X2Rpc2FibGVfZ3RfaXJxKGVuZ2luZS0+aTkxNSwgZW5n aW5lLT5pcnFfZW5hYmxlX21hc2spOwo+ICAgfQo+Cj4gLXN0YXRpYyBib29sCj4gLWk5eHhfcmlu Z19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArc3RhdGljIHZvaWQK PiAraTl4eF9pcnFfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsK PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4g LQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0KPiAtCWlmICghaW50ZWxfaXJxc19lbmFibGVkKGRl dl9wcml2KSkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gLQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRl dl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+IC0JaWYgKGVuZ2luZS0+aXJxX3JlZmNvdW50Kysg PT0gMCkgewo+IC0JCWRldl9wcml2LT5pcnFfbWFzayAmPSB+ZW5naW5lLT5pcnFfZW5hYmxlX21h c2s7Cj4gLQkJSTkxNV9XUklURShJTVIsIGRldl9wcml2LT5pcnFfbWFzayk7Cj4gLQkJUE9TVElO R19SRUFEKElNUik7Cj4gLQl9Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+ aXJxX2xvY2ssIGZsYWdzKTsKPgo+IC0JcmV0dXJuIHRydWU7Cj4gKwlkZXZfcHJpdi0+aXJxX21h c2sgJj0gfmVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrOwo+ICsJSTkxNV9XUklURShJTVIsIGRldl9w cml2LT5pcnFfbWFzayk7Cj4gKwlQT1NUSU5HX1JFQURfRlcoUklOR19JTVIoZW5naW5lLT5tbWlv X2Jhc2UpKTsKPiAgIH0KPgo+ICAgc3RhdGljIHZvaWQKPiAtaTl4eF9yaW5nX3B1dF9pcnEoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICtpOXh4X2lycV9kaXNhYmxlKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+Cj4g LQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLQlpZiAo LS1lbmdpbmUtPmlycV9yZWZjb3VudCA9PSAwKSB7Cj4gLQkJZGV2X3ByaXYtPmlycV9tYXNrIHw9 IGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrOwo+IC0JCUk5MTVfV1JJVEUoSU1SLCBkZXZfcHJpdi0+ aXJxX21hc2spOwo+IC0JCVBPU1RJTkdfUkVBRChJTVIpOwo+IC0JfQo+IC0Jc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gKwlkZXZfcHJpdi0+aXJx X21hc2sgfD0gZW5naW5lLT5pcnFfZW5hYmxlX21hc2s7Cj4gKwlJOTE1X1dSSVRFKElNUiwgZGV2 X3ByaXYtPmlycV9tYXNrKTsKPiAgIH0KPgo+IC1zdGF0aWMgYm9vbAo+IC1pOHh4X3JpbmdfZ2V0 X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3N0YXRpYyB2b2lkCj4gK2k4 eHhfaXJxX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+IC0JdW5z aWduZWQgbG9uZyBmbGFnczsKPgo+IC0JaWYgKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYp KQo+IC0JCXJldHVybiBmYWxzZTsKPiAtCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYt PmlycV9sb2NrLCBmbGFncyk7Cj4gLQlpZiAoZW5naW5lLT5pcnFfcmVmY291bnQrKyA9PSAwKSB7 Cj4gLQkJZGV2X3ByaXYtPmlycV9tYXNrICY9IH5lbmdpbmUtPmlycV9lbmFibGVfbWFzazsKPiAt CQlJOTE1X1dSSVRFMTYoSU1SLCBkZXZfcHJpdi0+aXJxX21hc2spOwo+IC0JCVBPU1RJTkdfUkVB RDE2KElNUik7Cj4gLQl9Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+aXJx X2xvY2ssIGZsYWdzKTsKPiAtCj4gLQlyZXR1cm4gdHJ1ZTsKPiArCWRldl9wcml2LT5pcnFfbWFz ayAmPSB+ZW5naW5lLT5pcnFfZW5hYmxlX21hc2s7Cj4gKwlJOTE1X1dSSVRFMTYoSU1SLCBkZXZf cHJpdi0+aXJxX21hc2spOwo+ICsJUE9TVElOR19SRUFEMTYoUklOR19JTVIoZW5naW5lLT5tbWlv X2Jhc2UpKTsKPiAgIH0KPgo+ICAgc3RhdGljIHZvaWQKPiAtaTh4eF9yaW5nX3B1dF9pcnEoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICtpOHh4X2lycV9kaXNhYmxlKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+Cj4g LQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLQlpZiAo LS1lbmdpbmUtPmlycV9yZWZjb3VudCA9PSAwKSB7Cj4gLQkJZGV2X3ByaXYtPmlycV9tYXNrIHw9 IGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrOwo+IC0JCUk5MTVfV1JJVEUxNihJTVIsIGRldl9wcml2 LT5pcnFfbWFzayk7Cj4gLQkJUE9TVElOR19SRUFEMTYoSU1SKTsKPiAtCX0KPiAtCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywgZmxhZ3MpOwo+ICsJZGV2X3ByaXYt PmlycV9tYXNrIHw9IGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrOwo+ICsJSTkxNV9XUklURTE2KElN UiwgZGV2X3ByaXYtPmlycV9tYXNrKTsKPiAgIH0KPgo+ICAgc3RhdGljIGludAo+IEBAIC0xNzcz LDEyMiArMTcyNCw3NCBAQCBpOXh4X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKQo+ICAgCXJldHVybiAwOwo+ICAgfQo+Cj4gLXN0YXRpYyBib29sCj4gLWdlbjZf cmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArc3RhdGljIHZv aWQKPiArZ2VuNl9pcnFfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAg IHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7 Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0KPiAtCWlmIChXQVJOX09OKCFpbnRlbF9pcnFz X2VuYWJsZWQoZGV2X3ByaXYpKSkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4KPiAtCXNwaW5fbG9ja19p cnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiAtCWlmIChlbmdpbmUtPmlycV9y ZWZjb3VudCsrID09IDApIHsKPiAtCQlpZiAoSEFTX0wzX0RQRihkZXZfcHJpdikgJiYgZW5naW5l LT5pZCA9PSBSQ1MpCj4gLQkJCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwKPiAtCQkJCSAgICAgICB+ KGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrIHwKPiAtCQkJCQkgR1RfUEFSSVRZX0VSUk9SKGRldl9w cml2KSkpOwo+IC0JCWVsc2UKPiAtCQkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+ZW5naW5lLT5p cnFfZW5hYmxlX21hc2spOwo+IC0JCWdlbjVfZW5hYmxlX2d0X2lycShkZXZfcHJpdiwgZW5naW5l LT5pcnFfZW5hYmxlX21hc2spOwo+IC0JfQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2 X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLQo+IC0JcmV0dXJuIHRydWU7Cj4gKwlpZiAoSEFT X0wzX0RQRihkZXZfcHJpdikgJiYgZW5naW5lLT5pZCA9PSBSQ1MpCj4gKwkJSTkxNV9XUklURV9J TVIoZW5naW5lLAo+ICsJCQkgICAgICAgfihlbmdpbmUtPmlycV9lbmFibGVfbWFzayB8Cj4gKwkJ CQkgR1RfUEFSSVRZX0VSUk9SKGRldl9wcml2KSkpOwo+ICsJZWxzZQo+ICsJCUk5MTVfV1JJVEVf SU1SKGVuZ2luZSwgfmVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrKTsKPiArCWdlbjVfZW5hYmxlX2d0 X2lycShkZXZfcHJpdiwgZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwo+ICAgfQo+Cj4gICBzdGF0 aWMgdm9pZAo+IC1nZW42X3JpbmdfcHV0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gK2dlbjZfaXJxX2Rpc2FibGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkx NTsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZf cHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiAtCWlmICgtLWVuZ2luZS0+aXJxX3JlZmNvdW50ID09 IDApIHsKPiAtCQlpZiAoSEFTX0wzX0RQRihkZXZfcHJpdikgJiYgZW5naW5lLT5pZCA9PSBSQ1Mp Cj4gLQkJCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwgfkdUX1BBUklUWV9FUlJPUihkZXZfcHJpdikp Owo+IC0JCWVsc2UKPiAtCQkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+MCk7Cj4gLQkJZ2VuNV9k aXNhYmxlX2d0X2lycShkZXZfcHJpdiwgZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwo+IC0JfQo+ IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4g KwlpZiAoSEFTX0wzX0RQRihkZXZfcHJpdikgJiYgZW5naW5lLT5pZCA9PSBSQ1MpCj4gKwkJSTkx NV9XUklURV9JTVIoZW5naW5lLCB+R1RfUEFSSVRZX0VSUk9SKGRldl9wcml2KSk7Cj4gKwllbHNl Cj4gKwkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+MCk7Cj4gKwlnZW41X2Rpc2FibGVfZ3RfaXJx KGRldl9wcml2LCBlbmdpbmUtPmlycV9lbmFibGVfbWFzayk7Cj4gICB9Cj4KPiAtc3RhdGljIGJv b2wKPiAtaHN3X3ZlYm94X2dldF9pcnEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICtzdGF0aWMgdm9pZAo+ICtoc3dfdmVib3hfaXJxX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZW5naW5lLT5pOTE1Owo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsKPiAtCj4gLQlpZiAoV0FS Tl9PTighaW50ZWxfaXJxc19lbmFibGVkKGRldl9wcml2KSkpCj4gLQkJcmV0dXJuIGZhbHNlOwo+ Cj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLQlp ZiAoZW5naW5lLT5pcnFfcmVmY291bnQrKyA9PSAwKSB7Cj4gLQkJSTkxNV9XUklURV9JTVIoZW5n aW5lLCB+ZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwo+IC0JCWdlbjZfZW5hYmxlX3BtX2lycShk ZXZfcHJpdiwgZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwo+IC0JfQo+IC0Jc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7Cj4gLQo+IC0JcmV0dXJuIHRy dWU7Cj4gKwlJOTE1X1dSSVRFX0lNUihlbmdpbmUsIH5lbmdpbmUtPmlycV9lbmFibGVfbWFzayk7 Cj4gKwlnZW42X2VuYWJsZV9wbV9pcnEoZGV2X3ByaXYsIGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNr KTsKPiAgIH0KPgo+ICAgc3RhdGljIHZvaWQKPiAtaHN3X3ZlYm94X3B1dF9pcnEoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICtoc3dfdmVib3hfaXJxX2Rpc2FibGUoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4KPiAt CXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdzKTsKPiAtCWlmICgt LWVuZ2luZS0+aXJxX3JlZmNvdW50ID09IDApIHsKPiAtCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUs IH4wKTsKPiAtCQlnZW42X2Rpc2FibGVfcG1faXJxKGRldl9wcml2LCBlbmdpbmUtPmlycV9lbmFi bGVfbWFzayk7Cj4gLQl9Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+aXJx X2xvY2ssIGZsYWdzKTsKPiArCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwgfjApOwo+ICsJZ2VuNl9k aXNhYmxlX3BtX2lycShkZXZfcHJpdiwgZW5naW5lLT5pcnFfZW5hYmxlX21hc2spOwo+ICAgfQo+ Cj4gLXN0YXRpYyBib29sCj4gLWdlbjhfcmluZ19nZXRfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiArc3RhdGljIHZvaWQKPiArZ2VuOF9pcnFfZW5hYmxlKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+Cj4gLQlp ZiAoV0FSTl9PTighaW50ZWxfaXJxc19lbmFibGVkKGRldl9wcml2KSkpCj4gLQkJcmV0dXJuIGZh bHNlOwo+IC0KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdz KTsKPiAtCWlmIChlbmdpbmUtPmlycV9yZWZjb3VudCsrID09IDApIHsKPiAtCQlpZiAoSEFTX0wz X0RQRihkZXZfcHJpdikgJiYgZW5naW5lLT5pZCA9PSBSQ1MpIHsKPiAtCQkJSTkxNV9XUklURV9J TVIoZW5naW5lLAo+IC0JCQkJICAgICAgIH4oZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgfAo+IC0J CQkJCSBHVF9SRU5ERVJfTDNfUEFSSVRZX0VSUk9SX0lOVEVSUlVQVCkpOwo+IC0JCX0gZWxzZSB7 Cj4gLQkJCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwgfmVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrKTsK PiAtCQl9Cj4gLQkJUE9TVElOR19SRUFEKFJJTkdfSU1SKGVuZ2luZS0+bW1pb19iYXNlKSk7Cj4g LQl9Cj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdz KTsKPiAtCj4gLQlyZXR1cm4gdHJ1ZTsKPiArCWlmIChIQVNfTDNfRFBGKGRldl9wcml2KSAmJiBl bmdpbmUtPmlkID09IFJDUykKPiArCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsCj4gKwkJCSAgICAg ICB+KGVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrIHwKPiArCQkJCSBHVF9SRU5ERVJfTDNfUEFSSVRZ X0VSUk9SX0lOVEVSUlVQVCkpOwo+ICsJZWxzZQo+ICsJCUk5MTVfV1JJVEVfSU1SKGVuZ2luZSwg fmVuZ2luZS0+aXJxX2VuYWJsZV9tYXNrKTsKPiArCVBPU1RJTkdfUkVBRF9GVyhSSU5HX0lNUihl bmdpbmUtPm1taW9fYmFzZSkpOwo+ICAgfQo+Cj4gICBzdGF0aWMgdm9pZAo+IC1nZW44X3Jpbmdf cHV0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK2dlbjhfaXJxX2Rpc2Fi bGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAtCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7Cj4KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGZsYWdz KTsKPiAtCWlmICgtLWVuZ2luZS0+aXJxX3JlZmNvdW50ID09IDApIHsKPiAtCQlpZiAoSEFTX0wz X0RQRihkZXZfcHJpdikgJiYgZW5naW5lLT5pZCA9PSBSQ1MpIHsKPiAtCQkJSTkxNV9XUklURV9J TVIoZW5naW5lLAo+IC0JCQkJICAgICAgIH5HVF9SRU5ERVJfTDNfUEFSSVRZX0VSUk9SX0lOVEVS UlVQVCk7Cj4gLQkJfSBlbHNlIHsKPiAtCQkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+MCk7Cj4g LQkJfQo+IC0JCVBPU1RJTkdfUkVBRChSSU5HX0lNUihlbmdpbmUtPm1taW9fYmFzZSkpOwo+IC0J fQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBmbGFncyk7 Cj4gKwlpZiAoSEFTX0wzX0RQRihkZXZfcHJpdikgJiYgZW5naW5lLT5pZCA9PSBSQ1MpCj4gKwkJ STkxNV9XUklURV9JTVIoZW5naW5lLAo+ICsJCQkgICAgICAgfkdUX1JFTkRFUl9MM19QQVJJVFlf RVJST1JfSU5URVJSVVBUKTsKPiArCWVsc2UKPiArCQlJOTE1X1dSSVRFX0lNUihlbmdpbmUsIH4w KTsKPiAgIH0KPgo+ICAgc3RhdGljIGludAo+IEBAIC0yOTA5LDIzICsyODEyLDIzIEBAIHN0YXRp YyB2b2lkIGludGVsX3JpbmdfaW5pdF9pcnEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAgCQkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4gLQkJZW5naW5lLT5pcnFfZ2V0ID0gZ2Vu OF9yaW5nX2dldF9pcnE7Cj4gLQkJZW5naW5lLT5pcnFfcHV0ID0gZ2VuOF9yaW5nX3B1dF9pcnE7 Cj4gKwkJZW5naW5lLT5pcnFfZW5hYmxlID0gZ2VuOF9pcnFfZW5hYmxlOwo+ICsJCWVuZ2luZS0+ aXJxX2Rpc2FibGUgPSBnZW44X2lycV9kaXNhYmxlOwo+ICAgCQllbmdpbmUtPmlycV9zZXFub19i YXJyaWVyID0gZ2VuNl9zZXFub19iYXJyaWVyOwo+ICAgCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA2KSB7Cj4gLQkJZW5naW5lLT5pcnFfZ2V0ID0gZ2VuNl9yaW5nX2dldF9pcnE7 Cj4gLQkJZW5naW5lLT5pcnFfcHV0ID0gZ2VuNl9yaW5nX3B1dF9pcnE7Cj4gKwkJZW5naW5lLT5p cnFfZW5hYmxlID0gZ2VuNl9pcnFfZW5hYmxlOwo+ICsJCWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBn ZW42X2lycV9kaXNhYmxlOwo+ICAgCQllbmdpbmUtPmlycV9zZXFub19iYXJyaWVyID0gZ2VuNl9z ZXFub19iYXJyaWVyOwo+ICAgCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KSB7 Cj4gLQkJZW5naW5lLT5pcnFfZ2V0ID0gZ2VuNV9yaW5nX2dldF9pcnE7Cj4gLQkJZW5naW5lLT5p cnFfcHV0ID0gZ2VuNV9yaW5nX3B1dF9pcnE7Cj4gKwkJZW5naW5lLT5pcnFfZW5hYmxlID0gZ2Vu NV9pcnFfZW5hYmxlOwo+ICsJCWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBnZW41X2lycV9kaXNhYmxl Owo+ICAgCQllbmdpbmUtPmlycV9zZXFub19iYXJyaWVyID0gZ2VuNV9zZXFub19iYXJyaWVyOwo+ ICAgCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAzKSB7Cj4gLQkJZW5naW5lLT5p cnFfZ2V0ID0gaTl4eF9yaW5nX2dldF9pcnE7Cj4gLQkJZW5naW5lLT5pcnFfcHV0ID0gaTl4eF9y aW5nX3B1dF9pcnE7Cj4gKwkJZW5naW5lLT5pcnFfZW5hYmxlID0gaTl4eF9pcnFfZW5hYmxlOwo+ ICsJCWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBpOXh4X2lycV9kaXNhYmxlOwo+ICAgCX0gZWxzZSB7 Cj4gLQkJZW5naW5lLT5pcnFfZ2V0ID0gaTh4eF9yaW5nX2dldF9pcnE7Cj4gLQkJZW5naW5lLT5p cnFfcHV0ID0gaTh4eF9yaW5nX3B1dF9pcnE7Cj4gKwkJZW5naW5lLT5pcnFfZW5hYmxlID0gaTh4 eF9pcnFfZW5hYmxlOwo+ICsJCWVuZ2luZS0+aXJxX2Rpc2FibGUgPSBpOHh4X2lycV9kaXNhYmxl Owo+ICAgCX0KPiAgIH0KPgo+IEBAIC0zMTE2LDggKzMwMTksOCBAQCBpbnQgaW50ZWxfaW5pdF92 ZWJveF9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQkJR1RfUkVOREVS X1VTRVJfSU5URVJSVVBUIDw8IEdFTjhfVkVDU19JUlFfU0hJRlQ7Cj4gICAJfSBlbHNlIHsKPiAg IAkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPSBQTV9WRUJPWF9VU0VSX0lOVEVSUlVQVDsKPiAt CQllbmdpbmUtPmlycV9nZXQgPSBoc3dfdmVib3hfZ2V0X2lycTsKPiAtCQllbmdpbmUtPmlycV9w dXQgPSBoc3dfdmVib3hfcHV0X2lycTsKPiArCQllbmdpbmUtPmlycV9lbmFibGUgPSBoc3dfdmVi b3hfaXJxX2VuYWJsZTsKPiArCQllbmdpbmUtPmlycV9kaXNhYmxlID0gaHN3X3ZlYm94X2lycV9k aXNhYmxlOwo+ICAgCX0KPgo+ICAgCXJldHVybiBpbnRlbF9pbml0X3JpbmdfYnVmZmVyKGRldiwg ZW5naW5lKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gaW5kZXgg NDBjMDA0MTM0Yjc2Li44ZWI5NjQwOGEzZTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5oCj4gQEAgLTE4OSwxMSArMTg5LDEwIEBAIHN0cnVjdCBpbnRlbF9lbmdp bmVfY3Mgewo+ICAgCXN0cnVjdCBpbnRlbF9od19zdGF0dXNfcGFnZSBzdGF0dXNfcGFnZTsKPiAg IAlzdHJ1Y3QgaTkxNV9jdHhfd29ya2Fyb3VuZHMgd2FfY3R4Owo+Cj4gLQl1bnNpZ25lZCBpcnFf cmVmY291bnQ7IC8qIHByb3RlY3RlZCBieSBkZXZfcHJpdi0+aXJxX2xvY2sgKi8KPiAgIAlib29s CQlpcnFfcG9zdGVkOwo+ICAgCXUzMgkJaXJxX2VuYWJsZV9tYXNrOwkvKiBiaXRtYXNrIHRvIGVu YWJsZSByaW5nIGludGVycnVwdCAqLwo+IC0JYm9vbCBfX211c3RfY2hlY2sgKCppcnFfZ2V0KShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiAtCXZvaWQJCSgqaXJxX3B1dCkoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZyk7Cj4gKwl2b2lkCQkoKmlycV9lbmFibGUpKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+ICsJdm9pZAkJKCppcnFfZGlzYWJsZSkoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZyk7Cj4KPiAgIAlpbnQJCSgqaW5pdF9odykoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZyk7Cj4KPgoKSSB0aGluayBteSBvbmx5IGNvbXBsYWludCBoZXJlIHdh cyB0aGF0IHRoZSBjYWxsZXIgaGFzIHRvIGtub3cgYWJvdXQgCmxvY2tpbmcgbm93LiBCdXQgaXQg aXMgYSBzaW5nbGUgY2FsbCBzaXRlIHNvIE9LLgoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGlu IDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==