From mboxrd@z Thu Jan 1 00:00:00 1970
From: Philipp Zabel
Subject: [PATCH v7 04/14] drm/mediatek: Add DPI sub driver
Date: Mon, 30 Nov 2015 22:07:46 +0100
Message-ID: <1448917676-25584-5-git-send-email-p.zabel@pengutronix.de>
References: <1448917676-25584-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: <1448917676-25584-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 , Tomasz Figa , 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
cyBzaW5jZSB2NjoKIC0gQWRkZWQgbXRrX2RwaV9wb3dlcl9vbi9vZmYgcmVmY291bnRpbmcgYW5k
IG10a19kZHBfY29tcG9uZW50IHN0YXJ0L3N0b3AKICAgY2FsbGJhY2tzIHRvIGtlZXAgcGl4ZWwg
Y2xvY2sgZW5hYmxlZCB1bnRpbCBjcnRjX2Rpc2FibGUKLS0tCiBkcml2ZXJzL2dwdS9kcm0vbWVk
aWF0ZWsvTWFrZWZpbGUgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t
dGtfZHBpLmMgICAgICB8IDc0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJp
dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGkuaCAgICAgIHwgIDg0ICsrKysKIGRyaXZlcnMv
Z3B1L2RybS9tZWRpYXRlay9tdGtfZHBpX3JlZ3MuaCB8IDIyOCArKysrKysrKysrCiBkcml2ZXJz
L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYyAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJt
L21lZGlhdGVrL210a19kcm1fZHJ2LmggIHwgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMTA2MCBp
bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n
cHUvZHJtL21lZGlhdGVrL210a19kcGkuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1
L2RybS9tZWRpYXRlay9tdGtfZHBpLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k
cm0vbWVkaWF0ZWsvbXRrX2RwaV9yZWdzLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v
bWVkaWF0ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKaW5k
ZXggNTczZjIwOS4uY2VlOWIyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr
L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQpAQCAtNyw3
ICs3LDggQEAgbWVkaWF0ZWstZHJtLXkgOj0gbXRrX2Rpc3Bfb3ZsLm8gXAogCQkgIG10a19kcm1f
Z2VtLm8gXAogCQkgIG10a19kcm1fcGxhbmUubyBcCiAJCSAgbXRrX2RzaS5vIFwKLQkJICBtdGtf
bWlwaV90eC5vCisJCSAgbXRrX21pcGlfdHgubyBcCisJCSAgbXRrX2RwaS5vCiAKIG9iai0kKENP
TkZJR19EUk1fTUVESUFURUspICs9IG1lZGlhdGVrLWRybS5vCiAKZGlmZiAtLWdpdCBhL2RyaXZl
cnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv
bXRrX2RwaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMmNkOWYKLS0t
IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaS5jCkBAIC0w
LDAgKzEsNzQ0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE0IE1lZGlhVGVrIEluYy4KKyAq
IEF1dGhvcjogSmllIFFpdSA8amllLnFpdUBtZWRpYXRlay5jb20+CisgKgorICogVGhpcyBwcm9n
cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp
ZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisjaW5jbHVkZSA8ZHJtL2RybVAu
aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVs
cGVyLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvY29tcG9u
ZW50Lmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGlu
dXgvb2YuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgorI2luY2x1ZGUgPGxpbnV4L2lu
dGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorCisjaW5jbHVkZSAibXRrX2RwaS5o
IgorI2luY2x1ZGUgIm10a19kcGlfcmVncy5oIgorCitlbnVtIG10a19kcGlfcG9sYXJpdHkgewor
CU1US19EUElfUE9MQVJJVFlfUklTSU5HLAorCU1US19EUElfUE9MQVJJVFlfRkFMTElORywKK307
CisKK3N0cnVjdCBtdGtfZHBpX3BvbGFyaXRpZXMgeworCWVudW0gbXRrX2RwaV9wb2xhcml0eSBk
ZV9wb2w7CisJZW51bSBtdGtfZHBpX3BvbGFyaXR5IGNrX3BvbDsKKwllbnVtIG10a19kcGlfcG9s
YXJpdHkgaHN5bmNfcG9sOworCWVudW0gbXRrX2RwaV9wb2xhcml0eSB2c3luY19wb2w7Cit9Owor
CitzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtIHsKKwl1MzIgc3luY193aWR0aDsKKwl1MzIgZnJv
bnRfcG9yY2g7CisJdTMyIGJhY2tfcG9yY2g7CisJYm9vbCBzaGlmdF9oYWxmX2xpbmU7Cit9Owor
CitzdHJ1Y3QgbXRrX2RwaV95Y19saW1pdCB7CisJdTE2IHlfdG9wOworCXUxNiB5X2JvdHRvbTsK
Kwl1MTYgY190b3A7CisJdTE2IGNfYm90dG9tOworfTsKKworc3RhdGljIHZvaWQgbXRrX2RwaV9t
YXNrKHN0cnVjdCBtdGtfZHBpICpkcGksIHUzMiBvZmZzZXQsIHUzMiB2YWwsIHUzMiBtYXNrKQor
eworCXUzMiB0bXAgPSByZWFkbChkcGktPnJlZ3MgKyBvZmZzZXQpICYgfm1hc2s7CisKKwl0bXAg
fD0gKHZhbCAmIG1hc2spOworCXdyaXRlbCh0bXAsIGRwaS0+cmVncyArIG9mZnNldCk7Cit9CisK
K3N0YXRpYyB2b2lkIG10a19kcGlfc3dfcmVzZXQoc3RydWN0IG10a19kcGkgKmRwaSwgYm9vbCBy
ZXNldCkKK3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfUkVULCByZXNldCA/IFJTVCA6IDAsIFJT
VCk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfZW5hYmxlKHN0cnVjdCBtdGtfZHBpICpkcGkp
Cit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0VOLCBFTiwgRU4pOworfQorCitzdGF0aWMgdm9p
ZCBtdGtfZHBpX2Rpc2FibGUoc3RydWN0IG10a19kcGkgKmRwaSkKK3sKKwltdGtfZHBpX21hc2so
ZHBpLCBEUElfRU4sIDAsIEVOKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfaHN5
bmMoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkgc3RydWN0IG10a19kcGlfc3luY19wYXJhbSAq
c3luYykKK3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfVEdFTl9IV0lEVEgsCisJCQkgIHN5bmMt
PnN5bmNfd2lkdGggPDwgSFBXLCBIUFdfTUFTSyk7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX1RH
RU5fSFBPUkNILAorCQkJICBzeW5jLT5iYWNrX3BvcmNoIDw8IEhCUCwgSEJQX01BU0spOworCW10
a19kcGlfbWFzayhkcGksIERQSV9UR0VOX0hQT1JDSCwgc3luYy0+ZnJvbnRfcG9yY2ggPDwgSEZQ
LAorCQkJICBIRlBfTUFTSyk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3ZzeW5j
KHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJIHN0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0gKnN5
bmMsCisJCQkJIHUzMiB3aWR0aF9hZGRyLCB1MzIgcG9yY2hfYWRkcikKK3sKKwltdGtfZHBpX21h
c2soZHBpLCB3aWR0aF9hZGRyLAorCQkgICAgIHN5bmMtPnN5bmNfd2lkdGggPDwgVlNZTkNfV0lE
VEhfU0hJRlQsCisJCSAgICAgVlNZTkNfV0lEVEhfTUFTSyk7CisJbXRrX2RwaV9tYXNrKGRwaSwg
d2lkdGhfYWRkciwKKwkJICAgICBzeW5jLT5zaGlmdF9oYWxmX2xpbmUgPDwgVlNZTkNfSEFMRl9M
SU5FX1NISUZULAorCQkgICAgIFZTWU5DX0hBTEZfTElORV9NQVNLKTsKKwltdGtfZHBpX21hc2so
ZHBpLCBwb3JjaF9hZGRyLAorCQkgICAgIHN5bmMtPmJhY2tfcG9yY2ggPDwgVlNZTkNfQkFDS19Q
T1JDSF9TSElGVCwKKwkJICAgICBWU1lOQ19CQUNLX1BPUkNIX01BU0spOworCW10a19kcGlfbWFz
ayhkcGksIHBvcmNoX2FkZHIsCisJCSAgICAgc3luYy0+ZnJvbnRfcG9yY2ggPDwgVlNZTkNfRlJP
TlRfUE9SQ0hfU0hJRlQsCisJCSAgICAgVlNZTkNfRlJPTlRfUE9SQ0hfTUFTSyk7Cit9CisKK3N0
YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3ZzeW5jX2xvZGQoc3RydWN0IG10a19kcGkgKmRwaSwK
KwkJCQkgICAgICBzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtICpzeW5jKQoreworCW10a19kcGlf
Y29uZmlnX3ZzeW5jKGRwaSwgc3luYywgRFBJX1RHRU5fVldJRFRILCBEUElfVEdFTl9WUE9SQ0gp
OworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ192c3luY19sZXZlbihzdHJ1Y3QgbXRr
X2RwaSAqZHBpLAorCQkJCSAgICAgICBzdHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtICpzeW5jKQor
eworCW10a19kcGlfY29uZmlnX3ZzeW5jKGRwaSwgc3luYywgRFBJX1RHRU5fVldJRFRIX0xFVkVO
LAorCQkJICAgICBEUElfVEdFTl9WUE9SQ0hfTEVWRU4pOworfQorCitzdGF0aWMgdm9pZCBtdGtf
ZHBpX2NvbmZpZ192c3luY19yb2RkKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJICAgICAgc3Ry
dWN0IG10a19kcGlfc3luY19wYXJhbSAqc3luYykKK3sKKwltdGtfZHBpX2NvbmZpZ192c3luYyhk
cGksIHN5bmMsIERQSV9UR0VOX1ZXSURUSF9ST0RELAorCQkJICAgICBEUElfVEdFTl9WUE9SQ0hf
Uk9ERCk7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3ZzeW5jX3JldmVuKHN0cnVj
dCBtdGtfZHBpICpkcGksCisJCQkJICAgICAgIHN0cnVjdCBtdGtfZHBpX3N5bmNfcGFyYW0gKnN5
bmMpCit7CisJbXRrX2RwaV9jb25maWdfdnN5bmMoZHBpLCBzeW5jLCBEUElfVEdFTl9WV0lEVEhf
UkVWRU4sCisJCQkgICAgIERQSV9UR0VOX1ZQT1JDSF9SRVZFTik7Cit9CisKK3N0YXRpYyB2b2lk
IG10a19kcGlfY29uZmlnX3BvbChzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJICAgICAgIHN0cnVj
dCBtdGtfZHBpX3BvbGFyaXRpZXMgKmRwaV9wb2wpCit7CisJdW5zaWduZWQgaW50IHBvbDsKKwor
CXBvbCA9IChkcGlfcG9sLT5ja19wb2wgPT0gTVRLX0RQSV9QT0xBUklUWV9SSVNJTkcgPyAwIDog
Q0tfUE9MKSB8CisJICAgICAgKGRwaV9wb2wtPmRlX3BvbCA9PSBNVEtfRFBJX1BPTEFSSVRZX1JJ
U0lORyA/IDAgOiBERV9QT0wpIHwKKwkgICAgICAoZHBpX3BvbC0+aHN5bmNfcG9sID09IE1US19E
UElfUE9MQVJJVFlfUklTSU5HID8gMCA6IEhTWU5DX1BPTCkgfAorCSAgICAgIChkcGlfcG9sLT52
c3luY19wb2wgPT0gTVRLX0RQSV9QT0xBUklUWV9SSVNJTkcgPyAwIDogVlNZTkNfUE9MKTsKKwlt
dGtfZHBpX21hc2soZHBpLCBEUElfT1VUUFVUX1NFVFRJTkcsIHBvbCwKKwkJICAgICBDS19QT0wg
fCBERV9QT0wgfCBIU1lOQ19QT0wgfCBWU1lOQ19QT0wpOworfQorCitzdGF0aWMgdm9pZCBtdGtf
ZHBpX2NvbmZpZ18zZChzdHJ1Y3QgbXRrX2RwaSAqZHBpLCBib29sIGVuXzNkKQoreworCW10a19k
cGlfbWFzayhkcGksIERQSV9DT04sIGVuXzNkID8gVERGUF9FTiA6IDAsIFRERlBfRU4pOworfQor
CitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19pbnRlcmZhY2Uoc3RydWN0IG10a19kcGkgKmRw
aSwgYm9vbCBpbnRlcikKK3sKKwltdGtfZHBpX21hc2soZHBpLCBEUElfQ09OLCBpbnRlciA/IElO
VExfRU4gOiAwLCBJTlRMX0VOKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfZmJf
c2l6ZShzdHJ1Y3QgbXRrX2RwaSAqZHBpLCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQpCit7CisJbXRr
X2RwaV9tYXNrKGRwaSwgRFBJX1NJWkUsIHdpZHRoIDw8IEhTSVpFLCBIU0laRV9NQVNLKTsKKwlt
dGtfZHBpX21hc2soZHBpLCBEUElfU0laRSwgaGVpZ2h0IDw8IFZTSVpFLCBWU0laRV9NQVNLKTsK
K30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfY2hhbm5lbF9saW1pdChzdHJ1Y3QgbXRr
X2RwaSAqZHBpLAorCQkJCQkgc3RydWN0IG10a19kcGlfeWNfbGltaXQgKmxpbWl0KQoreworCW10
a19kcGlfbWFzayhkcGksIERQSV9ZX0xJTUlULCBsaW1pdC0+eV9ib3R0b20gPDwgWV9MSU1JTlRf
Qk9ULAorCQkgICAgIFlfTElNSU5UX0JPVF9NQVNLKTsKKwltdGtfZHBpX21hc2soZHBpLCBEUElf
WV9MSU1JVCwgbGltaXQtPnlfdG9wIDw8IFlfTElNSU5UX1RPUCwKKwkJICAgICBZX0xJTUlOVF9U
T1BfTUFTSyk7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0NfTElNSVQsIGxpbWl0LT5jX2JvdHRv
bSA8PCBDX0xJTUlUX0JPVCwKKwkJICAgICBDX0xJTUlUX0JPVF9NQVNLKTsKKwltdGtfZHBpX21h
c2soZHBpLCBEUElfQ19MSU1JVCwgbGltaXQtPmNfdG9wIDw8IENfTElNSVRfVE9QLAorCQkgICAg
IENfTElNSVRfVE9QX01BU0spOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19iaXRf
bnVtKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJICAgZW51bSBtdGtfZHBpX291dF9iaXRfbnVt
IG51bSkKK3sKKwl1MzIgdmFsOworCisJc3dpdGNoIChudW0pIHsKKwljYXNlIE1US19EUElfT1VU
X0JJVF9OVU1fOEJJVFM6CisJCXZhbCA9IE9VVF9CSVRfODsKKwkJYnJlYWs7CisJY2FzZSBNVEtf
RFBJX09VVF9CSVRfTlVNXzEwQklUUzoKKwkJdmFsID0gT1VUX0JJVF8xMDsKKwkJYnJlYWs7CisJ
Y2FzZSBNVEtfRFBJX09VVF9CSVRfTlVNXzEyQklUUzoKKwkJdmFsID0gT1VUX0JJVF8xMjsKKwkJ
YnJlYWs7CisJY2FzZSBNVEtfRFBJX09VVF9CSVRfTlVNXzE2QklUUzoKKwkJdmFsID0gT1VUX0JJ
VF8xNjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJdmFsID0gT1VUX0JJVF84OworCQlicmVhazsK
Kwl9CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX09VVFBVVF9TRVRUSU5HLCB2YWwgPDwgT1VUX0JJ
VCwKKwkJICAgICAgT1VUX0JJVF9NQVNLKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25m
aWdfeWNfbWFwKHN0cnVjdCBtdGtfZHBpICpkcGksCisJCQkJICBlbnVtIG10a19kcGlfb3V0X3lj
X21hcCBtYXApCit7CisJdTMyIHZhbDsKKworCXN3aXRjaCAobWFwKSB7CisJY2FzZSBNVEtfRFBJ
X09VVF9ZQ19NQVBfUkdCOgorCQl2YWwgPSBZQ19NQVBfUkdCOworCQlicmVhazsKKwljYXNlIE1U
S19EUElfT1VUX1lDX01BUF9DWUNZOgorCQl2YWwgPSBZQ19NQVBfQ1lDWTsKKwkJYnJlYWs7CisJ
Y2FzZSBNVEtfRFBJX09VVF9ZQ19NQVBfWUNZQzoKKwkJdmFsID0gWUNfTUFQX1lDWUM7CisJCWJy
ZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfWUNfTUFQX0NZOgorCQl2YWwgPSBZQ19NQVBfQ1k7CisJ
CWJyZWFrOworCWNhc2UgTVRLX0RQSV9PVVRfWUNfTUFQX1lDOgorCQl2YWwgPSBZQ19NQVBfWUM7
CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXZhbCA9IFlDX01BUF9SR0I7CisJCWJyZWFrOworCX0K
KworCW10a19kcGlfbWFzayhkcGksIERQSV9PVVRQVVRfU0VUVElORywgdmFsIDw8IFlDX01BUCwg
WUNfTUFQX01BU0spOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2NvbmZpZ19jaGFubmVsX3N3
YXAoc3RydWN0IG10a19kcGkgKmRwaSwKKwkJCQkJZW51bSBtdGtfZHBpX291dF9jaGFubmVsX3N3
YXAgc3dhcCkKK3sKKwl1MzIgdmFsOworCisJc3dpdGNoIChzd2FwKSB7CisJY2FzZSBNVEtfRFBJ
X09VVF9DSEFOTkVMX1NXQVBfUkdCOgorCQl2YWwgPSBTV0FQX1JHQjsKKwkJYnJlYWs7CisJY2Fz
ZSBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfR0JSOgorCQl2YWwgPSBTV0FQX0dCUjsKKwkJYnJl
YWs7CisJY2FzZSBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfQlJHOgorCQl2YWwgPSBTV0FQX0JS
RzsKKwkJYnJlYWs7CisJY2FzZSBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfUkJHOgorCQl2YWwg
PSBTV0FQX1JCRzsKKwkJYnJlYWs7CisJY2FzZSBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfR1JC
OgorCQl2YWwgPSBTV0FQX0dSQjsKKwkJYnJlYWs7CisJY2FzZSBNVEtfRFBJX09VVF9DSEFOTkVM
X1NXQVBfQkdSOgorCQl2YWwgPSBTV0FQX0JHUjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJdmFs
ID0gU1dBUF9SR0I7CisJCWJyZWFrOworCX0KKworCW10a19kcGlfbWFzayhkcGksIERQSV9PVVRQ
VVRfU0VUVElORywgdmFsIDw8IENIX1NXQVAsIENIX1NXQVBfTUFTSyk7Cit9CisKK3N0YXRpYyB2
b2lkIG10a19kcGlfY29uZmlnX3l1djQyMl9lbmFibGUoc3RydWN0IG10a19kcGkgKmRwaSwgYm9v
bCBlbmFibGUpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0NPTiwgZW5hYmxlID8gWVVWNDIy
X0VOIDogMCwgWVVWNDIyX0VOKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2RwaV9jb25maWdfY3Nj
X2VuYWJsZShzdHJ1Y3QgbXRrX2RwaSAqZHBpLCBib29sIGVuYWJsZSkKK3sKKwltdGtfZHBpX21h
c2soZHBpLCBEUElfQ09OLCBlbmFibGUgPyBDU0NfRU5BQkxFIDogMCwgQ1NDX0VOQUJMRSk7Cit9
CisKK3N0YXRpYyB2b2lkIG10a19kcGlfY29uZmlnX3N3YXBfaW5wdXQoc3RydWN0IG10a19kcGkg
KmRwaSwgYm9vbCBlbmFibGUpCit7CisJbXRrX2RwaV9tYXNrKGRwaSwgRFBJX0NPTiwgZW5hYmxl
ID8gSU5fUkJfU1dBUCA6IDAsIElOX1JCX1NXQVApOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBp
X2NvbmZpZ18ybl9oX2ZyZShzdHJ1Y3QgbXRrX2RwaSAqZHBpKQoreworCW10a19kcGlfbWFzayhk
cGksIERQSV9IX0ZSRV9DT04sIEhfRlJFXzJOLCBIX0ZSRV8yTik7Cit9CisKK3N0YXRpYyB2b2lk
IG10a19kcGlfY29uZmlnX2NvbG9yX2Zvcm1hdChzdHJ1Y3QgbXRrX2RwaSAqZHBpLAorCQkJCQll
bnVtIG10a19kcGlfb3V0X2NvbG9yX2Zvcm1hdCBmb3JtYXQpCit7CisJaWYgKChmb3JtYXQgPT0g
TVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1JfNDQ0KSB8fAorCSAgICAoZm9ybWF0ID09IE1US19E
UElfQ09MT1JfRk9STUFUX1lDQkNSXzQ0NF9GVUxMKSkgeworCQltdGtfZHBpX2NvbmZpZ195dXY0
MjJfZW5hYmxlKGRwaSwgZmFsc2UpOworCQltdGtfZHBpX2NvbmZpZ19jc2NfZW5hYmxlKGRwaSwg
dHJ1ZSk7CisJCW10a19kcGlfY29uZmlnX3N3YXBfaW5wdXQoZHBpLCBmYWxzZSk7CisJCW10a19k
cGlfY29uZmlnX2NoYW5uZWxfc3dhcChkcGksIE1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9CR1Ip
OworCX0gZWxzZSBpZiAoKGZvcm1hdCA9PSBNVEtfRFBJX0NPTE9SX0ZPUk1BVF9ZQ0JDUl80MjIp
IHx8CisJCSAgIChmb3JtYXQgPT0gTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1JfNDIyX0ZVTEwp
KSB7CisJCW10a19kcGlfY29uZmlnX3l1djQyMl9lbmFibGUoZHBpLCB0cnVlKTsKKwkJbXRrX2Rw
aV9jb25maWdfY3NjX2VuYWJsZShkcGksIHRydWUpOworCQltdGtfZHBpX2NvbmZpZ19zd2FwX2lu
cHV0KGRwaSwgdHJ1ZSk7CisJCW10a19kcGlfY29uZmlnX2NoYW5uZWxfc3dhcChkcGksIE1US19E
UElfT1VUX0NIQU5ORUxfU1dBUF9SR0IpOworCX0gZWxzZSB7CisJCW10a19kcGlfY29uZmlnX3l1
djQyMl9lbmFibGUoZHBpLCBmYWxzZSk7CisJCW10a19kcGlfY29uZmlnX2NzY19lbmFibGUoZHBp
LCBmYWxzZSk7CisJCW10a19kcGlfY29uZmlnX3N3YXBfaW5wdXQoZHBpLCBmYWxzZSk7CisJCW10
a19kcGlfY29uZmlnX2NoYW5uZWxfc3dhcChkcGksIE1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9S
R0IpOworCX0KK30KKworc3RhdGljIGludCBtdGtfZHBpX3Bvd2VyX29mZihzdHJ1Y3QgbXRrX2Rw
aSAqZHBpKQoreworCWlmIChXQVJOX09OKGRwaS0+cmVmY291bnQgPT0gMCkpCisJCXJldHVybiAt
RUlOVkFMOworCisJaWYgKC0tZHBpLT5yZWZjb3VudCAhPSAwKQorCQlyZXR1cm4gMDsKKworCW10
a19kcGlfZGlzYWJsZShkcGkpOworCWNsa19kaXNhYmxlX3VucHJlcGFyZShkcGktPnBpeGVsX2Ns
ayk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRwaS0+ZW5naW5lX2Nsayk7CisKKwlyZXR1cm4g
MDsKK30KKworc3RhdGljIGludCBtdGtfZHBpX3Bvd2VyX29uKHN0cnVjdCBtdGtfZHBpICpkcGkp
Cit7CisJaW50IHJldDsKKworCWlmIChkcGktPnJlZmNvdW50KysgIT0gMSkKKwkJcmV0dXJuIDA7
CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHBpLT5lbmdpbmVfY2xrKTsKKwlpZiAocmV0
KSB7CisJCWRldl9lcnIoZHBpLT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIGVuZ2luZSBjbG9jazog
JWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX2RlYzsKKwl9CisKKwlyZXQgPSBjbGtfcHJlcGFyZV9l
bmFibGUoZHBpLT5waXhlbF9jbGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkcGktPmRldiwg
IkZhaWxlZCB0byBlbmFibGUgcGl4ZWwgY2xvY2s6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycl9j
bGs7CisJfQorCisJbXRrX2RwaV9lbmFibGUoZHBpKTsKKworCXJldHVybiAwOworCitlcnJfY2xr
OgorCWNsa19kaXNhYmxlX3VucHJlcGFyZShkcGktPmVuZ2luZV9jbGspOworZXJyX2RlYzoKKwlk
cGktPnJlZmNvdW50LS07CisJcmV0dXJuIHJldDsKK30KKworaW50IG10a19kcGlfc2V0X2Rpc3Bs
YXlfbW9kZShzdHJ1Y3QgbXRrX2RwaSAqZHBpLCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k
ZSkKK3sKKwlzdHJ1Y3QgbXRrX2RwaV95Y19saW1pdCBsaW1pdDsKKwlzdHJ1Y3QgbXRrX2RwaV9w
b2xhcml0aWVzIGRwaV9wb2w7CisJc3RydWN0IG10a19kcGlfc3luY19wYXJhbSBoc3luYzsKKwlz
dHJ1Y3QgbXRrX2RwaV9zeW5jX3BhcmFtIHZzeW5jX2xvZGQgPSB7IDAgfTsKKwlzdHJ1Y3QgbXRr
X2RwaV9zeW5jX3BhcmFtIHZzeW5jX2xldmVuID0geyAwIH07CisJc3RydWN0IG10a19kcGlfc3lu
Y19wYXJhbSB2c3luY19yb2RkID0geyAwIH07CisJc3RydWN0IG10a19kcGlfc3luY19wYXJhbSB2
c3luY19yZXZlbiA9IHsgMCB9OworCXVuc2lnbmVkIGxvbmcgcGl4X3JhdGU7CisJdW5zaWduZWQg
bG9uZyBwbGxfcmF0ZTsKKwl1bnNpZ25lZCBpbnQgZmFjdG9yOworCisJaWYgKCFkcGkpIHsKKwkJ
ZGV2X2VycihkcGktPmRldiwgImludmFsaWQgYXJndW1lbnRcbiIpOworCQlyZXR1cm4gLUVJTlZB
TDsKKwl9CisKKwlwaXhfcmF0ZSA9IDEwMDBVTCAqIG1vZGUtPmNsb2NrOworCWlmIChtb2RlLT5j
bG9jayA8PSA3NDAwMCkKKwkJZmFjdG9yID0gOCAqIDM7CisJZWxzZQorCQlmYWN0b3IgPSA0ICog
MzsKKwlwbGxfcmF0ZSA9IHBpeF9yYXRlICogZmFjdG9yOworCisJZGV2X2RiZyhkcGktPmRldiwg
IldhbnQgUExMICVsdSBIeiwgcGl4ZWwgY2xvY2sgJWx1IEh6XG4iLAorCQlwbGxfcmF0ZSwgcGl4
X3JhdGUpOworCisJY2xrX3NldF9yYXRlKGRwaS0+dHZkX2NsaywgcGxsX3JhdGUpOworCXBsbF9y
YXRlID0gY2xrX2dldF9yYXRlKGRwaS0+dHZkX2Nsayk7CisKKwlwaXhfcmF0ZSA9IHBsbF9yYXRl
IC8gZmFjdG9yOworCWNsa19zZXRfcmF0ZShkcGktPnBpeGVsX2NsaywgcGl4X3JhdGUpOworCXBp
eF9yYXRlID0gY2xrX2dldF9yYXRlKGRwaS0+cGl4ZWxfY2xrKTsKKworCWRldl9kYmcoZHBpLT5k
ZXYsICJHb3QgIFBMTCAlbHUgSHosIHBpeGVsIGNsb2NrICVsdSBIelxuIiwKKwkJcGxsX3JhdGUs
IHBpeF9yYXRlKTsKKworCWxpbWl0LmNfYm90dG9tID0gMHgwMDEwOworCWxpbWl0LmNfdG9wID0g
MHgwRkUwOworCWxpbWl0LnlfYm90dG9tID0gMHgwMDEwOworCWxpbWl0LnlfdG9wID0gMHgwRkUw
OworCisJZHBpX3BvbC5ja19wb2wgPSBNVEtfRFBJX1BPTEFSSVRZX0ZBTExJTkc7CisJZHBpX3Bv
bC5kZV9wb2wgPSBNVEtfRFBJX1BPTEFSSVRZX1JJU0lORzsKKwlkcGlfcG9sLmhzeW5jX3BvbCA9
IG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19QSFNZTkMgPworCQkJICAgIE1US19EUElfUE9M
QVJJVFlfRkFMTElORyA6IE1US19EUElfUE9MQVJJVFlfUklTSU5HOworCWRwaV9wb2wudnN5bmNf
cG9sID0gbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BWU1lOQyA/CisJCQkgICAgTVRLX0RQ
SV9QT0xBUklUWV9GQUxMSU5HIDogTVRLX0RQSV9QT0xBUklUWV9SSVNJTkc7CisKKwloc3luYy5z
eW5jX3dpZHRoID0gbW9kZS0+aHN5bmNfZW5kIC0gbW9kZS0+aHN5bmNfc3RhcnQ7CisJaHN5bmMu
YmFja19wb3JjaCA9IG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX2VuZDsKKwloc3luYy5mcm9u
dF9wb3JjaCA9IG1vZGUtPmhzeW5jX3N0YXJ0IC0gbW9kZS0+aGRpc3BsYXk7CisJaHN5bmMuc2hp
ZnRfaGFsZl9saW5lID0gZmFsc2U7CisKKwl2c3luY19sb2RkLnN5bmNfd2lkdGggPSBtb2RlLT52
c3luY19lbmQgLSBtb2RlLT52c3luY19zdGFydDsKKwl2c3luY19sb2RkLmJhY2tfcG9yY2ggPSBt
b2RlLT52dG90YWwgLSBtb2RlLT52c3luY19lbmQ7CisJdnN5bmNfbG9kZC5mcm9udF9wb3JjaCA9
IG1vZGUtPnZzeW5jX3N0YXJ0IC0gbW9kZS0+dmRpc3BsYXk7CisJdnN5bmNfbG9kZC5zaGlmdF9o
YWxmX2xpbmUgPSBmYWxzZTsKKworCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5U
RVJMQUNFICYmCisJICAgIG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR18zRF9NQVNLKSB7CisJ
CXZzeW5jX2xldmVuID0gdnN5bmNfbG9kZDsKKwkJdnN5bmNfcm9kZCA9IHZzeW5jX2xvZGQ7CisJ
CXZzeW5jX3JldmVuID0gdnN5bmNfbG9kZDsKKwkJdnN5bmNfbGV2ZW4uc2hpZnRfaGFsZl9saW5l
ID0gdHJ1ZTsKKwkJdnN5bmNfcmV2ZW4uc2hpZnRfaGFsZl9saW5lID0gdHJ1ZTsKKwl9IGVsc2Ug
aWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UgJiYKKwkJICAgIShtb2Rl
LT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfM0RfTUFTSykpIHsKKwkJdnN5bmNfbGV2ZW4gPSB2c3lu
Y19sb2RkOworCQl2c3luY19sZXZlbi5zaGlmdF9oYWxmX2xpbmUgPSB0cnVlOworCX0gZWxzZSBp
ZiAoIShtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSAmJgorCQkgICBtb2Rl
LT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfM0RfTUFTSykgeworCQl2c3luY19yb2RkID0gdnN5bmNf
bG9kZDsKKwl9CisJbXRrX2RwaV9zd19yZXNldChkcGksIHRydWUpOworCW10a19kcGlfY29uZmln
X3BvbChkcGksICZkcGlfcG9sKTsKKworCW10a19kcGlfY29uZmlnX2hzeW5jKGRwaSwgJmhzeW5j
KTsKKwltdGtfZHBpX2NvbmZpZ192c3luY19sb2RkKGRwaSwgJnZzeW5jX2xvZGQpOworCW10a19k
cGlfY29uZmlnX3ZzeW5jX3JvZGQoZHBpLCAmdnN5bmNfcm9kZCk7CisJbXRrX2RwaV9jb25maWdf
dnN5bmNfbGV2ZW4oZHBpLCAmdnN5bmNfbGV2ZW4pOworCW10a19kcGlfY29uZmlnX3ZzeW5jX3Jl
dmVuKGRwaSwgJnZzeW5jX3JldmVuKTsKKworCW10a19kcGlfY29uZmlnXzNkKGRwaSwgISEobW9k
ZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHXzNEX01BU0spKTsKKwltdGtfZHBpX2NvbmZpZ19pbnRl
cmZhY2UoZHBpLCAhIShtb2RlLT5mbGFncyAmCisJCQkJCSBEUk1fTU9ERV9GTEFHX0lOVEVSTEFD
RSkpOworCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQorCQltdGtf
ZHBpX2NvbmZpZ19mYl9zaXplKGRwaSwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5IC8g
Mik7CisJZWxzZQorCQltdGtfZHBpX2NvbmZpZ19mYl9zaXplKGRwaSwgbW9kZS0+aGRpc3BsYXks
IG1vZGUtPnZkaXNwbGF5KTsKKworCW10a19kcGlfY29uZmlnX2NoYW5uZWxfbGltaXQoZHBpLCAm
bGltaXQpOworCW10a19kcGlfY29uZmlnX2JpdF9udW0oZHBpLCBkcGktPmJpdF9udW0pOworCW10
a19kcGlfY29uZmlnX2NoYW5uZWxfc3dhcChkcGksIGRwaS0+Y2hhbm5lbF9zd2FwKTsKKwltdGtf
ZHBpX2NvbmZpZ195Y19tYXAoZHBpLCBkcGktPnljX21hcCk7CisJbXRrX2RwaV9jb25maWdfY29s
b3JfZm9ybWF0KGRwaSwgZHBpLT5jb2xvcl9mb3JtYXQpOworCW10a19kcGlfY29uZmlnXzJuX2hf
ZnJlKGRwaSk7CisJbXRrX2RwaV9zd19yZXNldChkcGksIGZhbHNlKTsKKworCXJldHVybiAwOwor
fQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2VuY29kZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29k
ZXIgKmVuY29kZXIpCit7CisJZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKK30KKworc3Rh
dGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBtdGtfZHBpX2VuY29kZXJfZnVuY3Mg
PSB7CisJLmRlc3Ryb3kgPSBtdGtfZHBpX2VuY29kZXJfZGVzdHJveSwKK307CisKK3N0YXRpYyBi
b29sIG10a19kcGlfZW5jb2Rlcl9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl
ciwKKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCQkJ
ICAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQoreworCXJldHVy
biB0cnVlOworfQorCitzdGF0aWMgdm9pZCBtdGtfZHBpX2VuY29kZXJfbW9kZV9zZXQoc3RydWN0
IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg
Km1vZGUsCisJCQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkK
K3sKKwlzdHJ1Y3QgbXRrX2RwaSAqZHBpID0gbXRrX2RwaV9mcm9tX2VuY29kZXIoZW5jb2Rlcik7
CisKKwlkcm1fbW9kZV9jb3B5KCZkcGktPm1vZGUsIGFkanVzdGVkX21vZGUpOworfQorCitzdGF0
aWMgdm9pZCBtdGtfZHBpX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k
ZXIpCit7CisJc3RydWN0IG10a19kcGkgKmRwaSA9IG10a19kcGlfZnJvbV9lbmNvZGVyKGVuY29k
ZXIpOworCisJbXRrX2RwaV9wb3dlcl9vZmYoZHBpKTsKK30KKworc3RhdGljIHZvaWQgbXRrX2Rw
aV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7CisJc3RydWN0
IG10a19kcGkgKmRwaSA9IG10a19kcGlfZnJvbV9lbmNvZGVyKGVuY29kZXIpOworCisJbXRrX2Rw
aV9wb3dlcl9vbihkcGkpOworCW10a19kcGlfc2V0X2Rpc3BsYXlfbW9kZShkcGksICZkcGktPm1v
ZGUpOworfQorCitzdGF0aWMgaW50IG10a19kcGlfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZW5j
b2RlciAqZW5jb2RlciwKKwkJCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJ
CQkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7CisJcmV0dXJuIDA7
Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIG10a19k
cGlfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7CisJLm1vZGVfZml4dXAgPSBtdGtfZHBpX2VuY29k
ZXJfbW9kZV9maXh1cCwKKwkubW9kZV9zZXQgPSBtdGtfZHBpX2VuY29kZXJfbW9kZV9zZXQsCisJ
LmRpc2FibGUgPSBtdGtfZHBpX2VuY29kZXJfZGlzYWJsZSwKKwkuZW5hYmxlID0gbXRrX2RwaV9l
bmNvZGVyX2VuYWJsZSwKKwkuYXRvbWljX2NoZWNrID0gbXRrX2RwaV9hdG9taWNfY2hlY2ssCit9
OworCitzdGF0aWMgdm9pZCBtdGtfZHBpX3N0YXJ0KHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXAp
Cit7CisJc3RydWN0IG10a19kcGkgKmRwaSA9IGNvbnRhaW5lcl9vZihjb21wLCBzdHJ1Y3QgbXRr
X2RwaSwgZGRwX2NvbXApOworCisJbXRrX2RwaV9wb3dlcl9vbihkcGkpOworfQorCitzdGF0aWMg
dm9pZCBtdGtfZHBpX3N0b3Aoc3RydWN0IG10a19kZHBfY29tcCAqY29tcCkKK3sKKwlzdHJ1Y3Qg
bXRrX2RwaSAqZHBpID0gY29udGFpbmVyX29mKGNvbXAsIHN0cnVjdCBtdGtfZHBpLCBkZHBfY29t
cCk7CisKKwltdGtfZHBpX3Bvd2VyX29mZihkcGkpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0
IG10a19kZHBfY29tcF9mdW5jcyBtdGtfZHBpX2Z1bmNzID0geworCS5zdGFydCA9IG10a19kcGlf
c3RhcnQsCisJLnN0b3AgPSBtdGtfZHBpX3N0b3AsCit9OworCitzdGF0aWMgaW50IG10a19kcGlf
YmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0
YSkKK3sKKwlzdHJ1Y3QgbXRrX2RwaSAqZHBpID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3Ry
dWN0IGRybV9kZXZpY2UgKmRybV9kZXYgPSBkYXRhOworCWludCByZXQ7CisKKwlyZXQgPSBtdGtf
ZGRwX2NvbXBfcmVnaXN0ZXIoZHJtX2RldiwgJmRwaS0+ZGRwX2NvbXApOworCWlmIChyZXQgPCAw
KSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIGNvbXBvbmVudCAlczogJWRc
biIsCisJCQlkZXYtPm9mX25vZGUtPmZ1bGxfbmFtZSwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9
CisKKwlyZXQgPSBkcm1fZW5jb2Rlcl9pbml0KGRybV9kZXYsICZkcGktPmVuY29kZXIsICZtdGtf
ZHBpX2VuY29kZXJfZnVuY3MsCisJCQkgICAgICAgRFJNX01PREVfRU5DT0RFUl9UTURTKTsKKwlp
ZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGluaXRpYWxpemUgZGVjb2Rlcjog
JWRcbiIsIHJldCk7CisJCWdvdG8gZXJyX3VucmVnaXN0ZXI7CisJfQorCWRybV9lbmNvZGVyX2hl
bHBlcl9hZGQoJmRwaS0+ZW5jb2RlciwgJm10a19kcGlfZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOwor
CisJLyogQ3VycmVudGx5IERQSTAgaXMgZml4ZWQgdG8gYmUgZHJpdmVuIGJ5IE9WTDEgKi8KKwlk
cGktPmVuY29kZXIucG9zc2libGVfY3J0Y3MgPSBCSVQoMSk7CisKKwlkcGktPmVuY29kZXIuYnJp
ZGdlLT5lbmNvZGVyID0gJmRwaS0+ZW5jb2RlcjsKKwlyZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChk
cGktPmVuY29kZXIuZGV2LCBkcGktPmVuY29kZXIuYnJpZGdlKTsKKwlpZiAocmV0KSB7CisJCWRl
dl9lcnIoZGV2LCAiRmFpbGVkIHRvIGF0dGFjaCBicmlkZ2U6ICVkXG4iLCByZXQpOworCQlnb3Rv
IGVycl9jbGVhbnVwOworCX0KKworCWRwaS0+Yml0X251bSA9IE1US19EUElfT1VUX0JJVF9OVU1f
OEJJVFM7CisJZHBpLT5jaGFubmVsX3N3YXAgPSBNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfUkdC
OworCWRwaS0+eWNfbWFwID0gTVRLX0RQSV9PVVRfWUNfTUFQX1JHQjsKKwlkcGktPmNvbG9yX2Zv
cm1hdCA9IE1US19EUElfQ09MT1JfRk9STUFUX1JHQjsKKworCXJldHVybiAwOworCitlcnJfY2xl
YW51cDoKKwlkcm1fZW5jb2Rlcl9jbGVhbnVwKCZkcGktPmVuY29kZXIpOworZXJyX3VucmVnaXN0
ZXI6CisJbXRrX2RkcF9jb21wX3VucmVnaXN0ZXIoZHJtX2RldiwgJmRwaS0+ZGRwX2NvbXApOwor
CXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIG10a19kcGlfdW5iaW5kKHN0cnVjdCBkZXZp
Y2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAorCQkJICAgdm9pZCAqZGF0YSkKK3sKKwlz
dHJ1Y3QgbXRrX2RwaSAqZHBpID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGRybV9k
ZXZpY2UgKmRybV9kZXYgPSBkYXRhOworCisJZHJtX2VuY29kZXJfY2xlYW51cCgmZHBpLT5lbmNv
ZGVyKTsKKwltdGtfZGRwX2NvbXBfdW5yZWdpc3Rlcihkcm1fZGV2LCAmZHBpLT5kZHBfY29tcCk7
Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBtdGtfZHBpX2NvbXBvbmVu
dF9vcHMgPSB7CisJLmJpbmQgPSBtdGtfZHBpX2JpbmQsCisJLnVuYmluZCA9IG10a19kcGlfdW5i
aW5kLAorfTsKKworc3RhdGljIGludCBtdGtfZHBpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp
Y2UgKnBkZXYpCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3Qg
bXRrX2RwaSAqZHBpOworCXN0cnVjdCByZXNvdXJjZSAqbWVtOworCXN0cnVjdCBkZXZpY2Vfbm9k
ZSAqZXAsICpicmlkZ2Vfbm9kZSA9IE5VTEw7CisJaW50IGNvbXBfaWQ7CisJaW50IHJldDsKKwor
CWRwaSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZHBpKSwgR0ZQX0tFUk5FTCk7CisJaWYg
KCFkcGkpCisJCXJldHVybiAtRU5PTUVNOworCisJZHBpLT5kZXYgPSBkZXY7CisKKwltZW0gPSBw
bGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCWRwaS0+cmVn
cyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIG1lbSk7CisJaWYgKElTX0VSUihkcGktPnJl
Z3MpKSB7CisJCXJldCA9IFBUUl9FUlIoZHBpLT5yZWdzKTsKKwkJZGV2X2VycihkZXYsICJGYWls
ZWQgdG8gaW9yZW1hcCBtZW0gcmVzb3VyY2U6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0Owor
CX0KKworCWRwaS0+ZW5naW5lX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJlbmdpbmUiKTsKKwlp
ZiAoSVNfRVJSKGRwaS0+ZW5naW5lX2NsaykpIHsKKwkJcmV0ID0gUFRSX0VSUihkcGktPmVuZ2lu
ZV9jbGspOworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgZW5naW5lIGNsb2NrOiAlZFxu
IiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkcGktPnBpeGVsX2NsayA9IGRldm1fY2xr
X2dldChkZXYsICJwaXhlbCIpOworCWlmIChJU19FUlIoZHBpLT5waXhlbF9jbGspKSB7CisJCXJl
dCA9IFBUUl9FUlIoZHBpLT5waXhlbF9jbGspOworCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBn
ZXQgcGl4ZWwgY2xvY2s6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWRwaS0+
dHZkX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJwbGwiKTsKKwlpZiAoSVNfRVJSKGRwaS0+dHZk
X2NsaykpIHsKKwkJcmV0ID0gUFRSX0VSUihkcGktPnR2ZF9jbGspOworCQlkZXZfZXJyKGRldiwg
IkZhaWxlZCB0byBnZXQgdHZkcGxsIGNsb2NrOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsK
Kwl9CisKKwlkcGktPmlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7CisJaWYgKGRwaS0+
aXJxIDw9IDApIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IGlycTogJWRcbiIsIGRw
aS0+aXJxKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJZXAgPSBvZl9ncmFwaF9nZXRfbmV4
dF9lbmRwb2ludChkZXYtPm9mX25vZGUsIE5VTEwpOworCWlmIChlcCkgeworCQlicmlkZ2Vfbm9k
ZSA9IG9mX2dyYXBoX2dldF9yZW1vdGVfcG9ydF9wYXJlbnQoZXApOworCQlvZl9ub2RlX3B1dChl
cCk7CisJfQorCWlmICghYnJpZGdlX25vZGUpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8g
ZmluZCBicmlkZ2Ugbm9kZTogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJZGV2
X2luZm8oZGV2LCAiRm91bmQgYnJpZGdlIG5vZGU6ICVzXG4iLCBicmlkZ2Vfbm9kZS0+ZnVsbF9u
YW1lKTsKKworCWRwaS0+ZW5jb2Rlci5icmlkZ2UgPSBvZl9kcm1fZmluZF9icmlkZ2UoYnJpZGdl
X25vZGUpOworCW9mX25vZGVfcHV0KGJyaWRnZV9ub2RlKTsKKwlpZiAoIWRwaS0+ZW5jb2Rlci5i
cmlkZ2UpCisJCXJldHVybiAtRVBST0JFX0RFRkVSOworCisJY29tcF9pZCA9IG10a19kZHBfY29t
cF9nZXRfaWQoZGV2LT5vZl9ub2RlLCBNVEtfRFBJKTsKKwlpZiAoY29tcF9pZCA8IDApIHsKKwkJ
ZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaWRlbnRpZnkgYnkgYWxpYXM6ICVkXG4iLCBjb21wX2lk
KTsKKwkJcmV0dXJuIGNvbXBfaWQ7CisJfQorCisJcmV0ID0gbXRrX2RkcF9jb21wX2luaXQoZGV2
LCBkZXYtPm9mX25vZGUsICZkcGktPmRkcF9jb21wLCBjb21wX2lkLAorCQkJCSZtdGtfZHBpX2Z1
bmNzKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGluaXRpYWxpemUg
Y29tcG9uZW50OiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlwbGF0Zm9ybV9z
ZXRfZHJ2ZGF0YShwZGV2LCBkcGkpOworCisJcmV0ID0gY29tcG9uZW50X2FkZChkZXYsICZtdGtf
ZHBpX2NvbXBvbmVudF9vcHMpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQg
dG8gYWRkIGNvbXBvbmVudDogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0
dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbXRrX2RwaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rl
dmljZSAqcGRldikKK3sKKwljb21wb25lbnRfZGVsKCZwZGV2LT5kZXYsICZtdGtfZHBpX2NvbXBv
bmVudF9vcHMpOworCisJcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBDT05GSUdfUE1fU0xFRVAKK3N0
YXRpYyBpbnQgbXRrX2RwaV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3Qg
bXRrX2RwaSAqZHBpID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJaW50IHJldDsKKworCWlmIChJ
U19FUlIoZHBpKSkgeworCQlkZXZfaW5mbyhkZXYsICJkcGkgc3VzcGVuZCBmYWlsZWQhXG4iKTsK
KwkJcmV0dXJuIFBUUl9FUlIoZHBpKTsKKwl9CisKKwlyZXQgPSBtdGtfZHBpX3Bvd2VyX29mZihk
cGkpOworCWlmIChyZXQpIHsKKwkJZGV2X2luZm8oZGV2LCAiZHBpIHN1c3BlbmQgZmFpbGVkIVxu
Iik7CisJCXJldHVybiByZXQ7CisJfQorCisJZGV2X2luZm8oZGV2LCAiZHBpIHN1c3BlbmQgc3Vj
Y2VzcyFcbiIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbXRrX2RwaV9yZXN1bWUo
c3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBtdGtfZHBpICpkcGkgPSBkZXZfZ2V0X2Ry
dmRhdGEoZGV2KTsKKwlpbnQgcmV0OworCisJaWYgKElTX0VSUihkcGkpKSB7CisJCWRldl9lcnIo
ZGV2LCAiZHBpIHJlc3VtZSBmYWlsZWQhXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoZHBpKTsKKwl9
CisKKwlyZXQgPSBtdGtfZHBpX3Bvd2VyX29uKGRwaSk7CisJaWYgKHJldCkgeworCQlkZXZfZXJy
KGRldiwgImRwaSByZXN1bWUgZmFpbGVkIVxuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJZGV2
X2luZm8oZGV2LCAiZHBpIHJlc3VtZSBzdWNjZXNzIVxuIik7CisKKwlyZXR1cm4gMDsKK30KKyNl
bmRpZgorCitzdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMobXRrX2RwaV9wbV9vcHMsIG10a19kcGlf
c3VzcGVuZCwgbXRrX2RwaV9yZXN1bWUpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj
ZV9pZCBtdGtfZHBpX29mX2lkc1tdID0geworCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4
MTczLWRwaSIsIH0sCisJe30KK307CisKK3N0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RwaV9k
cml2ZXIgPSB7CisJLnByb2JlID0gbXRrX2RwaV9wcm9iZSwKKwkucmVtb3ZlID0gbXRrX2RwaV9y
ZW1vdmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSAibWVkaWF0ZWstZHBpIiwKKwkJLm9mX21h
dGNoX3RhYmxlID0gbXRrX2RwaV9vZl9pZHMsCisJCS5wbSA9ICZtdGtfZHBpX3BtX29wcywKKwl9
LAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpLmggYi9k
cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RwaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjI1ZGE1ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0v
bWVkaWF0ZWsvbXRrX2RwaS5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTQgTWVkaWFUZWsgSW5jLgorICogQXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlhdGVr
LmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
Ki8KKyNpZm5kZWYgX01US19EUElfSAorI2RlZmluZSBfTVRLX0RQSV9ICisKKyNpbmNsdWRlIDxs
aW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorCisjaW5jbHVkZSAibXRr
X2RybV9kZHBfY29tcC5oIgorCitzdHJ1Y3QgZGV2aWNlOworc3RydWN0IGNsazsKKworZW51bSBt
dGtfZHBpX291dF9iaXRfbnVtIHsKKwlNVEtfRFBJX09VVF9CSVRfTlVNXzhCSVRTLAorCU1US19E
UElfT1VUX0JJVF9OVU1fMTBCSVRTLAorCU1US19EUElfT1VUX0JJVF9OVU1fMTJCSVRTLAorCU1U
S19EUElfT1VUX0JJVF9OVU1fMTZCSVRTCit9OworCitlbnVtIG10a19kcGlfb3V0X3ljX21hcCB7
CisJTVRLX0RQSV9PVVRfWUNfTUFQX1JHQiwKKwlNVEtfRFBJX09VVF9ZQ19NQVBfQ1lDWSwKKwlN
VEtfRFBJX09VVF9ZQ19NQVBfWUNZQywKKwlNVEtfRFBJX09VVF9ZQ19NQVBfQ1ksCisJTVRLX0RQ
SV9PVVRfWUNfTUFQX1lDCit9OworCitlbnVtIG10a19kcGlfb3V0X2NoYW5uZWxfc3dhcCB7CisJ
TVRLX0RQSV9PVVRfQ0hBTk5FTF9TV0FQX1JHQiwKKwlNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBf
R0JSLAorCU1US19EUElfT1VUX0NIQU5ORUxfU1dBUF9CUkcsCisJTVRLX0RQSV9PVVRfQ0hBTk5F
TF9TV0FQX1JCRywKKwlNVEtfRFBJX09VVF9DSEFOTkVMX1NXQVBfR1JCLAorCU1US19EUElfT1VU
X0NIQU5ORUxfU1dBUF9CR1IKK307CisKK2VudW0gbXRrX2RwaV9vdXRfY29sb3JfZm9ybWF0IHsK
KwlNVEtfRFBJX0NPTE9SX0ZPUk1BVF9SR0IsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfUkdCX0ZV
TEwsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1JfNDQ0LAorCU1US19EUElfQ09MT1JfRk9S
TUFUX1lDQkNSXzQyMiwKKwlNVEtfRFBJX0NPTE9SX0ZPUk1BVF9YVl9ZQ0MsCisJTVRLX0RQSV9D
T0xPUl9GT1JNQVRfWUNCQ1JfNDQ0X0ZVTEwsCisJTVRLX0RQSV9DT0xPUl9GT1JNQVRfWUNCQ1Jf
NDIyX0ZVTEwKK307CisKK3N0cnVjdCBtdGtfZHBpIHsKKwlzdHJ1Y3QgbXRrX2RkcF9jb21wIGRk
cF9jb21wOworCXN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOworCXZvaWQgX19pb21lbSAqcmVn
czsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IGNsayAqZW5naW5lX2NsazsKKwlzdHJ1
Y3QgY2xrICpwaXhlbF9jbGs7CisJc3RydWN0IGNsayAqdHZkX2NsazsKKwlpbnQgaXJxOworCXN0
cnVjdCBkcm1fZGlzcGxheV9tb2RlIG1vZGU7CisJZW51bSBtdGtfZHBpX291dF9jb2xvcl9mb3Jt
YXQgY29sb3JfZm9ybWF0OworCWVudW0gbXRrX2RwaV9vdXRfeWNfbWFwIHljX21hcDsKKwllbnVt
IG10a19kcGlfb3V0X2JpdF9udW0gYml0X251bTsKKwllbnVtIG10a19kcGlfb3V0X2NoYW5uZWxf
c3dhcCBjaGFubmVsX3N3YXA7CisJaW50IHJlZmNvdW50OworfTsKKworc3RhdGljIGlubGluZSBz
dHJ1Y3QgbXRrX2RwaSAqbXRrX2RwaV9mcm9tX2VuY29kZXIoc3RydWN0IGRybV9lbmNvZGVyICpl
KQoreworCXJldHVybiBjb250YWluZXJfb2YoZSwgc3RydWN0IG10a19kcGksIGVuY29kZXIpOwor
fQorCitpbnQgbXRrX2RwaV9zZXRfZGlzcGxheV9tb2RlKHN0cnVjdCBtdGtfZHBpICpkcGksCisJ
CQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTsKKworI2VuZGlmIC8qIF9NVEtf
RFBJX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpX3Jl
Z3MuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHBpX3JlZ3MuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjZhZDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJp
dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcGlfcmVncy5oCkBAIC0wLDAgKzEsMjI4IEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDE0IE1lZGlhVGVrIEluYy4KKyAqIEF1dGhvcjogSmllIFFp
dSA8amllLnFpdUBtZWRpYXRlay5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFz
CisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBU
aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICovCisjaWZuZGVmIF9fTVRLX0RQSV9SRUdTX0gKKyNkZWZpbmUg
X19NVEtfRFBJX1JFR1NfSAorCisjZGVmaW5lIERQSV9FTgkJCTB4MDAKKyNkZWZpbmUgRU4JCQkJ
QklUKDApCisKKyNkZWZpbmUgRFBJX1JFVAkJCTB4MDQKKyNkZWZpbmUgUlNUCQkJCUJJVCgwKQor
CisjZGVmaW5lIERQSV9JTlRFTgkJMHgwOAorI2RlZmluZSBJTlRfVlNZTkNfRU4JCQlCSVQoMCkK
KyNkZWZpbmUgSU5UX1ZERV9FTgkJCUJJVCgxKQorI2RlZmluZSBJTlRfVU5ERVJGTE9XX0VOCQlC
SVQoMikKKworI2RlZmluZSBEUElfSU5UU1RBCQkweDBDCisjZGVmaW5lIElOVF9WU1lOQ19TVEEJ
CQlCSVQoMCkKKyNkZWZpbmUgSU5UX1ZERV9TVEEJCQlCSVQoMSkKKyNkZWZpbmUgSU5UX1VOREVS
RkxPV19TVEEJCUJJVCgyKQorCisjZGVmaW5lIERQSV9DT04JCQkweDEwCisjZGVmaW5lIEJHX0VO
QUJMRQkJCUJJVCgwKQorI2RlZmluZSBJTl9SQl9TV0FQCQkJQklUKDEpCisjZGVmaW5lIElOVExf
RU4JCQkJQklUKDIpCisjZGVmaW5lIFRERlBfRU4JCQkJQklUKDMpCisjZGVmaW5lIENMUEZfRU4J
CQkJQklUKDQpCisjZGVmaW5lIFlVVjQyMl9FTgkJCUJJVCg1KQorI2RlZmluZSBDU0NfRU5BQkxF
CQkJQklUKDYpCisjZGVmaW5lIFI2MDFfU0VMCQkJQklUKDcpCisjZGVmaW5lIEVNQlNZTkNfRU4J
CQlCSVQoOCkKKyNkZWZpbmUgVlNfTE9ERF9FTgkJCUJJVCgxNikKKyNkZWZpbmUgVlNfTEVWRU5f
RU4JCQlCSVQoMTcpCisjZGVmaW5lIFZTX1JPRERfRU4JCQlCSVQoMTgpCisjZGVmaW5lIFZTX1JF
VkVOCQkJQklUKDE5KQorI2RlZmluZSBGQUtFX0RFX0xPREQJCQlCSVQoMjApCisjZGVmaW5lIEZB
S0VfREVfTEVWRU4JCQlCSVQoMjEpCisjZGVmaW5lIEZBS0VfREVfUk9ERAkJCUJJVCgyMikKKyNk
ZWZpbmUgRkFLRV9ERV9SRVZFTgkJCUJJVCgyMykKKworI2RlZmluZSBEUElfT1VUUFVUX1NFVFRJ
TkcJMHgxNAorI2RlZmluZSBDSF9TV0FQCQkJCTAKKyNkZWZpbmUgQ0hfU1dBUF9NQVNLCQkJKDB4
NyA8PCAwKQorI2RlZmluZSBTV0FQX1JHQgkJCTB4MDAKKyNkZWZpbmUgU1dBUF9HQlIJCQkweDAx
CisjZGVmaW5lIFNXQVBfQlJHCQkJMHgwMgorI2RlZmluZSBTV0FQX1JCRwkJCTB4MDMKKyNkZWZp
bmUgU1dBUF9HUkIJCQkweDA0CisjZGVmaW5lIFNXQVBfQkdSCQkJMHgwNQorI2RlZmluZSBCSVRf
U1dBUAkJCUJJVCgzKQorI2RlZmluZSBCX01BU0sJCQkJQklUKDQpCisjZGVmaW5lIEdfTUFTSwkJ
CQlCSVQoNSkKKyNkZWZpbmUgUl9NQVNLCQkJCUJJVCg2KQorI2RlZmluZSBERV9NQVNLCQkJCUJJ
VCg4KQorI2RlZmluZSBIU19NQVNLCQkJCUJJVCg5KQorI2RlZmluZSBWU19NQVNLCQkJCUJJVCgx
MCkKKyNkZWZpbmUgREVfUE9MCQkJCUJJVCgxMikKKyNkZWZpbmUgSFNZTkNfUE9MCQkJQklUKDEz
KQorI2RlZmluZSBWU1lOQ19QT0wJCQlCSVQoMTQpCisjZGVmaW5lIENLX1BPTAkJCQlCSVQoMTUp
CisjZGVmaW5lIE9FTl9PRkYJCQkJQklUKDE2KQorI2RlZmluZSBFREdFX1NFTAkJCUJJVCgxNykK
KyNkZWZpbmUgT1VUX0JJVAkJCQkxOAorI2RlZmluZSBPVVRfQklUX01BU0sJCQkoMHgzIDw8IDE4
KQorI2RlZmluZSBPVVRfQklUXzgJCQkweDAwCisjZGVmaW5lIE9VVF9CSVRfMTAJCQkweDAxCisj
ZGVmaW5lIE9VVF9CSVRfMTIJCQkweDAyCisjZGVmaW5lIE9VVF9CSVRfMTYJCQkweDAzCisjZGVm
aW5lIFlDX01BUAkJCQkyMAorI2RlZmluZSBZQ19NQVBfTUFTSwkJCSgweDcgPDwgMjApCisjZGVm
aW5lIFlDX01BUF9SR0IJCQkweDAwCisjZGVmaW5lIFlDX01BUF9DWUNZCQkJMHgwNAorI2RlZmlu
ZSBZQ19NQVBfWUNZQwkJCTB4MDUKKyNkZWZpbmUgWUNfTUFQX0NZCQkJMHgwNgorI2RlZmluZSBZ
Q19NQVBfWUMJCQkweDA3CisKKyNkZWZpbmUgRFBJX1NJWkUJCTB4MTgKKyNkZWZpbmUgSFNJWkUJ
CQkJMAorI2RlZmluZSBIU0laRV9NQVNLCQkJKDB4MUZGRiA8PCAwKQorI2RlZmluZSBWU0laRQkJ
CQkxNgorI2RlZmluZSBWU0laRV9NQVNLCQkJKDB4MUZGRiA8PCAxNikKKworI2RlZmluZSBEUElf
RERSX1NFVFRJTkcJCTB4MUMKKyNkZWZpbmUgRERSX0VOCQkJCUJJVCgwKQorI2RlZmluZSBERERS
X1NFTAkJCUJJVCgxKQorI2RlZmluZSBERFJfNFBIQVNFCQkJQklUKDIpCisjZGVmaW5lIEREUl9X
SURUSAkJCSgweDMgPDwgNCkKKyNkZWZpbmUgRERSX1BBRF9NT0RFCQkJKDB4MSA8PCA4KQorCisj
ZGVmaW5lIERQSV9UR0VOX0hXSURUSAkJMHgyMAorI2RlZmluZSBIUFcJCQkJMAorI2RlZmluZSBI
UFdfTUFTSwkJCSgweEZGRiA8PCAwKQorCisjZGVmaW5lIERQSV9UR0VOX0hQT1JDSAkJMHgyNAor
I2RlZmluZSBIQlAJCQkJMAorI2RlZmluZSBIQlBfTUFTSwkJCSgweEZGRiA8PCAwKQorI2RlZmlu
ZSBIRlAJCQkJMTYKKyNkZWZpbmUgSEZQX01BU0sJCQkoMHhGRkYgPDwgMTYpCisKKyNkZWZpbmUg
RFBJX1RHRU5fVldJRFRICQkweDI4CisjZGVmaW5lIERQSV9UR0VOX1ZQT1JDSAkJMHgyQworCisj
ZGVmaW5lIFZTWU5DX1dJRFRIX1NISUZUCQkwCisjZGVmaW5lIFZTWU5DX1dJRFRIX01BU0sJCSgw
eEZGRiA8PCAwKQorI2RlZmluZSBWU1lOQ19IQUxGX0xJTkVfU0hJRlQJCTE2CisjZGVmaW5lIFZT
WU5DX0hBTEZfTElORV9NQVNLCQlCSVQoMTYpCisjZGVmaW5lIFZTWU5DX0JBQ0tfUE9SQ0hfU0hJ
RlQJCTAKKyNkZWZpbmUgVlNZTkNfQkFDS19QT1JDSF9NQVNLCQkoMHhGRkYgPDwgMCkKKyNkZWZp
bmUgVlNZTkNfRlJPTlRfUE9SQ0hfU0hJRlQJCTE2CisjZGVmaW5lIFZTWU5DX0ZST05UX1BPUkNI
X01BU0sJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfQkdfSENOVEwJCTB4MzAKKyNkZWZp
bmUgQkdfUklHSFQJCQkoMHgxRkZGIDw8IDApCisjZGVmaW5lIEJHX0xFRlQJCQkJKDB4MUZGRiA8
PCAxNikKKworI2RlZmluZSBEUElfQkdfVkNOVEwJCTB4MzQKKyNkZWZpbmUgQkdfQk9UCQkJCSgw
eDFGRkYgPDwgMCkKKyNkZWZpbmUgQkdfVE9QCQkJCSgweDFGRkYgPDwgMTYpCisKKyNkZWZpbmUg
RFBJX0JHX0NPTE9SCQkweDM4CisjZGVmaW5lIEJHX0IJCQkJKDB4RiA8PCAwKQorI2RlZmluZSBC
R19HCQkJCSgweEYgPDwgOCkKKyNkZWZpbmUgQkdfUgkJCQkoMHhGIDw8IDE2KQorCisjZGVmaW5l
IERQSV9GSUZPX0NUTAkJMHgzQworI2RlZmluZSBGSUZPX1ZBTElEX1NFVAkJCSgweDFGIDw8IDAp
CisjZGVmaW5lIEZJRk9fUlNUX1NFTAkJCSgweDEgPDwgOCkKKworI2RlZmluZSBEUElfU1RBVFVT
CQkweDQwCisjZGVmaW5lIFZDT1VOVEVSCQkJKDB4MUZGRiA8PCAwKQorI2RlZmluZSBEUElfQlVT
WQkJCUJJVCgxNikKKyNkZWZpbmUgT1VURU4JCQkJQklUKDE3KQorI2RlZmluZSBGSUVMRAkJCQlC
SVQoMjApCisjZGVmaW5lIFRETFIJCQkJQklUKDIxKQorCisjZGVmaW5lIERQSV9UTU9ERQkJMHg0
NAorI2RlZmluZSBEUElfT0VOX09OCQkJQklUKDApCisKKyNkZWZpbmUgRFBJX0NIRUNLU1VNCQkw
eDQ4CisjZGVmaW5lIERQSV9DSEVDS1NVTV9NQVNLCQkoMHhGRkZGRkYgPDwgMCkKKyNkZWZpbmUg
RFBJX0NIRUNLU1VNX1JFQURZCQlCSVQoMzApCisjZGVmaW5lIERQSV9DSEVDS1NVTV9FTgkJCUJJ
VCgzMSkKKworI2RlZmluZSBEUElfRFVNTVkJCTB4NTAKKyNkZWZpbmUgRFBJX0RVTU1ZX01BU0sJ
CQkoMHhGRkZGRkZGRiA8PCAwKQorCisjZGVmaW5lIERQSV9UR0VOX1ZXSURUSF9MRVZFTgkweDY4
CisjZGVmaW5lIERQSV9UR0VOX1ZQT1JDSF9MRVZFTgkweDZDCisjZGVmaW5lIERQSV9UR0VOX1ZX
SURUSF9ST0RECTB4NzAKKyNkZWZpbmUgRFBJX1RHRU5fVlBPUkNIX1JPREQJMHg3NAorI2RlZmlu
ZSBEUElfVEdFTl9WV0lEVEhfUkVWRU4JMHg3OAorI2RlZmluZSBEUElfVEdFTl9WUE9SQ0hfUkVW
RU4JMHg3QworCisjZGVmaW5lIERQSV9FU0FWX1ZUSU1JTkdfTE9ERAkweDgwCisjZGVmaW5lIEVT
QVZfVk9GU1RfTE9ERAkJCSgweEZGRiA8PCAwKQorI2RlZmluZSBFU0FWX1ZXSURfTE9ERAkJCSgw
eEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfRVNBVl9WVElNSU5HX0xFVkVOCTB4ODQKKyNkZWZp
bmUgRVNBVl9WT0ZTVF9MRVZFTgkJKDB4RkZGIDw8IDApCisjZGVmaW5lIEVTQVZfVldJRF9MRVZF
TgkJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfRVNBVl9WVElNSU5HX1JPREQJMHg4OAor
I2RlZmluZSBFU0FWX1ZPRlNUX1JPREQJCQkoMHhGRkYgPDwgMCkKKyNkZWZpbmUgRVNBVl9WV0lE
X1JPREQJCQkoMHhGRkYgPDwgMTYpCisKKyNkZWZpbmUgRFBJX0VTQVZfVlRJTUlOR19SRVZFTgkw
eDhDCisjZGVmaW5lIEVTQVZfVk9GU1RfUkVWRU4JCSgweEZGRiA8PCAwKQorI2RlZmluZSBFU0FW
X1ZXSURfUkVWRU4JCQkoMHhGRkYgPDwgMTYpCisKKyNkZWZpbmUgRFBJX0VTQVZfRlRJTUlORwkw
eDkwCisjZGVmaW5lIEVTQVZfRk9GU1RfT0RECQkJKDB4RkZGIDw8IDApCisjZGVmaW5lIEVTQVZf
Rk9GU1RfRVZFTgkJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBEUElfQ0xQRl9TRVRUSU5HCTB4
OTQKKyNkZWZpbmUgQ0xQRl9UWVBFCQkJKDB4MyA8PCAwKQorI2RlZmluZSBST1VORF9FTgkJCUJJ
VCg0KQorCisjZGVmaW5lIERQSV9ZX0xJTUlUCQkweDk4CisjZGVmaW5lIFlfTElNSU5UX0JPVAkJ
CTAKKyNkZWZpbmUgWV9MSU1JTlRfQk9UX01BU0sJCSgweEZGRiA8PCAwKQorI2RlZmluZSBZX0xJ
TUlOVF9UT1AJCQkxNgorI2RlZmluZSBZX0xJTUlOVF9UT1BfTUFTSwkJKDB4RkZGIDw8IDE2KQor
CisjZGVmaW5lIERQSV9DX0xJTUlUCQkweDlDCisjZGVmaW5lIENfTElNSVRfQk9UCQkJMAorI2Rl
ZmluZSBDX0xJTUlUX0JPVF9NQVNLCQkoMHhGRkYgPDwgMCkKKyNkZWZpbmUgQ19MSU1JVF9UT1AJ
CQkxNgorI2RlZmluZSBDX0xJTUlUX1RPUF9NQVNLCQkoMHhGRkYgPDwgMTYpCisKKyNkZWZpbmUg
RFBJX1lVVjQyMl9TRVRUSU5HCTB4QTAKKyNkZWZpbmUgVVZfU1dBUAkJCQlCSVQoMCkKKyNkZWZp
bmUgQ1JfREVMU0VMCQkJQklUKDQpCisjZGVmaW5lIENCX0RFTFNFTAkJCUJJVCg1KQorI2RlZmlu
ZSBZX0RFTFNFTAkJCUJJVCg2KQorI2RlZmluZSBERV9ERUxTRUwJCQlCSVQoNykKKworI2RlZmlu
ZSBEUElfRU1CU1lOQ19TRVRUSU5HCTB4QTQKKyNkZWZpbmUgRU1CU1lOQ19SX0NSX0VOCQkJQklU
KDApCisjZGVmaW5lIEVNUFNZTkNfR19ZX0VOCQkJQklUKDEpCisjZGVmaW5lIEVNUFNZTkNfQl9D
Ql9FTgkJCUJJVCgyKQorI2RlZmluZSBFU0FWX0ZfSU5WCQkJQklUKDQpCisjZGVmaW5lIEVTQVZf
Vl9JTlYJCQlCSVQoNSkKKyNkZWZpbmUgRVNBVl9IX0lOVgkJCUJJVCg2KQorI2RlZmluZSBFU0FW
X0NPREVfTUFOCQkJQklUKDgpCisjZGVmaW5lIFZTX09VVF9TRUwJCQkoMHg3IDw8IDEyKQorCisj
ZGVmaW5lIERQSV9FU0FWX0NPREVfU0VUMAkweEE4CisjZGVmaW5lIEVTQVZfQ09ERTAJCQkoMHhG
RkYgPDwgMCkKKyNkZWZpbmUgRVNBVl9DT0RFMQkJCSgweEZGRiA8PCAxNikKKworI2RlZmluZSBE
UElfRVNBVl9DT0RFX1NFVDEJMHhBQworI2RlZmluZSBFU0FWX0NPREUyCQkJKDB4RkZGIDw8IDAp
CisjZGVmaW5lIEVTQVZfQ09ERTNfTVNCCQkJQklUKDE2KQorCisjZGVmaW5lIERQSV9IX0ZSRV9D
T04JCTB4RTAKKyNkZWZpbmUgSF9GUkVfMk4JCQlCSVQoMjUpCisjZW5kaWYgLyogX19NVEtfRFBJ
X1JFR1NfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1f
ZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwppbmRleCA3Mzlj
M2U5Li40MzUwNWU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2Ry
bV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuYwpAQCAt
NTIzLDYgKzUyMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICogY29uc3QgbXRr
X2RybV9kcml2ZXJzW10gPSB7CiAJJm10a19kaXNwX292bF9kcml2ZXIsCiAJJm10a19kc2lfZHJp
dmVyLAogCSZtdGtfbWlwaV90eF9kcml2ZXIsCisJJm10a19kcGlfZHJpdmVyLAogfTsKIAogc3Rh
dGljIGludCBfX2luaXQgbXRrX2RybV9pbml0KHZvaWQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw
dS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t
dGtfZHJtX2Rydi5oCmluZGV4IDNiNWIyNTQuLmM2MGU0NjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv
Z3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRp
YXRlay9tdGtfZHJtX2Rydi5oCkBAIC01MSw1ICs1MSw2IEBAIHN0cnVjdCBtdGtfZHJtX3ByaXZh
dGUgewogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2Rpc3Bfb3ZsX2RyaXZlcjsK
IGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19kc2lfZHJpdmVyOwogZXh0ZXJuIHN0
cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXRrX21pcGlfdHhfZHJpdmVyOworZXh0ZXJuIHN0cnVjdCBw
bGF0Zm9ybV9kcml2ZXIgbXRrX2RwaV9kcml2ZXI7CiAKICNlbmRpZiAvKiBNVEtfRFJNX0RSVl9I
ICovCi0tIAoyLjYuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au
b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2
ZWwK