Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Jun 2013 22:51:04 +0400
From:      Alexander Fedorov <alexander.fedorov@rtlservice.com>
To:        Mariano Lescano <mercanoles@gmail.com>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: Booting kernel on Cubieboard/Mele a_1000 (Allwiner A10)
Message-ID:  <CAOcOT_y%2Bs0YAMnZOK3kO0QbxSFp%2BOJT-kmCNa=RpMAOKzt_cEg@mail.gmail.com>
In-Reply-To: <CAK%2BmYUXShgauOEee8DkYQpn099CeQ%2Bpm5UpOmC8de3V6sQnEqw@mail.gmail.com>
References:  <CAK%2BmYUXShgauOEee8DkYQpn099CeQ%2Bpm5UpOmC8de3V6sQnEqw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--001a11c1c556924ed204e0273ed1
Content-Type: text/plain; charset=ISO-8859-1

Hi!
Freebsd doesn't support Allwinner A10 MMC controller.

You should use USB stick for the root filesystem.

P.S.
I have an initial version of the driver for MMC, but it does not
support DMA, so the IO is very slow. I tested it with my Hackberry
board.
If you're interested, see the patch in attachment and configuration
files. Also, I will publish the code on github in a few days.

2013/6/27 Mariano Lescano <mercanoles@gmail.com>:
> Hi
> We have the kernel booting using ubldr. At the point to mount the root
> filesystem we get this message:
>
> ======================================================
>
> Trying to mount root from ufs:/dev/mmcsd0s2a [rw,noatime]...
> stack_capture: frame=0xdcacfa3c
> stack_capture: frame=0
> stack_capture: frame=0xdcacf85c
> stack_capture: frame=0xc30feda4
> stack_capture: frame=0
> mountroot: waiting for device /dev/mmcsd0s2a ...
> Mounting from ufs:/dev/mmcsd0s2a failed with error 19.
> Trying to mount root from ufs:/dev/da0s2a []...
> mountroot: waiting for device /dev/da0s2a ...
> Mounting from ufs:/dev/da0s2a failed with error 19.
>
> Loader variables:
>   vfs.root.mountfrom=ufs:/dev/mmcsd0s2a
>   vfs.root.mountfrom.options=rw,noatime
>
> Manual root filesystem specification:
>   <fstype>:<device> [options]
>       Mount <device> using filesystem <fstype>
>       and with the specified (optional) option list.
>
>     eg. ufs:/dev/da0s1a
>         zfs:tank
>         cd9660:/dev/acd0 ro
>           (which is equivalent to: mount -t cd9660 -o ro /dev/acd0 /)
>
>   ?               List valid disk boot devices
>   .               Yield 1 second (for background tasks)
>   <empty line>    Abort manual input
>
> mountroot> ?
>
> List of GEOM managed disk devices:
>
>
> mountroot>
>
> ========================================================
>
> We can see that List of GEOM managed disk devices is empty
>
> What could be the problem?
> Any suggestions?
>
> Thanks
> _______________________________________________
> freebsd-arm@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org"

--001a11c1c556924ed204e0273ed1
Content-Type: application/octet-stream; name="a10_mmc.patch"
Content-Disposition: attachment; filename="a10_mmc.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_higb7hxr0

SW5kZXg6IHN5cy9hcm0vY29uZi9DVUJJRUJPQVJECj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9hcm0vY29u
Zi9DVUJJRUJPQVJECShyZXZpc2lvbiAyNTIzMTApCisrKyBzeXMvYXJtL2NvbmYvQ1VCSUVCT0FS
RAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogaW5jbHVkZQkJIi4uL2FsbHdpbm5l
ci9zdGQuYTEwIgogCiBtYWtlb3B0aW9ucwlNT0RVTEVTX09WRVJSSURFPSIiCi1tYWtlb3B0aW9u
cwlXSVRIT1VUX01PRFVMRVM9ImFoYyIKKyNtYWtlb3B0aW9ucwlXSVRIT1VUX01PRFVMRVM9ImFo
YyBhaWM3eHh4IgogCiBvcHRpb25zIAlIWj0xMDAKIG9wdGlvbnMgCVNDSEVEXzRCU0QJCSM0QlNE
IHNjaGVkdWxlcgpJbmRleDogc3lzL2FybS9hbGx3aW5uZXIvYTEwX21tYy5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHN5cy9hcm0vYWxsd2lubmVyL2ExMF9tbWMuYwkocmV2aXNpb24gMCkKKysrIHN5cy9hcm0v
YWxsd2lubmVyL2ExMF9tbWMuYwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1NCBAQAorLyot
CisgKiBDb3B5cmlnaHQgKGMpIDIwMTMgQWxleGFuZGVyIEZlZG9yb3YgPGFsZXhhbmRlci5mZWRv
cm92QHJ0bHNlcnZpY2UuY29tPgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
CisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKyNpbmNs
dWRlIDxzeXMvY2RlZnMuaD4KK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvYXJtL2xwYy9s
cGNfbW1jLmMgMjM5Mjc4IDIwMTItMDgtMTUgMDU6Mzc6MTBaIGdvbnpvICQiKTsKKworI2luY2x1
ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgorI2luY2x1ZGUgPHN5cy9i
aW8uaD4KKyNpbmNsdWRlIDxzeXMvYnVzLmg+CisjaW5jbHVkZSA8c3lzL2NvbmYuaD4KKyNpbmNs
dWRlIDxzeXMvZW5kaWFuLmg+CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUgPHN5
cy9rdGhyZWFkLmg+CisjaW5jbHVkZSA8c3lzL2xvY2suaD4KKyNpbmNsdWRlIDxzeXMvbWFsbG9j
Lmg+CisjaW5jbHVkZSA8c3lzL21vZHVsZS5oPgorI2luY2x1ZGUgPHN5cy9tdXRleC5oPgorI2lu
Y2x1ZGUgPHN5cy9xdWV1ZS5oPgorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorI2luY2x1ZGUg
PHN5cy9ybWFuLmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxzeXMvdGltZXRj
Lmg+CisjaW5jbHVkZSA8c3lzL3dhdGNoZG9nLmg+CisKKyNpbmNsdWRlIDxzeXMva2RiLmg+CisK
KyNpbmNsdWRlIDxtYWNoaW5lL2J1cy5oPgorI2luY2x1ZGUgPG1hY2hpbmUvY3B1Lmg+CisjaW5j
bHVkZSA8bWFjaGluZS9jcHVmdW5jLmg+CisjaW5jbHVkZSA8bWFjaGluZS9yZXNvdXJjZS5oPgor
I2luY2x1ZGUgPG1hY2hpbmUvZnJhbWUuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2ludHIuaD4KKwor
I2luY2x1ZGUgPGRldi9vZncvb2Z3X2J1cy5oPgorI2luY2x1ZGUgPGRldi9vZncvb2Z3X2J1c19z
dWJyLmg+CisKKyNpbmNsdWRlIDxkZXYvbW1jL2JyaWRnZS5oPgorI2luY2x1ZGUgPGRldi9tbWMv
bW1jcmVnLmg+CisjaW5jbHVkZSA8ZGV2L21tYy9tbWNicnZhci5oPgorCisjaW5jbHVkZSA8YXJt
L2FsbHdpbm5lci9hMTBfY2xrLmg+CisjaW5jbHVkZSA8YXJtL2FsbHdpbm5lci9hMTBfbW1jLmg+
CisKK3N0cnVjdCBhMTBfbW1jX3NvZnRjIHsKKwlkZXZpY2VfdAkJYTEwX2RldjsKKwlzdHJ1Y3Qg
bXR4CQlhMTBfbXR4OworCXN0cnVjdCByZXNvdXJjZSAqCWExMF9tZW1fcmVzOworCXN0cnVjdCBy
ZXNvdXJjZSAqCWExMF9pcnFfcmVzOworCWJ1c19zcGFjZV90YWdfdAkJYTEwX2JzdDsKKwlidXNf
c3BhY2VfaGFuZGxlX3QJYTEwX2JzaDsKKwl2b2lkICoJCQlhMTBfaW50cmhhbmQ7CisJc3RydWN0
IG1tY19ob3N0CQlhMTBfaG9zdDsKKwlzdHJ1Y3QgbW1jX3JlcXVlc3QgKglhMTBfcmVxOworCWlu
dAkJCWExMF9idXNfYnVzeTsKKwl1aW50OF90IHdhaXQ7CisJdWludDMyX3QgZXJyb3I7CisJZW51
bXsKKwkJQTEwX01NQ19TVF9VTksgPSAwLAorCQlBMTBfTU1DX1NUX1dBSVRfQ01EX0RPTkUsCisJ
CUExMF9NTUNfU1RfV0FJVF9EQVRBX0RPTkUKKwl9c3RhdGU7Cit9OworCitzdGF0aWMgaW50IGEx
MF9tbWNfcHJvYmUoZGV2aWNlX3QpOworc3RhdGljIGludCBhMTBfbW1jX2F0dGFjaChkZXZpY2Vf
dCk7CitzdGF0aWMgaW50IGExMF9tbWNfZGV0YWNoKGRldmljZV90KTsKK3N0YXRpYyB2b2lkIGEx
MF9tbWNfaW50cih2b2lkICopOworCitzdGF0aWMgaW50IGExMF9tbWNfdXBkYXRlX2lvcyhkZXZp
Y2VfdCwgZGV2aWNlX3QpOworc3RhdGljIGludCBhMTBfbW1jX3JlcXVlc3QoZGV2aWNlX3QsIGRl
dmljZV90LCBzdHJ1Y3QgbW1jX3JlcXVlc3QgKik7CitzdGF0aWMgaW50IGExMF9tbWNfZ2V0X3Jv
KGRldmljZV90LCBkZXZpY2VfdCk7CitzdGF0aWMgaW50IGExMF9tbWNfYWNxdWlyZV9ob3N0KGRl
dmljZV90LCBkZXZpY2VfdCk7CitzdGF0aWMgaW50IGExMF9tbWNfcmVsZWFzZV9ob3N0KGRldmlj
ZV90LCBkZXZpY2VfdCk7CisKKyNkZWZpbmUJYTEwX21tY19sb2NrKF9zYykJCQkJCQlcCisgICAg
bXR4X2xvY2soJl9zYy0+YTEwX210eCk7CisjZGVmaW5lCWExMF9tbWNfdW5sb2NrKF9zYykJCQkJ
CQlcCisgICAgbXR4X3VubG9jaygmX3NjLT5hMTBfbXR4KTsKKyNkZWZpbmUJYTEwX21tY19yZWFk
XzQoX3NjLCBfcmVnKQkJCQkJXAorICAgIGJ1c19zcGFjZV9yZWFkXzQoX3NjLT5hMTBfYnN0LCBf
c2MtPmExMF9ic2gsIF9yZWcpCisjZGVmaW5lCWExMF9tbWNfd3JpdGVfNChfc2MsIF9yZWcsIF92
YWx1ZSkJCQkJXAorICAgIGJ1c19zcGFjZV93cml0ZV80KF9zYy0+YTEwX2JzdCwgX3NjLT5hMTBf
YnNoLCBfcmVnLCBfdmFsdWUpCisKK3N0YXRpYyBpbnQKK2ExMF9tbWNfcmVzZXQoc3RydWN0IGEx
MF9tbWNfc29mdGMgKnNjKQoreworICAgIHVpbnQzMl90IHJ2YWwgPSBhMTBfbW1jX3JlYWRfNChz
YywgTU1DX0dDVFJMKSB8IE1NQ19TT0ZUX1JFU0VUX0IgfCBNTUNfRklGT19SRVNFVF9CIHwgTU1D
X0RNQV9SRVNFVF9COworICAgIGludCB0aW1lID0gMHhmZmZmOworCisJYTEwX21tY193cml0ZV80
KHNjLCBNTUNfR0NUUkwsIHJ2YWwpOworICAgIHdoaWxlKChhMTBfbW1jX3JlYWRfNChzYywgTU1D
X0dDVFJMKSAmIChNTUNfU09GVF9SRVNFVF9CIHwgTU1DX0ZJRk9fUkVTRVRfQiB8IE1NQ19ETUFf
UkVTRVRfQikpICYmIHRpbWUtLSk7CisgICAgaWYgKHRpbWUgPD0gMCl7CisJCWRldmljZV9wcmlu
dGYoc2MtPmExMF9kZXYsICJSZXNldCBmYWlsZWRcbiIpOworICAgICAgICByZXR1cm4gLTE7Cisg
ICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorYTEwX21tY19pbnRfZW5hYmxl
KHN0cnVjdCBhMTBfbW1jX3NvZnRjICpzYykKK3sKKyAgICBhMTBfbW1jX3dyaXRlXzQoc2MsIE1N
Q19HQ1RSTCwgYTEwX21tY19yZWFkXzQoc2MsIE1NQ19HQ1RSTCl8TU1DX0lOVF9FTkFCTEVfQik7
Cit9CisKK3N0YXRpYyBpbnQKK2ExMF9tbWNfdXBkYXRlX2NsayhzdHJ1Y3QgYTEwX21tY19zb2Z0
YyAqc2MpCit7CisJdW5zaWduZWQgaW50IGNtZDsKKwl1bnNpZ25lZCB0aW1lb3V0ID0gMHhmZmZm
ZjsKKworCWNtZCA9IE1NQ19TdGFydCB8IE1NQ19VUENMS09ubHkgfCBNTUNfV2FpdFByZU92ZXI7
CisgIAlhMTBfbW1jX3dyaXRlXzQoc2MsIE1NQ19DTURSLCBjbWQpOworCXdoaWxlKChhMTBfbW1j
X3JlYWRfNChzYywgTU1DX0NNRFIpICYgTU1DX1N0YXJ0KSAmJiB0aW1lb3V0LS0pOworCWlmICgh
dGltZW91dCkKKwkJcmV0dXJuIC0xOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2Ex
MF9tbWNfY29uZmlnX2Nsb2NrKHN0cnVjdCBhMTBfbW1jX3NvZnRjICpzYywgdW5zaWduZWQgZGl2
KQoreworCXVuc2lnbmVkIHJ2YWwgPSBhMTBfbW1jX3JlYWRfNChzYywgTU1DX0NMS0NSKTsKKwor
CS8qCisJICogQ0xLQ1JFR1s3OjBdOiBkaXZpZGVyCisJICogQ0xLQ1JFR1sxNl06ICBvbi9vZmYK
KwkgKiBDTEtDUkVHWzE3XTogIHBvd2VyIHNhdmUKKwkgKi8KKworCS8qIERpc2FibGUgQ2xvY2sg
Ki8KKwlydmFsICY9IH5NTUNfQ0FSRF9DTEtfT047CisJYTEwX21tY193cml0ZV80KHNjLCBNTUNf
Q0xLQ1IsIHJ2YWwpOworCWlmKGExMF9tbWNfdXBkYXRlX2NsayhzYykpCisJCXJldHVybiAtMTsK
KworCS8qIENoYW5nZSBEaXZpZGVyIEZhY3RvciAqLworCXJ2YWwgJj0gfigweEZGKTsKKwlydmFs
IHw9IGRpdjsKKwlhMTBfbW1jX3dyaXRlXzQoc2MsIE1NQ19DTEtDUiwgcnZhbCk7CisJaWYoYTEw
X21tY191cGRhdGVfY2xrKHNjKSkKKwkJcmV0dXJuIC0xOworCisJLyogRW5hYmxlIENsb2NrICov
CisJcnZhbCB8PSBNTUNfQ0FSRF9DTEtfT047CisJYTEwX21tY193cml0ZV80KHNjLCBNTUNfQ0xL
Q1IsIHJ2YWwpOworCWlmKGExMF9tbWNfdXBkYXRlX2NsayhzYykpCisJCXJldHVybiAtMTsKKwor
CXJldHVybiAwOworfQorCitzdGF0aWMgaW50CithMTBfbW1jX3Byb2JlKGRldmljZV90IGRldikK
K3sKKwlpZiAoIW9md19idXNfaXNfY29tcGF0aWJsZShkZXYsICJhbGx3aW5uZXIsc3VuNGktbW1j
IikpCisJCXJldHVybiAoRU5YSU8pOworCisJZGV2aWNlX3NldF9kZXNjKGRldiwgIkFsbHdpbm5l
ciBJbnRlZ3JhdGVkIE1NQy9TRCBjb250cm9sbGVyIik7CisJcmV0dXJuIChCVVNfUFJPQkVfREVG
QVVMVCk7Cit9CisKK3N0YXRpYyBpbnQKK2ExMF9tbWNfYXR0YWNoKGRldmljZV90IGRldikKK3sK
KwlzdHJ1Y3QgYTEwX21tY19zb2Z0YyAqc2MgPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CisJZGV2
aWNlX3QgY2hpbGQ7CisJaW50IHJpZDsKKworCXNjLT5hMTBfZGV2ID0gZGV2OworCXNjLT5hMTBf
cmVxID0gTlVMTDsKKworCW10eF9pbml0KCZzYy0+YTEwX210eCwgZGV2aWNlX2dldF9uYW1ldW5p
dChzYy0+YTEwX2RldiksICJhMTBfbW1jIiwgTVRYX0RFRik7CisKKwlyaWQgPSAwOworCXNjLT5h
MTBfbWVtX3JlcyA9IGJ1c19hbGxvY19yZXNvdXJjZV9hbnkoZGV2LCBTWVNfUkVTX01FTU9SWSwg
JnJpZCwKKwkgICAgUkZfQUNUSVZFKTsKKwlpZiAoIXNjLT5hMTBfbWVtX3JlcykgeworCQlkZXZp
Y2VfcHJpbnRmKGRldiwgImNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgd2luZG93XG4iKTsKKwkJcmV0
dXJuIChFTlhJTyk7CisJfQorCisJc2MtPmExMF9ic3QgPSBybWFuX2dldF9idXN0YWcoc2MtPmEx
MF9tZW1fcmVzKTsKKwlzYy0+YTEwX2JzaCA9IHJtYW5fZ2V0X2J1c2hhbmRsZShzYy0+YTEwX21l
bV9yZXMpOworCisJcmlkID0gMDsKKwlzYy0+YTEwX2lycV9yZXMgPSBidXNfYWxsb2NfcmVzb3Vy
Y2VfYW55KGRldiwgU1lTX1JFU19JUlEsICZyaWQsCisJICAgIFJGX0FDVElWRSB8IFJGX1NIQVJF
QUJMRSk7CisJaWYgKCFzYy0+YTEwX2lycV9yZXMpIHsKKwkJZGV2aWNlX3ByaW50ZihkZXYsICJj
YW5ub3QgYWxsb2NhdGUgaW50ZXJydXB0XG4iKTsKKwkJYnVzX3JlbGVhc2VfcmVzb3VyY2UoZGV2
LCBTWVNfUkVTX01FTU9SWSwgMCwgc2MtPmExMF9tZW1fcmVzKTsKKwkJcmV0dXJuIChFTlhJTyk7
CisJfQorCisJaWYgKGJ1c19zZXR1cF9pbnRyKGRldiwgc2MtPmExMF9pcnFfcmVzLCBJTlRSX1RZ
UEVfTUlTQyB8IElOVFJfTVBTQUZFLAorCSAgICBOVUxMLCBhMTBfbW1jX2ludHIsIHNjLCAmc2Mt
PmExMF9pbnRyaGFuZCkpCisJeworCQlidXNfcmVsZWFzZV9yZXNvdXJjZShkZXYsIFNZU19SRVNf
TUVNT1JZLCAwLCBzYy0+YTEwX21lbV9yZXMpOworCQlidXNfcmVsZWFzZV9yZXNvdXJjZShkZXYs
IFNZU19SRVNfSVJRLCAwLCBzYy0+YTEwX2lycV9yZXMpOworCQlkZXZpY2VfcHJpbnRmKGRldiwg
ImNhbm5vdCBzZXR1cCBpbnRlcnJ1cHQgaGFuZGxlclxuIik7CisJCXJldHVybiAoRU5YSU8pOwor
CX0KKworCWExMF9jbGtfbW1jX2FjdGl2YXRlKCk7CisKKwkvKiBSZXNldCBjb250cm9sbGVyICov
CisJYTEwX21tY19yZXNldChzYyk7CisKKyAgICAvKiBjb25maWcgRE1BL0ludGVycnVwdCBUcmln
Z2VyIHRocmVzaG9sZCAqLworICAvLyAgYTEwX21tY193cml0ZV80KHNjLCBNTUNfRlRSR0wsIDB4
NzAwMDgpOworCisgICAgLyogY29uZmlnIHRpbWVvdXQgcmVnaXN0ZXIgKi8KKyAgICBhMTBfbW1j
X3dyaXRlXzQoc2MsIE1NQ19UTU9VVCwgMHhmZmZmZmZmZik7CisKKyAgICAvKiBjbGVhciBpbnRl
cnJ1cHQgZmxhZ3MgKi8KKyAgICBhMTBfbW1jX3dyaXRlXzQoc2MsIE1NQ19SSU5UUiwgMHhmZmZm
ZmZmZik7CisKKyAgICBhMTBfbW1jX3dyaXRlXzQoc2MsIE1NQ19EQkdDLCAweGRlYik7CisgICAg
YTEwX21tY193cml0ZV80KHNjLCBNTUNfRlVOUywgMHhjZWFhMDAwMCk7CisKKwlzYy0+YTEwX2hv
c3QuZl9taW4gPSA0MDAwMDA7CisJc2MtPmExMF9ob3N0LmZfbWF4ID0gNTIwMDAwMDA7CisJc2Mt
PmExMF9ob3N0Lmhvc3Rfb2NyID0gTU1DX09DUl8zMjBfMzMwIHwgTU1DX09DUl8zMzBfMzQwOwor
CXNjLT5hMTBfaG9zdC5jYXBzID0gTU1DX0NBUF80X0JJVF9EQVRBIHwgTU1DX0NBUF9IU1BFRUQ7
CisJc2MtPmExMF9ob3N0Lm1vZGUgPSBtb2RlX3NkOworCisJZGV2aWNlX3NldF9pdmFycyhkZXYs
ICZzYy0+YTEwX2hvc3QpOworCisJY2hpbGQgPSBkZXZpY2VfYWRkX2NoaWxkKGRldiwgIm1tYyIs
IDApOworCWlmICghY2hpbGQpIHsKKwkJZGV2aWNlX3ByaW50ZihkZXYsICJhdHRhY2hpbmcgTU1D
IGJ1cyBmYWlsZWQhXG4iKTsKKwkJYnVzX3RlYXJkb3duX2ludHIoZGV2LCBzYy0+YTEwX2lycV9y
ZXMsIHNjLT5hMTBfaW50cmhhbmQpOworCQlidXNfcmVsZWFzZV9yZXNvdXJjZShkZXYsIFNZU19S
RVNfTUVNT1JZLCAwLCBzYy0+YTEwX21lbV9yZXMpOworCQlidXNfcmVsZWFzZV9yZXNvdXJjZShk
ZXYsIFNZU19SRVNfSVJRLCAwLCBzYy0+YTEwX2lycV9yZXMpOworCQlyZXR1cm4gKEVOWElPKTsK
Kwl9CisKKwlkZXZpY2Vfc2V0X2l2YXJzKGRldiwgJnNjLT5hMTBfaG9zdCk7CisJYnVzX2dlbmVy
aWNfYXR0YWNoKGRldik7CisKKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50CithMTBfbW1j
X2RldGFjaChkZXZpY2VfdCBkZXYpCit7CisJcmV0dXJuIChFQlVTWSk7Cit9CisKK3N0YXRpYyBp
bnQKK21tY190cmFuc19kYXRhX2J5X2NwdShzdHJ1Y3QgYTEwX21tY19zb2Z0YyAqc2MsIHN0cnVj
dCBtbWNfZGF0YSAqZGF0YSkKK3sKKwl1bnNpZ25lZCBpOworCXVuc2lnbmVkIGJ5dGVfY250ID0g
ZGF0YS0+bGVuOworCXVuc2lnbmVkICpidWZmOworCXVuc2lnbmVkIHRpbWVvdXQgPSAweGZmZmZm
OworCisJaWYgKGRhdGEtPmZsYWdzICYgTU1DX0RBVEFfUkVBRCkgeworCQlidWZmID0gKHVuc2ln
bmVkIGludCAqKWRhdGEtPmRhdGE7CisJCWZvciAoaT0wOyBpPChieXRlX2NudD4+Mik7IGkrKykg
eworCQkJd2hpbGUoLS10aW1lb3V0ICYmIChhMTBfbW1jX3JlYWRfNChzYywgTU1DX1NUQVMpICYg
TU1DX0ZJRk9FbXB0eSkpOworCQkJaWYgKHRpbWVvdXQgPD0gMCkgCisJCQkJZ290byBvdXQ7CisJ
CQlidWZmW2ldID0gYTEwX21tY19yZWFkXzQoc2MsIE1NQ19GSUZPKTsKKwkJCXRpbWVvdXQgPSAw
eGZmZmZmOworCQl9CisJfSBlbHNlIHsKKwkJYnVmZiA9ICh1bnNpZ25lZCBpbnQgKilkYXRhLT5k
YXRhOworCQlmb3IgKGk9MDsgaTwoYnl0ZV9jbnQ+PjIpOyBpKyspIHsKKwkJCXdoaWxlKC0tdGlt
ZW91dCAmJiAoYTEwX21tY19yZWFkXzQoc2MsIE1NQ19TVEFTKSAmIE1NQ19GSUZPRnVsbCkpOwor
CQkJaWYgKHRpbWVvdXQgPD0gMCkgCisJCQkJZ290byBvdXQ7CisJCQlhMTBfbW1jX3dyaXRlXzQo
c2MsIE1NQ19GSUZPLCBidWZmW2ldKTsKKwkJCXRpbWVvdXQgPSAweGZmZmZmOworCQl9CisJfQor
CitvdXQ6CisJaWYgKHRpbWVvdXQgPD0gMCkKKwkJcmV0dXJuIC0xOworCisJcmV0dXJuIDA7Cit9
CisKK3N0YXRpYyB2b2lkCithMTBfcmVxX29rKHN0cnVjdCBhMTBfbW1jX3NvZnRjICpzYykKK3sK
KwlzdHJ1Y3QgbW1jX2NvbW1hbmQgKmNtZCA9IHNjLT5hMTBfcmVxLT5jbWQ7CisJdWludDMyX3Qg
cmVzcF9zdGF0dXM7OworCisJZG97CisJCXJlc3Bfc3RhdHVzID0gYTEwX21tY19yZWFkXzQoc2Ms
IE1NQ19TVEFTKTsKKwl9d2hpbGUocmVzcF9zdGF0dXMgJiBNTUNfQ2FyZERhdGFCdXN5KTsKKwor
CWlmIChjbWQtPmZsYWdzICYgTU1DX1JTUF8xMzYpIHsKKwkJY21kLT5yZXNwWzBdID0gYTEwX21t
Y19yZWFkXzQoc2MsIE1NQ19SRVNQMyk7CisJCWNtZC0+cmVzcFsxXSA9IGExMF9tbWNfcmVhZF80
KHNjLCBNTUNfUkVTUDIpOworCQljbWQtPnJlc3BbMl0gPSBhMTBfbW1jX3JlYWRfNChzYywgTU1D
X1JFU1AxKTsKKwkJY21kLT5yZXNwWzNdID0gYTEwX21tY19yZWFkXzQoc2MsIE1NQ19SRVNQMCk7
CisJfSBlbHNlIHsKKwkJY21kLT5yZXNwWzBdID0gYTEwX21tY19yZWFkXzQoc2MsIE1NQ19SRVNQ
MCk7CisJfQorCisJc2MtPmExMF9yZXEtPmNtZC0+ZXJyb3IgPSBNTUNfRVJSX05PTkU7CisJc2Mt
PmExMF9yZXEtPmRvbmUoc2MtPmExMF9yZXEpOworCXNjLT5hMTBfcmVxID0gTlVMTDsKK30KKwor
c3RhdGljIHZvaWQKK2ExMF9yZXFfZXJyKHN0cnVjdCBhMTBfbW1jX3NvZnRjICpzYykKK3sKKwlz
dHJ1Y3QgbW1jX2NvbW1hbmQgKmNtZCA9IHNjLT5hMTBfcmVxLT5jbWQ7CisJZGV2aWNlX3ByaW50
ZihzYy0+YTEwX2RldiwgInJlcSBlcnJvclxuIik7CisJY21kLT5lcnJvciA9IE1NQ19FUlJfVElN
RU9VVDsKKwlzYy0+YTEwX3JlcS0+ZG9uZShzYy0+YTEwX3JlcSk7CisJc2MtPmExMF9yZXEgPSBO
VUxMOworfQorCitzdGF0aWMgdm9pZAorYTEwX21tY19pbnRyKHZvaWQgKmFyZykKK3sKKwlzdHJ1
Y3QgYTEwX21tY19zb2Z0YyAqc2MgPSAoc3RydWN0IGExMF9tbWNfc29mdGMgKilhcmc7CisJdWlu
dDMyX3QgcmludCA9IGExMF9tbWNfcmVhZF80KHNjLCBNTUNfUklOVFIpOworCXVpbnQzMl90IGlt
YXNrID0gYTEwX21tY19yZWFkXzQoc2MsIE1NQ19JTUFTSyk7CisKKwlpbWFzayAmPSB+cmludDsK
KwlhMTBfbW1jX3dyaXRlXzQoc2MsIE1NQ19JTUFTSywgaW1hc2spOworCWExMF9tbWNfd3JpdGVf
NChzYywgTU1DX1JJTlRSLCByaW50KTsKKworCWlmKHNjLT5hMTBfcmVxID09IE5VTEwpeworCQlk
ZXZpY2VfcHJpbnRmKHNjLT5hMTBfZGV2LCAicmVxID09IE5VTEwsIHJpbnQ6IDB4JTA4WFxuIiwg
cmludCk7CisJfQorCisJc3RydWN0IG1tY19jb21tYW5kICpjbWQgPSBzYy0+YTEwX3JlcS0+Y21k
OworCisvLwlpZiAoY21kLT5kYXRhKSB7CisvLwkJaWYgKGNtZC0+ZGF0YS0+ZmxhZ3MgJiBNTUNf
REFUQV9XUklURSl7CisvLwkJCWRldmljZV9wcmludGYoc2MtPmExMF9kZXYsICJyaW50OiAweCUw
OFgsIGltYXNrOiAweCUwOFhcbiIsIHJpbnQsIGltYXNrKTsKKy8vCQl9CisvLwl9CisKKwlpZihy
aW50ICYgTU1DX0ludEVyckJpdCl7CisJCWRldmljZV9wcmludGYoc2MtPmExMF9kZXYsICJlcnJv
ciByaW50OiAweCUwOFhcbiIsIHJpbnQpOworCQlhMTBfcmVxX2VycihzYyk7CisJCXJldHVybjsK
Kwl9CisKKwlpZighY21kLT5kYXRhICYmIChyaW50ICYgTU1DX0NtZERvbmUpKXsKKwkJYTEwX3Jl
cV9vayhzYyk7CisJCXJldHVybjsKKwl9CisKKwlpZihjbWQtPmRhdGEgJiYgKHJpbnQgJiBNTUNf
RGF0YU92ZXIpKXsKKwkJYTEwX3JlcV9vayhzYyk7CisJCXJldHVybjsKKwl9CisKKwlpZihjbWQt
PmRhdGEtPmZsYWdzICYgTU1DX0RBVEFfUkVBRCl7CisJCWludCByZXQgPSBtbWNfdHJhbnNfZGF0
YV9ieV9jcHUoc2MsIGNtZC0+ZGF0YSk7CisJCWlmKHJldCl7CisJCQlkZXZpY2VfcHJpbnRmKHNj
LT5hMTBfZGV2LCAiZGF0YSByZWFkIGVycm9yLCByaW50OiAweCUwOFhcbiIsIHJpbnQpOworCQkJ
YTEwX3JlcV9lcnIoc2MpOworCisJCX0KKwl9CisKKwlpZihjbWQtPmRhdGEtPmZsYWdzICYgTU1D
X0RBVEFfV1JJVEUpeworCQlpZihyaW50ICYgTU1DX1R4RGF0YVJlcSl7CisJCQlpbnQgcmV0ID0g
bW1jX3RyYW5zX2RhdGFfYnlfY3B1KHNjLCBjbWQtPmRhdGEpOworCQkJaWYocmV0KXsKKwkJCQlk
ZXZpY2VfcHJpbnRmKHNjLT5hMTBfZGV2LCAiZGF0YSB3cml0ZSBlcnJvciwgcmludDogMHglMDhY
XG4iLCByaW50KTsKKwkJCQlhMTBfcmVxX2VycihzYyk7CisJCQl9CisJCX0KKwl9CQorfQorCitz
dGF0aWMgaW50CithMTBfbW1jX3JlcXVlc3QoZGV2aWNlX3QgYnVzLCBkZXZpY2VfdCBjaGlsZCwg
c3RydWN0IG1tY19yZXF1ZXN0ICpyZXEpCit7CisJdW5zaWduZWQgaW50IGNtZHJlZyA9IDB4ODAw
MDAwMDA7CisJc3RydWN0IGExMF9tbWNfc29mdGMgKnNjID0gZGV2aWNlX2dldF9zb2Z0YyhidXMp
OworCXN0cnVjdCBtbWNfY29tbWFuZCAqY21kID0gcmVxLT5jbWQ7CisJdWludDMyX3QgaW1hc2sg
PSBNTUNfQ21kRG9uZSB8IE1NQ19JbnRFcnJCaXQ7CisKKwlhMTBfbW1jX2xvY2soc2MpOworCWlm
IChzYy0+YTEwX3JlcSl7CisJCWExMF9tbWNfdW5sb2NrKHNjKTsKKwkJcmV0dXJuIChFQlVTWSk7
CisJfQorCisJc2MtPmExMF9yZXEgPSByZXE7CisKKwlpZiAoY21kLT5vcGNvZGUgPT0gTU1DX0dP
X0lETEVfU1RBVEUpCisJCWNtZHJlZyB8PSBNTUNfU2VuZEluaXRTZXE7CisJaWYgKGNtZC0+Zmxh
Z3MgJiBNTUNfUlNQX1BSRVNFTlQpCisJCWNtZHJlZyB8PSBNTUNfUnNwRXhwOworCWlmIChjbWQt
PmZsYWdzICYgTU1DX1JTUF8xMzYpCisJCWNtZHJlZyB8PSBNTUNfTG9uZ1JzcDsKKwlpZiAoY21k
LT5mbGFncyAmIE1NQ19SU1BfQ1JDKQorCQljbWRyZWcgfD0gTU1DX0NoZWNrUnNwQ1JDOworCisJ
aWYgKGNtZC0+ZGF0YSkgeworCQljbWRyZWcgfD0gTU1DX0RhdGFFeHAgfCBNTUNfV2FpdFByZU92
ZXI7CisJCWltYXNrIHw9IE1NQ19EYXRhT3ZlcjsKKwkJaWYgKGNtZC0+ZGF0YS0+ZmxhZ3MgJiBN
TUNfREFUQV9XUklURSl7CisJCQljbWRyZWcgfD0gTU1DX1dyaXRlOworCQkJaW1hc2sgfD0gTU1D
X1R4RGF0YVJlcTsKKwkJfWVsc2V7CisJCQlpbWFzayB8PSBNTUNfUnhEYXRhUmVxOworCQl9CisK
Ky8vCQlpZiAoZGF0YS0+YmxvY2tzID4gMSkKKy8vCQkJY21kcmVnIHw9IE1NQ19TZW5kQXV0b1N0
b3A7CisKKwkJYTEwX21tY193cml0ZV80KHNjLCBNTUNfQkxLU1osIGNtZC0+ZGF0YS0+bGVuKTsK
KwkJYTEwX21tY193cml0ZV80KHNjLCBNTUNfQkNOVFIsIGNtZC0+ZGF0YS0+bGVuKTsKKworCQkv
KiBDaG9vc2UgYWNjZXNzIGJ5IEFIQiAqLworCQlhMTBfbW1jX3dyaXRlXzQoc2MsIE1NQ19HQ1RS
TCwgYTEwX21tY19yZWFkXzQoc2MsIE1NQ19HQ1RSTCl8MHg4MDAwMDAwMCk7CisJfQorCisJaWYg
KGNtZC0+ZmxhZ3MgJiBNTUNfUlNQX0JVU1kpIHsKKwkJaW1hc2sgfD0gTU1DX0RhdGFUaW1lb3V0
OworCX0KKworCS8qIEVuYWJsZSBpbnRlcnJ1cHRzIGFuZCBzZXQgSU1BU0sgKi8KKwlhMTBfbW1j
X3dyaXRlXzQoc2MsIE1NQ19JTUFTSywgaW1hc2spOworCWExMF9tbWNfaW50X2VuYWJsZShzYyk7
CisKKwlhMTBfbW1jX3dyaXRlXzQoc2MsIE1NQ19DQVJHLCBjbWQtPmFyZyk7CisJYTEwX21tY193
cml0ZV80KHNjLCBNTUNfQ01EUiwgY21kcmVnfGNtZC0+b3Bjb2RlKTsKKwlzYy0+c3RhdGUgPSBB
MTBfTU1DX1NUX1dBSVRfQ01EX0RPTkU7CisKKwlhMTBfbW1jX3VubG9jayhzYyk7CisJcmV0dXJu
IDA7Cit9CisKK3N0YXRpYyBpbnQKK2ExMF9tbWNfcmVhZF9pdmFyKGRldmljZV90IGJ1cywgZGV2
aWNlX3QgY2hpbGQsIGludCB3aGljaCwgCisgICAgdWludHB0cl90ICpyZXN1bHQpCit7CisJc3Ry
dWN0IGExMF9tbWNfc29mdGMgKnNjID0gZGV2aWNlX2dldF9zb2Z0YyhidXMpOworCisJc3dpdGNo
ICh3aGljaCkgeworCWRlZmF1bHQ6CisJCXJldHVybiAoRUlOVkFMKTsKKwljYXNlIE1NQ0JSX0lW
QVJfQlVTX01PREU6CisJCSooaW50ICopcmVzdWx0ID0gc2MtPmExMF9ob3N0Lmlvcy5idXNfbW9k
ZTsKKwkJYnJlYWs7CisJY2FzZSBNTUNCUl9JVkFSX0JVU19XSURUSDoKKwkJKihpbnQgKilyZXN1
bHQgPSBzYy0+YTEwX2hvc3QuaW9zLmJ1c193aWR0aDsKKwkJYnJlYWs7CisJY2FzZSBNTUNCUl9J
VkFSX0NISVBfU0VMRUNUOgorCQkqKGludCAqKXJlc3VsdCA9IHNjLT5hMTBfaG9zdC5pb3MuY2hp
cF9zZWxlY3Q7CisJCWJyZWFrOworCWNhc2UgTU1DQlJfSVZBUl9DTE9DSzoKKwkJKihpbnQgKily
ZXN1bHQgPSBzYy0+YTEwX2hvc3QuaW9zLmNsb2NrOworCQlicmVhazsKKwljYXNlIE1NQ0JSX0lW
QVJfRl9NSU46CisJCSooaW50ICopcmVzdWx0ID0gc2MtPmExMF9ob3N0LmZfbWluOworCQlicmVh
azsKKwljYXNlIE1NQ0JSX0lWQVJfRl9NQVg6CisJCSooaW50ICopcmVzdWx0ID0gc2MtPmExMF9o
b3N0LmZfbWF4OworCQlicmVhazsKKwljYXNlIE1NQ0JSX0lWQVJfSE9TVF9PQ1I6CisJCSooaW50
ICopcmVzdWx0ID0gc2MtPmExMF9ob3N0Lmhvc3Rfb2NyOworCQlicmVhazsKKwljYXNlIE1NQ0JS
X0lWQVJfTU9ERToKKwkJKihpbnQgKilyZXN1bHQgPSBzYy0+YTEwX2hvc3QubW9kZTsKKwkJYnJl
YWs7CisJY2FzZSBNTUNCUl9JVkFSX09DUjoKKwkJKihpbnQgKilyZXN1bHQgPSBzYy0+YTEwX2hv
c3Qub2NyOworCQlicmVhazsKKwljYXNlIE1NQ0JSX0lWQVJfUE9XRVJfTU9ERToKKwkJKihpbnQg
KilyZXN1bHQgPSBzYy0+YTEwX2hvc3QuaW9zLnBvd2VyX21vZGU7CisJCWJyZWFrOworCWNhc2Ug
TU1DQlJfSVZBUl9WREQ6CisJCSooaW50ICopcmVzdWx0ID0gc2MtPmExMF9ob3N0Lmlvcy52ZGQ7
CisJCWJyZWFrOworCWNhc2UgTU1DQlJfSVZBUl9DQVBTOgorCQkqKGludCAqKXJlc3VsdCA9IHNj
LT5hMTBfaG9zdC5jYXBzOworCQlicmVhazsKKwljYXNlIE1NQ0JSX0lWQVJfTUFYX0RBVEE6CisJ
CSooaW50ICopcmVzdWx0ID0gMTsKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuICgwKTsKK30KKwor
c3RhdGljIGludAorYTEwX21tY193cml0ZV9pdmFyKGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hp
bGQsIGludCB3aGljaCwKKyAgICB1aW50cHRyX3QgdmFsdWUpCit7CisJc3RydWN0IGExMF9tbWNf
c29mdGMgKnNjID0gZGV2aWNlX2dldF9zb2Z0YyhidXMpOworCisJc3dpdGNoICh3aGljaCkgewor
CWRlZmF1bHQ6CisJCXJldHVybiAoRUlOVkFMKTsKKwljYXNlIE1NQ0JSX0lWQVJfQlVTX01PREU6
CisJCXNjLT5hMTBfaG9zdC5pb3MuYnVzX21vZGUgPSB2YWx1ZTsKKwkJYnJlYWs7CisJY2FzZSBN
TUNCUl9JVkFSX0JVU19XSURUSDoKKwkJc2MtPmExMF9ob3N0Lmlvcy5idXNfd2lkdGggPSB2YWx1
ZTsKKwkJYnJlYWs7CisJY2FzZSBNTUNCUl9JVkFSX0NISVBfU0VMRUNUOgorCQlzYy0+YTEwX2hv
c3QuaW9zLmNoaXBfc2VsZWN0ID0gdmFsdWU7CisJCWJyZWFrOworCWNhc2UgTU1DQlJfSVZBUl9D
TE9DSzoKKwkJc2MtPmExMF9ob3N0Lmlvcy5jbG9jayA9IHZhbHVlOworCQlicmVhazsKKwljYXNl
IE1NQ0JSX0lWQVJfTU9ERToKKwkJc2MtPmExMF9ob3N0Lm1vZGUgPSB2YWx1ZTsKKwkJYnJlYWs7
CisJY2FzZSBNTUNCUl9JVkFSX09DUjoKKwkJc2MtPmExMF9ob3N0Lm9jciA9IHZhbHVlOworCQli
cmVhazsKKwljYXNlIE1NQ0JSX0lWQVJfUE9XRVJfTU9ERToKKwkJc2MtPmExMF9ob3N0Lmlvcy5w
b3dlcl9tb2RlID0gdmFsdWU7CisJCWJyZWFrOworCWNhc2UgTU1DQlJfSVZBUl9WREQ6CisJCXNj
LT5hMTBfaG9zdC5pb3MudmRkID0gdmFsdWU7CisJCWJyZWFrOworCS8qIFRoZXNlIGFyZSByZWFk
LW9ubHkgKi8KKwljYXNlIE1NQ0JSX0lWQVJfQ0FQUzoKKwljYXNlIE1NQ0JSX0lWQVJfSE9TVF9P
Q1I6CisJY2FzZSBNTUNCUl9JVkFSX0ZfTUlOOgorCWNhc2UgTU1DQlJfSVZBUl9GX01BWDoKKwlj
YXNlIE1NQ0JSX0lWQVJfTUFYX0RBVEE6CisJCXJldHVybiAoRUlOVkFMKTsKKwl9CisJcmV0dXJu
ICgwKTsKK30KKworc3RhdGljIGludAorYTEwX21tY191cGRhdGVfaW9zKGRldmljZV90IGJ1cywg
ZGV2aWNlX3QgY2hpbGQpCit7CisJc3RydWN0IGExMF9tbWNfc29mdGMgKnNjID0gZGV2aWNlX2dl
dF9zb2Z0YyhidXMpOworCXN0cnVjdCBtbWNfaW9zICppb3MgPSAmc2MtPmExMF9ob3N0LmlvczsK
Kwl1bnNpZ25lZCBpbnQgY2xrZGl2ID0gMDsKKworCS8qIENoYW5nZSBjbG9jayBmaXJzdCAqLwor
CWNsa2RpdiA9ICgweDA0ZGQxZTAwICsgKGlvcy0+Y2xvY2s+PjEpKS9pb3MtPmNsb2NrLzI7CisJ
aWYgKGlvcy0+Y2xvY2spIHsKKwkJaWYgKGExMF9tbWNfY29uZmlnX2Nsb2NrKHNjLCBjbGtkaXYp
KSB7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwkvKiBTZXQgdGhlIGJ1cyB3aWR0aCAqLwor
CXN3aXRjaCAoaW9zLT5idXNfd2lkdGgpIHsKKwkJY2FzZSBidXNfd2lkdGhfMToKKwkJCWExMF9t
bWNfd3JpdGVfNChzYywgTU1DX1dJRFRILCBNTUNfV0lEVEgxKTsKKwkJCWJyZWFrOworCQljYXNl
IGJ1c193aWR0aF80OgorCQkJYTEwX21tY193cml0ZV80KHNjLCBNTUNfV0lEVEgsIE1NQ19XSURU
SDQpOworCQkJYnJlYWs7CisJCWNhc2UgYnVzX3dpZHRoXzg6CisJCQlhMTBfbW1jX3dyaXRlXzQo
c2MsIE1NQ19XSURUSCwgTU1DX1dJRFRIOCk7CisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gKDAp
OworfQorCitzdGF0aWMgaW50CithMTBfbW1jX2dldF9ybyhkZXZpY2VfdCBidXMsIGRldmljZV90
IGNoaWxkKQoreworCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBpbnQKK2ExMF9tbWNfYWNxdWly
ZV9ob3N0KGRldmljZV90IGJ1cywgZGV2aWNlX3QgY2hpbGQpCit7CisJc3RydWN0IGExMF9tbWNf
c29mdGMgKnNjID0gZGV2aWNlX2dldF9zb2Z0YyhidXMpOworCWludCBlcnJvciA9IDA7CisKKwlh
MTBfbW1jX2xvY2soc2MpOworCXdoaWxlIChzYy0+YTEwX2J1c19idXN5KQorCQllcnJvciA9IG10
eF9zbGVlcChzYywgJnNjLT5hMTBfbXR4LCBQWkVSTywgIm1tY2FoIiwgMCk7CisKKwlzYy0+YTEw
X2J1c19idXN5Kys7CisJYTEwX21tY191bmxvY2soc2MpOworCXJldHVybiAoZXJyb3IpOworfQor
CitzdGF0aWMgaW50CithMTBfbW1jX3JlbGVhc2VfaG9zdChkZXZpY2VfdCBidXMsIGRldmljZV90
IGNoaWxkKQoreworCXN0cnVjdCBhMTBfbW1jX3NvZnRjICpzYyA9IGRldmljZV9nZXRfc29mdGMo
YnVzKTsKKworCWExMF9tbWNfbG9jayhzYyk7CisJc2MtPmExMF9idXNfYnVzeS0tOworCXdha2V1
cChzYyk7CisJYTEwX21tY191bmxvY2soc2MpOworCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBk
ZXZpY2VfbWV0aG9kX3QgYTEwX21tY19tZXRob2RzW10gPSB7CisJLyogRGV2aWNlIGludGVyZmFj
ZSAqLworCURFVk1FVEhPRChkZXZpY2VfcHJvYmUsCQlhMTBfbW1jX3Byb2JlKSwKKwlERVZNRVRI
T0QoZGV2aWNlX2F0dGFjaCwJYTEwX21tY19hdHRhY2gpLAorCURFVk1FVEhPRChkZXZpY2VfZGV0
YWNoLAlhMTBfbW1jX2RldGFjaCksCisKKwkvKiBCdXMgaW50ZXJmYWNlICovCisJREVWTUVUSE9E
KGJ1c19yZWFkX2l2YXIsCWExMF9tbWNfcmVhZF9pdmFyKSwKKwlERVZNRVRIT0QoYnVzX3dyaXRl
X2l2YXIsCWExMF9tbWNfd3JpdGVfaXZhciksCisJREVWTUVUSE9EKGJ1c19wcmludF9jaGlsZCwJ
YnVzX2dlbmVyaWNfcHJpbnRfY2hpbGQpLAorCisJLyogTU1DIGJyaWRnZSBpbnRlcmZhY2UgKi8K
KwlERVZNRVRIT0QobW1jYnJfdXBkYXRlX2lvcywJYTEwX21tY191cGRhdGVfaW9zKSwKKwlERVZN
RVRIT0QobW1jYnJfcmVxdWVzdCwJYTEwX21tY19yZXF1ZXN0KSwKKwlERVZNRVRIT0QobW1jYnJf
Z2V0X3JvLAkJYTEwX21tY19nZXRfcm8pLAorCURFVk1FVEhPRChtbWNicl9hY3F1aXJlX2hvc3Qs
CWExMF9tbWNfYWNxdWlyZV9ob3N0KSwKKwlERVZNRVRIT0QobW1jYnJfcmVsZWFzZV9ob3N0LAlh
MTBfbW1jX3JlbGVhc2VfaG9zdCksCisKKwl7IDAsIDAgfQorfTsKKworc3RhdGljIGRldmNsYXNz
X3QgYTEwX21tY19kZXZjbGFzczsKKworc3RhdGljIGRyaXZlcl90IGExMF9tbWNfZHJpdmVyID0g
eworCSJhMTBfbW1jIiwKKwlhMTBfbW1jX21ldGhvZHMsCisJc2l6ZW9mKHN0cnVjdCBhMTBfbW1j
X3NvZnRjKSwKK307CisKK0RSSVZFUl9NT0RVTEUoYTEwX21tYywgc2ltcGxlYnVzLCBhMTBfbW1j
X2RyaXZlciwgYTEwX21tY19kZXZjbGFzcywgMCwgMCk7CisKSW5kZXg6IHN5cy9hcm0vYWxsd2lu
bmVyL2ExMF9tbWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvYXJtL2FsbHdpbm5lci9hMTBfbW1jLmgJ
KHJldmlzaW9uIDApCisrKyBzeXMvYXJtL2FsbHdpbm5lci9hMTBfbW1jLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxNzcgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDEzIEFsZXhhbmRl
ciBGZWRvcm92IDxhbGV4YW5kZXIuZmVkb3JvdkBydGxzZXJ2aWNlLmNvbT4KKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VD
SCBEQU1BR0UuCisgKgorICovCisKKyNpZm5kZWYgX0ExMF9NTUNfSF8KKyNkZWZpbmUgX0ExMF9N
TUNfSF8KKworI2RlZmluZSBNTUNfR0NUUkwgICAgICAgICAgICAgIDB4MDAgICAgICAgICAgICAg
IC8vIFNNQyBHbG9iYWwgQ29udHJvbCBSZWdpc3RlcgorI2RlZmluZSBNTUNfQ0xLQ1IgICAgICAg
ICAgICAgIDB4MDQgICAgICAgICAgICAgIC8vIFNNQyBDbG9jayBDb250cm9sIFJlZ2lzdGVyCisj
ZGVmaW5lIE1NQ19UTU9VVCAgICAgICAgICAgICAgMHgwOCAgICAgICAgICAgICAgLy8gU01DIFRp
bWUgT3V0IFJlZ2lzdGVyCisjZGVmaW5lIE1NQ19XSURUSCAgICAgICAgICAgICAgMHgwQyAgICAg
ICAgICAgICAgLy8gU01DIEJ1cyBXaWR0aCBSZWdpc3RlcgorI2RlZmluZSBNTUNfQkxLU1ogICAg
ICAgICAgICAgIDB4MTAgICAgICAgICAgICAgIC8vIFNNQyBCbG9jayBTaXplIFJlZ2lzdGVyCisj
ZGVmaW5lIE1NQ19CQ05UUiAgICAgICAgICAgICAgMHgxNCAgICAgICAgICAgICAgLy8gU01DIEJ5
dGUgQ291bnQgUmVnaXN0ZXIKKyNkZWZpbmUgTU1DX0NNRFIgICAgICAgICAgICAgICAweDE4ICAg
ICAgICAgICAgICAvLyBTTUMgQ29tbWFuZCBSZWdpc3RlcgorI2RlZmluZSBNTUNfQ0FSRyAgICAg
ICAgICAgICAgIDB4MUMgICAgICAgICAgICAgIC8vIFNNQyBBcmd1bWVudCBSZWdpc3RlcgorI2Rl
ZmluZSBNTUNfUkVTUDAgICAgICAgICAgICAgIDB4MjAgICAgICAgICAgICAgIC8vIFNNQyBSZXNw
b25zZSBSZWdpc3RlciAwCisjZGVmaW5lIE1NQ19SRVNQMSAgICAgICAgICAgICAgMHgyNCAgICAg
ICAgICAgICAgLy8gU01DIFJlc3BvbnNlIFJlZ2lzdGVyIDEKKyNkZWZpbmUgTU1DX1JFU1AyICAg
ICAgICAgICAgICAweDI4ICAgICAgICAgICAgICAvLyBTTUMgUmVzcG9uc2UgUmVnaXN0ZXIgMgor
I2RlZmluZSBNTUNfUkVTUDMgICAgICAgICAgICAgIDB4MkMgICAgICAgICAgICAgIC8vIFNNQyBS
ZXNwb25zZSBSZWdpc3RlciAzCisjZGVmaW5lIE1NQ19JTUFTSyAgICAgICAgICAgICAgMHgzMCAg
ICAgICAgICAgICAgLy8gU01DIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyCisjZGVmaW5lIE1NQ19N
SVNUQSAgICAgICAgICAgICAgMHgzNCAgICAgICAgICAgICAgLy8gU01DIE1hc2tlZCBJbnRlcnJ1
cHQgU3RhdHVzIFJlZ2lzdGVyCisjZGVmaW5lIE1NQ19SSU5UUiAgICAgICAgICAgICAgMHgzOCAg
ICAgICAgICAgICAgLy8gU01DIFJhdyBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyCisjZGVmaW5l
IE1NQ19TVEFTICAgICAgICAgICAgICAgMHgzQyAgICAgICAgICAgICAgLy8gU01DIFN0YXR1cyBS
ZWdpc3RlcgorI2RlZmluZSBNTUNfRlRSR0wgICAgICAgICAgICAgIDB4NDAgICAgICAgICAgICAg
IC8vIFNNQyBGSUZPIFRocmVzaG9sZCBXYXRlcm1hcmsgUmVnaXN0ZXIKKyNkZWZpbmUgTU1DX0ZV
TlMgICAgICAgICAgICAgICAweDQ0ICAgICAgICAgICAgICAvLyBTTUMgRnVuY3Rpb24gU2VsZWN0
IFJlZ2lzdGVyCisjZGVmaW5lIE1NQ19DQkNSICAgICAgICAgICAgICAgMHg0OCAgICAgICAgICAg
ICAgLy8gU01DIENJVSBCeXRlIENvdW50IFJlZ2lzdGVyCisjZGVmaW5lIE1NQ19CQkNSICAgICAg
ICAgICAgICAgMHg0QyAgICAgICAgICAgICAgLy8gU01DIEJJVSBCeXRlIENvdW50IFJlZ2lzdGVy
CisjZGVmaW5lIE1NQ19EQkdDICAgICAgICAgICAgICAgMHg1MCAgICAgICAgICAgICAgLy8gU01D
IERlYnVnIEVuYWJsZSBSZWdpc3RlcgorI2RlZmluZSBNTUNfRE1BQyAgICAgICAgICAgICAgIDB4
ODAgICAgICAgICAgICAgIC8vIFNNQyBJRE1BQyBDb250cm9sIFJlZ2lzdGVyCisjZGVmaW5lIE1N
Q19ETEJBICAgICAgICAgICAgICAgMHg4NCAgICAgICAgICAgICAgLy8gU01DIElETUFDIERlc2Ny
aXB0b3IgTGlzdCBCYXNlIEFkZHJlc3MgUmVnaXN0ZXIKKyNkZWZpbmUgTU1DX0lEU1QgICAgICAg
ICAgICAgICAweDg4ICAgICAgICAgICAgICAvLyBTTUMgSURNQUMgU3RhdHVzIFJlZ2lzdGVyCisj
ZGVmaW5lIE1NQ19JRElFICAgICAgICAgICAgICAgMHg4QyAgICAgICAgICAgICAgLy8gU01DIElE
TUFDIEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIKKyNkZWZpbmUgTU1DX0NIREEgICAgICAgICAg
ICAgICAweDkwCisjZGVmaW5lIE1NQ19DQkRBICAgICAgICAgICAgICAgMHg5NAorI2RlZmluZSBN
TUNfRklGTyAgICAgICAgICAgICAgIDB4MTAwICAgICAgICAgICAgIC8vIFNNQyBGSUZPIEFjY2Vz
cyBBZGRyZXNzCisKKy8qIE1NQ19HQ1RSTCAqLworI2RlZmluZSBNTUNfU09GVF9SRVNFVF9CICAg
ICAgICAgICAgICAgICgxIDw8ICAwKQorI2RlZmluZSBNTUNfRklGT19SRVNFVF9CICAgICAgICAg
ICAgICAgICgxIDw8ICAxKQorI2RlZmluZSBNTUNfRE1BX1JFU0VUX0IgICAgICAgICAgICAgICAg
ICgxIDw8ICAyKQorI2RlZmluZSBNTUNfSU5UX0VOQUJMRV9CICAgICAgICAgICAgICAgICAgICgx
IDw8IDQpCisjZGVmaW5lIE1NQ19ETUFfRU5BQkxFX0IgICAgICAgICAgICAgICAgICAgKDEgPDwg
NSkKKyNkZWZpbmUgTU1DX0RFQk9VTkNFX0VOQUJMRV9CICAgICAgICAgICAgICAoMSA8PCA4KQor
I2RlZmluZSBNTUNfUG9zZWRnZUxhdGNoRGF0YSAgICAgICAgICgxIDw8IDkpCisjZGVmaW5lIE1N
Q19OZWdlZGdlTGF0Y2hEYXRhICAgICAgICAgKDAgPDwgOSkKKyNkZWZpbmUgTU1DX0REUl9NT0RF
ICAgICAgICAgICAgICAgICAoMSA8PCAxMCkKKyNkZWZpbmUgTU1DX0FDQ0VTU19CWV9BSEIgICAg
ICAgICAgICAoMSA8PCAzMSkKKyNkZWZpbmUgTU1DX0FDQ0VTU19CWV9ETUEgICAgICAgICAgICAo
MCA8PCAzMSkKKworLyogQ0xLQ1IgKi8KKyNkZWZpbmUgTU1DX0NBUkRfQ0xLX09OICAgICAgICAg
ICAgICAgICgxIDw8IDE2KQorI2RlZmluZSBNTUNfTE9XX1BPV0VSX09OICAgICAgICAgICAgICAg
KDEgPDwgMTcpCisKKy8qIE1NQ19XSURUSCAqLworI2RlZmluZSBNTUNfV0lEVEgxICAgICAgICAg
ICAgICAgICAgICgwKQorI2RlZmluZSBNTUNfV0lEVEg0ICAgICAgICAgICAgICAgICAgICgxKQor
I2RlZmluZSBNTUNfV0lEVEg4ICAgICAgICAgICAgICAgICAgICgyKQorCisvKiBNTUNfQ01EUiAq
LworI2RlZmluZSBNTUNfUnNwRXhwICAgICAgICAgICAgICAgICAgICgxIDw8IDYpICAvLzB4NDAK
KyNkZWZpbmUgTU1DX0xvbmdSc3AgICAgICAgICAgICAgICAgICAoMSA8PCA3KSAgLy8weDgwCisj
ZGVmaW5lIE1NQ19DaGVja1JzcENSQyAgICAgICAgICAgICAgKDEgPDwgOCkgIC8vMHgxMDAKKyNk
ZWZpbmUgTU1DX0RhdGFFeHAgICAgICAgICAgICAgICAgICAoMSA8PCA5KSAgLy8weDIwMAorI2Rl
ZmluZSBNTUNfUmVhZCAgICAgICAgICAgICAgICAgICAgICgwIDw8IDEwKSAvLzB4MDAwCisjZGVm
aW5lIE1NQ19Xcml0ZSAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTApIC8vMHg0MDAKKyNkZWZp
bmUgTU1DX0Jsb2NrbW9kICAgICAgICAgICAgICAgICAoMCA8PCAxMSkgLy8weDAwMAorI2RlZmlu
ZSBNTUNfU2VxbW9kICAgICAgICAgICAgICAgICAgICgxIDw8IDExKSAvLzB4ODAwCisjZGVmaW5l
IE1NQ19TZW5kQXV0b1N0b3AgICAgICAgICAgICAgKDEgPDwgMTIpIC8vMHgxMDAwCisjZGVmaW5l
IE1NQ19XYWl0UHJlT3ZlciAgICAgICAgICAgICAgKDEgPDwgMTMpIC8vMHgyMDAwCisjZGVmaW5l
IE1NQ19TdG9wQWJvcnRDTUQgICAgICAgICAgICAgKDEgPDwgMTQpIC8vMHg0MDAwCisjZGVmaW5l
IE1NQ19TZW5kSW5pdFNlcSAgICAgICAgICAgICAgKDEgPDwgMTUpIC8vMHg4MDAwCisjZGVmaW5l
IE1NQ19VUENMS09ubHkgICAgICAgICAgICAgICAgKDEgPDwgMjEpIC8vMHgyMDAwMDAKKyNkZWZp
bmUgTU1DX1JkQ0VBVEFEZXYgICAgICAgICAgICAgICAoMSA8PCAyMikgLy8weDQwMDAwMAorI2Rl
ZmluZSBNTUNfQ0NTRXhwICAgICAgICAgICAgICAgICAgICgxIDw8IDIzKSAvLzB4ODAwMDAwCisj
ZGVmaW5lIE1NQ19FbmJCb290ICAgICAgICAgICAgICAgICAgKDEgPDwgMjQpIC8vMHgxMDAwMDAw
CisjZGVmaW5lIE1NQ19BbHRCb290T3B0ICAgICAgICAgICAgICAgKDEgPDwgMjUpIC8vMHgyMDAw
MDAwCisjZGVmaW5lIE1NQ19NYW5kQm9vdE9wdCAgICAgICAgICAgICAgKDAgPDwgMjUpIC8vMHgw
MDAwMDAwCisjZGVmaW5lIE1NQ19Cb290QUNLRXhwICAgICAgICAgICAgICAgKDEgPDwgMjYpIC8v
MHg0MDAwMDAwCisjZGVmaW5lIE1NQ19EaXNhYmxlQm9vdCAgICAgICAgICAgICAgKDEgPDwgMjcp
IC8vMHg4MDAwMDAwCisjZGVmaW5lIE1NQ19Wb2xTd2l0Y2ggICAgICAgICAgICAgICAgKDEgPDwg
MjgpIC8vMHgxMDAwMDAwMAorI2RlZmluZSBNTUNfU3RhcnQgICAgICAgICAgICAgICAgICAgICgx
IDw8IDMxKSAvLzB4ODAwMDAwMDAKKworLyogU3RydWN0IGZvciBJbnRycnJ1cHQgSW5mb3JtYXRp
b24gKi8KKyNkZWZpbmUgTU1DX1Jlc3BFcnIgICAgICAgICAgICAgICAgICAoMSA8PCAxKSAgLy8w
eDIKKyNkZWZpbmUgTU1DX0NtZERvbmUgICAgICAgICAgICAgICAgICAoMSA8PCAyKSAgLy8weDQK
KyNkZWZpbmUgTU1DX0RhdGFPdmVyICAgICAgICAgICAgICAgICAoMSA8PCAzKSAgLy8weDgKKyNk
ZWZpbmUgTU1DX1R4RGF0YVJlcSAgICAgICAgICAgICAgICAoMSA8PCA0KSAgLy8weDEwCisjZGVm
aW5lIE1NQ19SeERhdGFSZXEgICAgICAgICAgICAgICAgKDEgPDwgNSkgIC8vMHgyMAorI2RlZmlu
ZSBNTUNfUmVzcENSQ0VyciAgICAgICAgICAgICAgICgxIDw8IDYpICAvLzB4NDAKKyNkZWZpbmUg
TU1DX0RhdGFDUkNFcnIgICAgICAgICAgICAgICAoMSA8PCA3KSAgLy8weDgwCisjZGVmaW5lIE1N
Q19SZXNwVGltZW91dCAgICAgICAgICAgICAgKDEgPDwgOCkgIC8vMHgxMDAKKyNkZWZpbmUgTU1D
X0FDS1JjdiAgICAgICAgICAgICAgICAgICAoMSA8PCA4KSAgLy8weDEwMAorI2RlZmluZSBNTUNf
RGF0YVRpbWVvdXQgICAgICAgICAgICAgICgxIDw8IDkpICAvLzB4MjAwCisjZGVmaW5lIE1NQ19C
b290U3RhcnQgICAgICAgICAgICAgICAgKDEgPDwgOSkgIC8vMHgyMDAKKyNkZWZpbmUgTU1DX0Rh
dGFTdGFydmUgICAgICAgICAgICAgICAoMSA8PCAxMCkgLy8weDQwMAorI2RlZmluZSBNTUNfVm9s
Q2hnRG9uZSAgICAgICAgICAgICAgICgxIDw8IDEwKSAvLzB4NDAwCisjZGVmaW5lIE1NQ19GSUZP
UnVuRXJyICAgICAgICAgICAgICAgKDEgPDwgMTEpIC8vMHg4MDAKKyNkZWZpbmUgTU1DX0hhcmRX
TG9ja2VkICAgICAgICAgICAgICAoMSA8PCAxMikgLy8weDEwMDAKKyNkZWZpbmUgTU1DX1N0YXJ0
Qml0RXJyICAgICAgICAgICAgICAoMSA8PCAxMykgLy8weDIwMDAKKyNkZWZpbmUgTU1DX0F1dG9D
TUREb25lICAgICAgICAgICAgICAoMSA8PCAxNCkgLy8weDQwMDAKKyNkZWZpbmUgTU1DX0VuZEJp
dEVyciAgICAgICAgICAgICAgICAoMSA8PCAxNSkgLy8weDgwMDAKKyNkZWZpbmUgTU1DX1NESU9J
bnQgICAgICAgICAgICAgICAgICAoMSA8PCAxNikgLy8weDEwMDAwCisjZGVmaW5lIE1NQ19DYXJk
SW5zZXJ0ICAgICAgICAgICAgICAgKDEgPDwgMzApIC8vMHg0MDAwMDAwMAorI2RlZmluZSBNTUNf
Q2FyZFJlbW92ZSAgICAgICAgICAgICAgICgxIDw8IDMxKSAvLzB4ODAwMDAwMDAKKyNkZWZpbmUg
TU1DX0ludEVyckJpdCAgICAgICAgICAgICAgICAoTU1DX1Jlc3BFcnIgfCBNTUNfUmVzcENSQ0Vy
ciB8IE1NQ19EYXRhQ1JDRXJyIHwgTU1DX1Jlc3BUaW1lb3V0IHwgTU1DX0RhdGFUaW1lb3V0ICBc
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNTUNfRklGT1J1bkVy
ciB8IE1NQ19IYXJkV0xvY2tlZCB8IE1NQ19TdGFydEJpdEVyciB8IE1NQ19FbmRCaXRFcnIpICAv
LzB4YmZjMgorLyogc3RhdHVzICovCisjZGVmaW5lIE1NQ19SWFdMRmxhZyAgICAgICAgICAgICAg
ICAgKDEgPDwgMCkKKyNkZWZpbmUgTU1DX1RYV0xGbGFnICAgICAgICAgICAgICAgICAoMSA8PCAx
KQorI2RlZmluZSBNTUNfRklGT0VtcHR5ICAgICAgICAgICAgICAgICgxIDw8IDIpCisjZGVmaW5l
IE1NQ19GSUZPRnVsbCAgICAgICAgICAgICAgICAgKDEgPDwgMykKKyNkZWZpbmUgTU1DX0NhcmRQ
cmVzZW50ICAgICAgICAgICAgICAoMSA8PCA4KQorI2RlZmluZSBNTUNfQ2FyZERhdGFCdXN5ICAg
ICAgICAgICAgICgxIDw8IDkpCisjZGVmaW5lIE1NQ19EYXRhRlNNQnVzeSAgICAgICAgICAgICAg
KDEgPDwgMTApCisjZGVmaW5lIE1NQ19ETUFSZXEgICAgICAgICAgICAgICAgICAgKDEgPDwgMzEp
CisjZGVmaW5lIE1NQ19GSUZPX1NJWkUgICAgICAgICAgICAgICAgKDE2KQorLyogRnVuY3Rpb24g
c2VsZWN0ICovCisjZGVmaW5lIE1NQ19DRUFUQU9uICAgICAgICAgICAgICAgICAgKDB4Y2VhYVU8
PCAxNikKKyNkZWZpbmUgTU1DX1NlbmRJcnFSc3AgICAgICAgICAgICAgICAoMSA8PCAwKQorI2Rl
ZmluZSBNTUNfU0RJT1JkV2FpdCAgICAgICAgICAgICAgICgxIDw8IDEpCisjZGVmaW5lIE1NQ19B
YnRSZERhdGEgICAgICAgICAgICAgICAgKDEgPDwgMikKKyNkZWZpbmUgTU1DX1NlbmRDQ1NEICAg
ICAgICAgICAgICAgICAoMSA8PCA4KQorI2RlZmluZSBNTUNfU2VuZEF1dG9TdG9wQ0NTRCAgICAg
ICAgICgxIDw8IDkpCisjZGVmaW5lIE1NQ19DRUFUQURldkludEVuYiAgICAgICAgICAgKDEgPDwg
MTApCisvKiBJRE1BIGNvbnRyb2xsZXIgYnVzIG1vZCBiaXQgZmllbGQgKi8KKyNkZWZpbmUgTU1D
X0lETUFDU29mdFJTVCAgICAgICAgICAgICAoMSA8PCAwKQorI2RlZmluZSBNTUNfSURNQUNGaXhC
dXJzdCAgICAgICAgICAgICgxIDw8IDEpCisjZGVmaW5lIE1NQ19JRE1BQ0lETUFPbiAgICAgICAg
ICAgICAgKDEgPDwgNykKKyNkZWZpbmUgTU1DX0lETUFDUmVmZXRjaERFUyAgICAgICAgICAoMSA8
PCAzMSkKKy8qIElETUEgc3RhdHVzIGJpdCBmaWVsZCAqLworI2RlZmluZSBNTUNfSURNQUNUcmFu
c21pdEludCAgICAgICAgICgxIDw8IDApCisjZGVmaW5lIE1NQ19JRE1BQ1JlY2VpdmVJbnQgICAg
ICAgICAgKDEgPDwgMSkKKyNkZWZpbmUgTU1DX0lETUFDRmF0YWxCdXNFcnIgICAgICAgICAoMSA8
PCAyKQorI2RlZmluZSBNTUNfSURNQUNEZXNJbnZhbGlkICAgICAgICAgICgxIDw8IDQpCisjZGVm
aW5lIE1NQ19JRE1BQ0NhcmRFcnJTdW0gICAgICAgICAgKDEgPDwgNSkKKyNkZWZpbmUgTU1DX0lE
TUFDTm9ybWFsSW50U3VtICAgICAgICAoMSA8PCA4KQorI2RlZmluZSBNTUNfSURNQUNBYm5vcm1h
bEludFN1bSAgICAgICgxIDw8IDkpCisjZGVmaW5lIE1NQ19JRE1BQ0hvc3RBYnRJblR4ICAgICAg
ICAgKDEgPDwgMTApCisjZGVmaW5lIE1NQ19JRE1BQ0hvc3RBYnRJblJ4ICAgICAgICAgKDEgPDwg
MTApCisjZGVmaW5lIE1NQ19JRE1BQ0lkbGUgICAgICAgICAgICAgICAgKDAgPDwgMTMpCisjZGVm
aW5lIE1NQ19JRE1BQ1N1c3BlbmQgICAgICAgICAgICAgKDEgPDwgMTMpCisjZGVmaW5lIE1NQ19J
RE1BQ0RFU0NSZCAgICAgICAgICAgICAgKDB4MlU8PCAxMykKKyNkZWZpbmUgTU1DX0lETUFDREVT
Q0NoZWNrICAgICAgICAgICAoMHgzVTw8IDEzKQorI2RlZmluZSBNTUNfSURNQUNSZFJlcVdhaXQg
ICAgICAgICAgICgweDRVPDwgMTMpCisjZGVmaW5lIE1NQ19JRE1BQ1dyUmVxV2FpdCAgICAgICAg
ICAgKDB4NVU8PCAxMykKKyNkZWZpbmUgTU1DX0lETUFDUmQgICAgICAgICAgICAgICAgICAoMHg2
VTw8IDEzKQorI2RlZmluZSBNTUNfSURNQUNXciAgICAgICAgICAgICAgICAgICgweDdVPDwgMTMp
CisjZGVmaW5lIE1NQ19JRE1BQ0RFU0NDbG9zZSAgICAgICAgICAgKDB4OFU8PCAxMykKKworI2Rl
ZmluZSBNTUNfSURNQV9PVkVSICAgICAgIChNTUNfSURNQUNUcmFuc21pdEludHxNTUNfSURNQUNS
ZWNlaXZlSW50fE1NQ19JRE1BQ05vcm1hbEludFN1bSkKKyNkZWZpbmUgTU1DX0lETUFfRVJSICAg
ICAgICAoTU1DX0lETUFDRmF0YWxCdXNFcnJ8TU1DX0lETUFDRGVzSW52YWxpZHxNTUNfSURNQUND
YXJkRXJyU3VtfE1NQ19JRE1BQ0Fibm9ybWFsSW50U3VtKQorCisjZW5kaWYgLyogX0ExMF9NTUNf
SF8gKi8KKwpJbmRleDogc3lzL2FybS9hbGx3aW5uZXIvZmlsZXMuYTEwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHN5cy9hcm0vYWxsd2lubmVyL2ZpbGVzLmExMAkocmV2aXNpb24gMjUyMzEwKQorKysgc3lzL2Fy
bS9hbGx3aW5uZXIvZmlsZXMuYTEwCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw2ICsxMiw3IEBACiBh
cm0vYWxsd2lubmVyL2ExMF9jbGsuYwkJCXN0YW5kYXJkCiBhcm0vYWxsd2lubmVyL2ExMF9ncGlv
LmMJCW9wdGlvbmFsCWdwaW8KIGFybS9hbGx3aW5uZXIvYTEwX2VoY2kuYwkJb3B0aW9uYWwJZWhj
aQorYXJtL2FsbHdpbm5lci9hMTBfbW1jLmMJCQlvcHRpb25hbAltbWMKIGFybS9hbGx3aW5uZXIv
YTEwX3dkb2cuYwkJc3RhbmRhcmQKIGFybS9hbGx3aW5uZXIvdGltZXIuYwkJCXN0YW5kYXJkCiBh
cm0vYWxsd2lubmVyL2FpbnRjLmMJCQlzdGFuZGFyZApJbmRleDogc3lzL2FybS9hbGx3aW5uZXIv
YTEwX2Nsay5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9hcm0vYWxsd2lubmVyL2ExMF9jbGsuYwkocmV2
aXNpb24gMjUyMzEwKQorKysgc3lzL2FybS9hbGx3aW5uZXIvYTEwX2Nsay5jCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzAsMyArMTcwLDM2IEBACiAJcmV0dXJuICgwKTsKIH0KIAoraW50CithMTBfY2xr
X21tY19hY3RpdmF0ZSh2b2lkKQoreworCXN0cnVjdCBhMTBfY2NtX3NvZnRjICpzYyA9IGExMF9j
Y21fc2M7CisJdWludDMyX3QgcmVnX3ZhbHVlOworCXVuc2lnbmVkIGludCBwbGw1X2NsazsKKwl1
bnNpZ25lZCBpbnQgZGl2aWRlcjsKKwl1bnNpZ25lZCBpbnQgbiwgaywgcDsKKworCWlmIChzYyA9
PSBOVUxMKQorCQlyZXR1cm4gRU5YSU87CisKKwkvKiBHYXRpbmcgQUhCIGNsb2NrIGZvciBTRE1N
QzAgKi8KKwlyZWdfdmFsdWUgPSBjY21fcmVhZF80KHNjLCBDQ01fQUhCX0dBVElORzApOworCXJl
Z192YWx1ZSB8PSBDQ01fQUhCX0dBVElOR19TRE1NQzA7CisJY2NtX3dyaXRlXzQoc2MsIENDTV9B
SEJfR0FUSU5HMCwgcmVnX3ZhbHVlKTsKKworCS8qIGNvbmZpZyBtb2QgY2xvY2sgKi8KKwlyZWdf
dmFsdWUgPSBjY21fcmVhZF80KHNjLCBDQ01fUExMNV9DRkcpOworCW4gPSAocmVnX3ZhbHVlID4+
IDgpICYgMHgxZjsKKwlrID0gKChyZWdfdmFsdWUgPj4gNCkgJiAzKSArIDE7CisJcCA9IDEgPDwg
KChyZWdfdmFsdWUgPj4gMTYpICYgMyk7CisJcGxsNV9jbGsgPSAyNDAwMDAwMCAqIG4gKiBrIC8g
cDsKKwlpZiAocGxsNV9jbGsgPiA0MDAwMDAwMDApCisJCWRpdmlkZXIgPSA0OworCWVsc2UKKwkJ
ZGl2aWRlciA9IDM7CisJY2NtX3dyaXRlXzQoc2MsIENDTV9NTUMwX1NDTEtfQ0ZHLCAoMVUgPDwg
MzEpIHwgKDJVIDw8IDI0KSB8IGRpdmlkZXIpOworCXByaW50ZigiTU1DMCBNT0RFX0NMSzogMHgl
MDh4XG4iLCBwbGw1X2NsayAvIChkaXZpZGVyICsgMSkpOworCisJcmV0dXJuIDA7Cit9CisKSW5k
ZXg6IHN5cy9hcm0vYWxsd2lubmVyL2ExMF9jbGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvYXJtL2Fs
bHdpbm5lci9hMTBfY2xrLmgJKHJldmlzaW9uIDI1MjMxMCkKKysrIHN5cy9hcm0vYWxsd2lubmVy
L2ExMF9jbGsuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBACiAjZGVmaW5lIEND
TV9BSEJfR0FUSU5HX1VTQjAJKDEgPDwgMCkKICNkZWZpbmUgQ0NNX0FIQl9HQVRJTkdfRUhDSTAJ
KDEgPDwgMSkKICNkZWZpbmUgQ0NNX0FIQl9HQVRJTkdfRUhDSTEJKDEgPDwgMykKKyNkZWZpbmUg
Q0NNX0FIQl9HQVRJTkdfU0RNTUMwICgxIDw8IDgpCiAKICNkZWZpbmUgQ0NNX1VTQl9QSFkJCSgx
IDw8IDgpCiAjZGVmaW5lIENDTV9VU0IwX1JFU0VUCQkoMSA8PCAwKQpAQCAtMTExLDUgKzExMiw2
IEBACiAKIGludCBhMTBfY2xrX3VzYl9hY3RpdmF0ZSh2b2lkKTsKIGludCBhMTBfY2xrX3VzYl9k
ZWFjdGl2YXRlKHZvaWQpOworaW50IGExMF9jbGtfbW1jX2FjdGl2YXRlKHZvaWQpOwogCiAjZW5k
aWYgLyogX0ExMF9DTEtfSF8gKi8KSW5kZXg6IHN5cy9kZXYvbW1jL21tYy5jCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHN5cy9kZXYvbW1jL21tYy5jCShyZXZpc2lvbiAyNTIzMTApCisrKyBzeXMvZGV2L21tYy9t
bWMuYwkod29ya2luZyBjb3B5KQpAQCAtMTczNSwzICsxNzM1LDQgQEAKIERSSVZFUl9NT0RVTEUo
bW1jLCBzZGhjaV9wY2ksIG1tY19kcml2ZXIsIG1tY19kZXZjbGFzcywgTlVMTCwgTlVMTCk7CiBE
UklWRVJfTU9EVUxFKG1tYywgc2RoY2lfYmNtLCBtbWNfZHJpdmVyLCBtbWNfZGV2Y2xhc3MsIE5V
TEwsIE5VTEwpOwogRFJJVkVSX01PRFVMRShtbWMsIHNkaGNpX2ZkdCwgbW1jX2RyaXZlciwgbW1j
X2RldmNsYXNzLCBOVUxMLCBOVUxMKTsKK0RSSVZFUl9NT0RVTEUobW1jLCBhMTBfbW1jLCBtbWNf
ZHJpdmVyLCBtbWNfZGV2Y2xhc3MsIE5VTEwsIE5VTEwpOwo=
--001a11c1c556924ed204e0273ed1
Content-Type: application/octet-stream; name="hackberry.dts"
Content-Disposition: attachment; filename="hackberry.dts"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_higba80k1

LyotCiAqIENvcHlyaWdodCAoYykgMjAxMiBHYW5ib2xkIFRzYWdhYW5raHV1IDxnYW5ib2xkQGdt
YWlsLmNvbT4KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwogKiBhcmUgbWV0OgogKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAogKiBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICogQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKICogRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKICogT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCiAqIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUCiAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgogKiBTVUNI
IERBTUFHRS4KICogCiAqICRGcmVlQlNEOiBoZWFkL3N5cy9ib290L2ZkdC9kdHMvY3ViaWVib2Fy
ZC5kdHMgMjQ3NTIwIDIwMTMtMDMtMDEgMDE6NDc6MTFaIGdhbmJvbGQgJAogKi8KCi9kdHMtdjEv
OwoKLyB7Cgltb2RlbCA9ICJNaW5pYW5kIEhhY2tiZXJyeSI7Cgljb21wYXRpYmxlID0gIm1pbmlh
bmQsYTEwLWhhY2tiZXJyeSIsICJhbGx3aW5uZXIsc3VuNGktYTEwIjsKCSNhZGRyZXNzLWNlbGxz
ID0gPDE+OwoJI3NpemUtY2VsbHMgPSA8MT47CgoJaW50ZXJydXB0LXBhcmVudCA9IDwmQUlOVEM+
OwoKCW1lbW9yeSB7CgkJZGV2aWNlX3R5cGUgPSAibWVtb3J5IjsKCQlyZWcgPSA8IDB4NDAwMDAw
MDAgMHgyMDAwMDAwMCA+OwkvKiAxR0IgUkFNICovCgl9OwoKCWFsaWFzZXMgewoJCXNvYyA9ICZT
T0M7CgkJVUFSVDAgPSAmVUFSVDA7Cgl9OwoKCVNPQzogYTEwIHsKCQkjYWRkcmVzcy1jZWxscyA9
IDwxPjsKCQkjc2l6ZS1jZWxscyA9IDwxPjsKCQljb21wYXRpYmxlID0gInNpbXBsZS1idXMiOwoJ
CXJhbmdlczsKCQlidXMtZnJlcXVlbmN5ID0gPDA+OwoKCQlBSU5UQzogaW50ZXJydXB0LWNvbnRy
b2xsZXJAMDFjMjA0MDAgewoJCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS1pYyI7CgkJ
CWludGVycnVwdC1jb250cm9sbGVyOwoJCQkjYWRkcmVzcy1jZWxscyA9IDwwPjsKCQkJI2ludGVy
cnVwdC1jZWxscyA9IDwxPjsKCQkJcmVnID0gICA8IDB4MDFjMjA0MDAgMHg0MDAgPjsKCQl9OwoK
CQljY21AMDFjMjAwMDAgewoJCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS1jY20iOwoJ
CQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKCQkJI3NpemUtY2VsbHMgPSA8MT47CgkJCXJlZyA9IDwg
MHgwMWMyMDAwMCAweDQwMCA+OwoJCX07CgoJCXRpbWVyQDAxYzIwYzAwIHsKCQkJY29tcGF0aWJs
ZSA9ICJhbGx3aW5uZXIsc3VuNGktdGltZXIiOwoJCQlyZWcgPSA8MHgwMWMyMGMwMCAweDkwPjsK
CQkJaW50ZXJydXB0cyA9IDwgMjIgPjsKCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmQUlOVEM+OwoJ
CQljbG9jay1mcmVxdWVuY3kgPSA8IDI0MDAwMDAwID47CgkJfTsKCgkJd2F0Y2hkb2dAMDFjMjBj
OTAgewoJCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS13ZHQiOwoJCQlyZWcgPSA8MHgw
MWMyMGM5MCAweDA4PjsKCQl9OwoKCQlHUElPOiBncGlvQDAxYzIwODAwIHsKCQkJI2dwaW8tY2Vs
bHMgPSA8Mz47CgkJCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjRpLWdwaW8iOwoJCQlncGlv
LWNvbnRyb2xsZXI7CgkJCXJlZyA9PCAgMHgwMWMyMDgwMCAweDQwMCA+OwoJCQlpbnRlcnJ1cHRz
ID0gPCAyOCA+OwoJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZBSU5UQz47CgkJfTsKCgkJdXNiMDog
dXNiQDAxYzE0MDAwIHsKCQkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsdXNiLWVoY2kiLCAidXNi
LWVoY2kiOwoJCQlyZWcgPSA8MHgwMWMxNDAwMCAweDEwMDA+OwoJCQlpbnRlcnJ1cHRzID0gPCAz
OSA+OwoJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZBSU5UQz47CgkJfTsKCgkJdXNiMTogdXNiQDAx
YzFjMDAwIHsKCQkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsdXNiLWVoY2kiLCAidXNiLWVoY2ki
OwoJCQlyZWcgPSA8MHgwMWMxYzAwMCAweDEwMDA+OwoJCQlpbnRlcnJ1cHRzID0gPCA0MCA+OwoJ
CQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZBSU5UQz47CgkJfTsKCi8qCgkJdXNiMjogdXNiQDAxYzEz
MDAwIHsKCQkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsbXVzYi1vdGciLCAidXNiLW11c2IiOwoJ
CQlyZWcgPSA8MHgwMWMxMzAwMCAweDEwMDA+OwoJCQlpbnRlcnJ1cHRzID0gPDM4PjsKCQkJaW50
ZXJydXB0LXBhcmVudCA9IDwmQUlOVEM+OwoJCX07CiovCgoJCXNhdGFAMDFjMTgwMDAgewoJCQlj
b21wYXRpYmxlID0gImFsbHdpbm5lcixhaGNpIjsKCQkJcmVnID0gPDB4MDFjMTgwMDAgMHgxMDAw
PjsKCQkJaW50ZXJydXB0cyA9IDw1Nj47CgkJCWludGVycnVwdC1wYXJlbnQgPSA8JkFJTlRDPjsK
CQl9OwoKCQlVQVJUMDogc2VyaWFsQDAxYzI4MDAwIHsKCQkJc3RhdHVzID0gIm9rYXkiOwoJCQlj
b21wYXRpYmxlID0gIm5zMTY1NTAiOwoJCQlyZWcgPSA8MHgwMWMyODAwMCAweDQwMD47CgkJCXJl
Zy1zaGlmdCA9IDwyPjsKCQkJaW50ZXJydXB0cyA9IDwxPjsKCQkJaW50ZXJydXB0LXBhcmVudCA9
IDwmQUlOVEM+OwoJCQljdXJyZW50LXNwZWVkID0gPDExNTIwMD47CgkJCWNsb2NrLWZyZXF1ZW5j
eSA9IDwgMjQwMDAwMDAgPjsKCQkJYnVzeS1kZXRlY3QgPSA8MT47CgkJCWJyb2tlbi10eGZpZm8g
PSA8MT47CgkJfTsKCgkJbW1jQDB4MDFjMGYwMDAgewoJCQljb21wYXRpYmxlID0gImFsbHdpbm5l
cixzdW40aS1tbWMiOwoJCQlyZWcgPSA8MHgwMWMwZjAwMCAweDEwMDA+OwoJCQlpbnRlcnJ1cHRz
ID0gPDMyPjsKCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmQUlOVEM+OwoJCX07CgoJCW5mY0AweDAx
YzAzMDAwIHsKCQkJY29tcGF0aWJsZSA9ICJzdW40aSxuZmMiOwogICAgICAgICAgICByZWcgPSA8
MHgwMWMwMzAwMCAweDEwMDA+OyAKCQl9OwoJfTsKCgljaG9zZW4gewoJCWJvb3RhcmdzID0gIi12
IjsKCQlzdGRpbiA9ICJVQVJUMCI7CgkJc3Rkb3V0ID0gIlVBUlQwIjsKCX07Cn07Cgo=
--001a11c1c556924ed204e0273ed1
Content-Type: application/octet-stream; name=HACKBERRY
Content-Disposition: attachment; filename=HACKBERRY
Content-Transfer-Encoding: base64
X-Attachment-Id: f_higbaoh72

