From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH 2/7] drm/i915: Introduce per-engine workarounds Date: Fri, 30 Nov 2018 14:13:32 -0800 Message-ID: <20181130221332.GI2438@intel.com> References: <20181130174412.15767-1-tvrtko.ursulin@linux.intel.com> <20181130174412.15767-3-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id EE6B96E68E for ; Fri, 30 Nov 2018 22:13:35 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181130174412.15767-3-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBOb3YgMzAsIDIwMTggYXQgMDU6NDQ6MDdQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiAKPiBXZSBzdG9wcGVkIHJlLWFwcGx5aW5nIHRoZSBHVCB3b3JrYXJvdW5kcyBhZnRlciBlbmdp bmUgcmVzZXQgc2luY2UgY29tbWl0Cj4gNTliNDQ5ZDVjODJhICgiZHJtL2k5MTU6IFNwbGl0IG91 dCBmdW5jdGlvbnMgZm9yIGRpZmZlcmVudCBraW5kcyBvZgo+IHdvcmthcm91bmRzIikuCj4gCj4g SXNzdWUgd2l0aCB0aGlzIGlzIHRoYXQgc29tZSBvZiB0aGUgR1Qgd29ya2Fyb3VuZHMgbGl2ZSBp biB0aGUgTU1JTyBzcGFjZQo+IHdoaWNoIGdldHMgbG9zdCBkdXJpbmcgZW5naW5lIHJlc2V0cy4g U28gZmFyIHRoZSByZWdpc3RlcnMgaW4gMHgyeHh4IGFuZAo+IDB4Ynh4eCBhZGRyZXNzIHJhbmdl IGhhdmUgYmVlbiBpZGVudGlmaWVkIHRvIGJlIGFmZmVjdGVkLgo+IAo+IFRoaXMgbG9zaW5nIG9m IGFwcGxpZWQgd29ya2Fyb3VuZHMgaGFzIG9idmlvdXMgbmVnYXRpdmUgZWZmZWN0cyBhbmQgY2Fu Cj4gZXZlbiBsZWFkIHRvIGhhcmQgc3lzdGVtIGhhbmdzIChzZWUgdGhlIGxpbmtlZCBCdWd6aWxs YSkuCj4gCj4gUmF0aGVyIHRoYW4ganVzdCByZXN0b3JpbmcgdGhpcyByZS1hcHBsaWNhdGlvbiwg YmVjYXVzZSB3ZSBoYXZlIGFsc28KPiBvYnNlcnZlZCB0aGF0IGl0IGlzIG5vdCBzYWZlIHRvIGp1 c3QgcmUtd3JpdGUgYWxsIEdUIHdvcmthcm91bmRzIGFmdGVyCj4gZW5naW5lIHJlc2V0cyAoR1BV IG1pZ2h0IGJlIGxpdmUgYW5kIHdlaXJkIGhhcmR3YXJlIHN0YXRlcyBjYW4gaGFwcGVuKSwKPiB3 ZSBpbnRyb2R1Y2UgYSBuZXcgY2xhc3Mgb2YgcGVyLWVuZ2luZSB3b3JrYXJvdW5kcyBhbmQgbW92 ZSBvbmx5IHRoZQo+IGFmZmVjdGVkIEdUIHdvcmthcm91bmRzIG92ZXIuCj4gCj4gVXNpbmcgdGhl IGZyYW1ld29yayBpbnRyb2R1Y2VkIGluIHRoZSBwcmV2aW91cyBwYXRjaCwgd2UgdGhlcmVmb3Jl IGFmdGVyCj4gZW5naW5lIHJlc2V0LCByZS1hcHBseSBvbmx5IHRoZSB3b3JrYXJvdW5kcyBsaXZp bmcgaW4gdGhlIGFmZmVjdGVkIE1NSU8KPiBhZGRyZXNzIHJhbmdlcy4KPiAKPiBTaWduZWQtb2Zm LWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IEJ1Z3ppbGxh OiBodHRwczovL2J1Z3ppbGxhLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3OTQ1 Cj4gRml4ZXM6IDU5YjQ0OWQ1YzgyYSAoImRybS9pOTE1OiBTcGxpdCBvdXQgZnVuY3Rpb25zIGZv ciBkaWZmZXJlbnQga2luZHMgb2Ygd29ya2Fyb3VuZHMiKQo+IENjOiBNaWthIEt1b3BwYWxhIDxt aWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxs ZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+Cj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRl bC5jb20+Cj4gQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVs LmNvbT4KPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+IENjOiBp bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2VuZ2luZV9jcy5jICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYyAgICAgICAgIHwgICA0ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmth cm91bmRzLmMgfCAyNDkgKysrKysrKysrKysrKy0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuaCB8ICAgMyArCj4gIDUgZmlsZXMgY2hhbmdlZCwgMTQ4 IGluc2VydGlvbnMoKyksIDExMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4IDc1OWMwZmQ1OGY4Yy4uZWY1ZDIwMmU5ZDQ1IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAtNzIzLDYgKzcyMyw4 IEBAIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiAgCV9faW50ZWxfY29udGV4dF91bnBpbihpOTE1LT5rZXJuZWxfY29udGV4 dCwgZW5naW5lKTsKPiAgCj4gIAlpOTE1X3RpbWVsaW5lX2ZpbmkoJmVuZ2luZS0+dGltZWxpbmUp Owo+ICsKPiArCWludGVsX3dhX2xpc3RfZnJlZSgmZW5naW5lLT53YV9saXN0KTsKPiAgfQo+ICAK PiAgdTY0IGludGVsX2VuZ2luZV9nZXRfYWN0aXZlX2hlYWQoY29uc3Qgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggMTFmNGU2 MTQ4NTU3Li5kZmFmYzNmNzEwZDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBA IC0xNjE3LDYgKzE2MTcsOCBAQCBzdGF0aWMgYm9vbCB1bmV4cGVjdGVkX3N0YXJ0aW5nX3N0YXRl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCj4gIHN0YXRpYyBpbnQgZ2VuOF9p bml0X2NvbW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ICsJ aW50ZWxfZW5naW5lX3dvcmthcm91bmRzX2FwcGx5KGVuZ2luZSk7Cj4gKwo+ICAJaW50ZWxfbW9j c19pbml0X2VuZ2luZShlbmdpbmUpOwo+ICAKPiAgCWludGVsX2VuZ2luZV9yZXNldF9icmVhZGNy dW1icyhlbmdpbmUpOwo+IEBAIC0yMzE0LDYgKzIzMTYsOCBAQCBpbnQgbG9naWNhbF9yZW5kZXJf cmluZ19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCQkJICByZXQpOwo+ ICAJfQo+ICAKPiArCWludGVsX2VuZ2luZV93b3JrYXJvdW5kc19pbml0KGVuZ2luZSk7Cj4gKwo+ ICAJcmV0dXJuIDA7Cj4gIAo+ICBlcnJfY2xlYW51cF9jb21tb246Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDhhMjI3MGIyMDliMC4uYzVmZjNkMzFjYWI3 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC0xNSw2 ICsxNSw3IEBACj4gICNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCj4gICNpbmNsdWRlICJpOTE1 X3RpbWVsaW5lLmgiCj4gICNpbmNsdWRlICJpbnRlbF9ncHVfY29tbWFuZHMuaCIKPiArI2luY2x1 ZGUgImludGVsX3dvcmthcm91bmRzLmgiCj4gIAo+ICBzdHJ1Y3QgZHJtX3ByaW50ZXI7Cj4gIHN0 cnVjdCBpOTE1X3NjaGVkX2F0dHI7Cj4gQEAgLTQ1MSw2ICs0NTIsNyBAQCBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzIHsKPiAgCj4gIAlzdHJ1Y3QgaW50ZWxfaHdfc3RhdHVzX3BhZ2Ugc3RhdHVzX3Bh Z2U7Cj4gIAlzdHJ1Y3QgaTkxNV9jdHhfd29ya2Fyb3VuZHMgd2FfY3R4Owo+ICsJc3RydWN0IGk5 MTVfd2FfbGlzdCB3YV9saXN0Owo+ICAJc3RydWN0IGk5MTVfdm1hICpzY3JhdGNoOwo+ICAKPiAg CXUzMiAgICAgICAgICAgICBpcnFfa2VlcF9tYXNrOyAvKiBhbHdheXMga2VlcCB0aGVzZSBpbnRl cnJ1cHRzICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmth cm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5jCj4gaW5k ZXggZmYyMGViZjllMDQwLi5iZTYzYTJhZjM0ODEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3dvcmthcm91bmRzLmMKPiBAQCAtNjUzLDE3ICs2NTMsNiBAQCBzdGF0aWMgdm9pZCBn ZW45X2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICB7Cj4gIAlzdHJ1Y3QgaTkxNV93YV9saXN0ICp3YWwgPSAmZGV2X3ByaXYtPmd0X3dhX2xp c3Q7Cj4gIAo+IC0JLyogV2FDb250ZXh0U3dpdGNoV2l0aENvbmN1cnJlbnRUTEJJbnZhbGlkYXRl OnNrbCxieHQsa2JsLGdsayxjZmwgKi8KPiAtCXdhX21hc2tlZF9lbih3YWwsCj4gLQkJICAgICBH RU45X0NTRkVfQ0hJQ0tFTjFfUkNTLAo+IC0JCSAgICAgR0VOOV9QUkVFTVBUX0dQR1BVX1NZTkNf U1dJVENIX0RJU0FCTEUpOwo+IC0KPiAtCj4gLQkvKiBXYUVuYWJsZUxic1NsYVJldHJ5VGltZXJE ZWNyZW1lbnQ6c2tsLGJ4dCxrYmwsZ2xrLGNmbCAqLwo+IC0Jd2Ffd3JpdGVfb3Iod2FsLAo+IC0J CSAgICBCRFdfU0NSQVRDSDEsCj4gLQkJICAgIEdFTjlfTEJTX1NMQV9SRVRSWV9USU1FUl9ERUNS RU1FTlRfRU5BQkxFKTsKPiAtCj4gIAkvKiBXYURpc2FibGVLaWxsTG9naWM6Ynh0LHNrbCxrYmwg Ki8KPiAgCWlmICghSVNfQ09GRkVFTEFLRShkZXZfcHJpdikpCj4gIAkJd2Ffd3JpdGVfb3Iod2Fs LAo+IEBAIC02ODUsMjQgKzY3NCw2IEBAIHN0YXRpYyB2b2lkIGdlbjlfZ3Rfd29ya2Fyb3VuZHNf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAl3YV93cml0ZV9vcih3 YWwsCj4gIAkJICAgIEdBTV9FQ09DSEssCj4gIAkJICAgIEJEV19ESVNBQkxFX0hEQ19JTlZBTElE QVRJT04pOwo+IC0KPiAtCS8qIFdhUHJvZ3JhbUwzU3FjUmVnMURlZmF1bHRGb3JQZXJmOmJ4dCxn bGsgKi8KPiAtCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiAtCQl3YV93cml0ZV9tYXNrZWRf b3Iod2FsLAo+IC0JCQkJICAgR0VOOF9MM1NRQ1JFRzEsCj4gLQkJCQkgICBMM19QUklPX0NSRURJ VFNfTUFTSywKPiAtCQkJCSAgIEwzX0dFTkVSQUxfUFJJT19DUkVESVRTKDYyKSB8Cj4gLQkJCQkg ICBMM19ISUdIX1BSSU9fQ1JFRElUUygyKSk7Cj4gLQo+IC0JLyogV2FPQ0xDb2hlcmVudExpbmVG bHVzaDpza2wsYnh0LGtibCxjZmwgKi8KPiAtCXdhX3dyaXRlX29yKHdhbCwKPiAtCQkgICAgR0VO OF9MM1NRQ1JFRzQsCj4gLQkJICAgIEdFTjhfTFFTQ19GTFVTSF9DT0hFUkVOVF9MSU5FUyk7Cj4g LQo+IC0JLyogV2FFbmFibGVQcmVlbXB0aW9uR3JhbnVsYXJpdHlDb250cm9sQnlVTUQ6c2tsLGJ4 dCxrYmwsY2ZsLFtjbmxdICovCj4gLQl3YV9tYXNrZWRfZW4od2FsLAo+IC0JCSAgICAgR0VON19G Rl9TTElDRV9DU19DSElDS0VOMSwKPiAtCQkgICAgIEdFTjlfRkZTQ19QRVJDVFhfUFJFRU1QVF9D VFJMKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgc2tsX2d0X3dvcmthcm91bmRzX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IEBAIC03MTEsMTEgKzY4Miw2IEBAIHN0 YXRpYyB2b2lkIHNrbF9ndF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgCj4gIAlnZW45X2d0X3dvcmthcm91bmRzX2luaXQoZGV2X3ByaXYpOwo+ ICAKPiAtCS8qIFdhRW5hYmxlR2Fwc1RzdkNyZWRpdEZpeDpza2wgKi8KPiAtCXdhX3dyaXRlX29y KHdhbCwKPiAtCQkgICAgR0VOOF9HQVJCQ05UTCwKPiAtCQkgICAgR0VOOV9HQVBTX1RTVl9DUkVE SVRfRElTQUJMRSk7Cj4gLQo+ICAJLyogV2FEaXNhYmxlR2Fmc1VuaXRDbGtHYXRpbmc6c2tsICov Cj4gIAl3YV93cml0ZV9vcih3YWwsCj4gIAkJICAgIEdFTjdfVUNHQ1RMNCwKPiBAQCAtNzM0LDEx ICs3MDAsNiBAQCBzdGF0aWMgdm9pZCBieHRfZ3Rfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJZ2VuOV9ndF93b3JrYXJvdW5kc19pbml0 KGRldl9wcml2KTsKPiAgCj4gLQkvKiBXYURpc2FibGVQb29sZWRFdUxvYWRCYWxhbmNpbmdGaXg6 Ynh0ICovCj4gLQl3YV9tYXNrZWRfZW4od2FsLAo+IC0JCSAgICAgRkZfU0xJQ0VfQ1NfQ0hJQ0tF TjIsCj4gLQkJICAgICBHRU45X1BPT0xFRF9FVV9MT0FEX0JBTEFOQ0lOR19GSVhfRElTQUJMRSk7 Cj4gLQo+ICAJLyogV2FJblBsYWNlRGVjb21wcmVzc2lvbkhhbmc6Ynh0ICovCj4gIAl3YV93cml0 ZV9vcih3YWwsCj4gIAkJICAgIEdFTjlfR0FNVF9FQ09fUkVHX1JXX0lBLAo+IEBAIC03NTEsMTEg KzcxMiw2IEBAIHN0YXRpYyB2b2lkIGtibF9ndF93b3JrYXJvdW5kc19pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAlnZW45X2d0X3dvcmthcm91bmRzX2luaXQo ZGV2X3ByaXYpOwo+ICAKPiAtCS8qIFdhRW5hYmxlR2Fwc1RzdkNyZWRpdEZpeDprYmwgKi8KPiAt CXdhX3dyaXRlX29yKHdhbCwKPiAtCQkgICAgR0VOOF9HQVJCQ05UTCwKPiAtCQkgICAgR0VOOV9H QVBTX1RTVl9DUkVESVRfRElTQUJMRSk7Cj4gLQo+ICAJLyogV2FEaXNhYmxlRHluYW1pY0NyZWRp dFNoYXJpbmc6a2JsICovCj4gIAlpZiAoSVNfS0JMX1JFVklEKGRldl9wcml2LCAwLCBLQkxfUkVW SURfQjApKQo+ICAJCXdhX3dyaXRlX29yKHdhbCwKPiBAQCAtNzcxLDIxICs3MjcsNiBAQCBzdGF0 aWMgdm9pZCBrYmxfZ3Rfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAl3YV93cml0ZV9vcih3YWwsCj4gIAkJICAgIEdFTjlfR0FNVF9FQ09fUkVH X1JXX0lBLAo+ICAJCSAgICBHQU1UX0VDT19FTkFCTEVfSU5fUExBQ0VfREVDT01QUkVTUyk7Cj4g LQo+IC0JLyogV2FLQkxWRUNTU2VtYXBob3JlV2FpdFBvbGw6a2JsICovCj4gLQlpZiAoSVNfS0JM X1JFVklEKGRldl9wcml2LCBLQkxfUkVWSURfQTAsIEtCTF9SRVZJRF9FMCkpIHsKPiAtCQlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQkJdW5zaWduZWQgaW50IHRtcDsKPiAtCj4g LQkJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIHRtcCkgewo+IC0JCQlpZiAoZW5n aW5lLT5pZCA9PSBSQ1MpCj4gLQkJCQljb250aW51ZTsKPiAtCj4gLQkJCXdhX3dyaXRlKHdhbCwK PiAtCQkJCSBSSU5HX1NFTUFfV0FJVF9QT0xMKGVuZ2luZS0+bW1pb19iYXNlKSwKPiAtCQkJCSAx KTsKPiAtCQl9Cj4gLQl9Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGdsa19ndF93b3JrYXJvdW5k c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiBAQCAtNzk5LDExICs3 NDAsNiBAQCBzdGF0aWMgdm9pZCBjZmxfZ3Rfd29ya2Fyb3VuZHNfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJZ2VuOV9ndF93b3JrYXJvdW5kc19pbml0KGRl dl9wcml2KTsKPiAgCj4gLQkvKiBXYUVuYWJsZUdhcHNUc3ZDcmVkaXRGaXg6Y2ZsICovCj4gLQl3 YV93cml0ZV9vcih3YWwsCj4gLQkJICAgIEdFTjhfR0FSQkNOVEwsCj4gLQkJICAgIEdFTjlfR0FQ U19UU1ZfQ1JFRElUX0RJU0FCTEUpOwo+IC0KPiAgCS8qIFdhRGlzYWJsZUdhZnNVbml0Q2xrR2F0 aW5nOmNmbCAqLwo+ICAJd2Ffd3JpdGVfb3Iod2FsLAo+ICAJCSAgICBHRU43X1VDR0NUTDQsCj4g QEAgLTg5NCwxMSArODMwLDYgQEAgc3RhdGljIHZvaWQgY25sX2d0X3dvcmthcm91bmRzX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJd2Ffd3JpdGVfb3Iod2FsLAo+ ICAJCSAgICBHRU45X0dBTVRfRUNPX1JFR19SV19JQSwKPiAgCQkgICAgR0FNVF9FQ09fRU5BQkxF X0lOX1BMQUNFX0RFQ09NUFJFU1MpOwo+IC0KPiAtCS8qIFdhRW5hYmxlUHJlZW1wdGlvbkdyYW51 bGFyaXR5Q29udHJvbEJ5VU1EOmNubCAqLwo+IC0Jd2FfbWFza2VkX2VuKHdhbCwKPiAtCQkgICAg IEdFTjdfRkZfU0xJQ0VfQ1NfQ0hJQ0tFTjEsCj4gLQkJICAgICBHRU45X0ZGU0NfUEVSQ1RYX1BS RUVNUFRfQ1RSTCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGljbF9ndF93b3JrYXJvdW5kc19p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiBAQCAtOTA3LDUzICs4Mzgs MTcgQEAgc3RhdGljIHZvaWQgaWNsX2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCXdhX2luaXRfbWNyKGRldl9wcml2KTsKPiAgCj4g LQkvKiBUaGlzIGlzIG5vdCBhbiBXYS4gRW5hYmxlIGZvciBiZXR0ZXIgaW1hZ2UgcXVhbGl0eSAq Lwo+IC0Jd2FfbWFza2VkX2VuKHdhbCwKPiAtCQkgICAgXzNEX0NISUNLRU4zLAo+IC0JCSAgICBf M0RfQ0hJQ0tFTjNfQUFfTElORV9RVUFMSVRZX0ZJWF9FTkFCTEUpOwo+IC0KPiAgCS8qIFdhSW5Q bGFjZURlY29tcHJlc3Npb25IYW5nOmljbCAqLwo+ICAJd2Ffd3JpdGVfb3Iod2FsLAo+ICAJCSAg ICBHRU45X0dBTVRfRUNPX1JFR19SV19JQSwKPiAgCQkgICAgR0FNVF9FQ09fRU5BQkxFX0lOX1BM QUNFX0RFQ09NUFJFU1MpOwo+ICAKPiAtCS8qIFdhUGlwZWxpbmVGbHVzaENvaGVyZW50TGluZXM6 aWNsICovCj4gLQl3YV93cml0ZV9vcih3YWwsCj4gLQkJICAgIEdFTjhfTDNTUUNSRUc0LAo+IC0J CSAgICBHRU44X0xRU0NfRkxVU0hfQ09IRVJFTlRfTElORVMpOwo+IC0KPiAtCS8qIFdhXzE0MDU1 NDM2MjI6aWNsCj4gLQkgKiBGb3JtZXJseSBrbm93biBhcyBXYUdBUFpQcmlvcml0eVNjaGVtZQo+ IC0JICovCj4gLQl3YV93cml0ZV9vcih3YWwsCj4gLQkJICAgIEdFTjhfR0FSQkNOVEwsCj4gLQkJ ICAgIEdFTjExX0FSQklUUkFUSU9OX1BSSU9fT1JERVJfTUFTSyk7Cj4gLQo+IC0JLyogV2FfMTYw NDIyMzY2NDppY2wKPiAtCSAqIEZvcm1lcmx5IGtub3duIGFzIFdhTDNCYW5rQWRkcmVzc0hhc2hp bmcKPiAtCSAqLwo+IC0Jd2Ffd3JpdGVfbWFza2VkX29yKHdhbCwKPiAtCQkJICAgR0VOOF9HQVJC Q05UTCwKPiAtCQkJICAgR0VOMTFfSEFTSF9DVFJMX0VYQ0xfTUFTSywKPiAtCQkJICAgR0VOMTFf SEFTSF9DVFJMX0VYQ0xfQklUMCk7Cj4gLQl3YV93cml0ZV9tYXNrZWRfb3Iod2FsLAo+IC0JCQkg ICBHRU4xMV9HTEJMSU5WTCwKPiAtCQkJICAgR0VOMTFfQkFOS19IQVNIX0FERFJfRVhDTF9NQVNL LAo+IC0JCQkgICBHRU4xMV9CQU5LX0hBU0hfQUREUl9FWENMX0JJVDApOwo+IC0KPiAgCS8qIFdh TW9kaWZ5R2FtVGxiUGFydGl0aW9uaW5nOmljbCAqLwo+ICAJd2Ffd3JpdGVfbWFza2VkX29yKHdh bCwKPiAgCQkJICAgR0VOMTFfR0FDQl9QRVJGX0NUUkwsCj4gIAkJCSAgIEdFTjExX0hBU0hfQ1RS TF9NQVNLLAo+ICAJCQkgICBHRU4xMV9IQVNIX0NUUkxfQklUMCB8IEdFTjExX0hBU0hfQ1RSTF9C SVQ0KTsKPiAgCj4gLQkvKiBXYV8xNDA1NzMzMjE2OmljbAo+IC0JICogRm9ybWVybHkga25vd24g YXMgV2FEaXNhYmxlQ2xlYW5FdmljdHMKPiAtCSAqLwo+IC0Jd2Ffd3JpdGVfb3Iod2FsLAo+IC0J CSAgICBHRU44X0wzU1FDUkVHNCwKPiAtCQkgICAgR0VOMTFfTFFTQ19DTEVBTl9FVklDVF9ESVNB QkxFKTsKPiAtCj4gIAkvKiBXYV8xNDA1NzY2MTA3OmljbAo+ICAJICogRm9ybWVybHkga25vd24g YXMgV2FDTDJTRkhhbGZNYXhBbGxvYwo+ICAJICovCj4gQEAgLTk4NiwxMyArODgxLDYgQEAgc3Rh dGljIHZvaWQgaWNsX2d0X3dvcmthcm91bmRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAJCQkgICAgSU5GX1VOSVRfTEVWRUxfQ0xLR0FURSwKPiAgCQkJICAgIENH UFNGX0NMS0dBVEVfRElTKTsKPiAgCj4gLQkvKiBXYUZvcndhcmRQcm9ncmVzc1NvZnRSZXNldDpp Y2wgKi8KPiAtCXdhX3dyaXRlX29yKHdhbCwKPiAtCQkgICAgR0VOMTBfU0NSQVRDSF9MTkNGMiwK PiAtCQkgICAgUE1GTFVTSERPTkVfTE5JQ1JTRFJPUCB8Cj4gLQkJICAgIFBNRkxVU0hfR0FQTDNV TkJMT0NLIHwKPiAtCQkgICAgUE1GTFVTSERPTkVfTE5FQkxLKTsKPiAtCj4gIAkvKiBXYV8xNDA2 NDYzMDk5OmljbAo+ICAJICogRm9ybWVybHkga25vd24gYXMgV2FHYW1UbGJQZW5kRXJyb3IKPiAg CSAqLwo+IEBAIC0xMjQyLDYgKzExMzAsMTQzIEBAIHZvaWQgaW50ZWxfd2hpdGVsaXN0X3dvcmth cm91bmRzX2FwcGx5KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCXdoaXRlbGlz dF9hcHBseShlbmdpbmUsIHdoaXRlbGlzdF9idWlsZChlbmdpbmUsICZ3KSk7Cj4gIH0KPiAgCj4g K3N0YXRpYyB2b2lkIHJjc19lbmdpbmVfd2FfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5p OTE1Owo+ICsJc3RydWN0IGk5MTVfd2FfbGlzdCAqd2FsID0gJmVuZ2luZS0+d2FfbGlzdDsKPiAr Cj4gKwlpZiAoSVNfR0VOOShpOTE1KSkgewo+ICsJCS8qIFdhQ29udGV4dFN3aXRjaFdpdGhDb25j dXJyZW50VExCSW52YWxpZGF0ZTpza2wsYnh0LGtibCxnbGssY2ZsICovCj4gKwkJd2FfbWFza2Vk X2VuKHdhbCwKPiArCQkJICAgICBHRU45X0NTRkVfQ0hJQ0tFTjFfUkNTLAo+ICsJCQkgICAgIEdF TjlfUFJFRU1QVF9HUEdQVV9TWU5DX1NXSVRDSF9ESVNBQkxFKTsKPiArCj4gKwkJLyogV2FFbmFi bGVMYnNTbGFSZXRyeVRpbWVyRGVjcmVtZW50OnNrbCxieHQsa2JsLGdsayxjZmwgKi8KPiArCQl3 YV93cml0ZV9vcih3YWwsCj4gKwkJCSAgICBCRFdfU0NSQVRDSDEsCj4gKwkJCSAgICBHRU45X0xC U19TTEFfUkVUUllfVElNRVJfREVDUkVNRU5UX0VOQUJMRSk7Cj4gKwo+ICsJCS8qIFdhUHJvZ3Jh bUwzU3FjUmVnMURlZmF1bHRGb3JQZXJmOmJ4dCxnbGsgKi8KPiArCQlpZiAoSVNfR0VOOV9MUChp OTE1KSkKPiArCQkJd2Ffd3JpdGVfbWFza2VkX29yKHdhbCwKPiArCQkJCQkgICBHRU44X0wzU1FD UkVHMSwKPiArCQkJCQkgICBMM19QUklPX0NSRURJVFNfTUFTSywKPiArCQkJCQkgICBMM19HRU5F UkFMX1BSSU9fQ1JFRElUUyg2MikgfAo+ICsJCQkJCSAgIEwzX0hJR0hfUFJJT19DUkVESVRTKDIp KTsKPiArCj4gKwkJLyogV2FPQ0xDb2hlcmVudExpbmVGbHVzaDpza2wsYnh0LGtibCxjZmwgKi8K PiArCQl3YV93cml0ZV9vcih3YWwsCj4gKwkJCSAgICBHRU44X0wzU1FDUkVHNCwKPiArCQkJICAg IEdFTjhfTFFTQ19GTFVTSF9DT0hFUkVOVF9MSU5FUyk7Cj4gKwl9Cj4gKwo+ICsJaWYgKElTX0JS T1hUT04oaTkxNSkpIHsKPiArCQkvKiBXYURpc2FibGVQb29sZWRFdUxvYWRCYWxhbmNpbmdGaXg6 Ynh0ICovCj4gKwkJd2FfbWFza2VkX2VuKHdhbCwKPiArCQkJICAgICBGRl9TTElDRV9DU19DSElD S0VOMiwKPiArCQkJICAgICBHRU45X1BPT0xFRF9FVV9MT0FEX0JBTEFOQ0lOR19GSVhfRElTQUJM RSk7Cj4gKwl9Cj4gKwo+ICsJaWYgKElTX1NLWUxBS0UoaTkxNSkgfHwgSVNfS0FCWUxBS0UoaTkx NSkgfHwgSVNfQ09GRkVFTEFLRShpOTE1KSkgewo+ICsJCS8qIFdhRW5hYmxlR2Fwc1RzdkNyZWRp dEZpeDpza2wsa2JsLGNmbCAqLwo+ICsJCXdhX3dyaXRlX29yKHdhbCwKPiArCQkJICAgIEdFTjhf R0FSQkNOVEwsCj4gKwkJCSAgICBHRU45X0dBUFNfVFNWX0NSRURJVF9ESVNBQkxFKTsKPiArCX0K PiArCj4gKwlpZiAoSVNfR0VOOShpOTE1KSB8fCBJU19DQU5OT05MQUtFKGk5MTUpKSB7Cj4gKwkJ LyogV2FFbmFibGVQcmVlbXB0aW9uR3JhbnVsYXJpdHlDb250cm9sQnlVTUQ6c2tsLGJ4dCxrYmws Y2ZsLGNubCAqLwo+ICsJCXdhX21hc2tlZF9lbih3YWwsCj4gKwkJCSAgICAgR0VON19GRl9TTElD RV9DU19DSElDS0VOMSwKPiArCQkJICAgICBHRU45X0ZGU0NfUEVSQ1RYX1BSRUVNUFRfQ1RSTCk7 Cj4gKwl9Cj4gKwo+ICsJaWYgKElTX0lDRUxBS0UoaTkxNSkpIHsKCkNvdWxkIHdlIG1ha2UgbmV3 ZXIgcGxhdGZvcm0gY29taW5nIGZpcnN0PwoKYW55d2F5OgoKQWNrZWQtYnk6IFJvZHJpZ28gVml2 aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KCj4gKwkJLyogVGhpcyBpcyBub3QgYW4gV2EuIEVu YWJsZSBmb3IgYmV0dGVyIGltYWdlIHF1YWxpdHkgKi8KPiArCQl3YV9tYXNrZWRfZW4od2FsLAo+ ICsJCQkgICAgIF8zRF9DSElDS0VOMywKPiArCQkJICAgICBfM0RfQ0hJQ0tFTjNfQUFfTElORV9R VUFMSVRZX0ZJWF9FTkFCTEUpOwo+ICsKPiArCQkvKiBXYVBpcGVsaW5lRmx1c2hDb2hlcmVudExp bmVzOmljbCAqLwo+ICsJCXdhX3dyaXRlX29yKHdhbCwKPiArCQkJICAgIEdFTjhfTDNTUUNSRUc0 LAo+ICsJCQkgICAgR0VOOF9MUVNDX0ZMVVNIX0NPSEVSRU5UX0xJTkVTKTsKPiArCj4gKwkJLyoK PiArCQkgKiBXYV8xNDA1NTQzNjIyOmljbAo+ICsJCSAqIEZvcm1lcmx5IGtub3duIGFzIFdhR0FQ WlByaW9yaXR5U2NoZW1lCj4gKwkJICovCj4gKwkJd2Ffd3JpdGVfb3Iod2FsLAo+ICsJCQkgICAg R0VOOF9HQVJCQ05UTCwKPiArCQkJICAgIEdFTjExX0FSQklUUkFUSU9OX1BSSU9fT1JERVJfTUFT Syk7Cj4gKwo+ICsJCS8qCj4gKwkJICogV2FfMTYwNDIyMzY2NDppY2wKPiArCQkgKiBGb3JtZXJs eSBrbm93biBhcyBXYUwzQmFua0FkZHJlc3NIYXNoaW5nCj4gKwkJICovCj4gKwkJd2Ffd3JpdGVf bWFza2VkX29yKHdhbCwKPiArCQkJCSAgIEdFTjhfR0FSQkNOVEwsCj4gKwkJCQkgICBHRU4xMV9I QVNIX0NUUkxfRVhDTF9NQVNLLAo+ICsJCQkJICAgR0VOMTFfSEFTSF9DVFJMX0VYQ0xfQklUMCk7 Cj4gKwkJd2Ffd3JpdGVfbWFza2VkX29yKHdhbCwKPiArCQkJCSAgIEdFTjExX0dMQkxJTlZMLAo+ ICsJCQkJICAgR0VOMTFfQkFOS19IQVNIX0FERFJfRVhDTF9NQVNLLAo+ICsJCQkJICAgR0VOMTFf QkFOS19IQVNIX0FERFJfRVhDTF9CSVQwKTsKPiArCj4gKwkJLyoKPiArCQkgKiBXYV8xNDA1NzMz MjE2OmljbAo+ICsJCSAqIEZvcm1lcmx5IGtub3duIGFzIFdhRGlzYWJsZUNsZWFuRXZpY3RzCj4g KwkJICovCj4gKwkJd2Ffd3JpdGVfb3Iod2FsLAo+ICsJCQkgICAgR0VOOF9MM1NRQ1JFRzQsCj4g KwkJCSAgICBHRU4xMV9MUVNDX0NMRUFOX0VWSUNUX0RJU0FCTEUpOwo+ICsKPiArCQkvKiBXYUZv cndhcmRQcm9ncmVzc1NvZnRSZXNldDppY2wgKi8KPiArCQl3YV93cml0ZV9vcih3YWwsCj4gKwkJ CSAgICBHRU4xMF9TQ1JBVENIX0xOQ0YyLAo+ICsJCQkgICAgUE1GTFVTSERPTkVfTE5JQ1JTRFJP UCB8Cj4gKwkJCSAgICBQTUZMVVNIX0dBUEwzVU5CTE9DSyB8Cj4gKwkJCSAgICBQTUZMVVNIRE9O RV9MTkVCTEspOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB4Y3NfZW5naW5lX3dhX2lu aXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKPiArCXN0cnVjdCBpOTE1X3dhX2xpc3Qg KndhbCA9ICZlbmdpbmUtPndhX2xpc3Q7Cj4gKwo+ICsJaWYgKElTX0tBQllMQUtFKGk5MTUpKSB7 Cj4gKwkJLyogV2FLQkxWRUNTU2VtYXBob3JlV2FpdFBvbGw6a2JsICovCj4gKwkJaWYgKElTX0tC TF9SRVZJRChpOTE1LCBLQkxfUkVWSURfQTAsIEtCTF9SRVZJRF9FMCkpIHsKPiArCQkJd2Ffd3Jp dGUod2FsLAo+ICsJCQkJIFJJTkdfU0VNQV9XQUlUX1BPTEwoZW5naW5lLT5tbWlvX2Jhc2UpLAo+ ICsJCQkJIDEpOwo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiArdm9pZCBpbnRlbF9lbmdpbmVfd29y a2Fyb3VuZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCXN0 cnVjdCBpOTE1X3dhX2xpc3QgKndhbCA9ICZlbmdpbmUtPndhX2xpc3Q7Cj4gKwo+ICsJaWYgKEdF TV9XQVJOX09OKElOVEVMX0dFTihlbmdpbmUtPmk5MTUpIDwgOCkpCj4gKwkJcmV0dXJuOwo+ICsK PiArCXdhX2luaXRfc3RhcnQod2FsLCBlbmdpbmUtPm5hbWUpOwo+ICsKPiArCWlmIChlbmdpbmUt PmlkID09IFJDUykKPiArCQlyY3NfZW5naW5lX3dhX2luaXQoZW5naW5lKTsKPiArCWVsc2UKPiAr CQl4Y3NfZW5naW5lX3dhX2luaXQoZW5naW5lKTsKPiArCj4gKwl3YV9pbml0X2ZpbmlzaCh3YWwp Owo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2VuZ2luZV93b3JrYXJvdW5kc19hcHBseShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCXdhX2xpc3RfYXBwbHkoZW5naW5lLT5p OTE1LCAmZW5naW5lLT53YV9saXN0KTsKPiArfQo+ICsKPiAgI2lmIElTX0VOQUJMRUQoQ09ORklH X0RSTV9JOTE1X1NFTEZURVNUKQo+ICAjaW5jbHVkZSAic2VsZnRlc3RzL2ludGVsX3dvcmthcm91 bmRzLmMiCj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF93b3JrYXJvdW5kcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMu aAo+IGluZGV4IDY0YWVkOWNmMDIwMC4uMjk5ODc2N2Q1MWNhIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF93b3JrYXJvdW5kcy5oCj4gQEAgLTM2LDQgKzM2LDcgQEAgdm9pZCBpbnRl bF9ndF93b3JrYXJvdW5kc19hcHBseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owo+ICAKPiAgdm9pZCBpbnRlbF93aGl0ZWxpc3Rfd29ya2Fyb3VuZHNfYXBwbHkoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiAgCj4gK3ZvaWQgaW50ZWxfZW5naW5lX3dvcmthcm91 bmRzX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiArdm9pZCBpbnRlbF9l bmdpbmVfd29ya2Fyb3VuZHNfYXBwbHkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsK PiArCj4gICNlbmRpZgo+IC0tIAo+IDIuMTkuMQo+IApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK