Re: [PATCH v2 7/8] Use posix_spawn to run external scripts

Ladislav Michl <[email protected]> Thu, 23 Jan 2020 02:01:57 +0100
Newsgroups gmane.linux.drivers.gnokii
Message-ID <20200123010157.GA88568@lenoch>
T24gTW9uLCBKYW4gMjAsIDIwMjAgYXQgMDE6MDc6MzVQTSArMDEwMCwgUGF3ZWwgS290IHdyb3Rl
Ogo+IE9uIE1vbiwgSmFuIDIwLCAyMDIwIGF0IDk6NDAgQU0gTGFkaXNsYXYgTWljaGwgPGxhZGlz
QGxpbnV4LW1pcHMub3JnPiB3cm90ZToKPiA+IC4uLiBBbHRlcm5hdGl2ZWx5IEkgY2FuIHR1cm4g
aXQgaW50byBwcm9wZXIgZGV2aWNlIHBsdWdpbiBhcmNoaXRlY3R1cmUuCj4gPiBJcyB0aGF0IHlv
dXIgcHJlZmVycmVkIHdheSB0byBnbz8gKHdoaWxlIGRvaW5nIHRoYXQgSSB3b3VsZCBhbHNvIGFk
ZAo+ID4gc3VwcG9ydCBmb3IgZXh0ZXJuYWwgZXZlbiBsb29wcykKPiAKPiBZZXMsIGlmIHdlJ3Jl
IGdvaW5nIHRvIGNoYW5nZSB0aGF0IGxldCdzIGRvIGl0IGluIGEgcHJvcGVyIHdheS4gSGFwcHkg
dG8KPiBkaXNjdXNzIG9uIElSQyBzb21ldGltZS4KCllvdXIgSVJDIGNvbm5lY3Rpb24gaXMgdW5z
dGFibGUgYmV5b25kIGJlaW5nIHVzZWZ1bGwgZm9yIGFueSBkaXNjdXNzaW9uIDstKQpTbyBoZXJl
IGlzIGEgcXVpY2sgZHJhZnQsIHBhdGNoIGlzIGJhc2VkIG9uIGFub3RoZXIgdW5yZWxlYXNlZCBv
bmUgbW92aW5nCmRldmljZV9zY3JpcHQgaW50byBzZXBhcmF0ZSBmaWxlLiBQbGVhc2Ugbm90ZSBp
dCBpcyBvbmx5IGEgZHJhZnQsIGNvbXBpbGUKdGVzdGVkIG9ubHkgKGFzc3VtZXMgQzk5IGNvbXBp
bGVyKS4gSSB0cmllZCB0byBhdm9pZCBkZXZpY2UgZHJpdmVyIGNoYW5nZXMsCmJ1dCBwYXRjaCBp
cyBzdGlsbCBhIGJpdCBoYXJkIHRvIHJlYWQuIEFwb2xvZ2llcyBmb3IgdGhhdC4gSG93ZXZlciwg
aXQKc2hvdWxkIHN1ZmZpY2UgYXMgYSBiZWdpbm5pbmcgb2YgYSBkaXNjdXNzaW9uLiBJJ2xsIHBv
bGlzaCBpdCBhIGJpdCBtb3JlCmJhc2VkIG9uIGZlZWRiYWNrIHJlY2VpdmVkIGFuZCBzZW5kIGFz
IHNlcGFyYXRlIHBhdGNoIHNlcmllLgoKLS0tID44IC0tLQoKRnJvbTogTGFkaXNsYXYgTWljaGwg
PGxhZGlzQGxpbnV4LW1pcHMub3JnPgpTdWJqZWN0OiBbRFJBRlRdIFJlZmFjdG9yIGRldmljZXMg
YnVpbGQKClJlbW92ZSAjaWZkZWZzIGZyb20gZGV2aWNlIGRyaXZlcnMgYW5kIGNvbXBpbGUgdGhl
bSBvbmx5IHdoZW4Kc2VsZWN0ZWQuIEludHJvZHVjZSBiYXNpYyBkZXZpY2UgcGx1Z2luIGFyY2hp
dGVjdHVyZS4KT25jZSB0aGVyZSwgbW92ZSBkZXZpY2UgZGV0ZWN0aW9uIGNvZGUgaW4gY29uZmln
dXJlLmFjIHRvIGxpdmUKaW4gb25lIHBsYWNlLgotLS0KIGNvbW1vbi9kZXZpY2UuYyAgICAgICAg
ICAgICAgICAgfCAzNTAgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGNvbW1vbi9k
ZXZpY2VzL01ha2VmaWxlLmFtICAgICAgfCAgNTcgKysrLS0tCiBjb21tb24vZGV2aWNlcy9ibHVl
dG9vdGguYyAgICAgIHwgIDMxIC0tLQogY29tbW9uL2RldmljZXMvZGt1MmxpYnVzYi5jICAgICB8
IDEwOSArKysrKysrLS0tCiBjb21tb24vZGV2aWNlcy9pcmRhLmMgICAgICAgICAgIHwgIDI3IC0t
LQogY29tbW9uL2RldmljZXMvb3N4Ymx1ZXRvb3RoLm0gICB8ICAgOCArLQogY29tbW9uL2Rldmlj
ZXMvc29ja2V0cGhvbmV0LmMgICB8ICAzOCArLS0tCiBjb21tb24vZGV2aWNlcy90Y3AuYyAgICAg
ICAgICAgIHwgIDQyIC0tLS0KIGNvbW1vbi9kZXZpY2VzL3VuaXhibHVldG9vdGguYyAgfCAgMTMg
Ky0KIGNvbW1vbi9kZXZpY2VzL3VuaXhpcmRhLmMgICAgICAgfCAgIDQgKy0KIGNvbW1vbi9kZXZp
Y2VzL3dpbmJsdWV0b290aC5jICAgfCAgMTAgKy0KIGNvbW1vbi9kZXZpY2VzL3dpbmlyZGEuYyAg
ICAgICAgfCAgIDcgKy0KIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgfCAgOTQgKysr
KystLS0tCiBpbmNsdWRlL2RldmljZS5oICAgICAgICAgICAgICAgIHwgICAxIC0KIGluY2x1ZGUv
ZGV2aWNlcy9ka3UybGlidXNiLmggICAgfCAgODYgLS0tLS0tLS0KIGluY2x1ZGUvZGV2aWNlcy9z
ZXJpYWwuaCAgICAgICAgfCAgIDIgLQogaW5jbHVkZS9kZXZpY2VzL3RjcC5oICAgICAgICAgICB8
ICAgMiAtCiBpbmNsdWRlL2RldmljZXMvdW5peGJsdWV0b290aC5oIHwgIDI3IC0tLQogaW5jbHVk
ZS9kZXZpY2VzL3VuaXhpcmRhLmggICAgICB8ICAxNSAtLQogaW5jbHVkZS9nbm9raWkvZGF0YS5o
ICAgICAgICAgICB8ICAxNSArLQogMjAgZmlsZXMgY2hhbmdlZCwgMzc5IGluc2VydGlvbnMoKyks
IDU1OSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBjb21tb24vZGV2aWNlcy9ibHVl
dG9vdGguYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGNvbW1vbi9kZXZpY2VzL2lyZGEuYwogZGVsZXRl
IG1vZGUgMTAwNjQ0IGluY2x1ZGUvZGV2aWNlcy91bml4Ymx1ZXRvb3RoLmgKIGRlbGV0ZSBtb2Rl
IDEwMDY0NCBpbmNsdWRlL2RldmljZXMvdW5peGlyZGEuaAoKZGlmZiAtLWdpdCBhL2NvbW1vbi9k
ZXZpY2UuYyBiL2NvbW1vbi9kZXZpY2UuYwppbmRleCA5Yjg5NTcwOC4uNDk5MzJjYTUgMTAwNjQ0
Ci0tLSBhL2NvbW1vbi9kZXZpY2UuYworKysgYi9jb21tb24vZGV2aWNlLmMKQEAgLTE5LDEzICsx
OSwxNzIgQEAKICNpbmNsdWRlICJnbm9raWkuaCIKICNpbmNsdWRlICJnbm9raWktaW50ZXJuYWwu
aCIKICNpbmNsdWRlICJkZXZpY2UuaCIKKworI2lmZGVmIEhBVkVfQkxVRVRPT1RICisjaW5jbHVk
ZSAiZGV2aWNlcy9ibHVldG9vdGguaCIKK3N0YXRpYyBpbnQKK19ibHVldG9vdGhfb3Blbihjb25z
dCBjaGFyICpmaWxlLCBpbnQgd2l0aF9vZGRfcGFyaXR5LCBpbnQgd2l0aF9hc3luYywKKwkJaW50
IHdpdGhfaHdfaGFuZHNoYWtlLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkKK3sKKwly
ZXR1cm4gYmx1ZXRvb3RoX29wZW4oc3RhdGUtPmNvbmZpZy5wb3J0X2RldmljZSwgc3RhdGUtPmNv
bmZpZy5yZmNvbW1fY24sIHN0YXRlKTsKK30KKworY29uc3Qgc3RhdGljIGduX2RldmljZV9vcHMg
X2JsdWV0b290aF9vcHMgPSB7CisJLm9wZW4JPSBfYmx1ZXRvb3RoX29wZW4sCisJLmNsb3NlCT0g
Ymx1ZXRvb3RoX2Nsb3NlLAorCS5zZWxlY3QJPSBibHVldG9vdGhfc2VsZWN0LAorCS5yZWFkCT0g
Ymx1ZXRvb3RoX3JlYWQsCisJLndyaXRlCT0gYmx1ZXRvb3RoX3dyaXRlLAorfTsKKyMgIGRlZmlu
ZSBibHVldG9vdGhfb3BzICZfYmx1ZXRvb3RoX29wcworI2Vsc2UKKyMgIGRlZmluZSBibHVldG9v
dGhfb3BzCU5VTEwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MSUJVU0IKKyNpbmNsdWRlICJkZXZp
Y2VzL2RrdTJsaWJ1c2IuaCIKK3N0YXRpYyBpbnQKK19ka3UybGlidXNiX29wZW4oY29uc3QgY2hh
ciAqZmlsZSwgaW50IHdpdGhfb2RkX3Bhcml0eSwgaW50IHdpdGhfYXN5bmMsCisJCSBpbnQgd2l0
aF9od19oYW5kc2hha2UsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQoreworCXJldHVy
biBmYnVzZGt1MnVzYl9vcGVuKHN0YXRlKTsKK30KKworc3RhdGljIGludAorX2RrdTJsaWJ1c2Jf
Y2xvc2UoaW50IGZkLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkKK3sKKwlyZXR1cm4g
ZmJ1c2RrdTJ1c2JfY2xvc2Uoc3RhdGUpOworfQorCitzdGF0aWMgaW50CitfZGt1MnVzYl9zZWxl
Y3Qoc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRl
KTsKK3sKKwlyZXR1cm4gZmJ1c2RrdTJ1c2Jfc2VsZWN0KHRpbWVvdXQsIHN0YXRlKTsKK30KKwor
c3RhdGljIGludAorX2RrdTJ1c2JfcmVhZChfX3B0cl90IGJ5dGVzLCBpbnQgc2l6ZSwgc3RydWN0
IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCit7CisJcmV0dXJuIGZidXNka3UydXNiX3JlYWQoYnl0
ZXMsIHNpemUsIHN0YXRlKTsKK30KKworc3RhdGljIGludAorX2RrdTJ1c2Jfd3JpdGUoaW50IGZk
LCBjb25zdCBfX3B0cl90IGJ5dGVzLCBpbnQgc2l6ZSwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAq
c3RhdGUpCit7CisJcmV0dXJuIGZidXNka3UydXNiX3dyaXRlKGJ5dGVzLCBzaXplLCBzdGF0ZSk7
Cit9CisKK2NvbnN0IHN0YXRpYyBnbl9kZXZpY2Vfb3BzIF9ka3UybGlidXNiX29wcyA9IHsKKwku
b3Blbgk9IF9ka3UybGlidXNiX29wZW4sCisJLmNsb3NlCT0gX2RrdTJ1c2JfY2xvc2UsCisJLnNl
bGVjdAk9IF9ka3UydXNiX3NlbGVjdCwKKwkucmVhZAk9IF9ka3UydXNiX3JlYWQsCisJLndyaXRl
CT0gX2RrdTJ1c2Jfd3JpdGUsCit9OworIyAgZGVmaW5lIGRrdTJsaWJ1c2Jfb3BzCSZfZGt1Mmxp
YnVzYl9vcHMKKyNlbHNlCisjICBkZWZpbmUgZGt1MmxpYnVzYl9vcHMJTlVMTAorI2VuZGlmCisK
KyNpZmRlZiBIQVZFX0lSREEKICNpbmNsdWRlICJkZXZpY2VzL2lyZGEuaCIKLSNpbmNsdWRlICJk
ZXZpY2VzL3VuaXhibHVldG9vdGguaCIKLSNpbmNsdWRlICJkZXZpY2VzL3RjcC5oIgorc3RhdGlj
IGludAorX2lyZGFfb3Blbihjb25zdCBjaGFyICpmaWxlLCBpbnQgd2l0aF9vZGRfcGFyaXR5LCBp
bnQgd2l0aF9hc3luYywKKwkgICBpbnQgd2l0aF9od19oYW5kc2hha2UsIHN0cnVjdCBnbl9zdGF0
ZW1hY2hpbmUgKnN0YXRlKQoreworCXJldHVybiBpcmRhX29wZW4oc3RhdGUpOworfQorCitjb25z
dCBzdGF0aWMgZ25fZGV2aWNlX29wcyBfaXJkYV9vcHMgPSB7CisJLm9wZW4JPSBfaXJkYV9vcGVu
LAorCS5jbG9zZQk9IGlyZGFfY2xvc2UsCisJLnNlbGVjdAk9IGlyZGFfc2VsZWN0LAorCS5yZWFk
CT0gaXJkYV9yZWFkLAorCS53cml0ZQk9IGlyZGFfd3JpdGUsCit9OworIyAgZGVmaW5lIGlyZGFf
b3BzCSZfaXJkYV9vcHMKKyNlbHNlCisjICBkZWZpbmUgaXJkYV9vcHMJTlVMTAorI2VuZGlmCisK
ICNpbmNsdWRlICJkZXZpY2VzL3NlcmlhbC5oIgotI2luY2x1ZGUgImRldmljZXMvdGVrcmFtLmgi
Ci0jaW5jbHVkZSAiZGV2aWNlcy9ka3UybGlidXNiLmgiCitjb25zdCBzdGF0aWMgZ25fZGV2aWNl
X29wcyBfc2VyaWFsX29wcyA9IHsKKwkub3Blbgk9IHNlcmlhbF9vcGVuZGV2aWNlLAorCS5jbG9z
ZQk9IHNlcmlhbF9jbG9zZSwKKwkuc2VsZWN0CT0gc2VyaWFsX3NlbGVjdCwKKwkucmVhZAk9IHNl
cmlhbF9yZWFkLAorCS53cml0ZQk9IHNlcmlhbF93cml0ZSwKKwkubnJjdmQJPSBzZXJpYWxfbnJl
Y2VpdmVkLAorCS5mbHVzaAk9IHNlcmlhbF9mbHVzaCwKKwkuc3BlZWQJPSBzZXJpYWxfY2hhbmdl
c3BlZWQsCisJLmR0cnJ0cwk9IHNlcmlhbF9zZXRkdHJydHMsCit9OworI2RlZmluZSBzZXJpYWxf
b3BzCSZfc2VyaWFsX29wcworCisjaWZkZWYgSEFWRV9TT0NLRVRQSE9ORVQKICNpbmNsdWRlICJk
ZXZpY2VzL3NvY2tldHBob25ldC5oIgorc3RhdGljIGludAorX3NvY2tldHBob25ldF9vcGVuKGNv
bnN0IGNoYXIgKmZpbGUsIGludCB3aXRoX29kZF9wYXJpdHksIGludCB3aXRoX2FzeW5jLAorCQkg
ICBpbnQgd2l0aF9od19oYW5kc2hha2UsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQor
eworCXJldHVybiBzb2NrZXRwaG9uZXRfb3BlbihmaWxlLCB3aXRoX2FzeW5jLCBzdGF0ZSk7Cit9
CisKK3N0YXRpYyBpbnQKK2ludCBfc29ja2V0cGhvbmV0X2Nsb3NlKGludCBmZCwgc3RydWN0IGdu
X3N0YXRlbWFjaGluZSAqc3RhdGUpCit7CisJcmV0dXJuIHNvY2tldHBob25ldF9jbG9zZShzdGF0
ZSk7Cit9CisKK2NvbnN0IHN0YXRpYyBnbl9kZXZpY2Vfb3BzIF9waG9uZXRfb3BzID0geworCS5v
cGVuCT0gX3NvY2tldHBob25ldF9vcGVuLAorCS5jbG9zZQk9IF9zb2NrZXRwaG9uZXRfY2xvc2Us
CisJLnNlbGVjdAk9IHNvY2tldHBob25ldF9zZWxlY3QsCisJLnJlYWQJPSBzb2NrZXRwaG9uZXRf
cmVhZCwKKwkud3JpdGUJPSBzb2NrZXRwaG9uZXRfd3JpdGUsCit9OworIyAgZGVmaW5lIHBob25l
dF9vcHMJJl9waG9uZXRfb3BzCisjZWxzZQorIyAgZGVmaW5lIHBob25ldF9vcHMJTlVMTAorI2Vu
ZGlmCisKKyNpZm5kZWYgV0lOMzIKKyNpbmNsdWRlICJkZXZpY2VzL3RjcC5oIgorc3RhdGljIGlu
dAorX3RjcF9vcGVuKGNvbnN0IGNoYXIgKmZpbGUsIGludCB3aXRoX29kZF9wYXJpdHksIGludCB3
aXRoX2FzeW5jLAorCSAgaW50IHdpdGhfaHdfaGFuZHNoYWtlLCBzdHJ1Y3QgZ25fc3RhdGVtYWNo
aW5lICpzdGF0ZSkKK3sKKwlyZXR1cm4gdGNwX29wZW5kZXZpY2UoZmlsZSwgd2l0aF9hc3luYywg
c3RhdGUpOworfQorCitjb25zdCBzdGF0aWMgZ25fZGV2aWNlX29wcyBfdGNwX29wcyA9IHsKKwku
b3Blbgk9IF90Y3Bfb3BlbiwKKwkuY2xvc2UJPSB0Y3BfY2xvc2UsCisJLnNlbGVjdAk9IHRjcF9z
ZWxlY3QsCisJLnJlYWQJPSB0Y3BfcmVhZCwKKwkud3JpdGUJPSB0Y3Bfd3JpdGUsCit9OworIyAg
ZGVmaW5lIHRjcF9vcHMJJl90Y3Bfb3BzCisjZWxzZQorIyAgZGVmaW5lIHRjcF9vcHMJTlVMTAor
I2VuZGlmCisKKyNpbmNsdWRlICJkZXZpY2VzL3Rla3JhbS5oIgorc3RhdGljIGludAorX3Rla3Jh
bV9vcGVuKGNvbnN0IGNoYXIgKmZpbGUsIGludCB3aXRoX29kZF9wYXJpdHksIGludCB3aXRoX2Fz
eW5jLAorCSAgICAgaW50IHdpdGhfaHdfaGFuZHNoYWtlLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5l
ICpzdGF0ZSkKK3sKKwlyZXR1cm4gdGVrcmFtX29wZW4oZmlsZSwgc3RhdGUpOworfQorCitjb25z
dCBzdGF0aWMgZ25fZGV2aWNlX29wcyBfdGVrcmFtX29wcyA9IHsKKwkub3Blbgk9IF90ZWtyYW1f
b3BlbiwKKwkuY2xvc2UJPSB0ZWtyYW1fY2xvc2UsCisJLnNlbGVjdAk9IHRla3JhbV9zZWxlY3Qs
CisJLnJlYWQJPSB0ZWtyYW1fcmVhZCwKKwkud3JpdGUJPSB0ZWtyYW1fd3JpdGUsCit9OworI2Rl
ZmluZSB0ZWtyYW1fb3BzCSZfdGVrcmFtX29wcwogCiBHTk9LSUlfQVBJIGludCBkZXZpY2VfZ2V0
ZmQoc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCiB7CkBAIC0zNiw0MCArMTk1LDQ2IEBA
IGludCBkZXZpY2Vfb3Blbihjb25zdCBjaGFyICpmaWxlLCBpbnQgd2l0aF9vZGRfcGFyaXR5LCBp
bnQgd2l0aF9hc3luYywKIAkJaW50IHdpdGhfaHdfaGFuZHNoYWtlLCBnbl9jb25uZWN0aW9uX3R5
cGUgZGV2aWNlX3R5cGUsCiAJCXN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQogewotCXN0
YXRlLT5kZXZpY2UudHlwZSA9IGRldmljZV90eXBlOworCXN0YXRlLT5kZXZpY2Uub3BzID0gTlVM
TDsKIAlzdGF0ZS0+ZGV2aWNlLmRldmljZV9pbnN0YW5jZSA9IE5VTEw7CiAKIAlkcHJpbnRmKCJk
ZXZpY2U6IG9wZW5pbmcgZGV2aWNlICVzXG4iLCAoZGV2aWNlX3R5cGUgPT0gR05fQ1RfREtVMkxJ
QlVTQikgPyAiVVNCIiA6IGZpbGUpOwogCi0Jc3dpdGNoIChzdGF0ZS0+ZGV2aWNlLnR5cGUpIHsK
LQljYXNlIEdOX0NUX0RLVTI6CisJc3dpdGNoIChkZXZpY2VfdHlwZSkgewogCWNhc2UgR05fQ1Rf
U2VyaWFsOgorCWNhc2UgR05fQ1RfREFVOVA6CisJY2FzZSBHTl9DVF9ETFIzUDoKIAljYXNlIEdO
X0NUX0luZnJhcmVkOgotCQlzdGF0ZS0+ZGV2aWNlLmZkID0gc2VyaWFsX29wZW5kZXZpY2UoZmls
ZSwgd2l0aF9vZGRfcGFyaXR5LCB3aXRoX2FzeW5jLCB3aXRoX2h3X2hhbmRzaGFrZSwgc3RhdGUp
OworCWNhc2UgR05fQ1RfTTJCVVM6CisJY2FzZSBHTl9DVF9ES1UyOgorCQlzdGF0ZS0+ZGV2aWNl
Lm9wcyA9IHNlcmlhbF9vcHM7CiAJCWJyZWFrOwogCWNhc2UgR05fQ1RfSXJkYToKLQkJc3RhdGUt
PmRldmljZS5mZCA9IGlyZGFfb3BlbihzdGF0ZSk7CisJCXN0YXRlLT5kZXZpY2Uub3BzID0gaXJk
YV9vcHM7CiAJCWJyZWFrOwogCWNhc2UgR05fQ1RfQmx1ZXRvb3RoOgotCQlzdGF0ZS0+ZGV2aWNl
LmZkID0gYmx1ZXRvb3RoX29wZW4oc3RhdGUtPmNvbmZpZy5wb3J0X2RldmljZSwgc3RhdGUtPmNv
bmZpZy5yZmNvbW1fY24sIHN0YXRlKTsKKwkJc3RhdGUtPmRldmljZS5vcHMgPSBibHVldG9vdGhf
b3BzOwogCQlicmVhazsKIAljYXNlIEdOX0NUX1Rla3JhbToKLQkJc3RhdGUtPmRldmljZS5mZCA9
IHRla3JhbV9vcGVuKGZpbGUsIHN0YXRlKTsKKwkJc3RhdGUtPmRldmljZS5vcHMgPSB0ZWtyYW1f
b3BzOwogCQlicmVhazsKIAljYXNlIEdOX0NUX1RDUDoKLQkJc3RhdGUtPmRldmljZS5mZCA9IHRj
cF9vcGVuZGV2aWNlKGZpbGUsIHdpdGhfYXN5bmMsIHN0YXRlKTsKKwkJc3RhdGUtPmRldmljZS5v
cHMgPSB0Y3Bfb3BzOwogCQlicmVhazsKIAljYXNlIEdOX0NUX0RLVTJMSUJVU0I6Ci0JCXN0YXRl
LT5kZXZpY2UuZmQgPSBmYnVzZGt1MnVzYl9vcGVuKHN0YXRlKTsKKwkJc3RhdGUtPmRldmljZS5v
cHMgPSBka3UybGlidXNiX29wczsKIAkJYnJlYWs7CiAJY2FzZSBHTl9DVF9TT0NLRVRQSE9ORVQ6
Ci0JCXN0YXRlLT5kZXZpY2UuZmQgPSBzb2NrZXRwaG9uZXRfb3BlbihmaWxlLCB3aXRoX2FzeW5j
LCBzdGF0ZSk7CisJCXN0YXRlLT5kZXZpY2Uub3BzID0gcGhvbmV0X29wczsKIAkJYnJlYWs7CiAJ
ZGVmYXVsdDoKLQkJc3RhdGUtPmRldmljZS5mZCA9IC0xOwogCQlicmVhazsKIAl9CiAKKwlpZiAo
IXN0YXRlLT5kZXZpY2Uub3BzKQorCQlyZXR1cm4gMDsKKworCXN0YXRlLT5kZXZpY2UuZmQgPSBz
dGF0ZS0+ZGV2aWNlLm9wcy0+b3BlbihmaWxlLCB3aXRoX29kZF9wYXJpdHksIHdpdGhfYXN5bmMs
IHdpdGhfaHdfaGFuZHNoYWtlLCBzdGF0ZSk7CiAJaWYgKHN0YXRlLT5kZXZpY2UuZmQgPCAwKQog
CQlyZXR1cm4gMDsKIApAQCAtOTUsMTgzICsyNjAsNTYgQEAgdm9pZCBkZXZpY2VfY2xvc2Uoc3Ry
dWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCiAJaWYgKGRldmljZV9zY3JpcHQoc3RhdGUtPmRl
dmljZS5mZCwgMCwgc3RhdGUpID09IC0xKQogCQlkcHJpbnRmKCJnbm9raWkgZGV2aWNlIGNsb3Nl
OiBkaXNjb25uZWN0X3NjcmlwdCBmYWlsdXJlXG4iKTsKIAotCXN3aXRjaCAoc3RhdGUtPmRldmlj
ZS50eXBlKSB7Ci0JY2FzZSBHTl9DVF9ES1UyOgotCWNhc2UgR05fQ1RfU2VyaWFsOgotCWNhc2Ug
R05fQ1RfSW5mcmFyZWQ6Ci0JCXNlcmlhbF9jbG9zZShzdGF0ZS0+ZGV2aWNlLmZkLCBzdGF0ZSk7
Ci0JCWJyZWFrOwotCWNhc2UgR05fQ1RfSXJkYToKLQkJaXJkYV9jbG9zZShzdGF0ZS0+ZGV2aWNl
LmZkLCBzdGF0ZSk7Ci0JCWJyZWFrOwotCWNhc2UgR05fQ1RfQmx1ZXRvb3RoOgotCQlibHVldG9v
dGhfY2xvc2Uoc3RhdGUtPmRldmljZS5mZCwgc3RhdGUpOwotCQlicmVhazsKLQljYXNlIEdOX0NU
X1Rla3JhbToKLQkJdGVrcmFtX2Nsb3NlKHN0YXRlLT5kZXZpY2UuZmQsIHN0YXRlKTsKLQkJYnJl
YWs7Ci0JY2FzZSBHTl9DVF9UQ1A6Ci0JCXRjcF9jbG9zZShzdGF0ZS0+ZGV2aWNlLmZkLCBzdGF0
ZSk7Ci0JCWJyZWFrOwotCWNhc2UgR05fQ1RfREtVMkxJQlVTQjoKLQkJZmJ1c2RrdTJ1c2JfY2xv
c2Uoc3RhdGUpOwotCQlicmVhazsKLQljYXNlIEdOX0NUX1NPQ0tFVFBIT05FVDoKLQkJc29ja2V0
cGhvbmV0X2Nsb3NlKHN0YXRlKTsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJYnJlYWs7Ci0JfQor
CXN0YXRlLT5kZXZpY2Uub3BzLT5jbG9zZShzdGF0ZS0+ZGV2aWNlLmZkLCBzdGF0ZSk7CiAKIAlm
cmVlKHN0YXRlLT5kZXZpY2UuZGV2aWNlX2luc3RhbmNlKTsKIAlzdGF0ZS0+ZGV2aWNlLmRldmlj
ZV9pbnN0YW5jZSA9IE5VTEw7CiB9CiAKLXZvaWQgZGV2aWNlX3Jlc2V0KHN0cnVjdCBnbl9zdGF0
ZW1hY2hpbmUgKnN0YXRlKQotewotCXJldHVybjsKLX0KLQogdm9pZCBkZXZpY2Vfc2V0ZHRycnRz
KGludCBkdHIsIGludCBydHMsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQogewotCXN3
aXRjaCAoc3RhdGUtPmRldmljZS50eXBlKSB7Ci0JY2FzZSBHTl9DVF9ES1UyOgotCWNhc2UgR05f
Q1RfU2VyaWFsOgotCWNhc2UgR05fQ1RfSW5mcmFyZWQ6CisJaWYgKHN0YXRlLT5kZXZpY2Uub3Bz
LT5kdHJydHMpIHsKIAkJZHByaW50ZigiZGV2aWNlOiBzZXR0aW5nIFJUUyB0byAlcyBhbmQgRFRS
IHRvICVzXG4iLCBydHMgPyAiaGlnaCIgOiAibG93IiwgZHRyID8gImhpZ2giIDogImxvdyIpOwot
CQlzZXJpYWxfc2V0ZHRycnRzKHN0YXRlLT5kZXZpY2UuZmQsIGR0ciwgcnRzLCBzdGF0ZSk7Ci0J
CWJyZWFrOwotCWNhc2UgR05fQ1RfSXJkYToKLQljYXNlIEdOX0NUX0JsdWV0b290aDoKLQljYXNl
IEdOX0NUX1Rla3JhbToKLQljYXNlIEdOX0NUX1RDUDoKLQljYXNlIEdOX0NUX0RLVTJMSUJVU0I6
Ci0JY2FzZSBHTl9DVF9TT0NLRVRQSE9ORVQ6Ci0JZGVmYXVsdDoKLQkJYnJlYWs7CisJCXN0YXRl
LT5kZXZpY2Uub3BzLT5kdHJydHMoc3RhdGUtPmRldmljZS5mZCwgZHRyLCBydHMsIHN0YXRlKTsK
IAl9CiB9CiAKIHZvaWQgZGV2aWNlX2NoYW5nZXNwZWVkKGludCBzcGVlZCwgc3RydWN0IGduX3N0
YXRlbWFjaGluZSAqc3RhdGUpCiB7Ci0Jc3dpdGNoIChzdGF0ZS0+ZGV2aWNlLnR5cGUpIHsKLQlj
YXNlIEdOX0NUX0RLVTI6Ci0JY2FzZSBHTl9DVF9TZXJpYWw6Ci0JY2FzZSBHTl9DVF9JbmZyYXJl
ZDoKKwlpZiAoc3RhdGUtPmRldmljZS5vcHMtPnNwZWVkKSB7CiAJCWRwcmludGYoImRldmljZTog
c2V0dGluZyBzcGVlZCB0byAlZFxuIiwgc3BlZWQpOwotCQlzZXJpYWxfY2hhbmdlc3BlZWQoc3Rh
dGUtPmRldmljZS5mZCwgc3BlZWQsIHN0YXRlKTsKLQkJYnJlYWs7Ci0JY2FzZSBHTl9DVF9UZWty
YW06Ci0JCWRwcmludGYoImRldmljZTogc2V0dGluZyBzcGVlZCB0byAlZFxuIiwgc3BlZWQpOwot
CQl0ZWtyYW1fY2hhbmdlc3BlZWQoc3RhdGUtPmRldmljZS5mZCwgc3BlZWQsIHN0YXRlKTsKLQkJ
YnJlYWs7Ci0JY2FzZSBHTl9DVF9JcmRhOgotCWNhc2UgR05fQ1RfQmx1ZXRvb3RoOgotCWNhc2Ug
R05fQ1RfVENQOgotCWNhc2UgR05fQ1RfREtVMkxJQlVTQjoKLQljYXNlIEdOX0NUX1NPQ0tFVFBI
T05FVDoKLQlkZWZhdWx0OgotCQlicmVhazsKKwkJc3RhdGUtPmRldmljZS5vcHMtPnNwZWVkKHN0
YXRlLT5kZXZpY2UuZmQsIHNwZWVkLCBzdGF0ZSk7CiAJfQogfQogCiBzaXplX3QgZGV2aWNlX3Jl
YWQoX19wdHJfdCBidWYsIHNpemVfdCBuYnl0ZXMsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0
YXRlKQogewotCXN3aXRjaCAoc3RhdGUtPmRldmljZS50eXBlKSB7Ci0JY2FzZSBHTl9DVF9ES1Uy
OgotCWNhc2UgR05fQ1RfU2VyaWFsOgotCWNhc2UgR05fQ1RfSW5mcmFyZWQ6Ci0JCXJldHVybiBz
ZXJpYWxfcmVhZChzdGF0ZS0+ZGV2aWNlLmZkLCBidWYsIG5ieXRlcywgc3RhdGUpOwotCWNhc2Ug
R05fQ1RfSXJkYToKLQkJcmV0dXJuIGlyZGFfcmVhZChzdGF0ZS0+ZGV2aWNlLmZkLCBidWYsIG5i
eXRlcywgc3RhdGUpOwotCWNhc2UgR05fQ1RfQmx1ZXRvb3RoOgotCQlyZXR1cm4gYmx1ZXRvb3Ro
X3JlYWQoc3RhdGUtPmRldmljZS5mZCwgYnVmLCBuYnl0ZXMsIHN0YXRlKTsKLQljYXNlIEdOX0NU
X1Rla3JhbToKLQkJcmV0dXJuIHRla3JhbV9yZWFkKHN0YXRlLT5kZXZpY2UuZmQsIGJ1ZiwgbmJ5
dGVzLCBzdGF0ZSk7Ci0JY2FzZSBHTl9DVF9UQ1A6Ci0JCXJldHVybiB0Y3BfcmVhZChzdGF0ZS0+
ZGV2aWNlLmZkLCBidWYsIG5ieXRlcywgc3RhdGUpOwotCWNhc2UgR05fQ1RfREtVMkxJQlVTQjoK
LQkJcmV0dXJuIGZidXNka3UydXNiX3JlYWQoYnVmLCBuYnl0ZXMsIHN0YXRlKTsKLQljYXNlIEdO
X0NUX1NPQ0tFVFBIT05FVDoKLQkJcmV0dXJuIHNvY2tldHBob25ldF9yZWFkKHN0YXRlLT5kZXZp
Y2UuZmQsIGJ1ZiwgbmJ5dGVzLCBzdGF0ZSk7Ci0JZGVmYXVsdDoKLQkJYnJlYWs7Ci0JfQotCXJl
dHVybiAwOworCXJldHVybiBzdGF0ZS0+ZGV2aWNlLm9wcy0+cmVhZChzdGF0ZS0+ZGV2aWNlLmZk
LCBidWYsIG5ieXRlcywgc3RhdGUpOwogfQogCiBzaXplX3QgZGV2aWNlX3dyaXRlKGNvbnN0IF9f
cHRyX3QgYnVmLCBzaXplX3Qgbiwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCiB7Ci0J
c3dpdGNoIChzdGF0ZS0+ZGV2aWNlLnR5cGUpIHsKLQljYXNlIEdOX0NUX0RLVTI6Ci0JY2FzZSBH
Tl9DVF9TZXJpYWw6Ci0JY2FzZSBHTl9DVF9JbmZyYXJlZDoKLQkJcmV0dXJuIHNlcmlhbF93cml0
ZShzdGF0ZS0+ZGV2aWNlLmZkLCBidWYsIG4sIHN0YXRlKTsKLQljYXNlIEdOX0NUX0lyZGE6Ci0J
CXJldHVybiBpcmRhX3dyaXRlKHN0YXRlLT5kZXZpY2UuZmQsIGJ1Ziwgbiwgc3RhdGUpOwotCWNh
c2UgR05fQ1RfQmx1ZXRvb3RoOgotCQlyZXR1cm4gYmx1ZXRvb3RoX3dyaXRlKHN0YXRlLT5kZXZp
Y2UuZmQsIGJ1Ziwgbiwgc3RhdGUpOwotCWNhc2UgR05fQ1RfVGVrcmFtOgotCQlyZXR1cm4gdGVr
cmFtX3dyaXRlKHN0YXRlLT5kZXZpY2UuZmQsIGJ1Ziwgbiwgc3RhdGUpOwotCWNhc2UgR05fQ1Rf
VENQOgotCQlyZXR1cm4gdGNwX3dyaXRlKHN0YXRlLT5kZXZpY2UuZmQsIGJ1Ziwgbiwgc3RhdGUp
OwotCWNhc2UgR05fQ1RfREtVMkxJQlVTQjoKLQkJcmV0dXJuIGZidXNka3UydXNiX3dyaXRlKGJ1
Ziwgbiwgc3RhdGUpOwotCWNhc2UgR05fQ1RfU09DS0VUUEhPTkVUOgotCQlyZXR1cm4gc29ja2V0
cGhvbmV0X3dyaXRlKHN0YXRlLT5kZXZpY2UuZmQsIGJ1Ziwgbiwgc3RhdGUpOwotCWRlZmF1bHQ6
Ci0JCWJyZWFrOwotCX0KLQlyZXR1cm4gMDsKKwlyZXR1cm4gc3RhdGUtPmRldmljZS5vcHMtPndy
aXRlKHN0YXRlLT5kZXZpY2UuZmQsIGJ1Ziwgbiwgc3RhdGUpOwogfQogCiBpbnQgZGV2aWNlX3Nl
bGVjdChzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3Rh
dGUpCiB7Ci0Jc3dpdGNoIChzdGF0ZS0+ZGV2aWNlLnR5cGUpIHsKLQljYXNlIEdOX0NUX0RLVTI6
Ci0JY2FzZSBHTl9DVF9TZXJpYWw6Ci0JY2FzZSBHTl9DVF9JbmZyYXJlZDoKLQkJcmV0dXJuIHNl
cmlhbF9zZWxlY3Qoc3RhdGUtPmRldmljZS5mZCwgdGltZW91dCwgc3RhdGUpOwotCWNhc2UgR05f
Q1RfSXJkYToKLQkJcmV0dXJuIGlyZGFfc2VsZWN0KHN0YXRlLT5kZXZpY2UuZmQsIHRpbWVvdXQs
IHN0YXRlKTsKLQljYXNlIEdOX0NUX0JsdWV0b290aDoKLQkJcmV0dXJuIGJsdWV0b290aF9zZWxl
Y3Qoc3RhdGUtPmRldmljZS5mZCwgdGltZW91dCwgc3RhdGUpOwotCWNhc2UgR05fQ1RfVGVrcmFt
OgotCQlyZXR1cm4gdGVrcmFtX3NlbGVjdChzdGF0ZS0+ZGV2aWNlLmZkLCB0aW1lb3V0LCBzdGF0
ZSk7Ci0JY2FzZSBHTl9DVF9UQ1A6Ci0JCXJldHVybiB0Y3Bfc2VsZWN0KHN0YXRlLT5kZXZpY2Uu
ZmQsIHRpbWVvdXQsIHN0YXRlKTsKLQljYXNlIEdOX0NUX0RLVTJMSUJVU0I6Ci0JCXJldHVybiBm
YnVzZGt1MnVzYl9zZWxlY3QodGltZW91dCwgc3RhdGUpOwotCWNhc2UgR05fQ1RfU09DS0VUUEhP
TkVUOgotCQlyZXR1cm4gc29ja2V0cGhvbmV0X3NlbGVjdChzdGF0ZS0+ZGV2aWNlLmZkLCB0aW1l
b3V0LCBzdGF0ZSk7Ci0JZGVmYXVsdDoKLQkJYnJlYWs7Ci0JfQotCXJldHVybiAtMTsKKwlyZXR1
cm4gc3RhdGUtPmRldmljZS5vcHMtPnNlbGVjdChzdGF0ZS0+ZGV2aWNlLmZkLCB0aW1lb3V0LCBz
dGF0ZSk7CiB9CiAKIGduX2Vycm9yIGRldmljZV9ucmVjZWl2ZWQoaW50ICpuLCBzdHJ1Y3QgZ25f
c3RhdGVtYWNoaW5lICpzdGF0ZSkKIHsKIAkqbiA9IC0xOwotCi0Jc3dpdGNoIChzdGF0ZS0+ZGV2
aWNlLnR5cGUpIHsKLQljYXNlIEdOX0NUX0RLVTI6Ci0JY2FzZSBHTl9DVF9TZXJpYWw6Ci0JY2Fz
ZSBHTl9DVF9JbmZyYXJlZDoKLQkJcmV0dXJuIHNlcmlhbF9ucmVjZWl2ZWQoc3RhdGUtPmRldmlj
ZS5mZCwgbiwgc3RhdGUpOwotCWRlZmF1bHQ6CisJaWYgKCFzdGF0ZS0+ZGV2aWNlLm9wcy0+bnJj
dmQpCiAJCXJldHVybiBHTl9FUlJfTk9UU1VQUE9SVEVEOwotCX0KKworCXJldHVybiBzdGF0ZS0+
ZGV2aWNlLm9wcy0+bnJjdmQoc3RhdGUtPmRldmljZS5mZCwgbiwgc3RhdGUpOwogfQogCiBnbl9l
cnJvciBkZXZpY2VfZmx1c2goc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCiB7Ci0Jc3dp
dGNoIChzdGF0ZS0+ZGV2aWNlLnR5cGUpIHsKLQljYXNlIEdOX0NUX0RLVTI6Ci0JY2FzZSBHTl9D
VF9TZXJpYWw6Ci0JY2FzZSBHTl9DVF9JbmZyYXJlZDoKLQkJcmV0dXJuIHNlcmlhbF9mbHVzaChz
dGF0ZS0+ZGV2aWNlLmZkLCBzdGF0ZSk7Ci0JZGVmYXVsdDoKKwlpZiAoIXN0YXRlLT5kZXZpY2Uu
b3BzLT5mbHVzaCkKIAkJcmV0dXJuIEdOX0VSUl9OT1RTVVBQT1JURUQ7Ci0JfQorCisJcmV0dXJu
IHN0YXRlLT5kZXZpY2Uub3BzLT5mbHVzaChzdGF0ZS0+ZGV2aWNlLmZkLCBzdGF0ZSk7CiB9CmRp
ZmYgLS1naXQgYS9jb21tb24vZGV2aWNlcy9NYWtlZmlsZS5hbSBiL2NvbW1vbi9kZXZpY2VzL01h
a2VmaWxlLmFtCmluZGV4IDg2MDc2MmU0Li41OTJjMmI5ZCAxMDA2NDQKLS0tIGEvY29tbW9uL2Rl
dmljZXMvTWFrZWZpbGUuYW0KKysrIGIvY29tbW9uL2RldmljZXMvTWFrZWZpbGUuYW0KQEAgLTEs
MzQgKzEsMzggQEAKIG5vaW5zdF9MVExJQlJBUklFUyA9IGxpYkRFVklDRVMubGEKIAotV0lOMzJf
RklMRVMgPSBcCi0Jd2luc2VyaWFsLmMgXAotCXdpbmlyZGEuYyBcCi0Jd2luYmx1ZXRvb3RoLmMK
LQotVU5JWF9GSUxFUyA9IFwKLQl1bml4c2VyaWFsLmMgXAotCXVuaXhpcmRhLmMgXAotCXRjcC5j
IFwKLQlzb2NrZXRwaG9uZXQuYwotCi1pZiBGT1JfTUFDCi1VTklYX1NQRUNJRklDX0ZJTEVTID0g
b3N4Ymx1ZXRvb3RoLm0KLWVsc2UKLVVOSVhfU1BFQ0lGSUNfRklMRVMgPSB1bml4Ymx1ZXRvb3Ro
LmMKK2dub2tpaV9kZXZpY2VzCT0gdGVrcmFtLmMKK2lmIExJQlVTQgorZ25va2lpX2RldmljZXMJ
Kz0gZGt1MmxpYnVzYi5jCitlbmRpZgoraWYgIVdJTjMyCitnbm9raWlfZGV2aWNlcwkrPSB0Y3Au
YworZW5kaWYKK2lmIFNPQ0tFVFBIT05FVAorZ25va2lpX2RldmljZXMJKz0gc29ja2V0cGhvbmV0
LmMKK2VuZGlmCitpZiBPU1hCTFVFVE9PVEgKK2dub2tpaV9kZXZpY2VzCSs9IG9zeGJsdWV0b290
aC5tCitlbmRpZgoraWYgVU5JWEJMVUVUT09USAorZ25va2lpX2RldmljZXMJKz0gdW5peGJsdWV0
b290aC5jCitlbmRpZgoraWYgVU5JWElSREEKK2dub2tpaV9kZXZpY2VzCSs9IHVuaXhpcmRhLmMK
K2VuZGlmCitpZiAhV0lOMzIKK2dub2tpaV9kZXZpY2VzCSs9IHVuaXhzZXJpYWwuYworZW5kaWYK
K2lmIFdJTkJMVUVUT09USAorZ25va2lpX2RldmljZXMJKz0gd2luYmx1ZXRvb3RoLmMKK2VuZGlm
CitpZiBXSU5JUkRBCitnbm9raWlfZGV2aWNlcwkrPSB3aW5pcmRhLmMKIGVuZGlmCi0KIGlmIFdJ
TjMyCi1QTEFURk9STV9GSUxFUyA9ICQoV0lOMzJfRklMRVMpCi1lbHNlCi1QTEFURk9STV9GSUxF
UyA9ICQoVU5JWF9GSUxFUykgJChVTklYX1NQRUNJRklDX0ZJTEVTKQorZ25va2lpX2RldmljZXMJ
Kz0gd2luc2VyaWFsLmMKIGVuZGlmCiAKLWxpYkRFVklDRVNfbGFfU09VUkNFUyA9IFwKLQkkKFBM
QVRGT1JNX0ZJTEVTKSBcCi0JdGVrcmFtLmMgXAotCWlyZGEuYyBcCi0JZGt1MmxpYnVzYi5jIFwK
LQlibHVldG9vdGguYworbGliREVWSUNFU19sYV9TT1VSQ0VTID0gJChnbm9raWlfZGV2aWNlcykK
IAogbGliREVWSUNFU19sYV9DRkxBR1MgPQkJXAogCS1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlCkBA
IC0zNyw2ICs0MSwzIEBAIGxpYkRFVklDRVNfbGFfTElCQUREID0JCVwKIAkkKFVTQl9MSUJTKQkJ
XAogCSQoQkxVRVRPT1RIX0xJQlMpCVwKIAkkKFRDUF9MSUJTKQotCi1FWFRSQV9ESVNUID0gJChX
SU4zMl9GSUxFUykgJChVTklYX0ZJTEVTKSAkKFVOSVhfU1BFQ0lGSUNfRklMRVMpCi0KZGlmZiAt
LWdpdCBhL2NvbW1vbi9kZXZpY2VzL2JsdWV0b290aC5jIGIvY29tbW9uL2RldmljZXMvYmx1ZXRv
b3RoLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjY2Y0NDhiLi4wMDAwMDAwMAot
LS0gYS9jb21tb24vZGV2aWNlcy9ibHVldG9vdGguYworKysgL2Rldi9udWxsCkBAIC0xLDMxICsw
LDAgQEAKLS8qCi0KLSAgRyBOIE8gSyBJIEkKLQotICBBIExpbnV4L1VuaXggdG9vbHNldCBhbmQg
ZHJpdmVyIGZvciB0aGUgbW9iaWxlIHBob25lcy4KLQotICBUaGlzIGZpbGUgaXMgcGFydCBvZiBn
bm9raWkuCi0KLSAgQ29weXJpZ2h0IChDKSAyMDAyICAgICAgIE1hcmNlbCBIb2x0bWFubiA8bWFy
Y2VsQGhvbHRtYW5uLm9yZz4KLSAgQ29weXJpZ2h0IChDKSAyMDAzICAgICAgIEJPUkJFTFkgWm9s
dGFuCi0gIENvcHlyaWdodCAoQykgMjAwNCAgICAgICBQYXdlbCBLb3QsIFBoaWwgQXNoYnkKLQot
ICBGYWtlIGRlZmluaXRpb25zIGZvciB0aGUgYmx1ZXRvb3RoIGhhbmRsaW5nIGZ1bmN0aW9ucy4K
LQotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImNvbXBhdC5oIgotI2luY2x1
ZGUgIm1pc2MuaCIKLSNpbmNsdWRlICJnbm9raWkuaCIKLSNpbmNsdWRlICJkZXZpY2VzL3VuaXhi
bHVldG9vdGguaCIKLQotI2lmbmRlZiBIQVZFX0JMVUVUT09USAotCi1pbnQgYmx1ZXRvb3RoX29w
ZW4oY29uc3QgY2hhciAqYWRkciwgdWludDhfdCBjaGFubmVsLCBzdHJ1Y3QgZ25fc3RhdGVtYWNo
aW5lICpzdGF0ZSkgeyByZXR1cm4gLTE7IH0KLWludCBibHVldG9vdGhfY2xvc2UoaW50IGZkLCBz
dHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkgeyByZXR1cm4gLTE7IH0KLWludCBibHVldG9v
dGhfd3JpdGUoaW50IGZkLCBjb25zdCBfX3B0cl90IGJ5dGVzLCBpbnQgc2l6ZSwgc3RydWN0IGdu
X3N0YXRlbWFjaGluZSAqc3RhdGUpIHsgcmV0dXJuIC0xOyB9Ci1pbnQgYmx1ZXRvb3RoX3JlYWQo
aW50IGZkLCBfX3B0cl90IGJ5dGVzLCBpbnQgc2l6ZSwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAq
c3RhdGUpIHsgcmV0dXJuIC0xOyB9Ci1pbnQgYmx1ZXRvb3RoX3NlbGVjdChpbnQgZmQsIHN0cnVj
dCB0aW1ldmFsICp0aW1lb3V0LCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkgeyByZXR1
cm4gLTE7IH0KLQotI2VuZGlmIC8qIEhBVkVfQkxVRVRPT1RIICovCmRpZmYgLS1naXQgYS9jb21t
b24vZGV2aWNlcy9ka3UybGlidXNiLmMgYi9jb21tb24vZGV2aWNlcy9ka3UybGlidXNiLmMKaW5k
ZXggNzlkZDlhZDkuLmMyNDJiNTEwIDEwMDY0NAotLS0gYS9jb21tb24vZGV2aWNlcy9ka3UybGli
dXNiLmMKKysrIGIvY29tbW9uL2RldmljZXMvZGt1MmxpYnVzYi5jCkBAIC0yOSwzMyArMjksODQg
QEAKICMgIGRlZmluZSBFTk9EQVRBCTYxCiAjZW5kaWYKIAotI2lmbmRlZiBIQVZFX0xJQlVTQgot
aW50IGZidXNka3UydXNiX29wZW4oc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCi17Ci0J
cmV0dXJuIC0xOwotfQotCi1pbnQgZmJ1c2RrdTJ1c2JfY2xvc2Uoc3RydWN0IGduX3N0YXRlbWFj
aGluZSAqc3RhdGUpCi17Ci0JcmV0dXJuIC0xOwotfQotCi1pbnQgZmJ1c2RrdTJ1c2Jfd3JpdGUo
Y29uc3QgX19wdHJfdCBieXRlcywgaW50IHNpemUsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0
YXRlKQotewotCXJldHVybiAtMTsKLX0KKyNpbmNsdWRlIDx1c2IuaD4KKworLyogSW5mb3JtYXRp
b24gYWJvdXQgYSBVU0IgREtVMiBGQlVTIGludGVyZmFjZSBwcmVzZW50IG9uIHRoZSBzeXN0ZW0g
Ki8KK3N0cnVjdCBmYnVzX3VzYl9pbnRlcmZhY2VfdHJhbnNwb3J0IHsKKwlzdHJ1Y3QgZmJ1c191
c2JfaW50ZXJmYWNlX3RyYW5zcG9ydCAqcHJldiwgKm5leHQ7CS8qIE5leHQgYW5kIHByZXZpb3Vz
IGludGVyZmFjZXMgaW4gdGhlIGxpc3QgKi8KKwlzdHJ1Y3QgdXNiX2RldmljZSAqZGV2aWNlOwkJ
LyogVVNCIGRldmljZSB0aGF0IGhhcyB0aGUgaW50ZXJmYWNlICovCisJaW50IGNvbmZpZ3VyYXRp
b247CQkJLyogRGV2aWNlIGNvbmZpZ3VyYXRpb24gKi8KKwlpbnQgY29uZmlndXJhdGlvbl9kZXNj
cmlwdGlvbjsJCS8qIENvbmZpZ3VyYXRpb24gc3RyaW5nIGRlc2NyaXB0b3IgbnVtYmVyICovCisJ
aW50IGNvbnRyb2xfaW50ZXJmYWNlOwkJCS8qIERLVTIgRkJVUyBtYXN0ZXIgaW50ZXJmYWNlICov
CisJaW50IGNvbnRyb2xfc2V0dGluZzsJCQkvKiBES1UyIEZCVVMgbWFzdGVyIGludGVyZmFjZSBz
ZXR0aW5nICovCisJaW50IGNvbnRyb2xfaW50ZXJmYWNlX2Rlc2NyaXB0aW9uOwkvKiBES1UyIEZC
VVMgbWFzdGVyIGludGVyZmFjZSBzdHJpbmcgZGVzY3JpcHRvciBudW1iZXIKKwkJCQkJCSAqIElm
IG5vbi16ZXJvLCB1c2UgdXNiX2dldF9zdHJpbmdfc2ltcGxlKCkgZnJvbQorCQkJCQkJICogbGli
dXNiIHRvIHJldHJpZXZlIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uCisJCQkJCQkgKi8KKwlp
bnQgZGF0YV9pbnRlcmZhY2U7CQkJLyogREtVMiBGQlVTIGRhdGEvc2xhdmUgaW50ZXJmYWNlICov
CisJaW50IGRhdGFfaWRsZV9zZXR0aW5nOwkJCS8qIERLVTIgRkJVUyBkYXRhL3NsYXZlIGlkbGUg
c2V0dGluZyAqLworCWludCBkYXRhX2ludGVyZmFjZV9pZGxlX2Rlc2NyaXB0aW9uOwkvKiBES1Uy
IEZCVVMgZGF0YS9zbGF2ZSBpbnRlcmZhY2Ugc3RyaW5nIGRlc2NyaXB0b3IgbnVtYmVyCisJCQkJ
CQkgKiBpbiBpZGxlIHNldHRpbmcgKi8KKwlpbnQgZGF0YV9hY3RpdmVfc2V0dGluZzsJCS8qIERL
VTIgRkJVUyBkYXRhL3NsYXZlIGFjdGl2ZSBzZXR0aW5nICovCisJaW50IGRhdGFfaW50ZXJmYWNl
X2FjdGl2ZV9kZXNjcmlwdGlvbjsJLyogREtVMiBGQlVTIGRhdGEvc2xhdmUgaW50ZXJmYWNlIHN0
cmluZyBkZXNjcmlwdG9yIG51bWJlcgorCQkJCQkJICogaW4gYWN0aXZlIHNldHRpbmcgKi8KKwlp
bnQgZGF0YV9lbmRwb2ludF9yZWFkOwkJCS8qIERLVTIgRkJVUyBkYXRhL3NsYXZlIGludGVyZmFj
ZSByZWFkIGVuZHBvaW50ICovCisJaW50IGRhdGFfZW5kcG9pbnRfd3JpdGU7CQkvKiBES1UyIEZC
VVMgZGF0YS9zbGF2ZSBpbnRlcmZhY2Ugd3JpdGUgZW5kcG9pbnQgKi8KKwl1c2JfZGV2X2hhbmRs
ZSAqZGV2X2NvbnRyb2w7CQkvKiBsaWJ1c2IgaGFuZGxlciBmb3IgY29udHJvbCBpbnRlcmFjZSAq
LworCXVzYl9kZXZfaGFuZGxlICpkZXZfZGF0YTsJCS8qIGxpYnVzYiBoYW5kbGVyIGZvciBkYXRh
IGludGVyZmFjZSAqLworfTsKKworLyogVVNCLXNwZWNpZmljIEZCVVMgaW50ZXJmYWNlIGluZm9y
bWF0aW9uICovCit0eXBlZGVmIHN0cnVjdCB7CisJLyogTWFudWZhY3R1cmVyLCBlLmcuIE5va2lh
ICovCisJY2hhciAqbWFudWZhY3R1cmVyOworCS8qIFByb2R1Y3QsIGUuZy4gTm9raWEgNjY4MCAq
LworCWNoYXIgKnByb2R1Y3Q7CisJLyogUHJvZHVjdCBzZXJpYWwgbnVtYmVyICovCisJY2hhciAq
c2VyaWFsOworCS8qIFVTQiBkZXZpY2UgY29uZmlndXJhdGlvbiBkZXNjcmlwdGlvbiAqLworCWNo
YXIgKmNvbmZpZ3VyYXRpb247CisJLyogQ29udHJvbCBpbnRlcmZhY2UgZGVzY3JpcHRpb24gKi8K
KwljaGFyICpjb250cm9sX2ludGVyZmFjZTsKKwkvKiBJZGxlIGRhdGEgaW50ZXJmYWNlIGRlc2Ny
aXB0aW9uLCB0eXBpY2FsbHkgZW1wdHkgKi8KKwljaGFyICpkYXRhX2ludGVyZmFjZV9pZGxlOwor
CS8qIEFjdGl2ZSBkYXRhIGludGVyZmFjZSBkZXNjcmlwdGlvbiwgdHlwaWNhbGx5IGVtcHR5ICov
CisJY2hhciAqZGF0YV9pbnRlcmZhY2VfYWN0aXZlOworCS8qIEludGVybmFsIGluZm9ybWF0aW9u
IGZvciB0aGUgdHJhbnNwb3J0IGxheWVyIGluIHRoZSBsaWJyYXJ5ICovCisJc3RydWN0IGZidXNf
dXNiX2ludGVyZmFjZV90cmFuc3BvcnQgKmludGVyZmFjZTsKK30gZmJ1c191c2JfaW50ZXJmYWNl
OworCisvKiAiVW5pb24gRnVuY3Rpb25hbCBEZXNjcmlwdG9yIiBmcm9tIENEQyBzcGVjIDUuMi4z
LlgKKyAqIHVzZWQgdG8gZmluZCBkYXRhL3NsYXZlIERLVTIgRkJVUyBpbnRlcmZhY2UgKi8KKyNw
cmFnbWEgcGFjaygxKQorc3RydWN0IGNkY191bmlvbl9kZXNjIHsKKwl1X2ludDhfdCAgICAgIGJM
ZW5ndGg7CisJdV9pbnQ4X3QgICAgICBiRGVzY3JpcHRvclR5cGU7CisJdV9pbnQ4X3QgICAgICBi
RGVzY3JpcHRvclN1YlR5cGU7CisKKwl1X2ludDhfdCAgICAgIGJNYXN0ZXJJbnRlcmZhY2UwOwor
CXVfaW50OF90ICAgICAgYlNsYXZlSW50ZXJmYWNlMDsKK307CisjcHJhZ21hIHBhY2soKQorCisv
KiBOb2tpYSBpcyB0aGUgdmVuZG9yIHdlIGFyZSBpbnRlcmVzdGVkIGluICovCisjZGVmaW5lIE5P
S0lBX1ZFTkRPUl9JRAkweDA0MjEKKworLyogQ0RDIGNsYXNzIGFuZCBzdWJjbGFzcyB0eXBlcyAq
LworI2RlZmluZSBVU0JfQ0RDX0NMQVNTCQkJMHgwMgorI2RlZmluZSBVU0JfQ0RDX0ZCVVNfU1VC
Q0xBU1MJCTB4ZmUKKworLyogY2xhc3MgYW5kIHN1YmNsYXNzIHNwZWNpZmljIGRlc2NyaXB0b3Ig
dHlwZXMgKi8KKyNkZWZpbmUgQ0RDX0hFQURFUl9UWVBFCQkJMHgwMAorI2RlZmluZSBDRENfVU5J
T05fVFlQRQkJCTB4MDYKKyNkZWZpbmUgQ0RDX0ZCVVNfVFlQRQkJCTB4MTUKKworLyogSW50ZXJm
YWNlIGRlc2NyaXB0b3IgKi8KKyNkZWZpbmUgVVNCX0RUX0NTX0lOVEVSRkFDRQkJMHgyNAorCisj
ZGVmaW5lIFVTQl9NQVhfU1RSSU5HX1NJWkUJCTI1NgorI2RlZmluZSBVU0JfRkJVU19USU1FT1VU
CQkxMDAwMCAvKiAxMCBzZWNvbmRzICovCiAKLWludCBmYnVzZGt1MnVzYl9yZWFkKF9fcHRyX3Qg
Ynl0ZXMsIGludCBzaXplLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkKLXsKLQlyZXR1
cm4gLTE7Ci19Ci0KLWludCBmYnVzZGt1MnVzYl9zZWxlY3Qoc3RydWN0IHRpbWV2YWwgKnRpbWVv
dXQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQotewotCXJldHVybiAtMTsKLX0KLQot
I2Vsc2UKIAogI2RlZmluZQlERVZJTlNUQU5DRShzKSAoKigoZmJ1c191c2JfaW50ZXJmYWNlICoq
KSgmKHMpLT5kZXZpY2UuZGV2aWNlX2luc3RhbmNlKSkpCiAKQEAgLTM5MSw3ICs0NDIsNyBAQCBz
dGF0aWMgaW50IHVzYmZidXNfY29ubmVjdF9yZXF1ZXN0KHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUg
KnN0YXRlKQogCXJldHVybiAxOwogCiBlcnIzOgotCXVzYl9yZWxlYXNlX2ludGVyZmFjZShERVZJ
TlNUQU5DRShzdGF0ZSktPmludGVyZmFjZS0+ZGV2X2RhdGEsIERFVklOU1RBTkNFKHN0YXRlKS0+
aW50ZXJmYWNlLT5kYXRhX2ludGVyZmFjZSk7CQorCXVzYl9yZWxlYXNlX2ludGVyZmFjZShERVZJ
TlNUQU5DRShzdGF0ZSktPmludGVyZmFjZS0+ZGV2X2RhdGEsIERFVklOU1RBTkNFKHN0YXRlKS0+
aW50ZXJmYWNlLT5kYXRhX2ludGVyZmFjZSk7CiBlcnIyOgogCXVzYl9yZWxlYXNlX2ludGVyZmFj
ZShERVZJTlNUQU5DRShzdGF0ZSktPmludGVyZmFjZS0+ZGV2X2RhdGEsIERFVklOU1RBTkNFKHN0
YXRlKS0+aW50ZXJmYWNlLT5jb250cm9sX2ludGVyZmFjZSk7CiBlcnIxOgpAQCAtNDIzLDcgKzQ3
NCw3IEBAIHN0YXRpYyBpbnQgdXNiZmJ1c19kaXNjb25uZWN0X3JlcXVlc3Qoc3RydWN0IGduX3N0
YXRlbWFjaGluZSAqc3RhdGUpCiAJcmV0ID0gdXNiX2Nsb3NlKERFVklOU1RBTkNFKHN0YXRlKS0+
aW50ZXJmYWNlLT5kZXZfZGF0YSk7CiAJaWYgKHJldCA8IDApCiAJCWRwcmludGYoIkNhbid0IGNs
b3NlIGRhdGEgaW50ZXJmYWNlICVkXG4iLCByZXQpOwotCXJldHVybiByZXQ7CQorCXJldHVybiBy
ZXQ7CiB9CiAKIGludCBmYnVzZGt1MnVzYl9vcGVuKHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0
YXRlKQpAQCAtNDYyLDUgKzUxMywzIEBAIGludCBmYnVzZGt1MnVzYl9zZWxlY3Qoc3RydWN0IHRp
bWV2YWwgKnRpbWVvdXQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQogewogCXJldHVy
biAxOwogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2NvbW1vbi9kZXZpY2VzL2lyZGEuYyBiL2Nv
bW1vbi9kZXZpY2VzL2lyZGEuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjY3NGMy
ZGIuLjAwMDAwMDAwCi0tLSBhL2NvbW1vbi9kZXZpY2VzL2lyZGEuYworKysgL2Rldi9udWxsCkBA
IC0xLDI3ICswLDAgQEAKLS8qCi0gKgotICogRyBOIE8gSyBJIEkKLSAqCi0gKiBBIExpbnV4L1Vu
aXggdG9vbHNldCBhbmQgZHJpdmVyIGZvciB0aGUgbW9iaWxlIHBob25lcy4KLSAqCi0gKiBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMCAgSHVnaCBCbGVtaW5ncyAmIFBhdmVsIEphbsOtayBtbC4KLSAq
IENvcHlyaWdodCAoQykgMjAwMC0yMDAxICBNYXJjZWwgSG9sdG1hbm4gPG1hcmNlbEBob2x0bWFu
bi5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgICAgICAgUGhpbCBBc2hieQotICoKLSAqIEZh
a2UgZGVmaW5pdGlvbnMgZm9yIGlyZGEgaGFuZGxpbmcgZnVuY3Rpb25zLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJjb21wYXQuaCIKLSNpbmNsdWRlICJtaXNjLmgiCi0j
aW5jbHVkZSAiZ25va2lpLmgiCi0KLSNpZm5kZWYgSEFWRV9JUkRBCi0KLWludCBpcmRhX29wZW4o
c3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpIHsgcmV0dXJuIC0xOyB9Ci1pbnQgaXJkYV9j
bG9zZShpbnQgZmQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKSB7IHJldHVybiAtMTsg
fQotaW50IGlyZGFfd3JpdGUoaW50IGZkLCBjb25zdCBfX3B0cl90IGJ5dGVzLCBpbnQgc2l6ZSwg
c3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpIHsgcmV0dXJuIC0xOyB9Ci1pbnQgaXJkYV9y
ZWFkKGludCBmZCwgX19wdHJfdCBieXRlcywgaW50IHNpemUsIHN0cnVjdCBnbl9zdGF0ZW1hY2hp
bmUgKnN0YXRlKSB7IHJldHVybiAtMTsgfQotaW50IGlyZGFfc2VsZWN0KGludCBmZCwgc3RydWN0
IHRpbWV2YWwgKnRpbWVvdXQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKSB7IHJldHVy
biAtMTsgfQotCi0jZW5kaWYgLyogSEFWRV9JUkRBICovCmRpZmYgLS1naXQgYS9jb21tb24vZGV2
aWNlcy9vc3hibHVldG9vdGgubSBiL2NvbW1vbi9kZXZpY2VzL29zeGJsdWV0b290aC5tCmluZGV4
IDYyMTZjYzVjLi4xZmMxMTI5NSAxMDA2NDQKLS0tIGEvY29tbW9uL2RldmljZXMvb3N4Ymx1ZXRv
b3RoLm0KKysrIGIvY29tbW9uL2RldmljZXMvb3N4Ymx1ZXRvb3RoLm0KQEAgLTEwLDE0ICsxMCwx
MCBAQAogCiAqLwogCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZmRlZiBIQVZFX0JMVUVUT09U
SF9NQUNPU1gKLQogI2luY2x1ZGUgPElPQmx1ZXRvb3RoL29iamMvSU9CbHVldG9vdGhSRkNPTU1D
aGFubmVsLmg+CiAjaW5jbHVkZSA8SU9CbHVldG9vdGgvb2JqYy9JT0JsdWV0b290aERldmljZS5o
PgogCi0jaW5jbHVkZSAiZGV2aWNlcy91bml4Ymx1ZXRvb3RoLmgiCisjaW5jbHVkZSAiZGV2aWNl
cy9ibHVldG9vdGguaCIKIAogc3RhdGljIE5TTXV0YWJsZURpY3Rpb25hcnkgKnF1ZXVlczsKIHN0
YXRpYyBpbnQgbmV4dF9mZCA9IDE7CkBAIC0xNzksNSArMTc1LDMgQEAgaW50IGJsdWV0b290aF9j
bG9zZShpbnQgZmQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQogICAgIFtxdWV1ZXMg
cmVtb3ZlT2JqZWN0Rm9yS2V5OkAoZmQpXTsKICAgICByZXR1cm4gMTsKIH0KLQotI2VuZGlmCmRp
ZmYgLS1naXQgYS9jb21tb24vZGV2aWNlcy9zb2NrZXRwaG9uZXQuYyBiL2NvbW1vbi9kZXZpY2Vz
L3NvY2tldHBob25ldC5jCmluZGV4IDEyYmVkOGIyLi4xZTExOTkzOSAxMDA2NDQKLS0tIGEvY29t
bW9uL2RldmljZXMvc29ja2V0cGhvbmV0LmMKKysrIGIvY29tbW9uL2RldmljZXMvc29ja2V0cGhv
bmV0LmMKQEAgLTE1LDQ5ICsxNSwxNyBAQAogCiAqLwogCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiY29tcGF0LmgiIC8qIGZvciBfX3B0cl90IGRlZmluaXRpb24gKi8KLSNpbmNsdWRl
ICJnbm9raWkuaCIKLQotI2lmbmRlZiBIQVZFX1NPQ0tFVFBIT05FVAotCi1pbnQgc29ja2V0cGhv
bmV0X2Nsb3NlKHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQotewotCXJldHVybiAtMTsK
LX0KLQotaW50IHNvY2tldHBob25ldF9vcGVuKGNvbnN0IGNoYXIgKmlmYWNlLCBpbnQgd2l0aF9h
c3luYywgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCi17Ci0JcmV0dXJuIC0xOwotfQot
Ci1zaXplX3Qgc29ja2V0cGhvbmV0X3JlYWQoaW50IGZkLCBfX3B0cl90IGJ1Ziwgc2l6ZV90IG5i
eXRlcywgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCi17Ci0JcmV0dXJuIC0xOwotfQot
Ci1zaXplX3Qgc29ja2V0cGhvbmV0X3dyaXRlKGludCBmZCwgY29uc3QgX19wdHJfdCBidWYsIHNp
emVfdCBuLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkKLXsKLQlyZXR1cm4gLTE7Ci19
Ci0KLWludCBzb2NrZXRwaG9uZXRfc2VsZWN0KGludCBmZCwgc3RydWN0IHRpbWV2YWwgKnRpbWVv
dXQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQotewotCXJldHVybiAtMTsKLX0KLQot
I2Vsc2UKLQogLyogU3lzdGVtIGhlYWRlciBmaWxlcyAqLwogI2luY2x1ZGUgPHN5cy9zb2NrZXQu
aD4KICNpbmNsdWRlIDxsaW51eC9waG9uZXQuaD4KIAogLyogVmFyaW91cyBoZWFkZXIgZmlsZXMg
Ki8KKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJjb21wYXQuaCIKICNpbmNsdWRlICJs
aW5rcy9mYnVzLWNvbW1vbi5oIgogI2luY2x1ZGUgImxpbmtzL2ZidXMtcGhvbmV0LmgiCi0jaW5j
bHVkZSAiZGV2aWNlLmgiCiAjaW5jbHVkZSAiZGV2aWNlcy9zZXJpYWwuaCIKKyNpbmNsdWRlICJk
ZXZpY2VzL3NvY2tldHBob25ldC5oIgogI2luY2x1ZGUgImdub2tpaS1pbnRlcm5hbC5oIgogCiBz
dGF0aWMgc3RydWN0IHNvY2thZGRyX3BuIGFkZHIgPSB7IC5zcG5fZmFtaWx5ID0gQUZfUEhPTkVU
LCAuc3BuX2RldiA9IEZCVVNfREVWSUNFX1BIT05FIH07CkBAIC0xNTksNSArMTI3LDMgQEAgaW50
IHNvY2tldHBob25ldF9zZWxlY3QoaW50IGZkLCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgc3Ry
dWN0IGduX3N0YXRlbWFjaGluZQogewogCXJldHVybiBzZXJpYWxfc2VsZWN0KGZkLCB0aW1lb3V0
LCBzdGF0ZSk7CiB9Ci0KLSNlbmRpZiAvKiBIQVZFX1NPQ0tFVFBIT05FVCAqLwpkaWZmIC0tZ2l0
IGEvY29tbW9uL2RldmljZXMvdGNwLmMgYi9jb21tb24vZGV2aWNlcy90Y3AuYwppbmRleCBhZjll
ZDdlZS4uM2FmYjQ1NzUgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9kZXZpY2VzL3RjcC5jCisrKyBiL2Nv
bW1vbi9kZXZpY2VzL3RjcC5jCkBAIC0xOCw4ICsxOCw2IEBACiAjaW5jbHVkZSAiZGV2aWNlcy90
Y3AuaCIKICNpbmNsdWRlICJkZXZpY2VzL3NlcmlhbC5oIgogCi0jaWZuZGVmIFdJTjMyCi0KICNp
ZmRlZiBIQVZFX1NZU19JT0NUTF9ICiAjICBpbmNsdWRlIDxzeXMvaW9jdGwuaD4KICNlbmRpZgpA
QCAtNDAsOCArMzgsNiBAQAogIyAgZGVmaW5lIE9fTk9OQkxPQ0sgIDAKICNlbmRpZgogCi0vKiBP
cGVuIHRoZSBzZXJpYWwgcG9ydCBhbmQgc3RvcmUgdGhlIHNldHRpbmdzLiAqLwotCiBzdGF0aWMg
aW50IHRjcF9vcGVuKGNvbnN0IGNoYXIgKmZpbGUpCiB7CiAJaW50IGZkOwpAQCAtMTM4LDE2ICsx
MzQsMTIgQEAgaW50IHRjcF9jbG9zZShpbnQgZmQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0
YXRlKQogCXJldHVybiBjbG9zZShmZCk7CiB9CiAKLS8qIE9wZW4gYSBkZXZpY2Ugd2l0aCBzdGFu
ZGFyZCBvcHRpb25zLgotICogVXNlIHZhbHVlICgtMSkgZm9yICJ3aXRoX2h3X2hhbmRzaGFrZSIg
aWYgaXRzIHNwZWNpZmljYXRpb24gaXMgcmVxdWlyZWQgZnJvbSB0aGUgdXNlcgotICovCiBpbnQg
dGNwX29wZW5kZXZpY2UoY29uc3QgY2hhciAqZmlsZSwgaW50IHdpdGhfYXN5bmMsIHN0cnVjdCBn
bl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQogewogCWludCBmZDsKIAlpbnQgcmV0Y29kZTsKIAogCS8q
IE9wZW4gZGV2aWNlICovCi0KIAlmZCA9IHRjcF9vcGVuKGZpbGUpOwogCiAJaWYgKGZkIDwgMCkK
QEAgLTE5Myw0NiArMTg1LDEyIEBAIGludCB0Y3Bfc2VsZWN0KGludCBmZCwgc3RydWN0IHRpbWV2
YWwgKnRpbWVvdXQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQogCXJldHVybiBzZXJp
YWxfc2VsZWN0KGZkLCB0aW1lb3V0LCBzdGF0ZSk7CiB9CiAKLQotLyogUmVhZCBmcm9tIHNlcmlh
bCBkZXZpY2UuICovCi0KIHNpemVfdCB0Y3BfcmVhZChpbnQgZmQsIF9fcHRyX3QgYnVmLCBzaXpl
X3QgbmJ5dGVzLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkKIHsKIAlyZXR1cm4gcmVh
ZChmZCwgYnVmLCBuYnl0ZXMpOwogfQogCi0vKiBXcml0ZSB0byBzZXJpYWwgZGV2aWNlLiAqLwot
CiBzaXplX3QgdGNwX3dyaXRlKGludCBmZCwgY29uc3QgX19wdHJfdCBidWYsIHNpemVfdCBuLCBz
dHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkKIHsKIAlyZXR1cm4gd3JpdGUoZmQsIGJ1Ziwg
bik7CiB9Ci0KLSNlbHNlIC8qIFdJTjMyICovCi0KLWludCB0Y3BfY2xvc2UoaW50IGZkLCBzdHJ1
Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSkKLXsKLQlyZXR1cm4gLTE7Ci19Ci0KLWludCB0Y3Bf
b3BlbmRldmljZShjb25zdCBjaGFyICpmaWxlLCBpbnQgd2l0aF9hc3luYywgc3RydWN0IGduX3N0
YXRlbWFjaGluZSAqc3RhdGUpCi17Ci0JcmV0dXJuIC0xOwotfQotCi1zaXplX3QgdGNwX3JlYWQo
aW50IGZkLCBfX3B0cl90IGJ1Ziwgc2l6ZV90IG5ieXRlcywgc3RydWN0IGduX3N0YXRlbWFjaGlu
ZSAqc3RhdGUpCi17Ci0JcmV0dXJuIC0xOwotfQotCi1zaXplX3QgdGNwX3dyaXRlKGludCBmZCwg
Y29uc3QgX19wdHJfdCBidWYsIHNpemVfdCBuLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0
ZSkKLXsKLQlyZXR1cm4gLTE7Ci19Ci0KLWludCB0Y3Bfc2VsZWN0KGludCBmZCwgc3RydWN0IHRp
bWV2YWwgKnRpbWVvdXQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKQotewotCXJldHVy
biAtMTsKLX0KLQotI2VuZGlmIC8qIFdJTjMyICovCmRpZmYgLS1naXQgYS9jb21tb24vZGV2aWNl
cy91bml4Ymx1ZXRvb3RoLmMgYi9jb21tb24vZGV2aWNlcy91bml4Ymx1ZXRvb3RoLmMKaW5kZXgg
MWNlYjEyMjguLmUxM2MyZTBiIDEwMDY0NAotLS0gYS9jb21tb24vZGV2aWNlcy91bml4Ymx1ZXRv
b3RoLmMKKysrIGIvY29tbW9uL2RldmljZXMvdW5peGJsdWV0b290aC5jCkBAIC0xNiwxMyArMTYs
MTAgQEAKIAogKi8KIAotI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImNvbXBhdC5oIgog
I2luY2x1ZGUgIm1pc2MuaCIKICNpbmNsdWRlICJnbm9raWkuaCIKLSNpbmNsdWRlICJkZXZpY2Vz
L3VuaXhibHVldG9vdGguaCIKLQotI2lmIGRlZmluZWQoSEFWRV9CTFVFVE9PVEhfQkxVRVopIHx8
IGRlZmluZWQoSEFWRV9CTFVFVE9PVEhfTkVUR1JBUEgpIHx8IGRlZmluZWQoSEFWRV9CTFVFVE9P
VEhfTkVUQlQpCisjaW5jbHVkZSAiZGV2aWNlcy9ibHVldG9vdGguaCIKIAogI2lmZGVmIEhBVkVf
QkxVRVRPT1RIX05FVEdSQVBICS8qIEZyZWVCU0QgLyBuZXRncmFwaCAqLwogCkBAIC0yNTcsNyAr
MjU0LDcgQEAgc3RhdGljIGludCBmaW5kX3NlcnZpY2VfY2hhbm5lbChiZGFkZHJfdCAqYWRhcHRl
ciwgYmRhZGRyX3QgKmRldmljZSwgaW50IG9ubHlfZ24KIAkJY2FzZSBTRFBfQVRUUl9QUklNQVJZ
X0xBTkdVQUdFX0JBU0VfSUQgKyBTRFBfQVRUUl9TRVJWSUNFX05BTUVfT0ZGU0VUOgogCQkJaWYg
KGNoYW5uZWwgPT0gLTEpCiAJCQkJYnJlYWs7Ci0JCQkKKwogCQkJU0RQX0dFVDgodHlwZSwgc3Rh
cnQpOwogCQkJc3dpdGNoICh0eXBlKSB7CiAJCQkJY2FzZSBTRFBfREFUQV9TVFI4OgpAQCAtMjk1
LDcgKzI5Miw3IEBAIHN0YXRpYyBpbnQgZmluZF9zZXJ2aWNlX2NoYW5uZWwoYmRhZGRyX3QgKmFk
YXB0ZXIsIGJkYWRkcl90ICpkZXZpY2UsIGludCBvbmx5X2duCiAJCQkJCWJyZWFrOwogCQkJCX0K
IAkJCX0KLQkJCQorCiAJCQlpZiAoc3Ryc3RyKG5hbWUsICJOb2tpYSBQQyBTdWl0ZSIpICE9IE5V
TEwpIHsKIAkJCQljaGFubmVsID0gLTE7CiAJCQkJYnJlYWs7CkBAIC01MDEsNyArNDk4LDcgQEAg
aW50IGJsdWV0b290aF9vcGVuKGNvbnN0IGNoYXIgKmFkZHIsIHVpbnQ4X3QgY2hhbm5lbCwgc3Ry
dWN0IGduX3N0YXRlbWFjaGluZSAqc3QKIAogCWRwcmludGYoIlVzaW5nIGNoYW5uZWw6ICVkXG4i
LCBjaGFubmVsKTsKIAlyYWRkci5yY19jaGFubmVsID0gY2hhbm5lbDsKLQkKKwogCWlmIChjb25u
ZWN0KGZkLCAoc3RydWN0IHNvY2thZGRyICopJnJhZGRyLCBzaXplb2YocmFkZHIpKSA8IDApIHsK
IAkJcGVycm9yKF8oIkNhbid0IGNvbm5lY3QiKSk7CiAJCWNsb3NlKGZkKTsKQEAgLTU0MSw1ICs1
MzgsMyBAQCBpbnQgYmx1ZXRvb3RoX3NlbGVjdChpbnQgZmQsIHN0cnVjdCB0aW1ldmFsICp0aW1l
b3V0LCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdAogCiAJcmV0dXJuIHNlbGVjdChmZCArIDEs
ICZyZWFkZmRzLCBOVUxMLCBOVUxMLCB0aW1lb3V0KTsKIH0KLQotI2VuZGlmCS8qIEhBVkVfQkxV
RVRPT1RIX0JMVUVaIHx8IEhBVkVfQkxVRVRPT1RIX05FVEdSQVBIIHx8IEhBVkVfQkxVRVRPT1RI
X05FVEJUICovCmRpZmYgLS1naXQgYS9jb21tb24vZGV2aWNlcy91bml4aXJkYS5jIGIvY29tbW9u
L2RldmljZXMvdW5peGlyZGEuYwppbmRleCAxMjcxMDQxYS4uOThmZmFlMjUgMTAwNjQ0Ci0tLSBh
L2NvbW1vbi9kZXZpY2VzL3VuaXhpcmRhLmMKKysrIGIvY29tbW9uL2RldmljZXMvdW5peGlyZGEu
YwpAQCAtMjMsNiArMjMsOCBAQAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8
bGludXgvaXJkYS5oPgogCisjaW5jbHVkZSAiY29tcGF0LmgiCisjaW5jbHVkZSAibWlzYy5oIgog
I2luY2x1ZGUgImRldmljZXMvaXJkYS5oIgogCiAjaWZuZGVmIEFGX0lSREEKQEAgLTE3MSw1ICsx
NzMsMyBAQCBpbnQgaXJkYV9zZWxlY3QoaW50IGZkLCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwg
c3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCiAKIAlyZXR1cm4gc2VsZWN0KGZkICsgMSwg
JnJlYWRmZHMsIE5VTEwsIE5VTEwsIHRpbWVvdXQpOwogfQotCi0jZW5kaWYgLyogSEFWRV9JUkRB
ICovCmRpZmYgLS1naXQgYS9jb21tb24vZGV2aWNlcy93aW5ibHVldG9vdGguYyBiL2NvbW1vbi9k
ZXZpY2VzL3dpbmJsdWV0b290aC5jCmluZGV4IGE4OThlMmU2Li43YmU0MDEyNyAxMDA2NDQKLS0t
IGEvY29tbW9uL2RldmljZXMvd2luYmx1ZXRvb3RoLmMKKysrIGIvY29tbW9uL2RldmljZXMvd2lu
Ymx1ZXRvb3RoLmMKQEAgLTgsMTggKzgsMTQgQEAKICAqCiAgKi8KIAotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaWZkZWYgSEFWRV9CTFVFVE9PVEgKLQogI2luY2x1ZGUgPHdpbnNvY2syLmg+CiAj
aW5jbHVkZSA8bW1zeXN0ZW0uaD4KICNpbmNsdWRlIDx3czJidGguaD4KICNpbmNsdWRlIDxibHVl
dG9vdGhhcGlzLmg+CiAKKyNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJjb21wYXQuaCIK
LSNpbmNsdWRlICJnbm9raWkuaCIKLSNpbmNsdWRlICJtaXNjLmgiCisjaW5jbHVkZSAiZGV2aWNl
cy9ibHVldG9vdGguaCIKIAogLyogUVRUWSBieSBEYXZpZGUgTGliZW56aSAoIFRlcm1pbmFsIGlu
dGVyZmFjZSB0byBTeW1iaWFuIFFDb25zb2xlICkKICAqIENvcHlyaWdodCAoQykgMjAwNCAgRGF2
aWRlIExpYmVuemkKQEAgLTEwOSw1ICsxMDUsMyBAQCBpbnQgYmx1ZXRvb3RoX3NlbGVjdChpbnQg
ZmQsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0LCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdAog
CiAJcmV0dXJuIHNlbGVjdCgwIC8qIGlnbm9yZWQgb24gV2luMzIgKi8sICZyZWFkZmRzLCBOVUxM
LCBOVUxMLCB0aW1lb3V0KTsKIH0KLQotI2VuZGlmIC8qIEhBVkVfQkxVRVRPT1RIICovCmRpZmYg
LS1naXQgYS9jb21tb24vZGV2aWNlcy93aW5pcmRhLmMgYi9jb21tb24vZGV2aWNlcy93aW5pcmRh
LmMKaW5kZXggNGJmZWQ3NDIuLjcxMDE4ODQyIDEwMDY0NAotLS0gYS9jb21tb24vZGV2aWNlcy93
aW5pcmRhLmMKKysrIGIvY29tbW9uL2RldmljZXMvd2luaXJkYS5jCkBAIC04LDE0ICs4LDExIEBA
CiAgKgogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmZGVmIEhBVkVfSVJEQQotCiAj
ZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KICNpbmNsdWRlIDx3aW5zb2NrLmg+CiAjaW5jbHVk
ZSA8bW1zeXN0ZW0uaD4KIAorI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImNvbXBhdC5o
IgogI2luY2x1ZGUgIm1pc2MuaCIKICNpbmNsdWRlICJkZXZpY2VzL2lyZGEuaCIKQEAgLTE2MCw1
ICsxNTcsMyBAQCBpbnQgaXJkYV9zZWxlY3QoaW50IGZkLCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91
dCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpCiAKIAlyZXR1cm4gc2VsZWN0KDAgLyog
aWdub3JlZCBvbiBXaW4zMiAqLywgJnJlYWRmZHMsIE5VTEwsIE5VTEwsIHRpbWVvdXQpOwogfQot
Ci0jZW5kaWYgLyogSEFWRV9JUkRBICovCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25m
aWd1cmUuYWMKaW5kZXggYzRjYTE1YWYuLjk5NmNkMmVlIDEwMDY0NAotLS0gYS9jb25maWd1cmUu
YWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zNTYsNiArMzU2LDE3IEBAIEFDX0FSR19XSVRIKHJl
YWRsaW5lLAogQUNfU1VCU1QoVEVSTUxJQlMpCiBBQ19TVUJTVChURVJNTERGTEFHUykKIAorZG5s
ID09PT09PT09PT09PT09PT09PT09PT09PSBEZWZpbmVzIGxvY2F0aW9uIGZvciBnZXR0ZXh0CitB
Q19BUkdfV0lUSChnZXR0ZXh0LAorCVsgIC0td2l0aC1nZXR0ZXh0PURJUiAgICAgIHNwZWNpZmll
cyB0aGUgYmFzZSBnZXR0ZXh0XSwKKwlbIGlmIHRlc3QgeCR3aXRodmFsID0geHllczsgdGhlbgor
CQlBQ19NU0dfV0FSTihVc2FnZSBpczogLS13aXRoLWdldHRleHQ9RElSKQorCSAgZWxzZQorCQlD
RkxBR1M9IiRDRkxBR1MgLUkkd2l0aHZhbCIKKwkgIGZpCisJXQorKQorCiBkbmwgPT09PT09PT09
PT09PT09PT09PT09PT09IENoZWNrIGZvciBsaWJpY2FsCiBBQ19BUkdfV0lUSChsaWJpY2FsLAog
ICAgWyAgLS13aXRoLWxpYmljYWw9RElSICAgICAgc3BlY2lmaWVzIHRoZSBiYXNlIGxpYmljYWxd
LApAQCAtNDE1LDYgKzQyNiwxNSBAQCBpZiB0ZXN0ICIkZW5hYmxlX2xpYmljYWwiID0gInllcyI7
IHRoZW4KIAlDRkxBR1M9IiRPTERfQ0ZMQUdTIgogZmkKIAorZG5sID09PT09PT09PT09PT09PT09
PT09PT09PSBDaGVja3MgZm9yIGdldGhvc3RieW5hbWUgc3VwcG9ydAorQUNfQ0hFQ0tfRlVOQyhn
ZXRob3N0YnluYW1lLCAsCisJQUNfQ0hFQ0tfTElCKG5zbCwgZ2V0aG9zdGJ5bmFtZSwgVENQX0xJ
QlM9Ii1sbnNsIgorCQkgICAgIEFDX1NVQlNUKFRDUF9MSUJTKSkpCitkbmwgSGFpa3UgcmVxdWly
ZXMgLWxuZXR3b3JrIGZvciBzb2NrZXQgZnVuY3Rpb25zCitBQ19DSEVDS19GVU5DKGdldGhvc3Ri
eW5hbWUsICwKKwlBQ19DSEVDS19MSUIobmV0d29yaywgZ2V0aG9zdGJ5bmFtZSwgVENQX0xJQlM9
Ii1sbmV0d29yayIKKwkJICAgICBBQ19TVUJTVChUQ1BfTElCUykpKQorCiBkbmwgPT09PT09PT09
PT09PT09PT09PT09PT09IENoZWNrIGZvciBsaWJ1c2IKIFVTRV9MSUJVU0I9Im5vIgogQUNfQVJH
X0VOQUJMRShsaWJ1c2IsCkBAIC00MzgsNTkgKzQ1OCwyNSBAQCBpZiB0ZXN0ICIkZW5hYmxlX2xp
YnVzYiIgPSAieWVzIjsgdGhlbgogCQldCiAJKQogZmkKK0FNX0NPTkRJVElPTkFMKFtMSUJVU0Jd
LCBbdGVzdCAkVVNFX0xJQlVTQiA9IHllc10pCiAKLWRubCA9PT09PT09PT09PT09PT09PT09PT09
PT0gQ2hlY2tzIGZvciBMaW51eCBQaG9uZXQgc3VwcG9ydAorZG5sID09PT09PT09PT09PT09PT09
PT09PT09PSBQaG9uZXQgc3dpdGNoCiBVU0VfU09DS0VUUEhPTkVUPSJubyIKIEFDX0FSR19FTkFC
TEUocGhvbmV0LAogICAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXBob25l
dF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlIHBob25ldCBzdXBwb3J0
IChkZWZhdWx0IGlzIGF1dG9kZXRlY3RlZCldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KSwsCiAgICAgICAgICAgICAgIFtlbmFibGVfcGhvbmV0PXllc10pCi1pZiB0ZXN0ICIkZW5hYmxl
X3Bob25ldCIgPSAieWVzIjsgdGhlbgotCUFDX0NIRUNLX0hFQURFUihsaW51eC9waG9uZXQuaCwK
LQkJW0FDX0RFRklORShIQVZFX1NPQ0tFVFBIT05FVCwgMSwgW1doZXRoZXIgUGhvbmV0IGlzIGF2
YWlsYWJsZV0pCi0JCSBVU0VfU09DS0VUUEhPTkVUPSJ5ZXMiXSwsCi0JCVsjaW5jbHVkZSA8c3lz
L3NvY2tldC5oPgotCQkgI2luY2x1ZGUgPGxpbnV4L3Bob25ldC5oPl0pCi1maQogCi1kbmwgPT09
PT09PT09PT09PT09PT09PT09PT09IENoZWNrcyBmb3IgZ2V0aG9zdGJ5bmFtZSBzdXBwb3J0Ci1B
Q19DSEVDS19GVU5DKGdldGhvc3RieW5hbWUsICwKLQlBQ19DSEVDS19MSUIobnNsLCBnZXRob3N0
YnluYW1lLCBUQ1BfTElCUz0iLWxuc2wiCi0JCSAgICAgQUNfU1VCU1QoVENQX0xJQlMpKSkKLWRu
bCBIYWlrdSByZXF1aXJlcyAtbG5ldHdvcmsgZm9yIHNvY2tldCBmdW5jdGlvbnMKLUFDX0NIRUNL
X0ZVTkMoZ2V0aG9zdGJ5bmFtZSwgLAotCUFDX0NIRUNLX0xJQihuZXR3b3JrLCBnZXRob3N0Ynlu
YW1lLCBUQ1BfTElCUz0iLWxuZXR3b3JrIgotCQkgICAgIEFDX1NVQlNUKFRDUF9MSUJTKSkpCi0K
LWRubCA9PT09PT09PT09PT09PT09PT09PT09PT0gQ2hlY2tzIGZvciBMaW51eCBJckRBIHN1cHBv
cnQKK2RubCA9PT09PT09PT09PT09PT09PT09PT09PT0gSXJEQSBzd2l0Y2gKIFVTRV9JUkRBPSJu
byIKIEFDX0FSR19FTkFCTEUoaXJkYSwKICAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0t
ZGlzYWJsZS1pcmRhXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGUgaXJk
YSBzdXBwb3J0IChkZWZhdWx0IGlzIGF1dG9kZXRlY3RlZCldCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKSwsCiAgICAgICAgICAgICAgIFtlbmFibGVfaXJkYT15ZXNdKQotaWYgdGVzdCAi
JGVuYWJsZV9pcmRhIiA9ICJ5ZXMiOyB0aGVuCi0JQUNfQ0hFQ0tfSEVBREVSKGxpbnV4L2lyZGEu
aCwKLQkJW0FDX0RFRklORShIQVZFX0lSREEsIDEsIFtXaGV0aGVyIElyREEgaXMgYXZhaWxhYmxl
XSkKLQkJIFVTRV9JUkRBPSJ5ZXMiXSwsCi0JCVsjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotCQkg
I2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotCQkgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+XSkKLWZp
CiAKLWRubCA9PT09PT09PT09PT09PT09PT09PT09PT0gRGVmaW5lcyBsb2NhdGlvbiBmb3IgZ2V0
dGV4dAotQUNfQVJHX1dJVEgoZ2V0dGV4dCwKLQlbICAtLXdpdGgtZ2V0dGV4dD1ESVIgICAgICBz
cGVjaWZpZXMgdGhlIGJhc2UgZ2V0dGV4dF0sCi0JWyBpZiB0ZXN0IHgkd2l0aHZhbCA9IHh5ZXM7
IHRoZW4KLQkJQUNfTVNHX1dBUk4oVXNhZ2UgaXM6IC0td2l0aC1nZXR0ZXh0PURJUikKLQkgIGVs
c2UKLQkJQ0ZMQUdTPSIkQ0ZMQUdTIC1JJHdpdGh2YWwiCi0JICBmaQotCV0KLSkKLQotZG5sID09
PT09PT09PT09PT09PT09PT09PT09PSBDaGVja3MgZm9yIEJsdWV0b290aCBzdXBwb3J0Citkbmwg
PT09PT09PT09PT09PT09PT09PT09PT09IEJsdWV0b290aCBzd2l0Y2gKIFVTRV9CTFVFVE9PVEg9
Im5vIgogQUNfQVJHX1dJVEgoYmx1ZXRvb3RoLAogCVsgIC0td2l0aC1ibHVldG9vdGg9RElSICAg
IHNwZWNpZmllcyB0aGUgYmFzZSBsaWJibHVldG9vdGhdLApAQCAtNTI0LDYgKzUxMCw3IEBAIGxp
bnV4KikKIAkJCUFDX0RFRklORShIQVZFX0JMVUVUT09USCwgMSwgW1doZXRoZXIgQmx1ZXRvb3Ro
IGlzIGF2YWlsYWJsZV0pCiAJCQlBQ19ERUZJTkUoSEFWRV9CTFVFVE9PVEhfQkxVRVosW10sW0Nv
bXBpbGUgb24gTGludXhdKQogCQkJVVNFX0JMVUVUT09USD0ieWVzIgorCQkJVU5JWF9CTFVFVE9P
VEg9InRydWUiCiAJCQlCTFVFVE9PVEhfTElCUz0iLWxibHVldG9vdGgiCiAJCQlBQ19TVUJTVChC
TFVFVE9PVEhfTElCUykKIAkJZmkKQEAgLTU1MSw2ICs1MzgsNyBAQCBkYXJ3aW4qKQogCQkJQUNf
REVGSU5FKEhBVkVfQkxVRVRPT1RILCAxLCBbV2hldGhlciBCbHVldG9vdGggaXMgYXZhaWxhYmxl
XSkKIAkJCUFDX0RFRklORShIQVZFX0JMVUVUT09USF9NQUNPU1gsW10sW0NvbXBpbGUgb24gRGFy
d2luIC8gTWFjIE9TWF0pCiAJCQlVU0VfQkxVRVRPT1RIPSJ5ZXMiCisJCQlPU1hfQkxVRVRPT1RI
PSJ0cnVlIgogCQkJQkxVRVRPT1RIX0xJQlM9IiRQVEhSRUFEX0xJQlMgLVdsLC1mcmFtZXdvcmss
Q29yZUZvdW5kYXRpb24gLVdsLC1mcmFtZXdvcmssSU9CbHVldG9vdGggLVdsLC1mcmFtZXdvcmss
Rm91bmRhdGlvbiIKIAkJCUFDX1NVQlNUKEJMVUVUT09USF9MSUJTKQogCQlmaQpAQCAtNTcyLDYg
KzU2MCw3IEBAIGZyZWVic2QpCiAJCQlBQ19ERUZJTkUoSEFWRV9CTFVFVE9PVEgsIDEsIFtXaGV0
aGVyIEJsdWV0b290aCBpcyBhdmFpbGFibGVdKQogCQkJQUNfREVGSU5FKEhBVkVfQkxVRVRPT1RI
X05FVEdSQVBILCBbXSwgW0NvbXBpbGUgb24gRnJlZUJTRF0pCiAJCQlVU0VfQkxVRVRPT1RIPSJ5
ZXMiCisJCQlVTklYX0JMVUVUT09USD0idHJ1ZSIKIAkJCUFDX0NIRUNLX0xJQihibHVldG9vdGgs
IGJ0X2F0b24sCiAJCQkJW0JMVUVUT09USF9MSUJTPSItbGJsdWV0b290aCIgYWNfY3ZfaGF2ZV9i
dF9saWI9eWVzXSwKIAkJCQlhY19jdl9oYXZlX2J0X2xpYj1ubykKQEAgLTU5OCw2ICs1ODcsNyBA
QCBuZXRic2QqKQogCQkJQUNfREVGSU5FKEhBVkVfQkxVRVRPT1RILCAxLCBbV2hldGhlciBCbHVl
dG9vdGggaXMgYXZhaWxhYmxlXSkKIAkJCUFDX0RFRklORShIQVZFX0JMVUVUT09USF9ORVRCVCwg
W10sIFtDb21waWxlIG9uIE5ldEJTRF0pCiAJCQlVU0VfQkxVRVRPT1RIPSJ5ZXMiCisJCQlVTklY
X0JMVUVUT09USD0idHJ1ZSIKIAkJCUNGTEFHUz0iJENGTEFHUyAtRENPTVBBVF9CTFVFWiIKIAkJ
CUFDX0NIRUNLX0xJQihibHVldG9vdGgsIGJ0X2F0b24sCiAJCQkJW0JMVUVUT09USF9MSUJTPSIt
bGJsdWV0b290aCIgYWNfY3ZfaGF2ZV9idF9saWI9eWVzXSwKQEAgLTYxMSwxOSArNjAxLDM3IEBA
IG5ldGJzZCopCiAJZmkKIAk7OwogCitkbmwgPT09PT09PT09PT09PT09PT09PT09PT09IENoZWNr
cyBmb3IgV2luZG93cyBkZXZpY2VzCiBjeWd3aW4zMnxjeWd3aW58bWluZ3czMnxtaW5ndzMybXN2
YykKLQlBQ19DSEVDS19IRUFERVIoYWZfaXJkYS5oLCBbQUNfREVGSU5FKEhBVkVfSVJEQSwgMSwg
W1doZXRoZXIgSXJEQSBpcyBhdmFpbGFibGVdKSBVU0VfSVJEQT0ieWVzIiBMSUJTPSIkTElCUyAt
bHdpbm1tIl0sLCBbI2luY2x1ZGUgPHdpbmRvd3MuaD5dKQotCUFDX0NIRUNLX0hFQURFUih3czJi
dGguaCwgW0FDX0RFRklORShIQVZFX0JMVUVUT09USCwgMSwgW1doZXRoZXIgQmx1ZXRvb3RoIGlz
IGF2YWlsYWJsZV0pIFVTRV9CTFVFVE9PVEg9InllcyJdLCwgWyNpbmNsdWRlIDx3aW5kb3dzLmg+
XSkKKwlpZiB0ZXN0ICIkZW5hYmxlX2JsdWV0b290aCIgPSAieWVzIjsgdGhlbgorCQlBQ19DSEVD
S19IRUFERVIod3MyYnRoLmgsCisJCQkJW0FDX0RFRklORShIQVZFX0JMVUVUT09USCwgMSwgW1do
ZXRoZXIgQmx1ZXRvb3RoIGlzIGF2YWlsYWJsZV0pIFVTRV9CTFVFVE9PVEg9InllcyIgV0lOMzJf
QkxVRVRPT1RIPSJ0cnVlIl0sLAorCQkJCVsjaW5jbHVkZSA8d2luZG93cy5oPl0pCisJZmkKKwlp
ZiB0ZXN0ICIkZW5hYmxlX2lyZGEiID0gInllcyI7IHRoZW4KKwkJQUNfQ0hFQ0tfSEVBREVSKGFm
X2lyZGEuaCwKKwkJCQlbQUNfREVGSU5FKEhBVkVfSVJEQSwgMSwgW1doZXRoZXIgSXJEQSBpcyBh
dmFpbGFibGVdKSBVU0VfSVJEQT0ieWVzIiBXSU4zMl9JUkRBPSJ0cnVlIl0sLAorCQkJCVsjaW5j
bHVkZSA8d2luZG93cy5oPl0pCisJZmkKKwlCTFVFVE9PVEhfTElCUz0iIgogCWlmIHRlc3QgeCIk
VVNFX0lSREEiID0gInh5ZXMiIC1vIHgiJFVTRV9CTFVFVE9PVEgiID0gInh5ZXMiOyB0aGVuCi0J
CUxJQlM9IiRMSUJTIC1sd3MyXzMyIgorCQlCTFVFVE9PVEhfTElCUz0iLWx3czJfMzIiCiAJZmkK
KwlpZiB0ZXN0IHgiJFVTRV9JUkRBIiA9ICJ4eWVzIjsgdGhlbgorCQlCTFVFVE9PVEhfTElCUz0i
JEJMVUVUT09USF9MSUJTIC1sd2lubW0iCisJZmkKKwlBQ19TVUJTVChCTFVFVE9PVEhfTElCUykK
IAlXSU4zMj0xCiAJOzsKLQogZXNhYwogCiBBTV9DT05ESVRJT05BTChbV0lOMzJdLCBbdGVzdCAi
eCRXSU4zMiIgPSAieDEiXSkKLUFNX0NPTkRJVElPTkFMKFtGT1JfTUFDXSwgW3Rlc3QgIngkRk9S
X01BQyIgPSAieDEiXSkKK0FNX0NPTkRJVElPTkFMKFtTT0NLRVRQSE9ORVRdLCBbdGVzdCAieCRV
U0VfU09DS0VUUEhPTkVUIiA9ICJ4eWVzIl0pCitBTV9DT05ESVRJT05BTChbT1NYQkxVRVRPT1RI
XSwgW3Rlc3QgIngkT1NYX0JMVUVUT09USCIgPSAieHRydWUiXSkKK0FNX0NPTkRJVElPTkFMKFtV
TklYQkxVRVRPT1RIXSwgW3Rlc3QgIngkVU5JWF9CTFVFVE9PVEgiID0gInh0cnVlIl0pCitBTV9D
T05ESVRJT05BTChbVU5JWElSREFdLCBbdGVzdCAieCRVTklYX0lSREEiID0gInh0cnVlIl0pCitB
TV9DT05ESVRJT05BTChbV0lOQkxVRVRPT1RIXSwgW3Rlc3QgIngkV0lOMzJfQkxVRVRPT1RIIiA9
ICJ4dHJ1ZSJdKQorQU1fQ09ORElUSU9OQUwoW1dJTklSREFdLCBbdGVzdCAieCRXSU4zMl9JUkRB
IiA9ICJ4dHJ1ZSJdKQogCiBkbmwgPT09PT09PT09PT09PT09PT09PT09PT09IENoZWNrcyBmb3Ig
WCBiYXNlIHN1cHBvcnQKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kZXZpY2UuaCBiL2luY2x1ZGUv
ZGV2aWNlLmgKaW5kZXggZDQ1ZjMyYjcuLjhlODRlMDc0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2Rl
dmljZS5oCisrKyBiL2luY2x1ZGUvZGV2aWNlLmgKQEAgLTI2LDcgKzI2LDYgQEAgaW50IGRldmlj
ZV9vcGVuKGNvbnN0IGNoYXIgKmZpbGUsIGludCB3aXRoX29kZF9wYXJpdHksIGludCB3aXRoX2Fz
eW5jLAogCQlpbnQgd2l0aF9od19oYW5kc2hha2UsIGduX2Nvbm5lY3Rpb25fdHlwZSBkZXZpY2Vf
dHlwZSwKIAkJc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpOwogdm9pZCBkZXZpY2VfY2xv
c2Uoc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpOwotdm9pZCBkZXZpY2VfcmVzZXQoc3Ry
dWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpOwogCiB2b2lkIGRldmljZV9zZXRkdHJydHMoaW50
IGR0ciwgaW50IHJ0cywgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpOwogdm9pZCBkZXZp
Y2VfY2hhbmdlc3BlZWQoaW50IHNwZWVkLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSk7
CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RldmljZXMvZGt1MmxpYnVzYi5oIGIvaW5jbHVkZS9kZXZp
Y2VzL2RrdTJsaWJ1c2IuaAppbmRleCBiZTRkNGJhNC4uZDRiMDk0YzkgMTAwNjQ0Ci0tLSBhL2lu
Y2x1ZGUvZGV2aWNlcy9ka3UybGlidXNiLmgKKysrIGIvaW5jbHVkZS9kZXZpY2VzL2RrdTJsaWJ1
c2IuaApAQCAtMTYsOTQgKzE2LDggQEAKICNpZm5kZWYgX2dub2tpaV9ka3UybGlidXNiX2gKICNk
ZWZpbmUgX2dub2tpaV9ka3UybGlidXNiX2gKIAotI2lmZGVmIEhBVkVfTElCVVNCCi0jICBpbmNs
dWRlIDx1c2IuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSAiY29tcGF0LmgiCi0jaW5jbHVkZSAibWlz
Yy5oIgogI2luY2x1ZGUgImdub2tpaS5oIgogCi0jaWZkZWYgSEFWRV9MSUJVU0IKLQotLyogSW5m
b3JtYXRpb24gYWJvdXQgYSBVU0IgREtVMiBGQlVTIGludGVyZmFjZSBwcmVzZW50IG9uIHRoZSBz
eXN0ZW0gKi8KLXN0cnVjdCBmYnVzX3VzYl9pbnRlcmZhY2VfdHJhbnNwb3J0IHsKLQlzdHJ1Y3Qg
ZmJ1c191c2JfaW50ZXJmYWNlX3RyYW5zcG9ydCAqcHJldiwgKm5leHQ7CS8qIE5leHQgYW5kIHBy
ZXZpb3VzIGludGVyZmFjZXMgaW4gdGhlIGxpc3QgKi8KLQlzdHJ1Y3QgdXNiX2RldmljZSAqZGV2
aWNlOwkJLyogVVNCIGRldmljZSB0aGF0IGhhcyB0aGUgaW50ZXJmYWNlICovCi0JaW50IGNvbmZp
Z3VyYXRpb247CQkJLyogRGV2aWNlIGNvbmZpZ3VyYXRpb24gKi8KLQlpbnQgY29uZmlndXJhdGlv
bl9kZXNjcmlwdGlvbjsJCS8qIENvbmZpZ3VyYXRpb24gc3RyaW5nIGRlc2NyaXB0b3IgbnVtYmVy
ICovCi0JaW50IGNvbnRyb2xfaW50ZXJmYWNlOwkJCS8qIERLVTIgRkJVUyBtYXN0ZXIgaW50ZXJm
YWNlICovCi0JaW50IGNvbnRyb2xfc2V0dGluZzsJCQkvKiBES1UyIEZCVVMgbWFzdGVyIGludGVy
ZmFjZSBzZXR0aW5nICovCi0JaW50IGNvbnRyb2xfaW50ZXJmYWNlX2Rlc2NyaXB0aW9uOwkvKiBE
S1UyIEZCVVMgbWFzdGVyIGludGVyZmFjZSBzdHJpbmcgZGVzY3JpcHRvciBudW1iZXIKLQkJCQkJ
CSAqIElmIG5vbi16ZXJvLCB1c2UgdXNiX2dldF9zdHJpbmdfc2ltcGxlKCkgZnJvbQotCQkJCQkJ
ICogbGlidXNiIHRvIHJldHJpZXZlIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uCi0JCQkJCQkg
Ki8KLQlpbnQgZGF0YV9pbnRlcmZhY2U7CQkJLyogREtVMiBGQlVTIGRhdGEvc2xhdmUgaW50ZXJm
YWNlICovCi0JaW50IGRhdGFfaWRsZV9zZXR0aW5nOwkJCS8qIERLVTIgRkJVUyBkYXRhL3NsYXZl
IGlkbGUgc2V0dGluZyAqLwotCWludCBkYXRhX2ludGVyZmFjZV9pZGxlX2Rlc2NyaXB0aW9uOwkv
KiBES1UyIEZCVVMgZGF0YS9zbGF2ZSBpbnRlcmZhY2Ugc3RyaW5nIGRlc2NyaXB0b3IgbnVtYmVy
Ci0JCQkJCQkgKiBpbiBpZGxlIHNldHRpbmcgKi8KLQlpbnQgZGF0YV9hY3RpdmVfc2V0dGluZzsJ
CS8qIERLVTIgRkJVUyBkYXRhL3NsYXZlIGFjdGl2ZSBzZXR0aW5nICovCi0JaW50IGRhdGFfaW50
ZXJmYWNlX2FjdGl2ZV9kZXNjcmlwdGlvbjsJLyogREtVMiBGQlVTIGRhdGEvc2xhdmUgaW50ZXJm
YWNlIHN0cmluZyBkZXNjcmlwdG9yIG51bWJlcgotCQkJCQkJICogaW4gYWN0aXZlIHNldHRpbmcg
Ki8KLQlpbnQgZGF0YV9lbmRwb2ludF9yZWFkOwkJCS8qIERLVTIgRkJVUyBkYXRhL3NsYXZlIGlu
dGVyZmFjZSByZWFkIGVuZHBvaW50ICovCi0JaW50IGRhdGFfZW5kcG9pbnRfd3JpdGU7CQkvKiBE
S1UyIEZCVVMgZGF0YS9zbGF2ZSBpbnRlcmZhY2Ugd3JpdGUgZW5kcG9pbnQgKi8KLQl1c2JfZGV2
X2hhbmRsZSAqZGV2X2NvbnRyb2w7CQkvKiBsaWJ1c2IgaGFuZGxlciBmb3IgY29udHJvbCBpbnRl
cmFjZSAqLwotCXVzYl9kZXZfaGFuZGxlICpkZXZfZGF0YTsJCS8qIGxpYnVzYiBoYW5kbGVyIGZv
ciBkYXRhIGludGVyZmFjZSAqLwotfTsKLQotLyogVVNCLXNwZWNpZmljIEZCVVMgaW50ZXJmYWNl
IGluZm9ybWF0aW9uICovCi10eXBlZGVmIHN0cnVjdCB7Ci0JLyogTWFudWZhY3R1cmVyLCBlLmcu
IE5va2lhICovCi0JY2hhciAqbWFudWZhY3R1cmVyOwotCS8qIFByb2R1Y3QsIGUuZy4gTm9raWEg
NjY4MCAqLwotCWNoYXIgKnByb2R1Y3Q7Ci0JLyogUHJvZHVjdCBzZXJpYWwgbnVtYmVyICovCi0J
Y2hhciAqc2VyaWFsOwotCS8qIFVTQiBkZXZpY2UgY29uZmlndXJhdGlvbiBkZXNjcmlwdGlvbiAq
LwotCWNoYXIgKmNvbmZpZ3VyYXRpb247Ci0JLyogQ29udHJvbCBpbnRlcmZhY2UgZGVzY3JpcHRp
b24gKi8KLQljaGFyICpjb250cm9sX2ludGVyZmFjZTsKLQkvKiBJZGxlIGRhdGEgaW50ZXJmYWNl
IGRlc2NyaXB0aW9uLCB0eXBpY2FsbHkgZW1wdHkgKi8KLQljaGFyICpkYXRhX2ludGVyZmFjZV9p
ZGxlOwotCS8qIEFjdGl2ZSBkYXRhIGludGVyZmFjZSBkZXNjcmlwdGlvbiwgdHlwaWNhbGx5IGVt
cHR5ICovCi0JY2hhciAqZGF0YV9pbnRlcmZhY2VfYWN0aXZlOwotCS8qIEludGVybmFsIGluZm9y
bWF0aW9uIGZvciB0aGUgdHJhbnNwb3J0IGxheWVyIGluIHRoZSBsaWJyYXJ5ICovCi0Jc3RydWN0
IGZidXNfdXNiX2ludGVyZmFjZV90cmFuc3BvcnQgKmludGVyZmFjZTsKLX0gZmJ1c191c2JfaW50
ZXJmYWNlOwotCi0vKiAiVW5pb24gRnVuY3Rpb25hbCBEZXNjcmlwdG9yIiBmcm9tIENEQyBzcGVj
IDUuMi4zLlgKLSAqIHVzZWQgdG8gZmluZCBkYXRhL3NsYXZlIERLVTIgRkJVUyBpbnRlcmZhY2Ug
Ki8KLSNwcmFnbWEgcGFjaygxKQotc3RydWN0IGNkY191bmlvbl9kZXNjIHsKLQl1X2ludDhfdCAg
ICAgIGJMZW5ndGg7Ci0JdV9pbnQ4X3QgICAgICBiRGVzY3JpcHRvclR5cGU7Ci0JdV9pbnQ4X3Qg
ICAgICBiRGVzY3JpcHRvclN1YlR5cGU7Ci0KLQl1X2ludDhfdCAgICAgIGJNYXN0ZXJJbnRlcmZh
Y2UwOwotCXVfaW50OF90ICAgICAgYlNsYXZlSW50ZXJmYWNlMDsKLX07Ci0jcHJhZ21hIHBhY2so
KQotCi0vKiBOb2tpYSBpcyB0aGUgdmVuZG9yIHdlIGFyZSBpbnRlcmVzdGVkIGluICovCi0jZGVm
aW5lIE5PS0lBX1ZFTkRPUl9JRAkweDA0MjEKLQotLyogQ0RDIGNsYXNzIGFuZCBzdWJjbGFzcyB0
eXBlcyAqLwotI2RlZmluZSBVU0JfQ0RDX0NMQVNTCQkJMHgwMgotI2RlZmluZSBVU0JfQ0RDX0ZC
VVNfU1VCQ0xBU1MJCTB4ZmUKLQotLyogY2xhc3MgYW5kIHN1YmNsYXNzIHNwZWNpZmljIGRlc2Ny
aXB0b3IgdHlwZXMgKi8KLSNkZWZpbmUgQ0RDX0hFQURFUl9UWVBFCQkJMHgwMAotI2RlZmluZSBD
RENfVU5JT05fVFlQRQkJCTB4MDYKLSNkZWZpbmUgQ0RDX0ZCVVNfVFlQRQkJCTB4MTUKLQotLyog
SW50ZXJmYWNlIGRlc2NyaXB0b3IgKi8KLSNkZWZpbmUgVVNCX0RUX0NTX0lOVEVSRkFDRQkJMHgy
NAotCi0jZGVmaW5lIFVTQl9NQVhfU1RSSU5HX1NJWkUJCTI1NgotI2RlZmluZSBVU0JfRkJVU19U
SU1FT1VUCQkxMDAwMCAvKiAxMCBzZWNvbmRzICovCi0KLSNlbmRpZgotCiBpbnQgZmJ1c2RrdTJ1
c2Jfb3BlbihzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSk7CiBpbnQgZmJ1c2RrdTJ1c2Jf
Y2xvc2Uoc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpOwogaW50IGZidXNka3UydXNiX3dy
aXRlKGNvbnN0IF9fcHRyX3QgYnl0ZXMsIGludCBzaXplLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5l
ICpzdGF0ZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RldmljZXMvc2VyaWFsLmggYi9pbmNsdWRl
L2RldmljZXMvc2VyaWFsLmgKaW5kZXggY2I1NmE4MjMuLjMyMGIzN2U3IDEwMDY0NAotLS0gYS9p
bmNsdWRlL2RldmljZXMvc2VyaWFsLmgKKysrIGIvaW5jbHVkZS9kZXZpY2VzL3NlcmlhbC5oCkBA
IC0xMyw4ICsxMyw2IEBACiAjaWZuZGVmIF9fZGV2aWNlc19zZXJpYWxfaAogI2RlZmluZSBfX2Rl
dmljZXNfc2VyaWFsX2gKIAotI2luY2x1ZGUgImNvbXBhdC5oIgotI2luY2x1ZGUgIm1pc2MuaCIK
ICNpbmNsdWRlICJnbm9raWkuaCIKIAogaW50IHNlcmlhbF9vcGVuKGNvbnN0IGNoYXIgKmZpbGUs
IGludCBvZmxhZyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RldmljZXMvdGNwLmggYi9pbmNsdWRl
L2RldmljZXMvdGNwLmgKaW5kZXggMGUzNzg2ZTcuLjYyMjZlNzM0IDEwMDY0NAotLS0gYS9pbmNs
dWRlL2RldmljZXMvdGNwLmgKKysrIGIvaW5jbHVkZS9kZXZpY2VzL3RjcC5oCkBAIC0xMyw4ICsx
Myw2IEBACiAjaWZuZGVmIF9fZGV2aWNlc190Y3BfaAogI2RlZmluZSBfX2RldmljZXNfdGNwX2gK
IAotI2luY2x1ZGUgImNvbXBhdC5oIgotI2luY2x1ZGUgIm1pc2MuaCIKICNpbmNsdWRlICJnbm9r
aWkuaCIKIAogaW50IHRjcF9vcGVuZGV2aWNlKGNvbnN0IGNoYXIgKmZpbGUsIGludCB3aXRoX2Fz
eW5jLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRl
L2RldmljZXMvdW5peGJsdWV0b290aC5oIGIvaW5jbHVkZS9kZXZpY2VzL3VuaXhibHVldG9vdGgu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFjYWQxOWIuLjAwMDAwMDAwCi0tLSBh
L2luY2x1ZGUvZGV2aWNlcy91bml4Ymx1ZXRvb3RoLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNyAr
MCwwIEBACi0vKgotCi0gIEcgTiBPIEsgSSBJCi0KLSAgQSBMaW51eC9Vbml4IHRvb2xzZXQgYW5k
IGRyaXZlciBmb3IgdGhlIG1vYmlsZSBwaG9uZXMuCi0KLSAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
Z25va2lpLgotCi0gIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBIdWdoIEJsZW1pbmdzICYgUGF2
ZWwgSmFuaWsgbWwuCi0gIENvcHlyaWdodCAoQykgMjAwMiAgICAgICBNYXJjZWwgSG9sdG1hbm4g
PG1hcmNlbEBob2x0bWFubi5vcmc+Ci0KLSovCi0KLSNpZm5kZWYgX2dub2tpaV91bml4X2JsdWV0
b290aF9oCi0jZGVmaW5lIF9nbm9raWlfdW5peF9ibHVldG9vdGhfaAotCi0jaW5jbHVkZSAiY29t
cGF0LmgiCi0jaW5jbHVkZSAibWlzYy5oIgotI2luY2x1ZGUgImdub2tpaS5oIgotCi1pbnQgYmx1
ZXRvb3RoX29wZW4oY29uc3QgY2hhciAqYWRkciwgdWludDhfdCBjaGFubmVsLCBzdHJ1Y3QgZ25f
c3RhdGVtYWNoaW5lICpzdGF0ZSk7Ci1pbnQgYmx1ZXRvb3RoX2Nsb3NlKGludCBmZCwgc3RydWN0
IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpOwotaW50IGJsdWV0b290aF93cml0ZShpbnQgZmQsIGNv
bnN0IF9fcHRyX3QgYnl0ZXMsIGludCBzaXplLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0
ZSk7Ci1pbnQgYmx1ZXRvb3RoX3JlYWQoaW50IGZkLCBfX3B0cl90IGJ5dGVzLCBpbnQgc2l6ZSwg
c3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpOwotaW50IGJsdWV0b290aF9zZWxlY3QoaW50
IGZkLCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3Rh
dGUpOwotCi0jZW5kaWYgLyogX2dub2tpaV91bml4X2JsdWV0b290aF9oICovCmRpZmYgLS1naXQg
YS9pbmNsdWRlL2RldmljZXMvdW5peGlyZGEuaCBiL2luY2x1ZGUvZGV2aWNlcy91bml4aXJkYS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWIwN2VmNC4uMDAwMDAwMDAKLS0tIGEv
aW5jbHVkZS9kZXZpY2VzL3VuaXhpcmRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBA
Ci0vKgotICoKLSAqIEcgTiBPIEsgSSBJCi0gKgotICogQSBMaW51eC9Vbml4IHRvb2xzZXQgYW5k
IGRyaXZlciBmb3IgdGhlIG1vYmlsZSBwaG9uZXMuCi0gKgotICogQ29weXJpZ2h0IChDKSAxOTk5
LCAyMDAwIEh1Z2ggQmxlbWluZ3MgJiBQYXZlbCBKYW7DrWsgbWwuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDAtMjAwMSAgTWFyY2VsIEhvbHRtYW5uIDxtYXJjZWxAaG9sdG1hbm4ub3JnPgotICoKLSAq
LwotCi0jaWZuZGVmIF9fdW5peF9pcmRhX2hfCi0jZGVmaW5lIF9fdW5peF9pcmRhX2hfCi0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9nbm9raWkvZGF0YS5oIGIvaW5jbHVkZS9nbm9raWkv
ZGF0YS5oCmluZGV4IDk4MjJjMGIwLi42YjRkMGJiMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9nbm9r
aWkvZGF0YS5oCisrKyBiL2luY2x1ZGUvZ25va2lpL2RhdGEuaApAQCAtMTkxLDkgKzE5MSwyMiBA
QCB0eXBlZGVmIHN0cnVjdCB7CiAJZ25fYXV0aF9pbnRlcmFjdGl2ZV9mdW5jX3QgYXV0aF9pbnRl
cmFjdGl2ZTsKIH0gZ25fY2FsbGJhY2s7CiAKK3R5cGVkZWYgc3RydWN0IHsKKwlpbnQgKCpvcGVu
KShjb25zdCBjaGFyICpmaWxlLCBpbnQgd2l0aF9vZGRfcGFyaXR5LCBpbnQgd2l0aF9hc3luYywK
KwkJICAgIGludCB3aXRoX2h3X2hhbmRzaGFrZSwgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3Rh
dGUpOworCXZvaWQgKCpjbG9zZSkoaW50IGZkLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0
ZSk7CisJaW50ICgqc2VsZWN0KShpbnQgZmQsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0LCBzdHJ1
Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSk7CisJc2l6ZV90ICgqcmVhZCkoaW50IGZkLCBfX3B0
cl90IGJ1Ziwgc2l6ZV90IG5ieXRlcywgc3RydWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpOwor
CXNpemVfdCAoKndyaXRlKShpbnQgZmQsIGNvbnN0IF9fcHRyX3QgYnVmLCBzaXplX3Qgbiwgc3Ry
dWN0IGduX3N0YXRlbWFjaGluZSAqc3RhdGUpOworCWduX2Vycm9yICgqbnJjdmQpKGludCBmZCwg
aW50ICpuLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSk7CisJZ25fZXJyb3IgKCpmbHVz
aCkoaW50IGZkLCBzdHJ1Y3QgZ25fc3RhdGVtYWNoaW5lICpzdGF0ZSk7CisJZ25fZXJyb3IgKCpz
cGVlZCkoaW50IGZkLCBpbnQgc3BlZWQsIHN0cnVjdCBnbl9zdGF0ZW1hY2hpbmUgKnN0YXRlKTsK
Kwl2b2lkICgqZHRycnRzKShpbnQgZmQsIGludCBkdHIsIGludCBydHMsIHN0cnVjdCBnbl9zdGF0
ZW1hY2hpbmUgKnN0YXRlKTsKK30gZ25fZGV2aWNlX29wczsKKwogdHlwZWRlZiBzdHJ1Y3Qgewog
CWludCBmZDsKLQlnbl9jb25uZWN0aW9uX3R5cGUgdHlwZTsKKwljb25zdCBnbl9kZXZpY2Vfb3Bz
ICpvcHM7CiAJdm9pZCAqZGV2aWNlX2luc3RhbmNlOwogfSBnbl9kZXZpY2U7CiAKLS0gCjIuMjUu
MAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmdub2tp
aS11c2VycyBtYWlsaW5nIGxpc3QKZ25va2lpLXVzZXJzQG5vbmdudS5vcmcKaHR0cHM6Ly9saXN0
cy5ub25nbnUub3JnL21haWxtYW4vbGlzdGluZm8vZ25va2lpLXVzZXJzCg==