IyBDVUJJRUJPQVJEIC0tIEN1c3RvbSBjb25maWd1cmF0aW9uIGZvciB0aGUgQ1VCSUVCT0FSRCBB
Uk0gZGV2ZWxvcG1lbnQKIyBwbGF0Zm9ybSwgY2hlY2sgb3V0IGh0dHA6Ly93d3cuY3ViaWVib2Fy
ZC5vcmcKIwojIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgZmlsZSwgcGxlYXNlIHJlYWQg
dGhlIGhhbmRib29rIHNlY3Rpb24gb24KIyBLZXJuZWwgQ29uZmlndXJhdGlvbiBGaWxlczoKIwoj
ICAgIGh0dHA6Ly93d3cuRnJlZUJTRC5vcmcvZG9jL2VuX1VTLklTTzg4NTktMS9ib29rcy9oYW5k
Ym9vay9rZXJuZWxjb25maWctY29uZmlnLmh0bWwKIwojIFRoZSBoYW5kYm9vayBpcyBhbHNvIGF2
YWlsYWJsZSBsb2NhbGx5IGluIC91c3Ivc2hhcmUvZG9jL2hhbmRib29rCiMgaWYgeW91J3ZlIGlu
c3RhbGxlZCB0aGUgZG9jIGRpc3RyaWJ1dGlvbiwgb3RoZXJ3aXNlIGFsd2F5cyBzZWUgdGhlCiMg
RnJlZUJTRCBXb3JsZCBXaWRlIFdlYiBzZXJ2ZXIgKGh0dHA6Ly93d3cuRnJlZUJTRC5vcmcvKSBm
b3IgdGhlCiMgbGF0ZXN0IGluZm9ybWF0aW9uLgojCiMgQW4gZXhoYXVzdGl2ZSBsaXN0IG9mIG9w
dGlvbnMgYW5kIG1vcmUgZGV0YWlsZWQgZXhwbGFuYXRpb25zIG9mIHRoZQojIGRldmljZSBsaW5l
cyBpcyBhbHNvIHByZXNlbnQgaW4gdGhlIC4uLy4uL2NvbmYvTk9URVMgYW5kIE5PVEVTIGZpbGVz
LgojIElmIHlvdSBhcmUgaW4gZG91YnQgYXMgdG8gdGhlIHB1cnBvc2Ugb3IgbmVjZXNzaXR5IG9m
IGEgbGluZSwgY2hlY2sgZmlyc3QKIyBpbiBOT1RFUy4KIwojICRGcmVlQlNEOiBoZWFkL3N5cy9h
cm0vY29uZi9DVUJJRUJPQVJEIDI0NzUyMCAyMDEzLTAzLTAxIDAxOjQ3OjExWiBnYW5ib2xkICQK
CmlkZW50CQlIQUNLQkVSUlkKCmluY2x1ZGUJCSIuLi9hbGx3aW5uZXIvc3RkLmExMCIKCm1ha2Vv
cHRpb25zCU1PRFVMRVNfT1ZFUlJJREU9IiIKbWFrZW9wdGlvbnMJV0lUSE9VVF9NT0RVTEVTPSJh
aGMiCgpvcHRpb25zIAlIWj0xMDAKb3B0aW9ucyAJU0NIRURfNEJTRAkJIzRCU0Qgc2NoZWR1bGVy
Cm9wdGlvbnMgCUlORVQJCQkjSW50ZXJORVR3b3JraW5nCm9wdGlvbnMgCUlORVQ2CQkJI0lQdjYg
Y29tbXVuaWNhdGlvbnMgcHJvdG9jb2xzCm9wdGlvbnMgCUZGUwkJCSNCZXJrZWxleSBGYXN0IEZp
bGVzeXN0ZW0Kb3B0aW9ucyAJU09GVFVQREFURVMJCSNFbmFibGUgRkZTIHNvZnQgdXBkYXRlcyBz
dXBwb3J0Cm9wdGlvbnMgCVVGU19BQ0wJCQkjU3VwcG9ydCBmb3IgYWNjZXNzIGNvbnRyb2wgbGlz
dHMKb3B0aW9ucyAJVUZTX0RJUkhBU0gJCSNJbXByb3ZlIHBlcmZvcm1hbmNlIG9uIGJpZyBkaXJl
Y3RvcmllcwpvcHRpb25zIAlNU0RPU0ZTCQkJI01TRE9TIEZpbGVzeXN0ZW0KI29wdGlvbnMgCUNE
OTY2MAkJCSNJU08gOTY2MCBGaWxlc3lzdGVtCm9wdGlvbnMgCVBST0NGUwkJCSNQcm9jZXNzIGZp
bGVzeXN0ZW0gKHJlcXVpcmVzIFBTRVVET0ZTKQpvcHRpb25zIAlQU0VVRE9GUwkJI1BzZXVkby1m
aWxlc3lzdGVtIGZyYW1ld29yawpvcHRpb25zIAlDT01QQVRfNDMJCSNDb21wYXRpYmxlIHdpdGgg
QlNEIDQuMyBbS0VFUCBUSElTIV0Kb3B0aW9ucyAJU0NTSV9ERUxBWT01MDAwCQkjRGVsYXkgKGlu
IG1zKSBiZWZvcmUgcHJvYmluZyBTQ1NJCm9wdGlvbnMgCUtUUkFDRQkJCSNrdHJhY2UoMSkgc3Vw
cG9ydApvcHRpb25zIAlTWVNWU0hNCQkJI1NZU1Ytc3R5bGUgc2hhcmVkIG1lbW9yeQpvcHRpb25z
IAlTWVNWTVNHCQkJI1NZU1Ytc3R5bGUgbWVzc2FnZSBxdWV1ZXMKb3B0aW9ucyAJU1lTVlNFTQkJ
CSNTWVNWLXN0eWxlIHNlbWFwaG9yZXMKb3B0aW9ucyAJX0tQT1NJWF9QUklPUklUWV9TQ0hFRFVM
SU5HICNQb3NpeCBQMTAwM18xQiByZWFsLXRpbWUgZXh0ZW5zaW9ucwpvcHRpb25zIAlLQkRfSU5T
VEFMTF9DREVWCSMgaW5zdGFsbCBhIENERVYgZW50cnkgaW4gL2RldgpvcHRpb25zIAlQUkVFTVBU
SU9OCm9wdGlvbnMgCUZSRUVCU0RfQk9PVF9MT0FERVIKCiMgRGVidWdnaW5nCm1ha2VvcHRpb25z
CURFQlVHPS1nCQkjQnVpbGQga2VybmVsIHdpdGggZ2RiKDEpIGRlYnVnIHN5bWJvbHMKb3B0aW9u
cyAJQlJFQUtfVE9fREVCVUdHRVIKI29wdGlvbnMgCVZFUkJPU0VfU1lTSU5JVAkJI0VuYWJsZSB2
ZXJib3NlIHN5c2luaXQgbWVzc2FnZXMKb3B0aW9ucyAJS0RCCm9wdGlvbnMgCUREQgkJCSNFbmFi
bGUgdGhlIGtlcm5lbCBkZWJ1Z2dlcgpvcHRpb25zIAlJTlZBUklBTlRTCQkjRW5hYmxlIGNhbGxz
IG9mIGV4dHJhIHNhbml0eSBjaGVja2luZwpvcHRpb25zIAlJTlZBUklBTlRfU1VQUE9SVAkjRXh0
cmEgc2FuaXR5IGNoZWNrcyBvZiBpbnRlcm5hbCBzdHJ1Y3R1cmVzLCByZXF1aXJlZCBieSBJTlZB
UklBTlRTCm9wdGlvbnMgCVdJVE5FU1MJCQkjRW5hYmxlIGNoZWNrcyB0byBkZXRlY3QgZGVhZGxv
Y2tzIGFuZCBjeWNsZXMKb3B0aW9ucyAJV0lUTkVTU19TS0lQU1BJTgkjRG9uJ3QgcnVuIHdpdG5l
c3Mgb24gc3BpbmxvY2tzIGZvciBzcGVlZAojb3B0aW9ucyAJRElBR05PU1RJQwoKIyBORlMgc3Vw
cG9ydAojb3B0aW9ucyAJTkZTQ0wKI29wdGlvbnMgCU5GU1NFUlZFUgkJI05ldHdvcmsgRmlsZXN5
c3RlbSBTZXJ2ZXIKI29wdGlvbnMgCU5GU0NMSUVOVAkJI05ldHdvcmsgRmlsZXN5c3RlbSBDbGll
bnQKCiMgVW5jb21tZW50IHRoaXMgZm9yIE5GUyByb290CiNvcHRpb25zIAlORlNfUk9PVAkJI05G
UyB1c2FibGUgYXMgLywgcmVxdWlyZXMgTkZTQ0xJRU5UCiNvcHRpb25zIAlCT09UUF9ORlNST09U
CiNvcHRpb25zIAlCT09UUF9DT01QQVQKI29wdGlvbnMgCUJPT1RQCiNvcHRpb25zIAlCT09UUF9O
RlNWMwojb3B0aW9ucyAJQk9PVFBfV0lSRURfVE89Y3BzdzAKCiNvcHRpb25zICAgICAgICAgTURf
Uk9PVAojb3B0aW9ucyAgICAgICAgIE1EX1JPT1RfU0laRT0zMjc2OAojbWFrZW9wdGlvbnMgICAg
IE1GU19JTUFHRT0vcm9vdC9yb290LnVmcwojb3B0aW9ucyAgICAgICAgIFJPT1RERVZOQU1FPVwi
dWZzOm1kMFwiCgojIE1NQy9TRC9TRElPIGNhcmQgc2xvdCBzdXBwb3J0CmRldmljZQkJbW1jCQkJ
IyBtbWMvc2QgYnVzCmRldmljZQkJbW1jc2QJCQkjIG1tYy9zZCBmbGFzaCBjYXJkcwoKIyBCb290
IGRldmljZSBpcyAybmQgc2xpY2Ugb24gTU1DL1NEIGNhcmQKb3B0aW9ucwkJUk9PVERFVk5BTUU9
XCJ1ZnM6L2Rldi9tbWNzZDBzMlwiCgojIEFUQSBjb250cm9sbGVycwojZGV2aWNlCQlhaGNpCQkj
IEFIQ0ktY29tcGF0aWJsZSBTQVRBIGNvbnRyb2xsZXJzCiNkZXZpY2UJCWF0YQkJIyBMZWdhY3kg
QVRBL1NBVEEgY29udHJvbGxlcnMKI29wdGlvbnMJQVRBX0NBTQkJIyBIYW5kbGUgbGVnYWN5IGNv
bnRyb2xsZXJzIHdpdGggQ0FNCiNvcHRpb25zCUFUQV9TVEFUSUNfSUQJIyBTdGF0aWMgZGV2aWNl
IG51bWJlcmluZwoKIyBDb25zb2xlIGFuZCBtaXNjCmRldmljZQkJdWFydApkZXZpY2UJCXVhcnRf
bnM4MjUwCmRldmljZQkJcHR5CmRldmljZQkJc25wCmRldmljZQkJbWQKZGV2aWNlCQlyYW5kb20J
CQkjIEVudHJvcHkgZGV2aWNlCgojIEkyQyBzdXBwb3J0CiNkZXZpY2UJCWlpY2J1cwojZGV2aWNl
CQlpaWMKCiMgTkFORAojZGV2aWNlCQluYW5kCgojIEdQSU8KZGV2aWNlCQlncGlvCgpkZXZpY2UJ
CXNjYnVzCQkJIyBTQ1NJIGJ1cyAocmVxdWlyZWQgZm9yIFNDU0kpCmRldmljZQkJZGEJCQkjIERp
cmVjdCBBY2Nlc3MgKGRpc2tzKQpkZXZpY2UJCXBhc3MKCiMgVVNCIHN1cHBvcnQKZGV2aWNlCQl1
c2IKb3B0aW9ucyAJVVNCX0RFQlVHCm9wdGlvbnMgCVVTQl9SRVFfREVCVUcKb3B0aW9ucyAJVVNC
X1ZFUkJPU0UKI2RldmljZQkJdWhjaQojZGV2aWNlCQlvaGNpCmRldmljZQkJZWhjaQpkZXZpY2UJ
CXVtYXNzCmRldmljZQkJdW1zCmRldmljZQkJbXVzYgoKIyBFdGhlcm5ldApkZXZpY2UJCWxvb3AK
ZGV2aWNlCQlldGhlcgpkZXZpY2UJCW1paQpkZXZpY2UJCXNtc2NwaHkKI2RldmljZQkJY3Bzdwpk
ZXZpY2UJCWJwZgoKIyBVU0IgZXRoZXJuZXQgc3VwcG9ydCwgcmVxdWlyZXMgbWlpYnVzCmRldmlj
ZQkJbWlpYnVzCgpkZXZpY2UJCWZpcm13YXJlCgpkZXZpY2UJCXdsYW4KCiMgRmxhdHRlbmVkIERl
dmljZSBUcmVlCm9wdGlvbnMJCUZEVApvcHRpb25zCQlGRFRfRFRCX1NUQVRJQwptYWtlb3B0aW9u
cwlGRFRfRFRTX0ZJTEU9aGFja2JlcnJ5LmR0cwoK
--001a11c1c556924ed204e0273ed1--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOcOT_y%2Bs0YAMnZOK3kO0QbxSFp%2BOJT-kmCNa=RpMAOKzt_cEg>