From mboxrd@z Thu Jan 1 00:00:00 1970 From: CK Hu Subject: Re: [PATCH v11 03/12] drm/mediatek: add *driver_data for different hardware settings Date: Tue, 17 Jan 2017 10:37:11 +0800 Message-ID: <1484620631.15251.1.camel@mtksdaap41> References: <1484117473-46644-1-git-send-email-yt.shen@mediatek.com> <1484117473-46644-4-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: <1484117473-46644-4-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: YT Shen Cc: Mark Rutland , devicetree@vger.kernel.org, srv_heupstream@mediatek.com, emil.l.velikov@gmail.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Rob Herring , linux-mediatek@lists.infradead.org, Matthias Brugger , yingjoe.chen@mediatek.com, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org SGksIFlUOgoKT24gV2VkLCAyMDE3LTAxLTExIGF0IDE0OjUxICswODAwLCBZVCBTaGVuIHdyb3Rl Ogo+IFRoZXJlIGFyZSBzb21lIGhhcmR3YXJlIHNldHRpbmdzIGNoYW5nZWQsIGJldHdlZW4gTVQ4 MTczICYgTVQyNzAxOgo+IERJU1BfT1ZMIGFkZHJlc3Mgb2Zmc2V0IGNoYW5nZWQsIGNvbG9yIGZv cm1hdCBkZWZpbml0aW9uIGNoYW5nZWQuCj4gRElTUF9SRE1BIGZpZm8gc2l6ZSBjaGFuZ2VkLgo+ IERJU1BfQ09MT1Igb2Zmc2V0IGNoYW5nZWQuCj4gTUlQSV9UWCBwbGwgc2V0dGluZyBjaGFuZ2Vk Lgo+IEFuZCBhZGQgcHJlZml4IGZvciBtdGtfZGRwX21haW4gJiBtdGtfZGRwX2V4dCAmIG11dGV4 X21vZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBZVCBTaGVuIDx5dC5zaGVuQG1lZGlhdGVrLmNvbT4K CkFja2VkLWJ5OiBDSyBIdSA8Y2suaHVAbWVkaWF0ZWsuY29tPgoKPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL210a19kaXNwX292bC5jICAgICB8IDQxICsrKysrKysrKysrKy0tLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGlzcF9yZG1hLmMgICAgfCAxOCArKysr KysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHAuYyAgICAgIHwgNzEg KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19kcm1fZGRwX2NvbXAuYyB8IDU3ICsrKysrKysrKysrKysrKysrKystLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jICAgICAgfCAyNSArKysrKysrLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oICAgICAgfCAgOCArKysrCj4g IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWlwaV90eC5jICAgICAgfCAyNCArKysrKysr KystCj4gIDcgZmlsZXMgY2hhbmdlZCwgMTgxIGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3Bfb3Zs LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3Bfb3ZsLmMKPiBpbmRleCBjZTI3 NTlmLi40NTUyMTc4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZGlzcF9vdmwuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGlzcF9vdmwu Ywo+IEBAIC0zNSwxOCArMzUsMjcgQEAKPiAgI2RlZmluZSBESVNQX1JFR19PVkxfUElUQ0gobikJ CQkoMHgwMDQ0ICsgMHgyMCAqIChuKSkKPiAgI2RlZmluZSBESVNQX1JFR19PVkxfUkRNQV9DVFJM KG4pCQkoMHgwMGMwICsgMHgyMCAqIChuKSkKPiAgI2RlZmluZSBESVNQX1JFR19PVkxfUkRNQV9H TUMobikJCSgweDAwYzggKyAweDIwICogKG4pKQo+IC0jZGVmaW5lIERJU1BfUkVHX09WTF9BRERS KG4pCQkJKDB4MGY0MCArIDB4MjAgKiAobikpCj4gKyNkZWZpbmUgRElTUF9SRUdfT1ZMX0FERFJf TVQ4MTczCQkweDBmNDAKPiArI2RlZmluZSBESVNQX1JFR19PVkxfQUREUihvdmwsIG4pCQkoKG92 bCktPmRhdGEtPmFkZHIgKyAweDIwICogKG4pKQo+ICAKPiAgI2RlZmluZQlPVkxfUkRNQV9NRU1f R01DCTB4NDA0MDIwMjAKPiAgCj4gICNkZWZpbmUgT1ZMX0NPTl9CWVRFX1NXQVAJQklUKDI0KQo+ IC0jZGVmaW5lIE9WTF9DT05fQ0xSRk1UX1JHQjU2NQkoMCA8PCAxMikKPiAtI2RlZmluZSBPVkxf Q09OX0NMUkZNVF9SR0I4ODgJKDEgPDwgMTIpCj4gKyNkZWZpbmUgT1ZMX0NPTl9DTFJGTVRfUkdC CSgxIDw8IDEyKQo+ICAjZGVmaW5lIE9WTF9DT05fQ0xSRk1UX1JHQkE4ODg4CSgyIDw8IDEyKQo+ ICAjZGVmaW5lIE9WTF9DT05fQ0xSRk1UX0FSR0I4ODg4CSgzIDw8IDEyKQo+ICsjZGVmaW5lIE9W TF9DT05fQ0xSRk1UX1JHQjU2NShvdmwpCSgob3ZsKS0+ZGF0YS0+Zm10X3JnYjU2NV9pc18wID8g XAo+ICsJCQkJCTAgOiBPVkxfQ09OX0NMUkZNVF9SR0IpCj4gKyNkZWZpbmUgT1ZMX0NPTl9DTFJG TVRfUkdCODg4KG92bCkJKChvdmwpLT5kYXRhLT5mbXRfcmdiNTY1X2lzXzAgPyBcCj4gKwkJCQkJ T1ZMX0NPTl9DTFJGTVRfUkdCIDogMCkKPiAgI2RlZmluZQlPVkxfQ09OX0FFTgkJQklUKDgpCj4g ICNkZWZpbmUJT1ZMX0NPTl9BTFBIQQkJMHhmZgo+ICAKPiArc3RydWN0IG10a19kaXNwX292bF9k YXRhIHsKPiArCXVuc2lnbmVkIGludCBhZGRyOwo+ICsJYm9vbCBmbXRfcmdiNTY1X2lzXzA7Cj4g K307Cj4gKwo+ICAvKioKPiAgICogc3RydWN0IG10a19kaXNwX292bCAtIERJU1BfT1ZMIGRyaXZl ciBzdHJ1Y3R1cmUKPiAgICogQGRkcF9jb21wIC0gc3RydWN0dXJlIGNvbnRhaW5pbmcgdHlwZSBl bnVtIGFuZCBoYXJkd2FyZSByZXNvdXJjZXMKPiBAQCAtNTUsNiArNjQsNyBAQAo+ICBzdHJ1Y3Qg bXRrX2Rpc3Bfb3ZsIHsKPiAgCXN0cnVjdCBtdGtfZGRwX2NvbXAJCWRkcF9jb21wOwo+ICAJc3Ry dWN0IGRybV9jcnRjCQkJKmNydGM7Cj4gKwljb25zdCBzdHJ1Y3QgbXRrX2Rpc3Bfb3ZsX2RhdGEJ KmRhdGE7Cj4gIH07Cj4gIAo+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCBtdGtfZGlzcF9vdmwgKmNv bXBfdG9fb3ZsKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXApCj4gQEAgLTE0MSwxOCArMTUxLDE4 IEBAIHN0YXRpYyB2b2lkIG10a19vdmxfbGF5ZXJfb2ZmKHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNv bXAsIHVuc2lnbmVkIGludCBpZHgpCj4gIAl3cml0ZWwoMHgwLCBjb21wLT5yZWdzICsgRElTUF9S RUdfT1ZMX1JETUFfQ1RSTChpZHgpKTsKPiAgfQo+ICAKPiAtc3RhdGljIHVuc2lnbmVkIGludCBv dmxfZm10X2NvbnZlcnQodW5zaWduZWQgaW50IGZtdCkKPiArc3RhdGljIHVuc2lnbmVkIGludCBv dmxfZm10X2NvbnZlcnQoc3RydWN0IG10a19kaXNwX292bCAqb3ZsLCB1bnNpZ25lZCBpbnQgZm10 KQo+ICB7Cj4gIAlzd2l0Y2ggKGZtdCkgewo+ICAJZGVmYXVsdDoKPiAgCWNhc2UgRFJNX0ZPUk1B VF9SR0I1NjU6Cj4gLQkJcmV0dXJuIE9WTF9DT05fQ0xSRk1UX1JHQjU2NTsKPiArCQlyZXR1cm4g T1ZMX0NPTl9DTFJGTVRfUkdCNTY1KG92bCk7Cj4gIAljYXNlIERSTV9GT1JNQVRfQkdSNTY1Ogo+ IC0JCXJldHVybiBPVkxfQ09OX0NMUkZNVF9SR0I1NjUgfCBPVkxfQ09OX0JZVEVfU1dBUDsKPiAr CQlyZXR1cm4gT1ZMX0NPTl9DTFJGTVRfUkdCNTY1KG92bCkgfCBPVkxfQ09OX0JZVEVfU1dBUDsK PiAgCWNhc2UgRFJNX0ZPUk1BVF9SR0I4ODg6Cj4gLQkJcmV0dXJuIE9WTF9DT05fQ0xSRk1UX1JH Qjg4ODsKPiArCQlyZXR1cm4gT1ZMX0NPTl9DTFJGTVRfUkdCODg4KG92bCk7Cj4gIAljYXNlIERS TV9GT1JNQVRfQkdSODg4Ogo+IC0JCXJldHVybiBPVkxfQ09OX0NMUkZNVF9SR0I4ODggfCBPVkxf Q09OX0JZVEVfU1dBUDsKPiArCQlyZXR1cm4gT1ZMX0NPTl9DTFJGTVRfUkdCODg4KG92bCkgfCBP VkxfQ09OX0JZVEVfU1dBUDsKPiAgCWNhc2UgRFJNX0ZPUk1BVF9SR0JYODg4ODoKPiAgCWNhc2Ug RFJNX0ZPUk1BVF9SR0JBODg4ODoKPiAgCQlyZXR1cm4gT1ZMX0NPTl9DTFJGTVRfQVJHQjg4ODg7 Cj4gQEAgLTE3MSw2ICsxODEsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG92bF9mbXRfY29udmVy dCh1bnNpZ25lZCBpbnQgZm10KQo+ICBzdGF0aWMgdm9pZCBtdGtfb3ZsX2xheWVyX2NvbmZpZyhz dHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wLCB1bnNpZ25lZCBpbnQgaWR4LAo+ICAJCQkJIHN0cnVj dCBtdGtfcGxhbmVfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gKwlzdHJ1Y3QgbXRrX2Rpc3Bfb3ZsICpv dmwgPSBjb21wX3RvX292bChjb21wKTsKPiAgCXN0cnVjdCBtdGtfcGxhbmVfcGVuZGluZ19zdGF0 ZSAqcGVuZGluZyA9ICZzdGF0ZS0+cGVuZGluZzsKPiAgCXVuc2lnbmVkIGludCBhZGRyID0gcGVu ZGluZy0+YWRkcjsKPiAgCXVuc2lnbmVkIGludCBwaXRjaCA9IHBlbmRpbmctPnBpdGNoICYgMHhm ZmZmOwo+IEBAIC0xODIsNyArMTkzLDcgQEAgc3RhdGljIHZvaWQgbXRrX292bF9sYXllcl9jb25m aWcoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IGlkeCwKPiAgCWlmICgh cGVuZGluZy0+ZW5hYmxlKQo+ICAJCW10a19vdmxfbGF5ZXJfb2ZmKGNvbXAsIGlkeCk7Cj4gIAo+ IC0JY29uID0gb3ZsX2ZtdF9jb252ZXJ0KGZtdCk7Cj4gKwljb24gPSBvdmxfZm10X2NvbnZlcnQo b3ZsLCBmbXQpOwo+ICAJaWYgKGlkeCAhPSAwKQo+ICAJCWNvbiB8PSBPVkxfQ09OX0FFTiB8IE9W TF9DT05fQUxQSEE7Cj4gIAo+IEBAIC0xOTAsNyArMjAxLDcgQEAgc3RhdGljIHZvaWQgbXRrX292 bF9sYXllcl9jb25maWcoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IGlk eCwKPiAgCXdyaXRlbF9yZWxheGVkKHBpdGNoLCBjb21wLT5yZWdzICsgRElTUF9SRUdfT1ZMX1BJ VENIKGlkeCkpOwo+ICAJd3JpdGVsX3JlbGF4ZWQoc3JjX3NpemUsIGNvbXAtPnJlZ3MgKyBESVNQ X1JFR19PVkxfU1JDX1NJWkUoaWR4KSk7Cj4gIAl3cml0ZWxfcmVsYXhlZChvZmZzZXQsIGNvbXAt PnJlZ3MgKyBESVNQX1JFR19PVkxfT0ZGU0VUKGlkeCkpOwo+IC0Jd3JpdGVsX3JlbGF4ZWQoYWRk ciwgY29tcC0+cmVncyArIERJU1BfUkVHX09WTF9BRERSKGlkeCkpOwo+ICsJd3JpdGVsX3JlbGF4 ZWQoYWRkciwgY29tcC0+cmVncyArIERJU1BfUkVHX09WTF9BRERSKG92bCwgaWR4KSk7Cj4gIAo+ ICAJaWYgKHBlbmRpbmctPmVuYWJsZSkKPiAgCQltdGtfb3ZsX2xheWVyX29uKGNvbXAsIGlkeCk7 Cj4gQEAgLTI2Nyw2ICsyNzgsOCBAQCBzdGF0aWMgaW50IG10a19kaXNwX292bF9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAJCXJldHVybiByZXQ7Cj4gIAl9Cj4gIAo+ICsJ cHJpdi0+ZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOwo+ICsKPiAgCXBsYXRm b3JtX3NldF9kcnZkYXRhKHBkZXYsIHByaXYpOwo+ICAKPiAgCXJldCA9IGRldm1fcmVxdWVzdF9p cnEoZGV2LCBpcnEsIG10a19kaXNwX292bF9pcnFfaGFuZGxlciwKPiBAQCAtMjkwLDggKzMwMywx NCBAQCBzdGF0aWMgaW50IG10a19kaXNwX292bF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG10 a19kaXNwX292bF9kYXRhIG10ODE3M19vdmxfZHJpdmVyX2RhdGEgPSB7Cj4gKwkuYWRkciA9IERJ U1BfUkVHX09WTF9BRERSX01UODE3MywKPiArCS5mbXRfcmdiNTY1X2lzXzAgPSB0cnVlLAo+ICt9 Owo+ICsKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2Rpc3Bfb3ZsX2Ry aXZlcl9kdF9tYXRjaFtdID0gewo+IC0JeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMt ZGlzcC1vdmwiLCB9LAo+ICsJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtZGlzcC1v dmwiLAo+ICsJICAuZGF0YSA9ICZtdDgxNzNfb3ZsX2RyaXZlcl9kYXRhfSwKPiAgCXt9LAo+ICB9 Owo+ICBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdGtfZGlzcF9vdmxfZHJpdmVyX2R0X21hdGNo KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kaXNwX3JkbWEu YyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZGlzcF9yZG1hLmMKPiBpbmRleCAyMWVm ZjZmLi5lNWU1MzE4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZGlzcF9yZG1hLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Rpc3BfcmRt YS5jCj4gQEAgLTM4LDYgKzM4LDExIEBACj4gICNkZWZpbmUgUkRNQV9GSUZPX1VOREVSRkxPV19F TgkJCQlCSVQoMzEpCj4gICNkZWZpbmUgUkRNQV9GSUZPX1BTRVVET19TSVpFKGJ5dGVzKQkJCSgo KGJ5dGVzKSAvIDE2KSA8PCAxNikKPiAgI2RlZmluZSBSRE1BX09VVFBVVF9WQUxJRF9GSUZPX1RI UkVTSE9MRChieXRlcykJCSgoYnl0ZXMpIC8gMTYpCj4gKyNkZWZpbmUgUkRNQV9GSUZPX1NJWkUo cmRtYSkJCQkoKHJkbWEpLT5kYXRhLT5maWZvX3NpemUpCj4gKwo+ICtzdHJ1Y3QgbXRrX2Rpc3Bf cmRtYV9kYXRhIHsKPiArCXVuc2lnbmVkIGludCBmaWZvX3NpemU7Cj4gK307Cj4gIAo+ICAvKioK PiAgICogc3RydWN0IG10a19kaXNwX3JkbWEgLSBESVNQX1JETUEgZHJpdmVyIHN0cnVjdHVyZQo+ IEBAIC00Nyw2ICs1Miw3IEBACj4gIHN0cnVjdCBtdGtfZGlzcF9yZG1hIHsKPiAgCXN0cnVjdCBt dGtfZGRwX2NvbXAJCWRkcF9jb21wOwo+ICAJc3RydWN0IGRybV9jcnRjCQkJKmNydGM7Cj4gKwlj b25zdCBzdHJ1Y3QgbXRrX2Rpc3BfcmRtYV9kYXRhCSpkYXRhOwo+ICB9Owo+ICAKPiAgc3RhdGlj IGlubGluZSBzdHJ1Y3QgbXRrX2Rpc3BfcmRtYSAqY29tcF90b19yZG1hKHN0cnVjdCBtdGtfZGRw X2NvbXAgKmNvbXApCj4gQEAgLTExNCw2ICsxMjAsNyBAQCBzdGF0aWMgdm9pZCBtdGtfcmRtYV9j b25maWcoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IHdpZHRoLAo+ICB7 Cj4gIAl1bnNpZ25lZCBpbnQgdGhyZXNob2xkOwo+ICAJdW5zaWduZWQgaW50IHJlZzsKPiArCXN0 cnVjdCBtdGtfZGlzcF9yZG1hICpyZG1hID0gY29tcF90b19yZG1hKGNvbXApOwo+ICAKPiAgCXJk bWFfdXBkYXRlX2JpdHMoY29tcCwgRElTUF9SRUdfUkRNQV9TSVpFX0NPTl8wLCAweGZmZiwgd2lk dGgpOwo+ICAJcmRtYV91cGRhdGVfYml0cyhjb21wLCBESVNQX1JFR19SRE1BX1NJWkVfQ09OXzEs IDB4ZmZmZmYsIGhlaWdodCk7Cj4gQEAgLTEyNiw3ICsxMzMsNyBAQCBzdGF0aWMgdm9pZCBtdGtf cmRtYV9jb25maWcoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IHdpZHRo LAo+ICAJICovCj4gIAl0aHJlc2hvbGQgPSB3aWR0aCAqIGhlaWdodCAqIHZyZWZyZXNoICogNCAq IDcgLyAxMDAwMDAwOwo+ICAJcmVnID0gUkRNQV9GSUZPX1VOREVSRkxPV19FTiB8Cj4gLQkgICAg ICBSRE1BX0ZJRk9fUFNFVURPX1NJWkUoU1pfOEspIHwKPiArCSAgICAgIFJETUFfRklGT19QU0VV RE9fU0laRShSRE1BX0ZJRk9fU0laRShyZG1hKSkgfAo+ICAJICAgICAgUkRNQV9PVVRQVVRfVkFM SURfRklGT19USFJFU0hPTEQodGhyZXNob2xkKTsKPiAgCXdyaXRlbChyZWcsIGNvbXAtPnJlZ3Mg KyBESVNQX1JFR19SRE1BX0ZJRk9fQ09OKTsKPiAgfQo+IEBAIC0yMTEsNiArMjE4LDggQEAgc3Rh dGljIGludCBtdGtfZGlzcF9yZG1hX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cj4gIAkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gKwlwcml2LT5kYXRhID0gb2ZfZGV2aWNlX2dl dF9tYXRjaF9kYXRhKGRldik7Cj4gKwo+ICAJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJp dik7Cj4gIAo+ICAJcmV0ID0gY29tcG9uZW50X2FkZChkZXYsICZtdGtfZGlzcF9yZG1hX2NvbXBv bmVudF9vcHMpOwo+IEBAIC0yMjcsOCArMjM2LDEzIEBAIHN0YXRpYyBpbnQgbXRrX2Rpc3BfcmRt YV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCXJldHVybiAwOwo+ICB9 Cj4gIAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG10a19kaXNwX3JkbWFfZGF0YSBtdDgxNzNfcmRt YV9kcml2ZXJfZGF0YSA9IHsKPiArCS5maWZvX3NpemUgPSBTWl84SywKPiArfTsKPiArCj4gIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19kaXNwX3JkbWFfZHJpdmVyX2R0X21h dGNoW10gPSB7Cj4gLQl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1kaXNwLXJkbWEi LCB9LAo+ICsJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtZGlzcC1yZG1hIiwKPiAr CSAgLmRhdGEgPSAmbXQ4MTczX3JkbWFfZHJpdmVyX2RhdGF9LAo+ICAJe30sCj4gIH07Cj4gIE1P RFVMRV9ERVZJQ0VfVEFCTEUob2YsIG10a19kaXNwX3JkbWFfZHJpdmVyX2R0X21hdGNoKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMgYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHAuYwo+IGluZGV4IDE3YmE5MzUuLjgwMzA3 NjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZGRwLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kZHAuYwo+IEBAIC0zNiwy MSArMzYsMjEgQEAKPiAgI2RlZmluZSBESVNQX1JFR19NVVRFWF9NT0QobikJKDB4MmMgKyAweDIw ICogKG4pKQo+ICAjZGVmaW5lIERJU1BfUkVHX01VVEVYX1NPRihuKQkoMHgzMCArIDB4MjAgKiAo bikpCj4gIAo+IC0jZGVmaW5lIE1VVEVYX01PRF9ESVNQX09WTDAJCUJJVCgxMSkKPiAtI2RlZmlu ZSBNVVRFWF9NT0RfRElTUF9PVkwxCQlCSVQoMTIpCj4gLSNkZWZpbmUgTVVURVhfTU9EX0RJU1Bf UkRNQTAJCUJJVCgxMykKPiAtI2RlZmluZSBNVVRFWF9NT0RfRElTUF9SRE1BMQkJQklUKDE0KQo+ IC0jZGVmaW5lIE1VVEVYX01PRF9ESVNQX1JETUEyCQlCSVQoMTUpCj4gLSNkZWZpbmUgTVVURVhf TU9EX0RJU1BfV0RNQTAJCUJJVCgxNikKPiAtI2RlZmluZSBNVVRFWF9NT0RfRElTUF9XRE1BMQkJ QklUKDE3KQo+IC0jZGVmaW5lIE1VVEVYX01PRF9ESVNQX0NPTE9SMAkJQklUKDE4KQo+IC0jZGVm aW5lIE1VVEVYX01PRF9ESVNQX0NPTE9SMQkJQklUKDE5KQo+IC0jZGVmaW5lIE1VVEVYX01PRF9E SVNQX0FBTAkJQklUKDIwKQo+IC0jZGVmaW5lIE1VVEVYX01PRF9ESVNQX0dBTU1BCQlCSVQoMjEp Cj4gLSNkZWZpbmUgTVVURVhfTU9EX0RJU1BfVUZPRQkJQklUKDIyKQo+IC0jZGVmaW5lIE1VVEVY X01PRF9ESVNQX1BXTTAJCUJJVCgyMykKPiAtI2RlZmluZSBNVVRFWF9NT0RfRElTUF9QV00xCQlC SVQoMjQpCj4gLSNkZWZpbmUgTVVURVhfTU9EX0RJU1BfT0QJCUJJVCgyNSkKPiArI2RlZmluZSBN VDgxNzNfTVVURVhfTU9EX0RJU1BfT1ZMMAkJQklUKDExKQo+ICsjZGVmaW5lIE1UODE3M19NVVRF WF9NT0RfRElTUF9PVkwxCQlCSVQoMTIpCj4gKyNkZWZpbmUgTVQ4MTczX01VVEVYX01PRF9ESVNQ X1JETUEwCQlCSVQoMTMpCj4gKyNkZWZpbmUgTVQ4MTczX01VVEVYX01PRF9ESVNQX1JETUExCQlC SVQoMTQpCj4gKyNkZWZpbmUgTVQ4MTczX01VVEVYX01PRF9ESVNQX1JETUEyCQlCSVQoMTUpCj4g KyNkZWZpbmUgTVQ4MTczX01VVEVYX01PRF9ESVNQX1dETUEwCQlCSVQoMTYpCj4gKyNkZWZpbmUg TVQ4MTczX01VVEVYX01PRF9ESVNQX1dETUExCQlCSVQoMTcpCj4gKyNkZWZpbmUgTVQ4MTczX01V VEVYX01PRF9ESVNQX0NPTE9SMAkJQklUKDE4KQo+ICsjZGVmaW5lIE1UODE3M19NVVRFWF9NT0Rf RElTUF9DT0xPUjEJCUJJVCgxOSkKPiArI2RlZmluZSBNVDgxNzNfTVVURVhfTU9EX0RJU1BfQUFM CQlCSVQoMjApCj4gKyNkZWZpbmUgTVQ4MTczX01VVEVYX01PRF9ESVNQX0dBTU1BCQlCSVQoMjEp Cj4gKyNkZWZpbmUgTVQ4MTczX01VVEVYX01PRF9ESVNQX1VGT0UJCUJJVCgyMikKPiArI2RlZmlu ZSBNVDgxNzNfTVVURVhfTU9EX0RJU1BfUFdNMAkJQklUKDIzKQo+ICsjZGVmaW5lIE1UODE3M19N VVRFWF9NT0RfRElTUF9QV00xCQlCSVQoMjQpCj4gKyNkZWZpbmUgTVQ4MTczX01VVEVYX01PRF9E SVNQX09ECQlCSVQoMjUpCj4gIAo+ICAjZGVmaW5lIE1VVEVYX1NPRl9TSU5HTEVfTU9ERQkJMAo+ ICAjZGVmaW5lIE1VVEVYX1NPRl9EU0kwCQkJMQo+IEBAIC03NywyNCArNzcsMjUgQEAgc3RydWN0 IG10a19kZHAgewo+ICAJc3RydWN0IGNsawkJCSpjbGs7Cj4gIAl2b2lkIF9faW9tZW0JCQkqcmVn czsKPiAgCXN0cnVjdCBtdGtfZGlzcF9tdXRleAkJbXV0ZXhbMTBdOwo+ICsJY29uc3QgdW5zaWdu ZWQgaW50CQkqbXV0ZXhfbW9kOwo+ICB9Owo+ICAKPiAtc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu dCBtdXRleF9tb2RbRERQX0NPTVBPTkVOVF9JRF9NQVhdID0gewo+IC0JW0REUF9DT01QT05FTlRf QUFMXSA9IE1VVEVYX01PRF9ESVNQX0FBTCwKPiAtCVtERFBfQ09NUE9ORU5UX0NPTE9SMF0gPSBN VVRFWF9NT0RfRElTUF9DT0xPUjAsCj4gLQlbRERQX0NPTVBPTkVOVF9DT0xPUjFdID0gTVVURVhf TU9EX0RJU1BfQ09MT1IxLAo+IC0JW0REUF9DT01QT05FTlRfR0FNTUFdID0gTVVURVhfTU9EX0RJ U1BfR0FNTUEsCj4gLQlbRERQX0NPTVBPTkVOVF9PRF0gPSBNVVRFWF9NT0RfRElTUF9PRCwKPiAt CVtERFBfQ09NUE9ORU5UX09WTDBdID0gTVVURVhfTU9EX0RJU1BfT1ZMMCwKPiAtCVtERFBfQ09N UE9ORU5UX09WTDFdID0gTVVURVhfTU9EX0RJU1BfT1ZMMSwKPiAtCVtERFBfQ09NUE9ORU5UX1BX TTBdID0gTVVURVhfTU9EX0RJU1BfUFdNMCwKPiAtCVtERFBfQ09NUE9ORU5UX1BXTTFdID0gTVVU RVhfTU9EX0RJU1BfUFdNMSwKPiAtCVtERFBfQ09NUE9ORU5UX1JETUEwXSA9IE1VVEVYX01PRF9E SVNQX1JETUEwLAo+IC0JW0REUF9DT01QT05FTlRfUkRNQTFdID0gTVVURVhfTU9EX0RJU1BfUkRN QTEsCj4gLQlbRERQX0NPTVBPTkVOVF9SRE1BMl0gPSBNVVRFWF9NT0RfRElTUF9SRE1BMiwKPiAt CVtERFBfQ09NUE9ORU5UX1VGT0VdID0gTVVURVhfTU9EX0RJU1BfVUZPRSwKPiAtCVtERFBfQ09N UE9ORU5UX1dETUEwXSA9IE1VVEVYX01PRF9ESVNQX1dETUEwLAo+IC0JW0REUF9DT01QT05FTlRf V0RNQTFdID0gTVVURVhfTU9EX0RJU1BfV0RNQTEsCj4gK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBp bnQgbXQ4MTczX211dGV4X21vZFtERFBfQ09NUE9ORU5UX0lEX01BWF0gPSB7Cj4gKwlbRERQX0NP TVBPTkVOVF9BQUxdID0gTVQ4MTczX01VVEVYX01PRF9ESVNQX0FBTCwKPiArCVtERFBfQ09NUE9O RU5UX0NPTE9SMF0gPSBNVDgxNzNfTVVURVhfTU9EX0RJU1BfQ09MT1IwLAo+ICsJW0REUF9DT01Q T05FTlRfQ09MT1IxXSA9IE1UODE3M19NVVRFWF9NT0RfRElTUF9DT0xPUjEsCj4gKwlbRERQX0NP TVBPTkVOVF9HQU1NQV0gPSBNVDgxNzNfTVVURVhfTU9EX0RJU1BfR0FNTUEsCj4gKwlbRERQX0NP TVBPTkVOVF9PRF0gPSBNVDgxNzNfTVVURVhfTU9EX0RJU1BfT0QsCj4gKwlbRERQX0NPTVBPTkVO VF9PVkwwXSA9IE1UODE3M19NVVRFWF9NT0RfRElTUF9PVkwwLAo+ICsJW0REUF9DT01QT05FTlRf T1ZMMV0gPSBNVDgxNzNfTVVURVhfTU9EX0RJU1BfT1ZMMSwKPiArCVtERFBfQ09NUE9ORU5UX1BX TTBdID0gTVQ4MTczX01VVEVYX01PRF9ESVNQX1BXTTAsCj4gKwlbRERQX0NPTVBPTkVOVF9QV00x XSA9IE1UODE3M19NVVRFWF9NT0RfRElTUF9QV00xLAo+ICsJW0REUF9DT01QT05FTlRfUkRNQTBd ID0gTVQ4MTczX01VVEVYX01PRF9ESVNQX1JETUEwLAo+ICsJW0REUF9DT01QT05FTlRfUkRNQTFd ID0gTVQ4MTczX01VVEVYX01PRF9ESVNQX1JETUExLAo+ICsJW0REUF9DT01QT05FTlRfUkRNQTJd ID0gTVQ4MTczX01VVEVYX01PRF9ESVNQX1JETUEyLAo+ICsJW0REUF9DT01QT05FTlRfVUZPRV0g PSBNVDgxNzNfTVVURVhfTU9EX0RJU1BfVUZPRSwKPiArCVtERFBfQ09NUE9ORU5UX1dETUEwXSA9 IE1UODE3M19NVVRFWF9NT0RfRElTUF9XRE1BMCwKPiArCVtERFBfQ09NUE9ORU5UX1dETUExXSA9 IE1UODE3M19NVVRFWF9NT0RfRElTUF9XRE1BMSwKPiAgfTsKPiAgCj4gIHN0YXRpYyB1bnNpZ25l ZCBpbnQgbXRrX2RkcF9tb3V0X2VuKGVudW0gbXRrX2RkcF9jb21wX2lkIGN1ciwKPiBAQCAtMjQ3 LDcgKzI0OCw3IEBAIHZvaWQgbXRrX2Rpc3BfbXV0ZXhfYWRkX2NvbXAoc3RydWN0IG10a19kaXNw X211dGV4ICptdXRleCwKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gIAkJcmVnID0gcmVhZGxf cmVsYXhlZChkZHAtPnJlZ3MgKyBESVNQX1JFR19NVVRFWF9NT0QobXV0ZXgtPmlkKSk7Cj4gLQkJ cmVnIHw9IG11dGV4X21vZFtpZF07Cj4gKwkJcmVnIHw9IGRkcC0+bXV0ZXhfbW9kW2lkXTsKPiAg CQl3cml0ZWxfcmVsYXhlZChyZWcsIGRkcC0+cmVncyArIERJU1BfUkVHX01VVEVYX01PRChtdXRl eC0+aWQpKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gQEAgLTI3Myw3ICsyNzQsNyBAQCB2b2lkIG10 a19kaXNwX211dGV4X3JlbW92ZV9jb21wKHN0cnVjdCBtdGtfZGlzcF9tdXRleCAqbXV0ZXgsCj4g IAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+ICAJCXJlZyA9IHJlYWRsX3JlbGF4ZWQoZGRwLT5yZWdz ICsgRElTUF9SRUdfTVVURVhfTU9EKG11dGV4LT5pZCkpOwo+IC0JCXJlZyAmPSB+bXV0ZXhfbW9k W2lkXTsKPiArCQlyZWcgJj0gfihkZHAtPm11dGV4X21vZFtpZF0pOwo+ICAJCXdyaXRlbF9yZWxh eGVkKHJlZywgZGRwLT5yZWdzICsgRElTUF9SRUdfTVVURVhfTU9EKG11dGV4LT5pZCkpOwo+ICAJ CWJyZWFrOwo+ICAJfQo+IEBAIC0zMjYsNiArMzI3LDggQEAgc3RhdGljIGludCBtdGtfZGRwX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAkJcmV0dXJuIFBUUl9FUlIoZGRw LT5yZWdzKTsKPiAgCX0KPiAgCj4gKwlkZHAtPm11dGV4X21vZCA9IG9mX2RldmljZV9nZXRfbWF0 Y2hfZGF0YShkZXYpOwo+ICsKPiAgCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGRkcCk7Cj4g IAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTMzNyw3ICszNDAsNyBAQCBzdGF0aWMgaW50IG10a19kZHBf cmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIH0KPiAgCj4gIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRkcF9kcml2ZXJfZHRfbWF0Y2hbXSA9IHsKPiAtCXsg LmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTczLWRpc3AtbXV0ZXgiIH0sCj4gKwl7IC5jb21w YXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1kaXNwLW11dGV4IiwgLmRhdGEgPSBtdDgxNzNfbXV0 ZXhfbW9kfSwKPiAgCXt9LAo+ICB9Owo+ICBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkZHBfZHJp dmVyX2R0X21hdGNoKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19kcm1fZGRwX2NvbXAuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcF9j b21wLmMKPiBpbmRleCA0OGNjMDFmLi4zZmY3ODhjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZHJtX2RkcF9jb21wLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2RybV9kZHBfY29tcC5jCj4gQEAgLTM5LDkgKzM5LDEwIEBACj4gICNkZWZp bmUgRElTUF9SRUdfVUZPX1NUQVJUCQkJMHgwMDAwCj4gIAo+ICAjZGVmaW5lIERJU1BfQ09MT1Jf Q0ZHX01BSU4JCQkweDA0MDAKPiAtI2RlZmluZSBESVNQX0NPTE9SX1NUQVJUCQkJMHgwYzAwCj4g LSNkZWZpbmUgRElTUF9DT0xPUl9XSURUSAkJCTB4MGM1MAo+IC0jZGVmaW5lIERJU1BfQ09MT1Jf SEVJR0hUCQkJMHgwYzU0Cj4gKyNkZWZpbmUgRElTUF9DT0xPUl9TVEFSVF9NVDgxNzMJCQkweDBj MDAKPiArI2RlZmluZSBESVNQX0NPTE9SX1NUQVJUKGNvbXApCQkJKChjb21wKS0+ZGF0YS0+Y29s b3Jfb2Zmc2V0KQo+ICsjZGVmaW5lIERJU1BfQ09MT1JfV0lEVEgoY29tcCkJCQkoRElTUF9DT0xP Ul9TVEFSVChjb21wKSArIDB4NTApCj4gKyNkZWZpbmUgRElTUF9DT0xPUl9IRUlHSFQoY29tcCkJ CQkoRElTUF9DT0xPUl9TVEFSVChjb21wKSArIDB4NTQpCj4gIAo+ICAjZGVmaW5lIERJU1BfQUFM X0VOCQkJCTB4MDAwMAo+ICAjZGVmaW5lIERJU1BfQUFMX1NJWkUJCQkJMHgwMDMwCj4gQEAgLTgw LDYgKzgxLDIwIEBACj4gICNkZWZpbmUgRElUSEVSX0FERF9MU0hJRlRfRyh4KQkJCSgoKHgpICYg MHg3KSA8PCA0KQo+ICAjZGVmaW5lIERJVEhFUl9BRERfUlNISUZUX0coeCkJCQkoKCh4KSAmIDB4 NykgPDwgMCkKPiAgCj4gK3N0cnVjdCBtdGtfZGlzcF9jb2xvcl9kYXRhIHsKPiArCXVuc2lnbmVk IGludCBjb2xvcl9vZmZzZXQ7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgbXRrX2Rpc3BfY29sb3Igewo+ ICsJc3RydWN0IG10a19kZHBfY29tcAkJCWRkcF9jb21wOwo+ICsJY29uc3Qgc3RydWN0IG10a19k aXNwX2NvbG9yX2RhdGEJKmRhdGE7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBt dGtfZGlzcF9jb2xvciAqY29tcF90b19jb2xvcihzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wKQo+ ICt7Cj4gKwlyZXR1cm4gY29udGFpbmVyX29mKGNvbXAsIHN0cnVjdCBtdGtfZGlzcF9jb2xvciwg ZGRwX2NvbXApOwo+ICt9Cj4gKwo+ICB2b2lkIG10a19kaXRoZXJfc2V0KHN0cnVjdCBtdGtfZGRw X2NvbXAgKmNvbXAsIHVuc2lnbmVkIGludCBicGMsCj4gIAkJICAgIHVuc2lnbmVkIGludCBDRkcp Cj4gIHsKPiBAQCAtMTA3LDE1ICsxMjIsMTkgQEAgc3RhdGljIHZvaWQgbXRrX2NvbG9yX2NvbmZp ZyhzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wLCB1bnNpZ25lZCBpbnQgdywKPiAgCQkJICAgICB1 bnNpZ25lZCBpbnQgaCwgdW5zaWduZWQgaW50IHZyZWZyZXNoLAo+ICAJCQkgICAgIHVuc2lnbmVk IGludCBicGMpCj4gIHsKPiAtCXdyaXRlbCh3LCBjb21wLT5yZWdzICsgRElTUF9DT0xPUl9XSURU SCk7Cj4gLQl3cml0ZWwoaCwgY29tcC0+cmVncyArIERJU1BfQ09MT1JfSEVJR0hUKTsKPiArCXN0 cnVjdCBtdGtfZGlzcF9jb2xvciAqY29sb3IgPSBjb21wX3RvX2NvbG9yKGNvbXApOwo+ICsKPiAr CXdyaXRlbCh3LCBjb21wLT5yZWdzICsgRElTUF9DT0xPUl9XSURUSChjb2xvcikpOwo+ICsJd3Jp dGVsKGgsIGNvbXAtPnJlZ3MgKyBESVNQX0NPTE9SX0hFSUdIVChjb2xvcikpOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZCBtdGtfY29sb3Jfc3RhcnQoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCkK PiAgewo+ICsJc3RydWN0IG10a19kaXNwX2NvbG9yICpjb2xvciA9IGNvbXBfdG9fY29sb3IoY29t cCk7Cj4gKwo+ICAJd3JpdGVsKENPTE9SX0JZUEFTU19BTEwgfCBDT0xPUl9TRVFfU0VMLAo+ICAJ ICAgICAgIGNvbXAtPnJlZ3MgKyBESVNQX0NPTE9SX0NGR19NQUlOKTsKPiAtCXdyaXRlbCgweDEs IGNvbXAtPnJlZ3MgKyBESVNQX0NPTE9SX1NUQVJUKTsKPiArCXdyaXRlbCgweDEsIGNvbXAtPnJl Z3MgKyBESVNQX0NPTE9SX1NUQVJUKGNvbG9yKSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIG10 a19vZF9jb25maWcoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCwgdW5zaWduZWQgaW50IHcsCj4g QEAgLTI2NCw2ICsyODMsMTYgQEAgc3RydWN0IG10a19kZHBfY29tcF9tYXRjaCB7Cj4gIAlbRERQ X0NPTVBPTkVOVF9XRE1BMV0JPSB7IE1US19ESVNQX1dETUEsCTEsIE5VTEwgfSwKPiAgfTsKPiAg Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX2Rpc3BfY29sb3JfZGF0YSBtdDgxNzNfY29sb3Jf ZHJpdmVyX2RhdGEgPSB7Cj4gKwkuY29sb3Jfb2Zmc2V0ID0gRElTUF9DT0xPUl9TVEFSVF9NVDgx NzMsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfZGlz cF9jb2xvcl9kcml2ZXJfZHRfbWF0Y2hbXSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0 ZWssbXQ4MTczLWRpc3AtY29sb3IiLAo+ICsJICAuZGF0YSA9ICZtdDgxNzNfY29sb3JfZHJpdmVy X2RhdGF9LAo+ICsJe30sCj4gK307Cj4gKwo+ICBpbnQgbXRrX2RkcF9jb21wX2dldF9pZChzdHJ1 Y3QgZGV2aWNlX25vZGUgKm5vZGUsCj4gIAkJCWVudW0gbXRrX2RkcF9jb21wX3R5cGUgY29tcF90 eXBlKQo+ICB7Cj4gQEAgLTI4NiwxMCArMzE1LDI0IEBAIGludCBtdGtfZGRwX2NvbXBfaW5pdChz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwKPiAgCWVudW0gbXRr X2RkcF9jb21wX3R5cGUgdHlwZTsKPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbGFyYl9ub2RlOwo+ ICAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqbGFyYl9wZGV2Owo+ICsJY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZCAqbWF0Y2g7Cj4gKwlzdHJ1Y3QgbXRrX2Rpc3BfY29sb3IgKmNvbG9yOwo+ICAK PiAgCWlmIChjb21wX2lkIDwgMCB8fCBjb21wX2lkID49IEREUF9DT01QT05FTlRfSURfTUFYKQo+ ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiArCXR5cGUgPSBtdGtfZGRwX21hdGNoZXNbY29tcF9p ZF0udHlwZTsKPiArCWlmICh0eXBlID09IE1US19ESVNQX0NPTE9SKSB7Cj4gKwkJZGV2bV9rZnJl ZShkZXYsIGNvbXApOwo+ICsJCWNvbG9yID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjb2xv ciksIEdGUF9LRVJORUwpOwo+ICsJCWlmICghY29sb3IpCj4gKwkJCXJldHVybiAtRU5PTUVNOwo+ ICsKPiArCQltYXRjaCA9IG9mX21hdGNoX25vZGUobXRrX2Rpc3BfY29sb3JfZHJpdmVyX2R0X21h dGNoLCBub2RlKTsKPiArCQljb2xvci0+ZGF0YSA9IG1hdGNoLT5kYXRhOwo+ICsJCWNvbXAgPSAm Y29sb3ItPmRkcF9jb21wOwo+ICsJfQo+ICsKPiAgCWNvbXAtPmlkID0gY29tcF9pZDsKPiAgCWNv bXAtPmZ1bmNzID0gZnVuY3MgPzogbXRrX2RkcF9tYXRjaGVzW2NvbXBfaWRdLmZ1bmNzOwo+ICAK PiBAQCAtMzA4LDggKzM1MSw2IEBAIGludCBtdGtfZGRwX2NvbXBfaW5pdChzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwKPiAgCWlmIChJU19FUlIoY29tcC0+Y2xr KSkKPiAgCQljb21wLT5jbGsgPSBOVUxMOwo+ICAKPiAtCXR5cGUgPSBtdGtfZGRwX21hdGNoZXNb Y29tcF9pZF0udHlwZTsKPiAtCj4gIAkvKiBPbmx5IERNQSBjYXBhYmxlIGNvbXBvbmVudHMgbmVl ZCB0aGUgTEFSQiBwcm9wZXJ0eSAqLwo+ICAJY29tcC0+bGFyYl9kZXYgPSBOVUxMOwo+ICAJaWYg KHR5cGUgIT0gTVRLX0RJU1BfT1ZMICYmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHJtX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1f ZHJ2LmMKPiBpbmRleCA0YjdmZTdlLi4wNzRmZTMxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19kcm1fZHJ2LmMKPiBAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyBpbnQgbXRrX2F0 b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKPiAgCS5hdG9taWNfY29tbWl0ID0g bXRrX2F0b21pY19jb21taXQsCj4gIH07Cj4gIAo+IC1zdGF0aWMgY29uc3QgZW51bSBtdGtfZGRw X2NvbXBfaWQgbXRrX2RkcF9tYWluW10gPSB7Cj4gK3N0YXRpYyBjb25zdCBlbnVtIG10a19kZHBf Y29tcF9pZCBtdDgxNzNfbXRrX2RkcF9tYWluW10gPSB7Cj4gIAlERFBfQ09NUE9ORU5UX09WTDAs Cj4gIAlERFBfQ09NUE9ORU5UX0NPTE9SMCwKPiAgCUREUF9DT01QT05FTlRfQUFMLAo+IEBAIC0x MzksNyArMTM5LDcgQEAgc3RhdGljIGludCBtdGtfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtLAo+ICAJRERQX0NPTVBPTkVOVF9QV00wLAo+ICB9Owo+ICAKPiAtc3RhdGljIGNv bnN0IGVudW0gbXRrX2RkcF9jb21wX2lkIG10a19kZHBfZXh0W10gPSB7Cj4gK3N0YXRpYyBjb25z dCBlbnVtIG10a19kZHBfY29tcF9pZCBtdDgxNzNfbXRrX2RkcF9leHRbXSA9IHsKPiAgCUREUF9D T01QT05FTlRfT1ZMMSwKPiAgCUREUF9DT01QT05FTlRfQ09MT1IxLAo+ICAJRERQX0NPTVBPTkVO VF9HQU1NQSwKPiBAQCAtMTQ3LDYgKzE0NywxMyBAQCBzdGF0aWMgaW50IG10a19hdG9taWNfY29t bWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCj4gIAlERFBfQ09NUE9ORU5UX0RQSTAsCj4gIH07 Cj4gIAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG10a19tbXN5c19kcml2ZXJfZGF0YSBtdDgxNzNf bW1zeXNfZHJpdmVyX2RhdGEgPSB7Cj4gKwkubWFpbl9wYXRoID0gbXQ4MTczX210a19kZHBfbWFp biwKPiArCS5tYWluX2xlbiA9IEFSUkFZX1NJWkUobXQ4MTczX210a19kZHBfbWFpbiksCj4gKwku ZXh0X3BhdGggPSBtdDgxNzNfbXRrX2RkcF9leHQsCj4gKwkuZXh0X2xlbiA9IEFSUkFZX1NJWkUo bXQ4MTczX210a19kZHBfZXh0KSwKPiArfTsKPiArCj4gIHN0YXRpYyBpbnQgbXRrX2RybV9rbXNf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQo+ICB7Cj4gIAlzdHJ1Y3QgbXRrX2RybV9wcml2 YXRlICpwcml2YXRlID0gZHJtLT5kZXZfcHJpdmF0ZTsKPiBAQCAtMTg5LDE3ICsxOTYsMTkgQEAg c3RhdGljIGludCBtdGtfZHJtX2ttc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pCj4gIAkg KiBhbmQgZWFjaCBzdGF0aWNhbGx5IGFzc2lnbmVkIHRvIGEgY3J0YzoKPiAgCSAqIE9WTDAgLT4g Q09MT1IwIC0+IEFBTCAtPiBPRCAtPiBSRE1BMCAtPiBVRk9FIC0+IERTSTAgLi4uCj4gIAkgKi8K PiAtCXJldCA9IG10a19kcm1fY3J0Y19jcmVhdGUoZHJtLCBtdGtfZGRwX21haW4sIEFSUkFZX1NJ WkUobXRrX2RkcF9tYWluKSk7Cj4gKwlyZXQgPSBtdGtfZHJtX2NydGNfY3JlYXRlKGRybSwgcHJp dmF0ZS0+ZGF0YS0+bWFpbl9wYXRoLAo+ICsJCQkJICBwcml2YXRlLT5kYXRhLT5tYWluX2xlbik7 Cj4gIAlpZiAocmV0IDwgMCkKPiAgCQlnb3RvIGVycl9jb21wb25lbnRfdW5iaW5kOwo+ICAJLyog Li4uIGFuZCBPVkwxIC0+IENPTE9SMSAtPiBHQU1NQSAtPiBSRE1BMSAtPiBEUEkwLiAqLwo+IC0J cmV0ID0gbXRrX2RybV9jcnRjX2NyZWF0ZShkcm0sIG10a19kZHBfZXh0LCBBUlJBWV9TSVpFKG10 a19kZHBfZXh0KSk7Cj4gKwlyZXQgPSBtdGtfZHJtX2NydGNfY3JlYXRlKGRybSwgcHJpdmF0ZS0+ ZGF0YS0+ZXh0X3BhdGgsCj4gKwkJCQkgIHByaXZhdGUtPmRhdGEtPmV4dF9sZW4pOwo+ICAJaWYg KHJldCA8IDApCj4gIAkJZ290byBlcnJfY29tcG9uZW50X3VuYmluZDsKPiAgCj4gIAkvKiBVc2Ug T1ZMIGRldmljZSBmb3IgYWxsIERNQSBtZW1vcnkgYWxsb2NhdGlvbnMgKi8KPiAtCW5wID0gcHJp dmF0ZS0+Y29tcF9ub2RlW210a19kZHBfbWFpblswXV0gPzoKPiAtCSAgICAgcHJpdmF0ZS0+Y29t cF9ub2RlW210a19kZHBfZXh0WzBdXTsKPiArCW5wID0gcHJpdmF0ZS0+Y29tcF9ub2RlW3ByaXZh dGUtPmRhdGEtPm1haW5fcGF0aFswXV0gPzoKPiArCSAgICAgcHJpdmF0ZS0+Y29tcF9ub2RlW3By aXZhdGUtPmRhdGEtPmV4dF9wYXRoWzBdXTsKPiAgCXBkZXYgPSBvZl9maW5kX2RldmljZV9ieV9u b2RlKG5wKTsKPiAgCWlmICghcGRldikgewo+ICAJCXJldCA9IC1FTk9ERVY7Cj4gQEAgLTM2Miw2 ICszNzEsNyBAQCBzdGF0aWMgaW50IG10a19kcm1fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKPiAgCj4gIAltdXRleF9pbml0KCZwcml2YXRlLT5jb21taXQubG9jayk7Cj4gIAlJ TklUX1dPUksoJnByaXZhdGUtPmNvbW1pdC53b3JrLCBtdGtfYXRvbWljX3dvcmspOwo+ICsJcHJp dmF0ZS0+ZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOwo+ICAKPiAgCW1lbSA9 IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4gIAlwcml2 YXRlLT5jb25maWdfcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIG1lbSk7Cj4gQEAg LTUxMyw3ICs1MjMsOCBAQCBzdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMobXRrX2RybV9wbV9vcHMs IG10a19kcm1fc3lzX3N1c3BlbmQsCj4gIAkJCSBtdGtfZHJtX3N5c19yZXN1bWUpOwo+ICAKPiAg c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbXRrX2RybV9vZl9pZHNbXSA9IHsKPiAt CXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTczLW1tc3lzIiwgfSwKPiArCXsgLmNvbXBh dGlibGUgPSAibWVkaWF0ZWssbXQ4MTczLW1tc3lzIiwKPiArCSAgLmRhdGEgPSAmbXQ4MTczX21t c3lzX2RyaXZlcl9kYXRhfSwKPiAgCXsgfQo+ICB9Owo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvbXRrX2RybV9kcnYuaAo+IGluZGV4IGFhOTM4OTQuLmZhMGIxMDYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaAo+IEBAIC0yOCw2ICsyOCwxMyBAQAo+ICBzdHJ1 Y3QgZHJtX3Byb3BlcnR5Owo+ICBzdHJ1Y3QgcmVnbWFwOwo+ICAKPiArc3RydWN0IG10a19tbXN5 c19kcml2ZXJfZGF0YSB7Cj4gKwljb25zdCBlbnVtIG10a19kZHBfY29tcF9pZCAqbWFpbl9wYXRo Owo+ICsJdW5zaWduZWQgaW50IG1haW5fbGVuOwo+ICsJY29uc3QgZW51bSBtdGtfZGRwX2NvbXBf aWQgKmV4dF9wYXRoOwo+ICsJdW5zaWduZWQgaW50IGV4dF9sZW47Cj4gK307Cj4gKwo+ICBzdHJ1 Y3QgbXRrX2RybV9wcml2YXRlIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07Cj4gIAlzdHJ1 Y3QgZGV2aWNlICpkbWFfZGV2Owo+IEBAIC00MCw2ICs0Nyw3IEBAIHN0cnVjdCBtdGtfZHJtX3By aXZhdGUgewo+ICAJdm9pZCBfX2lvbWVtICpjb25maWdfcmVnczsKPiAgCXN0cnVjdCBkZXZpY2Vf bm9kZSAqY29tcF9ub2RlW0REUF9DT01QT05FTlRfSURfTUFYXTsKPiAgCXN0cnVjdCBtdGtfZGRw X2NvbXAgKmRkcF9jb21wW0REUF9DT01QT05FTlRfSURfTUFYXTsKPiArCWNvbnN0IHN0cnVjdCBt dGtfbW1zeXNfZHJpdmVyX2RhdGEgKmRhdGE7Cj4gIAo+ICAJc3RydWN0IHsKPiAgCQlzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfbWlwaV90eC5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19taXBp X3R4LmMKPiBpbmRleCAxYzM2NmY4Li5jNGEwMTY1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfbWlwaV90eC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19taXBpX3R4LmMKPiBAQCAtMTYsNiArMTYsNyBAQAo+ICAjaW5jbHVkZSA8bGludXgv ZGVsYXkuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgo+ICAjaW5jbHVkZSA8bGludXgv cGxhdGZvcm1fZGV2aWNlLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+Cj4gIAo+IEBA IC04Nyw2ICs4OCw5IEBACj4gIAo+ICAjZGVmaW5lIE1JUElUWF9EU0lfUExMX0NPTjIJMHg1OAo+ ICAKPiArI2RlZmluZSBNSVBJVFhfRFNJX1BMTF9UT1AJMHg2NAo+ICsjZGVmaW5lIFJHX0RTSV9N UFBMTF9QUkVTRVJWRQkJKDB4ZmYgPDwgOCkKPiArCj4gICNkZWZpbmUgTUlQSVRYX0RTSV9QTExf UFdSCTB4NjgKPiAgI2RlZmluZSBSR19EU0lfTVBQTExfU0RNX1BXUl9PTgkJQklUKDApCj4gICNk ZWZpbmUgUkdfRFNJX01QUExMX1NETV9JU09fRU4JCUJJVCgxKQo+IEBAIC0xMjMsMTAgKzEyNywx NSBAQAo+ICAjZGVmaW5lIFNXX0xOVDJfSFNUWF9QUkVfT0UJCUJJVCgyNCkKPiAgI2RlZmluZSBT V19MTlQyX0hTVFhfT0UJCQlCSVQoMjUpCj4gIAo+ICtzdHJ1Y3QgbXRrX21pcGl0eF9kYXRhIHsK PiArCWNvbnN0IHUzMiBtcHBsbF9wcmVzZXJ2ZTsKPiArfTsKPiArCj4gIHN0cnVjdCBtdGtfbWlw aV90eCB7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gIAl2b2lkIF9faW9tZW0gKnJlZ3M7Cj4g IAl1bnNpZ25lZCBpbnQgZGF0YV9yYXRlOwo+ICsJY29uc3Qgc3RydWN0IG10a19taXBpdHhfZGF0 YSAqZHJpdmVyX2RhdGE7Cj4gIAlzdHJ1Y3QgY2xrX2h3IHBsbF9odzsKPiAgCXN0cnVjdCBjbGsg KnBsbDsKPiAgfTsKPiBAQCAtMjQzLDYgKzI1MiwxMCBAQCBzdGF0aWMgaW50IG10a19taXBpX3R4 X3BsbF9wcmVwYXJlKHN0cnVjdCBjbGtfaHcgKmh3KQo+ICAJbXRrX21pcGlfdHhfY2xlYXJfYml0 cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9DT04xLAo+ICAJCQkgICAgICAgUkdfRFNJX01QUExM X1NETV9TU0NfRU4pOwo+ICAKPiArCW10a19taXBpX3R4X3VwZGF0ZV9iaXRzKG1pcGlfdHgsIE1J UElUWF9EU0lfUExMX1RPUCwKPiArCQkJCVJHX0RTSV9NUFBMTF9QUkVTRVJWRSwKPiArCQkJCW1p cGlfdHgtPmRyaXZlcl9kYXRhLT5tcHBsbF9wcmVzZXJ2ZSk7Cj4gKwo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gQEAgLTI1NSw2ICsyNjgsOSBAQCBzdGF0aWMgdm9pZCBtdGtfbWlwaV90eF9wbGxf dW5wcmVwYXJlKHN0cnVjdCBjbGtfaHcgKmh3KQo+ICAJbXRrX21pcGlfdHhfY2xlYXJfYml0cyht aXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9DT04wLAo+ICAJCQkgICAgICAgUkdfRFNJX01QUExMX1BM TF9FTik7Cj4gIAo+ICsJbXRrX21pcGlfdHhfdXBkYXRlX2JpdHMobWlwaV90eCwgTUlQSVRYX0RT SV9QTExfVE9QLAo+ICsJCQkJUkdfRFNJX01QUExMX1BSRVNFUlZFLCAwKTsKPiArCj4gIAltdGtf bWlwaV90eF91cGRhdGVfYml0cyhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9QV1IsCj4gIAkJCQlS R19EU0lfTVBQTExfU0RNX0lTT19FTiB8Cj4gIAkJCQlSR19EU0lfTVBQTExfU0RNX1BXUl9PTiwK PiBAQCAtMzkxLDYgKzQwNyw3IEBAIHN0YXRpYyBpbnQgbXRrX21pcGlfdHhfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCWlmICghbWlwaV90eCkKPiAgCQlyZXR1cm4gLUVO T01FTTsKPiAgCj4gKwltaXBpX3R4LT5kcml2ZXJfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hf ZGF0YShkZXYpOwo+ICAJbWVtID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VS Q0VfTUVNLCAwKTsKPiAgCW1pcGlfdHgtPnJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2 LCBtZW0pOwo+ICAJaWYgKElTX0VSUihtaXBpX3R4LT5yZWdzKSkgewo+IEBAIC00NDgsOCArNDY1 LDEzIEBAIHN0YXRpYyBpbnQgbXRrX21pcGlfdHhfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBt dGtfbWlwaXR4X2RhdGEgbXQ4MTczX21pcGl0eF9kYXRhID0gewo+ICsJLm1wcGxsX3ByZXNlcnZl ID0gKDAgPDwgOCkKPiArfTsKPiArCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IG10a19taXBpX3R4X21hdGNoW10gPSB7Cj4gLQl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10 ODE3My1taXBpLXR4IiwgfSwKPiArCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTczLW1p cGktdHgiLAo+ICsJICAuZGF0YSA9ICZtdDgxNzNfbWlwaXR4X2RhdGEgfSwKPiAgCXt9LAo+ICB9 Owo+ICAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK