From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 1/4] drm/i915: abstract PCH type detection from PCH id Date: Tue, 13 Feb 2018 17:35:58 +0200 Message-ID: <87sha4lx5t.fsf@intel.com> References: <3bd4ffcd284cdbd4e8dc77ab02d97ded422e0c21.1517851783.git.jani.nikula@intel.com> <20180205222149.ujrv536wrqlx2pke@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7A05E6E194 for ; Tue, 13 Feb 2018 15:36:04 +0000 (UTC) In-Reply-To: <20180205222149.ujrv536wrqlx2pke@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAwNSBGZWIgMjAxOCwgUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29t PiB3cm90ZToKPiBPbiBNb24sIEZlYiAwNSwgMjAxOCBhdCAwNTozMTozNlBNICswMDAwLCBKYW5p IE5pa3VsYSB3cm90ZToKPj4gTWFrZSB0aGUgbG9naWMgaW4gaW50ZWxfZGV0ZWN0X3BjaCgpIGVh c2llciB0byBmb2xsb3csIGFuZCBtYWtlIHRoZSBQQ0gKPj4gaWQgdG8gdHlwZSBtYXBwaW5nIHJl dXNhYmxlLiBObyBmdW5jdGlvbmFsIGNoYW5nZXMuCj4KPiBJIHdvbmRlcmVkIGhlcmUgaWYgd2Ug c2hvdWxkIGNoYW5nZSBpbnRlbF9wY2ggZnJvbSBlbnVtIHRvIGFycmF5Cj4geyBwY2hfaWQsIHBj aF90eXBlLCBzdXBwb3J0ZWRfcGxhdGZvcm1zLCAibmFtZSIgfQo+Cj4gYnV0IGJlc2lkZXMgcmVx dWlyaW5nIGEgbG9vcCBhdCB0aGlzIHBvaW50IHN1cHBvcnRlZF9wbGF0Zm9ybXMgd291bGQKPiBi ZSB0cmlja3kgb25lLgoKSSB0aGluayBib3RoIFZpbGxlIGFuZCBJIHRyaWVkIHRvIGZpZ3VyZSBv dXQgYSBoYW5keSB3YXkgdG8gZXhwcmVzcyB0aGUKc3VwcG9ydGVkIHBsYXRmb3JtcyBzdGF0aWNh bGx5LCBidXQgZGlkbid0IGNvbWUgdXAgd2l0aCBhbnl0aGluZy4KClB1c2hlZCB0aGUgc2VyaWVz LCB0aGFua3MgZm9yIHRoZSByZXZpZXcuCgpCUiwKSmFuaS4KCj4KPiBzbywgbmV2ZXIgbWluZC4u Lgo+Cj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwu Y29tPgo+Cj4gUmV2aWV3ZWQtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNv bT4KPgo+PiAtLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgfCAxNDggKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiAgMSBmaWxlIGNoYW5nZWQs IDczIGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygtKQo+PiAKPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jCj4+IGluZGV4IGU5ZjFkYWYyNThmZS4uMDhlOTdiNmU5NzZiIDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKPj4gQEAgLTEyMiw2ICsxMjIsNzUgQEAgc3RhdGljIGJvb2wgaTkx NV9lcnJvcl9pbmplY3RlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAJ CSAgICAgIGk5MTVfZXJyb3JfaW5qZWN0ZWQoZGV2X3ByaXYpID8gS0VSTl9ERUJVRyA6IEtFUk5f RVJSLCBcCj4+ICAJCSAgICAgIGZtdCwgIyNfX1ZBX0FSR1NfXykKPj4gIAo+PiArLyogTWFwIFBD SCBkZXZpY2UgaWQgdG8gUENIIHR5cGUsIG9yIFBDSF9OT05FIGlmIHVua25vd24uICovCj4+ICtz dGF0aWMgZW51bSBpbnRlbF9wY2gKPj4gK2ludGVsX3BjaF90eXBlKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdW5zaWduZWQgc2hvcnQgaWQpCj4+ICt7Cj4+ICsJc3dp dGNoIChpZCkgewo+PiArCWNhc2UgSU5URUxfUENIX0lCWF9ERVZJQ0VfSURfVFlQRToKPj4gKwkJ RFJNX0RFQlVHX0tNUygiRm91bmQgSWJleCBQZWFrIFBDSFxuIik7Cj4+ICsJCVdBUk5fT04oIUlT X0dFTjUoZGV2X3ByaXYpKTsKPj4gKwkJcmV0dXJuIFBDSF9JQlg7Cj4+ICsJY2FzZSBJTlRFTF9Q Q0hfQ1BUX0RFVklDRV9JRF9UWVBFOgo+PiArCQlEUk1fREVCVUdfS01TKCJGb3VuZCBDb3VnYXJQ b2ludCBQQ0hcbiIpOwo+PiArCQlXQVJOX09OKCFJU19HRU42KGRldl9wcml2KSAmJiAhSVNfSVZZ QlJJREdFKGRldl9wcml2KSk7Cj4+ICsJCXJldHVybiBQQ0hfQ1BUOwo+PiArCWNhc2UgSU5URUxf UENIX1BQVF9ERVZJQ0VfSURfVFlQRToKPj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQgUGFudGhl clBvaW50IFBDSFxuIik7Cj4+ICsJCVdBUk5fT04oIUlTX0dFTjYoZGV2X3ByaXYpICYmICFJU19J VllCUklER0UoZGV2X3ByaXYpKTsKPj4gKwkJLyogUGFudGhlclBvaW50IGlzIENQVCBjb21wYXRp YmxlICovCj4+ICsJCXJldHVybiBQQ0hfQ1BUOwo+PiArCWNhc2UgSU5URUxfUENIX0xQVF9ERVZJ Q0VfSURfVFlQRToKPj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQgTHlueFBvaW50IFBDSFxuIik7 Cj4+ICsJCVdBUk5fT04oIUlTX0hBU1dFTEwoZGV2X3ByaXYpICYmICFJU19CUk9BRFdFTEwoZGV2 X3ByaXYpKTsKPj4gKwkJV0FSTl9PTihJU19IU1dfVUxUKGRldl9wcml2KSB8fCBJU19CRFdfVUxU KGRldl9wcml2KSk7Cj4+ICsJCXJldHVybiBQQ0hfTFBUOwo+PiArCWNhc2UgSU5URUxfUENIX0xQ VF9MUF9ERVZJQ0VfSURfVFlQRToKPj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQgTHlueFBvaW50 IExQIFBDSFxuIik7Cj4+ICsJCVdBUk5fT04oIUlTX0hBU1dFTEwoZGV2X3ByaXYpICYmICFJU19C Uk9BRFdFTEwoZGV2X3ByaXYpKTsKPj4gKwkJV0FSTl9PTighSVNfSFNXX1VMVChkZXZfcHJpdikg JiYgIUlTX0JEV19VTFQoZGV2X3ByaXYpKTsKPj4gKwkJcmV0dXJuIFBDSF9MUFQ7Cj4+ICsJY2Fz ZSBJTlRFTF9QQ0hfV1BUX0RFVklDRV9JRF9UWVBFOgo+PiArCQlEUk1fREVCVUdfS01TKCJGb3Vu ZCBXaWxkY2F0UG9pbnQgUENIXG4iKTsKPj4gKwkJV0FSTl9PTighSVNfSEFTV0VMTChkZXZfcHJp dikgJiYgIUlTX0JST0FEV0VMTChkZXZfcHJpdikpOwo+PiArCQlXQVJOX09OKElTX0hTV19VTFQo ZGV2X3ByaXYpIHx8IElTX0JEV19VTFQoZGV2X3ByaXYpKTsKPj4gKwkJLyogV2lsZGNhdFBvaW50 IGlzIExQVCBjb21wYXRpYmxlICovCj4+ICsJCXJldHVybiBQQ0hfTFBUOwo+PiArCWNhc2UgSU5U RUxfUENIX1dQVF9MUF9ERVZJQ0VfSURfVFlQRToKPj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQg V2lsZGNhdFBvaW50IExQIFBDSFxuIik7Cj4+ICsJCVdBUk5fT04oIUlTX0hBU1dFTEwoZGV2X3By aXYpICYmICFJU19CUk9BRFdFTEwoZGV2X3ByaXYpKTsKPj4gKwkJV0FSTl9PTighSVNfSFNXX1VM VChkZXZfcHJpdikgJiYgIUlTX0JEV19VTFQoZGV2X3ByaXYpKTsKPj4gKwkJLyogV2lsZGNhdFBv aW50IGlzIExQVCBjb21wYXRpYmxlICovCj4+ICsJCXJldHVybiBQQ0hfTFBUOwo+PiArCWNhc2Ug SU5URUxfUENIX1NQVF9ERVZJQ0VfSURfVFlQRToKPj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQg U3VucmlzZVBvaW50IFBDSFxuIik7Cj4+ICsJCVdBUk5fT04oIUlTX1NLWUxBS0UoZGV2X3ByaXYp ICYmICFJU19LQUJZTEFLRShkZXZfcHJpdikpOwo+PiArCQlyZXR1cm4gUENIX1NQVDsKPj4gKwlj YXNlIElOVEVMX1BDSF9TUFRfTFBfREVWSUNFX0lEX1RZUEU6Cj4+ICsJCURSTV9ERUJVR19LTVMo IkZvdW5kIFN1bnJpc2VQb2ludCBMUCBQQ0hcbiIpOwo+PiArCQlXQVJOX09OKCFJU19TS1lMQUtF KGRldl9wcml2KSAmJiAhSVNfS0FCWUxBS0UoZGV2X3ByaXYpKTsKPj4gKwkJcmV0dXJuIFBDSF9T UFQ7Cj4+ICsJY2FzZSBJTlRFTF9QQ0hfS0JQX0RFVklDRV9JRF9UWVBFOgo+PiArCQlEUk1fREVC VUdfS01TKCJGb3VuZCBLYWJ5IExha2UgUENIIChLQlApXG4iKTsKPj4gKwkJV0FSTl9PTighSVNf U0tZTEFLRShkZXZfcHJpdikgJiYgIUlTX0tBQllMQUtFKGRldl9wcml2KSAmJgo+PiArCQkJIUlT X0NPRkZFRUxBS0UoZGV2X3ByaXYpKTsKPj4gKwkJcmV0dXJuIFBDSF9LQlA7Cj4+ICsJY2FzZSBJ TlRFTF9QQ0hfQ05QX0RFVklDRV9JRF9UWVBFOgo+PiArCQlEUk1fREVCVUdfS01TKCJGb3VuZCBD YW5ub24gTGFrZSBQQ0ggKENOUClcbiIpOwo+PiArCQlXQVJOX09OKCFJU19DQU5OT05MQUtFKGRl dl9wcml2KSAmJiAhSVNfQ09GRkVFTEFLRShkZXZfcHJpdikpOwo+PiArCQlyZXR1cm4gUENIX0NO UDsKPj4gKwljYXNlIElOVEVMX1BDSF9DTlBfTFBfREVWSUNFX0lEX1RZUEU6Cj4+ICsJCURSTV9E RUJVR19LTVMoIkZvdW5kIENhbm5vbiBMYWtlIExQIFBDSCAoQ05QLUxQKVxuIik7Cj4+ICsJCVdB Uk5fT04oIUlTX0NBTk5PTkxBS0UoZGV2X3ByaXYpICYmICFJU19DT0ZGRUVMQUtFKGRldl9wcml2 KSk7Cj4+ICsJCXJldHVybiBQQ0hfQ05QOwo+PiArCWNhc2UgSU5URUxfUENIX0lDUF9ERVZJQ0Vf SURfVFlQRToKPj4gKwkJRFJNX0RFQlVHX0tNUygiRm91bmQgSWNlIExha2UgUENIXG4iKTsKPj4g KwkJV0FSTl9PTighSVNfSUNFTEFLRShkZXZfcHJpdikpOwo+PiArCQlyZXR1cm4gUENIX0lDUDsK Pj4gKwlkZWZhdWx0Ogo+PiArCQlyZXR1cm4gUENIX05PTkU7Cj4+ICsJfQo+PiArfQo+PiAgCj4+ ICBzdGF0aWMgZW51bSBpbnRlbF9wY2ggaW50ZWxfdmlydF9kZXRlY3RfcGNoKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIHsKPj4gQEAgLTE4Myw2ICsyNTIsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kZXRlY3RfcGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPj4gIAkgKi8KPj4gIAl3aGlsZSAoKHBjaCA9IHBjaV9nZXRfY2xhc3MoUENJX0NMQVNTX0JS SURHRV9JU0EgPDwgOCwgcGNoKSkpIHsKPj4gIAkJdW5zaWduZWQgc2hvcnQgaWQ7Cj4+ICsJCWVu dW0gaW50ZWxfcGNoIHBjaF90eXBlOwo+PiAgCj4+ICAJCWlmIChwY2gtPnZlbmRvciAhPSBQQ0lf VkVORE9SX0lEX0lOVEVMKQo+PiAgCQkJY29udGludWU7Cj4+IEBAIC0xOTEsODEgKzI2MSw5IEBA IHN0YXRpYyB2b2lkIGludGVsX2RldGVjdF9wY2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+PiAgCj4+ICAJCWRldl9wcml2LT5wY2hfaWQgPSBpZDsKPj4gIAo+PiAtCQlpZiAo aWQgPT0gSU5URUxfUENIX0lCWF9ERVZJQ0VfSURfVFlQRSkgewo+PiAtCQkJZGV2X3ByaXYtPnBj aF90eXBlID0gUENIX0lCWDsKPj4gLQkJCURSTV9ERUJVR19LTVMoIkZvdW5kIEliZXggUGVhayBQ Q0hcbiIpOwo+PiAtCQkJV0FSTl9PTighSVNfR0VONShkZXZfcHJpdikpOwo+PiAtCQl9IGVsc2Ug aWYgKGlkID09IElOVEVMX1BDSF9DUFRfREVWSUNFX0lEX1RZUEUpIHsKPj4gLQkJCWRldl9wcml2 LT5wY2hfdHlwZSA9IFBDSF9DUFQ7Cj4+IC0JCQlEUk1fREVCVUdfS01TKCJGb3VuZCBDb3VnYXJQ b2ludCBQQ0hcbiIpOwo+PiAtCQkJV0FSTl9PTighSVNfR0VONihkZXZfcHJpdikgJiYKPj4gLQkJ CQkhSVNfSVZZQlJJREdFKGRldl9wcml2KSk7Cj4+IC0JCX0gZWxzZSBpZiAoaWQgPT0gSU5URUxf UENIX1BQVF9ERVZJQ0VfSURfVFlQRSkgewo+PiAtCQkJLyogUGFudGhlclBvaW50IGlzIENQVCBj b21wYXRpYmxlICovCj4+IC0JCQlkZXZfcHJpdi0+cGNoX3R5cGUgPSBQQ0hfQ1BUOwo+PiAtCQkJ RFJNX0RFQlVHX0tNUygiRm91bmQgUGFudGhlclBvaW50IFBDSFxuIik7Cj4+IC0JCQlXQVJOX09O KCFJU19HRU42KGRldl9wcml2KSAmJgo+PiAtCQkJCSFJU19JVllCUklER0UoZGV2X3ByaXYpKTsK Pj4gLQkJfSBlbHNlIGlmIChpZCA9PSBJTlRFTF9QQ0hfTFBUX0RFVklDRV9JRF9UWVBFKSB7Cj4+ IC0JCQlkZXZfcHJpdi0+cGNoX3R5cGUgPSBQQ0hfTFBUOwo+PiAtCQkJRFJNX0RFQlVHX0tNUygi Rm91bmQgTHlueFBvaW50IFBDSFxuIik7Cj4+IC0JCQlXQVJOX09OKCFJU19IQVNXRUxMKGRldl9w cml2KSAmJgo+PiAtCQkJCSFJU19CUk9BRFdFTEwoZGV2X3ByaXYpKTsKPj4gLQkJCVdBUk5fT04o SVNfSFNXX1VMVChkZXZfcHJpdikgfHwKPj4gLQkJCQlJU19CRFdfVUxUKGRldl9wcml2KSk7Cj4+ IC0JCX0gZWxzZSBpZiAoaWQgPT0gSU5URUxfUENIX0xQVF9MUF9ERVZJQ0VfSURfVFlQRSkgewo+ PiAtCQkJZGV2X3ByaXYtPnBjaF90eXBlID0gUENIX0xQVDsKPj4gLQkJCURSTV9ERUJVR19LTVMo IkZvdW5kIEx5bnhQb2ludCBMUCBQQ0hcbiIpOwo+PiAtCQkJV0FSTl9PTighSVNfSEFTV0VMTChk ZXZfcHJpdikgJiYKPj4gLQkJCQkhSVNfQlJPQURXRUxMKGRldl9wcml2KSk7Cj4+IC0JCQlXQVJO X09OKCFJU19IU1dfVUxUKGRldl9wcml2KSAmJgo+PiAtCQkJCSFJU19CRFdfVUxUKGRldl9wcml2 KSk7Cj4+IC0JCX0gZWxzZSBpZiAoaWQgPT0gSU5URUxfUENIX1dQVF9ERVZJQ0VfSURfVFlQRSkg ewo+PiAtCQkJLyogV2lsZGNhdFBvaW50IGlzIExQVCBjb21wYXRpYmxlICovCj4+IC0JCQlkZXZf cHJpdi0+cGNoX3R5cGUgPSBQQ0hfTFBUOwo+PiAtCQkJRFJNX0RFQlVHX0tNUygiRm91bmQgV2ls ZGNhdFBvaW50IFBDSFxuIik7Cj4+IC0JCQlXQVJOX09OKCFJU19IQVNXRUxMKGRldl9wcml2KSAm Jgo+PiAtCQkJCSFJU19CUk9BRFdFTEwoZGV2X3ByaXYpKTsKPj4gLQkJCVdBUk5fT04oSVNfSFNX X1VMVChkZXZfcHJpdikgfHwKPj4gLQkJCQlJU19CRFdfVUxUKGRldl9wcml2KSk7Cj4+IC0JCX0g ZWxzZSBpZiAoaWQgPT0gSU5URUxfUENIX1dQVF9MUF9ERVZJQ0VfSURfVFlQRSkgewo+PiAtCQkJ LyogV2lsZGNhdFBvaW50IGlzIExQVCBjb21wYXRpYmxlICovCj4+IC0JCQlkZXZfcHJpdi0+cGNo X3R5cGUgPSBQQ0hfTFBUOwo+PiAtCQkJRFJNX0RFQlVHX0tNUygiRm91bmQgV2lsZGNhdFBvaW50 IExQIFBDSFxuIik7Cj4+IC0JCQlXQVJOX09OKCFJU19IQVNXRUxMKGRldl9wcml2KSAmJgo+PiAt CQkJCSFJU19CUk9BRFdFTEwoZGV2X3ByaXYpKTsKPj4gLQkJCVdBUk5fT04oIUlTX0hTV19VTFQo ZGV2X3ByaXYpICYmCj4+IC0JCQkJIUlTX0JEV19VTFQoZGV2X3ByaXYpKTsKPj4gLQkJfSBlbHNl IGlmIChpZCA9PSBJTlRFTF9QQ0hfU1BUX0RFVklDRV9JRF9UWVBFKSB7Cj4+IC0JCQlkZXZfcHJp di0+cGNoX3R5cGUgPSBQQ0hfU1BUOwo+PiAtCQkJRFJNX0RFQlVHX0tNUygiRm91bmQgU3Vucmlz ZVBvaW50IFBDSFxuIik7Cj4+IC0JCQlXQVJOX09OKCFJU19TS1lMQUtFKGRldl9wcml2KSAmJgo+ PiAtCQkJCSFJU19LQUJZTEFLRShkZXZfcHJpdikpOwo+PiAtCQl9IGVsc2UgaWYgKGlkID09IElO VEVMX1BDSF9TUFRfTFBfREVWSUNFX0lEX1RZUEUpIHsKPj4gLQkJCWRldl9wcml2LT5wY2hfdHlw ZSA9IFBDSF9TUFQ7Cj4+IC0JCQlEUk1fREVCVUdfS01TKCJGb3VuZCBTdW5yaXNlUG9pbnQgTFAg UENIXG4iKTsKPj4gLQkJCVdBUk5fT04oIUlTX1NLWUxBS0UoZGV2X3ByaXYpICYmCj4+IC0JCQkJ IUlTX0tBQllMQUtFKGRldl9wcml2KSk7Cj4+IC0JCX0gZWxzZSBpZiAoaWQgPT0gSU5URUxfUENI X0tCUF9ERVZJQ0VfSURfVFlQRSkgewo+PiAtCQkJZGV2X3ByaXYtPnBjaF90eXBlID0gUENIX0tC UDsKPj4gLQkJCURSTV9ERUJVR19LTVMoIkZvdW5kIEthYnkgTGFrZSBQQ0ggKEtCUClcbiIpOwo+ PiAtCQkJV0FSTl9PTighSVNfU0tZTEFLRShkZXZfcHJpdikgJiYKPj4gLQkJCQkhSVNfS0FCWUxB S0UoZGV2X3ByaXYpICYmCj4+IC0JCQkJIUlTX0NPRkZFRUxBS0UoZGV2X3ByaXYpKTsKPj4gLQkJ fSBlbHNlIGlmIChpZCA9PSBJTlRFTF9QQ0hfQ05QX0RFVklDRV9JRF9UWVBFKSB7Cj4+IC0JCQlk ZXZfcHJpdi0+cGNoX3R5cGUgPSBQQ0hfQ05QOwo+PiAtCQkJRFJNX0RFQlVHX0tNUygiRm91bmQg Q2Fubm9uIExha2UgUENIIChDTlApXG4iKTsKPj4gLQkJCVdBUk5fT04oIUlTX0NBTk5PTkxBS0Uo ZGV2X3ByaXYpICYmCj4+IC0JCQkJIUlTX0NPRkZFRUxBS0UoZGV2X3ByaXYpKTsKPj4gLQkJfSBl bHNlIGlmIChpZCA9PSBJTlRFTF9QQ0hfQ05QX0xQX0RFVklDRV9JRF9UWVBFKSB7Cj4+IC0JCQlk ZXZfcHJpdi0+cGNoX3R5cGUgPSBQQ0hfQ05QOwo+PiAtCQkJRFJNX0RFQlVHX0tNUygiRm91bmQg Q2Fubm9uIExha2UgTFAgUENIIChDTlAtTFApXG4iKTsKPj4gLQkJCVdBUk5fT04oIUlTX0NBTk5P TkxBS0UoZGV2X3ByaXYpICYmCj4+IC0JCQkJIUlTX0NPRkZFRUxBS0UoZGV2X3ByaXYpKTsKPj4g LQkJfSBlbHNlIGlmIChpZCA9PSBJTlRFTF9QQ0hfSUNQX0RFVklDRV9JRF9UWVBFKSB7Cj4+IC0J CQlkZXZfcHJpdi0+cGNoX3R5cGUgPSBQQ0hfSUNQOwo+PiAtCQkJRFJNX0RFQlVHX0tNUygiRm91 bmQgSWNlIExha2UgUENIXG4iKTsKPj4gLQkJCVdBUk5fT04oIUlTX0lDRUxBS0UoZGV2X3ByaXYp KTsKPj4gKwkJcGNoX3R5cGUgPSBpbnRlbF9wY2hfdHlwZShkZXZfcHJpdiwgaWQpOwo+PiArCQlp ZiAocGNoX3R5cGUgIT0gUENIX05PTkUpIHsKPj4gKwkJCWRldl9wcml2LT5wY2hfdHlwZSA9IHBj aF90eXBlOwo+PiAgCQl9IGVsc2UgaWYgKGlkID09IElOVEVMX1BDSF9QMlhfREVWSUNFX0lEX1RZ UEUgfHwKPj4gIAkJCSAgIGlkID09IElOVEVMX1BDSF9QM1hfREVWSUNFX0lEX1RZUEUgfHwKPj4g IAkJCSAgIChpZCA9PSBJTlRFTF9QQ0hfUUVNVV9ERVZJQ0VfSURfVFlQRSAmJgo+PiAtLSAKPj4g Mi4xMS4wCj4+IAo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9n eSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==