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=