From mboxrd@z Thu Jan 1 00:00:00 1970 From: YT Shen Subject: [PATCH v8 2/9] drm/mediatek: add *driver_data for different hardware settings Date: Mon, 12 Sep 2016 20:01:05 +0800 Message-ID: <1473681672-47144-3-git-send-email-yt.shen@mediatek.com> References: <1473681672-47144-1-git-send-email-yt.shen@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1473681672-47144-1-git-send-email-yt.shen@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, Philipp Zabel Cc: Daniel Vetter , Jie Qiu , Mao Huang , yingjoe.chen@mediatek.com, Dan Carpenter , Jitao Shi , linux-mediatek@lists.infradead.org, Matthias Brugger , shaoming chen , linux-arm-kernel@lists.infradead.org, srv_heupstream@mediatek.com, emil.l.velikov@gmail.com, linux-kernel@vger.kernel.org, Sascha Hauer , Maxime Ripard List-Id: linux-mediatek@lists.infradead.org VGhlcmUgYXJlIHNvbWUgaGFyZHdhcmUgc2V0dGluZ3MgY2hhbmdlZCwgYmV0d2VlbiBNVDgxNzMg JiBNVDI3MDE6CkRJU1BfT1ZMIGFkZHJlc3Mgb2Zmc2V0IGNoYW5nZWQsIGNvbG9yIGZvcm1hdCBk ZWZpbml0aW9uIGNoYW5nZWQuCkRJU1BfUkRNQSBmaWZvIHNpemUgY2hhbmdlZC4KRElTUF9DT0xP UiBvZmZzZXQgY2hhbmdlZC4KTUlQSV9UWCBwbGwgc2V0dGluZyBjaGFuZ2VkLgpBbmQgYWRkIHBy ZWZpeCBmb3IgbXRrX2RkcF9tYWluICYgbXRrX2RkcF9leHQgJiBtdXRleF9tb2QuCgpTaWduZWQt b2ZmLWJ5OiBZVCBTaGVuIDx5dC5zaGVuQG1lZGlhdGVrLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvbXRrX2Rpc3Bfb3ZsLmMgICAgIHwgMjcgKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfcmRtYS5jICAgIHwgMTEg KysrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5jICAgICAg fCAxMSArKysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwX2Nv bXAuYyB8IDI3ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21l ZGlhdGVrL210a19kcm1fZGRwX2NvbXAuaCB8IDEzICsrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jICAgICAgfCAyNSArKysrKysrKysrKysrKysrKyst LS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCAgICAgIHwgIDgg KysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWlwaV90eC5jICAgICAgfCAy NCArKysrKysrKysrKysrKysrKysrKysrKy0KIDggZmlsZXMgY2hhbmdlZCwgMTE1IGluc2VydGlv bnMoKyksIDMxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZGlzcF9vdmwuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGlzcF9v dmwuYwppbmRleCA4ZjYyNjcxZi4uMjBjMGI0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kaXNwX292bC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfZGlzcF9vdmwuYwpAQCAtMzUsMTMgKzM1LDEwIEBACiAjZGVmaW5lIERJU1BfUkVHX09WTF9Q SVRDSChuKQkJCSgweDAwNDQgKyAweDIwICogKG4pKQogI2RlZmluZSBESVNQX1JFR19PVkxfUkRN QV9DVFJMKG4pCQkoMHgwMGMwICsgMHgyMCAqIChuKSkKICNkZWZpbmUgRElTUF9SRUdfT1ZMX1JE TUFfR01DKG4pCQkoMHgwMGM4ICsgMHgyMCAqIChuKSkKLSNkZWZpbmUgRElTUF9SRUdfT1ZMX0FE RFIobikJCQkoMHgwZjQwICsgMHgyMCAqIChuKSkKIAogI2RlZmluZQlPVkxfUkRNQV9NRU1fR01D CTB4NDA0MDIwMjAKIAogI2RlZmluZSBPVkxfQ09OX0JZVEVfU1dBUAlCSVQoMjQpCi0jZGVmaW5l IE9WTF9DT05fQ0xSRk1UX1JHQjU2NQkoMCA8PCAxMikKLSNkZWZpbmUgT1ZMX0NPTl9DTFJGTVRf UkdCODg4CSgxIDw8IDEyKQogI2RlZmluZSBPVkxfQ09OX0NMUkZNVF9SR0JBODg4OAkoMiA8PCAx MikKICNkZWZpbmUgT1ZMX0NPTl9DTFJGTVRfQVJHQjg4ODgJKDMgPDwgMTIpCiAjZGVmaW5lCU9W TF9DT05fQUVOCQlCSVQoOCkKQEAgLTEzNiwxOCArMTMzLDE4IEBAIHN0YXRpYyB2b2lkIG10a19v dmxfbGF5ZXJfb2ZmKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsIHVuc2lnbmVkIGludCBpZHgp CiAJd3JpdGVsKDB4MCwgY29tcC0+cmVncyArIERJU1BfUkVHX09WTF9SRE1BX0NUUkwoaWR4KSk7 CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgb3ZsX2ZtdF9jb252ZXJ0KHVuc2lnbmVkIGludCBm bXQpCitzdGF0aWMgdW5zaWduZWQgaW50IG92bF9mbXRfY29udmVydChzdHJ1Y3QgbXRrX2RkcF9j b21wICpjb21wLCB1bnNpZ25lZCBpbnQgZm10KQogewogCXN3aXRjaCAoZm10KSB7CiAJZGVmYXVs dDoKIAljYXNlIERSTV9GT1JNQVRfUkdCNTY1OgotCQlyZXR1cm4gT1ZMX0NPTl9DTFJGTVRfUkdC NTY1OworCQlyZXR1cm4gY29tcC0+ZGF0YS0+b3ZsLmZtdF9yZ2I1NjU7CiAJY2FzZSBEUk1fRk9S TUFUX0JHUjU2NToKLQkJcmV0dXJuIE9WTF9DT05fQ0xSRk1UX1JHQjU2NSB8IE9WTF9DT05fQllU RV9TV0FQOworCQlyZXR1cm4gY29tcC0+ZGF0YS0+b3ZsLmZtdF9yZ2I1NjUgfCBPVkxfQ09OX0JZ VEVfU1dBUDsKIAljYXNlIERSTV9GT1JNQVRfUkdCODg4OgotCQlyZXR1cm4gT1ZMX0NPTl9DTFJG TVRfUkdCODg4OworCQlyZXR1cm4gY29tcC0+ZGF0YS0+b3ZsLmZtdF9yZ2I4ODg7CiAJY2FzZSBE Uk1fRk9STUFUX0JHUjg4ODoKLQkJcmV0dXJuIE9WTF9DT05fQ0xSRk1UX1JHQjg4OCB8IE9WTF9D T05fQllURV9TV0FQOworCQlyZXR1cm4gY29tcC0+ZGF0YS0+b3ZsLmZtdF9yZ2I4ODggfCBPVkxf Q09OX0JZVEVfU1dBUDsKIAljYXNlIERSTV9GT1JNQVRfUkdCWDg4ODg6CiAJY2FzZSBEUk1fRk9S TUFUX1JHQkE4ODg4OgogCQlyZXR1cm4gT1ZMX0NPTl9DTFJGTVRfQVJHQjg4ODg7CkBAIC0xNzcs NyArMTc0LDcgQEAgc3RhdGljIHZvaWQgbXRrX292bF9sYXllcl9jb25maWcoc3RydWN0IG10a19k ZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IGlkeCwKIAlpZiAoIXBlbmRpbmctPmVuYWJsZSkK IAkJbXRrX292bF9sYXllcl9vZmYoY29tcCwgaWR4KTsKIAotCWNvbiA9IG92bF9mbXRfY29udmVy dChmbXQpOworCWNvbiA9IG92bF9mbXRfY29udmVydChjb21wLCBmbXQpOwogCWlmIChpZHggIT0g MCkKIAkJY29uIHw9IE9WTF9DT05fQUVOIHwgT1ZMX0NPTl9BTFBIQTsKIApAQCAtMTg1LDcgKzE4 Miw4IEBAIHN0YXRpYyB2b2lkIG10a19vdmxfbGF5ZXJfY29uZmlnKHN0cnVjdCBtdGtfZGRwX2Nv bXAgKmNvbXAsIHVuc2lnbmVkIGludCBpZHgsCiAJd3JpdGVsX3JlbGF4ZWQocGl0Y2gsIGNvbXAt PnJlZ3MgKyBESVNQX1JFR19PVkxfUElUQ0goaWR4KSk7CiAJd3JpdGVsX3JlbGF4ZWQoc3JjX3Np emUsIGNvbXAtPnJlZ3MgKyBESVNQX1JFR19PVkxfU1JDX1NJWkUoaWR4KSk7CiAJd3JpdGVsX3Jl bGF4ZWQob2Zmc2V0LCBjb21wLT5yZWdzICsgRElTUF9SRUdfT1ZMX09GRlNFVChpZHgpKTsKLQl3 cml0ZWxfcmVsYXhlZChhZGRyLCBjb21wLT5yZWdzICsgRElTUF9SRUdfT1ZMX0FERFIoaWR4KSk7 CisJd3JpdGVsX3JlbGF4ZWQoYWRkciwgY29tcC0+cmVncyArIGNvbXAtPmRhdGEtPm92bC5hZGRy X29mZnNldAorCQkJCQkrIGlkeCAqIDB4MjApOwogCiAJaWYgKHBlbmRpbmctPmVuYWJsZSkKIAkJ bXRrX292bF9sYXllcl9vbihjb21wLCBpZHgpOwpAQCAtMjY5LDYgKzI2Nyw4IEBAIHN0YXRpYyBp bnQgbXRrX2Rpc3Bfb3ZsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCXJl dHVybiByZXQ7CiAJfQogCisJcHJpdi0+ZGRwX2NvbXAuZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0 Y2hfZGF0YShkZXYpOworCiAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7CiAKIAly ZXQgPSBjb21wb25lbnRfYWRkKGRldiwgJm10a19kaXNwX292bF9jb21wb25lbnRfb3BzKTsKQEAg LTI4NSw4ICsyODUsMTMgQEAgc3RhdGljIGludCBtdGtfZGlzcF9vdmxfcmVtb3ZlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgbXRrX2RkcF9jb21wX2RyaXZlcl9kYXRhIG10ODE3M19vdmxfZHJpdmVyX2RhdGEgPSB7CisJ Lm92bCA9IHsweDBmNDAsIDAsIDEgPDwgMTJ9Cit9OworCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZCBtdGtfZGlzcF9vdmxfZHJpdmVyX2R0X21hdGNoW10gPSB7Ci0JeyAuY29tcGF0 aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtZGlzcC1vdmwiLCB9LAorCXsgLmNvbXBhdGlibGUgPSAi bWVkaWF0ZWssbXQ4MTczLWRpc3Atb3ZsIiwKKwkgIC5kYXRhID0gJm10ODE3M19vdmxfZHJpdmVy X2RhdGF9LAogCXt9LAogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10a19kaXNwX292bF9k cml2ZXJfZHRfbWF0Y2gpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19kaXNwX3JkbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGlzcF9yZG1hLmMK aW5kZXggNWZiODBjYi4uZmIwZGI1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19kaXNwX3JkbWEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rp c3BfcmRtYS5jCkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIHZvaWQgbXRrX3JkbWFfY29uZmln KHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsIHVuc2lnbmVkIGludCB3aWR0aCwKIAkgKi8KIAl0 aHJlc2hvbGQgPSB3aWR0aCAqIGhlaWdodCAqIHZyZWZyZXNoICogNCAqIDcgLyAxMDAwMDAwOwog CXJlZyA9IFJETUFfRklGT19VTkRFUkZMT1dfRU4gfAotCSAgICAgIFJETUFfRklGT19QU0VVRE9f U0laRShTWl84SykgfAorCSAgICAgIFJETUFfRklGT19QU0VVRE9fU0laRShjb21wLT5kYXRhLT5y ZG1hX2ZpZm9fcHNldWRvX3NpemUpIHwKIAkgICAgICBSRE1BX09VVFBVVF9WQUxJRF9GSUZPX1RI UkVTSE9MRCh0aHJlc2hvbGQpOwogCXdyaXRlbChyZWcsIGNvbXAtPnJlZ3MgKyBESVNQX1JFR19S RE1BX0ZJRk9fQ09OKTsKIH0KQEAgLTIwNyw2ICsyMDcsOCBAQCBzdGF0aWMgaW50IG10a19kaXNw X3JkbWFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJcmV0dXJuIHJldDsK IAl9CiAKKwlwcml2LT5kZHBfY29tcC5kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRl dik7CisKIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwcml2KTsKIAogCXJldCA9IGNvbXBv bmVudF9hZGQoZGV2LCAmbXRrX2Rpc3BfcmRtYV9jb21wb25lbnRfb3BzKTsKQEAgLTIyMyw4ICsy MjUsMTMgQEAgc3RhdGljIGludCBtdGtfZGlzcF9yZG1hX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQogCXJldHVybiAwOwogfQogCitzdGF0aWMgY29uc3Qgc3RydWN0IG10a19k ZHBfY29tcF9kcml2ZXJfZGF0YSBtdDgxNzNfcmRtYV9kcml2ZXJfZGF0YSA9IHsKKwkucmRtYV9m aWZvX3BzZXVkb19zaXplID0gU1pfOEssCit9OworCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCBtdGtfZGlzcF9yZG1hX2RyaXZlcl9kdF9tYXRjaFtdID0gewotCXsgLmNvbXBhdGli bGUgPSAibWVkaWF0ZWssbXQ4MTczLWRpc3AtcmRtYSIsIH0sCisJeyAuY29tcGF0aWJsZSA9ICJt ZWRpYXRlayxtdDgxNzMtZGlzcC1yZG1hIiwKKwkgIC5kYXRhID0gJm10ODE3M19yZG1hX2RyaXZl cl9kYXRhfSwKIAl7fSwKIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdGtfZGlzcF9yZG1h X2RyaXZlcl9kdF9tYXRjaCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RybV9kZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcC5jCmlu ZGV4IDJmYzQzMjEuLjgwMzA3NjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfZHJtX2RkcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rk cC5jCkBAIC03Nyw5ICs3NywxMCBAQCBzdHJ1Y3QgbXRrX2RkcCB7CiAJc3RydWN0IGNsawkJCSpj bGs7CiAJdm9pZCBfX2lvbWVtCQkJKnJlZ3M7CiAJc3RydWN0IG10a19kaXNwX211dGV4CQltdXRl eFsxMF07CisJY29uc3QgdW5zaWduZWQgaW50CQkqbXV0ZXhfbW9kOwogfTsKIAotc3RhdGljIGNv bnN0IHVuc2lnbmVkIGludCBtdXRleF9tb2RbRERQX0NPTVBPTkVOVF9JRF9NQVhdID0geworc3Rh dGljIGNvbnN0IHVuc2lnbmVkIGludCBtdDgxNzNfbXV0ZXhfbW9kW0REUF9DT01QT05FTlRfSURf TUFYXSA9IHsKIAlbRERQX0NPTVBPTkVOVF9BQUxdID0gTVQ4MTczX01VVEVYX01PRF9ESVNQX0FB TCwKIAlbRERQX0NPTVBPTkVOVF9DT0xPUjBdID0gTVQ4MTczX01VVEVYX01PRF9ESVNQX0NPTE9S MCwKIAlbRERQX0NPTVBPTkVOVF9DT0xPUjFdID0gTVQ4MTczX01VVEVYX01PRF9ESVNQX0NPTE9S MSwKQEAgLTI0Nyw3ICsyNDgsNyBAQCB2b2lkIG10a19kaXNwX211dGV4X2FkZF9jb21wKHN0cnVj dCBtdGtfZGlzcF9tdXRleCAqbXV0ZXgsCiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJlZyA9IHJl YWRsX3JlbGF4ZWQoZGRwLT5yZWdzICsgRElTUF9SRUdfTVVURVhfTU9EKG11dGV4LT5pZCkpOwot CQlyZWcgfD0gbXV0ZXhfbW9kW2lkXTsKKwkJcmVnIHw9IGRkcC0+bXV0ZXhfbW9kW2lkXTsKIAkJ d3JpdGVsX3JlbGF4ZWQocmVnLCBkZHAtPnJlZ3MgKyBESVNQX1JFR19NVVRFWF9NT0QobXV0ZXgt PmlkKSk7CiAJCXJldHVybjsKIAl9CkBAIC0yNzMsNyArMjc0LDcgQEAgdm9pZCBtdGtfZGlzcF9t dXRleF9yZW1vdmVfY29tcChzdHJ1Y3QgbXRrX2Rpc3BfbXV0ZXggKm11dGV4LAogCQlicmVhazsK IAlkZWZhdWx0OgogCQlyZWcgPSByZWFkbF9yZWxheGVkKGRkcC0+cmVncyArIERJU1BfUkVHX01V VEVYX01PRChtdXRleC0+aWQpKTsKLQkJcmVnICY9IH5tdXRleF9tb2RbaWRdOworCQlyZWcgJj0g fihkZHAtPm11dGV4X21vZFtpZF0pOwogCQl3cml0ZWxfcmVsYXhlZChyZWcsIGRkcC0+cmVncyAr IERJU1BfUkVHX01VVEVYX01PRChtdXRleC0+aWQpKTsKIAkJYnJlYWs7CiAJfQpAQCAtMzI2LDYg KzMyNyw4IEBAIHN0YXRpYyBpbnQgbXRrX2RkcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQogCQlyZXR1cm4gUFRSX0VSUihkZHAtPnJlZ3MpOwogCX0KIAorCWRkcC0+bXV0ZXhf bW9kID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7CisKIAlwbGF0Zm9ybV9zZXRfZHJ2 ZGF0YShwZGV2LCBkZHApOwogCiAJcmV0dXJuIDA7CkBAIC0zMzcsNyArMzQwLDcgQEAgc3RhdGlj IGludCBtdGtfZGRwX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogfQogCiBz dGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkZHBfZHJpdmVyX2R0X21hdGNoW10gPSB7 Ci0JeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtZGlzcC1tdXRleCIgfSwKKwl7IC5j b21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1kaXNwLW11dGV4IiwgLmRhdGEgPSBtdDgxNzNf bXV0ZXhfbW9kfSwKIAl7fSwKIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkZHBfZHJpdmVy X2R0X21hdGNoKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJt X2RkcF9jb21wLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5j CmluZGV4IDM5NzBmY2YuLjRiNGU0NDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2RkcF9jb21wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19kcm1fZGRwX2NvbXAuYwpAQCAtMzQsOSArMzQsOCBAQAogI2RlZmluZSBESVNQX1JFR19VRk9f U1RBUlQJCQkweDAwMDAKIAogI2RlZmluZSBESVNQX0NPTE9SX0NGR19NQUlOCQkJMHgwNDAwCi0j ZGVmaW5lIERJU1BfQ09MT1JfU1RBUlQJCQkweDBjMDAKLSNkZWZpbmUgRElTUF9DT0xPUl9XSURU SAkJCTB4MGM1MAotI2RlZmluZSBESVNQX0NPTE9SX0hFSUdIVAkJCTB4MGM1NAorI2RlZmluZSBE SVNQX0NPTE9SX1dJRFRICQkJMHg1MAorI2RlZmluZSBESVNQX0NPTE9SX0hFSUdIVAkJCTB4NTQK IAogI2RlZmluZQlPRF9SRUxBWV9NT0RFCQlCSVQoMCkKIApAQCAtNDgsMTUgKzQ3LDE1IEBACiBz dGF0aWMgdm9pZCBtdGtfY29sb3JfY29uZmlnKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsIHVu c2lnbmVkIGludCB3LAogCQkJICAgICB1bnNpZ25lZCBpbnQgaCwgdW5zaWduZWQgaW50IHZyZWZy ZXNoKQogewotCXdyaXRlbCh3LCBjb21wLT5yZWdzICsgRElTUF9DT0xPUl9XSURUSCk7Ci0Jd3Jp dGVsKGgsIGNvbXAtPnJlZ3MgKyBESVNQX0NPTE9SX0hFSUdIVCk7CisJd3JpdGVsKHcsIGNvbXAt PnJlZ3MgKyBjb21wLT5kYXRhLT5jb2xvcl9vZmZzZXQgKyBESVNQX0NPTE9SX1dJRFRIKTsKKwl3 cml0ZWwoaCwgY29tcC0+cmVncyArIGNvbXAtPmRhdGEtPmNvbG9yX29mZnNldCArIERJU1BfQ09M T1JfSEVJR0hUKTsKIH0KIAogc3RhdGljIHZvaWQgbXRrX2NvbG9yX3N0YXJ0KHN0cnVjdCBtdGtf ZGRwX2NvbXAgKmNvbXApCiB7CiAJd3JpdGVsKENPTE9SX0JZUEFTU19BTEwgfCBDT0xPUl9TRVFf U0VMLAogCSAgICAgICBjb21wLT5yZWdzICsgRElTUF9DT0xPUl9DRkdfTUFJTik7Ci0Jd3JpdGVs KDB4MSwgY29tcC0+cmVncyArIERJU1BfQ09MT1JfU1RBUlQpOworCXdyaXRlbCgweDEsIGNvbXAt PnJlZ3MgKyBjb21wLT5kYXRhLT5jb2xvcl9vZmZzZXQpOwogfQogCiBzdGF0aWMgdm9pZCBtdGtf b2RfY29uZmlnKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsIHVuc2lnbmVkIGludCB3LApAQCAt MTMxLDYgKzEzMCwxNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG10a19kZHBfY29tcF9tYXRjaCBt dGtfZGRwX21hdGNoZXNbRERQX0NPTVBPTkVOVF9JRF9NQVhdID0gewogCVtERFBfQ09NUE9ORU5U X1dETUExXQk9IHsgTVRLX0RJU1BfV0RNQSwJMSwgTlVMTCB9LAogfTsKIAorc3RhdGljIGNvbnN0 IHN0cnVjdCBtdGtfZGRwX2NvbXBfZHJpdmVyX2RhdGEgbXQ4MTczX2NvbG9yX2RyaXZlcl9kYXRh ID0geworCS5jb2xvcl9vZmZzZXQgPSAweDBjMDAsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBtdGtfZGlzcF9jb2xvcl9kcml2ZXJfZHRfbWF0Y2hbXSA9IHsKKwl7IC5j b21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1kaXNwLWNvbG9yIiwKKwkgIC5kYXRhID0gJm10 ODE3M19jb2xvcl9kcml2ZXJfZGF0YX0sCisJe30sCit9OworCiBpbnQgbXRrX2RkcF9jb21wX2dl dF9pZChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsCiAJCQllbnVtIG10a19kZHBfY29tcF90eXBl IGNvbXBfdHlwZSkKIHsKQEAgLTE1Myw2ICsxNjIsNyBAQCBpbnQgbXRrX2RkcF9jb21wX2luaXQo c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsCiAJZW51bSBtdGtf ZGRwX2NvbXBfdHlwZSB0eXBlOwogCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbGFyYl9ub2RlOwogCXN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmxhcmJfcGRldjsKKwljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNl X2lkICptYXRjaDsKIAogCWlmIChjb21wX2lkIDwgMCB8fCBjb21wX2lkID49IEREUF9DT01QT05F TlRfSURfTUFYKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTE3Nyw2ICsxODcsMTEgQEAgaW50IG10 a19kZHBfY29tcF9pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpu b2RlLAogCiAJdHlwZSA9IG10a19kZHBfbWF0Y2hlc1tjb21wX2lkXS50eXBlOwogCisJaWYgKHR5 cGUgPT0gTVRLX0RJU1BfQ09MT1IpIHsKKwkJbWF0Y2ggPSBvZl9tYXRjaF9ub2RlKG10a19kaXNw X2NvbG9yX2RyaXZlcl9kdF9tYXRjaCwgbm9kZSk7CisJCWNvbXAtPmRhdGEgPSBtYXRjaC0+ZGF0 YTsKKwl9CisKIAkvKiBPbmx5IERNQSBjYXBhYmxlIGNvbXBvbmVudHMgbmVlZCB0aGUgTEFSQiBw cm9wZXJ0eSAqLwogCWNvbXAtPmxhcmJfZGV2ID0gTlVMTDsKIAlpZiAodHlwZSAhPSBNVEtfRElT UF9PVkwgJiYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rk cF9jb21wLmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5oCmlu ZGV4IDZiMTNiYTkuLjUzMDY1YzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfZHJtX2RkcF9jb21wLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cm1fZGRwX2NvbXAuaApAQCAtNzUsNiArNzUsMTggQEAgc3RydWN0IG10a19kZHBfY29tcF9mdW5j cyB7CiAJCQkgICAgIHN0cnVjdCBtdGtfcGxhbmVfc3RhdGUgKnN0YXRlKTsKIH07CiAKK3N0cnVj dCBtdGtfZGRwX2NvbXBfZHJpdmVyX2RhdGEgeworCXVuaW9uIHsKKwkJc3RydWN0IG92bCB7CisJ CQl1bnNpZ25lZCBpbnQgYWRkcl9vZmZzZXQ7CisJCQl1bnNpZ25lZCBpbnQgZm10X3JnYjU2NTsK KwkJCXVuc2lnbmVkIGludCBmbXRfcmdiODg4OworCQl9IG92bDsKKwkJdW5zaWduZWQgaW50IHJk bWFfZmlmb19wc2V1ZG9fc2l6ZTsKKwkJdW5zaWduZWQgaW50IGNvbG9yX29mZnNldDsKKwl9Owor fTsKKwogc3RydWN0IG10a19kZHBfY29tcCB7CiAJc3RydWN0IGNsayAqY2xrOwogCXZvaWQgX19p b21lbSAqcmVnczsKQEAgLTgyLDYgKzk0LDcgQEAgc3RydWN0IG10a19kZHBfY29tcCB7CiAJc3Ry dWN0IGRldmljZSAqbGFyYl9kZXY7CiAJZW51bSBtdGtfZGRwX2NvbXBfaWQgaWQ7CiAJY29uc3Qg c3RydWN0IG10a19kZHBfY29tcF9mdW5jcyAqZnVuY3M7CisJY29uc3Qgc3RydWN0IG10a19kZHBf Y29tcF9kcml2ZXJfZGF0YSAqZGF0YTsKIH07CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtdGtfZGRw X2NvbXBfY29uZmlnKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAsCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfZHJtX2Rydi5jCmluZGV4IGVlYmI3ZDguLjZkYmU5NjMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgbXRrX2RybV9tb2RlX2NvbmZpZ19mdW5jcyA9 IHsKIAkuYXRvbWljX2NvbW1pdCA9IG10a19hdG9taWNfY29tbWl0LAogfTsKIAotc3RhdGljIGNv bnN0IGVudW0gbXRrX2RkcF9jb21wX2lkIG10a19kZHBfbWFpbltdID0geworc3RhdGljIGNvbnN0 IGVudW0gbXRrX2RkcF9jb21wX2lkIG10ODE3M19tdGtfZGRwX21haW5bXSA9IHsKIAlERFBfQ09N UE9ORU5UX09WTDAsCiAJRERQX0NPTVBPTkVOVF9DT0xPUjAsCiAJRERQX0NPTVBPTkVOVF9BQUws CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIGNvbnN0IGVudW0gbXRrX2RkcF9jb21wX2lkIG10 a19kZHBfbWFpbltdID0gewogCUREUF9DT01QT05FTlRfUFdNMCwKIH07CiAKLXN0YXRpYyBjb25z dCBlbnVtIG10a19kZHBfY29tcF9pZCBtdGtfZGRwX2V4dFtdID0geworc3RhdGljIGNvbnN0IGVu dW0gbXRrX2RkcF9jb21wX2lkIG10ODE3M19tdGtfZGRwX2V4dFtdID0gewogCUREUF9DT01QT05F TlRfT1ZMMSwKIAlERFBfQ09NUE9ORU5UX0NPTE9SMSwKIAlERFBfQ09NUE9ORU5UX0dBTU1BLApA QCAtMTI4LDYgKzEyOCwxMyBAQCBzdGF0aWMgY29uc3QgZW51bSBtdGtfZGRwX2NvbXBfaWQgbXRr X2RkcF9leHRbXSA9IHsKIAlERFBfQ09NUE9ORU5UX0RQSTAsCiB9OwogCitzdGF0aWMgY29uc3Qg c3RydWN0IG10a19tbXN5c19kcml2ZXJfZGF0YSBtdDgxNzNfbW1zeXNfZHJpdmVyX2RhdGEgPSB7 CisJLm1haW5fcGF0aCA9IG10ODE3M19tdGtfZGRwX21haW4sCisJLm1haW5fbGVuID0gQVJSQVlf U0laRShtdDgxNzNfbXRrX2RkcF9tYWluKSwKKwkuZXh0X3BhdGggPSBtdDgxNzNfbXRrX2RkcF9l eHQsCisJLmV4dF9sZW4gPSBBUlJBWV9TSVpFKG10ODE3M19tdGtfZGRwX2V4dCksCit9OworCiBz dGF0aWMgaW50IG10a19kcm1fa21zX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKIHsKIAlz dHJ1Y3QgbXRrX2RybV9wcml2YXRlICpwcml2YXRlID0gZHJtLT5kZXZfcHJpdmF0ZTsKQEAgLTE3 MCwxNyArMTc3LDE5IEBAIHN0YXRpYyBpbnQgbXRrX2RybV9rbXNfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtKQogCSAqIGFuZCBlYWNoIHN0YXRpY2FsbHkgYXNzaWduZWQgdG8gYSBjcnRjOgog CSAqIE9WTDAgLT4gQ09MT1IwIC0+IEFBTCAtPiBPRCAtPiBSRE1BMCAtPiBVRk9FIC0+IERTSTAg Li4uCiAJICovCi0JcmV0ID0gbXRrX2RybV9jcnRjX2NyZWF0ZShkcm0sIG10a19kZHBfbWFpbiwg QVJSQVlfU0laRShtdGtfZGRwX21haW4pKTsKKwlyZXQgPSBtdGtfZHJtX2NydGNfY3JlYXRlKGRy bSwgcHJpdmF0ZS0+ZGF0YS0+bWFpbl9wYXRoLAorCQkJCSAgcHJpdmF0ZS0+ZGF0YS0+bWFpbl9s ZW4pOwogCWlmIChyZXQgPCAwKQogCQlnb3RvIGVycl9jb21wb25lbnRfdW5iaW5kOwogCS8qIC4u LiBhbmQgT1ZMMSAtPiBDT0xPUjEgLT4gR0FNTUEgLT4gUkRNQTEgLT4gRFBJMC4gKi8KLQlyZXQg PSBtdGtfZHJtX2NydGNfY3JlYXRlKGRybSwgbXRrX2RkcF9leHQsIEFSUkFZX1NJWkUobXRrX2Rk cF9leHQpKTsKKwlyZXQgPSBtdGtfZHJtX2NydGNfY3JlYXRlKGRybSwgcHJpdmF0ZS0+ZGF0YS0+ ZXh0X3BhdGgsCisJCQkJICBwcml2YXRlLT5kYXRhLT5leHRfbGVuKTsKIAlpZiAocmV0IDwgMCkK IAkJZ290byBlcnJfY29tcG9uZW50X3VuYmluZDsKIAogCS8qIFVzZSBPVkwgZGV2aWNlIGZvciBh bGwgRE1BIG1lbW9yeSBhbGxvY2F0aW9ucyAqLwotCW5wID0gcHJpdmF0ZS0+Y29tcF9ub2RlW210 a19kZHBfbWFpblswXV0gPzoKLQkgICAgIHByaXZhdGUtPmNvbXBfbm9kZVttdGtfZGRwX2V4dFsw XV07CisJbnAgPSBwcml2YXRlLT5jb21wX25vZGVbcHJpdmF0ZS0+ZGF0YS0+bWFpbl9wYXRoWzBd XSA/OgorCSAgICAgcHJpdmF0ZS0+Y29tcF9ub2RlW3ByaXZhdGUtPmRhdGEtPmV4dF9wYXRoWzBd XTsKIAlwZGV2ID0gb2ZfZmluZF9kZXZpY2VfYnlfbm9kZShucCk7CiAJaWYgKCFwZGV2KSB7CiAJ CXJldCA9IC1FTk9ERVY7CkBAIC0zNDUsNiArMzU0LDcgQEAgc3RhdGljIGludCBtdGtfZHJtX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAKIAltdXRleF9pbml0KCZwcml2YXRl LT5jb21taXQubG9jayk7CiAJSU5JVF9XT1JLKCZwcml2YXRlLT5jb21taXQud29yaywgbXRrX2F0 b21pY193b3JrKTsKKwlwcml2YXRlLT5kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRl dik7CiAKIAltZW0gPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0s IDApOwogCXByaXZhdGUtPmNvbmZpZ19yZWdzID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwg bWVtKTsKQEAgLTQ5NSw3ICs1MDUsOCBAQCBzdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMobXRrX2Ry bV9wbV9vcHMsIG10a19kcm1fc3lzX3N1c3BlbmQsCiAJCQkgbXRrX2RybV9zeXNfcmVzdW1lKTsK IAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2RybV9vZl9pZHNbXSA9IHsK LQl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1tbXN5cyIsIH0sCisJeyAuY29tcGF0 aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtbW1zeXMiLAorCSAgLmRhdGEgPSAmbXQ4MTczX21tc3lz X2RyaXZlcl9kYXRhfSwKIAl7IH0KIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHJtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1f ZHJ2LmgKaW5kZXggYWE5Mzg5NC4uZmEwYjEwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcm1fZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19kcm1fZHJ2LmgKQEAgLTI4LDYgKzI4LDEzIEBAIHN0cnVjdCBkcm1fZmJfaGVscGVyOwogc3Ry dWN0IGRybV9wcm9wZXJ0eTsKIHN0cnVjdCByZWdtYXA7CiAKK3N0cnVjdCBtdGtfbW1zeXNfZHJp dmVyX2RhdGEgeworCWNvbnN0IGVudW0gbXRrX2RkcF9jb21wX2lkICptYWluX3BhdGg7CisJdW5z aWduZWQgaW50IG1haW5fbGVuOworCWNvbnN0IGVudW0gbXRrX2RkcF9jb21wX2lkICpleHRfcGF0 aDsKKwl1bnNpZ25lZCBpbnQgZXh0X2xlbjsKK307CisKIHN0cnVjdCBtdGtfZHJtX3ByaXZhdGUg ewogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07CiAJc3RydWN0IGRldmljZSAqZG1hX2RldjsKQEAg LTQwLDYgKzQ3LDcgQEAgc3RydWN0IG10a19kcm1fcHJpdmF0ZSB7CiAJdm9pZCBfX2lvbWVtICpj b25maWdfcmVnczsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKmNvbXBfbm9kZVtERFBfQ09NUE9ORU5U X0lEX01BWF07CiAJc3RydWN0IG10a19kZHBfY29tcCAqZGRwX2NvbXBbRERQX0NPTVBPTkVOVF9J RF9NQVhdOworCWNvbnN0IHN0cnVjdCBtdGtfbW1zeXNfZHJpdmVyX2RhdGEgKmRhdGE7CiAKIAlz dHJ1Y3QgewogCQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21pcGlfdHguYyBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfbWlwaV90eC5jCmluZGV4IDFjMzY2ZjguLjkzNWE4ZWYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWlwaV90eC5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfbWlwaV90eC5jCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSA8 bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxsaW51eC9pby5oPgogI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4KIApAQCAtODcsNiAr ODgsOSBAQAogCiAjZGVmaW5lIE1JUElUWF9EU0lfUExMX0NPTjIJMHg1OAogCisjZGVmaW5lIE1J UElUWF9EU0lfUExMX1RPUAkweDY0CisjZGVmaW5lIFJHX0RTSV9NUFBMTF9QUkVTRVJWRQkJKDB4 ZmYgPDwgOCkKKwogI2RlZmluZSBNSVBJVFhfRFNJX1BMTF9QV1IJMHg2OAogI2RlZmluZSBSR19E U0lfTVBQTExfU0RNX1BXUl9PTgkJQklUKDApCiAjZGVmaW5lIFJHX0RTSV9NUFBMTF9TRE1fSVNP X0VOCQlCSVQoMSkKQEAgLTEyMywxMCArMTI3LDE1IEBACiAjZGVmaW5lIFNXX0xOVDJfSFNUWF9Q UkVfT0UJCUJJVCgyNCkKICNkZWZpbmUgU1dfTE5UMl9IU1RYX09FCQkJQklUKDI1KQogCitzdHJ1 Y3QgbXRrX21pcGl0eF9kYXRhIHsKKwljb25zdCB1MzIgZGF0YTsKK307CisKIHN0cnVjdCBtdGtf bWlwaV90eCB7CiAJc3RydWN0IGRldmljZSAqZGV2OwogCXZvaWQgX19pb21lbSAqcmVnczsKIAl1 bnNpZ25lZCBpbnQgZGF0YV9yYXRlOworCWNvbnN0IHN0cnVjdCBtdGtfbWlwaXR4X2RhdGEgKmRy aXZlcl9kYXRhOwogCXN0cnVjdCBjbGtfaHcgcGxsX2h3OwogCXN0cnVjdCBjbGsgKnBsbDsKIH07 CkBAIC0yNDMsNiArMjUyLDEwIEBAIHN0YXRpYyBpbnQgbXRrX21pcGlfdHhfcGxsX3ByZXBhcmUo c3RydWN0IGNsa19odyAqaHcpCiAJbXRrX21pcGlfdHhfY2xlYXJfYml0cyhtaXBpX3R4LCBNSVBJ VFhfRFNJX1BMTF9DT04xLAogCQkJICAgICAgIFJHX0RTSV9NUFBMTF9TRE1fU1NDX0VOKTsKIAor CW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX1RPUCwKKwkJ CQlSR19EU0lfTVBQTExfUFJFU0VSVkUsCisJCQkJbWlwaV90eC0+ZHJpdmVyX2RhdGEtPmRhdGEp OworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTI1NSw2ICsyNjgsOSBAQCBzdGF0aWMgdm9pZCBtdGtf bWlwaV90eF9wbGxfdW5wcmVwYXJlKHN0cnVjdCBjbGtfaHcgKmh3KQogCW10a19taXBpX3R4X2Ns ZWFyX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwKIAkJCSAgICAgICBSR19EU0lf TVBQTExfUExMX0VOKTsKIAorCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1JUElU WF9EU0lfUExMX1RPUCwKKwkJCQlSR19EU0lfTVBQTExfUFJFU0VSVkUsIDApOworCiAJbXRrX21p cGlfdHhfdXBkYXRlX2JpdHMobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfUFdSLAogCQkJCVJHX0RT SV9NUFBMTF9TRE1fSVNPX0VOIHwKIAkJCQlSR19EU0lfTVBQTExfU0RNX1BXUl9PTiwKQEAgLTM5 MSw2ICs0MDcsNyBAQCBzdGF0aWMgaW50IG10a19taXBpX3R4X3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCiAJaWYgKCFtaXBpX3R4KQogCQlyZXR1cm4gLUVOT01FTTsKIAorCW1p cGlfdHgtPmRyaXZlcl9kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7CiAJbWVt ID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKIAltaXBp X3R4LT5yZWdzID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgbWVtKTsKIAlpZiAoSVNfRVJS KG1pcGlfdHgtPnJlZ3MpKSB7CkBAIC00NDgsOCArNDY1LDEzIEBAIHN0YXRpYyBpbnQgbXRrX21p cGlfdHhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJcmV0dXJuIDA7CiB9 CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX21pcGl0eF9kYXRhIG10ODE3M19taXBpdHhfZGF0 YSA9IHsKKwkuZGF0YSA9ICgwIDw8IDgpCit9OworCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCBtdGtfbWlwaV90eF9tYXRjaFtdID0gewotCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0 ZWssbXQ4MTczLW1pcGktdHgiLCB9LAorCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTcz LW1pcGktdHgiLAorCSAgLmRhdGEgPSAmbXQ4MTczX21pcGl0eF9kYXRhIH0sCiAJe30sCiB9Owog Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg==