Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Aug 2015 11:35:47 -0700
From:      Justin Hibbits <jrh29@alumni.cwru.edu>
To:        Adrian Chadd <adrian.chadd@gmail.com>
Cc:        John Baldwin <jhb@freebsd.org>, "freebsd-arch@freebsd.org" <freebsd-arch@freebsd.org>,  Marcel Moolenaar <marcel@xcllnt.net>
Subject:   Re: Devices with 36-bit paddr on 32-bit system
Message-ID:  <CAHSQbTAGD=4A20XZL09YXbEm9hdf5K2_QCRPFOAjrXHF4eg9sQ@mail.gmail.com>
In-Reply-To: <CAJ-VmomduZBYT6=e7HUm2V1m0taM0MAMXxMojYV8wvgEKyUEyA@mail.gmail.com>
References:  <CAHSQbTDsvB32%2BLyzHJO78VwUwAfUTMOUQp13BMCUpapSMT0fbg@mail.gmail.com> <ED4B5B25-D7A7-440C-9452-4C79B0800D2E@xcllnt.net> <1568331.OrSoeYfXsf@ralph.baldwin.cx> <CAJ-VmomduZBYT6=e7HUm2V1m0taM0MAMXxMojYV8wvgEKyUEyA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--001a1141f3be08c46f051e777817
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hey, I already had that thought, too, you just encouraged me to take
it :)  Anyway, here's an initial patch.  I've *only* tested it on one
PowerPC board (the one needing this change), none of my other devices,
and no other architectures.  Thoughts?

tl;dr I went with using bus_addr_t for the addresses, and kept u_long
for the sizes (I can change it to use bus_size_t instead, but it's
already vm_offset_t on PowerPC, which is long anyway).

Since I took the diff as a whole, and erased unrelated bits, there may
still be unrelated bits in the diff, which can be ignored (all part of
my larger work).

- Justin

On Fri, Aug 28, 2015 at 1:59 PM, Adrian Chadd <adrian.chadd@gmail.com> wrot=
e:
> +1 on this.
>
> Also - justin/i figured it out (well, I made the suggestion, he did
> the suggestion) which is just to do a big/single mapping of the
> relevant hardware window into vmem early in boot, and hack that bus
> nexus to treat things as being in that vmem region. He's gotten pretty
> far along the device bringup path now. That way the rmem allocation is
> just from that vmem region.
>
>
>
> -adrian
>
>
>
> On 28 August 2015 at 10:35, John Baldwin <jhb@freebsd.org> wrote:
>> On Tuesday, August 25, 2015 08:55:45 AM Marcel Moolenaar wrote:
>>>
>>> > On Aug 24, 2015, at 11:44 PM, Justin Hibbits <jrh29@alumni.cwru.edu> =
wrote:
>>> >
>>> > With my work porting FreeBSD to PowerPC e500mc and e5500, I have
>>> > devices in my device tree mapped well above the 4GB mark
>>> > (0xffexxxxxx), and have no idea how to properly address them for
>>> > resources in rman.  Do we already have a solution to support this?
>>> > Part of the problem is the powerpc nexus does a straight convert to
>>> > vm_offset_t of rman_get_start() (itself returning a u_long), and
>>> > vm_offset_t is not necessarily equal to vm_paddr_t (on Book-E powerpc
>>> > vm_offset_t is 32-bits, vm_paddr_t is 64-bits).
>>>
>>> I think the best solution is to represent a resource address
>>> space with a type other than u_long. It makes sense to have
>>> it use bus_addr_t or vm_paddr_t for example. Such a change
>>> comes at a high price for sure, but you=E2=80=99ll fix it once and
>>> for all. I don=E2=80=99t think you should kluge your way out of this...
>>
>> Expanding beyond u_long is the right solution.  PAE doesn't generally su=
ffer
>> from this on i386 (though the ram0 device "punts" and ignores RAM ranges=
 above
>> 4G as a workaround).
>>
>> However, u_long is baked into the bus resource API quite a bit.  Specifi=
cally,
>> the values 0ul and ~0ul are used as magic numbers in lots of places to r=
equest
>> "anywhere" locations.  Some of this has been mitigated by
>> bus_alloc_resource_any(), but that doesn't cover all cases.  You will pr=
obably
>> want to add some explicit constants and do a sweep replacing the magic n=
umbers
>> with those first (and MFC the constants at least to make it easier to po=
rt
>> drivers across branches).  Then you can change the type.
>>
>> As far as the best type: rman's are in theory generic and not just for b=
us
>> addresses.  I'd be tempted to let each platform define an rman_addr_t al=
ong
>> with RMAN_ADDR_MAX constants, but in practice it is probably fine to use
>> bus_addr_t and BUS_SPACE_MAXADDR.  If you do that it also means you can =
skip
>> the step of having to MFC new constants.
>>
>> Note that various bus APIs will have to change to use bus_addr_t instead=
 of
>> u_long as well.
>>
>> --
>> John Baldwin
>> _______________________________________________
>> freebsd-arch@freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-arch
>> To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"

--001a1141f3be08c46f051e777817
Content-Type: text/plain; charset=US-ASCII; name="rman.diff"
Content-Disposition: attachment; filename="rman.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_idxeo38y0

