Token Ring Updates for 2.3

Mike Phillips (phillips@okpcm.com)
Fri, 07 Jan 2000 10:46:43 -0500


This is a multi-part message in MIME format.
--------------0431751422B620F3F12849A7
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Attached are two patches for token ring for 2.3.36. One is for the new
source routing code and the other is for the IPv6 stuff.

The source routing code change is some *major* stuff, but it has been
extensively tested over several months by the token ring community.

DJ / Jochen - I would appreciate it if you could check the patches
against
your original code for completeness.

These files are also available on the web-site.

Mike
Linux Token Ring Project
http://www.linuxtr.net

--------------0431751422B620F3F12849A7
Content-Type: application/x-unknown-content-type-AutoCADLTHatchPatternDefinition;
name="trrif336.pat"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="trrif336.pat"

ZGlmZiAtdXJOIGxpbnV4LTIuMy4zNi5vcmlnL2RyaXZlcnMvbmV0L25ldF9pbml0LmMgbGlu
dXgtMi4zLjM2L2RyaXZlcnMvbmV0L25ldF9pbml0LmMKLS0tIGxpbnV4LTIuMy4zNi5vcmln
L2RyaXZlcnMvbmV0L25ldF9pbml0LmMJVGh1IEphbiAgNiAwOToyNToyMSAyMDAwCisrKyBs
aW51eC0yLjMuMzYvZHJpdmVycy9uZXQvbmV0X2luaXQuYwlUaHUgSmFuICA2IDA5OjI2OjMw
IDIwMDAKQEAgLTQ1MCw2ICs0NTAsOCBAQAogCiAJLyogTmV3LXN0eWxlIGZsYWdzLiAqLwog
CWRldi0+ZmxhZ3MJCT0gSUZGX0JST0FEQ0FTVCB8IElGRl9NVUxUSUNBU1QgOworCXRyX3Vu
bG9jayhkZXYpOworCWRldi0+cmlmX2NhY2hlX2xpc3RzPU5VTEw7CiB9CiAKIHN0cnVjdCBu
ZXRfZGV2aWNlICppbml0X3RyZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBzaXpl
b2ZfcHJpdikKQEAgLTQ3NSw2ICs0NzcsNyBAQAogdm9pZCB1bnJlZ2lzdGVyX3RyZGV2KHN0
cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CiAJcnRubF9sb2NrKCk7CisJdHJfZnJlZV9yaWZf
Y2FjaGUoZGV2KTsKIAl1bnJlZ2lzdGVyX25ldGRldmljZShkZXYpOwogCXJ0bmxfdW5sb2Nr
KCk7CiB9CmRpZmYgLXVyTiBsaW51eC0yLjMuMzYub3JpZy9pbmNsdWRlL2xpbnV4L2lmX3Ry
LmggbGludXgtMi4zLjM2L2luY2x1ZGUvbGludXgvaWZfdHIuaAotLS0gbGludXgtMi4zLjM2
Lm9yaWcvaW5jbHVkZS9saW51eC9pZl90ci5oCVRodSBKYW4gIDYgMDk6MjU6MTggMjAwMAor
KysgbGludXgtMi4zLjM2L2luY2x1ZGUvbGludXgvaWZfdHIuaAlUaHUgSmFuICA2IDA5OjI2
OjMwIDIwMDAKQEAgLTEsNCArMSw0IEBACi0vKgorIC8qCiAgKiBJTkVUCQlBbiBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgVENQL0lQIHByb3RvY29sIHN1aXRlIGZvciB0aGUgTElOVVgKICAq
CQlvcGVyYXRpbmcgc3lzdGVtLiAgSU5FVCBpcyBpbXBsZW1lbnRlZCB1c2luZyB0aGUgIEJT
RCBTb2NrZXQKICAqCQlpbnRlcmZhY2UgYXMgdGhlIG1lYW5zIG9mIGNvbW11bmljYXRpb24g
d2l0aCB0aGUgdXNlciBsZXZlbC4KQEAgLTksNyArOSw4IEBACiAgKgogICogQXV0aG9yOglG
cmVkIE4uIHZhbiBLZW1wZW4sIDx3YWx0amVAdVdhbHQuTkwuTXVnbmV0Lk9SRz4KICAqCQlE
b25hbGQgQmVja2VyLCA8YmVja2VyQHN1cGVyLm9yZz4KLSAqICAgIFBldGVyIERlIFNjaHJp
anZlciwgPHN0dWQxMUBjYzQua3VsZXV2ZW4uYWMuYmU+CisgKiAgICAgICAgICAgICAgUGV0
ZXIgRGUgU2NocmlqdmVyLCA8c3R1ZDExQGNjNC5rdWxldXZlbi5hYy5iZT4KKyAqICAgICAg
ICAgICAgICBELkouIEJhcnJvdyBiYXJyb3dfZGpAeWFob28uY29tCiAgKgogICoJCVRoaXMg
cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqCQltb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQpAQCAtMTksNDYgKzIwLDYyIEBACiAjaWZuZGVmIF9MSU5VWF9JRl9U
Ul9ICiAjZGVmaW5lIF9MSU5VWF9JRl9UUl9ICiAKLQogLyogSUVFRSA4MDIuNSBUb2tlbi1S
aW5nIG1hZ2ljIGNvbnN0YW50cy4gIFRoZSBmcmFtZSBzaXplcyBvbWl0IHRoZSBwcmVhbWJs
ZQogICAgYW5kIEZDUy9DUkMgKGZyYW1lIGNoZWNrIHNlcXVlbmNlKS4gKi8KICNkZWZpbmUg
VFJfQUxFTgk2CQkvKiBPY3RldHMgaW4gb25lIGV0aGVybmV0IGFkZHIJICovCi0jZGVmaW5l
IFRSX0hMRU4gICAoc2l6ZW9mKHN0cnVjdCB0cmhfaGRyKStzaXplb2Yoc3RydWN0IHRybGxj
KSkKKyNkZWZpbmUgVFJfSExFTiAgIChzaXplb2Yoc3RydWN0IHRyaF9oZHIpK3NpemVvZiho
ZHJfODAyMikpCiAjZGVmaW5lIEFDCQkJMHgxMAotI2RlZmluZSBMTENfRlJBTUUgMHg0MAot
I2lmIDAKLSNkZWZpbmUgRVRIX0hMRU4JMTQJCS8qIFRvdGFsIG9jdGV0cyBpbiBoZWFkZXIu
CSAqLwotI2RlZmluZSBFVEhfWkxFTgk2MAkJLyogTWluLiBvY3RldHMgaW4gZnJhbWUgc2Fu
cyBGQ1MgKi8KLSNkZWZpbmUgRVRIX0RBVEFfTEVOCTE1MDAJCS8qIE1heC4gb2N0ZXRzIGlu
IHBheWxvYWQJICovCi0jZGVmaW5lIEVUSF9GUkFNRV9MRU4JMTUxNAkJLyogTWF4LiBvY3Rl
dHMgaW4gZnJhbWUgc2FucyBGQ1MgKi8KLSNlbmRpZgorI2RlZmluZSBMTENfRlJBTUUgICAg
ICAgICAgICAgICAweDQwCiAKIAogLyogTExDIGFuZCBTTkFQIGNvbnN0YW50cyAqLworI2Rl
ZmluZSBUUl9JUF9TQVAgICAgMHhBQQorI2RlZmluZSBUUl9JUFhfU0FQICAgMHhFMAogI2Rl
ZmluZSBFWFRFTkRFRF9TQVAgMHhBQQogI2RlZmluZSBVSV9DTUQgICAgICAgMHgwMwogCisK
IC8qIFRoaXMgaXMgYW4gVG9rZW4tUmluZyBmcmFtZSBoZWFkZXIuICovCi1zdHJ1Y3QgdHJo
X2hkciB7Ci0JX191OCAgYWM7CQkJLyogYWNjZXNzIGNvbnRyb2wgZmllbGQgKi8KLQlfX3U4
ICBmYzsJCQkvKiBmcmFtZSBjb250cm9sIGZpZWxkICovCi0JX191OCAgZGFkZHJbVFJfQUxF
Tl07CQkvKiBkZXN0aW5hdGlvbiBhZGRyZXNzICovCi0JX191OCAgc2FkZHJbVFJfQUxFTl07
CQkvKiBzb3VyY2UgYWRkcmVzcyAqLwotCV9fdTE2IHJjZjsJCQkvKiByb3V0ZSBjb250cm9s
IGZpZWxkICovCi0JX191MTYgcnNlZ1s4XTsJCQkvKiByb3V0aW5nIHJlZ2lzdGVycyAqLwot
fTsKKy8qIGFjY2VzcyBjb250cm9sIGZpZWxkICovCisvKiBmcmFtZSBjb250cm9sIGZpZWxk
ICovCisvKiBkZXN0aW5hdGlvbiBhZGRyZXNzICovCisvKiBzb3VyY2UgYWRkcmVzcyAqLwor
I2RlZmluZSBUUl9IV19IRFIgICAgICAgICAgICAgICAgICAgXAorX191OCAgYWM7CQkgICAg
ICAgICAgICBcCitfX3U4ICBmYzsJCSAgICAgICAgICAgIFwKK19fdTggIGRhZGRyW1RSX0FM
RU5dOwkgICAgICAgICAgICBcCitfX3U4ICBzYWRkcltUUl9BTEVOXTsKKwordHlwZWRlZiBz
dHJ1Y3QgCit7CisJVFJfSFdfSERSCit9IHRyX2h3X2hkciAgX19hdHRyaWJ1dGVfXygocGFj
a2VkKSk7CisKK3R5cGVkZWYgc3RydWN0Cit7CisJX191OCAgc2FkZHJbVFJfQUxFTl07CisJ
dW5zaWduZWQgc2hvcnQgdHlwZTsKK30gdHJfZmFrZV9oZWFkZXI7CisjZGVmaW5lIFRSX05V
TV9SU0VHUyA4CisKKy8qIHJvdXRlIGNvbnRyb2wgZmllbGQgKi8KKy8qIHJvdXRpbmcgcmVn
aXN0ZXJzICovCisjZGVmaW5lIFRSX1JJRl9JTkZPICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorX191MTYgcmNmIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOyAgICAgICAg
ICAgICAgICAgIFwKK19fdTE2IHJzZWdbVFJfTlVNX1JTRUdTXSBfX2F0dHJpYnV0ZV9fKChw
YWNrZWQpKTsgICAJCQorCit0eXBlZGVmIHN0cnVjdAoreworICAgICAgICBUUl9SSUZfSU5G
TworfSB0cl9yaWZfaW5mbyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKyNkZWZpbmUgVFJf
TUFYUklGTEVOIHNpemVvZih0cl9yaWZfaW5mbykKKyNkZWZpbmUgVFJfTUFYX05VTV9IT1BT
IChUUl9OVU1fUlNFR1MtMSkKKwogCi0vKiBUaGlzIGlzIGFuIFRva2VuLVJpbmcgTExDIHN0
cnVjdHVyZSAqLwotc3RydWN0IHRybGxjIHsKLQlfX3U4ICBkc2FwOwkJCS8qIGRlc3RpbmF0
aW9uIFNBUCAqLwotCV9fdTggIHNzYXA7CQkJLyogc291cmNlIFNBUCAqLwotCV9fdTggIGxs
YzsJCQkvKiBMTEMgY29udHJvbCBmaWVsZCAqLwotCV9fdTggIHByb3RpZFszXTsJCS8qIHBy
b3RvY29sIGlkICovCi0JX191MTYgZXRoZXJ0eXBlOwkJLyogZXRoZXIgdHlwZSBmaWVsZCAq
LwotfTsKIAogLyogVG9rZW4tUmluZyBzdGF0aXN0aWNzIGNvbGxlY3Rpb24gZGF0YS4gKi8K
LXN0cnVjdCB0cl9zdGF0aXN0aWNzIHsKK3N0cnVjdCB0cl9zdGF0aXN0aWNzIAorewogCXVu
c2lnbmVkIGxvbmcgcnhfcGFja2V0czsgICAgICAgLyogdG90YWwgcGFja2V0cyByZWNlaXZl
ZAkqLwogCXVuc2lnbmVkIGxvbmcgdHhfcGFja2V0czsJLyogdG90YWwgcGFja2V0cyB0cmFu
c21pdHRlZAkqLwogCXVuc2lnbmVkIGxvbmcgcnhfYnl0ZXM7CQkvKiB0b3RhbCBieXRlcyBy
ZWNlaXZlZCAgIAkqLwpAQCAtODYsMTUgKzEwMywxNzggQEAKIAl1bnNpZ25lZCBsb25nIGR1
bW15MTsKIH07CiAKLS8qIHNvdXJjZSByb3V0aW5nIHN0dWZmICovCiAKKyNkZWZpbmUgTExD
XzgwMjIgICBcCitfX3U4ICBkc2FwOyAgICAgICAgXAorX191OCAgc3NhcDsgICAgICAgIFwK
K19fdTggIGxsYzsgICAgICAgCisKKyNkZWZpbmUgU05BUF84MDIyICAgXAorX191OCAgcHJv
dGlkWzNdOyAgICBcCitfX3UxNiBldGhlcnR5cGU7ICAKKwordHlwZWRlZiBzdHJ1Y3QKK3sK
KyAgICAgTExDXzgwMjIKK30gIGxsY184MDIyICBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK
K3R5cGVkZWYgc3RydWN0Cit7CisgICAgIFNOQVBfODAyMgorfSAgc25hcF84MDIyICBfX2F0
dHJpYnV0ZV9fKChwYWNrZWQpKTsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICAgICAgTExD
XzgwMjIKKyAgICAgICAgU05BUF84MDIyCit9ICBoZHJfODAyMiAgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CisKKy8qIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG1haW5seSAqLwor
c3RydWN0ICB0cmhfaGRyIAoreworICAgICAgICBUUl9IV19IRFIKKyAgICAgICAgVFJfUklG
X0lORk8KK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK3N0cnVjdCB0cmxsYworewor
ICAgICAgICBMTENfODAyMgorICAgICAgICBTTkFQXzgwMjIKK30gX19hdHRyaWJ1dGVfXygo
cGFja2VkKSk7CisKKy8qCisgIFJGQyAxNzQ5IHN0dWZmCisgKi8KKy8qIDA9aW5kaXZpZHVh
bCBhZGRyIDE9Z3JvdXAvbXVsdGljYXN0IGFkZHIgKi8KKyNkZWZpbmUgVFJfSUdfQklUICAg
MHg4MAorLyogRkFJIGJpdCAwPWZ1bmN0aW9uYWwgYWRkcmVzcywxPSBpbmRpY2F0ZXMgbG9j
YWxseSBhZG1pbmlzdGVyZWQgZ3JvdXAgYWRkcmVzcworKi8KKyNkZWZpbmUgVFJfRkFJX0JJ
VCAgMHg4MAorLyogMD11bml2ZXJzYWxseSBhZG1pbmlzdGVyZWQgMT1sb2NhbGx5IGFkbWlu
aXN0ZXJlZCAqLworI2RlZmluZSBUUl9VTF9CSVQgIDB4NDAKKy8qIFRoaXMgaXNuJ3QgbmVl
ZGVkIHRvIHNldCB0aGUgYnJvYWRjYXN0IGJpdCBpbiByY2ZzIGFzIHRoZSBUUl9JR19CSVQg
aXMgYWxyZWFkeSBzZXQgKi8KKyNkZWZpbmUgSVBfTUNBU1RfRlVOQ19BRERSIHsweEMwLDB4
MDAsMHgwMCwweDA0LDB4MDAsMHgwMH0KKworI2RlZmluZSBUUl9NVUxUSUNBU1RfQklUICAg
MQorLyogQ3VycmVudGx5IHVudXNlZCBzdHVmZiBmcm9tIFJGQyAxNDY5IGhvcGVmdWxseSBu
b3QgcmVxdWlyZWQuCisgKiBBY2NvcmRpbmcgdG8gdGhpcyBSRkMgYWxsIElQIG11bHRpY2Fz
dGluZyBzaG91bGQgb25seSB1c2UKKyAqIG9uZSBNQUMgYWRkcmVzcyAwMy0wMC0wMC0yMC0w
MC0wMC4KKyAqLworI2RlZmluZSBUUl9GQUkgICAgICAgICAgICAgMQorI2RlZmluZSBUUl9V
TCAgICAgICAgICAgICAgMgorCisvKiBzb3VyY2Ugcm91dGluZyBzdHVmZiAqLwogI2RlZmlu
ZSBUUl9SSUkgMHg4MAogI2RlZmluZSBUUl9SQ0ZfRElSX0JJVCAweDgwCisjZGVmaW5lIFRS
X1JDRl9MRl9NQVNLICAweDcwCiAjZGVmaW5lIFRSX1JDRl9MRU5fTUFTSyAweDFmMDAKLSNk
ZWZpbmUgVFJfUkNGX0JST0FEQ0FTVCAweDgwMDAgICAgICAgICAvKiBhbGwtcm91dGVzIGJy
b2FkY2FzdCAqLwotI2RlZmluZSBUUl9SQ0ZfTElNSVRFRF9CUk9BRENBU1QgMHhDMDAwIC8q
IHNpbmdsZS1yb3V0ZSBicm9hZGNhc3QgKi8KLSNkZWZpbmUgVFJfUkNGX0ZSQU1FMksgMHgy
MAotI2RlZmluZSBUUl9SQ0ZfQlJPQURDQVNUX01BU0sgMHhDMDAwCi0jZGVmaW5lIFRSX01B
WFJJRkxFTiAxOAorI2RlZmluZSBUUl9OT1JNQUwgICAgICAgICAgICAgICAgICAweDAgICAg
ICAgICAvKiBub3JtYWwgdHJhbnNtaXQgKi8KKyNkZWZpbmUgVFJfTk9fUkNGCQkgICAweDEg
ICAgICAgICAvKiBpLmUuIGRvbid0IHB1dCBhbiByY2YgaW4gdGhlIGhlYWRlciAqLworI2Rl
ZmluZSBUUl9SQ0ZfQUxMX1JJTkdTX0JST0FEQ0FTVCAweDgwMDAgICAgICAvKiBoaXQgZXZl
cnkgcmluZyBwb3NzaWJsZSByaW5nIGJyb2FkY2FzdCAqLworI2RlZmluZSBUUl9SQ0ZfTElN
SVRFRF9CUk9BRENBU1QgICAweEMwMDAgICAgICAvKiBoaXQgZXZlcnkgcmluZyBhdCBtb3N0
IG9uY2Ugb25jZSBicm9hZGNhc3QgKi8KKyNkZWZpbmUgVFJfUkNGX0JST0FEQ0FTVF9NQVNL
ICAgICAgMHhFMDAwCisjZGVmaW5lIFRSX1JDRl9DQUNIRV9NQVNLICAgICB+KFRSX1JDRl9C
Uk9BRENBU1RfTUFTSykKKworLyogU2hvdWxkIGJlIGluIHR5cGVzLmggYnV0IC4uLiAqLwor
I2lmbmRlZiBUUlVFCisjZGVmaW5lIFRSVUUgMQorI2VuZGlmCisjaWZuZGVmIEZBTFNFCisj
ZGVmaW5lIEZBTFNFIDAKKyNlbmRpZgorI2RlZmluZSBMT0NBTF9SSU5HIC0xCisKKy8qCisK
KyAgVGhlIGZvcm1hdCBvZiBlYWNoIFJvdXRpbmcgRGVzY3JpcHRvciAoUkQpIGZpZWxkIGlz
OiAoIFJGQyAxNzQ5ICkKIAorICAgICAgICAgICAgICAgICAgICAgb2N0ZXQgMSAgICAgICAg
IG9jdGV0IDIKKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0rCisgICAgICAgICAgICAgICAgIHxyIHIgciByIHIgciByIHIgciByIHIgciBpIGkg
aSBpfAorICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LSsKKyAgICAgICAgICAgICAgICAgIDwtLS0tIHJpbmcgbnVtYmVyIC0tLS0+IDwtLS0tLT4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJpZGdlIG51bWJlciAtLSsgLy8gc2hvdWxkIGJlIGJyaWRn
ZSB0eXBlCisKKyAgICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgIDEK
KyAgICAgICAgICAgICAgICAgICAgICAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMgNCA1
CisgICAgICAgICAgICAgICAgICAgICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSsKKyAgICAgICAgICAgICAgICAgICAgIHwgIEIgIHwgICBMVEggICB8RHwgIExGIHwgICBy
ICAgfAorICAgICAgICAgICAgICAgICAgICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r
LSstKy0rCisKKyovCisKK3R5cGVkZWYgc3RydWN0IHRyX3JpZl9jYWNoZV9lbnRyeSB0cl9y
aWZfY2FjaGVfZW50cnk7IAorLyogVGhpcyBsaXN0IHN0cnVjdHVyZSBpcyBmYWlybHkgY29t
cGxleCAoIEkgZ290IGEgaGVhZGFjaGUgd3JpdGluZyBpdCApCisgKiAoICYgZG9uJ3QgZ2V0
IHB1dCBvZmYgYnkgYWxsIHRoZSBkZWJ1ZyBjb2RlIGluIHRyX2FkZF9yaWZfaW5mby4gKQor
ICogSXQgbWF5IG5vdCBhZGQgbXVjaCBwZXJmb3JtYW5jZSBvbiBuZXR3b3JrcyAgd2l0aCBs
ZXNzIHRoYW4gMTAwIG5vZGVzCisgKiAgYnV0IGl0IHNjYWxlcyB2ZXJ5IHdlbGwuCisgKiBU
aGUgMiBkb3VibHkgbGlua2VkIGxpc3RzIG5lYXJseSBjb21wbGV0ZWx5IGVsaW1pbmF0ZXMg
YW55IGxpc3Qgd2Fsa2luZy4KKyAqIFRoZSBpZGVhIGJlaGluZCB0aGUgbGlzdHMgaXMgYXMg
Zm9sbG93cworICogVGhlIG1vc3QgcmVjZW50bHkgdXNlZCBsaXN0IGlzIG5lZWRlZCB0byBo
ZWxwCisgKiBtYWludGFpbiB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCBsaXN0IGNvcnJlY3Rs
eS4KKyAqIFRoZSBsZWFzdCByZWNlbnRseSB1c2VkIGxpc3QgaXMgdXNlZCBzbyB0aGF0IHRy
X2FkZF9yaWZfaW5mbworICogZG9zZW4ndCBoYXZlIHRvIHdhbGsgdGhlIGVudGlyZSBsaXN0
IHRvIGZpbmQgb3V0CisgKiB3aGljaCBtZW1iZXIgdG8gcmVwbGFjZSBpbiB0aGUgY2FjaGUg
d2hlbiBhIGxpbmUgaXMgZnVsbC4KKyAqIFRoZSB1cGRhdGVkIGxpc3QgaXMgdXNlZCBiZWNh
dXNlCisgKiBtb3N0IG9mIHRoZSBwYWNrZXRzIHJlY2VpdmVkIGluIHRyX2FkZF9yaWZfaW5m
byB3aWxsIGJlIGF0IHRoZQorICogdG9wIG9mIHRoaXMgbGlzdCBpZiB0aGV5IHJlY2VpdmVk
IHBhY2tldHMgZnJvbSB0aGlzIG1hYyBhZGRyZXNzCisgKiBpbiB0aGUgcmVjZW50IHBhc3Qg
dGh1cyBhdm9pZGluZyBsaXN0IHdhbGtpbmcuCisgKiBUaGUgaGludCBmaWVsZCBhZGRlZCB0
byBzdHJ1Y3Qgc29jayBtZWFucyB0aGF0CisgKiB0aGUgbm8gbGlzdCB3YWxraW5nIGlzIGRv
bmUgb24gdHJhbnNtaXR0ZWQgcGFja2V0cyBleGNlcHQgdG8gCisgKiBzZXQgdXAgdGhlIGlu
aXRpYWwgaGludCBESkIuCisgKiBvYnZpb3VzbHkgdGhlIHRvdWNoZWQgbGlzdCBkb3NlbnQg
cGVyZm9ybSBxdWl0ZSBhcyB3ZWxsIGFzCisgKiB0aGUgbHJ1IGxpc3QgYXMgdGhlIHBhY2tl
dHMgY29taW5nIGluIGFyZSBtdWNoIG1vcmUgcmFuZG9tCisgKiBUaGUgaGludF9pZHggZmll
bGQgaXMgcmVxdWlyZWQgdG8gdGVsbCBpZiBhIGhpbnQgaXMgdmFsaWQKKyAqIHRoaXMgaXMg
ZG9uZSBieSB1cGRhdGluZyBhbiBpbmRleCBlYWNoIHRpbWUgd2UgZnJlZSBhIGNhY2hlIGVu
dHJ5LgorICovCit0eXBlZGVmIHN0cnVjdAoreworCXRyX3JpZl9jYWNoZV9lbnRyeSAqaGVh
ZDsKKwl0cl9yaWZfY2FjaGVfZW50cnkgKnRhaWw7Cit9IHRyX3JpZl9kbGlzdDsKKwordHlw
ZWRlZiBzdHJ1Y3QKK3sKKwl0cl9yaWZfY2FjaGVfZW50cnkgKm5leHQ7CisJdHJfcmlmX2Nh
Y2hlX2VudHJ5ICpwcmV2OworICAgICAgICBsb25nIHRpbWVzdGFtcDsKK30gdHJfcmlmX2Rl
bnRyeTsKKworCitlbnVtCit7CisJVFJfVVNFRD0wLAorCVRSX1VQREFURUQsCisJVFJfTlVN
RExJU1RTCit9OworCitzdHJ1Y3QgdHJfcmlmX2NhY2hlX2xpc3RzCit7CisJdHJfcmlmX2Rs
aXN0ICAgICAgIGRsaXN0W1RSX05VTURMSVNUU107CisJaW50ICAgICAgICAgICAgICAgIG51
bV9lbnRyaWVzOworCWludCAgICAgICAgICAgICAgICBoaW50X2lkeDsKK307CisKK3N0cnVj
dCB0cl9yaWZfY2FjaGVfZW50cnkgIAoreworCXRyX3JpZl9kZW50cnkgICAgICBkZW50cnlb
VFJfTlVNRExJU1RTXTsKKwl1bnNpZ25lZCBjaGFyICAgICAgYWRkcltUUl9BTEVOXTsKKyAg
ICAgICAgVFJfUklGX0lORk8KK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKKyNkZWZp
bmUgUkRfVE9fUklOR05VTShyZCkgKG50b2hzKHJkKT4+NCkKKyNkZWZpbmUgUkRfVE9fQlJJ
REdFX1RZUEUocmQpICAobnRvaHMocmQpJjB4ZikKKworI2lmZGVmIF9fS0VSTkVMX18gCit2
b2lkIHRyX2ZyZWVfcmlmX2NhY2hlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOworI2RlZmlu
ZSBUUl9ERUJVR19MT0NLUyAgICAwCisjaWYgVFJfREVCVUdfTE9DS1MKK2V4dGVybiBpbnQg
dHJfbG9jazIoc3RydWN0IGRldmljZSAqZGV2LGNoYXIgKmZpbGUsaW50IGxpbmUpOworI2Rl
ZmluZSB0cl9sb2NrKGRldikgICAgICAodHJfbG9jazIoZGV2LF9fRklMRV9fLF9fTElORV9f
KSkKKyNlbHNlCisjZGVmaW5lIHRyX2xvY2soZGV2KSAgICAgICh0ZXN0X2FuZF9zZXRfYml0
KDEsJmRldi0+dHJfbG9jayk9PTApCisjZW5kaWYKKyNkZWZpbmUgdHJfdW5sb2NrKGRldikg
ICAgKGF0b21pY19zZXQoJmRldi0+dHJfbG9jaywwKSkKKyNlbmRpZiAvKiBfX0tFUk5FTF9f
ICovCiAjZW5kaWYJLyogX0xJTlVYX0lGX1RSX0ggKi8KZGlmZiAtdXJOIGxpbnV4LTIuMy4z
Ni5vcmlnL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmggbGludXgtMi4zLjM2L2luY2x1ZGUv
bGludXgvbmV0ZGV2aWNlLmgKLS0tIGxpbnV4LTIuMy4zNi5vcmlnL2luY2x1ZGUvbGludXgv
bmV0ZGV2aWNlLmgJVGh1IEphbiAgNiAwOToyNToxOCAyMDAwCisrKyBsaW51eC0yLjMuMzYv
aW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaAlUaHUgSmFuICA2IDA5OjI2OjMwIDIwMDAKQEAg
LTE3Myw3ICsxNzMsMTAgQEAKICAqCUZJWE1FOiBjbGVhbnVwIHN0cnVjdCBuZXRfZGV2aWNl
IHN1Y2ggdGhhdCBuZXR3b3JrIHByb3RvY29sIGluZm8KICAqCW1vdmVzIG91dC4KICAqLwot
CisjaWYgQ09ORklHX1RSCitzdHJ1Y3QgIHRyX3JpZl9jYWNoZV9saXN0czsKK3R5cGVkZWYg
c3RydWN0IHRyX3JpZl9jYWNoZV9saXN0cyB0cl9yaWZfY2FjaGVfbGlzdHM7CisjZW5kaWYK
IHN0cnVjdCBuZXRfZGV2aWNlCiB7CiAKQEAgLTMzOSw2ICszNDIsMTAgQEAKIAkvKiBTZW1p
LXByaXZhdGUgZGF0YS4gS2VlcCBpdCBhdCB0aGUgZW5kIG9mIGRldmljZSBzdHJ1Y3QuICov
CiAJcndsb2NrX3QJCWZhc3RwYXRoX2xvY2s7CiAJc3RydWN0IGRzdF9lbnRyeQkqZmFzdHBh
dGhbTkVUREVWX0ZBU1RST1VURV9ITUFTSysxXTsKKyNlbmRpZgorI2lmIENPTkZJR19UUgor
ICAgICAgYXRvbWljX3QgICAgICAgICAgIHRyX2xvY2s7CisgICAgICB0cl9yaWZfY2FjaGVf
bGlzdHMgICpyaWZfY2FjaGVfbGlzdHM7CiAjZW5kaWYKIH07CiAKZGlmZiAtdXJOIGxpbnV4
LTIuMy4zNi5vcmlnL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgub3JpZyBsaW51eC0yLjMu
MzYvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC5vcmlnCi0tLSBsaW51eC0yLjMuMzYub3Jp
Zy9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLm9yaWcJV2VkIERlYyAzMSAxOTowMDowMCAx
OTY5CisrKyBsaW51eC0yLjMuMzYvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC5vcmlnCVR1
ZSBKYW4gIDQgMTY6MzQ6MTAgMjAwMApAQCAtMCwwICsxLDQ2NCBAQAorLyoKKyAqIElORVQJ
CUFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBUQ1AvSVAgcHJvdG9jb2wgc3VpdGUgZm9yIHRo
ZSBMSU5VWAorICoJCW9wZXJhdGluZyBzeXN0ZW0uICBJTkVUIGlzIGltcGxlbWVudGVkIHVz
aW5nIHRoZSAgQlNEIFNvY2tldAorICoJCWludGVyZmFjZSBhcyB0aGUgbWVhbnMgb2YgY29t
bXVuaWNhdGlvbiB3aXRoIHRoZSB1c2VyIGxldmVsLgorICoKKyAqCQlEZWZpbml0aW9ucyBm
b3IgdGhlIEludGVyZmFjZXMgaGFuZGxlci4KKyAqCisgKiBWZXJzaW9uOglAKCMpZGV2LmgJ
MS4wLjEwCTA4LzEyLzkzCisgKgorICogQXV0aG9yczoJUm9zcyBCaXJvLCA8YmlyN0BsZWxh
bmQuU3RhbmZvcmQuRWR1PgorICoJCUZyZWQgTi4gdmFuIEtlbXBlbiwgPHdhbHRqZUB1V2Fs
dC5OTC5NdWduZXQuT1JHPgorICoJCUNvcmV5IE1pbnlhcmQgPHdmLXJjaCFtaW55YXJkQHJl
bGF5LkVVLm5ldD4KKyAqCQlEb25hbGQgSi4gQmVja2VyLCA8YmVja2VyQGNlc2Rpcy5nc2Zj
Lm5hc2EuZ292PgorICoJCUFsYW4gQ294LCA8QWxhbi5Db3hAbGludXgub3JnPgorICoJCUJq
b3JuIEVrd2FsbC4gPGJqMHJuQGJsb3guc2U+CisgKgorICoJCVRoaXMgcHJvZ3JhbSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqCQltb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICoJCWFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIgdmVyc2lvbgorICoJCTIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICoJCU1vdmVkIHRvIC91c3IvaW5jbHVkZS9s
aW51eCBmb3IgTkVUMworICovCisjaWZuZGVmIF9MSU5VWF9ORVRERVZJQ0VfSAorI2RlZmlu
ZSBfTElOVVhfTkVUREVWSUNFX0gKKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2lu
Y2x1ZGUgPGxpbnV4L2lmLmg+CisjaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KKyNpbmNs
dWRlIDxsaW51eC9pZl9wYWNrZXQuaD4KKworI2luY2x1ZGUgPGFzbS9hdG9taWMuaD4KKwor
I2lmZGVmIF9fS0VSTkVMX18KKyNpZmRlZiBDT05GSUdfTkVUX1BST0ZJTEUKKyNpbmNsdWRl
IDxuZXQvcHJvZmlsZS5oPgorI2VuZGlmCisKKyNkZWZpbmUgTkVUX1hNSVRfU1VDQ0VTUwkw
CisjZGVmaW5lIE5FVF9YTUlUX0RST1AJCTEJLyogc2tiIGRyb3BwZWQJCQkqLworI2RlZmlu
ZSBORVRfWE1JVF9DTgkJMgkvKiBjb25nZXN0aW9uIG5vdGlmaWNhdGlvbgkqLworI2RlZmlu
ZSBORVRfWE1JVF9QT0xJQ0VECTMJLyogc2tiIGlzIHNob3QgYnkgcG9saWNlCSovCisKKyNk
ZWZpbmUgbmV0X3htaXRfZXJybm8oZSkJKChlKSAhPSBORVRfWE1JVF9DTiA/IC1FTk9CVUZT
IDogMCkKKworI2VuZGlmCisKKyNkZWZpbmUgTUFYX0FERFJfTEVOCTcJCS8qIExhcmdlc3Qg
aGFyZHdhcmUgYWRkcmVzcyBsZW5ndGggKi8KKworLyoKKyAqCUNvbXB1dGUgdGhlIHdvcnN0
IGNhc2UgaGVhZGVyIGxlbmd0aCBhY2NvcmRpbmcgdG8gdGhlIHByb3RvY29scworICoJdXNl
ZC4KKyAqLworIAorI2lmICFkZWZpbmVkKENPTkZJR19BWDI1KSAmJiAhZGVmaW5lZChDT05G
SUdfQVgyNV9NT0RVTEUpICYmICFkZWZpbmVkKENPTkZJR19UUikKKyNkZWZpbmUgTExfTUFY
X0hFQURFUgkzMgorI2Vsc2UKKyNpZiBkZWZpbmVkKENPTkZJR19BWDI1KSB8fCBkZWZpbmVk
KENPTkZJR19BWDI1X01PRFVMRSkKKyNkZWZpbmUgTExfTUFYX0hFQURFUgk5NgorI2Vsc2UK
KyNkZWZpbmUgTExfTUFYX0hFQURFUgk0OAorI2VuZGlmCisjZW5kaWYKKworI2lmICFkZWZp
bmVkKENPTkZJR19ORVRfSVBJUCkgJiYgXAorICAgICFkZWZpbmVkKENPTkZJR19JUFY2KSAm
JiAhZGVmaW5lZChDT05GSUdfSVBWNl9NT0RVTEUpCisjZGVmaW5lIE1BWF9IRUFERVIgTExf
TUFYX0hFQURFUgorI2Vsc2UKKyNkZWZpbmUgTUFYX0hFQURFUiAoTExfTUFYX0hFQURFUiAr
IDQ4KQorI2VuZGlmCisKKy8qCisgKglOZXR3b3JrIGRldmljZSBzdGF0aXN0aWNzLiBBa2lu
IHRvIHRoZSAyLjAgZXRoZXIgc3RhdHMgYnV0CisgKgl3aXRoIGJ5dGUgY291bnRlcnMuCisg
Ki8KKyAKK3N0cnVjdCBuZXRfZGV2aWNlX3N0YXRzCit7CisJdW5zaWduZWQgbG9uZwlyeF9w
YWNrZXRzOwkJLyogdG90YWwgcGFja2V0cyByZWNlaXZlZAkqLworCXVuc2lnbmVkIGxvbmcJ
dHhfcGFja2V0czsJCS8qIHRvdGFsIHBhY2tldHMgdHJhbnNtaXR0ZWQJKi8KKwl1bnNpZ25l
ZCBsb25nCXJ4X2J5dGVzOwkJLyogdG90YWwgYnl0ZXMgcmVjZWl2ZWQgCSovCisJdW5zaWdu
ZWQgbG9uZwl0eF9ieXRlczsJCS8qIHRvdGFsIGJ5dGVzIHRyYW5zbWl0dGVkCSovCisJdW5z
aWduZWQgbG9uZwlyeF9lcnJvcnM7CQkvKiBiYWQgcGFja2V0cyByZWNlaXZlZAkJKi8KKwl1
bnNpZ25lZCBsb25nCXR4X2Vycm9yczsJCS8qIHBhY2tldCB0cmFuc21pdCBwcm9ibGVtcwkq
LworCXVuc2lnbmVkIGxvbmcJcnhfZHJvcHBlZDsJCS8qIG5vIHNwYWNlIGluIGxpbnV4IGJ1
ZmZlcnMJKi8KKwl1bnNpZ25lZCBsb25nCXR4X2Ryb3BwZWQ7CQkvKiBubyBzcGFjZSBhdmFp
bGFibGUgaW4gbGludXgJKi8KKwl1bnNpZ25lZCBsb25nCW11bHRpY2FzdDsJCS8qIG11bHRp
Y2FzdCBwYWNrZXRzIHJlY2VpdmVkCSovCisJdW5zaWduZWQgbG9uZwljb2xsaXNpb25zOwor
CisJLyogZGV0YWlsZWQgcnhfZXJyb3JzOiAqLworCXVuc2lnbmVkIGxvbmcJcnhfbGVuZ3Ro
X2Vycm9yczsKKwl1bnNpZ25lZCBsb25nCXJ4X292ZXJfZXJyb3JzOwkJLyogcmVjZWl2ZXIg
cmluZyBidWZmIG92ZXJmbG93CSovCisJdW5zaWduZWQgbG9uZwlyeF9jcmNfZXJyb3JzOwkJ
LyogcmVjdmVkIHBrdCB3aXRoIGNyYyBlcnJvcgkqLworCXVuc2lnbmVkIGxvbmcJcnhfZnJh
bWVfZXJyb3JzOwkvKiByZWN2J2QgZnJhbWUgYWxpZ25tZW50IGVycm9yICovCisJdW5zaWdu
ZWQgbG9uZwlyeF9maWZvX2Vycm9yczsJCS8qIHJlY3YnciBmaWZvIG92ZXJydW4JCSovCisJ
dW5zaWduZWQgbG9uZwlyeF9taXNzZWRfZXJyb3JzOwkvKiByZWNlaXZlciBtaXNzZWQgcGFj
a2V0CSovCisKKwkvKiBkZXRhaWxlZCB0eF9lcnJvcnMgKi8KKwl1bnNpZ25lZCBsb25nCXR4
X2Fib3J0ZWRfZXJyb3JzOworCXVuc2lnbmVkIGxvbmcJdHhfY2Fycmllcl9lcnJvcnM7CisJ
dW5zaWduZWQgbG9uZwl0eF9maWZvX2Vycm9yczsKKwl1bnNpZ25lZCBsb25nCXR4X2hlYXJ0
YmVhdF9lcnJvcnM7CisJdW5zaWduZWQgbG9uZwl0eF93aW5kb3dfZXJyb3JzOworCQorCS8q
IGZvciBjc2xpcCBldGMgKi8KKwl1bnNpZ25lZCBsb25nCXJ4X2NvbXByZXNzZWQ7CisJdW5z
aWduZWQgbG9uZwl0eF9jb21wcmVzc2VkOworfTsKKworI2lmZGVmIENPTkZJR19ORVRfRkFT
VFJPVVRFCitzdHJ1Y3QgbmV0X2Zhc3Ryb3V0ZV9zdGF0cworeworCWludAkJaGl0czsKKwlp
bnQJCXN1Y2NlZWQ7CisJaW50CQlkZWZlcnJlZDsKKwlpbnQJCWxhdGVuY3lfcmVkdWN0aW9u
OworfTsKKyNlbmRpZgorCisvKiBNZWRpYSBzZWxlY3Rpb24gb3B0aW9ucy4gKi8KK2VudW0g
eworICAgICAgICBJRl9QT1JUX1VOS05PV04gPSAwLAorICAgICAgICBJRl9QT1JUXzEwQkFT
RTIsCisgICAgICAgIElGX1BPUlRfMTBCQVNFVCwKKyAgICAgICAgSUZfUE9SVF9BVUksCisg
ICAgICAgIElGX1BPUlRfMTAwQkFTRVQsCisgICAgICAgIElGX1BPUlRfMTAwQkFTRVRYLAor
ICAgICAgICBJRl9QT1JUXzEwMEJBU0VGWAorfTsKKworI2lmZGVmIF9fS0VSTkVMX18KKwor
ZXh0ZXJuIGNvbnN0IGNoYXIgKmlmX3BvcnRfdGV4dFtdOworCisjaW5jbHVkZSA8bGludXgv
c2tidWZmLmg+CisKK3N0cnVjdCBuZWlnaGJvdXI7CitzdHJ1Y3QgbmVpZ2hfcGFybXM7Citz
dHJ1Y3Qgc2tfYnVmZjsKKworLyoKKyAqCVdlIHRhZyBtdWx0aWNhc3RzIHdpdGggdGhlc2Ug
c3RydWN0dXJlcy4KKyAqLworIAorc3RydWN0IGRldl9tY19saXN0Cit7CQorCXN0cnVjdCBk
ZXZfbWNfbGlzdAkqbmV4dDsKKwlfX3U4CQkJZG1pX2FkZHJbTUFYX0FERFJfTEVOXTsKKwl1
bnNpZ25lZCBjaGFyCQlkbWlfYWRkcmxlbjsKKwlpbnQJCQlkbWlfdXNlcnM7CisJaW50CQkJ
ZG1pX2d1c2VyczsKK307CisKK3N0cnVjdCBoaF9jYWNoZQoreworCXN0cnVjdCBoaF9jYWNo
ZSAqaGhfbmV4dDsJLyogTmV4dCBlbnRyeQkJCSAgICAgKi8KKwlhdG9taWNfdAloaF9yZWZj
bnQ7CS8qIG51bWJlciBvZiB1c2VycyAgICAgICAgICAgICAgICAgICAqLworCXVuc2lnbmVk
IHNob3J0ICBoaF90eXBlOwkvKiBwcm90b2NvbCBpZGVudGlmaWVyLCBmLmUgRVRIX1BfSVAg
Ki8KKwlpbnQJCWhoX2xlbjsJCS8qIGxlbmd0aCBvZiBoZWFkZXIgKi8KKwlpbnQJCSgqaGhf
b3V0cHV0KShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKwlyd2xvY2tfdAloaF9sb2NrOworCS8q
IGNhY2hlZCBoYXJkd2FyZSBoZWFkZXI7IGFsbG93IGZvciBtYWNoaW5lIGFsaWdubWVudCBu
ZWVkcy4gICAgICAgICovCisJdW5zaWduZWQgbG9uZwloaF9kYXRhWzE2L3NpemVvZih1bnNp
Z25lZCBsb25nKV07Cit9OworCisKKy8qCisgKglUaGUgREVWSUNFIHN0cnVjdHVyZS4KKyAq
CUFjdHVhbGx5LCB0aGlzIHdob2xlIHN0cnVjdHVyZSBpcyBhIGJpZyBtaXN0YWtlLiAgSXQg
bWl4ZXMgSS9PCisgKglkYXRhIHdpdGggc3RyaWN0bHkgImhpZ2gtbGV2ZWwiIGRhdGEsIGFu
ZCBpdCBoYXMgdG8ga25vdyBhYm91dAorICoJYWxtb3N0IGV2ZXJ5IGRhdGEgc3RydWN0dXJl
IHVzZWQgaW4gdGhlIElORVQgbW9kdWxlLgorICoKKyAqCUZJWE1FOiBjbGVhbnVwIHN0cnVj
dCBuZXRfZGV2aWNlIHN1Y2ggdGhhdCBuZXR3b3JrIHByb3RvY29sIGluZm8KKyAqCW1vdmVz
IG91dC4KKyAqLworCitzdHJ1Y3QgbmV0X2RldmljZQoreworCisJLyoKKwkgKiBUaGlzIGlz
IHRoZSBmaXJzdCBmaWVsZCBvZiB0aGUgInZpc2libGUiIHBhcnQgb2YgdGhpcyBzdHJ1Y3R1
cmUKKwkgKiAoaS5lLiBhcyBzZWVuIGJ5IHVzZXJzIGluIHRoZSAiU3BhY2UuYyIgZmlsZSku
ICBJdCBpcyB0aGUgbmFtZQorCSAqIHRoZSBpbnRlcmZhY2UuCisJICovCisJY2hhcgkJCSpu
YW1lOworCisJLyoKKwkgKglJL08gc3BlY2lmaWMgZmllbGRzCisJICoJRklYTUU6IE1lcmdl
IHRoZXNlIGFuZCBzdHJ1Y3QgaWZtYXAgaW50byBvbmUKKwkgKi8KKwl1bnNpZ25lZCBsb25n
CQlybWVtX2VuZDsJLyogc2htZW0gInJlY3YiIGVuZAkqLworCXVuc2lnbmVkIGxvbmcJCXJt
ZW1fc3RhcnQ7CS8qIHNobWVtICJyZWN2IiBzdGFydAkqLworCXVuc2lnbmVkIGxvbmcJCW1l
bV9lbmQ7CS8qIHNoYXJlZCBtZW0gZW5kCSovCisJdW5zaWduZWQgbG9uZwkJbWVtX3N0YXJ0
OwkvKiBzaGFyZWQgbWVtIHN0YXJ0CSovCisJdW5zaWduZWQgbG9uZwkJYmFzZV9hZGRyOwkv
KiBkZXZpY2UgSS9PIGFkZHJlc3MJKi8KKwl1bnNpZ25lZCBpbnQJCWlycTsJCS8qIGRldmlj
ZSBJUlEgbnVtYmVyCSovCisJCisJLyogTG93LWxldmVsIHN0YXR1cyBmbGFncy4gKi8KKwl2
b2xhdGlsZSB1bnNpZ25lZCBjaGFyCXN0YXJ0OwkJLyogc3RhcnQgYW4gb3BlcmF0aW9uCSov
CisJLyoKKwkgKiBUaGVzZSB0d28gYXJlIGp1c3Qgc2luZ2xlLWJpdCBmbGFncywgYnV0IGR1
ZSB0byBhdG9taWNpdHkKKwkgKiByZWFzb25zIHRoZXkgaGF2ZSB0byBiZSBpbnNpZGUgYSAi
dW5zaWduZWQgbG9uZyIuIEhvd2V2ZXIsCisJICogdGhleSBzaG91bGQgYmUgaW5zaWRlIHRo
ZSBTQU1FIHVuc2lnbmVkIGxvbmcgaW5zdGVhZCBvZgorCSAqIHRoaXMgd2FzdGVmdWwgdXNl
IG9mIG1lbW9yeS4uCisJICovCisJdW5zaWduZWQgbG9uZwkJaW50ZXJydXB0OwkvKiBiaXRv
cHMuLiAqLworCXVuc2lnbmVkIGxvbmcJCXRidXN5OwkJLyogdHJhbnNtaXR0ZXIgYnVzeSAq
LworCQorCXN0cnVjdCBuZXRfZGV2aWNlCQkqbmV4dDsKKwkKKwkvKiBUaGUgZGV2aWNlIGlu
aXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBDYWxsZWQgb25seSBvbmNlLiAqLworCWludAkJCSgq
aW5pdCkoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CisKKwkvKiBJbnRlcmZhY2UgaW5kZXgu
IFVuaXF1ZSBkZXZpY2UgaWRlbnRpZmllcgkqLworCWludAkJCWlmaW5kZXg7CisJaW50CQkJ
aWZsaW5rOworCisJLyoKKwkgKglTb21lIGhhcmR3YXJlIGFsc28gbmVlZHMgdGhlc2UgZmll
bGRzLCBidXQgdGhleSBhcmUgbm90CisJICoJcGFydCBvZiB0aGUgdXN1YWwgc2V0IHNwZWNp
ZmllZCBpbiBTcGFjZS5jLgorCSAqLworCisJdW5zaWduZWQgY2hhcgkJaWZfcG9ydDsJLyog
U2VsZWN0YWJsZSBBVUksIFRQLC4uKi8KKwl1bnNpZ25lZCBjaGFyCQlkbWE7CQkvKiBETUEg
Y2hhbm5lbAkJKi8KKworCXN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzKiAoKmdldF9zdGF0cyko
c3RydWN0IG5ldF9kZXZpY2UgKmRldik7CisJc3RydWN0IGl3X3N0YXRpc3RpY3MqCSgqZ2V0
X3dpcmVsZXNzX3N0YXRzKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKKworCS8qCisJICog
VGhpcyBtYXJrcyB0aGUgZW5kIG9mIHRoZSAidmlzaWJsZSIgcGFydCBvZiB0aGUgc3RydWN0
dXJlLiBBbGwKKwkgKiBmaWVsZHMgaGVyZWFmdGVyIGFyZSBpbnRlcm5hbCB0byB0aGUgc3lz
dGVtLCBhbmQgbWF5IGNoYW5nZSBhdAorCSAqIHdpbGwgKHJlYWQ6IG1heSBiZSBjbGVhbmVk
IHVwIGF0IHdpbGwpLgorCSAqLworCisJLyogVGhlc2UgbWF5IGJlIG5lZWRlZCBmb3IgZnV0
dXJlIG5ldHdvcmstcG93ZXItZG93biBjb2RlLiAqLworCXVuc2lnbmVkIGxvbmcJCXRyYW5z
X3N0YXJ0OwkvKiBUaW1lIChpbiBqaWZmaWVzKSBvZiBsYXN0IFR4CSovCisJdW5zaWduZWQg
bG9uZwkJbGFzdF9yeDsJLyogVGltZSBvZiBsYXN0IFJ4CSovCisJCisJdW5zaWduZWQgc2hv
cnQJCWZsYWdzOwkvKiBpbnRlcmZhY2UgZmxhZ3MgKGEgbGEgQlNEKQkqLworCXVuc2lnbmVk
IHNob3J0CQlnZmxhZ3M7CisJdW5zaWduZWQJCW10dTsJLyogaW50ZXJmYWNlIE1UVSB2YWx1
ZQkJKi8KKwl1bnNpZ25lZCBzaG9ydAkJdHlwZTsJLyogaW50ZXJmYWNlIGhhcmR3YXJlIHR5
cGUJKi8KKwl1bnNpZ25lZCBzaG9ydAkJaGFyZF9oZWFkZXJfbGVuOwkvKiBoYXJkd2FyZSBo
ZHIgbGVuZ3RoCSovCisJdm9pZAkJCSpwcml2OwkvKiBwb2ludGVyIHRvIHByaXZhdGUgZGF0
YQkqLworCQorCS8qIEludGVyZmFjZSBhZGRyZXNzIGluZm8uICovCisJdW5zaWduZWQgY2hh
cgkJYnJvYWRjYXN0W01BWF9BRERSX0xFTl07CS8qIGh3IGJjYXN0IGFkZAkqLworCXVuc2ln
bmVkIGNoYXIJCXBhZDsJCS8qIG1ha2UgZGV2X2FkZHIgYWxpZ25lZCB0byA4IGJ5dGVzICov
CisJdW5zaWduZWQgY2hhcgkJZGV2X2FkZHJbTUFYX0FERFJfTEVOXTsJLyogaHcgYWRkcmVz
cwkqLworCXVuc2lnbmVkIGNoYXIJCWFkZHJfbGVuOwkvKiBoYXJkd2FyZSBhZGRyZXNzIGxl
bmd0aAkqLworCisJc3RydWN0IGRldl9tY19saXN0CSptY19saXN0OwkvKiBNdWx0aWNhc3Qg
bWFjIGFkZHJlc3NlcwkqLworCWludAkJCW1jX2NvdW50OwkvKiBOdW1iZXIgb2YgaW5zdGFs
bGVkIG1jYXN0cwkqLworCWludAkJCXByb21pc2N1aXR5OworCWludAkJCWFsbG11bHRpOwor
ICAgIAorCS8qIEZvciBsb2FkIGJhbGFuY2luZyBkcml2ZXIgcGFpciBzdXBwb3J0ICovCisg
IAorCXVuc2lnbmVkIGxvbmcJCXBrdF9xdWV1ZTsJLyogUGFja2V0cyBxdWV1ZWQJKi8KKwlz
dHJ1Y3QgbmV0X2RldmljZQkJKnNsYXZlOwkJLyogU2xhdmUgZGV2aWNlCQkqLworCisJLyog
UHJvdG9jb2wgc3BlY2lmaWMgcG9pbnRlcnMgKi8KKwkKKwl2b2lkIAkJCSphdGFsa19wdHI7
CS8qIEFwcGxlVGFsayBsaW5rIAkqLworCXZvaWQJCQkqaXBfcHRyOwkvKiBJUHY0IHNwZWNp
ZmljIGRhdGEJKi8gIAorCXZvaWQgICAgICAgICAgICAgICAgICAgICpkbl9wdHI7ICAgICAg
ICAvKiBERUNuZXQgc3BlY2lmaWMgZGF0YSAqLworCXZvaWQgICAgICAgICAgICAgICAgICAg
ICppcDZfcHRyOyAgICAgICAvKiBJUHY2IHNwZWNpZmljIGRhdGEgKi8KKworCXN0cnVjdCBR
ZGlzYwkJKnFkaXNjOworCXN0cnVjdCBRZGlzYwkJKnFkaXNjX3NsZWVwaW5nOworCXN0cnVj
dCBRZGlzYwkJKnFkaXNjX2xpc3Q7CisJdW5zaWduZWQgbG9uZwkJdHhfcXVldWVfbGVuOwkv
KiBNYXggZnJhbWVzIHBlciBxdWV1ZSBhbGxvd2VkICovCisKKwkvKiBoYXJkX3N0YXJ0X3ht
aXQgc3luY2hyb25pemVyICovCisJc3BpbmxvY2tfdAkJeG1pdF9sb2NrOworCS8qIGNwdSBp
ZCBvZiBwcm9jZXNzb3IgZW50ZXJlZCB0byBoYXJkX3N0YXJ0X3htaXQgb3IgLTEsCisJICAg
aWYgbm9ib2R5IGVudGVyZWQgdGhlcmUuCisJICovCisJaW50CQkJeG1pdF9sb2NrX293bmVy
OworCS8qIGRldmljZSBxdWV1ZSBsb2NrICovCisJc3BpbmxvY2tfdAkJcXVldWVfbG9jazsK
KwkvKiBOdW1iZXIgb2YgcmVmZXJlbmNlcyB0byB0aGlzIGRldmljZSAqLworCWF0b21pY190
CQlyZWZjbnQ7CisJLyogVGhlIGZsYWcgbWFya2luZyB0aGF0IGRldmljZSBpcyB1bnJlZ2lz
dGVyZWQsIGJ1dCBoZWxkIGJ5IGFuIHVzZXIgKi8KKwlpbnQJCQlkZWFkYmVhZjsKKwkvKiBO
ZXcgc3R5bGUgZGV2aWNlcyBhbGxvdyBhc3luY2hyb25vdXMgZGVzdHJ1Y3Rpb247CisJICAg
bmV0ZGV2aWNlX3VucmVnaXN0ZXIgZm9yIG9sZCBzdHlsZSBkZXZpY2VzIGJsb2NrcyB1bnRp
bAorCSAgIHRoZSBsYXN0IHVzZXIgd2lsbCBkZXJlZmVyZW5jZSB0aGlzIGRldmljZS4KKwkg
Ki8KKwlpbnQJCQluZXdfc3R5bGU7CisJLyogQ2FsbGVkIGFmdGVyIGRldmljZSBpcyBkZXRh
Y2hlZCBmcm9tIG5ldHdvcmsuICovCisJdm9pZAkJCSgqdW5pbml0KShzdHJ1Y3QgbmV0X2Rl
dmljZSAqZGV2KTsKKwkvKiBDYWxsZWQgYWZ0ZXIgbGFzdCB1c2VyIHJlZmVyZW5jZSBkaXNh
cHBlYXJzLiAqLworCXZvaWQJCQkoKmRlc3RydWN0b3IpKHN0cnVjdCBuZXRfZGV2aWNlICpk
ZXYpOworCisJLyogQnJpZGdlIHN0dWZmICovCisJaW50CQkJYnJpZGdlX3BvcnRfaWQ7CQkK
KwkKKwkvKiBQb2ludGVycyB0byBpbnRlcmZhY2Ugc2VydmljZSByb3V0aW5lcy4JKi8KKwlp
bnQJCQkoKm9wZW4pKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOworCWludAkJCSgqc3RvcCko
c3RydWN0IG5ldF9kZXZpY2UgKmRldik7CisJaW50CQkJKCpoYXJkX3N0YXJ0X3htaXQpIChz
dHJ1Y3Qgc2tfYnVmZiAqc2tiLAorCQkJCQkJICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYp
OworCWludAkJCSgqaGFyZF9oZWFkZXIpIChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAorCQkJCQkJ
c3RydWN0IG5ldF9kZXZpY2UgKmRldiwKKwkJCQkJCXVuc2lnbmVkIHNob3J0IHR5cGUsCisJ
CQkJCQl2b2lkICpkYWRkciwKKwkJCQkJCXZvaWQgKnNhZGRyLAorCQkJCQkJdW5zaWduZWQg
bGVuKTsKKwlpbnQJCQkoKnJlYnVpbGRfaGVhZGVyKShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsK
KyNkZWZpbmUgSEFWRV9NVUxUSUNBU1QJCQkgCisJdm9pZAkJCSgqc2V0X211bHRpY2FzdF9s
aXN0KShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKKyNkZWZpbmUgSEFWRV9TRVRfTUFDX0FE
RFIgIAkJIAorCWludAkJCSgqc2V0X21hY19hZGRyZXNzKShzdHJ1Y3QgbmV0X2RldmljZSAq
ZGV2LAorCQkJCQkJICAgdm9pZCAqYWRkcik7CisjZGVmaW5lIEhBVkVfUFJJVkFURV9JT0NU
TAorCWludAkJCSgqZG9faW9jdGwpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCisJCQkJCSAg
ICBzdHJ1Y3QgaWZyZXEgKmlmciwgaW50IGNtZCk7CisjZGVmaW5lIEhBVkVfU0VUX0NPTkZJ
RworCWludAkJCSgqc2V0X2NvbmZpZykoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKKwkJCQkJ
ICAgICAgc3RydWN0IGlmbWFwICptYXApOworI2RlZmluZSBIQVZFX0hFQURFUl9DQUNIRQor
CWludAkJCSgqaGFyZF9oZWFkZXJfY2FjaGUpKHN0cnVjdCBuZWlnaGJvdXIgKm5laWdoLAor
CQkJCQkJICAgICBzdHJ1Y3QgaGhfY2FjaGUgKmhoKTsKKwl2b2lkCQkJKCpoZWFkZXJfY2Fj
aGVfdXBkYXRlKShzdHJ1Y3QgaGhfY2FjaGUgKmhoLAorCQkJCQkJICAgICAgIHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYsCisJCQkJCQkgICAgICAgdW5zaWduZWQgY2hhciAqICBoYWRkcik7
CisjZGVmaW5lIEhBVkVfQ0hBTkdFX01UVQorCWludAkJCSgqY2hhbmdlX210dSkoc3RydWN0
IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpOworCisJaW50CQkJKCpoYXJkX2hlYWRl
cl9wYXJzZSkoc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJCQkJCSAgICAgdW5zaWduZWQgY2hh
ciAqaGFkZHIpOworCWludAkJCSgqbmVpZ2hfc2V0dXApKHN0cnVjdCBuZXRfZGV2aWNlICpk
ZXYsIHN0cnVjdCBuZWlnaF9wYXJtcyAqKTsKKwlpbnQJCQkoKmFjY2VwdF9mYXN0cGF0aCko
c3RydWN0IG5ldF9kZXZpY2UgKiwgc3RydWN0IGRzdF9lbnRyeSopOworCisjaWZkZWYgQ09O
RklHX05FVF9GQVNUUk9VVEUKKwl1bnNpZ25lZCBsb25nCQl0eF9zZW1hcGhvcmU7CisjZGVm
aW5lIE5FVERFVl9GQVNUUk9VVEVfSE1BU0sgMHhGCisJLyogU2VtaS1wcml2YXRlIGRhdGEu
IEtlZXAgaXQgYXQgdGhlIGVuZCBvZiBkZXZpY2Ugc3RydWN0LiAqLworCXJ3bG9ja190CQlm
YXN0cGF0aF9sb2NrOworCXN0cnVjdCBkc3RfZW50cnkJKmZhc3RwYXRoW05FVERFVl9GQVNU
Uk9VVEVfSE1BU0srMV07CisjZW5kaWYKK307CisKKworc3RydWN0IHBhY2tldF90eXBlIAor
eworCXVuc2lnbmVkIHNob3J0CQl0eXBlOwkvKiBUaGlzIGlzIHJlYWxseSBodG9ucyhldGhl
cl90eXBlKS4JKi8KKwlzdHJ1Y3QgbmV0X2RldmljZQkJKmRldjsJLyogTlVMTCBpcyB3aWxk
Y2FyZGVkIGhlcmUJCSovCisJaW50CQkJKCpmdW5jKSAoc3RydWN0IHNrX2J1ZmYgKiwgc3Ry
dWN0IG5ldF9kZXZpY2UgKiwKKwkJCQkJIHN0cnVjdCBwYWNrZXRfdHlwZSAqKTsKKwl2b2lk
CQkJKmRhdGE7CS8qIFByaXZhdGUgdG8gdGhlIHBhY2tldCB0eXBlCQkqLworCXN0cnVjdCBw
YWNrZXRfdHlwZQkqbmV4dDsKK307CisKKworI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5o
PgorI2luY2x1ZGUgPGxpbnV4L25vdGlmaWVyLmg+CisKK2V4dGVybiBzdHJ1Y3QgbmV0X2Rl
dmljZQkJbG9vcGJhY2tfZGV2OwkJLyogVGhlIGxvb3BiYWNrICovCitleHRlcm4gc3RydWN0
IG5ldF9kZXZpY2UJCSpkZXZfYmFzZTsJCS8qIEFsbCBkZXZpY2VzICovCitleHRlcm4gcnds
b2NrX3QJCQlkZXZfYmFzZV9sb2NrOwkJLyogRGV2aWNlIGxpc3QgbG9jayAqLworZXh0ZXJu
IGludAkJCW5ldGRldl9kcm9wcGluZzsKK2V4dGVybiBpbnQJCQluZXRfY3B1X2Nvbmdlc3Rp
b247CisKK2V4dGVybiBzdHJ1Y3QgbmV0X2RldmljZSAgICAqZGV2X2dldGJ5aHdhZGRyKHVu
c2lnbmVkIHNob3J0IHR5cGUsIGNoYXIgKmh3YWRkcik7CitleHRlcm4gdm9pZAkJZGV2X2Fk
ZF9wYWNrKHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQpOworZXh0ZXJuIHZvaWQJCWRldl9yZW1v
dmVfcGFjayhzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0KTsKK2V4dGVybiBpbnQJCWRldl9nZXQo
Y29uc3QgY2hhciAqbmFtZSk7CitleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UJKmRldl9nZXRf
YnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTsKK2V4dGVybiBzdHJ1Y3QgbmV0X2RldmljZQkq
X19kZXZfZ2V0X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSk7CitleHRlcm4gc3RydWN0IG5l
dF9kZXZpY2UJKmRldl9hbGxvYyhjb25zdCBjaGFyICpuYW1lLCBpbnQgKmVycik7CitleHRl
cm4gaW50CQlkZXZfYWxsb2NfbmFtZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBj
aGFyICpuYW1lKTsKK2V4dGVybiBpbnQJCWRldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpk
ZXYpOworZXh0ZXJuIGludAkJZGV2X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwor
ZXh0ZXJuIGludAkJZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYik7CitleHRl
cm4gdm9pZAkJZGV2X2xvb3BiYWNrX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYik7CitleHRl
cm4gaW50CQlyZWdpc3Rlcl9uZXRkZXZpY2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7Citl
eHRlcm4gaW50CQl1bnJlZ2lzdGVyX25ldGRldmljZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2
KTsKK2V4dGVybiBpbnQgCQlyZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoc3RydWN0IG5v
dGlmaWVyX2Jsb2NrICpuYik7CitleHRlcm4gaW50CQl1bnJlZ2lzdGVyX25ldGRldmljZV9u
b3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKK2V4dGVybiBpbnQJCWRldl9u
ZXdfaW5kZXgodm9pZCk7CitleHRlcm4gc3RydWN0IG5ldF9kZXZpY2UJKmRldl9nZXRfYnlf
aW5kZXgoaW50IGlmaW5kZXgpOworZXh0ZXJuIHN0cnVjdCBuZXRfZGV2aWNlCSpfX2Rldl9n
ZXRfYnlfaW5kZXgoaW50IGlmaW5kZXgpOworZXh0ZXJuIGludAkJZGV2X3Jlc3RhcnQoc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldik7CisKK3R5cGVkZWYgaW50IGdpZmNvbmZfZnVuY190KHN0
cnVjdCBuZXRfZGV2aWNlICogZGV2LCBjaGFyICogYnVmcHRyLCBpbnQgbGVuKTsKK2V4dGVy
biBpbnQJCXJlZ2lzdGVyX2dpZmNvbmYodW5zaWduZWQgaW50IGZhbWlseSwgZ2lmY29uZl9m
dW5jX3QgKiBnaWZjb25mKTsKK2V4dGVybiBfX2lubGluZV9fIGludCB1bnJlZ2lzdGVyX2dp
ZmNvbmYodW5zaWduZWQgaW50IGZhbWlseSkKK3sKKwlyZXR1cm4gcmVnaXN0ZXJfZ2lmY29u
ZihmYW1pbHksIDApOworfQorCisjZGVmaW5lIEhBVkVfTkVUSUZfUlggMQorZXh0ZXJuIHZv
aWQJCW5ldGlmX3J4KHN0cnVjdCBza19idWZmICpza2IpOworZXh0ZXJuIHZvaWQJCW5ldF9i
aCh2b2lkKTsKK2V4dGVybiBpbnQJCWRldl9pb2N0bCh1bnNpZ25lZCBpbnQgY21kLCB2b2lk
ICopOworZXh0ZXJuIGludAkJZGV2X2NoYW5nZV9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAq
LCB1bnNpZ25lZCk7CitleHRlcm4gdm9pZAkJZGV2X3F1ZXVlX3htaXRfbml0KHN0cnVjdCBz
a19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOworCitleHRlcm4gdm9pZAkJ
ZGV2X2luaXQodm9pZCk7CisKK2V4dGVybiBpbnQJCW5ldGRldl9uaXQ7CisKK2V4dGVybiBf
X2lubGluZV9fIHZvaWQgZGV2X2luaXRfYnVmZmVycyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2
KQoreworCS8qIERPIE5PVEhJTkcgKi8KK30KKworZXh0ZXJuIGludCBuZXRkZXZfZmluaXNo
X3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CisKK2V4dGVybiBfX2lubGlu
ZV9fIHZvaWQgZGV2X3B1dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCWlmIChhdG9t
aWNfZGVjX2FuZF90ZXN0KCZkZXYtPnJlZmNudCkpCisJCW5ldGRldl9maW5pc2hfdW5yZWdp
c3RlcihkZXYpOworfQorCisjZGVmaW5lIF9fZGV2X3B1dChkZXYpIGF0b21pY19kZWMoJihk
ZXYpLT5yZWZjbnQpCisjZGVmaW5lIGRldl9ob2xkKGRldikgYXRvbWljX2luYygmKGRldikt
PnJlZmNudCkKKworCisvKiBUaGVzZSBmdW5jdGlvbnMgbGl2ZSBlbHNld2hlcmUgKGRyaXZl
cnMvbmV0L25ldF9pbml0LmMsIGJ1dCByZWxhdGVkKSAqLworCitleHRlcm4gdm9pZAkJZXRo
ZXJfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CitleHRlcm4gdm9pZAkJZmRkaV9z
ZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKK2V4dGVybiB2b2lkCQl0cl9zZXR1cChz
dHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKK2V4dGVybiB2b2lkCQlmY19zZXR1cChzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2KTsKK2V4dGVybiB2b2lkCQlmY19mcmVlZGV2KHN0cnVjdCBuZXRf
ZGV2aWNlICpkZXYpOworZXh0ZXJuIGludAkJZXRoZXJfY29uZmlnKHN0cnVjdCBuZXRfZGV2
aWNlICpkZXYsIHN0cnVjdCBpZm1hcCAqbWFwKTsKKy8qIFN1cHBvcnQgZm9yIGxvYWRhYmxl
IG5ldC1kcml2ZXJzICovCitleHRlcm4gaW50CQlyZWdpc3Rlcl9uZXRkZXYoc3RydWN0IG5l
dF9kZXZpY2UgKmRldik7CitleHRlcm4gdm9pZAkJdW5yZWdpc3Rlcl9uZXRkZXYoc3RydWN0
IG5ldF9kZXZpY2UgKmRldik7CitleHRlcm4gaW50CQlyZWdpc3Rlcl90cmRldihzdHJ1Y3Qg
bmV0X2RldmljZSAqZGV2KTsKK2V4dGVybiB2b2lkCQl1bnJlZ2lzdGVyX3RyZGV2KHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpOworZXh0ZXJuIGludAkJcmVnaXN0ZXJfZmNkZXYoc3RydWN0
IG5ldF9kZXZpY2UgKmRldik7CitleHRlcm4gdm9pZAkJdW5yZWdpc3Rlcl9mY2RldihzdHJ1
Y3QgbmV0X2RldmljZSAqZGV2KTsKKy8qIEZ1bmN0aW9ucyB1c2VkIGZvciBtdWx0aWNhc3Qg
c3VwcG9ydCAqLworZXh0ZXJuIHZvaWQJCWRldl9tY191cGxvYWQoc3RydWN0IG5ldF9kZXZp
Y2UgKmRldik7CitleHRlcm4gaW50IAkJZGV2X21jX2RlbGV0ZShzdHJ1Y3QgbmV0X2Rldmlj
ZSAqZGV2LCB2b2lkICphZGRyLCBpbnQgYWxlbiwgaW50IGFsbCk7CitleHRlcm4gaW50CQlk
ZXZfbWNfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIsIGludCBhbGVu
LCBpbnQgbmV3b25seSk7CitleHRlcm4gdm9pZAkJZGV2X21jX2Rpc2NhcmQoc3RydWN0IG5l
dF9kZXZpY2UgKmRldik7CitleHRlcm4gdm9pZAkJZGV2X3NldF9wcm9taXNjdWl0eShzdHJ1
Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgaW5jKTsKK2V4dGVybiB2b2lkCQlkZXZfc2V0X2Fs
bG11bHRpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBpbmMpOworZXh0ZXJuIHZvaWQJ
CW5ldGRldl9zdGF0ZV9jaGFuZ2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CisvKiBMb2Fk
IGEgZGV2aWNlIHZpYSB0aGUga21vZCAqLworZXh0ZXJuIHZvaWQJCWRldl9sb2FkKGNvbnN0
IGNoYXIgKm5hbWUpOworZXh0ZXJuIHZvaWQJCWRldl9tY2FzdF9pbml0KHZvaWQpOworZXh0
ZXJuIGludAkJbmV0ZGV2X3JlZ2lzdGVyX2ZjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZv
aWQgKCpzdGltdWwpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpKTsKK2V4dGVybiB2b2lkCQlu
ZXRkZXZfdW5yZWdpc3Rlcl9mYyhpbnQgYml0KTsKK2V4dGVybiBpbnQJCW5ldGRldl9kcm9w
cGluZzsKK2V4dGVybiBpbnQJCW5ldGRldl9tYXhfYmFja2xvZzsKK2V4dGVybiBhdG9taWNf
dAkJbmV0ZGV2X3J4X2Ryb3BwZWQ7CitleHRlcm4gdW5zaWduZWQgbG9uZwluZXRkZXZfZmNf
eG9mZjsKKyNpZmRlZiBDT05GSUdfTkVUX0ZBU1RST1VURQorZXh0ZXJuIGludAkJbmV0ZGV2
X2Zhc3Ryb3V0ZTsKK2V4dGVybiBpbnQJCW5ldGRldl9mYXN0cm91dGVfb2JzdGFjbGVzOwor
ZXh0ZXJuIHZvaWQJCWRldl9jbGVhcl9mYXN0cm91dGUoc3RydWN0IG5ldF9kZXZpY2UgKmRl
dik7CitleHRlcm4gc3RydWN0IG5ldF9mYXN0cm91dGVfc3RhdHMgZGV2X2Zhc3Ryb3V0ZV9z
dGF0OworI2VuZGlmCisKKworI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KKworI2VuZGlmCS8q
IF9MSU5VWF9ERVZfSCAqLwpkaWZmIC11ck4gbGludXgtMi4zLjM2Lm9yaWcvaW5jbHVkZS9u
ZXQvc29jay5oIGxpbnV4LTIuMy4zNi9pbmNsdWRlL25ldC9zb2NrLmgKLS0tIGxpbnV4LTIu
My4zNi5vcmlnL2luY2x1ZGUvbmV0L3NvY2suaAlUaHUgSmFuICA2IDA5OjI1OjE5IDIwMDAK
KysrIGxpbnV4LTIuMy4zNi9pbmNsdWRlL25ldC9zb2NrLmgJVGh1IEphbiAgNiAwOToyNjoz
MCAyMDAwCkBAIC00NjYsNyArNDY2LDEzIEBACiAJc3RydWN0IHByb3RvCQkqcHJvdDsKIAog
CXVuc2lnbmVkIHNob3J0CQlzaHV0ZG93bjsKLQorI2lmIENPTkZJR19UUgorCS8qIHVzZWQg
dG8gc3BlZWQgdXAgc291cmNlIHJvdXRpbmcuICovCisgICAgICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgKmhpbnQ7CisJLyogaGludF9pZHggaXMgbmVlZGVkIHNvIHRoYXQgd2Ug
Y2FuIHRlbGwgd2hldGhlciB0aGUgaGludCBpcyB2YWxpZCAqLworCS8qIGkuZS4gdGhlIG1l
bW9yeSBpdCBwb2ludHMgdG8gaGFzbid0IGJlZW4gZnJlZWQgdXAgKi8KKwlpbnQgICAgICAg
ICAgICAgICAgICAgICAgICBoaW50X2lkeDsKKyNlbmRpZgogI2lmIGRlZmluZWQoQ09ORklH
X0lQVjYpIHx8IGRlZmluZWQgKENPTkZJR19JUFY2X01PRFVMRSkKIAl1bmlvbiB7CiAJCXN0
cnVjdCBpcHY2X3BpbmZvCWFmX2luZXQ2OwpkaWZmIC11ck4gbGludXgtMi4zLjM2Lm9yaWcv
bmV0LzgwMi9zeXNjdGxfbmV0XzgwMi5jIGxpbnV4LTIuMy4zNi9uZXQvODAyL3N5c2N0bF9u
ZXRfODAyLmMKLS0tIGxpbnV4LTIuMy4zNi5vcmlnL25ldC84MDIvc3lzY3RsX25ldF84MDIu
YwlUaHUgSmFuICA2IDA5OjI1OjIwIDIwMDAKKysrIGxpbnV4LTIuMy4zNi9uZXQvODAyL3N5
c2N0bF9uZXRfODAyLmMJVGh1IEphbiAgNiAwOToyNjozMCAyMDAwCkBAIC0xOSw5ICsxOSw5
IEBACiB9OwogCiAjaWZkZWYgQ09ORklHX1RSCi1leHRlcm4gaW50IHN5c2N0bF90cl9yaWZf
dGltZW91dDsKK2V4dGVybiBpbnQgc3lzY3RsX3RyX3JpZl9saW5rZWRfbGlzdF93aWR0aDsK
IGN0bF90YWJsZSB0cl90YWJsZVtdID0gewotCXtORVRfVFJfUklGX1RJTUVPVVQsICJyaWZf
dGltZW91dCIsICZzeXNjdGxfdHJfcmlmX3RpbWVvdXQsIHNpemVvZihpbnQpLAorCXtORVRf
VFJfUklGX1RJTUVPVVQsICJyaWZfbGlua2VkX2xpc3Rfd2lkdGgiLCAmc3lzY3RsX3RyX3Jp
Zl9saW5rZWRfbGlzdF93aWR0aCwgc2l6ZW9mKGludCksCiAJIDA2NDQsIE5VTEwsICZwcm9j
X2RvaW50dmVjfSwKIAl7MH0KIH07CmRpZmYgLXVyTiBsaW51eC0yLjMuMzYub3JpZy9uZXQv
ODAyL3RyLmMgbGludXgtMi4zLjM2L25ldC84MDIvdHIuYwotLS0gbGludXgtMi4zLjM2Lm9y
aWcvbmV0LzgwMi90ci5jCVRodSBKYW4gIDYgMDk6MjU6MjAgMjAwMAorKysgbGludXgtMi4z
LjM2L25ldC84MDIvdHIuYwlUaHUgSmFuICA2IDA5OjI2OjMwIDIwMDAKQEAgLTYsNiArNiwx
OSBAQAogICoJCWFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIgdmVyc2lvbgogICoJCTIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAgKgorICogICAgICAgICAgICAgIE1heSc5OSBE
LkogQmFycm93IGJhcnJvd19kakB5YWhvby5jb20gCisgKiAgICAgICAgICAgICAgYWRkZWQg
Y29kZSBjbGVhbnVwcywgYWRkZWQgc21wIHNhZmUgbG9ja2luZyAKKyAqICAgICAgICAgICAg
ICByZW1vdmVkIGJyb2tlbiBzdGkvY2xpIHN0dWZmLCBmaXhlZAorICogICAgICAgICAgICAg
IHJhY2UgY29uZGl0aW9ucyAmIGFkZGVkIGxpbWl0aW5nIHRvIHRoZSBzaXplIG9mIHRoZQor
ICogICAgICAgICAgICAgIHJpZl90YWJsZS4KKyAqICAgICAgICAgICAgICBwdXQgcmlmIGNh
Y2hlcyBpbiBkZXZpY2Ugc3RydWN0dXJlIHdoZXJlIHRoZXkgc2hvdWxkIGJlIAorICogICAg
ICAgICAgICAgIHRvIGF2b2lkIHNtcCBsb2NrIGNvbGxpc2lvbnMgaWYgYSBmZXcgdG9rZW4g
cmluZyBkZXZpY2VzCisgKiAgICAgICAgICAgICAgYXJlIGdvaW5nIGNvbmN1cnJlbnRseS4K
KyAqICAgICAgICAgICAgICBBZGRlZCBoaW50IGZpZWxkIHRvIHNvY2sgc3RydWN0ICYgbm93
IHVzaW5nIDMgbGlua2VkIGxpc3RzCisgKiAgICAgICAgICAgICAgdG8gbWluaW1pc2UgbGlu
a2VkIGxpc3Qgd2Fsa2luZyBzZWUgaWZfdHIuaCBmb3IgaW5mby4KKyAqICAgICAgICAgICAg
ICBBZGRlZCBjb3JyZWN0IE1UVSBmaXh1cHMgdG8gdHJhbnNtaXR0ZWQgcmlmcyBzbyB0aGF0
CisgKiAgICAgICAgICAgICAgQ2hhbmdpbmcgdGhlIE1UVSBzaXplIGlzIHN1cHBvcnRlZCBi
ZXR0ZXIuCisgKgogICogRml4ZXM6ICAgICAgIDMgRmViIDk3IFBhdWwgTm9ydG9uIDxwbm9y
dG9uQGN0cy5jb20+IE1pbm9yIHJvdXRpbmcgZml4ZXMuCiAgKiAgICAgICAgICAgICAgQWRk
ZWQgcmlmIHRhYmxlIHRvIC9wcm9jL25ldC90cl9yaWYgYW5kIHJpZiB0aW1lb3V0IHRvCiAg
KiAgICAgICAgICAgICAgL3Byb2Mvc3lzL25ldC90b2tlbi1yaW5nL3JpZl90aW1lb3V0LgpA
QCAtMzAsMjg4ICs0Myw0NTcgQEAKICNpbmNsdWRlIDxsaW51eC90cmRldmljZS5oPgogI2lu
Y2x1ZGUgPGxpbnV4L3NrYnVmZi5oPgogI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5j
bHVkZSA8bGludXgvc3RyaW5nLmg+CiAjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KICNpbmNs
dWRlIDxsaW51eC9uZXQuaD4KICNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+CiAjaW5jbHVk
ZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPG5ldC9hcnAuaD4KKyNpbmNsdWRlIDxhc20v
YXRvbWljLmg+CisjaW5jbHVkZSA8YXNtL2JpdG9wcy5oPgorI2luY2x1ZGUgPGxpbnV4L2lm
X3RyLmg+CisjaW5jbHVkZSA8bmV0L3NvY2suaD4KIAotc3RhdGljIHZvaWQgdHJfc291cmNl
X3JvdXRlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0cmhfaGRyICp0cmgsIHN0cnVj
dCBuZXRfZGV2aWNlICpkZXYpOwotc3RhdGljIHZvaWQgdHJfYWRkX3JpZl9pbmZvKHN0cnVj
dCB0cmhfaGRyICp0cmgsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwotc3RhdGljIHZvaWQg
cmlmX2NoZWNrX2V4cGlyZSh1bnNpZ25lZCBsb25nIGR1bW15KTsKIAotI2RlZmluZSBUUl9T
Ul9ERUJVRyAwCiAKLXR5cGVkZWYgc3RydWN0IHJpZl9jYWNoZV9zICpyaWZfY2FjaGU7CiAK
LS8qCi0gKglFYWNoIFJJRiBlbnRyeSB3ZSBsZWFybiBpcyBrZXB0IHRoaXMgd2F5Ci0gKi8K
LSAKLXN0cnVjdCByaWZfY2FjaGVfcyB7CQotCXVuc2lnbmVkIGNoYXIgYWRkcltUUl9BTEVO
XTsKLQlpbnQgaWZhY2U7Ci0JX191MTYgcmNmOwotCV9fdTE2IHJzZWdbOF07Ci0JcmlmX2Nh
Y2hlIG5leHQ7Ci0JdW5zaWduZWQgbG9uZyBsYXN0X3VzZWQ7Ci0JdW5zaWduZWQgY2hhciBs
b2NhbF9yaW5nOwotfTsKLQotI2RlZmluZSBSSUZfVEFCTEVfU0laRSAzMgotCi0vKgotICoJ
V2UgaGFzaCB0aGUgUklGIGNhY2hlIDMyIHdheXMuIFdlIGRvIGFmdGVyIGFsbCBoYXZlIHRv
IGxvb2sgaXQKLSAqCXVwIGEgbG90LgotICovCi0gCi1yaWZfY2FjaGUgcmlmX3RhYmxlW1JJ
Rl9UQUJMRV9TSVpFXT17IE5VTEwsIH07CiAKLXN0YXRpYyBzcGlubG9ja190IHJpZl9sb2Nr
ID0gU1BJTl9MT0NLX1VOTE9DS0VEOworI2RlZmluZSBUUl9TUl9ERUJVRyAgMAorI2RlZmlu
ZSBUUl9TUl9TQU5JVFkgMAorI2RlZmluZSBUUl9ERUJVR19USU1FIDAKKyNkZWZpbmUgVFJf
U1JfQlJPQURDQVNUX0RFQlVHIDAKKyNkZWZpbmUgVFJfU1JfTElTVFBFUkYgMCAvKiBDb21w
aWxlIHdpdGggdGhpcyBvbiBpZiBkdWJpb3VzIGFib3V0IG15IGNsYWltcyBESkIgKi8KKyNk
ZWZpbmUgVFJfUklGX0JVRkZfU0laRSAgNjQKKyNkZWZpbmUgVFJfUklGX0NBQ0hFX0xJU1Rf
U0laRSAgICAgICAgIDY0CisjZGVmaW5lIFRSX1JJRl9MSU5LRURfTElTVF9XSURUSCAgICAg
ICA4CisjaWYgMAorI2RlZmluZSBUUl9SSUZfQ0FDSEVfTElTVF9TSVpFICAgICAgIDQKKyNk
ZWZpbmUgVFJfUklGX0xJTktFRF9MSVNUX1dJRFRIICAgICA0CisjZW5kaWYKKyNpZiBUUl9E
RUJVR19MT0NLUwogCi0jZGVmaW5lIFJJRl9USU1FT1VUIDYwKjEwKkhaCi0jZGVmaW5lIFJJ
Rl9DSEVDS19JTlRFUlZBTCA2MCpIWgorY2hhciBsb2NrYnVmZlsyNTZdOwogCi0vKgotICoJ
R2FyYmFnZSBkaXNwb3NhbCB0aW1lci4KLSAqLwotIAotc3RhdGljIHN0cnVjdCB0aW1lcl9s
aXN0IHJpZl90aW1lcjsKK2ludCB0cl9sb2NrMihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LGNo
YXIgKmZpbGUsaW50IGxpbmUpCit7ICAgICAgCisJaWYodGVzdF9hbmRfc2V0X2JpdCgxLCZk
ZXYtPnRyX2xvY2spPT0wKSB7CisJCXNwcmludGYobG9ja2J1ZmYsImxvY2tidWZmICVzICVk
XG4iLGZpbGUsbGluZSk7CisJCXJldHVybihUUlVFKTsKKwl9CisJcmV0dXJuKEZBTFNFKTsK
K30KKyNlbmRpZgogCi1pbnQgc3lzY3RsX3RyX3JpZl90aW1lb3V0ID0gUklGX1RJTUVPVVQ7
CitpbnQgc3lzY3RsX3RyX3JpZl9saW5rZWRfbGlzdF93aWR0aD1UUl9SSUZfTElOS0VEX0xJ
U1RfV0lEVEg7CiAKIC8qCiAgKglQdXQgdGhlIGhlYWRlcnMgb24gYSB0b2tlbiByaW5nIHBh
Y2tldC4gVG9rZW4gcmluZyBzb3VyY2Ugcm91dGluZwogICoJbWFrZXMgdGhpcyBhIGxpdHRs
ZSBtb3JlIGV4Y2l0aW5nIHRoYW4gb24gZXRoZXJuZXQuCiAgKi8KLSAKLWludCB0cl9oZWFk
ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWdu
ZWQgc2hvcnQgdHlwZSwKLSAgICAgICAgICAgICAgdm9pZCAqZGFkZHIsIHZvaWQgKnNhZGRy
LCB1bnNpZ25lZCBsZW4pIAotewotCXN0cnVjdCB0cmhfaGRyICp0cmg7Ci0JaW50IGhkcl9s
ZW47CiAKLQkvKiAKLQkgKiBBZGQgdGhlIDgwMi4yIFNOQVAgaGVhZGVyIGlmIElQIGFzIHRo
ZSBJUHY0IGNvZGUgY2FsbHMgIAotCSAqIGRldi0+aGFyZF9oZWFkZXIgZGlyZWN0bHkuCi0J
ICovCi0JaWYgKHR5cGUgPT0gRVRIX1BfSVAgfHwgdHlwZSA9PSBFVEhfUF9BUlApCitzdGF0
aWMgaGRyXzgwMjIgaGRyXzgwMjJsaXN0W10gPSAKK3sKIAl7Ci0JCXN0cnVjdCB0cmxsYyAq
dHJsbGM9KHN0cnVjdCB0cmxsYyAqKSh0cmgrMSk7CisJCUVYVEVOREVEX1NBUCwgICAgIC8q
IEZPUiBFVEhfUF9JUCAmIEFSUCAqLworCQlFWFRFTkRFRF9TQVAsICAgICAKKwkJVUlfQ01E
LAorCQl7MCwwLDB9LAorCX0sCit9OwogCi0JCWhkcl9sZW4gPSBzaXplb2Yoc3RydWN0IHRy
aF9oZHIpICsgc2l6ZW9mKHN0cnVjdCB0cmxsYyk7Ci0JCXRyaCA9IChzdHJ1Y3QgdHJoX2hk
ciAqKXNrYl9wdXNoKHNrYiwgaGRyX2xlbik7Ci0JCXRybGxjID0gKHN0cnVjdCB0cmxsYyAq
KSh0cmgrMSk7Ci0JCXRybGxjLT5kc2FwID0gdHJsbGMtPnNzYXAgPSBFWFRFTkRFRF9TQVA7
Ci0JCXRybGxjLT5sbGMgPSBVSV9DTUQ7Ci0JCXRybGxjLT5wcm90aWRbMF0gPSB0cmxsYy0+
cHJvdGlkWzFdID0gdHJsbGMtPnByb3RpZFsyXSA9IDB4MDA7Ci0JCXRybGxjLT5ldGhlcnR5
cGUgPSBodG9ucyh0eXBlKTsKLQl9Ci0JZWxzZQotCXsKLQkJaGRyX2xlbiA9IHNpemVvZihz
dHJ1Y3QgdHJoX2hkcik7Ci0JCXRyaCA9IChzdHJ1Y3QgdHJoX2hkciAqKXNrYl9wdXNoKHNr
YiwgaGRyX2xlbik7CQotCX0KK3ZvaWQgKnRyX2FsbG9jKHNpemVfdCBzaXplKQoreworCXZv
aWQgKnJldHZhbD1rbWFsbG9jKHNpemUsR0ZQX0FUT01JQyk7CiAKLQl0cmgtPmFjPUFDOwot
CXRyaC0+ZmM9TExDX0ZSQU1FOworCWlmKHJldHZhbCkKKwkJbWVtc2V0KHJldHZhbCwwLHNp
emUpOworCXJldHVybihyZXR2YWwpOworfQogCi0JaWYoc2FkZHIpCi0JCW1lbWNweSh0cmgt
PnNhZGRyLHNhZGRyLGRldi0+YWRkcl9sZW4pOwotCWVsc2UKLQkJbWVtY3B5KHRyaC0+c2Fk
ZHIsZGV2LT5kZXZfYWRkcixkZXYtPmFkZHJfbGVuKTsKKy8qICAgTi5CLiB0aGlzIGhhc2gg
d2lsbCBzdGlsbCB3b3JrIHdpdGggYSBzb3VyY2Ugcm91dGVkIGFkZHJlc3MgKi8KKy8qICAg
YXMgdGhlIGFuZCBvcGVyYXRpb24gbWFza3MgdGhpcyBvdXQuICovCitfX2lubGluZV9fICB0
cl9yaWZfY2FjaGVfbGlzdHMgKnRyX2hhc2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKKwkJ
CQkJX191OCAqbWFjYWRkcikKK3sKKwlfX3UxNiBoYXNoPSgqKChfX3UxNiAqKSZtYWNhZGRy
WzBdKV4qKChfX3UxNiAqKSZtYWNhZGRyWzJdKQorCQkgIF4qKChfX3UxNiAqKSZtYWNhZGRy
WzRdKSkmKFRSX1JJRl9DQUNIRV9MSVNUX1NJWkUtMSk7CisJcmV0dXJuKCZkZXYtPnJpZl9j
YWNoZV9saXN0c1toYXNoXSk7Cit9CiAKLQkvKgotCSAqCUJ1aWxkIHRoZSBkZXN0aW5hdGlv
biBhbmQgdGhlbiBzb3VyY2Ugcm91dGUgdGhlIGZyYW1lCi0JICovCi0JIAotCWlmKGRhZGRy
KSAKLQl7Ci0JCW1lbWNweSh0cmgtPmRhZGRyLGRhZGRyLGRldi0+YWRkcl9sZW4pOwotCQl0
cl9zb3VyY2Vfcm91dGUoc2tiLHRyaCxkZXYpOwotCQlyZXR1cm4oaGRyX2xlbik7Ci0JfQog
Ci0JcmV0dXJuIC1oZHJfbGVuOwotfQotCQogLyoKLSAqCUEgbmVpZ2hib3VyIGRpc2NvdmVy
eSBvZiBzb21lIHNwZWNpZXMgKGVnIGFycCkgaGFzIGNvbXBsZXRlZC4gV2UKLSAqCWNhbiBu
b3cgc2VuZCB0aGUgcGFja2V0LgotICovCi0gCi1pbnQgdHJfcmVidWlsZF9oZWFkZXIoc3Ry
dWN0IHNrX2J1ZmYgKnNrYikgCisgKiBTb3JyeSB0aGlzIGlzIHNvIGNvbXBsZXgsIGlmIHlv
dSBoYXZlIHRoZSBtaXNmb3J0dW5lIG9mIGhhdmluZyB0byBkZWJ1ZyB0aGlzCisgKiB0cnkg
cHJlcHJvY2Vzc2luZyBpdCBmaXJzdCAoIGdjYyAtRSApIERKQi4KKyAqIElmIEkgZGlkbid0
IGRvIGl0IHVzaW5nIG1hY3JvcyBJJ2QgZW5kIHVwIGluc3RhbGxpbmcgdGhlIHNhbWUgYnVn
IGluIHNldmVyYWwgcGxhY2VzCisgKiBQLlMuIGdjYyBpc24ndCBzdHVwaWQgdGhlIHN0dWZm
IGNvbXBpbGVzIGdvb2QuCisgKi8KKyNpZiBUUl9TUl9TQU5JVFkKKy8qIE15IGJpZyBiYWxs
IG9mIHdheCB0byBjaGVjayB0aGUgbGlzdC4gKi8KK3ZvaWQgdHJfc2FuaXR5X2NoZWNrX2xp
c3QodHJfcmlmX2NhY2hlX2xpc3RzICpsaXN0LGludCBpbmRleCxjaGFyICpuYW1lLGludCBk
ZWx0YSkKIHsKLQlzdHJ1Y3QgdHJoX2hkciAqdHJoPShzdHJ1Y3QgdHJoX2hkciAqKXNrYi0+
ZGF0YTsKLQlzdHJ1Y3QgdHJsbGMgKnRybGxjPShzdHJ1Y3QgdHJsbGMgKikoc2tiLT5kYXRh
K3NpemVvZihzdHJ1Y3QgdHJoX2hkcikpOwotCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBz
a2ItPmRldjsKLQotCS8qCi0JICoJRklYTUU6IFdlIGRvbid0IHlldCBzdXBwb3J0IElQdjYg
b3ZlciB0b2tlbiByaW5ncwotCSAqLwotCSAKLQlpZih0cmxsYy0+ZXRoZXJ0eXBlICE9IGh0
b25zKEVUSF9QX0lQKSkgewotCQlwcmludGsoInRyX3JlYnVpbGRfaGVhZGVyOiBEb24ndCBr
bm93IGhvdyB0byByZXNvbHZlIHR5cGUgJTA0WCBhZGRyZXNzZXMgP1xuIiwodW5zaWduZWQg
aW50KWh0b25zKHRybGxjLT5ldGhlcnR5cGUpKTsKLQkJcmV0dXJuIDA7CisJdHJfcmlmX2Nh
Y2hlX2VudHJ5ICplbnRyeSwqcHJldl9lbnRyeT1OVUxMLCpuZXh0X2VudHJ5LCplbnRyeTI7
CisJdHJfcmlmX2RsaXN0ICAgICAgICpkbGlzdD0mbGlzdC0+ZGxpc3RbaW5kZXhdOworCXRy
X3JpZl9kZW50cnkgICAgICAqZGVudHJ5LCpuZXh0X2RlbnRyeSwqcHJldl9kZW50cnk7CisJ
aW50ICAgICAgICAgICAgICAgIGVudHJ5Y250LG51bV9lbnRyaWVzPWxpc3QtPm51bV9lbnRy
aWVzOyAKKwlsb25nICAgICAgICAgICAgICAgbm93PWppZmZpZXM7CisJaW50ICAgICAgICAg
ICAgICAgIGRpZmY7CisJdHJfcmlmX2NhY2hlX2VudHJ5ICplbnRyeV9zdGFja1tUUl9SSUZf
TElOS0VEX0xJU1RfV0lEVEgrMTZdOworCisJaWYoZGVsdGE9PTApIHsKKwkJaWYobnVtX2Vu
dHJpZXM9PTApIHsKKwkJCWlmKGxpc3QtPmRsaXN0WzBdLmhlYWR8fGxpc3QtPmRsaXN0WzBd
LnRhaWx8fAorCQkJICAgbGlzdC0+ZGxpc3RbMV0uaGVhZHx8bGlzdC0+ZGxpc3RbMV0udGFp
bCkKKwkJCQlwYW5pYygiJXMgbnVtX2VudHJpZXM9MCAmIGxpc3Qgbm90IGVtcHR5IGxpc3Q9
JXBcbiIsbmFtZSxsaXN0KTsKKwkJfQorCQlpZihudW1fZW50cmllcz09MSkgeworCQkJaWYo
bGlzdC0+ZGxpc3RbMF0uaGVhZD09TlVMTHx8CisJCQkgICBsaXN0LT5kbGlzdFswXS5oZWFk
IT1saXN0LT5kbGlzdFswXS50YWlsfHwKKwkJCSAgIGxpc3QtPmRsaXN0WzBdLnRhaWwhPWxp
c3QtPmRsaXN0WzFdLmhlYWR8fAorCQkJICAgbGlzdC0+ZGxpc3RbMV0uaGVhZCE9bGlzdC0+
ZGxpc3RbMV0udGFpbCkKKwkJCQlwYW5pYygiJXMgbnVtX2VudHJpZXM9MSAmIGxpc3QgaW5j
b25zaXN0ZW50IGxpc3Q9JXBcbiIsbmFtZSxsaXN0KTsKKwkJfQogCX0KLQotI2lmZGVmIENP
TkZJR19JTkVUCi0JaWYoYXJwX2ZpbmQodHJoLT5kYWRkciwgc2tiKSkgewotCQkJcmV0dXJu
IDE7CisJZm9yKGVudHJ5PWRsaXN0LT5oZWFkLGVudHJ5Y250PTA7ZW50cnkmJgorCQkgICAg
ZW50cnljbnQ8PShudW1fZW50cmllcyszKQorCQkgICAgO2VudHJ5PW5leHRfZW50cnksZW50
cnljbnQrKykgeworCQllbnRyeV9zdGFja1tlbnRyeWNudF09ZW50cnk7CisJCWRlbnRyeT0m
ZW50cnktPmRlbnRyeVtpbmRleF07CisJCW5leHRfZW50cnk9ZGVudHJ5LT5uZXh0OworCQlp
ZihuZXh0X2VudHJ5KSB7CisJCQluZXh0X2RlbnRyeT0mbmV4dF9lbnRyeS0+ZGVudHJ5W2lu
ZGV4XTsKKwkJCWlmKG5leHRfZGVudHJ5LT5wcmV2IT1lbnRyeSkKKwkJCQlwYW5pYygiJXMg
aW5kZXg9JWQgZG91Ymx5IGxpbmtlZCBsaXN0IGluY29uc2lzdGVuY3kgZm9yd2FyZCB0cmF2
ZXJzYWwgZGxpc3Q9JXAgZW50cnk9JXBcbiIsbmFtZSxpbmRleCxkbGlzdCxlbnRyeSk7CisJ
CQlpZigobm93LWRlbnRyeS0+dGltZXN0YW1wKT4oKG5vdy1uZXh0X2RlbnRyeS0+dGltZXN0
YW1wKSkpCisJCQkJcGFuaWMoIiVzIGluZGV4PSVkIHRpbWVzdGFtcCBpbmNvbnNpc3RlbmN5
IGRsaXN0PSVwXG4iLG5hbWUsaW5kZXgsZGxpc3QpOworCQl9CisJCXByZXZfZW50cnk9ZW50
cnk7CiAJfQotCWVsc2UgCi0jZW5kaWYJCi0JewkKLQkJdHJfc291cmNlX3JvdXRlKHNrYix0
cmgsZGV2KTsgCi0JCXJldHVybiAwOworLyogSGF2ZSB0byBhbGxvdyBmb3IgYWRkaW5nIGRl
bGV0aW5nIGVudHJpZXMgKi8KKwlkaWZmPWVudHJ5Y250LW51bV9lbnRyaWVzOworCWlmKGRp
ZmY8LWRlbHRhfHxkaWZmPmRlbHRhKQorCQlwYW5pYygiJXMgaW5kZXg9JWQgZW50cnljbnQg
JWQgZXhwZWN0ZWQgJWQgZGxpc3Q9JXAgZm9yd2FyZCB0cmF2ZXJzYWxcbiIsCisJCSAgICAg
IG5hbWUsaW5kZXgsZW50cnljbnQsbnVtX2VudHJpZXMsZGxpc3QpOworCW5leHRfZW50cnk9
TlVMTDsKKwlmb3IoZW50cnk9ZGxpc3QtPnRhaWw7ZW50cnkmJgorCQkgICAgZW50cnljbnQ8
PShudW1fZW50cmllcysxKQorCQkgICAgO2VudHJ5PXByZXZfZW50cnkpIHsKKwkJaWYoZW50
cnkhPWVudHJ5X3N0YWNrWy0tZW50cnljbnRdKQorCQkJcGFuaWMoIiVzIGVudHJ5c3RhY2sg
ZGV0ZWN0ZWQgYSBmYXVsdCBkbGlzdD0lcCBlbnRyeWNudD0lZCIKKwkJCSAgICAgICJlbnRy
eT0lcCBlbnRyeXN0YWNrW2VudHJ5Y250XT0lcFxuIiwKKwkJCSAgICAgIG5hbWUsZGxpc3Qs
ZW50cnljbnQsZW50cnksZW50cnlfc3RhY2tbZW50cnljbnRdKTsKKwkJZGVudHJ5PSZlbnRy
eS0+ZGVudHJ5W2luZGV4XTsKKwkJcHJldl9lbnRyeT1kZW50cnktPnByZXY7CisJCWlmKHBy
ZXZfZW50cnkpIHsKKwkJCXByZXZfZGVudHJ5PSZwcmV2X2VudHJ5LT5kZW50cnlbaW5kZXhd
OworCQkJaWYocHJldl9kZW50cnktPm5leHQhPWVudHJ5KQorCQkJCXBhbmljKCIlcyBpbmRl
eD0lZCBkb3VibHkgbGlua2VkIGxpc3QgaW5jb25zaXN0ZW5jeSByZXZlcnNlIHRyYXZlcnNh
bCBkbGlzdD0lcCBlbnRyeT0lcFxuIixuYW1lLGluZGV4LGRsaXN0LGVudHJ5KTsKKwkJfQor
CQluZXh0X2VudHJ5PWVudHJ5OwogCX0KKwlmb3IoZW50cnk9ZGxpc3QtPmhlYWQ7ZW50cnk7
ZW50cnk9ZW50cnktPmRlbnRyeVtpbmRleF0ubmV4dCkKKwkJZm9yKGVudHJ5Mj1kbGlzdC0+
aGVhZDtlbnRyeTI7ZW50cnkyPWVudHJ5Mi0+ZGVudHJ5W2luZGV4XS5uZXh0KQorCQkJaWYo
ZW50cnkhPWVudHJ5MiYmbWVtY21wKGVudHJ5LT5hZGRyLGVudHJ5Mi0+YWRkcixUUl9BTEVO
KT09MCkKKwkJCQlwYW5pYygiJXMgaW5kZXg9JWQgZHVwbGljYXRlIG1hYyBhZGRycyBkbGlz
dD0lcFxuIgorCQkJCSAgICAgICJlbnRyeTE9JXAgZW50cnkyPSVwICUwMlg6JTAyWDolMDJY
OiUwMlg6JTAyWDolMDJYXG4iCisJCQkJICAgICAgLG5hbWUsaW5kZXgsZGxpc3QsCisJCQkJ
ICAgICAgZW50cnksZW50cnkyLAorCQkJCSAgICAgIGVudHJ5LT5hZGRyWzBdLGVudHJ5LT5h
ZGRyWzFdLAorCQkJCSAgICAgIGVudHJ5LT5hZGRyWzJdLGVudHJ5LT5hZGRyWzNdLAorCQkJ
CSAgICAgIGVudHJ5LT5hZGRyWzRdLGVudHJ5LT5hZGRyWzVdKTsKIH0KLQkKLS8qCi0gKglT
b21lIG9mIHRoaXMgaXMgYSBiaXQgaGFja2lzaC4gV2UgaW50ZXJjZXB0IFJJRiBpbmZvcm1h
dGlvbgotICoJdXNlZCBmb3Igc291cmNlIHJvdXRpbmcuIFdlIGFsc28gZ3JhYiBJUCBkaXJl
Y3RseSBhbmQgZG9uJ3QgZmVlZAotICoJaXQgdmlhIFNOQVAuCi0gKi8KLSAKLXVuc2lnbmVk
IHNob3J0IHRyX3R5cGVfdHJhbnMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9k
ZXZpY2UgKmRldikgCi17Ci0KLQlzdHJ1Y3QgdHJoX2hkciAqdHJoPShzdHJ1Y3QgdHJoX2hk
ciAqKXNrYi0+ZGF0YTsKLQlzdHJ1Y3QgdHJsbGMgKnRybGxjOwotCXVuc2lnbmVkIHJpZmxl
bj0wOwotCQotCXNrYi0+bWFjLnJhdyA9IHNrYi0+ZGF0YTsKLQkKLSAgICAgICAJaWYodHJo
LT5zYWRkclswXSAmIFRSX1JJSSkKLQkJcmlmbGVuID0gKG50b2hzKHRyaC0+cmNmKSAmIFRS
X1JDRl9MRU5fTUFTSykgPj4gODsKKyNlbmRpZgogCi0JdHJsbGMgPSAoc3RydWN0IHRybGxj
ICopKHNrYi0+ZGF0YStzaXplb2Yoc3RydWN0IHRyaF9oZHIpLVRSX01BWFJJRkxFTityaWZs
ZW4pOworI2RlZmluZSBUUl9GSVhfUFJFVl9FTlRSWV9DT01NT04oZG5leHQpICAgICAgICAg
ICAgICBcCitwcmV2X2VudHJ5PWRlbnRyeS0+cHJldjsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKK2lmKHByZXZfZW50cnkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgIHByZXZfZGVudHJ5PSZwcmV2X2VudHJ5LT5kZW50cnlbaW5k
ZXhdOyAgICAgICBcCisgICAgICAgcHJldl9kZW50cnktPm5leHQ9KGRuZXh0KTsgICAgICAg
ICAgICAgICAgICAgIFwKK30gCisKKyNkZWZpbmUgVFJfUkVNT1ZFX0RFTlRSWV9DT01NT04g
ICAgICAgICAgICAgICAgICAgICAgXAorVFJfRklYX1BSRVZfRU5UUllfQ09NTU9OKGRlbnRy
eS0+bmV4dCkgICAgICAgICAgICAgICBcCituZXh0X2VudHJ5PWRlbnRyeS0+bmV4dDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2lmKG5leHRfZW50cnkpIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIG5leHRfZGVudHJ5PSZuZXh0
X2VudHJ5LT5kZW50cnlbaW5kZXhdOyAgICAgICBcCisgICAgICAgbmV4dF9kZW50cnktPnBy
ZXY9cHJldl9lbnRyeTsgICAgICAgICAgICAgICAgIFwKK30KIAotCXNrYl9wdWxsKHNrYixz
aXplb2Yoc3RydWN0IHRyaF9oZHIpLVRSX01BWFJJRkxFTityaWZsZW4pOworI2RlZmluZSBU
Ul9BRERfVE9fSEVBRF9DT01NT04gICAgICAgICAgICAgICAgICAgICAgICBcCituZXh0X2Vu
dHJ5PWRsaXN0LT5oZWFkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2lmKG5l
eHRfZW50cnkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgIG5leHRfZGVudHJ5PSZuZXh0X2VudHJ5LT5kZW50cnlbaW5kZXhdOyAgICAgICBcCisg
ICAgICAgbmV4dF9kZW50cnktPnByZXY9ZW50cnk7ICAgICAgICAgICAgICAgICAgICAgIFwK
K30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgZGxpc3QtPnRhaWw9ZW50cnk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKK2RlbnRyeS0+bmV4dD1uZXh0X2VudHJ5OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorZGVudHJ5LT5wcmV2PU5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCitkbGlzdC0+aGVhZD1lbnRyeTsKIAotCWlmKCp0cmgtPmRhZGRyICYgMHg4
MCkgCi0JewotCQlpZighbWVtY21wKHRyaC0+ZGFkZHIsZGV2LT5icm9hZGNhc3QsVFJfQUxF
TikpIAkKLQkJCXNrYi0+cGt0X3R5cGU9UEFDS0VUX0JST0FEQ0FTVDsKLQkJZWxzZQotCQkJ
c2tiLT5wa3RfdHlwZT1QQUNLRVRfTVVMVElDQVNUOwotCX0KLQllbHNlIGlmICggKHRyaC0+
ZGFkZHJbMF0gJiAweDAxKSAmJiAodHJoLT5kYWRkclsxXSAmIDB4MDApICYmICh0cmgtPmRh
ZGRyWzJdICYgMHg1RSkpCi0JewotCQlza2ItPnBrdF90eXBlPVBBQ0tFVF9NVUxUSUNBU1Q7
CitfX2lubGluZV9fIHZvaWQgdHJfbWFrZV9saXN0X2hlYWQodHJfcmlmX2NhY2hlX2xpc3Rz
ICpsaXN0LHRyX3JpZl9jYWNoZV9lbnRyeSAqZW50cnksaW50IGluZGV4KQoreworCXRyX3Jp
Zl9jYWNoZV9lbnRyeSAqcHJldl9lbnRyeSwqbmV4dF9lbnRyeTsKKwl0cl9yaWZfZGxpc3Qg
ICAgICAgKmRsaXN0PSZsaXN0LT5kbGlzdFtpbmRleF07CisJdHJfcmlmX2RlbnRyeSAgICAg
ICpkZW50cnk9JmVudHJ5LT5kZW50cnlbaW5kZXhdLCpuZXh0X2RlbnRyeSwqcHJldl9kZW50
cnk7CisgICAKKwlpZihkbGlzdC0+aGVhZCE9ZW50cnkpIHsKKwkJVFJfUkVNT1ZFX0RFTlRS
WV9DT01NT04KKwkJaWYoZGxpc3QtPnRhaWw9PWVudHJ5KQorCQkgICAgICAgIGRsaXN0LT50
YWlsPXByZXZfZW50cnk7CisJCVRSX0FERF9UT19IRUFEX0NPTU1PTgogCX0KLQllbHNlIGlm
KGRldi0+ZmxhZ3MgJiBJRkZfUFJPTUlTQykgCi0JewotCQlpZihtZW1jbXAodHJoLT5kYWRk
ciwgZGV2LT5kZXZfYWRkciwgVFJfQUxFTikpCi0JCQlza2ItPnBrdF90eXBlPVBBQ0tFVF9P
VEhFUkhPU1Q7CisjaWYgVFJfU1JfU0FOSVRZCisJdHJfc2FuaXR5X2NoZWNrX2xpc3QobGlz
dCxpbmRleCwidHJfbWFrZV9saXN0X2hlYWQiLDApOworI2VuZGlmCit9CisKK19faW5saW5l
X18gdHJfcmlmX2NhY2hlX2VudHJ5ICp0cl9yZW1vdmVfdGFpbCh0cl9yaWZfY2FjaGVfbGlz
dHMgKmxpc3QsaW50IGluZGV4KQoreworCXRyX3JpZl9kbGlzdCAgICAgICAqZGxpc3Q9Jmxp
c3QtPmRsaXN0W2luZGV4XTsKKwl0cl9yaWZfZGVudHJ5ICAgICAgKmRlbnRyeSwqcHJldl9k
ZW50cnk7CisJdHJfcmlmX2NhY2hlX2VudHJ5ICplbnRyeT1kbGlzdC0+dGFpbCwqcHJldl9l
bnRyeTsKKyNpZiBUUl9TUl9TQU5JVFkKKwl0cl9zYW5pdHlfY2hlY2tfbGlzdChsaXN0LGlu
ZGV4LCJ0cl9yZW1vdmVfdGFpbCBiZWZvcmUiLDEpOworI2VuZGlmICAgCisJaWYoZW50cnkp
IHsKKwkJZGVudHJ5PSZlbnRyeS0+ZGVudHJ5W2luZGV4XTsKKwkJVFJfRklYX1BSRVZfRU5U
UllfQ09NTU9OKE5VTEwpCisJCWRsaXN0LT50YWlsPXByZXZfZW50cnk7CisJCWlmKGRsaXN0
LT5oZWFkPT1lbnRyeSkKKwkJCWRsaXN0LT5oZWFkPU5VTEw7CiAJfQogCi0JaWYgKChza2It
PnBrdF90eXBlICE9IFBBQ0tFVF9CUk9BRENBU1QpICYmCi0JICAgIChza2ItPnBrdF90eXBl
ICE9IFBBQ0tFVF9NVUxUSUNBU1QpKQotCQl0cl9hZGRfcmlmX2luZm8odHJoLGRldikgOyAK
KyNpZiBUUl9TUl9TQU5JVFkKKwl0cl9zYW5pdHlfY2hlY2tfbGlzdChsaXN0LGluZGV4LCJ0
cl9yZW1vdmVfdGFpbCBhZnRlciIsMSk7CisjZW5kaWYKKwlyZXR1cm4oZW50cnkpOworfSAK
K19faW5saW5lX18gdm9pZCB0cl9yZW1vdmVfZW50cnkodHJfcmlmX2NhY2hlX2xpc3RzICps
aXN0LHRyX3JpZl9jYWNoZV9lbnRyeSAqZW50cnksaW50IGluZGV4KQoreworCXRyX3JpZl9j
YWNoZV9lbnRyeSAqcHJldl9lbnRyeSwqbmV4dF9lbnRyeTsKKwl0cl9yaWZfZGxpc3QgICAg
ICAgKmRsaXN0PSZsaXN0LT5kbGlzdFtpbmRleF07CisJdHJfcmlmX2RlbnRyeSAgICAgICpk
ZW50cnk9JmVudHJ5LT5kZW50cnlbaW5kZXhdLCpwcmV2X2RlbnRyeSwqbmV4dF9kZW50cnk7
CisKKwlUUl9SRU1PVkVfREVOVFJZX0NPTU1PTgorCWlmKGRsaXN0LT5oZWFkPT1lbnRyeSkK
KwkgICAgICAgIGRsaXN0LT5oZWFkPW5leHRfZW50cnk7CisJaWYoZGxpc3QtPnRhaWw9PWVu
dHJ5KQorCQlkbGlzdC0+dGFpbD1wcmV2X2VudHJ5OworI2lmIFRSX1NSX1NBTklUWQorCXRy
X3Nhbml0eV9jaGVja19saXN0KGxpc3QsaW5kZXgsInRyX3JlbW92ZV9lbnRyeSIsMSk7Cisj
ZW5kaWYKK30KIAotCS8qCi0JICogU3RyaXAgdGhlIFNOQVAgaGVhZGVyIGZyb20gQVJQIHBh
Y2tldHMgc2luY2Ugd2UgZG9uJ3QgCi0JICogcGFzcyB0aGVtIHRocm91Z2ggdG8gdGhlIDgw
Mi4yL1NOQVAgbGF5ZXJzLgotCSAqLworX19pbmxpbmVfXyB2b2lkIHRyX2FkZF90b19oZWFk
KHRyX3JpZl9jYWNoZV9saXN0cyAqbGlzdCx0cl9yaWZfY2FjaGVfZW50cnkgKmVudHJ5LGlu
dCBpbmRleCxsb25nIG5vdykKK3sKKwl0cl9yaWZfZGxpc3QgICAgICAgKmRsaXN0PSZsaXN0
LT5kbGlzdFtpbmRleF07CisJdHJfcmlmX2RlbnRyeSAgICAgICpkZW50cnk9JmVudHJ5LT5k
ZW50cnlbaW5kZXhdLCpuZXh0X2RlbnRyeTsKKwl0cl9yaWZfY2FjaGVfZW50cnkgKm5leHRf
ZW50cnk7CisgCisJVFJfQUREX1RPX0hFQURfQ09NTU9OCisJaWYoZGxpc3QtPnRhaWw9PU5V
TEwpCisJICAgICAgICBkbGlzdC0+dGFpbD1lbnRyeTsKKwlkZW50cnktPnRpbWVzdGFtcD1u
b3c7CisjaWYgVFJfU1JfU0FOSVRZCisJdHJfc2FuaXR5X2NoZWNrX2xpc3QobGlzdCxpbmRl
eCwidHJfYWRkX3RvX2hlYWQiLDEpOworI2VuZGlmCit9CiAKLQlpZiAodHJsbGMtPmRzYXAg
PT0gRVhURU5ERURfU0FQICYmCi0JICAgICh0cmxsYy0+ZXRoZXJ0eXBlID09IG50b2hzKEVU
SF9QX0lQKSB8fAotCSAgICAgdHJsbGMtPmV0aGVydHlwZSA9PSBudG9ocyhFVEhfUF9BUlAp
KSkKLQl7Ci0JCXNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB0cmxsYykpOwotCQlyZXR1
cm4gdHJsbGMtPmV0aGVydHlwZTsKLQl9CitfX2lubGluZV9fIHZvaWQgdHJfYWRkX3RvX3Rh
aWwodHJfcmlmX2NhY2hlX2xpc3RzICpsaXN0LHRyX3JpZl9jYWNoZV9lbnRyeSAqZW50cnks
aW50IGluZGV4LGxvbmcgbm93KQoreworCXRyX3JpZl9kbGlzdCAgICAgICAqZGxpc3Q9Jmxp
c3QtPmRsaXN0W2luZGV4XTsKKwl0cl9yaWZfZGVudHJ5ICAgICAgKmRlbnRyeT0mZW50cnkt
PmRlbnRyeVtpbmRleF0sKnByZXZfZGVudHJ5OworCXRyX3JpZl9jYWNoZV9lbnRyeSAqcHJl
dl9lbnRyeTsKKworCXByZXZfZW50cnk9ZGxpc3QtPnRhaWw7CisJaWYocHJldl9lbnRyeSkg
eyAgICAgICAgICAgICAgIAorCQlwcmV2X2RlbnRyeT0mcHJldl9lbnRyeS0+ZGVudHJ5W2lu
ZGV4XTsKKwkJcHJldl9kZW50cnktPm5leHQ9ZW50cnk7CisJCWRlbnRyeS0+dGltZXN0YW1w
PXByZXZfZGVudHJ5LT50aW1lc3RhbXA7CisJfQorCWVsc2UgeworCQlkbGlzdC0+aGVhZD1l
bnRyeTsKKwkJZGVudHJ5LT50aW1lc3RhbXA9bm93OworCX0KKwlkZW50cnktPnByZXY9cHJl
dl9lbnRyeTsKKwlkZW50cnktPm5leHQ9TlVMTDsgICAgICAgCisJZGxpc3QtPnRhaWw9ZW50
cnk7CisjaWYgVFJfU1JfU0FOSVRZCisJdHJfc2FuaXR5X2NoZWNrX2xpc3QobGlzdCxpbmRl
eCwidHJfYWRkX3RvX3RhaWwiLDEpOworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCit9CisvKgorICBGcm9tIFJGQyAxMDQyCisgIDAgICAgICAgICAgICAgICAgICAgMQor
ICAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMgNCA1CisgICstKy0rLSstKy0rLSstKy0r
LSstKy0rLSstKy0rLSstKworICB8ICBCICB8ICAgTFRIICAgfER8ICBMRiB8ICAgciAgIHwK
KyAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCitMRiAtIExhcmdlc3QgRnJh
bWU6IDMgYml0cworCitUaGUgTEYgYml0cyBzcGVjaWZ5IHRoZSBtYXhpbXVtIE1UVSBzdXBw
b3J0ZWQgYnkgYWxsCiticmlkZ2VzIGFsb25nIGEgc3BlY2lmaWMgcm91dGUuICBBbGwgbXVs
dGktcmluZyBicm9hZGNhc3QKK2ZyYW1lcyBzaG91bGQgYmUgdHJhbnNtaXR0ZWQgd2l0aCBh
IHZhbHVlIGF0IGxlYXN0IGFzCitsYXJnZSBhcyB0aGUgc3VwcG9ydGVkIE1UVS4gIFRoZSB2
YWx1ZXMgdXNlZCBhcmU6CisKK0xGIChiaW5hcnkpICAgTUFDIE1UVSAgICAgIElQIE1UVQor
CisgICAwMDAgICAgICAgICAgNTUyICAgICAgICAgNTA4CisgICAwMDEgICAgICAgICAxMDY0
ICAgICAgICAxMDIwCisgICAwMTAgICAgICAgICAyMDg4ICAgICAgICAyMDQ0CisgICAwMTEg
ICAgICAgICA0MTM2ICAgICAgICA0MDkyCisgICAxMDAgICAgICAgICA4MjMyICAgICAgICA4
MTg4CisKK0V2ZW4gdGhvdWdoIHRoZSBuZXRkZXZpY2UuaCBoZWFkZXIgZmlsZSBzcGVjaWZp
ZXMKK2Rldi0+bXR1IGFzIHRoZSBpbnRlcmZhY2UncyBtdHUgaXQgc2V0cyBldGhlcm5ldCdz
IG10dQorYXMgMTUwMCBhcyBvcHBvc2VkIHRvIDE1MTYgdGhlIHNpemUgb2YgYW4gZXRoZXJu
ZXQgZnJhbWUuCitUaGVyZWZvcmUgSSdtIHRha2luZyBNVFUgYXMgYmVpbmcgSVAgTVRVLgor
CitJIGFkZGVkIHRoaXMgY29kZSBhcyBJIHNhdyBvbiBtYWlsaW5nIGxpc3RzIHBlb3BsZSBj
aGFuZ2luZworTVRVIHNpemVzLgorKi8KIAotCXJldHVybiBudG9ocyhFVEhfUF84MDJfMik7
CitfX2lubGluZV9fIF9fdTE2IHRyX3NldF9yY2ZfZnJhbWVzaXplKHN0cnVjdCBuZXRfZGV2
aWNlICpkZXYpCit7CisJdW5zaWduZWQJCW10dT1kZXYtPm10dTsKKworCWlmKG10dT49ODE4
OCkKKwkJcmV0dXJuKDB4NDApOworCWlmKG10dT49NDA5MikKKwkJcmV0dXJuKDB4MzApOwor
CWlmKG10dT49LyoyMDQ0Ki8yMDAwKSAvKiB0byBrZWVwIGNvbXBhdGlibGUgd2l0aCBvdXIg
Y3VycmVudCBpbXBsZW1lbnRhdGlvbiAqLworCQlyZXR1cm4oMHgyMCk7CisJaWYobXR1Pj0x
MDIwKQorCQlyZXR1cm4oMHgxMCk7CisJcmV0dXJuKDB4MCk7CiB9CiAKIC8qCi0gKglXZSB0
cnkgdG8gZG8gc291cmNlIHJvdXRpbmcuLi4gCi0gKi8KIAotc3RhdGljIHZvaWQgdHJfc291
cmNlX3JvdXRlKHN0cnVjdCBza19idWZmICpza2Isc3RydWN0IHRyaF9oZHIgKnRyaCxzdHJ1
Y3QgbmV0X2RldmljZSAqZGV2KSAKKyAgKkZJWE1FKiBJIGFkZGVkIHRoaXMgY29kZSBpbiB0
aGUgaG9wZSB0aGF0IHNvbWVvbmUKKyAgd291bGQgYWRkIGNvZGUgc3VjaCB0aGF0IGVhY2gg
c291cmNlIHJvdXRlZCBkZXN0aW5hdGlvbgorICBjYW4gaGF2ZSBhIGRpZmZlcmVudCBNVFUg
YXMgcmVjb21tZW5kZWQgYnkgcmZjMTA0Mi4KKyAgQ3VycmVudGx5IHdlIGFyZSByYW1taW5n
IDJLIHBhY2tldHMgZG93biBldGhlcm5ldCBkcml2ZXJzIHRocm9hdHMKKyAgYWNyb3NzIHRv
a2VuIHJpbmcgYnJpZGdlcywKKyAgSSBwcmVzdW1lIDgwMi4yIGNvbXBhdGlibGUgZXRoZXJu
ZXQgZHJpdmVycyBhcmUgZGVzaWduZWQgdG8gcHV0IHVwCisgIHdpdGggdGhpcyBidXQgd2Ug
d2lsbCBicmVhayBzb21lIG9mIHRoZW0gaWYgd2Ugc3RhcnQKKyAgcmFtbWluZyA4ayBwYWNr
ZXRzIGRvd24gdGhlaXIgdGhyb2F0cy4KKyAgSG9wZWZ1bGx5IHNvbWUgbmljZSB0aG91Z2h0
ZnVsIHBlcnNvbiB3aWxsIGZpZ3VyZSB0aGlzIG9uZSBvdXQKKyAgaW5jbHVkZS9uZXQvZHN0
LmggaGFzIGEgcG10dSBmaWVsZAorICBpbmNsdWRlL2xpbnV4L3JvdXRlLmggaGFzIGEgcnRf
bXR1IGZpZWxkCisgIG1heWJlIGl0IHdvdWxkIGJlIGEgc3RhcnRpbmcgcG9pbnQgdG8gc2Vl
IHdoYXQgdGhlc2UgZG8uCisgKi8KK19faW5saW5lX18gdW5zaWduZWQgdHJfZ2V0X3JjZl9t
dHUoX191MTYgcmNmKQogewotCWludCBpLCBzbGFjazsKLQl1bnNpZ25lZCBpbnQgaGFzaDsK
LQlyaWZfY2FjaGUgZW50cnk7Ci0JdW5zaWduZWQgY2hhciAqb2xkZGF0YTsKLQl1bnNpZ25l
ZCBjaGFyIG1jYXN0X2Z1bmNfYWRkcltdID0gezB4QzAsMHgwMCwweDAwLDB4MDQsMHgwMCww
eDAwfTsKLQkKLQlzcGluX2xvY2tfYmgoJnJpZl9sb2NrKTsKKwlyY2Y9bnRvaHMocmNmKSZU
Ul9SQ0ZfTEZfTUFTSzsKIAotCS8qCi0JICoJQnJvYWRjYXN0cyBhcmUgc2luZ2xlIHJvdXRl
IGFzIHN0YXRlZCBpbiBSRkMgMTA0MiAKLQkgKi8KLQlpZiggKCFtZW1jbXAoJih0cmgtPmRh
ZGRyWzBdKSwmKGRldi0+YnJvYWRjYXN0WzBdKSxUUl9BTEVOKSkgfHwKLQkgICAgKCFtZW1j
bXAoJih0cmgtPmRhZGRyWzBdKSwmKG1jYXN0X2Z1bmNfYWRkclswXSksIFRSX0FMRU4pKSAg
KQotCXsKLQkJdHJoLT5yY2Y9aHRvbnMoKCgoc2l6ZW9mKHRyaC0+cmNmKSkgPDwgOCkgJiBU
Ul9SQ0ZfTEVOX01BU0spICAKLQkJCSAgICAgICB8IFRSX1JDRl9GUkFNRTJLIHwgVFJfUkNG
X0xJTUlURURfQlJPQURDQVNUKTsKLQkJdHJoLT5zYWRkclswXXw9VFJfUklJOworCXN3aXRj
aChyY2YpIHsKKwljYXNlIDB4NDA6CisJCXJldHVybig4MTg4KTsKKwljYXNlIDB4MzA6CisJ
CXJldHVybig0MDkyKTsKKwljYXNlIDB4MjA6CisJCXJldHVybigvKjIwNDQqLzIwMDApOyAv
KiB0byBrZWVwIGNvbXBhdGlibGUgd2l0aCBvdXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAq
LworCWNhc2UgMHgxMDoKKwkJcmV0dXJuKDEwMjApOworCWRlZmF1bHQ6CisJCXJldHVybig1
MDgpOyAvKiBQbGF5IGl0IHNhZmUgKi8KIAl9Ci0JZWxzZSAKLQl7Ci0JCWZvcihpPTAsaGFz
aD0wO2k8VFJfQUxFTjtoYXNoKz10cmgtPmRhZGRyW2krK10pOwotCQloYXNoJj1SSUZfVEFC
TEVfU0laRS0xOwotCQkvKgotCQkgKglXYWxrIHRoZSBoYXNoIHRhYmxlIGFuZCBsb29rIGZv
ciBhbiBlbnRyeQotCQkgKi8KLQkJZm9yKGVudHJ5PXJpZl90YWJsZVtoYXNoXTtlbnRyeSAm
JiBtZW1jbXAoJihlbnRyeS0+YWRkclswXSksJih0cmgtPmRhZGRyWzBdKSxUUl9BTEVOKTtl
bnRyeT1lbnRyeS0+bmV4dCk7Cit9CiAKKy8qCisgKglXZSB0cnkgdG8gZG8gIHNvdXJjZSBy
b3V0aW5nLi4uIAorICovCitpbnQgIHRyX2FkZF9yaWYoc3RydWN0IHNrX2J1ZmYgKnNrYixf
X3U4ICpkYWRkcixzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KSAKK3sKKwlpbnQgcmNmbGVuPS0x
OworCXRyX3JpZl9jYWNoZV9saXN0cyAqcmlmX2NhY2hlX2xpc3R0b3A7CisJdHJfcmlmX2Nh
Y2hlX2VudHJ5ICplbnRyeTsKKwlzdHJ1Y3Qgc29jawkqc2s9c2tiLT5zazsKKwl0cl9yaWZf
aW5mbyAgKnJpZjsKKyNpZiBUUl9TUl9MSVNUUEVSRgorCWludCBwZXJmY250OworI2VuZGlm
CisJaWYodHJfbG9jayhkZXYpKSB7CisJCXJpZl9jYWNoZV9saXN0dG9wPXRyX2hhc2goZGV2
LGRhZGRyKTsKKwkJZW50cnk9KChzayYmcmlmX2NhY2hlX2xpc3R0b3AtPmhpbnRfaWR4PT1z
ay0+aGludF9pZHgpID8gc2stPmhpbnQ6TlVMTCk7ICAKKwkJaWYoZW50cnk9PU5VTEx8fG1l
bWNtcChlbnRyeS0+YWRkcixkYWRkcixUUl9BTEVOKSkgeworCQkJLyoKKwkJCSAqCVdhbGsg
dGhlIGhhc2ggdGFibGUgYW5kIGxvb2sgZm9yIGFuIGVudHJ5CisJCQkgKi8KKwkJCWZvcigK
KyNpZiBUUl9TUl9MSVNUUEVSRgorCQkJICAgIHBlcmZjbnQ9MCwKKyNlbmRpZgorCQkJICAg
IGVudHJ5PXJpZl9jYWNoZV9saXN0dG9wLT5kbGlzdFtUUl9VU0VEXS5oZWFkO2VudHJ5ICYm
CisJCQkgICAgbWVtY21wKGVudHJ5LT5hZGRyLGRhZGRyLFRSX0FMRU4pO2VudHJ5PWVudHJ5
LT5kZW50cnlbVFJfVVNFRF0ubmV4dAorI2lmIFRSX1NSX0xJU1RQRVJGCisJCQkgICAgLHBl
cmZjbnQrKworI2VuZGlmCisJCQkgICAgKTsKKwkJCWlmKGVudHJ5KSB7CisJCQkJaWYoc2sp
IHsKKwkJCQkJc2stPmhpbnQ9ZW50cnk7CisJCQkJCXNrLT5oaW50X2lkeD1yaWZfY2FjaGVf
bGlzdHRvcC0+aGludF9pZHg7CisJCQkJfQorCQkJfQorI2lmIFRSX1NSX0xJU1RQRVJGCisJ
CQlwcmludGsoInRyX3JpZiBudW0gZW50cmllcyB3YWxrZWQ9JWQgbnVtIGVudHJpZXM9JWRc
biIscGVyZmNudCwKKwkJCSAgICAgICByaWZfY2FjaGVfbGlzdHRvcC0+bnVtX2VudHJpZXMp
OworI2VuZGlmICAgCisJCX0KKyNpZiBUUl9TUl9ERUJVRworCQllbHNlCisJCQlwcmludGso
IkhpbnQgd29ya2VkIGhvcnJheVxuIik7CisjZW5kaWYKIAkJLyoKIAkJICoJSWYgd2UgZm91
bmQgYW4gZW50cnkgd2UgY2FuIHJvdXRlIHRoZSBmcmFtZS4KIAkJICovCi0JCWlmKGVudHJ5
KSAKLQkJeworCQlpZihlbnRyeSkgewogI2lmIFRSX1NSX0RFQlVHCi1wcmludGsoInNvdXJj
ZSByb3V0aW5nIGZvciAlMDJYICUwMlggJTAyWCAlMDJYICUwMlggJTAyWFxuIix0cmgtPmRh
ZGRyWzBdLAotCQkgIHRyaC0+ZGFkZHJbMV0sdHJoLT5kYWRkclsyXSx0cmgtPmRhZGRyWzNd
LHRyaC0+ZGFkZHJbNF0sdHJoLT5kYWRkcls1XSk7CisJCQlwcmludGsoInNvdXJjZSByb3V0
aW5nIGZvciAlMDJYOiUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWFxuIixkYWRkclswXSwKKwkJ
CSAgICAgICBkYWRkclsxXSxkYWRkclsyXSxkYWRkclszXSxkYWRkcls0XSxkYWRkcls1XSk7
CiAjZW5kaWYKLQkJCWlmKCFlbnRyeS0+bG9jYWxfcmluZyAmJiAobnRvaHMoZW50cnktPnJj
ZikgJiBUUl9SQ0ZfTEVOX01BU0spID4+IDgpCi0JCQl7Ci0JCQkJdHJoLT5yY2Y9ZW50cnkt
PnJjZjsKLQkJCQltZW1jcHkoJnRyaC0+cnNlZ1swXSwmZW50cnktPnJzZWdbMF0sOCpzaXpl
b2YodW5zaWduZWQgc2hvcnQpKTsKLQkJCQl0cmgtPnJjZl49aHRvbnMoVFJfUkNGX0RJUl9C
SVQpOwkKLQkJCQl0cmgtPnJjZiY9aHRvbnMoMHgxZmZmKTsJLyogSXNzYW0gQ2hlaGFiIDxp
Y2hlaGFiQG1hZGdlMS5kZW1vbi5jby51az4gKi8KLQotCQkJCXRyaC0+c2FkZHJbMF18PVRS
X1JJSTsKKwkJCXJjZmxlbj0obnRvaHMoZW50cnktPnJjZikgJiBUUl9SQ0ZfTEVOX01BU0sp
ID4+IDg7CisJCQlpZihyY2ZsZW4pIHsKKwkJCQlyaWY9KHRyX3JpZl9pbmZvICAqKXNrYl9w
dXNoKHNrYixyY2ZsZW4pOworCQkJCW1lbWNweShyaWYsJmVudHJ5LT5yY2YscmNmbGVuKTsK
KwkJCQlyaWYtPnJjZj1odG9ucygocmlmLT5yY2YgJiBfX2NvbnN0YW50X2h0b25zKFRSX1JD
Rl9ESVJfQklUKSA/IDA6VFJfUkNGX0RJUl9CSVQpfAorCQkJCQkgICAgICAgdHJfc2V0X3Jj
Zl9mcmFtZXNpemUoZGV2KSl8KHJpZi0+cmNmICYgX19jb25zdGFudF9odG9ucyhUUl9SQ0Zf
TEVOX01BU0spKTsKICNpZiBUUl9TUl9ERUJVRwogCQkJCXByaW50aygiZW50cnkgZm91bmQg
d2l0aCByY2YgJTA0eFxuIiwgZW50cnktPnJjZik7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0J
CQkJcHJpbnRrKCJlbnRyeSBmb3VuZCBidXQgd2l0aG91dCByY2YgbGVuZ3RoLCBsb2NhbD0l
MDJ4XG4iLCBlbnRyeS0+bG9jYWxfcmluZyk7CiAjZW5kaWYKIAkJCX0KLQkJCWVudHJ5LT5s
YXN0X3VzZWQ9amlmZmllczsKLQkJfQotCQllbHNlIAotCQl7Ci0JCQkvKgotCQkJICoJV2l0
aG91dCB0aGUgaW5mb3JtYXRpb24gd2Ugc2ltcGx5IGhhdmUgdG8gc2hvdXQKLQkJCSAqCW9u
IHRoZSB3aXJlLiBUaGUgcmVwbGllcyBzaG91bGQgcmFwaWRseSBjbGVhbiB0aGlzCi0JCQkg
KglzaXR1YXRpb24gdXAuCi0JCQkgKi8KLQkJCXRyaC0+cmNmPWh0b25zKCgoKHNpemVvZih0
cmgtPnJjZikpIDw8IDgpICYgVFJfUkNGX0xFTl9NQVNLKSAgCi0JCQkJICAgICAgIHwgVFJf
UkNGX0ZSQU1FMksgfCBUUl9SQ0ZfTElNSVRFRF9CUk9BRENBU1QpOwotCQkJdHJoLT5zYWRk
clswXXw9VFJfUklJOwotI2lmIFRSX1NSX0RFQlVHCi0JCQlwcmludGsoIm5vIGVudHJ5IGlu
IHJpZiB0YWJsZSBmb3VuZCAtIGJyb2FkY2FzdGluZyBmcmFtZVxuIik7Ci0jZW5kaWYKKwkJ
CS8qIEFyZSB3ZSB0aGUgbW9zdCByZWNlbnRseSB1c2VkID8/LCBpZiBub3QgZml4dXAuICov
CisJCQl0cl9tYWtlX2xpc3RfaGVhZChyaWZfY2FjaGVfbGlzdHRvcCxlbnRyeSxUUl9VU0VE
KTsKKwkJCWVudHJ5LT5kZW50cnlbVFJfVVNFRF0udGltZXN0YW1wPWppZmZpZXM7CiAJCX0K
KwkJdHJfdW5sb2NrKGRldik7CiAJfQorCXJldHVybihyY2ZsZW4pOworfQogCi0JLyogQ29t
cHJlc3MgdGhlIFJJRiBoZXJlIHNvIHdlIGRvbid0IGhhdmUgdG8gZG8gaXQgaW4gdGhlIGRy
aXZlcihzKSAqLwotCWlmICghKHRyaC0+c2FkZHJbMF0gJiAweDgwKSkKLQkJc2xhY2sgPSAx
ODsKLQllbHNlIAotCQlzbGFjayA9IDE4IC0gKChudG9ocyh0cmgtPnJjZikgJiBUUl9SQ0Zf
TEVOX01BU0spPj44KTsKLQlvbGRkYXRhID0gc2tiLT5kYXRhOwotCXNwaW5fdW5sb2NrX2Jo
KCZyaWZfbG9jayk7CiAKLQlza2JfcHVsbChza2IsIHNsYWNrKTsKLQltZW1tb3ZlKHNrYi0+
ZGF0YSwgb2xkZGF0YSwgc2l6ZW9mKHN0cnVjdCB0cmhfaGRyKSAtIHNsYWNrKTsKK2ludCBz
cHJpbnRmYnJpZGdlaW5mbyhjaGFyICpidWZmZXIsdHJfcmlmX2luZm8gKnJpZmluZm8pCit7
CisJaW50ICAgICAgbGVuPTA7CisJaW50ICAgICAgYnJpZGdlY250LGN1cnJfYnJpZGdlbm87
CisJaW50ICAgICAgc2VnbWVudCxicmlkZ2VfdHlwZTsKKyAgIAorCWxlbj1zcHJpbnRmKGJ1
ZmZlciwiJTA0WCIsIG50b2hzKHJpZmluZm8tPnJjZikpOworCWJyaWRnZWNudD0oKG50b2hz
KHJpZmluZm8tPnJjZikgJiBUUl9SQ0ZfTEVOX01BU0spID4+IDkpLTI7CisJZm9yKGN1cnJf
YnJpZGdlbm8gPSAwOyBjdXJyX2JyaWRnZW5vIDw9IGJyaWRnZWNudDsgY3Vycl9icmlkZ2Vu
bysrKSB7IAorCQlpZihjdXJyX2JyaWRnZW5vPT0wKSB7ICAgICAgICAgICAgICAgIAorCQkJ
c2VnbWVudD1SRF9UT19SSU5HTlVNKHJpZmluZm8tPnJzZWdbY3Vycl9icmlkZ2Vub10pOwor
CQkJbGVuKz1zcHJpbnRmKGJ1ZmZlcitsZW4sIiAgJTAzWCIsc2VnbWVudCk7CisJCX0KKwkJ
ZWxzZSB7CisJCQlzZWdtZW50PVJEX1RPX1JJTkdOVU0ocmlmaW5mby0+cnNlZ1tjdXJyX2Jy
aWRnZW5vXSk7CisJCQlicmlkZ2VfdHlwZT1SRF9UT19CUklER0VfVFlQRShyaWZpbmZvLT5y
c2VnW2N1cnJfYnJpZGdlbm8tMV0pOworCQkJbGVuKz1zcHJpbnRmKGJ1ZmZlcitsZW4sIi0l
MDFYLSUwM1giLGJyaWRnZV90eXBlLHNlZ21lbnQpOworCQl9CisJfQorCXJldHVybihsZW4p
OwogfQogCiAvKgpAQCAtMzE5LDEzNCArNTAxLDMzNiBAQAogICoJcm91dGluZy4KICAqLwog
IAotc3RhdGljIHZvaWQgdHJfYWRkX3JpZl9pbmZvKHN0cnVjdCB0cmhfaGRyICp0cmgsIHN0
cnVjdCBuZXRfZGV2aWNlICpkZXYpCit2b2lkIHRyX2FkZF9yaWZfaW5mbyhzdHJ1Y3QgdHJo
X2hkciAqdHJoLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewotCWludCBpOwotCXVuc2ln
bmVkIGludCBoYXNoLCByaWlfcCA9IDA7Ci0JcmlmX2NhY2hlIGVudHJ5OwotCi0KLQlzcGlu
X2xvY2tfYmgoJnJpZl9sb2NrKTsKLQkKLQkvKgotCSAqCUZpcnN0bHkgc2VlIGlmIHRoZSBl
bnRyeSBleGlzdHMKLQkgKi8KLQotICAgICAgIAlpZih0cmgtPnNhZGRyWzBdICYgVFJfUklJ
KQotCXsKLQkJdHJoLT5zYWRkclswXSY9MHg3ZjsKLQkJaWYgKCgobnRvaHModHJoLT5yY2Yp
ICYgVFJfUkNGX0xFTl9NQVNLKSA+PiA4KSA+IDIpCi0JCXsKLQkJCXJpaV9wID0gMTsKLQkg
ICAgICAgIH0KLQl9CiAKLQlmb3IoaT0wLGhhc2g9MDtpPFRSX0FMRU47aGFzaCs9dHJoLT5z
YWRkcltpKytdKTsKLQloYXNoJj1SSUZfVEFCTEVfU0laRS0xOwotCWZvcihlbnRyeT1yaWZf
dGFibGVbaGFzaF07ZW50cnkgJiYgbWVtY21wKCYoZW50cnktPmFkZHJbMF0pLCYodHJoLT5z
YWRkclswXSksVFJfQUxFTik7ZW50cnk9ZW50cnktPm5leHQpOworCXRyX3JpZl9jYWNoZV9s
aXN0cyAqcmlmX2NhY2hlX2xpc3R0b3A9TlVMTDsKKwl0cl9yaWZfY2FjaGVfZW50cnkgKmVu
dHJ5PU5VTEwsKmRlbGV0ZV9lbnRyeTsKKwlsb25nIG5vdzsKKwlfX3U4ICAgICAgICAgIHRy
aF9zYWRkcjA7CisJaW50IHJjZmxlbj0wOworCWludCAgICAgICAgICBmaXh1cGRhdGVkPUZB
TFNFOworI2lmIFRSX1NSX0xJU1RQRVJGCisJaW50ICAgcGVyZmNudDsKKyNlbmRpZgogCi0J
aWYoZW50cnk9PU5VTEwpIAotCXsKICNpZiBUUl9TUl9ERUJVRwotcHJpbnRrKCJhZGRpbmcg
cmlmX2VudHJ5OiBhZGRyOiUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWDolMDJYIHJjZjolMDRY
XG4iLAotCQl0cmgtPnNhZGRyWzBdLHRyaC0+c2FkZHJbMV0sdHJoLT5zYWRkclsyXSwKLSAg
ICAgICAJCXRyaC0+c2FkZHJbM10sdHJoLT5zYWRkcls0XSx0cmgtPnNhZGRyWzVdLAotCQlu
dG9ocyh0cmgtPnJjZikpOworCWNoYXIgKmRlYnVnc3RyOworI2VuZGlmCisjaWYgVFJfU1Jf
QlJPQURDQVNUX0RFQlVHCisJY2hhciBicm9hZGNhc3RidWZmW1RSX1JJRl9CVUZGX1NJWkVd
OworI2VuZGlmCisJaWYodHJfbG9jayhkZXYpKSB7CisJCS8qIGlzIHNvbWV0aGluZyBlbHNl
IHBsYXlpbmcgd2l0aCB0aGUgbGlzdCAqLworCQlpZih0cmgtPnNhZGRyWzBdICYgVFJfUklJ
KSB7CisJCQlyY2ZsZW49KChudG9ocyh0cmgtPnJjZikgJiBUUl9SQ0ZfTEVOX01BU0spID4+
IDgpOworI2lmIFRSX1NSX0JST0FEQ0FTVF9ERUJVRworCQkJLyogQXMgY2FuIGJlIHNlZW4g
ZnJvbSB0aGlzIGRlYnVnIGNvZGUKKwkJCSAqIGl0IGlzIHBlcmZlY3RseSB2YWxpZCB0byBh
bGxvdyBicm9hZGNhc3QKKwkJCSAqIGZyYW1lcyBpbnRvIHRoZSByb3V0aW5nIHRhYmxlIGFz
IHRoZXkgaGF2ZQorCQkJICogcGVyZmVjdGx5IHZhbGlkIHJpZnMuIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICovCisJCQlpZihudG9ocyh0cmgtPnJjZikmVFJfUkNGX0JST0FEQ0FT
VF9NQVNLKSB7CisJCQkJc3ByaW50ZmJyaWRnZWluZm8oYnJvYWRjYXN0YnVmZiwodHJfcmlm
X2luZm8gKikmdHJoLT5yY2YpOworCQkJCXByaW50aygiYnJvYWRjYXN0IHJlY2VpdmVkIGZy
b20gJTAyWDolMDJYOiUwMlg6JTAyWDolMDJYOiUwMlggcmlmPSVzXG4iLAorCQkJCSAgICAg
ICB0cmgtPnNhZGRyWzBdLHRyaC0+c2FkZHJbMV0sdHJoLT5zYWRkclsyXSwKKwkJCQkgICAg
ICAgdHJoLT5zYWRkclszXSx0cmgtPnNhZGRyWzRdLHRyaC0+c2FkZHJbNV0sYnJvYWRjYXN0
YnVmZik7CisJCQl9CiAjZW5kaWYKLQkJLyoKLQkJICoJQWxsb2NhdGUgb3VyIG5ldyBlbnRy
eS4gQSBmYWlsdXJlIHRvIGFsbG9jYXRlIGxvc2VzCi0JCSAqCXVzZSB0aGUgaW5mb3JtYXRp
b24uIFRoaXMgaXMgaGFybWxlc3MuCi0JCSAqCi0JCSAqCUZJWE1FOiBXZSBvdWdodCB0byBr
ZWVwIHNvbWUga2luZCBvZiBjYWNoZSBzaXplCi0JCSAqCWxpbWl0aW5nIGFuZCBhZGp1c3Qg
dGhlIHRpbWVycyB0byBzdWl0LgotCQkgKi8KLQkJZW50cnk9a21hbGxvYyhzaXplb2Yoc3Ry
dWN0IHJpZl9jYWNoZV9zKSxHRlBfQVRPTUlDKTsKLQotCQlpZighZW50cnkpIAotCQl7Ci0J
CQlwcmludGsoS0VSTl9ERUJVRyAidHIuYzogQ291bGRuJ3QgbWFsbG9jIHJpZiBjYWNoZSBl
bnRyeSAhXG4iKTsKLQkJCXNwaW5fdW5sb2NrX2JoKCZyaWZfbG9jayk7Ci0JCQlyZXR1cm47
Ci0JCX0KLQotCQltZW1jcHkoJihlbnRyeS0+YWRkclswXSksJih0cmgtPnNhZGRyWzBdKSxU
Ul9BTEVOKTsKLQkJZW50cnktPmlmYWNlID0gZGV2LT5pZmluZGV4OwotCQllbnRyeS0+bmV4
dD1yaWZfdGFibGVbaGFzaF07Ci0JCWVudHJ5LT5sYXN0X3VzZWQ9amlmZmllczsKLQkJcmlm
X3RhYmxlW2hhc2hdPWVudHJ5OwotCi0JCWlmIChyaWlfcCkKLQkJewotCQkJZW50cnktPnJj
ZiA9IHRyaC0+cmNmICYgaHRvbnMoKHVuc2lnbmVkIHNob3J0KX5UUl9SQ0ZfQlJPQURDQVNU
X01BU0spOwotCQkJbWVtY3B5KCYoZW50cnktPnJzZWdbMF0pLCYodHJoLT5yc2VnWzBdKSw4
KnNpemVvZih1bnNpZ25lZCBzaG9ydCkpOwotCQkJZW50cnktPmxvY2FsX3JpbmcgPSAwOwot
CQkJdHJoLT5zYWRkclswXXw9VFJfUklJOyAvKiBwdXQgdGhlIHJvdXRpbmcgaW5kaWNhdG9y
IGJhY2sgZm9yIHRjcGR1bXAgKi8KIAkJfQotCQllbHNlCi0JCXsKLQkJCWVudHJ5LT5sb2Nh
bF9yaW5nID0gMTsKKwkJaWYoZGV2LT5yaWZfY2FjaGVfbGlzdHM9PU5VTEwpIHsKKwkJCWlm
KHJjZmxlbjw2KQorCQkJCWdvdG8gZG9uZTsKKwkJCWVsc2UgeworCQkJCWRldi0+cmlmX2Nh
Y2hlX2xpc3RzPXRyX2FsbG9jKFRSX1JJRl9DQUNIRV9MSVNUX1NJWkUqc2l6ZW9mKHRyX3Jp
Zl9jYWNoZV9saXN0cykpOworCQkJCWlmKGRldi0+cmlmX2NhY2hlX2xpc3RzPT1OVUxMKQor
CQkJCQlnb3RvIGZhaWw7CisJCQl9CiAJCX0KLQl9IAkKLQllbHNlCS8qIFkuIFRhaGFyYSBh
ZGRlZCAqLwotCXsgCisJCW5vdz1qaWZmaWVzOworCQl0cmhfc2FkZHIwPXRyaC0+c2FkZHJb
MF0mKH5UUl9SSUkpOyAvKiByZW1vdmUgcm91dGluZyBpbmZvICAqLwogCQkvKgotCQkgKglV
cGRhdGUgZXhpc3RpbmcgZW50cmllcworCQkgKglGaXJzdGx5IHNlZSBpZiB0aGUgZW50cnkg
ZXhpc3RzCiAJCSAqLwotCQlpZiAoIWVudHJ5LT5sb2NhbF9yaW5nKSAKLQkJICAgIGlmIChl
bnRyeS0+cmNmICE9ICh0cmgtPnJjZiAmIGh0b25zKCh1bnNpZ25lZCBzaG9ydCl+VFJfUkNG
X0JST0FEQ0FTVF9NQVNLKSkgJiYKLQkJCSAhKHRyaC0+cmNmICYgaHRvbnMoVFJfUkNGX0JS
T0FEQ0FTVF9NQVNLKSkpCi0JCSAgICB7CisJCXJpZl9jYWNoZV9saXN0dG9wPXRyX2hhc2go
ZGV2LHRyaC0+c2FkZHIpOworCQlpZihzeXNjdGxfdHJfcmlmX2xpbmtlZF9saXN0X3dpZHRo
PDApCisJCQlzeXNjdGxfdHJfcmlmX2xpbmtlZF9saXN0X3dpZHRoPTA7CisJCXdoaWxlKHJp
Zl9jYWNoZV9saXN0dG9wLT5udW1fZW50cmllcz5zeXNjdGxfdHJfcmlmX2xpbmtlZF9saXN0
X3dpZHRoKSB7CisJCQlkZWxldGVfZW50cnk9dHJfcmVtb3ZlX3RhaWwocmlmX2NhY2hlX2xp
c3R0b3AsVFJfVVNFRCk7CisJCQlpZihkZWxldGVfZW50cnkpIHsKKwkJCQl0cl9yZW1vdmVf
ZW50cnkocmlmX2NhY2hlX2xpc3R0b3AsZGVsZXRlX2VudHJ5LFRSX1VQREFURUQpOworCQkJ
CWtmcmVlKGRlbGV0ZV9lbnRyeSk7CisJCQkJcmlmX2NhY2hlX2xpc3R0b3AtPm51bV9lbnRy
aWVzLS07CisJCQkJcmlmX2NhY2hlX2xpc3R0b3AtPmhpbnRfaWR4Kys7CisjaWYgVFJfU1Jf
U0FOSVRZCisJCQkJdHJfc2FuaXR5X2NoZWNrX2xpc3QocmlmX2NhY2hlX2xpc3R0b3AsVFJf
VVBEQVRFRCwiZGVsZXRpbmcgZW50cmllcyIsMCk7CisJCQkJdHJfc2FuaXR5X2NoZWNrX2xp
c3QocmlmX2NhY2hlX2xpc3R0b3AsVFJfVVNFRCwiZGVsZXRpbmcgZW50cmllcyIsMCk7Cisj
ZW5kaWYKKwkJCX0KKwkJCWVsc2UgeworCQkJCXByaW50aygiJXMgbGlua2VkIGxpc3QgYnVn
IHJpZl9jYWNoZV9saXN0dG9wPSVwXG4iLGRldi0+bmFtZSxyaWZfY2FjaGVfbGlzdHRvcCk7
CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJaWYoc3lzY3RsX3RyX3JpZl9saW5rZWRfbGlz
dF93aWR0aD09MCkKKwkJCWdvdG8gZG9uZTsKKwkJZml4dXBkYXRlZD1UUlVFOworCQlmb3Io
CisjaWYgVFJfU1JfTElTVFBFUkYKKwkJCXBlcmZjbnQ9MCwKKyNlbmRpZgorCQkgICAgICAg
IGVudHJ5PXJpZl9jYWNoZV9saXN0dG9wLT5kbGlzdFtUUl9VUERBVEVEXS5oZWFkO2VudHJ5
ICYmCisJCQkodHJoX3NhZGRyMCE9ZW50cnktPmFkZHJbMF18fG1lbWNtcCgmZW50cnktPmFk
ZHJbMV0sJnRyaC0+c2FkZHJbMV0sVFJfQUxFTi0xKSkKKwkJCTtlbnRyeT1lbnRyeS0+ZGVu
dHJ5W1RSX1VQREFURURdLm5leHQKKyNpZiBUUl9TUl9MSVNUUEVSRgorCQkJLHBlcmZjbnQr
KworI2VuZGlmCisJCQkpOworI2lmIFRSX1NSX0xJU1RQRVJGCisJCXByaW50aygidHJfYWRk
X3JpZl9lbnRyeSBudW0gZW50cmllcyB3YWxrZWQ9JWQgbnVtIGVudHJpZXM9JWRcbiIKKwkJ
ICAgICAgICxwZXJmY250LHJpZl9jYWNoZV9saXN0dG9wLT5udW1fZW50cmllcyk7CisjZW5k
aWYgCisjaWYgIFRSX1NSX0RFQlVHCisJCWRlYnVnc3RyPSJ1cGRhdGluZyI7CisjZW5kaWYK
KwkJaWYoZW50cnkpIHsKKyNpZiAhVFJfREVCVUdfVElNRQorI2lmICFUUl9TUl9TQU5JVFkg
CisJCQkvKiBUcnkgdG8ga2VlcCBnb29kIHJvdXRlcyAqLworCQkJaWYocmNmbGVuPigobnRv
aHMoZW50cnktPnJjZikgJiBUUl9SQ0ZfTEVOX01BU0spPj44KQorCQkJICAgfHwoKG5vdy1l
bnRyeS0+ZGVudHJ5W1RSX1VQREFURURdLnRpbWVzdGFtcCk8KDEyMCpIWikpKSB7CisKKwkJ
CQkvKiBXZSBhdm9pZCB1cGRhdGUgdGhlIHRpbWVzdGFtcCBoZXJlIAorCQkJCSAqIHNvIHNh
bml0eSB0aW1lc3RhbXBzIGFyZSBpbnZhbGlkIGluIHJlYWxpdHkuCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLworCQkJCWdvdG8gZG9uZTsKKwkJCX0KKyNlbmRpZgor
I2VuZGlmCisJCX0KKwkJZWxzZSB7CisJCQlpZihyaWZfY2FjaGVfbGlzdHRvcC0+bnVtX2Vu
dHJpZXM8c3lzY3RsX3RyX3JpZl9saW5rZWRfbGlzdF93aWR0aCkgeworCQkJCWVudHJ5PXRy
X2FsbG9jKHNpemVvZih0cl9yaWZfY2FjaGVfZW50cnkpKTsKKwkJCQlmaXh1cGRhdGVkPUZB
TFNFOworCQkJCWlmKCFlbnRyeSkgCisJCQkJCWdvdG8gZmFpbDsKKwkJCQl0cl9hZGRfdG9f
dGFpbChyaWZfY2FjaGVfbGlzdHRvcCxlbnRyeSxUUl9VU0VELG5vdyk7CisJCQkJdHJfYWRk
X3RvX2hlYWQocmlmX2NhY2hlX2xpc3R0b3AsZW50cnksVFJfVVBEQVRFRCxub3cpOworCQkJ
CXJpZl9jYWNoZV9saXN0dG9wLT5udW1fZW50cmllcysrOworI2lmIFRSX1NSX1NBTklUWQor
CQkJCXRyX3Nhbml0eV9jaGVja19saXN0KHJpZl9jYWNoZV9saXN0dG9wLFRSX1VTRUQsImFk
ZGluZyBlbnRyaWVzIiwwKTsKKwkJCQl0cl9zYW5pdHlfY2hlY2tfbGlzdChyaWZfY2FjaGVf
bGlzdHRvcCxUUl9VUERBVEVELCJhZGRpbmcgZW50cmllcyIsMCk7CisjZW5kaWYKKyNpZiAg
VFJfU1JfREVCVUcKKwkJCQlkZWJ1Z3N0cj0iYWRkaW5nIjsKKyNlbmRpZgkgICAgCisJCQl9
CisJCQllbHNlIHsKKwkJCQkvKiBFbnRyeSB3YXNuJ3QgaW4gY2FjaGUgJiB0aGVyZWZvcmUg
aGFyZGx5CisJCQkJICogZGVzZXJ2ZXMgdG8gYmUgaGVyZSwgaG93ZXZlciBpZiBhIG53IHJl
cGx5CisJCQkJICogY29tZXMgZG93biBzb29uIGl0J2xsIHN0YXkuCisJCQkJICogUmVtZW1i
ZXIgb24gYXZlcmFnZSBoYXNoX3dpZHRoLzIgZW50cmllcworCQkJCSAqIHdpbGwgYmUgdGhy
b3duIG91dCBiZWZvcmUgdXMuCisJCQkJICogdGhlIG90aGVyIHZhbHVlcyBpbiB0aGUgZW50
cnkgYXJlIHN0aWxsIGdvb2QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov
CisJCQkJZW50cnk9cmlmX2NhY2hlX2xpc3R0b3AtPmRsaXN0W1RSX1VQREFURURdLnRhaWw7
CisjaWYgIFRSX1NSX0RFQlVHCisJCQkJZGVidWdzdHI9ImludmFsaWRhdGluZyBvbGQgZW50
cnkgd2l0aCI7CisjZW5kaWYKKwkJCX0KKwkJfQorCQllbnRyeS0+ZGVudHJ5W1RSX1VQREFU
RURdLnRpbWVzdGFtcD1ub3c7CisJCWVudHJ5LT5hZGRyWzBdPXRyaF9zYWRkcjA7CisJCW1l
bWNweSgmZW50cnktPmFkZHJbMV0sJnRyaC0+c2FkZHJbMV0sVFJfQUxFTi0xKTsKICNpZiBU
Ul9TUl9ERUJVRwotcHJpbnRrKCJ1cGRhdGluZyByaWZfZW50cnk6IGFkZHI6JTAyWDolMDJY
OiUwMlg6JTAyWDolMDJYOiUwMlggcmNmOiUwNFhcbiIsCi0JCXRyaC0+c2FkZHJbMF0sdHJo
LT5zYWRkclsxXSx0cmgtPnNhZGRyWzJdLAotCQl0cmgtPnNhZGRyWzNdLHRyaC0+c2FkZHJb
NF0sdHJoLT5zYWRkcls1XSwKLQkJbnRvaHModHJoLT5yY2YpKTsKKwkJcHJpbnRrKCIlcyAg
bGlzdHRvcD0lcCBlbnRyeT0lcCA6IGFkZHI6JTAyWDolMDJYOiUwMlg6JTAyWDolMDJYOiUw
MlggcmNmOiUwNFhcbiIsCisJCSAgICAgICBkZWJ1Z3N0cixyaWZfY2FjaGVfbGlzdHRvcCxl
bnRyeSwKKwkJICAgICAgIHRyaF9zYWRkcjAsdHJoLT5zYWRkclsxXSx0cmgtPnNhZGRyWzJd
LAorCQkgICAgICAgdHJoLT5zYWRkclszXSx0cmgtPnNhZGRyWzRdLHRyaC0+c2FkZHJbNV0s
CisJCSAgICAgICBudG9ocyh0cmgtPnJjZikpOwogI2VuZGlmCi0JCQkgICAgZW50cnktPnJj
ZiA9IHRyaC0+cmNmICYgaHRvbnMoKHVuc2lnbmVkIHNob3J0KX5UUl9SQ0ZfQlJPQURDQVNU
X01BU0spOwotICAgICAgICAJCSAgICBtZW1jcHkoJihlbnRyeS0+cnNlZ1swXSksJih0cmgt
PnJzZWdbMF0pLDgqc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSk7Ci0JCSAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgCWVudHJ5LT5s
YXN0X3VzZWQ9amlmZmllczsgICAgICAgICAgICAgICAKKworCQlpZiAocmNmbGVuPj02KSB7
CisJCQllbnRyeS0+cmNmPXRyaC0+cmNmJl9fY29uc3RhbnRfaHRvbnMoVFJfUkNGX0NBQ0hF
X01BU0spOworCQkJbWVtY3B5KGVudHJ5LT5yc2VnLHRyaC0+cnNlZyxyY2ZsZW4tc2l6ZW9m
KGVudHJ5LT5yY2YpKTsKKwkJfQorCQllbHNlIHsKKwkJCWVudHJ5LT5yY2Y9MDsKKwkJfQor
CQlnb3RvIGRvbmU7CisJZmFpbDoKKwkJcHJpbnRrKEtFUk5fREVCVUcgImttYWxsb2MgZmFp
bGVkIGZvciB0cl9hZGRfcmlmX2luZm8hXG4iKTsKKwlkb25lOgorCQlpZihmaXh1cGRhdGVk
KQorCQkJdHJfbWFrZV9saXN0X2hlYWQocmlmX2NhY2hlX2xpc3R0b3AsZW50cnksVFJfVVBE
QVRFRCk7CisJCXRyX3VubG9jayhkZXYpOwogCX0KLQlzcGluX3VubG9ja19iaCgmcmlmX2xv
Y2spOworCXJldHVybjsKIH0KIAorCisKIC8qCi0gKglTY2FuIHRoZSBjYWNoZSB3aXRoIGEg
dGltZXIgYW5kIHNlZSB3aGF0IHdlIG5lZWQgdG8gdGhyb3cgb3V0LgorICoJIENyZWF0ZSB0
aGUgRXRoZXJuZXQgTUFDIGhlYWRlciBmb3IgYW4gYXJiaXRyYXJ5IHByb3RvY29sIGxheWVy
IAorICoKKyAqCXNhZGRyPU5VTEwJbWVhbnMgdXNlIGRldmljZSBzb3VyY2UgYWRkcmVzcwor
ICoJZGFkZHI9TlVMTAltZWFucyBsZWF2ZSBkZXN0aW5hdGlvbiBhZGRyZXNzIChlZyB1bnJl
c29sdmVkIGFycCkKKyAqCisgKiAgICAgIE5CIGFzIHRoZSBUUl9JR19CSVQgaXMgc2V0IGlu
IHRoZSBpcCBtdWx0aWNhc3QgZnVuY3Rpb25hbCBhZGRyCisgKiAgICAgICggQzA6MDA6MDA6
MDQ6MDA6MDAgKSB3ZSBkbyBub3QgaGF2ZSB0byBleHBsaWNpdGx5IGNoZWNrIGZvciBpdCBE
SkIuIAogICovCitpbnQgdHJfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBu
ZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIHNob3J0IHR5cGUsCisgICAgICAgICAgICAgIHZv
aWQgKmRhZGRyLCB2b2lkICpzYWRkciwgdW5zaWduZWQgbGVuKSAKK3sKKwloZHJfODAyMiAq
cHRyXzgwMjI9TlVMTCwqdHJfcHRyXzgwMjI7CisJaW50ICAgaGRyX2xlbj0wLHJjZmxlbj0w
OworCXRyX2Zha2VfaGVhZGVyICpmYWtlX2hlYWRlcjsgCisJaW50ICBicm9hZGNhc3Q7CisJ
X191MTYgcmNmPVRSX05PUk1BTDsKKwl0cl9od19oZHIgKnRyaDsKKwlfX3U4ICAgZmM9MDsK
KworCWlmKGRhZGRyPT1OVUxMKSB7CisJCWZha2VfaGVhZGVyPSh0cl9mYWtlX2hlYWRlciAq
KXNrYl9wdXNoKHNrYixUUl9ITEVOKTsKKwkJbWVtY3B5KCZmYWtlX2hlYWRlci0+c2FkZHIs
c2FkZHIgPyBzYWRkcjpkZXYtPmRldl9hZGRyLFRSX0FMRU4pOworCQlmYWtlX2hlYWRlci0+
dHlwZT10eXBlOworCQlyZXR1cm4gLVRSX0hMRU47IC8qIFRoaXMgaXMgYSBrbHVkZ2UgY29z
IGRvbmUgY29zIHNvbWUgY29kZSBtaWdodCBleHBlY3QgdGhpcyAqLworCX0KKyAgIAorCXN3
aXRjaCh0eXBlKSB7CisjaWYgMAorCQkvKiByYXcgIGV0aGVyIHByb3RvPWxlbgorCQkgKiBz
aG91bGQgYmUgY2FsbGFibGUgZnJvbSBwODAyMy5jIAorICAgICAgICAgICAgICAgICAqLwor
CWNhc2UgRVRIX1BfODAyXzM6CisJCWJyZWFrOworI2VuZGlmCisJY2FzZSBFVEhfUF9BUlA6
CisJY2FzZSBFVEhfUF9JUDoKKwkJcHRyXzgwMjI9Jmhkcl84MDIybGlzdFswXTsKKwkJYnJl
YWs7CisJfQorCWlmKHB0cl84MDIyKSB7CisJCWZjPUxMQ19GUkFNRTsKKwkJdHJfcHRyXzgw
MjI9KGhkcl84MDIyICopc2tiX3B1c2goc2tiLHNpemVvZigqcHRyXzgwMjIpKTsKKwkJbWVt
Y3B5KHRyX3B0cl84MDIyLHB0cl84MDIyLHNpemVvZigqcHRyXzgwMjIpKTsKKwkJdHJfcHRy
XzgwMjItPmV0aGVydHlwZSA9IGh0b25zKHR5cGUpOworCQloZHJfbGVuKz1zaXplb2YoKnB0
cl84MDIyKTsKKwl9CisJYnJvYWRjYXN0PShtZW1jbXAoZGFkZHIsZGV2LT5icm9hZGNhc3Qs
VFJfQUxFTik9PTApOworCWlmKHB0cl84MDIyKQorCXsKKwkJaWYoYnJvYWRjYXN0KQorCQkJ
cmNmPSh0eXBlPT1FVEhfUF9BUlAgPyBUUl9SQ0ZfQUxMX1JJTkdTX0JST0FEQ0FTVCA6IFRS
X1JDRl9MSU1JVEVEX0JST0FEQ0FTVCk7CisJCWVsc2UgeworCQkJaWYoKChfX3U4ICopZGFk
ZHIpWzBdJlRSX0lHX0JJVCkKKwkJCQlyY2Y9VFJfUkNGX0xJTUlURURfQlJPQURDQVNUOwor
CQl9CisJCWlmKHJjZj09VFJfTk9STUFMKSB7CisJCQlpZihkZXYtPnJpZl9jYWNoZV9saXN0
cykKKwkJCQlyY2ZsZW49dHJfYWRkX3JpZihza2IsZGFkZHIsZGV2KTsKKwkJCWlmKGRldi0+
cmlmX2NhY2hlX2xpc3RzPT1OVUxMfHxyY2ZsZW49PS0xKSB7CisJCQkJcmNmPVRSX1JDRl9M
SU1JVEVEX0JST0FEQ0FTVDsKKwkJCQkvKiBzZW5kIHRoZSBtYWMgYWRkcmVzcyB0byBhbGwg
cmluZ3MgKi8KKwkJCX0KKwkJfQorCQlpZihyY2YhPVRSX05PX1JDRiYmcmNmIT1UUl9OT1JN
QUwpIHsKKwkJCSooKF9fdTE2ICopc2tiX3B1c2goc2tiLHNpemVvZihfX3UxNikpKT0KKwkJ
CQkoaHRvbnMoKHNpemVvZihfX3UxNikgPDwgOCkKKwkJCQkgICAgICAgfCB0cl9zZXRfcmNm
X2ZyYW1lc2l6ZShkZXYpIHwgcmNmKSk7CisJCQlyY2ZsZW49c2l6ZW9mKF9fdTE2KTsKKwkJ
fQorCX0KKwl0cmg9KHRyX2h3X2hkciAqKXNrYl9wdXNoKHNrYixzaXplb2YoKnRyaCkpOwor
CW1lbWNweSh0cmgtPmRhZGRyLGJyb2FkY2FzdCA/IGRldi0+YnJvYWRjYXN0OmRhZGRyLFRS
X0FMRU4pOworCS8qIFdlIGNhbiBiZSBjYWxsZWQgZnJvbSByZWJ1aWxkIGhlYWRlciBzbyB3
ZSBtaWdodCBvdmVyd3JpdGUgc2FkZHIKKwkgKiBzbyB3ZSBuZWVkIG1lbW1vdmUgaGVyZSBp
bnN0ZWFkIG9mIG1lbWNweQorICAgICAgICAgKi8KKwltZW1tb3ZlKHRyaC0+c2FkZHIsc2Fk
ZHIgPyBzYWRkcjpkZXYtPmRldl9hZGRyLFRSX0FMRU4pOyAKKwlpZihyY2ZsZW4pCisJCXRy
aC0+c2FkZHJbMF18PVRSX1JJSTsKKwl0cmgtPmZjPWZjOworCXRyaC0+YWM9QUM7CisJaGRy
X2xlbis9c2l6ZW9mKHRyX2h3X2hkcik7CisJcmV0dXJuKGhkcl9sZW4rcmNmbGVuKTsKK30K
IAotc3RhdGljIHZvaWQgcmlmX2NoZWNrX2V4cGlyZSh1bnNpZ25lZCBsb25nIGR1bW15KSAK
KworLyoKKyAqCUEgbmVpZ2hib3VyIGRpc2NvdmVyeSBvZiBzb21lIHNwZWNpZXMgKGVnIGFy
cCkgaGFzIGNvbXBsZXRlZC4gV2UKKyAqCWNhbiBub3cgc2VuZCB0aGUgcGFja2V0LgorICov
CisgCitpbnQgdHJfcmVidWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYikgCit7CisJ
dHJfZmFrZV9oZWFkZXIgKmZha2VfaGVhZGVyPSh0cl9mYWtlX2hlYWRlciAqKXNrYi0+ZGF0
YTsKKwlfX3U4ICBkYWRkcltUUl9BTEVOXTsKKyAgIAorCXNrYl9wdWxsKHNrYixUUl9ITEVO
KTsKKyNpZmRlZiBDT05GSUdfSU5FVAorCWlmKGFycF9maW5kKGRhZGRyLCBza2IpKSB7CisJ
CXJldHVybiAxOworCX0KKwllbHNlIAorI2VuZGlmICAKKwl7CQorCQl0cl9oZWFkZXIoc2ti
LHNrYi0+ZGV2LGZha2VfaGVhZGVyLT50eXBlLCZkYWRkcixmYWtlX2hlYWRlci0+c2FkZHIs
MCk7IAorCQlyZXR1cm4gMDsKKwl9Cit9CisJCisvKgorICoJU29tZSBvZiB0aGlzIGlzIGEg
Yml0IGhhY2tpc2guIFdlIGludGVyY2VwdCBSSUYgaW5mb3JtYXRpb24KKyAqCXVzZWQgZm9y
IHNvdXJjZSByb3V0aW5nLiBXZSBhbHNvIGdyYWIgSVAgZGlyZWN0bHkgYW5kIGRvbid0IGZl
ZWQKKyAqCWl0IHZpYSBTTkFQLgorICovCisgCit1bnNpZ25lZCBzaG9ydCB0cl90eXBlX3Ry
YW5zKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpIAogewot
CWludCBpOwotCXVuc2lnbmVkIGxvbmcgbm93PWppZmZpZXM7CiAKLQlzcGluX2xvY2soJnJp
Zl9sb2NrKTsKKwlzdHJ1Y3QgdHJoX2hkciAqdHJoPShzdHJ1Y3QgdHJoX2hkciAqKXNrYi0+
ZGF0YTsKKwloZHJfODAyMiAqcHRyXzgwMjI7CisJaW50IHRyX2hkcl9zaXplPXNpemVvZih0
cl9od19oZHIpOworCQorCXNrYi0+bWFjLnJhdyA9IHNrYi0+ZGF0YTsKIAkKLQlmb3IoaT0w
OyBpIDwgUklGX1RBQkxFX1NJWkU7aSsrKSAKKyAgICAgICAJaWYodHJoLT5zYWRkclswXSAm
IFRSX1JJSSkKKwkJdHJfaGRyX3NpemUrPShudG9ocyh0cmgtPnJjZikgJiBUUl9SQ0ZfTEVO
X01BU0spID4+IDg7CisJc2tiX3B1bGwoc2tiLHRyX2hkcl9zaXplKTsKKwlwdHJfODAyMiA9
IChoZHJfODAyMiAqKXNrYi0+ZGF0YTsKKwkKKwlpZigqdHJoLT5kYWRkciAmIFRSX0lHX0JJ
VCkgeworCQlpZighbWVtY21wKHRyaC0+ZGFkZHIsZGV2LT5icm9hZGNhc3QsVFJfQUxFTikp
IAkKKwkJCXNrYi0+cGt0X3R5cGU9UEFDS0VUX0JST0FEQ0FTVDsKKwkJZWxzZQorCQkJc2ti
LT5wa3RfdHlwZT1QQUNLRVRfTVVMVElDQVNUOworCX0KKwllbHNlIGlmICggKHRyaC0+ZGFk
ZHJbMF0gJiAweDAxKSAmJiAodHJoLT5kYWRkclsxXSAmIDB4MDApICYmCisJCSAgKHRyaC0+
ZGFkZHJbMl0gJiAweDVFKSkKIAl7Ci0JCXJpZl9jYWNoZSBlbnRyeSwgKnBlbnRyeT1yaWZf
dGFibGUraTsJCi0JCXdoaWxlKChlbnRyeT0qcGVudHJ5KSkgCi0JCXsKLQkJCS8qCi0JCQkg
KglPdXQgaXQgZ29lcwotCQkJICovCi0JCQlpZigobm93LWVudHJ5LT5sYXN0X3VzZWQpID4g
c3lzY3RsX3RyX3JpZl90aW1lb3V0KSAKLQkJCXsKLQkJCQkqcGVudHJ5PWVudHJ5LT5uZXh0
OwotCQkJCWtmcmVlX3MoZW50cnksc2l6ZW9mKHN0cnVjdCByaWZfY2FjaGVfcykpOwotCQkJ
fQotCQkJZWxzZQotCQkJCXBlbnRyeT0mZW50cnktPm5leHQ7Ci0JCX0KKwkJc2tiLT5wa3Rf
dHlwZT1QQUNLRVRfTVVMVElDQVNUOworCX0KKwllbHNlIGlmKGRldi0+ZmxhZ3MgJiBJRkZf
UFJPTUlTQykgeworCQlpZihtZW1jbXAodHJoLT5kYWRkciwgZGV2LT5kZXZfYWRkciwgVFJf
QUxFTikpCisJCQlza2ItPnBrdF90eXBlPVBBQ0tFVF9PVEhFUkhPU1Q7CiAJfQotCQotCXNw
aW5fdW5sb2NrKCZyaWZfbG9jayk7CiAKKwlpZiAoKHNrYi0+cGt0X3R5cGUgIT0gUEFDS0VU
X0JST0FEQ0FTVCkgJiYKKwkgICAgKHNrYi0+cGt0X3R5cGUgIT0gUEFDS0VUX01VTFRJQ0FT
VCkpCisJCXRyX2FkZF9yaWZfaW5mbyh0cmgsZGV2KSA7IAogCS8qCi0JICoJUmVzZXQgdGhl
IHRpbWVyCisJICogU3RyaXAgdGhlIFNOQVAgaGVhZGVyIGZyb20gQVJQIHBhY2tldHMgc2lu
Y2Ugd2UgZG9uJ3QgCisJICogcGFzcyB0aGVtIHRocm91Z2ggdG8gdGhlIDgwMi4yL1NOQVAg
bGF5ZXJzLgogCSAqLwotCSAKLQltb2RfdGltZXIoJnJpZl90aW1lciwgamlmZmllcytzeXNj
dGxfdHJfcmlmX3RpbWVvdXQpOwogCisJaWYgKHB0cl84MDIyLT5kc2FwID09IEVYVEVOREVE
X1NBUCAmJgorCSAgICAocHRyXzgwMjItPmV0aGVydHlwZSA9PSBudG9ocyhFVEhfUF9JUCkg
fHwKKwkgICAgIHB0cl84MDIyLT5ldGhlcnR5cGUgPT0gbnRvaHMoRVRIX1BfQVJQKSkpIHsK
KwkJc2tiX3B1bGwoc2tiLCBzaXplb2YoKnB0cl84MDIyKSk7CisJCXJldHVybiBwdHJfODAy
Mi0+ZXRoZXJ0eXBlOworCX0KKworCXJldHVybiBudG9ocyhFVEhfUF84MDJfMik7CiB9CiAK
IC8qCkBAIC00NTQsODIgKzgzOCwxMTEgQEAKICAqCXJvdXRpbmcuCiAgKi8KICAKKyNpZmRl
ZiBDT05GSUdfUFJPQ19GUworLyogZm9yIHNhZmV0eSBwdXQgY3VybHkgYnJhY2tldHMgYXJv
dW5kIHRoaXMgbWFjcm8gCisgKiBvdGhld2lzZSB5b3UgbWF5IGdldCBjdW5mdXNlZCBlbHNl
cyBldGMuCisgKiBhbHNvIG1ha2Ugc3VyZSB0aGF0IHRoZXJlIGlzIGEgXG4gb24gdGhlIGVu
ZCBvZgorICogZWFjaCBwcmludGYgb3RoZXJ3aXNlIHRoZSBwcmV0dHkgcHJpbnRpbmcgbWln
aHQgbm90CisgKiBiZSBzbyBwcmV0dHkgaWYgdGhlIGNhY2hlIGdldHMgbW9kaWZpZWQgd2hp
bGUgcHJpbnRpbmcKKyAqIHRvIHRoZSBwcm9jZnMgLgorICovCisjZGVmaW5lIHRycHJvY19w
cmludGYoZXhpdHRyLGFyZ3MuLi4pICAgICAgICBcCitzcGxlbj1zcHJpbnRmKHNwYnVmZiwj
I2FyZ3MpOyAgICAgICAgICAgICAgICBcCitzcG9mZnNldCs9c3BsZW47ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCitpZihzcG9mZnNldD5vZmZzZXQpIHsgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgc3BidWZmKz1zcGxlbjsgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgY3Vycmxlbis9c3BsZW47ICAgICAgICAgICAgICAgICAgICAgICBc
Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitpZihj
dXJybGVuPj1sZW5ndGgpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgZ290
byBleGl0dHI7CisjZW5kaWYKKwogI2lmbmRlZiBDT05GSUdfUFJPQ19GUwotc3RhdGljIGlu
dCByaWZfZ2V0X2luZm8oY2hhciAqYnVmZmVyLGNoYXIgKipzdGFydCwgb2ZmX3Qgb2Zmc2V0
LCBpbnQgbGVuZ3RoKSAge30KK3N0YXRpYyBpbnQgdHJfcmlmX3Byb2NfaW5mbyhjaGFyICpi
dWZmZXIsY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmZzZXQsIGludCBsZW5ndGgpICB7fQogI2Vs
c2UKLXN0YXRpYyBpbnQgcmlmX2dldF9pbmZvKGNoYXIgKmJ1ZmZlcixjaGFyICoqc3RhcnQs
IG9mZl90IG9mZnNldCwgaW50IGxlbmd0aCkgCitzdGF0aWMgaW50IHRyX3JpZl9wcm9jX2lu
Zm8oY2hhciAqYnVmZmVyLGNoYXIgKipzdGFydCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgbGVuZ3Ro
KQogewotCWludCBsZW49MDsKLQlvZmZfdCBiZWdpbj0wOwotCW9mZl90IHBvcz0wOwotCWlu
dCBzaXplLGksaixyY2ZfbGVuLHNlZ21lbnQsYnJkZ25tYjsKKwljaGFyICAgKnNwYnVmZj0q
c3RhcnQ9YnVmZmVyOworCW9mZl90ICBzcG9mZnNldD0wOworCWludCAgICBjdXJybGVuPTAs
c3BsZW47CisJdHJfcmlmX2NhY2hlX2VudHJ5ICAgKmVudHJ5LCpsb2NhbF9lbnRyeT1OVUxM
OworCXRyX3JpZl9jYWNoZV9saXN0cyAqcmlmX2NhY2hlX2xpc3RzOworCWludCAgICAgICBk
aXI7CisJaW50ICAgICAgIHJpZmNudCxsaXN0aWR4OworCXN0cnVjdCBuZXRfZGV2aWNlICpk
ZXY7CiAJdW5zaWduZWQgbG9uZyBub3c9amlmZmllczsKKwljaGFyICAgICByaWZidWZmW1RS
X1JJRl9CVUZGX1NJWkVdLCpyaWZzdHI7ICAgICAgCisJaW50ICAgICAgbG9ja19hY3F1aXJl
ZD1GQUxTRTsKKwl0cnByb2NfcHJpbnRmKGRvbmUxLCIgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxhc3QgICAgIGxhc3RcbiIpOworCXRycHJvY19wcmludGYoZG9uZTEsIiAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXNlZCAgICB1cGRhdGVkXG4iKTsKKwl0cnByb2NfcHJpbnRm
KGRvbmUxLCJpZiAgICAgVFIgYWRkcmVzcyAgICAgICAgKHNlY3MpICAgIChzZWNzKSAgcmNm
ICByb3V0aW5nIHNlZ21lbnRzXG4iKTsKKwl0cnByb2NfcHJpbnRmKGRvbmUxLCI9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PVxuIik7CisJcmVhZF9sb2NrKCZkZXZfYmFzZV9sb2NrKTsKKwlmb3IgKGRl
diA9IGRldl9iYXNlOyBkZXYgIT0gTlVMTDsgZGV2ID0gZGV2LT5uZXh0KSB7CisJCWlmKHN0
cm5jbXAoZGV2LT5uYW1lLCAidHIiLCAyKSA9PSAwKSB7CisJCQlsb2NrX2FjcXVpcmVkPXRy
X2xvY2soZGV2KTsKKwkJCWlmKGxvY2tfYWNxdWlyZWQpIHsKKwkJCQlyaWZfY2FjaGVfbGlz
dHM9ZGV2LT5yaWZfY2FjaGVfbGlzdHM7CisJCQkJcmlmY250PTA7CisJCQkJaWYocmlmX2Nh
Y2hlX2xpc3RzKSB7CisJCQkJCWZvcihsaXN0aWR4PTA7bGlzdGlkeDxUUl9SSUZfQ0FDSEVf
TElTVF9TSVpFO2xpc3RpZHgrKykgeworCQkJCQkJZm9yKGVudHJ5PXJpZl9jYWNoZV9saXN0
c1tsaXN0aWR4XS5kbGlzdFtUUl9VU0VEXS5oZWFkOworCQkJCQkJICAgIGVudHJ5O2VudHJ5
PWVudHJ5LT5kZW50cnlbVFJfVVNFRF0ubmV4dCkgeworCQkJCQkJCXJpZmNudCsrOworCQkJ
CQkJCWlmKGVudHJ5LT5yY2Y9PTApIHsKKwkJCQkJCQkJcmlmc3RyPSJsb2NhbCI7CisJCQkJ
CQkJfQorCQkJCQkJCWVsc2UgeworCQkJCQkJCQlsb2NhbF9lbnRyeT1lbnRyeTsKKwkJCQkJ
CQkJcmlmc3RyPXJpZmJ1ZmY7CisJCQkJCQkJCXNwcmludGZicmlkZ2VpbmZvKHJpZmJ1ZmYs
KHRyX3JpZl9pbmZvICopJmVudHJ5LT5yY2YpOworCQkJCQkJCX0KKwkJCQkJCQl0cnByb2Nf
cHJpbnRmKGRvbmUyLCIlcyAlMDJYOiUwMlg6JTAyWDolMDJYOiUwMlg6JTAyWCAlOGxpICU4
bGkgICAgJXNcbiIsCisJCQkJCQkJCSAgICAgIGRldi0+bmFtZSxlbnRyeS0+YWRkclswXSxl
bnRyeS0+YWRkclsxXSxlbnRyeS0+YWRkclsyXSwKKwkJCQkJCQkJICAgICAgZW50cnktPmFk
ZHJbM10sZW50cnktPmFkZHJbNF0sZW50cnktPmFkZHJbNV0sCisJCQkJCQkJCSAgICAgIChu
b3ctZW50cnktPmRlbnRyeVtUUl9VU0VEXS50aW1lc3RhbXApL0haLAorCQkJCQkJCQkgICAg
ICAobm93LWVudHJ5LT5kZW50cnlbVFJfVVBEQVRFRF0udGltZXN0YW1wKS9IWixyaWZzdHIp
OworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQl0cnByb2NfcHJp
bnRmKGRvbmUyLCIlcyBjdXJyZW50bHkgaGFzIG5vIHJpZl9lbnRyaWVzXG4iLGRldi0+bmFt
ZSk7CisJCQkJfQogCi0JcmlmX2NhY2hlIGVudHJ5OwotCi0Jc2l6ZT1zcHJpbnRmKGJ1ZmZl
ciwKLQkJICAgICAiaWYgICAgIFRSIGFkZHJlc3MgICAgICAgVFRMICAgcmNmICAgcm91dGlu
ZyBzZWdtZW50c1xuIik7Ci0JcG9zKz1zaXplOwotCWxlbis9c2l6ZTsKLQotCXNwaW5fbG9j
a19iaCgmcmlmX2xvY2spOwotCWZvcihpPTA7aSA8IFJJRl9UQUJMRV9TSVpFO2krKykgCi0J
ewotCQlmb3IoZW50cnk9cmlmX3RhYmxlW2ldO2VudHJ5O2VudHJ5PWVudHJ5LT5uZXh0KSB7
Ci0JCQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gX19kZXZfZ2V0X2J5X2luZGV4KGVudHJ5
LT5pZmFjZSk7Ci0KLQkJCXNpemU9c3ByaW50ZihidWZmZXIrbGVuLCIlcyAlMDJYOiUwMlg6
JTAyWDolMDJYOiUwMlg6JTAyWCAlN2xpICIsCi0JCQkJICAgICBkZXY/ZGV2LT5uYW1lOiI/
IixlbnRyeS0+YWRkclswXSxlbnRyeS0+YWRkclsxXSxlbnRyeS0+YWRkclsyXSxlbnRyeS0+
YWRkclszXSxlbnRyeS0+YWRkcls0XSxlbnRyeS0+YWRkcls1XSwKLQkJCQkgICAgIHN5c2N0
bF90cl9yaWZfdGltZW91dC0obm93LWVudHJ5LT5sYXN0X3VzZWQpKTsKLQkJCWxlbis9c2l6
ZTsKLQkJCXBvcz1iZWdpbitsZW47Ci0JCQlpZiAoZW50cnktPmxvY2FsX3JpbmcpCi0JCQkg
ICAgICAgIHNpemU9c3ByaW50ZihidWZmZXIrbGVuLCJsb2NhbFxuIik7Ci0JCQllbHNlIHsK
LQkJCSAgICAgICAgc2l6ZT1zcHJpbnRmKGJ1ZmZlcitsZW4sIiUwNFgiLCBudG9ocyhlbnRy
eS0+cmNmKSk7Ci0JCQkJcmNmX2xlbiA9ICgobnRvaHMoZW50cnktPnJjZikgJiBUUl9SQ0Zf
TEVOX01BU0spPj44KS0yOyAKLQkJCQlpZiAocmNmX2xlbikKLQkJCQkgICAgICAgIHJjZl9s
ZW4gPj49IDE7Ci0JCQkJZm9yKGogPSAxOyBqIDwgcmNmX2xlbjsgaisrKSB7Ci0JCQkJCWlm
KGo9PTEpIHsKLQkJCQkJCXNlZ21lbnQ9bnRvaHMoZW50cnktPnJzZWdbai0xXSk+PjQ7Ci0J
CQkJCQlsZW4rPXNpemU7Ci0JCQkJCQlwb3M9YmVnaW4rbGVuOwotCQkJCQkJc2l6ZT1zcHJp
bnRmKGJ1ZmZlcitsZW4sIiAgJTAzWCIsc2VnbWVudCk7Ci0JCQkJCX07Ci0JCQkJCXNlZ21l
bnQ9bnRvaHMoZW50cnktPnJzZWdbal0pPj40OwotCQkJCQlicmRnbm1iPW50b2hzKGVudHJ5
LT5yc2VnW2otMV0pJjB4MDBmOwotCQkJCQlsZW4rPXNpemU7Ci0JCQkJCXBvcz1iZWdpbits
ZW47Ci0JCQkJCXNpemU9c3ByaW50ZihidWZmZXIrbGVuLCItJTAxWC0lMDNYIixicmRnbm1i
LHNlZ21lbnQpOworCQkJCXRycHJvY19wcmludGYoZG9uZTIsIlxuc3RhdHMgZm9yICVzXG4i
CisJCQkJCSAgICAgICJyaWZjbnQ9JWQgcmlmIG1lbSB1c2VkICVsZGtcbiIsCisJCQkJCSAg
ICAgIGRldi0+bmFtZSxyaWZjbnQsCisJCQkJCSAgICAgIChsb25nKShyaWZfY2FjaGVfbGlz
dHMgPyAoVFJfUklGX0NBQ0hFX0xJU1RfU0laRSpzaXplb2YodHJfcmlmX2NhY2hlX2xpc3Rz
KQorCQkJCQkJCQkJKygocmlmY250KnNpemVvZih0cl9yaWZfY2FjaGVfZW50cnkpKSkpPj4x
MDowKSk7CisJCQkJaWYobG9jYWxfZW50cnkpIHsKKwkJCQkJZGlyPShudG9ocyhsb2NhbF9l
bnRyeS0+cmNmKSZUUl9SQ0ZfRElSX0JJVCA/IFRSVUU6RkFMU0UpOworCQkJCQl0cnByb2Nf
cHJpbnRmKGRvbmUyLCJsb2NhbCByaW5nIG51bWJlcj0lMDNYXG4iLAorCQkJCQkJICAgICAg
UkRfVE9fUklOR05VTShsb2NhbF9lbnRyeS0+cnNlZ1tkaXIgPyAKKwkJCQkJCQkJCQkgICAg
IDA6KCgobnRvaHMobG9jYWxfZW50cnktPnJjZikgJiBUUl9SQ0ZfTEVOX01BU0spPj45KS0y
KV0pKTsKIAkJCQl9Ci0JCQkJbGVuKz1zaXplOwotCQkJCXBvcz1iZWdpbitsZW47Ci0JCQkg
ICAgICAgIHNpemU9c3ByaW50ZihidWZmZXIrbGVuLCJcbiIpOwotCQkJfQotCQkJbGVuKz1z
aXplOwotCQkJcG9zPWJlZ2luK2xlbjsKLQotCQkJaWYocG9zPG9mZnNldCkgCi0JCQl7Ci0J
CQkJbGVuPTA7Ci0JCQkJYmVnaW49cG9zOworCQkJCWxvY2tfYWNxdWlyZWQ9RkFMU0U7CisJ
CQkJdHJfdW5sb2NrKGRldik7CiAJCQl9Ci0JCQlpZihwb3M+b2Zmc2V0K2xlbmd0aCkKLQkJ
CQlicmVhazsKLQkgICAJfQotCQlpZihwb3M+b2Zmc2V0K2xlbmd0aCkKLQkJCWJyZWFrOwot
CX0KLQlzcGluX3VubG9ja19iaCgmcmlmX2xvY2spOwotCi0JKnN0YXJ0PWJ1ZmZlcisob2Zm
c2V0LWJlZ2luKTsgLyogU3RhcnQgb2Ygd2FudGVkIGRhdGEgKi8KLQlsZW4tPShvZmZzZXQt
YmVnaW4pOyAgICAvKiBTdGFydCBzbG9wICovCi0JaWYobGVuPmxlbmd0aCkKLQkJbGVuPWxl
bmd0aDsgICAgLyogRW5kaW5nIHNsb3AgKi8KLQlpZiAobGVuPDApCi0JCWxlbj0wOwotCXJl
dHVybiBsZW47CisJCQllbHNlIHsKKwkJCQl0cnByb2NfcHJpbnRmKGRvbmUxLCJcbiVzIGlz
IGJ1c3kgbm8gaW5mbyBhdmFpbGFibGUgdHJ5IGxhdGVyXG4iLGRldi0+bmFtZSk7CisjaWYg
VFJfREVCVUdfTE9DS1MKKwkJCQl0cnByb2NfcHJpbnRmKGRvbmUxLCIlcyIsbG9ja2J1ZmYp
OyAKKyNlbmRpZgorCQkJfQorCQl9CisJfQorIGRvbmUyOgorCWlmKGRldiYmbG9ja19hY3F1
aXJlZCkKKwkJdHJfdW5sb2NrKGRldik7CisgZG9uZTE6CisJcmVhZF91bmxvY2soJmRldl9i
YXNlX2xvY2spOworCWlmKGN1cnJsZW4+bGVuZ3RoKSB7CisJCS8qIHJld2luZCB0byBwcmV2
aW91cyBwcmludGYgc28gdGhhdCB3ZSBhcmUgY29ycmVjdGx5CisJCSAqIGFsaWduZWQgaWYg
d2UgZ2V0IGNhbGxlZCB0byBwcmludCBhbm90aGVyIHBhZ2UuCisgICAgICAgICAgICAgICAg
ICovCisJCWN1cnJsZW4tPXNwbGVuOworCX0KKwlyZXR1cm4oY3Vycmxlbik7CiB9CiAjZW5k
aWYKIApAQCAtNTQwLDExICs5NTMsMjcgQEAKIAogdm9pZCBfX2luaXQgcmlmX2luaXQoc3Ry
dWN0IG5ldF9wcm90byAqdW51c2VkKQogewotCXJpZl90aW1lci5leHBpcmVzICA9IFJJRl9U
SU1FT1VUOwotCXJpZl90aW1lci5kYXRhICAgICA9IDBMOwotCXJpZl90aW1lci5mdW5jdGlv
biA9IHJpZl9jaGVja19leHBpcmU7Ci0JaW5pdF90aW1lcigmcmlmX3RpbWVyKTsKLQlhZGRf
dGltZXIoJnJpZl90aW1lcik7CisJcHJvY19uZXRfY3JlYXRlKCJ0cl9yaWYiLDAsdHJfcmlm
X3Byb2NfaW5mbyk7Cit9CiAKLQlwcm9jX25ldF9jcmVhdGUoInRyX3JpZiIsMCxyaWZfZ2V0
X2luZm8pOwordm9pZCB0cl9mcmVlX3JpZl9jYWNoZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2
KQoreworCXRyX3JpZl9jYWNoZV9saXN0cyAqcmlmX2NhY2hlX2xpc3RzPWRldi0+cmlmX2Nh
Y2hlX2xpc3RzOworCXRyX3JpZl9jYWNoZV9lbnRyeSAqZW50cnk7CisJaW50ICAgICAgICAg
ICAgICAgIGxpc3RpZHg7CisJaWYocmlmX2NhY2hlX2xpc3RzKSB7CisJCWlmKHRyX2xvY2so
ZGV2KSkgeworCQkJZm9yKGxpc3RpZHg9MDtsaXN0aWR4IDxUUl9SSUZfQ0FDSEVfTElTVF9T
SVpFO2xpc3RpZHgrKykgeworCQkJCWZvcihlbnRyeT1yaWZfY2FjaGVfbGlzdHNbbGlzdGlk
eF0uZGxpc3RbVFJfVVNFRF0uaGVhZDsKKwkJCQkgICAgZW50cnk7ZW50cnk9ZW50cnktPmRl
bnRyeVtUUl9VU0VEXS5uZXh0KQorCQkJCQlrZnJlZShlbnRyeSk7CisJCQl9CisJCQlrZnJl
ZShyaWZfY2FjaGVfbGlzdHMpOworCQkJZGV2LT5yaWZfY2FjaGVfbGlzdHM9TlVMTDsKKwkJ
CXRyX3VubG9jayhkZXYpOworCQl9CisJCWVsc2UKKwkJCXByaW50aygiZnJlZSByaWYgY2Fj
aGUgZmFpbGVkIGZvciAlcyBwb3NzaWJseSBidXN5XG4iLGRldi0+bmFtZSk7CisJfQogfQor
CmRpZmYgLXVyTiBsaW51eC0yLjMuMzYub3JpZy9uZXQvY29yZS9zb2NrLmMgbGludXgtMi4z
LjM2L25ldC9jb3JlL3NvY2suYwotLS0gbGludXgtMi4zLjM2Lm9yaWcvbmV0L2NvcmUvc29j
ay5jCVRodSBKYW4gIDYgMDk6MjU6MjAgMjAwMAorKysgbGludXgtMi4zLjM2L25ldC9jb3Jl
L3NvY2suYwlUaHUgSmFuICA2IDA5OjI2OjMwIDIwMDAKQEAgLTUwMiw2ICs1MDIsOSBAQAog
CWlmKHNrICYmIHplcm9faXQpIHsKIAkJbWVtc2V0KHNrLCAwLCBzaXplb2Yoc3RydWN0IHNv
Y2spKTsKIAkJc2stPmZhbWlseSA9IGZhbWlseTsKKyNpZiBDT05GSUdfVFIKKwkJc2stPmhp
bnQgPSBOVUxMOwkvKiB1c2VyIHRvIHNwZWVkIHVwIHNvdXJjZSByb3V0aW5nICovCisjZW5k
aWYKIAkJc29ja19sb2NrX2luaXQoc2spOwogCX0KIAo=
--------------0431751422B620F3F12849A7
Content-Type: application/x-unknown-content-type-AutoCADLTHatchPatternDefinition;
name="tr_ipv6.pat"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="tr_ipv6.pat"

