From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: Switch to per-crtc vblank vfuncs Date: Tue, 18 Jun 2019 16:34:43 +0300 Message-ID: <20190618133443.GN5942@intel.com> References: <20190618085826.4120-1-ville.syrjala@linux.intel.com> <87blyvt5n8.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2E4CB6E185 for ; Tue, 18 Jun 2019 13:34:47 +0000 (UTC) Content-Disposition: inline In-Reply-To: <87blyvt5n8.fsf@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 T24gVHVlLCBKdW4gMTgsIDIwMTkgYXQgMDM6NTU6MDdQTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gVHVlLCAxOCBKdW4gMjAxOSwgVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+IHdyb3RlOgo+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+Cj4gPiBTd2l0Y2ggZnJvbSB0aGUgZHJpdmVyLXdp ZGUgdmJsYW5rIHZmdW5jcyB0byB0aGUgcGVyLWNydGMgb25lcyBzbyB0aGF0Cj4gPiB3ZSBkb24n dCBoYXZlIHNvIG1hbnkgcGxhdGZvcm0gc3BlY2lmaWMgdmZ1bmNzIGluIHRoZSBkcml2ZXIgc3Ry dWN0Lgo+ID4KPiA+IFdlIHN0aWxsIG5lZWQgdG8gZG8gc29tZXRoaW5nIGFib3V0IHRoZSByZXN0 IGZvIHRoZSBpcnEgdmZ1bmNzLi4uCj4gCj4gV2UnbGwgYWxzbyBuZWVkIHRvIGRvIHNvbWV0aGlu ZyBhYm91dCBoYXZpbmcgYWxsIG9mIHRoaXMgaW4KPiBpbnRlbF9kaXNwbGF5LmMuIFdvdWxkIGlu dGVsX2NydGMuW2NoXSBiZSB0b28gY2xvc2UgdG8gaW50ZWxfY3J0LltjaF0/Cj4gCj4gQWxzbywg aW50ZWxfZW5jb2Rlci5bY2hdPwo+IAo+IE9yLCBtb3ZlIGV2ZXJ5dGhpbmcgKmVsc2UqIG91dCBv ZiBpbnRlbF9kaXNwbGF5LmM/CgpJIHRoaW5rIGludGVsX2NydGMuYyB3b3VsZCBiZSBvayBhcyBh IG5hbWUuIE9yIGludGVsX3BpcGUuYyBpZiB0aGUKY3J0IGl0IHRvbyBjbG9zZS4gSnVzdCBub3Qg YXQgYWxsIHN1cmUgd2hhdCB0byBtb3ZlIHRoZXJlLgoKTW92aW5nIHBsYW5lIHN0dWZmIGZyb20g aW50ZWxfZGlzcGxheS5jLGludGVsX3Nwcml0ZS5jLGludGVsX2F0b21pY19wbGFuZS5jCnRvIGlu dGVsX3BsYW5lLmMsaTl4eF9wbGFuZS5jLHNrbF9wbGFuZS5jLGludGVsX2N1cnNvci5jIChvciBz b21ldGhpbmcKYWxvbmcgdGhvc2UgbGluZXMpIG1pZ2h0IGJlIGEgZ29vZCB3YXkgdG8gZ28uCgpp bnRlbF9mcmFtYnVmZmVyLmMgb3Igc29tZSBzdWNoIHRoaW5nIG1pZ2h0IGJlIGEgZ29vZCBleHRy YWN0aW9uCmNhbmRpY2F0ZSB0b28uCgpUaG9zZSBhcmUgcHJvYmFibHkgaG93IEknZCBzdGFydCBh dCBsZWFzdC4KCj4gCj4gTm90IHBhcnQgb2YgdGhpcyBwYXRjaCwgb2J2aW91c2x5LiBTb21lIGNv bW1lbnRzIGlubGluZS4KPiAKPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6Qg PHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgfCAxMDQgKysrKysrKysrKysrKysrKy0t LQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICAgICAgIHwgIDkz ICsrKysrKystLS0tLS0tLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuaCAg ICAgICAgICAgICAgfCAgMTQgKysrCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9u cygrKSwgNjggZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5LmMKPiA+IGluZGV4IDhkN2U0YzhiNjBiYy4uZGM2MDJhOGE1MmZl IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eS5jCj4gPiBAQCAtMTM1NTYsNyArMTM1NTYsNyBAQCB1MzIgaW50ZWxfY3J0Y19nZXRfdmJsYW5r X2NvdW50ZXIoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gPiAgCWlmICghdmJsYW5rLT5tYXhf dmJsYW5rX2NvdW50KQo+ID4gIAkJcmV0dXJuICh1MzIpZHJtX2NydGNfYWNjdXJhdGVfdmJsYW5r X2NvdW50KCZjcnRjLT5iYXNlKTsKPiA+ICAKPiA+IC0JcmV0dXJuIGRldi0+ZHJpdmVyLT5nZXRf dmJsYW5rX2NvdW50ZXIoZGV2LCBjcnRjLT5waXBlKTsKPiA+ICsJcmV0dXJuIGNydGMtPmJhc2Uu ZnVuY3MtPmdldF92YmxhbmtfY291bnRlcigmY3J0Yy0+YmFzZSk7Cj4gPiAgfQo+ID4gIAo+ID4g IHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jcnRjKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ IEBAIC0xNDA5NCwxOCArMTQwOTQsNiBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJcmV0dXJuIDA7Cj4gPiAgfQo+ID4gIAo+ID4g LXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgaW50ZWxfY3J0Y19mdW5jcyA9IHsK PiA+IC0JLmdhbW1hX3NldCA9IGRybV9hdG9taWNfaGVscGVyX2xlZ2FjeV9nYW1tYV9zZXQsCj4g PiAtCS5zZXRfY29uZmlnID0gZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZywKPiA+IC0JLmRl c3Ryb3kgPSBpbnRlbF9jcnRjX2Rlc3Ryb3ksCj4gPiAtCS5wYWdlX2ZsaXAgPSBkcm1fYXRvbWlj X2hlbHBlcl9wYWdlX2ZsaXAsCj4gPiAtCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gaW50ZWxf Y3J0Y19kdXBsaWNhdGVfc3RhdGUsCj4gPiAtCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGludGVs X2NydGNfZGVzdHJveV9zdGF0ZSwKPiA+IC0JLnNldF9jcmNfc291cmNlID0gaW50ZWxfY3J0Y19z ZXRfY3JjX3NvdXJjZSwKPiA+IC0JLnZlcmlmeV9jcmNfc291cmNlID0gaW50ZWxfY3J0Y192ZXJp ZnlfY3JjX3NvdXJjZSwKPiA+IC0JLmdldF9jcmNfc291cmNlcyA9IGludGVsX2NydGNfZ2V0X2Ny Y19zb3VyY2VzLAo+ID4gLX07Cj4gPiAtCj4gPiAgc3RydWN0IHdhaXRfcnBzX2Jvb3N0IHsKPiA+ ICAJc3RydWN0IHdhaXRfcXVldWVfZW50cnkgd2FpdDsKPiA+ICAKPiA+IEBAIC0xNDg5OSw4ICsx NDg4Nyw3NiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2luaXRfc2NhbGVycyhzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YywKPiA+ICAJc2NhbGVyX3N0YXRlLT5zY2FsZXJfaWQgPSAtMTsKPiA+ICB9 Cj4gPiAgCj4gPiArI2RlZmluZSBJTlRFTF9DUlRDX0ZVTkNTIFwKPiA+ICsJLmdhbW1hX3NldCA9 IGRybV9hdG9taWNfaGVscGVyX2xlZ2FjeV9nYW1tYV9zZXQsIFwKPiA+ICsJLnNldF9jb25maWcg PSBkcm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmlnLCBcCj4gPiArCS5kZXN0cm95ID0gaW50ZWxf Y3J0Y19kZXN0cm95LCBcCj4gPiArCS5wYWdlX2ZsaXAgPSBkcm1fYXRvbWljX2hlbHBlcl9wYWdl X2ZsaXAsIFwKPiA+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBpbnRlbF9jcnRjX2R1cGxp Y2F0ZV9zdGF0ZSwgXAo+ID4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBpbnRlbF9jcnRjX2Rl c3Ryb3lfc3RhdGUsIFwKPiA+ICsJLnNldF9jcmNfc291cmNlID0gaW50ZWxfY3J0Y19zZXRfY3Jj X3NvdXJjZSwgXAo+ID4gKwkudmVyaWZ5X2NyY19zb3VyY2UgPSBpbnRlbF9jcnRjX3ZlcmlmeV9j cmNfc291cmNlLCBcCj4gPiArCS5nZXRfY3JjX3NvdXJjZXMgPSBpbnRlbF9jcnRjX2dldF9jcmNf c291cmNlcwo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgYmR3 X2NydGNfZnVuY3MgPSB7Cj4gPiArCUlOVEVMX0NSVENfRlVOQ1MsCj4gPiArCj4gPiArCS5nZXRf dmJsYW5rX2NvdW50ZXIgPSBnNHhfZ2V0X3ZibGFua19jb3VudGVyLAo+ID4gKwkuZW5hYmxlX3Zi bGFuayA9IGJkd19lbmFibGVfdmJsYW5rLAo+ID4gKwkuZGlzYWJsZV92YmxhbmsgPSBiZHdfZGlz YWJsZV92YmxhbmssCj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9j cnRjX2Z1bmNzIGlsa19jcnRjX2Z1bmNzID0gewo+ID4gKwlJTlRFTF9DUlRDX0ZVTkNTLAo+ID4g Kwo+ID4gKwkuZ2V0X3ZibGFua19jb3VudGVyID0gZzR4X2dldF92YmxhbmtfY291bnRlciwKPiA+ ICsJLmVuYWJsZV92YmxhbmsgPSBpbGtfZW5hYmxlX3ZibGFuaywKPiA+ICsJLmRpc2FibGVfdmJs YW5rID0gaWxrX2Rpc2FibGVfdmJsYW5rLAo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBnNHhfY3J0Y19mdW5jcyA9IHsKPiA+ICsJSU5URUxfQ1JU Q19GVU5DUywKPiA+ICsKPiA+ICsJLmdldF92YmxhbmtfY291bnRlciA9IGc0eF9nZXRfdmJsYW5r X2NvdW50ZXIsCj4gPiArCS5lbmFibGVfdmJsYW5rID0gaTk2NV9lbmFibGVfdmJsYW5rLAo+ID4g KwkuZGlzYWJsZV92YmxhbmsgPSBpOTY1X2Rpc2FibGVfdmJsYW5rLAo+ID4gK307Cj4gPiArCj4g PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBpOTY1X2NydGNfZnVuY3MgPSB7 Cj4gPiArCUlOVEVMX0NSVENfRlVOQ1MsCj4gPiArCj4gPiArCS5nZXRfdmJsYW5rX2NvdW50ZXIg PSBpOTE1X2dldF92YmxhbmtfY291bnRlciwKPiA+ICsJLmVuYWJsZV92YmxhbmsgPSBpOTY1X2Vu YWJsZV92YmxhbmssCj4gPiArCS5kaXNhYmxlX3ZibGFuayA9IGk5NjVfZGlzYWJsZV92Ymxhbmss Cj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGk5 NDVnbV9jcnRjX2Z1bmNzID0gewo+ID4gKwlJTlRFTF9DUlRDX0ZVTkNTLAo+ID4gKwo+ID4gKwku Z2V0X3ZibGFua19jb3VudGVyID0gaTkxNV9nZXRfdmJsYW5rX2NvdW50ZXIsCj4gPiArCS5lbmFi bGVfdmJsYW5rID0gaTk0NWdtX2VuYWJsZV92YmxhbmssCj4gPiArCS5kaXNhYmxlX3ZibGFuayA9 IGk5NDVnbV9kaXNhYmxlX3ZibGFuaywKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2NydGNfZnVuY3MgaTkxNV9jcnRjX2Z1bmNzID0gewo+ID4gKwlJTlRFTF9DUlRD X0ZVTkNTLAo+ID4gKwo+ID4gKwkuZ2V0X3ZibGFua19jb3VudGVyID0gaTkxNV9nZXRfdmJsYW5r X2NvdW50ZXIsCj4gPiArCS5lbmFibGVfdmJsYW5rID0gaTh4eF9lbmFibGVfdmJsYW5rLAo+ID4g KwkuZGlzYWJsZV92YmxhbmsgPSBpOHh4X2Rpc2FibGVfdmJsYW5rLAo+ID4gK307Cj4gPiArCj4g PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBpOHh4X2NydGNfZnVuY3MgPSB7 Cj4gPiArCUlOVEVMX0NSVENfRlVOQ1MsCj4gPiArCj4gPiArCS8qIG5vIGh3IHZibGFuayBjb3Vu dGVyICovCj4gPiArCS5lbmFibGVfdmJsYW5rID0gaTh4eF9lbmFibGVfdmJsYW5rLAo+ID4gKwku ZGlzYWJsZV92YmxhbmsgPSBpOHh4X2Rpc2FibGVfdmJsYW5rLAo+ID4gK307Cj4gPiArCj4gPiAg c3RhdGljIGludCBpbnRlbF9jcnRjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBlbnVtIHBpcGUgcGlwZSkKPiA+ICB7Cj4gPiArCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19m dW5jcyAqZnVuY3M7Cj4gPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+ID4gIAlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IE5VTEw7Cj4gPiAgCXN0cnVjdCBp bnRlbF9wbGFuZSAqcHJpbWFyeSA9IE5VTEw7Cj4gPiBAQCAtMTQ5NDQsMTAgKzE1MDAwLDI4IEBA IHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgZW51bSBwaXBlIHBpcGUpCj4gPiAgCX0KPiA+ICAJaW50ZWxfY3J0Yy0+cGxhbmVfaWRz X21hc2sgfD0gQklUKGN1cnNvci0+aWQpOwo+ID4gIAo+ID4gKwlpZiAoSEFTX0dNQ0goZGV2X3By aXYpKSB7Cj4gPiArCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgfHwKPiA+ICsJCSAgICBJ U19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19HNFgoZGV2X3ByaXYpKQo+ID4gKwkJCWZ1bmNz ID0gJmc0eF9jcnRjX2Z1bmNzOwo+ID4gKwkJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA0KSkK PiA+ICsJCQlmdW5jcyA9ICZpOTY1X2NydGNfZnVuY3M7Cj4gPiArCQllbHNlIGlmIChJU19JOTQ1 R00oZGV2X3ByaXYpKQo+ID4gKwkJCWZ1bmNzID0gJmk5NDVnbV9jcnRjX2Z1bmNzOwo+ID4gKwkJ ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAzKQo+ID4gKwkJCWZ1bmNzID0gJmk5MTVf Y3J0Y19mdW5jczsKPiA+ICsJCWVsc2UKPiA+ICsJCQlmdW5jcyA9ICZpOHh4X2NydGNfZnVuY3M7 Cj4gPiArCX0gZWxzZSB7Cj4gPiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQo+ID4g KwkJCWZ1bmNzID0gJmJkd19jcnRjX2Z1bmNzOwo+ID4gKwkJZWxzZQo+ID4gKwkJCWZ1bmNzID0g Jmlsa19jcnRjX2Z1bmNzOwo+ID4gKwl9Cj4gPiArCj4gCj4gVGhhdCdzIGEga2luZCBvZiBvZGQg b3JkZXJpbmcgd3J0IGV2ZXJ5dGhpbmcgZWxzZSB3ZSBoYXZlLiBJIGd1ZXNzIGl0J3MKPiBDSFYg dGhhdCBtZXNzZXMgdXAgdGhlIHJlZ3VsYXIgb3JkZXIgd29yc3Q/CgpJJ3ZlIHN0YXJ0ZWQgdG8g dXNlIHRoaXMgZ21jaCB2cy4gbm90IHNwbGl0IGVsc2V3aGVyZSBhcyB3ZWxsCmJlY2F1c2UgdHJ5 aW5nIHRvIHN0dWZmIHRoZW0gYWxsIGludG8gYSBzaW5nbGUgaWYgbGFkZGVyIGlzCmp1c3QgY29u ZnVzaW5nLgoKPiAKPiAKPiAKPiA+ICAJcmV0ID0gZHJtX2NydGNfaW5pdF93aXRoX3BsYW5lcygm ZGV2X3ByaXYtPmRybSwgJmludGVsX2NydGMtPmJhc2UsCj4gPiAgCQkJCQkmcHJpbWFyeS0+YmFz ZSwgJmN1cnNvci0+YmFzZSwKPiA+IC0JCQkJCSZpbnRlbF9jcnRjX2Z1bmNzLAo+ID4gLQkJCQkJ InBpcGUgJWMiLCBwaXBlX25hbWUocGlwZSkpOwo+ID4gKwkJCQkJZnVuY3MsICJwaXBlICVjIiwg cGlwZV9uYW1lKHBpcGUpKTsKPiA+ICAJaWYgKHJldCkKPiA+ICAJCWdvdG8gZmFpbDsKPiA+ICAK PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4gaW5kZXggMmFlYjA0MzFjNDMyLi4xY2MyN2Vl YWUzZGUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gPiBAQCAtOTE4LDExICs5 MTgsMTIgQEAgc3RhdGljIHZvaWQgaTkxNV9lbmFibGVfYXNsZV9waXBlc3RhdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgLyogQ2FsbGVkIGZyb20gZHJtIGdlbmVyaWMg Y29kZSwgcGFzc2VkIGEgJ2NydGMnLCB3aGljaAo+ID4gICAqIHdlIHVzZSBhcyBhIHBpcGUgaW5k ZXgKPiA+ICAgKi8KPiA+IC1zdGF0aWMgdTMyIGk5MTVfZ2V0X3ZibGFua19jb3VudGVyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQo+ID4gK3UzMiBpOTE1X2dldF92 YmxhbmtfY291bnRlcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPiAgewo+ID4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiAtCXN0cnVjdCBk cm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1twaXBlXTsKPiA+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+ID4gKwlz dHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2X3ByaXYtPmRybS52YmxhbmtbZHJt X2NydGNfaW5kZXgoY3J0YyldOwo+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSA9ICZ2YmxhbmstPmh3bW9kZTsKPiA+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9j cnRjKGNydGMpLT5waXBlOwo+ID4gIAlpOTE1X3JlZ190IGhpZ2hfZnJhbWUsIGxvd19mcmFtZTsK PiA+ICAJdTMyIGhpZ2gxLCBoaWdoMiwgbG93LCBwaXhlbCwgdmJsX3N0YXJ0LCBoc3luY19zdGFy dCwgaHRvdGFsOwo+ID4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ID4gQEAgLTk4Myw5ICs5 ODQsMTAgQEAgc3RhdGljIHUzMiBpOTE1X2dldF92YmxhbmtfY291bnRlcihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKPiA+ICAJcmV0dXJuICgoKGhpZ2gxIDw8IDgp IHwgbG93KSArIChwaXhlbCA+PSB2Ymxfc3RhcnQpKSAmIDB4ZmZmZmZmOwo+ID4gIH0KPiA+ICAK PiA+IC1zdGF0aWMgdTMyIGc0eF9nZXRfdmJsYW5rX2NvdW50ZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4gPiArdTMyIGc0eF9nZXRfdmJsYW5rX2NvdW50ZXIo c3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4gIHsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7Cj4gPiArCWVudW0gcGlwZSBwaXBlID0g dG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsKPiA+ICAKPiA+ICAJcmV0dXJuIEk5MTVfUkVBRChQ SVBFX0ZSTUNPVU5UX0c0WChwaXBlKSk7Cj4gPiAgfQo+ID4gQEAgLTMyMzQsOSArMzIzNiwxMCBA QCBzdGF0aWMgaXJxcmV0dXJuX3QgZ2VuMTFfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJn KQo+ID4gIC8qIENhbGxlZCBmcm9tIGRybSBnZW5lcmljIGNvZGUsIHBhc3NlZCAnY3J0Yycgd2hp Y2gKPiA+ICAgKiB3ZSB1c2UgYXMgYSBwaXBlIGluZGV4Cj4gPiAgICovCj4gPiAtc3RhdGljIGlu dCBpOHh4X2VuYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50 IHBpcGUpCj4gPiAraW50IGk4eHhfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4gPiAgewo+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRldik7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Yy0+ZGV2KTsKPiA+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5w aXBlOwo+ID4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ID4gIAo+ID4gIAlzcGluX2xvY2tf aXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7Cj4gPiBAQCAtMzI0NiwxOSAr MzI0OSwyMCBAQCBzdGF0aWMgaW50IGk4eHhfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKPiA+ICAJcmV0dXJuIDA7Cj4gPiAgfQo+ID4gIAo+ ID4gLXN0YXRpYyBpbnQgaTk0NWdtX2VuYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdW5zaWduZWQgaW50IHBpcGUpCj4gPiAraW50IGk5NDVnbV9lbmFibGVfdmJsYW5rKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKPiA+ICB7Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+ID4gIAo+ID4gIAlpZiAoZGV2X3ByaXYtPmk5 NDVnbV92YmxhbmsuZW5hYmxlZCsrID09IDApCj4gPiAgCQlzY2hlZHVsZV93b3JrKCZkZXZfcHJp di0+aTk0NWdtX3ZibGFuay53b3JrKTsKPiA+ICAKPiA+IC0JcmV0dXJuIGk4eHhfZW5hYmxlX3Zi bGFuayhkZXYsIHBpcGUpOwo+ID4gKwlyZXR1cm4gaTh4eF9lbmFibGVfdmJsYW5rKGNydGMpOwo+ ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgaW50IGk5NjVfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKPiA+ICtpbnQgaTk2NV9lbmFibGVfdmJs YW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+ICB7Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+ID4gKwllbnVtIHBpcGUgcGlw ZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxh Z3M7Cj4gPiAgCj4gPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGly cWZsYWdzKTsKPiA+IEBAIC0zMjY5LDkgKzMyNzMsMTAgQEAgc3RhdGljIGludCBpOTY1X2VuYWJs ZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4gPiAg CXJldHVybiAwOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgaW50IGlyb25sYWtlX2VuYWJsZV92 Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4gPiAraW50 IGlsa19lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+ICB7Cj4gPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+ID4g KwllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gPiAgCXVuc2ln bmVkIGxvbmcgaXJxZmxhZ3M7Cj4gPiAgCXUzMiBiaXQgPSBJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDcgPwo+ID4gIAkJREVfUElQRV9WQkxBTktfSVZCKHBpcGUpIDogREVfUElQRV9WQkxBTksocGlw ZSk7Cj4gPiBAQCAtMzI4NCwxNCArMzI4OSwxNSBAQCBzdGF0aWMgaW50IGlyb25sYWtlX2VuYWJs ZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4gPiAg CSAqIFBTUiBpcyBhY3RpdmUgYXMgbm8gZnJhbWVzIGFyZSBnZW5lcmF0ZWQuCj4gPiAgCSAqLwo+ ID4gIAlpZiAoSEFTX1BTUihkZXZfcHJpdikpCj4gPiAtCQlkcm1fdmJsYW5rX3Jlc3RvcmUoZGV2 LCBwaXBlKTsKPiA+ICsJCWRybV9jcnRjX3ZibGFua19yZXN0b3JlKGNydGMpOwo+ID4gIAo+ID4g IAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIGludCBnZW44X2VuYWJsZV92Ymxh bmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4gPiAraW50IGJk d19lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+ICB7Cj4gPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+ID4gKwll bnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gPiAgCXVuc2lnbmVk IGxvbmcgaXJxZmxhZ3M7Cj4gPiAgCj4gPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+ aXJxX2xvY2ssIGlycWZsYWdzKTsKPiA+IEBAIC0zMzAyLDcgKzMzMDgsNyBAQCBzdGF0aWMgaW50 IGdlbjhfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQg cGlwZSkKPiA+ICAJICogUFNSIGlzIGFjdGl2ZSBhcyBubyBmcmFtZXMgYXJlIGdlbmVyYXRlZCwg c28gY2hlY2sgb25seSBmb3IgUFNSLgo+ID4gIAkgKi8KPiA+ICAJaWYgKEhBU19QU1IoZGV2X3By aXYpKQo+ID4gLQkJZHJtX3ZibGFua19yZXN0b3JlKGRldiwgcGlwZSk7Cj4gPiArCQlkcm1fY3J0 Y192YmxhbmtfcmVzdG9yZShjcnRjKTsKPiA+ICAKPiA+ICAJcmV0dXJuIDA7Cj4gPiAgfQo+ID4g QEAgLTMzMTAsOSArMzMxNiwxMCBAQCBzdGF0aWMgaW50IGdlbjhfZW5hYmxlX3ZibGFuayhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKPiA+ICAvKiBDYWxsZWQgZnJv bSBkcm0gZ2VuZXJpYyBjb2RlLCBwYXNzZWQgJ2NydGMnIHdoaWNoCj4gPiAgICogd2UgdXNlIGFz IGEgcGlwZSBpbmRleAo+ID4gICAqLwo+ID4gLXN0YXRpYyB2b2lkIGk4eHhfZGlzYWJsZV92Ymxh bmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4gPiArdm9pZCBp OHh4X2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+ICB7Cj4gPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+ID4g KwllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gPiAgCXVuc2ln bmVkIGxvbmcgaXJxZmxhZ3M7Cj4gPiAgCj4gPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJp di0+aXJxX2xvY2ssIGlycWZsYWdzKTsKPiA+IEBAIC0zMzIwLDE5ICszMzI3LDIwIEBAIHN0YXRp YyB2b2lkIGk4eHhfZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWdu ZWQgaW50IHBpcGUpCj4gPiAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFf bG9jaywgaXJxZmxhZ3MpOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgdm9pZCBpOTQ1Z21fZGlz YWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4g PiArdm9pZCBpOTQ1Z21fZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4g IHsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYp Owo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMt PmRldik7Cj4gPiAgCj4gPiAtCWk4eHhfZGlzYWJsZV92YmxhbmsoZGV2LCBwaXBlKTsKPiA+ICsJ aTh4eF9kaXNhYmxlX3ZibGFuayhjcnRjKTsKPiA+ICAKPiA+ICAJaWYgKC0tZGV2X3ByaXYtPmk5 NDVnbV92YmxhbmsuZW5hYmxlZCA9PSAwKQo+ID4gIAkJc2NoZWR1bGVfd29yaygmZGV2X3ByaXYt Pmk5NDVnbV92Ymxhbmsud29yayk7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkIGk5NjVf ZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUp Cj4gPiArdm9pZCBpOTY1X2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+ ICB7Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRj LT5kZXYpOwo+ID4gKwllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7 Cj4gPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gPiAgCj4gPiAgCXNwaW5fbG9ja19pcnFz YXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ssIGlycWZsYWdzKTsKPiA+IEBAIC0zMzQxLDkgKzMzNDks MTAgQEAgc3RhdGljIHZvaWQgaTk2NV9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKPiA+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2 X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lk IGlyb25sYWtlX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVk IGludCBwaXBlKQo+ID4gK3ZvaWQgaWxrX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKPiA+ICB7Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjcnRjLT5kZXYpOwo+ID4gKwllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0 YyktPnBpcGU7Cj4gPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gPiAgCXUzMiBiaXQgPSBJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDcgPwo+ID4gIAkJREVfUElQRV9WQkxBTktfSVZCKHBpcGUp IDogREVfUElQRV9WQkxBTksocGlwZSk7Cj4gPiBAQCAtMzM1Myw5ICszMzYyLDEwIEBAIHN0YXRp YyB2b2lkIGlyb25sYWtlX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVu c2lnbmVkIGludCBwaXBlKQo+ID4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+ aXJxX2xvY2ssIGlycWZsYWdzKTsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgZ2VuOF9k aXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkK PiA+ICt2b2lkIGJkd19kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPiAg ewo+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7 Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ ZGV2KTsKPiA+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOwo+ ID4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ID4gIAo+ID4gIAlzcGluX2xvY2tfaXJxc2F2 ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7Cj4gPiBAQCAtMzM2Myw3ICszMzczLDcg QEAgc3RhdGljIHZvaWQgZ2VuOF9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB1bnNpZ25lZCBpbnQgcGlwZSkKPiA+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3By aXYtPmlycV9sb2NrLCBpcnFmbGFncyk7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkIGk5 NDVnbV92Ymxhbmtfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiA+ICt2b2lk IGk5NDVnbV92Ymxhbmtfd29ya19mdW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiA+ICB7 Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gPiAgCQljb250YWlu ZXJfb2Yod29yaywgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUsIGk5NDVnbV92Ymxhbmsud29yayk7 Cj4gPiBAQCAtNDc5NiwxMSArNDgwNiw2IEBAIHZvaWQgaW50ZWxfaXJxX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA4KQo+ID4gIAkJcnBzLT5wbV9pbnRybXNrX21ieiB8PSBHRU44X1BNSU5UUl9ESVNBQkxFX1JF RElSRUNUX1RPX0dVQzsKPiA+ICAKPiA+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSB8 fCBJU19HNFgoZGV2X3ByaXYpKQo+ID4gLQkJZGV2LT5kcml2ZXItPmdldF92YmxhbmtfY291bnRl ciA9IGc0eF9nZXRfdmJsYW5rX2NvdW50ZXI7Cj4gPiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gMykKPiA+IC0JCWRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIgPSBpOTE1 X2dldF92YmxhbmtfY291bnRlcjsKPiA+IC0KPiA+ICAJZGV2LT52YmxhbmtfZGlzYWJsZV9pbW1l ZGlhdGUgPSB0cnVlOwo+ID4gIAo+ID4gIAkvKiBNb3N0IHBsYXRmb3JtcyB0cmVhdCB0aGUgZGlz cGxheSBpcnEgYmxvY2sgYXMgYW4gYWx3YXlzLW9uCj4gPiBAQCAtNDgzMCwzMiArNDgzNSwyNCBA QCB2b2lkIGludGVsX2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiA+ICAJCWRldi0+ZHJpdmVyLT5pcnFfcHJlaW5zdGFsbCA9IGNoZXJyeXZpZXdfaXJxX3Jlc2V0 Owo+ID4gIAkJZGV2LT5kcml2ZXItPmlycV9wb3N0aW5zdGFsbCA9IGNoZXJyeXZpZXdfaXJxX3Bv c3RpbnN0YWxsOwo+ID4gIAkJZGV2LT5kcml2ZXItPmlycV91bmluc3RhbGwgPSBjaGVycnl2aWV3 X2lycV9yZXNldDsKPiA+IC0JCWRldi0+ZHJpdmVyLT5lbmFibGVfdmJsYW5rID0gaTk2NV9lbmFi bGVfdmJsYW5rOwo+ID4gLQkJZGV2LT5kcml2ZXItPmRpc2FibGVfdmJsYW5rID0gaTk2NV9kaXNh YmxlX3ZibGFuazsKPiA+ICAJCWRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXAgPSBpOTE1 X2hwZF9pcnFfc2V0dXA7Cj4gPiAgCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikp IHsKPiA+ICAJCWRldi0+ZHJpdmVyLT5pcnFfaGFuZGxlciA9IHZhbGxleXZpZXdfaXJxX2hhbmRs ZXI7Cj4gPiAgCQlkZXYtPmRyaXZlci0+aXJxX3ByZWluc3RhbGwgPSB2YWxsZXl2aWV3X2lycV9y ZXNldDsKPiA+ICAJCWRldi0+ZHJpdmVyLT5pcnFfcG9zdGluc3RhbGwgPSB2YWxsZXl2aWV3X2ly cV9wb3N0aW5zdGFsbDsKPiA+ICAJCWRldi0+ZHJpdmVyLT5pcnFfdW5pbnN0YWxsID0gdmFsbGV5 dmlld19pcnFfcmVzZXQ7Cj4gPiAtCQlkZXYtPmRyaXZlci0+ZW5hYmxlX3ZibGFuayA9IGk5NjVf ZW5hYmxlX3ZibGFuazsKPiA+IC0JCWRldi0+ZHJpdmVyLT5kaXNhYmxlX3ZibGFuayA9IGk5NjVf ZGlzYWJsZV92Ymxhbms7Cj4gPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVwID0g aTkxNV9ocGRfaXJxX3NldHVwOwo+ID4gIAl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gMTEpIHsKPiA+ICAJCWRldi0+ZHJpdmVyLT5pcnFfaGFuZGxlciA9IGdlbjExX2lycV9oYW5k bGVyOwo+ID4gIAkJZGV2LT5kcml2ZXItPmlycV9wcmVpbnN0YWxsID0gZ2VuMTFfaXJxX3Jlc2V0 Owo+ID4gIAkJZGV2LT5kcml2ZXItPmlycV9wb3N0aW5zdGFsbCA9IGdlbjExX2lycV9wb3N0aW5z dGFsbDsKPiA+ICAJCWRldi0+ZHJpdmVyLT5pcnFfdW5pbnN0YWxsID0gZ2VuMTFfaXJxX3Jlc2V0 Owo+ID4gLQkJZGV2LT5kcml2ZXItPmVuYWJsZV92YmxhbmsgPSBnZW44X2VuYWJsZV92Ymxhbms7 Cj4gPiAtCQlkZXYtPmRyaXZlci0+ZGlzYWJsZV92YmxhbmsgPSBnZW44X2Rpc2FibGVfdmJsYW5r Owo+ID4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cCA9IGdlbjExX2hwZF9pcnFf c2V0dXA7Cj4gPiAgCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7Cj4gPiAg CQlkZXYtPmRyaXZlci0+aXJxX2hhbmRsZXIgPSBnZW44X2lycV9oYW5kbGVyOwo+ID4gIAkJZGV2 LT5kcml2ZXItPmlycV9wcmVpbnN0YWxsID0gZ2VuOF9pcnFfcmVzZXQ7Cj4gPiAgCQlkZXYtPmRy aXZlci0+aXJxX3Bvc3RpbnN0YWxsID0gZ2VuOF9pcnFfcG9zdGluc3RhbGw7Cj4gPiAgCQlkZXYt PmRyaXZlci0+aXJxX3VuaW5zdGFsbCA9IGdlbjhfaXJxX3Jlc2V0Owo+ID4gLQkJZGV2LT5kcml2 ZXItPmVuYWJsZV92YmxhbmsgPSBnZW44X2VuYWJsZV92Ymxhbms7Cj4gPiAtCQlkZXYtPmRyaXZl ci0+ZGlzYWJsZV92YmxhbmsgPSBnZW44X2Rpc2FibGVfdmJsYW5rOwo+ID4gIAkJaWYgKElTX0dF TjlfTFAoZGV2X3ByaXYpKQo+ID4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXAg PSBieHRfaHBkX2lycV9zZXR1cDsKPiA+ICAJCWVsc2UgaWYgKElOVEVMX1BDSF9UWVBFKGRldl9w cml2KSA+PSBQQ0hfU1BUKQo+ID4gQEAgLTQ4NjcsOCArNDg2NCw2IEBAIHZvaWQgaW50ZWxfaXJx X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gIAkJZGV2LT5kcml2 ZXItPmlycV9wcmVpbnN0YWxsID0gaXJvbmxha2VfaXJxX3Jlc2V0Owo+ID4gIAkJZGV2LT5kcml2 ZXItPmlycV9wb3N0aW5zdGFsbCA9IGlyb25sYWtlX2lycV9wb3N0aW5zdGFsbDsKPiA+ICAJCWRl di0+ZHJpdmVyLT5pcnFfdW5pbnN0YWxsID0gaXJvbmxha2VfaXJxX3Jlc2V0Owo+ID4gLQkJZGV2 LT5kcml2ZXItPmVuYWJsZV92YmxhbmsgPSBpcm9ubGFrZV9lbmFibGVfdmJsYW5rOwo+ID4gLQkJ ZGV2LT5kcml2ZXItPmRpc2FibGVfdmJsYW5rID0gaXJvbmxha2VfZGlzYWJsZV92Ymxhbms7Cj4g PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5ocGRfaXJxX3NldHVwID0gaWxrX2hwZF9pcnFfc2V0dXA7 Cj4gPiAgCX0gZWxzZSB7Cj4gPiAgCQlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkgewo+ID4gQEAg LTQ4NzYsMjkgKzQ4NzEsMjEgQEAgdm9pZCBpbnRlbF9pcnFfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgCQkJZGV2LT5kcml2ZXItPmlycV9wb3N0aW5zdGFsbCA9 IGk4eHhfaXJxX3Bvc3RpbnN0YWxsOwo+ID4gIAkJCWRldi0+ZHJpdmVyLT5pcnFfaGFuZGxlciA9 IGk4eHhfaXJxX2hhbmRsZXI7Cj4gPiAgCQkJZGV2LT5kcml2ZXItPmlycV91bmluc3RhbGwgPSBp OHh4X2lycV9yZXNldDsKPiA+IC0JCQlkZXYtPmRyaXZlci0+ZW5hYmxlX3ZibGFuayA9IGk4eHhf ZW5hYmxlX3ZibGFuazsKPiA+IC0JCQlkZXYtPmRyaXZlci0+ZGlzYWJsZV92YmxhbmsgPSBpOHh4 X2Rpc2FibGVfdmJsYW5rOwo+ID4gIAkJfSBlbHNlIGlmIChJU19JOTQ1R00oZGV2X3ByaXYpKSB7 Cj4gPiAgCQkJZGV2LT5kcml2ZXItPmlycV9wcmVpbnN0YWxsID0gaTkxNV9pcnFfcmVzZXQ7Cj4g PiAgCQkJZGV2LT5kcml2ZXItPmlycV9wb3N0aW5zdGFsbCA9IGk5MTVfaXJxX3Bvc3RpbnN0YWxs Owo+ID4gIAkJCWRldi0+ZHJpdmVyLT5pcnFfdW5pbnN0YWxsID0gaTkxNV9pcnFfcmVzZXQ7Cj4g PiAgCQkJZGV2LT5kcml2ZXItPmlycV9oYW5kbGVyID0gaTkxNV9pcnFfaGFuZGxlcjsKPiA+IC0J CQlkZXYtPmRyaXZlci0+ZW5hYmxlX3ZibGFuayA9IGk5NDVnbV9lbmFibGVfdmJsYW5rOwo+ID4g LQkJCWRldi0+ZHJpdmVyLT5kaXNhYmxlX3ZibGFuayA9IGk5NDVnbV9kaXNhYmxlX3ZibGFuazsK PiA+ICAJCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCAzKSkgewo+ID4gIAkJCWRldi0+ZHJp dmVyLT5pcnFfcHJlaW5zdGFsbCA9IGk5MTVfaXJxX3Jlc2V0Owo+ID4gIAkJCWRldi0+ZHJpdmVy LT5pcnFfcG9zdGluc3RhbGwgPSBpOTE1X2lycV9wb3N0aW5zdGFsbDsKPiA+ICAJCQlkZXYtPmRy aXZlci0+aXJxX3VuaW5zdGFsbCA9IGk5MTVfaXJxX3Jlc2V0Owo+ID4gIAkJCWRldi0+ZHJpdmVy LT5pcnFfaGFuZGxlciA9IGk5MTVfaXJxX2hhbmRsZXI7Cj4gPiAtCQkJZGV2LT5kcml2ZXItPmVu YWJsZV92YmxhbmsgPSBpOHh4X2VuYWJsZV92Ymxhbms7Cj4gPiAtCQkJZGV2LT5kcml2ZXItPmRp c2FibGVfdmJsYW5rID0gaTh4eF9kaXNhYmxlX3ZibGFuazsKPiA+ICAJCX0gZWxzZSB7Cj4gPiAg CQkJZGV2LT5kcml2ZXItPmlycV9wcmVpbnN0YWxsID0gaTk2NV9pcnFfcmVzZXQ7Cj4gPiAgCQkJ ZGV2LT5kcml2ZXItPmlycV9wb3N0aW5zdGFsbCA9IGk5NjVfaXJxX3Bvc3RpbnN0YWxsOwo+ID4g IAkJCWRldi0+ZHJpdmVyLT5pcnFfdW5pbnN0YWxsID0gaTk2NV9pcnFfcmVzZXQ7Cj4gPiAgCQkJ ZGV2LT5kcml2ZXItPmlycV9oYW5kbGVyID0gaTk2NV9pcnFfaGFuZGxlcjsKPiA+IC0JCQlkZXYt PmRyaXZlci0+ZW5hYmxlX3ZibGFuayA9IGk5NjVfZW5hYmxlX3ZibGFuazsKPiA+IC0JCQlkZXYt PmRyaXZlci0+ZGlzYWJsZV92YmxhbmsgPSBpOTY1X2Rpc2FibGVfdmJsYW5rOwo+ID4gIAkJfQo+ ID4gIAkJaWYgKEk5MTVfSEFTX0hPVFBMVUcoZGV2X3ByaXYpKQo+ID4gIAkJCWRldl9wcml2LT5k aXNwbGF5LmhwZF9pcnFfc2V0dXAgPSBpOTE1X2hwZF9pcnFfc2V0dXA7Cj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfaXJxLmgKPiA+IGluZGV4IGNiMjVkZDIxMzMwOC4uZWY3ODJlNWFiMjQwIDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuaAo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuaAo+ID4gQEAgLTExNCw0ICsxMTQsMTggQEAgdm9pZCBn ZW4xMV9yZXNldF9ndWNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7 Cj4gPiAgdm9pZCBnZW4xMV9lbmFibGVfZ3VjX2ludGVycnVwdHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpOwo+ID4gIHZvaWQgZ2VuMTFfZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gPiAgCj4gPiArdTMyIGk5MTVfZ2V0X3ZibGFu a19jb3VudGVyKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gPiArdTMyIGc0eF9nZXRfdmJsYW5r X2NvdW50ZXIoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiA+ICsKPiA+ICtpbnQgaTh4eF9lbmFi bGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gPiAraW50IGk5NDVnbV9lbmFibGVf dmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gPiAraW50IGk5NjVfZW5hYmxlX3ZibGFu ayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ID4gK2ludCBpbGtfZW5hYmxlX3ZibGFuayhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpOwo+ID4gK2ludCBiZHdfZW5hYmxlX3ZibGFuayhzdHJ1Y3QgZHJt X2NydGMgKmNydGMpOwo+ID4gK3ZvaWQgaTh4eF9kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpOwo+ID4gK3ZvaWQgaTk0NWdtX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0 YyAqY3J0Yyk7Cj4gPiArdm9pZCBpOTY1X2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAq Y3J0Yyk7Cj4gPiArdm9pZCBpbGtfZGlzYWJsZV92Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRj KTsKPiA+ICt2b2lkIGJkd19kaXNhYmxlX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ IAo+ICpjcmluZ2UqIGF0IGV4cG9zaW5nIHNvIG1hbnkgcGxhdGZvcm0gc3BlY2lmaWMgZnVuY3Rp b25zIGZyb20KPiBpOTE1X2lycS5jLgoKWWVhaC4gT1RPSCBJIGRvbid0IHJlYWxseSB3YW50IHRv IG1vdmUgdGhlbSBvdXQgZWl0aGVyIGJlY2F1c2UgdGhlbgp0aGV5J3JlIHRvbyBmYXIgZnJvbSB0 aGUgaXJxIGhhbmRsZXJzLgoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=