From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v8 05/35] drm/i915: MEI interface definition Date: Thu, 6 Dec 2018 11:23:03 +0100 Message-ID: <20181206102303.GO21184@phenom.ffwll.local> References: <1543315413-24302-1-git-send-email-ramalingam.c@intel.com> <1543315413-24302-6-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id 608EC6E575 for ; Thu, 6 Dec 2018 10:23:07 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id o10so271285edt.13 for ; Thu, 06 Dec 2018 02:23:07 -0800 (PST) Content-Disposition: inline In-Reply-To: <1543315413-24302-6-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ramalingam C Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, uma.shankar@intel.com, tomas.winkler@intel.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBOb3YgMjcsIDIwMTggYXQgMDQ6MTM6MDNQTSArMDUzMCwgUmFtYWxpbmdhbSBDIHdy b3RlOgo+IERlZmluaW5nIHRoZSBtZWktaTkxNSBpbnRlcmZhY2UgZnVuY3Rpb25zIGFuZCBpbml0 aWFsaXphdGlvbiBvZgo+IHRoZSBpbnRlcmZhY2UuCj4gCj4gU2lnbmVkLW9mZi1ieTogUmFtYWxp bmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFRvbWFzIFdp bmtsZXIgPHRvbWFzLndpbmtsZXJAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAgfCAgIDcgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMgfCA0NDIg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiAgaW5jbHVkZS9kcm0vaTkx NV9jb21wb25lbnQuaCAgICAgIHwgIDcxICsrKysrKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDUyMSBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g aW5kZXggZjc2M2IzMGY5OGQ5Li5iNjhiYzk4MGI3Y2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiBAQCAtMjAxNSw2ICsyMDE1LDggQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ ICAKPiAgCXN0cnVjdCBpOTE1X3BtdSBwbXU7Cj4gIAo+ICsJc3RydWN0IGk5MTVfaGRjcF9jb21w b25lbnRfbWFzdGVyICpoZGNwX2NvbXA7Cj4gKwo+ICAJLyoKPiAgCSAqIE5PVEU6IFRoaXMgaXMg dGhlIGRyaTEvdW1zIGR1bmdlb24sIGRvbid0IGFkZCBzdHVmZiBoZXJlLiBZb3VyIHBhdGNoCj4g IAkgKiB3aWxsIGJlIHJlamVjdGVkLiBJbnN0ZWFkIGxvb2sgZm9yIGEgYmV0dGVyIHBsYWNlLgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggODVhNTI2NTk4MDk2Li5iZGU4MmYzYWRh ODUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0yOSw2ICsyOSw3IEBACj4g ICNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2hkbWkuaD4KPiAgI2lu Y2x1ZGUgPGxpbnV4L3NjaGVkL2Nsb2NrLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tZWlfaGRjcC5o Pgo+ICAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ ICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gQEAgLTM3OSw2ICszODAsOSBAQCBzdHJ1Y3Qg aW50ZWxfaGRjcF9zaGltIHsKPiAgCS8qIERldGVjdHMgcGFuZWwncyBoZGNwIGNhcGFiaWxpdHku IFRoaXMgaXMgb3B0aW9uYWwgZm9yIEhETUkuICovCj4gIAlpbnQgKCpoZGNwX2NhcGFibGUpKHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICAJCQkgICAgYm9vbCAq aGRjcF9jYXBhYmxlKTsKPiArCj4gKwkvKiBEZXRlY3RzIHRoZSBIRENQIHByb3RvY29sKERQL0hE TUkpIHJlcXVpcmVkIG9uIHRoZSBwb3J0ICovCj4gKwllbnVtIG1laV9oZGNwX3dpcmVkX3Byb3Rv Y29sICgqaGRjcF9wcm90b2NvbCkodm9pZCk7CgpMb29raW5nIGFoZWFkLCB0aGlzIHNlZW1zIGhh cmR3aXJlZCB0byBjb25zdGFudCByZXR1cm4gdmFsdWU/IE9yIHdoeSBkbyB3ZQpuZWVkIGEgZnVu Y3Rpb24gaGVyZT8KCj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfaGRjcCB7Cj4gQEAgLTM5OSw2 ICs0MDMsOSBAQCBzdHJ1Y3QgaW50ZWxfaGRjcCB7Cj4gIAkgKiBjb250ZW50IGNhbiBmbG93IG9u bHkgdGhyb3VnaCBhIGxpbmsgcHJvdGVjdGVkIGJ5IEhEQ1AyLjIuCj4gIAkgKi8KPiAgCXU4IGNv bnRlbnRfdHlwZTsKPiArCj4gKwkvKiBtZWkgaW50ZXJmYWNlIHJlbGF0ZWQgaW5mb3JtYXRpb24g Ki8KPiArCXN0cnVjdCBtZWlfaGRjcF9kYXRhIG1laV9kYXRhOwo+ICB9Owo+ICAKPiAgc3RydWN0 IGludGVsX2Nvbm5lY3RvciB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+IGluZGV4IDk5 ZGRkYjU0MDk1OC4uNzYwNzgwZjExMDVjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkY3AuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3Au Ywo+IEBAIC04LDE0ICs4LDIwIEBACj4gIAo+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiAgI2lu Y2x1ZGUgPGRybS9kcm1faGRjcC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2k5MTVfY29tcG9uZW50Lmg+ Cj4gICNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgo+ ICsjaW5jbHVkZSA8bGludXgvY29tcG9uZW50Lmg+Cj4gIAo+ICAjaW5jbHVkZSAiaW50ZWxfZHJ2 LmgiCj4gICNpbmNsdWRlICJpOTE1X3JlZy5oIgo+ICAKPiAgI2RlZmluZSBLRVlfTE9BRF9UUklF Uwk1Cj4gICNkZWZpbmUgVElNRV9GT1JfRU5DUllQVF9TVEFUVVNfQ0hBTkdFCTUwCj4gKyNkZWZp bmUgR0VUX01FSV9ERElfSU5ERVgocCkgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ ICsJdHlwZW9mKHApIF9fcCA9IChwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ ICsJX19wID09IFBPUlRfQSA/IE1FSV9ERElfQSA6IChlbnVtIG1laV9oZGNwX2RkaSlfX3A7XAo+ ICt9KQo+ICAKPiAgc3RhdGljCj4gIGJvb2wgaW50ZWxfaGRjcF9pc19rc3ZfdmFsaWQodTggKmtz dikKPiBAQCAtODMzLDYgKzgzOSw0MTcgQEAgYm9vbCBpc19oZGNwX3N1cHBvcnRlZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0KQo+ICAJCSFJU19DSEVS UllWSUVXKGRldl9wcml2KSAmJiBwb3J0IDwgUE9SVF9FKTsKPiAgfQo+ICAKPiArc3RhdGljIF9f YXR0cmlidXRlX18oKHVudXNlZCkpIGludAo+ICtoZGNwMl9wcmVwYXJlX2FrZV9pbml0KHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkgICAgICAgc3RydWN0IGhkY3AyX2Fr ZV9pbml0ICpha2VfZGF0YSkKPiArewo+ICsJc3RydWN0IG1laV9oZGNwX2RhdGEgKmRhdGEgPSAm Y29ubmVjdG9yLT5oZGNwLm1laV9kYXRhOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpOTE1X2hk Y3BfY29tcG9uZW50X21hc3RlciAqY29tcCA9IGRldl9wcml2LT5oZGNwX2NvbXA7Cj4gKwlpbnQg cmV0Owo+ICsKPiArCWlmICghY29tcCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwltdXRl eF9sb2NrKCZjb21wLT5tdXRleCk7Cj4gKwlpZiAoIWNvbXAtPm9wcyB8fCAhY29tcC0+ZGV2KSB7 Cj4gKwkJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4g Kwl9Cj4gKwo+ICsJaWYgKGRhdGEtPnBvcnQgPT0gTUVJX0RESV9JTlZBTElEX1BPUlQgJiYgY29u bmVjdG9yLT5lbmNvZGVyKQo+ICsJCWRhdGEtPnBvcnQgPSBHRVRfTUVJX0RESV9JTkRFWChjb25u ZWN0b3ItPmVuY29kZXItPnBvcnQpOwo+ICsKPiArCS8qIENsZWFyIE1FIEZXIGluc3RhbmNlIGZv ciB0aGUgcG9ydCwganVzdCBpbmNhc2UgKi8KPiArCWNvbXAtPm9wcy0+Y2xvc2VfaGRjcF9zZXNz aW9uKGNvbXAtPmRldiwgZGF0YSk7CgpTb3VuZHMgbGlrZSBhIGJ1ZyBzb21ld2hlcmUgaWYgd2Ug bmVlZCB0aGlzPyBJJ2QgcHV0IHRoaXMgY29kZSBpbnRvIHRoZQotPmluaXRpYXRlX2hkY3AyX3Nl c3Npb24sIHdpdGggYSBiaWcgV0FSTl9PTiBpZiBpdCdzIGFjdHVhbGx5IG5lZWRlZC4KCiJKdXN0 IGluIGNhc2UiIHBhcGVyaW5nIG92ZXIgcHJvZ3JhbW1pbmcgYnVncyBvZiBvdXIgb3duIGp1c3Qg bWFrZXMKZGVidWdnaW5nIGhhcmRlci4KCj4gKwo+ICsJcmV0ID0gY29tcC0+b3BzLT5pbml0aWF0 ZV9oZGNwMl9zZXNzaW9uKGNvbXAtPmRldiwKPiArCQkJCQkJZGF0YSwgYWtlX2RhdGEpOwoKV2Ug c2hvdWxkIHNldCB0aGUgcG9ydCBvbmx5IGFmdGVyIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXppbmcg dGhpcy4KCj4gKwltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKPiArCj4gKwlyZXR1cm4gcmV0 Owo+ICt9Cj4gKwo+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50Cj4gK2hkY3Ay X3ZlcmlmeV9yeF9jZXJ0X3ByZXBhcmVfa20oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICsJCQkJc3RydWN0IGhkY3AyX2FrZV9zZW5kX2NlcnQgKnJ4X2NlcnQsCj4gKwkJCQli b29sICpwYWlyZWQsCj4gKwkJCQlzdHJ1Y3QgaGRjcDJfYWtlX25vX3N0b3JlZF9rbSAqZWtfcHVi X2ttLAo+ICsJCQkJc2l6ZV90ICptc2dfc3opCj4gK3sKPiArCXN0cnVjdCBtZWlfaGRjcF9kYXRh ICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5tZWlfZGF0YTsKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1 Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXIgKmNvbXAgPSBkZXZfcHJpdi0+aGRjcF9jb21w Owo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIWNvbXApCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4g Kwo+ICsJbXV0ZXhfbG9jaygmY29tcC0+bXV0ZXgpOwo+ICsJaWYgKCFjb21wLT5vcHMgfHwgIWNv bXAtPmRldiB8fCBkYXRhLT5wb3J0ID09IE1FSV9ERElfSU5WQUxJRF9QT1JUKSB7CgpUaGVzZSBh bGwgbG9vayBsaWtlIHByb2dyYW1taW5nIG1pc3Rha2VzIHRoYXQgc2hvdWxkIHJlc3VsdCBpbiBh IFdBUk5fT04uCgo+ICsJCW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgpOwo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9IGNvbXAtPm9wcy0+dmVyaWZ5X3JlY2VpdmVyX2Nl cnRfcHJlcGFyZV9rbShjb21wLT5kZXYsIGRhdGEsCj4gKwkJCQkJCQkgcnhfY2VydCwgcGFpcmVk LAo+ICsJCQkJCQkJIGVrX3B1Yl9rbSwgbXNnX3N6KTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCWNv bXAtPm9wcy0+Y2xvc2VfaGRjcF9zZXNzaW9uKGNvbXAtPmRldiwgZGF0YSk7CgpFcnJvciBoYW5k bGluZyBoZXJlIHNlZW1zIGEgYml0IHN0cmFuZ2UuIFlvdSBjbG9zZSB0aGUgc2Vzc2lvbiwgYnV0 IGRvbid0CnJlc2V0IHRoZSBwb3J0LiBTbyBuZXh0IG9wIHdpbGwgYmUgdG90YWxseSB1bmF3YXJl IHRoYXQgdGhpbmdzIGhhdmUgYmxvd24KdXAuIEFsc28gbm8gd2FybmluZy4KCklmIHdlIHdhbnQg dG8gY2xvc2UgdGhlIHNlc3Npb24sIHRoZW4gSSB0aGluayB0aGF0IHNob3VsZCBiZSBhIGRlY2lz aW9uCm1hZGUgaGlnaGVyIHVwLgoKPiArCW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgpOwoKV2l0 aCBjb21wb25lbnQgZG8gd2Ugc3RpbGwgbmVlZCB0aGlzIG11dGV4IHN0dWZmIGhlcmU/CgpFeGFj dCBzYW1lIGNvbW1lbnRzIGV2ZXJ5d2hlcmUgYmVsb3cuCgo+ICsKPiArCXJldHVybiByZXQ7Cj4g K30KPiArCj4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKPiAraGRjcDJfdmVy aWZ5X2hwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJICAgIHN0 cnVjdCBoZGNwMl9ha2Vfc2VuZF9ocHJpbWUgKnJ4X2hwcmltZSkKPiArewo+ICsJc3RydWN0IG1l aV9oZGNwX2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLm1laV9kYXRhOwo+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2 KTsKPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcG9uZW50X21hc3RlciAqY29tcCA9IGRldl9wcml2 LT5oZGNwX2NvbXA7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICghY29tcCkKPiArCQlyZXR1cm4g LUVJTlZBTDsKPiArCj4gKwltdXRleF9sb2NrKCZjb21wLT5tdXRleCk7Cj4gKwlpZiAoIWNvbXAt Pm9wcyB8fCAhY29tcC0+ZGV2IHx8IGRhdGEtPnBvcnQgPT0gTUVJX0RESV9JTlZBTElEX1BPUlQp IHsKPiArCQltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKPiArCQlyZXR1cm4gLUVJTlZBTDsK PiArCX0KPiArCj4gKwlyZXQgPSBjb21wLT5vcHMtPnZlcmlmeV9ocHJpbWUoY29tcC0+ZGV2LCBk YXRhLCByeF9ocHJpbWUpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJY29tcC0+b3BzLT5jbG9zZV9o ZGNwX3Nlc3Npb24oY29tcC0+ZGV2LCBkYXRhKTsKPiArCW11dGV4X3VubG9jaygmY29tcC0+bXV0 ZXgpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9f KCh1bnVzZWQpKSBpbnQKPiAraGRjcDJfc3RvcmVfcGFpcmluZ19pbmZvKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJIHN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9wYWlyaW5n X2luZm8gKnBhaXJpbmdfaW5mbykKPiArewo+ICsJc3RydWN0IG1laV9oZGNwX2RhdGEgKmRhdGEg PSAmY29ubmVjdG9yLT5oZGNwLm1laV9kYXRhOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpOTE1 X2hkY3BfY29tcG9uZW50X21hc3RlciAqY29tcCA9IGRldl9wcml2LT5oZGNwX2NvbXA7Cj4gKwlp bnQgcmV0Owo+ICsKPiArCWlmICghY29tcCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlt dXRleF9sb2NrKCZjb21wLT5tdXRleCk7Cj4gKwlpZiAoIWNvbXAtPm9wcyB8fCAhY29tcC0+ZGV2 IHx8IGRhdGEtPnBvcnQgPT0gTUVJX0RESV9JTlZBTElEX1BPUlQpIHsKPiArCQltdXRleF91bmxv Y2soJmNvbXAtPm11dGV4KTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXQg PSBjb21wLT5vcHMtPnN0b3JlX3BhaXJpbmdfaW5mbyhjb21wLT5kZXYsCj4gKwkJCQkJICAgIGRh dGEsIHBhaXJpbmdfaW5mbyk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQljb21wLT5vcHMtPmNsb3Nl X2hkY3Bfc2Vzc2lvbihjb21wLT5kZXYsIGRhdGEpOwo+ICsJbXV0ZXhfdW5sb2NrKCZjb21wLT5t dXRleCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIF9fYXR0cmlidXRl X18oKHVudXNlZCkpIGludAo+ICtoZGNwMl9wcmVwYXJlX2xjX2luaXQoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yLAo+ICsJCSAgICAgIHN0cnVjdCBoZGNwMl9sY19pbml0ICpsY19p bml0KQo+ICt7Cj4gKwlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhk Y3AubWVpX2RhdGE7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wb25lbnRf bWFzdGVyICpjb21wID0gZGV2X3ByaXYtPmhkY3BfY29tcDsKPiArCWludCByZXQ7Cj4gKwo+ICsJ aWYgKCFjb21wKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCW11dGV4X2xvY2soJmNvbXAt Pm11dGV4KTsKPiArCWlmICghY29tcC0+b3BzIHx8ICFjb21wLT5kZXYgfHwgZGF0YS0+cG9ydCA9 PSBNRUlfRERJX0lOVkFMSURfUE9SVCkgewo+ICsJCW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgp Owo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9IGNvbXAtPm9wcy0+aW5p dGlhdGVfbG9jYWxpdHlfY2hlY2soY29tcC0+ZGV2LAo+ICsJCQkJCQkgZGF0YSwgbGNfaW5pdCk7 Cj4gKwlpZiAocmV0IDwgMCkKPiArCQljb21wLT5vcHMtPmNsb3NlX2hkY3Bfc2Vzc2lvbihjb21w LT5kZXYsIGRhdGEpOwo+ICsJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7Cj4gKwo+ICsJcmV0 dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAo+ ICtoZGNwMl92ZXJpZnlfbHByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwK PiArCQkgICAgc3RydWN0IGhkY3AyX2xjX3NlbmRfbHByaW1lICpyeF9scHJpbWUpCj4gK3sKPiAr CXN0cnVjdCBtZWlfaGRjcF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5tZWlfZGF0YTsK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9y LT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXIgKmNvbXAg PSBkZXZfcHJpdi0+aGRjcF9jb21wOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIWNvbXApCj4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmY29tcC0+bXV0ZXgpOwo+ICsJ aWYgKCFjb21wLT5vcHMgfHwgIWNvbXAtPmRldiB8fCBkYXRhLT5wb3J0ID09IE1FSV9ERElfSU5W QUxJRF9QT1JUKSB7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7Cj4gKwkJcmV0dXJu IC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY29tcC0+b3BzLT52ZXJpZnlfbHByaW1lKGNv bXAtPmRldiwgZGF0YSwgcnhfbHByaW1lKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCWNvbXAtPm9w cy0+Y2xvc2VfaGRjcF9zZXNzaW9uKGNvbXAtPmRldiwgZGF0YSk7Cj4gKwltdXRleF91bmxvY2so JmNvbXAtPm11dGV4KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgX19h dHRyaWJ1dGVfXygodW51c2VkKSkKPiAraW50IGhkY3AyX3ByZXBhcmVfc2tleShzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJICAgICAgIHN0cnVjdCBoZGNwMl9za2Vfc2Vu ZF9la3MgKnNrZV9kYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSAqZGF0YSA9ICZj b25uZWN0b3ItPmhkY3AubWVpX2RhdGE7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGk5MTVfaGRj cF9jb21wb25lbnRfbWFzdGVyICpjb21wID0gZGV2X3ByaXYtPmhkY3BfY29tcDsKPiArCWludCBy ZXQ7Cj4gKwo+ICsJaWYgKCFjb21wKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCW11dGV4 X2xvY2soJmNvbXAtPm11dGV4KTsKPiArCWlmICghY29tcC0+b3BzIHx8ICFjb21wLT5kZXYgfHwg ZGF0YS0+cG9ydCA9PSBNRUlfRERJX0lOVkFMSURfUE9SVCkgewo+ICsJCW11dGV4X3VubG9jaygm Y29tcC0+bXV0ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9IGNv bXAtPm9wcy0+Z2V0X3Nlc3Npb25fa2V5KGNvbXAtPmRldiwgZGF0YSwgc2tlX2RhdGEpOwo+ICsJ aWYgKHJldCA8IDApCj4gKwkJY29tcC0+b3BzLT5jbG9zZV9oZGNwX3Nlc3Npb24oY29tcC0+ZGV2 LCBkYXRhKTsKPiArCW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgpOwo+ICsKPiArCXJldHVybiBy ZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKPiAraGRj cDJfdmVyaWZ5X3JlcF90b3BvbG9neV9wcmVwYXJlX2FjayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IsCj4gKwkJCQkgICAgICBzdHJ1Y3QgaGRjcDJfcmVwX3NlbmRfcmVjZWl2ZXJp ZF9saXN0Cj4gKwkJCQkJCQkJKnJlcF90b3BvbG9neSwKPiArCQkJCSAgICAgIHN0cnVjdCBoZGNw Ml9yZXBfc2VuZF9hY2sgKnJlcF9zZW5kX2FjaykKPiArewo+ICsJc3RydWN0IG1laV9oZGNwX2Rh dGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLm1laV9kYXRhOwo+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiArCXN0 cnVjdCBpOTE1X2hkY3BfY29tcG9uZW50X21hc3RlciAqY29tcCA9IGRldl9wcml2LT5oZGNwX2Nv bXA7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICghY29tcCkKPiArCQlyZXR1cm4gLUVJTlZBTDsK PiArCj4gKwltdXRleF9sb2NrKCZjb21wLT5tdXRleCk7Cj4gKwlpZiAoIWNvbXAtPm9wcyB8fCAh Y29tcC0+ZGV2IHx8IGRhdGEtPnBvcnQgPT0gTUVJX0RESV9JTlZBTElEX1BPUlQpIHsKPiArCQlt dXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiAr Cj4gKwlyZXQgPSBjb21wLT5vcHMtPnJlcGVhdGVyX2NoZWNrX2Zsb3dfcHJlcGFyZV9hY2soY29t cC0+ZGV2LAo+ICsJCQkJCQkJIGRhdGEsIHJlcF90b3BvbG9neSwKPiArCQkJCQkJCSByZXBfc2Vu ZF9hY2spOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJY29tcC0+b3BzLT5jbG9zZV9oZGNwX3Nlc3Np b24oY29tcC0+ZGV2LCBkYXRhKTsKPiArCW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgpOwo+ICsK PiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQp KSBpbnQKPiAraGRjcDJfdmVyaWZ5X21wcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IsCj4gKwkJICAgIHN0cnVjdCBoZGNwMl9yZXBfc3RyZWFtX3JlYWR5ICpzdHJlYW1fcmVh ZHkpCj4gK3sKPiArCXN0cnVjdCBtZWlfaGRjcF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRj cC5tZWlfZGF0YTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9t YXN0ZXIgKmNvbXAgPSBkZXZfcHJpdi0+aGRjcF9jb21wOwo+ICsJaW50IHJldDsKPiArCj4gKwlp ZiAoIWNvbXApCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmY29tcC0+ bXV0ZXgpOwo+ICsJaWYgKCFjb21wLT5vcHMgfHwgIWNvbXAtPmRldiB8fCBkYXRhLT5wb3J0ID09 IE1FSV9ERElfSU5WQUxJRF9QT1JUKSB7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7 Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY29tcC0+b3BzLT52ZXJp ZnlfbXByaW1lKGNvbXAtPmRldiwgZGF0YSwgc3RyZWFtX3JlYWR5KTsKPiArCWlmIChyZXQgPCAw KQo+ICsJCWNvbXAtPm9wcy0+Y2xvc2VfaGRjcF9zZXNzaW9uKGNvbXAtPmRldiwgZGF0YSk7Cj4g KwltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4g Kwo+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKPiAraW50IGhkY3AyX2F1dGhlbnRp Y2F0ZV9wb3J0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3Ry dWN0IG1laV9oZGNwX2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLm1laV9kYXRhOwo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJh c2UuZGV2KTsKPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcG9uZW50X21hc3RlciAqY29tcCA9IGRl dl9wcml2LT5oZGNwX2NvbXA7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmICghY29tcCkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwltdXRleF9sb2NrKCZjb21wLT5tdXRleCk7Cj4gKwlpZiAo IWNvbXAtPm9wcyB8fCAhY29tcC0+ZGV2IHx8IGRhdGEtPnBvcnQgPT0gTUVJX0RESV9JTlZBTElE X1BPUlQpIHsKPiArCQltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiArCX0KPiArCj4gKwlyZXQgPSBjb21wLT5vcHMtPmVuYWJsZV9oZGNwX2F1dGhlbnRp Y2F0aW9uKGNvbXAtPmRldiwgZGF0YSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQljb21wLT5vcHMt PmNsb3NlX2hkY3Bfc2Vzc2lvbihjb21wLT5kZXYsIGRhdGEpOwo+ICsJbXV0ZXhfdW5sb2NrKCZj b21wLT5tdXRleCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIF9fYXR0 cmlidXRlX18oKHVudXNlZCkpCj4gK2ludCBoZGNwMl9jbG9zZV9tZWlfc2Vzc2lvbihzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBtZWlfaGRjcF9kYXRh ICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5tZWlfZGF0YTsKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1 Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXIgKmNvbXAgPSBkZXZfcHJpdi0+aGRjcF9jb21w Owo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIWNvbXApCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4g Kwo+ICsJbXV0ZXhfbG9jaygmY29tcC0+bXV0ZXgpOwo+ICsJaWYgKCFjb21wLT5vcHMgfHwgIWNv bXAtPmRldiB8fAo+ICsJICAgIGRhdGEtPnBvcnQgPT0gTUVJX0RESV9JTlZBTElEX1BPUlQpIHsK PiArCQltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiAr CX0KPiArCj4gKwlyZXQgPSBjb21wLT5vcHMtPmNsb3NlX2hkY3Bfc2Vzc2lvbihjb21wLT5kZXYs IGRhdGEpOwoKTmVlZCB0byByZXNldCB0aGUgcG9ydCBoZXJlIEkgdGhpbmsuCgo+ICsJbXV0ZXhf dW5sb2NrKCZjb21wLT5tdXRleCk7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMg X19hdHRyaWJ1dGVfXygodW51c2VkKSkKPiAraW50IGhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlyZXR1cm4gaGRjcDJf Y2xvc2VfbWVpX3Nlc3Npb24oY29ubmVjdG9yKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBpOTE1 X2hkY3BfY29tcG9uZW50X21hc3Rlcl9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl90b19pOTE1KGRldik7Cj4g Kwo+ICsJcmV0dXJuIGNvbXBvbmVudF9iaW5kX2FsbChkZXYsIGRldl9wcml2LT5oZGNwX2NvbXAp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRlbF9jb25uZWN0b3JzX2hkY3BfZGlzYWJsZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmlu dGVsX2Nvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gKwlz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgY29ubl9pdGVyOwo+ICsKPiArCWRybV9jb25u ZWN0b3JfbGlzdF9pdGVyX2JlZ2luKGRldiwgJmNvbm5faXRlcik7Cj4gKwlkcm1fZm9yX2VhY2hf Y29ubmVjdG9yX2l0ZXIoY29ubmVjdG9yLCAmY29ubl9pdGVyKSB7Cj4gKwkJaW50ZWxfY29ubmVj dG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gKwkJaWYgKCEoaW50ZWxfY29u bmVjdG9yLT5oZGNwLnNoaW0pKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaW50ZWxfaGRjcF9k aXNhYmxlKGludGVsX2Nvbm5lY3Rvcik7Cj4gKwl9Cj4gKwlkcm1fY29ubmVjdG9yX2xpc3RfaXRl cl9lbmQoJmNvbm5faXRlcik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfaGRjcF9jb21w b25lbnRfbWFzdGVyX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfdG9faTkxNShkZXYpOwo+ICsKPiArCWlu dGVsX2Nvbm5lY3RvcnNfaGRjcF9kaXNhYmxlKGRldl9wcml2KTsKCldoeSB0aGlzIGNvZGU/IE9u Y2Ugd2UndmUgdW5yZWdpc3RlcmVkIHRoZSBkcml2ZXIsIHdlIHNob3VsZCBoYXZlIHNodXQKZG93 biB0aGUgaGFyZHdhcmUgY29tcGxldGVseS4gV2hpY2ggc2hvdWxkIGhhdmUgc2h1dCBkb3duIGFs bCB0aGUgaGRjcAp1c2VycyB0b28uCgo+ICsJY29tcG9uZW50X3VuYmluZF9hbGwoZGV2LCBkZXZf cHJpdi0+aGRjcF9jb21wKTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25l bnRfbWFzdGVyX29wcyBpOTE1X2hkY3BfY29tcG9uZW50X21hc3Rlcl9vcHMgPSB7Cj4gKwkuYmlu ZCA9IGk5MTVfaGRjcF9jb21wb25lbnRfbWFzdGVyX2JpbmQsCj4gKwkudW5iaW5kID0gaTkxNV9o ZGNwX2NvbXBvbmVudF9tYXN0ZXJfdW5iaW5kLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBpOTE1 X2hkY3BfY29tcG9uZW50X21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkKPiAr ewo+ICsJcmV0dXJuICFzdHJjbXAoZGV2LT5kcml2ZXItPm5hbWUsICJtZWlfaGRjcCIpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGludGVsX2hkY3BfY29tcG9uZW50X2luaXQoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGk5MTVf aGRjcF9jb21wb25lbnRfbWFzdGVyICpjb21wOwo+ICsJc3RydWN0IGNvbXBvbmVudF9tYXRjaCAq bWF0Y2ggPSBOVUxMOwo+ICsJaW50IHJldDsKPiArCj4gKwljb21wID0ga3phbGxvYyhzaXplb2Yo KmNvbXApLCBHRlBfS0VSTkVMKTsKPiArCWlmICghY29tcCkKPiArCQlyZXR1cm4gLUVOT01FTTsK PiArCj4gKwltdXRleF9pbml0KCZjb21wLT5tdXRleCk7Cj4gKwlkZXZfcHJpdi0+aGRjcF9jb21w ID0gY29tcDsKPiArCj4gKwljb21wb25lbnRfbWF0Y2hfYWRkKGRldl9wcml2LT5kcm0uZGV2LCAm bWF0Y2gsCj4gKwkJCSAgICBpOTE1X2hkY3BfY29tcG9uZW50X21hdGNoLCBkZXZfcHJpdik7Cj4g KwlyZXQgPSBjb21wb25lbnRfbWFzdGVyX2FkZF93aXRoX21hdGNoKGRldl9wcml2LT5kcm0uZGV2 LAo+ICsJCQkJCSAgICAgICZpOTE1X2hkY3BfY29tcG9uZW50X21hc3Rlcl9vcHMsCj4gKwkJCQkJ ICAgICAgbWF0Y2gpOwoKU28gSSdtIG5vdCBzdXJlIHRoaXMgd2lsbCB3b3JrIG91dCB3ZWxsLCBo aWRpbmcgdGhlIG1hc3Rlcl9vcHMgaGVyZSBpbgpoZGNwLiBEZWZpbml0ZWx5IG5lZWRzIHRvIGJl IHJld3JpdHRlbiBhcyBzb29uIGFzIGk5MTUgbmVlZHMgYW5vdGhlcgpjb21wb25lbnQuIEFuZCBt aWdodCBtYWtlIHRoZSBsb2FkL3VubG9hZCBzcGxpdCBjb21wbGljYXRlZC4KCj4gKwlpZiAocmV0 IDwgMCkKPiArCQlnb3RvIG91dF9lcnI7Cj4gKwo+ICsJRFJNX0lORk8oIkk5MTUgaGRjcCBjb21w b25lbnQgbWFzdGVyIGFkZGVkLlxuIik7CgpZb3UgYWRkIGJvdGggdGhlIG1hc3RlciBhbmQgdGhl IGhkY3AgY29tcG9uZW50IGhlcmUuIE91dHB1dCBpcyBhIGJpdApjb25mdXNpbmcuCgo+ICsJcmV0 dXJuIHJldDsKPiArCj4gK291dF9lcnI6Cj4gKwljb21wb25lbnRfbWFzdGVyX2RlbChkZXZfcHJp di0+ZHJtLmRldiwKPiArCQkJICAgICAmaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXJfb3BzKTsK PiArCWtmcmVlKGNvbXApOwo+ICsJZGV2X3ByaXYtPmhkY3BfY29tcCA9IE5VTEw7Cj4gKwlEUk1f RVJST1IoIkZhaWxlZCB0byBhZGQgaTkxNSBoZGNwIGNvbXBvbmVudCBtYXN0ZXIgKCVkKVxuIiwg cmV0KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGluaXRpYWxp emVfbWVpX2hkY3BfZGF0YShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sK PiArCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKPiArCXN0cnVj dCBtZWlfaGRjcF9kYXRhICpkYXRhID0gJmhkY3AtPm1laV9kYXRhOwo+ICsJZW51bSBwb3J0IHBv cnQ7Cj4gKwo+ICsJaWYgKGNvbm5lY3Rvci0+ZW5jb2Rlcikgewo+ICsJCXBvcnQgPSBjb25uZWN0 b3ItPmVuY29kZXItPnBvcnQ7Cj4gKwkJZGF0YS0+cG9ydCA9IEdFVF9NRUlfRERJX0lOREVYKHBv cnQpOwo+ICsJfQo+ICsKPiArCWRhdGEtPnBvcnRfdHlwZSA9IE1FSV9IRENQX1BPUlRfVFlQRV9J TlRFR1JBVEVEOwo+ICsJZGF0YS0+cHJvdG9jb2wgPSBoZGNwLT5zaGltLT5oZGNwX3Byb3RvY29s KCk7Cj4gKwo+ICsJZGF0YS0+ayA9IDE7Cj4gKwlpZiAoIWRhdGEtPnN0cmVhbXMpCj4gKwkJZGF0 YS0+c3RyZWFtcyA9IGtjYWxsb2MoZGF0YS0+aywgc2l6ZW9mKGRhdGEtPnN0cmVhbXNbMF0pLAo+ ICsJCQkJCUdGUF9LRVJORUwpOwo+ICsJaWYgKCFkYXRhLT5zdHJlYW1zKSB7Cj4gKwkJRFJNX0VS Uk9SKCJPdXQgb2YgTWVtb3J5XG4iKTsKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCX0KPiArCj4g KwlkYXRhLT5zdHJlYW1zWzBdLnN0cmVhbV9pZCA9IDA7Cj4gKwlkYXRhLT5zdHJlYW1zWzBdLnN0 cmVhbV90eXBlID0gaGRjcC0+Y29udGVudF90eXBlOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g Kwo+ICBib29sIGlzX2hkY3AyX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIHsKPiAgCXJldHVybiAoKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNf R0VNSU5JTEFLRShkZXZfcHJpdikgfHwKPiBAQCAtODQzLDEwICsxMjYwLDI1IEBAIHN0YXRpYyB2 b2lkIGludGVsX2hkY3AyX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5l Y3Rvci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9y LT5oZGNwOwo+ICsJaW50IHJldDsKPiAgCj4gIAlXQVJOX09OKCFpc19oZGNwMl9zdXBwb3J0ZWQo ZGV2X3ByaXYpKTsKPiAgCj4gLQkvKiBUT0RPOiBNRUkgaW50ZXJmYWNlIG5lZWRzIHRvIGJlIGlu aXRpYWxpemVkIGhlcmUgKi8KPiArCXJldCA9IGluaXRpYWxpemVfbWVpX2hkY3BfZGF0YShjb25u ZWN0b3IpOwo+ICsJaWYgKHJldCkgewo+ICsJCURSTV9ERUJVR19LTVMoIk1laSBoZGNwIGRhdGEg aW5pdCBmYWlsZWRcbiIpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlpZiAoIWRldl9wcml2 LT5oZGNwX2NvbXApCj4gKwkJcmV0ID0gaW50ZWxfaGRjcF9jb21wb25lbnRfaW5pdChjb25uZWN0 b3IpOwo+ICsKPiArCWlmIChyZXQpIHsKPiArCQlEUk1fREVCVUdfS01TKCJIRENQIGNvbXAgaW5p dCBmYWlsZWRcbiIpOwo+ICsJCWtmcmVlKGhkY3AtPm1laV9kYXRhLnN0cmVhbXMpOwo+ICsJCXJl dHVybjsKPiArCX0KPiArCj4gIAloZGNwLT5oZGNwMl9zdXBwb3J0ZWQgPSAxOwo+ICB9Cj4gIAo+ IEBAIC04OTQsOSArMTMyNiwxNyBAQCB2b2lkIGludGVsX2hkY3BfZXhpdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJbXV0ZXhfbG9jaygmaW50ZWxfY29ubmVjdG9yLT5o ZGNwLm11dGV4KTsKPiAgCQlpbnRlbF9jb25uZWN0b3ItPmhkY3AuaGRjcDJfc3VwcG9ydGVkID0g MDsKPiAgCQlpbnRlbF9jb25uZWN0b3ItPmhkY3Auc2hpbSA9IE5VTEw7Cj4gKwkJa2ZyZWUoaW50 ZWxfY29ubmVjdG9yLT5oZGNwLm1laV9kYXRhLnN0cmVhbXMpOwoKV2UgbmVlZCB0byBwdXNoIHRo aXMgaW50byBhIHBlci1jb25uZWN0b3IgaGRjcCBjbGVhbnVwIGZ1bmN0aW9uLiBPciBqdXN0Cmlu dG8gdGhlIGdlbmVyaWMgY29ubmVjdG9yIGNsZWFudXAuCgo+ICAJCW11dGV4X3VubG9jaygmaW50 ZWxfY29ubmVjdG9yLT5oZGNwLm11dGV4KTsKPiAgCX0KPiAgCWRybV9jb25uZWN0b3JfbGlzdF9p dGVyX2VuZCgmY29ubl9pdGVyKTsKPiArCj4gKwlpZiAoZGV2X3ByaXYtPmhkY3BfY29tcCkgewo+ ICsJCWNvbXBvbmVudF9tYXN0ZXJfZGVsKGRldl9wcml2LT5kcm0uZGV2LAo+ICsJCQkJICAgICAm aTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXJfb3BzKTsKPiArCQlrZnJlZShkZXZfcHJpdi0+aGRj cF9jb21wKTsKPiArCQlkZXZfcHJpdi0+aGRjcF9jb21wID0gTlVMTDsKPiArCX0KPiAgfQo+ICAK PiAgaW50IGludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaCBiL2luY2x1ZGUv ZHJtL2k5MTVfY29tcG9uZW50LmgKPiBpbmRleCBmY2EyMmQ0NjNlMWIuLjEyMjY4MjI4ZjRkYyAx MDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oCj4gKysrIGIvaW5jbHVk ZS9kcm0vaTkxNV9jb21wb25lbnQuaAo+IEBAIC0yNCw4ICsyNCwxMiBAQAo+ICAjaWZuZGVmIF9J OTE1X0NPTVBPTkVOVF9IXwo+ICAjZGVmaW5lIF9JOTE1X0NPTVBPTkVOVF9IXwo+ICAKPiArI2lu Y2x1ZGUgPGxpbnV4L211dGV4Lmg+Cj4gKwo+ICAjaW5jbHVkZSAiZHJtX2F1ZGlvX2NvbXBvbmVu dC5oIgo+ICAKPiArI2luY2x1ZGUgPGRybS9kcm1faGRjcC5oPgo+ICsKPiAgLyogTUFYX1BPUlQg aXMgdGhlIG51bWJlciBvZiBwb3J0Cj4gICAqIEl0IG11c3QgYmUgc3luYyB3aXRoIEk5MTVfTUFY X1BPUlRTIGRlZmluZWQgaTkxNV9kcnYuaAo+ICAgKi8KPiBAQCAtNDYsNCArNTAsNzEgQEAgc3Ry dWN0IGk5MTVfYXVkaW9fY29tcG9uZW50IHsKPiAgCWludCBhdWRfc2FtcGxlX3JhdGVbTUFYX1BP UlRTXTsKPiAgfTsKPiAgCj4gK3N0cnVjdCBpOTE1X2hkY3BfY29tcG9uZW50X29wcyB7CgpJbW8g dGhhdCBzaG91bGQgYmUgY2FsbGVkIG1laV9oZGNwX2NvbXBvbmVudF9vcHMgYW5kIHB1dCBpbnRv IHRoZQpsaW51eC9tZWlfaGRjcC5oIGhlYWRlci4gT3Igd2FzIHRoYXQgVGhvbWFzJyByZXZpZXcg Y29tbWVudD8KCkFzaWRlOiBSZXZpZXcgaGVyZSBpbiBwdWJsaWMgY2hhbm5lbHMgaW5zdGVhZCBv ZiBpbiBwcml2YXRlIHdvdWxkIGJlIG11Y2gKYmV0dGVyIGZvciBjb29yZGluYXRpb24uCgo+ICsJ LyoqCj4gKwkgKiBAb3duZXI6IG1laV9oZGNwIG1vZHVsZQo+ICsJICovCj4gKwlzdHJ1Y3QgbW9k dWxlICpvd25lcjsKPiArCj4gKwlpbnQgKCppbml0aWF0ZV9oZGNwMl9zZXNzaW9uKShzdHJ1Y3Qg ZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgICB2b2lkICpoZGNwX2RhdGEsCj4gKwkJCQkgICAgICBz dHJ1Y3QgaGRjcDJfYWtlX2luaXQgKmFrZV9kYXRhKTsKPiArCWludCAoKnZlcmlmeV9yZWNlaXZl cl9jZXJ0X3ByZXBhcmVfa20pKHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCQkgICAgICAgdm9p ZCAqaGRjcF9kYXRhLAo+ICsJCQkJCSAgICAgICBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfY2VydAo+ ICsJCQkJCQkJCSpyeF9jZXJ0LAo+ICsJCQkJCSAgICAgICBib29sICprbV9zdG9yZWQsCj4gKwkJ CQkJICAgICAgIHN0cnVjdCBoZGNwMl9ha2Vfbm9fc3RvcmVkX2ttCj4gKwkJCQkJCQkJKmVrX3B1 Yl9rbSwKPiArCQkJCQkgICAgICAgc2l6ZV90ICptc2dfc3opOwo+ICsJaW50ICgqdmVyaWZ5X2hw cmltZSkoc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkgICAgIHZvaWQgKmhkY3BfZGF0YSwKPiAr CQkJICAgICBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfaHByaW1lICpyeF9ocHJpbWUpOwo+ICsJaW50 ICgqc3RvcmVfcGFpcmluZ19pbmZvKShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgIHZvaWQg KmhkY3BfZGF0YSwKPiArCQkJCSAgc3RydWN0IGhkY3AyX2FrZV9zZW5kX3BhaXJpbmdfaW5mbwo+ ICsJCQkJCQkJCSpwYWlyaW5nX2luZm8pOwo+ICsJaW50ICgqaW5pdGlhdGVfbG9jYWxpdHlfY2hl Y2spKHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCSAgICAgICB2b2lkICpoZGNwX2RhdGEsCj4g KwkJCQkgICAgICAgc3RydWN0IGhkY3AyX2xjX2luaXQgKmxjX2luaXRfZGF0YSk7Cj4gKwlpbnQg KCp2ZXJpZnlfbHByaW1lKShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCSAgICAgdm9pZCAqaGRj cF9kYXRhLAo+ICsJCQkgICAgIHN0cnVjdCBoZGNwMl9sY19zZW5kX2xwcmltZSAqcnhfbHByaW1l KTsKPiArCWludCAoKmdldF9zZXNzaW9uX2tleSkoc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkg ICAgICAgdm9pZCAqaGRjcF9kYXRhLAo+ICsJCQkgICAgICAgc3RydWN0IGhkY3AyX3NrZV9zZW5k X2VrcyAqc2tlX2RhdGEpOwo+ICsJaW50ICgqcmVwZWF0ZXJfY2hlY2tfZmxvd19wcmVwYXJlX2Fj aykoc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkJCSAgICAgICB2b2lkICpoZGNwX2RhdGEsCj4g KwkJCQkJICAgICAgIHN0cnVjdCBoZGNwMl9yZXBfc2VuZF9yZWNlaXZlcmlkX2xpc3QKPiArCQkJ CQkJCQkqcmVwX3RvcG9sb2d5LAo+ICsJCQkJCSAgICAgICBzdHJ1Y3QgaGRjcDJfcmVwX3NlbmRf YWNrCj4gKwkJCQkJCQkJKnJlcF9zZW5kX2Fjayk7Cj4gKwlpbnQgKCp2ZXJpZnlfbXByaW1lKShz dHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCSAgICAgdm9pZCAqaGRjcF9kYXRhLAo+ICsJCQkgICAg IHN0cnVjdCBoZGNwMl9yZXBfc3RyZWFtX3JlYWR5ICpzdHJlYW1fcmVhZHkpOwo+ICsJaW50ICgq ZW5hYmxlX2hkY3BfYXV0aGVudGljYXRpb24pKHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJCQkg IHZvaWQgKmhkY3BfZGF0YSk7Cj4gKwlpbnQgKCpjbG9zZV9oZGNwX3Nlc3Npb24pKHN0cnVjdCBk ZXZpY2UgKmRldiwKPiArCQkJCSAgdm9pZCAqaGRjcF9kYXRhKTsKPiArfTsKPiArCj4gKy8qKgo+ ICsgKiBzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXIgLSBVc2VkIGZvciBjb21tdW5p Y2F0aW9uIGJldHdlZW4gaTkxNQo+ICsgKiBhbmQgbWVpX2hkY3AgZm9yIEhEQ1AyLjIgc2Vydmlj ZXMuCj4gKyAqLwo+ICtzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXIgewo+ICsJLyoq Cj4gKwkgKiBAZGV2OiBhIGRldmljZSBwcm92aWRpbmcgaGRjcAo+ICsJICovCj4gKwlzdHJ1Y3Qg ZGV2aWNlICpkZXY7Cj4gKwkvKioKPiArCSAqIEBtdXRleDogTXV0ZXggdG8gcHJvdGVjdCB0aGUg c3RhdGUgb2YgZGV2Cj4gKwkgKi8KPiArCXN0cnVjdCBtdXRleCBtdXRleDsKPiArCS8qKgo+ICsJ ICogQG9wczogT3BzIGltcGxlbWVudGVkIGJ5IG1laV9oZGNwIGRyaXZlciwgdXNlZCBieSBpOTE1 IGRyaXZlci4KPiArCSAqLwo+ICsJY29uc3Qgc3RydWN0IGk5MTVfaGRjcF9jb21wb25lbnRfb3Bz ICpvcHM7Cj4gK307Cj4gKwo+ICAjZW5kaWYgLyogX0k5MTVfQ09NUE9ORU5UX0hfICovCj4gLS0g Cj4gMi43LjQKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBD b3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK