From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915/display: abstract all vgaarb access to intel_vga.[ch] Date: Tue, 1 Oct 2019 20:31:06 +0300 Message-ID: <20191001173106.GS1208@intel.com> References: <20191001152506.7854-1-jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id DE9DF6E842 for ; Tue, 1 Oct 2019 17:31:09 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191001152506.7854-1-jani.nikula@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMDEsIDIwMTkgYXQgMDY6MjU6MDZQTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gU3BsaXQgb3V0IHRoZSBjb2RlIHJlbGF0ZWQgdG8gdmdhIGNsaWVudCBhbmQgdmdhYXJi IGFsbCBvdmVyIHRoZSBwbGFjZQo+IGludG8gbmV3IGludGVsX3ZnYS5bY2hdLiBObyBmdW5jdGlv bmFsIGNoYW5nZXMuCj4gCj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51 eC5pbnRlbC5jb20+Cj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr Pgo+IFNpZ25lZC1vZmYtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4g LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAg MyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAg OTcgKy0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5LmggIHwgICAzIC0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dl ci5jICAgIHwgIDI0ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zn YS5jICAgICAgfCAxNjAgKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfdmdhLmggICAgICB8ICAxOCArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jICAgICAgICAgICAgICAgfCAgMzAgKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3BjaS5jICAgICAgICAgICAgICAgfCAgIDEgLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3N1c3BlbmQuYyAgICAgICAgICAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcnVudGltZV9wbS5jICAgICAgIHwgICAxIC0KPiAgMTAgZmlsZXMgY2hhbmdl ZCwgMTk0IGluc2VydGlvbnMoKyksIDE0NiBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdmdhLmMKPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdmdhLmgKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IGUwNDQ2M2Q4NTQwMS4uZDJiNTNiNWFkZDgxIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtMTg0LDcgKzE4NCw4IEBAIGk5MTUteSArPSBcCj4g IAlkaXNwbGF5L2ludGVsX3Bzci5vIFwKPiAgCWRpc3BsYXkvaW50ZWxfcXVpcmtzLm8gXAo+ICAJ ZGlzcGxheS9pbnRlbF9zcHJpdGUubyBcCj4gLQlkaXNwbGF5L2ludGVsX3RjLm8KPiArCWRpc3Bs YXkvaW50ZWxfdGMubyBcCj4gKwlkaXNwbGF5L2ludGVsX3ZnYS5vCj4gIGk5MTUtJChDT05GSUdf QUNQSSkgKz0gXAo+ICAJZGlzcGxheS9pbnRlbF9hY3BpLm8gXAo+ICAJZGlzcGxheS9pbnRlbF9v cHJlZ2lvbi5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 LmMKPiBpbmRleCBmMTMyOGMwOGY0YWQuLmQ5OWM1OWU5NzU2OCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTMxLDcgKzMxLDYgQEAK PiAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICAjaW5jbHVkZSA8bGludXgvZG1hLXJlc3Yu aD4KPiAgI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiAtI2luY2x1ZGUgPGxpbnV4L3ZnYWFyYi5o Pgo+ICAKPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJt X2F0b21pY19oZWxwZXIuaD4KPiBAQCAtNzksNiArNzgsNyBAQAo+ICAjaW5jbHVkZSAiaW50ZWxf c2lkZWJhbmQuaCIKPiAgI2luY2x1ZGUgImludGVsX3Nwcml0ZS5oIgo+ICAjaW5jbHVkZSAiaW50 ZWxfdGMuaCIKPiArI2luY2x1ZGUgImludGVsX3ZnYS5oIgo+ICAKPiAgLyogUHJpbWFyeSBwbGFu ZSBmb3JtYXRzIGZvciBnZW4gPD0gMyAqLwo+ICBzdGF0aWMgY29uc3QgdTMyIGk4eHhfcHJpbWFy eV9mb3JtYXRzW10gPSB7Cj4gQEAgLTQyNDEsNyArNDI0MSw3IEBAIF9faW50ZWxfZGlzcGxheV9y ZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCWludCBpLCByZXQ7Cj4gIAo+ICAJaW50 ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShkZXYsIGN0eCk7Cj4gLQlpOTE1X3JlZGlzYWJsZV92 Z2EodG9faTkxNShkZXYpKTsKPiArCWludGVsX3ZnYV9yZWRpc2FibGUodG9faTkxNShkZXYpKTsK PiAgCj4gIAlpZiAoIXN0YXRlKQo+ICAJCXJldHVybiAwOwo+IEBAIC0xNTk5NCwzNSArMTU5OTQs NiBAQCB2b2lkIGludGVsX2luaXRfZGlzcGxheV9ob29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIAo+ICB9Cj4gIAo+IC1zdGF0aWMgaTkxNV9yZWdfdCBpOTE1X3ZnYWNu dHJsX3JlZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCWlmIChJ U19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAtCQly ZXR1cm4gVkxWX1ZHQUNOVFJMOwo+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1 KQo+IC0JCXJldHVybiBDUFVfVkdBQ05UUkw7Cj4gLQllbHNlCj4gLQkJcmV0dXJuIFZHQUNOVFJM Owo+IC19Cj4gLQo+IC0vKiBEaXNhYmxlIHRoZSBWR0EgcGxhbmUgdGhhdCB3ZSBuZXZlciB1c2Ug Ki8KPiAtc3RhdGljIHZvaWQgaTkxNV9kaXNhYmxlX3ZnYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYtPmRy bS5wZGV2Owo+IC0JdTggc3IxOwo+IC0JaTkxNV9yZWdfdCB2Z2FfcmVnID0gaTkxNV92Z2FjbnRy bF9yZWcoZGV2X3ByaXYpOwo+IC0KPiAtCS8qIFdhRW5hYmxlVkdBQWNjZXNzVGhyb3VnaElPUG9y dDpjdGcsZWxrLGlsayxzbmIsaXZiLHZsdixoc3cgKi8KPiAtCXZnYV9nZXRfdW5pbnRlcnJ1cHRp YmxlKHBkZXYsIFZHQV9SU1JDX0xFR0FDWV9JTyk7Cj4gLQlvdXRiKFNSMDEsIFZHQV9TUl9JTkRF WCk7Cj4gLQlzcjEgPSBpbmIoVkdBX1NSX0RBVEEpOwo+IC0Jb3V0YihzcjEgfCAxPDw1LCBWR0Ff U1JfREFUQSk7Cj4gLQl2Z2FfcHV0KHBkZXYsIFZHQV9SU1JDX0xFR0FDWV9JTyk7Cj4gLQl1ZGVs YXkoMzAwKTsKPiAtCj4gLQlJOTE1X1dSSVRFKHZnYV9yZWcsIFZHQV9ESVNQX0RJU0FCTEUpOwo+ IC0JUE9TVElOR19SRUFEKHZnYV9yZWcpOwo+IC19Cj4gLQo+ICB2b2lkIGludGVsX21vZGVzZXRf aW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ICAJaW50ZWxfdXBk YXRlX2NkY2xrKGk5MTUpOwo+IEBAIC0xNjI4OCw3ICsxNjI1OSw3IEBAIGludCBpbnRlbF9tb2Rl c2V0X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAkJaW50ZWxfdXBkYXRl X21heF9jZGNsayhpOTE1KTsKPiAgCj4gIAkvKiBKdXN0IGRpc2FibGUgaXQgb25jZSBhdCBzdGFy dHVwICovCj4gLQlpOTE1X2Rpc2FibGVfdmdhKGk5MTUpOwo+ICsJaW50ZWxfdmdhX2Rpc2FibGUo aTkxNSk7Cj4gIAlpbnRlbF9zZXR1cF9vdXRwdXRzKGk5MTUpOwo+ICAKPiAgCWRybV9tb2Rlc2V0 X2xvY2tfYWxsKGRldik7Cj4gQEAgLTE2NjQ3LDM5ICsxNjYxOCw2IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3Nhbml0aXplX2VuY29kZXIoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAkJ aWNsX3Nhbml0aXplX2VuY29kZXJfcGxsX21hcHBpbmcoZW5jb2Rlcik7Cj4gIH0KPiAgCj4gLXZv aWQgaTkxNV9yZWRpc2FibGVfdmdhX3Bvd2VyX29uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAtewo+IC0JaTkxNV9yZWdfdCB2Z2FfcmVnID0gaTkxNV92Z2FjbnRybF9yZWco ZGV2X3ByaXYpOwo+IC0KPiAtCWlmICghKEk5MTVfUkVBRCh2Z2FfcmVnKSAmIFZHQV9ESVNQX0RJ U0FCTEUpKSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygiU29tZXRoaW5nIGVuYWJsZWQgVkdBIHBsYW5l LCBkaXNhYmxpbmcgaXRcbiIpOwo+IC0JCWk5MTVfZGlzYWJsZV92Z2EoZGV2X3ByaXYpOwo+IC0J fQo+IC19Cj4gLQo+IC12b2lkIGk5MTVfcmVkaXNhYmxlX3ZnYShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+IC0KPiAt CS8qCj4gLQkgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgYm90aCBmcm9tIGludGVsX21v ZGVzZXRfc2V0dXBfaHdfc3RhdGUgb3IKPiAtCSAqIGF0IGEgdmVyeSBlYXJseSBwb2ludCBpbiBv dXIgcmVzdW1lIHNlcXVlbmNlLCB3aGVyZSB0aGUgcG93ZXIgd2VsbAo+IC0JICogc3RydWN0dXJl cyBhcmUgbm90IHlldCByZXN0b3JlZC4gU2luY2UgdGhpcyBmdW5jdGlvbiBpcyBhdCBhIHZlcnkK PiAtCSAqIHBhcmFub2lkICJzb21lb25lIG1pZ2h0IGhhdmUgZW5hYmxlZCBWR0Egd2hpbGUgd2Ug d2VyZSBub3QgbG9va2luZyIKPiAtCSAqIGxldmVsLCBqdXN0IGNoZWNrIGlmIHRoZSBwb3dlciB3 ZWxsIGlzIGVuYWJsZWQgaW5zdGVhZCBvZiB0cnlpbmcgdG8KPiAtCSAqIGZvbGxvdyB0aGUgImRv bid0IHRvdWNoIHRoZSBwb3dlciB3ZWxsIGlmIHdlIGRvbid0IG5lZWQgaXQiIHBvbGljeQo+IC0J ICogdGhlIHJlc3Qgb2YgdGhlIGRyaXZlciB1c2VzLgo+IC0JICovCj4gLQl3YWtlcmVmID0gaW50 ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwKPiAtCQkJCQkJICAgICBQ T1dFUl9ET01BSU5fVkdBKTsKPiAtCWlmICghd2FrZXJlZikKPiAtCQlyZXR1cm47Cj4gLQo+IC0J aTkxNV9yZWRpc2FibGVfdmdhX3Bvd2VyX29uKGRldl9wcml2KTsKPiAtCj4gLQlpbnRlbF9kaXNw bGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1ZHQSwgd2FrZXJlZik7Cj4gLX0K PiAtCj4gIC8qIEZJWE1FIHJlYWQgb3V0IGZ1bGwgcGxhbmUgc3RhdGUgZm9yIGFsbCBwbGFuZXMg Ki8KPiAgc3RhdGljIHZvaWQgcmVhZG91dF9wbGFuZV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiBAQCAtMTcxODgsMzUgKzE3MTI2LDYgQEAgdm9pZCBpbnRl bF9tb2Rlc2V0X2RyaXZlcl9yZW1vdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4g IAlpbnRlbF9mYmNfY2xlYW51cF9jZmIoaTkxNSk7Cj4gIH0KPiAgCj4gLS8qCj4gLSAqIHNldCB2 Z2EgZGVjb2RlIHN0YXRlIC0gdHJ1ZSA9PSBlbmFibGUgVkdBIGRlY29kZQo+IC0gKi8KPiAtaW50 IGludGVsX21vZGVzZXRfdmdhX3NldF9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIGJvb2wgc3RhdGUpCj4gLXsKPiAtCXVuc2lnbmVkIHJlZyA9IElOVEVMX0dFTihkZXZf cHJpdikgPj0gNiA/IFNOQl9HTUNIX0NUUkwgOiBJTlRFTF9HTUNIX0NUUkw7Cj4gLQl1MTYgZ21j aF9jdHJsOwo+IC0KPiAtCWlmIChwY2lfcmVhZF9jb25maWdfd29yZChkZXZfcHJpdi0+YnJpZGdl X2RldiwgcmVnLCAmZ21jaF9jdHJsKSkgewo+IC0JCURSTV9FUlJPUigiZmFpbGVkIHRvIHJlYWQg Y29udHJvbCB3b3JkXG4iKTsKPiAtCQlyZXR1cm4gLUVJTzsKPiAtCX0KPiAtCj4gLQlpZiAoISEo Z21jaF9jdHJsICYgSU5URUxfR01DSF9WR0FfRElTQUJMRSkgPT0gIXN0YXRlKQo+IC0JCXJldHVy biAwOwo+IC0KPiAtCWlmIChzdGF0ZSkKPiAtCQlnbWNoX2N0cmwgJj0gfklOVEVMX0dNQ0hfVkdB X0RJU0FCTEU7Cj4gLQllbHNlCj4gLQkJZ21jaF9jdHJsIHw9IElOVEVMX0dNQ0hfVkdBX0RJU0FC TEU7Cj4gLQo+IC0JaWYgKHBjaV93cml0ZV9jb25maWdfd29yZChkZXZfcHJpdi0+YnJpZGdlX2Rl diwgcmVnLCBnbWNoX2N0cmwpKSB7Cj4gLQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gd3JpdGUgY29u dHJvbCB3b3JkXG4iKTsKPiAtCQlyZXR1cm4gLUVJTzsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gMDsK PiAtfQo+IC0KPiAgI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0NBUFRVUkVfRVJST1Ip Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfZGlzcGxheV9lcnJvcl9zdGF0ZSB7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmgKPiBpbmRleCA0YjllMThlNWEyNjMu LjI3ODJmMjNlZTg4NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheS5oCj4gQEAgLTU3OSwxMCArNTc5LDcgQEAgdm9pZCBpbnRlbF9kaXNwbGF5X3By aW50X2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKmUsCj4gIHZv aWQgaW50ZWxfbW9kZXNldF9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsK PiAgaW50IGludGVsX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7 Cj4gIHZvaWQgaW50ZWxfbW9kZXNldF9kcml2ZXJfcmVtb3ZlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KTsKPiAtaW50IGludGVsX21vZGVzZXRfdmdhX3NldF9zdGF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgc3RhdGUpOwo+ICB2b2lkIGludGVsX2Rpc3Bs YXlfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IC12b2lkIGk5MTVfcmVkaXNhYmxl X3ZnYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC12b2lkIGk5MTVfcmVk aXNhYmxlX3ZnYV9wb3dlcl9vbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ ICB2b2lkIGludGVsX2luaXRfcGNoX3JlZmNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ICAKPiAgLyogbW9kZXNldHRpbmcgYXNzZXJ0cyAqLwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jCj4gaW5kZXggZjEx ODZiYzIzNTQyLi5iYjY0MmExYTBkZDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYwo+IEBAIC0zLDggKzMsNiBAQAo+ICAg KiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICAgKi8KPiAgCj4gLSNpbmNs dWRlIDxsaW51eC92Z2FhcmIuaD4KPiAtCj4gICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2NydC5o Igo+ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9kcC5oIgo+ICAKPiBAQCAtMTksNiArMTcsNyBA QAo+ICAjaW5jbHVkZSAiaW50ZWxfaG90cGx1Zy5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfc2lkZWJh bmQuaCIKPiAgI2luY2x1ZGUgImludGVsX3RjLmgiCj4gKyNpbmNsdWRlICJpbnRlbF92Z2EuaCIK PiAgCj4gIGJvb2wgaW50ZWxfZGlzcGxheV9wb3dlcl93ZWxsX2lzX2VuYWJsZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJCSBlbnVtIGk5MTVfcG93ZXJfd2VsbF9p ZCBwb3dlcl93ZWxsX2lkKTsKPiBAQCAtMjY3LDIzICsyNjYsOCBAQCBib29sIGludGVsX2Rpc3Bs YXlfcG93ZXJfaXNfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IHN0YXRpYyB2b2lkIGhzd19wb3dlcl93ZWxsX3Bvc3RfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCSAgICAgICB1OCBpcnFfcGlwZV9tYXNrLCBib29sIGhh c192Z2EpCj4gIHsKPiAtCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYtPmRybS5wZGV2 Owo+IC0KPiAtCS8qCj4gLQkgKiBBZnRlciB3ZSByZS1lbmFibGUgdGhlIHBvd2VyIHdlbGwsIGlm IHdlIHRvdWNoIFZHQSByZWdpc3RlciAweDNkNQo+IC0JICogd2UnbGwgZ2V0IHVuY2xhaW1lZCBy ZWdpc3RlciBpbnRlcnJ1cHRzLiBUaGlzIHN0b3BzIGFmdGVyIHdlIHdyaXRlCj4gLQkgKiBhbnl0 aGluZyB0byB0aGUgVkdBIE1TUiByZWdpc3Rlci4gVGhlIHZnYWNvbiBtb2R1bGUgdXNlcyB0aGlz Cj4gLQkgKiByZWdpc3RlciBhbGwgdGhlIHRpbWUsIHNvIGlmIHdlIHVuYmluZCBvdXIgZHJpdmVy IGFuZCwgYXMgYQo+IC0JICogY29uc2VxdWVuY2UsIGJpbmQgdmdhY29uLCB3ZSdsbCBnZXQgc3R1 Y2sgaW4gYW4gaW5maW5pdGUgbG9vcCBhdAo+IC0JICogY29uc29sZV91bmxvY2soKS4gU28gbWFr ZSBoZXJlIHdlIHRvdWNoIHRoZSBWR0EgTVNSIHJlZ2lzdGVyLCBtYWtpbmcKPiAtCSAqIHN1cmUg dmdhY29uIGNhbiBrZWVwIHdvcmtpbmcgbm9ybWFsbHkgd2l0aG91dCB0cmlnZ2VyaW5nIGludGVy cnVwdHMKPiAtCSAqIGFuZCBlcnJvciBtZXNzYWdlcy4KPiAtCSAqLwo+IC0JaWYgKGhhc192Z2Ep IHsKPiAtCQl2Z2FfZ2V0X3VuaW50ZXJydXB0aWJsZShwZGV2LCBWR0FfUlNSQ19MRUdBQ1lfSU8p Owo+IC0JCW91dGIoaW5iKFZHQV9NU1JfUkVBRCksIFZHQV9NU1JfV1JJVEUpOwo+IC0JCXZnYV9w dXQocGRldiwgVkdBX1JTUkNfTEVHQUNZX0lPKTsKPiAtCX0KPiArCWlmIChoYXNfdmdhKQo+ICsJ CWludGVsX3ZnYV9tc3Jfd3JpdGUoZGV2X3ByaXYpOwoKSSdkIHByb2JhYmx5IGNhbGwgdGhpcyBz b21ldGhpbmcgbGlrZSBpbnRlbF92Z2FfcmVzZXRfaW9fbWVtKCkuCgpsZ3RtClJldmlld2VkLWJ5 OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgoKPiAgCj4g IAlpZiAoaXJxX3BpcGVfbWFzaykKPiAgCQlnZW44X2lycV9wb3dlcl93ZWxsX3Bvc3RfZW5hYmxl KGRldl9wcml2LCBpcnFfcGlwZV9tYXNrKTsKPiBAQCAtMTIwNSw3ICsxMTg5LDcgQEAgc3RhdGlj IHZvaWQgdmx2X2Rpc3BsYXlfcG93ZXJfd2VsbF9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgCQkJaW50ZWxfY3J0X3Jlc2V0KCZlbmNvZGVyLT5iYXNlKTsKPiAgCX0K PiAgCj4gLQlpOTE1X3JlZGlzYWJsZV92Z2FfcG93ZXJfb24oZGV2X3ByaXYpOwo+ICsJaW50ZWxf dmdhX3JlZGlzYWJsZV9wb3dlcl9vbihkZXZfcHJpdik7Cj4gIAo+ICAJaW50ZWxfcHBzX3VubG9j a19yZWdzX3dhKGRldl9wcml2KTsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX3ZnYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF92Z2EuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi43 MzI1NjhlYWE5ODgKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF92Z2EuYwo+IEBAIC0wLDAgKzEsMTYwIEBACj4gKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBNSVQKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29y cG9yYXRpb24KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvcGNpLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC92Z2FhcmIuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPiArCj4g KyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfdmdhLmgiCj4gKwo+ICtz dGF0aWMgaTkxNV9yZWdfdCBpbnRlbF92Z2FfY250cmxfcmVnKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQo+ICt7Cj4gKwlpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSB8fCBJU19DSEVSUllW SUVXKGk5MTUpKQo+ICsJCXJldHVybiBWTFZfVkdBQ05UUkw7Cj4gKwllbHNlIGlmIChJTlRFTF9H RU4oaTkxNSkgPj0gNSkKPiArCQlyZXR1cm4gQ1BVX1ZHQUNOVFJMOwo+ICsJZWxzZQo+ICsJCXJl dHVybiBWR0FDTlRSTDsKPiArfQo+ICsKPiArLyogRGlzYWJsZSB0aGUgVkdBIHBsYW5lIHRoYXQg d2UgbmV2ZXIgdXNlICovCj4gK3ZvaWQgaW50ZWxfdmdhX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9w cml2LT5kcm0ucGRldjsKPiArCWk5MTVfcmVnX3QgdmdhX3JlZyA9IGludGVsX3ZnYV9jbnRybF9y ZWcoZGV2X3ByaXYpOwo+ICsJdTggc3IxOwo+ICsKPiArCS8qIFdhRW5hYmxlVkdBQWNjZXNzVGhy b3VnaElPUG9ydDpjdGcsZWxrLGlsayxzbmIsaXZiLHZsdixoc3cgKi8KPiArCXZnYV9nZXRfdW5p bnRlcnJ1cHRpYmxlKHBkZXYsIFZHQV9SU1JDX0xFR0FDWV9JTyk7Cj4gKwlvdXRiKFNSMDEsIFZH QV9TUl9JTkRFWCk7Cj4gKwlzcjEgPSBpbmIoVkdBX1NSX0RBVEEpOwo+ICsJb3V0YihzcjEgfCAx IDw8IDUsIFZHQV9TUl9EQVRBKTsKPiArCXZnYV9wdXQocGRldiwgVkdBX1JTUkNfTEVHQUNZX0lP KTsKPiArCXVkZWxheSgzMDApOwo+ICsKPiArCUk5MTVfV1JJVEUodmdhX3JlZywgVkdBX0RJU1Bf RElTQUJMRSk7Cj4gKwlQT1NUSU5HX1JFQUQodmdhX3JlZyk7Cj4gK30KPiArCj4gK3ZvaWQgaW50 ZWxfdmdhX3JlZGlzYWJsZV9wb3dlcl9vbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gK3sKPiArCWk5MTVfcmVnX3QgdmdhX3JlZyA9IGludGVsX3ZnYV9jbnRybF9yZWcoZGV2 X3ByaXYpOwo+ICsKPiArCWlmICghKEk5MTVfUkVBRCh2Z2FfcmVnKSAmIFZHQV9ESVNQX0RJU0FC TEUpKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiU29tZXRoaW5nIGVuYWJsZWQgVkdBIHBsYW5lLCBk aXNhYmxpbmcgaXRcbiIpOwo+ICsJCWludGVsX3ZnYV9kaXNhYmxlKGRldl9wcml2KTsKPiArCX0K PiArfQo+ICsKPiArdm9pZCBpbnRlbF92Z2FfcmVkaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQo+ICt7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiArCj4gKwkvKgo+ ICsJICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGJvdGggZnJvbSBpbnRlbF9tb2Rlc2V0 X3NldHVwX2h3X3N0YXRlIG9yCj4gKwkgKiBhdCBhIHZlcnkgZWFybHkgcG9pbnQgaW4gb3VyIHJl c3VtZSBzZXF1ZW5jZSwgd2hlcmUgdGhlIHBvd2VyIHdlbGwKPiArCSAqIHN0cnVjdHVyZXMgYXJl IG5vdCB5ZXQgcmVzdG9yZWQuIFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgYXQgYSB2ZXJ5Cj4gKwkg KiBwYXJhbm9pZCAic29tZW9uZSBtaWdodCBoYXZlIGVuYWJsZWQgVkdBIHdoaWxlIHdlIHdlcmUg bm90IGxvb2tpbmciCj4gKwkgKiBsZXZlbCwganVzdCBjaGVjayBpZiB0aGUgcG93ZXIgd2VsbCBp cyBlbmFibGVkIGluc3RlYWQgb2YgdHJ5aW5nIHRvCj4gKwkgKiBmb2xsb3cgdGhlICJkb24ndCB0 b3VjaCB0aGUgcG93ZXIgd2VsbCBpZiB3ZSBkb24ndCBuZWVkIGl0IiBwb2xpY3kKPiArCSAqIHRo ZSByZXN0IG9mIHRoZSBkcml2ZXIgdXNlcy4KPiArCSAqLwo+ICsJd2FrZXJlZiA9IGludGVsX2Rp c3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJsZWQoaTkxNSwgUE9XRVJfRE9NQUlOX1ZHQSk7Cj4gKwlp ZiAoIXdha2VyZWYpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWludGVsX3ZnYV9yZWRpc2FibGVfcG93 ZXJfb24oaTkxNSk7Cj4gKwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoaTkxNSwgUE9XRVJf RE9NQUlOX1ZHQSwgd2FrZXJlZik7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfdmdhX21zcl93cml0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJc3RydWN0IHBjaV9kZXYg KnBkZXYgPSBpOTE1LT5kcm0ucGRldjsKPiArCj4gKwkvKgo+ICsJICogQWZ0ZXIgd2UgcmUtZW5h YmxlIHRoZSBwb3dlciB3ZWxsLCBpZiB3ZSB0b3VjaCBWR0EgcmVnaXN0ZXIgMHgzZDUKPiArCSAq IHdlJ2xsIGdldCB1bmNsYWltZWQgcmVnaXN0ZXIgaW50ZXJydXB0cy4gVGhpcyBzdG9wcyBhZnRl ciB3ZSB3cml0ZQo+ICsJICogYW55dGhpbmcgdG8gdGhlIFZHQSBNU1IgcmVnaXN0ZXIuIFRoZSB2 Z2Fjb24gbW9kdWxlIHVzZXMgdGhpcwo+ICsJICogcmVnaXN0ZXIgYWxsIHRoZSB0aW1lLCBzbyBp ZiB3ZSB1bmJpbmQgb3VyIGRyaXZlciBhbmQsIGFzIGEKPiArCSAqIGNvbnNlcXVlbmNlLCBiaW5k IHZnYWNvbiwgd2UnbGwgZ2V0IHN0dWNrIGluIGFuIGluZmluaXRlIGxvb3AgYXQKPiArCSAqIGNv bnNvbGVfdW5sb2NrKCkuIFNvIG1ha2UgaGVyZSB3ZSB0b3VjaCB0aGUgVkdBIE1TUiByZWdpc3Rl ciwgbWFraW5nCj4gKwkgKiBzdXJlIHZnYWNvbiBjYW4ga2VlcCB3b3JraW5nIG5vcm1hbGx5IHdp dGhvdXQgdHJpZ2dlcmluZyBpbnRlcnJ1cHRzCj4gKwkgKiBhbmQgZXJyb3IgbWVzc2FnZXMuCj4g KwkgKi8KPiArCXZnYV9nZXRfdW5pbnRlcnJ1cHRpYmxlKHBkZXYsIFZHQV9SU1JDX0xFR0FDWV9J Tyk7Cj4gKwlvdXRiKGluYihWR0FfTVNSX1JFQUQpLCBWR0FfTVNSX1dSSVRFKTsKPiArCXZnYV9w dXQocGRldiwgVkdBX1JTUkNfTEVHQUNZX0lPKTsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICtp bnRlbF92Z2Ffc2V0X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBib29sIGVu YWJsZV9kZWNvZGUpCj4gK3sKPiArCXVuc2lnbmVkIGludCByZWcgPSBJTlRFTF9HRU4oaTkxNSkg Pj0gNiA/IFNOQl9HTUNIX0NUUkwgOiBJTlRFTF9HTUNIX0NUUkw7Cj4gKwl1MTYgZ21jaF9jdHJs Owo+ICsKPiArCWlmIChwY2lfcmVhZF9jb25maWdfd29yZChpOTE1LT5icmlkZ2VfZGV2LCByZWcs ICZnbWNoX2N0cmwpKSB7Cj4gKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcmVhZCBjb250cm9sIHdv cmRcbiIpOwo+ICsJCXJldHVybiAtRUlPOwo+ICsJfQo+ICsKPiArCWlmICghIShnbWNoX2N0cmwg JiBJTlRFTF9HTUNIX1ZHQV9ESVNBQkxFKSA9PSAhZW5hYmxlX2RlY29kZSkKPiArCQlyZXR1cm4g MDsKPiArCj4gKwlpZiAoZW5hYmxlX2RlY29kZSkKPiArCQlnbWNoX2N0cmwgJj0gfklOVEVMX0dN Q0hfVkdBX0RJU0FCTEU7Cj4gKwllbHNlCj4gKwkJZ21jaF9jdHJsIHw9IElOVEVMX0dNQ0hfVkdB X0RJU0FCTEU7Cj4gKwo+ICsJaWYgKHBjaV93cml0ZV9jb25maWdfd29yZChpOTE1LT5icmlkZ2Vf ZGV2LCByZWcsIGdtY2hfY3RybCkpIHsKPiArCQlEUk1fRVJST1IoImZhaWxlZCB0byB3cml0ZSBj b250cm9sIHdvcmRcbiIpOwo+ICsJCXJldHVybiAtRUlPOwo+ICsJfQo+ICsKPiArCXJldHVybiAw Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgaW50Cj4gK2ludGVsX3ZnYV9zZXRfZGVjb2Rl KHZvaWQgKmNvb2tpZSwgYm9vbCBlbmFibGVfZGVjb2RlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGNvb2tpZTsKPiArCj4gKwlpbnRlbF92Z2Ffc2V0X3N0YXRlKGk5 MTUsIGVuYWJsZV9kZWNvZGUpOwo+ICsKPiArCWlmIChlbmFibGVfZGVjb2RlKQo+ICsJCXJldHVy biBWR0FfUlNSQ19MRUdBQ1lfSU8gfCBWR0FfUlNSQ19MRUdBQ1lfTUVNIHwKPiArCQkgICAgICAg VkdBX1JTUkNfTk9STUFMX0lPIHwgVkdBX1JTUkNfTk9STUFMX01FTTsKPiArCWVsc2UKPiArCQly ZXR1cm4gVkdBX1JTUkNfTk9STUFMX0lPIHwgVkdBX1JTUkNfTk9STUFMX01FTTsKPiArfQo+ICsK PiAraW50IGludGVsX3ZnYV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK PiArewo+ICsJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBpOTE1LT5kcm0ucGRldjsKPiArCWludCBy ZXQ7Cj4gKwo+ICsJLyoKPiArCSAqIElmIHdlIGhhdmUgPiAxIFZHQSBjYXJkcywgdGhlbiB3ZSBu ZWVkIHRvIGFyYml0cmF0ZSBhY2Nlc3MgdG8gdGhlCj4gKwkgKiBjb21tb24gVkdBIHJlc291cmNl cy4KPiArCSAqCj4gKwkgKiBJZiB3ZSBhcmUgYSBzZWNvbmRhcnkgZGlzcGxheSBjb250cm9sbGVy ICghUENJX0RJU1BMQVlfQ0xBU1NfVkdBKSwKPiArCSAqIHRoZW4gd2UgZG8gbm90IHRha2UgcGFy dCBpbiBWR0EgYXJiaXRyYXRpb24gYW5kIHRoZQo+ICsJICogdmdhX2NsaWVudF9yZWdpc3Rlcigp IGZhaWxzIHdpdGggLUVOT0RFVi4KPiArCSAqLwo+ICsJcmV0ID0gdmdhX2NsaWVudF9yZWdpc3Rl cihwZGV2LCBpOTE1LCBOVUxMLCBpbnRlbF92Z2Ffc2V0X2RlY29kZSk7Cj4gKwlpZiAocmV0ICYm IHJldCAhPSAtRU5PREVWKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3ZvaWQgaW50ZWxfdmdhX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCj4gK3sKPiArCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gaTkxNS0+ZHJtLnBkZXY7Cj4g Kwo+ICsJdmdhX2NsaWVudF9yZWdpc3RlcihwZGV2LCBOVUxMLCBOVUxMLCBOVUxMKTsKPiArfQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3ZnYS5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF92Z2EuaAo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4zNTE3ODcyZTYyYWMKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF92Z2EuaAo+IEBAIC0w LDAgKzEsMTggQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLwo+ICsvKgo+ ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNp Zm5kZWYgX19JTlRFTF9WR0FfSF9fCj4gKyNkZWZpbmUgX19JTlRFTF9WR0FfSF9fCj4gKwo+ICtz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKPiArCj4gK3ZvaWQgaW50ZWxfdmdhX21zcl93cml0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gK3ZvaWQgaW50ZWxfdmdhX2Rpc2FibGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICt2b2lkIGludGVsX3ZnYV9yZWRpc2Fi bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICt2b2lkIGludGVsX3ZnYV9yZWRp c2FibGVfcG93ZXJfb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICtpbnQgaW50 ZWxfdmdhX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiArdm9pZCBp bnRlbF92Z2FfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gKwo+ ICsjZW5kaWYgLyogX19JTlRFTF9WR0FfSF9fICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g aW5kZXggOTFhYWU1NmI0MjgwLi4zMzA2YzZiYjUxNWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKPiBAQCAtMzYsNyArMzYsNiBAQAo+ICAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5o Pgo+ICAjaW5jbHVkZSA8bGludXgvcG5wLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4g LSNpbmNsdWRlIDxsaW51eC92Z2FhcmIuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3ZnYV9zd2l0Y2hl cm9vLmg+Cj4gICNpbmNsdWRlIDxsaW51eC92dC5oPgo+ICAjaW5jbHVkZSA8YWNwaS92aWRlby5o Pgo+IEBAIC01OSw2ICs1OCw3IEBACj4gICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX292ZXJsYXku aCIKPiAgI2luY2x1ZGUgImRpc3BsYXkvaW50ZWxfcGlwZV9jcmMuaCIKPiAgI2luY2x1ZGUgImRp c3BsYXkvaW50ZWxfc3ByaXRlLmgiCj4gKyNpbmNsdWRlICJkaXNwbGF5L2ludGVsX3ZnYS5oIgo+ ICAKPiAgI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9jb250ZXh0LmgiCj4gICNpbmNsdWRlICJnZW0v aTkxNV9nZW1faW9jdGxzLmgiCj4gQEAgLTI2OSwxOSArMjY5LDYgQEAgaW50ZWxfdGVhcmRvd25f bWNoYmFyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlyZWxlYXNlX3Jl c291cmNlKCZkZXZfcHJpdi0+bWNoX3Jlcyk7Cj4gIH0KPiAgCj4gLS8qIHRydWUgPSBlbmFibGUg ZGVjb2RlLCBmYWxzZSA9IGRpc2FibGUgZGVjb2RlciAqLwo+IC1zdGF0aWMgdW5zaWduZWQgaW50 IGk5MTVfdmdhX3NldF9kZWNvZGUodm9pZCAqY29va2llLCBib29sIHN0YXRlKQo+IC17Cj4gLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjb29raWU7Cj4gLQo+IC0JaW50ZWxf bW9kZXNldF92Z2Ffc2V0X3N0YXRlKGRldl9wcml2LCBzdGF0ZSk7Cj4gLQlpZiAoc3RhdGUpCj4g LQkJcmV0dXJuIFZHQV9SU1JDX0xFR0FDWV9JTyB8IFZHQV9SU1JDX0xFR0FDWV9NRU0gfAo+IC0J CSAgICAgICBWR0FfUlNSQ19OT1JNQUxfSU8gfCBWR0FfUlNSQ19OT1JNQUxfTUVNOwo+IC0JZWxz ZQo+IC0JCXJldHVybiBWR0FfUlNSQ19OT1JNQUxfSU8gfCBWR0FfUlNSQ19OT1JNQUxfTUVNOwo+ IC19Cj4gLQo+ICBzdGF0aWMgaW50IGk5MTVfcmVzdW1lX3N3aXRjaGVyb28oc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpOwo+ICBzdGF0aWMgaW50IGk5MTVfc3VzcGVuZF9zd2l0Y2hlcm9v KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAJCQkJICAgcG1fbWVzc2FnZV90IHN0 YXRlKTsKPiBAQCAtMzQ2LDE1ICszMzMsOCBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX21vZGVz ZXRfcHJvYmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAo+ICAJaW50ZWxfYmlv c19pbml0KGk5MTUpOwo+ICAKPiAtCS8qIElmIHdlIGhhdmUgPiAxIFZHQSBjYXJkcywgdGhlbiB3 ZSBuZWVkIHRvIGFyYml0cmF0ZSBhY2Nlc3MKPiAtCSAqIHRvIHRoZSBjb21tb24gVkdBIHJlc291 cmNlcy4KPiAtCSAqCj4gLQkgKiBJZiB3ZSBhcmUgYSBzZWNvbmRhcnkgZGlzcGxheSBjb250cm9s bGVyICghUENJX0RJU1BMQVlfQ0xBU1NfVkdBKSwKPiAtCSAqIHRoZW4gd2UgZG8gbm90IHRha2Ug cGFydCBpbiBWR0EgYXJiaXRyYXRpb24gYW5kIHRoZQo+IC0JICogdmdhX2NsaWVudF9yZWdpc3Rl cigpIGZhaWxzIHdpdGggLUVOT0RFVi4KPiAtCSAqLwo+IC0JcmV0ID0gdmdhX2NsaWVudF9yZWdp c3RlcihwZGV2LCBpOTE1LCBOVUxMLCBpOTE1X3ZnYV9zZXRfZGVjb2RlKTsKPiAtCWlmIChyZXQg JiYgcmV0ICE9IC1FTk9ERVYpCj4gKwlyZXQgPSBpbnRlbF92Z2FfcmVnaXN0ZXIoaTkxNSk7Cj4g KwlpZiAocmV0KQo+ICAJCWdvdG8gb3V0Owo+ICAKPiAgCWludGVsX3JlZ2lzdGVyX2RzbV9oYW5k bGVyKCk7Cj4gQEAgLTQxNiw3ICszOTYsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX21vZGVz ZXRfcHJvYmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAlpbnRlbF9wb3dlcl9k b21haW5zX2RyaXZlcl9yZW1vdmUoaTkxNSk7Cj4gIAl2Z2Ffc3dpdGNoZXJvb191bnJlZ2lzdGVy X2NsaWVudChwZGV2KTsKPiAgY2xlYW51cF92Z2FfY2xpZW50Ogo+IC0JdmdhX2NsaWVudF9yZWdp c3RlcihwZGV2LCBOVUxMLCBOVUxMLCBOVUxMKTsKPiArCWludGVsX3ZnYV91bnJlZ2lzdGVyKGk5 MTUpOwo+ICBvdXQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTQzMCw3ICs0MTAsNyBAQCBz dGF0aWMgdm9pZCBpOTE1X2RyaXZlcl9tb2Rlc2V0X3JlbW92ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPiAgCWludGVsX2Jpb3NfZHJpdmVyX3JlbW92ZShpOTE1KTsKPiAgCj4gIAl2 Z2Ffc3dpdGNoZXJvb191bnJlZ2lzdGVyX2NsaWVudChwZGV2KTsKPiAtCXZnYV9jbGllbnRfcmVn aXN0ZXIocGRldiwgTlVMTCwgTlVMTCwgTlVMTCk7Cj4gKwlpbnRlbF92Z2FfdW5yZWdpc3Rlcihp OTE1KTsKPiAgCj4gIAlpbnRlbF9jc3JfdWNvZGVfZmluaShpOTE1KTsKPiAgfQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wY2kuYwo+IGluZGV4IGVhNTNkZmUyZmJhMC4uMWNiZjM5OThiMzYxIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gQEAgLTIzLDcgKzIzLDYgQEAKPiAgICovCj4gIAo+ICAj aW5jbHVkZSA8bGludXgvY29uc29sZS5oPgo+IC0jaW5jbHVkZSA8bGludXgvdmdhYXJiLmg+Cj4g ICNpbmNsdWRlIDxsaW51eC92Z2Ffc3dpdGNoZXJvby5oPgo+ICAKPiAgI2luY2x1ZGUgPGRybS9k cm1fZHJ2Lmg+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVu ZC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMKPiBpbmRleCA4NTA4YTAx YWQ4YjkuLjJiMjA4NmRlZjBmMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3N1c3BlbmQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5j Cj4gQEAgLTI4LDYgKzI4LDcgQEAKPiAgCj4gICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2ZiYy5o Igo+ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9nbWJ1cy5oIgo+ICsjaW5jbHVkZSAiZGlzcGxh eS9pbnRlbF92Z2EuaCIKPiAgCj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAjaW5jbHVkZSAi aTkxNV9yZWcuaCIKPiBAQCAtNTcsNyArNTgsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3Jlc3RvcmVf ZGlzcGxheShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpZiAoSEFTX0ZC QyhkZXZfcHJpdikgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8PSA0ICYmICFJU19HNFgoZGV2X3By aXYpKQo+ICAJCUk5MTVfV1JJVEUoRkJDX0NPTlRST0wsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVG QkNfQ09OVFJPTCk7Cj4gIAo+IC0JaTkxNV9yZWRpc2FibGVfdmdhKGRldl9wcml2KTsKPiArCWlu dGVsX3ZnYV9yZWRpc2FibGUoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICBpbnQgaTkxNV9zYXZlX3N0 YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gaW5kZXggMmZkM2MwOTdlMWY1Li5hZDcxOWM5NjAyYWYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gQEAgLTI3LDcg KzI3LDYgQEAKPiAgICovCj4gIAo+ICAjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPgo+IC0j aW5jbHVkZSA8bGludXgvdmdhYXJiLmg+Cj4gIAo+ICAjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5o Pgo+ICAKPiAtLSAKPiAyLjIwLjEKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4