From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v11 08/42] drm/i915: MEI interface definition Date: Thu, 7 Feb 2019 20:48:34 +0100 Message-ID: <20190207194834.GD3271@phenom.ffwll.local> References: <1549487071-15343-1-git-send-email-ramalingam.c@intel.com> <1549487071-15343-9-git-send-email-ramalingam.c@intel.com> <20190207194007.GC3271@phenom.ffwll.local> 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 D9D396ECCE for ; Thu, 7 Feb 2019 19:48:38 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id f9so863568eds.10 for ; Thu, 07 Feb 2019 11:48:38 -0800 (PST) Content-Disposition: inline In-Reply-To: <20190207194007.GC3271@phenom.ffwll.local> 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 T24gVGh1LCBGZWIgMDcsIDIwMTkgYXQgMDg6NDA6MDhQTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIEZlYiAwNywgMjAxOSBhdCAwMjozMzo1N0FNICswNTMwLCBSYW1hbGlu Z2FtIEMgd3JvdGU6Cj4gPiBEZWZpbmluZyB0aGUgbWVpLWk5MTUgaW50ZXJmYWNlIGZ1bmN0aW9u cyBhbmQgaW5pdGlhbGl6YXRpb24gb2YKPiA+IHRoZSBpbnRlcmZhY2UuCj4gPiAKPiA+IHYyOgo+ ID4gICBBZGp1c3QgdG8gdGhlIG5ldyBpbnRlcmZhY2UgY2hhbmdlcy4gW1RvbWFzXQo+ID4gICBB ZGRlZCBmdXJ0aGVyIGRlYnVnIGxvZ3MgZm9yIHRoZSBmYWlsdXJlcyBhdCBNRUkgaS9mLgo+ID4g ICBwb3J0IGluIGhkY3BfcG9ydCBkYXRhIGlzIGVxdWlwcGVkIHRvIGhhbmRsZSAtdmUgdmFsdWVz Lgo+ID4gdjM6Cj4gPiAgIG1laSBjb21wIGlzIG1hdGNoZWQgZm9yIGdsb2JhbCBpOTE1IGNvbXAg bWFzdGVyLiBbRGFuaWVsXQo+ID4gICBJbiBoZGNwX3NoaW0gaGRjcF9wcm90b2NvbCgpIGlzIHJl cGxhY2VkIHdpdGggY29uc3QgdmFyaWFibGUuIFtEYW5pZWxdCj4gPiAgIG1laSB3cmFwcGVycyBh cmUgYWRqdXN0ZWQgYXMgcGVyIHRoZSBpL2YgY2hhbmdlIFtEYW5pZWxdCj4gPiB2NDoKPiA+ICAg cG9ydCBpbml0aWFsaXphdGlvbiBpcyBkb25lIG9ubHkgYXQgaGRjcDJfaW5pdCBvbmx5IFtEYW52 ZXRdCj4gPiB2NToKPiA+ICAgSTkxNSByZWdpc3RlcnMgYSBzdWJjb21wb25lbnQgdG8gYmUgbWF0 Y2hlZCB3aXRoIG1laV9oZGNwIFtEYW5pZWxdCj4gPiB2NjoKPiA+ICAgSERDUF9kaXNhYmxlIGZv ciBhbGwgY29ubmVjdG9ycyBpbmNhc2Ugb2YgY29tcF91bmJpbmQuCj4gPiAgIFRlYXIgZG93biBI RENQIGNvbXAgaW50ZXJmYWNlIGF0IGk5MTVfdW5sb2FkIFtEYW5pZWxdCj4gPiAKPiA+IFNpZ25l ZC1vZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPiA+IC0tLQo+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgIHwgICAxICsKPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICB8ICAgNyArCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY29ubmVjdG9yLmMgfCAgIDIgKwo+ID4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgIHwgICA2ICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9oZGNwLmMgICAgICB8IDQyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0KPiA+ICBpbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oICAgICAgICAgICB8ICAgMyAr Cj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCA0NDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+IGluZGV4IDdkZTkwNzAxZjZmMS4uOWM0 MjE4YjVkMTUzIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu Ywo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4gQEAgLTkwNCw2 ICs5MDQsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfZWFybHkoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gIAltdXRleF9pbml0KCZkZXZfcHJpdi0+YXZfbXV0 ZXgpOwo+ID4gIAltdXRleF9pbml0KCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwo+ID4gIAltdXRl eF9pbml0KCZkZXZfcHJpdi0+cHBzX211dGV4KTsKPiA+ICsJbXV0ZXhfaW5pdCgmZGV2X3ByaXYt PmhkY3BfY29tcF9tdXRleCk7Cj4gPiAgCj4gPiAgCWk5MTVfbWVtY3B5X2luaXRfZWFybHkoZGV2 X3ByaXYpOwo+ID4gIAlpbnRlbF9ydW50aW1lX3BtX2luaXRfZWFybHkoZGV2X3ByaXYpOwo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBpbmRleCBhMjI5MzE1MmNiNmEuLmUzZDAzMGI3M2I1 YiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+IEBAIC01NSw2ICs1NSw3IEBA Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fdXRpbC5oPgo+ID4gICNpbmNsdWRlIDxkcm0vZHJtX2Rz Yy5oPgo+ID4gICNpbmNsdWRlIDxkcm0vZHJtX2Nvbm5lY3Rvci5oPgo+ID4gKyNpbmNsdWRlIDxk cm0vaTkxNV9tZWlfaGRjcF9pbnRlcmZhY2UuaD4KPiA+ICAKPiA+ICAjaW5jbHVkZSAiaTkxNV9m aXhlZC5oIgo+ID4gICNpbmNsdWRlICJpOTE1X3BhcmFtcy5oIgo+ID4gQEAgLTIwNDMsNiArMjA0 NCwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gPiAgCj4gPiAgCXN0cnVjdCBpOTE1 X3BtdSBwbXU7Cj4gPiAgCj4gPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmhkY3Bf bWFzdGVyOwo+ID4gKwlib29sIGhkY3BfY29tcF9hZGRlZDsKPiA+ICsKPiA+ICsJLyogTXV0ZXgg dG8gcHJvdGVjdCB0aGUgYWJvdmUgaGRjcCBjb21wb25lbnQgcmVsYXRlZCB2YWx1ZXMuICovCj4g PiArCXN0cnVjdCBtdXRleCBoZGNwX2NvbXBfbXV0ZXg7Cj4gPiArCj4gPiAgCS8qCj4gPiAgCSAq IE5PVEU6IFRoaXMgaXMgdGhlIGRyaTEvdW1zIGR1bmdlb24sIGRvbid0IGFkZCBzdHVmZiBoZXJl LiBZb3VyIHBhdGNoCj4gPiAgCSAqIHdpbGwgYmUgcmVqZWN0ZWQuIEluc3RlYWQgbG9vayBmb3Ig YSBiZXR0ZXIgcGxhY2UuCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb25uZWN0b3IuYwo+ ID4gaW5kZXggZWUxNjc1ODc0N2M1Li42NmVkM2VlNTk5OGEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb25uZWN0b3IuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY29ubmVjdG9yLmMKPiA+IEBAIC04OCw2ICs4OCw4IEBAIHZvaWQgaW50 ZWxfY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ ICAKPiA+ICAJa2ZyZWUoaW50ZWxfY29ubmVjdG9yLT5kZXRlY3RfZWRpZCk7Cj4gPiAgCj4gPiAr CWludGVsX2hkY3BfY2xlYW51cChpbnRlbF9jb25uZWN0b3IpOwo+ID4gKwo+ID4gIAlpZiAoIUlT X0VSUl9PUl9OVUxMKGludGVsX2Nvbm5lY3Rvci0+ZWRpZCkpCj4gPiAgCQlrZnJlZShpbnRlbF9j b25uZWN0b3ItPmVkaWQpOwo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IGlu ZGV4IDAzMGQ5NjI2OTdkZC4uYjVjNTRjNjg4MjU2IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4gPiBAQCAtNDEsNiArNDEsNyBAQAo+ID4gICNpbmNsdWRlIDxkcm0vZHJtX3Jl Y3QuaD4KPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV92YmxhbmsuaD4KPiA+ICAjaW5jbHVkZSA8ZHJt L2RybV9hdG9taWMuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2k5MTVfbWVpX2hkY3BfaW50ZXJmYWNl Lmg+Cj4gPiAgI2luY2x1ZGUgPG1lZGlhL2NlYy1ub3RpZmllci5oPgo+ID4gIAo+ID4gIHN0cnVj dCBkcm1fcHJpbnRlcjsKPiA+IEBAIC0zODUsNiArMzg2LDkgQEAgc3RydWN0IGludGVsX2hkY3Bf c2hpbSB7Cj4gPiAgCS8qIERldGVjdHMgcGFuZWwncyBoZGNwIGNhcGFiaWxpdHkuIFRoaXMgaXMg b3B0aW9uYWwgZm9yIEhETUkuICovCj4gPiAgCWludCAoKmhkY3BfY2FwYWJsZSkoc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gPiAgCQkJICAgIGJvb2wgKmhkY3Bf Y2FwYWJsZSk7Cj4gPiArCj4gPiArCS8qIEhEQ1AgYWRhcHRhdGlvbihEUC9IRE1JKSByZXF1aXJl ZCBvbiB0aGUgcG9ydCAqLwo+ID4gKwllbnVtIGhkY3Bfd2lyZWRfcHJvdG9jb2wgcHJvdG9jb2w7 Cj4gPiAgfTsKPiA+ICAKPiA+ICBzdHJ1Y3QgaW50ZWxfaGRjcCB7Cj4gPiBAQCAtNDA1LDYgKzQw OSw3IEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsKPiA+ICAJICogY29udGVudCBjYW4gZmxvdyBvbmx5 IHRocm91Z2ggYSBsaW5rIHByb3RlY3RlZCBieSBIRENQMi4yLgo+ID4gIAkgKi8KPiA+ICAJdTgg Y29udGVudF90eXBlOwo+ID4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgcG9ydF9kYXRhOwo+ID4g IH07Cj4gPiAgCj4gPiAgc3RydWN0IGludGVsX2Nvbm5lY3RvciB7Cj4gPiBAQCAtMjA3MCw2ICsy MDc1LDcgQEAgaW50IGludGVsX2hkY3BfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpOwo+ID4gIGludCBpbnRlbF9oZGNwX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKTsKPiA+ICBib29sIGlzX2hkY3Bfc3VwcG9ydGVkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpOwo+ID4gIGJvb2wgaW50 ZWxfaGRjcF9jYXBhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPiAr dm9pZCBpbnRlbF9oZGNwX2NsZWFudXAoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KTsKPiA+ICAKPiA+ICAvKiBpbnRlbF9wc3IuYyAqLwo+ID4gICNkZWZpbmUgQ0FOX1BTUihkZXZf cHJpdikgKEhBU19QU1IoZGV2X3ByaXYpICYmIGRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0KQo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+ID4gaW5kZXggN2IxMDk3ZDc5ZmI4Li43OWY4 OTc5YjkxNTAgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNw LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+ID4gQEAgLTcs OCArNywxMCBAQAo+ID4gICAqLwo+ID4gIAo+ID4gICNpbmNsdWRlIDxkcm0vZHJtX2hkY3AuaD4K PiA+ICsjaW5jbHVkZSA8ZHJtL2k5MTVfY29tcG9uZW50Lmg+Cj4gPiAgI2luY2x1ZGUgPGxpbnV4 L2kyYy5oPgo+ID4gICNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KPiA+ICsjaW5jbHVkZSA8bGlu dXgvY29tcG9uZW50Lmg+Cj4gPiAgCj4gPiAgI2luY2x1ZGUgImludGVsX2Rydi5oIgo+ID4gICNp bmNsdWRlICJpOTE1X3JlZy5oIgo+ID4gQEAgLTgzMiw2ICs4MzQsMzYwIEBAIGJvb2wgaXNfaGRj cF9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQg cG9ydCkKPiA+ICAJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiBwb3J0IDwgUE9S VF9FOwo+ID4gIH0KPiA+ICAKPiA+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50 Cj4gPiAraGRjcDJfcHJlcGFyZV9ha2VfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IsCj4gPiArCQkgICAgICAgc3RydWN0IGhkY3AyX2FrZV9pbml0ICpha2VfZGF0YSkKPiA+ ICt7Cj4gPiArCXN0cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3Au cG9ydF9kYXRhOwo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ID4gKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFz dGVyICpjb21wOwo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4gKwltdXRleF9sb2NrKCZkZXZfcHJp di0+aGRjcF9jb21wX211dGV4KTsKPiA+ICsJY29tcCA9IGRldl9wcml2LT5oZGNwX21hc3RlcjsK PiA+ICsKPiA+ICsJaWYgKCFjb21wIHx8ICFjb21wLT5vcHMpIHsKPiA+ICsJCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ ICsJfQo+ID4gKwo+ID4gKwlyZXQgPSBjb21wLT5vcHMtPmluaXRpYXRlX2hkY3AyX3Nlc3Npb24o Y29tcC0+bWVpX2RldiwgZGF0YSwgYWtlX2RhdGEpOwo+ID4gKwlpZiAocmV0KQo+ID4gKwkJRFJN X0RFQlVHX0tNUygiUHJlcGFyZV9ha2VfaW5pdCBmYWlsZWQuICVkXG4iLCByZXQpOwo+ID4gKwlt dXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwo+ID4gKwlyZXR1 cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkg aW50Cj4gPiAraGRjcDJfdmVyaWZ5X3J4X2NlcnRfcHJlcGFyZV9rbShzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IsCj4gPiArCQkJCXN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9jZXJ0ICpy eF9jZXJ0LAo+ID4gKwkJCQlib29sICpwYWlyZWQsCj4gPiArCQkJCXN0cnVjdCBoZGNwMl9ha2Vf bm9fc3RvcmVkX2ttICpla19wdWJfa20sCj4gPiArCQkJCXNpemVfdCAqbXNnX3N6KQo+ID4gK3sK PiA+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0 X2RhdGE7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y29ubmVjdG9yLT5iYXNlLmRldik7Cj4gPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIg KmNvbXA7Cj4gPiArCWludCByZXQ7Cj4gPiArCj4gPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5o ZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOwo+ID4g Kwo+ID4gKwlpZiAoIWNvbXAgfHwgIWNvbXAtPm9wcykgewo+ID4gKwkJbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gKwl9 Cj4gPiArCj4gPiArCXJldCA9IGNvbXAtPm9wcy0+dmVyaWZ5X3JlY2VpdmVyX2NlcnRfcHJlcGFy ZV9rbShjb21wLT5tZWlfZGV2LCBkYXRhLAo+ID4gKwkJCQkJCQkgcnhfY2VydCwgcGFpcmVkLAo+ ID4gKwkJCQkJCQkgZWtfcHViX2ttLCBtc2dfc3opOwo+ID4gKwlpZiAocmV0IDwgMCkKPiA+ICsJ CURSTV9ERUJVR19LTVMoIlZlcmlmeSByeF9jZXJ0IGZhaWxlZC4gJWRcbiIsIHJldCk7Cj4gPiAr CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gPiArCj4gPiArCXJl dHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQp KSBpbnQKPiA+ICtoZGNwMl92ZXJpZnlfaHByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvciwKPiA+ICsJCSAgICBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfaHByaW1lICpyeF9ocHJp bWUpCj4gPiArewo+ID4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9y LT5oZGNwLnBvcnRfZGF0YTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ICsJc3RydWN0IGk5MTVfaGRjcF9j b21wX21hc3RlciAqY29tcDsKPiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9t YXN0ZXI7Cj4gPiArCj4gPiArCWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7Cj4gPiArCQltdXRl eF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0ID0gY29tcC0+b3BzLT52ZXJpZnlfaHByaW1lKGNv bXAtPm1laV9kZXYsIGRhdGEsIHJ4X2hwcmltZSk7Cj4gPiArCWlmIChyZXQgPCAwKQo+ID4gKwkJ RFJNX0RFQlVHX0tNUygiVmVyaWZ5IGhwcmltZSBmYWlsZWQuICVkXG4iLCByZXQpOwo+ID4gKwlt dXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwo+ID4gKwlyZXR1 cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkg aW50Cj4gPiAraGRjcDJfc3RvcmVfcGFpcmluZ19pbmZvKHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvciwKPiA+ICsJCQkgc3RydWN0IGhkY3AyX2FrZV9zZW5kX3BhaXJpbmdfaW5mbyAq cGFpcmluZ19pbmZvKQo+ID4gK3sKPiA+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0g JmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gPiArCXN0cnVjdCBp OTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7Cj4gPiArCWludCByZXQ7Cj4gPiArCj4gPiArCW11 dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwljb21wID0gZGV2X3By aXYtPmhkY3BfbWFzdGVyOwo+ID4gKwo+ID4gKwlpZiAoIWNvbXAgfHwgIWNvbXAtPm9wcykgewo+ ID4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiA+ICsJCXJl dHVybiAtRUlOVkFMOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldCA9IGNvbXAtPm9wcy0+c3RvcmVf cGFpcmluZ19pbmZvKGNvbXAtPm1laV9kZXYsIGRhdGEsIHBhaXJpbmdfaW5mbyk7Cj4gPiArCWlm IChyZXQgPCAwKQo+ID4gKwkJRFJNX0RFQlVHX0tNUygiU3RvcmUgcGFpcmluZyBpbmZvIGZhaWxl ZC4gJWRcbiIsIHJldCk7Cj4gPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9t dXRleCk7Cj4gPiArCj4gPiArCXJldHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBf X2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKPiA+ICtoZGNwMl9wcmVwYXJlX2xjX2luaXQoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gKwkJICAgICAgc3RydWN0IGhkY3Ay X2xjX2luaXQgKmxjX2luaXQpCj4gPiArewo+ID4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRh dGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ICsJc3Ry dWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKPiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gPiArCWNvbXAgPSBk ZXZfcHJpdi0+aGRjcF9tYXN0ZXI7Cj4gPiArCj4gPiArCWlmICghY29tcCB8fCAhY29tcC0+b3Bz KSB7Cj4gPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ID4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0ID0gY29tcC0+b3BzLT5p bml0aWF0ZV9sb2NhbGl0eV9jaGVjayhjb21wLT5tZWlfZGV2LCBkYXRhLCBsY19pbml0KTsKPiA+ ICsJaWYgKHJldCA8IDApCj4gPiArCQlEUk1fREVCVUdfS01TKCJQcmVwYXJlIGxjX2luaXQgZmFp bGVkLiAlZFxuIiwgcmV0KTsKPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21w X211dGV4KTsKPiA+ICsKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGlj IF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAo+ID4gK2hkY3AyX3ZlcmlmeV9scHJpbWUoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gKwkJICAgIHN0cnVjdCBoZGNwMl9s Y19zZW5kX2xwcmltZSAqcnhfbHByaW1lKQo+ID4gK3sKPiA+ICsJc3RydWN0IGhkY3BfcG9ydF9k YXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7Cj4gPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4g PiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7Cj4gPiArCWludCByZXQ7Cj4g PiArCj4gPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwlj b21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOwo+ID4gKwo+ID4gKwlpZiAoIWNvbXAgfHwgIWNv bXAtPm9wcykgewo+ID4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4 KTsKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldCA9IGNvbXAt Pm9wcy0+dmVyaWZ5X2xwcmltZShjb21wLT5tZWlfZGV2LCBkYXRhLCByeF9scHJpbWUpOwo+ID4g KwlpZiAocmV0IDwgMCkKPiA+ICsJCURSTV9ERUJVR19LTVMoIlZlcmlmeSBMX1ByaW1lIGZhaWxl ZC4gJWRcbiIsIHJldCk7Cj4gPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9t dXRleCk7Cj4gPiArCj4gPiArCXJldHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBf X2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQo+ID4gK2ludCBoZGNwMl9wcmVwYXJlX3NrZXkoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gKwkJICAgICAgIHN0cnVjdCBoZGNwMl9z a2Vfc2VuZF9la3MgKnNrZV9kYXRhKQo+ID4gK3sKPiA+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRh ICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7Cj4gPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gPiAr CXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7Cj4gPiArCWludCByZXQ7Cj4gPiAr Cj4gPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwljb21w ID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOwo+ID4gKwo+ID4gKwlpZiAoIWNvbXAgfHwgIWNvbXAt Pm9wcykgewo+ID4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsK PiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldCA9IGNvbXAtPm9w cy0+Z2V0X3Nlc3Npb25fa2V5KGNvbXAtPm1laV9kZXYsIGRhdGEsIHNrZV9kYXRhKTsKPiA+ICsJ aWYgKHJldCA8IDApCj4gPiArCQlEUk1fREVCVUdfS01TKCJHZXQgc2Vzc2lvbiBrZXkgZmFpbGVk LiAlZFxuIiwgcmV0KTsKPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211 dGV4KTsKPiA+ICsKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIF9f YXR0cmlidXRlX18oKHVudXNlZCkpIGludAo+ID4gK2hkY3AyX3ZlcmlmeV9yZXBfdG9wb2xvZ3lf cHJlcGFyZV9hY2soc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gKwkJCQkg ICAgICBzdHJ1Y3QgaGRjcDJfcmVwX3NlbmRfcmVjZWl2ZXJpZF9saXN0Cj4gPiArCQkJCQkJCQkq cmVwX3RvcG9sb2d5LAo+ID4gKwkJCQkgICAgICBzdHJ1Y3QgaGRjcDJfcmVwX3NlbmRfYWNrICpy ZXBfc2VuZF9hY2spCj4gPiArewo+ID4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAm Y29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ICsJc3RydWN0IGk5 MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKPiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gPiArCWNvbXAgPSBkZXZfcHJp di0+aGRjcF9tYXN0ZXI7Cj4gPiArCj4gPiArCWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7Cj4g PiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0ID0gY29tcC0+b3BzLT5yZXBlYXRl cl9jaGVja19mbG93X3ByZXBhcmVfYWNrKGNvbXAtPm1laV9kZXYsIGRhdGEsCj4gPiArCQkJCQkJ CSByZXBfdG9wb2xvZ3ksCj4gPiArCQkJCQkJCSByZXBfc2VuZF9hY2spOwo+ID4gKwlpZiAocmV0 IDwgMCkKPiA+ICsJCURSTV9ERUJVR19LTVMoIlZlcmlmeSByZXAgdG9wb2xvZ3kgZmFpbGVkLiAl ZFxuIiwgcmV0KTsKPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4 KTsKPiA+ICsKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIF9fYXR0 cmlidXRlX18oKHVudXNlZCkpIGludAo+ID4gK2hkY3AyX3ZlcmlmeV9tcHJpbWUoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gKwkJICAgIHN0cnVjdCBoZGNwMl9yZXBfc3Ry ZWFtX3JlYWR5ICpzdHJlYW1fcmVhZHkpCj4gPiArewo+ID4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2Rh dGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKPiA+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKPiA+ICsJaW50IHJldDsKPiA+ ICsKPiA+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gPiArCWNv bXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7Cj4gPiArCj4gPiArCWlmICghY29tcCB8fCAhY29t cC0+b3BzKSB7Cj4gPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgp Owo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0ID0gY29tcC0+ b3BzLT52ZXJpZnlfbXByaW1lKGNvbXAtPm1laV9kZXYsIGRhdGEsIHN0cmVhbV9yZWFkeSk7Cj4g PiArCWlmIChyZXQgPCAwKQo+ID4gKwkJRFJNX0RFQlVHX0tNUygiVmVyaWZ5IG1wcmltZSBmYWls ZWQuICVkXG4iLCByZXQpOwo+ID4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBf bXV0ZXgpOwo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMg X19hdHRyaWJ1dGVfXygodW51c2VkKSkKPiA+ICtpbnQgaGRjcDJfYXV0aGVudGljYXRlX3BvcnQo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gK3sKPiA+ICsJc3RydWN0IGhk Y3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7Cj4gPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNl LmRldik7Cj4gPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7Cj4gPiArCWlu dCByZXQ7Cj4gPiArCj4gPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgp Owo+ID4gKwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOwo+ID4gKwo+ID4gKwlpZiAoIWNv bXAgfHwgIWNvbXAtPm9wcykgewo+ID4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9j b21wX211dGV4KTsKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJl dCA9IGNvbXAtPm9wcy0+ZW5hYmxlX2hkY3BfYXV0aGVudGljYXRpb24oY29tcC0+bWVpX2Rldiwg ZGF0YSk7Cj4gPiArCWlmIChyZXQgPCAwKQo+ID4gKwkJRFJNX0RFQlVHX0tNUygiRW5hYmxlIGhk Y3AgYXV0aCBmYWlsZWQuICVkXG4iLCByZXQpOwo+ID4gKwltdXRleF91bmxvY2soJmRldl9wcml2 LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKPiA+ICtpbnQgaGRjcDJfY2xvc2Vf bWVpX3Nlc3Npb24oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gK3sKPiA+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3It PmJhc2UuZGV2KTsKPiA+ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKPiA+ ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9t dXRleCk7Cj4gPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7Cj4gPiArCj4gPiArCWlm ICghY29tcCB8fCAhY29tcC0+b3BzKSB7Cj4gPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5o ZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiArCX0KPiA+ICsKPiA+ ICsJcmV0ID0gY29tcC0+b3BzLT5jbG9zZV9oZGNwX3Nlc3Npb24oY29tcC0+bWVpX2RldiwKPiA+ ICsJCQkJCSAgICAgJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGEpOwo+ID4gKwltdXRleF91bmxv Y2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0Owo+ ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKPiA+ICtpbnQg aGRjcDJfZGVhdXRoZW50aWNhdGVfcG9ydChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IpCj4gPiArewo+ID4gKwlyZXR1cm4gaGRjcDJfY2xvc2VfbWVpX3Nlc3Npb24oY29ubmVjdG9y KTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBpOTE1X2hkY3BfY29tcG9uZW50X2JpbmQo c3RydWN0IGRldmljZSAqaTkxNV9rZGV2LAo+ID4gKwkJCQkgICAgc3RydWN0IGRldmljZSAqbWVp X2tkZXYsIHZvaWQgKmRhdGEpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBrZGV2X3RvX2k5MTUoaTkxNV9rZGV2KTsKPiA+ICsKPiA+ICsJRFJNX0RFQlVH KCJJOTE1IEhEQ1AgY29tcCBiaW5kXG4iKTsKPiA+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhk Y3BfY29tcF9tdXRleCk7Cj4gPiArCWRldl9wcml2LT5oZGNwX21hc3RlciA9IChzdHJ1Y3QgaTkx NV9oZGNwX2NvbXBfbWFzdGVyICopZGF0YTsKPiA+ICsJZGV2X3ByaXYtPmhkY3BfbWFzdGVyLT5t ZWlfZGV2ID0gbWVpX2tkZXY7Cj4gPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29t cF9tdXRleCk7Cj4gPiArCj4gPiArCXJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMg dm9pZCBpOTE1X2hkY3BfY29tcG9uZW50X3VuYmluZChzdHJ1Y3QgZGV2aWNlICppOTE1X2tkZXYs Cj4gPiArCQkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlICptZWlfa2Rldiwgdm9pZCAqZGF0YSkKPiA+ ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfdG9faTkx NShpOTE1X2tkZXYpOwo+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5k cm07Cj4gPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcjsKPiA+ICsJ c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiA+ICsJc3RydWN0IGRybV9jb25uZWN0 b3JfbGlzdF9pdGVyIGNvbm5faXRlcjsKPiA+ICsKPiA+ICsJRFJNX0RFQlVHKCJJOTE1IEhEQ1Ag Y29tcCB1bmJpbmRcbiIpOwo+ID4gKwo+ID4gKwkvKiBPbmNlIHRoZSBjb21wb25lbnQgaXMgdW5i aW5kLCBEaXNhYmxlIEhEQ1AyLjIgb24gYWxsIGNvbm5lY3RvcnMgKi8KPiA+ICsJZHJtX2Nvbm5l Y3Rvcl9saXN0X2l0ZXJfYmVnaW4oZGV2LCAmY29ubl9pdGVyKTsKPiA+ICsJZHJtX2Zvcl9lYWNo X2Nvbm5lY3Rvcl9pdGVyKGNvbm5lY3RvciwgJmNvbm5faXRlcikgewo+ID4gKwkJaW50ZWxfY29u bmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gPiArCQkJaW50ZWxfaGRj cF9kaXNhYmxlKGludGVsX2Nvbm5lY3Rvcik7Cj4gPiArCX0KPiA+ICsJZHJtX2Nvbm5lY3Rvcl9s aXN0X2l0ZXJfZW5kKCZjb25uX2l0ZXIpOwo+IAo+IEkgcGxheWVkIHRoaXMgdGhyb3VnaCwgYW5k IEkgdGhpbmsgd2UgaGF2ZSBhIGJ1ZyBoZXJlLgo+IAo+IDEuIFVzZXJzcGFjZSBhc2tzIGZvciBo ZGNwLCBzZXRzIGNvbm5lY3Rvcl9zdGF0ZS0+Y29udGVudF9wcm90ZWN0aW9uIHRvCj4gREVTSVJF RAo+IDIuIGhkY3AgaXMgZW5hYmxlZCwgdXNlcnNwYWNlIHZpc2libGUgdmFsdWUgaXMgbm93IEVO QUJMRUQKPiAyLiBtZWkgdW5sb2Fkcwo+IDMuIHdlIGRpc2FibGUgY29udGVudCBwcm90ZWN0aW9u IGhlcmUKPiA0LiBoZGNwLT52YWx1ZSBpcyBzZXQgdG8gVU5ERVNJUkVECj4gNS4gaW50ZWxfaGRj cF9wcm9wX3dvcmsgZG9lcyBfbm90XyB1cGRhdGUKPiBjb25uZWN0b3Jfc3RhdGUtPmNvbnRlbnRf cHJvdGVjdGlvbiAodGhpcyBpcyBjb3JyZWN0LCBiZWNhdXNlIG90aGVyd2lzZQo+IGRwbXMgb2Zm L29uIHdvdWxkIGJyZWFrIGFuZCB3ZSB3b3VsZCBub3QgdHJ5IHRvIHJlc3RvcmUpCj4gNi4gVXNl cnNwYWNlIHN0aWxsIHNlZXMgRU5BQkxFRCwgd2hpY2ggaXMgd3JvbmcKPiAKPiBJIHRoaW5rIHRo ZSBiZXR0ZXIgc29sdXRpb24gaXMgdG8gbm90IGNhbGwgaW50ZWxfaGRjcF9kaXNhYmxlIGhlcmUg YXQgYWxsLAo+IGJ1dCBpbnN0ZWFkIHdhaXQgZm9yIHRoZSBsaW5rIHN0YXR1cyBjaGVjayB3b3Jr IHRvIG5vdGljZSB0aGF0IE1FIGlzIGdvbmUsCj4gd2hpY2ggd2lsbCB0aGUgY29ycmVjdGx5IGNo YW5nZSBzdGF0dXMgZnJvbSBFTkFCTEVEIHRvIERFU0lSRUQuCj4gCj4gU28ganVzdCB0aGUgYmVs b3cgY29kZSBpcyBuZWVkZWQgSSB0aGluawo+IAo+IE90aGVyd2lzZSBsb29rcyBnb29kIHRvIG1l LCB3aXRoIHRoZSBlYm92ZSBsb29wIHJlbW92ZWQ6Cj4gCj4gUmV2aWV3ZWQtYnk6IERhbmllbCBW ZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gCj4gCj4gPiArCj4gPiArCW11dGV4X2xv Y2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwlkZXZfcHJpdi0+aGRjcF9tYXN0 ZXIgPSBOVUxMOwo+ID4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgp Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgaTkx NV9oZGNwX2NvbXBvbmVudF9vcHMgPSB7Cj4gPiArCS5iaW5kICAgPSBpOTE1X2hkY3BfY29tcG9u ZW50X2JpbmQsCj4gPiArCS51bmJpbmQgPSBpOTE1X2hkY3BfY29tcG9uZW50X3VuYmluZCwKPiA+ ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgaW5pdGlhbGl6ZV9oZGNwX3BvcnRfZGF0YShzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiArewo+ID4gKwlzdHJ1Y3QgaW50ZWxf aGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7Cj4gPiArCXN0cnVjdCBoZGNwX3BvcnRfZGF0 YSAqZGF0YSA9ICZoZGNwLT5wb3J0X2RhdGE7Cj4gPiArCj4gPiArCWRhdGEtPnBvcnQgPSBjb25u ZWN0b3ItPmVuY29kZXItPnBvcnQ7Cj4gPiArCWRhdGEtPnBvcnRfdHlwZSA9ICh1OClIRENQX1BP UlRfVFlQRV9JTlRFR1JBVEVEOwo+ID4gKwlkYXRhLT5wcm90b2NvbCA9ICh1OCloZGNwLT5zaGlt LT5wcm90b2NvbDsKPiA+ICsKPiA+ICsJZGF0YS0+ayA9IDE7Cj4gPiArCWlmICghZGF0YS0+c3Ry ZWFtcykKPiA+ICsJCWRhdGEtPnN0cmVhbXMgPSBrY2FsbG9jKGRhdGEtPmssCj4gPiArCQkJCQlz aXplb2Yoc3RydWN0IGhkY3AyX3N0cmVhbWlkX3R5cGUpLAo+ID4gKwkJCQkJR0ZQX0tFUk5FTCk7 Cj4gPiArCWlmICghZGF0YS0+c3RyZWFtcykgewo+ID4gKwkJRFJNX0VSUk9SKCJPdXQgb2YgTWVt b3J5XG4iKTsKPiA+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4gKwl9Cj4gPiArCj4gPiArCWRhdGEt PnN0cmVhbXNbMF0uc3RyZWFtX2lkID0gMDsKPiA+ICsJZGF0YS0+c3RyZWFtc1swXS5zdHJlYW1f dHlwZSA9IGhkY3AtPmNvbnRlbnRfdHlwZTsKPiA+ICsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ ID4gKwo+ID4gIHN0YXRpYyBib29sIGlzX2hkY3AyX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgewo+ID4gIAlpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0lO VEVMX01FSV9IRENQKSkKPiA+IEBAIC04NDMsOSArMTE5OSw0MiBAQCBzdGF0aWMgYm9vbCBpc19o ZGNwMl9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gIAo+ ID4gIHN0YXRpYyB2b2lkIGludGVsX2hkY3AyX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ID4gIHsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ICAJc3RydWN0IGludGVsX2hkY3Ag KmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ID4gKwlib29sIGFkZF9jb21wb25lbnQgPSBmYWxz ZTsKPiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJcmV0ID0gaW5pdGlhbGl6ZV9oZGNwX3BvcnRf ZGF0YShjb25uZWN0b3IpOwo+ID4gKwlpZiAocmV0KSB7Cj4gPiArCQlEUk1fREVCVUdfS01TKCJN ZWkgaGRjcCBkYXRhIGluaXQgZmFpbGVkXG4iKTsKPiA+ICsJCXJldHVybjsKPiA+ICsJfQo+ID4g Kwo+ID4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiA+ICsJLyoK PiA+ICsJICogQ29tcG9uZW50IGZvciBtZWkgaXMgY29tbW9uIGFjcm9zcyB0aGUgY29ubmVjdG9y Lgo+ID4gKwkgKiBBZGRpbmcgdGhlIGNvbXBvbmVudCBvbmNlIGlzIHN1ZmZpY2llbnQuCj4gPiAr CSAqLwo+ID4gKwlpZiAoIWRldl9wcml2LT5oZGNwX2NvbXBfYWRkZWQpIHsKPiA+ICsJCWRldl9w cml2LT5oZGNwX2NvbXBfYWRkZWQgPSB0cnVlOwo+ID4gKwkJYWRkX2NvbXBvbmVudCA9IHRydWU7 Cj4gPiArCX0KPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsK PiA+ICsKPiA+ICsJaWYgKGFkZF9jb21wb25lbnQpIHsKClRoaXMgb25lIChhbmQgdGhlIHNpbWls YXIgY29kZSBpbiB0aGUgZGVzdHJveSBwYXRoKSBpcyBhIGJpdCBhd2t3YXJkIGZvcgp0d28gcmVh c29uczoKLSBCZWNhdXNlIG9mIGRwIG1zdCBob3RwbHVnL3VucGx1ZyB5b3UgbmVlZCBhIGxvY2sg dG8gbWFrZSBzdXJlIHdlCiAgcmVnaXN0ZXIgb25seSBvbmNlLCB1c3VhbGx5IHNldHVwICYgdGVh cmRvd24gY29kZSBkb2Vzbid0IG5lZWQgYW55CiAgbG9ja2luZyBhdCBhbGwgYmVjYXVzZSBpdCdz IGFsbCBzaW5nbGUtdGhyZWFkZWQuCi0gLT5oZGNwX2NvbXBfYWRkZWQgYm9pbHMgZG93biB0byAi aGF2ZSB3ZSBsb2FkZWQgaTkxNSIuCgpJIHRoaW5rIGl0IHdvdWxkIGJlIG5pY2UgdG8gaGF2ZSBh IHNlcGFyYXRlIGludGVsX2hkY3BfbWVpX2NvbXBfaW5pdC9maW5pLAp3aGljaCBpcyBjYWxsZWQg b25seSBvbmNlIChmcm9tIG1vZGVfY29uZmlnIHNldHVwL3RlYXJkb3duIGZ1bmN0aW9ucwpwZXJo YXBzKSBpbiB0aGUgZHJpdmVyIGxvYWQvdW5sb2FkIGNvZGUsIHdoaWNoIHdvdWxkIGF2b2lkIGJv dGggaXNzdWVzLgoKQmVjYXVzZSB0aGUgY29kZSBpcyBhbHJlYWR5IHByb3RlY3RlZCB3aXRoIHRo ZSBtdXRleCBhZ2FpbnN0IHRoZSBtZWkgaGRjcApkcml2ZXIgYXBwZWFyaW5nL2Rpc2FwcGVhcmlu ZyBhbnkgdGltZSBpdCB3YW50cyB0byB0aGlzIHdpbGwgbm90IGNhdXNlIGFuCmFkZGl0aW9uYWwg cHJvYmxlbS4gU28gd291bGQgYmUgbmljZSB0byBzaW1wbGlmeS4KCkNoZWVycywgRGFuaWVsCgo+ ID4gKwkJcmV0ID0gY29tcG9uZW50X2FkZF90eXBlZChkZXZfcHJpdi0+ZHJtLmRldiwKPiA+ICsJ CQkJCSAgJmk5MTVfaGRjcF9jb21wb25lbnRfb3BzLAo+ID4gKwkJCQkJICBJOTE1X0NPTVBPTkVO VF9IRENQKTsKPiA+ICsJCWlmIChyZXQgPCAwKSB7Cj4gPiArCQkJRFJNX0RFQlVHX0tNUygiRmFp bGVkIGF0IGNvbXBvbmVudCBhZGQoJWQpXG4iLCByZXQpOwo+ID4gKwkJCW11dGV4X2xvY2soJmRl dl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ID4gKwkJCWRldl9wcml2LT5oZGNwX2NvbXBfYWRk ZWQgPSBmYWxzZTsKPiA+ICsJCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0 ZXgpOwo+ID4gKwkJCWtmcmVlKGhkY3AtPnBvcnRfZGF0YS5zdHJlYW1zKTsKPiA+ICsJCQlyZXR1 cm47Cj4gPiArCQl9Cj4gPiArCX0KPiA+ICAKPiA+IC0JLyogVE9ETzogTUVJIGludGVyZmFjZSBu ZWVkcyB0byBiZSBpbml0aWFsaXplZCBoZXJlICovCj4gPiAgCWhkY3AtPmhkY3AyX3N1cHBvcnRl ZCA9IHRydWU7Cj4gPiAgfQo+ID4gIAo+ID4gQEAgLTkxNyw2ICsxMzA2LDM4IEBAIGludCBpbnRl bF9oZGNwX2Rpc2FibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gIAly ZXR1cm4gcmV0Owo+ID4gIH0KPiA+ICAKPiA+ICt2b2lkIGludGVsX2hkY3BfY2xlYW51cChzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ID4g Kwo+ID4gKwlpZiAoIWNvbm5lY3Rvci0+aGRjcC5zaGltKQo+ID4gKwkJcmV0dXJuOwo+ID4gKwo+ ID4gKwltdXRleF9sb2NrKCZjb25uZWN0b3ItPmhkY3AubXV0ZXgpOwo+ID4gKwlpZiAoIWNvbm5l Y3Rvci0+aGRjcC5oZGNwMl9zdXBwb3J0ZWQpIHsKPiA+ICsJCW11dGV4X3VubG9jaygmY29ubmVj dG9yLT5oZGNwLm11dGV4KTsKPiA+ICsJCXJldHVybjsKPiA+ICsJfQo+ID4gKwo+ID4gKwlrZnJl ZShjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhLnN0cmVhbXMpOwo+ID4gKwltdXRleF9sb2NrKCZk ZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiA+ICsJLyoKPiA+ICsJICogQ29tcG9uZW50IGZv ciBtZWkgaXMgY29tbW9uIGFjcm9zcyB0aGUgY29ubmVjdG9yLgo+ID4gKwkgKiBSZW1vdmluZyB0 aGUgY29tcG9uZW50IG9uY2UgaXMgc3VmZmljaWVudC4KPiA+ICsJICovCj4gPiArCWlmICghZGV2 X3ByaXYtPmhkY3BfY29tcF9hZGRlZCkgewo+ID4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ aGRjcF9jb21wX211dGV4KTsKPiA+ICsJCW11dGV4X3VubG9jaygmY29ubmVjdG9yLT5oZGNwLm11 dGV4KTsKPiA+ICsJCXJldHVybjsKPiA+ICsJfQo+ID4gKwo+ID4gKwlkZXZfcHJpdi0+aGRjcF9j b21wX2FkZGVkID0gZmFsc2U7Cj4gPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29t cF9tdXRleCk7Cj4gPiArCW11dGV4X3VubG9jaygmY29ubmVjdG9yLT5oZGNwLm11dGV4KTsKPiA+ ICsKPiA+ICsJY29tcG9uZW50X2RlbChkZXZfcHJpdi0+ZHJtLmRldiwgJmk5MTVfaGRjcF9jb21w b25lbnRfb3BzKTsKPiA+ICt9Cj4gPiArCj4gPiAgdm9pZCBpbnRlbF9oZGNwX2F0b21pY19jaGVj ayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gIAkJCSAgICAgc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9zdGF0ZSwKPiA+ICAJCQkgICAgIHN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpuZXdfc3RhdGUpCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vaTkx NV9jb21wb25lbnQuaCBiL2luY2x1ZGUvZHJtL2k5MTVfY29tcG9uZW50LmgKPiA+IGluZGV4IDcy ZmJiMDM3ZjliMy4uZjM4NTFiYTNlNGMzIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9kcm0vaTkx NV9jb21wb25lbnQuaAo+ID4gKysrIGIvaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaAo+ID4g QEAgLTI0LDEwICsyNCwxMyBAQAo+ID4gICNpZm5kZWYgX0k5MTVfQ09NUE9ORU5UX0hfCj4gPiAg I2RlZmluZSBfSTkxNV9DT01QT05FTlRfSF8KPiA+ICAKPiA+ICsjaW5jbHVkZSA8bGludXgvZGV2 aWNlLmg+Cj4gPiArCj4gPiAgI2luY2x1ZGUgImRybV9hdWRpb19jb21wb25lbnQuaCIKPiA+ICAK PiA+ICBlbnVtIGk5MTVfY29tcG9uZW50X3R5cGUgewo+ID4gIAlJOTE1X0NPTVBPTkVOVF9BVURJ TyA9IDEsCj4gPiArCUk5MTVfQ09NUE9ORU5UX0hEQ1AsCj4gPiAgfTsKPiA+ICAKPiA+ICAvKiBN QVhfUE9SVCBpcyB0aGUgbnVtYmVyIG9mIHBvcnQKPiA+IC0tIAo+ID4gMi43LjQKPiA+IAo+IAo+ IC0tIAo+IERhbmllbCBWZXR0ZXIKPiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRp b24KPiBodHRwOi8vYmxvZy5mZndsbC5jaAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5n aW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=