From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/4] drm/i915: abstract PCH type detection from PCH id Date: Tue, 13 Feb 2018 17:55:24 +0200 Message-ID: <20180213155524.GJ5453@intel.com> References: <3bd4ffcd284cdbd4e8dc77ab02d97ded422e0c21.1517851783.git.jani.nikula@intel.com> <20180205222149.ujrv536wrqlx2pke@intel.com> <87sha4lx5t.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9273D6E269 for ; Tue, 13 Feb 2018 15:55:28 +0000 (UTC) Content-Disposition: inline In-Reply-To: <87sha4lx5t.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, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBGZWIgMTMsIDIwMTggYXQgMDU6MzU6NThQTSArMDIwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gTW9uLCAwNSBGZWIgMjAxOCwgUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50 ZWwuY29tPiB3cm90ZToKPiA+IE9uIE1vbiwgRmViIDA1LCAyMDE4IGF0IDA1OjMxOjM2UE0gKzAw MDAsIEphbmkgTmlrdWxhIHdyb3RlOgo+ID4+IE1ha2UgdGhlIGxvZ2ljIGluIGludGVsX2RldGVj dF9wY2goKSBlYXNpZXIgdG8gZm9sbG93LCBhbmQgbWFrZSB0aGUgUENICj4gPj4gaWQgdG8gdHlw ZSBtYXBwaW5nIHJldXNhYmxlLiBObyBmdW5jdGlvbmFsIGNoYW5nZXMuCj4gPgo+ID4gSSB3b25k ZXJlZCBoZXJlIGlmIHdlIHNob3VsZCBjaGFuZ2UgaW50ZWxfcGNoIGZyb20gZW51bSB0byBhcnJh eQo+ID4geyBwY2hfaWQsIHBjaF90eXBlLCBzdXBwb3J0ZWRfcGxhdGZvcm1zLCAibmFtZSIgfQo+ ID4KPiA+IGJ1dCBiZXNpZGVzIHJlcXVpcmluZyBhIGxvb3AgYXQgdGhpcyBwb2ludCBzdXBwb3J0 ZWRfcGxhdGZvcm1zIHdvdWxkCj4gPiBiZSB0cmlja3kgb25lLgo+IAo+IEkgdGhpbmsgYm90aCBW aWxsZSBhbmQgSSB0cmllZCB0byBmaWd1cmUgb3V0IGEgaGFuZHkgd2F5IHRvIGV4cHJlc3MgdGhl Cj4gc3VwcG9ydGVkIHBsYXRmb3JtcyBzdGF0aWNhbGx5LCBidXQgZGlkbid0IGNvbWUgdXAgd2l0 aCBhbnl0aGluZy4KCkkgdGhpbmsgYSBmdW5jdGlvbiBwb2ludGVyIHdhcyB0aGUgYmVzdCBJIGNv dWxkIGNvbWUgdXAgd2l0aCBiYWNrIHRoZW4uCgpUaGUgdWx0IHN0dWZmIGlzIHdoYXQga2lsbHMg aXQgSSB0aGluayBiZWNhdXNlIHRoYXQgaXNuJ3QgcGFydCBvZiB0aGUKcGxhdGZvcm0gZW51bS4g SSBndWVzcyB3ZSBjb3VsZCBjb25zaWRlciBpbmNsdWRpbmcgdGhhdCBpbmZvcm1hdGlvbgp0aGVy ZSB0b28sIG9yIHdlIGNvdWxkIGhhdmUgc29tZXRoaW5nIGVsc2UgaW4gdGhlIGRldmljZSBpbmZv IHRvCmlkZW50aWZ5IHVsdC91bHggZGV2aWNlcy4gTWF5YmUuCgo+IAo+IFB1c2hlZCB0aGUgc2Vy aWVzLCB0aGFua3MgZm9yIHRoZSByZXZpZXcuCj4gCj4gQlIsCj4gSmFuaS4KPiAKPiA+Cj4gPiBz bywgbmV2ZXIgbWluZC4uLgo+ID4KPiA+PiAKPiA+PiBTaWduZWQtb2ZmLWJ5OiBKYW5pIE5pa3Vs YSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+ID4KPiA+IFJldmlld2VkLWJ5OiBSb2RyaWdvIFZp dmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gPgo+ID4+IC0tLQo+ID4+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jIHwgMTQ4ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiA+PiAgMSBmaWxlIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyksIDc1IGRl bGV0aW9ucygtKQo+ID4+IAo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4+IGluZGV4IGU5 ZjFkYWYyNThmZS4uMDhlOTdiNmU5NzZiIDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5jCj4gPj4gQEAgLTEyMiw2ICsxMjIsNzUgQEAgc3RhdGljIGJvb2wgaTkxNV9lcnJvcl9pbmpl Y3RlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPj4gIAkJICAgICAgaTkx NV9lcnJvcl9pbmplY3RlZChkZXZfcHJpdikgPyBLRVJOX0RFQlVHIDogS0VSTl9FUlIsIFwKPiA+ PiAgCQkgICAgICBmbXQsICMjX19WQV9BUkdTX18pCj4gPj4gIAo+ID4+ICsvKiBNYXAgUENIIGRl dmljZSBpZCB0byBQQ0ggdHlwZSwgb3IgUENIX05PTkUgaWYgdW5rbm93bi4gKi8KPiA+PiArc3Rh dGljIGVudW0gaW50ZWxfcGNoCj4gPj4gK2ludGVsX3BjaF90eXBlKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdW5zaWduZWQgc2hvcnQgaWQpCj4gPj4gK3sKPiA+PiAr CXN3aXRjaCAoaWQpIHsKPiA+PiArCWNhc2UgSU5URUxfUENIX0lCWF9ERVZJQ0VfSURfVFlQRToK PiA+PiArCQlEUk1fREVCVUdfS01TKCJGb3VuZCBJYmV4IFBlYWsgUENIXG4iKTsKPiA+PiArCQlX QVJOX09OKCFJU19HRU41KGRldl9wcml2KSk7Cj4gPj4gKwkJcmV0dXJuIFBDSF9JQlg7Cj4gPj4g KwljYXNlIElOVEVMX1BDSF9DUFRfREVWSUNFX0lEX1RZUEU6Cj4gPj4gKwkJRFJNX0RFQlVHX0tN UygiRm91bmQgQ291Z2FyUG9pbnQgUENIXG4iKTsKPiA+PiArCQlXQVJOX09OKCFJU19HRU42KGRl dl9wcml2KSAmJiAhSVNfSVZZQlJJREdFKGRldl9wcml2KSk7Cj4gPj4gKwkJcmV0dXJuIFBDSF9D UFQ7Cj4gPj4gKwljYXNlIElOVEVMX1BDSF9QUFRfREVWSUNFX0lEX1RZUEU6Cj4gPj4gKwkJRFJN X0RFQlVHX0tNUygiRm91bmQgUGFudGhlclBvaW50IFBDSFxuIik7Cj4gPj4gKwkJV0FSTl9PTigh SVNfR0VONihkZXZfcHJpdikgJiYgIUlTX0lWWUJSSURHRShkZXZfcHJpdikpOwo+ID4+ICsJCS8q IFBhbnRoZXJQb2ludCBpcyBDUFQgY29tcGF0aWJsZSAqLwo+ID4+ICsJCXJldHVybiBQQ0hfQ1BU Owo+ID4+ICsJY2FzZSBJTlRFTF9QQ0hfTFBUX0RFVklDRV9JRF9UWVBFOgo+ID4+ICsJCURSTV9E RUJVR19LTVMoIkZvdW5kIEx5bnhQb2ludCBQQ0hcbiIpOwo+ID4+ICsJCVdBUk5fT04oIUlTX0hB U1dFTEwoZGV2X3ByaXYpICYmICFJU19CUk9BRFdFTEwoZGV2X3ByaXYpKTsKPiA+PiArCQlXQVJO X09OKElTX0hTV19VTFQoZGV2X3ByaXYpIHx8IElTX0JEV19VTFQoZGV2X3ByaXYpKTsKPiA+PiAr CQlyZXR1cm4gUENIX0xQVDsKPiA+PiArCWNhc2UgSU5URUxfUENIX0xQVF9MUF9ERVZJQ0VfSURf VFlQRToKPiA+PiArCQlEUk1fREVCVUdfS01TKCJGb3VuZCBMeW54UG9pbnQgTFAgUENIXG4iKTsK PiA+PiArCQlXQVJOX09OKCFJU19IQVNXRUxMKGRldl9wcml2KSAmJiAhSVNfQlJPQURXRUxMKGRl dl9wcml2KSk7Cj4gPj4gKwkJV0FSTl9PTighSVNfSFNXX1VMVChkZXZfcHJpdikgJiYgIUlTX0JE V19VTFQoZGV2X3ByaXYpKTsKPiA+PiArCQlyZXR1cm4gUENIX0xQVDsKPiA+PiArCWNhc2UgSU5U RUxfUENIX1dQVF9ERVZJQ0VfSURfVFlQRToKPiA+PiArCQlEUk1fREVCVUdfS01TKCJGb3VuZCBX aWxkY2F0UG9pbnQgUENIXG4iKTsKPiA+PiArCQlXQVJOX09OKCFJU19IQVNXRUxMKGRldl9wcml2 KSAmJiAhSVNfQlJPQURXRUxMKGRldl9wcml2KSk7Cj4gPj4gKwkJV0FSTl9PTihJU19IU1dfVUxU KGRldl9wcml2KSB8fCBJU19CRFdfVUxUKGRldl9wcml2KSk7Cj4gPj4gKwkJLyogV2lsZGNhdFBv aW50IGlzIExQVCBjb21wYXRpYmxlICovCj4gPj4gKwkJcmV0dXJuIFBDSF9MUFQ7Cj4gPj4gKwlj YXNlIElOVEVMX1BDSF9XUFRfTFBfREVWSUNFX0lEX1RZUEU6Cj4gPj4gKwkJRFJNX0RFQlVHX0tN UygiRm91bmQgV2lsZGNhdFBvaW50IExQIFBDSFxuIik7Cj4gPj4gKwkJV0FSTl9PTighSVNfSEFT V0VMTChkZXZfcHJpdikgJiYgIUlTX0JST0FEV0VMTChkZXZfcHJpdikpOwo+ID4+ICsJCVdBUk5f T04oIUlTX0hTV19VTFQoZGV2X3ByaXYpICYmICFJU19CRFdfVUxUKGRldl9wcml2KSk7Cj4gPj4g KwkJLyogV2lsZGNhdFBvaW50IGlzIExQVCBjb21wYXRpYmxlICovCj4gPj4gKwkJcmV0dXJuIFBD SF9MUFQ7Cj4gPj4gKwljYXNlIElOVEVMX1BDSF9TUFRfREVWSUNFX0lEX1RZUEU6Cj4gPj4gKwkJ RFJNX0RFQlVHX0tNUygiRm91bmQgU3VucmlzZVBvaW50IFBDSFxuIik7Cj4gPj4gKwkJV0FSTl9P TighSVNfU0tZTEFLRShkZXZfcHJpdikgJiYgIUlTX0tBQllMQUtFKGRldl9wcml2KSk7Cj4gPj4g KwkJcmV0dXJuIFBDSF9TUFQ7Cj4gPj4gKwljYXNlIElOVEVMX1BDSF9TUFRfTFBfREVWSUNFX0lE X1RZUEU6Cj4gPj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQgU3VucmlzZVBvaW50IExQIFBDSFxu Iik7Cj4gPj4gKwkJV0FSTl9PTighSVNfU0tZTEFLRShkZXZfcHJpdikgJiYgIUlTX0tBQllMQUtF KGRldl9wcml2KSk7Cj4gPj4gKwkJcmV0dXJuIFBDSF9TUFQ7Cj4gPj4gKwljYXNlIElOVEVMX1BD SF9LQlBfREVWSUNFX0lEX1RZUEU6Cj4gPj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQgS2FieSBM YWtlIFBDSCAoS0JQKVxuIik7Cj4gPj4gKwkJV0FSTl9PTighSVNfU0tZTEFLRShkZXZfcHJpdikg JiYgIUlTX0tBQllMQUtFKGRldl9wcml2KSAmJgo+ID4+ICsJCQkhSVNfQ09GRkVFTEFLRShkZXZf cHJpdikpOwo+ID4+ICsJCXJldHVybiBQQ0hfS0JQOwo+ID4+ICsJY2FzZSBJTlRFTF9QQ0hfQ05Q X0RFVklDRV9JRF9UWVBFOgo+ID4+ICsJCURSTV9ERUJVR19LTVMoIkZvdW5kIENhbm5vbiBMYWtl IFBDSCAoQ05QKVxuIik7Cj4gPj4gKwkJV0FSTl9PTighSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikg JiYgIUlTX0NPRkZFRUxBS0UoZGV2X3ByaXYpKTsKPiA+PiArCQlyZXR1cm4gUENIX0NOUDsKPiA+ PiArCWNhc2UgSU5URUxfUENIX0NOUF9MUF9ERVZJQ0VfSURfVFlQRToKPiA+PiArCQlEUk1fREVC VUdfS01TKCJGb3VuZCBDYW5ub24gTGFrZSBMUCBQQ0ggKENOUC1MUClcbiIpOwo+ID4+ICsJCVdB Uk5fT04oIUlTX0NBTk5PTkxBS0UoZGV2X3ByaXYpICYmICFJU19DT0ZGRUVMQUtFKGRldl9wcml2 KSk7Cj4gPj4gKwkJcmV0dXJuIFBDSF9DTlA7Cj4gPj4gKwljYXNlIElOVEVMX1BDSF9JQ1BfREVW SUNFX0lEX1RZUEU6Cj4gPj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQgSWNlIExha2UgUENIXG4i KTsKPiA+PiArCQlXQVJOX09OKCFJU19JQ0VMQUtFKGRldl9wcml2KSk7Cj4gPj4gKwkJcmV0dXJu IFBDSF9JQ1A7Cj4gPj4gKwlkZWZhdWx0Ogo+ID4+ICsJCXJldHVybiBQQ0hfTk9ORTsKPiA+PiAr CX0KPiA+PiArfQo+ID4+ICAKPiA+PiAgc3RhdGljIGVudW0gaW50ZWxfcGNoIGludGVsX3ZpcnRf ZGV0ZWN0X3BjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPj4gIHsKPiA+ PiBAQCAtMTgzLDYgKzI1Miw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RldGVjdF9wY2goc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4+ICAJICovCj4gPj4gIAl3aGlsZSAoKHBj aCA9IHBjaV9nZXRfY2xhc3MoUENJX0NMQVNTX0JSSURHRV9JU0EgPDwgOCwgcGNoKSkpIHsKPiA+ PiAgCQl1bnNpZ25lZCBzaG9ydCBpZDsKPiA+PiArCQllbnVtIGludGVsX3BjaCBwY2hfdHlwZTsK PiA+PiAgCj4gPj4gIAkJaWYgKHBjaC0+dmVuZG9yICE9IFBDSV9WRU5ET1JfSURfSU5URUwpCj4g Pj4gIAkJCWNvbnRpbnVlOwo+ID4+IEBAIC0xOTEsODEgKzI2MSw5IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2RldGVjdF9wY2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4+ICAK PiA+PiAgCQlkZXZfcHJpdi0+cGNoX2lkID0gaWQ7Cj4gPj4gIAo+ID4+IC0JCWlmIChpZCA9PSBJ TlRFTF9QQ0hfSUJYX0RFVklDRV9JRF9UWVBFKSB7Cj4gPj4gLQkJCWRldl9wcml2LT5wY2hfdHlw ZSA9IFBDSF9JQlg7Cj4gPj4gLQkJCURSTV9ERUJVR19LTVMoIkZvdW5kIEliZXggUGVhayBQQ0hc biIpOwo+ID4+IC0JCQlXQVJOX09OKCFJU19HRU41KGRldl9wcml2KSk7Cj4gPj4gLQkJfSBlbHNl IGlmIChpZCA9PSBJTlRFTF9QQ0hfQ1BUX0RFVklDRV9JRF9UWVBFKSB7Cj4gPj4gLQkJCWRldl9w cml2LT5wY2hfdHlwZSA9IFBDSF9DUFQ7Cj4gPj4gLQkJCURSTV9ERUJVR19LTVMoIkZvdW5kIENv dWdhclBvaW50IFBDSFxuIik7Cj4gPj4gLQkJCVdBUk5fT04oIUlTX0dFTjYoZGV2X3ByaXYpICYm Cj4gPj4gLQkJCQkhSVNfSVZZQlJJREdFKGRldl9wcml2KSk7Cj4gPj4gLQkJfSBlbHNlIGlmIChp ZCA9PSBJTlRFTF9QQ0hfUFBUX0RFVklDRV9JRF9UWVBFKSB7Cj4gPj4gLQkJCS8qIFBhbnRoZXJQ b2ludCBpcyBDUFQgY29tcGF0aWJsZSAqLwo+ID4+IC0JCQlkZXZfcHJpdi0+cGNoX3R5cGUgPSBQ Q0hfQ1BUOwo+ID4+IC0JCQlEUk1fREVCVUdfS01TKCJGb3VuZCBQYW50aGVyUG9pbnQgUENIXG4i KTsKPiA+PiAtCQkJV0FSTl9PTighSVNfR0VONihkZXZfcHJpdikgJiYKPiA+PiAtCQkJCSFJU19J VllCUklER0UoZGV2X3ByaXYpKTsKPiA+PiAtCQl9IGVsc2UgaWYgKGlkID09IElOVEVMX1BDSF9M UFRfREVWSUNFX0lEX1RZUEUpIHsKPiA+PiAtCQkJZGV2X3ByaXYtPnBjaF90eXBlID0gUENIX0xQ VDsKPiA+PiAtCQkJRFJNX0RFQlVHX0tNUygiRm91bmQgTHlueFBvaW50IFBDSFxuIik7Cj4gPj4g LQkJCVdBUk5fT04oIUlTX0hBU1dFTEwoZGV2X3ByaXYpICYmCj4gPj4gLQkJCQkhSVNfQlJPQURX RUxMKGRldl9wcml2KSk7Cj4gPj4gLQkJCVdBUk5fT04oSVNfSFNXX1VMVChkZXZfcHJpdikgfHwK PiA+PiAtCQkJCUlTX0JEV19VTFQoZGV2X3ByaXYpKTsKPiA+PiAtCQl9IGVsc2UgaWYgKGlkID09 IElOVEVMX1BDSF9MUFRfTFBfREVWSUNFX0lEX1RZUEUpIHsKPiA+PiAtCQkJZGV2X3ByaXYtPnBj aF90eXBlID0gUENIX0xQVDsKPiA+PiAtCQkJRFJNX0RFQlVHX0tNUygiRm91bmQgTHlueFBvaW50 IExQIFBDSFxuIik7Cj4gPj4gLQkJCVdBUk5fT04oIUlTX0hBU1dFTEwoZGV2X3ByaXYpICYmCj4g Pj4gLQkJCQkhSVNfQlJPQURXRUxMKGRldl9wcml2KSk7Cj4gPj4gLQkJCVdBUk5fT04oIUlTX0hT V19VTFQoZGV2X3ByaXYpICYmCj4gPj4gLQkJCQkhSVNfQkRXX1VMVChkZXZfcHJpdikpOwo+ID4+ IC0JCX0gZWxzZSBpZiAoaWQgPT0gSU5URUxfUENIX1dQVF9ERVZJQ0VfSURfVFlQRSkgewo+ID4+ IC0JCQkvKiBXaWxkY2F0UG9pbnQgaXMgTFBUIGNvbXBhdGlibGUgKi8KPiA+PiAtCQkJZGV2X3By aXYtPnBjaF90eXBlID0gUENIX0xQVDsKPiA+PiAtCQkJRFJNX0RFQlVHX0tNUygiRm91bmQgV2ls ZGNhdFBvaW50IFBDSFxuIik7Cj4gPj4gLQkJCVdBUk5fT04oIUlTX0hBU1dFTEwoZGV2X3ByaXYp ICYmCj4gPj4gLQkJCQkhSVNfQlJPQURXRUxMKGRldl9wcml2KSk7Cj4gPj4gLQkJCVdBUk5fT04o SVNfSFNXX1VMVChkZXZfcHJpdikgfHwKPiA+PiAtCQkJCUlTX0JEV19VTFQoZGV2X3ByaXYpKTsK PiA+PiAtCQl9IGVsc2UgaWYgKGlkID09IElOVEVMX1BDSF9XUFRfTFBfREVWSUNFX0lEX1RZUEUp IHsKPiA+PiAtCQkJLyogV2lsZGNhdFBvaW50IGlzIExQVCBjb21wYXRpYmxlICovCj4gPj4gLQkJ CWRldl9wcml2LT5wY2hfdHlwZSA9IFBDSF9MUFQ7Cj4gPj4gLQkJCURSTV9ERUJVR19LTVMoIkZv dW5kIFdpbGRjYXRQb2ludCBMUCBQQ0hcbiIpOwo+ID4+IC0JCQlXQVJOX09OKCFJU19IQVNXRUxM KGRldl9wcml2KSAmJgo+ID4+IC0JCQkJIUlTX0JST0FEV0VMTChkZXZfcHJpdikpOwo+ID4+IC0J CQlXQVJOX09OKCFJU19IU1dfVUxUKGRldl9wcml2KSAmJgo+ID4+IC0JCQkJIUlTX0JEV19VTFQo ZGV2X3ByaXYpKTsKPiA+PiAtCQl9IGVsc2UgaWYgKGlkID09IElOVEVMX1BDSF9TUFRfREVWSUNF X0lEX1RZUEUpIHsKPiA+PiAtCQkJZGV2X3ByaXYtPnBjaF90eXBlID0gUENIX1NQVDsKPiA+PiAt CQkJRFJNX0RFQlVHX0tNUygiRm91bmQgU3VucmlzZVBvaW50IFBDSFxuIik7Cj4gPj4gLQkJCVdB Uk5fT04oIUlTX1NLWUxBS0UoZGV2X3ByaXYpICYmCj4gPj4gLQkJCQkhSVNfS0FCWUxBS0UoZGV2 X3ByaXYpKTsKPiA+PiAtCQl9IGVsc2UgaWYgKGlkID09IElOVEVMX1BDSF9TUFRfTFBfREVWSUNF X0lEX1RZUEUpIHsKPiA+PiAtCQkJZGV2X3ByaXYtPnBjaF90eXBlID0gUENIX1NQVDsKPiA+PiAt CQkJRFJNX0RFQlVHX0tNUygiRm91bmQgU3VucmlzZVBvaW50IExQIFBDSFxuIik7Cj4gPj4gLQkJ CVdBUk5fT04oIUlTX1NLWUxBS0UoZGV2X3ByaXYpICYmCj4gPj4gLQkJCQkhSVNfS0FCWUxBS0Uo ZGV2X3ByaXYpKTsKPiA+PiAtCQl9IGVsc2UgaWYgKGlkID09IElOVEVMX1BDSF9LQlBfREVWSUNF X0lEX1RZUEUpIHsKPiA+PiAtCQkJZGV2X3ByaXYtPnBjaF90eXBlID0gUENIX0tCUDsKPiA+PiAt CQkJRFJNX0RFQlVHX0tNUygiRm91bmQgS2FieSBMYWtlIFBDSCAoS0JQKVxuIik7Cj4gPj4gLQkJ CVdBUk5fT04oIUlTX1NLWUxBS0UoZGV2X3ByaXYpICYmCj4gPj4gLQkJCQkhSVNfS0FCWUxBS0Uo ZGV2X3ByaXYpICYmCj4gPj4gLQkJCQkhSVNfQ09GRkVFTEFLRShkZXZfcHJpdikpOwo+ID4+IC0J CX0gZWxzZSBpZiAoaWQgPT0gSU5URUxfUENIX0NOUF9ERVZJQ0VfSURfVFlQRSkgewo+ID4+IC0J CQlkZXZfcHJpdi0+cGNoX3R5cGUgPSBQQ0hfQ05QOwo+ID4+IC0JCQlEUk1fREVCVUdfS01TKCJG b3VuZCBDYW5ub24gTGFrZSBQQ0ggKENOUClcbiIpOwo+ID4+IC0JCQlXQVJOX09OKCFJU19DQU5O T05MQUtFKGRldl9wcml2KSAmJgo+ID4+IC0JCQkJIUlTX0NPRkZFRUxBS0UoZGV2X3ByaXYpKTsK PiA+PiAtCQl9IGVsc2UgaWYgKGlkID09IElOVEVMX1BDSF9DTlBfTFBfREVWSUNFX0lEX1RZUEUp IHsKPiA+PiAtCQkJZGV2X3ByaXYtPnBjaF90eXBlID0gUENIX0NOUDsKPiA+PiAtCQkJRFJNX0RF QlVHX0tNUygiRm91bmQgQ2Fubm9uIExha2UgTFAgUENIIChDTlAtTFApXG4iKTsKPiA+PiAtCQkJ V0FSTl9PTighSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikgJiYKPiA+PiAtCQkJCSFJU19DT0ZGRUVM QUtFKGRldl9wcml2KSk7Cj4gPj4gLQkJfSBlbHNlIGlmIChpZCA9PSBJTlRFTF9QQ0hfSUNQX0RF VklDRV9JRF9UWVBFKSB7Cj4gPj4gLQkJCWRldl9wcml2LT5wY2hfdHlwZSA9IFBDSF9JQ1A7Cj4g Pj4gLQkJCURSTV9ERUJVR19LTVMoIkZvdW5kIEljZSBMYWtlIFBDSFxuIik7Cj4gPj4gLQkJCVdB Uk5fT04oIUlTX0lDRUxBS0UoZGV2X3ByaXYpKTsKPiA+PiArCQlwY2hfdHlwZSA9IGludGVsX3Bj aF90eXBlKGRldl9wcml2LCBpZCk7Cj4gPj4gKwkJaWYgKHBjaF90eXBlICE9IFBDSF9OT05FKSB7 Cj4gPj4gKwkJCWRldl9wcml2LT5wY2hfdHlwZSA9IHBjaF90eXBlOwo+ID4+ICAJCX0gZWxzZSBp ZiAoaWQgPT0gSU5URUxfUENIX1AyWF9ERVZJQ0VfSURfVFlQRSB8fAo+ID4+ICAJCQkgICBpZCA9 PSBJTlRFTF9QQ0hfUDNYX0RFVklDRV9JRF9UWVBFIHx8Cj4gPj4gIAkJCSAgIChpZCA9PSBJTlRF TF9QQ0hfUUVNVV9ERVZJQ0VfSURfVFlQRSAmJgo+ID4+IC0tIAo+ID4+IDIuMTEuMAo+ID4+IAo+ ID4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPj4g SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiA+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo+IAo+IC0tIAo+IEphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9s b2d5IENlbnRlcgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==