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:40:08 +0100 Message-ID: <20190207194007.GC3271@phenom.ffwll.local> 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" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1549487071-15343-9-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ramalingam C Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, tomas.winkler@intel.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBGZWIgMDcsIDIwMTkgYXQgMDI6MzM6NTdBTSArMDUzMCwgUmFtYWxpbmdhbSBDIHdy b3RlOgo+IERlZmluaW5nIHRoZSBtZWktaTkxNSBpbnRlcmZhY2UgZnVuY3Rpb25zIGFuZCBpbml0 aWFsaXphdGlvbiBvZgo+IHRoZSBpbnRlcmZhY2UuCj4gCj4gdjI6Cj4gICBBZGp1c3QgdG8gdGhl IG5ldyBpbnRlcmZhY2UgY2hhbmdlcy4gW1RvbWFzXQo+ICAgQWRkZWQgZnVydGhlciBkZWJ1ZyBs b2dzIGZvciB0aGUgZmFpbHVyZXMgYXQgTUVJIGkvZi4KPiAgIHBvcnQgaW4gaGRjcF9wb3J0IGRh dGEgaXMgZXF1aXBwZWQgdG8gaGFuZGxlIC12ZSB2YWx1ZXMuCj4gdjM6Cj4gICBtZWkgY29tcCBp cyBtYXRjaGVkIGZvciBnbG9iYWwgaTkxNSBjb21wIG1hc3Rlci4gW0RhbmllbF0KPiAgIEluIGhk Y3Bfc2hpbSBoZGNwX3Byb3RvY29sKCkgaXMgcmVwbGFjZWQgd2l0aCBjb25zdCB2YXJpYWJsZS4g W0RhbmllbF0KPiAgIG1laSB3cmFwcGVycyBhcmUgYWRqdXN0ZWQgYXMgcGVyIHRoZSBpL2YgY2hh bmdlIFtEYW5pZWxdCj4gdjQ6Cj4gICBwb3J0IGluaXRpYWxpemF0aW9uIGlzIGRvbmUgb25seSBh dCBoZGNwMl9pbml0IG9ubHkgW0RhbnZldF0KPiB2NToKPiAgIEk5MTUgcmVnaXN0ZXJzIGEgc3Vi Y29tcG9uZW50IHRvIGJlIG1hdGNoZWQgd2l0aCBtZWlfaGRjcCBbRGFuaWVsXQo+IHY2Ogo+ICAg SERDUF9kaXNhYmxlIGZvciBhbGwgY29ubmVjdG9ycyBpbmNhc2Ugb2YgY29tcF91bmJpbmQuCj4g ICBUZWFyIGRvd24gSERDUCBjb21wIGludGVyZmFjZSBhdCBpOTE1X3VubG9hZCBbRGFuaWVsXQo+ IAo+IFNpZ25lZC1vZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4K PiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgfCAgIDEgKwo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICB8ICAgNyArCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nvbm5lY3Rvci5jIHwgICAyICsKPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgfCAgIDYgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9oZGNwLmMgICAgICB8IDQyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0KPiAgaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaCAgICAgICAgICAgfCAgIDMgKwo+ICA2 IGZpbGVzIGNoYW5nZWQsIDQ0MSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggN2RlOTA3MDFmNmYxLi45YzQyMThiNWQxNTMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtOTA0LDYgKzkwNCw3IEBAIHN0YXRpYyBp bnQgaTkxNV9kcml2ZXJfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAltdXRleF9pbml0KCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+ICAJbXV0ZXhfaW5pdCgm ZGV2X3ByaXYtPndtLndtX211dGV4KTsKPiAgCW11dGV4X2luaXQoJmRldl9wcml2LT5wcHNfbXV0 ZXgpOwo+ICsJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gIAo+ICAJ aTkxNV9tZW1jcHlfaW5pdF9lYXJseShkZXZfcHJpdik7Cj4gIAlpbnRlbF9ydW50aW1lX3BtX2lu aXRfZWFybHkoZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGEyMjkz MTUyY2I2YS4uZTNkMDMwYjczYjViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAg LTU1LDYgKzU1LDcgQEAKPiAgI2luY2x1ZGUgPGRybS9kcm1fdXRpbC5oPgo+ICAjaW5jbHVkZSA8 ZHJtL2RybV9kc2MuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+Cj4gKyNpbmNs dWRlIDxkcm0vaTkxNV9tZWlfaGRjcF9pbnRlcmZhY2UuaD4KPiAgCj4gICNpbmNsdWRlICJpOTE1 X2ZpeGVkLmgiCj4gICNpbmNsdWRlICJpOTE1X3BhcmFtcy5oIgo+IEBAIC0yMDQzLDYgKzIwNDQs MTIgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAKPiAgCXN0cnVjdCBpOTE1X3BtdSBw bXU7Cj4gIAo+ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqaGRjcF9tYXN0ZXI7Cj4g Kwlib29sIGhkY3BfY29tcF9hZGRlZDsKPiArCj4gKwkvKiBNdXRleCB0byBwcm90ZWN0IHRoZSBh Ym92ZSBoZGNwIGNvbXBvbmVudCByZWxhdGVkIHZhbHVlcy4gKi8KPiArCXN0cnVjdCBtdXRleCBo ZGNwX2NvbXBfbXV0ZXg7Cj4gKwo+ICAJLyoKPiAgCSAqIE5PVEU6IFRoaXMgaXMgdGhlIGRyaTEv dW1zIGR1bmdlb24sIGRvbid0IGFkZCBzdHVmZiBoZXJlLiBZb3VyIHBhdGNoCj4gIAkgKiB3aWxs IGJlIHJlamVjdGVkLiBJbnN0ZWFkIGxvb2sgZm9yIGEgYmV0dGVyIHBsYWNlLgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb25uZWN0b3IuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Nvbm5lY3Rvci5jCj4gaW5kZXggZWUxNjc1ODc0N2M1Li42NmVkM2Vl NTk5OGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29ubmVjdG9y LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb25uZWN0b3IuYwo+IEBAIC04 OCw2ICs4OCw4IEBAIHZvaWQgaW50ZWxfY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcikKPiAgCj4gIAlrZnJlZShpbnRlbF9jb25uZWN0b3ItPmRldGVjdF9l ZGlkKTsKPiAgCj4gKwlpbnRlbF9oZGNwX2NsZWFudXAoaW50ZWxfY29ubmVjdG9yKTsKPiArCj4g IAlpZiAoIUlTX0VSUl9PUl9OVUxMKGludGVsX2Nvbm5lY3Rvci0+ZWRpZCkpCj4gIAkJa2ZyZWUo aW50ZWxfY29ubmVjdG9yLT5lZGlkKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBp bmRleCAwMzBkOTYyNjk3ZGQuLmI1YzU0YzY4ODI1NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gQEAgLTQxLDYgKzQxLDcgQEAKPiAgI2luY2x1ZGUgPGRybS9kcm1fcmVjdC5oPgo+ ICAjaW5jbHVkZSA8ZHJtL2RybV92YmxhbmsuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWlj Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vaTkxNV9tZWlfaGRjcF9pbnRlcmZhY2UuaD4KPiAgI2luY2x1 ZGUgPG1lZGlhL2NlYy1ub3RpZmllci5oPgo+ICAKPiAgc3RydWN0IGRybV9wcmludGVyOwo+IEBA IC0zODUsNiArMzg2LDkgQEAgc3RydWN0IGludGVsX2hkY3Bfc2hpbSB7Cj4gIAkvKiBEZXRlY3Rz IHBhbmVsJ3MgaGRjcCBjYXBhYmlsaXR5LiBUaGlzIGlzIG9wdGlvbmFsIGZvciBIRE1JLiAqLwo+ ICAJaW50ICgqaGRjcF9jYXBhYmxlKShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCwKPiAgCQkJICAgIGJvb2wgKmhkY3BfY2FwYWJsZSk7Cj4gKwo+ICsJLyogSERDUCBh ZGFwdGF0aW9uKERQL0hETUkpIHJlcXVpcmVkIG9uIHRoZSBwb3J0ICovCj4gKwllbnVtIGhkY3Bf d2lyZWRfcHJvdG9jb2wgcHJvdG9jb2w7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfaGRjcCB7 Cj4gQEAgLTQwNSw2ICs0MDksNyBAQCBzdHJ1Y3QgaW50ZWxfaGRjcCB7Cj4gIAkgKiBjb250ZW50 IGNhbiBmbG93IG9ubHkgdGhyb3VnaCBhIGxpbmsgcHJvdGVjdGVkIGJ5IEhEQ1AyLjIuCj4gIAkg Ki8KPiAgCXU4IGNvbnRlbnRfdHlwZTsKPiArCXN0cnVjdCBoZGNwX3BvcnRfZGF0YSBwb3J0X2Rh dGE7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKPiBAQCAtMjA3MCw2ICsy MDc1LDcgQEAgaW50IGludGVsX2hkY3BfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpOwo+ICBpbnQgaW50ZWxfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3Rvcik7Cj4gIGJvb2wgaXNfaGRjcF9zdXBwb3J0ZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCk7Cj4gIGJvb2wgaW50ZWxfaGRj cF9jYXBhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gK3ZvaWQgaW50 ZWxfaGRjcF9jbGVhbnVwKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gIAo+ ICAvKiBpbnRlbF9wc3IuYyAqLwo+ICAjZGVmaW5lIENBTl9QU1IoZGV2X3ByaXYpIChIQVNfUFNS KGRldl9wcml2KSAmJiBkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaGRjcC5jCj4gaW5kZXggN2IxMDk3ZDc5ZmI4Li43OWY4OTc5YjkxNTAgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gQEAgLTcsOCArNywxMCBAQAo+ICAgKi8KPiAgCj4g ICNpbmNsdWRlIDxkcm0vZHJtX2hkY3AuaD4KPiArI2luY2x1ZGUgPGRybS9pOTE1X2NvbXBvbmVu dC5oPgo+ICAjaW5jbHVkZSA8bGludXgvaTJjLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9yYW5kb20u aD4KPiArI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgo+ICAKPiAgI2luY2x1ZGUgImludGVs X2Rydi5oIgo+ICAjaW5jbHVkZSAiaTkxNV9yZWcuaCIKPiBAQCAtODMyLDYgKzgzNCwzNjAgQEAg Ym9vbCBpc19oZGNwX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IGVudW0gcG9ydCBwb3J0KQo+ICAJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiBw b3J0IDwgUE9SVF9FOwo+ICB9Cj4gIAo+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkg aW50Cj4gK2hkY3AyX3ByZXBhcmVfYWtlX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yLAo+ICsJCSAgICAgICBzdHJ1Y3QgaGRjcDJfYWtlX2luaXQgKmFrZV9kYXRhKQo+ICt7 Cj4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRf ZGF0YTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29u bmVjdG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVyICpjb21w Owo+ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211 dGV4KTsKPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7Cj4gKwo+ICsJaWYgKCFjb21w IHx8ICFjb21wLT5vcHMpIHsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBf bXV0ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9IGNvbXAtPm9w cy0+aW5pdGlhdGVfaGRjcDJfc2Vzc2lvbihjb21wLT5tZWlfZGV2LCBkYXRhLCBha2VfZGF0YSk7 Cj4gKwlpZiAocmV0KQo+ICsJCURSTV9ERUJVR19LTVMoIlByZXBhcmVfYWtlX2luaXQgZmFpbGVk LiAlZFxuIiwgcmV0KTsKPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRl eCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIF9fYXR0cmlidXRlX18o KHVudXNlZCkpIGludAo+ICtoZGNwMl92ZXJpZnlfcnhfY2VydF9wcmVwYXJlX2ttKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJCXN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9j ZXJ0ICpyeF9jZXJ0LAo+ICsJCQkJYm9vbCAqcGFpcmVkLAo+ICsJCQkJc3RydWN0IGhkY3AyX2Fr ZV9ub19zdG9yZWRfa20gKmVrX3B1Yl9rbSwKPiArCQkJCXNpemVfdCAqbXNnX3N6KQo+ICt7Cj4g KwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0 YTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVj dG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVyICpjb21wOwo+ ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4 KTsKPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7Cj4gKwo+ICsJaWYgKCFjb21wIHx8 ICFjb21wLT5vcHMpIHsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0 ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9IGNvbXAtPm9wcy0+ dmVyaWZ5X3JlY2VpdmVyX2NlcnRfcHJlcGFyZV9rbShjb21wLT5tZWlfZGV2LCBkYXRhLAo+ICsJ CQkJCQkJIHJ4X2NlcnQsIHBhaXJlZCwKPiArCQkJCQkJCSBla19wdWJfa20sIG1zZ19zeik7Cj4g KwlpZiAocmV0IDwgMCkKPiArCQlEUk1fREVCVUdfS01TKCJWZXJpZnkgcnhfY2VydCBmYWlsZWQu ICVkXG4iLCByZXQpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4 KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygo dW51c2VkKSkgaW50Cj4gK2hkY3AyX3ZlcmlmeV9ocHJpbWUoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+ICsJCSAgICBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfaHByaW1lICpyeF9o cHJpbWUpCj4gK3sKPiArCXN0cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3It PmhkY3AucG9ydF9kYXRhOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9t YXN0ZXIgKmNvbXA7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5o ZGNwX2NvbXBfbXV0ZXgpOwo+ICsJY29tcCA9IGRldl9wcml2LT5oZGNwX21hc3RlcjsKPiArCj4g KwlpZiAoIWNvbXAgfHwgIWNvbXAtPm9wcykgewo+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PmhkY3BfY29tcF9tdXRleCk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0 ID0gY29tcC0+b3BzLT52ZXJpZnlfaHByaW1lKGNvbXAtPm1laV9kZXYsIGRhdGEsIHJ4X2hwcmlt ZSk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlEUk1fREVCVUdfS01TKCJWZXJpZnkgaHByaW1lIGZh aWxlZC4gJWRcbiIsIHJldCk7Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBf bXV0ZXgpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBfX2F0dHJpYnV0 ZV9fKCh1bnVzZWQpKSBpbnQKPiAraGRjcDJfc3RvcmVfcGFpcmluZ19pbmZvKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJIHN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9wYWly aW5nX2luZm8gKnBhaXJpbmdfaW5mbykKPiArewo+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpk YXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICsJc3RydWN0 IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKPiArCWludCByZXQ7Cj4gKwo+ICsJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwljb21wID0gZGV2X3ByaXYtPmhk Y3BfbWFzdGVyOwo+ICsKPiArCWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7Cj4gKwkJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCQlyZXR1cm4gLUVJTlZBTDsK PiArCX0KPiArCj4gKwlyZXQgPSBjb21wLT5vcHMtPnN0b3JlX3BhaXJpbmdfaW5mbyhjb21wLT5t ZWlfZGV2LCBkYXRhLCBwYWlyaW5nX2luZm8pOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJRFJNX0RF QlVHX0tNUygiU3RvcmUgcGFpcmluZyBpbmZvIGZhaWxlZC4gJWRcbiIsIHJldCk7Cj4gKwltdXRl eF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsKPiArCXJldHVybiByZXQ7 Cj4gK30KPiArCj4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKPiAraGRjcDJf cHJlcGFyZV9sY19pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkg ICAgICBzdHJ1Y3QgaGRjcDJfbGNfaW5pdCAqbGNfaW5pdCkKPiArewo+ICsJc3RydWN0IGhkY3Bf cG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYp Owo+ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKPiArCWludCByZXQ7Cj4g Kwo+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwljb21wID0g ZGV2X3ByaXYtPmhkY3BfbWFzdGVyOwo+ICsKPiArCWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7 Cj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXQgPSBjb21wLT5vcHMtPmluaXRpYXRlX2xvY2Fs aXR5X2NoZWNrKGNvbXAtPm1laV9kZXYsIGRhdGEsIGxjX2luaXQpOwo+ICsJaWYgKHJldCA8IDAp Cj4gKwkJRFJNX0RFQlVHX0tNUygiUHJlcGFyZSBsY19pbml0IGZhaWxlZC4gJWRcbiIsIHJldCk7 Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsKPiArCXJl dHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQK PiAraGRjcDJfdmVyaWZ5X2xwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is Cj4gKwkJICAgIHN0cnVjdCBoZGNwMl9sY19zZW5kX2xwcmltZSAqcnhfbHByaW1lKQo+ICt7Cj4g KwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0 YTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVj dG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVyICpjb21wOwo+ ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4 KTsKPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7Cj4gKwo+ICsJaWYgKCFjb21wIHx8 ICFjb21wLT5vcHMpIHsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0 ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9IGNvbXAtPm9wcy0+ dmVyaWZ5X2xwcmltZShjb21wLT5tZWlfZGV2LCBkYXRhLCByeF9scHJpbWUpOwo+ICsJaWYgKHJl dCA8IDApCj4gKwkJRFJNX0RFQlVHX0tNUygiVmVyaWZ5IExfUHJpbWUgZmFpbGVkLiAlZFxuIiwg cmV0KTsKPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwo+ ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkp Cj4gK2ludCBoZGNwMl9wcmVwYXJlX3NrZXkoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICsJCSAgICAgICBzdHJ1Y3QgaGRjcDJfc2tlX3NlbmRfZWtzICpza2VfZGF0YSkKPiAr ewo+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0 X2RhdGE7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNv bm5lY3Rvci0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29t cDsKPiArCWludCByZXQ7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9t dXRleCk7Cj4gKwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOwo+ICsKPiArCWlmICghY29t cCB8fCAhY29tcC0+b3BzKSB7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21w X211dGV4KTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXQgPSBjb21wLT5v cHMtPmdldF9zZXNzaW9uX2tleShjb21wLT5tZWlfZGV2LCBkYXRhLCBza2VfZGF0YSk7Cj4gKwlp ZiAocmV0IDwgMCkKPiArCQlEUk1fREVCVUdfS01TKCJHZXQgc2Vzc2lvbiBrZXkgZmFpbGVkLiAl ZFxuIiwgcmV0KTsKPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7 Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIF9fYXR0cmlidXRlX18oKHVu dXNlZCkpIGludAo+ICtoZGNwMl92ZXJpZnlfcmVwX3RvcG9sb2d5X3ByZXBhcmVfYWNrKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJCSAgICAgIHN0cnVjdCBoZGNwMl9y ZXBfc2VuZF9yZWNlaXZlcmlkX2xpc3QKPiArCQkJCQkJCQkqcmVwX3RvcG9sb2d5LAo+ICsJCQkJ ICAgICAgc3RydWN0IGhkY3AyX3JlcF9zZW5kX2FjayAqcmVwX3NlbmRfYWNrKQo+ICt7Cj4gKwlz dHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9y LT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVyICpjb21wOwo+ICsJ aW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsK PiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7Cj4gKwo+ICsJaWYgKCFjb21wIHx8ICFj b21wLT5vcHMpIHsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgp Owo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9IGNvbXAtPm9wcy0+cmVw ZWF0ZXJfY2hlY2tfZmxvd19wcmVwYXJlX2Fjayhjb21wLT5tZWlfZGV2LCBkYXRhLAo+ICsJCQkJ CQkJIHJlcF90b3BvbG9neSwKPiArCQkJCQkJCSByZXBfc2VuZF9hY2spOwo+ICsJaWYgKHJldCA8 IDApCj4gKwkJRFJNX0RFQlVHX0tNUygiVmVyaWZ5IHJlcCB0b3BvbG9neSBmYWlsZWQuICVkXG4i LCByZXQpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiAr Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2Vk KSkgaW50Cj4gK2hkY3AyX3ZlcmlmeV9tcHJpbWUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yLAo+ICsJCSAgICBzdHJ1Y3QgaGRjcDJfcmVwX3N0cmVhbV9yZWFkeSAqc3RyZWFtX3Jl YWR5KQo+ICt7Cj4gKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5o ZGNwLnBvcnRfZGF0YTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFz dGVyICpjb21wOwo+ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRj cF9jb21wX211dGV4KTsKPiArCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7Cj4gKwo+ICsJ aWYgKCFjb21wIHx8ICFjb21wLT5vcHMpIHsKPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5o ZGNwX2NvbXBfbXV0ZXgpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldCA9 IGNvbXAtPm9wcy0+dmVyaWZ5X21wcmltZShjb21wLT5tZWlfZGV2LCBkYXRhLCBzdHJlYW1fcmVh ZHkpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJRFJNX0RFQlVHX0tNUygiVmVyaWZ5IG1wcmltZSBm YWlsZWQuICVkXG4iLCByZXQpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21w X211dGV4KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgX19hdHRyaWJ1 dGVfXygodW51c2VkKSkKPiAraW50IGhkY3AyX2F1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpk YXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICsJc3RydWN0 IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKPiArCWludCByZXQ7Cj4gKwo+ICsJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwljb21wID0gZGV2X3ByaXYtPmhk Y3BfbWFzdGVyOwo+ICsKPiArCWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7Cj4gKwkJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCQlyZXR1cm4gLUVJTlZBTDsK PiArCX0KPiArCj4gKwlyZXQgPSBjb21wLT5vcHMtPmVuYWJsZV9oZGNwX2F1dGhlbnRpY2F0aW9u KGNvbXAtPm1laV9kZXYsIGRhdGEpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJRFJNX0RFQlVHX0tN UygiRW5hYmxlIGhkY3AgYXV0aCBmYWlsZWQuICVkXG4iLCByZXQpOwo+ICsJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4g Kwo+ICtzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKPiAraW50IGhkY3AyX2Nsb3NlX21l aV9zZXNzaW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2Uu ZGV2KTsKPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7Cj4gKwlpbnQgcmV0 Owo+ICsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsJY29t cCA9IGRldl9wcml2LT5oZGNwX21hc3RlcjsKPiArCj4gKwlpZiAoIWNvbXAgfHwgIWNvbXAtPm9w cykgewo+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gY29tcC0+b3BzLT5jbG9zZV9oZGNw X3Nlc3Npb24oY29tcC0+bWVpX2RldiwKPiArCQkJCQkgICAgICZjb25uZWN0b3ItPmhkY3AucG9y dF9kYXRhKTsKPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4g Kwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNl ZCkpCj4gK2ludCBoZGNwMl9kZWF1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvcikKPiArewo+ICsJcmV0dXJuIGhkY3AyX2Nsb3NlX21laV9zZXNzaW9uKGNv bm5lY3Rvcik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaTkxNV9oZGNwX2NvbXBvbmVudF9iaW5k KHN0cnVjdCBkZXZpY2UgKmk5MTVfa2RldiwKPiArCQkJCSAgICBzdHJ1Y3QgZGV2aWNlICptZWlf a2Rldiwgdm9pZCAqZGF0YSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0ga2Rldl90b19pOTE1KGk5MTVfa2Rldik7Cj4gKwo+ICsJRFJNX0RFQlVHKCJJOTE1IEhE Q1AgY29tcCBiaW5kXG4iKTsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0 ZXgpOwo+ICsJZGV2X3ByaXYtPmhkY3BfbWFzdGVyID0gKHN0cnVjdCBpOTE1X2hkY3BfY29tcF9t YXN0ZXIgKilkYXRhOwo+ICsJZGV2X3ByaXYtPmhkY3BfbWFzdGVyLT5tZWlfZGV2ID0gbWVpX2tk ZXY7Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpOTE1X2hkY3BfY29tcG9uZW50X3Vu YmluZChzdHJ1Y3QgZGV2aWNlICppOTE1X2tkZXYsCj4gKwkJCQkgICAgICAgc3RydWN0IGRldmlj ZSAqbWVpX2tkZXYsIHZvaWQgKmRhdGEpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGtkZXZfdG9faTkxNShpOTE1X2tkZXYpOwo+ICsJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50 ZWxfY29ubmVjdG9yOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiArCXN0 cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciBjb25uX2l0ZXI7Cj4gKwo+ICsJRFJNX0RFQlVH KCJJOTE1IEhEQ1AgY29tcCB1bmJpbmRcbiIpOwo+ICsKPiArCS8qIE9uY2UgdGhlIGNvbXBvbmVu dCBpcyB1bmJpbmQsIERpc2FibGUgSERDUDIuMiBvbiBhbGwgY29ubmVjdG9ycyAqLwo+ICsJZHJt X2Nvbm5lY3Rvcl9saXN0X2l0ZXJfYmVnaW4oZGV2LCAmY29ubl9pdGVyKTsKPiArCWRybV9mb3Jf ZWFjaF9jb25uZWN0b3JfaXRlcihjb25uZWN0b3IsICZjb25uX2l0ZXIpIHsKPiArCQlpbnRlbF9j b25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKTsKPiArCQkJaW50ZWxfaGRj cF9kaXNhYmxlKGludGVsX2Nvbm5lY3Rvcik7Cj4gKwl9Cj4gKwlkcm1fY29ubmVjdG9yX2xpc3Rf aXRlcl9lbmQoJmNvbm5faXRlcik7CgpJIHBsYXllZCB0aGlzIHRocm91Z2gsIGFuZCBJIHRoaW5r IHdlIGhhdmUgYSBidWcgaGVyZS4KCjEuIFVzZXJzcGFjZSBhc2tzIGZvciBoZGNwLCBzZXRzIGNv bm5lY3Rvcl9zdGF0ZS0+Y29udGVudF9wcm90ZWN0aW9uIHRvCkRFU0lSRUQKMi4gaGRjcCBpcyBl bmFibGVkLCB1c2Vyc3BhY2UgdmlzaWJsZSB2YWx1ZSBpcyBub3cgRU5BQkxFRAoyLiBtZWkgdW5s b2FkcwozLiB3ZSBkaXNhYmxlIGNvbnRlbnQgcHJvdGVjdGlvbiBoZXJlCjQuIGhkY3AtPnZhbHVl IGlzIHNldCB0byBVTkRFU0lSRUQKNS4gaW50ZWxfaGRjcF9wcm9wX3dvcmsgZG9lcyBfbm90XyB1 cGRhdGUKY29ubmVjdG9yX3N0YXRlLT5jb250ZW50X3Byb3RlY3Rpb24gKHRoaXMgaXMgY29ycmVj dCwgYmVjYXVzZSBvdGhlcndpc2UKZHBtcyBvZmYvb24gd291bGQgYnJlYWsgYW5kIHdlIHdvdWxk IG5vdCB0cnkgdG8gcmVzdG9yZSkKNi4gVXNlcnNwYWNlIHN0aWxsIHNlZXMgRU5BQkxFRCwgd2hp Y2ggaXMgd3JvbmcKCkkgdGhpbmsgdGhlIGJldHRlciBzb2x1dGlvbiBpcyB0byBub3QgY2FsbCBp bnRlbF9oZGNwX2Rpc2FibGUgaGVyZSBhdCBhbGwsCmJ1dCBpbnN0ZWFkIHdhaXQgZm9yIHRoZSBs aW5rIHN0YXR1cyBjaGVjayB3b3JrIHRvIG5vdGljZSB0aGF0IE1FIGlzIGdvbmUsCndoaWNoIHdp bGwgdGhlIGNvcnJlY3RseSBjaGFuZ2Ugc3RhdHVzIGZyb20gRU5BQkxFRCB0byBERVNJUkVELgoK U28ganVzdCB0aGUgYmVsb3cgY29kZSBpcyBuZWVkZWQgSSB0aGluawoKT3RoZXJ3aXNlIGxvb2tz IGdvb2QgdG8gbWUsIHdpdGggdGhlIGVib3ZlIGxvb3AgcmVtb3ZlZDoKClJldmlld2VkLWJ5OiBE YW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgoKCj4gKwo+ICsJbXV0ZXhfbG9j aygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwlkZXZfcHJpdi0+aGRjcF9tYXN0ZXIg PSBOVUxMOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiAr fQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzIGk5MTVfaGRjcF9jb21w b25lbnRfb3BzID0gewo+ICsJLmJpbmQgICA9IGk5MTVfaGRjcF9jb21wb25lbnRfYmluZCwKPiAr CS51bmJpbmQgPSBpOTE1X2hkY3BfY29tcG9uZW50X3VuYmluZCwKPiArfTsKPiArCj4gK3N0YXRp YyBpbnQgaW5pdGlhbGl6ZV9oZGNwX3BvcnRfZGF0YShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+ aGRjcDsKPiArCXN0cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZoZGNwLT5wb3J0X2RhdGE7 Cj4gKwo+ICsJZGF0YS0+cG9ydCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKPiArCWRhdGEt PnBvcnRfdHlwZSA9ICh1OClIRENQX1BPUlRfVFlQRV9JTlRFR1JBVEVEOwo+ICsJZGF0YS0+cHJv dG9jb2wgPSAodTgpaGRjcC0+c2hpbS0+cHJvdG9jb2w7Cj4gKwo+ICsJZGF0YS0+ayA9IDE7Cj4g KwlpZiAoIWRhdGEtPnN0cmVhbXMpCj4gKwkJZGF0YS0+c3RyZWFtcyA9IGtjYWxsb2MoZGF0YS0+ aywKPiArCQkJCQlzaXplb2Yoc3RydWN0IGhkY3AyX3N0cmVhbWlkX3R5cGUpLAo+ICsJCQkJCUdG UF9LRVJORUwpOwo+ICsJaWYgKCFkYXRhLT5zdHJlYW1zKSB7Cj4gKwkJRFJNX0VSUk9SKCJPdXQg b2YgTWVtb3J5XG4iKTsKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCX0KPiArCj4gKwlkYXRhLT5z dHJlYW1zWzBdLnN0cmVhbV9pZCA9IDA7Cj4gKwlkYXRhLT5zdHJlYW1zWzBdLnN0cmVhbV90eXBl ID0gaGRjcC0+Y29udGVudF90eXBlOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICBzdGF0 aWMgYm9vbCBpc19oZGNwMl9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICB7Cj4gIAlpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0lOVEVMX01FSV9IRENQKSkKPiBA QCAtODQzLDkgKzExOTksNDIgQEAgc3RhdGljIGJvb2wgaXNfaGRjcDJfc3VwcG9ydGVkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2hk Y3AyX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICB7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5k ZXYpOwo+ICAJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICsJ Ym9vbCBhZGRfY29tcG9uZW50ID0gZmFsc2U7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGlu aXRpYWxpemVfaGRjcF9wb3J0X2RhdGEoY29ubmVjdG9yKTsKPiArCWlmIChyZXQpIHsKPiArCQlE Uk1fREVCVUdfS01TKCJNZWkgaGRjcCBkYXRhIGluaXQgZmFpbGVkXG4iKTsKPiArCQlyZXR1cm47 Cj4gKwl9Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4g KwkvKgo+ICsJICogQ29tcG9uZW50IGZvciBtZWkgaXMgY29tbW9uIGFjcm9zcyB0aGUgY29ubmVj dG9yLgo+ICsJICogQWRkaW5nIHRoZSBjb21wb25lbnQgb25jZSBpcyBzdWZmaWNpZW50Lgo+ICsJ ICovCj4gKwlpZiAoIWRldl9wcml2LT5oZGNwX2NvbXBfYWRkZWQpIHsKPiArCQlkZXZfcHJpdi0+ aGRjcF9jb21wX2FkZGVkID0gdHJ1ZTsKPiArCQlhZGRfY29tcG9uZW50ID0gdHJ1ZTsKPiArCX0K PiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwo+ICsJaWYg KGFkZF9jb21wb25lbnQpIHsKPiArCQlyZXQgPSBjb21wb25lbnRfYWRkX3R5cGVkKGRldl9wcml2 LT5kcm0uZGV2LAo+ICsJCQkJCSAgJmk5MTVfaGRjcF9jb21wb25lbnRfb3BzLAo+ICsJCQkJCSAg STkxNV9DT01QT05FTlRfSERDUCk7Cj4gKwkJaWYgKHJldCA8IDApIHsKPiArCQkJRFJNX0RFQlVH X0tNUygiRmFpbGVkIGF0IGNvbXBvbmVudCBhZGQoJWQpXG4iLCByZXQpOwo+ICsJCQltdXRleF9s b2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKPiArCQkJZGV2X3ByaXYtPmhkY3BfY29t cF9hZGRlZCA9IGZhbHNlOwo+ICsJCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBf bXV0ZXgpOwo+ICsJCQlrZnJlZShoZGNwLT5wb3J0X2RhdGEuc3RyZWFtcyk7Cj4gKwkJCXJldHVy bjsKPiArCQl9Cj4gKwl9Cj4gIAo+IC0JLyogVE9ETzogTUVJIGludGVyZmFjZSBuZWVkcyB0byBi ZSBpbml0aWFsaXplZCBoZXJlICovCj4gIAloZGNwLT5oZGNwMl9zdXBwb3J0ZWQgPSB0cnVlOwo+ ICB9Cj4gIAo+IEBAIC05MTcsNiArMTMwNiwzOCBAQCBpbnQgaW50ZWxfaGRjcF9kaXNhYmxlKHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAg Cj4gK3ZvaWQgaW50ZWxfaGRjcF9jbGVhbnVwKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiArCj4gKwlpZiAoIWNvbm5lY3Rvci0+aGRjcC5zaGlt KQo+ICsJCXJldHVybjsKPiArCj4gKwltdXRleF9sb2NrKCZjb25uZWN0b3ItPmhkY3AubXV0ZXgp Owo+ICsJaWYgKCFjb25uZWN0b3ItPmhkY3AuaGRjcDJfc3VwcG9ydGVkKSB7Cj4gKwkJbXV0ZXhf dW5sb2NrKCZjb25uZWN0b3ItPmhkY3AubXV0ZXgpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4g KwlrZnJlZShjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhLnN0cmVhbXMpOwo+ICsJbXV0ZXhfbG9j aygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7Cj4gKwkvKgo+ICsJICogQ29tcG9uZW50IGZv ciBtZWkgaXMgY29tbW9uIGFjcm9zcyB0aGUgY29ubmVjdG9yLgo+ICsJICogUmVtb3ZpbmcgdGhl IGNvbXBvbmVudCBvbmNlIGlzIHN1ZmZpY2llbnQuCj4gKwkgKi8KPiArCWlmICghZGV2X3ByaXYt PmhkY3BfY29tcF9hZGRlZCkgewo+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29t cF9tdXRleCk7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZjb25uZWN0b3ItPmhkY3AubXV0ZXgpOwo+ICsJ CXJldHVybjsKPiArCX0KPiArCj4gKwlkZXZfcHJpdi0+aGRjcF9jb21wX2FkZGVkID0gZmFsc2U7 Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOwo+ICsJbXV0ZXhf dW5sb2NrKCZjb25uZWN0b3ItPmhkY3AubXV0ZXgpOwo+ICsKPiArCWNvbXBvbmVudF9kZWwoZGV2 X3ByaXYtPmRybS5kZXYsICZpOTE1X2hkY3BfY29tcG9uZW50X29wcyk7Cj4gK30KPiArCj4gIHZv aWQgaW50ZWxfaGRjcF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKPiAgCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX3N0YXRlLAo+ICAJ CQkgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpuZXdfc3RhdGUpCj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtL2k5MTVfY29tcG9uZW50LmggYi9pbmNsdWRlL2RybS9pOTE1X2NvbXBv bmVudC5oCj4gaW5kZXggNzJmYmIwMzdmOWIzLi5mMzg1MWJhM2U0YzMgMTAwNjQ0Cj4gLS0tIGEv aW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2k5MTVfY29t cG9uZW50LmgKPiBAQCAtMjQsMTAgKzI0LDEzIEBACj4gICNpZm5kZWYgX0k5MTVfQ09NUE9ORU5U X0hfCj4gICNkZWZpbmUgX0k5MTVfQ09NUE9ORU5UX0hfCj4gIAo+ICsjaW5jbHVkZSA8bGludXgv ZGV2aWNlLmg+Cj4gKwo+ICAjaW5jbHVkZSAiZHJtX2F1ZGlvX2NvbXBvbmVudC5oIgo+ICAKPiAg ZW51bSBpOTE1X2NvbXBvbmVudF90eXBlIHsKPiAgCUk5MTVfQ09NUE9ORU5UX0FVRElPID0gMSwK PiArCUk5MTVfQ09NUE9ORU5UX0hEQ1AsCj4gIH07Cj4gIAo+ICAvKiBNQVhfUE9SVCBpcyB0aGUg bnVtYmVyIG9mIHBvcnQKPiAtLSAKPiAyLjcuNAo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdh cmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=