From mboxrd@z Thu Jan 1 00:00:00 1970 From: "C, Ramalingam" Subject: Re: [PATCH v11 08/42] drm/i915: MEI interface definition Date: Thu, 7 Feb 2019 03:04:50 +0530 Message-ID: References: <1549487071-15343-1-git-send-email-ramalingam.c@intel.com> <1549487071-15343-9-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1549487071-15343-9-git-send-email-ramalingam.c@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, daniel.vetter@ffwll.ch, tomas.winkler@intel.com, uma.shankar@intel.com List-Id: dri-devel@lists.freedesktop.org RGFuaWVsLAoKRHVlIHRvIHNpZ25pZmljYW50IGNoYW5nZXMgQHVuYmluZCBhbmQgY2xlYW51cCwg aSBoYXZlIGRyb3BwZWQgeW91ciByLWIuIApQbGVhc2UgcmV2aWV3IGl0IGFnYWluLgoKLS1SYW0K Ck9uIDIvNy8yMDE5IDI6MzMgQU0sIFJhbWFsaW5nYW0gQyB3cm90ZToKPiBEZWZpbmluZyB0aGUg bWVpLWk5MTUgaW50ZXJmYWNlIGZ1bmN0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gb2YKPiB0aGUg aW50ZXJmYWNlLgo+Cj4gdjI6Cj4gICAgQWRqdXN0IHRvIHRoZSBuZXcgaW50ZXJmYWNlIGNoYW5n ZXMuIFtUb21hc10KPiAgICBBZGRlZCBmdXJ0aGVyIGRlYnVnIGxvZ3MgZm9yIHRoZSBmYWlsdXJl cyBhdCBNRUkgaS9mLgo+ICAgIHBvcnQgaW4gaGRjcF9wb3J0IGRhdGEgaXMgZXF1aXBwZWQgdG8g aGFuZGxlIC12ZSB2YWx1ZXMuCj4gdjM6Cj4gICAgbWVpIGNvbXAgaXMgbWF0Y2hlZCBmb3IgZ2xv YmFsIGk5MTUgY29tcCBtYXN0ZXIuIFtEYW5pZWxdCj4gICAgSW4gaGRjcF9zaGltIGhkY3BfcHJv dG9jb2woKSBpcyByZXBsYWNlZCB3aXRoIGNvbnN0IHZhcmlhYmxlLiBbRGFuaWVsXQo+ICAgIG1l aSB3cmFwcGVycyBhcmUgYWRqdXN0ZWQgYXMgcGVyIHRoZSBpL2YgY2hhbmdlIFtEYW5pZWxdCj4g djQ6Cj4gICAgcG9ydCBpbml0aWFsaXphdGlvbiBpcyBkb25lIG9ubHkgYXQgaGRjcDJfaW5pdCBv bmx5IFtEYW52ZXRdCj4gdjU6Cj4gICAgSTkxNSByZWdpc3RlcnMgYSBzdWJjb21wb25lbnQgdG8g YmUgbWF0Y2hlZCB3aXRoIG1laV9oZGNwIFtEYW5pZWxdCj4gdjY6Cj4gICAgSERDUF9kaXNhYmxl IGZvciBhbGwgY29ubmVjdG9ycyBpbmNhc2Ugb2YgY29tcF91bmJpbmQuCj4gICAgVGVhciBkb3du IEhEQ1AgY29tcCBpbnRlcmZhY2UgYXQgaTkxNV91bmxvYWQgW0RhbmllbF0KPgo+IFNpZ25lZC1v ZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPiAtLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgIHwgICAxICsKPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgIHwgICA3ICsKPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Nvbm5lY3Rvci5jIHwgICAyICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oICAgICAgIHwgICA2ICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkY3AuYyAgICAgIHwgNDIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICAg aW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaCAgICAgICAgICAgfCAgIDMgKwo+ICAgNiBmaWxl cyBjaGFuZ2VkLCA0NDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4gaW5kZXggN2RlOTA3MDFmNmYxLi45YzQyMThiNWQxNTMgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtOTA0LDYgKzkwNCw3IEBAIHN0YXRpYyBpbnQgaTkx NV9kcml2ZXJfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g ICAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPmF2X211dGV4KTsKPiAgIAltdXRleF9pbml0KCZkZXZf cHJpdi0+d20ud21fbXV0ZXgpOwo+ICAgCW11dGV4X2luaXQoJmRldl9wcml2LT5wcHNfbXV0ZXgp Owo+ICsJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gICAKPiAgIAlp OTE1X21lbWNweV9pbml0X2Vhcmx5KGRldl9wcml2KTsKPiAgIAlpbnRlbF9ydW50aW1lX3BtX2lu aXRfZWFybHkoZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGEyMjkz MTUyY2I2YS4uZTNkMDMwYjczYjViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAg LTU1LDYgKzU1LDcgQEAKPiAgICNpbmNsdWRlIDxkcm0vZHJtX3V0aWwuaD4KPiAgICNpbmNsdWRl IDxkcm0vZHJtX2RzYy5oPgo+ICAgI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+Cj4gKyNp bmNsdWRlIDxkcm0vaTkxNV9tZWlfaGRjcF9pbnRlcmZhY2UuaD4KPiAgIAo+ICAgI2luY2x1ZGUg Imk5MTVfZml4ZWQuaCIKPiAgICNpbmNsdWRlICJpOTE1X3BhcmFtcy5oIgo+IEBAIC0yMDQzLDYg KzIwNDQsMTIgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAgCj4gICAJc3RydWN0IGk5 MTVfcG11IHBtdTsKPiAgIAo+ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqaGRjcF9t YXN0ZXI7Cj4gKwlib29sIGhkY3BfY29tcF9hZGRlZDsKPiArCj4gKwkvKiBNdXRleCB0byBwcm90 ZWN0IHRoZSBhYm92ZSBoZGNwIGNvbXBvbmVudCByZWxhdGVkIHZhbHVlcy4gKi8KPiArCXN0cnVj dCBtdXRleCBoZGNwX2NvbXBfbXV0ZXg7Cj4gKwo+ICAgCS8qCj4gICAJICogTk9URTogVGhpcyBp cyB0aGUgZHJpMS91bXMgZHVuZ2VvbiwgZG9uJ3QgYWRkIHN0dWZmIGhlcmUuIFlvdXIgcGF0Y2gK PiAgIAkgKiB3aWxsIGJlIHJlamVjdGVkLiBJbnN0ZWFkIGxvb2sgZm9yIGEgYmV0dGVyIHBsYWNl Lgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb25uZWN0b3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nvbm5lY3Rvci5jCj4gaW5kZXggZWUxNjc1ODc0 N2M1Li42NmVkM2VlNTk5OGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY29ubmVjdG9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb25uZWN0 b3IuYwo+IEBAIC04OCw2ICs4OCw4IEBAIHZvaWQgaW50ZWxfY29ubmVjdG9yX2Rlc3Ryb3koc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgIAo+ICAgCWtmcmVlKGludGVsX2Nvbm5l Y3Rvci0+ZGV0ZWN0X2VkaWQpOwo+ICAgCj4gKwlpbnRlbF9oZGNwX2NsZWFudXAoaW50ZWxfY29u bmVjdG9yKTsKPiArCj4gICAJaWYgKCFJU19FUlJfT1JfTlVMTChpbnRlbF9jb25uZWN0b3ItPmVk aWQpKQo+ICAgCQlrZnJlZShpbnRlbF9jb25uZWN0b3ItPmVkaWQpOwo+ICAgCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCAwMzBkOTYyNjk3ZGQuLmI1YzU0YzY4ODI1NiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTQxLDYgKzQxLDcgQEAKPiAgICNpbmNsdWRl IDxkcm0vZHJtX3JlY3QuaD4KPiAgICNpbmNsdWRlIDxkcm0vZHJtX3ZibGFuay5oPgo+ICAgI2lu Y2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gKyNpbmNsdWRlIDxkcm0vaTkxNV9tZWlfaGRjcF9p bnRlcmZhY2UuaD4KPiAgICNpbmNsdWRlIDxtZWRpYS9jZWMtbm90aWZpZXIuaD4KPiAgIAo+ICAg c3RydWN0IGRybV9wcmludGVyOwo+IEBAIC0zODUsNiArMzg2LDkgQEAgc3RydWN0IGludGVsX2hk Y3Bfc2hpbSB7Cj4gICAJLyogRGV0ZWN0cyBwYW5lbCdzIGhkY3AgY2FwYWJpbGl0eS4gVGhpcyBp cyBvcHRpb25hbCBmb3IgSERNSS4gKi8KPiAgIAlpbnQgKCpoZGNwX2NhcGFibGUpKHN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICAgCQkJICAgIGJvb2wgKmhkY3Bf Y2FwYWJsZSk7Cj4gKwo+ICsJLyogSERDUCBhZGFwdGF0aW9uKERQL0hETUkpIHJlcXVpcmVkIG9u IHRoZSBwb3J0ICovCj4gKwllbnVtIGhkY3Bfd2lyZWRfcHJvdG9jb2wgcHJvdG9jb2w7Cj4gICB9 Owo+ICAgCj4gICBzdHJ1Y3QgaW50ZWxfaGRjcCB7Cj4gQEAgLTQwNSw2ICs0MDksNyBAQCBzdHJ1 Y3QgaW50ZWxfaGRjcCB7Cj4gICAJICogY29udGVudCBjYW4gZmxvdyBvbmx5IHRocm91Z2ggYSBs aW5rIHByb3RlY3RlZCBieSBIRENQMi4yLgo+ICAgCSAqLwo+ICAgCXU4IGNvbnRlbnRfdHlwZTsK PiArCXN0cnVjdCBoZGNwX3BvcnRfZGF0YSBwb3J0X2RhdGE7Cj4gICB9Owo+ICAgCj4gICBzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yIHsKPiBAQCAtMjA3MCw2ICsyMDc1LDcgQEAgaW50IGludGVsX2hk Y3BfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ICAgaW50IGlu dGVsX2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ ICAgYm9vbCBpc19oZGNwX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGVudW0gcG9ydCBwb3J0KTsKPiAgIGJvb2wgaW50ZWxfaGRjcF9jYXBhYmxlKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gK3ZvaWQgaW50ZWxfaGRjcF9jbGVhbnVwKHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gICAKPiAgIC8qIGludGVsX3Bzci5j ICovCj4gICAjZGVmaW5lIENBTl9QU1IoZGV2X3ByaXYpIChIQVNfUFNSKGRldl9wcml2KSAmJiBk ZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4g aW5kZXggN2IxMDk3ZDc5ZmI4Li43OWY4OTc5YjkxNTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRjcC5jCj4gQEAgLTcsOCArNywxMCBAQAo+ICAgICovCj4gICAKPiAgICNpbmNsdWRlIDxk cm0vZHJtX2hkY3AuaD4KPiArI2luY2x1ZGUgPGRybS9pOTE1X2NvbXBvbmVudC5oPgo+ICAgI2lu Y2x1ZGUgPGxpbnV4L2kyYy5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgo+ICsjaW5j bHVkZSA8bGludXgvY29tcG9uZW50Lmg+Cj4gICAKPiAgICNpbmNsdWRlICJpbnRlbF9kcnYuaCIK PiAgICNpbmNsdWRlICJpOTE1X3JlZy5oIgo+IEBAIC04MzIsNiArODM0LDM2MCBAQCBib29sIGlz X2hkY3Bfc3VwcG9ydGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBw b3J0IHBvcnQpCj4gICAJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiBwb3J0IDwg UE9SVF9FOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQK PiAraGRjcDJfcHJlcGFyZV9ha2VfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IsCj4gKwkJICAgICAgIHN0cnVjdCBoZGNwMl9ha2VfaW5pdCAqYWtlX2RhdGEpCj4gK3sKPiAr CXN0cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRh Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0 b3ItPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7Cj4g KwlpbnQgcmV0Owo+ICsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgp Owo+ICsJY29tcCA9IGRldl9wcml2LT5oZGNwX21hc3RlcjsKPiArCj4gKwlpZiAoIWNvbXAgfHwg IWNvbXAtPm9wcykgewo+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRl eCk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY29tcC0+b3BzLT5p bml0aWF0ZV9oZGNwMl9zZXNzaW9uKGNvbXAtPm1laV9kZXYsIGRhdGEsIGFrZV9kYXRhKTsKPiAr CWlmIChyZXQpCj4gKwkJRFJNX0RFQlVHX0tNUygiUHJlcGFyZV9ha2VfaW5pdCBmYWlsZWQuICVk XG4iLCByZXQpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsK PiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51 c2VkKSkgaW50Cj4gK2hkY3AyX3ZlcmlmeV9yeF9jZXJ0X3ByZXBhcmVfa20oc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICsJCQkJc3RydWN0IGhkY3AyX2FrZV9zZW5kX2NlcnQg KnJ4X2NlcnQsCj4gKwkJCQlib29sICpwYWlyZWQsCj4gKwkJCQlzdHJ1Y3QgaGRjcDJfYWtlX25v X3N0b3JlZF9rbSAqZWtfcHViX2ttLAo+ICsJCQkJc2l6ZV90ICptc2dfc3opCj4gK3sKPiArCXN0 cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhOwo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3It PmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7Cj4gKwlp bnQgcmV0Owo+ICsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ ICsJY29tcCA9IGRldl9wcml2LT5oZGNwX21hc3RlcjsKPiArCj4gKwlpZiAoIWNvbXAgfHwgIWNv bXAtPm9wcykgewo+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7 Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY29tcC0+b3BzLT52ZXJp ZnlfcmVjZWl2ZXJfY2VydF9wcmVwYXJlX2ttKGNvbXAtPm1laV9kZXYsIGRhdGEsCj4gKwkJCQkJ CQkgcnhfY2VydCwgcGFpcmVkLAo+ICsJCQkJCQkJIGVrX3B1Yl9rbSwgbXNnX3N6KTsKPiArCWlm IChyZXQgPCAwKQo+ICsJCURSTV9ERUJVR19LTVMoIlZlcmlmeSByeF9jZXJ0IGZhaWxlZC4gJWRc biIsIHJldCk7Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVz ZWQpKSBpbnQKPiAraGRjcDJfdmVyaWZ5X2hwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IsCj4gKwkJICAgIHN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9ocHJpbWUgKnJ4X2hwcmlt ZSkKPiArewo+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRj cC5wb3J0X2RhdGE7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3Rl ciAqY29tcDsKPiArCWludCByZXQ7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3Bf Y29tcF9tdXRleCk7Cj4gKwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOwo+ICsKPiArCWlm ICghY29tcCB8fCAhY29tcC0+b3BzKSB7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRj cF9jb21wX211dGV4KTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXQgPSBj b21wLT5vcHMtPnZlcmlmeV9ocHJpbWUoY29tcC0+bWVpX2RldiwgZGF0YSwgcnhfaHByaW1lKTsK PiArCWlmIChyZXQgPCAwKQo+ICsJCURSTV9ERUJVR19LTVMoIlZlcmlmeSBocHJpbWUgZmFpbGVk LiAlZFxuIiwgcmV0KTsKPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRl eCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIF9fYXR0cmlidXRlX18o KHVudXNlZCkpIGludAo+ICtoZGNwMl9zdG9yZV9wYWlyaW5nX2luZm8oc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yLAo+ICsJCQkgc3RydWN0IGhkY3AyX2FrZV9zZW5kX3BhaXJpbmdf aW5mbyAqcGFpcmluZ19pbmZvKQo+ICt7Cj4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEg PSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkx NV9oZGNwX2NvbXBfbWFzdGVyICpjb21wOwo+ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2Nr KCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9t YXN0ZXI7Cj4gKwo+ICsJaWYgKCFjb21wIHx8ICFjb21wLT5vcHMpIHsKPiArCQltdXRleF91bmxv Y2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJ fQo+ICsKPiArCXJldCA9IGNvbXAtPm9wcy0+c3RvcmVfcGFpcmluZ19pbmZvKGNvbXAtPm1laV9k ZXYsIGRhdGEsIHBhaXJpbmdfaW5mbyk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlEUk1fREVCVUdf S01TKCJTdG9yZSBwYWlyaW5nIGluZm8gZmFpbGVkLiAlZFxuIiwgcmV0KTsKPiArCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiAr fQo+ICsKPiArc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAo+ICtoZGNwMl9wcmVw YXJlX2xjX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICsJCSAgICAg IHN0cnVjdCBoZGNwMl9sY19pbml0ICpsY19pbml0KQo+ICt7Cj4gKwlzdHJ1Y3QgaGRjcF9wb3J0 X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4g KwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVyICpjb21wOwo+ICsJaW50IHJldDsKPiArCj4g KwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCWNvbXAgPSBkZXZf cHJpdi0+aGRjcF9tYXN0ZXI7Cj4gKwo+ICsJaWYgKCFjb21wIHx8ICFjb21wLT5vcHMpIHsKPiAr CQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9IGNvbXAtPm9wcy0+aW5pdGlhdGVfbG9jYWxpdHlf Y2hlY2soY29tcC0+bWVpX2RldiwgZGF0YSwgbGNfaW5pdCk7Cj4gKwlpZiAocmV0IDwgMCkKPiAr CQlEUk1fREVCVUdfS01TKCJQcmVwYXJlIGxjX2luaXQgZmFpbGVkLiAlZFxuIiwgcmV0KTsKPiAr CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwo+ICsJcmV0dXJu IHJldDsKPiArfQo+ICsKPiArc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAo+ICto ZGNwMl92ZXJpZnlfbHByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAr CQkgICAgc3RydWN0IGhkY3AyX2xjX3NlbmRfbHByaW1lICpyeF9scHJpbWUpCj4gK3sKPiArCXN0 cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhOwo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3It PmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7Cj4gKwlp bnQgcmV0Owo+ICsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ ICsJY29tcCA9IGRldl9wcml2LT5oZGNwX21hc3RlcjsKPiArCj4gKwlpZiAoIWNvbXAgfHwgIWNv bXAtPm9wcykgewo+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7 Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY29tcC0+b3BzLT52ZXJp ZnlfbHByaW1lKGNvbXAtPm1laV9kZXYsIGRhdGEsIHJ4X2xwcmltZSk7Cj4gKwlpZiAocmV0IDwg MCkKPiArCQlEUk1fREVCVUdfS01TKCJWZXJpZnkgTF9QcmltZSBmYWlsZWQuICVkXG4iLCByZXQp Owo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCj4gKwly ZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKPiAr aW50IGhkY3AyX3ByZXBhcmVfc2tleShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is Cj4gKwkJICAgICAgIHN0cnVjdCBoZGNwMl9za2Vfc2VuZF9la3MgKnNrZV9kYXRhKQo+ICt7Cj4g KwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0 YTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVj dG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVyICpjb21wOwo+ ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4 KTsKPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7Cj4gKwo+ICsJaWYgKCFjb21wIHx8 ICFjb21wLT5vcHMpIHsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0 ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9IGNvbXAtPm9wcy0+ Z2V0X3Nlc3Npb25fa2V5KGNvbXAtPm1laV9kZXYsIGRhdGEsIHNrZV9kYXRhKTsKPiArCWlmIChy ZXQgPCAwKQo+ICsJCURSTV9ERUJVR19LTVMoIkdldCBzZXNzaW9uIGtleSBmYWlsZWQuICVkXG4i LCByZXQpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiAr Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2Vk KSkgaW50Cj4gK2hkY3AyX3ZlcmlmeV9yZXBfdG9wb2xvZ3lfcHJlcGFyZV9hY2soc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICsJCQkJICAgICAgc3RydWN0IGhkY3AyX3JlcF9z ZW5kX3JlY2VpdmVyaWRfbGlzdAo+ICsJCQkJCQkJCSpyZXBfdG9wb2xvZ3ksCj4gKwkJCQkgICAg ICBzdHJ1Y3QgaGRjcDJfcmVwX3NlbmRfYWNrICpyZXBfc2VuZF9hY2spCj4gK3sKPiArCXN0cnVj dCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhOwo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJh c2UuZGV2KTsKPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7Cj4gKwlpbnQg cmV0Owo+ICsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsJ Y29tcCA9IGRldl9wcml2LT5oZGNwX21hc3RlcjsKPiArCj4gKwlpZiAoIWNvbXAgfHwgIWNvbXAt Pm9wcykgewo+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY29tcC0+b3BzLT5yZXBlYXRl cl9jaGVja19mbG93X3ByZXBhcmVfYWNrKGNvbXAtPm1laV9kZXYsIGRhdGEsCj4gKwkJCQkJCQkg cmVwX3RvcG9sb2d5LAo+ICsJCQkJCQkJIHJlcF9zZW5kX2Fjayk7Cj4gKwlpZiAocmV0IDwgMCkK PiArCQlEUk1fREVCVUdfS01TKCJWZXJpZnkgcmVwIHRvcG9sb2d5IGZhaWxlZC4gJWRcbiIsIHJl dCk7Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsKPiAr CXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBp bnQKPiAraGRjcDJfdmVyaWZ5X21wcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IsCj4gKwkJICAgIHN0cnVjdCBoZGNwMl9yZXBfc3RyZWFtX3JlYWR5ICpzdHJlYW1fcmVhZHkp Cj4gK3sKPiArCXN0cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3Au cG9ydF9kYXRhOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIg KmNvbXA7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2Nv bXBfbXV0ZXgpOwo+ICsJY29tcCA9IGRldl9wcml2LT5oZGNwX21hc3RlcjsKPiArCj4gKwlpZiAo IWNvbXAgfHwgIWNvbXAtPm9wcykgewo+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3Bf Y29tcF9tdXRleCk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY29t cC0+b3BzLT52ZXJpZnlfbXByaW1lKGNvbXAtPm1laV9kZXYsIGRhdGEsIHN0cmVhbV9yZWFkeSk7 Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlEUk1fREVCVUdfS01TKCJWZXJpZnkgbXByaW1lIGZhaWxl ZC4gJWRcbiIsIHJldCk7Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0 ZXgpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9f KCh1bnVzZWQpKQo+ICtpbnQgaGRjcDJfYXV0aGVudGljYXRlX3BvcnQoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEg PSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkx NV9oZGNwX2NvbXBfbWFzdGVyICpjb21wOwo+ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2Nr KCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9t YXN0ZXI7Cj4gKwo+ICsJaWYgKCFjb21wIHx8ICFjb21wLT5vcHMpIHsKPiArCQltdXRleF91bmxv Y2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJ fQo+ICsKPiArCXJldCA9IGNvbXAtPm9wcy0+ZW5hYmxlX2hkY3BfYXV0aGVudGljYXRpb24oY29t cC0+bWVpX2RldiwgZGF0YSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlEUk1fREVCVUdfS01TKCJF bmFibGUgaGRjcCBhdXRoIGZhaWxlZC4gJWRcbiIsIHJldCk7Cj4gKwltdXRleF91bmxvY2soJmRl dl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4g K3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQo+ICtpbnQgaGRjcDJfY2xvc2VfbWVpX3Nl c3Npb24oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYp Owo+ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKPiArCWludCByZXQ7Cj4g Kwo+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwljb21wID0g ZGV2X3ByaXYtPmhkY3BfbWFzdGVyOwo+ICsKPiArCWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7 Cj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXQgPSBjb21wLT5vcHMtPmNsb3NlX2hkY3Bfc2Vz c2lvbihjb21wLT5tZWlfZGV2LAo+ICsJCQkJCSAgICAgJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2Rh dGEpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCj4g KwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkK PiAraW50IGhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ICt7Cj4gKwlyZXR1cm4gaGRjcDJfY2xvc2VfbWVpX3Nlc3Npb24oY29ubmVj dG9yKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBpOTE1X2hkY3BfY29tcG9uZW50X2JpbmQoc3Ry dWN0IGRldmljZSAqaTkxNV9rZGV2LAo+ICsJCQkJICAgIHN0cnVjdCBkZXZpY2UgKm1laV9rZGV2 LCB2b2lkICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBrZGV2X3RvX2k5MTUoaTkxNV9rZGV2KTsKPiArCj4gKwlEUk1fREVCVUcoIkk5MTUgSERDUCBj b21wIGJpbmRcbiIpOwo+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7 Cj4gKwlkZXZfcHJpdi0+aGRjcF9tYXN0ZXIgPSAoc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3Rl ciAqKWRhdGE7Cj4gKwlkZXZfcHJpdi0+aGRjcF9tYXN0ZXItPm1laV9kZXYgPSBtZWlfa2RldjsK PiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfaGRjcF9jb21wb25lbnRfdW5iaW5k KHN0cnVjdCBkZXZpY2UgKmk5MTVfa2RldiwKPiArCQkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlICpt ZWlfa2Rldiwgdm9pZCAqZGF0YSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0ga2Rldl90b19pOTE1KGk5MTVfa2Rldik7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gJmRldl9wcml2LT5kcm07Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9j b25uZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICsJc3RydWN0 IGRybV9jb25uZWN0b3JfbGlzdF9pdGVyIGNvbm5faXRlcjsKPiArCj4gKwlEUk1fREVCVUcoIkk5 MTUgSERDUCBjb21wIHVuYmluZFxuIik7Cj4gKwo+ICsJLyogT25jZSB0aGUgY29tcG9uZW50IGlz IHVuYmluZCwgRGlzYWJsZSBIRENQMi4yIG9uIGFsbCBjb25uZWN0b3JzICovCj4gKwlkcm1fY29u bmVjdG9yX2xpc3RfaXRlcl9iZWdpbihkZXYsICZjb25uX2l0ZXIpOwo+ICsJZHJtX2Zvcl9lYWNo X2Nvbm5lY3Rvcl9pdGVyKGNvbm5lY3RvciwgJmNvbm5faXRlcikgewo+ICsJCWludGVsX2Nvbm5l Y3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwo+ICsJCQlpbnRlbF9oZGNwX2Rp c2FibGUoaW50ZWxfY29ubmVjdG9yKTsKPiArCX0KPiArCWRybV9jb25uZWN0b3JfbGlzdF9pdGVy X2VuZCgmY29ubl9pdGVyKTsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21w X211dGV4KTsKPiArCWRldl9wcml2LT5oZGNwX21hc3RlciA9IE5VTEw7Cj4gKwltdXRleF91bmxv Y2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGNvbXBvbmVudF9vcHMgaTkxNV9oZGNwX2NvbXBvbmVudF9vcHMgPSB7Cj4gKwkuYmlu ZCAgID0gaTkxNV9oZGNwX2NvbXBvbmVudF9iaW5kLAo+ICsJLnVuYmluZCA9IGk5MTVfaGRjcF9j b21wb25lbnRfdW5iaW5kLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBpbml0aWFsaXplX2hkY3Bf cG9ydF9kYXRhKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3Ry dWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICsJc3RydWN0IGhkY3Bf cG9ydF9kYXRhICpkYXRhID0gJmhkY3AtPnBvcnRfZGF0YTsKPiArCj4gKwlkYXRhLT5wb3J0ID0g Y29ubmVjdG9yLT5lbmNvZGVyLT5wb3J0Owo+ICsJZGF0YS0+cG9ydF90eXBlID0gKHU4KUhEQ1Bf UE9SVF9UWVBFX0lOVEVHUkFURUQ7Cj4gKwlkYXRhLT5wcm90b2NvbCA9ICh1OCloZGNwLT5zaGlt LT5wcm90b2NvbDsKPiArCj4gKwlkYXRhLT5rID0gMTsKPiArCWlmICghZGF0YS0+c3RyZWFtcykK PiArCQlkYXRhLT5zdHJlYW1zID0ga2NhbGxvYyhkYXRhLT5rLAo+ICsJCQkJCXNpemVvZihzdHJ1 Y3QgaGRjcDJfc3RyZWFtaWRfdHlwZSksCj4gKwkJCQkJR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWRh dGEtPnN0cmVhbXMpIHsKPiArCQlEUk1fRVJST1IoIk91dCBvZiBNZW1vcnlcbiIpOwo+ICsJCXJl dHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiArCWRhdGEtPnN0cmVhbXNbMF0uc3RyZWFtX2lkID0g MDsKPiArCWRhdGEtPnN0cmVhbXNbMF0uc3RyZWFtX3R5cGUgPSBoZGNwLT5jb250ZW50X3R5cGU7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gICBzdGF0aWMgYm9vbCBpc19oZGNwMl9zdXBw b3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+ICAgCWlmICgh SVNfRU5BQkxFRChDT05GSUdfSU5URUxfTUVJX0hEQ1ApKQo+IEBAIC04NDMsOSArMTE5OSw0MiBA QCBzdGF0aWMgYm9vbCBpc19oZGNwMl9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAgCj4gICBzdGF0aWMgdm9pZCBpbnRlbF9oZGNwMl9pbml0KHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gICAJc3RydWN0 IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICsJYm9vbCBhZGRfY29tcG9u ZW50ID0gZmFsc2U7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGluaXRpYWxpemVfaGRjcF9w b3J0X2RhdGEoY29ubmVjdG9yKTsKPiArCWlmIChyZXQpIHsKPiArCQlEUk1fREVCVUdfS01TKCJN ZWkgaGRjcCBkYXRhIGluaXQgZmFpbGVkXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJ bXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwkvKgo+ICsJICogQ29t cG9uZW50IGZvciBtZWkgaXMgY29tbW9uIGFjcm9zcyB0aGUgY29ubmVjdG9yLgo+ICsJICogQWRk aW5nIHRoZSBjb21wb25lbnQgb25jZSBpcyBzdWZmaWNpZW50Lgo+ICsJICovCj4gKwlpZiAoIWRl dl9wcml2LT5oZGNwX2NvbXBfYWRkZWQpIHsKPiArCQlkZXZfcHJpdi0+aGRjcF9jb21wX2FkZGVk ID0gdHJ1ZTsKPiArCQlhZGRfY29tcG9uZW50ID0gdHJ1ZTsKPiArCX0KPiArCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwo+ICsJaWYgKGFkZF9jb21wb25lbnQp IHsKPiArCQlyZXQgPSBjb21wb25lbnRfYWRkX3R5cGVkKGRldl9wcml2LT5kcm0uZGV2LAo+ICsJ CQkJCSAgJmk5MTVfaGRjcF9jb21wb25lbnRfb3BzLAo+ICsJCQkJCSAgSTkxNV9DT01QT05FTlRf SERDUCk7Cj4gKwkJaWYgKHJldCA8IDApIHsKPiArCQkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIGF0 IGNvbXBvbmVudCBhZGQoJWQpXG4iLCByZXQpOwo+ICsJCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ aGRjcF9jb21wX211dGV4KTsKPiArCQkJZGV2X3ByaXYtPmhkY3BfY29tcF9hZGRlZCA9IGZhbHNl Owo+ICsJCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsJCQlr ZnJlZShoZGNwLT5wb3J0X2RhdGEuc3RyZWFtcyk7Cj4gKwkJCXJldHVybjsKPiArCQl9Cj4gKwl9 Cj4gICAKPiAtCS8qIFRPRE86IE1FSSBpbnRlcmZhY2UgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQg aGVyZSAqLwo+ICAgCWhkY3AtPmhkY3AyX3N1cHBvcnRlZCA9IHRydWU7Cj4gICB9Cj4gICAKPiBA QCAtOTE3LDYgKzEzMDYsMzggQEAgaW50IGludGVsX2hkY3BfZGlzYWJsZShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+ICt2b2lk IGludGVsX2hkY3BfY2xlYW51cChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4g K3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVj dG9yLT5iYXNlLmRldik7Cj4gKwo+ICsJaWYgKCFjb25uZWN0b3ItPmhkY3Auc2hpbSkKPiArCQly ZXR1cm47Cj4gKwo+ICsJbXV0ZXhfbG9jaygmY29ubmVjdG9yLT5oZGNwLm11dGV4KTsKPiArCWlm ICghY29ubmVjdG9yLT5oZGNwLmhkY3AyX3N1cHBvcnRlZCkgewo+ICsJCW11dGV4X3VubG9jaygm Y29ubmVjdG9yLT5oZGNwLm11dGV4KTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJa2ZyZWUo Y29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YS5zdHJlYW1zKTsKPiArCW11dGV4X2xvY2soJmRldl9w cml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsJLyoKPiArCSAqIENvbXBvbmVudCBmb3IgbWVpIGlz IGNvbW1vbiBhY3Jvc3MgdGhlIGNvbm5lY3Rvci4KPiArCSAqIFJlbW92aW5nIHRoZSBjb21wb25l bnQgb25jZSBpcyBzdWZmaWNpZW50Lgo+ICsJICovCj4gKwlpZiAoIWRldl9wcml2LT5oZGNwX2Nv bXBfYWRkZWQpIHsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgp Owo+ICsJCW11dGV4X3VubG9jaygmY29ubmVjdG9yLT5oZGNwLm11dGV4KTsKPiArCQlyZXR1cm47 Cj4gKwl9Cj4gKwo+ICsJZGV2X3ByaXYtPmhkY3BfY29tcF9hZGRlZCA9IGZhbHNlOwo+ICsJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCW11dGV4X3VubG9jaygm Y29ubmVjdG9yLT5oZGNwLm11dGV4KTsKPiArCj4gKwljb21wb25lbnRfZGVsKGRldl9wcml2LT5k cm0uZGV2LCAmaTkxNV9oZGNwX2NvbXBvbmVudF9vcHMpOwo+ICt9Cj4gKwo+ICAgdm9pZCBpbnRl bF9oZGNwX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAg CQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX3N0YXRlLAo+ICAgCQkJICAg ICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X3N0YXRlKQo+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oIGIvaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQu aAo+IGluZGV4IDcyZmJiMDM3ZjliMy4uZjM4NTFiYTNlNGMzIDEwMDY0NAo+IC0tLSBhL2luY2x1 ZGUvZHJtL2k5MTVfY29tcG9uZW50LmgKPiArKysgYi9pbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVu dC5oCj4gQEAgLTI0LDEwICsyNCwxMyBAQAo+ICAgI2lmbmRlZiBfSTkxNV9DT01QT05FTlRfSF8K PiAgICNkZWZpbmUgX0k5MTVfQ09NUE9ORU5UX0hfCj4gICAKPiArI2luY2x1ZGUgPGxpbnV4L2Rl dmljZS5oPgo+ICsKPiAgICNpbmNsdWRlICJkcm1fYXVkaW9fY29tcG9uZW50LmgiCj4gICAKPiAg IGVudW0gaTkxNV9jb21wb25lbnRfdHlwZSB7Cj4gICAJSTkxNV9DT01QT05FTlRfQVVESU8gPSAx LAo+ICsJSTkxNV9DT01QT05FTlRfSERDUCwKPiAgIH07Cj4gICAKPiAgIC8qIE1BWF9QT1JUIGlz IHRoZSBudW1iZXIgb2YgcG9ydAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==