Re: Linux 2.3.18ac6

David Weinehall (tao@acc.umu.se)
Mon, 20 Sep 1999 02:07:29 +0200 (MET_DST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

---2098261354-1869170439-937786049=:9016
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Sun, 19 Sep 1999, Alan Cox wrote:

> 2.3.18ac6
[snip]
> o Fix ibmmca compile (me)

That fix seem to be missing in my ac6 ;-) (Yes, I noticed that you did
some fixes (that were quite necessary too, but they still didn't fix my
problem...))

I get this when trying to compile v2.3.18ac6 with ibmmca built in.

ibmmca.c: In function `modparmdisplay_setup':
ibmmca.c:2483: `display' undeclared (first use this function)
ibmmca.c:2483: (Each undeclared identifier is reported only once
ibmmca.c:2483: for each function it appears in.)
ibmmca.c: In function `modparmadisplay_setup':
ibmmca.c:2484: `adisplay' undeclared (first use this function)
ibmmca.c: In function `modparmbypass_setup':
ibmmca.c:2485: `bypass' undeclared (first use this function)
ibmmca.c: In function `modparmnormal_setup':
ibmmca.c:2486: `normal' undeclared (first use this function)
ibmmca.c: In function `modparmansi_setup':
ibmmca.c:2487: `ansi' undeclared (first use this function)

And without that, I can't comment anything on ac6... (No use booting the
kernel if you can't access the HD afterwards)

The attached fix _should_ cure this... ("It compiles...")
It also removes a lot of unnecessary white-space (on empty lines, etc.;
"let c_space_errors=1" comes in handy sometimes)

There were a LOT of these things, hence the size of the patch.

/David
_ _
// David Weinehall <tao@acc.umu.se> /> Northern lights wander \\
// Project MCA Linux hacker // Dance across the winter sky //
\> http://www.acc.umu.se/~tao/ </ Full colour fire </

---2098261354-1869170439-937786049=:9016
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="patch-2.3.18ac6ibmmca"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.A41.4.10.9909200207290.9016@kleopatra.acc.umu.se>
Content-Description:
Content-Disposition: attachment; filename="patch-2.3.18ac6ibmmca"

