From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Siluvery, Arun" Subject: Re: [PATCH 2/2] drm/i915/gen8: Apply Per-context workarounds using W/A batch buffers Date: Mon, 02 Mar 2015 10:23:27 +0000 Message-ID: <54F43A1F.3020909@linux.intel.com> References: <1424886882-8117-1-git-send-email-arun.siluvery@linux.intel.com> <1424886882-8117-3-git-send-email-arun.siluvery@linux.intel.com> <54F43728.7070105@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id CC58C6E431 for ; Mon, 2 Mar 2015 02:23:30 -0800 (PST) In-Reply-To: <54F43728.7070105@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michel Thierry , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDIvMDMvMjAxNSAxMDoxMCwgTWljaGVsIFRoaWVycnkgd3JvdGU6Cj4KPgo+IE9uIDI1LzAy LzE1IDE3OjU0LCBBcnVuIFNpbHV2ZXJ5IHdyb3RlOgo+PiBTb21lIG9mIHRoZSB3b3JrYXJvdW5k cyBhcmUgdG8gYmUgYXBwbGllZCBkdXJpbmcgY29udGV4dCBzYXZlIGJ1dCBiZWZvcmUKPj4gcmVz dG9yZSBhbmQgc29tZSBhdCB0aGUgZW5kIG9mIGNvbnRleHQgc2F2ZS9yZXN0b3JlIGJ1dCBiZWZv cmUgZXhlY3V0aW5nCj4+IHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlIHJpbmcuIFdvcmthcm91bmQg YmF0Y2ggYnVmZmVycyBhcmUgY3JlYXRlZCBmb3IKPj4gdGhpcyBwdXJwb3NlIGFzIHRoZXkgY2Fu bm90IGJlIGFwcGxpZWQgdXNpbmcgbm9ybWFsIG1lYW5zLiBIVyBleGVjdXRlcwo+PiB0aGVtIGF0 IHNwZWNpZmljIHN0YWdlcyBkdXJpbmcgY29udGV4dCBzYXZlL3Jlc3RvcmUuCj4+Cj4+IEluIHRo aXMgbWV0aG9kIHdlIGluaXRpYWxpemUgYmF0Y2ggYnVmZmVyIHdpdGggdy9hIGNvbW1hbmRzIGFu ZCBpdHMgYWRkcmVzcwo+PiBpcyBzdXBwbGllZCB1c2luZyBjb250ZXh0IG9mZnNldCBwb2ludGVy cyB3aGVuIGEgY29udGV4dCBpcyBpbml0aWFsaXplZC4KPj4KPj4gVGhpcyBwYXRjaCBpbnRyb2R1 Y2VzIGluZGlyZWN0IGFuZCBwZXItY29udGV4dCBiYXRjaCBidWZmZXJzIHVzaW5nIHdoaWNoCj4+ IGZvbGxvd2luZyB3b3JrYXJvdW5kcyBhcmUgYXBwbGllZC4gVGhlc2UgYXJlIHJlcXVpcmVkIHRv IGZpeCBpc3N1ZXMKPj4gb2JzZXJ2ZWQgd2l0aCBwcmVlbXB0aW9uIHJlbGF0ZWQgd29ya2xvYWRz Lgo+Pgo+PiBJbiBJbmRpcmVjdCBjb250ZXh0IHcvYSBiYXRjaCBidWZmZXIsCj4+ICtXYURpc2Fi bGVDdHhSZXN0b3JlQXJiaXRyYXRpb24KPj4gK1dhRmx1c2hDb2hlcmVudEwzQ2FjaGVMaW5lc0F0 Q29udGV4dFN3aXRjaAo+PiArV2FDbGVhclNsbVNwYWNlQXRDb250ZXh0U3dpdGNoCj4+Cj4+IElu IFBlciBjb250ZXh0IHcvYSBiYXRjaCBidWZmZXIsCj4+ICtXYURpc2FibGVDdHhSZXN0b3JlQXJi aXRyYXRpb24KPj4gK1dhUnNSZXN0b3JlV2l0aFBlckN0eHRCYgo+Pgo+PiB2MjogVXNlIEdUVCBh ZGRyZXNzIHR5cGUgZm9yIGFsbCBwcml2aWxlZ2VkIGluc3RydWN0aW9ucywgdXBkYXRlIGFzCj4+ IHBlciBkeW5hbWljIHBpbm5pbmcgY2hhbmdlcywgbWlub3Igc2ltcGxpZmljYXRpb25zLCByZW5h bWUgdmFyaWFibGVzCj4+IGFzIGZvbGxvd3MgdG8ga2VlcCBsaW5lcyB1bmRlciA4MCBjaGFycyBh bmQgcmViYXNlLgo+PiBzL2luZGlyZWN0X2N0eF93YV9yaW5nYnVmL2luZGlyZWN0X2N0eF93YV9i Ygo+PiBzL3Blcl9jdHhfd2FfcmluZ2J1Zi9wZXJfY3R4X3dhX2JiCj4+Cj4+IHYzOiBNb2RpZnkg V0EgQkIgaW5pdGlhbGl6YXRpb24gdG8gR2VuIHNwZWNpZmljLgo+Pgo+PiBDaGFuZ2UtSWQ6IEkw Y2VkYjUzNmI3ZjZkOWYxMGJhOWU4MWJhNjI1ODQ4ZTdiYWI2MDNjCj4+IFNpZ25lZC1vZmYtYnk6 IFJhZmFlbCBCYXJiYWxobyA8cmFmYWVsLmJhcmJhbGhvQGludGVsLmNvbT4KPj4gU2lnbmVkLW9m Zi1ieTogQXJ1biBTaWx1dmVyeSA8YXJ1bi5zaWx1dmVyeUBsaW51eC5pbnRlbC5jb20+Cj4+IC0t LQo+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDMgKwo+ PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgfCAgMzAgKysrLQo+ PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAzMDIgKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0KPj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5oIHwgICAzICsKPj4gICAgNCBmaWxlcyBjaGFuZ2VkLCAyOTcgaW5zZXJ0 aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBp bmRleCBkNDIwNDBmLi44NmNkYjUyIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4g QEAgLTc3NCw2ICs3NzQsOSBAQCBzdHJ1Y3QgaW50ZWxfY29udGV4dCB7Cj4+Cj4+ICAgIAkvKiBF eGVjbGlzdHMgKi8KPj4gICAgCWJvb2wgcmNzX2luaXRpYWxpemVkOwo+PiArCXN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICppbmRpcmVjdF9jdHhfd2FfYmI7Cj4+ICsJc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnBlcl9jdHhfd2FfYmI7Cj4+ICsKPj4gICAgCXN0cnVjdCB7Cj4+ICAgIAkJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKnN0YXRlOwo+PiAgICAJCXN0cnVjdCBpbnRlbF9yaW5nYnVm ZmVyICpyaW5nYnVmOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4gaW5kZXggNTUxNDNjYi4u ZWI0MWQ3ZiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+IEBAIC0zNDcsNiArMzQ3 LDI2IEBACj4+ICAgICNkZWZpbmUgICBNSV9JTlZBTElEQVRFX0JTRAkJKDE8PDcpCj4+ICAgICNk ZWZpbmUgICBNSV9GTFVTSF9EV19VU0VfR1RUCQkoMTw8MikKPj4gICAgI2RlZmluZSAgIE1JX0ZM VVNIX0RXX1VTRV9QUEdUVAkJKDA8PDIpCj4+ICsjZGVmaW5lIE1JX0FUT01JQyhsZW4pCU1JX0lO U1RSKDB4MkYsIChsZW4tMikpCj4+ICsjZGVmaW5lICAgTUlfQVRPTUlDX01FTU9SWV9UWVBFX0dH VFQJKDE8PDIyKQo+PiArI2RlZmluZSAgIE1JX0FUT01JQ19JTkxJTkVfREFUQQkJKDE8PDE4KQo+ PiArI2RlZmluZSAgIE1JX0FUT01JQ19DU19TVEFMTAkJKDE8PDE3KQo+PiArI2RlZmluZSAgIE1J X0FUT01JQ19SRVRVUk5fREFUQV9DVEwJKDE8PDE2KQo+PiArI2RlZmluZSBNSV9BVE9NSUNfT1Bf TUFTSyhvcCkgICgob3ApIDw8IDgpCj4+ICsjZGVmaW5lIE1JX0FUT01JQ19BTkQJTUlfQVRPTUlD X09QX01BU0soMHgwMSkKPj4gKyNkZWZpbmUgTUlfQVRPTUlDX09SCU1JX0FUT01JQ19PUF9NQVNL KDB4MDIpCj4+ICsjZGVmaW5lIE1JX0FUT01JQ19YT1IJTUlfQVRPTUlDX09QX01BU0soMHgwMykK Pj4gKyNkZWZpbmUgTUlfQVRPTUlDX01PVkUJTUlfQVRPTUlDX09QX01BU0soMHgwNCkKPj4gKyNk ZWZpbmUgTUlfQVRPTUlDX0lOQwlNSV9BVE9NSUNfT1BfTUFTSygweDA1KQo+PiArI2RlZmluZSBN SV9BVE9NSUNfREVDCU1JX0FUT01JQ19PUF9NQVNLKDB4MDYpCj4+ICsjZGVmaW5lIE1JX0FUT01J Q19BREQJTUlfQVRPTUlDX09QX01BU0soMHgwNykKPj4gKyNkZWZpbmUgTUlfQVRPTUlDX1NVQglN SV9BVE9NSUNfT1BfTUFTSygweDA4KQo+PiArI2RlZmluZSBNSV9BVE9NSUNfUlNVQglNSV9BVE9N SUNfT1BfTUFTSygweDA5KQo+PiArI2RlZmluZSBNSV9BVE9NSUNfSU1BWAlNSV9BVE9NSUNfT1Bf TUFTSygweDBBKQo+PiArI2RlZmluZSBNSV9BVE9NSUNfSU1JTglNSV9BVE9NSUNfT1BfTUFTSygw eDBCKQo+PiArI2RlZmluZSBNSV9BVE9NSUNfVU1BWAlNSV9BVE9NSUNfT1BfTUFTSygweDBDKQo+ PiArI2RlZmluZSBNSV9BVE9NSUNfVU1JTglNSV9BVE9NSUNfT1BfTUFTSygweDBEKQo+PiArCj4+ ICAgICNkZWZpbmUgTUlfQkFUQ0hfQlVGRkVSCQlNSV9JTlNUUigweDMwLCAxKQo+PiAgICAjZGVm aW5lICAgTUlfQkFUQ0hfTk9OX1NFQ1VSRQkJKDEpCj4+ICAgIC8qIGZvciBzbmIvaXZiL3ZsdiB0 aGlzIGFsc28gbWVhbnMgImJhdGNoIGluIHBwZ3R0IiB3aGVuIHBwZ3R0IGlzIGVuYWJsZWQuICov Cj4+IEBAIC00MTAsNiArNDMwLDcgQEAKPj4gICAgI2RlZmluZSAgIERJU1BMQVlfUExBTkVfQSAg ICAgICAgICAgKDA8PDIwKQo+PiAgICAjZGVmaW5lICAgRElTUExBWV9QTEFORV9CICAgICAgICAg ICAoMTw8MjApCj4+ICAgICNkZWZpbmUgR0ZYX09QX1BJUEVfQ09OVFJPTChsZW4pCSgoMHgzPDwy OSl8KDB4Mzw8MjcpfCgweDI8PDI0KXwobGVuLTIpKQo+PiArI2RlZmluZSAgIFBJUEVfQ09OVFJP TF9GTFVTSF9ST19DQUNIRVMJCQkoMTw8MjcpCj4gSSB0aGluayB0aGUgY29uc2Vuc3VzIGlzIHRv IHJlbmFtZSB0aGlzIHRvIFBJUEVfQ09OVFJPTF9GTFVTSF9MMywgaXNuJ3QgaXQ/CgpZZXMsIGl0 IHdpbGwgYmUgcmVuYW1lZCB0byBQSVBFX0NPTlRST0xfRkxVU0hfTDMgaW4gdjIuCgo+PiAgICAj ZGVmaW5lICAgUElQRV9DT05UUk9MX0dMT0JBTF9HVFRfSVZCCQkJKDE8PDI0KSAvKiBnZW43KyAq Lwo+PiAgICAjZGVmaW5lICAgUElQRV9DT05UUk9MX01NSU9fV1JJVEUJCQkoMTw8MjMpCj4+ICAg ICNkZWZpbmUgICBQSVBFX0NPTlRST0xfU1RPUkVfREFUQV9JTkRFWAkJCSgxPDwyMSkKPj4gQEAg LTQyNiw2ICs0NDcsNyBAQAo+PiAgICAjZGVmaW5lICAgUElQRV9DT05UUk9MX0lORElSRUNUX1NU QVRFX0RJU0FCTEUJCSgxPDw5KQo+PiAgICAjZGVmaW5lICAgUElQRV9DT05UUk9MX05PVElGWQkJ CQkoMTw8OCkKPj4gICAgI2RlZmluZSAgIFBJUEVfQ09OVFJPTF9GTFVTSF9FTkFCTEUJCQkoMTw8 NykgLyogZ2VuNysgKi8KPj4gKyNkZWZpbmUgICBQSVBFX0NPTlRST0xfRENfRkxVU0hfRU5BQkxF CQkJKDE8PDUpCj4+ICAgICNkZWZpbmUgICBQSVBFX0NPTlRST0xfVkZfQ0FDSEVfSU5WQUxJREFU RQkJKDE8PDQpCj4+ICAgICNkZWZpbmUgICBQSVBFX0NPTlRST0xfQ09OU1RfQ0FDSEVfSU5WQUxJ REFURQkJKDE8PDMpCj4+ICAgICNkZWZpbmUgICBQSVBFX0NPTlRST0xfU1RBVEVfQ0FDSEVfSU5W QUxJREFURQkJKDE8PDIpCj4+IEBAIC00NDksOCArNDcxLDEwIEBACj4+ICAgICNkZWZpbmUgTUlf Q0xGTFVTSCAgICAgICAgICAgICAgTUlfSU5TVFIoMHgyNywgMCkKPj4gICAgI2RlZmluZSBNSV9S RVBPUlRfUEVSRl9DT1VOVCAgICBNSV9JTlNUUigweDI4LCAwKQo+PiAgICAjZGVmaW5lICAgTUlf UkVQT1JUX1BFUkZfQ09VTlRfR0dUVCAoMTw8MCkKPj4gLSNkZWZpbmUgTUlfTE9BRF9SRUdJU1RF Ul9NRU0gICAgTUlfSU5TVFIoMHgyOSwgMCkKPj4gLSNkZWZpbmUgTUlfTE9BRF9SRUdJU1RFUl9S RUcgICAgTUlfSU5TVFIoMHgyQSwgMCkKPj4gKyNkZWZpbmUgTUlfTE9BRF9SRUdJU1RFUl9NRU0g ICAgTUlfSU5TVFIoMHgyOSwgMikKPiBTaG91bGQgdGhpcyBjaGFuZ2UgYmUgR0VOOCBvbmx5PwoK QXQgdGhpcyBwb2ludCBubyBvbmUgaXMgdXNpbmcgTUlfTE9BRF9SRUdJU1RFUl9NRU0gYnV0IHRv IGF2b2lkIGJyZWFraW5nIAphbnkgZnV0dXJlIHVzZXJzIEkgd2lsbCBrZWVwIHRoZSBwcmV2aW91 cyBkZWZpbml0aW9uIGFzIGl0IGlzIGFuZCB1c2UgYSAKZGlmZmVyZW50IGRlZmluZSBmb3IgR2Vu OCBhbG9uZS4KCnJlZ2FyZHMKQXJ1bgoKPj4gKyNkZWZpbmUgTUlfTFJNX1VTRV9HTE9CQUxfR1RU ICgxPDwyMikKPj4gKyNkZWZpbmUgTUlfTFJNX0FTWU5DX01PREVfRU5BQkxFICgxPDwyMSkKPj4g KyNkZWZpbmUgTUlfTE9BRF9SRUdJU1RFUl9SRUcgICAgTUlfSU5TVFIoMHgyQSwgMSkKPj4gICAg I2RlZmluZSBNSV9SU19TVE9SRV9EQVRBX0lNTSAgICBNSV9JTlNUUigweDJCLCAwKQo+PiAgICAj ZGVmaW5lIE1JX0xPQURfVVJCX01FTSAgICAgICAgIE1JX0lOU1RSKDB4MkMsIDApCj4+ICAgICNk ZWZpbmUgTUlfU1RPUkVfVVJCX01FTSAgICAgICAgTUlfSU5TVFIoMHgyRCwgMCkKPj4gQEAgLTE1 MjAsNiArMTU0NCw4IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+PiAgICAjZGVmaW5l ICAgR0VOOF9SQ19TRU1BX0lETEVfTVNHX0RJU0FCTEUJKDEgPDwgMTIpCj4+ICAgICNkZWZpbmUg ICBHRU44X0ZGX0RPUF9DTE9DS19HQVRFX0RJU0FCTEUJKDE8PDEwKQo+Pgo+PiArI2RlZmluZSBH RU44X1JTX1BSRUVNUFRfU1RBVFVTCQkweDIxNUMKPj4gKwo+PiAgICAvKiBGdXNlIHJlYWRvdXQg cmVnaXN0ZXJzIGZvciBHVCAqLwo+PiAgICAjZGVmaW5lIENIVl9GVVNFX0dUCQkJKFZMVl9ESVNQ TEFZX0JBU0UgKyAweDIxNjgpCj4+ICAgICNkZWZpbmUgICBDSFZfRkdUX0VVX0RJU19TUzBfUjBf U0hJRlQJMTYKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gaW5kZXggNDc0NzNlNS4uYjM0 ZWY0OCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gQEAgLTIwMiw2ICsyMDIs NyBAQCBlbnVtIHsKPj4gICAgCUZBVUxUX0FORF9DT05USU5VRSAvKiBVbnN1cHBvcnRlZCAqLwo+ PiAgICB9Owo+PiAgICAjZGVmaW5lIEdFTjhfQ1RYX0lEX1NISUZUIDMyCj4+ICsjZGVmaW5lIENU WF9SQ1NfSU5ESVJFQ1RfQ1RYX09GRlNFVF9ERUZBVUxUICAweDE3Cj4+Cj4+ICAgIHN0YXRpYyBp bnQgaW50ZWxfbHJfY29udGV4dF9waW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPj4g ICAgCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KTsKPj4gQEAgLTExMDcsNiArMTEwOCwyMDgg QEAgc3RhdGljIGludCBpbnRlbF9sb2dpY2FsX3Jpbmdfd29ya2Fyb3VuZHNfZW1pdChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nLAo+PiAgICAJcmV0dXJuIDA7Cj4+ICAgIH0KPj4KPj4gK3N0 YXRpYyBzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqCj4+ICtjcmVhdGVfd2FfYmIoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZywgdWludDMyX3QgYmJfc2l6ZSkKPj4gK3sKPj4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2Owo+PiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVy ICpyaW5nYnVmOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlyaW5nYnVmID0ga3phbGxvYyhzaXpl b2YoKnJpbmdidWYpLCBHRlBfS0VSTkVMKTsKPj4gKwlpZiAoIXJpbmdidWYpCj4+ICsJCXJldHVy biBOVUxMOwo+PiArCj4+ICsJcmluZ2J1Zi0+cmluZyA9IHJpbmc7Cj4+ICsKPj4gKwlyaW5nYnVm LT5zaXplID0gcm91bmR1cChiYl9zaXplLCBQQUdFX1NJWkUpOwo+PiArCXJpbmdidWYtPmVmZmVj dGl2ZV9zaXplID0gcmluZ2J1Zi0+c2l6ZTsKPj4gKwlyaW5nYnVmLT5oZWFkID0gMDsKPj4gKwly aW5nYnVmLT50YWlsID0gMDsKPj4gKwlyaW5nYnVmLT5zcGFjZSA9IHJpbmdidWYtPnNpemU7Cj4+ ICsJcmluZ2J1Zi0+bGFzdF9yZXRpcmVkX2hlYWQgPSAtMTsKPj4gKwo+PiArCXJldCA9IGludGVs X2FsbG9jX3JpbmdidWZmZXJfb2JqKGRldiwgcmluZ2J1Zik7Cj4+ICsJaWYgKHJldCkgewo+PiAr CQlEUk1fREVCVUdfRFJJVkVSKCJGYWlsZWQgdG8gYWxsb2NhdGUgcmluZ2J1ZmZlciBvYmogJXM6 ICVkXG4iLAo+PiArCQkJCXJpbmctPm5hbWUsIHJldCk7Cj4+ICsJCWtmcmVlKHJpbmdidWYpOwo+ PiArCQlyZXR1cm4gTlVMTDsKPj4gKwl9Cj4+ICsKPj4gKwlyZXQgPSBpbnRlbF9waW5fYW5kX21h cF9yaW5nYnVmZmVyX29iaihkZXYsIHJpbmdidWYpOwo+PiArCWlmIChyZXQpIHsKPj4gKwkJRFJN X0VSUk9SKCJGYWlsZWQgdG8gcGluIGFuZCBtYXAgJXMgdy9hIGJhdGNoOiAlZFxuIiwKPj4gKwkJ CSAgcmluZy0+bmFtZSwgcmV0KTsKPj4gKwkJaW50ZWxfZGVzdHJveV9yaW5nYnVmZmVyX29iaihy aW5nYnVmKTsKPj4gKwkJa2ZyZWUocmluZ2J1Zik7Cj4+ICsJCXJldHVybiBOVUxMOwo+PiArCX0K Pj4gKwo+PiArCXJldHVybiByaW5nYnVmOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGdlbjhf aW5pdF9pbmRpcmVjdGN0eF9iYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+PiArCQkJ CSAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KQo+PiArewo+PiArCXVuc2lnbmVkIGxvbmcg ZmxhZ3MgPSAwOwo+PiArCXUzMiBzY3JhdGNoX2FkZHI7Cj4+ICsJc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnJpbmdidWYgPSBOVUxMOwo+PiArCj4+ICsJaWYgKHJpbmctPnNjcmF0Y2gub2JqID09 IE5VTEwpIHsKPj4gKwkJRFJNX0VSUk9SKCJzY3JhdGNoIHBhZ2Ugbm90IGFsbG9jYXRlZCBmb3Ig JXNcbiIsIHJpbmctPm5hbWUpOwo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwl9Cj4+ICsKPj4g KwlyaW5nYnVmID0gY3JlYXRlX3dhX2JiKHJpbmcsIFBBR0VfU0laRSk7Cj4+ICsJaWYgKCFyaW5n YnVmKQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArCWN0eC0+aW5kaXJlY3RfY3R4X3dh X2JiID0gcmluZ2J1ZjsKPj4gKwo+PiArCS8qIFdhRGlzYWJsZUN0eFJlc3RvcmVBcmJpdHJhdGlv bjpiZHcsY2h2ICovCj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfQVJC X09OX09GRiB8IE1JX0FSQl9ESVNBQkxFKTsKPj4gKwo+PiArCS8qIFdhRmx1c2hDb2hlcmVudEwz Q2FjaGVMaW5lc0F0Q29udGV4dFN3aXRjaDpiZHcsY2h2ICovCj4+ICsJaW50ZWxfbG9naWNhbF9y aW5nX2VtaXQocmluZ2J1ZiwgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Cj4+ICsJaW50ZWxfbG9n aWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgUElQRV9DT05UUk9MX0RDX0ZMVVNIX0VOQUJMRSk7Cj4+ ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4+ICsJaW50ZWxfbG9naWNh bF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmlu Z2J1ZiwgMCk7Cj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4+ICsK Pj4gKwkvKiBXYUNsZWFyU2xtU3BhY2VBdENvbnRleHRTd2l0Y2g6YmR3LGNodiAqLwo+PiArCWZs YWdzID0gUElQRV9DT05UUk9MX0ZMVVNIX1JPX0NBQ0hFUyB8Cj4+ICsJCVBJUEVfQ09OVFJPTF9H TE9CQUxfR1RUX0lWQiB8Cj4+ICsJCVBJUEVfQ09OVFJPTF9DU19TVEFMTCB8Cj4+ICsJCVBJUEVf Q09OVFJPTF9RV19XUklURTsKPj4gKwo+PiArCS8qIEFjdHVhbCBzY3JhdGNoIGxvY2F0aW9uIGlz IGF0IDEyOCBieXRlcyBvZmZzZXQgKi8KPj4gKwlzY3JhdGNoX2FkZHIgPSByaW5nLT5zY3JhdGNo Lmd0dF9vZmZzZXQgKyAyKkNBQ0hFTElORV9CWVRFUzsKPj4gKwlzY3JhdGNoX2FkZHIgfD0gUElQ RV9DT05UUk9MX0dMT0JBTF9HVFQ7Cj4+ICsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChy aW5nYnVmLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKPj4gKwlpbnRlbF9sb2dpY2FsX3Jpbmdf ZW1pdChyaW5nYnVmLCBmbGFncyk7Cj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1 Ziwgc2NyYXRjaF9hZGRyKTsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAw KTsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPj4gKwlpbnRlbF9s b2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPj4gKwo+PiArCS8qIFBhZGRpbmcgdG8gYWxp Z24gd2l0aCBjYWNoZSBsaW5lICovCj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1 ZiwgMCk7Cj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4+ICsJaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4+ICsKPj4gKwkvKgo+PiArCSAqIE5v IE1JX0JBVENIX0JVRkZFUl9FTkQgaXMgcmVxdWlyZWQgaW4gSW5kaXJlY3QgY3R4IEJCIGJlY2F1 c2UKPj4gKwkgKiBleGVjdXRpb24gZGVwZW5kcyBvbiB0aGUgc2l6ZSBkZWZpbmVkIGluIENUWF9S Q1NfSU5ESVJFQ1RfQ1RYCj4+ICsJICovCj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+ PiArc3RhdGljIGludCBnZW44X2luaXRfcGVyY3R4X2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsCj4+ICsJCQkgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKPj4gK3sKPj4g Kwl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKPj4gKwl1MzIgc2NyYXRjaF9hZGRyOwo+PiArCXN0 cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gTlVMTDsKPj4gKwo+PiArCWlmIChyaW5n LT5zY3JhdGNoLm9iaiA9PSBOVUxMKSB7Cj4+ICsJCURSTV9FUlJPUigic2NyYXRjaCBwYWdlIG5v dCBhbGxvY2F0ZWQgZm9yICVzXG4iLCByaW5nLT5uYW1lKTsKPj4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4+ICsJfQo+PiArCj4+ICsJcmluZ2J1ZiA9IGNyZWF0ZV93YV9iYihyaW5nLCBQQUdFX1NJWkUp Owo+PiArCWlmICghcmluZ2J1ZikKPj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKwljdHgt PnBlcl9jdHhfd2FfYmIgPSByaW5nYnVmOwo+PiArCj4+ICsJLyogQWN0dWFsIHNjcmF0Y2ggbG9j YXRpb24gaXMgYXQgMTI4IGJ5dGVzIG9mZnNldCAqLwo+PiArCXNjcmF0Y2hfYWRkciA9IHJpbmct PnNjcmF0Y2guZ3R0X29mZnNldCArIDIqQ0FDSEVMSU5FX0JZVEVTOwo+PiArCXNjcmF0Y2hfYWRk ciB8PSBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVDsKPj4gKwo+PiArCS8qIFdhRGlzYWJsZUN0eFJl c3RvcmVBcmJpdHJhdGlvbjpiZHcsY2h2ICovCj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQo cmluZ2J1ZiwgTUlfQVJCX09OX09GRiB8IE1JX0FSQl9FTkFCTEUpOwo+PiArCj4+ICsJLyoKPj4g KwkgKiBBcyBwZXIgQnNwZWMsIHRvIHdvcmthcm91bmQgYSBrbm93biBIVyBpc3N1ZSwgU1cgbXVz dCBwZXJmb3JtIHRoZQo+PiArCSAqIGJlbG93IHByb2dyYW1taW5nIHNlcXVlbmNlIHByaW9yIHRv IHByb2dyYW1taW5nIE1JX0JBVENIX0JVRkZFUl9FTkQuCj4+ICsJICoKPj4gKwkgKiBUaGlzIGlz IG9ubHkgYXBwbGljYWJsZSBmb3IgR2VuOC4KPj4gKwkgKi8KPj4gKwo+PiArCS8qIFdhUnNSZXN0 b3JlV2l0aFBlckN0eHRCYjpiZHcsY2h2ICovCj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQo cmluZ2J1ZiwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwo+PiArCWludGVsX2xvZ2ljYWxfcmlu Z19lbWl0KHJpbmdidWYsIElOU1RQTSk7Cj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmlu Z2J1ZiwKPj4gKwkJCQlfTUFTS0VEX0JJVF9ESVNBQkxFKElOU1RQTV9GT1JDRV9PUkRFUklORykp Owo+PiArCj4+ICsJZmxhZ3MgPSBNSV9BVE9NSUNfTUVNT1JZX1RZUEVfR0dUVCB8Cj4+ICsJCU1J X0FUT01JQ19JTkxJTkVfREFUQSB8Cj4+ICsJCU1JX0FUT01JQ19DU19TVEFMTCB8Cj4+ICsJCU1J X0FUT01JQ19SRVRVUk5fREFUQV9DVEwgfAo+PiArCQlNSV9BVE9NSUNfTU9WRTsKPj4gKwo+PiAr CWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX0FUT01JQyg1KSB8IGZsYWdzKTsK Pj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBzY3JhdGNoX2FkZHIpOwo+PiAr CWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+PiArCWludGVsX2xvZ2ljYWxf cmluZ19lbWl0KHJpbmdidWYsCj4+ICsJCQkJX01BU0tFRF9CSVRfRU5BQkxFKElOU1RQTV9GT1JD RV9PUkRFUklORykpOwo+PiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCj4+ICsJ CQkJX01BU0tFRF9CSVRfRU5BQkxFKElOU1RQTV9GT1JDRV9PUkRFUklORykpOwo+PiArCj4+ICsJ LyoKPj4gKwkgKiBCc3BlYyBzYXlzIE1JX0xPQURfUkVHSVNURVJfTUVNLCBNSV9MT0FEX1JFR0lT VEVSX1JFRyBhbmQKPj4gKwkgKiBNSV9CQVRDSF9CVUZGRVJfRU5EIG5lZWQgdG8gYmUgaW4gdGhl IHNhbWUgY2FjaGVsaW5lLgo+PiArCSAqLwo+PiArCXdoaWxlICgoKHVuc2lnbmVkIGxvbmcpIHJp bmdidWYtPnRhaWwgJSBDQUNIRUxJTkVfQllURVMpICE9IDApCj4+ICsJCWludGVsX2xvZ2ljYWxf cmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOwo+PiArCj4+ICsJaW50ZWxfbG9naWNhbF9yaW5n X2VtaXQocmluZ2J1ZiwKPj4gKwkJCQlNSV9MT0FEX1JFR0lTVEVSX01FTSB8Cj4+ICsJCQkJTUlf TFJNX1VTRV9HTE9CQUxfR1RUIHwKPj4gKwkJCQlNSV9MUk1fQVNZTkNfTU9ERV9FTkFCTEUpOwo+ PiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIElOU1RQTSk7Cj4+ICsJaW50ZWxf bG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXQocmluZ2J1Ziwgc2NyYXRjaF9hZGRyKTsKPj4gKwo+PiArCS8qCj4+ICsJICogQnNwZWMgc2F5 cyB0aGVyZSBzaG91bGQgbm90IGJlIGFueSBjb21tYW5kcyBwcm9ncmFtbWVkCj4+ICsJICogYmV0 d2VlbiBNSV9MT0FEX1JFR0lTVEVSX1JFRyBhbmQgTUlfQkFUQ0hfQlVGRkVSX0VORCBzbwo+PiAr CSAqIGRvIG5vdCBhZGQgYW55IG5ldyBjb21tYW5kcwo+PiArCSAqLwo+PiArCWludGVsX2xvZ2lj YWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX0xPQURfUkVHSVNURVJfUkVHKTsKPj4gKwlpbnRlbF9s b2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBHRU44X1JTX1BSRUVNUFRfU1RBVFVTKTsKPj4gKwlp bnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBHRU44X1JTX1BSRUVNUFRfU1RBVFVTKTsK Pj4gKwo+PiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX0JBVENIX0JVRkZF Ul9FTkQpOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgaW50 ZWxfaW5pdF93b3JrYXJvdW5kX2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4+ICsJ CQkJICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCj4+ICt7Cj4+ICsJaW50IHJldDsKPj4g KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2Owo+PiArCj4+ICsJV0FSTl9PTihy aW5nLT5pZCAhPSBSQ1MpOwo+PiArCj4+ICsJaWYgKElTX0dFTjgoZGV2KSkgewo+PiArCQlyZXQg PSBnZW44X2luaXRfaW5kaXJlY3RjdHhfYmIocmluZywgY3R4KTsKPj4gKwkJaWYgKHJldCkKPj4g KwkJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwkJcmV0ID0gZ2VuOF9pbml0X3BlcmN0eF9iYihyaW5n LCBjdHgpOwo+PiArCQlpZiAocmV0KQo+PiArCQkJcmV0dXJuIHJldDsKPj4gKwl9Cj4+ICsKPj4g KwlyZXR1cm4gMDsKPj4gKwo+PiArfQo+PiArCj4+ICAgIHN0YXRpYyBpbnQgZ2VuOF9pbml0X2Nv bW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4+ICAgIHsKPj4gICAgCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7Cj4+IEBAIC0xMzM3LDM4ICsxNTQwLDYg QEAgc3RhdGljIGludCBnZW44X2VtaXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAq cmluZ2J1ZiwKPj4gICAgCXJldHVybiAwOwo+PiAgICB9Cj4+Cj4+IC1zdGF0aWMgc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKgo+PiAtY3JlYXRlX3dhX2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsIHVpbnQzMl90IGJiX3NpemUpCj4+IC17Cj4+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IHJpbmctPmRldjsKPj4gLQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZjsKPj4g LQlpbnQgcmV0Owo+PiAtCj4+IC0JcmluZ2J1ZiA9IGt6YWxsb2Moc2l6ZW9mKCpyaW5nYnVmKSwg R0ZQX0tFUk5FTCk7Cj4+IC0JaWYgKCFyaW5nYnVmKQo+PiAtCQlyZXR1cm4gTlVMTDsKPj4gLQo+ PiAtCXJpbmdidWYtPnJpbmcgPSByaW5nOwo+PiAtCj4+IC0JcmluZ2J1Zi0+c2l6ZSA9IHJvdW5k dXAoYmJfc2l6ZSwgUEFHRV9TSVpFKTsKPj4gLQlyaW5nYnVmLT5lZmZlY3RpdmVfc2l6ZSA9IHJp bmdidWYtPnNpemU7Cj4+IC0JcmluZ2J1Zi0+aGVhZCA9IDA7Cj4+IC0JcmluZ2J1Zi0+dGFpbCA9 IDA7Cj4+IC0JcmluZ2J1Zi0+c3BhY2UgPSByaW5nYnVmLT5zaXplOwo+PiAtCXJpbmdidWYtPmxh c3RfcmV0aXJlZF9oZWFkID0gLTE7Cj4+IC0KPj4gLQlyZXQgPSBpbnRlbF9hbGxvY19yaW5nYnVm ZmVyX29iaihkZXYsIHJpbmdidWYpOwo+PiAtCWlmIChyZXQpIHsKPj4gLQkJRFJNX0RFQlVHX0RS SVZFUigKPj4gLQkJIkZhaWxlZCB0byBhbGxvY2F0ZSByaW5nYnVmIG9iaiBmb3Igd2FfYmIlczog JWRcbiIsCj4+IC0JCXJpbmctPm5hbWUsIHJldCk7Cj4+IC0JCWtmcmVlKHJpbmdidWYpOwo+PiAt CQlyZXR1cm4gTlVMTDsKPj4gLQl9Cj4+IC0KPj4gLQlyZXR1cm4gcmluZ2J1ZjsKPj4gLX0KPj4g LQo+PiAgICBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfcmVuZGVyX3N0YXRlX2luaXQoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPj4gICAgCQkJCQkgICAgICBzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY3R4KQo+PiAgICB7Cj4+IEBAIC0xNDkwLDYgKzE2NjEsNyBAQCBzdGF0aWMgaW50 IGxvZ2ljYWxfcmVuZGVyX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgICAJ ZWxzZQo+PiAgICAJCXJpbmctPmluaXRfaHcgPSBnZW44X2luaXRfcmVuZGVyX3Jpbmc7Cj4+ICAg IAlyaW5nLT5pbml0X2NvbnRleHQgPSBnZW44X2luaXRfcmNzX2NvbnRleHQ7Cj4+ICsJcmluZy0+ aW5pdF9jb250ZXh0X2JiID0gaW50ZWxfaW5pdF93b3JrYXJvdW5kX2JiOwo+PiAgICAJcmluZy0+ Y2xlYW51cCA9IGludGVsX2ZpbmlfcGlwZV9jb250cm9sOwo+PiAgICAJcmluZy0+Z2V0X3NlcW5v ID0gZ2VuOF9nZXRfc2Vxbm87Cj4+ICAgIAlyaW5nLT5zZXRfc2Vxbm8gPSBnZW44X3NldF9zZXFu bzsKPj4gQEAgLTE1MDAsMTEgKzE2NzIsMTYgQEAgc3RhdGljIGludCBsb2dpY2FsX3JlbmRlcl9y aW5nX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gICAgCXJpbmctPmVtaXRfYmJfc3Rh cnQgPSBnZW44X2VtaXRfYmJfc3RhcnQ7Cj4+Cj4+ICAgIAlyaW5nLT5kZXYgPSBkZXY7Cj4+ICsK Pj4gKwlyZXQgPSBpbnRlbF9pbml0X3BpcGVfY29udHJvbChyaW5nKTsKPj4gKwlpZiAocmV0KQo+ PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ICAgIAlyZXQgPSBsb2dpY2FsX3JpbmdfaW5pdChkZXYs IHJpbmcpOwo+PiAgICAJaWYgKHJldCkKPj4gICAgCQlyZXR1cm4gcmV0Owo+Pgo+PiAtCXJldHVy biBpbnRlbF9pbml0X3BpcGVfY29udHJvbChyaW5nKTsKPj4gKwlyZXR1cm4gMDsKPj4gICAgfQo+ Pgo+PiAgICBzdGF0aWMgaW50IGxvZ2ljYWxfYnNkX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+PiBAQCAtMTc4NCwxNSArMTk2MSwyOSBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhf bwo+PiAgICAJcmVnX3N0YXRlW0NUWF9TRUNPTkRfQkJfU1RBVEVdID0gcmluZy0+bW1pb19iYXNl ICsgMHgxMTg7Cj4+ICAgIAlyZWdfc3RhdGVbQ1RYX1NFQ09ORF9CQl9TVEFURSsxXSA9IDA7Cj4+ ICAgIAlpZiAocmluZy0+aWQgPT0gUkNTKSB7Cj4+IC0JCS8qIFRPRE86IGFjY29yZGluZyB0byBC U3BlYywgdGhlIHJlZ2lzdGVyIHN0YXRlIGNvbnRleHQKPj4gLQkJICogZm9yIENIViBkb2VzIG5v dCBoYXZlIHRoZXNlLiBPVE9ILCB0aGVzZSByZWdpc3RlcnMgZG8KPj4gLQkJICogZXhpc3QgaW4g Q0hWLiBJJ20gd2FpdGluZyBmb3IgYSBjbGFyaWZpY2F0aW9uICovCj4+ICAgIAkJcmVnX3N0YXRl W0NUWF9CQl9QRVJfQ1RYX1BUUl0gPSByaW5nLT5tbWlvX2Jhc2UgKyAweDFjMDsKPj4gLQkJcmVn X3N0YXRlW0NUWF9CQl9QRVJfQ1RYX1BUUisxXSA9IDA7Cj4+ICsKPj4gKwkJaWYgKGN0eC0+cGVy X2N0eF93YV9iYikKPj4gKwkJCXJlZ19zdGF0ZVtDVFhfQkJfUEVSX0NUWF9QVFIgKyAxXSA9Cj4+ ICsJCQkJaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KAo+PiArCQkJCQljdHgtPnBlcl9jdHhfd2Ff YmItPm9iaikgfCAweDAxOwo+PiArCQllbHNlCj4+ICsJCQlyZWdfc3RhdGVbQ1RYX0JCX1BFUl9D VFhfUFRSKzFdID0gMDsKPj4gKwo+PiAgICAJCXJlZ19zdGF0ZVtDVFhfUkNTX0lORElSRUNUX0NU WF0gPSByaW5nLT5tbWlvX2Jhc2UgKyAweDFjNDsKPj4gLQkJcmVnX3N0YXRlW0NUWF9SQ1NfSU5E SVJFQ1RfQ1RYKzFdID0gMDsKPj4gICAgCQlyZWdfc3RhdGVbQ1RYX1JDU19JTkRJUkVDVF9DVFhf T0ZGU0VUXSA9IHJpbmctPm1taW9fYmFzZSArIDB4MWM4Owo+PiAtCQlyZWdfc3RhdGVbQ1RYX1JD U19JTkRJUkVDVF9DVFhfT0ZGU0VUKzFdID0gMDsKPj4gKwo+PiArCQlpZiAoY3R4LT5pbmRpcmVj dF9jdHhfd2FfYmIpIHsKPj4gKwkJCXJlZ19zdGF0ZVtDVFhfUkNTX0lORElSRUNUX0NUWCArIDFd ID0KPj4gKwkJCQlpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoCj4+ICsJCQkJY3R4LT5pbmRpcmVj dF9jdHhfd2FfYmItPm9iaikgfCAweDAxOwo+PiArCj4+ICsJCQlyZWdfc3RhdGVbQ1RYX1JDU19J TkRJUkVDVF9DVFhfT0ZGU0VUICsgMV0gPQo+PiArCQkJCUNUWF9SQ1NfSU5ESVJFQ1RfQ1RYX09G RlNFVF9ERUZBVUxUIDw8IDY7Cj4+ICsJCX0gZWxzZSB7Cj4+ICsJCQlyZWdfc3RhdGVbQ1RYX1JD U19JTkRJUkVDVF9DVFgrMV0gPSAwOwo+PiArCQkJcmVnX3N0YXRlW0NUWF9SQ1NfSU5ESVJFQ1Rf Q1RYX09GRlNFVCsxXSA9IDA7Cj4+ICsJCX0KPj4gICAgCX0KPj4gICAgCXJlZ19zdGF0ZVtDVFhf TFJJX0hFQURFUl8xXSA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDkpOwo+PiAgICAJcmVnX3N0YXRl W0NUWF9MUklfSEVBREVSXzFdIHw9IE1JX0xSSV9GT1JDRV9QT1NURUQ7Cj4+IEBAIC0xODU5LDYg KzIwNTAsMTggQEAgdm9pZCBpbnRlbF9scl9jb250ZXh0X2ZyZWUoc3RydWN0IGludGVsX2NvbnRl eHQgKmN0eCkKPj4gICAgCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmN0eF9vYmotPmJh c2UpOwo+PiAgICAJCX0KPj4gICAgCX0KPj4gKwo+PiArCWlmIChjdHgtPmluZGlyZWN0X2N0eF93 YV9iYikgewo+PiArCQlpbnRlbF91bnBpbl9yaW5nYnVmZmVyX29iaihjdHgtPmluZGlyZWN0X2N0 eF93YV9iYik7Cj4+ICsJCWludGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9vYmooY3R4LT5pbmRpcmVj dF9jdHhfd2FfYmIpOwo+PiArCQlrZnJlZShjdHgtPmluZGlyZWN0X2N0eF93YV9iYik7Cj4+ICsJ fQo+PiArCj4+ICsJaWYgKGN0eC0+cGVyX2N0eF93YV9iYikgewo+PiArCQlpbnRlbF91bnBpbl9y aW5nYnVmZmVyX29iaihjdHgtPnBlcl9jdHhfd2FfYmIpOwo+PiArCQlpbnRlbF9kZXN0cm95X3Jp bmdidWZmZXJfb2JqKGN0eC0+cGVyX2N0eF93YV9iYik7Cj4+ICsJCWtmcmVlKGN0eC0+cGVyX2N0 eF93YV9iYik7Cj4+ICsJfQo+PiAgICB9Cj4+Cj4+ICAgIHN0YXRpYyB1aW50MzJfdCBnZXRfbHJf Y29udGV4dF9zaXplKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4+IEBAIC0xOTg1LDYg KzIxODgsMTYgQEAgaW50IGludGVsX2xyX2NvbnRleHRfZGVmZXJyZWRfY3JlYXRlKHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjdHgsCj4+Cj4+ICAgIAl9Cj4+Cj4+ICsJaWYgKHJpbmctPmlkID09IFJD UyAmJiAhY3R4LT5yY3NfaW5pdGlhbGl6ZWQpIHsKPj4gKwkJaWYgKHJpbmctPmluaXRfY29udGV4 dF9iYikgewo+PiArCQkJcmV0ID0gcmluZy0+aW5pdF9jb250ZXh0X2JiKHJpbmcsIGN0eCk7Cj4+ ICsJCQlpZiAocmV0KSB7Cj4+ICsJCQkJRFJNX0VSUk9SKCJyaW5nIGluaXQgY29udGV4dCBiYjog JWRcbiIsIHJldCk7Cj4+ICsJCQkJZ290byBlcnJvcjsKPj4gKwkJCX0KPj4gKwkJfQo+PiArCX0K Pj4gKwo+PiAgICAJcmV0ID0gcG9wdWxhdGVfbHJfY29udGV4dChjdHgsIGN0eF9vYmosIHJpbmcs IHJpbmdidWYpOwo+PiAgICAJaWYgKHJldCkgewo+PiAgICAJCURSTV9ERUJVR19EUklWRVIoIkZh aWxlZCB0byBwb3B1bGF0ZSBMUkM6ICVkXG4iLCByZXQpOwo+PiBAQCAtMjAxMyw2ICsyMjI2LDE3 IEBAIGludCBpbnRlbF9scl9jb250ZXh0X2RlZmVycmVkX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY3R4LAo+PiAgICAJcmV0dXJuIDA7Cj4+Cj4+ICAgIGVycm9yOgo+PiArCWlmIChjdHgt PmluZGlyZWN0X2N0eF93YV9iYikgewo+PiArCQlpbnRlbF91bnBpbl9yaW5nYnVmZmVyX29iaihj dHgtPmluZGlyZWN0X2N0eF93YV9iYik7Cj4+ICsJCWludGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9v YmooY3R4LT5pbmRpcmVjdF9jdHhfd2FfYmIpOwo+PiArCQlrZnJlZShjdHgtPmluZGlyZWN0X2N0 eF93YV9iYik7Cj4+ICsJfQo+PiArCWlmIChjdHgtPnBlcl9jdHhfd2FfYmIpIHsKPj4gKwkJaW50 ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmooY3R4LT5wZXJfY3R4X3dhX2JiKTsKPj4gKwkJaW50ZWxf ZGVzdHJveV9yaW5nYnVmZmVyX29iaihjdHgtPnBlcl9jdHhfd2FfYmIpOwo+PiArCQlrZnJlZShj dHgtPnBlcl9jdHhfd2FfYmIpOwo+PiArCX0KPj4gKwo+PiAgICAJaWYgKGlzX2dsb2JhbF9kZWZh dWx0X2N0eCkKPj4gICAgCQlpbnRlbF91bnBpbl9yaW5nYnVmZmVyX29iaihyaW5nYnVmKTsKPj4g ICAgZXJyb3JfZGVzdHJveV9yYnVmOgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oCj4+IGluZGV4IDM5MTgzZmMuLjgzOWQ2OTggMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPj4gQEAgLTE0Niw2ICsxNDYsOSBAQCBzdHJ1Y3QgIGlu dGVsX2VuZ2luZV9jcyB7Cj4+ICAgIAlpbnQJCSgqaW5pdF9jb250ZXh0KShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nLAo+PiAgICAJCQkJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpOwo+ Pgo+PiArCWludAkJKCppbml0X2NvbnRleHRfYmIpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcsCj4+ICsJCQkJCSAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpOwo+PiArCj4+ICAgIAl2 b2lkCQkoKndyaXRlX3RhaWwpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4+ICAgIAkJ CQkgICAgICB1MzIgdmFsdWUpOwo+PiAgICAJaW50IF9fbXVzdF9jaGVjayAoKmZsdXNoKShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+Cj4KPgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK