From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Subject: [PATCH v6 04/12] drm/mediatek: Add DPI sub driver Date: Wed, 18 Nov 2015 18:34:12 +0100 Message-ID: <1447868060-11620-5-git-send-email-p.zabel@pengutronix.de> References: <1447868060-11620-1-git-send-email-p.zabel@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1447868060-11620-1-git-send-email-p.zabel@pengutronix.de> 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 Cc: Mark Rutland , devicetree@vger.kernel.org, Paul Bolle , YT Shen , Jitao Shi , Jie Qiu , Pawel Moll , Ian Campbell , Cawa Cheng , Rob Herring , linux-mediatek@lists.infradead.org, Kumar Gala , Matthias Brugger , kernel@pengutronix.de List-Id: devicetree@vger.kernel.org RnJvbTogSmllIFFpdSA8amllLnFpdUBtZWRpYXRlay5jb20+CgpBZGQgRFBJIGNvbm5lY3Rvci9l bmNvZGVyIHRvIHN1cHBvcnQgSERNSSBvdXRwdXQgdmlhIHRoZQphdHRhY2hlZCBIRE1JIGJyaWRn ZS4KClNpZ25lZC1vZmYtYnk6IEppZSBRaXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPgpTaWduZWQt b2ZmLWJ5OiBQaGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1dHJvbml4LmRlPgotLS0KQ2hhbmdl cyBzaW5jZSB2NToKIC0gUmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgZHJpdmVycyBpbiBhIGxvb3AK LS0tCiBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUgICAgICAgfCAgIDMgKy0KIGRy aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmMgICAgICB8IDY4MyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuaCAg ICAgIHwgIDgwICsrKysKIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpX3JlZ3MuaCB8 IDIyOCArKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmMg IHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oICB8ICAgMSAr CiA2IGZpbGVzIGNoYW5nZWQsIDk5NSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmgKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaV9yZWdzLmgKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0vbWVkaWF0ZWsvTWFrZWZpbGUKaW5kZXggMGQ0YWVlYi4uOTMzODBmZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9NYWtlZmlsZQpAQCAtNiw3ICs2LDggQEAgbWVkaWF0ZWstZHJtLXkgOj0gbXRrX2Ry bV9kcnYubyBcCiAJCSAgbXRrX2RybV9nZW0ubyBcCiAJCSAgbXRrX2RybV9wbGFuZS5vIFwKIAkJ ICBtdGtfZHNpLm8gXAotCQkgIG10a19taXBpX3R4Lm8KKwkJICBtdGtfbWlwaV90eC5vIFwKKwkJ ICBtdGtfZHBpLm8KIAogb2JqLSQoQ09ORklHX0RSTV9NRURJQVRFSykgKz0gbWVkaWF0ZWstZHJt Lm8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNDNlYWYzMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHBpLmMKQEAgLTAsMCArMSw2ODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp IDIwMTQgTWVkaWFUZWsgSW5jLgorICogQXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlhdGVr LmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg Ki8KKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4K KyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9k ZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9vZi5oPgorI2luY2x1ZGUgPGxpbnV4L29mX2dyYXBo Lmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvY2xrLmg+ CisKKyNpbmNsdWRlICJtdGtfZHBpLmgiCisjaW5jbHVkZSAibXRrX2RwaV9yZWdzLmgiCisKK2Vu dW0gbXRrX2RwaV9wb2xhcml0eSB7CisJTVRLX0RQSV9QT0xBUklUWV9SSVNJTkcsCisJTVRLX0RQ SV9QT0xBUklUWV9GQUxMSU5HLAorfTsKKworc3RydWN0IG10a19kcGlfcG9sYXJpdGllcyB7CisJ ZW51bSBtdGtfZHBpX3BvbGFyaXR5IGRlX3BvbDsKKwllbnVtIG10a19kcGlfcG9sYXJpdHkgY2tf cG9sOworCWVudW0gbXRrX2RwaV9wb2xhcml0eSBoc3luY19wb2w7CisJZW51bSBtdGtfZHBpX3Bv bGFyaXR5IHZzeW5jX3BvbDsKK307CisKK3N0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0geworCXUz MiBzeW5jX3dpZHRoOworCXUzMiBmcm9udF9wb3JjaDsKKwl1MzIgYmFja19wb3JjaDsKKwlib29s IHNoaWZ0X2hhbGZfbGluZTsKK307CisKK3N0cnVjdCBtdGtfZHBpX3ljX2xpbWl0IHsKKwl1MTYg eV90b3A7CisJdTE2IHlfYm90dG9tOworCXUxNiBjX3RvcDsKKwl1MTYgY19ib3R0b207Cit9Owor CitzdGF0aWMgdm9pZCBtdGtfZHBpX21hc2soc3RydWN0IG10a19kcGkgKmRwaSwgdTMyIG9mZnNl dCwgdTMyIHZhbCwgdTMyIG1hc2spCit7CisJdTMyIHRtcCA9IHJlYWRsKGRwaS0+cmVncyArIG9m ZnNldCkgJiB+bWFzazsKKworCXRtcCB8PSAodmFsICYgbWFzayk7CisJd3JpdGVsKHRtcCwgZHBp LT5yZWdzICsgb2Zmc2V0KTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9zd19yZXNldChzdHJ1 Y3QgbXRrX2RwaSAqZHBpLCBib29sIHJlc2V0KQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9S RVQsIHJlc2V0ID8gUlNUIDogMCwgUlNUKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9lbmFi bGUoc3RydWN0IG10a19kcGkgKmRwaSkKK3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfRU4sIEVO LCBFTik7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfZGlzYWJsZShzdHJ1Y3QgbXRrX2RwaSAq ZHBpKQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9FTiwgMCwgRU4pOworfQorCitzdGF0aWMg dm9pZCBtdGtfZHBpX2NvbmZpZ19oc3luYyhzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCSBzdHJ1 Y3QgbXRrX2RwaV9zeW5jX3BhcmFtICpzeW5jKQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9U R0VOX0hXSURUSCwKKwkJCSAgc3luYy0+c3luY193aWR0aCA8PCBIUFcsIEhQV19NQVNLKTsKKwlt dGtfZHBpX21hc2soZHBpLCBEUElfVEdFTl9IUE9SQ0gsCisJCQkgIHN5bmMtPmJhY2tfcG9yY2gg PDwgSEJQLCBIQlBfTUFTSyk7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX1RHRU5fSFBPUkNILCBz eW5jLT5mcm9udF9wb3JjaCA8PCBIRlAsCisJCQkgIEhGUF9NQVNLKTsKK30KKworc3RhdGljIHZv aWQgbXRrX2RwaV9jb25maWdfdnN5bmMoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgc3RydWN0 IG10a19kcGlfc3luY19wYXJhbSAqc3luYywKKwkJCQkgdTMyIHdpZHRoX2FkZHIsIHUzMiBwb3Jj aF9hZGRyKQoreworCW10a19kcGlfbWFzayhkcGksIHdpZHRoX2FkZHIsCisJCSAgICAgc3luYy0+ c3luY193aWR0aCA8PCBWU1lOQ19XSURUSF9TSElGVCwKKwkJICAgICBWU1lOQ19XSURUSF9NQVNL KTsKKwltdGtfZHBpX21hc2soZHBpLCB3aWR0aF9hZGRyLAorCQkgICAgIHN5bmMtPnNoaWZ0X2hh bGZfbGluZSA8PCBWU1lOQ19IQUxGX0xJTkVfU0hJRlQsCisJCSAgICAgVlNZTkNfSEFMRl9MSU5F X01BU0spOworCW10a19kcGlfbWFzayhkcGksIHBvcmNoX2FkZHIsCisJCSAgICAgc3luYy0+YmFj a19wb3JjaCA8PCBWU1lOQ19CQUNLX1BPUkNIX1NISUZULAorCQkgICAgIFZTWU5DX0JBQ0tfUE9S Q0hfTUFTSyk7CisJbXRrX2RwaV9tYXNrKGRwaSwgcG9yY2hfYWRkciwKKwkJICAgICBzeW5jLT5m cm9udF9wb3JjaCA8PCBWU1lOQ19GUk9OVF9QT1JDSF9TSElGVCwKKwkJICAgICBWU1lOQ19GUk9O VF9QT1JDSF9NQVNLKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfdnN5bmNfbG9k ZChzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCSAgICAgIHN0cnVjdCBtdGtfZHBpX3N5bmNfcGFy YW0gKnN5bmMpCit7CisJbXRrX2RwaV9jb25maWdfdnN5bmMoZHBpLCBzeW5jLCBEUElfVEdFTl9W V0lEVEgsIERQSV9UR0VOX1ZQT1JDSCk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmln X3ZzeW5jX2xldmVuKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJICAgICAgIHN0cnVjdCBtdGtf ZHBpX3N5bmNfcGFyYW0gKnN5bmMpCit7CisJbXRrX2RwaV9jb25maWdfdnN5bmMoZHBpLCBzeW5j LCBEUElfVEdFTl9WV0lEVEhfTEVWRU4sCisJCQkgICAgIERQSV9UR0VOX1ZQT1JDSF9MRVZFTik7 Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3ZzeW5jX3JvZGQoc3RydWN0IG10a19k cGkgKmRwaSwKKwkJCQkgICAgICBzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtICpzeW5jKQorewor CW10a19kcGlfY29uZmlnX3ZzeW5jKGRwaSwgc3luYywgRFBJX1RHRU5fVldJRFRIX1JPREQsCisJ CQkgICAgIERQSV9UR0VOX1ZQT1JDSF9ST0REKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9j b25maWdfdnN5bmNfcmV2ZW4oc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgICAgICAgc3RydWN0 IG10a19kcGlfc3luY19wYXJhbSAqc3luYykKK3sKKwltdGtfZHBpX2NvbmZpZ192c3luYyhkcGks IHN5bmMsIERQSV9UR0VOX1ZXSURUSF9SRVZFTiwKKwkJCSAgICAgRFBJX1RHRU5fVlBPUkNIX1JF VkVOKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfcG9sKHN0cnVjdCBtdGtfZHBp ICpkcGksCisJCQkgICAgICAgc3RydWN0IG10a19kcGlfcG9sYXJpdGllcyAqZHBpX3BvbCkKK3sK Kwl1bnNpZ25lZCBpbnQgcG9sOworCisJcG9sID0gKGRwaV9wb2wtPmNrX3BvbCA9PSBNVEtfRFBJ X1BPTEFSSVRZX1JJU0lORyA/IDAgOiBDS19QT0wpIHwKKwkgICAgICAoZHBpX3BvbC0+ZGVfcG9s ID09IE1US19EUElfUE9MQVJJVFlfUklTSU5HID8gMCA6IERFX1BPTCkgfAorCSAgICAgIChkcGlf cG9sLT5oc3luY19wb2wgPT0gTVRLX0RQSV9QT0xBUklUWV9SSVNJTkcgPyAwIDogSFNZTkNfUE9M KSB8CisJICAgICAgKGRwaV9wb2wtPnZzeW5jX3BvbCA9PSBNVEtfRFBJX1BPTEFSSVRZX1JJU0lO RyA/IDAgOiBWU1lOQ19QT0wpOworCW10a19kcGlfbWFzayhkcGksIERQSV9PVVRQVVRfU0VUVElO RywgcG9sLAorCQkgICAgIENLX1BPTCB8IERFX1BPTCB8IEhTWU5DX1BPTCB8IFZTWU5DX1BPTCk7 Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnXzNkKHN0cnVjdCBtdGtfZHBpICpkcGks IGJvb2wgZW5fM2QpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0NPTiwgZW5fM2QgPyBUREZQ X0VOIDogMCwgVERGUF9FTik7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX2ludGVy ZmFjZShzdHJ1Y3QgbXRrX2RwaSAqZHBpLCBib29sIGludGVyKQoreworCW10a19kcGlfbWFzayhk cGksIERQSV9DT04sIGludGVyID8gSU5UTF9FTiA6IDAsIElOVExfRU4pOworfQorCitzdGF0aWMg dm9pZCBtdGtfZHBpX2NvbmZpZ19mYl9zaXplKHN0cnVjdCBtdGtfZHBpICpkcGksIHUzMiB3aWR0 aCwgdTMyIGhlaWdodCkKK3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfU0laRSwgd2lkdGggPDwg SFNJWkUsIEhTSVpFX01BU0spOworCW10a19kcGlfbWFzayhkcGksIERQSV9TSVpFLCBoZWlnaHQg PDwgVlNJWkUsIFZTSVpFX01BU0spOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19j aGFubmVsX2xpbWl0KHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJCSBzdHJ1Y3QgbXRrX2RwaV95 Y19saW1pdCAqbGltaXQpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX1lfTElNSVQsIGxpbWl0 LT55X2JvdHRvbSA8PCBZX0xJTUlOVF9CT1QsCisJCSAgICAgWV9MSU1JTlRfQk9UX01BU0spOwor CW10a19kcGlfbWFzayhkcGksIERQSV9ZX0xJTUlULCBsaW1pdC0+eV90b3AgPDwgWV9MSU1JTlRf VE9QLAorCQkgICAgIFlfTElNSU5UX1RPUF9NQVNLKTsKKwltdGtfZHBpX21hc2soZHBpLCBEUElf Q19MSU1JVCwgbGltaXQtPmNfYm90dG9tIDw8IENfTElNSVRfQk9ULAorCQkgICAgIENfTElNSVRf Qk9UX01BU0spOworCW10a19kcGlfbWFzayhkcGksIERQSV9DX0xJTUlULCBsaW1pdC0+Y190b3Ag PDwgQ19MSU1JVF9UT1AsCisJCSAgICAgQ19MSU1JVF9UT1BfTUFTSyk7Cit9CisKK3N0YXRpYyB2 b2lkIG10a19kcGlfY29uZmlnX2JpdF9udW0oc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgICBl bnVtIG10a19kcGlfb3V0X2JpdF9udW0gbnVtKQoreworCXUzMiB2YWw7CisKKwlzd2l0Y2ggKG51 bSkgeworCWNhc2UgTVRLX0RQSV9PVVRfQklUX05VTV84QklUUzoKKwkJdmFsID0gT1VUX0JJVF84 OworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX0JJVF9OVU1fMTBCSVRTOgorCQl2YWwgPSBP VVRfQklUXzEwOworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX0JJVF9OVU1fMTJCSVRTOgor CQl2YWwgPSBPVVRfQklUXzEyOworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX0JJVF9OVU1f MTZCSVRTOgorCQl2YWwgPSBPVVRfQklUXzE2OworCQlicmVhazsKKwlkZWZhdWx0OgorCQl2YWwg PSBPVVRfQklUXzg7CisJCWJyZWFrOworCX0KKwltdGtfZHBpX21hc2soZHBpLCBEUElfT1VUUFVU X1NFVFRJTkcsIHZhbCA8PCBPVVRfQklULAorCQkgICAgICBPVVRfQklUX01BU0spOworfQorCitz dGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ195Y19tYXAoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJ CQkgIGVudW0gbXRrX2RwaV9vdXRfeWNfbWFwIG1hcCkKK3sKKwl1MzIgdmFsOworCisJc3dpdGNo IChtYXApIHsKKwljYXNlIE1US19EUElfT1VUX1lDX01BUF9SR0I6CisJCXZhbCA9IFlDX01BUF9S R0I7CisJCWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfWUNfTUFQX0NZQ1k6CisJCXZhbCA9IFlD X01BUF9DWUNZOworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX1lDX01BUF9ZQ1lDOgorCQl2 YWwgPSBZQ19NQVBfWUNZQzsKKwkJYnJlYWs7CisJY2FzZSBNVEtfRFBJX09VVF9ZQ19NQVBfQ1k6 CisJCXZhbCA9IFlDX01BUF9DWTsKKwkJYnJlYWs7CisJY2FzZSBNVEtfRFBJX09VVF9ZQ19NQVBf WUM6CisJCXZhbCA9IFlDX01BUF9ZQzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJdmFsID0gWUNf TUFQX1JHQjsKKwkJYnJlYWs7CisJfQorCisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX09VVFBVVF9T RVRUSU5HLCB2YWwgPDwgWUNfTUFQLCBZQ19NQVBfTUFTSyk7Cit9CisKK3N0YXRpYyB2b2lkIG10 a19kcGlfY29uZmlnX2NoYW5uZWxfc3dhcChzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCQllbnVt IG10a19kcGlfb3V0X2NoYW5uZWxfc3dhcCBzd2FwKQoreworCXUzMiB2YWw7CisKKwlzd2l0Y2gg KHN3YXApIHsKKwljYXNlIE1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9SR0I6CisJCXZhbCA9IFNX QVBfUkdCOworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9HQlI6CisJ CXZhbCA9IFNXQVBfR0JSOworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX0NIQU5ORUxfU1dB UF9CUkc6CisJCXZhbCA9IFNXQVBfQlJHOworCQlicmVhazsKKwljYXNlIE1US19EUElfT1VUX0NI QU5ORUxfU1dBUF9SQkc6CisJCXZhbCA9IFNXQVBfUkJHOworCQlicmVhazsKKwljYXNlIE1US19E UElfT1VUX0NIQU5ORUxfU1dBUF9HUkI6CisJCXZhbCA9IFNXQVBfR1JCOworCQlicmVhazsKKwlj YXNlIE1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9CR1I6CisJCXZhbCA9IFNXQVBfQkdSOworCQli cmVhazsKKwlkZWZhdWx0OgorCQl2YWwgPSBTV0FQX1JHQjsKKwkJYnJlYWs7CisJfQorCisJbXRr X2RwaV9tYXNrKGRwaSwgRFBJX09VVFBVVF9TRVRUSU5HLCB2YWwgPDwgQ0hfU1dBUCwgQ0hfU1dB UF9NQVNLKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfeXV2NDIyX2VuYWJsZShz dHJ1Y3QgbXRrX2RwaSAqZHBpLCBib29sIGVuYWJsZSkKK3sKKwltdGtfZHBpX21hc2soZHBpLCBE UElfQ09OLCBlbmFibGUgPyBZVVY0MjJfRU4gOiAwLCBZVVY0MjJfRU4pOworfQorCitzdGF0aWMg dm9pZCBtdGtfZHBpX2NvbmZpZ19jc2NfZW5hYmxlKHN0cnVjdCBtdGtfZHBpICpkcGksIGJvb2wg ZW5hYmxlKQoreworCW10a19kcGlfbWFzayhkcGksIERQSV9DT04sIGVuYWJsZSA/IENTQ19FTkFC TEUgOiAwLCBDU0NfRU5BQkxFKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfc3dh cF9pbnB1dChzdHJ1Y3QgbXRrX2RwaSAqZHBpLCBib29sIGVuYWJsZSkKK3sKKwltdGtfZHBpX21h c2soZHBpLCBEUElfQ09OLCBlbmFibGUgPyBJTl9SQl9TV0FQIDogMCwgSU5fUkJfU1dBUCk7Cit9 CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnXzJuX2hfZnJlKHN0cnVjdCBtdGtfZHBpICpk cGkpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0hfRlJFX0NPTiwgSF9GUkVfMk4sIEhfRlJF XzJOKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfY29sb3JfZm9ybWF0KHN0cnVj dCBtdGtfZHBpICpkcGksCisJCQkJCWVudW0gbXRrX2RwaV9vdXRfY29sb3JfZm9ybWF0IGZvcm1h dCkKK3sKKwlpZiAoKGZvcm1hdCA9PSBNVEtfRFBJX0NPTE9SX0ZPUk1BVF9ZQ0JDUl80NDQpIHx8 CisJICAgIChmb3JtYXQgPT0gTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1JfNDQ0X0ZVTEwpKSB7 CisJCW10a19kcGlfY29uZmlnX3l1djQyMl9lbmFibGUoZHBpLCBmYWxzZSk7CisJCW10a19kcGlf Y29uZmlnX2NzY19lbmFibGUoZHBpLCB0cnVlKTsKKwkJbXRrX2RwaV9jb25maWdfc3dhcF9pbnB1 dChkcGksIGZhbHNlKTsKKwkJbXRrX2RwaV9jb25maWdfY2hhbm5lbF9zd2FwKGRwaSwgTVRLX0RQ SV9PVVRfQ0hBTk5FTF9TV0FQX0JHUik7CisJfSBlbHNlIGlmICgoZm9ybWF0ID09IE1US19EUElf Q09MT1JfRk9STUFUX1lDQkNSXzQyMikgfHwKKwkJICAgKGZvcm1hdCA9PSBNVEtfRFBJX0NPTE9S X0ZPUk1BVF9ZQ0JDUl80MjJfRlVMTCkpIHsKKwkJbXRrX2RwaV9jb25maWdfeXV2NDIyX2VuYWJs ZShkcGksIHRydWUpOworCQltdGtfZHBpX2NvbmZpZ19jc2NfZW5hYmxlKGRwaSwgdHJ1ZSk7CisJ CW10a19kcGlfY29uZmlnX3N3YXBfaW5wdXQoZHBpLCB0cnVlKTsKKwkJbXRrX2RwaV9jb25maWdf Y2hhbm5lbF9zd2FwKGRwaSwgTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX1JHQik7CisJfSBlbHNl IHsKKwkJbXRrX2RwaV9jb25maWdfeXV2NDIyX2VuYWJsZShkcGksIGZhbHNlKTsKKwkJbXRrX2Rw aV9jb25maWdfY3NjX2VuYWJsZShkcGksIGZhbHNlKTsKKwkJbXRrX2RwaV9jb25maWdfc3dhcF9p bnB1dChkcGksIGZhbHNlKTsKKwkJbXRrX2RwaV9jb25maWdfY2hhbm5lbF9zd2FwKGRwaSwgTVRL X0RQSV9PVVRfQ0hBTk5FTF9TV0FQX1JHQik7CisJfQorfQorCitzdGF0aWMgaW50IG10a19kcGlf cG93ZXJfb2ZmKHN0cnVjdCBtdGtfZHBpICpkcGkpCit7CisJbXRrX2RwaV9kaXNhYmxlKGRwaSk7 CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRwaS0+cGl4ZWxfY2xrKTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IG10a19kcGlfcG93ZXJfb24oc3RydWN0IG10a19kcGkgKmRwaSkKK3sK KwlpbnQgcmV0OworCisJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGRwaS0+cGl4ZWxfY2xrKTsK KwlpZiAocmV0KSB7CisJCWRldl9lcnIoZHBpLT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIHBpeGVs IGNsb2NrOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisJbXRrX2RwaV9lbmFibGUo ZHBpKTsKKworCXJldHVybiAwOworfQorCitpbnQgbXRrX2RwaV9zZXRfZGlzcGxheV9tb2RlKHN0 cnVjdCBtdGtfZHBpICpkcGksIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCXN0 cnVjdCBtdGtfZHBpX3ljX2xpbWl0IGxpbWl0OworCXN0cnVjdCBtdGtfZHBpX3BvbGFyaXRpZXMg ZHBpX3BvbDsKKwlzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtIGhzeW5jOworCXN0cnVjdCBtdGtf ZHBpX3N5bmNfcGFyYW0gdnN5bmNfbG9kZCA9IHsgMCB9OworCXN0cnVjdCBtdGtfZHBpX3N5bmNf cGFyYW0gdnN5bmNfbGV2ZW4gPSB7IDAgfTsKKwlzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtIHZz eW5jX3JvZGQgPSB7IDAgfTsKKwlzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtIHZzeW5jX3JldmVu ID0geyAwIH07CisJdW5zaWduZWQgbG9uZyBwaXhfcmF0ZTsKKwl1bnNpZ25lZCBsb25nIHBsbF9y YXRlOworCXVuc2lnbmVkIGludCBmYWN0b3I7CisKKwlpZiAoIWRwaSkgeworCQlkZXZfZXJyKGRw aS0+ZGV2LCAiaW52YWxpZCBhcmd1bWVudFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwor CXBpeF9yYXRlID0gMTAwMFVMICogbW9kZS0+Y2xvY2s7CisJaWYgKG1vZGUtPmNsb2NrIDw9IDc0 MDAwKQorCQlmYWN0b3IgPSA4ICogMzsKKwllbHNlCisJCWZhY3RvciA9IDQgKiAzOworCXBsbF9y YXRlID0gcGl4X3JhdGUgKiBmYWN0b3I7CisKKwlkZXZfZGJnKGRwaS0+ZGV2LCAiV2FudCBQTEwg JWx1IEh6LCBwaXhlbCBjbG9jayAlbHUgSHpcbiIsCisJCXBsbF9yYXRlLCBwaXhfcmF0ZSk7CisK KwljbGtfc2V0X3JhdGUoZHBpLT50dmRfY2xrLCBwbGxfcmF0ZSk7CisJcGxsX3JhdGUgPSBjbGtf Z2V0X3JhdGUoZHBpLT50dmRfY2xrKTsKKworCXBpeF9yYXRlID0gcGxsX3JhdGUgLyBmYWN0b3I7 CisJY2xrX3NldF9yYXRlKGRwaS0+cGl4ZWxfY2xrLCBwaXhfcmF0ZSk7CisJcGl4X3JhdGUgPSBj bGtfZ2V0X3JhdGUoZHBpLT5waXhlbF9jbGspOworCisJZGV2X2RiZyhkcGktPmRldiwgIkdvdCAg UExMICVsdSBIeiwgcGl4ZWwgY2xvY2sgJWx1IEh6XG4iLAorCQlwbGxfcmF0ZSwgcGl4X3JhdGUp OworCisJbGltaXQuY19ib3R0b20gPSAweDAwMTA7CisJbGltaXQuY190b3AgPSAweDBGRTA7CisJ bGltaXQueV9ib3R0b20gPSAweDAwMTA7CisJbGltaXQueV90b3AgPSAweDBGRTA7CisKKwlkcGlf cG9sLmNrX3BvbCA9IE1US19EUElfUE9MQVJJVFlfRkFMTElORzsKKwlkcGlfcG9sLmRlX3BvbCA9 IE1US19EUElfUE9MQVJJVFlfUklTSU5HOworCWRwaV9wb2wuaHN5bmNfcG9sID0gbW9kZS0+Zmxh Z3MgJiBEUk1fTU9ERV9GTEFHX1BIU1lOQyA/CisJCQkgICAgTVRLX0RQSV9QT0xBUklUWV9GQUxM SU5HIDogTVRLX0RQSV9QT0xBUklUWV9SSVNJTkc7CisJZHBpX3BvbC52c3luY19wb2wgPSBtb2Rl LT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUFZTWU5DID8KKwkJCSAgICBNVEtfRFBJX1BPTEFSSVRZ X0ZBTExJTkcgOiBNVEtfRFBJX1BPTEFSSVRZX1JJU0lORzsKKworCWhzeW5jLnN5bmNfd2lkdGgg PSBtb2RlLT5oc3luY19lbmQgLSBtb2RlLT5oc3luY19zdGFydDsKKwloc3luYy5iYWNrX3BvcmNo ID0gbW9kZS0+aHRvdGFsIC0gbW9kZS0+aHN5bmNfZW5kOworCWhzeW5jLmZyb250X3BvcmNoID0g bW9kZS0+aHN5bmNfc3RhcnQgLSBtb2RlLT5oZGlzcGxheTsKKwloc3luYy5zaGlmdF9oYWxmX2xp bmUgPSBmYWxzZTsKKworCXZzeW5jX2xvZGQuc3luY193aWR0aCA9IG1vZGUtPnZzeW5jX2VuZCAt IG1vZGUtPnZzeW5jX3N0YXJ0OworCXZzeW5jX2xvZGQuYmFja19wb3JjaCA9IG1vZGUtPnZ0b3Rh bCAtIG1vZGUtPnZzeW5jX2VuZDsKKwl2c3luY19sb2RkLmZyb250X3BvcmNoID0gbW9kZS0+dnN5 bmNfc3RhcnQgLSBtb2RlLT52ZGlzcGxheTsKKwl2c3luY19sb2RkLnNoaWZ0X2hhbGZfbGluZSA9 IGZhbHNlOworCisJaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UgJiYK KwkgICAgbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHXzNEX01BU0spIHsKKwkJdnN5bmNfbGV2 ZW4gPSB2c3luY19sb2RkOworCQl2c3luY19yb2RkID0gdnN5bmNfbG9kZDsKKwkJdnN5bmNfcmV2 ZW4gPSB2c3luY19sb2RkOworCQl2c3luY19sZXZlbi5zaGlmdF9oYWxmX2xpbmUgPSB0cnVlOwor CQl2c3luY19yZXZlbi5zaGlmdF9oYWxmX2xpbmUgPSB0cnVlOworCX0gZWxzZSBpZiAobW9kZS0+ ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSAmJgorCQkgICAhKG1vZGUtPmZsYWdzICYg RFJNX01PREVfRkxBR18zRF9NQVNLKSkgeworCQl2c3luY19sZXZlbiA9IHZzeW5jX2xvZGQ7CisJ CXZzeW5jX2xldmVuLnNoaWZ0X2hhbGZfbGluZSA9IHRydWU7CisJfSBlbHNlIGlmICghKG1vZGUt PmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpICYmCisJCSAgIG1vZGUtPmZsYWdzICYg RFJNX01PREVfRkxBR18zRF9NQVNLKSB7CisJCXZzeW5jX3JvZGQgPSB2c3luY19sb2RkOworCX0K KwltdGtfZHBpX3N3X3Jlc2V0KGRwaSwgdHJ1ZSk7CisJbXRrX2RwaV9jb25maWdfcG9sKGRwaSwg JmRwaV9wb2wpOworCisJbXRrX2RwaV9jb25maWdfaHN5bmMoZHBpLCAmaHN5bmMpOworCW10a19k cGlfY29uZmlnX3ZzeW5jX2xvZGQoZHBpLCAmdnN5bmNfbG9kZCk7CisJbXRrX2RwaV9jb25maWdf dnN5bmNfcm9kZChkcGksICZ2c3luY19yb2RkKTsKKwltdGtfZHBpX2NvbmZpZ192c3luY19sZXZl bihkcGksICZ2c3luY19sZXZlbik7CisJbXRrX2RwaV9jb25maWdfdnN5bmNfcmV2ZW4oZHBpLCAm dnN5bmNfcmV2ZW4pOworCisJbXRrX2RwaV9jb25maWdfM2QoZHBpLCAhIShtb2RlLT5mbGFncyAm IERSTV9NT0RFX0ZMQUdfM0RfTUFTSykpOworCW10a19kcGlfY29uZmlnX2ludGVyZmFjZShkcGks ICEhKG1vZGUtPmZsYWdzICYKKwkJCQkJIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSk7CisJaWYg KG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCisJCW10a19kcGlfY29uZmln X2ZiX3NpemUoZHBpLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkgLyAyKTsKKwllbHNl CisJCW10a19kcGlfY29uZmlnX2ZiX3NpemUoZHBpLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRp c3BsYXkpOworCisJbXRrX2RwaV9jb25maWdfY2hhbm5lbF9saW1pdChkcGksICZsaW1pdCk7CisJ bXRrX2RwaV9jb25maWdfYml0X251bShkcGksIGRwaS0+Yml0X251bSk7CisJbXRrX2RwaV9jb25m aWdfY2hhbm5lbF9zd2FwKGRwaSwgZHBpLT5jaGFubmVsX3N3YXApOworCW10a19kcGlfY29uZmln X3ljX21hcChkcGksIGRwaS0+eWNfbWFwKTsKKwltdGtfZHBpX2NvbmZpZ19jb2xvcl9mb3JtYXQo ZHBpLCBkcGktPmNvbG9yX2Zvcm1hdCk7CisJbXRrX2RwaV9jb25maWdfMm5faF9mcmUoZHBpKTsK KwltdGtfZHBpX3N3X3Jlc2V0KGRwaSwgZmFsc2UpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyB2b2lkIG10a19kcGlfZW5jb2Rlcl9kZXN0cm95KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cikKK3sKKwlkcm1fZW5jb2Rlcl9jbGVhbnVwKGVuY29kZXIpOworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIG10a19kcGlfZW5jb2Rlcl9mdW5jcyA9IHsKKwkuZGVz dHJveSA9IG10a19kcGlfZW5jb2Rlcl9kZXN0cm95LAorfTsKKworc3RhdGljIGJvb2wgbXRrX2Rw aV9lbmNvZGVyX21vZGVfZml4dXAoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCSAg ICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCQkgICAgICAgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCit7CisJcmV0dXJuIHRydWU7Cit9 CisKK3N0YXRpYyB2b2lkIG10a19kcGlfZW5jb2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIsCisJCQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJ CQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQoreworCXN0cnVj dCBtdGtfZHBpICpkcGkgPSBtdGtfZHBpX2Zyb21fZW5jb2RlcihlbmNvZGVyKTsKKworCWRybV9t b2RlX2NvcHkoJmRwaS0+bW9kZSwgYWRqdXN0ZWRfbW9kZSk7Cit9CisKK3N0YXRpYyB2b2lkIG10 a19kcGlfZW5jb2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlz dHJ1Y3QgbXRrX2RwaSAqZHBpID0gbXRrX2RwaV9mcm9tX2VuY29kZXIoZW5jb2Rlcik7CisKKwlt dGtfZHBpX3Bvd2VyX29mZihkcGkpOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2VuY29kZXJf ZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgbXRrX2RwaSAq ZHBpID0gbXRrX2RwaV9mcm9tX2VuY29kZXIoZW5jb2Rlcik7CisKKwltdGtfZHBpX3Bvd2VyX29u KGRwaSk7CisJbXRrX2RwaV9zZXRfZGlzcGxheV9tb2RlKGRwaSwgJmRwaS0+bW9kZSk7Cit9CisK K3N0YXRpYyBpbnQgbXRrX2RwaV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyLAorCQkJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgbXRrX2RwaV9lbmNvZGVy X2hlbHBlcl9mdW5jcyA9IHsKKwkubW9kZV9maXh1cCA9IG10a19kcGlfZW5jb2Rlcl9tb2RlX2Zp eHVwLAorCS5tb2RlX3NldCA9IG10a19kcGlfZW5jb2Rlcl9tb2RlX3NldCwKKwkuZGlzYWJsZSA9 IG10a19kcGlfZW5jb2Rlcl9kaXNhYmxlLAorCS5lbmFibGUgPSBtdGtfZHBpX2VuY29kZXJfZW5h YmxlLAorCS5hdG9taWNfY2hlY2sgPSBtdGtfZHBpX2F0b21pY19jaGVjaywKK307CisKK3N0YXRp YyBpbnQgbXRrX2RwaV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFz dGVyLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBtdGtfZHBpICpkcGkgPSBkZXZfZ2V0X2RydmRh dGEoZGV2KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRhdGE7CisJaW50IHJldDsK KworCXJldCA9IGRybV9lbmNvZGVyX2luaXQoZHJtX2RldiwgJmRwaS0+ZW5jb2RlciwgJm10a19k cGlfZW5jb2Rlcl9mdW5jcywKKwkJCSAgICAgICBEUk1fTU9ERV9FTkNPREVSX1RNRFMpOworCWlm IChyZXQpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBkZWNvZGVyOiAl ZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisJZHJtX2VuY29kZXJfaGVscGVyX2FkZCgm ZHBpLT5lbmNvZGVyLCAmbXRrX2RwaV9lbmNvZGVyX2hlbHBlcl9mdW5jcyk7CisKKwkvKiBDdXJy ZW50bHkgRFBJMCBpcyBmaXhlZCB0byBiZSBkcml2ZW4gYnkgT1ZMMSAqLworCWRwaS0+ZW5jb2Rl ci5wb3NzaWJsZV9jcnRjcyA9IEJJVCgxKTsKKworCWRwaS0+ZW5jb2Rlci5icmlkZ2UtPmVuY29k ZXIgPSAmZHBpLT5lbmNvZGVyOworCXJldCA9IGRybV9icmlkZ2VfYXR0YWNoKGRwaS0+ZW5jb2Rl ci5kZXYsIGRwaS0+ZW5jb2Rlci5icmlkZ2UpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYs ICJGYWlsZWQgdG8gYXR0YWNoIGJyaWRnZTogJWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX2NsZWFu dXA7CisJfQorCisJZHBpLT5iaXRfbnVtID0gTVRLX0RQSV9PVVRfQklUX05VTV84QklUUzsKKwlk cGktPmNoYW5uZWxfc3dhcCA9IE1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9SR0I7CisJZHBpLT55 Y19tYXAgPSBNVEtfRFBJX09VVF9ZQ19NQVBfUkdCOworCWRwaS0+Y29sb3JfZm9ybWF0ID0gTVRL X0RQSV9DT0xPUl9GT1JNQVRfUkdCOworCisJcmV0dXJuIDA7CisKK2Vycl9jbGVhbnVwOgorCWRy bV9lbmNvZGVyX2NsZWFudXAoJmRwaS0+ZW5jb2Rlcik7CisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIHZvaWQgbXRrX2RwaV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNl ICptYXN0ZXIsCisJCQkgICB2b2lkICpkYXRhKQoreworCXN0cnVjdCBtdGtfZHBpICpkcGkgPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsKKworCWRybV9lbmNvZGVyX2NsZWFudXAoJmRwaS0+ZW5jb2Rl cik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBtdGtfZHBpX2NvbXBv bmVudF9vcHMgPSB7CisJLmJpbmQgPSBtdGtfZHBpX2JpbmQsCisJLnVuYmluZCA9IG10a19kcGlf dW5iaW5kLAorfTsKKworc3RhdGljIGludCBtdGtfZHBpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1 Y3QgbXRrX2RwaSAqZHBpOworCXN0cnVjdCByZXNvdXJjZSAqbWVtOworCXN0cnVjdCBkZXZpY2Vf bm9kZSAqZXAsICpicmlkZ2Vfbm9kZSA9IE5VTEw7CisJaW50IHJldDsKKworCWRwaSA9IGRldm1f a3phbGxvYyhkZXYsIHNpemVvZigqZHBpKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkcGkpCisJCXJl dHVybiAtRU5PTUVNOworCisJZHBpLT5kZXYgPSBkZXY7CisKKwltZW0gPSBwbGF0Zm9ybV9nZXRf cmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCWRwaS0+cmVncyA9IGRldm1faW9y ZW1hcF9yZXNvdXJjZShkZXYsIG1lbSk7CisJaWYgKElTX0VSUihkcGktPnJlZ3MpKSB7CisJCXJl dCA9IFBUUl9FUlIoZHBpLT5yZWdzKTsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaW9yZW1h cCBtZW0gcmVzb3VyY2U6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWRwaS0+ ZW5naW5lX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJlbmdpbmUiKTsKKwlpZiAoSVNfRVJSKGRw aS0+ZW5naW5lX2NsaykpIHsKKwkJcmV0ID0gUFRSX0VSUihkcGktPmVuZ2luZV9jbGspOworCQlk ZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgZW5naW5lIGNsb2NrOiAlZFxuIiwgcmV0KTsKKwkJ cmV0dXJuIHJldDsKKwl9CisKKwlkcGktPnBpeGVsX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJw aXhlbCIpOworCWlmIChJU19FUlIoZHBpLT5waXhlbF9jbGspKSB7CisJCXJldCA9IFBUUl9FUlIo ZHBpLT5waXhlbF9jbGspOworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgcGl4ZWwgY2xv Y2s6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWRwaS0+dHZkX2NsayA9IGRl dm1fY2xrX2dldChkZXYsICJwbGwiKTsKKwlpZiAoSVNfRVJSKGRwaS0+dHZkX2NsaykpIHsKKwkJ cmV0ID0gUFRSX0VSUihkcGktPnR2ZF9jbGspOworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBn ZXQgdHZkcGxsIGNsb2NrOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkcGkt PmlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7CisJaWYgKGRwaS0+aXJxIDw9IDApIHsK KwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IGlycTogJWRcbiIsIGRwaS0+aXJxKTsKKwkJ cmV0dXJuIC1FSU5WQUw7CisJfQorCisJZXAgPSBvZl9ncmFwaF9nZXRfbmV4dF9lbmRwb2ludChk ZXYtPm9mX25vZGUsIE5VTEwpOworCWlmIChlcCkgeworCQlicmlkZ2Vfbm9kZSA9IG9mX2dyYXBo X2dldF9yZW1vdGVfcG9ydF9wYXJlbnQoZXApOworCQlvZl9ub2RlX3B1dChlcCk7CisJfQorCWlm ICghYnJpZGdlX25vZGUpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZmluZCBicmlkZ2Ug bm9kZTogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJZGV2X2luZm8oZGV2LCAi Rm91bmQgYnJpZGdlIG5vZGU6ICVzXG4iLCBicmlkZ2Vfbm9kZS0+ZnVsbF9uYW1lKTsKKworCWRw aS0+ZW5jb2Rlci5icmlkZ2UgPSBvZl9kcm1fZmluZF9icmlkZ2UoYnJpZGdlX25vZGUpOworCW9m X25vZGVfcHV0KGJyaWRnZV9ub2RlKTsKKwlpZiAoIWRwaS0+ZW5jb2Rlci5icmlkZ2UpCisJCXJl dHVybiAtRVBST0JFX0RFRkVSOworCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZHBpKTsK KworCWNsa19wcmVwYXJlX2VuYWJsZShkcGktPmVuZ2luZV9jbGspOworCisJcmV0ID0gY29tcG9u ZW50X2FkZChkZXYsICZtdGtfZHBpX2NvbXBvbmVudF9vcHMpOworCWlmIChyZXQpIHsKKwkJZGV2 X2VycihkZXYsICJGYWlsZWQgdG8gYWRkIGNvbXBvbmVudDogJWRcbiIsIHJldCk7CisJCXJldHVy biByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbXRrX2RwaV9yZW1vdmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgbXRrX2RwaSAqZHBpID0g cGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoZHBp LT5lbmdpbmVfY2xrKTsKKworCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJm10a19kcGlfY29t cG9uZW50X29wcyk7CisKKwlyZXR1cm4gMDsKK30KKworI2lmZGVmIENPTkZJR19QTV9TTEVFUAor c3RhdGljIGludCBtdGtfZHBpX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVj dCBtdGtfZHBpICpkcGkgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlpbnQgcmV0OworCisJaWYg KElTX0VSUihkcGkpKSB7CisJCWRldl9pbmZvKGRldiwgImRwaSBzdXNwZW5kIGZhaWxlZCFcbiIp OworCQlyZXR1cm4gUFRSX0VSUihkcGkpOworCX0KKworCXJldCA9IG10a19kcGlfcG93ZXJfb2Zm KGRwaSk7CisJaWYgKHJldCkgeworCQlkZXZfaW5mbyhkZXYsICJkcGkgc3VzcGVuZCBmYWlsZWQh XG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkZXZfaW5mbyhkZXYsICJkcGkgc3VzcGVuZCBz dWNjZXNzIVxuIik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtdGtfZHBpX3Jlc3Vt ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IG10a19kcGkgKmRwaSA9IGRldl9nZXRf ZHJ2ZGF0YShkZXYpOworCWludCByZXQ7CisKKwlpZiAoSVNfRVJSKGRwaSkpIHsKKwkJZGV2X2Vy cihkZXYsICJkcGkgcmVzdW1lIGZhaWxlZCFcbiIpOworCQlyZXR1cm4gUFRSX0VSUihkcGkpOwor CX0KKworCXJldCA9IG10a19kcGlfcG93ZXJfb24oZHBpKTsKKwlpZiAocmV0KSB7CisJCWRldl9l cnIoZGV2LCAiZHBpIHJlc3VtZSBmYWlsZWQhXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlk ZXZfaW5mbyhkZXYsICJkcGkgcmVzdW1lIHN1Y2Nlc3MhXG4iKTsKKworCXJldHVybiAwOworfQor I2VuZGlmCisKK3N0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhtdGtfZHBpX3BtX29wcywgbXRrX2Rw aV9zdXNwZW5kLCBtdGtfZHBpX3Jlc3VtZSk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2 aWNlX2lkIG10a19kcGlfb2ZfaWRzW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxt dDgxNzMtZHBpIiwgfSwKKwl7fQorfTsKKworc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZHBp X2RyaXZlciA9IHsKKwkucHJvYmUgPSBtdGtfZHBpX3Byb2JlLAorCS5yZW1vdmUgPSBtdGtfZHBp X3JlbW92ZSwKKwkuZHJpdmVyID0geworCQkubmFtZSA9ICJtZWRpYXRlay1kcGkiLAorCQkub2Zf bWF0Y2hfdGFibGUgPSBtdGtfZHBpX29mX2lkcywKKwkJLnBtID0gJm10a19kcGlfcG1fb3BzLAor CX0sCit9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuaCBi L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYjgzYWY0NAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHBpLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAo YykgMjAxNCBNZWRpYVRlayBJbmMuCisgKiBBdXRob3I6IEppZSBRaXUgPGppZS5xaXVAbWVkaWF0 ZWsuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KyAqLworI2lmbmRlZiBfTVRLX0RQSV9ICisjZGVmaW5lIF9NVEtfRFBJX0gKKworI2luY2x1ZGUg PGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CisKK3N0cnVjdCBkZXZp Y2U7CitzdHJ1Y3QgY2xrOworCitlbnVtIG10a19kcGlfb3V0X2JpdF9udW0geworCU1US19EUElf T1VUX0JJVF9OVU1fOEJJVFMsCisJTVRLX0RQSV9PVVRfQklUX05VTV8xMEJJVFMsCisJTVRLX0RQ SV9PVVRfQklUX05VTV8xMkJJVFMsCisJTVRLX0RQSV9PVVRfQklUX05VTV8xNkJJVFMKK307CisK K2VudW0gbXRrX2RwaV9vdXRfeWNfbWFwIHsKKwlNVEtfRFBJX09VVF9ZQ19NQVBfUkdCLAorCU1U S19EUElfT1VUX1lDX01BUF9DWUNZLAorCU1US19EUElfT1VUX1lDX01BUF9ZQ1lDLAorCU1US19E UElfT1VUX1lDX01BUF9DWSwKKwlNVEtfRFBJX09VVF9ZQ19NQVBfWUMKK307CisKK2VudW0gbXRr X2RwaV9vdXRfY2hhbm5lbF9zd2FwIHsKKwlNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfUkdCLAor CU1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9HQlIsCisJTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQ X0JSRywKKwlNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfUkJHLAorCU1US19EUElfT1VUX0NIQU5O RUxfU1dBUF9HUkIsCisJTVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX0JHUgorfTsKKworZW51bSBt dGtfZHBpX291dF9jb2xvcl9mb3JtYXQgeworCU1US19EUElfQ09MT1JfRk9STUFUX1JHQiwKKwlN VEtfRFBJX0NPTE9SX0ZPUk1BVF9SR0JfRlVMTCwKKwlNVEtfRFBJX0NPTE9SX0ZPUk1BVF9ZQ0JD Ul80NDQsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1JfNDIyLAorCU1US19EUElfQ09MT1Jf Rk9STUFUX1hWX1lDQywKKwlNVEtfRFBJX0NPTE9SX0ZPUk1BVF9ZQ0JDUl80NDRfRlVMTCwKKwlN VEtfRFBJX0NPTE9SX0ZPUk1BVF9ZQ0JDUl80MjJfRlVMTAorfTsKKworc3RydWN0IG10a19kcGkg eworCXN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOworCXZvaWQgX19pb21lbSAqcmVnczsKKwlz dHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IGNsayAqZW5naW5lX2NsazsKKwlzdHJ1Y3QgY2xr ICpwaXhlbF9jbGs7CisJc3RydWN0IGNsayAqdHZkX2NsazsKKwlpbnQgaXJxOworCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlIG1vZGU7CisJZW51bSBtdGtfZHBpX291dF9jb2xvcl9mb3JtYXQgY29s b3JfZm9ybWF0OworCWVudW0gbXRrX2RwaV9vdXRfeWNfbWFwIHljX21hcDsKKwllbnVtIG10a19k cGlfb3V0X2JpdF9udW0gYml0X251bTsKKwllbnVtIG10a19kcGlfb3V0X2NoYW5uZWxfc3dhcCBj aGFubmVsX3N3YXA7Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBtdGtfZHBpICptdGtfZHBp X2Zyb21fZW5jb2RlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmUpCit7CisJcmV0dXJuIGNvbnRhaW5l cl9vZihlLCBzdHJ1Y3QgbXRrX2RwaSwgZW5jb2Rlcik7Cit9CisKK2ludCBtdGtfZHBpX3NldF9k aXNwbGF5X21vZGUoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCSAgICAgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUpOworCisjZW5kaWYgLyogX01US19EUElfSCAqLwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGlfcmVncy5oIGIvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcGlfcmVncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjRiNmFkNDcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RwaV9yZWdzLmgKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw MTQgTWVkaWFUZWsgSW5jLgorICogQXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlhdGVrLmNv bT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8K KyNpZm5kZWYgX19NVEtfRFBJX1JFR1NfSAorI2RlZmluZSBfX01US19EUElfUkVHU19ICisKKyNk ZWZpbmUgRFBJX0VOCQkJMHgwMAorI2RlZmluZSBFTgkJCQlCSVQoMCkKKworI2RlZmluZSBEUElf UkVUCQkJMHgwNAorI2RlZmluZSBSU1QJCQkJQklUKDApCisKKyNkZWZpbmUgRFBJX0lOVEVOCQkw eDA4CisjZGVmaW5lIElOVF9WU1lOQ19FTgkJCUJJVCgwKQorI2RlZmluZSBJTlRfVkRFX0VOCQkJ QklUKDEpCisjZGVmaW5lIElOVF9VTkRFUkZMT1dfRU4JCUJJVCgyKQorCisjZGVmaW5lIERQSV9J TlRTVEEJCTB4MEMKKyNkZWZpbmUgSU5UX1ZTWU5DX1NUQQkJCUJJVCgwKQorI2RlZmluZSBJTlRf VkRFX1NUQQkJCUJJVCgxKQorI2RlZmluZSBJTlRfVU5ERVJGTE9XX1NUQQkJQklUKDIpCisKKyNk ZWZpbmUgRFBJX0NPTgkJCTB4MTAKKyNkZWZpbmUgQkdfRU5BQkxFCQkJQklUKDApCisjZGVmaW5l IElOX1JCX1NXQVAJCQlCSVQoMSkKKyNkZWZpbmUgSU5UTF9FTgkJCQlCSVQoMikKKyNkZWZpbmUg VERGUF9FTgkJCQlCSVQoMykKKyNkZWZpbmUgQ0xQRl9FTgkJCQlCSVQoNCkKKyNkZWZpbmUgWVVW NDIyX0VOCQkJQklUKDUpCisjZGVmaW5lIENTQ19FTkFCTEUJCQlCSVQoNikKKyNkZWZpbmUgUjYw MV9TRUwJCQlCSVQoNykKKyNkZWZpbmUgRU1CU1lOQ19FTgkJCUJJVCg4KQorI2RlZmluZSBWU19M T0REX0VOCQkJQklUKDE2KQorI2RlZmluZSBWU19MRVZFTl9FTgkJCUJJVCgxNykKKyNkZWZpbmUg VlNfUk9ERF9FTgkJCUJJVCgxOCkKKyNkZWZpbmUgVlNfUkVWRU4JCQlCSVQoMTkpCisjZGVmaW5l IEZBS0VfREVfTE9ERAkJCUJJVCgyMCkKKyNkZWZpbmUgRkFLRV9ERV9MRVZFTgkJCUJJVCgyMSkK KyNkZWZpbmUgRkFLRV9ERV9ST0RECQkJQklUKDIyKQorI2RlZmluZSBGQUtFX0RFX1JFVkVOCQkJ QklUKDIzKQorCisjZGVmaW5lIERQSV9PVVRQVVRfU0VUVElORwkweDE0CisjZGVmaW5lIENIX1NX QVAJCQkJMAorI2RlZmluZSBDSF9TV0FQX01BU0sJCQkoMHg3IDw8IDApCisjZGVmaW5lIFNXQVBf UkdCCQkJMHgwMAorI2RlZmluZSBTV0FQX0dCUgkJCTB4MDEKKyNkZWZpbmUgU1dBUF9CUkcJCQkw eDAyCisjZGVmaW5lIFNXQVBfUkJHCQkJMHgwMworI2RlZmluZSBTV0FQX0dSQgkJCTB4MDQKKyNk ZWZpbmUgU1dBUF9CR1IJCQkweDA1CisjZGVmaW5lIEJJVF9TV0FQCQkJQklUKDMpCisjZGVmaW5l IEJfTUFTSwkJCQlCSVQoNCkKKyNkZWZpbmUgR19NQVNLCQkJCUJJVCg1KQorI2RlZmluZSBSX01B U0sJCQkJQklUKDYpCisjZGVmaW5lIERFX01BU0sJCQkJQklUKDgpCisjZGVmaW5lIEhTX01BU0sJ CQkJQklUKDkpCisjZGVmaW5lIFZTX01BU0sJCQkJQklUKDEwKQorI2RlZmluZSBERV9QT0wJCQkJ QklUKDEyKQorI2RlZmluZSBIU1lOQ19QT0wJCQlCSVQoMTMpCisjZGVmaW5lIFZTWU5DX1BPTAkJ CUJJVCgxNCkKKyNkZWZpbmUgQ0tfUE9MCQkJCUJJVCgxNSkKKyNkZWZpbmUgT0VOX09GRgkJCQlC SVQoMTYpCisjZGVmaW5lIEVER0VfU0VMCQkJQklUKDE3KQorI2RlZmluZSBPVVRfQklUCQkJCTE4 CisjZGVmaW5lIE9VVF9CSVRfTUFTSwkJCSgweDMgPDwgMTgpCisjZGVmaW5lIE9VVF9CSVRfOAkJ CTB4MDAKKyNkZWZpbmUgT1VUX0JJVF8xMAkJCTB4MDEKKyNkZWZpbmUgT1VUX0JJVF8xMgkJCTB4 MDIKKyNkZWZpbmUgT1VUX0JJVF8xNgkJCTB4MDMKKyNkZWZpbmUgWUNfTUFQCQkJCTIwCisjZGVm aW5lIFlDX01BUF9NQVNLCQkJKDB4NyA8PCAyMCkKKyNkZWZpbmUgWUNfTUFQX1JHQgkJCTB4MDAK KyNkZWZpbmUgWUNfTUFQX0NZQ1kJCQkweDA0CisjZGVmaW5lIFlDX01BUF9ZQ1lDCQkJMHgwNQor I2RlZmluZSBZQ19NQVBfQ1kJCQkweDA2CisjZGVmaW5lIFlDX01BUF9ZQwkJCTB4MDcKKworI2Rl ZmluZSBEUElfU0laRQkJMHgxOAorI2RlZmluZSBIU0laRQkJCQkwCisjZGVmaW5lIEhTSVpFX01B U0sJCQkoMHgxRkZGIDw8IDApCisjZGVmaW5lIFZTSVpFCQkJCTE2CisjZGVmaW5lIFZTSVpFX01B U0sJCQkoMHgxRkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9ERFJfU0VUVElORwkJMHgxQworI2Rl ZmluZSBERFJfRU4JCQkJQklUKDApCisjZGVmaW5lIERERFJfU0VMCQkJQklUKDEpCisjZGVmaW5l IEREUl80UEhBU0UJCQlCSVQoMikKKyNkZWZpbmUgRERSX1dJRFRICQkJKDB4MyA8PCA0KQorI2Rl ZmluZSBERFJfUEFEX01PREUJCQkoMHgxIDw8IDgpCisKKyNkZWZpbmUgRFBJX1RHRU5fSFdJRFRI CQkweDIwCisjZGVmaW5lIEhQVwkJCQkwCisjZGVmaW5lIEhQV19NQVNLCQkJKDB4RkZGIDw8IDAp CisKKyNkZWZpbmUgRFBJX1RHRU5fSFBPUkNICQkweDI0CisjZGVmaW5lIEhCUAkJCQkwCisjZGVm aW5lIEhCUF9NQVNLCQkJKDB4RkZGIDw8IDApCisjZGVmaW5lIEhGUAkJCQkxNgorI2RlZmluZSBI RlBfTUFTSwkJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfVEdFTl9WV0lEVEgJCTB4MjgK KyNkZWZpbmUgRFBJX1RHRU5fVlBPUkNICQkweDJDCisKKyNkZWZpbmUgVlNZTkNfV0lEVEhfU0hJ RlQJCTAKKyNkZWZpbmUgVlNZTkNfV0lEVEhfTUFTSwkJKDB4RkZGIDw8IDApCisjZGVmaW5lIFZT WU5DX0hBTEZfTElORV9TSElGVAkJMTYKKyNkZWZpbmUgVlNZTkNfSEFMRl9MSU5FX01BU0sJCUJJ VCgxNikKKyNkZWZpbmUgVlNZTkNfQkFDS19QT1JDSF9TSElGVAkJMAorI2RlZmluZSBWU1lOQ19C QUNLX1BPUkNIX01BU0sJCSgweEZGRiA8PCAwKQorI2RlZmluZSBWU1lOQ19GUk9OVF9QT1JDSF9T SElGVAkJMTYKKyNkZWZpbmUgVlNZTkNfRlJPTlRfUE9SQ0hfTUFTSwkJKDB4RkZGIDw8IDE2KQor CisjZGVmaW5lIERQSV9CR19IQ05UTAkJMHgzMAorI2RlZmluZSBCR19SSUdIVAkJCSgweDFGRkYg PDwgMCkKKyNkZWZpbmUgQkdfTEVGVAkJCQkoMHgxRkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9C R19WQ05UTAkJMHgzNAorI2RlZmluZSBCR19CT1QJCQkJKDB4MUZGRiA8PCAwKQorI2RlZmluZSBC R19UT1AJCQkJKDB4MUZGRiA8PCAxNikKKworI2RlZmluZSBEUElfQkdfQ09MT1IJCTB4MzgKKyNk ZWZpbmUgQkdfQgkJCQkoMHhGIDw8IDApCisjZGVmaW5lIEJHX0cJCQkJKDB4RiA8PCA4KQorI2Rl ZmluZSBCR19SCQkJCSgweEYgPDwgMTYpCisKKyNkZWZpbmUgRFBJX0ZJRk9fQ1RMCQkweDNDCisj ZGVmaW5lIEZJRk9fVkFMSURfU0VUCQkJKDB4MUYgPDwgMCkKKyNkZWZpbmUgRklGT19SU1RfU0VM CQkJKDB4MSA8PCA4KQorCisjZGVmaW5lIERQSV9TVEFUVVMJCTB4NDAKKyNkZWZpbmUgVkNPVU5U RVIJCQkoMHgxRkZGIDw8IDApCisjZGVmaW5lIERQSV9CVVNZCQkJQklUKDE2KQorI2RlZmluZSBP VVRFTgkJCQlCSVQoMTcpCisjZGVmaW5lIEZJRUxECQkJCUJJVCgyMCkKKyNkZWZpbmUgVERMUgkJ CQlCSVQoMjEpCisKKyNkZWZpbmUgRFBJX1RNT0RFCQkweDQ0CisjZGVmaW5lIERQSV9PRU5fT04J CQlCSVQoMCkKKworI2RlZmluZSBEUElfQ0hFQ0tTVU0JCTB4NDgKKyNkZWZpbmUgRFBJX0NIRUNL U1VNX01BU0sJCSgweEZGRkZGRiA8PCAwKQorI2RlZmluZSBEUElfQ0hFQ0tTVU1fUkVBRFkJCUJJ VCgzMCkKKyNkZWZpbmUgRFBJX0NIRUNLU1VNX0VOCQkJQklUKDMxKQorCisjZGVmaW5lIERQSV9E VU1NWQkJMHg1MAorI2RlZmluZSBEUElfRFVNTVlfTUFTSwkJCSgweEZGRkZGRkZGIDw8IDApCisK KyNkZWZpbmUgRFBJX1RHRU5fVldJRFRIX0xFVkVOCTB4NjgKKyNkZWZpbmUgRFBJX1RHRU5fVlBP UkNIX0xFVkVOCTB4NkMKKyNkZWZpbmUgRFBJX1RHRU5fVldJRFRIX1JPREQJMHg3MAorI2RlZmlu ZSBEUElfVEdFTl9WUE9SQ0hfUk9ERAkweDc0CisjZGVmaW5lIERQSV9UR0VOX1ZXSURUSF9SRVZF TgkweDc4CisjZGVmaW5lIERQSV9UR0VOX1ZQT1JDSF9SRVZFTgkweDdDCisKKyNkZWZpbmUgRFBJ X0VTQVZfVlRJTUlOR19MT0RECTB4ODAKKyNkZWZpbmUgRVNBVl9WT0ZTVF9MT0RECQkJKDB4RkZG IDw8IDApCisjZGVmaW5lIEVTQVZfVldJRF9MT0RECQkJKDB4RkZGIDw8IDE2KQorCisjZGVmaW5l IERQSV9FU0FWX1ZUSU1JTkdfTEVWRU4JMHg4NAorI2RlZmluZSBFU0FWX1ZPRlNUX0xFVkVOCQko MHhGRkYgPDwgMCkKKyNkZWZpbmUgRVNBVl9WV0lEX0xFVkVOCQkJKDB4RkZGIDw8IDE2KQorCisj ZGVmaW5lIERQSV9FU0FWX1ZUSU1JTkdfUk9ERAkweDg4CisjZGVmaW5lIEVTQVZfVk9GU1RfUk9E RAkJCSgweEZGRiA8PCAwKQorI2RlZmluZSBFU0FWX1ZXSURfUk9ERAkJCSgweEZGRiA8PCAxNikK KworI2RlZmluZSBEUElfRVNBVl9WVElNSU5HX1JFVkVOCTB4OEMKKyNkZWZpbmUgRVNBVl9WT0ZT VF9SRVZFTgkJKDB4RkZGIDw8IDApCisjZGVmaW5lIEVTQVZfVldJRF9SRVZFTgkJCSgweEZGRiA8 PCAxNikKKworI2RlZmluZSBEUElfRVNBVl9GVElNSU5HCTB4OTAKKyNkZWZpbmUgRVNBVl9GT0ZT VF9PREQJCQkoMHhGRkYgPDwgMCkKKyNkZWZpbmUgRVNBVl9GT0ZTVF9FVkVOCQkJKDB4RkZGIDw8 IDE2KQorCisjZGVmaW5lIERQSV9DTFBGX1NFVFRJTkcJMHg5NAorI2RlZmluZSBDTFBGX1RZUEUJ CQkoMHgzIDw8IDApCisjZGVmaW5lIFJPVU5EX0VOCQkJQklUKDQpCisKKyNkZWZpbmUgRFBJX1lf TElNSVQJCTB4OTgKKyNkZWZpbmUgWV9MSU1JTlRfQk9UCQkJMAorI2RlZmluZSBZX0xJTUlOVF9C T1RfTUFTSwkJKDB4RkZGIDw8IDApCisjZGVmaW5lIFlfTElNSU5UX1RPUAkJCTE2CisjZGVmaW5l IFlfTElNSU5UX1RPUF9NQVNLCQkoMHhGRkYgPDwgMTYpCisKKyNkZWZpbmUgRFBJX0NfTElNSVQJ CTB4OUMKKyNkZWZpbmUgQ19MSU1JVF9CT1QJCQkwCisjZGVmaW5lIENfTElNSVRfQk9UX01BU0sJ CSgweEZGRiA8PCAwKQorI2RlZmluZSBDX0xJTUlUX1RPUAkJCTE2CisjZGVmaW5lIENfTElNSVRf VE9QX01BU0sJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfWVVWNDIyX1NFVFRJTkcJMHhB MAorI2RlZmluZSBVVl9TV0FQCQkJCUJJVCgwKQorI2RlZmluZSBDUl9ERUxTRUwJCQlCSVQoNCkK KyNkZWZpbmUgQ0JfREVMU0VMCQkJQklUKDUpCisjZGVmaW5lIFlfREVMU0VMCQkJQklUKDYpCisj ZGVmaW5lIERFX0RFTFNFTAkJCUJJVCg3KQorCisjZGVmaW5lIERQSV9FTUJTWU5DX1NFVFRJTkcJ MHhBNAorI2RlZmluZSBFTUJTWU5DX1JfQ1JfRU4JCQlCSVQoMCkKKyNkZWZpbmUgRU1QU1lOQ19H X1lfRU4JCQlCSVQoMSkKKyNkZWZpbmUgRU1QU1lOQ19CX0NCX0VOCQkJQklUKDIpCisjZGVmaW5l IEVTQVZfRl9JTlYJCQlCSVQoNCkKKyNkZWZpbmUgRVNBVl9WX0lOVgkJCUJJVCg1KQorI2RlZmlu ZSBFU0FWX0hfSU5WCQkJQklUKDYpCisjZGVmaW5lIEVTQVZfQ09ERV9NQU4JCQlCSVQoOCkKKyNk ZWZpbmUgVlNfT1VUX1NFTAkJCSgweDcgPDwgMTIpCisKKyNkZWZpbmUgRFBJX0VTQVZfQ09ERV9T RVQwCTB4QTgKKyNkZWZpbmUgRVNBVl9DT0RFMAkJCSgweEZGRiA8PCAwKQorI2RlZmluZSBFU0FW X0NPREUxCQkJKDB4RkZGIDw8IDE2KQorCisjZGVmaW5lIERQSV9FU0FWX0NPREVfU0VUMQkweEFD CisjZGVmaW5lIEVTQVZfQ09ERTIJCQkoMHhGRkYgPDwgMCkKKyNkZWZpbmUgRVNBVl9DT0RFM19N U0IJCQlCSVQoMTYpCisKKyNkZWZpbmUgRFBJX0hfRlJFX0NPTgkJMHhFMAorI2RlZmluZSBIX0ZS RV8yTgkJCUJJVCgyNSkKKyNlbmRpZiAvKiBfX01US19EUElfUkVHU19IICovCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCmluZGV4IDU1ZjU5OWMuLjVjYjYxOWEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCkBAIC01MTgsNiArNTE4LDcgQEAgc3RhdGlj IHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKiBjb25zdCBtdGtfZHJtX2RyaXZlcnNbXSA9IHsKIAkm bXRrX2Rpc3Bfb3ZsX2RyaXZlciwKIAkmbXRrX2RzaV9kcml2ZXIsCiAJJm10a19taXBpX3R4X2Ry aXZlciwKKwkmbXRrX2RwaV9kcml2ZXIsCiB9OwogCiBzdGF0aWMgaW50IF9faW5pdCBtdGtfZHJt X2luaXQodm9pZCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJt X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmgKaW5kZXggMDJj YzMzMC4uMmM1ZDIxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cm1fZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmgKQEAg LTUzLDUgKzUzLDYgQEAgc3RydWN0IG10a19kcm1fcHJpdmF0ZSB7CiBleHRlcm4gc3RydWN0IHBs YXRmb3JtX2RyaXZlciBtdGtfZGlzcF9vdmxfZHJpdmVyOwogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9y bV9kcml2ZXIgbXRrX2RzaV9kcml2ZXI7CiBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBt dGtfbWlwaV90eF9kcml2ZXI7CitleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfZHBp X2RyaXZlcjsKIAogI2VuZGlmIC8qIE1US19EUk1fRFJWX0ggKi8KLS0gCjIuNi4yCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=