From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id BF4FA8989C for ; Mon, 4 Mar 2019 20:23:48 +0000 (UTC) Date: Mon, 4 Mar 2019 15:37:40 -0500 From: "Kumar Valsan, Prathap" Message-ID: <20190304203740.GE12889@intel.com> References: <20190215214608.32021-1-prathap.kumar.valsan@intel.com> <20190304202725.30015-1-prathap.kumar.valsan@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190304202725.30015-1-prathap.kumar.valsan@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v4] i915/gem_mocs_settings: Add mocs table for icelake List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Lucas De Marchi List-ID: T24gTW9uLCBNYXIgMDQsIDIwMTkgYXQgMDM6Mjc6MjVQTSAtMDUwMCwgUHJhdGhhcCBLdW1hciBW YWxzYW4gd3JvdGU6Cj4gRnJvbTogIkt1bWFyIFZhbHNhbiwgUHJhdGhhcCIgPHByYXRoYXAua3Vt YXIudmFsc2FuQGludGVsLmNvbT4KPiAKPiBUaGlzIHBhdGNoIGFkZHMgbW9jcyB0YWJsZSBmb3Ig aWNlbGFrZSB3aXRoIGV4cGVjdGVkIEwzIGFuZCBlRFJBTQo+IGNvbnRyb2wgdmFsdWVzLgo+IAo+ IFNpZ25lZC1vZmYtYnk6IEt1bWFyIFZhbHNhbiwgUHJhdGhhcCA8cHJhdGhhcC5rdW1hci52YWxz YW5AaW50ZWwuY29tPgo+IC0tLQo+IENoYW5nZXMgaW4gdjQ6Cj4gLSBMMyBjb250cm9sIHJlZ2lz dGVycyBhcmUgZ2xvYmFsIGluIGljZWxha2UuCj4gICBUZXN0IHZhbGlkYXRlcyB0aGF0IGRpcnR5 IHdyaXRlcyBmcm9tIHVzZXJzcGFjZQo+ICAgdG8gTDMgY29udHJvbCByZWdpc3RlcnMgYXJlIGJl aW5nIGRyb3BwZWQuIAo+IENoYW5nZXMgaW4gdjM6Cj4gLSBUaGVyZSBhcmUgaG9sZXMgaW4gdGhl IG1vY3MgdGFibGUoTHVjYXMgUG9pbnRlZCBvdXQpLgo+ICAgSW4gaWNlbGFrZSBpbmRleCAxNiBh bmQgMTcgYXJlIHJlc2VydmVkLgo+ICAgU28gdGVzdCBzaG91bGRuJ3QgYmUgY2hlY2tpbmcgdGhl bS4KPiBDaGFuZ2VzIGluIHYyOgo+IC0gQ2xlYW5lZCB1cCB0aGUgY29kZSBiYXNlZCBvbiByZXZp ZXcKPiAgIGNvbW1lbnRzIGZyb20gTHVjYXMgYW5kIENocmlzCj4gCj4gIHRlc3RzL2k5MTUvZ2Vt X21vY3Nfc2V0dGluZ3MuYyB8IDEyNiArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0K PiAgMSBmaWxlIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQo+IAo+ IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9tb2NzX3NldHRpbmdzLmMgYi90ZXN0cy9pOTE1 L2dlbV9tb2NzX3NldHRpbmdzLmMKPiBpbmRleCA1YjNiNmJjMS4uNjY2MTUwMDcgMTAwNjQ0Cj4g LS0tIGEvdGVzdHMvaTkxNS9nZW1fbW9jc19zZXR0aW5ncy5jCj4gKysrIGIvdGVzdHMvaTkxNS9n ZW1fbW9jc19zZXR0aW5ncy5jCj4gQEAgLTMzLDYgKzMzLDkgQEAKPiAgI2luY2x1ZGUgImlndF9z eXNmcy5oIgo+ICAKPiAgI2RlZmluZSBNQVhfTlVNQkVSX01PQ1NfUkVHSVNURVJTCSg2NCkKPiAr I2RlZmluZSBHRU45X05VTV9NT0NTX0VOVFJJRVMgICA2MiAgLyogNjIgb3V0IG9mIDY0IC0gNjMg JiA2NCBhcmUgcmVzZXJ2ZWQuICovCj4gKyNkZWZpbmUgR0VOMTFfTlVNX01PQ1NfRU5UUklFUyAg NjQgIC8qIDYzLTY0IGFyZSByZXNlcnZlZCwgYnV0IGNvbmZpZ3VyZWQuICovCj4gKwo+ICBlbnVt IHsKPiAgCU5PTkUsCj4gIAlSRVNFVCwKPiBAQCAtNjEsMTAgKzY0LDEzIEBAIHN0YXRpYyBjb25z dCBjaGFyICogY29uc3QgdGVzdF9tb2Rlc1tdID0gewo+ICAjZGVmaW5lIEdFTjlfTUZYMV9NT0NT XzAJKDB4Y0EwMCkJLyogTWVkaWEgMSBNT0NTIGJhc2UgcmVnaXN0ZXIqLwo+ICAjZGVmaW5lIEdF TjlfVkVCT1hfTU9DU18wCSgweGNCMDApCS8qIFZpZGVvIE1PQ1MgYmFzZSByZWdpc3RlciovCj4g ICNkZWZpbmUgR0VOOV9CTFRfTU9DU18wCQkoMHhjYzAwKQkvKiBCbGl0dGVyIE1PQ1MgYmFzZSBy ZWdpc3RlciovCj4gKyNkZWZpbmUgSUNFTEFLRV9NT0NTX1BURQl7MHgwMDAwMDAwNCwgMHgwMDMw LCAweDF9Cj4gKyNkZWZpbmUgTU9DU19QVEUJCXsweDAwMDAwMDM4LCAweDAwMzAsIDB4MX0KPiAg Cj4gIHN0cnVjdCBtb2NzX2VudHJ5IHsKPiAgCXVpbnQzMl90CWNvbnRyb2xfdmFsdWU7Cj4gIAl1 aW50MTZfdAlsM2NjX3ZhbHVlOwo+ICsJdWludDhfdCAJdXNlZDsKPiAgfTsKPiAgCj4gIHN0cnVj dCBtb2NzX3RhYmxlIHsKPiBAQCAtNzMsMzUgKzc5LDYzIEBAIHN0cnVjdCBtb2NzX3RhYmxlIHsK PiAgfTsKPiAgCj4gIC8qIFRoZSBmaXJzdCBlbnRyaWVzIGluIHRoZSBNT0NTIHRhYmxlcyBhcmUg ZGVmaW5lZCBieSB1QUJJICovCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW9jc19lbnRyeSBza3ls YWtlX21vY3NfdGFibGVbXSA9IHsKPiAtCXsgMHgwMDAwMDAwOSwgMHgwMDEwIH0sCj4gLQl7IDB4 MDAwMDAwMzgsIDB4MDAzMCB9LAo+IC0JeyAweDAwMDAwMDNiLCAweDAwMzAgfSwKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBtb2NzX2VudHJ5IGljZWxha2VfbW9jc190YWJsZVtHRU4xMV9OVU1fTU9D U19FTlRSSUVTXSA9IHsKPiArCVswXSAgPSB7IDB4MDAwMDAwMDUsIDB4MDAxMCwgMHgxfSwKPiAr CVsxXSAgPSBJQ0VMQUtFX01PQ1NfUFRFLAo+ICsJWzJdICA9IHsgMHgwMDAwMDAzNywgMHgwMDMw LCAweDF9LAo+ICsJWzNdICA9IHsgMHgwMDAwMDAwNSwgMHgwMDEwLCAweDF9LAo+ICsJWzRdICA9 IHsgMHgwMDAwMDAwNSwgMHgwMDMwLCAweDF9LAo+ICsJWzVdICA9IHsgMHgwMDAwMDAzNywgMHgw MDEwLCAweDF9LAo+ICsJWzZdICA9IHsgMHgwMDAwMDAxNywgMHgwMDEwLCAweDF9LAo+ICsJWzdd ICA9IHsgMHgwMDAwMDAxNywgMHgwMDMwLCAweDF9LAo+ICsJWzhdICA9IHsgMHgwMDAwMDAyNywg MHgwMDEwLCAweDF9LAo+ICsJWzldICA9IHsgMHgwMDAwMDAyNywgMHgwMDMwLCAweDF9LAo+ICsJ WzEwXSA9IHsgMHgwMDAwMDA3NywgMHgwMDEwLCAweDF9LAo+ICsJWzExXSA9IHsgMHgwMDAwMDA3 NywgMHgwMDMwLCAweDF9LAo+ICsJWzEyXSA9IHsgMHgwMDAwMDA1NywgMHgwMDEwLCAweDF9LAo+ ICsJWzEzXSA9IHsgMHgwMDAwMDA1NywgMHgwMDMwLCAweDF9LAo+ICsJWzE0XSA9IHsgMHgwMDAw MDA2NywgMHgwMDEwLCAweDF9LAo+ICsJWzE1XSA9IHsgMHgwMDAwMDA2NywgMHgwMDMwLCAweDF9 LAo+ICsJWzE4XSA9IHsgMHgwMDA2MDAzNywgMHgwMDMwLCAweDF9LAo+ICsJWzE5XSA9IHsgMHgw MDAwMDczNywgMHgwMDMwLCAweDF9LAo+ICsJWzIwXSA9IHsgMHgwMDAwMDMzNywgMHgwMDMwLCAw eDF9LAo+ICsJWzIxXSA9IHsgMHgwMDAwMDEzNywgMHgwMDMwLCAweDF9LAo+ICsJWzIyXSA9IHsg MHgwMDAwMDNiNywgMHgwMDMwLCAweDF9LAo+ICsJWzIzXSA9IHsgMHgwMDAwMDdiNywgMHgwMDMw LCAweDF9LAo+ICsJWzI0IC4uLiA2MV0gPSBJQ0VMQUtFX01PQ1NfUFRFLAo+ICsJWzYyXSA9IHsg MHgwMDAwMDAzNywgMHgwMDEwLCAweDF9LAo+ICsJWzYzXSA9IHsgMHgwMDAwMDAzNywgMHgwMDEw LCAweDF9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtb2NzX2VudHJ5IGRpcnR5 X2ljZWxha2VfbW9jc190YWJsZVtHRU4xMV9OVU1fTU9DU19FTlRSSUVTXSA9IHsKPiArCVswIC4u LiAxNV0gPSB7IDB4MDAwN0ZGRkYsIDB4MDAzRiwgMHgxIH0sCj4gKwlbMTggLi4uIEdFTjExX05V TV9NT0NTX0VOVFJJRVMgLSAxXSA9IHsgMHgwMDA3RkZGRiwgMHgwMDNGLCAweDEgfSwKPiAgfTsK PiAgCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgbW9jc19lbnRyeSBkaXJ0eV9za3lsYWtlX21vY3Nf dGFibGVbXSA9IHsKPiAtCXsgMHgwMDAwM0ZGRiwgMHgwMDNGIH0sIC8qIG5vIHNub29wIGJpdCAq Lwo+IC0JeyAweDAwMDAzRkZGLCAweDAwM0YgfSwKPiAtCXsgMHgwMDAwM0ZGRiwgMHgwMDNGIH0s Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbW9jc19lbnRyeSBza3lsYWtlX21vY3NfdGFibGVbR0VO OV9OVU1fTU9DU19FTlRSSUVTXSA9IHsKPiArCVswXSA9IHsgMHgwMDAwMDAwOSwgMHgwMDEwLCAw eDF9LAo+ICsJWzFdID0gTU9DU19QVEUsCj4gKwlbMl0gPSB7IDB4MDAwMDAwM2IsIDB4MDAzMCwg MHgxfSwKPiArCVszIC4uLiBHRU45X05VTV9NT0NTX0VOVFJJRVMgLSAxXSA9IE1PQ1NfUFRFLAo+ ICB9Owo+ICAKPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBtb2NzX2VudHJ5IGJyb3h0b25fbW9jc190 YWJsZVtdID0gewo+IC0JeyAweDAwMDAwMDA5LCAweDAwMTAgfSwKPiAtCXsgMHgwMDAwMDAzOCwg MHgwMDMwIH0sCj4gLQl7IDB4MDAwMDAwMzksIDB4MDAzMCB9LAo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IG1vY3NfZW50cnkgZGlydHlfc2t5bGFrZV9tb2NzX3RhYmxlW0dFTjlfTlVNX01PQ1NfRU5U UklFU10gPSB7Cj4gKwlbMCAuLi4gR0VOOV9OVU1fTU9DU19FTlRSSUVTIC0gMV0gPSB7IDB4MDAw MDNGRkYsIDB4MDAzRiwgMHgxIH0sCj4gIH07Cj4gIAo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IG1v Y3NfZW50cnkgZGlydHlfYnJveHRvbl9tb2NzX3RhYmxlW10gPSB7Cj4gLQl7IDB4MDAwMDdGRkYs IDB4MDAzRiB9LAo+IC0JeyAweDAwMDA3RkZGLCAweDAwM0YgfSwKPiAtCXsgMHgwMDAwN0ZGRiwg MHgwMDNGIH0sCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbW9jc19lbnRyeSBicm94dG9uX21vY3Nf dGFibGVbR0VOOV9OVU1fTU9DU19FTlRSSUVTXSA9IHsKPiArCVswXSA9IHsgMHgwMDAwMDAwOSwg MHgwMDEwLCAweDF9LAo+ICsJWzFdID0gTU9DU19QVEUsCj4gKwlbMl0gPSB7IDB4MDAwMDAwMzks IDB4MDAzMCwgMHgxfSwKPiArCVszIC4uLiBHRU45X05VTV9NT0NTX0VOVFJJRVMgLSAxXSA9IE1P Q1NfUFRFLAo+ICB9Owo+ICAKPiAtc3RhdGljIGNvbnN0IHVpbnQzMl90IHdyaXRlX3ZhbHVlc1td ID0gewo+IC0JMHhGRkZGRkZGRiwKPiAtCTB4RkZGRkZGRkYsCj4gLQkweEZGRkZGRkZGLAo+IC0J MHhGRkZGRkZGRgo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG1vY3NfZW50cnkgZGlydHlfYnJveHRv bl9tb2NzX3RhYmxlW0dFTjlfTlVNX01PQ1NfRU5UUklFU10gPSB7Cj4gKwlbMCAuLi4gR0VOOV9O VU1fTU9DU19FTlRSSUVTIC0gMV0gPSB7IDB4MDAwMDdGRkYsIDB4MDAzRiwgMHgxIH0sCj4gK307 Cj4gKwo+ICtzdGF0aWMgY29uc3QgdWludDMyX3Qgd3JpdGVfdmFsdWVzW01BWF9OVU1CRVJfTU9D U19SRUdJU1RFUlNdID0gewo+ICsJWzAgLi4uIE1BWF9OVU1CRVJfTU9DU19SRUdJU1RFUlMgLSAx XSA9IDB4RkZGRkZGRkYsCj4gIH07Cj4gIAo+ICBzdGF0aWMgYm9vbCBnZXRfbW9jc19zZXR0aW5n cyhpbnQgZmQsIHN0cnVjdCBtb2NzX3RhYmxlICp0YWJsZSwgYm9vbCBkaXJ0eSkKPiBAQCAtMTI3 LDYgKzE2MSwxNSBAQCBzdGF0aWMgYm9vbCBnZXRfbW9jc19zZXR0aW5ncyhpbnQgZmQsIHN0cnVj dCBtb2NzX3RhYmxlICp0YWJsZSwgYm9vbCBkaXJ0eSkKPiAgCQkJdGFibGUtPnRhYmxlID0gYnJv eHRvbl9tb2NzX3RhYmxlOwo+ICAJCX0KPiAgCQlyZXN1bHQgPSB0cnVlOwo+ICsJfSBlbHNlIGlm IChJU19JQ0VMQUtFKGRldmlkKSkgewo+ICsJCWlmIChkaXJ0eSkgewo+ICsJCQl0YWJsZS0+c2l6 ZSAgPSBBUlJBWV9TSVpFKGRpcnR5X2ljZWxha2VfbW9jc190YWJsZSk7Cj4gKwkJCXRhYmxlLT50 YWJsZSA9IGRpcnR5X2ljZWxha2VfbW9jc190YWJsZTsKPiArCQl9IGVsc2Ugewo+ICsJCQl0YWJs ZS0+c2l6ZSAgPSBBUlJBWV9TSVpFKGljZWxha2VfbW9jc190YWJsZSk7Cj4gKwkJCXRhYmxlLT50 YWJsZSA9IGljZWxha2VfbW9jc190YWJsZTsKPiArCQl9Cj4gKwkJcmVzdWx0ID0gdHJ1ZTsKPiAg CX0KPiAgCj4gIAlyZXR1cm4gcmVzdWx0Owo+IEBAIC0yODMsOSArMzI2LDEyIEBAIHN0YXRpYyB2 b2lkIGNoZWNrX2NvbnRyb2xfcmVnaXN0ZXJzKGludCBmZCwKPiAgCXJlYWRfcmVncyA9IGdlbV9t bWFwX19jcHUoZmQsIGRzdF9oYW5kbGUsIDAsIDQwOTYsIFBST1RfUkVBRCk7Cj4gIAo+ICAJZ2Vt X3NldF9kb21haW4oZmQsIGRzdF9oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9DUFUsIDApOwo+IC0J Zm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IHRhYmxlLnNpemU7IGluZGV4KyspCj4gKwlmb3Ig KGludCBpbmRleCA9IDA7IGluZGV4IDwgdGFibGUuc2l6ZTsgaW5kZXgrKykgewo+ICsJCWlmICgh dGFibGUudGFibGVbaW5kZXhdLnVzZWQpCj4gKwkJCWNvbnRpbnVlOwo+ICAJCWlndF9hc3NlcnRf ZXFfdTMyKHJlYWRfcmVnc1tpbmRleF0sCj4gIAkJCQkgIHRhYmxlLnRhYmxlW2luZGV4XS5jb250 cm9sX3ZhbHVlKTsKPiArCX0KPiAgCj4gIAltdW5tYXAocmVhZF9yZWdzLCA0MDk2KTsKPiAgCWdl bV9jbG9zZShmZCwgZHN0X2hhbmRsZSk7Cj4gQEAgLTMxNSwxMCArMzYxLDE0IEBAIHN0YXRpYyB2 b2lkIGNoZWNrX2wzY2NfcmVnaXN0ZXJzKGludCBmZCwKPiAgCWdlbV9zZXRfZG9tYWluKGZkLCBk c3RfaGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKPiAgCj4gIAlmb3IgKGluZGV4ID0g MDsgaW5kZXggPCB0YWJsZS5zaXplIC8gMjsgaW5kZXgrKykgewo+IC0JCWlndF9hc3NlcnRfZXFf dTMyKHJlYWRfcmVnc1tpbmRleF0gJiAweGZmZmYsCj4gLQkJCQkgIHRhYmxlLnRhYmxlW2luZGV4 ICogMl0ubDNjY192YWx1ZSk7Cj4gLQkJaWd0X2Fzc2VydF9lcV91MzIocmVhZF9yZWdzW2luZGV4 XSA+PiAxNiwKPiAtCQkJCSAgdGFibGUudGFibGVbaW5kZXggKiAyICsgMV0ubDNjY192YWx1ZSk7 Cj4gKwkJaWYgKHRhYmxlLnRhYmxlW2luZGV4ICogMl0udXNlZCkgewo+ICsJCQlpZ3RfYXNzZXJ0 X2VxX3UzMihyZWFkX3JlZ3NbaW5kZXhdICYgMHhmZmZmLAo+ICsJCQkJCSAgdGFibGUudGFibGVb aW5kZXggKiAyXS5sM2NjX3ZhbHVlKTsKPiArCQl9Cj4gKwkJaWYgKHRhYmxlLnRhYmxlW2luZGV4 ICogMiArIDFdLnVzZWQpIHsKPiArCQkJaWd0X2Fzc2VydF9lcV91MzIocmVhZF9yZWdzW2luZGV4 XSA+PiAxNiwKPiArCQkJCQkgIHRhYmxlLnRhYmxlW2luZGV4ICogMiArIDFdLmwzY2NfdmFsdWUp Owo+ICsJCX0KPiAgCX0KPiAgCj4gIAlpZiAodGFibGUuc2l6ZSAmIDEpCj4gQEAgLTM2OCwxOSAr NDE4LDM1IEBAIHN0YXRpYyB2b2lkIGNoZWNrX21vY3NfdmFsdWVzKGludCBmZCwgdW5zaWduZWQg ZW5naW5lLCB1aW50MzJfdCBjdHhfaWQsIGJvb2wgZGlyCj4gIHsKPiAgCWNoZWNrX2NvbnRyb2xf cmVnaXN0ZXJzKGZkLCBlbmdpbmUsIGN0eF9pZCwgZGlydHkpOwo+ICAKPiAtCWlmIChlbmdpbmUg PT0gSTkxNV9FWEVDX1JFTkRFUikKPiAtCQljaGVja19sM2NjX3JlZ2lzdGVycyhmZCwgZW5naW5l LCBjdHhfaWQsIGRpcnR5KTsKPiArCWlmIChlbmdpbmUgPT0gSTkxNV9FWEVDX1JFTkRFUikgewo+ ICsJCXVpbnQzMl90IGRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChmZCk7Cj4gKwkJLyogTDMg Y29udHJvbCAgcmVnaXN0ZXJzIGFyZSBnbG9iYWwgaW4gaWNsLgo+ICsJCSAqIGRpcnR5IHdyaXRl IGZyb20gdXNlcnNwYWNlIHdpbGwgYmUgaWdub3JlZC8KPiArCQkgKi8KPiArCQlpZiAoZGlydHkg JiYgSVNfSUNFTEFLRShkZXZpZCkpCj4gKwkJCWNoZWNrX2wzY2NfcmVnaXN0ZXJzKGZkLCBlbmdp bmUsIGN0eF9pZCwgIWRpcnR5KTsKPiArCQllbHNlCj4gKwkJCWNoZWNrX2wzY2NfcmVnaXN0ZXJz KGZkLCBlbmdpbmUsIGN0eF9pZCwgZGlydHkpOwo+ICsJfQo+ICB9CkFmdGVyIHRlc3Rpbmcgb24g aWNsIHBsYXRmb3JtLCBpdCBpcyBvYnNlcnZlZCB0aGF0IExMQyBjb250cm9sIHJlZ2lzdGVycwpj YW4gYmUgY29udGV4dCBzYXZlZCBhbmQgcmVzdG9yZWQgYmV0d2VlbiBjb250ZXh0cywgaG93ZXZl ciB3cml0ZSB0byAKTDMgY29udHJvbCByZWdpc3RlcnMgYXJlIGJlaW5nIGRyb3BwZWQgZXZlbiB0 aG91Z2ggdGhlIHdyaXRlcyBpcyB0aHJvdWdoCmEgcHJpdmlsaWdlZCBiYXRjaCBidWZmZXIoSTkx NV9FWEVDX1NFQ1VSRSkuIE5lZWQgdG8gY29uZmlybSBpZiB0aGlzIGlzCnRoZSBleHBlY3RlZCBi ZWhhdmlvdXIuIAoKV2l0aCB0aGlzIHBhdGNoIHRlc3QgaW5jbHVkaW5nICItZGlydHkiIHN1YnRl c3RzIGFyZSBwYXNzaW5nIG9uIGljbC4KCj4gIAo+ICBzdGF0aWMgdm9pZCB3cml0ZV9kaXJ0eV9t b2NzKGludCBmZCwgdW5zaWduZWQgZW5naW5lLCB1aW50MzJfdCBjdHhfaWQpCj4gIHsKPiArCXVp bnQzMl90IGRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChmZCk7Cj4gKwlpbnQgbnVtX29mX21v Y3NfZW50cmllczsKPiArCj4gKwlpZiAoSVNfSUNFTEFLRShkZXZpZCkpCj4gKwkJbnVtX29mX21v Y3NfZW50cmllcyA9IEdFTjExX05VTV9NT0NTX0VOVFJJRVM7Cj4gKwllbHNlCj4gKwkJbnVtX29m X21vY3NfZW50cmllcyA9IEdFTjlfTlVNX01PQ1NfRU5UUklFUzsKPiArCj4gIAl3cml0ZV9yZWdp c3RlcnMoZmQsIGN0eF9pZCwgZ2V0X2VuZ2luZV9iYXNlKGVuZ2luZSksCj4gLQkJCXdyaXRlX3Zh bHVlcywgQVJSQVlfU0laRSh3cml0ZV92YWx1ZXMpLAo+ICsJCQl3cml0ZV92YWx1ZXMsIG51bV9v Zl9tb2NzX2VudHJpZXMsCj4gIAkJCWVuZ2luZSk7Cj4gIAo+ICAJaWYgKGVuZ2luZSA9PSBJOTE1 X0VYRUNfUkVOREVSKQo+ICAJCXdyaXRlX3JlZ2lzdGVycyhmZCwgY3R4X2lkLCBHRU45X0xOQ0ZD TU9DUzAsCj4gLQkJCQl3cml0ZV92YWx1ZXMsIEFSUkFZX1NJWkUod3JpdGVfdmFsdWVzKSwKPiAr CQkJCXdyaXRlX3ZhbHVlcywgbnVtX29mX21vY3NfZW50cmllcy8yLAo+ICAJCQkJZW5naW5lKTsK PiAgfQo+ICAKPiAtLSAKPiAyLjIwLjEKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pZ3QtZGV2