ZGlmZiAtdXIgbGludXgtMi4zLjMzLmRqYi9kcml2ZXJzL25ldC90b2tlbnJpbmcvaWJtdHIu
YyBsaW51eC0yLjMuMzMuZGpiLmlwdjYvZHJpdmVycy9uZXQvdG9rZW5yaW5nL2libXRyLmMK
LS0tIGxpbnV4LTIuMy4zMy5kamIvZHJpdmVycy9uZXQvdG9rZW5yaW5nL2libXRyLmMJVGh1
IERlYyAxNiAyMToyNTo1MSAxOTk5CisrKyBsaW51eC0yLjMuMzMuZGpiLmlwdjYvZHJpdmVy
cy9uZXQvdG9rZW5yaW5nL2libXRyLmMJVGh1IERlYyAxNiAyMjo0NDowNCAxOTk5CkBAIC0x
NjUxLDcgKzE2NTEsNyBAQAogICAgICAgIAl0aS0+dHJfc3RhdHMucnhfcGFja2V0cysrOwog
CiAJc2tiLT5wcm90b2NvbCA9IHRyX3R5cGVfdHJhbnMoc2tiLGRldik7Ci0gCWlmIChJUHY0
X3ApeyAKKyAJaWYgKElQdjRfcCAmJiAoc2tiLT5wcm90b2NvbCA9IEVUSF9QX0lQKSl7IAog
CQlza2ItPmNzdW0gICAgICA9IGNoa3N1bTsKIAkJc2tiLT5pcF9zdW1tZWQgPSAxOwogCX0K
ZGlmZiAtdXIgbGludXgtMi4zLjMzLmRqYi9pbmNsdWRlL25ldC9pZl9pbmV0Ni5oIGxpbnV4
LTIuMy4zMy5kamIuaXB2Ni9pbmNsdWRlL25ldC9pZl9pbmV0Ni5oCi0tLSBsaW51eC0yLjMu
MzMuZGpiL2luY2x1ZGUvbmV0L2lmX2luZXQ2LmgJTW9uIEF1ZyAyMyAxMzowMTowMiAxOTk5
CisrKyBsaW51eC0yLjMuMzMuZGpiLmlwdjYvaW5jbHVkZS9uZXQvaWZfaW5ldDYuaAlUaHUg
RGVjIDE2IDIyOjUwOjA3IDE5OTkKQEAgLTExOSw1ICsxMTksMTUgQEAKIAogCW1lbWNweShi
dWYgKyAyLCAmYWRkci0+czZfYWRkcjMyWzNdLCBzaXplb2YoX191MzIpKTsKIH0KKworZXh0
ZXJuIF9faW5saW5lX18gdm9pZCBpcHY2X3RyX21jX21hcChzdHJ1Y3QgaW42X2FkZHIgKmFk
ZHIsIGNoYXIgKmJ1ZikKK3sKKwlidWZbMF0gPSAweEMwIDsgCisJYnVmWzFdID0gMHgwMCA7
IAorCWJ1ZlsyXSA9IDB4MDAgOyAKKwlidWZbM10gPSAweDA0IDsgCisJYnVmWzRdID0gMHgw
MCA7IAorCWJ1Zls1XSA9IDB4MDAgOyAKK30KICNlbmRpZgogI2VuZGlmCmRpZmYgLXVyIGxp
bnV4LTIuMy4zMy5kamIvbmV0L2lwdjYvYWRkcmNvbmYuYyBsaW51eC0yLjMuMzMuZGpiLmlw
djYvbmV0L2lwdjYvYWRkcmNvbmYuYwotLS0gbGludXgtMi4zLjMzLmRqYi9uZXQvaXB2Ni9h
ZGRyY29uZi5jCUZyaSBOb3YgMTkgMTQ6MzM6MjkgMTk5OQorKysgbGludXgtMi4zLjMzLmRq
Yi5pcHY2L25ldC9pcHY2L2FkZHJjb25mLmMJVGh1IERlYyAxNiAyMjo1MzozNyAxOTk5CkBA
IC02NzAsNiArNjcwLDcgQEAKIHsKIAlzd2l0Y2ggKGRldi0+dHlwZSkgewogCWNhc2UgQVJQ
SFJEX0VUSEVSOgorCWNhc2UgQVJQSFJEX0lFRUU4MDJfVFI6CiAJCWlmIChkZXYtPmFkZHJf
bGVuICE9IEVUSF9BTEVOKQogCQkJcmV0dXJuIC0xOwogCQltZW1jcHkoZXVpLCBkZXYtPmRl
dl9hZGRyLCAzKTsKQEAgLTExOTEsOCArMTE5Miw4IEBACiAKIAlBU1NFUlRfUlROTCgpOwog
Ci0JaWYgKGRldi0+dHlwZSAhPSBBUlBIUkRfRVRIRVIpIHsKLQkJLyogQWxhcywgd2Ugc3Vw
cG9ydCBvbmx5IEV0aGVybmV0IGF1dG9jb25maWd1cmF0aW9uLiAqLworCWlmICgoZGV2LT50
eXBlICE9IEFSUEhSRF9FVEhFUikgJiYKKwkgICAgKGRldi0+dHlwZSAhPSBBUlBIUkRfSUVF
RTgwMl9UUikpIHsKIAkJcmV0dXJuOwogCX0KIApAQCAtMTk5MCw3ICsxOTkxLDggQEAKIAkJ
Y2FzZSBBUlBIUkRfTE9PUEJBQ0s6CQogCQkJaW5pdF9sb29wYmFjayhkZXYpOwogCQkJYnJl
YWs7Ci0JCWNhc2UgQVJQSFJEX0VUSEVSOgkKKwkJY2FzZSBBUlBIUkRfRVRIRVI6CisJCWNh
c2UgQVJQSFJEX0lFRUU4MDJfVFI6CQogCQkJYWRkcmNvbmZfZGV2X2NvbmZpZyhkZXYpOwog
CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CmRpZmYgLXVyIGxpbnV4LTIuMy4zMy5kamIvbmV0L2lw
djYvbmRpc2MuYyBsaW51eC0yLjMuMzMuZGpiLmlwdjYvbmV0L2lwdjYvbmRpc2MuYwotLS0g
bGludXgtMi4zLjMzLmRqYi9uZXQvaXB2Ni9uZGlzYy5jCUZyaSBOb3YgMTkgMTQ6MzM6Mjkg
MTk5OQorKysgbGludXgtMi4zLjMzLmRqYi5pcHY2L25ldC9pcHY2L25kaXNjLmMJV2VkIEph
biAgNSAxMDowNDo0MiAyMDAwCkBAIC0xNjEsNiArMTYxLDkgQEAKIAljYXNlIEFSUEhSRF9G
RERJOgogCQlpcHY2X2V0aF9tY19tYXAoYWRkciwgYnVmKTsKIAkJcmV0dXJuIDA7CisJY2Fz
ZSBBUlBIUkRfSUVFRTgwMl9UUjoKKwkJaXB2Nl90cl9tY19tYXAoYWRkciwgYnVmKTsKKwkJ
cmV0dXJuIDA7CiAJZGVmYXVsdDoKIAkJaWYgKGRpcikgewogCQkJbWVtY3B5KGJ1ZiwgZGV2
LT5icm9hZGNhc3QsIGRldi0+YWRkcl9sZW4pOwpAQCAtOTY3LDEwICs5NzAsMjUgQEAKIAkJ
CQkgICBpcyB1bnNwZWNpZmllZCBhZGRyZXNzLCBpdCBpcyBzb21lb25lCiAJCQkJICAgZG9l
cyBEQUQsIG90aGVyd2lzZSB3ZSBpZ25vcmUgc29saWNpdGF0aW9ucwogCQkJCSAgIHVudGls
IERBRCB0aW1lciBleHBpcmVzLgorCQkJCSAgIE9uIFRva2VuIFJpbmcgd2UgYWxzbyBzZWUg
b3VyIG93bgorCQkJCSAgIGJyb2FkY2FzdHMuIFdlIGhhdmUgdG8gbWFzayB0aGVtIG91dCBo
ZXJlLgogCQkJCSAqLwotCQkJCWlmIChhZGRyX3R5cGUgPT0gSVBWNl9BRERSX0FOWSkKLQkJ
CQkJYWRkcmNvbmZfZGFkX2ZhaWx1cmUoaWZwKTsKLQkJCQllbHNlCisJCQkJaWYgKGFkZHJf
dHlwZSA9PSBJUFY2X0FERFJfQU5ZKSB7CisJCQkJCWlmIChkZXYtPnR5cGUgPSBBUlBIUkRf
SUVFRTgwMl9UUikgeyAKKwkJCQkJCXVuc2lnbmVkIGNoYXIgKnNhZHIgPSBza2ItPm1hYy5y
YXc7CisJCQkJCQlpZiAoKChzYWRyWzhdICYgMHg3ZikgIT0gKGRldi0+ZGV2X2FkZHJbMF0g
JiAweDdmKSkgfHwKKwkJCQkJCShzYWRyWzldICE9IGRldi0+ZGV2X2FkZHJbMV0pIHx8CisJ
CQkJCQkoc2FkclsxMF0gIT0gZGV2LT5kZXZfYWRkclsyXSkgfHwKKwkJCQkJCShzYWRyWzEx
XSAhPSBkZXYtPmRldl9hZGRyWzNdKSB8fAorCQkJCQkJKHNhZHJbMTJdICE9IGRldi0+ZGV2
X2FkZHJbNF0pIHx8CisJCQkJCQkoc2FkclsxM10gIT0gZGV2LT5kZXZfYWRkcls1XSkpCisJ
CQkJCQl7IAorCQkJCQkJCWFkZHJjb25mX2RhZF9mYWlsdXJlKGlmcCkgOyAKKwkJCQkJCX0K
KwkJCQkJfSBlbHNlIHsgCisJCQkJCQlhZGRyY29uZl9kYWRfZmFpbHVyZShpZnApOworCQkJ
CQl9CisJCQkJfSBlbHNlIAogCQkJCQlpbjZfaWZhX3B1dChpZnApOwogCQkJCXJldHVybiAw
OwogCQkJfQo=
--------------0431751422B620F3F12849A7--

-
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/