From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Siluvery, Arun" Subject: Re: [PATCH v2 2/2] drm/i915/gen8: Apply Per-context workarounds using W/A batch buffers Date: Mon, 02 Mar 2015 18:08:27 +0000 Message-ID: <54F4A71B.9030700@linux.intel.com> References: <1424886882-8117-3-git-send-email-arun.siluvery@linux.intel.com> <1425294440-27609-1-git-send-email-arun.siluvery@linux.intel.com> <20150302174310.GC24485@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 575116E1B9 for ; Mon, 2 Mar 2015 10:08:30 -0800 (PST) In-Reply-To: <20150302174310.GC24485@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDIvMDMvMjAxNSAxNzo0MywgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBNb24sIE1hciAw MiwgMjAxNSBhdCAxMTowNzoyMEFNICswMDAwLCBBcnVuIFNpbHV2ZXJ5IHdyb3RlOgo+PiBTb21l IG9mIHRoZSB3b3JrYXJvdW5kcyBhcmUgdG8gYmUgYXBwbGllZCBkdXJpbmcgY29udGV4dCBzYXZl IGJ1dCBiZWZvcmUKPj4gcmVzdG9yZSBhbmQgc29tZSBhdCB0aGUgZW5kIG9mIGNvbnRleHQgc2F2 ZS9yZXN0b3JlIGJ1dCBiZWZvcmUgZXhlY3V0aW5nCj4+IHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhl IHJpbmcuIFdvcmthcm91bmQgYmF0Y2ggYnVmZmVycyBhcmUgY3JlYXRlZCBmb3IKPj4gdGhpcyBw dXJwb3NlIGFzIHRoZXkgY2Fubm90IGJlIGFwcGxpZWQgdXNpbmcgbm9ybWFsIG1lYW5zLiBIVyBl eGVjdXRlcwo+PiB0aGVtIGF0IHNwZWNpZmljIHN0YWdlcyBkdXJpbmcgY29udGV4dCBzYXZlL3Jl c3RvcmUuCj4+Cj4+IEluIHRoaXMgbWV0aG9kIHdlIGluaXRpYWxpemUgYmF0Y2ggYnVmZmVyIHdp dGggdy9hIGNvbW1hbmRzIGFuZCBpdHMgYWRkcmVzcwo+PiBpcyBzdXBwbGllZCB1c2luZyBjb250 ZXh0IG9mZnNldCBwb2ludGVycyB3aGVuIGEgY29udGV4dCBpcyBpbml0aWFsaXplZC4KPj4KPj4g VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGluZGlyZWN0IGFuZCBwZXItY29udGV4dCBiYXRjaCBidWZm ZXJzIHVzaW5nIHdoaWNoCj4+IGZvbGxvd2luZyB3b3JrYXJvdW5kcyBhcmUgYXBwbGllZC4gVGhl c2UgYXJlIHJlcXVpcmVkIHRvIGZpeCBpc3N1ZXMKPj4gb2JzZXJ2ZWQgd2l0aCBwcmVlbXB0aW9u IHJlbGF0ZWQgd29ya2xvYWRzLgo+Pgo+PiBJbiBJbmRpcmVjdCBjb250ZXh0IHcvYSBiYXRjaCBi dWZmZXIsCj4+ICtXYURpc2FibGVDdHhSZXN0b3JlQXJiaXRyYXRpb24KPj4gK1dhRmx1c2hDb2hl cmVudEwzQ2FjaGVMaW5lc0F0Q29udGV4dFN3aXRjaAo+PiArV2FDbGVhclNsbVNwYWNlQXRDb250 ZXh0U3dpdGNoCj4+Cj4+IEluIFBlciBjb250ZXh0IHcvYSBiYXRjaCBidWZmZXIsCj4+ICtXYURp c2FibGVDdHhSZXN0b3JlQXJiaXRyYXRpb24KPj4gK1dhUnNSZXN0b3JlV2l0aFBlckN0eHRCYgo+ Pgo+PiB2MjogVXNlIEdUVCBhZGRyZXNzIHR5cGUgZm9yIGFsbCBwcml2aWxlZ2VkIGluc3RydWN0 aW9ucywgdXBkYXRlIGFzCj4+IHBlciBkeW5hbWljIHBpbm5pbmcgY2hhbmdlcywgbWlub3Igc2lt cGxpZmljYXRpb25zLCByZW5hbWUgdmFyaWFibGVzCj4+IGFzIGZvbGxvd3MgdG8ga2VlcCBsaW5l cyB1bmRlciA4MCBjaGFycyBhbmQgcmViYXNlLgo+PiBzL2luZGlyZWN0X2N0eF93YV9yaW5nYnVm L2luZGlyZWN0X2N0eF93YV9iYgo+PiBzL3Blcl9jdHhfd2FfcmluZ2J1Zi9wZXJfY3R4X3dhX2Ji Cj4+Cj4+IHYzOiBNb2RpZnkgV0EgQkIgaW5pdGlhbGl6YXRpb24gdG8gR2VuIHNwZWNpZmljLgo+ Pgo+PiB2NDogcy9QSVBFX0NPTlRST0xfRkxVU0hfUk9fQ0FDSEVTL1BJUEVfQ09OVFJPTF9GTFVT SF9MMyAoVmlsbGUpCj4+IFRoaXMgcGF0Y2hlcyBtb2RpZmllcyBkZWZpbml0aW9ucyBvZiBNSV9M T0FEX1JFR0lTVEVSX01FTSBhbmQKPj4gTUlfTE9BRF9SRUdJU1RFUl9SRUc7IEFkZCBHRU44IHNw ZWNpZmljIGRlZmluZXMgZm9yIHRoZXNlIGluc3RydWN0aW9ucwo+PiBzbyBhcyB0byBub3QgYnJl YWsgYW55IGZ1dHVyZSB1c2VycyBvZiBleGlzdGluZyBkZWZpbml0aW9ucyAoTWljaGVsKQo+Pgo+ PiBDaGFuZ2UtSWQ6IEkwY2VkYjUzNmI3ZjZkOWYxMGJhOWU4MWJhNjI1ODQ4ZTdiYWI2MDNjCj4+ IFNpZ25lZC1vZmYtYnk6IFJhZmFlbCBCYXJiYWxobyA8cmFmYWVsLmJhcmJhbGhvQGludGVsLmNv bT4KPj4gU2lnbmVkLW9mZi1ieTogQXJ1biBTaWx1dmVyeSA8YXJ1bi5zaWx1dmVyeUBsaW51eC5p bnRlbC5jb20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAg ICAgICB8ICAgMyArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAg IHwgIDI4ICsrKysKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAg fCAyMzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgIDMgKwo+PiAgIDQgZmlsZXMgY2hhbmdlZCwg MjU4IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+PiBpbmRleCBkNDIwNDBmLi44NmNkYjUyIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPj4gQEAgLTc3NCw2ICs3NzQsOSBAQCBzdHJ1Y3QgaW50ZWxfY29udGV4dCB7Cj4+Cj4+ ICAgCS8qIEV4ZWNsaXN0cyAqLwo+PiAgIAlib29sIHJjc19pbml0aWFsaXplZDsKPj4gKwlzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqaW5kaXJlY3RfY3R4X3dhX2JiOwo+PiArCXN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICpwZXJfY3R4X3dhX2JiOwo+Cj4gV2h5IGlzIHRoaXMgcGVyLWN0eCBhbmQg bm90IHBlci1lbmdpbmU/IEFsc28geW91ciBwYXRjaCBzcGxpdHRpbmcgZG9lc24ndAoKU2luY2Ug d2UgYXBwbHkgdGhlbSBvbiBhIGNvbnRleHQgYmFzaXMgSSB0aGluayBpbnRlbF9jb250ZXh0IGlz IGEgYmV0dGVyIApwbGFjZSwgYWxzbyB0aGV5IGFyZSBvbmx5IGFwcGxpY2FibGUgZm9yIFJDUy4g VGhlcmUgaXMgbm8gcmVhc29uIHdoeSAKdGhleSBjYW5ub3QgYmUgYWRkZWQgaW4gZW5naW5lIHN0 cnVjdHVyZTsgaWYgeW91IHRoaW5rIHRoYXQgaXMgYSBiZXR0ZXIgCnBsYWNlIEkgY2FuIG1ha2Ug dGhlIGNoYW5nZXMgYWNjb3JkaW5nbHkuCgo+IG1ha2UgdGhhdCBtdWNoIHNlbnNlOiBQYXRjaCAx IG9ubHkgYWRkcyBhIHN0YXRpYyBmdW5jdGlvbiB3aXRob3V0IGFueQo+IHVzZXJzIChyZXN1bHRp bmcgaW4gZ2NjIGJlaW5nIHVuaGFwcHkpLiBJbW8gYSBiZXR0ZXIgc3BsaXQgd291bGQgYmU6Cj4g LSB3aXJlIHVwIHdhIGJhdGNoL3JpbmcgYWxsb2NhdGlvbi9mcmVpbmcgZnVuY3Rpb25zCj4gLSB3 aXJlIHVwIHRoZSBjaGFuZ2VzIHRvIHRoZSBscmMgaW5pdGlhbCByZWcgc3RhdGUgY29kZQo+IC0g b25lIHBhdGNoIHBlciB3L2EgZW50cnkgeW91IGFkZApJIGFtIG5vdCB0aGUgYXV0aG9yIG9mIGZp cnN0IHBhdGNoIGFuZCBJIHRyaWVkIHRvIHJldGFpbiBpdCBhcyBpcyBidXQgaXQgCmhhcyBub3Qg cmVzdWx0ZWQgaW4gYSBjbGVhbiBzcGxpdCB1cC4gSSB3aWxsIHNwbGl0IHRoZW0gYXMgc3VnZ2Vz dGVkLgoKcmVnYXJkcwpBcnVuCgo+Cj4gQ2hlZXJzLCBEYW5pZWwKPgo+PiArCj4+ICAgCXN0cnVj dCB7Cj4+ICAgCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc3RhdGU7Cj4+ICAgCQlzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZjsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+ IGluZGV4IDU1MTQzY2IuLjMwNDg0OTQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ PiBAQCAtMzQ3LDYgKzM0NywyNiBAQAo+PiAgICNkZWZpbmUgICBNSV9JTlZBTElEQVRFX0JTRAkJ KDE8PDcpCj4+ICAgI2RlZmluZSAgIE1JX0ZMVVNIX0RXX1VTRV9HVFQJCSgxPDwyKQo+PiAgICNk ZWZpbmUgICBNSV9GTFVTSF9EV19VU0VfUFBHVFQJCSgwPDwyKQo+PiArI2RlZmluZSBNSV9BVE9N SUMobGVuKQlNSV9JTlNUUigweDJGLCAobGVuLTIpKQo+PiArI2RlZmluZSAgIE1JX0FUT01JQ19N RU1PUllfVFlQRV9HR1RUCSgxPDwyMikKPj4gKyNkZWZpbmUgICBNSV9BVE9NSUNfSU5MSU5FX0RB VEEJCSgxPDwxOCkKPj4gKyNkZWZpbmUgICBNSV9BVE9NSUNfQ1NfU1RBTEwJCSgxPDwxNykKPj4g KyNkZWZpbmUgICBNSV9BVE9NSUNfUkVUVVJOX0RBVEFfQ1RMCSgxPDwxNikKPj4gKyNkZWZpbmUg TUlfQVRPTUlDX09QX01BU0sob3ApICAoKG9wKSA8PCA4KQo+PiArI2RlZmluZSBNSV9BVE9NSUNf QU5ECU1JX0FUT01JQ19PUF9NQVNLKDB4MDEpCj4+ICsjZGVmaW5lIE1JX0FUT01JQ19PUglNSV9B VE9NSUNfT1BfTUFTSygweDAyKQo+PiArI2RlZmluZSBNSV9BVE9NSUNfWE9SCU1JX0FUT01JQ19P UF9NQVNLKDB4MDMpCj4+ICsjZGVmaW5lIE1JX0FUT01JQ19NT1ZFCU1JX0FUT01JQ19PUF9NQVNL KDB4MDQpCj4+ICsjZGVmaW5lIE1JX0FUT01JQ19JTkMJTUlfQVRPTUlDX09QX01BU0soMHgwNSkK Pj4gKyNkZWZpbmUgTUlfQVRPTUlDX0RFQwlNSV9BVE9NSUNfT1BfTUFTSygweDA2KQo+PiArI2Rl ZmluZSBNSV9BVE9NSUNfQURECU1JX0FUT01JQ19PUF9NQVNLKDB4MDcpCj4+ICsjZGVmaW5lIE1J X0FUT01JQ19TVUIJTUlfQVRPTUlDX09QX01BU0soMHgwOCkKPj4gKyNkZWZpbmUgTUlfQVRPTUlD X1JTVUIJTUlfQVRPTUlDX09QX01BU0soMHgwOSkKPj4gKyNkZWZpbmUgTUlfQVRPTUlDX0lNQVgJ TUlfQVRPTUlDX09QX01BU0soMHgwQSkKPj4gKyNkZWZpbmUgTUlfQVRPTUlDX0lNSU4JTUlfQVRP TUlDX09QX01BU0soMHgwQikKPj4gKyNkZWZpbmUgTUlfQVRPTUlDX1VNQVgJTUlfQVRPTUlDX09Q X01BU0soMHgwQykKPj4gKyNkZWZpbmUgTUlfQVRPTUlDX1VNSU4JTUlfQVRPTUlDX09QX01BU0so MHgwRCkKPj4gKwo+PiAgICNkZWZpbmUgTUlfQkFUQ0hfQlVGRkVSCQlNSV9JTlNUUigweDMwLCAx KQo+PiAgICNkZWZpbmUgICBNSV9CQVRDSF9OT05fU0VDVVJFCQkoMSkKPj4gICAvKiBmb3Igc25i L2l2Yi92bHYgdGhpcyBhbHNvIG1lYW5zICJiYXRjaCBpbiBwcGd0dCIgd2hlbiBwcGd0dCBpcyBl bmFibGVkLiAqLwo+PiBAQCAtNDEwLDYgKzQzMCw3IEBACj4+ICAgI2RlZmluZSAgIERJU1BMQVlf UExBTkVfQSAgICAgICAgICAgKDA8PDIwKQo+PiAgICNkZWZpbmUgICBESVNQTEFZX1BMQU5FX0Ig ICAgICAgICAgICgxPDwyMCkKPj4gICAjZGVmaW5lIEdGWF9PUF9QSVBFX0NPTlRST0wobGVuKQko KDB4Mzw8MjkpfCgweDM8PDI3KXwoMHgyPDwyNCl8KGxlbi0yKSkKPj4gKyNkZWZpbmUgICBQSVBF X0NPTlRST0xfRkxVU0hfTDMJCQkJKDE8PDI3KQo+PiAgICNkZWZpbmUgICBQSVBFX0NPTlRST0xf R0xPQkFMX0dUVF9JVkIJCQkoMTw8MjQpIC8qIGdlbjcrICovCj4+ICAgI2RlZmluZSAgIFBJUEVf Q09OVFJPTF9NTUlPX1dSSVRFCQkJKDE8PDIzKQo+PiAgICNkZWZpbmUgICBQSVBFX0NPTlRST0xf U1RPUkVfREFUQV9JTkRFWAkJCSgxPDwyMSkKPj4gQEAgLTQyNiw2ICs0NDcsNyBAQAo+PiAgICNk ZWZpbmUgICBQSVBFX0NPTlRST0xfSU5ESVJFQ1RfU1RBVEVfRElTQUJMRQkJKDE8PDkpCj4+ICAg I2RlZmluZSAgIFBJUEVfQ09OVFJPTF9OT1RJRlkJCQkJKDE8PDgpCj4+ICAgI2RlZmluZSAgIFBJ UEVfQ09OVFJPTF9GTFVTSF9FTkFCTEUJCQkoMTw8NykgLyogZ2VuNysgKi8KPj4gKyNkZWZpbmUg ICBQSVBFX0NPTlRST0xfRENfRkxVU0hfRU5BQkxFCQkJKDE8PDUpCj4+ICAgI2RlZmluZSAgIFBJ UEVfQ09OVFJPTF9WRl9DQUNIRV9JTlZBTElEQVRFCQkoMTw8NCkKPj4gICAjZGVmaW5lICAgUElQ RV9DT05UUk9MX0NPTlNUX0NBQ0hFX0lOVkFMSURBVEUJCSgxPDwzKQo+PiAgICNkZWZpbmUgICBQ SVBFX0NPTlRST0xfU1RBVEVfQ0FDSEVfSU5WQUxJREFURQkJKDE8PDIpCj4+IEBAIC00NTEsNiAr NDczLDEwIEBACj4+ICAgI2RlZmluZSAgIE1JX1JFUE9SVF9QRVJGX0NPVU5UX0dHVFQgKDE8PDAp Cj4+ICAgI2RlZmluZSBNSV9MT0FEX1JFR0lTVEVSX01FTSAgICBNSV9JTlNUUigweDI5LCAwKQo+ PiAgICNkZWZpbmUgTUlfTE9BRF9SRUdJU1RFUl9SRUcgICAgTUlfSU5TVFIoMHgyQSwgMCkKPj4g KyNkZWZpbmUgTUlfTE9BRF9SRUdJU1RFUl9NRU1fR0VOOCBNSV9JTlNUUigweDI5LCAyKQo+PiAr I2RlZmluZSBNSV9MUk1fVVNFX0dMT0JBTF9HVFQgKDE8PDIyKQo+PiArI2RlZmluZSBNSV9MUk1f QVNZTkNfTU9ERV9FTkFCTEUgKDE8PDIxKQo+PiArI2RlZmluZSBNSV9MT0FEX1JFR0lTVEVSX1JF R19HRU44IE1JX0lOU1RSKDB4MkEsIDEpCj4+ICAgI2RlZmluZSBNSV9SU19TVE9SRV9EQVRBX0lN TSAgICBNSV9JTlNUUigweDJCLCAwKQo+PiAgICNkZWZpbmUgTUlfTE9BRF9VUkJfTUVNICAgICAg ICAgTUlfSU5TVFIoMHgyQywgMCkKPj4gICAjZGVmaW5lIE1JX1NUT1JFX1VSQl9NRU0gICAgICAg IE1JX0lOU1RSKDB4MkQsIDApCj4+IEBAIC0xNTIwLDYgKzE1NDYsOCBAQCBlbnVtIHNrbF9kaXNw X3Bvd2VyX3dlbGxzIHsKPj4gICAjZGVmaW5lICAgR0VOOF9SQ19TRU1BX0lETEVfTVNHX0RJU0FC TEUJKDEgPDwgMTIpCj4+ICAgI2RlZmluZSAgIEdFTjhfRkZfRE9QX0NMT0NLX0dBVEVfRElTQUJM RQkoMTw8MTApCj4+Cj4+ICsjZGVmaW5lIEdFTjhfUlNfUFJFRU1QVF9TVEFUVVMJCTB4MjE1Qwo+ PiArCj4+ICAgLyogRnVzZSByZWFkb3V0IHJlZ2lzdGVycyBmb3IgR1QgKi8KPj4gICAjZGVmaW5l IENIVl9GVVNFX0dUCQkJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDIxNjgpCj4+ICAgI2RlZmluZSAg IENIVl9GR1RfRVVfRElTX1NTMF9SMF9TSElGVAkxNgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu Ywo+PiBpbmRleCBlYTM3YTU2Li4zMjY1MzliIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYwo+PiBAQCAtMjAyLDYgKzIwMiw3IEBAIGVudW0gewo+PiAgIAlGQVVMVF9BTkRfQ09OVElO VUUgLyogVW5zdXBwb3J0ZWQgKi8KPj4gICB9Owo+PiAgICNkZWZpbmUgR0VOOF9DVFhfSURfU0hJ RlQgMzIKPj4gKyNkZWZpbmUgQ1RYX1JDU19JTkRJUkVDVF9DVFhfT0ZGU0VUX0RFRkFVTFQgIDB4 MTcKPj4KPj4gICBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsCj4+ICAgCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KTsKPj4gQEAg LTExMzksNiArMTE0MCwxNjkgQEAgY3JlYXRlX3dhX2JiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsIHVpbnQzMl90IGJiX3NpemUpCj4+ICAgCXJldHVybiByaW5nYnVmOwo+PiAgIH0KPj4K Pj4gK3N0YXRpYyBpbnQgZ2VuOF9pbml0X2luZGlyZWN0Y3R4X2JiKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcsCj4+ICsJCQkJICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCj4+ICt7 Cj4+ICsJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7Cj4+ICsJdTMyIHNjcmF0Y2hfYWRkcjsKPj4g KwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IE5VTEw7Cj4+ICsKPj4gKwlpZiAo cmluZy0+c2NyYXRjaC5vYmogPT0gTlVMTCkgewo+PiArCQlEUk1fRVJST1IoInNjcmF0Y2ggcGFn ZSBub3QgYWxsb2NhdGVkIGZvciAlc1xuIiwgcmluZy0+bmFtZSk7Cj4+ICsJCXJldHVybiAtRUlO VkFMOwo+PiArCX0KPj4gKwo+PiArCXJpbmdidWYgPSBjcmVhdGVfd2FfYmIocmluZywgUEFHRV9T SVpFKTsKPj4gKwlpZiAoIXJpbmdidWYpCj4+ICsJCXJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsJ Y3R4LT5pbmRpcmVjdF9jdHhfd2FfYmIgPSByaW5nYnVmOwo+PiArCj4+ICsJLyogV2FEaXNhYmxl Q3R4UmVzdG9yZUFyYml0cmF0aW9uOmJkdyxjaHYgKi8KPj4gKwlpbnRlbF9sb2dpY2FsX3Jpbmdf ZW1pdChyaW5nYnVmLCBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0RJU0FCTEUpOwo+PiArCj4+ICsJ LyogV2FGbHVzaENvaGVyZW50TDNDYWNoZUxpbmVzQXRDb250ZXh0U3dpdGNoOmJkdyxjaHYgKi8K Pj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBHRlhfT1BfUElQRV9DT05UUk9M KDYpKTsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBQSVBFX0NPTlRST0xf RENfRkxVU0hfRU5BQkxFKTsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAw KTsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPj4gKwlpbnRlbF9s b2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1p dChyaW5nYnVmLCAwKTsKPj4gKwo+PiArCS8qIFdhQ2xlYXJTbG1TcGFjZUF0Q29udGV4dFN3aXRj aDpiZHcsY2h2ICovCj4+ICsJZmxhZ3MgPSBQSVBFX0NPTlRST0xfRkxVU0hfTDMgfAo+PiArCQlQ SVBFX0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfAo+PiArCQlQSVBFX0NPTlRST0xfQ1NfU1RBTEwg fAo+PiArCQlQSVBFX0NPTlRST0xfUVdfV1JJVEU7Cj4+ICsKPj4gKwkvKiBBY3R1YWwgc2NyYXRj aCBsb2NhdGlvbiBpcyBhdCAxMjggYnl0ZXMgb2Zmc2V0ICovCj4+ICsJc2NyYXRjaF9hZGRyID0g cmluZy0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMipDQUNIRUxJTkVfQllURVM7Cj4+ICsJc2NyYXRj aF9hZGRyIHw9IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUOwo+PiArCj4+ICsJaW50ZWxfbG9naWNh bF9yaW5nX2VtaXQocmluZ2J1ZiwgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Cj4+ICsJaW50ZWxf bG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgZmxhZ3MpOwo+PiArCWludGVsX2xvZ2ljYWxfcmlu Z19lbWl0KHJpbmdidWYsIHNjcmF0Y2hfYWRkcik7Cj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXQocmluZ2J1ZiwgMCk7Cj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7 Cj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4+ICsKPj4gKwkvKiBQ YWRkaW5nIHRvIGFsaWduIHdpdGggY2FjaGUgbGluZSAqLwo+PiArCWludGVsX2xvZ2ljYWxfcmlu Z19lbWl0KHJpbmdidWYsIDApOwo+PiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYs IDApOwo+PiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+PiArCj4+ICsJ LyoKPj4gKwkgKiBObyBNSV9CQVRDSF9CVUZGRVJfRU5EIGlzIHJlcXVpcmVkIGluIEluZGlyZWN0 IGN0eCBCQiBiZWNhdXNlCj4+ICsJICogZXhlY3V0aW9uIGRlcGVuZHMgb24gdGhlIHNpemUgZGVm aW5lZCBpbiBDVFhfUkNTX0lORElSRUNUX0NUWAo+PiArCSAqLwo+PiArCj4+ICsJcmV0dXJuIDA7 Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgZ2VuOF9pbml0X3BlcmN0eF9iYihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nLAo+PiArCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj dHgpCj4+ICt7Cj4+ICsJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7Cj4+ICsJdTMyIHNjcmF0Y2hf YWRkcjsKPj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IE5VTEw7Cj4+ICsK Pj4gKwlpZiAocmluZy0+c2NyYXRjaC5vYmogPT0gTlVMTCkgewo+PiArCQlEUk1fRVJST1IoInNj cmF0Y2ggcGFnZSBub3QgYWxsb2NhdGVkIGZvciAlc1xuIiwgcmluZy0+bmFtZSk7Cj4+ICsJCXJl dHVybiAtRUlOVkFMOwo+PiArCX0KPj4gKwo+PiArCXJpbmdidWYgPSBjcmVhdGVfd2FfYmIocmlu ZywgUEFHRV9TSVpFKTsKPj4gKwlpZiAoIXJpbmdidWYpCj4+ICsJCXJldHVybiAtRU5PTUVNOwo+ PiArCj4+ICsJY3R4LT5wZXJfY3R4X3dhX2JiID0gcmluZ2J1ZjsKPj4gKwo+PiArCS8qIEFjdHVh bCBzY3JhdGNoIGxvY2F0aW9uIGlzIGF0IDEyOCBieXRlcyBvZmZzZXQgKi8KPj4gKwlzY3JhdGNo X2FkZHIgPSByaW5nLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyKkNBQ0hFTElORV9CWVRFUzsKPj4g KwlzY3JhdGNoX2FkZHIgfD0gUElQRV9DT05UUk9MX0dMT0JBTF9HVFQ7Cj4+ICsKPj4gKwkvKiBX YURpc2FibGVDdHhSZXN0b3JlQXJiaXRyYXRpb246YmR3LGNodiAqLwo+PiArCWludGVsX2xvZ2lj YWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFKTsKPj4g Kwo+PiArCS8qCj4+ICsJICogQXMgcGVyIEJzcGVjLCB0byB3b3JrYXJvdW5kIGEga25vd24gSFcg aXNzdWUsIFNXIG11c3QgcGVyZm9ybSB0aGUKPj4gKwkgKiBiZWxvdyBwcm9ncmFtbWluZyBzZXF1 ZW5jZSBwcmlvciB0byBwcm9ncmFtbWluZyBNSV9CQVRDSF9CVUZGRVJfRU5ELgo+PiArCSAqCj4+ ICsJICogVGhpcyBpcyBvbmx5IGFwcGxpY2FibGUgZm9yIEdlbjguCj4+ICsJICovCj4+ICsKPj4g KwkvKiBXYVJzUmVzdG9yZVdpdGhQZXJDdHh0QmI6YmR3LGNodiAqLwo+PiArCWludGVsX2xvZ2lj YWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKPj4gKwlpbnRl bF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBJTlNUUE0pOwo+PiArCWludGVsX2xvZ2ljYWxf cmluZ19lbWl0KHJpbmdidWYsCj4+ICsJCQkJX01BU0tFRF9CSVRfRElTQUJMRShJTlNUUE1fRk9S Q0VfT1JERVJJTkcpKTsKPj4gKwo+PiArCWZsYWdzID0gTUlfQVRPTUlDX01FTU9SWV9UWVBFX0dH VFQgfAo+PiArCQlNSV9BVE9NSUNfSU5MSU5FX0RBVEEgfAo+PiArCQlNSV9BVE9NSUNfQ1NfU1RB TEwgfAo+PiArCQlNSV9BVE9NSUNfUkVUVVJOX0RBVEFfQ1RMIHwKPj4gKwkJTUlfQVRPTUlDX01P VkU7Cj4+ICsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9BVE9NSUMo NSkgfCBmbGFncyk7Cj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1Ziwgc2NyYXRj aF9hZGRyKTsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPj4gKwlp bnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLAo+PiArCQkJCV9NQVNLRURfQklUX0VOQUJM RShJTlNUUE1fRk9SQ0VfT1JERVJJTkcpKTsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChy aW5nYnVmLAo+PiArCQkJCV9NQVNLRURfQklUX0VOQUJMRShJTlNUUE1fRk9SQ0VfT1JERVJJTkcp KTsKPj4gKwo+PiArCS8qCj4+ICsJICogQnNwZWMgc2F5cyBNSV9MT0FEX1JFR0lTVEVSX01FTSwg TUlfTE9BRF9SRUdJU1RFUl9SRUcgYW5kCj4+ICsJICogTUlfQkFUQ0hfQlVGRkVSX0VORCBpbnN0 cnVjdGlvbnMgaW4gdGhpcyBzZXF1ZW5jZSBuZWVkIHRvIGJlCj4+ICsJICogaW4gdGhlIHNhbWUg Y2FjaGVsaW5lLgo+PiArCSAqLwo+PiArCXdoaWxlICgoKHVuc2lnbmVkIGxvbmcpIHJpbmdidWYt PnRhaWwgJSBDQUNIRUxJTkVfQllURVMpICE9IDApCj4+ICsJCWludGVsX2xvZ2ljYWxfcmluZ19l bWl0KHJpbmdidWYsIE1JX05PT1ApOwo+PiArCj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQo cmluZ2J1ZiwKPj4gKwkJCQlNSV9MT0FEX1JFR0lTVEVSX01FTV9HRU44IHwKPj4gKwkJCQlNSV9M Uk1fVVNFX0dMT0JBTF9HVFQgfAo+PiArCQkJCU1JX0xSTV9BU1lOQ19NT0RFX0VOQUJMRSk7Cj4+ ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgSU5TVFBNKTsKPj4gKwlpbnRlbF9s b2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1p dChyaW5nYnVmLCBzY3JhdGNoX2FkZHIpOwo+PiArCj4+ICsJLyoKPj4gKwkgKiBCc3BlYyBzYXlz IHRoZXJlIHNob3VsZCBub3QgYmUgYW55IGNvbW1hbmRzIHByb2dyYW1tZWQKPj4gKwkgKiBiZXR3 ZWVuIE1JX0xPQURfUkVHSVNURVJfUkVHIGFuZCBNSV9CQVRDSF9CVUZGRVJfRU5EIHNvCj4+ICsJ ICogZG8gbm90IGFkZCBhbnkgbmV3IGNvbW1hbmRzCj4+ICsJICovCj4+ICsJaW50ZWxfbG9naWNh bF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTE9BRF9SRUdJU1RFUl9SRUdfR0VOOCk7Cj4+ICsJaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgR0VOOF9SU19QUkVFTVBUX1NUQVRVUyk7Cj4+ ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgR0VOOF9SU19QUkVFTVBUX1NUQVRV Uyk7Cj4+ICsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9CQVRDSF9C VUZGRVJfRU5EKTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50 IGludGVsX2luaXRfd29ya2Fyb3VuZF9iYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ PiArCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KQo+PiArewo+PiArCWludCByZXQ7 Cj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKPj4gKwo+PiArCVdBUk5f T04ocmluZy0+aWQgIT0gUkNTKTsKPj4gKwo+PiArCWlmIChJU19HRU44KGRldikpIHsKPj4gKwkJ cmV0ID0gZ2VuOF9pbml0X2luZGlyZWN0Y3R4X2JiKHJpbmcsIGN0eCk7Cj4+ICsJCWlmIChyZXQp Cj4+ICsJCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJCXJldCA9IGdlbjhfaW5pdF9wZXJjdHhfYmIo cmluZywgY3R4KTsKPj4gKwkJaWYgKHJldCkKPj4gKwkJCXJldHVybiByZXQ7Cj4+ICsJfQo+PiAr Cj4+ICsJcmV0dXJuIDA7Cj4+ICsKPj4gK30KPj4gKwo+PiAgIHN0YXRpYyBpbnQgZ2VuOF9pbml0 X2NvbW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4+ICAgewo+PiAgIAlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2Owo+PiBAQCAtMTQ5MCw2ICsxNjU0LDcg QEAgc3RhdGljIGludCBsb2dpY2FsX3JlbmRlcl9yaW5nX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPj4gICAJZWxzZQo+PiAgIAkJcmluZy0+aW5pdF9odyA9IGdlbjhfaW5pdF9yZW5kZXJf cmluZzsKPj4gICAJcmluZy0+aW5pdF9jb250ZXh0ID0gZ2VuOF9pbml0X3Jjc19jb250ZXh0Owo+ PiArCXJpbmctPmluaXRfY29udGV4dF9iYiA9IGludGVsX2luaXRfd29ya2Fyb3VuZF9iYjsKPj4g ICAJcmluZy0+Y2xlYW51cCA9IGludGVsX2ZpbmlfcGlwZV9jb250cm9sOwo+PiAgIAlyaW5nLT5n ZXRfc2Vxbm8gPSBnZW44X2dldF9zZXFubzsKPj4gICAJcmluZy0+c2V0X3NlcW5vID0gZ2VuOF9z ZXRfc2Vxbm87Cj4+IEBAIC0xNTAwLDExICsxNjY1LDE2IEBAIHN0YXRpYyBpbnQgbG9naWNhbF9y ZW5kZXJfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAgCXJpbmctPmVtaXRf YmJfc3RhcnQgPSBnZW44X2VtaXRfYmJfc3RhcnQ7Cj4+Cj4+ICAgCXJpbmctPmRldiA9IGRldjsK Pj4gKwo+PiArCXJldCA9IGludGVsX2luaXRfcGlwZV9jb250cm9sKHJpbmcpOwo+PiArCWlmIChy ZXQpCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gICAJcmV0ID0gbG9naWNhbF9yaW5nX2luaXQo ZGV2LCByaW5nKTsKPj4gICAJaWYgKHJldCkKPj4gICAJCXJldHVybiByZXQ7Cj4+Cj4+IC0JcmV0 dXJuIGludGVsX2luaXRfcGlwZV9jb250cm9sKHJpbmcpOwo+PiArCXJldHVybiAwOwo+PiAgIH0K Pj4KPj4gICBzdGF0aWMgaW50IGxvZ2ljYWxfYnNkX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+PiBAQCAtMTc4NCwxNSArMTk1NCwyOSBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhf bwo+PiAgIAlyZWdfc3RhdGVbQ1RYX1NFQ09ORF9CQl9TVEFURV0gPSByaW5nLT5tbWlvX2Jhc2Ug KyAweDExODsKPj4gICAJcmVnX3N0YXRlW0NUWF9TRUNPTkRfQkJfU1RBVEUrMV0gPSAwOwo+PiAg IAlpZiAocmluZy0+aWQgPT0gUkNTKSB7Cj4+IC0JCS8qIFRPRE86IGFjY29yZGluZyB0byBCU3Bl YywgdGhlIHJlZ2lzdGVyIHN0YXRlIGNvbnRleHQKPj4gLQkJICogZm9yIENIViBkb2VzIG5vdCBo YXZlIHRoZXNlLiBPVE9ILCB0aGVzZSByZWdpc3RlcnMgZG8KPj4gLQkJICogZXhpc3QgaW4gQ0hW LiBJJ20gd2FpdGluZyBmb3IgYSBjbGFyaWZpY2F0aW9uICovCj4+ICAgCQlyZWdfc3RhdGVbQ1RY X0JCX1BFUl9DVFhfUFRSXSA9IHJpbmctPm1taW9fYmFzZSArIDB4MWMwOwo+PiAtCQlyZWdfc3Rh dGVbQ1RYX0JCX1BFUl9DVFhfUFRSKzFdID0gMDsKPj4gKwo+PiArCQlpZiAoY3R4LT5wZXJfY3R4 X3dhX2JiKQo+PiArCQkJcmVnX3N0YXRlW0NUWF9CQl9QRVJfQ1RYX1BUUiArIDFdID0KPj4gKwkJ CQlpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoCj4+ICsJCQkJCWN0eC0+cGVyX2N0eF93YV9iYi0+ b2JqKSB8IDB4MDE7Cj4+ICsJCWVsc2UKPj4gKwkJCXJlZ19zdGF0ZVtDVFhfQkJfUEVSX0NUWF9Q VFIrMV0gPSAwOwo+PiArCj4+ICAgCQlyZWdfc3RhdGVbQ1RYX1JDU19JTkRJUkVDVF9DVFhdID0g cmluZy0+bW1pb19iYXNlICsgMHgxYzQ7Cj4+IC0JCXJlZ19zdGF0ZVtDVFhfUkNTX0lORElSRUNU X0NUWCsxXSA9IDA7Cj4+ICAgCQlyZWdfc3RhdGVbQ1RYX1JDU19JTkRJUkVDVF9DVFhfT0ZGU0VU XSA9IHJpbmctPm1taW9fYmFzZSArIDB4MWM4Owo+PiAtCQlyZWdfc3RhdGVbQ1RYX1JDU19JTkRJ UkVDVF9DVFhfT0ZGU0VUKzFdID0gMDsKPj4gKwo+PiArCQlpZiAoY3R4LT5pbmRpcmVjdF9jdHhf d2FfYmIpIHsKPj4gKwkJCXJlZ19zdGF0ZVtDVFhfUkNTX0lORElSRUNUX0NUWCArIDFdID0KPj4g KwkJCQlpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoCj4+ICsJCQkJY3R4LT5pbmRpcmVjdF9jdHhf d2FfYmItPm9iaikgfCAweDAxOwo+PiArCj4+ICsJCQlyZWdfc3RhdGVbQ1RYX1JDU19JTkRJUkVD VF9DVFhfT0ZGU0VUICsgMV0gPQo+PiArCQkJCUNUWF9SQ1NfSU5ESVJFQ1RfQ1RYX09GRlNFVF9E RUZBVUxUIDw8IDY7Cj4+ICsJCX0gZWxzZSB7Cj4+ICsJCQlyZWdfc3RhdGVbQ1RYX1JDU19JTkRJ UkVDVF9DVFgrMV0gPSAwOwo+PiArCQkJcmVnX3N0YXRlW0NUWF9SQ1NfSU5ESVJFQ1RfQ1RYX09G RlNFVCsxXSA9IDA7Cj4+ICsJCX0KPj4gICAJfQo+PiAgIAlyZWdfc3RhdGVbQ1RYX0xSSV9IRUFE RVJfMV0gPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSg5KTsKPj4gICAJcmVnX3N0YXRlW0NUWF9MUklf SEVBREVSXzFdIHw9IE1JX0xSSV9GT1JDRV9QT1NURUQ7Cj4+IEBAIC0xODU5LDYgKzIwNDMsMTgg QEAgdm9pZCBpbnRlbF9scl9jb250ZXh0X2ZyZWUoc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkK Pj4gICAJCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmY3R4X29iai0+YmFzZSk7Cj4+ICAg CQl9Cj4+ICAgCX0KPj4gKwo+PiArCWlmIChjdHgtPmluZGlyZWN0X2N0eF93YV9iYikgewo+PiAr CQlpbnRlbF91bnBpbl9yaW5nYnVmZmVyX29iaihjdHgtPmluZGlyZWN0X2N0eF93YV9iYik7Cj4+ ICsJCWludGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9vYmooY3R4LT5pbmRpcmVjdF9jdHhfd2FfYmIp Owo+PiArCQlrZnJlZShjdHgtPmluZGlyZWN0X2N0eF93YV9iYik7Cj4+ICsJfQo+PiArCj4+ICsJ aWYgKGN0eC0+cGVyX2N0eF93YV9iYikgewo+PiArCQlpbnRlbF91bnBpbl9yaW5nYnVmZmVyX29i aihjdHgtPnBlcl9jdHhfd2FfYmIpOwo+PiArCQlpbnRlbF9kZXN0cm95X3JpbmdidWZmZXJfb2Jq KGN0eC0+cGVyX2N0eF93YV9iYik7Cj4+ICsJCWtmcmVlKGN0eC0+cGVyX2N0eF93YV9iYik7Cj4+ ICsJfQo+PiAgIH0KPj4KPj4gICBzdGF0aWMgdWludDMyX3QgZ2V0X2xyX2NvbnRleHRfc2l6ZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+PiBAQCAtMTk4NSw2ICsyMTgxLDE2IEBAIGlu dCBpbnRlbF9scl9jb250ZXh0X2RlZmVycmVkX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y3R4LAo+Pgo+PiAgIAl9Cj4+Cj4+ICsJaWYgKHJpbmctPmlkID09IFJDUyAmJiAhY3R4LT5yY3Nf aW5pdGlhbGl6ZWQpIHsKPj4gKwkJaWYgKHJpbmctPmluaXRfY29udGV4dF9iYikgewo+PiArCQkJ cmV0ID0gcmluZy0+aW5pdF9jb250ZXh0X2JiKHJpbmcsIGN0eCk7Cj4+ICsJCQlpZiAocmV0KSB7 Cj4+ICsJCQkJRFJNX0VSUk9SKCJyaW5nIGluaXQgY29udGV4dCBiYjogJWRcbiIsIHJldCk7Cj4+ ICsJCQkJZ290byBlcnJvcjsKPj4gKwkJCX0KPj4gKwkJfQo+PiArCX0KPj4gKwo+PiAgIAlyZXQg PSBwb3B1bGF0ZV9scl9jb250ZXh0KGN0eCwgY3R4X29iaiwgcmluZywgcmluZ2J1Zik7Cj4+ICAg CWlmIChyZXQpIHsKPj4gICAJCURSTV9ERUJVR19EUklWRVIoIkZhaWxlZCB0byBwb3B1bGF0ZSBM UkM6ICVkXG4iLCByZXQpOwo+PiBAQCAtMjAxMyw2ICsyMjE5LDE3IEBAIGludCBpbnRlbF9scl9j b250ZXh0X2RlZmVycmVkX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+PiAgIAly ZXR1cm4gMDsKPj4KPj4gICBlcnJvcjoKPj4gKwlpZiAoY3R4LT5pbmRpcmVjdF9jdHhfd2FfYmIp IHsKPj4gKwkJaW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmooY3R4LT5pbmRpcmVjdF9jdHhfd2Ff YmIpOwo+PiArCQlpbnRlbF9kZXN0cm95X3JpbmdidWZmZXJfb2JqKGN0eC0+aW5kaXJlY3RfY3R4 X3dhX2JiKTsKPj4gKwkJa2ZyZWUoY3R4LT5pbmRpcmVjdF9jdHhfd2FfYmIpOwo+PiArCX0KPj4g KwlpZiAoY3R4LT5wZXJfY3R4X3dhX2JiKSB7Cj4+ICsJCWludGVsX3VucGluX3JpbmdidWZmZXJf b2JqKGN0eC0+cGVyX2N0eF93YV9iYik7Cj4+ICsJCWludGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9v YmooY3R4LT5wZXJfY3R4X3dhX2JiKTsKPj4gKwkJa2ZyZWUoY3R4LT5wZXJfY3R4X3dhX2JiKTsK Pj4gKwl9Cj4+ICsKPj4gICAJaWYgKGlzX2dsb2JhbF9kZWZhdWx0X2N0eCkKPj4gICAJCWludGVs X3VucGluX3JpbmdidWZmZXJfb2JqKHJpbmdidWYpOwo+PiAgIGVycm9yX2Rlc3Ryb3lfcmJ1ZjoK Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+PiBpbmRleCAzOTE4M2Zj Li44MzlkNjk4IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o Cj4+IEBAIC0xNDYsNiArMTQ2LDkgQEAgc3RydWN0ICBpbnRlbF9lbmdpbmVfY3Mgewo+PiAgIAlp bnQJCSgqaW5pdF9jb250ZXh0KShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+PiAgIAkJ CQkJc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCk7Cj4+Cj4+ICsJaW50CQkoKmluaXRfY29udGV4 dF9iYikoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPj4gKwkJCQkJICAgc3RydWN0IGlu dGVsX2NvbnRleHQgKmN0eCk7Cj4+ICsKPj4gICAJdm9pZAkJKCp3cml0ZV90YWlsKShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nLAo+PiAgIAkJCQkgICAgICB1MzIgdmFsdWUpOwo+PiAgIAlp bnQgX19tdXN0X2NoZWNrICgqZmx1c2gpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4+ IC0tCj4+IDIuMy4wCj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4gSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwo+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==