[PATCH 9/9] Refactor devices build

Ladislav Michl <[email protected]> Sat, 25 Jan 2020 10:49:02 +0100
Newsgroups gmane.linux.drivers.gnokii
Message-ID <20200125094902.GI143000@lenoch>
SW50cm9kdWNlIGJhc2ljIGRldmljZSBwbHVnaW4gYXJjaGl0ZWN0dXJlLCB3aGljaCBhbGxvd3Mg
dG8KcmVtb3ZlICNpZmRlZnMgZnJvbSBkZXZpY2UgZHJpdmVycyBhbmQgY29tcGlsZSB0aGVtIG9u
bHkgd2hlbgpzZWxlY3RlZCBhbmQgYWxzbyByZW1vdmUgc3R1YiBmdW5jdGlvbnMgcmV0dXJuaW5n
IC0xIGZvciBub3QKY29tcGlsZWQgZHJpdmVycy4KQXMgc29tZSBmdW5jdGlvbiBwcm90b3R5cGVz
IGRpZmZlcnMgYmV0d2VlbiBkZXZpY2UgZHJpdmVycywKdXNlIF8gcHJlZml4ZWQgY29tcGF0aWJp
bGl0eSB3cmFwcGVycyB3aGljaCBhcmUgZXhwZWN0ZWQKdG8gdmFuaXNoIGFnYWluIHdpdGggb25l
IGJ5IG9uZSBkcml2ZXIgdW5pZmljYXRpb24uCk9uY2UgdGhlcmUsIG1vdmUgZGV2aWNlIGRldGVj
dGlvbiBjb2RlIGluIGNvbmZpZ3VyZS5hYyB0byBsaXZlCmluIG9uZSBwbGFjZS4KLS0tCiBjb21t
b24vZGV2aWNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNDUgKysrKysrKysr
Ky0tLS0tLS0tCiBjb21tb24vZGV2aWNlcy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAg
fCAgNTcgKy0tCiBjb21tb24vZGV2aWNlcy9ibHVldG9vdGguYyAgICAgICAgICAgICAgICAgICAg
fCAgMzEgLS0KIGNvbW1vbi9kZXZpY2VzL2RrdTJsaWJ1c2IuYyAgICAgICAgICAgICAgICAgICB8
ICAzMCAtLQogY29tbW9uL2RldmljZXMvaXJkYS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwg
IDI3IC0tCiBjb21tb24vZGV2aWNlcy9vc3hibHVldG9vdGgubSAgICAgICAgICAgICAgICAgfCAg
IDggKy0KIGNvbW1vbi9kZXZpY2VzL3NvY2tldHBob25ldC5jICAgICAgICAgICAgICAgICB8ICAz
OCArLQogY29tbW9uL2RldmljZXMvdGNwLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMy
IC0tCiBjb21tb24vZGV2aWNlcy91bml4Ymx1ZXRvb3RoLmMgICAgICAgICAgICAgICAgfCAgMTMg
Ky0KIGNvbW1vbi9kZXZpY2VzL3VuaXhpcmRhLmMgICAgICAgICAgICAgICAgICAgICB8ICAgOCAr
LQogY29tbW9uL2RldmljZXMvd2luYmx1ZXRvb3RoLmMgICAgICAgICAgICAgICAgIHwgIDEwICst
CiBjb21tb24vZGV2aWNlcy93aW5pcmRhLmMgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKy0K
IGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2OSArKy0t
CiAuLi4vZGV2aWNlcy97dW5peGJsdWV0b290aC5oID0+IGJsdWV0b290aC5ofSAgfCAgIDYgKy0K
IGluY2x1ZGUvZGV2aWNlcy91bml4aXJkYS5oICAgICAgICAgICAgICAgICAgICB8ICAxNSAtCiBp
bmNsdWRlL2dub2tpaS9kYXRhLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTUgKy0KIDE2
IGZpbGVzIGNoYW5nZWQsIDI5NyBpbnNlcnRpb25zKCspLCA0MTQgZGVsZXRpb25zKC0pCiBkZWxl
dGUgbW9kZSAxMDA2NDQgY29tbW9uL2RldmljZXMvYmx1ZXRvb3RoLmMKIGRlbGV0ZSBtb2RlIDEw
MDY0NCBjb21tb24vZGV2aWNlcy9pcmRhLmMKIHJlbmFtZSBpbmNsdWRlL2RldmljZXMve3VuaXhi
bHVldG9vdGguaCA9PiBibHVldG9vdGguaH0gKDg2JSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBpbmNs
dWRlL2RldmljZXMvdW5peGlyZGEuaAoKZGlmZiAtLWdpdCBhL2NvbW1vbi9kZXZpY2UuYyBiL2Nv
bW1vbi9kZXZpY2UuYwppbmRleCBlODJkYjExMS4uMmZiNmI0YzMgMTAwNjQ0Ci0tLSBhL2NvbW1v
bi9kZXZpY2UuYworKysgYi9jb21tb24vZGV2aWNlLmMKQEAgLTE5LDEzICsxOSwxNzIgQEAKICNp
bmNsdWRlICJnbm9raWkuaCIKICNpbmNsdWRlICJnbm9raWktaW50ZXJuYWwuaCIKICNpbmNsdWRl
ICJkZXZpY2UuaCIKKworI2lmZGVmIEhBVkVfQkxVRVRPT1RICisjaW5jbHVkZSAiZGV2aWNlcy9i
bHVldG9vdGguaCIKK3N0YXRpYyBpbnQKK19ibHVldG9vdGhfb3Blbihjb25zdCBjaGFyICpmaWxl
LCBpbnQgd2l0aF9vZGRfcGFyaXR5LCBpbnQgd2l0aF9hc3luYywKKwkJaW50IHdpdGhfaHdfaGFu
ZHNoYWtlLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkKK3sKKwlyZXR1cm4gYmx1ZXRv
b3RoX29wZW4oc3RhdGUtPmNvbmZpZy5wb3J0X2RldmljZSwgc3RhdGUtPmNvbmZpZy5yZmNvbW1f
Y24sIHN0YXRlKTsKK30KKworY29uc3Qgc3RhdGljIGduX2RldmljZV9vcHMgX2JsdWV0b290aF9v
cHMgPSB7CisJLm9wZW4JPSBfYmx1ZXRvb3RoX29wZW4sCisJLmNsb3NlCT0gYmx1ZXRvb3RoX2Ns
b3NlLAorCS5zZWxlY3QJPSBibHVldG9vdGhfc2VsZWN0LAorCS5yZWFkCT0gYmx1ZXRvb3RoX3Jl
YWQsCisJLndyaXRlCT0gYmx1ZXRvb3RoX3dyaXRlLAorfTsKKyMgIGRlZmluZSBibHVldG9vdGhf
b3BzICZfYmx1ZXRvb3RoX29wcworI2Vsc2UKKyMgIGRlZmluZSBibHVldG9vdGhfb3BzCU5VTEwK
KyNlbmRpZgorCisjaWZkZWYgSEFWRV9MSUJVU0IKKyNpbmNsdWRlICJkZXZpY2VzL2RrdTJsaWJ1
c2IuaCIKK3N0YXRpYyBpbnQKK19ka3UybGlidXNiX29wZW4oY29uc3QgY2hhciAqZmlsZSwgaW50
IHdpdGhfb2RkX3Bhcml0eSwgaW50IHdpdGhfYXN5bmMsCisJCSBpbnQgd2l0aF9od19oYW5kc2hh
a2UsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQoreworCXJldHVybiBmYnVzZGt1MnVz
Yl9vcGVuKHN0YXRlKTsKK30KKworc3RhdGljIGludAorX2RrdTJsaWJ1c2JfY2xvc2UoaW50IGZk
LCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkKK3sKKwlyZXR1cm4gZmJ1c2RrdTJ1c2Jf
Y2xvc2Uoc3RhdGUpOworfQorCitzdGF0aWMgaW50CitfZGt1MnVzYl9zZWxlY3Qoc3RydWN0IHRp
bWV2YWwgKnRpbWVvdXQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKTsKK3sKKwlyZXR1
cm4gZmJ1c2RrdTJ1c2Jfc2VsZWN0KHRpbWVvdXQsIHN0YXRlKTsKK30KKworc3RhdGljIGludAor
X2RrdTJ1c2JfcmVhZChfX3B0cl90IGJ5dGVzLCBpbnQgc2l6ZSwgc3RydWN0IGduX3N0YXRlbWFj
aGluZSAqc3RhdGUpCit7CisJcmV0dXJuIGZidXNka3UydXNiX3JlYWQoYnl0ZXMsIHNpemUsIHN0
YXRlKTsKK30KKworc3RhdGljIGludAorX2RrdTJ1c2Jfd3JpdGUoaW50IGZkLCBjb25zdCBfX3B0
cl90IGJ5dGVzLCBpbnQgc2l6ZSwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCit7CisJ
cmV0dXJuIGZidXNka3UydXNiX3dyaXRlKGJ5dGVzLCBzaXplLCBzdGF0ZSk7Cit9CisKK2NvbnN0
IHN0YXRpYyBnbl9kZXZpY2Vfb3BzIF9ka3UybGlidXNiX29wcyA9IHsKKwkub3Blbgk9IF9ka3Uy
bGlidXNiX29wZW4sCisJLmNsb3NlCT0gX2RrdTJ1c2JfY2xvc2UsCisJLnNlbGVjdAk9IF9ka3Uy
dXNiX3NlbGVjdCwKKwkucmVhZAk9IF9ka3UydXNiX3JlYWQsCisJLndyaXRlCT0gX2RrdTJ1c2Jf
d3JpdGUsCit9OworIyAgZGVmaW5lIGRrdTJsaWJ1c2Jfb3BzCSZfZGt1MmxpYnVzYl9vcHMKKyNl
bHNlCisjICBkZWZpbmUgZGt1MmxpYnVzYl9vcHMJTlVMTAorI2VuZGlmCisKKyNpZmRlZiBIQVZF
X0lSREEKICNpbmNsdWRlICJkZXZpY2VzL2lyZGEuaCIKLSNpbmNsdWRlICJkZXZpY2VzL3VuaXhi
bHVldG9vdGguaCIKLSNpbmNsdWRlICJkZXZpY2VzL3RjcC5oIgorc3RhdGljIGludAorX2lyZGFf
b3Blbihjb25zdCBjaGFyICpmaWxlLCBpbnQgd2l0aF9vZGRfcGFyaXR5LCBpbnQgd2l0aF9hc3lu
YywKKwkgICBpbnQgd2l0aF9od19oYW5kc2hha2UsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0
YXRlKQoreworCXJldHVybiBpcmRhX29wZW4oc3RhdGUpOworfQorCitjb25zdCBzdGF0aWMgZ25f
ZGV2aWNlX29wcyBfaXJkYV9vcHMgPSB7CisJLm9wZW4JPSBfaXJkYV9vcGVuLAorCS5jbG9zZQk9
IGlyZGFfY2xvc2UsCisJLnNlbGVjdAk9IGlyZGFfc2VsZWN0LAorCS5yZWFkCT0gaXJkYV9yZWFk
LAorCS53cml0ZQk9IGlyZGFfd3JpdGUsCit9OworIyAgZGVmaW5lIGlyZGFfb3BzCSZfaXJkYV9v
cHMKKyNlbHNlCisjICBkZWZpbmUgaXJkYV9vcHMJTlVMTAorI2VuZGlmCisKICNpbmNsdWRlICJk
ZXZpY2VzL3NlcmlhbC5oIgotI2luY2x1ZGUgImRldmljZXMvdGVrcmFtLmgiCi0jaW5jbHVkZSAi
ZGV2aWNlcy9ka3UybGlidXNiLmgiCitjb25zdCBzdGF0aWMgZ25fZGV2aWNlX29wcyBfc2VyaWFs
X29wcyA9IHsKKwkub3Blbgk9IHNlcmlhbF9vcGVuZGV2aWNlLAorCS5jbG9zZQk9IHNlcmlhbF9j
bG9zZSwKKwkuc2VsZWN0CT0gc2VyaWFsX3NlbGVjdCwKKwkucmVhZAk9IHNlcmlhbF9yZWFkLAor
CS53cml0ZQk9IHNlcmlhbF93cml0ZSwKKwkubnJlY2VpdmVkID0gc2VyaWFsX25yZWNlaXZlZCwK
KwkuZmx1c2gJPSBzZXJpYWxfZmx1c2gsCisJLmNoYW5nZXNwZWVkID0gc2VyaWFsX2NoYW5nZXNw
ZWVkLAorCS5zZXRkdHJydHMgPSBzZXJpYWxfc2V0ZHRycnRzLAorfTsKKyNkZWZpbmUgc2VyaWFs
X29wcwkmX3NlcmlhbF9vcHMKKworI2lmZGVmIEhBVkVfU09DS0VUUEhPTkVUCiAjaW5jbHVkZSAi
ZGV2aWNlcy9zb2NrZXRwaG9uZXQuaCIKK3N0YXRpYyBpbnQKK19zb2NrZXRwaG9uZXRfb3Blbihj
b25zdCBjaGFyICpmaWxlLCBpbnQgd2l0aF9vZGRfcGFyaXR5LCBpbnQgd2l0aF9hc3luYywKKwkJ
ICAgaW50IHdpdGhfaHdfaGFuZHNoYWtlLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkK
K3sKKwlyZXR1cm4gc29ja2V0cGhvbmV0X29wZW4oZmlsZSwgd2l0aF9hc3luYywgc3RhdGUpOwor
fQorCitzdGF0aWMgaW50Citfc29ja2V0cGhvbmV0X2Nsb3NlKGludCBmZCwgc3RydWN0IGduX3N0
YXRlbWFjaGluZSAqc3RhdGUpCit7CisJcmV0dXJuIHNvY2tldHBob25ldF9jbG9zZShzdGF0ZSk7
Cit9CisKK2NvbnN0IHN0YXRpYyBnbl9kZXZpY2Vfb3BzIF9waG9uZXRfb3BzID0geworCS5vcGVu
CT0gX3NvY2tldHBob25ldF9vcGVuLAorCS5jbG9zZQk9IF9zb2NrZXRwaG9uZXRfY2xvc2UsCisJ
LnNlbGVjdAk9IHNvY2tldHBob25ldF9zZWxlY3QsCisJLnJlYWQJPSBzb2NrZXRwaG9uZXRfcmVh
ZCwKKwkud3JpdGUJPSBzb2NrZXRwaG9uZXRfd3JpdGUsCit9OworIyAgZGVmaW5lIHBob25ldF9v
cHMJJl9waG9uZXRfb3BzCisjZWxzZQorIyAgZGVmaW5lIHBob25ldF9vcHMJTlVMTAorI2VuZGlm
CisKKyNpZm5kZWYgV0lOMzIKKyNpbmNsdWRlICJkZXZpY2VzL3RjcC5oIgorc3RhdGljIGludAor
X3RjcF9vcGVuKGNvbnN0IGNoYXIgKmZpbGUsIGludCB3aXRoX29kZF9wYXJpdHksIGludCB3aXRo
X2FzeW5jLAorCSAgaW50IHdpdGhfaHdfaGFuZHNoYWtlLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5l
ICpzdGF0ZSkKK3sKKwlyZXR1cm4gdGNwX29wZW5kZXZpY2UoZmlsZSwgd2l0aF9hc3luYywgc3Rh
dGUpOworfQorCitjb25zdCBzdGF0aWMgZ25fZGV2aWNlX29wcyBfdGNwX29wcyA9IHsKKwkub3Bl
bgk9IF90Y3Bfb3BlbiwKKwkuY2xvc2UJPSB0Y3BfY2xvc2UsCisJLnNlbGVjdAk9IHRjcF9zZWxl
Y3QsCisJLnJlYWQJPSB0Y3BfcmVhZCwKKwkud3JpdGUJPSB0Y3Bfd3JpdGUsCit9OworIyAgZGVm
aW5lIHRjcF9vcHMJJl90Y3Bfb3BzCisjZWxzZQorIyAgZGVmaW5lIHRjcF9vcHMJTlVMTAorI2Vu
ZGlmCisKKyNpbmNsdWRlICJkZXZpY2VzL3Rla3JhbS5oIgorc3RhdGljIGludAorX3Rla3JhbV9v
cGVuKGNvbnN0IGNoYXIgKmZpbGUsIGludCB3aXRoX29kZF9wYXJpdHksIGludCB3aXRoX2FzeW5j
LAorCSAgICAgaW50IHdpdGhfaHdfaGFuZHNoYWtlLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpz
dGF0ZSkKK3sKKwlyZXR1cm4gdGVrcmFtX29wZW4oZmlsZSwgc3RhdGUpOworfQorCitjb25zdCBz
dGF0aWMgZ25fZGV2aWNlX29wcyBfdGVrcmFtX29wcyA9IHsKKwkub3Blbgk9IF90ZWtyYW1fb3Bl
biwKKwkuY2xvc2UJPSB0ZWtyYW1fY2xvc2UsCisJLnNlbGVjdAk9IHRla3JhbV9zZWxlY3QsCisJ
LnJlYWQJPSB0ZWtyYW1fcmVhZCwKKwkud3JpdGUJPSB0ZWtyYW1fd3JpdGUsCit9OworI2RlZmlu
ZSB0ZWtyYW1fb3BzCSZfdGVrcmFtX29wcwogCiBHTk9LSUlfQVBJIGludCBkZXZpY2VfZ2V0ZmQo
c3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCiB7CkBAIC0zNiw0MCArMTk1LDQ2IEBAIGlu
dCBkZXZpY2Vfb3Blbihjb25zdCBjaGFyICpmaWxlLCBpbnQgd2l0aF9vZGRfcGFyaXR5LCBpbnQg
d2l0aF9hc3luYywKIAkJaW50IHdpdGhfaHdfaGFuZHNoYWtlLCBnbl9jb25uZWN0aW9uX3R5cGUg
ZGV2aWNlX3R5cGUsCiAJCXN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQogewotCXN0YXRl
LT5kZXZpY2UudHlwZSA9IGRldmljZV90eXBlOworCXN0YXRlLT5kZXZpY2Uub3BzID0gTlVMTDsK
IAlzdGF0ZS0+ZGV2aWNlLmRldmljZV9pbnN0YW5jZSA9IE5VTEw7CiAKIAlkcHJpbnRmKCJkZXZp
Y2U6IG9wZW5pbmcgZGV2aWNlICVzXG4iLCAoZGV2aWNlX3R5cGUgPT0gR05fQ1RfREtVMkxJQlVT
QikgPyAiVVNCIiA6IGZpbGUpOwogCi0Jc3dpdGNoIChzdGF0ZS0+ZGV2aWNlLnR5cGUpIHsKLQlj
YXNlIEdOX0NUX0RLVTI6CisJc3dpdGNoIChkZXZpY2VfdHlwZSkgewogCWNhc2UgR05fQ1RfU2Vy
aWFsOgorCWNhc2UgR05fQ1RfREFVOVA6CisJY2FzZSBHTl9DVF9ETFIzUDoKIAljYXNlIEdOX0NU
X0luZnJhcmVkOgotCQlzdGF0ZS0+ZGV2aWNlLmZkID0gc2VyaWFsX29wZW5kZXZpY2UoZmlsZSwg
d2l0aF9vZGRfcGFyaXR5LCB3aXRoX2FzeW5jLCB3aXRoX2h3X2hhbmRzaGFrZSwgc3RhdGUpOwor
CWNhc2UgR05fQ1RfTTJCVVM6CisJY2FzZSBHTl9DVF9ES1UyOgorCQlzdGF0ZS0+ZGV2aWNlLm9w
cyA9IHNlcmlhbF9vcHM7CiAJCWJyZWFrOwogCWNhc2UgR05fQ1RfSXJkYToKLQkJc3RhdGUtPmRl
dmljZS5mZCA9IGlyZGFfb3BlbihzdGF0ZSk7CisJCXN0YXRlLT5kZXZpY2Uub3BzID0gaXJkYV9v
cHM7CiAJCWJyZWFrOwogCWNhc2UgR05fQ1RfQmx1ZXRvb3RoOgotCQlzdGF0ZS0+ZGV2aWNlLmZk
ID0gYmx1ZXRvb3RoX29wZW4oc3RhdGUtPmNvbmZpZy5wb3J0X2RldmljZSwgc3RhdGUtPmNvbmZp
Zy5yZmNvbW1fY24sIHN0YXRlKTsKKwkJc3RhdGUtPmRldmljZS5vcHMgPSBibHVldG9vdGhfb3Bz
OwogCQlicmVhazsKIAljYXNlIEdOX0NUX1Rla3JhbToKLQkJc3RhdGUtPmRldmljZS5mZCA9IHRl
a3JhbV9vcGVuKGZpbGUsIHN0YXRlKTsKKwkJc3RhdGUtPmRldmljZS5vcHMgPSB0ZWtyYW1fb3Bz
OwogCQlicmVhazsKIAljYXNlIEdOX0NUX1RDUDoKLQkJc3RhdGUtPmRldmljZS5mZCA9IHRjcF9v
cGVuZGV2aWNlKGZpbGUsIHdpdGhfYXN5bmMsIHN0YXRlKTsKKwkJc3RhdGUtPmRldmljZS5vcHMg
PSB0Y3Bfb3BzOwogCQlicmVhazsKIAljYXNlIEdOX0NUX0RLVTJMSUJVU0I6Ci0JCXN0YXRlLT5k
ZXZpY2UuZmQgPSBmYnVzZGt1MnVzYl9vcGVuKHN0YXRlKTsKKwkJc3RhdGUtPmRldmljZS5vcHMg
PSBka3UybGlidXNiX29wczsKIAkJYnJlYWs7CiAJY2FzZSBHTl9DVF9TT0NLRVRQSE9ORVQ6Ci0J
CXN0YXRlLT5kZXZpY2UuZmQgPSBzb2NrZXRwaG9uZXRfb3BlbihmaWxlLCB3aXRoX2FzeW5jLCBz
dGF0ZSk7CisJCXN0YXRlLT5kZXZpY2Uub3BzID0gcGhvbmV0X29wczsKIAkJYnJlYWs7CiAJZGVm
YXVsdDoKLQkJc3RhdGUtPmRldmljZS5mZCA9IC0xOwogCQlicmVhazsKIAl9CiAKKwlpZiAoIXN0
YXRlLT5kZXZpY2Uub3BzKQorCQlyZXR1cm4gMDsKKworCXN0YXRlLT5kZXZpY2UuZmQgPSBzdGF0
ZS0+ZGV2aWNlLm9wcy0+b3BlbihmaWxlLCB3aXRoX29kZF9wYXJpdHksIHdpdGhfYXN5bmMsIHdp
dGhfaHdfaGFuZHNoYWtlLCBzdGF0ZSk7CiAJaWYgKHN0YXRlLT5kZXZpY2UuZmQgPCAwKQogCQly
ZXR1cm4gMDsKIApAQCAtOTUsMzMgKzI2MCw3IEBAIHZvaWQgZGV2aWNlX2Nsb3NlKHN0cnVjdCBn
bl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQogCWlmIChkZXZpY2Vfc2NyaXB0KHN0YXRlLT5kZXZpY2Uu
ZmQsIDAsIHN0YXRlKSA9PSAtMSkKIAkJZHByaW50ZigiZ25va2lpIGRldmljZSBjbG9zZTogZGlz
Y29ubmVjdF9zY3JpcHQgZmFpbHVyZVxuIik7CiAKLQlzd2l0Y2ggKHN0YXRlLT5kZXZpY2UudHlw
ZSkgewotCWNhc2UgR05fQ1RfREtVMjoKLQljYXNlIEdOX0NUX1NlcmlhbDoKLQljYXNlIEdOX0NU
X0luZnJhcmVkOgotCQlzZXJpYWxfY2xvc2Uoc3RhdGUtPmRldmljZS5mZCwgc3RhdGUpOwotCQli
cmVhazsKLQljYXNlIEdOX0NUX0lyZGE6Ci0JCWlyZGFfY2xvc2Uoc3RhdGUtPmRldmljZS5mZCwg
c3RhdGUpOwotCQlicmVhazsKLQljYXNlIEdOX0NUX0JsdWV0b290aDoKLQkJYmx1ZXRvb3RoX2Ns
b3NlKHN0YXRlLT5kZXZpY2UuZmQsIHN0YXRlKTsKLQkJYnJlYWs7Ci0JY2FzZSBHTl9DVF9UZWty
YW06Ci0JCXRla3JhbV9jbG9zZShzdGF0ZS0+ZGV2aWNlLmZkLCBzdGF0ZSk7Ci0JCWJyZWFrOwot
CWNhc2UgR05fQ1RfVENQOgotCQl0Y3BfY2xvc2Uoc3RhdGUtPmRldmljZS5mZCwgc3RhdGUpOwot
CQlicmVhazsKLQljYXNlIEdOX0NUX0RLVTJMSUJVU0I6Ci0JCWZidXNka3UydXNiX2Nsb3NlKHN0
YXRlKTsKLQkJYnJlYWs7Ci0JY2FzZSBHTl9DVF9TT0NLRVRQSE9ORVQ6Ci0JCXNvY2tldHBob25l
dF9jbG9zZShzdGF0ZSk7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCWJyZWFrOwotCX0KKwlzdGF0
ZS0+ZGV2aWNlLm9wcy0+Y2xvc2Uoc3RhdGUtPmRldmljZS5mZCwgc3RhdGUpOwogCiAJZnJlZShz
dGF0ZS0+ZGV2aWNlLmRldmljZV9pbnN0YW5jZSk7CiAJc3RhdGUtPmRldmljZS5kZXZpY2VfaW5z
dGFuY2UgPSBOVUxMOwpAQCAtMTI5LDE0NCArMjY4LDQ4IEBAIHZvaWQgZGV2aWNlX2Nsb3NlKHN0
cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQogCiB2b2lkIGRldmljZV9zZXRkdHJydHMoaW50
IGR0ciwgaW50IHJ0cywgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCiB7Ci0Jc3dpdGNo
IChzdGF0ZS0+ZGV2aWNlLnR5cGUpIHsKLQljYXNlIEdOX0NUX0RLVTI6Ci0JY2FzZSBHTl9DVF9T
ZXJpYWw6Ci0JY2FzZSBHTl9DVF9JbmZyYXJlZDoKKwlpZiAoc3RhdGUtPmRldmljZS5vcHMtPnNl
dGR0cnJ0cykgewogCQlkcHJpbnRmKCJkZXZpY2U6IHNldHRpbmcgUlRTIHRvICVzIGFuZCBEVFIg
dG8gJXNcbiIsIHJ0cyA/ICJoaWdoIiA6ICJsb3ciLCBkdHIgPyAiaGlnaCIgOiAibG93Iik7Ci0J
CXNlcmlhbF9zZXRkdHJydHMoc3RhdGUtPmRldmljZS5mZCwgZHRyLCBydHMsIHN0YXRlKTsKLQkJ
YnJlYWs7Ci0JY2FzZSBHTl9DVF9JcmRhOgotCWNhc2UgR05fQ1RfQmx1ZXRvb3RoOgotCWNhc2Ug
R05fQ1RfVGVrcmFtOgotCWNhc2UgR05fQ1RfVENQOgotCWNhc2UgR05fQ1RfREtVMkxJQlVTQjoK
LQljYXNlIEdOX0NUX1NPQ0tFVFBIT05FVDoKLQlkZWZhdWx0OgotCQlicmVhazsKKwkJc3RhdGUt
PmRldmljZS5vcHMtPnNldGR0cnJ0cyhzdGF0ZS0+ZGV2aWNlLmZkLCBkdHIsIHJ0cywgc3RhdGUp
OwogCX0KIH0KIAogdm9pZCBkZXZpY2VfY2hhbmdlc3BlZWQoaW50IHNwZWVkLCBzdHJ1Y3QgZ25f
c3RhdGVtYWNoaW5lICpzdGF0ZSkKIHsKLQlzd2l0Y2ggKHN0YXRlLT5kZXZpY2UudHlwZSkgewot
CWNhc2UgR05fQ1RfREtVMjoKLQljYXNlIEdOX0NUX1NlcmlhbDoKLQljYXNlIEdOX0NUX0luZnJh
cmVkOgorCWlmIChzdGF0ZS0+ZGV2aWNlLm9wcy0+Y2hhbmdlc3BlZWQpIHsKIAkJZHByaW50Zigi
ZGV2aWNlOiBzZXR0aW5nIHNwZWVkIHRvICVkXG4iLCBzcGVlZCk7Ci0JCXNlcmlhbF9jaGFuZ2Vz
cGVlZChzdGF0ZS0+ZGV2aWNlLmZkLCBzcGVlZCwgc3RhdGUpOwotCQlicmVhazsKLQljYXNlIEdO
X0NUX1Rla3JhbToKLQkJZHByaW50ZigiZGV2aWNlOiBzZXR0aW5nIHNwZWVkIHRvICVkXG4iLCBz
cGVlZCk7Ci0JCXRla3JhbV9jaGFuZ2VzcGVlZChzdGF0ZS0+ZGV2aWNlLmZkLCBzcGVlZCwgc3Rh
dGUpOwotCQlicmVhazsKLQljYXNlIEdOX0NUX0lyZGE6Ci0JY2FzZSBHTl9DVF9CbHVldG9vdGg6
Ci0JY2FzZSBHTl9DVF9UQ1A6Ci0JY2FzZSBHTl9DVF9ES1UyTElCVVNCOgotCWNhc2UgR05fQ1Rf
U09DS0VUUEhPTkVUOgotCWRlZmF1bHQ6Ci0JCWJyZWFrOworCQlzdGF0ZS0+ZGV2aWNlLm9wcy0+
Y2hhbmdlc3BlZWQoc3RhdGUtPmRldmljZS5mZCwgc3BlZWQsIHN0YXRlKTsKIAl9CiB9CiAKIHNp
emVfdCBkZXZpY2VfcmVhZChfX3B0cl90IGJ1Ziwgc2l6ZV90IG5ieXRlcywgc3RydWN0IGduX3N0
YXRlbWFjaGluZSAqc3RhdGUpCiB7Ci0Jc3dpdGNoIChzdGF0ZS0+ZGV2aWNlLnR5cGUpIHsKLQlj
YXNlIEdOX0NUX0RLVTI6Ci0JY2FzZSBHTl9DVF9TZXJpYWw6Ci0JY2FzZSBHTl9DVF9JbmZyYXJl
ZDoKLQkJcmV0dXJuIHNlcmlhbF9yZWFkKHN0YXRlLT5kZXZpY2UuZmQsIGJ1ZiwgbmJ5dGVzLCBz
dGF0ZSk7Ci0JY2FzZSBHTl9DVF9JcmRhOgotCQlyZXR1cm4gaXJkYV9yZWFkKHN0YXRlLT5kZXZp
Y2UuZmQsIGJ1ZiwgbmJ5dGVzLCBzdGF0ZSk7Ci0JY2FzZSBHTl9DVF9CbHVldG9vdGg6Ci0JCXJl
dHVybiBibHVldG9vdGhfcmVhZChzdGF0ZS0+ZGV2aWNlLmZkLCBidWYsIG5ieXRlcywgc3RhdGUp
OwotCWNhc2UgR05fQ1RfVGVrcmFtOgotCQlyZXR1cm4gdGVrcmFtX3JlYWQoc3RhdGUtPmRldmlj
ZS5mZCwgYnVmLCBuYnl0ZXMsIHN0YXRlKTsKLQljYXNlIEdOX0NUX1RDUDoKLQkJcmV0dXJuIHRj
cF9yZWFkKHN0YXRlLT5kZXZpY2UuZmQsIGJ1ZiwgbmJ5dGVzLCBzdGF0ZSk7Ci0JY2FzZSBHTl9D
VF9ES1UyTElCVVNCOgotCQlyZXR1cm4gZmJ1c2RrdTJ1c2JfcmVhZChidWYsIG5ieXRlcywgc3Rh
dGUpOwotCWNhc2UgR05fQ1RfU09DS0VUUEhPTkVUOgotCQlyZXR1cm4gc29ja2V0cGhvbmV0X3Jl
YWQoc3RhdGUtPmRldmljZS5mZCwgYnVmLCBuYnl0ZXMsIHN0YXRlKTsKLQlkZWZhdWx0OgotCQli
cmVhazsKLQl9Ci0JcmV0dXJuIDA7CisJcmV0dXJuIHN0YXRlLT5kZXZpY2Uub3BzLT5yZWFkKHN0
YXRlLT5kZXZpY2UuZmQsIGJ1ZiwgbmJ5dGVzLCBzdGF0ZSk7CiB9CiAKIHNpemVfdCBkZXZpY2Vf
d3JpdGUoY29uc3QgX19wdHJfdCBidWYsIHNpemVfdCBuLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5l
ICpzdGF0ZSkKIHsKLQlzd2l0Y2ggKHN0YXRlLT5kZXZpY2UudHlwZSkgewotCWNhc2UgR05fQ1Rf
REtVMjoKLQljYXNlIEdOX0NUX1NlcmlhbDoKLQljYXNlIEdOX0NUX0luZnJhcmVkOgotCQlyZXR1
cm4gc2VyaWFsX3dyaXRlKHN0YXRlLT5kZXZpY2UuZmQsIGJ1Ziwgbiwgc3RhdGUpOwotCWNhc2Ug
R05fQ1RfSXJkYToKLQkJcmV0dXJuIGlyZGFfd3JpdGUoc3RhdGUtPmRldmljZS5mZCwgYnVmLCBu
LCBzdGF0ZSk7Ci0JY2FzZSBHTl9DVF9CbHVldG9vdGg6Ci0JCXJldHVybiBibHVldG9vdGhfd3Jp
dGUoc3RhdGUtPmRldmljZS5mZCwgYnVmLCBuLCBzdGF0ZSk7Ci0JY2FzZSBHTl9DVF9UZWtyYW06
Ci0JCXJldHVybiB0ZWtyYW1fd3JpdGUoc3RhdGUtPmRldmljZS5mZCwgYnVmLCBuLCBzdGF0ZSk7
Ci0JY2FzZSBHTl9DVF9UQ1A6Ci0JCXJldHVybiB0Y3Bfd3JpdGUoc3RhdGUtPmRldmljZS5mZCwg
YnVmLCBuLCBzdGF0ZSk7Ci0JY2FzZSBHTl9DVF9ES1UyTElCVVNCOgotCQlyZXR1cm4gZmJ1c2Rr
dTJ1c2Jfd3JpdGUoYnVmLCBuLCBzdGF0ZSk7Ci0JY2FzZSBHTl9DVF9TT0NLRVRQSE9ORVQ6Ci0J
CXJldHVybiBzb2NrZXRwaG9uZXRfd3JpdGUoc3RhdGUtPmRldmljZS5mZCwgYnVmLCBuLCBzdGF0
ZSk7Ci0JZGVmYXVsdDoKLQkJYnJlYWs7Ci0JfQotCXJldHVybiAwOworCXJldHVybiBzdGF0ZS0+
ZGV2aWNlLm9wcy0+d3JpdGUoc3RhdGUtPmRldmljZS5mZCwgYnVmLCBuLCBzdGF0ZSk7CiB9CiAK
IGludCBkZXZpY2Vfc2VsZWN0KHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0LCBzdHJ1Y3QgZ25fc3Rh
dGVtYWNoaW5lICpzdGF0ZSkKIHsKLQlzd2l0Y2ggKHN0YXRlLT5kZXZpY2UudHlwZSkgewotCWNh
c2UgR05fQ1RfREtVMjoKLQljYXNlIEdOX0NUX1NlcmlhbDoKLQljYXNlIEdOX0NUX0luZnJhcmVk
OgotCQlyZXR1cm4gc2VyaWFsX3NlbGVjdChzdGF0ZS0+ZGV2aWNlLmZkLCB0aW1lb3V0LCBzdGF0
ZSk7Ci0JY2FzZSBHTl9DVF9JcmRhOgotCQlyZXR1cm4gaXJkYV9zZWxlY3Qoc3RhdGUtPmRldmlj
ZS5mZCwgdGltZW91dCwgc3RhdGUpOwotCWNhc2UgR05fQ1RfQmx1ZXRvb3RoOgotCQlyZXR1cm4g
Ymx1ZXRvb3RoX3NlbGVjdChzdGF0ZS0+ZGV2aWNlLmZkLCB0aW1lb3V0LCBzdGF0ZSk7Ci0JY2Fz
ZSBHTl9DVF9UZWtyYW06Ci0JCXJldHVybiB0ZWtyYW1fc2VsZWN0KHN0YXRlLT5kZXZpY2UuZmQs
IHRpbWVvdXQsIHN0YXRlKTsKLQljYXNlIEdOX0NUX1RDUDoKLQkJcmV0dXJuIHRjcF9zZWxlY3Qo
c3RhdGUtPmRldmljZS5mZCwgdGltZW91dCwgc3RhdGUpOwotCWNhc2UgR05fQ1RfREtVMkxJQlVT
QjoKLQkJcmV0dXJuIGZidXNka3UydXNiX3NlbGVjdCh0aW1lb3V0LCBzdGF0ZSk7Ci0JY2FzZSBH
Tl9DVF9TT0NLRVRQSE9ORVQ6Ci0JCXJldHVybiBzb2NrZXRwaG9uZXRfc2VsZWN0KHN0YXRlLT5k
ZXZpY2UuZmQsIHRpbWVvdXQsIHN0YXRlKTsKLQlkZWZhdWx0OgotCQlicmVhazsKLQl9Ci0JcmV0
dXJuIC0xOworCXJldHVybiBzdGF0ZS0+ZGV2aWNlLm9wcy0+c2VsZWN0KHN0YXRlLT5kZXZpY2Uu
ZmQsIHRpbWVvdXQsIHN0YXRlKTsKIH0KIAogZ25fZXJyb3IgZGV2aWNlX25yZWNlaXZlZChpbnQg
Km4sIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQogewogCSpuID0gLTE7Ci0KLQlzd2l0
Y2ggKHN0YXRlLT5kZXZpY2UudHlwZSkgewotCWNhc2UgR05fQ1RfREtVMjoKLQljYXNlIEdOX0NU
X1NlcmlhbDoKLQljYXNlIEdOX0NUX0luZnJhcmVkOgotCQlyZXR1cm4gc2VyaWFsX25yZWNlaXZl
ZChzdGF0ZS0+ZGV2aWNlLmZkLCBuLCBzdGF0ZSk7Ci0JZGVmYXVsdDoKKwlpZiAoIXN0YXRlLT5k
ZXZpY2Uub3BzLT5ucmVjZWl2ZWQpCiAJCXJldHVybiBHTl9FUlJfTk9UU1VQUE9SVEVEOwotCX0K
KworCXJldHVybiBzdGF0ZS0+ZGV2aWNlLm9wcy0+bnJlY2VpdmVkKHN0YXRlLT5kZXZpY2UuZmQs
IG4sIHN0YXRlKTsKIH0KIAogZ25fZXJyb3IgZGV2aWNlX2ZsdXNoKHN0cnVjdCBnbl9zdGF0ZW1h
Y2hpbmUgKnN0YXRlKQogewotCXN3aXRjaCAoc3RhdGUtPmRldmljZS50eXBlKSB7Ci0JY2FzZSBH
Tl9DVF9ES1UyOgotCWNhc2UgR05fQ1RfU2VyaWFsOgotCWNhc2UgR05fQ1RfSW5mcmFyZWQ6Ci0J
CXJldHVybiBzZXJpYWxfZmx1c2goc3RhdGUtPmRldmljZS5mZCwgc3RhdGUpOwotCWRlZmF1bHQ6
CisJaWYgKCFzdGF0ZS0+ZGV2aWNlLm9wcy0+Zmx1c2gpCiAJCXJldHVybiBHTl9FUlJfTk9UU1VQ
UE9SVEVEOwotCX0KKworCXJldHVybiBzdGF0ZS0+ZGV2aWNlLm9wcy0+Zmx1c2goc3RhdGUtPmRl
dmljZS5mZCwgc3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvY29tbW9uL2RldmljZXMvTWFrZWZpbGUu
YW0gYi9jb21tb24vZGV2aWNlcy9NYWtlZmlsZS5hbQppbmRleCA4NjA3NjJlNC4uNTkyYzJiOWQg
MTAwNjQ0Ci0tLSBhL2NvbW1vbi9kZXZpY2VzL01ha2VmaWxlLmFtCisrKyBiL2NvbW1vbi9kZXZp
Y2VzL01ha2VmaWxlLmFtCkBAIC0xLDM0ICsxLDM4IEBACiBub2luc3RfTFRMSUJSQVJJRVMgPSBs
aWJERVZJQ0VTLmxhCiAKLVdJTjMyX0ZJTEVTID0gXAotCXdpbnNlcmlhbC5jIFwKLQl3aW5pcmRh
LmMgXAotCXdpbmJsdWV0b290aC5jCi0KLVVOSVhfRklMRVMgPSBcCi0JdW5peHNlcmlhbC5jIFwK
LQl1bml4aXJkYS5jIFwKLQl0Y3AuYyBcCi0Jc29ja2V0cGhvbmV0LmMKLQotaWYgRk9SX01BQwot
VU5JWF9TUEVDSUZJQ19GSUxFUyA9IG9zeGJsdWV0b290aC5tCi1lbHNlCi1VTklYX1NQRUNJRklD
X0ZJTEVTID0gdW5peGJsdWV0b290aC5jCitnbm9raWlfZGV2aWNlcwk9IHRla3JhbS5jCitpZiBM
SUJVU0IKK2dub2tpaV9kZXZpY2VzCSs9IGRrdTJsaWJ1c2IuYworZW5kaWYKK2lmICFXSU4zMgor
Z25va2lpX2RldmljZXMJKz0gdGNwLmMKK2VuZGlmCitpZiBTT0NLRVRQSE9ORVQKK2dub2tpaV9k
ZXZpY2VzCSs9IHNvY2tldHBob25ldC5jCitlbmRpZgoraWYgT1NYQkxVRVRPT1RICitnbm9raWlf
ZGV2aWNlcwkrPSBvc3hibHVldG9vdGgubQorZW5kaWYKK2lmIFVOSVhCTFVFVE9PVEgKK2dub2tp
aV9kZXZpY2VzCSs9IHVuaXhibHVldG9vdGguYworZW5kaWYKK2lmIFVOSVhJUkRBCitnbm9raWlf
ZGV2aWNlcwkrPSB1bml4aXJkYS5jCitlbmRpZgoraWYgIVdJTjMyCitnbm9raWlfZGV2aWNlcwkr
PSB1bml4c2VyaWFsLmMKK2VuZGlmCitpZiBXSU5CTFVFVE9PVEgKK2dub2tpaV9kZXZpY2VzCSs9
IHdpbmJsdWV0b290aC5jCitlbmRpZgoraWYgV0lOSVJEQQorZ25va2lpX2RldmljZXMJKz0gd2lu
aXJkYS5jCiBlbmRpZgotCiBpZiBXSU4zMgotUExBVEZPUk1fRklMRVMgPSAkKFdJTjMyX0ZJTEVT
KQotZWxzZQotUExBVEZPUk1fRklMRVMgPSAkKFVOSVhfRklMRVMpICQoVU5JWF9TUEVDSUZJQ19G
SUxFUykKK2dub2tpaV9kZXZpY2VzCSs9IHdpbnNlcmlhbC5jCiBlbmRpZgogCi1saWJERVZJQ0VT
X2xhX1NPVVJDRVMgPSBcCi0JJChQTEFURk9STV9GSUxFUykgXAotCXRla3JhbS5jIFwKLQlpcmRh
LmMgXAotCWRrdTJsaWJ1c2IuYyBcCi0JYmx1ZXRvb3RoLmMKK2xpYkRFVklDRVNfbGFfU09VUkNF
UyA9ICQoZ25va2lpX2RldmljZXMpCiAKIGxpYkRFVklDRVNfbGFfQ0ZMQUdTID0JCVwKIAktSSQo
dG9wX3NyY2RpcikvaW5jbHVkZQpAQCAtMzcsNiArNDEsMyBAQCBsaWJERVZJQ0VTX2xhX0xJQkFE
RCA9CQlcCiAJJChVU0JfTElCUykJCVwKIAkkKEJMVUVUT09USF9MSUJTKQlcCiAJJChUQ1BfTElC
UykKLQotRVhUUkFfRElTVCA9ICQoV0lOMzJfRklMRVMpICQoVU5JWF9GSUxFUykgJChVTklYX1NQ
RUNJRklDX0ZJTEVTKQotCmRpZmYgLS1naXQgYS9jb21tb24vZGV2aWNlcy9ibHVldG9vdGguYyBi
L2NvbW1vbi9kZXZpY2VzL2JsdWV0b290aC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkY2NmNDQ4Yi4uMDAwMDAwMDAKLS0tIGEvY29tbW9uL2RldmljZXMvYmx1ZXRvb3RoLmMKKysr
IC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKgotCi0gIEcgTiBPIEsgSSBJCi0KLSAgQSBM
aW51eC9Vbml4IHRvb2xzZXQgYW5kIGRyaXZlciBmb3IgdGhlIG1vYmlsZSBwaG9uZXMuCi0KLSAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgZ25va2lpLgotCi0gIENvcHlyaWdodCAoQykgMjAwMiAgICAg
ICBNYXJjZWwgSG9sdG1hbm4gPG1hcmNlbEBob2x0bWFubi5vcmc+Ci0gIENvcHlyaWdodCAoQykg
MjAwMyAgICAgICBCT1JCRUxZIFpvbHRhbgotICBDb3B5cmlnaHQgKEMpIDIwMDQgICAgICAgUGF3
ZWwgS290LCBQaGlsIEFzaGJ5Ci0KLSAgRmFrZSBkZWZpbml0aW9ucyBmb3IgdGhlIGJsdWV0b290
aCBoYW5kbGluZyBmdW5jdGlvbnMuCi0KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJjb21wYXQuaCIKLSNpbmNsdWRlICJtaXNjLmgiCi0jaW5jbHVkZSAiZ25va2lpLmgiCi0j
aW5jbHVkZSAiZGV2aWNlcy91bml4Ymx1ZXRvb3RoLmgiCi0KLSNpZm5kZWYgSEFWRV9CTFVFVE9P
VEgKLQotaW50IGJsdWV0b290aF9vcGVuKGNvbnN0IGNoYXIgKmFkZHIsIHVpbnQ4X3QgY2hhbm5l
bCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpIHsgcmV0dXJuIC0xOyB9Ci1pbnQgYmx1
ZXRvb3RoX2Nsb3NlKGludCBmZCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpIHsgcmV0
dXJuIC0xOyB9Ci1pbnQgYmx1ZXRvb3RoX3dyaXRlKGludCBmZCwgY29uc3QgX19wdHJfdCBieXRl
cywgaW50IHNpemUsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKSB7IHJldHVybiAtMTsg
fQotaW50IGJsdWV0b290aF9yZWFkKGludCBmZCwgX19wdHJfdCBieXRlcywgaW50IHNpemUsIHN0
cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKSB7IHJldHVybiAtMTsgfQotaW50IGJsdWV0b290
aF9zZWxlY3QoaW50IGZkLCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgc3RydWN0IGduX3N0YXRl
bWFjaGluZSAqc3RhdGUpIHsgcmV0dXJuIC0xOyB9Ci0KLSNlbmRpZiAvKiBIQVZFX0JMVUVUT09U
SCAqLwpkaWZmIC0tZ2l0IGEvY29tbW9uL2RldmljZXMvZGt1MmxpYnVzYi5jIGIvY29tbW9uL2Rl
dmljZXMvZGt1MmxpYnVzYi5jCmluZGV4IDBhNmViOGExLi44N2IyZGYxOCAxMDA2NDQKLS0tIGEv
Y29tbW9uL2RldmljZXMvZGt1MmxpYnVzYi5jCisrKyBiL2NvbW1vbi9kZXZpY2VzL2RrdTJsaWJ1
c2IuYwpAQCAtMjksMzQgKzI5LDYgQEAKICMgIGRlZmluZSBFTk9EQVRBCTYxCiAjZW5kaWYKIAot
I2lmbmRlZiBIQVZFX0xJQlVTQgotaW50IGZidXNka3UydXNiX29wZW4oc3RydWN0IGduX3N0YXRl
bWFjaGluZSAqc3RhdGUpCi17Ci0JcmV0dXJuIC0xOwotfQotCi1pbnQgZmJ1c2RrdTJ1c2JfY2xv
c2Uoc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCi17Ci0JcmV0dXJuIC0xOwotfQotCi1p
bnQgZmJ1c2RrdTJ1c2Jfd3JpdGUoY29uc3QgX19wdHJfdCBieXRlcywgaW50IHNpemUsIHN0cnVj
dCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQotewotCXJldHVybiAtMTsKLX0KLQotaW50IGZidXNk
a3UydXNiX3JlYWQoX19wdHJfdCBieXRlcywgaW50IHNpemUsIHN0cnVjdCBnbl9zdGF0ZW1hY2hp
bmUgKnN0YXRlKQotewotCXJldHVybiAtMTsKLX0KLQotaW50IGZidXNka3UydXNiX3NlbGVjdChz
dHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCi17
Ci0JcmV0dXJuIC0xOwotfQotCi0jZWxzZQotCiAjaW5jbHVkZSA8dXNiLmg+CiAKIC8qIEluZm9y
bWF0aW9uIGFib3V0IGEgVVNCIERLVTIgRkJVUyBpbnRlcmZhY2UgcHJlc2VudCBvbiB0aGUgc3lz
dGVtICovCkBAIC01NDAsNSArNTEyLDMgQEAgaW50IGZidXNka3UydXNiX3NlbGVjdChzdHJ1Y3Qg
dGltZXZhbCAqdGltZW91dCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCiB7CiAJcmV0
dXJuIDE7CiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvY29tbW9uL2RldmljZXMvaXJkYS5jIGIv
Y29tbW9uL2RldmljZXMvaXJkYS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjc0
YzJkYi4uMDAwMDAwMDAKLS0tIGEvY29tbW9uL2RldmljZXMvaXJkYS5jCisrKyAvZGV2L251bGwK
QEAgLTEsMjcgKzAsMCBAQAotLyoKLSAqCi0gKiBHIE4gTyBLIEkgSQotICoKLSAqIEEgTGludXgv
VW5peCB0b29sc2V0IGFuZCBkcml2ZXIgZm9yIHRoZSBtb2JpbGUgcGhvbmVzLgotICoKLSAqIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwICBIdWdoIEJsZW1pbmdzICYgUGF2ZWwgSmFuw61rIG1sLgot
ICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMDEgIE1hcmNlbCBIb2x0bWFubiA8bWFyY2VsQGhvbHRt
YW5uLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCAgICAgICBQaGlsIEFzaGJ5Ci0gKgotICog
RmFrZSBkZWZpbml0aW9ucyBmb3IgaXJkYSBoYW5kbGluZyBmdW5jdGlvbnMuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImNvbXBhdC5oIgotI2luY2x1ZGUgIm1pc2MuaCIK
LSNpbmNsdWRlICJnbm9raWkuaCIKLQotI2lmbmRlZiBIQVZFX0lSREEKLQotaW50IGlyZGFfb3Bl
bihzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkgeyByZXR1cm4gLTE7IH0KLWludCBpcmRh
X2Nsb3NlKGludCBmZCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpIHsgcmV0dXJuIC0x
OyB9Ci1pbnQgaXJkYV93cml0ZShpbnQgZmQsIGNvbnN0IF9fcHRyX3QgYnl0ZXMsIGludCBzaXpl
LCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkgeyByZXR1cm4gLTE7IH0KLWludCBpcmRh
X3JlYWQoaW50IGZkLCBfX3B0cl90IGJ5dGVzLCBpbnQgc2l6ZSwgc3RydWN0IGduX3N0YXRlbWFj
aGluZSAqc3RhdGUpIHsgcmV0dXJuIC0xOyB9Ci1pbnQgaXJkYV9zZWxlY3QoaW50IGZkLCBzdHJ1
Y3QgdGltZXZhbCAqdGltZW91dCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpIHsgcmV0
dXJuIC0xOyB9Ci0KLSNlbmRpZiAvKiBIQVZFX0lSREEgKi8KZGlmZiAtLWdpdCBhL2NvbW1vbi9k
ZXZpY2VzL29zeGJsdWV0b290aC5tIGIvY29tbW9uL2RldmljZXMvb3N4Ymx1ZXRvb3RoLm0KaW5k
ZXggNjIxNmNjNWMuLjFmYzExMjk1IDEwMDY0NAotLS0gYS9jb21tb24vZGV2aWNlcy9vc3hibHVl
dG9vdGgubQorKysgYi9jb21tb24vZGV2aWNlcy9vc3hibHVldG9vdGgubQpAQCAtMTAsMTQgKzEw
LDEwIEBACiAKICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmZGVmIEhBVkVfQkxVRVRP
T1RIX01BQ09TWAotCiAjaW5jbHVkZSA8SU9CbHVldG9vdGgvb2JqYy9JT0JsdWV0b290aFJGQ09N
TUNoYW5uZWwuaD4KICNpbmNsdWRlIDxJT0JsdWV0b290aC9vYmpjL0lPQmx1ZXRvb3RoRGV2aWNl
Lmg+CiAKLSNpbmNsdWRlICJkZXZpY2VzL3VuaXhibHVldG9vdGguaCIKKyNpbmNsdWRlICJkZXZp
Y2VzL2JsdWV0b290aC5oIgogCiBzdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqcXVldWVzOwog
c3RhdGljIGludCBuZXh0X2ZkID0gMTsKQEAgLTE3OSw1ICsxNzUsMyBAQCBpbnQgYmx1ZXRvb3Ro
X2Nsb3NlKGludCBmZCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCiAgICAgW3F1ZXVl
cyByZW1vdmVPYmplY3RGb3JLZXk6QChmZCldOwogICAgIHJldHVybiAxOwogfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL2NvbW1vbi9kZXZpY2VzL3NvY2tldHBob25ldC5jIGIvY29tbW9uL2Rldmlj
ZXMvc29ja2V0cGhvbmV0LmMKaW5kZXggMTJiZWQ4YjIuLjFlMTE5OTM5IDEwMDY0NAotLS0gYS9j
b21tb24vZGV2aWNlcy9zb2NrZXRwaG9uZXQuYworKysgYi9jb21tb24vZGV2aWNlcy9zb2NrZXRw
aG9uZXQuYwpAQCAtMTUsNDkgKzE1LDE3IEBACiAKICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJjb21wYXQuaCIgLyogZm9yIF9fcHRyX3QgZGVmaW5pdGlvbiAqLwotI2luY2x1
ZGUgImdub2tpaS5oIgotCi0jaWZuZGVmIEhBVkVfU09DS0VUUEhPTkVUCi0KLWludCBzb2NrZXRw
aG9uZXRfY2xvc2Uoc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCi17Ci0JcmV0dXJuIC0x
OwotfQotCi1pbnQgc29ja2V0cGhvbmV0X29wZW4oY29uc3QgY2hhciAqaWZhY2UsIGludCB3aXRo
X2FzeW5jLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkKLXsKLQlyZXR1cm4gLTE7Ci19
Ci0KLXNpemVfdCBzb2NrZXRwaG9uZXRfcmVhZChpbnQgZmQsIF9fcHRyX3QgYnVmLCBzaXplX3Qg
bmJ5dGVzLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkKLXsKLQlyZXR1cm4gLTE7Ci19
Ci0KLXNpemVfdCBzb2NrZXRwaG9uZXRfd3JpdGUoaW50IGZkLCBjb25zdCBfX3B0cl90IGJ1Ziwg
c2l6ZV90IG4sIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQotewotCXJldHVybiAtMTsK
LX0KLQotaW50IHNvY2tldHBob25ldF9zZWxlY3QoaW50IGZkLCBzdHJ1Y3QgdGltZXZhbCAqdGlt
ZW91dCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCi17Ci0JcmV0dXJuIC0xOwotfQot
Ci0jZWxzZQotCiAvKiBTeXN0ZW0gaGVhZGVyIGZpbGVzICovCiAjaW5jbHVkZSA8c3lzL3NvY2tl
dC5oPgogI2luY2x1ZGUgPGxpbnV4L3Bob25ldC5oPgogCiAvKiBWYXJpb3VzIGhlYWRlciBmaWxl
cyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImNvbXBhdC5oIgogI2luY2x1ZGUg
ImxpbmtzL2ZidXMtY29tbW9uLmgiCiAjaW5jbHVkZSAibGlua3MvZmJ1cy1waG9uZXQuaCIKLSNp
bmNsdWRlICJkZXZpY2UuaCIKICNpbmNsdWRlICJkZXZpY2VzL3NlcmlhbC5oIgorI2luY2x1ZGUg
ImRldmljZXMvc29ja2V0cGhvbmV0LmgiCiAjaW5jbHVkZSAiZ25va2lpLWludGVybmFsLmgiCiAK
IHN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfcG4gYWRkciA9IHsgLnNwbl9mYW1pbHkgPSBBRl9QSE9O
RVQsIC5zcG5fZGV2ID0gRkJVU19ERVZJQ0VfUEhPTkUgfTsKQEAgLTE1OSw1ICsxMjcsMyBAQCBp
bnQgc29ja2V0cGhvbmV0X3NlbGVjdChpbnQgZmQsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0LCBz
dHJ1Y3QgZ25fc3RhdGVtYWNoaW5lCiB7CiAJcmV0dXJuIHNlcmlhbF9zZWxlY3QoZmQsIHRpbWVv
dXQsIHN0YXRlKTsKIH0KLQotI2VuZGlmIC8qIEhBVkVfU09DS0VUUEhPTkVUICovCmRpZmYgLS1n
aXQgYS9jb21tb24vZGV2aWNlcy90Y3AuYyBiL2NvbW1vbi9kZXZpY2VzL3RjcC5jCmluZGV4IGUy
YmNkZTQ2Li4zYWZiNDU3NSAxMDA2NDQKLS0tIGEvY29tbW9uL2RldmljZXMvdGNwLmMKKysrIGIv
Y29tbW9uL2RldmljZXMvdGNwLmMKQEAgLTE4LDggKzE4LDYgQEAKICNpbmNsdWRlICJkZXZpY2Vz
L3RjcC5oIgogI2luY2x1ZGUgImRldmljZXMvc2VyaWFsLmgiCiAKLSNpZm5kZWYgV0lOMzIKLQog
I2lmZGVmIEhBVkVfU1lTX0lPQ1RMX0gKICMgIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgogI2VuZGlm
CkBAIC0xNDIsNyArMTQwLDYgQEAgaW50IHRjcF9vcGVuZGV2aWNlKGNvbnN0IGNoYXIgKmZpbGUs
IGludCB3aXRoX2FzeW5jLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGEKIAlpbnQgcmV0Y29k
ZTsKIAogCS8qIE9wZW4gZGV2aWNlICovCi0KIAlmZCA9IHRjcF9vcGVuKGZpbGUpOwogCiAJaWYg
KGZkIDwgMCkKQEAgLTE5NywzMiArMTk0LDMgQEAgc2l6ZV90IHRjcF93cml0ZShpbnQgZmQsIGNv
bnN0IF9fcHRyX3QgYnVmLCBzaXplX3Qgbiwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3QKIHsK
IAlyZXR1cm4gd3JpdGUoZmQsIGJ1Ziwgbik7CiB9Ci0KLSNlbHNlIC8qIFdJTjMyICovCi0KLWlu
dCB0Y3BfY2xvc2UoaW50IGZkLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkKLXsKLQly
ZXR1cm4gLTE7Ci19Ci0KLWludCB0Y3Bfb3BlbmRldmljZShjb25zdCBjaGFyICpmaWxlLCBpbnQg
d2l0aF9hc3luYywgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCi17Ci0JcmV0dXJuIC0x
OwotfQotCi1zaXplX3QgdGNwX3JlYWQoaW50IGZkLCBfX3B0cl90IGJ1Ziwgc2l6ZV90IG5ieXRl
cywgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCi17Ci0JcmV0dXJuIC0xOwotfQotCi1z
aXplX3QgdGNwX3dyaXRlKGludCBmZCwgY29uc3QgX19wdHJfdCBidWYsIHNpemVfdCBuLCBzdHJ1
Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkKLXsKLQlyZXR1cm4gLTE7Ci19Ci0KLWludCB0Y3Bf
c2VsZWN0KGludCBmZCwgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQsIHN0cnVjdCBnbl9zdGF0ZW1h
Y2hpbmUgKnN0YXRlKQotewotCXJldHVybiAtMTsKLX0KLQotI2VuZGlmIC8qIFdJTjMyICovCmRp
ZmYgLS1naXQgYS9jb21tb24vZGV2aWNlcy91bml4Ymx1ZXRvb3RoLmMgYi9jb21tb24vZGV2aWNl
cy91bml4Ymx1ZXRvb3RoLmMKaW5kZXggMWNlYjEyMjguLmUxM2MyZTBiIDEwMDY0NAotLS0gYS9j
b21tb24vZGV2aWNlcy91bml4Ymx1ZXRvb3RoLmMKKysrIGIvY29tbW9uL2RldmljZXMvdW5peGJs
dWV0b290aC5jCkBAIC0xNiwxMyArMTYsMTAgQEAKIAogKi8KIAotI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgImNvbXBhdC5oIgogI2luY2x1ZGUgIm1pc2MuaCIKICNpbmNsdWRlICJnbm9r
aWkuaCIKLSNpbmNsdWRlICJkZXZpY2VzL3VuaXhibHVldG9vdGguaCIKLQotI2lmIGRlZmluZWQo
SEFWRV9CTFVFVE9PVEhfQkxVRVopIHx8IGRlZmluZWQoSEFWRV9CTFVFVE9PVEhfTkVUR1JBUEgp
IHx8IGRlZmluZWQoSEFWRV9CTFVFVE9PVEhfTkVUQlQpCisjaW5jbHVkZSAiZGV2aWNlcy9ibHVl
dG9vdGguaCIKIAogI2lmZGVmIEhBVkVfQkxVRVRPT1RIX05FVEdSQVBICS8qIEZyZWVCU0QgLyBu
ZXRncmFwaCAqLwogCkBAIC0yNTcsNyArMjU0LDcgQEAgc3RhdGljIGludCBmaW5kX3NlcnZpY2Vf
Y2hhbm5lbChiZGFkZHJfdCAqYWRhcHRlciwgYmRhZGRyX3QgKmRldmljZSwgaW50IG9ubHlfZ24K
IAkJY2FzZSBTRFBfQVRUUl9QUklNQVJZX0xBTkdVQUdFX0JBU0VfSUQgKyBTRFBfQVRUUl9TRVJW
SUNFX05BTUVfT0ZGU0VUOgogCQkJaWYgKGNoYW5uZWwgPT0gLTEpCiAJCQkJYnJlYWs7Ci0JCQkK
KwogCQkJU0RQX0dFVDgodHlwZSwgc3RhcnQpOwogCQkJc3dpdGNoICh0eXBlKSB7CiAJCQkJY2Fz
ZSBTRFBfREFUQV9TVFI4OgpAQCAtMjk1LDcgKzI5Miw3IEBAIHN0YXRpYyBpbnQgZmluZF9zZXJ2
aWNlX2NoYW5uZWwoYmRhZGRyX3QgKmFkYXB0ZXIsIGJkYWRkcl90ICpkZXZpY2UsIGludCBvbmx5
X2duCiAJCQkJCWJyZWFrOwogCQkJCX0KIAkJCX0KLQkJCQorCiAJCQlpZiAoc3Ryc3RyKG5hbWUs
ICJOb2tpYSBQQyBTdWl0ZSIpICE9IE5VTEwpIHsKIAkJCQljaGFubmVsID0gLTE7CiAJCQkJYnJl
YWs7CkBAIC01MDEsNyArNDk4LDcgQEAgaW50IGJsdWV0b290aF9vcGVuKGNvbnN0IGNoYXIgKmFk
ZHIsIHVpbnQ4X3QgY2hhbm5lbCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3QKIAogCWRwcmlu
dGYoIlVzaW5nIGNoYW5uZWw6ICVkXG4iLCBjaGFubmVsKTsKIAlyYWRkci5yY19jaGFubmVsID0g
Y2hhbm5lbDsKLQkKKwogCWlmIChjb25uZWN0KGZkLCAoc3RydWN0IHNvY2thZGRyICopJnJhZGRy
LCBzaXplb2YocmFkZHIpKSA8IDApIHsKIAkJcGVycm9yKF8oIkNhbid0IGNvbm5lY3QiKSk7CiAJ
CWNsb3NlKGZkKTsKQEAgLTU0MSw1ICs1MzgsMyBAQCBpbnQgYmx1ZXRvb3RoX3NlbGVjdChpbnQg
ZmQsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0LCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdAog
CiAJcmV0dXJuIHNlbGVjdChmZCArIDEsICZyZWFkZmRzLCBOVUxMLCBOVUxMLCB0aW1lb3V0KTsK
IH0KLQotI2VuZGlmCS8qIEhBVkVfQkxVRVRPT1RIX0JMVUVaIHx8IEhBVkVfQkxVRVRPT1RIX05F
VEdSQVBIIHx8IEhBVkVfQkxVRVRPT1RIX05FVEJUICovCmRpZmYgLS1naXQgYS9jb21tb24vZGV2
aWNlcy91bml4aXJkYS5jIGIvY29tbW9uL2RldmljZXMvdW5peGlyZGEuYwppbmRleCAxMjcxMDQx
YS4uYjJhOWVhYzAgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9kZXZpY2VzL3VuaXhpcmRhLmMKKysrIGIv
Y29tbW9uL2RldmljZXMvdW5peGlyZGEuYwpAQCAtMTMsMTggKzEzLDE0IEBACiAgKgogICovCiAK
LSNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJjb21wYXQuaCIKICNpbmNsdWRlICJtaXNj
LmgiCiAjaW5jbHVkZSAiZ25va2lpLmgiCi0KLSNpZmRlZiBIQVZFX0lSREEKKyNpbmNsdWRlICJk
ZXZpY2VzL2lyZGEuaCIKIAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8bGlu
dXgvaXJkYS5oPgogCi0jaW5jbHVkZSAiZGV2aWNlcy9pcmRhLmgiCi0KICNpZm5kZWYgQUZfSVJE
QQogIyAgZGVmaW5lIEFGX0lSREEgMjMKICNlbmRpZgpAQCAtMTcxLDUgKzE2NywzIEBAIGludCBp
cmRhX3NlbGVjdChpbnQgZmQsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0LCBzdHJ1Y3QgZ25fc3Rh
dGVtYWNoaW5lICpzdGF0ZSkKIAogCXJldHVybiBzZWxlY3QoZmQgKyAxLCAmcmVhZGZkcywgTlVM
TCwgTlVMTCwgdGltZW91dCk7CiB9Ci0KLSNlbmRpZiAvKiBIQVZFX0lSREEgKi8KZGlmZiAtLWdp
dCBhL2NvbW1vbi9kZXZpY2VzL3dpbmJsdWV0b290aC5jIGIvY29tbW9uL2RldmljZXMvd2luYmx1
ZXRvb3RoLmMKaW5kZXggYTg5OGUyZTYuLjdiZTQwMTI3IDEwMDY0NAotLS0gYS9jb21tb24vZGV2
aWNlcy93aW5ibHVldG9vdGguYworKysgYi9jb21tb24vZGV2aWNlcy93aW5ibHVldG9vdGguYwpA
QCAtOCwxOCArOCwxNCBAQAogICoKICAqLwogCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZmRl
ZiBIQVZFX0JMVUVUT09USAotCiAjaW5jbHVkZSA8d2luc29jazIuaD4KICNpbmNsdWRlIDxtbXN5
c3RlbS5oPgogI2luY2x1ZGUgPHdzMmJ0aC5oPgogI2luY2x1ZGUgPGJsdWV0b290aGFwaXMuaD4K
IAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImNvbXBhdC5oIgotI2luY2x1ZGUgImdu
b2tpaS5oIgotI2luY2x1ZGUgIm1pc2MuaCIKKyNpbmNsdWRlICJkZXZpY2VzL2JsdWV0b290aC5o
IgogCiAvKiBRVFRZIGJ5IERhdmlkZSBMaWJlbnppICggVGVybWluYWwgaW50ZXJmYWNlIHRvIFN5
bWJpYW4gUUNvbnNvbGUgKQogICogQ29weXJpZ2h0IChDKSAyMDA0ICBEYXZpZGUgTGliZW56aQpA
QCAtMTA5LDUgKzEwNSwzIEBAIGludCBibHVldG9vdGhfc2VsZWN0KGludCBmZCwgc3RydWN0IHRp
bWV2YWwgKnRpbWVvdXQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0CiAKIAlyZXR1cm4gc2Vs
ZWN0KDAgLyogaWdub3JlZCBvbiBXaW4zMiAqLywgJnJlYWRmZHMsIE5VTEwsIE5VTEwsIHRpbWVv
dXQpOwogfQotCi0jZW5kaWYgLyogSEFWRV9CTFVFVE9PVEggKi8KZGlmZiAtLWdpdCBhL2NvbW1v
bi9kZXZpY2VzL3dpbmlyZGEuYyBiL2NvbW1vbi9kZXZpY2VzL3dpbmlyZGEuYwppbmRleCA0YmZl
ZDc0Mi4uNzEwMTg4NDIgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9kZXZpY2VzL3dpbmlyZGEuYworKysg
Yi9jb21tb24vZGV2aWNlcy93aW5pcmRhLmMKQEAgLTgsMTQgKzgsMTEgQEAKICAqCiAgKi8KIAot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWZkZWYgSEFWRV9JUkRBCi0KICNkZWZpbmUgV0lOMzJf
TEVBTl9BTkRfTUVBTgogI2luY2x1ZGUgPHdpbnNvY2suaD4KICNpbmNsdWRlIDxtbXN5c3RlbS5o
PgogCisjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiY29tcGF0LmgiCiAjaW5jbHVkZSAi
bWlzYy5oIgogI2luY2x1ZGUgImRldmljZXMvaXJkYS5oIgpAQCAtMTYwLDUgKzE1NywzIEBAIGlu
dCBpcmRhX3NlbGVjdChpbnQgZmQsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0LCBzdHJ1Y3QgZ25f
c3RhdGVtYWNoaW5lICpzdGF0ZSkKIAogCXJldHVybiBzZWxlY3QoMCAvKiBpZ25vcmVkIG9uIFdp
bjMyICovLCAmcmVhZGZkcywgTlVMTCwgTlVMTCwgdGltZW91dCk7CiB9Ci0KLSNlbmRpZiAvKiBI
QVZFX0lSREEgKi8KZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRl
eCA1MTJhNjIwZC4uZTVlMmM1YWQgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25m
aWd1cmUuYWMKQEAgLTQ1OCwzOSArNDU4LDI1IEBAIGlmIHRlc3QgIiRlbmFibGVfbGlidXNiIiA9
ICJ5ZXMiOyB0aGVuCiAJCV0KIAkpCiBmaQorQU1fQ09ORElUSU9OQUwoW0xJQlVTQl0sIFt0ZXN0
ICRVU0VfTElCVVNCID0geWVzXSkKIAotZG5sID09PT09PT09PT09PT09PT09PT09PT09PSBDaGVj
a3MgZm9yIExpbnV4IFBob25ldCBzdXBwb3J0CitkbmwgPT09PT09PT09PT09PT09PT09PT09PT09
IFBob25ldCBzd2l0Y2gKIFVTRV9TT0NLRVRQSE9ORVQ9Im5vIgogQUNfQVJHX0VOQUJMRShwaG9u
ZXQsCiAgICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtcGhvbmV0XSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGUgcGhvbmV0IHN1cHBvcnQgKGRlZmF1
bHQgaXMgYXV0b2RldGVjdGVkKV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLCwKICAg
ICAgICAgICAgICAgW2VuYWJsZV9waG9uZXQ9eWVzXSkKLWlmIHRlc3QgIiRlbmFibGVfcGhvbmV0
IiA9ICJ5ZXMiOyB0aGVuCi0JQUNfQ0hFQ0tfSEVBREVSKGxpbnV4L3Bob25ldC5oLAotCQlbQUNf
REVGSU5FKEhBVkVfU09DS0VUUEhPTkVULCAxLCBbV2hldGhlciBQaG9uZXQgaXMgYXZhaWxhYmxl
XSkKLQkJIFVTRV9TT0NLRVRQSE9ORVQ9InllcyJdLCwKLQkJWyNpbmNsdWRlIDxzeXMvc29ja2V0
Lmg+Ci0JCSAjaW5jbHVkZSA8bGludXgvcGhvbmV0Lmg+XSkKLWZpCiAKLWRubCA9PT09PT09PT09
PT09PT09PT09PT09PT0gQ2hlY2tzIGZvciBMaW51eCBJckRBIHN1cHBvcnQKK2RubCA9PT09PT09
PT09PT09PT09PT09PT09PT0gSXJEQSBzd2l0Y2gKIFVTRV9JUkRBPSJubyIKIEFDX0FSR19FTkFC
TEUoaXJkYSwKICAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1pcmRhXSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGUgaXJkYSBzdXBwb3J0IChkZWZh
dWx0IGlzIGF1dG9kZXRlY3RlZCldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwsCiAg
ICAgICAgICAgICAgIFtlbmFibGVfaXJkYT15ZXNdKQotaWYgdGVzdCAiJGVuYWJsZV9pcmRhIiA9
ICJ5ZXMiOyB0aGVuCi0JQUNfQ0hFQ0tfSEVBREVSKGxpbnV4L2lyZGEuaCwKLQkJW0FDX0RFRklO
RShIQVZFX0lSREEsIDEsIFtXaGV0aGVyIElyREEgaXMgYXZhaWxhYmxlXSkKLQkJIFVTRV9JUkRB
PSJ5ZXMiXSwsCi0JCVsjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotCQkgI2luY2x1ZGUgPHN5cy9p
b2N0bC5oPgotCQkgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+XSkKLWZpCiAKLWRubCA9PT09PT09
PT09PT09PT09PT09PT09PT0gQ2hlY2tzIGZvciBCbHVldG9vdGggc3VwcG9ydAorZG5sID09PT09
PT09PT09PT09PT09PT09PT09PSBCbHVldG9vdGggc3dpdGNoCiBVU0VfQkxVRVRPT1RIPSJubyIK
IEFDX0FSR19XSVRIKGJsdWV0b290aCwKIAlbICAtLXdpdGgtYmx1ZXRvb3RoPURJUiAgICBzcGVj
aWZpZXMgdGhlIGJhc2UgbGliYmx1ZXRvb3RoXSwKQEAgLTUyNCwxMCArNTEwLDI2IEBAIGxpbnV4
KikKIAkJCUFDX0RFRklORShIQVZFX0JMVUVUT09USCwgMSwgW1doZXRoZXIgQmx1ZXRvb3RoIGlz
IGF2YWlsYWJsZV0pCiAJCQlBQ19ERUZJTkUoSEFWRV9CTFVFVE9PVEhfQkxVRVosW10sW0NvbXBp
bGUgb24gTGludXhdKQogCQkJVVNFX0JMVUVUT09USD0ieWVzIgorCQkJVU5JWF9CTFVFVE9PVEg9
InRydWUiCiAJCQlCTFVFVE9PVEhfTElCUz0iLWxibHVldG9vdGgiCiAJCQlBQ19TVUJTVChCTFVF
VE9PVEhfTElCUykKIAkJZmkKIAlmaQorCWlmIHRlc3QgIiRlbmFibGVfaXJkYSIgPSAieWVzIjsg
dGhlbgorCQlBQ19DSEVDS19IRUFERVIobGludXgvaXJkYS5oLAorCQkJW0FDX0RFRklORShIQVZF
X0lSREEsIDEsIFtXaGV0aGVyIElyREEgaXMgYXZhaWxhYmxlXSkKKwkJCVtVU0VfSVJEQT0ieWVz
IiBVTklYX0lSREE9InRydWUiXV0sLAorCQkJWyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisJCQkg
I2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorCQkJICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPl0pCisJ
ZmkKKwlpZiB0ZXN0ICIkZW5hYmxlX3Bob25ldCIgPSAieWVzIjsgdGhlbgorCQlBQ19DSEVDS19I
RUFERVIobGludXgvcGhvbmV0LmgsCisJCQlbQUNfREVGSU5FKEhBVkVfU09DS0VUUEhPTkVULCAx
LCBbV2hldGhlciBQaG9uZXQgaXMgYXZhaWxhYmxlXSkKKwkJCSBVU0VfU09DS0VUUEhPTkVUPSJ5
ZXMiXSwsCisJCQlbI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKwkJCSAjaW5jbHVkZSA8bGludXgv
cGhvbmV0Lmg+XSkKKwlmaQogCTs7CiBkbmwgPT09PT09PT09PT09PT09PT09PT09PT09IENoZWNr
cyBmb3IgTWFjT1NYIEJsdWV0b290aCBzdXBwb3J0CiBkYXJ3aW4qKQpAQCAtNTUxLDYgKzU1Myw3
IEBAIGRhcndpbiopCiAJCQlBQ19ERUZJTkUoSEFWRV9CTFVFVE9PVEgsIDEsIFtXaGV0aGVyIEJs
dWV0b290aCBpcyBhdmFpbGFibGVdKQogCQkJQUNfREVGSU5FKEhBVkVfQkxVRVRPT1RIX01BQ09T
WCxbXSxbQ29tcGlsZSBvbiBEYXJ3aW4gLyBNYWMgT1NYXSkKIAkJCVVTRV9CTFVFVE9PVEg9Inll
cyIKKwkJCU9TWF9CTFVFVE9PVEg9InRydWUiCiAJCQlCTFVFVE9PVEhfTElCUz0iJFBUSFJFQURf
TElCUyAtV2wsLWZyYW1ld29yayxDb3JlRm91bmRhdGlvbiAtV2wsLWZyYW1ld29yayxJT0JsdWV0
b290aCAtV2wsLWZyYW1ld29yayxGb3VuZGF0aW9uIgogCQkJQUNfU1VCU1QoQkxVRVRPT1RIX0xJ
QlMpCiAJCWZpCkBAIC01NzIsNiArNTc1LDcgQEAgZnJlZWJzZCkKIAkJCUFDX0RFRklORShIQVZF
X0JMVUVUT09USCwgMSwgW1doZXRoZXIgQmx1ZXRvb3RoIGlzIGF2YWlsYWJsZV0pCiAJCQlBQ19E
RUZJTkUoSEFWRV9CTFVFVE9PVEhfTkVUR1JBUEgsIFtdLCBbQ29tcGlsZSBvbiBGcmVlQlNEXSkK
IAkJCVVTRV9CTFVFVE9PVEg9InllcyIKKwkJCVVOSVhfQkxVRVRPT1RIPSJ0cnVlIgogCQkJQUNf
Q0hFQ0tfTElCKGJsdWV0b290aCwgYnRfYXRvbiwKIAkJCQlbQkxVRVRPT1RIX0xJQlM9Ii1sYmx1
ZXRvb3RoIiBhY19jdl9oYXZlX2J0X2xpYj15ZXNdLAogCQkJCWFjX2N2X2hhdmVfYnRfbGliPW5v
KQpAQCAtNTk4LDYgKzYwMiw3IEBAIG5ldGJzZCopCiAJCQlBQ19ERUZJTkUoSEFWRV9CTFVFVE9P
VEgsIDEsIFtXaGV0aGVyIEJsdWV0b290aCBpcyBhdmFpbGFibGVdKQogCQkJQUNfREVGSU5FKEhB
VkVfQkxVRVRPT1RIX05FVEJULCBbXSwgW0NvbXBpbGUgb24gTmV0QlNEXSkKIAkJCVVTRV9CTFVF
VE9PVEg9InllcyIKKwkJCVVOSVhfQkxVRVRPT1RIPSJ0cnVlIgogCQkJQ0ZMQUdTPSIkQ0ZMQUdT
IC1EQ09NUEFUX0JMVUVaIgogCQkJQUNfQ0hFQ0tfTElCKGJsdWV0b290aCwgYnRfYXRvbiwKIAkJ
CQlbQkxVRVRPT1RIX0xJQlM9Ii1sYmx1ZXRvb3RoIiBhY19jdl9oYXZlX2J0X2xpYj15ZXNdLApA
QCAtNjExLDE5ICs2MTYsMzcgQEAgbmV0YnNkKikKIAlmaQogCTs7CiAKK2RubCA9PT09PT09PT09
PT09PT09PT09PT09PT0gQ2hlY2tzIGZvciBXaW5kb3dzIGRldmljZXMKIGN5Z3dpbjMyfGN5Z3dp
bnxtaW5ndzMyfG1pbmd3MzJtc3ZjKQotCUFDX0NIRUNLX0hFQURFUihhZl9pcmRhLmgsIFtBQ19E
RUZJTkUoSEFWRV9JUkRBLCAxLCBbV2hldGhlciBJckRBIGlzIGF2YWlsYWJsZV0pIFVTRV9JUkRB
PSJ5ZXMiIExJQlM9IiRMSUJTIC1sd2lubW0iXSwsIFsjaW5jbHVkZSA8d2luZG93cy5oPl0pCi0J
QUNfQ0hFQ0tfSEVBREVSKHdzMmJ0aC5oLCBbQUNfREVGSU5FKEhBVkVfQkxVRVRPT1RILCAxLCBb
V2hldGhlciBCbHVldG9vdGggaXMgYXZhaWxhYmxlXSkgVVNFX0JMVUVUT09USD0ieWVzIl0sLCBb
I2luY2x1ZGUgPHdpbmRvd3MuaD5dKQorCWlmIHRlc3QgIiRlbmFibGVfYmx1ZXRvb3RoIiA9ICJ5
ZXMiOyB0aGVuCisJCUFDX0NIRUNLX0hFQURFUih3czJidGguaCwKKwkJCQlbQUNfREVGSU5FKEhB
VkVfQkxVRVRPT1RILCAxLCBbV2hldGhlciBCbHVldG9vdGggaXMgYXZhaWxhYmxlXSkgVVNFX0JM
VUVUT09USD0ieWVzIiBXSU4zMl9CTFVFVE9PVEg9InRydWUiXSwsCisJCQkJWyNpbmNsdWRlIDx3
aW5kb3dzLmg+XSkKKwlmaQorCWlmIHRlc3QgIiRlbmFibGVfaXJkYSIgPSAieWVzIjsgdGhlbgor
CQlBQ19DSEVDS19IRUFERVIoYWZfaXJkYS5oLAorCQkJCVtBQ19ERUZJTkUoSEFWRV9JUkRBLCAx
LCBbV2hldGhlciBJckRBIGlzIGF2YWlsYWJsZV0pIFVTRV9JUkRBPSJ5ZXMiIFdJTjMyX0lSREE9
InRydWUiXSwsCisJCQkJWyNpbmNsdWRlIDx3aW5kb3dzLmg+XSkKKwlmaQorCUJMVUVUT09USF9M
SUJTPSIiCiAJaWYgdGVzdCB4IiRVU0VfSVJEQSIgPSAieHllcyIgLW8geCIkVVNFX0JMVUVUT09U
SCIgPSAieHllcyI7IHRoZW4KLQkJTElCUz0iJExJQlMgLWx3czJfMzIiCisJCUJMVUVUT09USF9M
SUJTPSItbHdzMl8zMiIKIAlmaQorCWlmIHRlc3QgeCIkVVNFX0lSREEiID0gInh5ZXMiOyB0aGVu
CisJCUJMVUVUT09USF9MSUJTPSIkQkxVRVRPT1RIX0xJQlMgLWx3aW5tbSIKKwlmaQorCUFDX1NV
QlNUKEJMVUVUT09USF9MSUJTKQogCVdJTjMyPTEKIAk7OwotCiBlc2FjCiAKIEFNX0NPTkRJVElP
TkFMKFtXSU4zMl0sIFt0ZXN0ICJ4JFdJTjMyIiA9ICJ4MSJdKQotQU1fQ09ORElUSU9OQUwoW0ZP
Ul9NQUNdLCBbdGVzdCAieCRGT1JfTUFDIiA9ICJ4MSJdKQorQU1fQ09ORElUSU9OQUwoW1NPQ0tF
VFBIT05FVF0sIFt0ZXN0ICJ4JFVTRV9TT0NLRVRQSE9ORVQiID0gInh5ZXMiXSkKK0FNX0NPTkRJ
VElPTkFMKFtPU1hCTFVFVE9PVEhdLCBbdGVzdCAieCRPU1hfQkxVRVRPT1RIIiA9ICJ4dHJ1ZSJd
KQorQU1fQ09ORElUSU9OQUwoW1VOSVhCTFVFVE9PVEhdLCBbdGVzdCAieCRVTklYX0JMVUVUT09U
SCIgPSAieHRydWUiXSkKK0FNX0NPTkRJVElPTkFMKFtVTklYSVJEQV0sIFt0ZXN0ICJ4JFVOSVhf
SVJEQSIgPSAieHRydWUiXSkKK0FNX0NPTkRJVElPTkFMKFtXSU5CTFVFVE9PVEhdLCBbdGVzdCAi
eCRXSU4zMl9CTFVFVE9PVEgiID0gInh0cnVlIl0pCitBTV9DT05ESVRJT05BTChbV0lOSVJEQV0s
IFt0ZXN0ICJ4JFdJTjMyX0lSREEiID0gInh0cnVlIl0pCiAKIGRubCA9PT09PT09PT09PT09PT09
PT09PT09PT0gQ2hlY2tzIGZvciBYIGJhc2Ugc3VwcG9ydAogCmRpZmYgLS1naXQgYS9pbmNsdWRl
L2RldmljZXMvdW5peGJsdWV0b290aC5oIGIvaW5jbHVkZS9kZXZpY2VzL2JsdWV0b290aC5oCnNp
bWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIGluY2x1ZGUvZGV2aWNlcy91bml4Ymx1ZXRv
b3RoLmgKcmVuYW1lIHRvIGluY2x1ZGUvZGV2aWNlcy9ibHVldG9vdGguaAppbmRleCBkYjQxNzFl
OS4uYTUzMWNjMDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZGV2aWNlcy91bml4Ymx1ZXRvb3RoLmgK
KysrIGIvaW5jbHVkZS9kZXZpY2VzL2JsdWV0b290aC5oCkBAIC0xMSw4ICsxMSw4IEBACiAKICov
CiAKLSNpZm5kZWYgX2dub2tpaV91bml4X2JsdWV0b290aF9oCi0jZGVmaW5lIF9nbm9raWlfdW5p
eF9ibHVldG9vdGhfaAorI2lmbmRlZiBfZ25va2lpX2JsdWV0b290aF9oCisjZGVmaW5lIF9nbm9r
aWlfYmx1ZXRvb3RoX2gKIAogI2luY2x1ZGUgImdub2tpaS5oIgogCkBAIC0yMiw0ICsyMiw0IEBA
IGludCBibHVldG9vdGhfd3JpdGUoaW50IGZkLCBjb25zdCBfX3B0cl90IGJ5dGVzLCBpbnQgc2l6
ZSwgc3RydWN0IGduX3N0YXRlbWFjaGluCiBpbnQgYmx1ZXRvb3RoX3JlYWQoaW50IGZkLCBfX3B0
cl90IGJ5dGVzLCBpbnQgc2l6ZSwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpOwogaW50
IGJsdWV0b290aF9zZWxlY3QoaW50IGZkLCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgc3RydWN0
IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpOwogCi0jZW5kaWYgLyogX2dub2tpaV91bml4X2JsdWV0
b290aF9oICovCisjZW5kaWYgLyogX2dub2tpaV9ibHVldG9vdGhfaCAqLwpkaWZmIC0tZ2l0IGEv
aW5jbHVkZS9kZXZpY2VzL3VuaXhpcmRhLmggYi9pbmNsdWRlL2RldmljZXMvdW5peGlyZGEuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTliMDdlZjQuLjAwMDAwMDAwCi0tLSBhL2lu
Y2x1ZGUvZGV2aWNlcy91bml4aXJkYS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAot
LyoKLSAqCi0gKiBHIE4gTyBLIEkgSQotICoKLSAqIEEgTGludXgvVW5peCB0b29sc2V0IGFuZCBk
cml2ZXIgZm9yIHRoZSBtb2JpbGUgcGhvbmVzLgotICoKLSAqIENvcHlyaWdodCAoQykgMTk5OSwg
MjAwMCBIdWdoIEJsZW1pbmdzICYgUGF2ZWwgSmFuw61rIG1sLgotICogQ29weXJpZ2h0IChDKSAy
MDAwLTIwMDEgIE1hcmNlbCBIb2x0bWFubiA8bWFyY2VsQGhvbHRtYW5uLm9yZz4KLSAqCi0gKi8K
LQotI2lmbmRlZiBfX3VuaXhfaXJkYV9oXwotI2RlZmluZSBfX3VuaXhfaXJkYV9oXwotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ25va2lpL2RhdGEuaCBiL2luY2x1ZGUvZ25va2lpL2Rh
dGEuaAppbmRleCA5ODIyYzBiMC4uODRmMTYyNGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ25va2lp
L2RhdGEuaAorKysgYi9pbmNsdWRlL2dub2tpaS9kYXRhLmgKQEAgLTE5MSw5ICsxOTEsMjIgQEAg
dHlwZWRlZiBzdHJ1Y3QgewogCWduX2F1dGhfaW50ZXJhY3RpdmVfZnVuY190IGF1dGhfaW50ZXJh
Y3RpdmU7CiB9IGduX2NhbGxiYWNrOwogCit0eXBlZGVmIHN0cnVjdCB7CisJaW50ICgqb3Blbiko
Y29uc3QgY2hhciAqZmlsZSwgaW50IHdpdGhfb2RkX3Bhcml0eSwgaW50IHdpdGhfYXN5bmMsCisJ
CSAgICBpbnQgd2l0aF9od19oYW5kc2hha2UsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRl
KTsKKwl2b2lkICgqY2xvc2UpKGludCBmZCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUp
OworCWludCAoKnNlbGVjdCkoaW50IGZkLCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgc3RydWN0
IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpOworCXNpemVfdCAoKnJlYWQpKGludCBmZCwgX19wdHJf
dCBidWYsIHNpemVfdCBuYnl0ZXMsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKTsKKwlz
aXplX3QgKCp3cml0ZSkoaW50IGZkLCBjb25zdCBfX3B0cl90IGJ1Ziwgc2l6ZV90IG4sIHN0cnVj
dCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKTsKKwlnbl9lcnJvciAoKm5yZWNlaXZlZCkoaW50IGZk
LCBpbnQgKm4sIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKTsKKwlnbl9lcnJvciAoKmZs
dXNoKShpbnQgZmQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKTsKKwlnbl9lcnJvciAo
KmNoYW5nZXNwZWVkKShpbnQgZmQsIGludCBzcGVlZCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAq
c3RhdGUpOworCXZvaWQgKCpzZXRkdHJydHMpKGludCBmZCwgaW50IGR0ciwgaW50IHJ0cywgc3Ry
dWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpOworfSBnbl9kZXZpY2Vfb3BzOworCiB0eXBlZGVm
IHN0cnVjdCB7CiAJaW50IGZkOwotCWduX2Nvbm5lY3Rpb25fdHlwZSB0eXBlOworCWNvbnN0IGdu
X2RldmljZV9vcHMgKm9wczsKIAl2b2lkICpkZXZpY2VfaW5zdGFuY2U7CiB9IGduX2RldmljZTsK
IAotLSAKMi4yNS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KZ25va2lpLXVzZXJzIG1haWxpbmcgbGlzdApnbm9raWktdXNlcnNAbm9uZ251Lm9yZwpo
dHRwczovL2xpc3RzLm5vbmdudS5vcmcvbWFpbG1hbi9saXN0aW5mby9nbm9raWktdXNlcnMK