SW5kZXg6IHN5cy9kZXYvYXRhL2F0YS1wY2kuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L2F0YS9h
dGEtcGNpLmMJKHJldmlzaW9uIDI4NzE4OSkKKysrIHN5cy9kZXYvYXRhL2F0YS1wY2kuYwkod29y
a2luZyBjb3B5KQpAQCAtMjE3LDcgKzIxNyw3IEBACiAKIHN0cnVjdCByZXNvdXJjZSAqCiBhdGFf
cGNpX2FsbG9jX3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBl
LCBpbnQgKnJpZCwKLQkJICAgICAgIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNv
dW50LCB1X2ludCBmbGFncykKKwkJICAgICAgIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3Qg
ZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQogewogCXN0cnVjdCBhdGFfcGNpX2NvbnRy
b2xsZXIgKmNvbnRyb2xsZXIgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CiAJc3RydWN0IHJlc291
cmNlICpyZXMgPSBOVUxMOwpJbmRleDogc3lzL2Rldi9hdGEvYXRhLXBjaS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHN5cy9kZXYvYXRhL2F0YS1wY2kuaAkocmV2aXNpb24gMjg3MTg5KQorKysgc3lzL2Rldi9h
dGEvYXRhLXBjaS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzUsNyArNTM1LDcgQEAKIGludCBhdGFf
cGNpX3ByaW50X2NoaWxkKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQpOwogaW50IGF0YV9w
Y2lfY2hpbGRfbG9jYXRpb25fc3RyKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIGNoYXIg
KmJ1ZiwKICAgICBzaXplX3QgYnVmbGVuKTsKLXN0cnVjdCByZXNvdXJjZSAqIGF0YV9wY2lfYWxs
b2NfcmVzb3VyY2UoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAq
cmlkLCB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3Mp
Oworc3RydWN0IHJlc291cmNlICogYXRhX3BjaV9hbGxvY19yZXNvdXJjZShkZXZpY2VfdCBkZXYs
IGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50ICpyaWQsIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1
c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKTsKIGludCBhdGFfcGNpX3Jl
bGVhc2VfcmVzb3VyY2UoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGlu
dCByaWQsIHN0cnVjdCByZXNvdXJjZSAqcik7CiBpbnQgYXRhX3BjaV9zZXR1cF9pbnRyKGRldmlj
ZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIHN0cnVjdCByZXNvdXJjZSAqaXJxLCBpbnQgZmxhZ3Ms
IGRyaXZlcl9maWx0ZXJfdCAqZmlsdGVyLCBkcml2ZXJfaW50cl90ICpmdW5jdGlvbiwgdm9pZCAq
YXJndW1lbnQsIHZvaWQgKipjb29raWVwKTsKICBpbnQgYXRhX3BjaV90ZWFyZG93bl9pbnRyKGRl
dmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIHN0cnVjdCByZXNvdXJjZSAqaXJxLCB2b2lkICpj
b29raWUpOwpJbmRleDogc3lzL2Rldi9hdGEvY2hpcHNldHMvYXRhLXByb21pc2UuYwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBzeXMvZGV2L2F0YS9jaGlwc2V0cy9hdGEtcHJvbWlzZS5jCShyZXZpc2lvbiAyODcx
ODkpCisrKyBzeXMvZGV2L2F0YS9jaGlwc2V0cy9hdGEtcHJvbWlzZS5jCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTEsMTggKzE5MSwxOSBAQAogCSFCVVNfUkVBRF9JVkFSKGRldmljZV9nZXRfcGFyZW50
KEdSQU5EUEFSRU5UKGRldikpLAogCQkgICAgICAgR1JBTkRQQVJFTlQoZGV2KSwgUENJX0lWQVJf
REVWSUQsICZkZXZpZCkgJiYKIAkoKGRldmlkID09IEFUQV9ERUNfMjExNTApIHx8IChkZXZpZCA9
PSBBVEFfREVDXzIxMTUwXzEpKSkgewotCXN0YXRpYyBsb25nIHN0YXJ0ID0gMCwgZW5kID0gMDsK
KwlzdGF0aWMgYnVzX2FkZHJfdCBzdGFydCA9IDA7CisJc3RhdGljIHVfbG9uZyBjb3VudCA9IDA7
CiAKIAlpZiAocGNpX2dldF9zbG90KGRldikgPT0gMSkgewotCSAgICBidXNfZ2V0X3Jlc291cmNl
KGRldiwgU1lTX1JFU19JUlEsIDAsICZzdGFydCwgJmVuZCk7CisJICAgIGJ1c19nZXRfcmVzb3Vy
Y2UoZGV2LCBTWVNfUkVTX0lSUSwgMCwgJnN0YXJ0LCAmY291bnQpOwogCSAgICBzdHJjYXQoYnVm
ZmVyLCAiIChjaGFubmVsIDArMSkiKTsKIAl9Ci0JZWxzZSBpZiAocGNpX2dldF9zbG90KGRldikg
PT0gMiAmJiBzdGFydCAmJiBlbmQpIHsKLQkgICAgYnVzX3NldF9yZXNvdXJjZShkZXYsIFNZU19S
RVNfSVJRLCAwLCBzdGFydCwgZW5kKTsKKwllbHNlIGlmIChwY2lfZ2V0X3Nsb3QoZGV2KSA9PSAy
ICYmIHN0YXJ0ICYmIGNvdW50KSB7CisJICAgIGJ1c19zZXRfcmVzb3VyY2UoZGV2LCBTWVNfUkVT
X0lSUSwgMCwgc3RhcnQsIGNvdW50KTsKIAkgICAgc3RyY2F0KGJ1ZmZlciwgIiAoY2hhbm5lbCAy
KzMpIik7CiAJfQogCWVsc2UgewotCSAgICBzdGFydCA9IGVuZCA9IDA7CisJICAgIHN0YXJ0ID0g
Y291bnQgPSAwOwogCX0KICAgICB9CiAgICAgc3ByaW50ZihidWZmZXIsICIlcyAlcyBjb250cm9s
bGVyIiwgYnVmZmVyLCBhdGFfbW9kZTJzdHIoaWR4LT5tYXhfZG1hKSk7CkluZGV4OiBzeXMvZGV2
L2ZkdC9zaW1wbGVidXMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L2ZkdC9zaW1wbGVidXMuYwko
cmV2aXNpb24gMjg3MTg5KQorKysgc3lzL2Rldi9mZHQvc2ltcGxlYnVzLmMJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDcgKzQ2LDcgQEAKIHN0YXRpYyBpbnQJCXNpbXBsZWJ1c19wcm9iZShkZXZpY2Vf
dCBkZXYpOwogc3RhdGljIGludAkJc2ltcGxlYnVzX2F0dGFjaChkZXZpY2VfdCBkZXYpOwogc3Rh
dGljIHN0cnVjdCByZXNvdXJjZSAqc2ltcGxlYnVzX2FsbG9jX3Jlc291cmNlKGRldmljZV90LCBk
ZXZpY2VfdCwgaW50LAotICAgIGludCAqLCB1X2xvbmcsIHVfbG9uZywgdV9sb25nLCB1X2ludCk7
CisgICAgaW50ICosIGJ1c19hZGRyX3QsIGJ1c19hZGRyX3QsIHVfbG9uZywgdV9pbnQpOwogc3Rh
dGljIHZvaWQJCXNpbXBsZWJ1c19wcm9iZV9ub21hdGNoKGRldmljZV90IGJ1cywgZGV2aWNlX3Qg
Y2hpbGQpOwogc3RhdGljIGludAkJc2ltcGxlYnVzX3ByaW50X2NoaWxkKGRldmljZV90IGJ1cywg
ZGV2aWNlX3QgY2hpbGQpOwogc3RhdGljIGRldmljZV90CQlzaW1wbGVidXNfYWRkX2NoaWxkKGRl
dmljZV90IGRldiwgdV9pbnQgb3JkZXIsCkBAIC0zMTgsNyArMzE4LDcgQEAKIAogc3RhdGljIHN0
cnVjdCByZXNvdXJjZSAqCiBzaW1wbGVidXNfYWxsb2NfcmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBk
ZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLAotICAgIHVfbG9uZyBzdGFydCwgdV9s
b25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKKyAgICBidXNfYWRkcl90IHN0YXJ0
LCBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKIHsKIAlzdHJ1Y3Qg
c2ltcGxlYnVzX3NvZnRjICpzYzsKIAlzdHJ1Y3Qgc2ltcGxlYnVzX2RldmluZm8gKmRpOwpAQCAt
MzMxLDcgKzMzMSw3IEBACiAJICogUmVxdWVzdCBmb3IgdGhlIGRlZmF1bHQgYWxsb2NhdGlvbiB3
aXRoIGEgZ2l2ZW4gcmlkOiB1c2UgcmVzb3VyY2UKIAkgKiBsaXN0IHN0b3JlZCBpbiB0aGUgbG9j
YWwgZGV2aWNlIGluZm8uCiAJICovCi0JaWYgKChzdGFydCA9PSAwVUwpICYmIChlbmQgPT0gfjBV
TCkpIHsKKwlpZiAoKHN0YXJ0ID09IFJNX01JTl9TVEFSVCkgJiYgKGVuZCA9PSBSTV9NQVhfRU5E
KSkgewogCQlpZiAoKGRpID0gZGV2aWNlX2dldF9pdmFycyhjaGlsZCkpID09IE5VTEwpCiAJCQly
ZXR1cm4gKE5VTEwpOwogCkBAIC0zNjUsNyArMzY1LDggQEAKIAkJaWYgKGogPT0gc2MtPm5yYW5n
ZXMgJiYgc2MtPm5yYW5nZXMgIT0gMCkgewogCQkJaWYgKGJvb3R2ZXJib3NlKQogCQkJCWRldmlj
ZV9wcmludGYoYnVzLCAiQ291bGQgbm90IG1hcCByZXNvdXJjZSAiCi0JCQkJICAgICIlI2x4LSUj
bHhcbiIsIHN0YXJ0LCBlbmQpOworCQkJCSAgICAiJSNsbHgtJSNsbHhcbiIsICh1aW50NjRfdClz
dGFydCwKKwkJCQkgICAgKHVpbnQ2NF90KWVuZCk7CiAKIAkJCXJldHVybiAoTlVMTCk7CiAJCX0K
QEAgLTM4MSw4ICszODIsOCBAQAogCWludCBydjsKIAogCXJ2ID0gMDsKLQlydiArPSByZXNvdXJj
ZV9saXN0X3ByaW50X3R5cGUoJmRpLT5ybCwgIm1lbSIsIFNZU19SRVNfTUVNT1JZLCAiJSNseCIp
OwotCXJ2ICs9IHJlc291cmNlX2xpc3RfcHJpbnRfdHlwZSgmZGktPnJsLCAiaXJxIiwgU1lTX1JF
U19JUlEsICIlbGQiKTsKKwlydiArPSByZXNvdXJjZV9saXN0X3ByaW50X3R5cGUoJmRpLT5ybCwg
Im1lbSIsIFNZU19SRVNfTUVNT1JZLCAiJSNsbHgiKTsKKwlydiArPSByZXNvdXJjZV9saXN0X3By
aW50X3R5cGUoJmRpLT5ybCwgImlycSIsIFNZU19SRVNfSVJRLCAiJWxsZCIpOwogCXJldHVybiAo
cnYpOwogfQogCkluZGV4OiBzeXMvZGV2L2dwaW8vZ3Bpb2J1cy5jCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5
cy9kZXYvZ3Bpby9ncGlvYnVzLmMJKHJldmlzaW9uIDI4NzE4OSkKKysrIHN5cy9kZXYvZ3Bpby9n
cGlvYnVzLmMJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQAogCXNjLT5zY19pbnRy
X3JtYW4ucm1fdHlwZSA9IFJNQU5fQVJSQVk7CiAJc2MtPnNjX2ludHJfcm1hbi5ybV9kZXNjciA9
ICJHUElPIEludGVycnVwdHMiOwogCWlmIChybWFuX2luaXQoJnNjLT5zY19pbnRyX3JtYW4pICE9
IDAgfHwKLQkgICAgcm1hbl9tYW5hZ2VfcmVnaW9uKCZzYy0+c2NfaW50cl9ybWFuLCAwLCB+MCkg
IT0gMCkKKwkgICAgcm1hbl9tYW5hZ2VfcmVnaW9uKCZzYy0+c2NfaW50cl9ybWFuLCAwLCB+KGJ1
c19hZGRyX3QpMCkgIT0gMCkKIAkJcGFuaWMoIiVzOiBmYWlsZWQgdG8gc2V0IHVwIHJtYW4uIiwg
X19mdW5jX18pOwogCiAJaWYgKEdQSU9fUElOX01BWChzYy0+c2NfZGV2LCAmc2MtPnNjX25waW5z
KSAhPSAwKQpAQCAtNDg4LDcgKzQ4OCw3IEBACiAKIHN0YXRpYyBpbnQKIGdwaW9idXNfc2V0X3Jl
c291cmNlKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgcmlkLAot
ICAgIHVfbG9uZyBzdGFydCwgdV9sb25nIGNvdW50KQorICAgIGJ1c19hZGRyX3Qgc3RhcnQsIHVf
bG9uZyBjb3VudCkKIHsKIAlzdHJ1Y3QgZ3Bpb2J1c19pdmFyICpkZXZpOwogCXN0cnVjdCByZXNv
dXJjZV9saXN0X2VudHJ5ICpybGU7CkBAIC01MDYsNyArNTA2LDcgQEAKIAogc3RhdGljIHN0cnVj
dCByZXNvdXJjZSAqCiBncGlvYnVzX2FsbG9jX3Jlc291cmNlKGRldmljZV90IGJ1cywgZGV2aWNl
X3QgY2hpbGQsIGludCB0eXBlLCBpbnQgKnJpZCwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBl
bmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCisgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVz
X2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCiB7CiAJc3RydWN0IGdwaW9i
dXNfc29mdGMgKnNjOwogCXN0cnVjdCByZXNvdXJjZSAqcnY7CkBAIC01MTYsNyArNTE2LDcgQEAK
IAogCWlmICh0eXBlICE9IFNZU19SRVNfSVJRKQogCQlyZXR1cm4gKE5VTEwpOwotCWlzZGVmYXVs
dCA9IChzdGFydCA9PSAwVUwgJiYgZW5kID09IH4wVUwgJiYgY291bnQgPT0gMSk7CisJaXNkZWZh
dWx0ID0gKHN0YXJ0ID09IDBVTCAmJiBlbmQgPT0gfihidXNfYWRkcl90KTBVTCAmJiBjb3VudCA9
PSAxKTsKIAlybGUgPSBOVUxMOwogCWlmIChpc2RlZmF1bHQpIHsKIAkJcmwgPSBCVVNfR0VUX1JF
U09VUkNFX0xJU1QoYnVzLCBjaGlsZCk7CkluZGV4OiBzeXMvZGV2L29mdy9vZndidXMuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBzeXMvZGV2L29mdy9vZndidXMuYwkocmV2aXNpb24gMjg3MTg5KQorKysgc3lz
L2Rldi9vZncvb2Z3YnVzLmMJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQAogCXNj
LT5zY19tZW1fcm1hbi5ybV9kZXNjciA9ICJEZXZpY2UgTWVtb3J5IjsKIAlpZiAocm1hbl9pbml0
KCZzYy0+c2NfaW50cl9ybWFuKSAhPSAwIHx8CiAJICAgIHJtYW5faW5pdCgmc2MtPnNjX21lbV9y
bWFuKSAhPSAwIHx8Ci0JICAgIHJtYW5fbWFuYWdlX3JlZ2lvbigmc2MtPnNjX2ludHJfcm1hbiwg
MCwgfjApICE9IDAgfHwKKwkgICAgcm1hbl9tYW5hZ2VfcmVnaW9uKCZzYy0+c2NfaW50cl9ybWFu
LCAwLCBCVVNfU1BBQ0VfTUFYQUREUikgIT0gMCB8fAogCSAgICBybWFuX21hbmFnZV9yZWdpb24o
JnNjLT5zY19tZW1fcm1hbiwgMCwgQlVTX1NQQUNFX01BWEFERFIpICE9IDApCiAJCXBhbmljKCIl
czogZmFpbGVkIHRvIHNldCB1cCBybWFucy4iLCBfX2Z1bmNfXyk7CiAKQEAgLTE3OCw3ICsxNzgs
NyBAQAogCiBzdGF0aWMgc3RydWN0IHJlc291cmNlICoKIG9md2J1c19hbGxvY19yZXNvdXJjZShk
ZXZpY2VfdCBidXMsIGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50ICpyaWQsCi0gICAgdV9s
b25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQorICAgIGJ1
c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdz
KQogewogCXN0cnVjdCBvZndidXNfc29mdGMgKnNjOwogCXN0cnVjdCBybWFuICpybTsKQEAgLTE4
Niw3ICsxODYsNyBAQAogCXN0cnVjdCByZXNvdXJjZV9saXN0X2VudHJ5ICpybGU7CiAJaW50IGlz
ZGVmYXVsdCwgcGFzc3Rocm91Z2g7CiAKLQlpc2RlZmF1bHQgPSAoc3RhcnQgPT0gMFVMICYmIGVu
ZCA9PSB+MFVMKTsKKwlpc2RlZmF1bHQgPSAoc3RhcnQgPT0gUk1fTUlOX1NUQVJUICYmIGVuZCA9
PSBSTV9NQVhfRU5EKTsKIAlwYXNzdGhyb3VnaCA9IChkZXZpY2VfZ2V0X3BhcmVudChjaGlsZCkg
IT0gYnVzKTsKIAlzYyA9IGRldmljZV9nZXRfc29mdGMoYnVzKTsKIAlybGUgPSBOVUxMOwpAQCAt
MjAxLDcgKzIwMSw3IEBACiAJCX0KIAkJc3RhcnQgPSBybGUtPnN0YXJ0OwogCQljb3VudCA9IHVs
bWF4KGNvdW50LCBybGUtPmNvdW50KTsKLQkJZW5kID0gdWxtYXgocmxlLT5lbmQsIHN0YXJ0ICsg
Y291bnQgLSAxKTsKKwkJZW5kID0gcW1heChybGUtPmVuZCwgc3RhcnQgKyBjb3VudCAtIDEpOwog
CX0KIAogCXN3aXRjaCAodHlwZSkgewpAQCAtMjM5LDcgKzIzOSw3IEBACiAKIHN0YXRpYyBpbnQK
IG9md2J1c19hZGp1c3RfcmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCBfX3Vu
dXNlZCwgaW50IHR5cGUsCi0gICAgc3RydWN0IHJlc291cmNlICpyLCB1X2xvbmcgc3RhcnQsIHVf
bG9uZyBlbmQpCisgICAgc3RydWN0IHJlc291cmNlICpyLCBidXNfYWRkcl90IHN0YXJ0LCBidXNf
YWRkcl90IGVuZCkKIHsKIAlzdHJ1Y3Qgb2Z3YnVzX3NvZnRjICpzYzsKIAlzdHJ1Y3Qgcm1hbiAq
cm07CkluZGV4OiBzeXMvZGV2L3BjaS9ob3N0Yl9wY2kuYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2
L3BjaS9ob3N0Yl9wY2kuYwkocmV2aXNpb24gMjg3MTg5KQorKysgc3lzL2Rldi9wY2kvaG9zdGJf
cGNpLmMJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQAogCiBzdGF0aWMgc3RydWN0
IHJlc291cmNlICoKIHBjaV9ob3N0Yl9hbGxvY19yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGRldmlj
ZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50ICpyaWQsCi0gICAgdV9sb25nIHN0YXJ0LCB1X2xvbmcg
ZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQorICAgIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1
c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQogewogCiAJcmV0dXJuIChi
dXNfYWxsb2NfcmVzb3VyY2UoZGV2LCB0eXBlLCByaWQsIHN0YXJ0LCBlbmQsIGNvdW50LCBmbGFn
cykpOwpJbmRleDogc3lzL2Rldi9wY2kvcGNpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9wY2kv
cGNpLmMJKHJldmlzaW9uIDI4NzE4OSkKKysrIHN5cy9kZXYvcGNpL3BjaS5jCSh3b3JraW5nIGNv
cHkpCkBAIC00NzEwLDcgKzQ3MTAsNyBAQAogCiBzdHJ1Y3QgcmVzb3VyY2UgKgogcGNpX2FsbG9j
X3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgKnJp
ZCwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxh
Z3MpCisgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwg
dV9pbnQgZmxhZ3MpCiB7CiAjaWZkZWYgUENJX0lPVgogCXN0cnVjdCBwY2lfZGV2aW5mbyAqZGlu
Zm87CkluZGV4OiBzeXMvZGV2L3BjaS9wY2lfcGNpLmMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9w
Y2kvcGNpX3BjaS5jCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMvZGV2L3BjaS9wY2lfcGNpLmMJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMiw5ICsyMTIsMTAgQEAKICAqIElTQSBhbGlhcyByYW5nZS4K
ICAqLwogc3RhdGljIGludAotcGNpYl9pc19pc2FfcmFuZ2Uoc3RydWN0IHBjaWJfc29mdGMgKnNj
LCB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCkKK3BjaWJfaXNfaXNhX3Jh
bmdlKHN0cnVjdCBwY2liX3NvZnRjICpzYywgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBl
bmQsCisgICAgdV9sb25nIGNvdW50KQogewotCXVfbG9uZyBuZXh0X2FsaWFzOworCWJ1c19hZGRy
X3QgbmV4dF9hbGlhczsKIAogCWlmICghKHNjLT5icmlkZ2VjdGwgJiBQQ0lCX0JDUl9JU0FfRU5B
QkxFKSkKIAkJcmV0dXJuICgwKTsKQEAgLTI3NSwxMyArMjc2LDEzIEBACiAJfQogfQogCi10eXBl
ZGVmIHZvaWQgKG5vbmlzYV9jYWxsYmFjaykodV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB2b2lk
ICphcmcpOwordHlwZWRlZiB2b2lkIChub25pc2FfY2FsbGJhY2spKGJ1c19hZGRyX3Qgc3RhcnQs
IGJ1c19hZGRyX3QgZW5kLCB2b2lkICphcmcpOwogCiBzdGF0aWMgdm9pZAotcGNpYl93YWxrX25v
bmlzYV9yYW5nZXModV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCBub25pc2FfY2FsbGJhY2sgKmNi
LAorcGNpYl93YWxrX25vbmlzYV9yYW5nZXMoYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBl
bmQsIG5vbmlzYV9jYWxsYmFjayAqY2IsCiAgICAgdm9pZCAqYXJnKQogewotCXVfbG9uZyBuZXh0
X2VuZDsKKwlidXNfYWRkcl90IG5leHRfZW5kOwogCiAJLyoKIAkgKiBJZiBzdGFydCBpcyB3aXRo
aW4gYW4gSVNBIGFsaWFzIHJhbmdlLCBtb3ZlIHVwIHRvIHRoZSBzdGFydApAQCAtMzA5LDcgKzMx
MCw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1jb3VudF9yYW5nZXModV9sb25nIHN0YXJ0LCB1X2xv
bmcgZW5kLCB2b2lkICphcmcpCitjb3VudF9yYW5nZXMoYnVzX2FkZHJfdCBzdGFydCwgYnVzX2Fk
ZHJfdCBlbmQsIHZvaWQgKmFyZykKIHsKIAlpbnQgKmNvdW50cDsKIApAQCAtMzI0LDcgKzMyNSw3
IEBACiB9OwogCiBzdGF0aWMgdm9pZAotYWxsb2NfcmFuZ2VzKHVfbG9uZyBzdGFydCwgdV9sb25n
IGVuZCwgdm9pZCAqYXJnKQorYWxsb2NfcmFuZ2VzKGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRy
X3QgZW5kLCB2b2lkICphcmcpCiB7CiAJc3RydWN0IGFsbG9jX3N0YXRlICphczsKIAlzdHJ1Y3Qg
cGNpYl93aW5kb3cgKnc7CkBAIC0zNDgsNyArMzQ5LDcgQEAKIH0KIAogc3RhdGljIGludAotcGNp
Yl9hbGxvY19ub25pc2FfcmFuZ2VzKHN0cnVjdCBwY2liX3NvZnRjICpzYywgdV9sb25nIHN0YXJ0
LCB1X2xvbmcgZW5kKQorcGNpYl9hbGxvY19ub25pc2FfcmFuZ2VzKHN0cnVjdCBwY2liX3NvZnRj
ICpzYywgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQpCiB7CiAJc3RydWN0IGFsbG9j
X3N0YXRlIGFzOwogCWludCBpLCBuZXdfY291bnQ7CkBAIC0zODcsNyArMzg4LDcgQEAKIAljaGFy
IGJ1Zls2NF07CiAJaW50IGVycm9yLCByaWQ7CiAKLQlpZiAobWF4X2FkZHJlc3MgIT0gKHVfbG9u
ZyltYXhfYWRkcmVzcykKKwlpZiAobWF4X2FkZHJlc3MgIT0gKGJ1c19hZGRyX3QpbWF4X2FkZHJl
c3MpCiAJCW1heF9hZGRyZXNzID0gfjB1bDsKIAl3LT5ybWFuLnJtX3N0YXJ0ID0gMDsKIAl3LT5y
bWFuLnJtX2VuZCA9IG1heF9hZGRyZXNzOwpAQCAtNjA5LDcgKzYxMCw3IEBACiAKIHN0YXRpYyBz
dHJ1Y3QgcmVzb3VyY2UgKgogcGNpYl9zdWJhbGxvY19idXMoc3RydWN0IHBjaWJfc2VjYnVzICpi
dXMsIGRldmljZV90IGNoaWxkLCBpbnQgKnJpZCwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBl
bmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCisgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVz
X2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCiB7CiAJc3RydWN0IHJlc291
cmNlICpyZXM7CiAKQEAgLTYzMyw5ICs2MzQsOSBAQAogICogc3ViYnVzLgogICovCiBzdGF0aWMg
aW50Ci1wY2liX2dyb3dfc3ViYnVzKHN0cnVjdCBwY2liX3NlY2J1cyAqYnVzLCB1X2xvbmcgbmV3
X2VuZCkKK3BjaWJfZ3Jvd19zdWJidXMoc3RydWN0IHBjaWJfc2VjYnVzICpidXMsIGJ1c19hZGRy
X3QgbmV3X2VuZCkKIHsKLQl1X2xvbmcgb2xkX2VuZDsKKwlidXNfYWRkcl90IG9sZF9lbmQ7CiAJ
aW50IGVycm9yOwogCiAJb2xkX2VuZCA9IHJtYW5fZ2V0X2VuZChidXMtPnJlcyk7CkBAIC02NTgs
MTAgKzY1OSwxMCBAQAogCiBzdHJ1Y3QgcmVzb3VyY2UgKgogcGNpYl9hbGxvY19zdWJidXMoc3Ry
dWN0IHBjaWJfc2VjYnVzICpidXMsIGRldmljZV90IGNoaWxkLCBpbnQgKnJpZCwKLSAgICB1X2xv
bmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCisgICAgYnVz
X2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3Mp
CiB7CiAJc3RydWN0IHJlc291cmNlICpyZXM7Ci0JdV9sb25nIHN0YXJ0X2ZyZWUsIGVuZF9mcmVl
LCBuZXdfZW5kOworCWJ1c19hZGRyX3Qgc3RhcnRfZnJlZSwgZW5kX2ZyZWUsIG5ld19lbmQ7CiAK
IAkvKgogCSAqIEZpcnN0LCBzZWUgaWYgdGhlIHJlcXVlc3QgY2FuIGJlIHNhdGlzaWZpZWQgYnkg
dGhlIGV4aXN0aW5nCkBAIC0xMTU4LDggKzExNTksOCBAQAogICovCiBzdGF0aWMgc3RydWN0IHJl
c291cmNlICoKIHBjaWJfc3ViYWxsb2NfcmVzb3VyY2Uoc3RydWN0IHBjaWJfc29mdGMgKnNjLCBz
dHJ1Y3QgcGNpYl93aW5kb3cgKncsCi0gICAgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQg
KnJpZCwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1X2xvbmcgY291bnQsCi0gICAgdV9pbnQg
ZmxhZ3MpCisgICAgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgKnJpZCwgYnVzX2FkZHJf
dCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsCisgICAgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykK
IHsKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKIApAQCAtMTE5NiwxMCArMTE5NywxMCBAQAogLyog
QWxsb2NhdGUgYSBmcmVzaCByZXNvdXJjZSByYW5nZSBmb3IgYW4gdW5jb25maWd1cmVkIHdpbmRv
dy4gKi8KIHN0YXRpYyBpbnQKIHBjaWJfYWxsb2NfbmV3X3dpbmRvdyhzdHJ1Y3QgcGNpYl9zb2Z0
YyAqc2MsIHN0cnVjdCBwY2liX3dpbmRvdyAqdywgaW50IHR5cGUsCi0gICAgdV9sb25nIHN0YXJ0
LCB1X2xvbmcgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQorICAgIGJ1c19hZGRyX3Qg
c3RhcnQsIGJ1c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQogewogCXN0
cnVjdCByZXNvdXJjZSAqcmVzOwotCXVfbG9uZyBiYXNlLCBsaW1pdCwgd21hc2s7CisJYnVzX2Fk
ZHJfdCBiYXNlLCBsaW1pdCwgd21hc2s7CiAJaW50IHJpZDsKIAogCS8qCkBAIC0xMjY5LDcgKzEy
NzAsNyBAQAogLyogVHJ5IHRvIGV4cGFuZCBhbiBleGlzdGluZyB3aW5kb3cgdG8gdGhlIHJlcXVl
c3RlZCBiYXNlIGFuZCBsaW1pdC4gKi8KIHN0YXRpYyBpbnQKIHBjaWJfZXhwYW5kX3dpbmRvdyhz
dHJ1Y3QgcGNpYl9zb2Z0YyAqc2MsIHN0cnVjdCBwY2liX3dpbmRvdyAqdywgaW50IHR5cGUsCi0g
ICAgdV9sb25nIGJhc2UsIHVfbG9uZyBsaW1pdCkKKyAgICBidXNfYWRkcl90IGJhc2UsIGJ1c19h
ZGRyX3QgbGltaXQpCiB7CiAJc3RydWN0IHJlc291cmNlICpyZXM7CiAJaW50IGVycm9yLCBpLCBm
b3JjZV82NGtfYmFzZTsKQEAgLTEzNjcsOSArMTM2OCwxMCBAQAogICovCiBzdGF0aWMgaW50CiBw
Y2liX2dyb3dfd2luZG93KHN0cnVjdCBwY2liX3NvZnRjICpzYywgc3RydWN0IHBjaWJfd2luZG93
ICp3LCBpbnQgdHlwZSwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3Vu
dCwgdV9pbnQgZmxhZ3MpCisgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsIHVf
bG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCiB7Ci0JdV9sb25nIGFsaWduLCBzdGFydF9mcmVlLCBl
bmRfZnJlZSwgZnJvbnQsIGJhY2ssIHdtYXNrOworCWJ1c19hZGRyX3Qgc3RhcnRfZnJlZSwgZW5k
X2ZyZWUsIGZyb250LCBiYWNrOworCWJ1c19hZGRyX3QgYWxpZ24sIHdtYXNrOwogCWludCBlcnJv
cjsKIAogCS8qCkBAIC0xNDAwLDggKzE0MDIsOCBAQAogCQlpZiAoZXJyb3IpIHsKIAkJCWlmIChi
b290dmVyYm9zZSkKIAkJCQlkZXZpY2VfcHJpbnRmKHNjLT5kZXYsCi0JCSAgICAiZmFpbGVkIHRv
IGFsbG9jYXRlIGluaXRpYWwgJXMgd2luZG93ICglI2x4LSUjbHgsJSNseClcbiIsCi0JCQkJICAg
IHctPm5hbWUsIHN0YXJ0LCBlbmQsIGNvdW50KTsKKwkJICAgICJmYWlsZWQgdG8gYWxsb2NhdGUg
aW5pdGlhbCAlcyB3aW5kb3cgKCUjangtJSNqeCwlI2x4KVxuIiwKKwkJCQkgICAgdy0+bmFtZSwg
KHVpbnRtYXhfdClzdGFydCwgKHVpbnRtYXhfdCllbmQsIGNvdW50KTsKIAkJCXJldHVybiAoZXJy
b3IpOwogCQl9CiAJCWlmIChib290dmVyYm9zZSkKQEAgLTE1MzQsNyArMTUzNiw3IEBACiAgKi8K
IHN0cnVjdCByZXNvdXJjZSAqCiBwY2liX2FsbG9jX3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2
aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgKnJpZCwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9u
ZyBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCisgICAgYnVzX2FkZHJfdCBzdGFydCwg
YnVzX2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCiB7CiAJc3RydWN0IHBj
aWJfc29mdGMgKnNjOwogCXN0cnVjdCByZXNvdXJjZSAqcjsKQEAgLTE2MjMsNyArMTYyNSw3IEBA
CiAKIGludAogcGNpYl9hZGp1c3RfcmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGls
ZCwgaW50IHR5cGUsIHN0cnVjdCByZXNvdXJjZSAqciwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9u
ZyBlbmQpCisgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQpCiB7CiAJc3RydWN0
IHBjaWJfc29mdGMgKnNjOwogCkBAIC0xNjU4LDcgKzE2NjAsNyBAQAogICovCiBzdHJ1Y3QgcmVz
b3VyY2UgKgogcGNpYl9hbGxvY19yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxk
LCBpbnQgdHlwZSwgaW50ICpyaWQsIAotICAgIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9s
b25nIGNvdW50LCB1X2ludCBmbGFncykKKyAgICBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90
IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKIHsKIAlzdHJ1Y3QgcGNpYl9zb2Z0Ywkq
c2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CiAJY29uc3QgY2hhciAqbmFtZSwgKnN1ZmZpeDsK
SW5kZXg6IHN5cy9kZXYvcGNpL3BjaV9wcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9w
Y2kvcGNpX3ByaXZhdGUuaAkocmV2aXNpb24gMjg3MTg5KQorKysgc3lzL2Rldi9wY2kvcGNpX3By
aXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDggKzEwMyw4IEBACiBpbnQJCXBjaV9tc2lf
Y291bnRfbWV0aG9kKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQpOwogaW50CQlwY2lfbXNp
eF9jb3VudF9tZXRob2QoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCk7CiBzdHJ1Y3QgcmVz
b3VyY2UJKnBjaV9hbGxvY19yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxkLCAK
LQkJICAgIGludCB0eXBlLCBpbnQgKnJpZCwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1X2xv
bmcgY291bnQsCi0JCSAgICB1X2ludCBmbGFncyk7CisJCSAgICBpbnQgdHlwZSwgaW50ICpyaWQs
IGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kLAorCQkgICAgdV9sb25nIGNvdW50LCB1
X2ludCBmbGFncyk7CiBpbnQJCXBjaV9yZWxlYXNlX3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2
aWNlX3QgY2hpbGQsIGludCB0eXBlLAogCQkgICAgaW50IHJpZCwgc3RydWN0IHJlc291cmNlICpy
KTsKIGludAkJcGNpX2FjdGl2YXRlX3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hp
bGQsIGludCB0eXBlLApJbmRleDogc3lzL2Rldi9wY2kvcGNpX3N1YnIuYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBzeXMvZGV2L3BjaS9wY2lfc3Vici5jCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMvZGV2L3Bj
aS9wY2lfc3Vici5jCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsOCArMTc4LDggQEAKIH0KIAogaW50
Ci1wY2liX2hvc3RfcmVzX2RlY29kZXMoc3RydWN0IHBjaWJfaG9zdF9yZXNvdXJjZXMgKmhyLCBp
bnQgdHlwZSwgdV9sb25nIHN0YXJ0LAotICAgIHVfbG9uZyBlbmQsIHVfaW50IGZsYWdzKQorcGNp
Yl9ob3N0X3Jlc19kZWNvZGVzKHN0cnVjdCBwY2liX2hvc3RfcmVzb3VyY2VzICpociwgaW50IHR5
cGUsIGJ1c19hZGRyX3Qgc3RhcnQsCisgICAgYnVzX2FkZHJfdCBlbmQsIHVfaW50IGZsYWdzKQog
ewogCXN0cnVjdCByZXNvdXJjZV9saXN0X2VudHJ5ICpybGU7CiAJaW50IHJpZDsKQEAgLTIwMSwx
MSArMjAxLDExIEBACiAKIHN0cnVjdCByZXNvdXJjZSAqCiBwY2liX2hvc3RfcmVzX2FsbG9jKHN0
cnVjdCBwY2liX2hvc3RfcmVzb3VyY2VzICpociwgZGV2aWNlX3QgZGV2LCBpbnQgdHlwZSwKLSAg
ICBpbnQgKnJpZCwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50
IGZsYWdzKQorICAgIGludCAqcmlkLCBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwg
dV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKIHsKIAlzdHJ1Y3QgcmVzb3VyY2VfbGlzdF9lbnRy
eSAqcmxlOwogCXN0cnVjdCByZXNvdXJjZSAqcjsKLQl1X2xvbmcgbmV3X3N0YXJ0LCBuZXdfZW5k
OworCWJ1c19hZGRyX3QgbmV3X3N0YXJ0LCBuZXdfZW5kOwogCiAJaWYgKGZsYWdzICYgUkZfUFJF
RkVUQ0hBQkxFKQogCQlLQVNTRVJUKHR5cGUgPT0gU1lTX1JFU19NRU1PUlksCkBAIC0yMjksOCAr
MjI5LDggQEAKIAkJaWYgKCgoZmxhZ3MgJiBSRl9QUkVGRVRDSEFCTEUpICE9IDApICE9CiAJCSAg
ICAoKHJsZS0+ZmxhZ3MgJiBSTEVfUFJFRkVUQ0gpICE9IDApKQogCQkJY29udGludWU7Ci0JCW5l
d19zdGFydCA9IHVsbWF4KHN0YXJ0LCBybGUtPnN0YXJ0KTsKLQkJbmV3X2VuZCA9IHVsbWluKGVu
ZCwgcmxlLT5lbmQpOworCQluZXdfc3RhcnQgPSBxbWF4KHN0YXJ0LCBybGUtPnN0YXJ0KTsKKwkJ
bmV3X2VuZCA9IHFtaW4oZW5kLCBybGUtPmVuZCk7CiAJCWlmIChuZXdfc3RhcnQgPiBuZXdfZW5k
IHx8CiAJCSAgICBuZXdfc3RhcnQgKyBjb3VudCAtIDEgPiBuZXdfZW5kIHx8CiAJCSAgICBuZXdf
c3RhcnQgKyBjb3VudCA8IG5ld19zdGFydCkKQEAgLTI2MSw3ICsyNjEsNyBAQAogCiBpbnQKIHBj
aWJfaG9zdF9yZXNfYWRqdXN0KHN0cnVjdCBwY2liX2hvc3RfcmVzb3VyY2VzICpociwgZGV2aWNl
X3QgZGV2LCBpbnQgdHlwZSwKLSAgICBzdHJ1Y3QgcmVzb3VyY2UgKnIsIHVfbG9uZyBzdGFydCwg
dV9sb25nIGVuZCkKKyAgICBzdHJ1Y3QgcmVzb3VyY2UgKnIsIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1
c19hZGRyX3QgZW5kKQogewogCXN0cnVjdCByZXNvdXJjZV9saXN0X2VudHJ5ICpybGU7CiAKQEAg
LTMyOSw4ICszMjksOCBAQAogfQogCiBzdHJ1Y3QgcmVzb3VyY2UgKgotcGNpX2RvbWFpbl9hbGxv
Y19idXMoaW50IGRvbWFpbiwgZGV2aWNlX3QgZGV2LCBpbnQgKnJpZCwgdV9sb25nIHN0YXJ0LAot
ICAgIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCitwY2lfZG9tYWluX2Fs
bG9jX2J1cyhpbnQgZG9tYWluLCBkZXZpY2VfdCBkZXYsIGludCAqcmlkLCBidXNfYWRkcl90IHN0
YXJ0LAorICAgIGJ1c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQogewog
CXN0cnVjdCBwY2lfZG9tYWluICpkOwogCXN0cnVjdCByZXNvdXJjZSAqcmVzOwpAQCAtMzQ5LDcg
KzM0OSw3IEBACiAKIGludAogcGNpX2RvbWFpbl9hZGp1c3RfYnVzKGludCBkb21haW4sIGRldmlj
ZV90IGRldiwgc3RydWN0IHJlc291cmNlICpyLAotICAgIHVfbG9uZyBzdGFydCwgdV9sb25nIGVu
ZCkKKyAgICBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCkKIHsKICNpZmRlZiBJTlZB
UklBTlRTCiAJc3RydWN0IHBjaV9kb21haW4gKmQ7CkluZGV4OiBzeXMvZGV2L3BjaS9wY2liX3By
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L3BjaS9wY2liX3ByaXZhdGUuaAkocmV2aXNp
b24gMjg3MTg5KQorKysgc3lzL2Rldi9wY2kvcGNpYl9wcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDEzICs0OSwxMyBAQAogaW50CQlwY2liX2hvc3RfcmVzX2ZyZWUoZGV2aWNlX3QgcGNp
YiwKIAkJICAgIHN0cnVjdCBwY2liX2hvc3RfcmVzb3VyY2VzICpocik7CiBpbnQJCXBjaWJfaG9z
dF9yZXNfZGVjb2RlcyhzdHJ1Y3QgcGNpYl9ob3N0X3Jlc291cmNlcyAqaHIsIGludCB0eXBlLAot
CQkgICAgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1X2ludCBmbGFncyk7CisJCSAgICBidXNf
YWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9pbnQgZmxhZ3MpOwogc3RydWN0IHJlc291
cmNlICpwY2liX2hvc3RfcmVzX2FsbG9jKHN0cnVjdCBwY2liX2hvc3RfcmVzb3VyY2VzICpociwK
LQkJICAgIGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCAqcmlkLCB1X2xvbmcgc3RhcnQsIHVf
bG9uZyBlbmQsCi0JCSAgICB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKTsKKwkJICAgIGRldmlj
ZV90IGRldiwgaW50IHR5cGUsIGludCAqcmlkLCBidXNfYWRkcl90IHN0YXJ0LAorCQkgICAgYnVz
X2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpOwogaW50CQlwY2liX2hvc3Rf
cmVzX2FkanVzdChzdHJ1Y3QgcGNpYl9ob3N0X3Jlc291cmNlcyAqaHIsCi0JCSAgICBkZXZpY2Vf
dCBkZXYsIGludCB0eXBlLCBzdHJ1Y3QgcmVzb3VyY2UgKnIsIHVfbG9uZyBzdGFydCwKLQkJICAg
IHVfbG9uZyBlbmQpOworCQkgICAgZGV2aWNlX3QgZGV2LCBpbnQgdHlwZSwgc3RydWN0IHJlc291
cmNlICpyLCBidXNfYWRkcl90IHN0YXJ0LAorCQkgICAgYnVzX2FkZHJfdCBlbmQpOwogI2VuZGlm
CiAKIC8qCkBAIC0xMzIsMTMgKzEzMiwxMyBAQAogICAgIGludCBzbG90LCBpbnQgZnVuYywgdWlu
dDhfdCAqYnVzbnVtKTsKICNpZiBkZWZpbmVkKE5FV19QQ0lCKSAmJiBkZWZpbmVkKFBDSV9SRVNf
QlVTKQogc3RydWN0IHJlc291cmNlICpwY2lfZG9tYWluX2FsbG9jX2J1cyhpbnQgZG9tYWluLCBk
ZXZpY2VfdCBkZXYsIGludCAqcmlkLAotCQkgICAgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1
X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKTsKKwkJICAgIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19h
ZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKTsKIGludAkJcGNpX2RvbWFpbl9h
ZGp1c3RfYnVzKGludCBkb21haW4sIGRldmljZV90IGRldiwKLQkJICAgIHN0cnVjdCByZXNvdXJj
ZSAqciwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kKTsKKwkJICAgIHN0cnVjdCByZXNvdXJjZSAq
ciwgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQpOwogaW50CQlwY2lfZG9tYWluX3Jl
bGVhc2VfYnVzKGludCBkb21haW4sIGRldmljZV90IGRldiwgaW50IHJpZCwKIAkJICAgIHN0cnVj
dCByZXNvdXJjZSAqcik7CiBzdHJ1Y3QgcmVzb3VyY2UgKnBjaWJfYWxsb2Nfc3ViYnVzKHN0cnVj
dCBwY2liX3NlY2J1cyAqYnVzLCBkZXZpY2VfdCBjaGlsZCwKLQkJICAgIGludCAqcmlkLCB1X2xv
bmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCwKKwkJICAgIGludCAqcmlkLCBidXNf
YWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LAogCQkgICAgdV9pbnQg
ZmxhZ3MpOwogdm9pZAkJcGNpYl9zZXR1cF9zZWNidXMoZGV2aWNlX3QgZGV2LCBzdHJ1Y3QgcGNp
Yl9zZWNidXMgKmJ1cywKICAgICBpbnQgbWluX2NvdW50KTsKQEAgLTE1MiwxMCArMTUyLDExIEBA
CiBpbnQJCXBjaWJfcmVhZF9pdmFyKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hpbGQsIGludCB3
aGljaCwgdWludHB0cl90ICpyZXN1bHQpOwogaW50CQlwY2liX3dyaXRlX2l2YXIoZGV2aWNlX3Qg
ZGV2LCBkZXZpY2VfdCBjaGlsZCwgaW50IHdoaWNoLCB1aW50cHRyX3QgdmFsdWUpOwogc3RydWN0
IHJlc291cmNlICpwY2liX2FsbG9jX3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hp
bGQsIGludCB0eXBlLCBpbnQgKnJpZCwgCi0JCQkJCSAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBl
bmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpOworCQkJCQkgICAgYnVzX2FkZHJfdCBzdGFy
dCwgYnVzX2FkZHJfdCBlbmQsCisJCQkJCSAgICB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKTsK
ICNpZmRlZiBORVdfUENJQgogaW50CQlwY2liX2FkanVzdF9yZXNvdXJjZShkZXZpY2VfdCBidXMs
IGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwKLSAgICBzdHJ1Y3QgcmVzb3VyY2UgKnIsIHVfbG9u
ZyBzdGFydCwgdV9sb25nIGVuZCk7CisgICAgc3RydWN0IHJlc291cmNlICpyLCBidXNfYWRkcl90
IHN0YXJ0LCBidXNfYWRkcl90IGVuZCk7CiBpbnQJCXBjaWJfcmVsZWFzZV9yZXNvdXJjZShkZXZp
Y2VfdCBkZXYsIGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50IHJpZCwKICAgICBzdHJ1Y3Qg
cmVzb3VyY2UgKnIpOwogI2VuZGlmCkluZGV4OiBzeXMvZGV2L3BjaS92Z2FfcGNpLmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gc3lzL2Rldi9wY2kvdmdhX3BjaS5jCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMv
ZGV2L3BjaS92Z2FfcGNpLmMJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAKIAogc3Rh
dGljIHN0cnVjdCB2Z2FfcmVzb3VyY2UgKmxvb2t1cF9yZXMoc3RydWN0IHZnYV9wY2lfc29mdGMg
KnNjLCBpbnQgcmlkKTsKIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKnZnYV9wY2lfYWxsb2NfcmVz
b3VyY2UoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwKLSAgICBpbnQgdHlwZSwgaW50ICpy
aWQsIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncyk7
CisgICAgaW50IHR5cGUsIGludCAqcmlkLCBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVu
ZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncyk7CiBzdGF0aWMgaW50CXZnYV9wY2lfcmVsZWFz
ZV9yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwKICAgICBp
bnQgcmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnIpOwogCkBAIC0xNjMsOCArMTYzLDggQEAKICNlbmRp
ZgogCiAJcmlkID0gUENJUl9CSU9TOwotCXJlcyA9IHZnYV9wY2lfYWxsb2NfcmVzb3VyY2UoZGV2
LCBOVUxMLCBTWVNfUkVTX01FTU9SWSwgJnJpZCwgMHVsLAotCSAgICB+MHVsLCAxLCBSRl9BQ1RJ
VkUpOworCXJlcyA9IHZnYV9wY2lfYWxsb2NfcmVzb3VyY2UoZGV2LCBOVUxMLCBTWVNfUkVTX01F
TU9SWSwgJnJpZCwgUk1fTUlOX1NUQVJULAorCSAgICBSTV9NQVhfRU5ELCAxLCBSRl9BQ1RJVkUp
OwogCWlmIChyZXMgPT0gTlVMTCkgewogCQlyZXR1cm4gKE5VTEwpOwogCX0KQEAgLTMzMyw3ICsz
MzMsNyBAQAogCiBzdGF0aWMgc3RydWN0IHJlc291cmNlICoKIHZnYV9wY2lfYWxsb2NfcmVzb3Vy
Y2UoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLAotICAg
IHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKKyAg
ICBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBm
bGFncykKIHsKIAlzdHJ1Y3QgdmdhX3Jlc291cmNlICp2cjsKIApJbmRleDogc3lzL2Rldi9zY2Mv
c2NjX2JmZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYvc2NjL3NjY19iZmUuaAkocmV2aXNpb24g
Mjg3MTg5KQorKysgc3lzL2Rldi9zY2Mvc2NjX2JmZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMs
OCArMTQzLDggQEAKIGludCBzY2NfYmZlX3Byb2JlKGRldmljZV90IGRldiwgdV9pbnQgcmVnc2hm
dCwgdV9pbnQgcmNsaywgdV9pbnQgcmlkKTsKIAogc3RydWN0IHJlc291cmNlICpzY2NfYnVzX2Fs
bG9jX3Jlc291cmNlKGRldmljZV90LCBkZXZpY2VfdCwgaW50LCBpbnQgKiwKLSAgICB1X2xvbmcs
IHVfbG9uZywgdV9sb25nLCB1X2ludCk7Ci1pbnQgc2NjX2J1c19nZXRfcmVzb3VyY2UoZGV2aWNl
X3QsIGRldmljZV90LCBpbnQsIGludCwgdV9sb25nICosIHVfbG9uZyAqKTsKKyAgICBidXNfYWRk
cl90LCBidXNfYWRkcl90LCB1X2xvbmcsIHVfaW50KTsKK2ludCBzY2NfYnVzX2dldF9yZXNvdXJj
ZShkZXZpY2VfdCwgZGV2aWNlX3QsIGludCwgaW50LCBidXNfYWRkcl90ICosIHVfbG9uZyAqKTsK
IGludCBzY2NfYnVzX3JlYWRfaXZhcihkZXZpY2VfdCwgZGV2aWNlX3QsIGludCwgdWludHB0cl90
ICopOwogaW50IHNjY19idXNfcmVsZWFzZV9yZXNvdXJjZShkZXZpY2VfdCwgZGV2aWNlX3QsIGlu
dCwgaW50LCBzdHJ1Y3QgcmVzb3VyY2UgKik7CiBpbnQgc2NjX2J1c19zZXR1cF9pbnRyKGRldmlj
ZV90LCBkZXZpY2VfdCwgc3RydWN0IHJlc291cmNlICosIGludCwKSW5kZXg6IHN5cy9kZXYvc2Nj
L3NjY19jb3JlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9zY2Mvc2NjX2NvcmUuYwkocmV2aXNp
b24gMjg3MTg5KQorKysgc3lzL2Rldi9zY2Mvc2NjX2NvcmUuYwkod29ya2luZyBjb3B5KQpAQCAt
MTAzLDcgKzEwMyw4IEBACiAJc3RydWN0IHNjY19zb2Z0YyAqc2MsICpzYzA7CiAJY29uc3QgY2hh
ciAqc2VwOwogCWJ1c19zcGFjZV9oYW5kbGVfdCBiaDsKLQl1X2xvbmcgYmFzZSwgc2l6ZSwgc3Rh
cnQsIHN6OworCWJ1c19hZGRyX3QgYmFzZSwgc3RhcnQ7CisJYnVzX3NpemVfdCBzaXplLCBzejsK
IAlpbnQgYywgZXJyb3IsIG1vZGUsIHN5c2RldjsKIAogCS8qCkBAIC00MDcsNyArNDA4LDcgQEAK
IAogc3RydWN0IHJlc291cmNlICoKIHNjY19idXNfYWxsb2NfcmVzb3VyY2UoZGV2aWNlX3QgZGV2
LCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLAotICAgIHVfbG9uZyBzdGFydCwg
dV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKKyAgICBidXNfYWRkcl90IHN0
YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKIHsKIAlzdHJ1
Y3QgcmVzb3VyY2VfbGlzdF9lbnRyeSAqcmxlOwogCXN0cnVjdCBzY2NfY2hhbiAqY2g7CkBAIC00
MzEsNyArNDMyLDcgQEAKIAogaW50CiBzY2NfYnVzX2dldF9yZXNvdXJjZShkZXZpY2VfdCBkZXYs
IGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgaW50IHJpZCwKLSAgICB1X2xvbmcgKnN0YXJ0cCwg
dV9sb25nICpjb3VudHApCisgICAgYnVzX2FkZHJfdCAqc3RhcnRwLCB1X2xvbmcgKmNvdW50cCkK
IHsKIAlzdHJ1Y3QgcmVzb3VyY2VfbGlzdF9lbnRyeSAqcmxlOwogCXN0cnVjdCBzY2NfY2hhbiAq
Y2g7CkluZGV4OiBzeXMva2Vybi9idXNfaWYubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMva2Vybi9idXNf
aWYubQkocmV2aXNpb24gMjg3MTg5KQorKysgc3lzL2tlcm4vYnVzX2lmLm0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDcgKzQ0LDcgQEAKIENPREUgewogCXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKgog
CW51bGxfYWxsb2NfcmVzb3VyY2UoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwKLQkgICAg
aW50IHR5cGUsIGludCAqcmlkLCB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsCisJICAgIGludCB0
eXBlLCBpbnQgKnJpZCwgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsCiAJICAgIHVf
bG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCiAJewogCSAgICByZXR1cm4gKDApOwpAQCAtMjYyLDgg
KzI2Miw4IEBACiAJZGV2aWNlX3QJX2NoaWxkOwogCWludAkJX3R5cGU7CiAJaW50CSAgICAgICAq
X3JpZDsKLQl1X2xvbmcJCV9zdGFydDsKLQl1X2xvbmcJCV9lbmQ7CisJYnVzX2FkZHJfdAlfc3Rh
cnQ7CisJYnVzX2FkZHJfdAlfZW5kOwogCXVfbG9uZwkJX2NvdW50OwogCXVfaW50CQlfZmxhZ3M7
CiB9IERFRkFVTFQgbnVsbF9hbGxvY19yZXNvdXJjZTsKQEAgLTMzMCw4ICszMzAsOCBAQAogCWRl
dmljZV90CV9jaGlsZDsKIAlpbnQJCV90eXBlOwogCXN0cnVjdCByZXNvdXJjZSAqX3JlczsKLQl1
X2xvbmcJCV9zdGFydDsKLQl1X2xvbmcJCV9lbmQ7CisJYnVzX2FkZHJfdAlfc3RhcnQ7CisJYnVz
X2FkZHJfdAlfZW5kOwogfTsKIAogLyoqCkBAIC00MzEsNyArNDMxLDcgQEAKIAlkZXZpY2VfdAlf
Y2hpbGQ7CiAJaW50CQlfdHlwZTsKIAlpbnQJCV9yaWQ7Ci0JdV9sb25nCQlfc3RhcnQ7CisJYnVz
X2FkZHJfdAlfc3RhcnQ7CiAJdV9sb25nCQlfY291bnQ7CiB9OwogCkBAIC00NTUsNyArNDU1LDcg
QEAKIAlkZXZpY2VfdAlfY2hpbGQ7CiAJaW50CQlfdHlwZTsKIAlpbnQJCV9yaWQ7Ci0JdV9sb25n
CQkqX3N0YXJ0cDsKKwlidXNfYWRkcl90CSpfc3RhcnRwOwogCXVfbG9uZwkJKl9jb3VudHA7CiB9
OwogCkluZGV4OiBzeXMva2Vybi9zdWJyX2J1cy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9rZXJuL3N1
YnJfYnVzLmMJKHJldmlzaW9uIDI4NzE4OSkKKysrIHN5cy9rZXJuL3N1YnJfYnVzLmMJKHdvcmtp
bmcgY29weSkKQEAgLTMwNjMsOCArMzA2Myw4IEBACiAgKiBAcGFyYW0gY291bnQJCVhYWCBlbmQt
c3RhcnQrMQogICovCiBpbnQKLXJlc291cmNlX2xpc3RfYWRkX25leHQoc3RydWN0IHJlc291cmNl
X2xpc3QgKnJsLCBpbnQgdHlwZSwgdV9sb25nIHN0YXJ0LAotICAgIHVfbG9uZyBlbmQsIHVfbG9u
ZyBjb3VudCkKK3Jlc291cmNlX2xpc3RfYWRkX25leHQoc3RydWN0IHJlc291cmNlX2xpc3QgKnJs
LCBpbnQgdHlwZSwgYnVzX2FkZHJfdCBzdGFydCwKKyAgICBidXNfYWRkcl90IGVuZCwgdV9sb25n
IGNvdW50KQogewogCWludCByaWQ7CiAKQEAgLTMwOTIsNyArMzA5Miw3IEBACiAgKi8KIHN0cnVj
dCByZXNvdXJjZV9saXN0X2VudHJ5ICoKIHJlc291cmNlX2xpc3RfYWRkKHN0cnVjdCByZXNvdXJj
ZV9saXN0ICpybCwgaW50IHR5cGUsIGludCByaWQsCi0gICAgdV9sb25nIHN0YXJ0LCB1X2xvbmcg
ZW5kLCB1X2xvbmcgY291bnQpCisgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQs
IHVfbG9uZyBjb3VudCkKIHsKIAlzdHJ1Y3QgcmVzb3VyY2VfbGlzdF9lbnRyeSAqcmxlOwogCkBA
IC0zMjUwLDcgKzMyNTAsNyBAQAogICovCiBzdHJ1Y3QgcmVzb3VyY2UgKgogcmVzb3VyY2VfbGlz
dF9yZXNlcnZlKHN0cnVjdCByZXNvdXJjZV9saXN0ICpybCwgZGV2aWNlX3QgYnVzLCBkZXZpY2Vf
dCBjaGlsZCwKLSAgICBpbnQgdHlwZSwgaW50ICpyaWQsIHVfbG9uZyBzdGFydCwgdV9sb25nIGVu
ZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKKyAgICBpbnQgdHlwZSwgaW50ICpyaWQsIGJ1
c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdz
KQogewogCXN0cnVjdCByZXNvdXJjZV9saXN0X2VudHJ5ICpybGUgPSBOVUxMOwogCWludCBwYXNz
dGhyb3VnaCA9IChkZXZpY2VfZ2V0X3BhcmVudChjaGlsZCkgIT0gYnVzKTsKQEAgLTMzMDcsNyAr
MzMwNyw3IEBACiAgKi8KIHN0cnVjdCByZXNvdXJjZSAqCiByZXNvdXJjZV9saXN0X2FsbG9jKHN0
cnVjdCByZXNvdXJjZV9saXN0ICpybCwgZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwKLSAg
ICBpbnQgdHlwZSwgaW50ICpyaWQsIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNv
dW50LCB1X2ludCBmbGFncykKKyAgICBpbnQgdHlwZSwgaW50ICpyaWQsIGJ1c19hZGRyX3Qgc3Rh
cnQsIGJ1c19hZGRyX3QgZW5kLCB1X2xvbmcgY291bnQsIHVfaW50IGZsYWdzKQogewogCXN0cnVj
dCByZXNvdXJjZV9saXN0X2VudHJ5ICpybGUgPSBOVUxMOwogCWludCBwYXNzdGhyb3VnaCA9IChk
ZXZpY2VfZ2V0X3BhcmVudChjaGlsZCkgIT0gYnVzKTsKQEAgLTM5NDksNyArMzk0OSw3IEBACiAg
Ki8KIGludAogYnVzX2dlbmVyaWNfYWRqdXN0X3Jlc291cmNlKGRldmljZV90IGRldiwgZGV2aWNl
X3QgY2hpbGQsIGludCB0eXBlLAotICAgIHN0cnVjdCByZXNvdXJjZSAqciwgdV9sb25nIHN0YXJ0
LCB1X2xvbmcgZW5kKQorICAgIHN0cnVjdCByZXNvdXJjZSAqciwgYnVzX2FkZHJfdCBzdGFydCwg
YnVzX2FkZHJfdCBlbmQpCiB7CiAJLyogUHJvcGFnYXRlIHVwIHRoZSBidXMgaGllcmFyY2h5IHVu
dGlsIHNvbWVvbmUgaGFuZGxlcyBpdC4gKi8KIAlpZiAoZGV2LT5wYXJlbnQpCkBAIC0zOTY2LDcg
KzM5NjYsNyBAQAogICovCiBzdHJ1Y3QgcmVzb3VyY2UgKgogYnVzX2dlbmVyaWNfYWxsb2NfcmVz
b3VyY2UoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLAot
ICAgIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykK
KyAgICBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LCB1X2lu
dCBmbGFncykKIHsKIAkvKiBQcm9wYWdhdGUgdXAgdGhlIGJ1cyBoaWVyYXJjaHkgdW50aWwgc29t
ZW9uZSBoYW5kbGVzIGl0LiAqLwogCWlmIChkZXYtPnBhcmVudCkKQEAgLTQxMDQsNyArNDEwNCw3
IEBACiAgKi8KIGludAogYnVzX2dlbmVyaWNfcmxfZ2V0X3Jlc291cmNlKGRldmljZV90IGRldiwg
ZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgcmlkLAotICAgIHVfbG9uZyAqc3RhcnRwLCB1
X2xvbmcgKmNvdW50cCkKKyAgICBidXNfYWRkcl90ICpzdGFydHAsIHVfbG9uZyAqY291bnRwKQog
ewogCXN0cnVjdCByZXNvdXJjZV9saXN0ICoJCXJsID0gTlVMTDsKIAlzdHJ1Y3QgcmVzb3VyY2Vf
bGlzdF9lbnRyeSAqCXJsZSA9IE5VTEw7CkBAIC00MTM1LDcgKzQxMzUsNyBAQAogICovCiBpbnQK
IGJ1c19nZW5lcmljX3JsX3NldF9yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxk
LCBpbnQgdHlwZSwgaW50IHJpZCwKLSAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBjb3VudCkKKyAg
ICBidXNfYWRkcl90IHN0YXJ0LCB1X2xvbmcgY291bnQpCiB7CiAJc3RydWN0IHJlc291cmNlX2xp
c3QgKgkJcmwgPSBOVUxMOwogCkBAIC00MjAzLDcgKzQyMDMsNyBAQAogICovCiBzdHJ1Y3QgcmVz
b3VyY2UgKgogYnVzX2dlbmVyaWNfcmxfYWxsb2NfcmVzb3VyY2UoZGV2aWNlX3QgZGV2LCBkZXZp
Y2VfdCBjaGlsZCwgaW50IHR5cGUsCi0gICAgaW50ICpyaWQsIHVfbG9uZyBzdGFydCwgdV9sb25n
IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKKyAgICBpbnQgKnJpZCwgYnVzX2FkZHJf
dCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCiB7CiAJ
c3RydWN0IHJlc291cmNlX2xpc3QgKgkJcmwgPSBOVUxMOwogCkBAIC00Mjg5LDcgKzQyODksNyBA
QAogICogcGFyZW50IG9mIEBwIGRldi4KICAqLwogc3RydWN0IHJlc291cmNlICoKLWJ1c19hbGxv
Y19yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGludCB0eXBlLCBpbnQgKnJpZCwgdV9sb25nIHN0YXJ0
LCB1X2xvbmcgZW5kLAorYnVzX2FsbG9jX3Jlc291cmNlKGRldmljZV90IGRldiwgaW50IHR5cGUs
IGludCAqcmlkLCBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwKICAgICB1X2xvbmcg
Y291bnQsIHVfaW50IGZsYWdzKQogewogCWlmIChkZXYtPnBhcmVudCA9PSBOVUxMKQpAQCAtNDMw
NSw4ICs0MzA1LDggQEAKICAqIHBhcmVudCBvZiBAcCBkZXYuCiAgKi8KIGludAotYnVzX2FkanVz
dF9yZXNvdXJjZShkZXZpY2VfdCBkZXYsIGludCB0eXBlLCBzdHJ1Y3QgcmVzb3VyY2UgKnIsIHVf
bG9uZyBzdGFydCwKLSAgICB1X2xvbmcgZW5kKQorYnVzX2FkanVzdF9yZXNvdXJjZShkZXZpY2Vf
dCBkZXYsIGludCB0eXBlLCBzdHJ1Y3QgcmVzb3VyY2UgKnIsIGJ1c19hZGRyX3Qgc3RhcnQsCisg
ICAgYnVzX2FkZHJfdCBlbmQpCiB7CiAJaWYgKGRldi0+cGFyZW50ID09IE5VTEwpCiAJCXJldHVy
biAoRUlOVkFMKTsKQEAgLTQ0MzYsNyArNDQzNiw3IEBACiAgKi8KIGludAogYnVzX3NldF9yZXNv
dXJjZShkZXZpY2VfdCBkZXYsIGludCB0eXBlLCBpbnQgcmlkLAotICAgIHVfbG9uZyBzdGFydCwg
dV9sb25nIGNvdW50KQorICAgIGJ1c19hZGRyX3Qgc3RhcnQsIHVfbG9uZyBjb3VudCkKIHsKIAly
ZXR1cm4gKEJVU19TRVRfUkVTT1VSQ0UoZGV2aWNlX2dldF9wYXJlbnQoZGV2KSwgZGV2LCB0eXBl
LCByaWQsCiAJICAgIHN0YXJ0LCBjb3VudCkpOwpAQCAtNDQ1MCw3ICs0NDUwLDcgQEAKICAqLwog
aW50CiBidXNfZ2V0X3Jlc291cmNlKGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCByaWQsCi0g
ICAgdV9sb25nICpzdGFydHAsIHVfbG9uZyAqY291bnRwKQorICAgIGJ1c19hZGRyX3QgKnN0YXJ0
cCwgdV9sb25nICpjb3VudHApCiB7CiAJcmV0dXJuIChCVVNfR0VUX1JFU09VUkNFKGRldmljZV9n
ZXRfcGFyZW50KGRldiksIGRldiwgdHlwZSwgcmlkLAogCSAgICBzdGFydHAsIGNvdW50cCkpOwpA
QCAtNDQ2MiwxMCArNDQ2MiwxMSBAQAogICogVGhpcyBmdW5jdGlvbiBzaW1wbHkgY2FsbHMgdGhl
IEJVU19HRVRfUkVTT1VSQ0UoKSBtZXRob2Qgb2YgdGhlCiAgKiBwYXJlbnQgb2YgQHAgZGV2IGFu
ZCByZXR1cm5zIHRoZSBzdGFydCB2YWx1ZS4KICAqLwotdV9sb25nCitidXNfYWRkcl90CiBidXNf
Z2V0X3Jlc291cmNlX3N0YXJ0KGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCByaWQpCiB7Ci0J
dV9sb25nIHN0YXJ0LCBjb3VudDsKKwlidXNfYWRkcl90IHN0YXJ0OworCXVfbG9uZyBjb3VudDsK
IAlpbnQgZXJyb3I7CiAKIAllcnJvciA9IEJVU19HRVRfUkVTT1VSQ0UoZGV2aWNlX2dldF9wYXJl
bnQoZGV2KSwgZGV2LCB0eXBlLCByaWQsCkBAIC00NDg0LDcgKzQ0ODUsOCBAQAogdV9sb25nCiBi
dXNfZ2V0X3Jlc291cmNlX2NvdW50KGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCByaWQpCiB7
Ci0JdV9sb25nIHN0YXJ0LCBjb3VudDsKKwlidXNfYWRkcl90IHN0YXJ0OworCXVfbG9uZyBjb3Vu
dDsKIAlpbnQgZXJyb3I7CiAKIAllcnJvciA9IEJVU19HRVRfUkVTT1VSQ0UoZGV2aWNlX2dldF9w
YXJlbnQoZGV2KSwgZGV2LCB0eXBlLCByaWQsCkluZGV4OiBzeXMva2Vybi9zdWJyX3JtYW4uYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBzeXMva2Vybi9zdWJyX3JtYW4uYwkocmV2aXNpb24gMjg3MTg5KQorKysg
c3lzL2tlcm4vc3Vicl9ybWFuLmMJKHdvcmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDggQEAKIAlU
QUlMUV9FTlRSWShyZXNvdXJjZV9pKQlyX2xpbms7CiAJTElTVF9FTlRSWShyZXNvdXJjZV9pKQly
X3NoYXJlbGluazsKIAlMSVNUX0hFQUQoLCByZXNvdXJjZV9pKQkqcl9zaGFyZWhlYWQ7Ci0JdV9s
b25nCXJfc3RhcnQ7CS8qIGluZGV4IG9mIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGlzIHJlc291cmNl
ICovCi0JdV9sb25nCXJfZW5kOwkJLyogaW5kZXggb2YgdGhlIGxhc3QgZW50cnkgKGluY2x1c2l2
ZSkgKi8KKwlidXNfYWRkcl90CXJfc3RhcnQ7CS8qIGluZGV4IG9mIHRoZSBmaXJzdCBlbnRyeSBp
biB0aGlzIHJlc291cmNlICovCisJYnVzX2FkZHJfdAlyX2VuZDsJCS8qIGluZGV4IG9mIHRoZSBs
YXN0IGVudHJ5IChpbmNsdXNpdmUpICovCiAJdV9pbnQJcl9mbGFnczsKIAl2b2lkCSpyX3ZpcnR1
YWw7CS8qIHZpcnR1YWwgYWRkcmVzcyBvZiB0aGlzIHJlc291cmNlICovCiAJc3RydWN0IGRldmlj
ZSAqcl9kZXY7CS8qIGRldmljZSB3aGljaCBoYXMgYWxsb2NhdGVkIHRoaXMgcmVzb3VyY2UgKi8K
QEAgLTEzNSw3ICsxMzUsNyBAQAogCX0KIAogCWlmIChybS0+cm1fc3RhcnQgPT0gMCAmJiBybS0+
cm1fZW5kID09IDApCi0JCXJtLT5ybV9lbmQgPSB+MHVsOworCQlybS0+cm1fZW5kID0gUk1fTUFY
X0VORDsKIAlpZiAocm0tPnJtX3R5cGUgPT0gUk1BTl9VTklOSVQpCiAJCXBhbmljKCJybWFuX2lu
aXQiKTsKIAlpZiAocm0tPnJtX3R5cGUgPT0gUk1BTl9HQVVHRSkKQEAgLTE1NCwxMyArMTU0LDEz
IEBACiB9CiAKIGludAotcm1hbl9tYW5hZ2VfcmVnaW9uKHN0cnVjdCBybWFuICpybSwgdV9sb25n
IHN0YXJ0LCB1X2xvbmcgZW5kKQorcm1hbl9tYW5hZ2VfcmVnaW9uKHN0cnVjdCBybWFuICpybSwg
YnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQpCiB7CiAJc3RydWN0IHJlc291cmNlX2kg
KnIsICpzLCAqdDsKIAlpbnQgcnYgPSAwOwogCi0JRFBSSU5URigoInJtYW5fbWFuYWdlX3JlZ2lv
bjogPCVzPiByZXF1ZXN0OiBzdGFydCAlI2x4LCBlbmQgJSNseFxuIiwKLQkgICAgcm0tPnJtX2Rl
c2NyLCBzdGFydCwgZW5kKSk7CisJRFBSSU5URigoInJtYW5fbWFuYWdlX3JlZ2lvbjogPCVzPiBy
ZXF1ZXN0OiBzdGFydCAlI2xseCwgZW5kICUjbGx4XG4iLAorCSAgICBybS0+cm1fZGVzY3IsICh1
aW50NjRfdClzdGFydCwgKHVpbnQ2NF90KWVuZCkpOwogCWlmIChzdGFydCA8IHJtLT5ybV9zdGFy
dCB8fCBlbmQgPiBybS0+cm1fZW5kKQogCQlyZXR1cm4gRUlOVkFMOwogCXIgPSBpbnRfYWxsb2Nf
cmVzb3VyY2UoTV9OT1dBSVQpOwpAQCAtMTc0LDcgKzE3NCw3IEBACiAKIAkvKiBTa2lwIGVudHJp
ZXMgYmVmb3JlIHVzLiAqLwogCVRBSUxRX0ZPUkVBQ0gocywgJnJtLT5ybV9saXN0LCByX2xpbmsp
IHsKLQkJaWYgKHMtPnJfZW5kID09IFVMT05HX01BWCkKKwkJaWYgKHMtPnJfZW5kID09IEJVU19T
UEFDRV9NQVhBRERSKQogCQkJYnJlYWs7CiAJCWlmIChzLT5yX2VuZCArIDEgPj0gci0+cl9zdGFy
dCkKIAkJCWJyZWFrOwpAQCAtMjc0LDcgKzI3NCw3IEBACiB9CiAKIGludAotcm1hbl9maXJzdF9m
cmVlX3JlZ2lvbihzdHJ1Y3Qgcm1hbiAqcm0sIHVfbG9uZyAqc3RhcnQsIHVfbG9uZyAqZW5kKQor
cm1hbl9maXJzdF9mcmVlX3JlZ2lvbihzdHJ1Y3Qgcm1hbiAqcm0sIGJ1c19hZGRyX3QgKnN0YXJ0
LCBidXNfYWRkcl90ICplbmQpCiB7CiAJc3RydWN0IHJlc291cmNlX2kgKnI7CiAKQEAgLTI5Miw3
ICsyOTIsNyBAQAogfQogCiBpbnQKLXJtYW5fbGFzdF9mcmVlX3JlZ2lvbihzdHJ1Y3Qgcm1hbiAq
cm0sIHVfbG9uZyAqc3RhcnQsIHVfbG9uZyAqZW5kKQorcm1hbl9sYXN0X2ZyZWVfcmVnaW9uKHN0
cnVjdCBybWFuICpybSwgYnVzX2FkZHJfdCAqc3RhcnQsIGJ1c19hZGRyX3QgKmVuZCkKIHsKIAlz
dHJ1Y3QgcmVzb3VyY2VfaSAqcjsKIApAQCAtMzExLDcgKzMxMSw3IEBACiAKIC8qIFNocmluayBv
ciBleHRlbmQgb25lIG9yIGJvdGggZW5kcyBvZiBhbiBhbGxvY2F0ZWQgcmVzb3VyY2UuICovCiBp
bnQKLXJtYW5fYWRqdXN0X3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcnIsIHVfbG9uZyBzdGFy
dCwgdV9sb25nIGVuZCkKK3JtYW5fYWRqdXN0X3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcnIs
IGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kKQogewogCXN0cnVjdCByZXNvdXJjZV9p
ICpyLCAqcywgKnQsICpuZXc7CiAJc3RydWN0IHJtYW4gKnJtOwpAQCAtNDM0LDE4ICs0MzQsMTkg
QEAKICNkZWZpbmUJU0hBUkVfVFlQRShmKQkoZiAmIChSRl9TSEFSRUFCTEUgfCBSRl9QUkVGRVRD
SEFCTEUpKQogCiBzdHJ1Y3QgcmVzb3VyY2UgKgotcm1hbl9yZXNlcnZlX3Jlc291cmNlX2JvdW5k
KHN0cnVjdCBybWFuICpybSwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLAotCQkJICAgIHVfbG9u
ZyBjb3VudCwgdV9sb25nIGJvdW5kLCB1X2ludCBmbGFncywKK3JtYW5fcmVzZXJ2ZV9yZXNvdXJj
ZV9ib3VuZChzdHJ1Y3Qgcm1hbiAqcm0sIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5k
LAorCQkJICAgIHVfbG9uZyBjb3VudCwgYnVzX2FkZHJfdCBib3VuZCwgdV9pbnQgZmxhZ3MsCiAJ
CQkgICAgc3RydWN0IGRldmljZSAqZGV2KQogewogCXVfaW50IG5ld19yZmxhZ3M7CiAJc3RydWN0
IHJlc291cmNlX2kgKnIsICpzLCAqcnY7Ci0JdV9sb25nIHJzdGFydCwgcmVuZCwgYW1hc2ssIGJt
YXNrOworCWJ1c19hZGRyX3QgcnN0YXJ0LCByZW5kLCBhbWFzaywgYm1hc2s7CiAKIAlydiA9IE5V
TEw7CiAKLQlEUFJJTlRGKCgicm1hbl9yZXNlcnZlX3Jlc291cmNlX2JvdW5kOiA8JXM+IHJlcXVl
c3Q6IFslI2x4LCAlI2x4XSwgIgotCSAgICAgICAibGVuZ3RoICUjbHgsIGZsYWdzICV1LCBkZXZp
Y2UgJXNcbiIsIHJtLT5ybV9kZXNjciwgc3RhcnQsIGVuZCwKKwlEUFJJTlRGKCgicm1hbl9yZXNl
cnZlX3Jlc291cmNlX2JvdW5kOiA8JXM+IHJlcXVlc3Q6IFslI2xseCwgJSNsbHhdLCAiCisJICAg
ICAgICJsZW5ndGggJSNseCwgZmxhZ3MgJXUsIGRldmljZSAlc1xuIiwgcm0tPnJtX2Rlc2NyLAor
CSAgICAgICAodWludDY0X3Qpc3RhcnQsICh1aW50NjRfdCllbmQsCiAJICAgICAgIGNvdW50LCBm
bGFncywKIAkgICAgICAgZGV2ID09IE5VTEwgPyAiPG51bGw+IiA6IGRldmljZV9nZXRfbmFtZXVu
aXQoZGV2KSkpOwogCUtBU1NFUlQoKGZsYWdzICYgUkZfRklSU1RTSEFSRSkgPT0gMCwKQEAgLTQ2
NCw5ICs0NjUsMTAgQEAKIAkJZ290byBvdXQ7CiAJfQogCi0JYW1hc2sgPSAoMXVsIDw8IFJGX0FM
SUdOTUVOVChmbGFncykpIC0gMTsKLQlLQVNTRVJUKHN0YXJ0IDw9IFVMT05HX01BWCAtIGFtYXNr
LAotCSAgICAoInN0YXJ0ICglI2x4KSArIGFtYXNrICglI2x4KSB3b3VsZCB3cmFwIGFyb3VuZCIs
IHN0YXJ0LCBhbWFzaykpOworCWFtYXNrID0gKDF1bGwgPDwgUkZfQUxJR05NRU5UKGZsYWdzKSkg
LSAxOworCUtBU1NFUlQoc3RhcnQgPD0gQlVTX1NQQUNFX01BWEFERFIgLSBhbWFzaywKKwkgICAg
KCJzdGFydCAoJSNsbHgpICsgYW1hc2sgKCUjbGx4KSB3b3VsZCB3cmFwIGFyb3VuZCIsICh1aW50
NjRfdClzdGFydCwKKwkgICAgKHVpbnQ2NF90KWFtYXNrKSk7CiAKIAkvKiBJZiBib3VuZCBpcyAw
LCBibWFzayB3aWxsIGFsc28gYmUgMCAqLwogCWJtYXNrID0gfihib3VuZCAtIDEpOwpAQCAtNDc0
LDE5ICs0NzYsMjAgQEAKIAkgKiBGaXJzdCB0cnkgdG8gZmluZCBhbiBhY2NlcHRhYmxlIHRvdGFs
bHktdW5zaGFyZWQgcmVnaW9uLgogCSAqLwogCWZvciAocyA9IHI7IHM7IHMgPSBUQUlMUV9ORVhU
KHMsIHJfbGluaykpIHsKLQkJRFBSSU5URigoImNvbnNpZGVyaW5nIFslI2x4LCAlI2x4XVxuIiwg
cy0+cl9zdGFydCwgcy0+cl9lbmQpKTsKKwkJRFBSSU5URigoImNvbnNpZGVyaW5nIFslI2xseCwg
JSNsbHhdXG4iLCAodWludDY0X3Qpcy0+cl9zdGFydCwKKwkJICAgICh1aW50NjRfdClzLT5yX2Vu
ZCkpOwogCQkvKgogCQkgKiBUaGUgcmVzb3VyY2UgbGlzdCBpcyBzb3J0ZWQsIHNvIHRoZXJlIGlz
IG5vIHBvaW50IGluCiAJCSAqIHNlYXJjaGluZyBmdXJ0aGVyIG9uY2Ugcl9zdGFydCBpcyB0b28g
bGFyZ2UuCiAJCSAqLwogCQlpZiAocy0+cl9zdGFydCA+IGVuZCAtIChjb3VudCAtIDEpKSB7Ci0J
CQlEUFJJTlRGKCgicy0+cl9zdGFydCAoJSNseCkgKyBjb3VudCAtIDE+IGVuZCAoJSNseClcbiIs
Ci0JCQkgICAgcy0+cl9zdGFydCwgZW5kKSk7CisJCQlEUFJJTlRGKCgicy0+cl9zdGFydCAoJSNs
bHgpICsgY291bnQgLSAxPiBlbmQgKCUjbGx4KVxuIiwKKwkJCSAgICAodWludDY0X3Qpcy0+cl9z
dGFydCwgKHVpbnQ2NF90KWVuZCkpOwogCQkJYnJlYWs7CiAJCX0KLQkJaWYgKHMtPnJfc3RhcnQg
PiBVTE9OR19NQVggLSBhbWFzaykgewotCQkJRFBSSU5URigoInMtPnJfc3RhcnQgKCUjbHgpICsg
YW1hc2sgKCUjbHgpIHRvbyBsYXJnZVxuIiwKLQkJCSAgICBzLT5yX3N0YXJ0LCBhbWFzaykpOwor
CQlpZiAocy0+cl9zdGFydCA+IEJVU19TUEFDRV9NQVhBRERSIC0gYW1hc2spIHsKKwkJCURQUklO
VEYoKCJzLT5yX3N0YXJ0ICglI2xseCkgKyBhbWFzayAoJSNsbHgpIHRvbyBsYXJnZVxuIiwKKwkJ
CSAgICAodWludDY0X3Qpcy0+cl9zdGFydCwgKHVpbnQ2NF90KWFtYXNrKSk7CiAJCQlicmVhazsK
IAkJfQogCQlpZiAocy0+cl9mbGFncyAmIFJGX0FMTE9DQVRFRCkgewpAQCAtNDkzLDcgKzQ5Niw3
IEBACiAJCQlEUFJJTlRGKCgicmVnaW9uIGlzIGFsbG9jYXRlZFxuIikpOwogCQkJY29udGludWU7
CiAJCX0KLQkJcnN0YXJ0ID0gdWxtYXgocy0+cl9zdGFydCwgc3RhcnQpOworCQlyc3RhcnQgPSBx
bWF4KHMtPnJfc3RhcnQsIHN0YXJ0KTsKIAkJLyoKIAkJICogVHJ5IHRvIGZpbmQgYSByZWdpb24g
YnkgYWRqdXN0aW5nIHRvIGJvdW5kYXJ5IGFuZCBhbGlnbm1lbnQKIAkJICogdW50aWwgYm90aCBj
b25kaXRpb25zIGFyZSBzYXRpc2ZpZWQuIFRoaXMgaXMgbm90IGFuIG9wdGltYWwKQEAgLTUwNSwx
NyArNTA4LDE4IEBACiAJCQkJcnN0YXJ0ICs9IGJvdW5kIC0gKHJzdGFydCAmIH5ibWFzayk7CiAJ
CX0gd2hpbGUgKChyc3RhcnQgJiBhbWFzaykgIT0gMCAmJiByc3RhcnQgPCBlbmQgJiYKIAkJICAg
IHJzdGFydCA8IHMtPnJfZW5kKTsKLQkJcmVuZCA9IHVsbWluKHMtPnJfZW5kLCB1bG1heChyc3Rh
cnQgKyBjb3VudCAtIDEsIGVuZCkpOworCQlyZW5kID0gcW1pbihzLT5yX2VuZCwgcW1heChyc3Rh
cnQgKyBjb3VudCAtIDEsIGVuZCkpOwogCQlpZiAocnN0YXJ0ID4gcmVuZCkgewogCQkJRFBSSU5U
RigoImFkanVzdGVkIHN0YXJ0IGV4Y2VlZHMgZW5kXG4iKSk7CiAJCQljb250aW51ZTsKIAkJfQot
CQlEUFJJTlRGKCgidHJ1bmNhdGVkIHJlZ2lvbjogWyUjbHgsICUjbHhdOyBzaXplICUjbHggKHJl
cXVlc3RlZCAlI2x4KVxuIiwKLQkJICAgICAgIHJzdGFydCwgcmVuZCwgKHJlbmQgLSByc3RhcnQg
KyAxKSwgY291bnQpKTsKKwkJRFBSSU5URigoInRydW5jYXRlZCByZWdpb246IFslI2xseCwgJSNs
bHhdOyBzaXplICUjbHggKHJlcXVlc3RlZCAlI2x4KVxuIiwKKwkJICAgICAgICh1aW50NjRfdCly
c3RhcnQsICh1aW50NjRfdClyZW5kLCAodV9sb25nKShyZW5kIC0gcnN0YXJ0ICsgMSksIGNvdW50
KSk7CiAKIAkJaWYgKChyZW5kIC0gcnN0YXJ0ICsgMSkgPj0gY291bnQpIHsKLQkJCURQUklOVEYo
KCJjYW5kaWRhdGUgcmVnaW9uOiBbJSNseCwgJSNseF0sIHNpemUgJSNseFxuIiwKLQkJCSAgICAg
ICByc3RhcnQsIHJlbmQsIChyZW5kIC0gcnN0YXJ0ICsgMSkpKTsKKwkJCURQUklOVEYoKCJjYW5k
aWRhdGUgcmVnaW9uOiBbJSNsbHgsICUjbGx4XSwgc2l6ZSAlI2x4XG4iLAorCQkJICAgICAgICh1
aW50NjRfdClyc3RhcnQsICh1aW50NjRfdClyZW5kLAorCQkJICAgICAgICh1X2xvbmcpKHJlbmQg
LSByc3RhcnQgKyAxKSkpOwogCQkJaWYgKChzLT5yX2VuZCAtIHMtPnJfc3RhcnQgKyAxKSA9PSBj
b3VudCkgewogCQkJCURQUklOVEYoKCJjYW5kaWRhdGUgcmVnaW9uIGlzIGVudGlyZSBjaHVua1xu
IikpOwogCQkJCXJ2ID0gczsKQEAgLTU0NSwxMCArNTQ5LDEwIEBACiAKIAkJCWlmIChzLT5yX3N0
YXJ0IDwgcnYtPnJfc3RhcnQgJiYgcy0+cl9lbmQgPiBydi0+cl9lbmQpIHsKIAkJCQlEUFJJTlRG
KCgic3BsaXR0aW5nIHJlZ2lvbiBpbiB0aHJlZSBwYXJ0czogIgotCQkJCSAgICAgICAiWyUjbHgs
ICUjbHhdOyBbJSNseCwgJSNseF07IFslI2x4LCAlI2x4XVxuIiwKLQkJCQkgICAgICAgcy0+cl9z
dGFydCwgcnYtPnJfc3RhcnQgLSAxLAotCQkJCSAgICAgICBydi0+cl9zdGFydCwgcnYtPnJfZW5k
LAotCQkJCSAgICAgICBydi0+cl9lbmQgKyAxLCBzLT5yX2VuZCkpOworCQkJCSAgICAgICAiWyUj
bGx4LCAlI2xseF07IFslI2xseCwgJSNsbHhdOyBbJSNsbHgsICUjbGx4XVxuIiwKKwkJCQkgICAg
ICAgKHVpbnQ2NF90KXMtPnJfc3RhcnQsICh1aW50NjRfdClydi0+cl9zdGFydCAtIDEsCisJCQkJ
ICAgICAgICh1aW50NjRfdClydi0+cl9zdGFydCwgKHVpbnQ2NF90KXJ2LT5yX2VuZCwKKwkJCQkg
ICAgICAgKHVpbnQ2NF90KXJ2LT5yX2VuZCArIDEsICh1aW50NjRfdClzLT5yX2VuZCkpOwogCQkJ
CS8qCiAJCQkJICogV2UgYXJlIGFsbG9jYXRpbmcgaW4gdGhlIG1pZGRsZS4KIAkJCQkgKi8KQEAg
LTY0MSw4ICs2NDUsOCBAQAogfQogCiBzdHJ1Y3QgcmVzb3VyY2UgKgotcm1hbl9yZXNlcnZlX3Jl
c291cmNlKHN0cnVjdCBybWFuICpybSwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1X2xvbmcg
Y291bnQsCi0JCSAgICAgIHVfaW50IGZsYWdzLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCitybWFuX3Jl
c2VydmVfcmVzb3VyY2Uoc3RydWN0IHJtYW4gKnJtLCBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRk
cl90IGVuZCwKKwkJICAgICAgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncywgc3RydWN0IGRldmlj
ZSAqZGV2KQogewogCiAJcmV0dXJuIChybWFuX3Jlc2VydmVfcmVzb3VyY2VfYm91bmQocm0sIHN0
YXJ0LCBlbmQsIGNvdW50LCAwLCBmbGFncywKQEAgLTgwMywxMyArODA3LDEzIEBACiB9CiAKIHZv
aWQKLXJtYW5fc2V0X3N0YXJ0KHN0cnVjdCByZXNvdXJjZSAqciwgdV9sb25nIHN0YXJ0KQorcm1h
bl9zZXRfc3RhcnQoc3RydWN0IHJlc291cmNlICpyLCBidXNfYWRkcl90IHN0YXJ0KQogewogCiAJ
ci0+X19yX2ktPnJfc3RhcnQgPSBzdGFydDsKIH0KIAotdV9sb25nCitidXNfYWRkcl90CiBybWFu
X2dldF9zdGFydChzdHJ1Y3QgcmVzb3VyY2UgKnIpCiB7CiAKQEAgLTgxNywxMyArODIxLDEzIEBA
CiB9CiAKIHZvaWQKLXJtYW5fc2V0X2VuZChzdHJ1Y3QgcmVzb3VyY2UgKnIsIHVfbG9uZyBlbmQp
CitybWFuX3NldF9lbmQoc3RydWN0IHJlc291cmNlICpyLCBidXNfYWRkcl90IGVuZCkKIHsKIAog
CXItPl9fcl9pLT5yX2VuZCA9IGVuZDsKIH0KIAotdV9sb25nCitidXNfYWRkcl90CiBybWFuX2dl
dF9lbmQoc3RydWN0IHJlc291cmNlICpyKQogewogCkBAIC04MzAsNyArODM0LDcgQEAKIAlyZXR1
cm4gKHItPl9fcl9pLT5yX2VuZCk7CiB9CiAKLXVfbG9uZworYnVzX3NpemVfdAogcm1hbl9nZXRf
c2l6ZShzdHJ1Y3QgcmVzb3VyY2UgKnIpCiB7CiAKSW5kZXg6IHN5cy9wb3dlcnBjL2luY2x1ZGUv
YnVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gc3lzL3Bvd2VycGMvaW5jbHVkZS9idXMuaAkocmV2aXNpb24g
Mjg3MTg5KQorKysgc3lzL3Bvd2VycGMvaW5jbHVkZS9idXMuaAkod29ya2luZyBjb3B5KQpAQCAt
NzksOSArNzksMTQgQEAKICNkZWZpbmUgQlVTX1NQQUNFX01BWEFERFIgCTB4RkZGRkZGRkZGRkZG
RkZGRlVMCiAjZGVmaW5lIEJVU19TUEFDRV9NQVhTSVpFIAkweEZGRkZGRkZGRkZGRkZGRkZVTAog
I2Vsc2UKKyNpZmRlZiBCT09LRQorI2RlZmluZSBCVVNfU1BBQ0VfTUFYQUREUiAJMHhGRkZGRkZG
RkZVTAorI2RlZmluZSBCVVNfU1BBQ0VfTUFYU0laRSAJMHhGRkZGRkZGRlVMCisjZWxzZQogI2Rl
ZmluZSBCVVNfU1BBQ0VfTUFYQUREUiAJMHhGRkZGRkZGRlVMCiAjZGVmaW5lIEJVU19TUEFDRV9N
QVhTSVpFIAkweEZGRkZGRkZGVUwKICNlbmRpZgorI2VuZGlmCiAKICNkZWZpbmUJQlVTX1NQQUNF
X01BUF9DQUNIRUFCTEUJCTB4MDEKICNkZWZpbmUJQlVTX1NQQUNFX01BUF9MSU5FQVIJCTB4MDIK
SW5kZXg6IHN5cy9wb3dlcnBjL2luY2x1ZGUvcGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv
cG93ZXJwYy9pbmNsdWRlL3BsYXRmb3JtLmgJKHJldmlzaW9uIDI4NzE4OSkKKysrIHN5cy9wb3dl
cnBjL2luY2x1ZGUvcGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOCBAQAog
I2luY2x1ZGUgPG1hY2hpbmUvcGNwdS5oPgogCiBzdHJ1Y3QgbWVtX3JlZ2lvbiB7Ci0Jdm1fb2Zm
c2V0X3QJbXJfc3RhcnQ7Ci0Jdm1fc2l6ZV90CW1yX3NpemU7CisJdWludDY0X3QJbXJfc3RhcnQ7
CisJdWludDY0X3QJbXJfc2l6ZTsKIH07CiAKIHZvaWQJbWVtX3JlZ2lvbnMoc3RydWN0IG1lbV9y
ZWdpb24gKiosIGludCAqLCBzdHJ1Y3QgbWVtX3JlZ2lvbiAqKiwgaW50ICopOwpJbmRleDogc3lz
L3Bvd2VycGMvbXBjODV4eC9sYmMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvcG93ZXJwYy9tcGM4NXh4
L2xiYy5jCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMvcG93ZXJwYy9tcGM4NXh4L2xiYy5jCSh3
b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiBzdGF0aWMgaW50IGxiY19hdHRhY2goZGV2
aWNlX3QpOwogc3RhdGljIGludCBsYmNfc2h1dGRvd24oZGV2aWNlX3QpOwogc3RhdGljIHN0cnVj
dCByZXNvdXJjZSAqbGJjX2FsbG9jX3Jlc291cmNlKGRldmljZV90LCBkZXZpY2VfdCwgaW50LCBp
bnQgKiwKLSAgICB1X2xvbmcsIHVfbG9uZywgdV9sb25nLCB1X2ludCk7CisgICAgYnVzX2FkZHJf
dCwgYnVzX2FkZHJfdCwgdV9sb25nLCB1X2ludCk7CiBzdGF0aWMgaW50IGxiY19wcmludF9jaGls
ZChkZXZpY2VfdCwgZGV2aWNlX3QpOwogc3RhdGljIGludCBsYmNfcmVsZWFzZV9yZXNvdXJjZShk
ZXZpY2VfdCwgZGV2aWNlX3QsIGludCwgaW50LAogICAgIHN0cnVjdCByZXNvdXJjZSAqKTsKQEAg
LTExMyw3ICsxMTMsOCBAQAogCiBkZXZjbGFzc190IGxiY19kZXZjbGFzczsKIAotRFJJVkVSX01P
RFVMRShsYmMsIG9md2J1cywgbGJjX2RyaXZlciwgbGJjX2RldmNsYXNzLCAwLCAwKTsKK0VBUkxZ
X0RSSVZFUl9NT0RVTEUobGJjLCBvZndidXMsIGxiY19kcml2ZXIsIGxiY19kZXZjbGFzcywgMCwg
MCwKKyAgICBCVVNfUEFTU19CVVMgKyBCVVNfUEFTU19PUkRFUl9NSURETEUpOwogCiAvKgogICog
Q2FsY3VsYXRlIGFkZHJlc3MgbWFzayB1c2VkIGJ5IE9SKG4pIHJlZ2lzdGVycy4gVXNlIG1lbW9y
eSByZWdpb24gc2l6ZSB0bwpAQCAtMzU0LDcgKzM1NSw3IEBACiBmZHRfbGJjX3JlZ19kZWNvZGUo
cGhhbmRsZV90IG5vZGUsIHN0cnVjdCBsYmNfc29mdGMgKnNjLAogICAgIHN0cnVjdCBsYmNfZGV2
aW5mbyAqZGkpCiB7Ci0JdV9sb25nIHN0YXJ0LCBlbmQsIGNvdW50OworCXVpbnQ2NF90IHN0YXJ0
LCBlbmQsIGNvdW50OwogCXBjZWxsX3QgKnJlZywgKnJlZ3B0cjsKIAlwY2VsbF90IGFkZHJfY2Vs
bHMsIHNpemVfY2VsbHM7CiAJaW50IHR1cGxlX3NpemUsIHR1cGxlczsKQEAgLTM5MSw4ICszOTIs
OCBAQAogCQlzdGFydCA9IHNjLT5zY19iYW5rc1tiYW5rXS5rdmEgKyBzdGFydDsKIAkJZW5kID0g
c3RhcnQgKyBjb3VudCAtIDE7CiAKLQkJZGVidWdmKCJyZWcgYWRkciBiYW5rID0gJWQsIHN0YXJ0
ID0gJWx4LCBlbmQgPSAlbHgsICIKLQkJICAgICJjb3VudCA9ICVseFxuIiwgYmFuaywgc3RhcnQs
IGVuZCwgY291bnQpOworCQlkZWJ1Z2YoInJlZyBhZGRyIGJhbmsgPSAlZCwgc3RhcnQgPSAlbGx4
LCBlbmQgPSAlbGx4LCAiCisJCSAgICAiY291bnQgPSAlbGx4XG4iLCBiYW5rLCBzdGFydCwgZW5k
LCBjb3VudCk7CiAKIAkJLyogVXNlIGJhbmsgKENTKSBjZWxsIGFzIHJpZC4gKi8KIAkJcmVzb3Vy
Y2VfbGlzdF9hZGQoJmRpLT5kaV9yZXMsIFNZU19SRVNfTUVNT1JZLCBiYW5rLCBzdGFydCwKQEAg
LTQzNCw3ICs0MzUsNyBAQAogCXN0cnVjdCBsYmNfc29mdGMgKnNjOwogCXN0cnVjdCBsYmNfZGV2
aW5mbyAqZGk7CiAJc3RydWN0IHJtYW4gKnJtOwotCXVfbG9uZyBvZmZzZXQsIHN0YXJ0LCBzaXpl
OworCXVpbnQ2NF90IG9mZnNldCwgc3RhcnQsIHNpemU7CiAJZGV2aWNlX3QgY2RldjsKIAlwaGFu
ZGxlX3Qgbm9kZSwgY2hpbGQ7CiAJcGNlbGxfdCAqcmFuZ2VzLCAqcmFuZ2VzcHRyOwpAQCAtNjYz
LDcgKzY2NCw3IEBACiAKIHN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgKgogbGJjX2FsbG9jX3Jlc291
cmNlKGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgKnJpZCwKLSAg
ICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpCisg
ICAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgdV9pbnQg
ZmxhZ3MpCiB7CiAJc3RydWN0IGxiY19zb2Z0YyAqc2M7CiAJc3RydWN0IGxiY19kZXZpbmZvICpk
aTsKSW5kZXg6IHN5cy9wb3dlcnBjL29mdy9vZndfcGNpLmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL3Bv
d2VycGMvb2Z3L29md19wY2kuYwkocmV2aXNpb24gMjg3MTg5KQorKysgc3lzL3Bvd2VycGMvb2Z3
L29md19wY2kuYwkod29ya2luZyBjb3B5KQpAQCAtNjIsOCArNjIsOCBAQAogc3RhdGljIGludAkJ
b2Z3X3BjaV9yZWFkX2l2YXIoZGV2aWNlX3QsIGRldmljZV90LCBpbnQsCiAJCQkgICAgdWludHB0
cl90ICopOwogc3RhdGljIHN0cnVjdAkJcmVzb3VyY2UgKiBvZndfcGNpX2FsbG9jX3Jlc291cmNl
KGRldmljZV90IGJ1cywKLQkJCSAgICBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlk
LCB1X2xvbmcgc3RhcnQsCi0JCQkgICAgdV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBm
bGFncyk7CisJCQkgICAgZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgKnJpZCwgYnVzX2Fk
ZHJfdCBzdGFydCwKKwkJCSAgICBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBm
bGFncyk7CiBzdGF0aWMgaW50CQlvZndfcGNpX3JlbGVhc2VfcmVzb3VyY2UoZGV2aWNlX3QgYnVz
LCBkZXZpY2VfdCBjaGlsZCwKICAgICAJCQkgICAgaW50IHR5cGUsIGludCByaWQsIHN0cnVjdCBy
ZXNvdXJjZSAqcmVzKTsKIHN0YXRpYyBpbnQJCW9md19wY2lfYWN0aXZhdGVfcmVzb3VyY2UoZGV2
aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwKQEAgLTcyLDggKzcyLDggQEAKICAgICAJCQkgICAg
ZGV2aWNlX3QgY2hpbGQsIGludCB0eXBlLCBpbnQgcmlkLAogICAgIAkJCSAgICBzdHJ1Y3QgcmVz
b3VyY2UgKnJlcyk7CiBzdGF0aWMgaW50CQlvZndfcGNpX2FkanVzdF9yZXNvdXJjZShkZXZpY2Vf
dCBidXMsIGRldmljZV90IGNoaWxkLAotCQkJICAgIGludCB0eXBlLCBzdHJ1Y3QgcmVzb3VyY2Ug
KnJlcywgdV9sb25nIHN0YXJ0LAotCQkJICAgIHVfbG9uZyBlbmQpOworCQkJICAgIGludCB0eXBl
LCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgYnVzX2FkZHJfdCBzdGFydCwKKwkJCSAgICBidXNfYWRk
cl90IGVuZCk7CiAKIC8qCiAgKiBwY2liIGludGVyZmFjZS4KQEAgLTMwNyw3ICszMDcsNyBAQAog
CiBzdGF0aWMgc3RydWN0IHJlc291cmNlICoKIG9md19wY2lfYWxsb2NfcmVzb3VyY2UoZGV2aWNl
X3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLAotICAgIHVfbG9uZyBz
dGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKKyAgICBidXNfYWRk
cl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBmbGFncykKIHsK
IAlzdHJ1Y3QJCQlvZndfcGNpX3NvZnRjICpzYzsKIAlzdHJ1Y3QJCQlyZXNvdXJjZSAqcnY7CkBA
IC00NTMsNyArNDUzLDcgQEAKIAogc3RhdGljIGludAogb2Z3X3BjaV9hZGp1c3RfcmVzb3VyY2Uo
ZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsCi0gICAgc3RydWN0IHJlc291
cmNlICpyZXMsIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCkKKyAgICBzdHJ1Y3QgcmVzb3VyY2Ug
KnJlcywgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQpCiB7CiAJc3RydWN0IHJtYW4g
KnJtID0gTlVMTDsKIAlzdHJ1Y3Qgb2Z3X3BjaV9zb2Z0YyAqc2MgPSBkZXZpY2VfZ2V0X3NvZnRj
KGJ1cyk7CkluZGV4OiBzeXMvcG93ZXJwYy9wb3dlcnBjL25leHVzLmMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
c3lzL3Bvd2VycGMvcG93ZXJwYy9uZXh1cy5jCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMvcG93
ZXJwYy9wb3dlcnBjL25leHVzLmMJKHdvcmtpbmcgY29weSkKQEAgLTE4OSwxMyArMTg5LDEzIEBA
CiB7CiAKIAlpZiAodHlwZSA9PSBTWVNfUkVTX01FTU9SWSkgewotCQl2bV9vZmZzZXRfdCBzdGFy
dDsKKwkJdm1fcGFkZHJfdCBzdGFydDsKIAkJdm9pZCAqcDsKIAotCQlzdGFydCA9ICh2bV9vZmZz
ZXRfdCkgcm1hbl9nZXRfc3RhcnQocik7CisJCXN0YXJ0ID0gcm1hbl9nZXRfc3RhcnQocik7CiAJ
CWlmIChib290dmVyYm9zZSkKLQkJCXByaW50ZigibmV4dXMgbWFwZGV2OiBzdGFydCAlengsIGxl
biAlbGRcbiIsIHN0YXJ0LAotCQkJICAgIHJtYW5fZ2V0X3NpemUocikpOworCQkJcHJpbnRmKCJu
ZXh1cyBtYXBkZXY6IHN0YXJ0ICVsbHgsIGxlbiAlbGRcbiIsCisJCQkgICAgKHVpbnQ2NF90KXN0
YXJ0LCBybWFuX2dldF9zaXplKHIpKTsKIAogCQlwID0gcG1hcF9tYXBkZXYoc3RhcnQsICh2bV9z
aXplX3QpIHJtYW5fZ2V0X3NpemUocikpOwogCQlpZiAocCA9PSBOVUxMKQpJbmRleDogc3lzL3Bv
d2VycGMvcG93ZXJwYy9wbGF0Zm9ybS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9wb3dlcnBjL3Bvd2Vy
cGMvcGxhdGZvcm0uYwkocmV2aXNpb24gMjg3MTg5KQorKysgc3lzL3Bvd2VycGMvcG93ZXJwYy9w
bGF0Zm9ybS5jCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw4IEBACiBtZW1yX21lcmdlKHN0
cnVjdCBtZW1fcmVnaW9uICpmcm9tLCBzdHJ1Y3QgbWVtX3JlZ2lvbiAqdG8pCiB7CiAJdm1fb2Zm
c2V0X3QgZW5kOwotCWVuZCA9IHVsbWF4KHRvLT5tcl9zdGFydCArIHRvLT5tcl9zaXplLCBmcm9t
LT5tcl9zdGFydCArIGZyb20tPm1yX3NpemUpOwotCXRvLT5tcl9zdGFydCA9IHVsbWluKGZyb20t
Pm1yX3N0YXJ0LCB0by0+bXJfc3RhcnQpOworCWVuZCA9IHFtYXgodG8tPm1yX3N0YXJ0ICsgdG8t
Pm1yX3NpemUsIGZyb20tPm1yX3N0YXJ0ICsgZnJvbS0+bXJfc2l6ZSk7CisJdG8tPm1yX3N0YXJ0
ID0gcW1pbihmcm9tLT5tcl9zdGFydCwgdG8tPm1yX3N0YXJ0KTsKIAl0by0+bXJfc2l6ZSA9IGVu
ZCAtIHRvLT5tcl9zdGFydDsKIH0KIApJbmRleDogc3lzL3N5cy9idXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBzeXMvc3lzL2J1cy5oCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMvc3lzL2J1cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIF9TWVNfQlVTX0hfCiAjZGVmaW5l
IF9TWVNfQlVTX0hfCiAKKyNpbmNsdWRlIDxtYWNoaW5lL19idXMuaD4KICNpbmNsdWRlIDxtYWNo
aW5lL19saW1pdHMuaD4KICNpbmNsdWRlIDxzeXMvX2J1c19kbWEuaD4KICNpbmNsdWRlIDxzeXMv
aW9jY29tLmg+CkBAIC0yOTIsOCArMjkzLDggQEAKIAlpbnQJcmlkOwkJCS8qKjwgQGJyaWVmIHJl
c291cmNlIGlkZW50aWZpZXIgKi8KIAlpbnQJZmxhZ3M7CQkJLyoqPCBAYnJpZWYgcmVzb3VyY2Ug
ZmxhZ3MgKi8KIAlzdHJ1Y3QJcmVzb3VyY2UgKnJlczsJCS8qKjwgQGJyaWVmIHRoZSByZWFsIHJl
c291cmNlIHdoZW4gYWxsb2NhdGVkICovCi0JdV9sb25nCXN0YXJ0OwkJCS8qKjwgQGJyaWVmIHN0
YXJ0IG9mIHJlc291cmNlIHJhbmdlICovCi0JdV9sb25nCWVuZDsJCQkvKio8IEBicmllZiBlbmQg
b2YgcmVzb3VyY2UgcmFuZ2UgKi8KKwlidXNfYWRkcl90CXN0YXJ0OwkJLyoqPCBAYnJpZWYgc3Rh
cnQgb2YgcmVzb3VyY2UgcmFuZ2UgKi8KKwlidXNfYWRkcl90CWVuZDsJCS8qKjwgQGJyaWVmIGVu
ZCBvZiByZXNvdXJjZSByYW5nZSAqLwogCXVfbG9uZwljb3VudDsJCQkvKio8IEBicmllZiBjb3Vu
dCB3aXRoaW4gcmFuZ2UgKi8KIH07CiBTVEFJTFFfSEVBRChyZXNvdXJjZV9saXN0LCByZXNvdXJj
ZV9saXN0X2VudHJ5KTsKQEAgLTMwNywxMCArMzA4LDEwIEBACiBzdHJ1Y3QgcmVzb3VyY2VfbGlz
dF9lbnRyeSAqCiAJcmVzb3VyY2VfbGlzdF9hZGQoc3RydWN0IHJlc291cmNlX2xpc3QgKnJsLAog
CQkJICBpbnQgdHlwZSwgaW50IHJpZCwKLQkJCSAgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLCB1
X2xvbmcgY291bnQpOworCQkJICBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwgdV9s
b25nIGNvdW50KTsKIGludAlyZXNvdXJjZV9saXN0X2FkZF9uZXh0KHN0cnVjdCByZXNvdXJjZV9s
aXN0ICpybCwKIAkJCSAgaW50IHR5cGUsCi0JCQkgIHVfbG9uZyBzdGFydCwgdV9sb25nIGVuZCwg
dV9sb25nIGNvdW50KTsKKwkJCSAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2FkZHJfdCBlbmQsIHVf
bG9uZyBjb3VudCk7CiBpbnQJcmVzb3VyY2VfbGlzdF9idXN5KHN0cnVjdCByZXNvdXJjZV9saXN0
ICpybCwKIAkJCSAgIGludCB0eXBlLCBpbnQgcmlkKTsKIGludAlyZXNvdXJjZV9saXN0X3Jlc2Vy
dmVkKHN0cnVjdCByZXNvdXJjZV9saXN0ICpybCwgaW50IHR5cGUsIGludCByaWQpOwpAQCAtMzIz
LDcgKzMyNCw3IEBACiAJcmVzb3VyY2VfbGlzdF9hbGxvYyhzdHJ1Y3QgcmVzb3VyY2VfbGlzdCAq
cmwsCiAJCQkgICAgZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwKIAkJCSAgICBpbnQgdHlw
ZSwgaW50ICpyaWQsCi0JCQkgICAgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kLAorCQkJICAgIGJ1
c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kLAogCQkJICAgIHVfbG9uZyBjb3VudCwgdV9p
bnQgZmxhZ3MpOwogaW50CXJlc291cmNlX2xpc3RfcmVsZWFzZShzdHJ1Y3QgcmVzb3VyY2VfbGlz
dCAqcmwsCiAJCQkgICAgICBkZXZpY2VfdCBidXMsIGRldmljZV90IGNoaWxkLApAQCAtMzM1LDcg
KzMzNiw3IEBACiAJcmVzb3VyY2VfbGlzdF9yZXNlcnZlKHN0cnVjdCByZXNvdXJjZV9saXN0ICpy
bCwKIAkJCSAgICAgIGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQsCiAJCQkgICAgICBpbnQg
dHlwZSwgaW50ICpyaWQsCi0JCQkgICAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsCisJCQkg
ICAgICBidXNfYWRkcl90IHN0YXJ0LCBidXNfYWRkcl90IGVuZCwKIAkJCSAgICAgIHVfbG9uZyBj
b3VudCwgdV9pbnQgZmxhZ3MpOwogaW50CXJlc291cmNlX2xpc3RfdW5yZXNlcnZlKHN0cnVjdCBy
ZXNvdXJjZV9saXN0ICpybCwKIAkJCQlkZXZpY2VfdCBidXMsIGRldmljZV90IGNoaWxkLApAQCAt
MzYyLDExICszNjMsMTEgQEAKIAlidXNfZ2VuZXJpY19hZGRfY2hpbGQoZGV2aWNlX3QgZGV2LCB1
X2ludCBvcmRlciwgY29uc3QgY2hhciAqbmFtZSwKIAkJCSAgICAgIGludCB1bml0KTsKIGludAli
dXNfZ2VuZXJpY19hZGp1c3RfcmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwg
aW50IHR5cGUsCi0JCQkJICAgIHN0cnVjdCByZXNvdXJjZSAqciwgdV9sb25nIHN0YXJ0LAotCQkJ
CSAgICB1X2xvbmcgZW5kKTsKKwkJCQkgICAgc3RydWN0IHJlc291cmNlICpyLCBidXNfYWRkcl90
IHN0YXJ0LAorCQkJCSAgICBidXNfYWRkcl90IGVuZCk7CiBzdHJ1Y3QgcmVzb3VyY2UgKgogCWJ1
c19nZW5lcmljX2FsbG9jX3Jlc291cmNlKGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQsIGlu
dCB0eXBlLAotCQkJCSAgIGludCAqcmlkLCB1X2xvbmcgc3RhcnQsIHVfbG9uZyBlbmQsCisJCQkJ
ICAgaW50ICpyaWQsIGJ1c19hZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kLAogCQkJCSAgIHVf
bG9uZyBjb3VudCwgdV9pbnQgZmxhZ3MpOwogaW50CWJ1c19nZW5lcmljX2F0dGFjaChkZXZpY2Vf
dCBkZXYpOwogaW50CWJ1c19nZW5lcmljX2JpbmRfaW50cihkZXZpY2VfdCBkZXYsIGRldmljZV90
IGNoaWxkLApAQCAtNDA1LDExICs0MDYsMTEgQEAKIAogc3RydWN0IHJlc291cmNlICoKIAlidXNf
Z2VuZXJpY19ybF9hbGxvY19yZXNvdXJjZSAoZGV2aWNlX3QsIGRldmljZV90LCBpbnQsIGludCAq
LAotCQkJCSAgICAgICB1X2xvbmcsIHVfbG9uZywgdV9sb25nLCB1X2ludCk7CisJCQkJICAgICAg
IGJ1c19hZGRyX3QsIGJ1c19hZGRyX3QsIHVfbG9uZywgdV9pbnQpOwogdm9pZAlidXNfZ2VuZXJp
Y19ybF9kZWxldGVfcmVzb3VyY2UgKGRldmljZV90LCBkZXZpY2VfdCwgaW50LCBpbnQpOwotaW50
CWJ1c19nZW5lcmljX3JsX2dldF9yZXNvdXJjZSAoZGV2aWNlX3QsIGRldmljZV90LCBpbnQsIGlu
dCwgdV9sb25nICosCitpbnQJYnVzX2dlbmVyaWNfcmxfZ2V0X3Jlc291cmNlIChkZXZpY2VfdCwg
ZGV2aWNlX3QsIGludCwgaW50LCBidXNfYWRkcl90ICosCiAJCQkJICAgICB1X2xvbmcgKik7Ci1p
bnQJYnVzX2dlbmVyaWNfcmxfc2V0X3Jlc291cmNlIChkZXZpY2VfdCwgZGV2aWNlX3QsIGludCwg
aW50LCB1X2xvbmcsCitpbnQJYnVzX2dlbmVyaWNfcmxfc2V0X3Jlc291cmNlIChkZXZpY2VfdCwg
ZGV2aWNlX3QsIGludCwgaW50LCBidXNfYWRkcl90LAogCQkJCSAgICAgdV9sb25nKTsKIGludAli
dXNfZ2VuZXJpY19ybF9yZWxlYXNlX3Jlc291cmNlIChkZXZpY2VfdCwgZGV2aWNlX3QsIGludCwg
aW50LAogCQkJCQkgc3RydWN0IHJlc291cmNlICopOwpAQCAtNDM5LDEwICs0NDAsMTAgQEAKIAkJ
CSAgICAgIHN0cnVjdCByZXNvdXJjZSAqKnJlcyk7CiAKIGludAlidXNfYWRqdXN0X3Jlc291cmNl
KGRldmljZV90IGNoaWxkLCBpbnQgdHlwZSwgc3RydWN0IHJlc291cmNlICpyLAotCQkJICAgIHVf
bG9uZyBzdGFydCwgdV9sb25nIGVuZCk7CisJCQkgICAgYnVzX2FkZHJfdCBzdGFydCwgYnVzX2Fk
ZHJfdCBlbmQpOwogc3RydWN0CXJlc291cmNlICpidXNfYWxsb2NfcmVzb3VyY2UoZGV2aWNlX3Qg
ZGV2LCBpbnQgdHlwZSwgaW50ICpyaWQsCi0JCQkJICAgICB1X2xvbmcgc3RhcnQsIHVfbG9uZyBl
bmQsIHVfbG9uZyBjb3VudCwKLQkJCQkgICAgIHVfaW50IGZsYWdzKTsKKwkJCQkgICAgIGJ1c19h
ZGRyX3Qgc3RhcnQsIGJ1c19hZGRyX3QgZW5kLAorCQkJCSAgICAgdV9sb25nIGNvdW50LCB1X2lu
dCBmbGFncyk7CiBpbnQJYnVzX2FjdGl2YXRlX3Jlc291cmNlKGRldmljZV90IGRldiwgaW50IHR5
cGUsIGludCByaWQsCiAJCQkgICAgICBzdHJ1Y3QgcmVzb3VyY2UgKnIpOwogaW50CWJ1c19kZWFj
dGl2YXRlX3Jlc291cmNlKGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCByaWQsCkBAIC00NjAs
MTAgKzQ2MSwxMCBAQAogaW50CWJ1c19kZXNjcmliZV9pbnRyKGRldmljZV90IGRldiwgc3RydWN0
IHJlc291cmNlICppcnEsIHZvaWQgKmNvb2tpZSwKIAkJCSAgY29uc3QgY2hhciAqZm10LCAuLi4p
OwogaW50CWJ1c19zZXRfcmVzb3VyY2UoZGV2aWNlX3QgZGV2LCBpbnQgdHlwZSwgaW50IHJpZCwK
LQkJCSB1X2xvbmcgc3RhcnQsIHVfbG9uZyBjb3VudCk7CisJCQkgYnVzX2FkZHJfdCBzdGFydCwg
dV9sb25nIGNvdW50KTsKIGludAlidXNfZ2V0X3Jlc291cmNlKGRldmljZV90IGRldiwgaW50IHR5
cGUsIGludCByaWQsCi0JCQkgdV9sb25nICpzdGFydHAsIHVfbG9uZyAqY291bnRwKTsKLXVfbG9u
ZwlidXNfZ2V0X3Jlc291cmNlX3N0YXJ0KGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCByaWQp
OworCQkJIGJ1c19hZGRyX3QgKnN0YXJ0cCwgdV9sb25nICpjb3VudHApOworYnVzX2FkZHJfdAli
dXNfZ2V0X3Jlc291cmNlX3N0YXJ0KGRldmljZV90IGRldiwgaW50IHR5cGUsIGludCByaWQpOwog
dV9sb25nCWJ1c19nZXRfcmVzb3VyY2VfY291bnQoZGV2aWNlX3QgZGV2LCBpbnQgdHlwZSwgaW50
IHJpZCk7CiB2b2lkCWJ1c19kZWxldGVfcmVzb3VyY2UoZGV2aWNlX3QgZGV2LCBpbnQgdHlwZSwg
aW50IHJpZCk7CiBpbnQJYnVzX2NoaWxkX3ByZXNlbnQoZGV2aWNlX3QgY2hpbGQpOwpAQCAtNDc0
LDcgKzQ3NSw4IEBACiBzdGF0aWMgX19pbmxpbmUgc3RydWN0IHJlc291cmNlICoKIGJ1c19hbGxv
Y19yZXNvdXJjZV9hbnkoZGV2aWNlX3QgZGV2LCBpbnQgdHlwZSwgaW50ICpyaWQsIHVfaW50IGZs
YWdzKQogewotCXJldHVybiAoYnVzX2FsbG9jX3Jlc291cmNlKGRldiwgdHlwZSwgcmlkLCAwdWws
IH4wdWwsIDEsIGZsYWdzKSk7CisJcmV0dXJuIChidXNfYWxsb2NfcmVzb3VyY2UoZGV2LCB0eXBl
LCByaWQsIChidXNfYWRkcl90KTB1bCwKKwkgICAgfihidXNfYWRkcl90KTB1bCwgMSwgZmxhZ3Mp
KTsKIH0KIAogLyoKSW5kZXg6IHN5cy9zeXMvcm1hbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9zeXMv
cm1hbi5oCShyZXZpc2lvbiAyODcxODkpCisrKyBzeXMvc3lzL3JtYW4uaAkod29ya2luZyBjb3B5
KQpAQCAtNTQsNiArNTQsOSBAQAogI2RlZmluZQlSRl9BTElHTk1FTlRfTE9HMih4KQkoKHgpIDw8
IFJGX0FMSUdOTUVOVF9TSElGVCkKICNkZWZpbmUJUkZfQUxJR05NRU5UKHgpCQkoKCh4KSAmIFJG
X0FMSUdOTUVOVF9NQVNLKSA+PiBSRl9BTElHTk1FTlRfU0hJRlQpCiAKKyNkZWZpbmUgUk1fTUlO
X1NUQVJUCSgoYnVzX2FkZHJfdCkwKQorI2RlZmluZSBSTV9NQVhfRU5ECSh+KGJ1c19hZGRyX3Qp
MCkKKwogZW51bQlybWFuX3R5cGUgeyBSTUFOX1VOSU5JVCA9IDAsIFJNQU5fR0FVR0UsIFJNQU5f
QVJSQVkgfTsKIAogLyoKQEAgLTcwLDggKzczLDggQEAKIAl1aW50cHRyX3QJcl9kZXZpY2U7CQkv
KiBkZXZpY2Ugb3duaW5nIHRoaXMgcmVzb3VyY2UgKi8KIAljaGFyCQlyX2Rldm5hbWVbUk1fVEVY
VExFTl07CS8qIGRldmljZSBuYW1lIFhYWCBvYnNvbGV0ZSAqLwogCi0JdV9sb25nCQlyX3N0YXJ0
OwkJLyogb2Zmc2V0IGluIHJlc291cmNlIHNwYWNlICovCi0JdV9sb25nCQlyX3NpemU7CQkJLyog
c2l6ZSBpbiByZXNvdXJjZSBzcGFjZSAqLworCWJ1c19hZGRyX3QJcl9zdGFydDsJCS8qIG9mZnNl
dCBpbiByZXNvdXJjZSBzcGFjZSAqLworCWJ1c19zaXplX3QJcl9zaXplOwkJCS8qIHNpemUgaW4g
cmVzb3VyY2Ugc3BhY2UgKi8KIAl1X2ludAkJcl9mbGFnczsJCS8qIFJGXyogZmxhZ3MgKi8KIH07
CiAKQEAgLTc5LDggKzgyLDggQEAKIAl1aW50cHRyX3QJcm1faGFuZGxlOwkJLyogcm1hbiB1bmlx
dWlmaWVyICovCiAJY2hhcgkJcm1fZGVzY3JbUk1fVEVYVExFTl07CS8qIHJtYW4gZGVzY3JpcHRp
b24gKi8KIAotCXVfbG9uZwkJcm1fc3RhcnQ7CQkvKiBiYXNlIG9mIG1hbmFnZWQgcmVnaW9uICov
Ci0JdV9sb25nCQlybV9zaXplOwkJLyogc2l6ZSBvZiBtYW5hZ2VkIHJlZ2lvbiAqLworCWJ1c19h
ZGRyX3QJcm1fc3RhcnQ7CQkvKiBiYXNlIG9mIG1hbmFnZWQgcmVnaW9uICovCisJYnVzX3NpemVf
dAlybV9zaXplOwkJLyogc2l6ZSBvZiBtYW5hZ2VkIHJlZ2lvbiAqLwogCWVudW0gcm1hbl90eXBl
CXJtX3R5cGU7CQkvKiByZWdpb24gdHlwZSAqLwogfTsKIApAQCAtMTA4LDggKzExMSw4IEBACiAJ
c3RydWN0CXJlc291cmNlX2hlYWQgCXJtX2xpc3Q7CiAJc3RydWN0CW10eCAqcm1fbXR4OwkvKiBt
dXRleCB1c2VkIHRvIHByb3RlY3Qgcm1fbGlzdCAqLwogCVRBSUxRX0VOVFJZKHJtYW4pCXJtX2xp
bms7IC8qIGxpbmsgaW4gbGlzdCBvZiBhbGwgcm1hbnMgKi8KLQl1X2xvbmcJcm1fc3RhcnQ7CS8q
IGluZGV4IG9mIGdsb2JhbGx5IGZpcnN0IGVudHJ5ICovCi0JdV9sb25nCXJtX2VuZDsJCS8qIGlu
ZGV4IG9mIGdsb2JhbGx5IGxhc3QgZW50cnkgKi8KKwlidXNfYWRkcl90CXJtX3N0YXJ0OwkvKiBp
bmRleCBvZiBnbG9iYWxseSBmaXJzdCBlbnRyeSAqLworCWJ1c19hZGRyX3QJcm1fZW5kOwkvKiBp
bmRleCBvZiBnbG9iYWxseSBsYXN0IGVudHJ5ICovCiAJZW51bQlybWFuX3R5cGUgcm1fdHlwZTsg
Lyogd2hhdCB0eXBlIG9mIHJlc291cmNlIHRoaXMgaXMgKi8KIAljb25zdAljaGFyICpybV9kZXNj
cjsJLyogdGV4dCBkZXNjcmlwaW9uIG9mIHRoaXMgcmVzb3VyY2UgKi8KIH07CkBAIC0xMTYsMzkg
KzExOSwzOSBAQAogVEFJTFFfSEVBRChybWFuX2hlYWQsIHJtYW4pOwogCiBpbnQJcm1hbl9hY3Rp
dmF0ZV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnIpOwotaW50CXJtYW5fYWRqdXN0X3Jlc291
cmNlKHN0cnVjdCByZXNvdXJjZSAqciwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kKTsKK2ludAly
bWFuX2FkanVzdF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnIsIGJ1c19hZGRyX3Qgc3RhcnQs
IGJ1c19hZGRyX3QgZW5kKTsKIGludAlybWFuX2F3YWl0X3Jlc291cmNlKHN0cnVjdCByZXNvdXJj
ZSAqciwgaW50IHByaSwgaW50IHRpbW8pOwotaW50CXJtYW5fZmlyc3RfZnJlZV9yZWdpb24oc3Ry
dWN0IHJtYW4gKnJtLCB1X2xvbmcgKnN0YXJ0LCB1X2xvbmcgKmVuZCk7CitpbnQJcm1hbl9maXJz
dF9mcmVlX3JlZ2lvbihzdHJ1Y3Qgcm1hbiAqcm0sIGJ1c19hZGRyX3QgKnN0YXJ0LCBidXNfYWRk
cl90ICplbmQpOwogYnVzX3NwYWNlX2hhbmRsZV90IHJtYW5fZ2V0X2J1c2hhbmRsZShzdHJ1Y3Qg
cmVzb3VyY2UgKik7CiBidXNfc3BhY2VfdGFnX3Qgcm1hbl9nZXRfYnVzdGFnKHN0cnVjdCByZXNv
dXJjZSAqKTsKLXVfbG9uZwlybWFuX2dldF9lbmQoc3RydWN0IHJlc291cmNlICopOworYnVzX2Fk
ZHJfdAlybWFuX2dldF9lbmQoc3RydWN0IHJlc291cmNlICopOwogc3RydWN0IGRldmljZSAqcm1h
bl9nZXRfZGV2aWNlKHN0cnVjdCByZXNvdXJjZSAqKTsKIHVfaW50CXJtYW5fZ2V0X2ZsYWdzKHN0
cnVjdCByZXNvdXJjZSAqKTsKIGludAlybWFuX2dldF9yaWQoc3RydWN0IHJlc291cmNlICopOwot
dV9sb25nCXJtYW5fZ2V0X3NpemUoc3RydWN0IHJlc291cmNlICopOwotdV9sb25nCXJtYW5fZ2V0
X3N0YXJ0KHN0cnVjdCByZXNvdXJjZSAqKTsKK2J1c19zaXplX3QJcm1hbl9nZXRfc2l6ZShzdHJ1
Y3QgcmVzb3VyY2UgKik7CitidXNfYWRkcl90CXJtYW5fZ2V0X3N0YXJ0KHN0cnVjdCByZXNvdXJj
ZSAqKTsKIHZvaWQgICAqcm1hbl9nZXRfdmlydHVhbChzdHJ1Y3QgcmVzb3VyY2UgKik7CiBpbnQJ
cm1hbl9kZWFjdGl2YXRlX3Jlc291cmNlKHN0cnVjdCByZXNvdXJjZSAqcik7CiBpbnQJcm1hbl9m
aW5pKHN0cnVjdCBybWFuICpybSk7CiBpbnQJcm1hbl9pbml0KHN0cnVjdCBybWFuICpybSk7CiBp
bnQJcm1hbl9pbml0X2Zyb21fcmVzb3VyY2Uoc3RydWN0IHJtYW4gKnJtLCBzdHJ1Y3QgcmVzb3Vy
Y2UgKnIpOwotaW50CXJtYW5fbGFzdF9mcmVlX3JlZ2lvbihzdHJ1Y3Qgcm1hbiAqcm0sIHVfbG9u
ZyAqc3RhcnQsIHVfbG9uZyAqZW5kKTsKK2ludAlybWFuX2xhc3RfZnJlZV9yZWdpb24oc3RydWN0
IHJtYW4gKnJtLCBidXNfYWRkcl90ICpzdGFydCwgYnVzX2FkZHJfdCAqZW5kKTsKIHVpbnQzMl90
IHJtYW5fbWFrZV9hbGlnbm1lbnRfZmxhZ3ModWludDMyX3Qgc2l6ZSk7Ci1pbnQJcm1hbl9tYW5h
Z2VfcmVnaW9uKHN0cnVjdCBybWFuICpybSwgdV9sb25nIHN0YXJ0LCB1X2xvbmcgZW5kKTsKK2lu
dAlybWFuX21hbmFnZV9yZWdpb24oc3RydWN0IHJtYW4gKnJtLCBidXNfYWRkcl90IHN0YXJ0LCBi
dXNfYWRkcl90IGVuZCk7CiBpbnQJcm1hbl9pc19yZWdpb25fbWFuYWdlcihzdHJ1Y3QgcmVzb3Vy
Y2UgKnIsIHN0cnVjdCBybWFuICpybSk7CiBpbnQJcm1hbl9yZWxlYXNlX3Jlc291cmNlKHN0cnVj
dCByZXNvdXJjZSAqcik7Ci1zdHJ1Y3QgcmVzb3VyY2UgKnJtYW5fcmVzZXJ2ZV9yZXNvdXJjZShz
dHJ1Y3Qgcm1hbiAqcm0sIHVfbG9uZyBzdGFydCwKLQkJCQkJdV9sb25nIGVuZCwgdV9sb25nIGNv
dW50LAorc3RydWN0IHJlc291cmNlICpybWFuX3Jlc2VydmVfcmVzb3VyY2Uoc3RydWN0IHJtYW4g
KnJtLCBidXNfYWRkcl90IHN0YXJ0LAorCQkJCQlidXNfYWRkcl90IGVuZCwgdV9sb25nIGNvdW50
LAogCQkJCQl1X2ludCBmbGFncywgc3RydWN0IGRldmljZSAqZGV2KTsKLXN0cnVjdCByZXNvdXJj
ZSAqcm1hbl9yZXNlcnZlX3Jlc291cmNlX2JvdW5kKHN0cnVjdCBybWFuICpybSwgdV9sb25nIHN0
YXJ0LAotCQkJCQl1X2xvbmcgZW5kLCB1X2xvbmcgY291bnQsIHVfbG9uZyBib3VuZCwKK3N0cnVj
dCByZXNvdXJjZSAqcm1hbl9yZXNlcnZlX3Jlc291cmNlX2JvdW5kKHN0cnVjdCBybWFuICpybSwg
YnVzX2FkZHJfdCBzdGFydCwKKwkJCQkJYnVzX2FkZHJfdCBlbmQsIHVfbG9uZyBjb3VudCwgYnVz
X2FkZHJfdCBib3VuZCwKIAkJCQkJdV9pbnQgZmxhZ3MsIHN0cnVjdCBkZXZpY2UgKmRldik7CiB2
b2lkCXJtYW5fc2V0X2J1c2hhbmRsZShzdHJ1Y3QgcmVzb3VyY2UgKl9yLCBidXNfc3BhY2VfaGFu
ZGxlX3QgX2gpOwogdm9pZAlybWFuX3NldF9idXN0YWcoc3RydWN0IHJlc291cmNlICpfciwgYnVz
X3NwYWNlX3RhZ190IF90KTsKIHZvaWQJcm1hbl9zZXRfZGV2aWNlKHN0cnVjdCByZXNvdXJjZSAq
X3IsIHN0cnVjdCBkZXZpY2UgKl9kZXYpOwotdm9pZAlybWFuX3NldF9lbmQoc3RydWN0IHJlc291
cmNlICpfciwgdV9sb25nIF9lbmQpOwordm9pZAlybWFuX3NldF9lbmQoc3RydWN0IHJlc291cmNl
ICpfciwgYnVzX2FkZHJfdCBfZW5kKTsKIHZvaWQJcm1hbl9zZXRfcmlkKHN0cnVjdCByZXNvdXJj
ZSAqX3IsIGludCBfcmlkKTsKLXZvaWQJcm1hbl9zZXRfc3RhcnQoc3RydWN0IHJlc291cmNlICpf
ciwgdV9sb25nIF9zdGFydCk7Cit2b2lkCXJtYW5fc2V0X3N0YXJ0KHN0cnVjdCByZXNvdXJjZSAq
X3IsIGJ1c19hZGRyX3QgX3N0YXJ0KTsKIHZvaWQJcm1hbl9zZXRfdmlydHVhbChzdHJ1Y3QgcmVz
b3VyY2UgKl9yLCB2b2lkICpfdik7CiAKIGV4dGVybglzdHJ1Y3Qgcm1hbl9oZWFkIHJtYW5faGVh
ZDsK
--001a1141f3be08c46f051e777817--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAHSQbTAGD=4A20XZL09YXbEm9hdf5K2_QCRPFOAjrXHF4eg9sQ>