LS0tIGxpbnV4LTIuMy4xOGFjNi5wbGFpbi9kcml2ZXJzL3Njc2kvaWJtbWNh
LmMJU3VuIFNlcCAxOSAyMzozNToxNCAxOTk5DQorKysgbGludXgtMi4zLjE4
YWM2LmR3L2RyaXZlcnMvc2NzaS9pYm1tY2EuYwlNb24gU2VwIDIwIDAxOjUz
OjE3IDE5OTkNCkBAIC02MCwxNSArNjAsMTUgQEANCiAvKiBkcml2ZXIgZGVi
dWdnaW5nIC0gI3VuZGVmIGFsbCBmb3Igbm9ybWFsIG9wZXJhdGlvbiAqLw0K
IA0KIC8qIGlmIGRlZmluZWQ6IGNvdW50IGludGVycnVwdHMgYW5kIGlnbm9y
ZSB0aGlzIHNwZWNpYWwgb25lOiAqLw0KLSN1bmRlZiAgSU1fREVCVUdfVElN
RU9VVCAgNTAgICAgICAgICAgICANCisjdW5kZWYgIElNX0RFQlVHX1RJTUVP
VVQgIDUwDQogI2RlZmluZSBUSU1FT1VUX1BVTiAgIDANCiAjZGVmaW5lIFRJ
TUVPVVRfTFVOICAgMA0KIC8qIHZlcmJvc2UgaW50ZXJydXB0OiAqLw0KLSN1
bmRlZiAgSU1fREVCVUdfSU5UICAgICAgICAgICAgICAgICAgIA0KKyN1bmRl
ZiAgSU1fREVCVUdfSU5UDQogLyogdmVyYm9zZSBxdWV1ZWNvbW1hbmQ6ICov
DQotI3VuZGVmICBJTV9ERUJVR19DTUQgICAgDQorI3VuZGVmICBJTV9ERUJV
R19DTUQNCiAvKiB2ZXJib3NlIHF1ZXVjb21tYW5kIGZvciBzcGVjaWZpYyBT
Q1NJLWRldmljZSB0eXBlOiAqLw0KLSN1bmRlZiAgSU1fREVCVUdfQ01EX1NQ
RUNfREVWICAgICAgICAgIA0KKyN1bmRlZiAgSU1fREVCVUdfQ01EX1NQRUNf
REVWDQogLyogdmVyYm9zZSBkZXZpY2UgcHJvYmluZyAqLw0KICN1bmRlZiAg
SU1fREVCVUdfUFJPQkUNCiANCkBAIC0yNzMsNyArMjczLDcgQEANCiAgIHsw
eDhlZjgsICJJQk0gRXhwYW5zaW9uIFVuaXQgU0NTSSBDb250cm9sbGVyIn0s
Lyogc3BlY2lhbCA9IDIgKi8NCiAgIHsweDhlZmYsICJJQk0gU0NTSSBBZGFw
dGVyIHcvQ2FjaGUifSwgLyogc3BlY2lhbCA9IDMgKi8NCiAgIHsweDhlZmUs
ICJJQk0gU0NTSSBBZGFwdGVyIn0sIC8qIHNwZWNpYWwgPSA0ICovDQotfTsg
ICAgICAgICAgICAgICAgICAgDQorfTsNCiANCiAvKmZvciAvcHJvYyBmaWxl
c3lzdGVtICovDQogc3RydWN0IHByb2NfZGlyX2VudHJ5IHByb2Nfc2NzaV9p
Ym1tY2EgPQ0KQEAgLTI4MSw3ICsyODEsNyBAQA0KICAgUFJPQ19TQ1NJX0lC
TU1DQSwgNiwgImlibW1jYSIsDQogICBTX0lGRElSIHwgU19JUlVHTyB8IFNf
SVhVR08sIDIsDQogICAwLCAwLCAwLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxM
LA0KLSAgTlVMTCwgTlVMTCwgTlVMTCANCisgIE5VTEwsIE5VTEwsIE5VTEwN
CiB9Ow0KIA0KIC8qIE1heCBudW1iZXIgb2YgbG9naWNhbCBkZXZpY2VzIChj
YW4gYmUgdXAgZnJvbSAwIHRvIDE0KS4gIDE1IGlzIHRoZSBhZGRyZXNzDQpA
QCAtMjk2LDcgKzI5Niw3IEBADQogICAgIHN0cnVjdCBpbV9zZ2Ugc2dlWzE2
XTsgLyogc2NhdHRlciBnYXRoZXIgbGlzdCBzdHJ1Y3R1cmUgKi8NCiAgICAg
dW5zaWduZWQgY2hhciBidWZbMjU2XTsgLyogU0NTSSBjb21tYW5kIHJldHVy
biBkYXRhIGJ1ZmZlciAqLw0KICAgICBTY3NpX0NtbmQgKmNtZDsgIC8qIFND
U0ktY29tbWFuZCB0aGF0IGlzIGN1cnJlbnRseSBpbiBwcm9ncmVzcyAqLw0K
LSAgICAgDQorDQogICAgIGludCBkZXZpY2VfdHlwZTsgLyogdHlwZSBvZiB0
aGUgU0NTSS1kZXZpY2UuIFNlZSBpbmNsdWRlL3Njc2kvc2NzaS5oDQogCQkg
ICAgICAgIGZvciBpbnRlcnByZXRhdGlvbiBvZiB0aGUgcG9zc2libGUgdmFs
dWVzICovDQogICAgIGludCBibG9ja19sZW5ndGg7LyogYmxvY2tzaXplIG9m
IGEgcGFydGljdWxhciBsb2dpY2FsIFNDU0ktZGV2aWNlICovDQpAQCAtMzI3
LDcgKzMyNyw3IEBADQogc3RydWN0IGlibW1jYV9ob3N0ZGF0YQ0KIHsNCiAg
ICAvKiBhcnJheSBvZiBsb2dpY2FsIGRldmljZXM6ICovDQotICAgc3RydWN0
IGxvZ2ljYWxfZGV2aWNlIF9sZFtNQVhfTE9HX0RFVisxXTsgICANCisgICBz
dHJ1Y3QgbG9naWNhbF9kZXZpY2UgX2xkW01BWF9MT0dfREVWKzFdOw0KICAg
IC8qIGFycmF5IHRvIGNvbnZlcnQgKHB1biwgbHVuKSBpbnRvIGxvZ2ljYWwg
ZGV2aWNlIG51bWJlcjogKi8NCiAgICB1bnNpZ25lZCBjaGFyIF9nZXRfbGRu
WzhdWzhdOw0KICAgIC8qYXJyYXkgdGhhdCBjb250YWlucyB0aGUgaW5mb3Jt
YXRpb24gYWJvdXQgdGhlIHBoeXNpY2FsIFNDU0ktZGV2aWNlcw0KQEAgLTM0
NSw4ICszNDUsOCBAQA0KICAgIGludCBfbGFzdF9zY3NpX2NvbW1hbmRbTUFY
X0xPR19ERVYrMV07DQogICAgLyogaWRlbnRpZmllciBvZiB0aGUgbGFzdCBT
Q1NJLWNvbW1hbmQgdHlwZSAqLw0KICAgIGludCBfbGFzdF9zY3NpX3R5cGVb
TUFYX0xPR19ERVYrMV07DQotICAgLyogQ291bnRlciB0aGF0IHBvaW50cyBv
biB0aGUgbmV4dCByZWFzc2lnbmFibGUgbGRuIGZvciBkeW5hbWljYWwgDQot
ICAgIHJlbWFwcGluZy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgNywgdGhhdCBp
cyB0aGUgZmlyc3QgcmVhc3NpZ25hYmxlIA0KKyAgIC8qIENvdW50ZXIgdGhh
dCBwb2ludHMgb24gdGhlIG5leHQgcmVhc3NpZ25hYmxlIGxkbiBmb3IgZHlu
YW1pY2FsDQorICAgIHJlbWFwcGluZy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMg
NywgdGhhdCBpcyB0aGUgZmlyc3QgcmVhc3NpZ25hYmxlDQogICAgIG51bWJl
ciBpbiB0aGUgbGlzdCBhdCBib290dGltZTogKi8NCiAgICBpbnQgX25leHRf
bGRuOw0KICAgIC8qIFN0YXRpc3RpY3Mtc3RydWN0dXJlIGZvciB0aGlzIElC
TS1TQ1NJLWhvc3Q6ICovDQpAQCAtMzc1LDcgKzM3NSw3IEBADQogI2RlZmlu
ZSBwb3MyKGhpKSAoKChzdHJ1Y3QgaWJtbWNhX2hvc3RkYXRhICopIGhvc3Rz
WyhoaSldLT5ob3N0ZGF0YSktPl9wb3MyKQ0KICNkZWZpbmUgcG9zMyhoaSkg
KCgoc3RydWN0IGlibW1jYV9ob3N0ZGF0YSAqKSBob3N0c1soaGkpXS0+aG9z
dGRhdGEpLT5fcG9zMykNCiANCi0vKiBEZWZpbmUgYSBhcmJpdHJhcnkgbnVt
YmVyIGFzIHN1YnN5c3RlbS1tYXJrZXItdHlwZS4gVGhpcyBudW1iZXIgaXMs
IGFzIA0KKy8qIERlZmluZSBhIGFyYml0cmFyeSBudW1iZXIgYXMgc3Vic3lz
dGVtLW1hcmtlci10eXBlLiBUaGlzIG51bWJlciBpcywgYXMNCiAgICBkZXNj
cmliZWQgaW4gdGhlIEFOU0ktU0NTSS1zdGFuZGFyZCwgbm90IG9jY3VwaWVk
IGJ5IG90aGVyIGRldmljZS10eXBlcy4gKi8NCiAjZGVmaW5lIFRZUEVfSUJN
X1NDU0lfQURBUFRFUiAgIDB4MkYNCiANCkBAIC00NTIsNyArNDUyLDcgQEAN
CiBzdGF0aWMgdm9pZCBpc3N1ZV9jbWQgKGludCwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgY2hhcik7DQogc3RhdGljIHZvaWQgaW50ZXJuYWxfZG9uZSAo
U2NzaV9DbW5kICogY21kKTsNCiBzdGF0aWMgdm9pZCBjaGVja19kZXZpY2Vz
IChpbnQpOw0KLXN0YXRpYyBpbnQgaW1tZWRpYXRlX2Fzc2lnbihpbnQsIHVu
c2lnbmVkIGludCwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIA0KK3N0
YXRpYyBpbnQgaW1tZWRpYXRlX2Fzc2lnbihpbnQsIHVuc2lnbmVkIGludCwg
dW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCk7DQogI2lmZGVmIENPTkZJR19J
Qk1NQ0FfU0NTSV9ERVZfUkVTRVQNCiBzdGF0aWMgaW50IGltbWVkaWF0ZV9y
ZXNldChpbnQsIHVuc2lnbmVkIGludCk7DQpAQCAtNDYyLDcgKzQ2Miw3IEBA
DQogc3RhdGljIGNoYXIgKnRpX3AoaW50KTsNCiBzdGF0aWMgY2hhciAqdGlf
bChpbnQpOw0KIHN0YXRpYyBpbnQgZGV2aWNlX2V4aXN0cyAoaW50LCBpbnQs
IGludCAqLCBpbnQgKik7DQotc3RhdGljIHN0cnVjdCBTY3NpX0hvc3QgKmli
bW1jYV9yZWdpc3RlcihTY3NpX0hvc3RfVGVtcGxhdGUgKiwgDQorc3RhdGlj
IHN0cnVjdCBTY3NpX0hvc3QgKmlibW1jYV9yZWdpc3RlcihTY3NpX0hvc3Rf
VGVtcGxhdGUgKiwNCiAJCQkJCSBpbnQsIGludCwgY2hhciAqKTsNCiANCiAv
KiBsb2NhbCBmdW5jdGlvbnMgbmVlZGVkIGZvciBwcm9jX2luZm8gKi8NCkBA
IC00ODIsNyArNDgyLDcgQEANCiAgIHNwaW5fbG9ja19pcnFzYXZlKCZpb19y
ZXF1ZXN0X2xvY2ssIGZsYWdzKTsNCiAgIGludGVycnVwdF9oYW5kbGVyKGly
cSwgZGV2X2lkLCByZWdzKTsNCiAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUo
JmlvX3JlcXVlc3RfbG9jaywgZmxhZ3MpOw0KLSAgcmV0dXJuOyANCisgIHJl
dHVybjsNCiB9DQogDQogc3RhdGljIHZvaWQgaW50ZXJydXB0X2hhbmRsZXIg
KGludCBpcnEsIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3Mp
DQpAQCAtNDk5LDEyICs0OTksMTIgQEANCiAgICBob3N0X2luZGV4PTA7IC8q
IG1ha2Ugc3VyZSwgaG9zdF9pbmRleCBpcyAwLCBlbHNlIHRoaXMgd29uJ3Qg
d29yayBhbmQNCiAJCSAgICBuZXZlciBkYXJlIHRvIGFzaywgd2hhdCBoYXBw
ZW5zLCBpZiBhbiBpbnRlcnJ1cHQtaGFuZGxlcg0KIAkJICAgIGRvZXMgbm90
IHdvcmsgOi0oKCggLi4uLiAqLw0KLSAgIA0KKw0KICAgIC8qIHNlYXJjaCBm
b3Igb25lIGFkYXB0ZXItcmVzcG9uc2Ugb24gc2hhcmVkIGludGVycnVwdCAq
Lw0KICAgIHdoaWxlIChob3N0c1tob3N0X2luZGV4XQ0KIAkgICYmICEoaW5i
KElNX1NUQVRfUkVHKGhvc3RfaW5kZXgpKSAmIElNX0lOVFJfUkVRVUVTVCkp
DQogICAgICBob3N0X2luZGV4Kys7DQotICAgDQorDQogICAgLyogcmV0dXJu
IGlmIHNvbWUgb3RoZXIgZGV2aWNlIG9uIHRoaXMgSVJRIGNhdXNlZCB0aGUg
aW50ZXJydXB0ICovDQogICAgaWYgKCFob3N0c1tob3N0X2luZGV4XSkgcmV0
dXJuOw0KIA0KQEAgLTUxNiwyNSArNTE2LDI1IEBADQogCXJlc2V0X3N0YXR1
cyhob3N0X2luZGV4KSA9IElNX1JFU0VUX05PVF9JTl9QUk9HUkVTUzsNCiAJ
cmV0dXJuOw0KICAgICAgfQ0KLSAgIA0KKw0KICAgIC8qZ2V0IGNvbW1hbmQg
cmVzdWx0IGFuZCBsb2dpY2FsIGRldmljZSAqLw0KICAgIGludHJfcmVnID0g
aW5iIChJTV9JTlRSX1JFRyhob3N0X2luZGV4KSk7DQogICAgY21kX3Jlc3Vs
dCA9IGludHJfcmVnICYgMHhmMDsNCiAgICBsZG4gPSBpbnRyX3JlZyAmIDB4
MGY7DQogDQogICAgLyptdXN0IHdhaXQgZm9yIGF0dGVudGlvbiByZWcgbm90
IGJ1c3ksIHRoZW4gc2VuZCBFT0kgdG8gc3Vic3lzdGVtICovDQotICAgd2hp
bGUgKDEpIA0KKyAgIHdoaWxlICgxKQ0KICAgICAgew0KIAlzcGluX2xvY2tf
aXJxc2F2ZSgmaW50cl9sb2NrLCBmbGFncyk7DQotCWlmICghKGluYiAoSU1f
U1RBVF9SRUcoaG9zdF9pbmRleCkpICYgSU1fQlVTWSkpIA0KKwlpZiAoIShp
bmIgKElNX1NUQVRfUkVHKGhvc3RfaW5kZXgpKSAmIElNX0JVU1kpKQ0KIAkg
IGJyZWFrOw0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpbnRyX2xvY2ss
IGZsYWdzKTsNCiAgICAgIH0NCiAgICBvdXRiIChJTV9FT0kgfCBsZG4sIElN
X0FUVE5fUkVHKGhvc3RfaW5kZXgpKTsNCiAgICAvKiBnZXQgdGhlIGxhc3Rf
c2NzaV9jb21tYW5kIGhlcmUgKi8NCi0gICBpbnRlcnJvciA9IGxhc3Rfc2Nz
aV9jb21tYW5kKGhvc3RfaW5kZXgpW2xkbl07ICAgDQorICAgaW50ZXJyb3Ig
PSBsYXN0X3Njc2lfY29tbWFuZChob3N0X2luZGV4KVtsZG5dOw0KICAgIHNw
aW5fdW5sb2NrX2lycXJlc3RvcmUoJmludHJfbG9jaywgZmxhZ3MpOw0KLSAg
IGVycm9yZmxhZyA9IDA7IC8qIG5vIGVycm9ycyBieSBkZWZhdWx0ICovICAg
DQorICAgZXJyb3JmbGFnID0gMDsgLyogbm8gZXJyb3JzIGJ5IGRlZmF1bHQg
Ki8NCiAgICAvKnRoZXNlIHNob3VsZCBuZXZlciBoYXBwZW4gKGh3IGZhaWxz
LCBvciBhIGxvY2FsIHByb2dyYW1taW5nIGJ1ZykgKi8NCiAgICBpZiAoY21k
X3Jlc3VsdCA9PSBJTV9BREFQVEVSX0hXX0ZBSUxVUkUpDQogICAgICB7DQpA
QCAtNTUwLDcgKzU1MCw3IEBADQogCXByaW50aygiSUJNIE1DQSBTQ1NJOiBF
UlJPUiAtIHNvZnR3YXJlIHNlcXVlbmNpbmcgZXJyb3IhXG4iKTsNCiAJcHJp
bnRrKCIgICAgICAgICAgICAgIExhc3QgU0NTSS1jb21tYW5kPTB4JVgsIGxk
bj0lZCwgaG9zdD0lZC5cbiIsDQogCSAgICAgICBsYXN0X3Njc2lfY29tbWFu
ZChob3N0X2luZGV4KVtsZG5dLGxkbixob3N0X2luZGV4KTsNCi0JZXJyb3Jm
bGFnID0gMTsJDQorCWVycm9yZmxhZyA9IDE7DQogICAgICB9DQogICAgaWYg
KGNtZF9yZXN1bHQgPT0gSU1fQ01EX0VSUk9SKQ0KICAgICAgew0KQEAgLTU1
OCw3ICs1NTgsNyBAQA0KIAlwcmludGsoIklCTSBNQ0EgU0NTSTogRVJST1Ig
LSBjb21tYW5kIGVycm9yIVxuIik7DQogCXByaW50aygiICAgICAgICAgICAg
ICBMYXN0IFNDU0ktY29tbWFuZD0weCVYLCBsZG49JWQsIGhvc3Q9JWQuXG4i
LA0KIAkgICAgICAgbGFzdF9zY3NpX2NvbW1hbmQoaG9zdF9pbmRleClbbGRu
XSxsZG4saG9zdF9pbmRleCk7DQotCWVycm9yZmxhZyA9IDE7CQ0KKwllcnJv
cmZsYWcgPSAxOw0KICAgICAgfQ0KICAgIGlmIChlcnJvcmZsYWcpDQogICAg
ICB7IC8qIGlmIGVycm9ycyBhcHBlYXIsIGVudGVyIHRoaXMgc2VjdGlvbiB0
byBnaXZlIGRldGFpbGVkIGluZm8gKi8NCkBAIC01OTQsNyArNTk0LDcgQEAN
CiAJcHJpbnRrKCIgICAgICAgICAgICAgIFNlbmQgcmVwb3J0IHRvIHRoZSBt
YWludGFpbmVyLlxuIik7DQogCXBhbmljKCJJQk0gTUNBIFNDU0k6IEZhdGFs
IGVycm9ybWVzc2FnZSBmcm9tIHRoZSBzdWJzeXN0ZW0hXG4iKTsNCiAgICAg
IH0NCi0gICANCisNCiAgICAvKiBpZiBubyBwYW5pYyBhcHBlYXJlZCwgaW5j
cmVhc2UgdGhlIGludGVycnVwdC1jb3VudGVyICovDQogICAgSUJNX0RTKGhv
c3RfaW5kZXgpLnRvdGFsX2ludGVycnVwdHMrKzsNCiANCkBAIC02MDYsNyAr
NjA2LDcgQEANCiAJcmVzZXRfc3RhdHVzKGhvc3RfaW5kZXgpID0gSU1fUkVT
RVRfRklOSVNIRURfT0s7DQogCWxhc3Rfc2NzaV9jb21tYW5kKGhvc3RfaW5k
ZXgpW2xkbl0gPSBOT19TQ1NJOw0KIAlyZXR1cm47DQotICAgICB9ICAgDQor
ICAgICB9DQogICAgLypoYW5kbGluZyBvZiBjb21tYW5kcyBjb21pbmcgZnJv
bSB1cHBlciBsZXZlbCBvZiBzY3NpIGRyaXZlciAqLw0KICAgIGVsc2UNCiAg
ICAgIHsNCkBAIC02MzcsNyArNjM3LDcgQEANCiAJICAgICAgIHsgLyogcmVh
Y3Qgb24gU0NTSSBhYm9ydCBjb21tYW5kICovDQogI2lmZGVmIElNX0RFQlVH
X1BST0JFDQogCQkgIHByaW50aygiSUJNIE1DQSBTQ1NJOiBJbnRlcnJ1cHQg
ZnJvbSBTQ1NJLWFib3J0LlxuIik7DQotI2VuZGlmCQ0KKyNlbmRpZg0KIAkJ
ICBkaXNrX3J3X2luX3Byb2dyZXNzID0gMDsNCiAJCSAgUFMyX0RJU0tfTEVE
X09GRigpOw0KIAkJICBjbWQgPSBsZChob3N0X2luZGV4KVtsZG5dLmNtZDsN
CkBAIC02NTksOSArNjU5LDkgQEANCiAJCSAgc3RhdF9yZXN1bHQoaG9zdF9p
bmRleCkgPSBjbWRfcmVzdWx0Ow0KIAkJICBsYXN0X3Njc2lfY29tbWFuZCho
b3N0X2luZGV4KVtsZG5dID0gTk9fU0NTSTsNCiAJCSAgcmV0dXJuOw0KLQkg
ICAgICAgfQkgICAgIA0KKwkgICAgICAgfQ0KIAkgIH0NCi0JbGFzdF9zY3Np
X2NvbW1hbmQoaG9zdF9pbmRleClbbGRuXSA9IE5PX1NDU0k7CSAgICAgDQor
CWxhc3Rfc2NzaV9jb21tYW5kKGhvc3RfaW5kZXgpW2xkbl0gPSBOT19TQ1NJ
Ow0KIAljbWQgPSBsZChob3N0X2luZGV4KVtsZG5dLmNtZDsNCiAjaWZkZWYg
SU1fREVCVUdfVElNRU9VVA0KIAlpZiAoY21kKQ0KQEAgLTY3OCwxNiArNjc4
LDE2IEBADQogCWlmICghY21kKQ0KIAkgIHJldHVybjsNCiAJbGQoaG9zdF9p
bmRleClbbGRuXS5jbWQgPSBOVUxMOw0KLQkNCisNCiAjaWZkZWYgSU1fREVC
VUdfSU5UDQotCXByaW50aygiY21kPSUwMnggaXJlZz0lMDJ4IGRzPSUwMngg
Y3M9JTAyeCBkZT0lMDJ4IGNlPSUwMnhcbiIsIA0KLQkgICAgICAgY21kLT5j
bW5kWzBdLCBpbnRyX3JlZywgDQotCSAgICAgICBsZChob3N0X2luZGV4KVts
ZG5dLnRzYi5kZXZfc3RhdHVzLCANCisJcHJpbnRrKCJjbWQ9JTAyeCBpcmVn
PSUwMnggZHM9JTAyeCBjcz0lMDJ4IGRlPSUwMnggY2U9JTAyeFxuIiwNCisJ
ICAgICAgIGNtZC0+Y21uZFswXSwgaW50cl9yZWcsDQorCSAgICAgICBsZCho
b3N0X2luZGV4KVtsZG5dLnRzYi5kZXZfc3RhdHVzLA0KIAkgICAgICAgbGQo
aG9zdF9pbmRleClbbGRuXS50c2IuY21kX3N0YXR1cywNCi0JICAgICAgIGxk
KGhvc3RfaW5kZXgpW2xkbl0udHNiLmRldl9lcnJvciwgDQorCSAgICAgICBs
ZChob3N0X2luZGV4KVtsZG5dLnRzYi5kZXZfZXJyb3IsDQogCSAgICAgICBs
ZChob3N0X2luZGV4KVtsZG5dLnRzYi5jbWRfZXJyb3IpOw0KICNlbmRpZg0K
LQkNCisNCiAJLyppZiB0aGlzIGlzIGVuZCBvZiBtZWRpYSByZWFkL3dyaXRl
LCBtYXkgdHVybiBvZmYgUFMvMiBkaXNrIGxlZCAqLw0KIAlpZiAoKGxkKGhv
c3RfaW5kZXgpW2xkbl0uZGV2aWNlX3R5cGUhPVRZUEVfTk9fTFVOKSYmDQog
CSAgICAobGQoaG9zdF9pbmRleClbbGRuXS5kZXZpY2VfdHlwZSE9VFlQRV9O
T19ERVZJQ0UpKQ0KQEAgLTcyNSwxMSArNzI1LDExIEBADQogDQogLyotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQotc3RhdGljIHZvaWQgaXNzdWVf
Y21kIChpbnQgaG9zdF9pbmRleCwgdW5zaWduZWQgbG9uZyBjbWRfcmVnLCAN
CitzdGF0aWMgdm9pZCBpc3N1ZV9jbWQgKGludCBob3N0X2luZGV4LCB1bnNp
Z25lZCBsb25nIGNtZF9yZWcsDQogCQkgICAgICAgdW5zaWduZWQgY2hhciBh
dHRuX3JlZykNCiB7DQogICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZmxhZ3M7
DQotICAgLyogbXVzdCB3YWl0IGZvciBhdHRlbnRpb24gcmVnIG5vdCBidXN5
ICovICAgDQorICAgLyogbXVzdCB3YWl0IGZvciBhdHRlbnRpb24gcmVnIG5v
dCBidXN5ICovDQogICAgd2hpbGUgKDEpDQogICAgICB7DQogCXNwaW5fbG9j
a19pcnFzYXZlKCZpc3N1ZV9sb2NrLCBmbGFncyk7DQpAQCAtNzU0LDEzICs3
NTQsMTMgQEANCiANCiAvKiBTQ1NJLVNDQi1jb21tYW5kIGZvciBkZXZpY2Vf
aW5xdWlyeSAqLw0KIHN0YXRpYyBpbnQgZGV2aWNlX2lucXVpcnkoaW50IGhv
c3RfaW5kZXgsIGludCBsZG4pDQoteyAgIA0KK3sNCiAgICBpbnQgcmV0cmll
czsNCiAgICBTY3NpX0NtbmQgY21kOw0KICAgIHN0cnVjdCBpbV9zY2IgKnNj
YjsNCiAgICBzdHJ1Y3QgaW1fdHNiICp0c2I7DQogICAgdW5zaWduZWQgY2hh
ciAqYnVmOw0KLSAgIA0KKw0KICAgIHNjYiA9ICYobGQoaG9zdF9pbmRleClb
bGRuXS5zY2IpOw0KICAgIHRzYiA9ICYobGQoaG9zdF9pbmRleClbbGRuXS50
c2IpOw0KICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopKCYobGQoaG9zdF9p
bmRleClbbGRuXS5idWYpKTsNCkBAIC03NzIsMTMgKzc3MiwxMyBAQA0KICAg
ICAgICAgbWVtc2V0ICgmKGNtZC5jbW5kKSwgMHgwLCBzaXplb2YoY2hhcikg
KiBjbWQuY21kX2xlbik7DQogCWNtZC5jbW5kWzBdID0gSU5RVUlSWTsgLyog
ZGV2aWNlIGlucXVpcnkgKi8NCiAJY21kLmNtbmRbNF0gPSAweGZmOyAvKiBy
ZXR1cm4gYnVmZmVyIHNpemUgPSAyNTUgKi8NCi0gICAgIH0gICANCisgICAg
IH0NCiAgICBmb3IgKHJldHJpZXMgPSAwOyByZXRyaWVzIDwgMzsgcmV0cmll
cysrKQ0KICAgICAgew0KIAlpZiAoYnlwYXNzX2NvbnRyb2xsZXIpDQogCSAg
eyAvKiBieXBhc3MgdGhlIGhhcmR3YXJlIGludGVncmF0ZWQgY29tbWFuZCBz
ZXQgKi8NCi0JICAgICBzY2ItPmNvbW1hbmQgPSBJTV9PVEhFUl9TQ1NJX0NN
RF9DTUQ7ICAgICAgDQotCSAgICAgc2NiLT5lbmFibGUgfD0gSU1fUkVBRF9D
T05UUk9MIHwgSU1fU1VQUkVTU19FWENFUFRJT05fU0hPUlQ7IA0KKwkgICAg
IHNjYi0+Y29tbWFuZCA9IElNX09USEVSX1NDU0lfQ01EX0NNRDsNCisJICAg
ICBzY2ItPmVuYWJsZSB8PSBJTV9SRUFEX0NPTlRST0wgfCBJTV9TVVBSRVNT
X0VYQ0VQVElPTl9TSE9SVDsNCiAJICAgICBzY2ItPnUxLnNjc2lfY21kX2xl
bmd0aCA9IGNtZC5jbWRfbGVuOw0KIAkgICAgIG1lbWNweSAoc2NiLT51Mi5z
Y3NpX2NvbW1hbmQsICYoY21kLmNtbmQpLCBjbWQuY21kX2xlbik7DQogCSAg
ICAgbGFzdF9zY3NpX2NvbW1hbmQoaG9zdF9pbmRleClbbGRuXSA9IElOUVVJ
Ulk7DQpAQCAtNzkwLDE4ICs3OTAsMTggQEANCiAJICAgICBzY2ItPmNvbW1h
bmQgPSBJTV9ERVZJQ0VfSU5RVUlSWV9DTUQ7DQogCSAgICAgc2NiLT5lbmFi
bGUgPSBJTV9SRUFEX0NPTlRST0wgfCBJTV9TVVBSRVNTX0VYQ0VQVElPTl9T
SE9SVDsNCiAJICAgICBsYXN0X3Njc2lfY29tbWFuZChob3N0X2luZGV4KVts
ZG5dID0gSU1fREVWSUNFX0lOUVVJUllfQ01EOw0KLQkgICAgIGxhc3Rfc2Nz
aV90eXBlKGhvc3RfaW5kZXgpW2xkbl0gPSBJTV9TQ0I7CSAgICAgDQorCSAg
ICAgbGFzdF9zY3NpX3R5cGUoaG9zdF9pbmRleClbbGRuXSA9IElNX1NDQjsN
CiAJICB9DQogCXNjYi0+c3lzX2J1Zl9hZHIgPSB2aXJ0X3RvX2J1cyhidWYp
Ow0KIAlzY2ItPnN5c19idWZfbGVuZ3RoID0gMHhmZjsgLyogbWF4aW11bSBi
dWZmZXJsZW5ndGggZ2l2ZXMgbWF4IGluZm8gKi8NCiAJc2NiLT50c2JfYWRy
ID0gdmlydF90b19idXModHNiKTsNCi0JDQorDQogCS8qaXNzdWUgc2NiIHRv
IHBhc3NlZCBsZG4sIGFuZCBidXN5IHdhaXQgZm9yIGludGVycnVwdCAqLw0K
IAlnb3RfaW50ZXJydXB0KGhvc3RfaW5kZXgpID0gMDsNCiAJaXNzdWVfY21k
IChob3N0X2luZGV4LCB2aXJ0X3RvX2J1cyhzY2IpLCBJTV9TQ0IgfCBsZG4p
Ow0KIAl3aGlsZSAoIWdvdF9pbnRlcnJ1cHQoaG9zdF9pbmRleCkpDQogCSAg
YmFycmllciAoKTsNCi0JDQorDQogCS8qaWYgY29tbWFuZCBzdWNjZXNmdWws
IGJyZWFrICovDQogCWlmICgoc3RhdF9yZXN1bHQoaG9zdF9pbmRleCkgPT0g
SU1fU0NCX0NNRF9DT01QTEVURUQpfHwNCiAJICAgIChzdGF0X3Jlc3VsdCho
b3N0X2luZGV4KSA9PSBJTV9TQ0JfQ01EX0NPTVBMRVRFRF9XSVRIX1JFVFJJ
RVMpKQ0KQEAgLTgwOSw3ICs4MDksNyBAQA0KIAkgICAgIHJldHVybiAxOw0K
IAkgIH0NCiAgICAgIH0NCi0gICANCisNCiAgICAvKmlmIGFsbCB0aHJlZSBy
ZXRyaWVzIGZhaWxlZCwgcmV0dXJuICJubyBkZXZpY2UgYXQgdGhpcyBsZG4i
ICovDQogICAgaWYgKHJldHJpZXMgPj0gMykNCiAgICAgIHJldHVybiAwOw0K
QEAgLTgyNCwyNCArODI0LDI0IEBADQogICAgc3RydWN0IGltX3NjYiAqc2Ni
Ow0KICAgIHN0cnVjdCBpbV90c2IgKnRzYjsNCiAgICB1bnNpZ25lZCBjaGFy
ICpidWY7DQotICAgDQorDQogICAgc2NiID0gJihsZChob3N0X2luZGV4KVts
ZG5dLnNjYik7DQogICAgdHNiID0gJihsZChob3N0X2luZGV4KVtsZG5dLnRz
Yik7DQogICAgYnVmID0gKHVuc2lnbmVkIGNoYXIgKikoJihsZChob3N0X2lu
ZGV4KVtsZG5dLmJ1ZikpOw0KICAgIGxkKGhvc3RfaW5kZXgpW2xkbl0udHNi
LmRldl9zdGF0dXMgPSAwOw0KLSAgIA0KKw0KICAgIGlmIChieXBhc3NfY29u
dHJvbGxlcikNCiAgICAgIHsgLyogcmVhZCBjYXBhY2l0eSBpbiBjb21tb25s
eSBrbm93biBkZWZhdWx0IFNDU0ktZm9ybWF0ICovDQogCWNtZC5jbWRfbGVu
ID0gMTA7DQogICAgICAgICBtZW1zZXQgKCYoY21kLmNtbmQpLCAweDAsIHNp
emVvZihjaGFyKSAqIGNtZC5jbWRfbGVuKTsNCiAJY21kLmNtbmRbMF0gPSBS
RUFEX0NBUEFDSVRZOyAvKiByZWFkIGNhcGFjaXR5ICovDQotICAgICB9CQ0K
KyAgICAgfQ0KICAgIGZvciAocmV0cmllcyA9IDA7IHJldHJpZXMgPCAzOyBy
ZXRyaWVzKyspDQogICAgICB7DQogCS8qZmlsbCBzY2Igd2l0aCByZWFkIGNh
cGFjaXR5IGNvbW1hbmQgKi8NCiAJaWYgKGJ5cGFzc19jb250cm9sbGVyKQ0K
IAkgIHsgLyogYnlwYXNzIHRoZSBTQ1NJLWNvbW1hbmQgKi8NCi0JICAgICBz
Y2ItPmNvbW1hbmQgPSBJTV9PVEhFUl9TQ1NJX0NNRF9DTUQ7ICAgICAgDQor
CSAgICAgc2NiLT5jb21tYW5kID0gSU1fT1RIRVJfU0NTSV9DTURfQ01EOw0K
IAkgICAgIHNjYi0+ZW5hYmxlIHw9IElNX1JFQURfQ09OVFJPTDsNCiAJICAg
ICBzY2ItPnUxLnNjc2lfY21kX2xlbmd0aCA9IGNtZC5jbWRfbGVuOw0KIAkg
ICAgIG1lbWNweSAoc2NiLT51Mi5zY3NpX2NvbW1hbmQsICYoY21kLmNtbmQp
LCBjbWQuY21kX2xlbik7DQpAQCAtODUzLDE4ICs4NTMsMTggQEANCiAJICAg
ICBzY2ItPmNvbW1hbmQgPSBJTV9SRUFEX0NBUEFDSVRZX0NNRDsNCiAJICAg
ICBzY2ItPmVuYWJsZSA9IElNX1JFQURfQ09OVFJPTDsNCiAJICAgICBsYXN0
X3Njc2lfY29tbWFuZChob3N0X2luZGV4KVtsZG5dID0gSU1fUkVBRF9DQVBB
Q0lUWV9DTUQ7DQotCSAgICAgbGFzdF9zY3NpX3R5cGUoaG9zdF9pbmRleClb
bGRuXSA9IElNX1NDQjsJICAgICANCisJICAgICBsYXN0X3Njc2lfdHlwZSho
b3N0X2luZGV4KVtsZG5dID0gSU1fU0NCOw0KIAkgIH0NCiAJc2NiLT5zeXNf
YnVmX2FkciA9IHZpcnRfdG9fYnVzKGJ1Zik7DQogCXNjYi0+c3lzX2J1Zl9s
ZW5ndGggPSA4Ow0KIAlzY2ItPnRzYl9hZHIgPSB2aXJ0X3RvX2J1cyh0c2Ip
Ow0KLQkNCisNCiAJLyppc3N1ZSBzY2IgdG8gcGFzc2VkIGxkbiwgYW5kIGJ1
c3kgd2FpdCBmb3IgaW50ZXJydXB0ICovDQogCWdvdF9pbnRlcnJ1cHQoaG9z
dF9pbmRleCkgPSAwOw0KIAlpc3N1ZV9jbWQgKGhvc3RfaW5kZXgsIHZpcnRf
dG9fYnVzKHNjYiksIElNX1NDQiB8IGxkbik7DQogCXdoaWxlICghZ290X2lu
dGVycnVwdChob3N0X2luZGV4KSkNCiAJICBiYXJyaWVyICgpOw0KLQkgICAg
IA0KKw0KIAkgICAgIC8qaWYgZ290IGNhcGFjaXR5LCBnZXQgYmxvY2sgbGVu
Z3RoIGFuZCByZXR1cm4gb25lIGRldmljZSBmb3VuZCAqLw0KIAlpZiAoKHN0
YXRfcmVzdWx0KGhvc3RfaW5kZXgpID09IElNX1NDQl9DTURfQ09NUExFVEVE
KXx8DQogCSAgICAoc3RhdF9yZXN1bHQoaG9zdF9pbmRleCkgPT0gSU1fU0NC
X0NNRF9DT01QTEVURURfV0lUSF9SRVRSSUVTKSkNCkBAIC04ODIsMTMgKzg4
MiwxMyBAQA0KIC8qIFNDU0ktaW1tZWRpYXRlLWNvbW1hbmQgZm9yIGFzc2ln
bi4gVGhpcyBmdW5jdGlvbnMgbWFwcy91bm1hcHMgc3BlY2lmaWMNCiAgbGRu
LW51bWJlcnMgb24gU0NTSSAoUFVOLExVTikuIEl0IGlzIG5lZWRlZCBmb3Ig
cHJlc2V0dGluZyBvZiB0aGUNCiAgc3Vic3lzdGVtIGFuZCBmb3IgZHluYW1p
Y2FsIHJlbWFwcGluZyBvZCBsZG5zLiAqLw0KLXN0YXRpYyBpbnQgaW1tZWRp
YXRlX2Fzc2lnbihpbnQgaG9zdF9pbmRleCwgdW5zaWduZWQgaW50IHB1biwg
DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBs
dW4sIHVuc2lnbmVkIGludCBsZG4sIA0KK3N0YXRpYyBpbnQgaW1tZWRpYXRl
X2Fzc2lnbihpbnQgaG9zdF9pbmRleCwgdW5zaWduZWQgaW50IHB1biwNCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGx1biwg
dW5zaWduZWQgaW50IGxkbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IG9wZXJhdGlvbikNCiB7DQogICAgaW50IHJldHJp
ZXM7DQogICAgdW5zaWduZWQgbG9uZyBpbW1fY29tbWFuZDsNCi0gICANCisN
CiAgICBmb3IgKHJldHJpZXM9MDsgcmV0cmllczwzOyByZXRyaWVzICsrKQ0K
ICAgICAgew0KICAgICAgICAgaW1tX2NvbW1hbmQgPSBpbmwoSU1fQ01EX1JF
Ryhob3N0X2luZGV4KSk7DQpAQCAtODk4LDIyICs4OTgsMjIgQEANCiAgICAg
ICAgIGltbV9jb21tYW5kIHw9ICh1bnNpZ25lZCBsb25nKSgob3BlcmF0aW9u
ICYgMSkgPDwgMjMpOw0KICAgICAgICAgaW1tX2NvbW1hbmQgfD0gKHVuc2ln
bmVkIGxvbmcpKChwdW4gJiA3KSA8PCAyMCk7DQogICAgICAgICBpbW1fY29t
bWFuZCB8PSAodW5zaWduZWQgbG9uZykoKGxkbiAmIDE1KSA8PCAxNik7DQot
CQ0KKw0KIAlsYXN0X3Njc2lfY29tbWFuZChob3N0X2luZGV4KVsweGZdID0g
SU1fQVNTSUdOX0lNTV9DTUQ7DQogCWxhc3Rfc2NzaV90eXBlKGhvc3RfaW5k
ZXgpWzB4Zl0gPSBJTV9JTU1fQ01EOw0KICAgICAgICAgZ290X2ludGVycnVw
dChob3N0X2luZGV4KSA9IDA7DQogICAgICAgICBpc3N1ZV9jbWQgKGhvc3Rf
aW5kZXgsICh1bnNpZ25lZCBsb25nKShpbW1fY29tbWFuZCksIElNX0lNTV9D
TUQgfCAweGYpOw0KICAgICAgICAgd2hpbGUgKCFnb3RfaW50ZXJydXB0KGhv
c3RfaW5kZXgpKQ0KIAkgIGJhcnJpZXIgKCk7DQotCQ0KKw0KICAgICAgICAg
LyppZiBjb21tYW5kIHN1Y2Nlc2Z1bCwgYnJlYWsgKi8NCiAJaWYgKHN0YXRf
cmVzdWx0KGhvc3RfaW5kZXgpID09IElNX0lNTUVESUFURV9DTURfQ09NUExF
VEVEKQ0KIAkgIHsNCiAJICAgICByZXR1cm4gMTsNCiAJICB9DQogICAgICB9
DQotICAgDQotICAgaWYgKHJldHJpZXMgPj0gMykgDQorDQorICAgaWYgKHJl
dHJpZXMgPj0gMykNCiAgICAgIHJldHVybiAwOw0KICAgIGVsc2UNCiAgICAg
IHJldHVybiAxOw0KQEAgLTkyNSw3ICs5MjUsNyBAQA0KICAgIGludCByZXRy
aWVzOw0KICAgIGludCB0aWNrczsNCiAgICB1bnNpZ25lZCBsb25nIGltbV9j
b21tYW5kOw0KLSAgIA0KKw0KICAgIGZvciAocmV0cmllcz0wOyByZXRyaWVz
PDM7IHJldHJpZXMgKyspDQogICAgICB7DQogICAgICAgICBpbW1fY29tbWFu
ZCA9IGlubChJTV9DTURfUkVHKGhvc3RfaW5kZXgpKTsNCkBAIC05MzUsMjAg
KzkzNSwyMCBAQA0KIAlsYXN0X3Njc2lfdHlwZShob3N0X2luZGV4KVtsZG5d
ID0gSU1fSU1NX0NNRDsNCiANCiAJZ290X2ludGVycnVwdChob3N0X2luZGV4
KSA9IDA7DQotCXJlc2V0X3N0YXR1cyhob3N0X2luZGV4KSA9IElNX1JFU0VU
X0lOX1BST0dSRVNTOyAgICAgICAgDQorCXJlc2V0X3N0YXR1cyhob3N0X2lu
ZGV4KSA9IElNX1JFU0VUX0lOX1BST0dSRVNTOw0KIAlpc3N1ZV9jbWQgKGhv
c3RfaW5kZXgsICh1bnNpZ25lZCBsb25nKShpbW1fY29tbWFuZCksIElNX0lN
TV9DTUQgfCBsZG4pOw0KLQl0aWNrcyA9IElNX1JFU0VUX0RFTEFZKkhaOwkN
Ci0Jd2hpbGUgKHJlc2V0X3N0YXR1cyhob3N0X2luZGV4KSA9PSBJTV9SRVNF
VF9JTl9QUk9HUkVTUyAmJiAtLXRpY2tzKSANCisJdGlja3MgPSBJTV9SRVNF
VF9ERUxBWSpIWjsNCisJd2hpbGUgKHJlc2V0X3N0YXR1cyhob3N0X2luZGV4
KSA9PSBJTV9SRVNFVF9JTl9QUk9HUkVTUyAmJiAtLXRpY2tzKQ0KIAkgIHsN
CiAJICAgICBtZGVsYXkoMSs5OTkvSFopOw0KIAkgICAgIGJhcnJpZXIoKTsN
CiAJICB9DQogCS8qIGlmIHJlc2V0IGRpZCBub3QgY29tcGxldGUsIGp1c3Qg
Y2xhaW0gKi8NCi0JaWYgKCF0aWNrcykgDQorCWlmICghdGlja3MpDQogCSAg
ew0KIAkgICAgIHByaW50aygiSUJNIE1DQSBTQ1NJOiByZXNldCBkaWQgbm90
IGNvbXBsZXRlIHdpdGhpbiAlZCBzZWNvbmRzLlxuIiwNCiAJCSAgICBJTV9S
RVNFVF9ERUxBWSk7DQotCSAgICAgcmVzZXRfc3RhdHVzKGhvc3RfaW5kZXgp
ID0gSU1fUkVTRVRfRklOSVNIRURfT0s7IA0KKwkgICAgIHJlc2V0X3N0YXR1
cyhob3N0X2luZGV4KSA9IElNX1JFU0VUX0ZJTklTSEVEX09LOw0KIAkgICAg
IC8qIGRpZCBub3Qgd29yaywgZmluaXNoICovDQogCSAgICAgcmV0dXJuIDE7
DQogCSAgfQ0KQEAgLTk1OCw4ICs5NTgsOCBAQA0KIAkgICAgIHJldHVybiAx
Ow0KIAkgIH0NCiAgICAgIH0NCi0gICANCi0gICBpZiAocmV0cmllcyA+PSAz
KSANCisNCisgICBpZiAocmV0cmllcyA+PSAzKQ0KICAgICAgcmV0dXJuIDA7
DQogICAgZWxzZQ0KICAgICAgcmV0dXJuIDE7DQpAQCAtOTkyLDE3ICs5OTIs
MTcgQEANCiB7DQogICAgY29uc3QgY2hhciBoZXhbMTZdID0gIjAxMjM0NTY3
ODlhYmNkZWYiOw0KICAgIHN0YXRpYyBjaGFyIGFuc3dlclsyXTsNCi0gICAN
CisNCiAgICBhbnN3ZXJbMV0gPSAoY2hhcikoMHgwKTsNCiAgICBpZiAodmFs
dWU8PU1BWF9MT0dfREVWKQ0KICAgICAgYW5zd2VyWzBdID0gaGV4W3ZhbHVl
XTsNCiAgICBlbHNlDQogICAgICBhbnN3ZXJbMF0gPSAnLSc7DQotICAgDQor
DQogICAgcmV0dXJuIChjaGFyICopJmFuc3dlcjsNCiB9DQogDQotLyogDQor
LyoNCiAgVGhlIGZvbGxvd2luZyByb3V0aW5lIHByb2JlcyB0aGUgU0NTSS1k
ZXZpY2VzIGluIGZvdXIgc3RlcHM6DQogIDEuIFRoZSBjdXJyZW50IGxkbiAt
PiBwdW4sbHVuIG1hcHBpbmcgaXMgcmVtb3ZlZCBvbiB0aGUgU0NTSS1hZGFw
dGVyLg0KICAyLiBsZG4gMCBpcyB1c2VkIHRvIGdvIHRocm91Z2ggYWxsIHBv
c3NpYmxlIGNvbWJpbmF0aW9ucyBvZiBwdW4sbHVuIGFuZA0KQEAgLTEwMjYs
NyArMTAyNiw3IEBADQogew0KICAgIGludCBpZCwgbHVuLCBsZG4sIHRpY2tz
Ow0KICAgIGludCBjb3VudF9kZXZpY2VzOyAvKiBsb2NhbCBjb3VudGVyIGZv
ciBjb25uZWN0ZWQgZGV2aWNlICovDQotICAgDQorDQogICAgLyogYXNzaWdu
IGRlZmF1bHQgdmFsdWVzIHRvIGNlcnRhaW4gdmFyaWFibGVzICovDQogDQog
ICAgdGlja3MgPSAwOw0KQEAgLTEwNDEsMTMgKzEwNDEsMTMgQEANCiAgICAg
IH0NCiANCiAgICAvKiBpbml0aWFsaXplIHRoZSB2ZXJ5IGltcG9ydGFudCBk
cml2ZXItaW5mb3JtYXRpb25hbCBhcnJheXMvc3RydWN0cyAqLw0KLSAgIG1l
bXNldCAobGQoaG9zdF9pbmRleCksIDAsIA0KKyAgIG1lbXNldCAobGQoaG9z
dF9pbmRleCksIDAsDQogCSAgIHNpemVvZihsZChob3N0X2luZGV4KSkpOw0K
LSAgIG1lbXNldCAoZ2V0X2xkbihob3N0X2luZGV4KSwgVFlQRV9OT19ERVZJ
Q0UsIA0KKyAgIG1lbXNldCAoZ2V0X2xkbihob3N0X2luZGV4KSwgVFlQRV9O
T19ERVZJQ0UsDQogCSAgIHNpemVvZihnZXRfbGRuKGhvc3RfaW5kZXgpKSk7
IC8qIHRoaXMgaXMgZXNzZW50aWFsICEgKi8NCiAgICBtZW1zZXQgKGdldF9z
Y3NpKGhvc3RfaW5kZXgpLCBUWVBFX05PX0RFVklDRSwNCiAJICAgc2l6ZW9m
KGdldF9zY3NpKGhvc3RfaW5kZXgpKSk7IC8qIHRoaXMgaXMgZXNzZW50aWFs
ICEgKi8NCi0gICANCisNCiAgICBmb3IgKGx1bj0wOyBsdW48ODsgbHVuKysp
IC8qIG1hcmsgdGhlIGFkYXB0ZXIgYXQgaXRzIHB1biBvbiBhbGwgbHVucyov
DQogICAgICB7DQogCWdldF9zY3NpKGhvc3RfaW5kZXgpW3N1YnN5c3RlbV9w
dW4oaG9zdF9pbmRleCldW2x1bl0gPSBUWVBFX0lCTV9TQ1NJX0FEQVBURVI7
DQpAQCAtMTA1NSw3ICsxMDU1LDcgQEANCiAJCQkJCQkJCWxkbiBpcyBhY3Rp
dmUgZm9yIGFsbA0KIAkJCQkJCQkJbHVucy4gKi8NCiAgICAgIH0NCi0gICAN
CisNCiAgICAvKiBTVEVQIDE6ICovDQogI2lmZGVmIElNX0RFQlVHX1BST0JF
DQogICAgcHJpbnRrKCJJQk0gTUNBIFNDU0k6IEN1cnJlbnQgU0NTSS1ob3N0
IGluZGV4OiAlZFxuIixob3N0X2luZGV4KTsNCkBAIC0xMDcwLDcgKzEwNzAs
NyBAQA0KICAgICAgfQ0KIA0KICAgIGx1biA9IDA7IC8qIGRlZmF1bHQgbHVu
IGlzIDAgKi8NCi0gICANCisNCiAgICAvKiBTVEVQIDI6ICovDQogICAgcHJp
bnRrKCJcbklCTSBNQ0EgU0NTSTogUHJvYmluZyBTQ1NJLWRldmljZXMuIik7
DQogICAgZm9yIChpZD0wOyBpZDw4OyBpZCsrKQ0KQEAgLTEwODQsNyArMTA4
NCw3IEBADQogCWlmIChpZCAhPSBzdWJzeXN0ZW1fcHVuKGhvc3RfaW5kZXgp
KQ0KIAkgIHsgICAgICAgICAgICAvKiBpZiBwdW4gaXMgbm90IHRoZSBhZGFw
dGVyOiAqLw0KIAkgICAgIC8qc2V0IGxkbj0wIHRvIHB1bixsdW4qLw0KLQkg
ICAgIGltbWVkaWF0ZV9hc3NpZ24oaG9zdF9pbmRleCxpZCxsdW4sUFJPQkVf
TEROLFNFVF9MRE4pOyANCisJICAgICBpbW1lZGlhdGVfYXNzaWduKGhvc3Rf
aW5kZXgsaWQsbHVuLFBST0JFX0xETixTRVRfTEROKTsNCiAJICAgICBpZiAo
ZGV2aWNlX2lucXVpcnkoaG9zdF9pbmRleCwgUFJPQkVfTEROKSkgLyogcHJv
YmUgZGV2aWNlICovDQogCSAgICAgICB7DQogCQkgIGdldF9zY3NpKGhvc3Rf
aW5kZXgpW2lkXVtsdW5dPQ0KQEAgLTEwOTQsMTcgKzEwOTQsMTcgQEANCiAJ
CSAgICBjb3VudF9kZXZpY2VzKys7IC8qIGEgZXhpc3RpbmcgZGV2aWNlIGlz
IGZvdW5kICovDQogCSAgICAgICB9DQogCSAgICAgLyogcmVtb3ZlIGxkbiAq
Lw0KLQkgICAgIGltbWVkaWF0ZV9hc3NpZ24oaG9zdF9pbmRleCxpZCxsdW4s
UFJPQkVfTEROLFJFTU9WRV9MRE4pOyANCisJICAgICBpbW1lZGlhdGVfYXNz
aWduKGhvc3RfaW5kZXgsaWQsbHVuLFBST0JFX0xETixSRU1PVkVfTEROKTsN
CiAJICB9DQogICAgICB9DQotICAgDQotICAgLyogU1RFUCAzOiAqLyAgIA0K
Kw0KKyAgIC8qIFNURVAgMzogKi8NCiAgICBwcmludGsoIlxuSUJNIE1DQSBT
Q1NJOiBNYXBwaW5nIFNDU0ktZGV2aWNlcy4iKTsNCi0gICANCisNCiAgICBs
ZG4gPSAwOw0KICAgIGx1biA9IDA7DQotICAgDQotI2lmZGVmIENPTkZJR19T
Q1NJX01VTFRJX0xVTiAgIA0KKw0KKyNpZmRlZiBDT05GSUdfU0NTSV9NVUxU
SV9MVU4NCiAgICBmb3IgKGx1bj0wOyBsdW48OCAmJiBsZG48TUFYX0xPR19E
RVY7IGx1bisrKQ0KICNlbmRpZg0KICAgICAgZm9yIChpZD0wOyBpZDw4ICYm
IGxkbjxNQVhfTE9HX0RFVjsgaWQrKykNCkBAIC0xMTE0LDE0ICsxMTE0LDE0
IEBADQogI2VuZGlmDQogCWlmIChpZCAhPSBzdWJzeXN0ZW1fcHVuKGhvc3Rf
aW5kZXgpKQ0KIAkgIHsNCi0JICAgICBpZiAoZ2V0X3Njc2koaG9zdF9pbmRl
eClbaWRdW2x1bl0gIT0gVFlQRV9OT19MVU4gJiYgDQorCSAgICAgaWYgKGdl
dF9zY3NpKGhvc3RfaW5kZXgpW2lkXVtsdW5dICE9IFRZUEVfTk9fTFVOICYm
DQogCQkgZ2V0X3Njc2koaG9zdF9pbmRleClbaWRdW2x1bl0gIT0gVFlQRV9O
T19ERVZJQ0UpDQogCSAgICAgICB7DQotCQkgIC8qIE9ubHkgbWFwIGlmIGFj
Y2VwdGVkIHR5cGUuIEFsd2F5cyBlbnRlciBmb3IgDQorCQkgIC8qIE9ubHkg
bWFwIGlmIGFjY2VwdGVkIHR5cGUuIEFsd2F5cyBlbnRlciBmb3INCiAJCSAg
IGx1biA9PSAwIHRvIGdldCBubyBnYXBzIGludG8gbGRuLW1hcHBpbmcgZm9y
IGxkbjw3LiAqLw0KIAkJICBpbW1lZGlhdGVfYXNzaWduKGhvc3RfaW5kZXgs
aWQsbHVuLGxkbixTRVRfTEROKTsNCiAJCSAgZ2V0X2xkbihob3N0X2luZGV4
KVtpZF1bbHVuXT1sZG47IC8qIG1hcCBsZG4gKi8NCi0JCSAgaWYgKGRldmlj
ZV9leGlzdHMgKGhvc3RfaW5kZXgsIGxkbiwgDQorCQkgIGlmIChkZXZpY2Vf
ZXhpc3RzIChob3N0X2luZGV4LCBsZG4sDQogCQkJCSAgICAgJmxkKGhvc3Rf
aW5kZXgpW2xkbl0uYmxvY2tfbGVuZ3RoLA0KIAkJCQkgICAgICZsZChob3N0
X2luZGV4KVtsZG5dLmRldmljZV90eXBlKSkNCiAJCSAgICB7DQpAQCAtMTE1
MSwxMSArMTE1MSwxMSBAQA0KIAkJICBnZXRfbGRuKGhvc3RfaW5kZXgpW2lk
XVtsdW5dPWxkbjsgLyogbWFwIGxkbiAqLw0KIAkJICBsZG4rKzsNCiAJICAg
ICAgIH0NCi0JICB9CSANCisJICB9DQogICAgICB9DQotICAgDQorDQogICAg
LyogU1RFUCA0OiAqLw0KLSAgIA0KKw0KICAgIC8qIG1hcCByZW1haW5pbmcg
bGRucyB0byBub24tZXhpc3RpbmcgZGV2aWNlcyAqLw0KICAgIGZvciAobHVu
PTE7IGx1bjw4ICYmIGxkbjxNQVhfTE9HX0RFVjsgbHVuKyspDQogICAgICBm
b3IgKGlkPTA7IGlkPDggJiYgbGRuPE1BWF9MT0dfREVWOyBpZCsrKQ0KQEAg
LTExNzEsMTQgKzExNzEsMTQgQEANCiAJICAgICBnZXRfbGRuKGhvc3RfaW5k
ZXgpW2lkXVtsdW5dPWxkbjsNCiAJICAgICBsZG4rKzsNCiAJICB9DQotICAg
ICB9CQ0KLSAgIA0KKyAgICAgfQ0KKw0KICAgIHByaW50aygiXG4iKTsNCiAg
ICBpZiAoaWJtX2Fuc2lfb3JkZXIpDQogICAgICBwcmludGsoIklCTSBNQ0Eg
U0NTSTogRGV2aWNlIG9yZGVyOiBJQk0vQU5TSSAocHVuPTcgaXMgZmlyc3Qp
LlxuIik7DQogICAgZWxzZQ0KICAgICAgcHJpbnRrKCJJQk0gTUNBIFNDU0k6
IERldmljZSBvcmRlcjogTmV3IEluZHVzdHJ5IFN0YW5kYXJkIChwdW49MCBp
cyBmaXJzdCkuXG4iKTsNCi0gICANCisNCiAjaWZkZWYgSU1fREVCVUdfUFJP
QkUNCiAgICAvKiBTaG93IHRoZSBwaHlzaWNhbCBhbmQgbG9naWNhbCBtYXBw
aW5nIGR1cmluZyBib290LiAqLw0KICAgIHByaW50aygiSUJNIE1DQSBTQ1NJ
OiBEZXRlcm1pbmVkIFNDU0ktZGV2aWNlLW1hcHBpbmc6XG4iKTsNCkBAIC0x
MTk1LDUyICsxMTk1LDUyIEBADQogCXByaW50aygiXG4iKTsNCiAgICAgIH0N
CiAjZW5kaWYNCi0gICANCisNCiAgICAvKiBhc3NpZ24gdG90YWwgbnVtYmVy
IG9mIGZvdW5kIFNDU0ktZGV2aWNlcyB0byB0aGUgc3RhdGlzdGljcyBzdHJ1
Y3QgKi8NCiAgICBJQk1fRFMoaG9zdF9pbmRleCkudG90YWxfc2NzaV9kZXZp
Y2VzID0gY291bnRfZGV2aWNlczsNCi0gICANCisNCiAgICAvKiBkZWNpZGUg
Zm9yIG91dHB1dCBpbiAvcHJvYy1maWxlc3lzdGVtLCBpZiB0aGUgY29uZmln
dXJhdGlvbiBvZg0KICAgICBTQ1NJLWRldmljZXMgbWFrZXMgZHluYW1pY2Fs
IHJlYXNzaWdubWVudCBvZiBkZXZpY2VzIG5lY2Vzc2FyeSAqLw0KLSAgIGlm
IChjb3VudF9kZXZpY2VzPj1NQVhfTE9HX0RFVikgDQorICAgaWYgKGNvdW50
X2RldmljZXM+PU1BWF9MT0dfREVWKQ0KICAgICAgSUJNX0RTKGhvc3RfaW5k
ZXgpLmR5bl9mbGFnID0gMTsgLyogZHluYW1pY2FsIGFzc2lnbm1lbnQgaXMg
bmVjZXNzYXJ5ICovDQotICAgZWxzZSANCisgICBlbHNlDQogICAgICBJQk1f
RFMoaG9zdF9pbmRleCkuZHluX2ZsYWcgPSAwOyAvKiBkeW5hbWljYWwgYXNz
aWdubWVudCBpcyBub3QgbmVjZXNzYXJ5ICovDQotICAgDQorDQogICAgLyog
SWYgbm8gU0NTSS1kZXZpY2VzIGFyZSBhc3NpZ25lZCwgcmV0dXJuIDEgaW4g
b3JkZXIgdG8gY2F1c2UgbWVzc2FnZS4gKi8NCiAgICBpZiAobGRuID09IDAp
DQogICAgICBwcmludGsoIklCTSBNQ0EgU0NTSTogV2FybmluZzogTm8gU0NT
SS1kZXZpY2VzIGZvdW5kL2Fzc2lnbmVkIVxuIik7DQotICAgDQorDQogICAg
LyogcmVzZXQgdGhlIGNvdW50ZXJzIGZvciBzdGF0aXN0aWNzIG9uIHRoZSBj
dXJyZW50IGFkYXB0ZXIgKi8NCiAgICBJQk1fRFMoaG9zdF9pbmRleCkudG90
YWxfYWNjZXNzZXMgPSAwOw0KICAgIElCTV9EUyhob3N0X2luZGV4KS50b3Rh
bF9pbnRlcnJ1cHRzID0gMDsNCiAgICBJQk1fRFMoaG9zdF9pbmRleCkuZHlu
YW1pY2FsX2Fzc2lnbm1lbnRzID0gMDsNCi0gICBtZW1zZXQgKElCTV9EUyho
b3N0X2luZGV4KS5sZG5fYWNjZXNzLCAweDAsIA0KKyAgIG1lbXNldCAoSUJN
X0RTKGhvc3RfaW5kZXgpLmxkbl9hY2Nlc3MsIDB4MCwNCiAJICAgc2l6ZW9m
IChJQk1fRFMoaG9zdF9pbmRleCkubGRuX2FjY2VzcykpOw0KLSAgIG1lbXNl
dCAoSUJNX0RTKGhvc3RfaW5kZXgpLmxkbl9yZWFkX2FjY2VzcywgMHgwLCAN
CisgICBtZW1zZXQgKElCTV9EUyhob3N0X2luZGV4KS5sZG5fcmVhZF9hY2Nl
c3MsIDB4MCwNCiAJICAgc2l6ZW9mIChJQk1fRFMoaG9zdF9pbmRleCkubGRu
X3JlYWRfYWNjZXNzKSk7DQotICAgbWVtc2V0IChJQk1fRFMoaG9zdF9pbmRl
eCkubGRuX3dyaXRlX2FjY2VzcywgMHgwLCANCisgICBtZW1zZXQgKElCTV9E
Uyhob3N0X2luZGV4KS5sZG5fd3JpdGVfYWNjZXNzLCAweDAsDQogCSAgIHNp
emVvZiAoSUJNX0RTKGhvc3RfaW5kZXgpLmxkbl93cml0ZV9hY2Nlc3MpKTsN
Ci0gICBtZW1zZXQgKElCTV9EUyhob3N0X2luZGV4KS5sZG5faW5xdWlyeV9h
Y2Nlc3MsIDB4MCwgDQorICAgbWVtc2V0IChJQk1fRFMoaG9zdF9pbmRleCku
bGRuX2lucXVpcnlfYWNjZXNzLCAweDAsDQogCSAgIHNpemVvZiAoSUJNX0RT
KGhvc3RfaW5kZXgpLmxkbl9pbnF1aXJ5X2FjY2VzcykpOw0KLSAgIG1lbXNl
dCAoSUJNX0RTKGhvc3RfaW5kZXgpLmxkbl9tb2Rlc2VsZWN0X2FjY2Vzcywg
MHgwLCANCisgICBtZW1zZXQgKElCTV9EUyhob3N0X2luZGV4KS5sZG5fbW9k
ZXNlbGVjdF9hY2Nlc3MsIDB4MCwNCiAJICAgc2l6ZW9mIChJQk1fRFMoaG9z
dF9pbmRleCkubGRuX21vZGVzZWxlY3RfYWNjZXNzKSk7DQotICAgbWVtc2V0
IChJQk1fRFMoaG9zdF9pbmRleCkubGRuX2Fzc2lnbm1lbnRzLCAweDAsIA0K
KyAgIG1lbXNldCAoSUJNX0RTKGhvc3RfaW5kZXgpLmxkbl9hc3NpZ25tZW50
cywgMHgwLA0KIAkgICBzaXplb2YgKElCTV9EUyhob3N0X2luZGV4KS5sZG5f
YXNzaWdubWVudHMpKTsNCi0gICANCisNCiAgICByZXR1cm47DQogfQ0KIA0K
IC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KLXN0YXRpYyBpbnQg
ZGV2aWNlX2V4aXN0cyAoaW50IGhvc3RfaW5kZXgsIGludCBsZG4sIGludCAq
YmxvY2tfbGVuZ3RoLCANCitzdGF0aWMgaW50IGRldmljZV9leGlzdHMgKGlu
dCBob3N0X2luZGV4LCBpbnQgbGRuLCBpbnQgKmJsb2NrX2xlbmd0aCwNCiAJ
CQkgIGludCAqZGV2aWNlX3R5cGUpDQogew0KICAgIHVuc2lnbmVkIGNoYXIg
KmJ1ZjsNCi0gICANCisNCiAgICAvKiBpZiBubyB2YWxpZCBkZXZpY2UgZm91
bmQsIHJldHVybiBpbW1lZGlhdGVseSB3aXRoIDAgKi8NCiAgICBpZiAoIShk
ZXZpY2VfaW5xdWlyeShob3N0X2luZGV4LCBsZG4pKSkNCiAgICAgIHJldHVy
biAwOw0KLSAgIA0KKw0KICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopKCYo
bGQoaG9zdF9pbmRleClbbGRuXS5idWYpKTsNCiANCiAgICAvKmlmIGRldmlj
ZSBpcyBDRF9ST00sIGFzc3VtZSBibG9jayBzaXplIDIwNDggYW5kIHJldHVy
biAqLw0KQEAgLTEyNTAsNjQgKzEyNTAsNjQgQEANCiAJKmJsb2NrX2xlbmd0
aCA9IDIwNDg7IC8qIChzdGFuZGFyZCBibG9ja3NpemUgZm9yIHllbGxvdy0v
cmVkLWJvb2spICovDQogCXJldHVybiAxOw0KICAgICAgfQ0KLSAgIA0KLSAg
IGlmICgqYnVmID09IFRZUEVfV09STSkgLyogQ0QtYnVybmVyLCBXT1JNLCBM
aW51eCBoYW5kbGVzIHRoaXMgYXMgQ0QtUk9NIA0KKw0KKyAgIGlmICgqYnVm
ID09IFRZUEVfV09STSkgLyogQ0QtYnVybmVyLCBXT1JNLCBMaW51eCBoYW5k
bGVzIHRoaXMgYXMgQ0QtUk9NDQogCQkJICAgICB0aGVyZWZvcmUsIHRoZSBi
bG9ja19sZW5ndGggaXMgYWxzbyAyMDQ4LiAqLw0KICAgICAgew0KIAkqZGV2
aWNlX3R5cGUgPSBUWVBFX1dPUk07DQogCSpibG9ja19sZW5ndGggPSAyMDQ4
Ow0KIAlyZXR1cm4gMTsNCiAgICAgIH0NCi0gICANCisNCiAgICAvKiBpZiBk
ZXZpY2UgaXMgZGlzaywgdXNlICJyZWFkIGNhcGFjaXR5IiB0byBmaW5kIGl0
cyBibG9jayBzaXplICovDQogICAgaWYgKCpidWYgPT0gVFlQRV9ESVNLKQ0K
ICAgICAgew0KIAkqZGV2aWNlX3R5cGUgPSBUWVBFX0RJU0s7DQogICAgICAg
ICBpZiAocmVhZF9jYXBhY2l0eSggaG9zdF9pbmRleCwgbGRuKSkNCiAJICB7
DQotCSAgICAgKmJsb2NrX2xlbmd0aCA9ICooYnVmKzcpICsgKCooYnVmKzYp
IDw8IDgpICsgDQorCSAgICAgKmJsb2NrX2xlbmd0aCA9ICooYnVmKzcpICsg
KCooYnVmKzYpIDw8IDgpICsNCiAJICAgICAgICAgICAgICAgICAgICAoKihi
dWYrNSkgPDwgMTYpICsgKCooYnVmKzQpIDw8IDI0KTsNCiAJICAgICByZXR1
cm4gMTsNCiAJICB9DQogCWVsc2UNCiAJICByZXR1cm4gMDsNCiAgICAgIH0N
Ci0gICANCisNCiAgICAvKiBpZiB0aGlzIGlzIGEgbWFnbmV0by1vcHRpY2Fs
IGRyaXZlLCB0cmVhdCBpdCBsaWtlIGEgaGFyZGRpc2sgKi8NCiAgICBpZiAo
KmJ1ZiA9PSBUWVBFX01PRCkNCiAgICAgIHsNCiAJKmRldmljZV90eXBlID0g
VFlQRV9NT0Q7DQogICAgICAgICBpZiAocmVhZF9jYXBhY2l0eSggaG9zdF9p
bmRleCwgbGRuKSkNCiAJICB7DQotCSAgICAgKmJsb2NrX2xlbmd0aCA9ICoo
YnVmKzcpICsgKCooYnVmKzYpIDw8IDgpICsgDQorCSAgICAgKmJsb2NrX2xl
bmd0aCA9ICooYnVmKzcpICsgKCooYnVmKzYpIDw8IDgpICsNCiAJICAgICAg
ICAgICAgICAgICAgICAoKihidWYrNSkgPDwgMTYpICsgKCooYnVmKzQpIDw8
IDI0KTsNCiAJICAgICByZXR1cm4gMTsNCiAJICB9DQogCWVsc2UNCiAJICBy
ZXR1cm4gMDsNCi0gICAgIH0gICANCi0gICANCisgICAgIH0NCisNCiAgICBp
ZiAoKmJ1ZiA9PSBUWVBFX1RBUEUpIC8qIFRBUEUtZGV2aWNlIGZvdW5kICov
DQogICAgICB7DQogCSpkZXZpY2VfdHlwZSA9IFRZUEVfVEFQRTsNCiAJKmJs
b2NrX2xlbmd0aCA9IDA7IC8qIG5vdCBpbiB1c2UgKHNldHRpbmcgYnkgbXQg
YW5kIG10c3QgaW4gb3AuKSAqLw0KLQlyZXR1cm4gMTsgICANCisJcmV0dXJu
IDE7DQogICAgICB9DQotICAgDQorDQogICAgaWYgKCpidWYgPT0gVFlQRV9Q
Uk9DRVNTT1IpIC8qIEhQLVNjYW5uZXJzLCBkaXZlcnNlIFNDU0ktcHJvY2Vz
c2luZyB1bml0cyovDQogICAgICB7DQogCSpkZXZpY2VfdHlwZSA9IFRZUEVf
UFJPQ0VTU09SOw0KIAkqYmxvY2tfbGVuZ3RoID0gMDsgLyogdGhleSBzZXQg
dGhlaXIgc3R1ZmYgb24gZHJpdmVycyAqLw0KIAlyZXR1cm4gMTsNCiAgICAg
IH0NCi0gICANCisNCiAgICBpZiAoKmJ1ZiA9PSBUWVBFX1NDQU5ORVIpIC8q
IG90aGVyIFNDU0ktc2Nhbm5lcnMgKi8NCiAgICAgIHsNCiAJKmRldmljZV90
eXBlID0gVFlQRV9TQ0FOTkVSOw0KIAkqYmxvY2tfbGVuZ3RoID0gMDsgLyog
dGhleSBzZXQgdGhlaXIgc3R1ZmYgb24gZHJpdmVycyAqLw0KIAlyZXR1cm4g
MTsNCiAgICAgIH0NCi0gICANCisNCiAgICBpZiAoKmJ1ZiA9PSBUWVBFX01F
RElVTV9DSEFOR0VSKSAvKiBNZWRpdW0tQ2hhbmdlciAqLw0KICAgICAgew0K
IAkqZGV2aWNlX3R5cGUgPSBUWVBFX01FRElVTV9DSEFOR0VSOw0KQEAgLTEz
MTUsMjQgKzEzMTUsMjQgQEANCiAJCQkgICAgY2hhbmdlciBkZXZpY2UuICov
DQogCXJldHVybiAxOw0KICAgICAgfQ0KLSAgIA0KKw0KICAgIC8qIFVwIHRv
IG5vdywgbm8gU0NTSS1kZXZpY2VzIHRoYXQgYXJlIGtub3duIHVwIHRvIGtl
cm5lbCAyLjEuMzEgYXJlDQotICAgICAgaWdub3JlZCEgTU8tZHJpdmVzIGFy
ZSBub3cgc3VwcG9ydGVkIGFuZCB0cmVhdGVkIGFzIGhhcmRkaXNrLiAqLyAg
IA0KKyAgICAgIGlnbm9yZWQhIE1PLWRyaXZlcyBhcmUgbm93IHN1cHBvcnRl
ZCBhbmQgdHJlYXRlZCBhcyBoYXJkZGlzay4gKi8NCiAgICByZXR1cm4gMDsN
CiB9DQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotICAgDQor
DQogI2lmZGVmIENPTkZJR19TQ1NJX0lCTU1DQQ0KIA0KIHZvaWQgaWJtbWNh
X3Njc2lfc2V0dXAgKGNoYXIgKnN0ciwgaW50ICppbnRzKQ0KIHsNCiAgICBp
bnQgaSwgaiwgaW9fYmFzZSwgaWRfYmFzZTsNCiAgICBjaGFyICp0b2tlbjsN
Ci0gICANCisNCiAgICBpb19iYXNlID0gMDsNCiAgICBpZF9iYXNlID0gMDsN
Ci0gICANCisNCiAgICBpZiAoc3RyKQ0KICAgICAgew0KIAl0b2tlbiA9IHN0
cnRvayhzdHIsIiwiKTsNCkBAIC0xMzc2LDcgKzEzNzYsNyBAQA0KICAgICAg
fQ0KICAgIGVsc2UgaWYgKGludHMpDQogICAgICB7DQotCWZvciAoaSA9IDA7
IGkgPCBJTV9NQVhfSE9TVFMgJiYgMippKzIgPCBpbnRzWzBdOyBpKyspIA0K
Kwlmb3IgKGkgPSAwOyBpIDwgSU1fTUFYX0hPU1RTICYmIDIqaSsyIDwgaW50
c1swXTsgaSsrKQ0KIAkgIHsNCiAJICAgICBpb19wb3J0W2ldID0gaW50c1sy
KmkrMl07DQogCSAgICAgc2NzaV9pZFtpXSA9IGludHNbMippKzJdOw0KQEAg
LTEzOTUsMTYgKzEzOTUsMTYgQEANCiAgICBpbnQgbGVuLCBzcGVjaWFsOw0K
ICAgIHVuc2lnbmVkIGludCBwb3MyLCBwb3MzOw0KICAgIHN0YXRpYyB1bnNp
Z25lZCBsb25nIGZsYWdzOw0KLSAgICAgDQorDQogICAgc3Bpbl9sb2NrX2ly
cXNhdmUoJmluZm9fbG9jaywgZmxhZ3MpOw0KLSAgIA0KKw0KICAgIHNocG50
ID0gZGV2OyAvKiBhc3NpZ24gaG9zdC1zdHJ1Y3R1cmUgdG8gbG9jYWwgcG9p
bnRlciAqLw0KICAgIGxlbiA9IDA7IC8qIHNldCBmaWxsZWQgdGV4dC1idWZm
ZXIgaW5kZXggdG8gMCAqLw0KICAgIC8qIGdldCB0aGUgX3NwZWNpYWwgY29u
dGVudHMgb2YgdGhlIGhvc3RkYXRhIHN0cnVjdHVyZSAqLw0KICAgIHNwZWNp
YWwgPSAoKHN0cnVjdCBpYm1tY2FfaG9zdGRhdGEgKilzaHBudC0+aG9zdGRh
dGEpLT5fc3BlY2lhbDsNCiAgICBwb3MyID0gKChzdHJ1Y3QgaWJtbWNhX2hv
c3RkYXRhICopc2hwbnQtPmhvc3RkYXRhKS0+X3BvczI7DQogICAgcG9zMyA9
ICgoc3RydWN0IGlibW1jYV9ob3N0ZGF0YSAqKXNocG50LT5ob3N0ZGF0YSkt
Pl9wb3MzOw0KLSAgIA0KKw0KICAgIGlmIChzcGVjaWFsID09IEZPUkNFRF9E
RVRFQ1RJT04pIC8qIGZvcmNlZCBkZXRlY3Rpb24gKi8NCiAgICAgIHsNCiAJ
bGVuICs9IHNwcmludGYgKGJ1ZiArIGxlbiwgIkFkYXB0ZXIgY2F0aGVnb3J5
OiBmb3JjZWQgZGV0ZWN0ZWRcbiIpOw0KQEAgLTE0NTQsMTQgKzE0NTQsMTQg
QEANCiAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpbmZvX2xvY2ssIGZs
YWdzKTsNCiAgICByZXR1cm4gbGVuOw0KIH0NCi0gICANCisNCiBpbnQgaWJt
bWNhX2RldGVjdCAoU2NzaV9Ib3N0X1RlbXBsYXRlICogc2NzaV90ZW1wbGF0
ZSkNCiB7DQogICAgc3RydWN0IFNjc2lfSG9zdCAqc2hwbnQ7DQogICAgaW50
IHBvcnQsIGlkLCBpLCBqLCBsaXN0X3NpemUsIHNsb3Q7DQotICAgDQorDQog
ICAgZm91bmQgPSAwOyAvKiBtYWtlIGFic29sdXRlbHkgc3VyZSwgdGhhdCBm
b3VuZCBpcyBzZXQgdG8gMCAqLw0KLSAgIA0KKw0KICAgIC8qIGlmIHRoaXMg
aXMgbm90IE1DQSBtYWNoaW5lLCByZXR1cm4gIm5vdGhpbmcgZm91bmQiICov
DQogICAgaWYgKCFNQ0FfYnVzKQ0KICAgICAgew0KQEAgLTE0NzAsNyArMTQ3
MCw3IEBADQogICAgICB9DQogICAgZWxzZQ0KICAgICAgcHJpbnRrKCJJQk0g
TUNBIFNDU0k6IFZlcnNpb24gJXNcbiIsSUJNTUNBX1NDU0lfRFJJVkVSX1ZF
UlNJT04pOw0KLSAgIA0KKw0KICAgIC8qIGdldCBpbnRlcnJ1cHQgcmVxdWVz
dCBsZXZlbCAqLw0KICAgIGlmIChyZXF1ZXN0X2lycSAoSU1fSVJRLCBkb19p
bnRlcnJ1cHRfaGFuZGxlciwgU0FfU0hJUlEsICJpYm1tY2FzY3NpIiwNCiAJ
CSAgICBob3N0cykpDQpAQCAtMTQ3OCw3ICsxNDc4LDcgQEANCiAJcHJpbnRr
KCJJQk0gTUNBIFNDU0k6IFVuYWJsZSB0byBnZXQgc2hhcmVkIElSUSAlZC5c
biIsIElNX0lSUSk7DQogCXJldHVybiAwOw0KICAgICAgfQ0KLSAgIA0KKw0K
ICAgIC8qIGlmIGlibW1jYXNjc2kgc2V0dXAgb3B0aW9uIHdhcyBwYXNzZWQg
dG8ga2VybmVsLCByZXR1cm4gImZvdW5kIiAqLw0KICAgIGZvciAoaSA9IDA7
IGkgPCBJTV9NQVhfSE9TVFM7IGkrKykNCiAgICAgIGlmIChpb19wb3J0W2ld
ID4gMCAmJiBzY3NpX2lkW2ldID49IDAgJiYgc2NzaV9pZFtpXSA8IDgpDQpA
QCAtMTQ5MCwxNiArMTQ5MCwxNiBAQA0KIAkgIHsNCiAJICAgICAoKHN0cnVj
dCBpYm1tY2FfaG9zdGRhdGEgKilzaHBudC0+aG9zdGRhdGEpLT5fcG9zMiA9
IDA7DQogCSAgICAgKChzdHJ1Y3QgaWJtbWNhX2hvc3RkYXRhICopc2hwbnQt
Pmhvc3RkYXRhKS0+X3BvczMgPSAwOw0KLQkgICAgICgoc3RydWN0IGlibW1j
YV9ob3N0ZGF0YSAqKXNocG50LT5ob3N0ZGF0YSktPl9zcGVjaWFsID0gDQor
CSAgICAgKChzdHJ1Y3QgaWJtbWNhX2hvc3RkYXRhICopc2hwbnQtPmhvc3Rk
YXRhKS0+X3NwZWNpYWwgPQ0KIAkgICAgICAgRk9SQ0VEX0RFVEVDVElPTjsN
CiAJICAgICBtY2Ffc2V0X2FkYXB0ZXJfbmFtZShNQ0FfSU5URUdTQ1NJLCAi
Zm9yY2VkIGRldGVjdGVkIFNDU0kgQWRhcHRlciIpOw0KIAkgICAgIG1jYV9z
ZXRfYWRhcHRlcl9wcm9jZm4oTUNBX0lOVEVHU0NTSSwgKE1DQV9Qcm9jRm4p
IGlibW1jYV9nZXRpbmZvLA0KIAkJCQkgICAgc2hwbnQpOw0KIAkgICAgIG1j
YV9tYXJrX2FzX3VzZWQoTUNBX0lOVEVHU0NTSSk7DQotCSAgfQkNCisJICB9
DQogICAgICB9DQogICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7DQotICAg
DQorDQogICAgLyogVGhlIFBPUzItcmVnaXN0ZXIgb2YgYWxsIFBTLzIgbW9k
ZWwgU0NTSS1zdWJzeXN0ZW1zIGhhcyB0aGUgZm9sbG93aW5nDQogICAgICog
aW50ZXJwcmV0YXRpb24gb2YgYml0czoNCiAgICAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQml0IDcgLSA0IDogQ2hpcCBSZXZpc2lvbiBJRCAo
UmVsZWFzZSkNCkBAIC0xNTExLDE2ICsxNTExLDE2IEBADQogICAgICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEJpdCA0ICAgICA6IFJlc2VydmVk
ID0gMA0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXQg
MyAtIDAgOiBSZXNlcnZlZCA9IDANCiAgICAgKiAodGFrZW4gZnJvbSAiSUJN
LCBQUy8yIEhhcmR3YXJlIEludGVyZmFjZSBUZWNobmljYWwgUmVmZXJlbmNl
LCBDb21tb24NCi0gICAgKiBJbnRlcmZhY2VzICgxOTkxKSIpLiANCi0gICAg
KiBJbiBzaG9ydCB3b3JkcywgdGhpcyBtZWFucywgdGhhdCBJQk0gUFMvMiBt
YWNoaW5lcyBvbmx5IHN1cHBvcnQgDQotICAgICogMSBzaW5nbGUgc3Vic3lz
dGVtIGJ5IGRlZmF1bHQuIFRoZSBzbG90LWFkYXB0ZXJzIG11c3QgaGF2ZSBh
bm90aGVyIA0KKyAgICAqIEludGVyZmFjZXMgKDE5OTEpIikuDQorICAgICog
SW4gc2hvcnQgd29yZHMsIHRoaXMgbWVhbnMsIHRoYXQgSUJNIFBTLzIgbWFj
aGluZXMgb25seSBzdXBwb3J0DQorICAgICogMSBzaW5nbGUgc3Vic3lzdGVt
IGJ5IGRlZmF1bHQuIFRoZSBzbG90LWFkYXB0ZXJzIG11c3QgaGF2ZSBhbm90
aGVyDQogICAgICogY29uZmlndXJhdGlvbiBvbiBwb3MyLiBIZXJlLCBvbmUg
aGFzIHRvIGFzc3VtZSB0aGUgZm9sbG93aW5nDQogICAgICogdGhpbmdzIGZv
ciBQT1MyLXJlZ2lzdGVyOg0KICAgICAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCaXQgNyAtIDQgOiBDaGlwIFJldmlzaW9uIElEIChSZWxlYXNl
KQ0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXQgMyAt
IDEgOiBwb3J0IG9mZnNldCBmYWN0b3INCiAgICAgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQml0IDAgICAgIDogQ2hpcCBFbmFibGUgKEVOLVNp
Z25hbCkNCiAgICAgKiBBcyBJIGZvdW5kIGEgcGF0Y2ggaGVyZSwgc2V0dGlu
ZyB0aGUgSU8tcmVnaXN0ZXJzIHRvIDB4MzU0MCBmb3JjZWQsDQotICAgICog
YXMgdGhlcmUgd2FzIGEgMHgwNSBpbiBQT1MyIG9uIGEgbW9kZWwgNTYsIEkg
YXNzdW1lLCB0aGF0IHRoZSANCisgICAgKiBhcyB0aGVyZSB3YXMgYSAweDA1
IGluIFBPUzIgb24gYSBtb2RlbCA1NiwgSSBhc3N1bWUsIHRoYXQgdGhlDQog
ICAgICogcG9ydCAweDM1NDAgbXVzdCBiZSBmaXggZm9yIGludGVncmF0ZWQg
U0NTSS1jb250cm9sbGVycy4NCiAgICAgKiBPaywgdGhpcyBkaXNjb3Zlcnkg
bGVhZHMgdG8gdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbjogKE0uTGFu
ZykgKi8NCiANCkBAIC0xNTMzLDggKzE1MzMsOCBAQA0KIAlpZiAoKHBvc1sy
XSAmIDEpID09IDEpIC8qIGlzIHRoZSBzdWJzeXN0ZW0gY2hpcCBlbmFibGVk
ID8gKi8NCiAJICB7DQogCSAgICAgcG9ydCA9IElNX0lPX1BPUlQ7DQotCSAg
fSANCi0JZWxzZSANCisJICB9DQorCWVsc2UNCiAJICB7IC8qIGlmIGRpc2Fi
bGVkLCBubyBJUlFzIHdpbGwgYmUgZ2VuZXJhdGVkLCBhcyB0aGUgY2hpcCB3
b24ndA0KIAkgICAgICogbGlzdGVuIHRvIHRoZSBpbmNvbW1pbmcgY29tbWFu
ZHMgYW5kIHdpbGwgZG8gcmVhbGx5IG5vdGhpbmcsDQogCSAgICAgKiBleGNl
cHQgZm9yIGxpc3RlbmluZyB0byB0aGUgcG9zLXJlZ2lzdGVyIHNldHRpbmdz
LiBJZiB0aGlzDQpAQCAtMTU0NSwxMCArMTU0NSwxMCBAQA0KIAkgICAgIHBv
cnQgPSBJTV9JT19QT1JUOyAvKiBhbnl3YXksIHNldCB0aGUgcG9ydG51bWJl
ciBhbmQgd2FybiAqLw0KIAkgICAgIHByaW50aygiSUJNIE1DQSBTQ1NJOiBX
QVJOSU5HIC0gWW91ciBTQ1NJLXN1YnN5c3RlbSBpcyBkaXNhYmxlZCFcbiIp
Ow0KIAkgICAgIHByaW50aygiICAgICAgICAgICAgICBTQ1NJLW9wZXJhdGlv
bnMgbWF5IG5vdCB3b3JrLlxuIik7DQotCSAgfSAgICAgIA0KKwkgIH0NCiAJ
aWQgPSAocG9zWzNdICYgMHhlMCkgPj4gNTsgLyogdGhpcyBpcyBjb3JyZWN0
IGFuZCByZXByZXNlbnRzIHRoZSBQVU4gKi8NCi0JDQotCS8qIGdpdmUgZGV0
YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIHN1YnN5c3RlbS4gVGhpcyBoZWxw
cyBtZSANCisNCisJLyogZ2l2ZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0
aGUgc3Vic3lzdGVtLiBUaGlzIGhlbHBzIG1lDQogCSAqIGFkZGl0aW9uYWxs
eSBkdXJpbmcgZGVidWdnaW5nIGFuZCBhbmFseXppbmcgYnVnLXJlcG9ydHMu
ICovDQogCXByaW50aygiSUJNIE1DQSBTQ1NJOiBJQk0gSW50ZWdyYXRlZCBT
Q1NJIENvbnRyb2xsZXIgZm91bmQsIGlvPTB4JXgsIHNjc2kgaWQ9JWQsXG4i
LA0KIAkgICAgICAgcG9ydCwgaWQpOw0KQEAgLTE1NjIsNyArMTU2Miw3IEBA
DQogCSAgew0KIAkgICAgICgoc3RydWN0IGlibW1jYV9ob3N0ZGF0YSAqKXNo
cG50LT5ob3N0ZGF0YSktPl9wb3MyID0gcG9zWzJdOw0KIAkgICAgICgoc3Ry
dWN0IGlibW1jYV9ob3N0ZGF0YSAqKXNocG50LT5ob3N0ZGF0YSktPl9wb3Mz
ID0gcG9zWzNdOw0KLQkgICAgICgoc3RydWN0IGlibW1jYV9ob3N0ZGF0YSAq
KXNocG50LT5ob3N0ZGF0YSktPl9zcGVjaWFsID0gDQorCSAgICAgKChzdHJ1
Y3QgaWJtbWNhX2hvc3RkYXRhICopc2hwbnQtPmhvc3RkYXRhKS0+X3NwZWNp
YWwgPQ0KIAkgICAgICAgSU5URUdSQVRFRF9TQ1NJOw0KIAkgICAgIG1jYV9z
ZXRfYWRhcHRlcl9uYW1lKE1DQV9JTlRFR1NDU0ksICJJQk0gSW50ZWdyYXRl
ZCBTQ1NJIENvbnRyb2xsZXIiKTsNCiAJICAgICBtY2Ffc2V0X2FkYXB0ZXJf
cHJvY2ZuKE1DQV9JTlRFR1NDU0ksIChNQ0FfUHJvY0ZuKSBpYm1tY2FfZ2V0
aW5mbywNCkBAIC0xNTcwLDggKzE1NzAsOCBAQA0KIAkgICAgIG1jYV9tYXJr
X2FzX3VzZWQoTUNBX0lOVEVHU0NTSSk7DQogCSAgfQ0KICAgICAgfQ0KLSAg
IA0KLSAgIC8qIG5vdyBsb29rIGZvciBvdGhlciBhZGFwdGVycyBpbiBNQ0Eg
c2xvdHMsICovICAgDQorDQorICAgLyogbm93IGxvb2sgZm9yIG90aGVyIGFk
YXB0ZXJzIGluIE1DQSBzbG90cywgKi8NCiAgICAvKiBkZXRlcm1pbmUgdGhl
IG51bWJlciBvZiBrbm93biBJQk0tU0NTSS1zdWJzeXN0ZW0gdHlwZXMgKi8N
CiAgICAvKiBzZWUgdGhlIHBvc1syXSBkZXBlbmRlbmNlIHRvIGdldCB0aGUg
YWRhcHRlciBwb3J0LW9mZnNldC4gKi8NCiAgICBsaXN0X3NpemUgPSBzaXpl
b2Yoc3Vic3lzX2xpc3QpIC8gc2l6ZW9mKHN0cnVjdCBzdWJzeXNfbGlzdF9z
dHJ1Y3QpOw0KQEAgLTE1ODYsMjEgKzE1ODYsMjEgQEANCiAJICAgICBpZiAo
KHBvc1syXSAmIDEpID09IDEpIC8qIGlzIHRoZSBzdWJzeXN0ZW0gY2hpcCBl
bmFibGVkID8gKi8NCiAJICAgICAgIHsgLyogKGV4cGxhbmF0aW9ucyBzZWUg
YWJvdmUpICovDQogCQkgIHBvcnQgPSBJTV9JT19QT1JUICsgKChwb3NbMl0g
JiAweDBlKSA8PCAyKTsNCi0JICAgICAgIH0gDQotCSAgICAgZWxzZSANCisJ
ICAgICAgIH0NCisJICAgICBlbHNlDQogCSAgICAgICB7IC8qIGFueXdheSwg
c2V0IHRoZSBwb3J0bnVtYmVyIGFuZCB3YXJuICovDQotCQkgIHBvcnQgPSBJ
TV9JT19QT1JUICsgKChwb3NbMl0gJiAweDBlKSA8PCAyKTsgDQorCQkgIHBv
cnQgPSBJTV9JT19QT1JUICsgKChwb3NbMl0gJiAweDBlKSA8PCAyKTsNCiAJ
CSAgcHJpbnRrKCJJQk0gTUNBIFNDU0k6IFdBUk5JTkcgLSBZb3VyIFNDU0kt
c3Vic3lzdGVtIGlzIGRpc2FibGVkIVxuIik7DQogCQkgIHByaW50aygiICAg
ICAgICAgICAgICBTQ1NJLW9wZXJhdGlvbnMgbWF5IG5vdCB3b3JrLlxuIik7
DQotCSAgICAgICB9ICAgICAgCSAgICAgDQorCSAgICAgICB9DQogCSAgICAg
aWQgPSAocG9zWzNdICYgMHhlMCkgPj4gNTsgLyogZ2V0IHN1YnN5c3RlbSBQ
VU4gKi8NCiAJICAgICBwcmludGsoIklCTSBNQ0EgU0NTSTogJXMgZm91bmQg
aW4gc2xvdCAlZCwgaW89MHgleCwgc2NzaSBpZD0lZCxcbiIsDQogCQkgICAg
IHN1YnN5c19saXN0W2ldLmRlc2NyaXB0aW9uLCBzbG90ICsgMSwgcG9ydCwg
aWQpOw0KIAkgICAgIHByaW50aygiICAgICAgICAgICAgICBjaGlwIHJldi49
JWQsIHBvcnQtb2Zmc2V0PTB4JXgsIHN1YnN5c3RlbT0lc1xuIiwNCi0JCSAg
ICAoKHBvc1syXSAmIDB4ZjApID4+IDQpLCANCisJCSAgICAoKHBvc1syXSAm
IDB4ZjApID4+IDQpLA0KIAkJICAgICgocG9zWzJdICYgMHgwZSkgPDwgMiks
DQogCQkgICAgKHBvc1syXSAmIDEpID8gImVuYWJsZWQuIiA6ICJkaXNhYmxl
ZC4iKTsNCi0JICAgICANCisNCiAJICAgICAvKiByZWdpc3RlciB0aGUgaG9z
dGFkYXB0ZXIgKi8NCiAJICAgICBpZiAoKHNocG50ID0gaWJtbWNhX3JlZ2lz
dGVyKHNjc2lfdGVtcGxhdGUsIHBvcnQsIGlkLA0KIAkJICAgICAgICAgIHN1
YnN5c19saXN0W2ldLmRlc2NyaXB0aW9uKSkpDQpAQCAtMTYxNywxMiArMTYx
NywxMiBAQA0KIAkgICAgIHNsb3QrKzsgLyogYWR2YW5jZSB0byBuZXh0IHNs
b3QgKi8NCiAJICB9IC8qIGFkdmFuY2UgdG8gbmV4dCBhZGFwdGVyIGlkIGlu
IHRoZSBsaXN0IG9mIElCTS1TQ1NJLXN1YnN5c3RlbXMqLw0KICAgICAgfQ0K
LSAgIA0KLSAgIGlmICghZm91bmQpIA0KKw0KKyAgIGlmICghZm91bmQpDQog
ICAgICB7IC8qIG1heWJlIEVTREksIG9yIG90aGVyIHByb2R1Y2VycycgU0NT
SS1ob3N0cyAqLw0KIAlmcmVlX2lycSAoSU1fSVJRLCBob3N0cyk7DQogCXBy
aW50aygiSUJNIE1DQSBTQ1NJOiBObyBJQk0gU0NTSS1zdWJzeXN0ZW0gYWRh
cHRlciBhdHRhY2hlZC5cbiIpOw0KLSAgICAgfSAgDQorICAgICB9DQogICAg
cmV0dXJuIGZvdW5kOyAvKiByZXR1cm4gdGhlIG51bWJlciBvZiBmb3VuZCBT
Q1NJIGhvc3RzLiBTaG91bGQgYmUgMSBvciAwLiAqLw0KIH0NCiANCkBAIC0x
NjMzLDcgKzE2MzMsNyBAQA0KICAgIHN0cnVjdCBTY3NpX0hvc3QgKnNocG50
Ow0KICAgIGludCBpLCBqOw0KICAgIHVuc2lnbmVkIGludCBjdHJsOw0KLSAg
IA0KKw0KICAgIC8qIGNoZWNrIEkvTyByZWdpb24gKi8NCiAgICBpZiAoY2hl
Y2tfcmVnaW9uKHBvcnQsIElNX05fSU9fUE9SVCkpDQogICAgICB7DQpAQCAt
MTY0MSw3ICsxNjQxLDcgQEANCiAJICAgICAgIHBvcnQsIHBvcnQgKyBJTV9O
X0lPX1BPUlQgLSAxLCBJTV9OX0lPX1BPUlQpOw0KIAlyZXR1cm4gTlVMTDsN
CiAgICAgIH0NCi0gICANCisNCiAgICAvKiByZWdpc3RlciBob3N0ICovDQog
ICAgc2hwbnQgPSBzY3NpX3JlZ2lzdGVyKHNjc2lfdGVtcGxhdGUsIHNpemVv
ZihzdHJ1Y3QgaWJtbWNhX2hvc3RkYXRhKSk7DQogICAgaWYgKCFzaHBudCkN
CkBAIC0xNjQ5LDcgKzE2NDksNyBAQA0KIAlwcmludGsoIklCTSBNQ0EgU0NT
STogVW5hYmxlIHRvIHJlZ2lzdGVyIGhvc3QuXG4iKTsNCiAJcmV0dXJuIE5V
TEw7DQogICAgICB9DQotICAgDQorDQogICAgLyogcmVxdWVzdCBJL08gcmVn
aW9uICovDQogICAgcmVxdWVzdF9yZWdpb24ocG9ydCwgSU1fTl9JT19QT1JU
LCBob3N0bmFtZSk7DQogDQpAQCAtMTY3MSw3ICsxNjcxLDcgQEANCiAgICBp
ZiAoYnlwYXNzX2NvbnRyb2xsZXIpDQogICAgICBwcmludGsoIklCTSBNQ0Eg
U0NTSTogU3Vic3lzdGVtIFNDU0ktY29tbWFuZHMgZ2V0IGJ5cGFzc2VkLlxu
Iik7DQogI2VuZGlmDQotICAgDQorDQogICAgcmVzZXRfc3RhdHVzKGZvdW5k
KSA9IElNX1JFU0VUX05PVF9JTl9QUk9HUkVTUzsNCiANCiAgICBmb3IgKGkg
PSAwOyBpIDwgODsgaSsrKSAvKiByZXNldCB0aGUgdGFibGVzICovDQpAQCAt
MTY4Miw3ICsxNjgyLDcgQEANCiAgICBsb2NhbF9jaGVja2luZ19waGFzZV9m
bGFnKGZvdW5kKSA9IDE7DQogICAgY2hlY2tfZGV2aWNlcyhmb3VuZCk7IC8q
IGNhbGwgYnkgdmFsdWUsIHVzaW5nIHRoZSBnbG9iYWwgdmFyaWFibGUgaG9z
dHMqLw0KICAgIGxvY2FsX2NoZWNraW5nX3BoYXNlX2ZsYWcoZm91bmQpID0g
MDsNCi0gICANCisNCiAgICBmb3VuZCsrOyAvKiBub3cgaW5jcmVhc2UgaW5k
ZXggdG8gYmUgcHJlcGFyZWQgZm9yIG5leHQgZm91bmQgc3Vic3lzdGVtICov
DQogICAgLyogYW4gaWJtIG1jYSBzdWJzeXN0ZW0gaGFzIGJlZW4gZGV0ZWN0
ZWQgKi8NCiAgICByZXR1cm4gc2hwbnQ7DQpAQCAtMTcxMiwyMSArMTcxMiwy
MSBAQA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KIC8qIFRo
ZSBmb2xsb3dpbmcgcm91dGluZSBpcyB0aGUgU0NTSSBjb21tYW5kIHF1ZXVl
LiBUaGUgb2xkIGVkaXRpb24gaXMNCi0gICBub3cgaW1wcm92ZWQgYnkgZHlu
YW1pY2FsIHJlYXNzaWdubWVudCBvZiBsZG4gbnVtYmVycyB0aGF0IGFyZSAN
CisgICBub3cgaW1wcm92ZWQgYnkgZHluYW1pY2FsIHJlYXNzaWdubWVudCBv
ZiBsZG4gbnVtYmVycyB0aGF0IGFyZQ0KICAgIGN1cnJlbnRseSBub3QgYXNz
aWduZWQuIFRoZSBtZWNoYW5pc20gd29ya3MgaW4gYSB3YXksIHRoYXQgZmly
c3QNCiAgICB0aGUgcGh5c2ljYWwgc3RydWN0dXJlIGlzIGNoZWNrZWQuIElm
IGF0IGEgY2VydGFpbiBwdW4sbHVuIGEgZGV2aWNlDQogICAgc2hvdWxkIGJl
IHByZXNlbnQsIHRoZSByb3V0aW5lIHByb2NlZWRzIHRvIHRoZSBsZG4gY2hl
Y2sgZnJvbQ0KICAgIGdldF9sZG4uIEFuIGFuc3dlciBvZiAweGZmIHdvdWxk
IHNob3ctdXAsIHRoYXQgdGhlIGFpbWVkIGRldmljZSBpcw0KLSAgIGN1cnJl
bnRseSBub3QgYXNzaWduZWQgYW55IGxkbi4gQXQgdGhpcyBwb2ludCwgdGhl
IGR5bmFtaWNhbCANCisgICBjdXJyZW50bHkgbm90IGFzc2lnbmVkIGFueSBs
ZG4uIEF0IHRoaXMgcG9pbnQsIHRoZSBkeW5hbWljYWwNCiAgICByZW1hcHBp
bmcgYWxnb3JpdGhtIGlzIGNhbGxlZC4gSXQgd29ya3MgaW4gYSB3YXksIHRo
YXQgaXQgZ29lcyBpbg0KICAgIGN5Y2xpYyBvcmRlciB0aHJvdWdoIHRoZSBs
ZG5zIGZyb20gNyB0byAxNC4gSWYgYSBsZG4gaXMgYXNzaWduZWQsDQogICAg
aXQgdGFrZXMgOCBkeW5hbWljYWwgcmVhc3NpZ25tZW50IGNhbGxzLCB1bnRp
bCBhIGRldmljZSBsb29zZXMgaXRzDQotICAgbGRuIGFnYWluLiBXaXRoIHRo
aXMgbWV0aG9kIGl0IGlzIGFzc3VyZWQsIHRoYXQgd2hpbGUgZG9pbmcgDQor
ICAgbGRuIGFnYWluLiBXaXRoIHRoaXMgbWV0aG9kIGl0IGlzIGFzc3VyZWQs
IHRoYXQgd2hpbGUgZG9pbmcNCiAgICBpbnRlbnNlIEkvTyBiZXR3ZWVuIHVw
IHRvIGVpZ2h0IGRldmljZXMsIG5vIGR5bmFtaWNhbCByZW1hcHBpbmcgaXMN
CiAgICBkb25lIHRoZXJlLiBsZG5zIDAgdGhyb3VnaCA2KCEpIGFyZSBsZWZ0
IHVudG91Y2hlZCwgd2hpY2ggbWVhbnMsIHRoYXQNCiAgICBwdW5zIDAgdGhy
b3VnaCA3KCEpIG9uIGx1bj0wIGFyZSBhbHdheXMgYWNjZXNzaWJsZSB3aXRo
b3V0IHJlbWFwcGluZy4NCi0gICBUaGVzZSBsZG5zIGFyZSBzdGF0aWNhbGx5
IGFzc2lnbmVkIGJ5IHRoaXMgZHJpdmVyLiBUaGUgc3Vic3lzdGVtIGFsd2F5
cyANCi0gICBvY2N1cGllcyBhdCBsZWFzdCBvbmUgcHVuLCB0aGVyZWZvcmUg
NyBsZG5zIChhdCBsdW49MCkgZm9yIG90aGVyIGRldmljZXMgDQorICAgVGhl
c2UgbGRucyBhcmUgc3RhdGljYWxseSBhc3NpZ25lZCBieSB0aGlzIGRyaXZl
ci4gVGhlIHN1YnN5c3RlbSBhbHdheXMNCisgICBvY2N1cGllcyBhdCBsZWFz
dCBvbmUgcHVuLCB0aGVyZWZvcmUgNyBsZG5zIChhdCBsdW49MCkgZm9yIG90
aGVyIGRldmljZXMNCiAgICBhcmUgc3VmZmljaWVudC4gKFRoZSBhZGFwdGVy
IHVzZXMgYWx3YXlzIGxkbj0xNSwgYXQgd2hhdGV2ZXIgcHVuIGl0IGlzLikg
Ki8NCiBpbnQgaWJtbWNhX3F1ZXVlY29tbWFuZCAoU2NzaV9DbW5kICogY21k
LCB2b2lkICgqZG9uZSkgKFNjc2lfQ21uZCAqKSkNCiB7DQpAQCAtMTczOCwy
NCArMTczOCwyNCBAQA0KICAgIGludCBpZCxsdW47DQogICAgaW50IHRhcmdl
dDsNCiAgICBpbnQgaG9zdF9pbmRleDsNCi0gICANCisNCiAgICBpZiAoaWJt
X2Fuc2lfb3JkZXIpDQogICAgICB0YXJnZXQgPSA2IC0gY21kLT50YXJnZXQ7
DQogICAgZWxzZQ0KICAgICAgdGFyZ2V0ID0gY21kLT50YXJnZXQ7DQotICAg
DQorDQogICAgc2hwbnQgPSBjbWQtPmhvc3Q7DQotICAgDQorDQogICAgLyog
c2VhcmNoIGZvciB0aGUgcmlnaHQgaG9zdGFkYXB0ZXIgKi8NCiAgICBmb3Ig
KGhvc3RfaW5kZXggPSAwOyBob3N0c1tob3N0X2luZGV4XSAmJiBob3N0c1to
b3N0X2luZGV4XS0+aG9zdF9ubyAhPSBzaHBudC0+aG9zdF9ubzsgaG9zdF9p
bmRleCsrKTsNCi0gICANCisNCiAgICBpZiAoIWhvc3RzW2hvc3RfaW5kZXhd
KQ0KICAgICAgeyAvKiBpbnZhbGlkIGhvc3RhZGFwdGVyIGRlc2NyaXB0b3Ig
YWRkcmVzcyAqLw0KIAljbWQtPnJlc3VsdCA9IERJRF9OT19DT05ORUNUIDw8
IDE2Ow0KIAlkb25lIChjbWQpOw0KIAlyZXR1cm4gMDsNCiAgICAgIH0NCi0g
ICANCisNCiAgICAvKmlmICh0YXJnZXQsbHVuKSBpcyBOTyBMVU4gb3Igbm90
IGV4aXN0aW5nIGF0IGFsbCwgcmV0dXJuIGVycm9yICovDQogICAgaWYgKChn
ZXRfc2NzaShob3N0X2luZGV4KVt0YXJnZXRdW2NtZC0+bHVuXSA9PSBUWVBF
X05PX0xVTil8fA0KICAgICAgICAoZ2V0X3Njc2koaG9zdF9pbmRleClbdGFy
Z2V0XVtjbWQtPmx1bl0gPT0gVFlQRV9OT19ERVZJQ0UpKQ0KQEAgLTE3NjQs
NyArMTc2NCw3IEBADQogCWRvbmUgKGNtZCk7DQogCXJldHVybiAwOw0KICAg
ICAgfQ0KLSAgIA0KKw0KICAgIC8qaWYgKHRhcmdldCxsdW4pIHVuYXNzaWdu
ZWQsIGRvIGZ1cnRoZXIgY2hlY2tzLi4uICovDQogICAgbGRuID0gZ2V0X2xk
bihob3N0X2luZGV4KVt0YXJnZXRdW2NtZC0+bHVuXTsNCiAgICBpZiAobGRu
ID49IE1BWF9MT0dfREVWKSAvKiBvbiBpbnZhbGlkIGxkbiBkbyBzcGVjaWFs
IHN0dWZmICovDQpAQCAtMTc3NSw3ICsxNzc1LDcgQEANCiAJICAgICB3aGls
ZSAobGQoaG9zdF9pbmRleClbbmV4dF9sZG4oaG9zdF9pbmRleCldLmNtZCkg
Lyogc2VhcmNoIGZvciBhIG9jY3VwaWVkLCBidXQgbm90IGluICovDQogCSAg
ICAgICB7ICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbW1hbmQtcHJvY2Vz
c2luZyBsZG4uICovDQogCQkgIG5leHRfbGRuKGhvc3RfaW5kZXgpKys7DQot
CQkgIGlmIChuZXh0X2xkbihob3N0X2luZGV4KT49TUFYX0xPR19ERVYpIA0K
KwkJICBpZiAobmV4dF9sZG4oaG9zdF9pbmRleCk+PU1BWF9MT0dfREVWKQ0K
IAkJICAgIG5leHRfbGRuKGhvc3RfaW5kZXgpID0gNzsNCiAJCSAgaWYgKGN1
cnJlbnRfbGRuID09IG5leHRfbGRuKGhvc3RfaW5kZXgpKSAvKiBPbmUgY2ly
Y2xlIGRvbmUgPyAqLw0KIAkJICAgIHsgICAgICAgICAvKiBubyBub24tcHJv
Y2Vzc2luZyBsZG4gZm91bmQgKi8NCkBAIC0xNzg4LDE0ICsxNzg4LDE0IEBA
DQogCQkgICAgICAgcmV0dXJuIDA7DQogCQkgICAgfQ0KIAkgICAgICAgfQ0K
LQkgICAgIA0KKw0KIAkgICAgIC8qIHVubWFwIG5vbi1wcm9jZXNzaW5nIGxk
biAqLw0KIAkgICAgIGZvciAoaWQ9MDsgaWQ8ODsgaWQgKyspDQogCSAgICAg
ICBmb3IgKGx1bj0wOyBsdW48ODsgbHVuKyspDQogCSAgICAgICB7DQogCQkg
IGlmIChnZXRfbGRuKGhvc3RfaW5kZXgpW2lkXVtsdW5dID09IG5leHRfbGRu
KGhvc3RfaW5kZXgpKQ0KIAkJICAgIHsNCi0JCSAgICAgICBnZXRfbGRuKGhv
c3RfaW5kZXgpW2lkXVtsdW5dID0gVFlQRV9OT19ERVZJQ0U7IA0KKwkJICAg
ICAgIGdldF9sZG4oaG9zdF9pbmRleClbaWRdW2x1bl0gPSBUWVBFX05PX0RF
VklDRTsNCiAJCSAgICAgICAvKiB1bm1hcCBlbnRyeSAqLw0KIAkJICAgIH0N
CiAJICAgICAgIH0NCkBAIC0xODEwLDUyICsxODEwLDUyIEBADQogCSAgICAg
LyogY2hhbmdlIGxkbiB0byB0aGUgcmlnaHQgdmFsdWUsIHRoYXQgaXMgbm93
IG5leHRfbGRuICovDQogCSAgICAgbGRuID0gbmV4dF9sZG4oaG9zdF9pbmRl
eCk7DQogCSAgICAgLyogZ2V0IGRldmljZSBpbmZvcm1hdGlvbiBmb3IgbGRb
bGRuXSAqLw0KLQkgICAgIGlmIChkZXZpY2VfZXhpc3RzIChob3N0X2luZGV4
LCBsZG4sIA0KKwkgICAgIGlmIChkZXZpY2VfZXhpc3RzIChob3N0X2luZGV4
LCBsZG4sDQogCQkJCSZsZChob3N0X2luZGV4KVtsZG5dLmJsb2NrX2xlbmd0
aCwNCiAJCQkJJmxkKGhvc3RfaW5kZXgpW2xkbl0uZGV2aWNlX3R5cGUpKQ0K
IAkgICAgICAgew0KIAkJICBsZChob3N0X2luZGV4KVtsZG5dLmNtZCA9IDA7
IC8qIFRvIHByZXZlbnQgcGFuaWMgc2V0IDAsIGJlY2F1c2UNCiAJCQkJCQlk
ZXZpY2VzIHRoYXQgd2VyZSBub3QgYXNzaWduZWQsDQogCQkJCQkJc2hvdWxk
IGhhdmUgbm90aGluZyBpbiBwcm9ncmVzcy4gKi8NCi0JCSAgDQorDQogCQkg
IC8qIGluY3JlYXNlIGFzc2lnbm1lbnQgY291bnRlcnMgZm9yIHN0YXRpc3Rp
Y3MgaW4gL3Byb2MgKi8NCiAJCSAgSUJNX0RTKGhvc3RfaW5kZXgpLmR5bmFt
aWNhbF9hc3NpZ25tZW50cysrOw0KIAkJICBJQk1fRFMoaG9zdF9pbmRleCku
bGRuX2Fzc2lnbm1lbnRzW2xkbl0rKzsNCiAJICAgICAgIH0NCiAJICAgICBl
bHNlDQotCSAgICAgICAvKiBwYW5pYyBoZXJlLCBiZWNhdXNlIGEgZGV2aWNl
LCBmb3VuZCBhdCBib290dGltZSBoYXMgDQorCSAgICAgICAvKiBwYW5pYyBo
ZXJlLCBiZWNhdXNlIGEgZGV2aWNlLCBmb3VuZCBhdCBib290dGltZSBoYXMN
CiAJCXZhbmlzaGVkICovDQogCSAgICAgICBwYW5pYygiSUJNIE1DQSBTQ1NJ
OiBsZG49MHgleCwgU0NTSS1kZXZpY2Ugb24gKCVkLCVkKSB2YW5pc2hlZCFc
biIsDQogCQkgICAgIGxkbiwgdGFyZ2V0LCBjbWQtPmx1bik7DQotCSAgICAg
DQorDQogCSAgICAgLyogc2V0IGJhY2sgdG8gbm9ybWFsIGludGVycnVwdF9o
YW5kbGluZyAqLw0KIAkgICAgIGxvY2FsX2NoZWNraW5nX3BoYXNlX2ZsYWco
aG9zdF9pbmRleCkgPSAwOw0KLQkgICAgIA0KKw0KIAkgICAgIC8qIEluZm9y
bWF0aW9uIG9uIHN5c2xvZyB0ZXJtaW5hbCAqLw0KIAkgICAgIHByaW50aygi
SUJNIE1DQSBTQ1NJOiBsZG49MHgleCBkeW5hbWljYWxseSByZWFzc2lnbmVk
IHRvICglZCwlZCkuXG4iLA0KIAkJICAgIGxkbiwgdGFyZ2V0LCBjbWQtPmx1
bik7DQotCSAgICAgDQotCSAgICAgLyogaW5jcmVhc2UgbmV4dF9sZG4gZm9y
IG5leHQgZHluYW1pY2FsIGFzc2lnbm1lbnQgKi8gDQorDQorCSAgICAgLyog
aW5jcmVhc2UgbmV4dF9sZG4gZm9yIG5leHQgZHluYW1pY2FsIGFzc2lnbm1l
bnQgKi8NCiAJICAgICBuZXh0X2xkbihob3N0X2luZGV4KSsrOw0KLQkgICAg
IGlmIChuZXh0X2xkbihob3N0X2luZGV4KT49TUFYX0xPR19ERVYpIA0KKwkg
ICAgIGlmIChuZXh0X2xkbihob3N0X2luZGV4KT49TUFYX0xPR19ERVYpDQog
CSAgICAgICBuZXh0X2xkbihob3N0X2luZGV4KSA9IDc7DQotCSAgfSAgICAg
ICANCisJICB9DQogCWVsc2UNCi0JICB7ICAvKiB3YWxsIGFnYWluc3QgTGlu
dXggYWNjZXNzZXMgdG8gdGhlIHN1YnN5c3RlbSBhZGFwdGVyICovCSANCisJ
ICB7ICAvKiB3YWxsIGFnYWluc3QgTGludXggYWNjZXNzZXMgdG8gdGhlIHN1
YnN5c3RlbSBhZGFwdGVyICovDQogCSAgICAgY21kLT5yZXN1bHQgPSBESURf
QkFEX1RBUkdFVCA8PCAxNjsNCiAJICAgICBkb25lIChjbWQpOw0KIAkgICAg
IHJldHVybiAwOw0KIAkgIH0NCiAgICAgIH0NCi0gICANCisNCiAgICAvKnZl
cmlmeSB0aGVyZSBpcyBubyBjb21tYW5kIGFscmVhZHkgaW4gcHJvZ3Jlc3Mg
Zm9yIHRoaXMgbG9nIGRldiAqLw0KICAgIGlmIChsZChob3N0X2luZGV4KVts
ZG5dLmNtZCkNCiAgICAgIHBhbmljICgiSUJNIE1DQSBTQ1NJOiBjbWQgYWxy
ZWFkeSBpbiBwcm9ncmVzcyBmb3IgdGhpcyBsZG4uXG4iKTsNCi0gICANCisN
CiAgICAvKnNhdmUgZG9uZSBpbiBjbWQsIGFuZCBzYXZlIGNtZCBmb3IgdGhl
IGludGVycnVwdCBoYW5kbGVyICovDQogICAgY21kLT5zY3NpX2RvbmUgPSBk
b25lOw0KICAgIGxkKGhvc3RfaW5kZXgpW2xkbl0uY21kID0gY21kOw0KLSAg
IA0KKw0KICAgIC8qZmlsbCBzY2IgaW5mb3JtYXRpb24gaW5kZXBlbmRlbnQg
b2YgdGhlIHNjc2kgY29tbWFuZCAqLw0KICAgIHNjYiA9ICYobGQoaG9zdF9p
bmRleClbbGRuXS5zY2IpOw0KICAgIGxkKGhvc3RfaW5kZXgpW2xkbl0udHNi
LmRldl9zdGF0dXMgPSAwOw0KQEAgLTE4ODEsMjkgKzE4ODEsMjkgQEANCiAJ
c2NiLT5zeXNfYnVmX2FkciA9IHZpcnRfdG9fYnVzKGNtZC0+cmVxdWVzdF9i
dWZmZXIpOw0KIAlzY2ItPnN5c19idWZfbGVuZ3RoID0gY21kLT5yZXF1ZXN0
X2J1ZmZsZW47DQogICAgICB9DQotICAgDQorDQogICAgLypmaWxsIHNjYiBp
bmZvcm1hdGlvbiBkZXBlbmRlbnQgb24gc2NzaSBjb21tYW5kICovDQogICAg
c2NzaV9jbWQgPSBjbWQtPmNtbmRbMF07DQotICAgDQorDQogI2lmZGVmIElN
X0RFQlVHX0NNRA0KICAgIHByaW50aygiaXNzdWUgc2NzaSBjbWQ9JTAyeCB0
byBsZG49JWRcbiIsIHNjc2lfY21kLCBsZG4pOw0KICNlbmRpZg0KLSAgIA0K
Kw0KICAgIC8qIGZvciBzcGVjaWZpYyBkZXZpY2UtdHlwZSBkZWJ1Z2dpbmc6
ICovDQogI2lmZGVmIElNX0RFQlVHX0NNRF9TUEVDX0RFVg0KICAgIGlmIChs
ZChob3N0X2luZGV4KVtsZG5dLmRldmljZV90eXBlPT1JTV9ERUJVR19DTURf
REVWSUNFKQ0KLSAgICAgcHJpbnRrKCIoU0NTSS1kZXZpY2UtdHlwZT0weCV4
KSBpc3N1ZSBzY3NpIGNtZD0lMDJ4IHRvIGxkbj0lZFxuIiwgDQorICAgICBw
cmludGsoIihTQ1NJLWRldmljZS10eXBlPTB4JXgpIGlzc3VlIHNjc2kgY21k
PSUwMnggdG8gbGRuPSVkXG4iLA0KIAkgICAgbGQoaG9zdF9pbmRleClbbGRu
XS5kZXZpY2VfdHlwZSwgc2NzaV9jbWQsIGxkbik7DQogI2VuZGlmDQotICAg
DQorDQogICAgLyogZm9yIHBvc3NpYmxlIHBhbmljcyBzdG9yZSBjdXJyZW50
IGNvbW1hbmQgKi8NCi0gICBsYXN0X3Njc2lfY29tbWFuZChob3N0X2luZGV4
KVtsZG5dID0gc2NzaV9jbWQ7IA0KKyAgIGxhc3Rfc2NzaV9jb21tYW5kKGhv
c3RfaW5kZXgpW2xkbl0gPSBzY3NpX2NtZDsNCiAgICBsYXN0X3Njc2lfdHlw
ZShob3N0X2luZGV4KVtsZG5dID0gSU1fU0NCOw0KLSAgIA0KKw0KICAgIC8q
IHVwZGF0ZSBzdGF0aXN0aWNhbCBpbmZvICovDQogICAgSUJNX0RTKGhvc3Rf
aW5kZXgpLnRvdGFsX2FjY2Vzc2VzKys7DQogICAgSUJNX0RTKGhvc3RfaW5k
ZXgpLmxkbl9hY2Nlc3NbbGRuXSsrOw0KLSAgIA0KKw0KICAgIHN3aXRjaCAo
c2NzaV9jbWQpDQogICAgICB7DQogICAgICAgY2FzZSBSRUFEXzY6DQpAQCAt
MTkxMSwyMyArMTkxMSwyMyBAQA0KICAgICAgIGNhc2UgUkVBRF8xMDoNCiAg
ICAgICBjYXNlIFdSSVRFXzEwOg0KICAgICAgIGNhc2UgUkVBRF8xMjoNCi0g
ICAgICBjYXNlIFdSSVRFXzEyOiAgICAgICANCisgICAgICBjYXNlIFdSSVRF
XzEyOg0KIAkvKiBzdGF0aXN0aWNzIGZvciBwcm9jX2luZm8gKi8NCiAJaWYg
KChzY3NpX2NtZCA9PSBSRUFEXzYpfHwoc2NzaV9jbWQgPT0gUkVBRF8xMCl8
fChzY3NpX2NtZCA9PSBSRUFEXzEyKSkNCiAJICBJQk1fRFMoaG9zdF9pbmRl
eCkubGRuX3JlYWRfYWNjZXNzW2xkbl0rKzsgLyogaW5jcmVhc2UgUkVBRC1h
Y2Nlc3Mgb24gbGRuIHN0YXQuICovDQogCWVsc2UgaWYgKChzY3NpX2NtZCA9
PSBXUklURV82KXx8KHNjc2lfY21kID09IFdSSVRFXzEwKXx8DQogCQkgKHNj
c2lfY21kID09IFdSSVRFXzEyKSkNCiAJICBJQk1fRFMoaG9zdF9pbmRleCku
bGRuX3dyaXRlX2FjY2Vzc1tsZG5dKys7IC8qIGluY3JlYXNlIHdyaXRlLWNv
dW50IG9uIGxkbiBzdGF0LiovDQotCQ0KKw0KIAkvKiBEaXN0aW5ndWlzaCBi
ZXR3ZWVuIGRpc2sgYW5kIG90aGVyIGRldmljZXMuIE9ubHkgZGlza3MgKHRo
YXQgYXJlIHRoZQ0KLQkgICBtb3N0IGZyZXF1ZW50bHkgYWNjZXNzZWQgZGV2
aWNlcykgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSB0aGUgDQorCSAgIG1vc3Qg
ZnJlcXVlbnRseSBhY2Nlc3NlZCBkZXZpY2VzKSBzaG91bGQgYmUgc3VwcG9y
dGVkIGJ5IHRoZQ0KICAgICAgICAgIElCTS1TQ1NJLVN1YnN5c3RlbSBjb21t
YW5kcy4gKi8NCiAJc3dpdGNoIChsZChob3N0X2luZGV4KVtsZG5dLmRldmlj
ZV90eXBlKQ0KIAkgIHsNCiAJICAgY2FzZSBUWVBFX0RJU0s6IC8qIGZvciBo
YXJkZGlza3MgZW50ZXIgaGVyZSAuLi4gKi8NCiAJICAgY2FzZSBUWVBFX01P
RDogIC8qIC4uLiB0cnkgaXQgYWxzbyBmb3IgTU8tZHJpdmVzIChzZW5kIGZs
YW1lcyBhcyAqLw0KIAkgICAgICAgICAgICAgICAgICAgLyogICAgIHlvdSBs
aWtlLCBpZiB0aGlzIHdvbid0IHdvcmsuKSAqLw0KLQkgICAgIGlmIChzY3Np
X2NtZCA9PSBSRUFEXzYgfHwgc2NzaV9jbWQgPT0gUkVBRF8xMCB8fCANCisJ
ICAgICBpZiAoc2NzaV9jbWQgPT0gUkVBRF82IHx8IHNjc2lfY21kID09IFJF
QURfMTAgfHwNCiAJCSBzY3NpX2NtZCA9PSBSRUFEXzEyKQ0KIAkgICAgICAg
eyAvKiByZWFkIGNvbW1hbmQgcHJlcGFyYXRpb25zICovDQogCQkgIGlmIChi
eXBhc3NfY29udHJvbGxlcikNCkBAIC0xOTUyLDEzICsxOTUyLDEzIEBADQog
CQkgICAgICAgbWVtY3B5KHNjYi0+dTIuc2NzaV9jb21tYW5kLGNtZC0+Y21u
ZCxjbWQtPmNtZF9sZW4pOw0KIAkJICAgIH0NCiAJCSAgZWxzZQ0KLQkJICAg
IHsgDQorCQkgICAgew0KIAkJICAgICAgIHNjYi0+Y29tbWFuZCA9IElNX1dS
SVRFX0RBVEFfQ01EOw0KIAkJICAgIH0NCiAJICAgICAgIH0NCi0JICAgICAN
CisNCiAJICAgICBpZiAoIWJ5cGFzc19jb250cm9sbGVyKQ0KLQkgICAgICAg
ewkJIA0KKwkgICAgICAgew0KIAkJICBpZiAoc2NzaV9jbWQgPT0gUkVBRF82
IHx8IHNjc2lfY21kID09IFdSSVRFXzYpDQogCQkgICAgew0KIAkJICAgICAg
IHNjYi0+dTEubG9nX2Jsa19hZHIgPSAoKCh1bnNpZ25lZCkgY21kLT5jbW5k
WzNdKSA8PCAwKSB8DQpAQCAtMTk3NiwxMSArMTk3NiwxMSBAQA0KIAkJCSAo
KCh1bnNpZ25lZCkgY21kLT5jbW5kWzddKSA8PCA4KTsNCiAJCSAgICB9DQog
CQkgIHNjYi0+dTIuYmxrLmxlbmd0aCA9IGxkKGhvc3RfaW5kZXgpW2xkbl0u
YmxvY2tfbGVuZ3RoOw0KLQkgICAgICAgfQkgICAgDQorCSAgICAgICB9DQog
CSAgICAgaWYgKCsrZGlza19yd19pbl9wcm9ncmVzcyA9PSAxKQ0KIAkgICAg
ICAgUFMyX0RJU0tfTEVEX09OIChzaHBudC0+aG9zdF9ubywgdGFyZ2V0KTsN
CiAJICAgICBicmVhazsNCi0JICAgICANCisNCiAJICAgICAvKiBmb3Igb3Ro
ZXIgZGV2aWNlcywgZW50ZXIgaGVyZS4gT3RoZXIgdHlwZXMgYXJlIG5vdCBr
bm93biBieQ0KIAkgICAgICBMaW51eCEgVFlQRV9OT19MVU4gaXMgZm9yYmlk
ZGVuIGFzIHZhbGlkIGRldmljZS4gKi8NCiAJICAgY2FzZSBUWVBFX1JPTToN
CkBAIC0xOTg5LDI5ICsxOTg5LDI5IEBADQogCSAgIGNhc2UgVFlQRV9XT1JN
Og0KIAkgICBjYXNlIFRZUEVfU0NBTk5FUjoNCiAJICAgY2FzZSBUWVBFX01F
RElVTV9DSEFOR0VSOg0KLQkgICAgIA0KKw0KIAkgICAgIC8qIElmIHRoZXJl
IGlzIGEgc2VxdWVudGlhbC1kZXZpY2UsIElCTSByZWNvbW1lbmRzIHRvIHVz
ZQ0KLQkgICAgICBJTV9PVEhFUl9TQ1NJX0NNRF9DTUQgaW5zdGVhZCBvZiBz
dWJzeXN0ZW0gUkVBRC9XUklURS4gDQorCSAgICAgIElNX09USEVSX1NDU0lf
Q01EX0NNRCBpbnN0ZWFkIG9mIHN1YnN5c3RlbSBSRUFEL1dSSVRFLg0KIAkg
ICAgICBHb29kL21vZGVybiBDRC1ST00tZHJpdmVzIGFyZSBjYXBhYmxlIG9m
DQogCSAgICAgIHJlYWRpbmcgc2VxdWVudGlhbCBBTkQgcmFuZG9tLWFjY2Vz
cy4gVGhpcyBsZWFkcyB0byB0aGUgcHJvYmxlbSwNCi0JICAgICAgdGhhdCBy
YW5kb20tYWNjZXNzZXMgYXJlIGNvdmVyZWQgYnkgdGhlIHN1YnN5c3RlbSwg
YnV0IA0KKwkgICAgICB0aGF0IHJhbmRvbS1hY2Nlc3NlcyBhcmUgY292ZXJl
ZCBieSB0aGUgc3Vic3lzdGVtLCBidXQNCiAJICAgICAgc2VxdWVudGlhbHMg
YXJlIG5vdCwgYXMgbGlrZSBmb3IgdGFwZS1kcml2ZXMuIFRoZXJlZm9yZSwg
aXQgaXMNCiAJICAgICAgdGhlIGVhc2llc3Qgd2F5IHRvIHVzZSBJTV9PVEhF
Ul9TQ1NJX0NNRF9DTUQgZm9yIGFsbCByZWFkLW9wcw0KIAkgICAgICBvbiBD
RC1ST00tZHJpdmVzIGluIG9yZGVyIG5vdCB0byBydW4gaW50byB0aW1pbmcg
cHJvYmxlbXMgYW5kDQogCSAgICAgIHRvIGhhdmUgYSBzdGFibGUgc3RhdGUu
IEluIGFkZGl0aW9uLCBkYXRhLWFjY2VzcyBvbiBDRC1ST01zDQogCSAgICAg
IHdvcmtzIGZhc3RlciBsaWtlIHRoYXQuIFN0cmFuZ2UsIGJ1dCBvYnZpb3Vz
LiAqLw0KLQkgICAgDQorDQogCSAgICAgc2NiLT5jb21tYW5kID0gSU1fT1RI
RVJfU0NTSV9DTURfQ01EOw0KLQkgICAgIGlmIChzY3NpX2NtZCA9PSBSRUFE
XzYgfHwgc2NzaV9jbWQgPT0gUkVBRF8xMCB8fCANCisJICAgICBpZiAoc2Nz
aV9jbWQgPT0gUkVBRF82IHx8IHNjc2lfY21kID09IFJFQURfMTAgfHwNCiAJ
CSBzY3NpX2NtZCA9PSBSRUFEXzEyKSAvKiBlbmFibGUgUkVBRCAqLw0KIAkg
ICAgICAgew0KIAkJICBzY2ItPmVuYWJsZSB8PSBJTV9SRUFEX0NPTlRST0w7
DQogCSAgICAgICB9DQotCSAgICAgDQorDQogCSAgICAgc2NiLT51MS5zY3Np
X2NtZF9sZW5ndGggPSBjbWQtPmNtZF9sZW47DQogCSAgICAgbWVtY3B5IChz
Y2ItPnUyLnNjc2lfY29tbWFuZCwgY21kLT5jbW5kLCBjbWQtPmNtZF9sZW4p
Ow0KLQkgICAgIA0KLQkgICAgIC8qIFJlYWQvd3JpdGUgb24gdGhpcyBub24t
ZGlzayBkZXZpY2VzIGlzIGFsc28gZGlzcGxheXdvcnRoeSwgDQorDQorCSAg
ICAgLyogUmVhZC93cml0ZSBvbiB0aGlzIG5vbi1kaXNrIGRldmljZXMgaXMg
YWxzbyBkaXNwbGF5d29ydGh5LA0KIAkgICAgICBzbyBmbGFzaC11cCB0aGUg
TEVEL2Rpc3BsYXkuICovDQogCSAgICAgaWYgKCsrZGlza19yd19pbl9wcm9n
cmVzcyA9PSAxKQ0KIAkgICAgICAgUFMyX0RJU0tfTEVEX09OIChzaHBudC0+
aG9zdF9ubywgdGFyZ2V0KTsNCkBAIC0yMDMyLDcgKzIwMzIsNyBAQA0KIAkg
ICAgIHNjYi0+Y29tbWFuZCA9IElNX0RFVklDRV9JTlFVSVJZX0NNRDsNCiAJ
ICAgICBzY2ItPmVuYWJsZSB8PSBJTV9SRUFEX0NPTlRST0wgfCBJTV9TVVBS
RVNTX0VYQ0VQVElPTl9TSE9SVDsNCiAJICB9DQotCWJyZWFrOwkNCisJYnJl
YWs7DQogDQogICAgICAgY2FzZSBSRUFEX0NBUEFDSVRZOg0KIAkvKiB0aGUg
bGVuZ3RoIG9mIHN5c3RlbSBtZW1vcnkgYnVmZmVyIG11c3QgYmUgZXhhY3Rs
eSA4IGJ5dGVzICovDQpAQCAtMjA0Myw3ICsyMDQzLDcgQEANCiAJICAgICBz
Y2ItPmNvbW1hbmQgPSBJTV9PVEhFUl9TQ1NJX0NNRF9DTUQ7DQogCSAgICAg
c2NiLT5lbmFibGUgfD0gSU1fUkVBRF9DT05UUk9MOw0KIAkgICAgIHNjYi0+
dTEuc2NzaV9jbWRfbGVuZ3RoID0gY21kLT5jbWRfbGVuOw0KLQkgICAgIG1l
bWNweSAoc2NiLT51Mi5zY3NpX2NvbW1hbmQsIGNtZC0+Y21uZCwgY21kLT5j
bWRfbGVuKTsJICAgICANCisJICAgICBtZW1jcHkgKHNjYi0+dTIuc2NzaV9j
b21tYW5kLCBjbWQtPmNtbmQsIGNtZC0+Y21kX2xlbik7DQogCSAgfQ0KIAll
bHNlDQogCSAgew0KQEAgLTIwNTEsNyArMjA1MSw3IEBADQogCSAgICAgc2Ni
LT5lbmFibGUgfD0gSU1fUkVBRF9DT05UUk9MOw0KIAkgIH0NCiAJYnJlYWs7
DQotCQ0KKw0KIAkvKiBDb21tYW5kcyB0aGF0IG5lZWQgcmVhZC1vbmx5LW1v
ZGUgKHN5c3RlbSA8LSBkZXZpY2UpOiAqLw0KICAgICAgIGNhc2UgUkVRVUVT
VF9TRU5TRToNCiAJaWYgKGJ5cGFzc19jb250cm9sbGVyKQ0KQEAgLTIwNjcs
MTggKzIwNjcsMTggQEANCiAJICAgICBzY2ItPmVuYWJsZSB8PSBJTV9SRUFE
X0NPTlRST0w7DQogCSAgfQ0KIAlicmVhazsNCi0JDQorDQogCS8qIENvbW1h
bmRzIHRoYXQgbmVlZCB3cml0ZS1vbmx5LW1vZGUgKHN5c3RlbSAtPiBkZXZp
Y2UpOiAqLw0KICAgICAgIGNhc2UgTU9ERV9TRUxFQ1Q6DQogICAgICAgY2Fz
ZSBNT0RFX1NFTEVDVF8xMDoNCiAJSUJNX0RTKGhvc3RfaW5kZXgpLmxkbl9t
b2Rlc2VsZWN0X2FjY2Vzc1tsZG5dKys7DQotCXNjYi0+Y29tbWFuZCA9IElN
X09USEVSX1NDU0lfQ01EX0NNRDsgICAgICANCisJc2NiLT5jb21tYW5kID0g
SU1fT1RIRVJfU0NTSV9DTURfQ01EOw0KIAlzY2ItPmVuYWJsZSB8PSBJTV9T
VVBSRVNTX0VYQ0VQVElPTl9TSE9SVDsgLypTZWxlY3QgbmVlZHMgV1JJVEUt
ZW5hYmxlZCovDQogCXNjYi0+dTEuc2NzaV9jbWRfbGVuZ3RoID0gY21kLT5j
bWRfbGVuOw0KIAltZW1jcHkgKHNjYi0+dTIuc2NzaV9jb21tYW5kLCBjbWQt
PmNtbmQsIGNtZC0+Y21kX2xlbik7DQogCWJyZWFrOw0KLQkNCi0JLyogRm9y
IG90aGVyIGNvbW1hbmRzLCByZWFkLW9ubHkgaXMgdXNlZnVsLiBNb3N0IG90
aGVyIGNvbW1hbmRzIGFyZSANCisNCisJLyogRm9yIG90aGVyIGNvbW1hbmRz
LCByZWFkLW9ubHkgaXMgdXNlZnVsLiBNb3N0IG90aGVyIGNvbW1hbmRzIGFy
ZQ0KIAkgcnVubmluZyB3aXRob3V0IGFuIGlucHV0LWRhdGEtYmxvY2suICov
DQogICAgICAgZGVmYXVsdDoNCiAJc2NiLT5jb21tYW5kID0gSU1fT1RIRVJf
U0NTSV9DTURfQ01EOw0KQEAgLTIwODcsNyArMjA4Nyw3IEBADQogCW1lbWNw
eSAoc2NiLT51Mi5zY3NpX2NvbW1hbmQsIGNtZC0+Y21uZCwgY21kLT5jbWRf
bGVuKTsNCiAJYnJlYWs7DQogICAgICB9DQotICAgDQorDQogICAgLyppc3N1
ZSBzY2IgY29tbWFuZCwgYW5kIHJldHVybiAqLw0KICAgIGlzc3VlX2NtZCAo
aG9zdF9pbmRleCwgdmlydF90b19idXMoc2NiKSwgSU1fU0NCIHwgbGRuKTsN
CiAgICByZXR1cm4gMDsNCkBAIC0yMTAwLDcgKzIxMDAsNyBAQA0KICAgIC8q
IEFib3J0IGRvZXMgbm90IHdvcmssIGFzIHRoZSBhZGFwdGVyIG5ldmVyIGdl
bmVyYXRlcyBhbiBpbnRlcnJ1cHQgb24NCiAgICAgKiB3aGF0ZXZlciBzaXR1
YXRpb24gaXMgc2ltdWxhdGVkLCBldmVuIHdoZW4gcmVhbGx5IHBlbmRpbmcg
Y29tbWFuZHMNCiAgICAgKiBhcmUgcnVubmluZyBvbiB0aGUgYWRhcHRlcnMn
IGhhcmR3YXJlICEgKi8NCi0gICANCisNCiAgICBzdHJ1Y3QgU2NzaV9Ib3N0
ICpzaHBudDsNCiAgICB1bnNpZ25lZCBpbnQgbGRuOw0KICAgIHZvaWQgKCpz
YXZlZF9kb25lKSAoU2NzaV9DbW5kICopOw0KQEAgLTIxMTYsMTIgKzIxMTYs
MTIgQEANCiAgICAgIHRhcmdldCA9IDYgLSBjbWQtPnRhcmdldDsNCiAgICBl
bHNlDQogICAgICB0YXJnZXQgPSBjbWQtPnRhcmdldDsNCi0gICANCisNCiAg
ICBzaHBudCA9IGNtZC0+aG9zdDsNCiANCiAgICAvKiBzZWFyY2ggZm9yIHRo
ZSByaWdodCBob3N0YWRhcHRlciAqLw0KLSAgIGZvciAoaG9zdF9pbmRleCA9
IDA7IGhvc3RzW2hvc3RfaW5kZXhdICYmIGhvc3RzW2hvc3RfaW5kZXhdLT5o
b3N0X25vICE9IHNocG50LT5ob3N0X25vOyBob3N0X2luZGV4KyspOyAgIA0K
LSAgIA0KKyAgIGZvciAoaG9zdF9pbmRleCA9IDA7IGhvc3RzW2hvc3RfaW5k
ZXhdICYmIGhvc3RzW2hvc3RfaW5kZXhdLT5ob3N0X25vICE9IHNocG50LT5o
b3N0X25vOyBob3N0X2luZGV4KyspOw0KKw0KICAgIGlmICghaG9zdHNbaG9z
dF9pbmRleF0pDQogICAgICB7IC8qIGludmFsaWQgaG9zdGFkYXB0ZXIgZGVz
Y3JpcHRvciBhZGRyZXNzICovDQogCWNtZC0+cmVzdWx0ID0gRElEX05PX0NP
Tk5FQ1QgPDwgMTY7DQpAQCAtMjEyOSw3ICsyMTI5LDcgQEANCiAJICAoY21k
LT5kb25lKSAoY21kKTsNCiAJcmV0dXJuIFNDU0lfQUJPUlRfU05PT1pFOw0K
ICAgICAgfQ0KLSANCisNCiAgICAvKmdldCBsb2dpY2FsIGRldmljZSBudW1i
ZXIsIGFuZCBkaXNhYmxlIHN5c3RlbSBpbnRlcnJ1cHRzICovDQogICAgcHJp
bnRrICgiSUJNIE1DQSBTQ1NJOiBTZW5kaW5nIGFib3J0IHRvIGRldmljZSBw
dW49JWQsIGx1bj0lZC5cbiIsDQogCSAgIHRhcmdldCwgY21kLT5sdW4pOw0K
QEAgLTIxNDIsOSArMjE0Miw5IEBADQogCXJldHVybiBTQ1NJX0FCT1JUX05P
VF9SVU5OSU5HOw0KICAgICAgfQ0KIA0KLSAgIC8qIENsZWFyIGxkLmNtZCwg
c2F2ZSBkb25lIGZ1bmN0aW9uLCBpbnN0YWxsIGludGVybmFsIGRvbmUsIA0K
LSAgICAqIHNlbmQgYWJvcnQgaW1tZWRpYXRlIGNvbW1hbmQgKHRoaXMgZW5h
YmxlcyBzeXMuIGludGVycnVwdHMpLCANCi0gICAgKiBhbmQgd2FpdCB1bnRp
bCB0aGUgaW50ZXJydXB0IGFycml2ZXMuIA0KKyAgIC8qIENsZWFyIGxkLmNt
ZCwgc2F2ZSBkb25lIGZ1bmN0aW9uLCBpbnN0YWxsIGludGVybmFsIGRvbmUs
DQorICAgICogc2VuZCBhYm9ydCBpbW1lZGlhdGUgY29tbWFuZCAodGhpcyBl
bmFibGVzIHN5cy4gaW50ZXJydXB0cyksDQorICAgICogYW5kIHdhaXQgdW50
aWwgdGhlIGludGVycnVwdCBhcnJpdmVzLg0KICAgICAqLw0KICAgIHNhdmVk
X2RvbmUgPSBjbWQtPnNjc2lfZG9uZTsNCiAgICBjbWQtPnNjc2lfZG9uZSA9
IGludGVybmFsX2RvbmU7DQpAQCAtMjE2MCwyMSArMjE2MCwyMSBAQA0KIAlp
ZiAoIShpbmIgKElNX1NUQVRfUkVHKGhvc3RfaW5kZXgpKSAmIElNX0JVU1kp
KQ0KIAkgIGJyZWFrOw0KIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhYm9y
dF9sb2NrLCBmbGFncyk7DQotCQ0KKw0KIAlzcGluX2xvY2tfaXJxc2F2ZSgm
YWJvcnRfbG9jaywgZmxhZ3MpOw0KICAgICAgfQ0KICAgIC8qd3JpdGUgcmVn
aXN0ZXJzIGFuZCBlbmFibGUgc3lzdGVtIGludGVycnVwdHMgKi8NCiAgICBv
dXRsIChpbW1fY29tbWFuZCwgSU1fQ01EX1JFRyhob3N0X2luZGV4KSk7DQog
ICAgb3V0YiAoSU1fSU1NX0NNRCB8IGxkbiwgSU1fQVRUTl9SRUcoaG9zdF9p
bmRleCkpOw0KICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFib3J0X2xv
Y2ssIGZsYWdzKTsNCi0gICANCisNCiAjaWZkZWYgSU1fREVCVUdfUFJPQkUN
CiAJcHJpbnRrKCJJQk0gTUNBIFNDU0k6IEFib3J0IHN1Ym1pdHRlZCwgd2Fp
dGluZyBmb3IgYWRhcHRlciByZXNwb25zZS4uLlxuIik7DQotI2VuZGlmCQ0K
KyNlbmRpZg0KICAgIHdoaWxlICghY21kLT5TQ3AuU3RhdHVzKQ0KLSAgICAg
YmFycmllciAoKTsgICANCi0gICBjbWQtPnNjc2lfZG9uZSA9IHNhdmVkX2Rv
bmU7ICAgDQotICAgLyppZiBhYm9ydCB3ZW50IHdlbGwsIGNhbGwgc2F2ZWQg
ZG9uZSwgdGhlbiByZXR1cm4gc3VjY2VzcyBvciBlcnJvciAqLyAgIA0KKyAg
ICAgYmFycmllciAoKTsNCisgICBjbWQtPnNjc2lfZG9uZSA9IHNhdmVkX2Rv
bmU7DQorICAgLyppZiBhYm9ydCB3ZW50IHdlbGwsIGNhbGwgc2F2ZWQgZG9u
ZSwgdGhlbiByZXR1cm4gc3VjY2VzcyBvciBlcnJvciAqLw0KICAgIGlmIChj
bWQtPnJlc3VsdCA9PSAoRElEX0FCT1JUIDw8IDE2KSkNCiAgICAgIHsNCiAJ
Y21kLT5yZXN1bHQgfD0gRElEX0FCT1JUIDw8IDE2Ow0KQEAgLTIxODMsNyAr
MjE4Myw3IEBADQogCWxkKGhvc3RfaW5kZXgpW2xkbl0uY21kID0gTlVMTDsN
CiAjaWZkZWYgSU1fREVCVUdfUFJPQkUNCiAJcHJpbnRrKCJJQk0gTUNBIFND
U0k6IEFib3J0IGZpbmlzaGVkIHdpdGggc3VjY2Vzcy5cbiIpOw0KLSNlbmRp
ZgkNCisjZW5kaWYNCiAJcmV0dXJuIFNDU0lfQUJPUlRfU1VDQ0VTUzsNCiAg
ICAgIH0NCiAgICBlbHNlDQpAQCAtMjE5NCw3ICsyMTk0LDcgQEANCiAJbGQo
aG9zdF9pbmRleClbbGRuXS5jbWQgPSBOVUxMOw0KICNpZmRlZiBJTV9ERUJV
R19QUk9CRQ0KIAlwcmludGsoIklCTSBNQ0EgU0NTSTogQWJvcnQgZmFpbGVk
LlxuIik7DQotI2VuZGlmCQkNCisjZW5kaWYNCiAJcmV0dXJuIFNDU0lfQUJP
UlRfRVJST1I7DQogICAgICB9DQogfQ0KQEAgLTIyMDksNyArMjIwOSw3IEBA
DQogICAgaW50IGhvc3RfaW5kZXg7DQogICAgc3RhdGljIHVuc2lnbmVkIGxv
bmcgZmxhZ3M7DQogICAgdW5zaWduZWQgbG9uZyBpbW1fY29tbWFuZDsNCi0g
ICANCisNCiAgICBzcGluX2xvY2tfaXJxc2F2ZSgmcmVzZXRfbG9jaywgZmxh
Z3MpOw0KICAgIHRpY2tzID0gSU1fUkVTRVRfREVMQVkqSFo7DQogICAgc2hw
bnQgPSBjbWQtPmhvc3Q7DQpAQCAtMjI2OCw3ICsyMjY4LDcgQEANCiAgICAg
ICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyZXNldF9sb2NrLCBmbGFncyk7
DQogICAgICAgcmV0dXJuIFNDU0lfUkVTRVRfRVJST1I7DQogICAgfQ0KLSAg
IA0KKw0KICAgIGlmICgoaW5iKElNX0lOVFJfUkVHKGhvc3RfaW5kZXgpKSAm
IDB4OGYpPT0weDhmKQ0KICAgICAgeyAvKiBhbmFseXNpcyBkb25lIGJ5IHRo
aXMgcm91dGluZSBhbmQgbm90IGJ5IHRoZSBpbnRyLXJvdXRpbmUgKi8NCiAJ
aWYgKGluYihJTV9JTlRSX1JFRyhob3N0X2luZGV4KSk9PTB4YWYpDQpAQCAt
MjI3OCwxNSArMjI3OCwxNSBAQA0KIAllbHNlIC8qIGZhaWxlZCwgNGdldCBp
dCAqLw0KIAkgIHJlc2V0X3N0YXR1cyhob3N0X2luZGV4KSA9IElNX1JFU0VU
X05PVF9JTl9QUk9HUkVTU19OT19JTlQ7DQogCW91dGIgKElNX0VPSSB8IDB4
ZiwgSU1fQVRUTl9SRUcoaG9zdF9pbmRleCkpOw0KLSAgICAgfQkNCi0gICAN
CisgICAgIH0NCisNCiAgICAvKiBpZiByZXNldCBmYWlsZWQsIGp1c3QgcmV0
dXJuIGFuIGVycm9yICovDQogICAgaWYgKHJlc2V0X3N0YXR1cyhob3N0X2lu
ZGV4KSA9PSBJTV9SRVNFVF9GSU5JU0hFRF9GQUlMKSB7DQogICAgICAgcHJp
bnRrKCJJQk0gTUNBIFNDU0k6IHJlc2V0IGZhaWxlZC5cbiIpOw0KICAgICAg
IHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJlc2V0X2xvY2ssIGZsYWdzKTsN
CiAgICAgICByZXR1cm4gU0NTSV9SRVNFVF9FUlJPUjsNCiAgICB9DQotICAg
DQorDQogICAgLyogc28gcmVzZXQgZmluaXNoZWQgb2sgLSBjYWxsIG91dHN0
YW5kaW5nIGRvbmUncywgYW5kIHJldHVybiBzdWNjZXNzICovDQogICAgcHJp
bnRrICgiSUJNIE1DQSBTQ1NJOiBSZXNldCBjb21wbGV0ZWQgd2l0aG91dCBr
bm93biBlcnJvci5cbiIpOw0KICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUo
JnJlc2V0X2xvY2ssIGZsYWdzKTsNCkBAIC0yMzQwLDcgKzIzNDAsNyBAQA0K
IHsNCiAgICBpbnQgYTsNCiAgICBpbnQgaTsNCi0gICANCisNCiAgICBhID0g
MDsNCiAgICBmb3IgKGk9MDsgaTw9TUFYX0xPR19ERVY7IGkrKykNCiAgICAg
IGErPUlCTV9EUyhob3N0X2luZGV4KS5sZG5fcmVhZF9hY2Nlc3NbaV0rSUJN
X0RTKGhvc3RfaW5kZXgpLmxkbl93cml0ZV9hY2Nlc3NbaV07DQpAQCAtMjM1
MSw3ICsyMzUxLDcgQEANCiB7DQogICAgaW50IGE7DQogICAgaW50IGk7DQot
ICAgDQorDQogICAgYSA9IDA7DQogICAgZm9yIChpPTA7IGk8PU1BWF9MT0df
REVWOyBpKyspDQogICAgICBhKz1JQk1fRFMoaG9zdF9pbmRleCkubGRuX2lu
cXVpcnlfYWNjZXNzW2ldOw0KQEAgLTIzNjIsNyArMjM2Miw3IEBADQogew0K
ICAgIGludCBhOw0KICAgIGludCBpOw0KLSAgIA0KKw0KICAgIGEgPSAwOw0K
ICAgIGZvciAoaT0wOyBpPD1NQVhfTE9HX0RFVjsgaSsrKQ0KICAgICAgYSs9
SUJNX0RTKGhvc3RfaW5kZXgpLmxkbl9tb2Rlc2VsZWN0X2FjY2Vzc1tpXTsN
CkBAIC0yNDMwLDcgKzI0MzAsNyBAQA0KIAkJICAgICBpLCBsZG5fYWNjZXNz
X2xvYWQoaG9zdF9pbmRleCwgaSksIElCTV9EUyhob3N0X2luZGV4KS5sZG5f
cmVhZF9hY2Nlc3NbaV0sDQogCQkgICAgIElCTV9EUyhob3N0X2luZGV4KS5s
ZG5fd3JpdGVfYWNjZXNzW2ldLCBJQk1fRFMoaG9zdF9pbmRleCkubGRuX2Fz
c2lnbm1lbnRzW2ldKTsNCiAgICBsZW4gKz0gc3ByaW50ZihidWZmZXIrbGVu
LCAiICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iKTsNCi0gICANCisNCiAg
ICBsZW4gKz0gc3ByaW50ZihidWZmZXIrbGVuLCAiIER5bmFtaWNhbC1MRE4t
QXNzaWdubWVudC1TdGF0aXN0aWNzOlxuIik7DQogICAgbGVuICs9IHNwcmlu
dGYoYnVmZmVyK2xlbiwgIiAgICAgICAgICAgICAgIE51bWJlciBvZiBwaHlz
aWNhbCBTQ1NJLWRldmljZXMuLjogJWQgKCsgQWRhcHRlcilcbiIsDQogCQkg
IElCTV9EUyhob3N0X2luZGV4KS50b3RhbF9zY3NpX2RldmljZXMpOw0KQEAg
LTI0NDgsMjAgKzI0NDgsMjEgQEANCiAgICAgIHsNCiAJbGVuICs9IHNwcmlu
dGYoYnVmZmVyK2xlbiwgIiAgICAlMmQgICAgICIsaWQpOw0KIAlmb3IgKGx1
bj0wOyBsdW48ODsgbHVuKyspDQotCSAgbGVuICs9IHNwcmludGYoYnVmZmVy
K2xlbiwiJTJzICIsdGlfcChnZXRfc2NzaShob3N0X2luZGV4KVtpZF1bbHVu
XSkpOwkNCisJICBsZW4gKz0gc3ByaW50ZihidWZmZXIrbGVuLCIlMnMgIix0
aV9wKGdldF9zY3NpKGhvc3RfaW5kZXgpW2lkXVtsdW5dKSk7DQorDQogCWxl
biArPSBzcHJpbnRmKGJ1ZmZlcitsZW4sICIgICAgICAlMmQgICAgICIsaWQp
Ow0KIAlmb3IgKGx1bj0wOyBsdW48ODsgbHVuKyspDQogCSAgbGVuICs9IHNw
cmludGYoYnVmZmVyK2xlbiwiJTJzICIsdGlfbChnZXRfbGRuKGhvc3RfaW5k
ZXgpW2lkXVtsdW5dKSk7DQogCWxlbiArPSBzcHJpbnRmKGJ1ZmZlcitsZW4s
IlxuIik7DQogICAgICB9DQotICAgDQorDQogICAgbGVuICs9IHNwcmludGYo
YnVmZmVyK2xlbiwgIihBID0gSUJNLVN1YnN5c3RlbSwgRCA9IEhhcmRkaXNr
LCBUID0gVGFwZWRyaXZlLCBQID0gUHJvY2Vzc29yLCBXID0gV09STSxcbiIp
Ow0KICAgIGxlbiArPSBzcHJpbnRmKGJ1ZmZlcitsZW4sICIgUiA9IENELVJP
TSwgUyA9IFNjYW5uZXIsIE0gPSBNTy1Ecml2ZSwgQyA9IE1lZGl1bS1DaGFu
Z2VyLCArID0gdW5wcm92aWRlZCBMVU4sXG4iKTsNCiAgICBsZW4gKz0gc3By
aW50ZihidWZmZXIrbGVuLCAiIC0gPSBub3RoaW5nIGZvdW5kLCBub3RoaW5n
IGFzc2lnbmVkIG9yIHVucHJvYmVkIExVTilcblxuIik7DQotICAgDQorDQog
ICAgKnN0YXJ0ID0gYnVmZmVyICsgb2Zmc2V0Ow0KICAgIGxlbiAtPSBvZmZz
ZXQ7DQotICAgaWYgKGxlbiA+IGxlbmd0aCkgDQorICAgaWYgKGxlbiA+IGxl
bmd0aCkNCiAgICAgIGxlbiA9IGxlbmd0aDsNCiAgICBzcGluX3VubG9ja19p
cnFyZXN0b3JlKCZwcm9jX2xvY2ssIGZsYWdzKTsNCiAgICByZXR1cm4gbGVu
Ow0KQEAgLTI0NzIsMTkgKzI0NzMsMTggQEANCiBTY3NpX0hvc3RfVGVtcGxh
dGUgZHJpdmVyX3RlbXBsYXRlID0gSUJNTUNBOw0KIA0KICNpbmNsdWRlICJz
Y3NpX21vZHVsZS5jIg0KLSNlbmRpZg0KIA0KIC8qDQogICoJTW9kdWxlIHBh
cmFtZXRlcnMNCiAgKi8NCi0gDQorDQogTU9EVUxFX1BBUk0oaW9fcG9ydCwg
IjEtIiBfX01PRFVMRV9TVFJJTkcoSU1fTUFYX0hPU1RTKSAiaSIpOw0KLU1P
RFVMRV9QQVJNKHNjc2lfaWQsICIxLSIgX19NT0RVTEVfU1RSSU5HKElNX01B
WF9IT1NUUykgImkiKTsgDQorTU9EVUxFX1BBUk0oc2NzaV9pZCwgIjEtIiBf
X01PRFVMRV9TVFJJTkcoSU1fTUFYX0hPU1RTKSAiaSIpOw0KIE1PRFVMRV9Q
QVJNKGRpc3BsYXksICIxaSIpOw0KIE1PRFVMRV9QQVJNKGFkaXNwbGF5LCAi
MWkiKTsNCiBNT0RVTEVfUEFSTShieXBhc3MsICIxaSIpOw0KIE1PRFVMRV9Q
QVJNKG5vcm1hbCwgIjFpIik7DQogTU9EVUxFX1BBUk0oYW5zaSwgIjFpIik7
DQorI2VuZGlmDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQot
DQo=
---2098261354-1869170439-937786049=:9016--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/