Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Feb 2012 23:59:14 +0530
From:      "Desai, Kashyap" <Kashyap.Desai@lsi.com>
To:        =?iso-8859-1?Q?Leon_Me=DFner?= <l.messner@physik.tu-berlin.de>, "freebsd-scsi@freebsd.org" <freebsd-scsi@freebsd.org>
Cc:        "Kenneth D. Merry" <ken@FreeBSD.org>, "McConnell, Stephen" <Stephen.McConnell@lsi.com>
Subject:   RE: getencstat and smp_discover get stuck with lsi mps
Message-ID:  <B2FD678A64EAAD45B089B123FDFC3ED729A3415109@inbmail01.lsi.com>
In-Reply-To: <20120208152507.GA17395@emmi.physik-pool.tu-berlin.de>
References:  <20120208152507.GA17395@emmi.physik-pool.tu-berlin.de>

next in thread | previous in thread | raw e-mail | index | archive | help
--_002_B2FD678A64EAAD45B089B123FDFC3ED729A3415109inbmail01lsic_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

There are couple of fix went after 11.255.x version of mps driver. (which c=
urrently upstreamed)
I have attached those fixes here as combined patch.

I have also observed this issue in my lab. (so most likely you will see fix=
 using attached patch.)

` Kashyap

> -----Original Message-----
> From: owner-freebsd-scsi@freebsd.org [mailto:owner-freebsd-
> scsi@freebsd.org] On Behalf Of Leon Me=DFner
> Sent: Wednesday, February 08, 2012 8:55 PM
> To: freebsd-scsi@freebsd.org
> Subject: getencstat and smp_discover get stuck with lsi mps
>=20
> Hi,
> at first thank you for the new LSI mps driver. Works like a charm until
> now. I do see a problem using getencstat or smp_discover from the
> smp_utils-0.97 package. Both just hang and dont recover.
>=20
> # ps axlwww | grep getenc
>   UID   PID  PPID CPU PRI NI    VSZ    RSS MWCHAN STAT  TT      TIME
> COMMAND
>     0  1879  1717   0  20  0   3924    836 cgticb D+     0   0:00.00
> ./getencstat /dev/ses0
>=20
> I did get some output from getencstat while using the old driver under
> 8-STABLE (now running 9-STABLE from the 6th). Hardware is a 9200-8e
> (mps0) and one Supermicro SC847E16-RJBOD1 which features two expander
> chips. There is also another onboard mps controller which has only
> drives attached. pciconf -lv and dmesg regarding ses devices attached.
>=20
> Greetings,
> Leon
>=20
> mps0@pci0:1:0:0:        class=3D0x010700 card=3D0x30801000 chip=3D0x00721=
000
> rev=3D0x03 hdr=3D0x00
>     vendor     =3D 'LSI Logic / Symbios Logic'
>     device     =3D 'SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]'
>     class      =3D mass storage
>     subclass   =3D SAS
>=20
> # dmesg | grep ses
> ses0 at mps0 bus 0 scbus0 target 8 lun 0
> ses0: <LSI CORP SAS2X36 0417> Fixed Enclosure Services SCSI-5 device
> ses0: 600.000MB/s transfers
> ses0: Command Queueing enabled
> ses0: SCSI-3 SES Device
> ses1 at mps0 bus 0 scbus0 target 29 lun 0
> ses1: <LSI CORP SAS2X36 0417> Fixed Enclosure Services SCSI-5 device
> ses1: 600.000MB/s transfers
> ses1: Command Queueing enabled
> ses1: SCSI-3 SES Device
> _______________________________________________
> freebsd-scsi@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-scsi
> To unsubscribe, send any mail to "freebsd-scsi-unsubscribe@freebsd.org"

--_002_B2FD678A64EAAD45B089B123FDFC3ED729A3415109inbmail01lsic_
Content-Type: application/octet-stream; name="upstream_13.00.00.00-fbsd.patch"
Content-Description: upstream_13.00.00.00-fbsd.patch
Content-Disposition: attachment; filename="upstream_13.00.00.00-fbsd.patch";
	size=29974; creation-date="Wed, 08 Feb 2012 18:27:53 GMT";
	modification-date="Mon, 06 Feb 2012 16:20:22 GMT"
Content-Transfer-Encoding: base64

ZGlmZiAtYXJ1cCBtcHNfMTEuMjU1LjAzLjAwLWZic2QvbXBzLmMgbXBzXzEzLjAwLjAwLjAwLWZi
c2QvbXBzLmMKLS0tIG1wc18xMS4yNTUuMDMuMDAtZmJzZC9tcHMuYwkyMDEyLTAyLTA2IDIxOjQ4
OjA5LjAyNDczMTU0OSArMDUzMAorKysgbXBzXzEzLjAwLjAwLjAwLWZic2QvbXBzLmMJMjAxMi0w
Mi0wNiAyMTo0NzozNC42MTIwMDc1MjcgKzA1MzAKQEAgLTUyOSw3ICs1MjksNyBAQCBtcHNfZW5x
dWV1ZV9yZXF1ZXN0KHN0cnVjdCBtcHNfc29mdGMgKnNjCiAJbXBzX2RwcmludChzYywgTVBTX1RS
QUNFLCAiJXMgU01JRCAldSBjbSAlcCBjY2IgJXBcbiIsIF9fZnVuY19fLAogCSAgICBjbS0+Y21f
ZGVzYy5EZWZhdWx0LlNNSUQsIGNtLCBjbS0+Y21fY2NiKTsKIAotCWlmIChzYy0+bXBzX2ZsYWdz
ICYgTVBTX0ZMQUdTX0FUVEFDSF9ET05FKQorCWlmIChzYy0+bXBzX2ZsYWdzICYgTVBTX0ZMQUdT
X0FUVEFDSF9ET05FICYmICEoc2MtPm1wc19mbGFncyAmIE1QU19GTEFHU19TSFVURE9XTikpCiAJ
CW10eF9hc3NlcnQoJnNjLT5tcHNfbXR4LCBNQV9PV05FRCk7CiAKIAlpZiAoKytzYy0+aW9fY21k
c19hY3RpdmUgPiBzYy0+aW9fY21kc19oaWdod2F0ZXIpCkBAIC0xMzM1LDYgKzEzMzUsOCBAQCBt
cHNfZnJlZShzdHJ1Y3QgbXBzX3NvZnRjICpzYykKIAkgICAgKChlcnJvciA9IG1wc19kZXRhY2hf
c2FzKHNjKSkgIT0gMCkpCiAJCXJldHVybiAoZXJyb3IpOwogCisJbXBzX2RldGFjaF91c2VyKHNj
KTsKKwogCS8qIFB1dCB0aGUgSU9DIGJhY2sgaW4gdGhlIFJFQURZIHN0YXRlLiAqLwogCW1wc19s
b2NrKHNjKTsKIAlpZiAoKGVycm9yID0gbXBzX3RyYW5zaXRpb25fcmVhZHkoc2MpKSAhPSAwKSB7
CkBAIC0yMTQyLDcgKzIxNDQsNyBAQCBtcHNfd2FpdF9jb21tYW5kKHN0cnVjdCBtcHNfc29mdGMg
KnNjLCBzCiAJZXJyb3IgPSBtcHNfbWFwX2NvbW1hbmQoc2MsIGNtKTsKIAlpZiAoKGVycm9yICE9
IDApICYmIChlcnJvciAhPSBFSU5QUk9HUkVTUykpCiAJCXJldHVybiAoZXJyb3IpOwotCWVycm9y
ID0gbXNsZWVwKGNtLCAmc2MtPm1wc19tdHgsIDAsICJtcHN3YWl0IiwgdGltZW91dCk7CisJZXJy
b3IgPSBtc2xlZXAoY20sICZzYy0+bXBzX210eCwgMCwgIm1wc3dhaXQiLCB0aW1lb3V0Kmh6KTsK
IAlpZiAoZXJyb3IgPT0gRVdPVUxEQkxPQ0spCiAJCWVycm9yID0gRVRJTUVET1VUOwogCXJldHVy
biAoZXJyb3IpOwpkaWZmIC1hcnVwIG1wc18xMS4yNTUuMDMuMDAtZmJzZC9tcHNfc2FzLmMgbXBz
XzEzLjAwLjAwLjAwLWZic2QvbXBzX3Nhcy5jCi0tLSBtcHNfMTEuMjU1LjAzLjAwLWZic2QvbXBz
X3Nhcy5jCTIwMTItMDItMDYgMjE6NDg6MDkuMDM3NjcxMjE0ICswNTMwCisrKyBtcHNfMTMuMDAu
MDAuMDAtZmJzZC9tcHNfc2FzLmMJMjAxMi0wMi0wNiAyMTo0NzozNC42MTQ5OTYwNzUgKzA1MzAK
QEAgLTEzOSw3ICsxMzksNiBAQCBzdGF0aWMgdWludDhfdCBvcF9jb2RlX3Byb3RbMjU2XSA9IHsK
IAogTUFMTE9DX0RFRklORShNX01QU1NBUywgIk1QU1NBUyIsICJNUFMgU0FTIG1lbW9yeSIpOwog
Ci1zdGF0aWMgc3RydWN0IG1wc3Nhc190YXJnZXQgKiBtcHNzYXNfZmluZF90YXJnZXRfYnlfaGFu
ZGxlKHN0cnVjdCBtcHNzYXNfc29mdGMgKiwgaW50LCB1aW50MTZfdCk7CiBzdGF0aWMgdm9pZCBt
cHNzYXNfZGlzY292ZXJ5X3RpbWVvdXQodm9pZCAqZGF0YSk7CiBzdGF0aWMgdm9pZCBtcHNzYXNf
cmVtb3ZlX2RldmljZShzdHJ1Y3QgbXBzX3NvZnRjICosIHN0cnVjdCBtcHNfY29tbWFuZCAqKTsK
IHN0YXRpYyB2b2lkIG1wc3Nhc19yZW1vdmVfY29tcGxldGUoc3RydWN0IG1wc19zb2Z0YyAqLCBz
dHJ1Y3QgbXBzX2NvbW1hbmQgKik7CkBAIC0xNzUsNyArMTc0LDcgQEAgc3RhdGljIGludCBtcHNz
YXNfc2VuZF9wb3J0ZW5hYmxlKHN0cnVjdAogc3RhdGljIHZvaWQgbXBzc2FzX3BvcnRlbmFibGVf
Y29tcGxldGUoc3RydWN0IG1wc19zb2Z0YyAqc2MsCiAgICAgc3RydWN0IG1wc19jb21tYW5kICpj
bSk7CiAKLXN0YXRpYyBzdHJ1Y3QgbXBzc2FzX3RhcmdldCAqCitzdHJ1Y3QgbXBzc2FzX3Rhcmdl
dCAqCiBtcHNzYXNfZmluZF90YXJnZXRfYnlfaGFuZGxlKHN0cnVjdCBtcHNzYXNfc29mdGMgKnNh
c3NjLCBpbnQgc3RhcnQsIHVpbnQxNl90IGhhbmRsZSkKIHsKIAlzdHJ1Y3QgbXBzc2FzX3Rhcmdl
dCAqdGFyZ2V0OwpAQCAtMzUxLDIyICszNTAsMTIzIEBAIG1wc3Nhc19sb2dfY29tbWFuZChzdHJ1
Y3QgbXBzX2NvbW1hbmQgKmMKIAl2YV9lbmQoYXApOwogfQogCisKIHN0YXRpYyB2b2lkCi1tcHNz
YXNfbG9zdF90YXJnZXQoc3RydWN0IG1wc19zb2Z0YyAqc2MsIHN0cnVjdCBtcHNzYXNfdGFyZ2V0
ICp0YXJnKQorbXBzc2FzX3JlbW92ZV92b2x1bWUoc3RydWN0IG1wc19zb2Z0YyAqc2MsIHN0cnVj
dCBtcHNfY29tbWFuZCAqdG0pCiB7Ci0Jc3RydWN0IG1wc3Nhc19zb2Z0YyAqc2Fzc2MgPSBzYy0+
c2Fzc2M7Ci0JcGF0aF9pZF90IHBhdGhpZCA9IGNhbV9zaW1fcGF0aChzYXNzYy0+c2ltKTsKLQlz
dHJ1Y3QgY2FtX3BhdGggKnBhdGg7CisJTVBJMl9TQ1NJX1RBU0tfTUFOQUdFX1JFUExZICpyZXBs
eTsKKwlzdHJ1Y3QgbXBzc2FzX3RhcmdldCAqdGFyZzsKKwl1aW50MTZfdCBoYW5kbGU7CisKKwlt
cHNfZHByaW50KHNjLCBNUFNfSU5GTywgIiVzXG4iLCBfX2Z1bmNfXyk7CisKKwlyZXBseSA9IChN
UEkyX1NDU0lfVEFTS19NQU5BR0VfUkVQTFkgKil0bS0+Y21fcmVwbHk7CisJaGFuZGxlID0gKHVp
bnQxNl90KSh1aW50cHRyX3QpdG0tPmNtX2NvbXBsZXRlX2RhdGE7CisJdGFyZyA9IHRtLT5jbV90
YXJnOwogCi0JbXBzX3ByaW50ZihzYywgIiVzIHRhcmdldGlkICV1XG4iLCBfX2Z1bmNfXywgdGFy
Zy0+dGlkKTsKLQlpZiAoeHB0X2NyZWF0ZV9wYXRoKCZwYXRoLCBOVUxMLCBwYXRoaWQsIHRhcmct
PnRpZCwgMCkgIT0gQ0FNX1JFUV9DTVApIHsKLQkJbXBzX3ByaW50ZihzYywgInVuYWJsZSB0byBj
cmVhdGUgcGF0aCBmb3IgbG9zdCB0YXJnZXQgJWRcbiIsIAotCQkgICAgdGFyZy0+dGlkKTsKKwlp
ZiAocmVwbHkgPT0gTlVMTCkgeworCQkvKiBYWFggcmV0cnkgdGhlIHJlbW92ZSBhZnRlciB0aGUg
ZGlhZyByZXNldCBjb21wbGV0ZXM/ICovCisJCW1wc19wcmludGYoc2MsICIlcyBOVUxMIHJlcGx5
IHJlc2V0aW5nIGRldmljZSAweCUwNHhcbiIsIAorCQkgICAgX19mdW5jX18sIGhhbmRsZSk7CisJ
CW1wc3Nhc19mcmVlX3RtKHNjLCB0bSk7CiAJCXJldHVybjsKIAl9CiAKLQl4cHRfYXN5bmMoQUNf
TE9TVF9ERVZJQ0UsIHBhdGgsIE5VTEwpOwotCXhwdF9mcmVlX3BhdGgocGF0aCk7CisJaWYgKHJl
cGx5LT5JT0NTdGF0dXMgIT0gTVBJMl9JT0NTVEFUVVNfU1VDQ0VTUykgeworCQltcHNfcHJpbnRm
KHNjLCAiSU9DU3RhdHVzID0gMHgleCB3aGlsZSByZXNldHRpbmcgZGV2aWNlIDB4JXhcbiIsCisJ
CSAgIHJlcGx5LT5JT0NTdGF0dXMsIGhhbmRsZSk7CisJCW1wc3Nhc19mcmVlX3RtKHNjLCB0bSk7
CisJCXJldHVybjsKKwl9CisKKwltcHNfcHJpbnRmKHNjLCAiUmVzZXQgYWJvcnRlZCAldSBjb21t
YW5kc1xuIiwgcmVwbHktPlRlcm1pbmF0aW9uQ291bnQpOworCW1wc19mcmVlX3JlcGx5KHNjLCB0
bS0+Y21fcmVwbHlfZGF0YSk7CisJdG0tPmNtX3JlcGx5ID0gTlVMTDsJLyogRW5zdXJlcyB0aGUg
dGhlIHJlcGx5IHdvbid0IGdldCByZS1mcmVlZCAqLworCisJbXBzX3ByaW50ZihzYywgImNsZWFy
aW5nIHRhcmdldCAldSBoYW5kbGUgMHglMDR4XG4iLCB0YXJnLT50aWQsIGhhbmRsZSk7CisJCisJ
LyoKKwkgKiBEb24ndCBjbGVhciB0YXJnZXQgaWYgcmVtb3ZlIGZhaWxzIGJlY2F1c2UgdGhpbmdz
IHdpbGwgZ2V0IGNvbmZ1c2luZy4KKwkgKiBMZWF2ZSB0aGUgZGV2bmFtZSBhbmQgc2FzYWRkciBp
bnRhY3Qgc28gdGhhdCB3ZSBrbm93IHRvIGF2b2lkIHJldXNpbmcKKwkgKiB0aGlzIHRhcmdldCBp
ZCBpZiBwb3NzaWJsZSwgYW5kIHNvIHdlIGNhbiBhc3NpZ24gdGhlIHNhbWUgdGFyZ2V0IGlkCisJ
ICogdG8gdGhpcyBkZXZpY2UgaWYgaXQgY29tZXMgYmFjayBpbiB0aGUgZnV0dXJlLgorCSAqLwor
CWlmIChyZXBseS0+SU9DU3RhdHVzID09IE1QSTJfSU9DU1RBVFVTX1NVQ0NFU1MpIHsKKwkJdGFy
ZyA9IHRtLT5jbV90YXJnOworCQl0YXJnLT5oYW5kbGUgPSAweDA7CisJCXRhcmctPmVuY2xfaGFu
ZGxlID0gMHgwOworCQl0YXJnLT5lbmNsX3Nsb3QgPSAweDA7CisJCXRhcmctPmV4cF9kZXZfaGFu
ZGxlID0gMHgwOworCQl0YXJnLT5waHlfbnVtID0gMHgwOworCQl0YXJnLT5saW5rcmF0ZSA9IDB4
MDsKKwkJdGFyZy0+ZGV2aW5mbyA9IDB4MDsKKwkJdGFyZy0+ZmxhZ3MgPSAweDA7CisJfQorCisJ
bXBzc2FzX2ZyZWVfdG0oc2MsIHRtKTsKK30KKworCisvKgorICogTm8gTmVlZCB0byBjYWxsICJN
UEkyX1NBU19PUF9SRU1PVkVfREVWSUNFIiBGb3IgVm9sdW1lIHJlbW92YWwuCisgKiBPdGhlcndp
c2UgVm9sdW1lIERlbGV0ZSBpcyBzYW1lIGFzIEJhcmUgRHJpdmUgUmVtb3ZhbC4KKyAqLwordm9p
ZAorbXBzc2FzX3ByZXBhcmVfdm9sdW1lX3JlbW92ZShzdHJ1Y3QgbXBzc2FzX3NvZnRjICpzYXNz
YywgdWludDE2X3QgaGFuZGxlKQoreworCU1QSTJfU0NTSV9UQVNLX01BTkFHRV9SRVFVRVNUICpy
ZXE7CisJc3RydWN0IG1wc19zb2Z0YyAqc2M7CisJc3RydWN0IG1wc19jb21tYW5kICpjbTsKKwlz
dHJ1Y3QgbXBzc2FzX3RhcmdldCAqdGFyZyA9IE5VTEw7CisKKwltcHNfZHByaW50KHNhc3NjLT5z
YywgTVBTX0lORk8sICIlc1xuIiwgX19mdW5jX18pOworCXNjID0gc2Fzc2MtPnNjOworCisjaWZk
ZWYgV0RfU1VQUE9SVAorCS8qCisJICogSWYgdGhpcyBpcyBhIFdEIGNvbnRyb2xsZXIsIGRldGVy
bWluZSBpZiB0aGUgZGlzayBzaG91bGQgYmUgZXhwb3NlZAorCSAqIHRvIHRoZSBPUyBvciBub3Qu
ICBJZiBkaXNrIHNob3VsZCBiZSBleHBvc2VkLCByZXR1cm4gZnJvbSB0aGlzCisJICogZnVuY3Rp
b24gd2l0aG91dCBkb2luZyBhbnl0aGluZy4KKwkgKi8KKwlpZiAoc2MtPldEX2F2YWlsYWJsZSAm
JiAoc2MtPldEX2hpZGVfZXhwb3NlID09CisJICAgIE1QU19XRF9FWFBPU0VfQUxXQVlTKSkgewor
CQlyZXR1cm47CisJfQorI2VuZGlmIC8vV0RfU1VQUE9SVAorCisJdGFyZyA9IG1wc3Nhc19maW5k
X3RhcmdldF9ieV9oYW5kbGUoc2Fzc2MsIDAsIGhhbmRsZSk7CisJaWYgKHRhcmcgPT0gTlVMTCkg
eworCQkvKiBGSVhNRTogd2hhdCBpcyB0aGUgYWN0aW9uPyAqLworCQkvKiBXZSBkb24ndCBrbm93
IGFib3V0IHRoaXMgZGV2aWNlPyAqLworCQlwcmludGYoIiVzICVkIDogaW52YWxpZCBoYW5kbGUg
MHgleCBcbiIsIF9fZnVuY19fLF9fTElORV9fLCBoYW5kbGUpOworCQlyZXR1cm47CisJfQorCisJ
dGFyZy0+ZmxhZ3MgfD0gTVBTU0FTX1RBUkdFVF9JTlJFTU9WQUw7CisKKwljbSA9IG1wc3Nhc19h
bGxvY190bShzYyk7CisJaWYgKGNtID09IE5VTEwpIHsKKwkJbXBzX3ByaW50ZihzYywgIiVzOiBj
b21tYW5kIGFsbG9jIGZhaWx1cmVcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuOworCX0KKworCW1w
c3Nhc19yZXNjYW5fdGFyZ2V0KHNjLCB0YXJnKTsKKworCXJlcSA9IChNUEkyX1NDU0lfVEFTS19N
QU5BR0VfUkVRVUVTVCAqKWNtLT5jbV9yZXE7CisJcmVxLT5EZXZIYW5kbGUgPSB0YXJnLT5oYW5k
bGU7CisJcmVxLT5GdW5jdGlvbiA9IE1QSTJfRlVOQ1RJT05fU0NTSV9UQVNLX01HTVQ7CisJcmVx
LT5UYXNrVHlwZSA9IE1QSTJfU0NTSVRBU0tNR01UX1RBU0tUWVBFX1RBUkdFVF9SRVNFVDsKKwor
CS8qIFNBUyBIYXJkIExpbmsgUmVzZXQgLyBTQVRBIExpbmsgUmVzZXQgKi8KKwlyZXEtPk1zZ0Zs
YWdzID0gTVBJMl9TQ1NJVEFTS01HTVRfTVNHRkxBR1NfTElOS19SRVNFVDsKKworCWNtLT5jbV90
YXJnID0gdGFyZzsKKwljbS0+Y21fZGF0YSA9IE5VTEw7CisJY20tPmNtX2Rlc2MuSGlnaFByaW9y
aXR5LlJlcXVlc3RGbGFncyA9CisJICAgIE1QSTJfUkVRX0RFU0NSSVBUX0ZMQUdTX0hJR0hfUFJJ
T1JJVFk7CisJY20tPmNtX2NvbXBsZXRlID0gbXBzc2FzX3JlbW92ZV92b2x1bWU7CisJY20tPmNt
X2NvbXBsZXRlX2RhdGEgPSAodm9pZCAqKSh1aW50cHRyX3QpaGFuZGxlOworCW1wc19tYXBfY29t
bWFuZChzYywgY20pOwogfQogCiAvKgpAQCAtMzg2LDcgKzQ4Niw3IEBAIG1wc3Nhc19wcmVwYXJl
X3JlbW92ZShzdHJ1Y3QgbXBzc2FzX3NvZnQKIAlzdHJ1Y3QgbXBzX2NvbW1hbmQgKmNtOwogCXN0
cnVjdCBtcHNzYXNfdGFyZ2V0ICp0YXJnID0gTlVMTDsKIAotCW1wc19kcHJpbnQoc2Fzc2MtPnNj
LCBNUFNfVFJBQ0UsICIlc1xuIiwgX19mdW5jX18pOworCW1wc19kcHJpbnQoc2Fzc2MtPnNjLCBN
UFNfSU5GTywgIiVzXG4iLCBfX2Z1bmNfXyk7CiAKIAkvKgogCSAqIElmIHRoaXMgaXMgYSBXRCBj
b250cm9sbGVyLCBkZXRlcm1pbmUgaWYgdGhlIGRpc2sgc2hvdWxkIGJlIGV4cG9zZWQKQEAgLTQw
Myw3ICs1MDMsNyBAQCBtcHNzYXNfcHJlcGFyZV9yZW1vdmUoc3RydWN0IG1wc3Nhc19zb2Z0CiAJ
aWYgKHRhcmcgPT0gTlVMTCkgewogCQkvKiBGSVhNRTogd2hhdCBpcyB0aGUgYWN0aW9uPyAqLwog
CQkvKiBXZSBkb24ndCBrbm93IGFib3V0IHRoaXMgZGV2aWNlPyAqLwotCQlwcmludGYoIiVzOiBp
bnZhbGlkIGhhbmRsZSAweCV4IFxuIiwgX19mdW5jX18sIGhhbmRsZSk7CisJCXByaW50ZigiJXMg
JWQgOiBpbnZhbGlkIGhhbmRsZSAweCV4IFxuIiwgX19mdW5jX18sX19MSU5FX18sIGhhbmRsZSk7
CiAJCXJldHVybjsKIAl9CiAKQEAgLTQxNSw3ICs1MTUsNyBAQCBtcHNzYXNfcHJlcGFyZV9yZW1v
dmUoc3RydWN0IG1wc3Nhc19zb2Z0CiAJCXJldHVybjsKIAl9CiAKLQltcHNzYXNfbG9zdF90YXJn
ZXQoc2MsIHRhcmcpOworCW1wc3Nhc19yZXNjYW5fdGFyZ2V0KHNjLCB0YXJnKTsKIAogCXJlcSA9
IChNUEkyX1NDU0lfVEFTS19NQU5BR0VfUkVRVUVTVCAqKWNtLT5jbV9yZXE7CiAJbWVtc2V0KHJl
cSwgMCwgc2l6ZW9mKCpyZXEpKTsKQEAgLTQ0Myw3ICs1NDMsNyBAQCBtcHNzYXNfcmVtb3ZlX2Rl
dmljZShzdHJ1Y3QgbXBzX3NvZnRjICpzCiAJc3RydWN0IG1wc19jb21tYW5kICpuZXh0X2NtOwog
CXVpbnQxNl90IGhhbmRsZTsKIAotCW1wc19kcHJpbnQoc2MsIE1QU19UUkFDRSwgIiVzXG4iLCBf
X2Z1bmNfXyk7CisJbXBzX2RwcmludChzYywgTVBTX0lORk8sICIlc1xuIiwgX19mdW5jX18pOwog
CiAJcmVwbHkgPSAoTVBJMl9TQ1NJX1RBU0tfTUFOQUdFX1JFUExZICopdG0tPmNtX3JlcGx5Owog
CWhhbmRsZSA9ICh1aW50MTZfdCkodWludHB0cl90KXRtLT5jbV9jb21wbGV0ZV9kYXRhOwpAQCAt
NTE0LDcgKzYxNCw3IEBAIG1wc3Nhc19yZW1vdmVfY29tcGxldGUoc3RydWN0IG1wc19zb2Z0YyAK
IAl1aW50MTZfdCBoYW5kbGU7CiAJc3RydWN0IG1wc3Nhc190YXJnZXQgKnRhcmc7CiAKLQltcHNf
ZHByaW50KHNjLCBNUFNfVFJBQ0UsICIlc1xuIiwgX19mdW5jX18pOworCW1wc19kcHJpbnQoc2Ms
IE1QU19JTkZPLCAiJXNcbiIsIF9fZnVuY19fKTsKIAogCXJlcGx5ID0gKE1QSTJfU0FTX0lPVU5J
VF9DT05UUk9MX1JFUExZICopdG0tPmNtX3JlcGx5OwogCWhhbmRsZSA9ICh1aW50MTZfdCkodWlu
dHB0cl90KXRtLT5jbV9jb21wbGV0ZV9kYXRhOwpAQCAtNTU4LDYgKzY1OCw3IEBAIG1wc3Nhc19y
ZW1vdmVfY29tcGxldGUoc3RydWN0IG1wc19zb2Z0YyAKIAkJdGFyZy0+cGh5X251bSA9IDB4MDsK
IAkJdGFyZy0+bGlua3JhdGUgPSAweDA7CiAJCXRhcmctPmRldmluZm8gPSAweDA7CisJCXRhcmct
PmZsYWdzID0gMHgwOwogCX0KIAogCW1wc3Nhc19mcmVlX3RtKHNjLCB0bSk7CkBAIC02OTAsNyAr
NzkxLDcgQEAgbXBzX2RldGFjaF9zYXMoc3RydWN0IG1wc19zb2Z0YyAqc2MpCiB7CiAJc3RydWN0
IG1wc3Nhc19zb2Z0YyAqc2Fzc2M7CiAKLQltcHNfZHByaW50KHNjLCBNUFNfVFJBQ0UsICIlc1xu
IiwgX19mdW5jX18pOworCW1wc19kcHJpbnQoc2MsIE1QU19JTkZPLCAiJXNcbiIsIF9fZnVuY19f
KTsKIAogCWlmIChzYy0+c2Fzc2MgPT0gTlVMTCkKIAkJcmV0dXJuICgwKTsKQEAgLTczMyw2ICs4
MzQsNyBAQCBtcHNfZGV0YWNoX3NhcyhzdHJ1Y3QgbXBzX3NvZnRjICpzYykKIAl9CiAJbXBzX3Vu
bG9jayhzYyk7CiAKKwltcHNfZHByaW50KHNjLCBNUFNfSU5GTywgIiVzOiVkXG4iLCBfX2Z1bmNf
XyxfX0xJTkVfXyk7CiAJaWYgKHNhc3NjLT5kZXZxICE9IE5VTEwpCiAJCWNhbV9zaW1xX2ZyZWUo
c2Fzc2MtPmRldnEpOwogCkBAIC0xNDc1LDExICsxNTc3LDExIEBAIG1wc3Nhc19hY3Rpb25fc2Nz
aWlvKHN0cnVjdCBtcHNzYXNfc29mdGMKIAl1aW50MTZfdCBlZWRwX2ZsYWdzOwogCiAJc2MgPSBz
YXNzYy0+c2M7Ci0JbXBzX2RwcmludChzYywgTVBTX1RSQUNFLCAiJXMgY2NiICVwXG4iLCBfX2Z1
bmNfXywgY2NiKTsKIAltdHhfYXNzZXJ0KCZzYy0+bXBzX210eCwgTUFfT1dORUQpOwogCiAJY3Np
byA9ICZjY2ItPmNzaW87CiAJdGFyZyA9ICZzYXNzYy0+dGFyZ2V0c1tjc2lvLT5jY2JfaC50YXJn
ZXRfaWRdOworCW1wc19kcHJpbnQoc2MsIE1QU19UUkFDRSwgIiVzIGNjYiAlcCB0YXJnZXQgZmxh
ZyAleFxuIiwgX19mdW5jX18sIGNjYiwgdGFyZy0+ZmxhZ3MpOwogCWlmICh0YXJnLT5oYW5kbGUg
PT0gMHgwKSB7CiAJCW1wc19kcHJpbnQoc2MsIE1QU19UUkFDRSwgIiVzIE5VTEwgaGFuZGxlIGZv
ciB0YXJnZXQgJXVcbiIsIAogCQkgICAgX19mdW5jX18sIGNzaW8tPmNjYl9oLnRhcmdldF9pZCk7
CkBAIC0xNDg3LDYgKzE1ODksMTMgQEAgbXBzc2FzX2FjdGlvbl9zY3NpaW8oc3RydWN0IG1wc3Nh
c19zb2Z0YwogCQl4cHRfZG9uZShjY2IpOwogCQlyZXR1cm47CiAJfQorCWlmICh0YXJnLT5mbGFn
cyAmIE1QU19UQVJHRVRfRkxBR1NfUkFJRF9DT01QT05FTlQpIHsKKwkJbXBzX2RwcmludChzYywg
TVBTX1RSQUNFLCAiJXMgUmFpZCBjb21wb25lbnQgbm8gU0NTSSBJTyBzdXBwb3J0ZWQgJXVcbiIs
IAorCQkgICAgX19mdW5jX18sIGNzaW8tPmNjYl9oLnRhcmdldF9pZCk7CisJCWNzaW8tPmNjYl9o
LnN0YXR1cyA9IENBTV9USURfSU5WQUxJRDsKKwkJeHB0X2RvbmUoY2NiKTsKKwkJcmV0dXJuOwor
CX0KIAkvKgogCSAqIElmIGRldmluZm8gaXMgMCB0aGlzIHdpbGwgYmUgYSB2b2x1bWUuICBJbiB0
aGF0IGNhc2UgZG9uJ3QgdGVsbCBDQU0KIAkgKiB0aGF0IHRoZSB2b2x1bWUgaGFzIHRpbWVkIG91
dC4gIFdlIHdhbnQgdm9sdW1lcyB0byBiZSBlbnVtZXJhdGVkCkBAIC0xNjg0LDYgKzE3OTMsMTk4
IEBAIG1wc3Nhc19hY3Rpb25fc2NzaWlvKHN0cnVjdCBtcHNzYXNfc29mdGMKIH0KIAogc3RhdGlj
IHZvaWQKK21wc19yZXNwb25zZV9jb2RlKHN0cnVjdCBtcHNfc29mdGMgKnNjLCB1OCByZXNwb25z
ZV9jb2RlKQoreworICAgICAgICBjaGFyICpkZXNjOworIAorICAgICAgICBzd2l0Y2ggKHJlc3Bv
bnNlX2NvZGUpIHsKKyAgICAgICAgY2FzZSBNUEkyX1NDU0lUQVNLTUdNVF9SU1BfVE1fQ09NUExF
VEU6CisgICAgICAgICAgICAgICAgZGVzYyA9ICJ0YXNrIG1hbmFnZW1lbnQgcmVxdWVzdCBjb21w
bGV0ZWQiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1QSTJfU0NTSVRB
U0tNR01UX1JTUF9JTlZBTElEX0ZSQU1FOgorICAgICAgICAgICAgICAgIGRlc2MgPSAiaW52YWxp
ZCBmcmFtZSI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVBJMl9TQ1NJ
VEFTS01HTVRfUlNQX1RNX05PVF9TVVBQT1JURUQ6CisgICAgICAgICAgICAgICAgZGVzYyA9ICJ0
YXNrIG1hbmFnZW1lbnQgcmVxdWVzdCBub3Qgc3VwcG9ydGVkIjsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBNUEkyX1NDU0lUQVNLTUdNVF9SU1BfVE1fRkFJTEVEOgorICAg
ICAgICAgICAgICAgIGRlc2MgPSAidGFzayBtYW5hZ2VtZW50IHJlcXVlc3QgZmFpbGVkIjsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUEkyX1NDU0lUQVNLTUdNVF9SU1Bf
VE1fU1VDQ0VFREVEOgorICAgICAgICAgICAgICAgIGRlc2MgPSAidGFzayBtYW5hZ2VtZW50IHJl
cXVlc3Qgc3VjY2VlZGVkIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBN
UEkyX1NDU0lUQVNLTUdNVF9SU1BfVE1fSU5WQUxJRF9MVU46CisgICAgICAgICAgICAgICAgZGVz
YyA9ICJpbnZhbGlkIGx1biI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
MHhBOgorICAgICAgICAgICAgICAgIGRlc2MgPSAib3ZlcmxhcHBlZCB0YWcgYXR0ZW1wdGVkIjsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUEkyX1NDU0lUQVNLTUdNVF9S
U1BfSU9fUVVFVUVEX09OX0lPQzoKKyAgICAgICAgICAgICAgICBkZXNjID0gInRhc2sgcXVldWVk
LCBob3dldmVyIG5vdCBzZW50IHRvIHRhcmdldCI7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgZGVzYyA9ICJ1bmtub3duIjsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCQltcHNfZHByaW50KHNjLCBNUFNfSU5GTywg
InJlc3BvbnNlX2NvZGUoMHglMDF4KTogJXNcbiIsCisgICAgICAgICAgICAgICAgcmVzcG9uc2Vf
Y29kZSwgZGVzYyk7Cit9CisvKioKKyAqIG1wc19zY19mYWlsZWRfaW9faW5mbyAtIHRyYW5zbGF0
ZWQgbm9uLXN1Y2Nlc2Z1bGwgU0NTSV9JTyByZXF1ZXN0CisgKi8KK3N0YXRpYyB2b2lkCittcHNf
c2NfZmFpbGVkX2lvX2luZm8oc3RydWN0IG1wc19zb2Z0YyAqc2MsIHN0cnVjdCBjY2Jfc2NzaWlv
ICpjc2lvLAorICAgIE1waTJTQ1NJSU9SZXBseV90ICptcGlfcmVwbHkpCit7CisJdTMyIHJlc3Bv
bnNlX2luZm87CisJdTggKnJlc3BvbnNlX2J5dGVzOworCXUxNiBpb2Nfc3RhdHVzID0gbGUxNnRv
aChtcGlfcmVwbHktPklPQ1N0YXR1cykgJgorCSAgICBNUEkyX0lPQ1NUQVRVU19NQVNLOworCXU4
IHNjc2lfc3RhdGUgPSBtcGlfcmVwbHktPlNDU0lTdGF0ZTsKKwl1OCBzY3NpX3N0YXR1cyA9IG1w
aV9yZXBseS0+U0NTSVN0YXR1czsKKwljaGFyICpkZXNjX2lvY19zdGF0ZSA9IE5VTEw7CisJY2hh
ciAqZGVzY19zY3NpX3N0YXR1cyA9IE5VTEw7CisJY2hhciAqZGVzY19zY3NpX3N0YXRlID0gc2Mt
PnRtcF9zdHJpbmc7CisJdTMyIGxvZ19pbmZvID0gbGUzMnRvaChtcGlfcmVwbHktPklPQ0xvZ0lu
Zm8pOworCQorCWlmIChsb2dfaW5mbyA9PSAweDMxMTcwMDAwKQorCQlyZXR1cm47CisKKwlzd2l0
Y2ggKGlvY19zdGF0dXMpIHsKKwljYXNlIE1QSTJfSU9DU1RBVFVTX1NVQ0NFU1M6CisJCWRlc2Nf
aW9jX3N0YXRlID0gInN1Y2Nlc3MiOworCQlicmVhazsKKwljYXNlIE1QSTJfSU9DU1RBVFVTX0lO
VkFMSURfRlVOQ1RJT046CisJCWRlc2NfaW9jX3N0YXRlID0gImludmFsaWQgZnVuY3Rpb24iOwor
CQlicmVhazsKKwljYXNlIE1QSTJfSU9DU1RBVFVTX1NDU0lfUkVDT1ZFUkVEX0VSUk9SOgorCQlk
ZXNjX2lvY19zdGF0ZSA9ICJzY3NpIHJlY292ZXJlZCBlcnJvciI7CisJCWJyZWFrOworCWNhc2Ug
TVBJMl9JT0NTVEFUVVNfU0NTSV9JTlZBTElEX0RFVkhBTkRMRToKKwkJZGVzY19pb2Nfc3RhdGUg
PSAic2NzaSBpbnZhbGlkIGRldiBoYW5kbGUiOworCQlicmVhazsKKwljYXNlIE1QSTJfSU9DU1RB
VFVTX1NDU0lfREVWSUNFX05PVF9USEVSRToKKwkJZGVzY19pb2Nfc3RhdGUgPSAic2NzaSBkZXZp
Y2Ugbm90IHRoZXJlIjsKKwkJYnJlYWs7CisJY2FzZSBNUEkyX0lPQ1NUQVRVU19TQ1NJX0RBVEFf
T1ZFUlJVTjoKKwkJZGVzY19pb2Nfc3RhdGUgPSAic2NzaSBkYXRhIG92ZXJydW4iOworCQlicmVh
azsKKwljYXNlIE1QSTJfSU9DU1RBVFVTX1NDU0lfREFUQV9VTkRFUlJVTjoKKwkJZGVzY19pb2Nf
c3RhdGUgPSAic2NzaSBkYXRhIHVuZGVycnVuIjsKKwkJYnJlYWs7CisJY2FzZSBNUEkyX0lPQ1NU
QVRVU19TQ1NJX0lPX0RBVEFfRVJST1I6CisJCWRlc2NfaW9jX3N0YXRlID0gInNjc2kgaW8gZGF0
YSBlcnJvciI7CisJCWJyZWFrOworCWNhc2UgTVBJMl9JT0NTVEFUVVNfU0NTSV9QUk9UT0NPTF9F
UlJPUjoKKwkJZGVzY19pb2Nfc3RhdGUgPSAic2NzaSBwcm90b2NvbCBlcnJvciI7CisJCWJyZWFr
OworCWNhc2UgTVBJMl9JT0NTVEFUVVNfU0NTSV9UQVNLX1RFUk1JTkFURUQ6CisJCWRlc2NfaW9j
X3N0YXRlID0gInNjc2kgdGFzayB0ZXJtaW5hdGVkIjsKKwkJYnJlYWs7CisJY2FzZSBNUEkyX0lP
Q1NUQVRVU19TQ1NJX1JFU0lEVUFMX01JU01BVENIOgorCQlkZXNjX2lvY19zdGF0ZSA9ICJzY3Np
IHJlc2lkdWFsIG1pc21hdGNoIjsKKwkJYnJlYWs7CisJY2FzZSBNUEkyX0lPQ1NUQVRVU19TQ1NJ
X1RBU0tfTUdNVF9GQUlMRUQ6CisJCWRlc2NfaW9jX3N0YXRlID0gInNjc2kgdGFzayBtZ210IGZh
aWxlZCI7CisJCWJyZWFrOworCWNhc2UgTVBJMl9JT0NTVEFUVVNfU0NTSV9JT0NfVEVSTUlOQVRF
RDoKKwkJZGVzY19pb2Nfc3RhdGUgPSAic2NzaSBpb2MgdGVybWluYXRlZCI7CisJCWJyZWFrOwor
CWNhc2UgTVBJMl9JT0NTVEFUVVNfU0NTSV9FWFRfVEVSTUlOQVRFRDoKKwkJZGVzY19pb2Nfc3Rh
dGUgPSAic2NzaSBleHQgdGVybWluYXRlZCI7CisJCWJyZWFrOworCWNhc2UgTVBJMl9JT0NTVEFU
VVNfRUVEUF9HVUFSRF9FUlJPUjoKKwkJZGVzY19pb2Nfc3RhdGUgPSAiZWVkcCBndWFyZCBlcnJv
ciI7CisJCWJyZWFrOworCWNhc2UgTVBJMl9JT0NTVEFUVVNfRUVEUF9SRUZfVEFHX0VSUk9SOgor
CQlkZXNjX2lvY19zdGF0ZSA9ICJlZWRwIHJlZiB0YWcgZXJyb3IiOworCQlicmVhazsKKwljYXNl
IE1QSTJfSU9DU1RBVFVTX0VFRFBfQVBQX1RBR19FUlJPUjoKKwkJZGVzY19pb2Nfc3RhdGUgPSAi
ZWVkcCBhcHAgdGFnIGVycm9yIjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZGVzY19pb2Nfc3Rh
dGUgPSAidW5rbm93biI7CisJCWJyZWFrOworCX0KKworCXN3aXRjaCAoc2NzaV9zdGF0dXMpIHsK
KwljYXNlIE1QSTJfU0NTSV9TVEFUVVNfR09PRDoKKwkJZGVzY19zY3NpX3N0YXR1cyA9ICJnb29k
IjsKKwkJYnJlYWs7CisJY2FzZSBNUEkyX1NDU0lfU1RBVFVTX0NIRUNLX0NPTkRJVElPTjoKKwkJ
ZGVzY19zY3NpX3N0YXR1cyA9ICJjaGVjayBjb25kaXRpb24iOworCQlicmVhazsKKwljYXNlIE1Q
STJfU0NTSV9TVEFUVVNfQ09ORElUSU9OX01FVDoKKwkJZGVzY19zY3NpX3N0YXR1cyA9ICJjb25k
aXRpb24gbWV0IjsKKwkJYnJlYWs7CisJY2FzZSBNUEkyX1NDU0lfU1RBVFVTX0JVU1k6CisJCWRl
c2Nfc2NzaV9zdGF0dXMgPSAiYnVzeSI7CisJCWJyZWFrOworCWNhc2UgTVBJMl9TQ1NJX1NUQVRV
U19JTlRFUk1FRElBVEU6CisJCWRlc2Nfc2NzaV9zdGF0dXMgPSAiaW50ZXJtZWRpYXRlIjsKKwkJ
YnJlYWs7CisJY2FzZSBNUEkyX1NDU0lfU1RBVFVTX0lOVEVSTUVESUFURV9DT05ETUVUOgorCQlk
ZXNjX3Njc2lfc3RhdHVzID0gImludGVybWVkaWF0ZSBjb25kbWV0IjsKKwkJYnJlYWs7CisJY2Fz
ZSBNUEkyX1NDU0lfU1RBVFVTX1JFU0VSVkFUSU9OX0NPTkZMSUNUOgorCQlkZXNjX3Njc2lfc3Rh
dHVzID0gInJlc2VydmF0aW9uIGNvbmZsaWN0IjsKKwkJYnJlYWs7CisJY2FzZSBNUEkyX1NDU0lf
U1RBVFVTX0NPTU1BTkRfVEVSTUlOQVRFRDoKKwkJZGVzY19zY3NpX3N0YXR1cyA9ICJjb21tYW5k
IHRlcm1pbmF0ZWQiOworCQlicmVhazsKKwljYXNlIE1QSTJfU0NTSV9TVEFUVVNfVEFTS19TRVRf
RlVMTDoKKwkJZGVzY19zY3NpX3N0YXR1cyA9ICJ0YXNrIHNldCBmdWxsIjsKKwkJYnJlYWs7CisJ
Y2FzZSBNUEkyX1NDU0lfU1RBVFVTX0FDQV9BQ1RJVkU6CisJCWRlc2Nfc2NzaV9zdGF0dXMgPSAi
YWNhIGFjdGl2ZSI7CisJCWJyZWFrOworCWNhc2UgTVBJMl9TQ1NJX1NUQVRVU19UQVNLX0FCT1JU
RUQ6CisJCWRlc2Nfc2NzaV9zdGF0dXMgPSAidGFzayBhYm9ydGVkIjsKKwkJYnJlYWs7CisJZGVm
YXVsdDoKKwkJZGVzY19zY3NpX3N0YXR1cyA9ICJ1bmtub3duIjsKKwkJYnJlYWs7CisJfQorCisJ
ZGVzY19zY3NpX3N0YXRlWzBdID0gJ1wwJzsKKwlpZiAoIXNjc2lfc3RhdGUpCisJCWRlc2Nfc2Nz
aV9zdGF0ZSA9ICIgIjsKKwlpZiAoc2NzaV9zdGF0ZSAmIE1QSTJfU0NTSV9TVEFURV9SRVNQT05T
RV9JTkZPX1ZBTElEKQorCQlzdHJjYXQoZGVzY19zY3NpX3N0YXRlLCAicmVzcG9uc2UgaW5mbyAi
KTsKKwlpZiAoc2NzaV9zdGF0ZSAmIE1QSTJfU0NTSV9TVEFURV9URVJNSU5BVEVEKQorCQlzdHJj
YXQoZGVzY19zY3NpX3N0YXRlLCAic3RhdGUgdGVybWluYXRlZCAiKTsKKwlpZiAoc2NzaV9zdGF0
ZSAmIE1QSTJfU0NTSV9TVEFURV9OT19TQ1NJX1NUQVRVUykKKwkJc3RyY2F0KGRlc2Nfc2NzaV9z
dGF0ZSwgIm5vIHN0YXR1cyAiKTsKKwlpZiAoc2NzaV9zdGF0ZSAmIE1QSTJfU0NTSV9TVEFURV9B
VVRPU0VOU0VfRkFJTEVEKQorCQlzdHJjYXQoZGVzY19zY3NpX3N0YXRlLCAiYXV0b3NlbnNlIGZh
aWxlZCAiKTsKKwlpZiAoc2NzaV9zdGF0ZSAmIE1QSTJfU0NTSV9TVEFURV9BVVRPU0VOU0VfVkFM
SUQpCisJCXN0cmNhdChkZXNjX3Njc2lfc3RhdGUsICJhdXRvc2Vuc2UgdmFsaWQgIik7CisKKwlt
cHNfZHByaW50KHNjLCBNUFNfSU5GTywgIlx0aGFuZGxlKDB4JTA0eCksIGlvY19zdGF0dXMoJXMp
KDB4JTA0eCksIFxuIiwKKwkJbGUxNnRvaChtcGlfcmVwbHktPkRldkhhbmRsZSksCisJICAgIGRl
c2NfaW9jX3N0YXRlLCBpb2Nfc3RhdHVzKTsKKwkvKiBXZSBjYW4gYWRkIG1vcmUgZGV0YWlsIGFi
b3V0IHVuZGVyZmxvdyBkYXRhIGhlcmUKKwkgKiBUTy1ETworCSAqICovCisJbXBzX2RwcmludChz
YywgTVBTX0lORk8sICJcdHNjc2lfc3RhdHVzKCVzKSgweCUwMngpLCAiCisJICAgICJzY3NpX3N0
YXRlKCVzKSgweCUwMngpXG4iLCBkZXNjX3Njc2lfc3RhdHVzLAorCSAgICBzY3NpX3N0YXR1cywg
ZGVzY19zY3NpX3N0YXRlLCBzY3NpX3N0YXRlKTsKKworCWlmIChzYy0+bXBzX2RlYnVnICYgTVBT
X0lORk8gJiYKKwkJc2NzaV9zdGF0ZSAmIE1QSTJfU0NTSV9TVEFURV9BVVRPU0VOU0VfVkFMSUQp
IHsKKwkJbXBzX2RwcmludChzYywgTVBTX0lORk8sICItPiBTZW5zZSBCdWZmZXIgRGF0YSA6IFN0
YXJ0IDpcbiIpOworCQlzY3NpX3NlbnNlX3ByaW50KGNzaW8pOworCQltcHNfZHByaW50KHNjLCBN
UFNfSU5GTywgIi0+IFNlbnNlIEJ1ZmZlciBEYXRhIDogRW5kIDpcbiIpOworCX0KKworCWlmIChz
Y3NpX3N0YXRlICYgTVBJMl9TQ1NJX1NUQVRFX1JFU1BPTlNFX0lORk9fVkFMSUQpIHsKKwkJcmVz
cG9uc2VfaW5mbyA9IGxlMzJ0b2gobXBpX3JlcGx5LT5SZXNwb25zZUluZm8pOworCQlyZXNwb25z
ZV9ieXRlcyA9ICh1OCAqKSZyZXNwb25zZV9pbmZvOworCQltcHNfcmVzcG9uc2VfY29kZShzYyxy
ZXNwb25zZV9ieXRlc1swXSk7CisJfQorfQorCitzdGF0aWMgdm9pZAogbXBzc2FzX3Njc2lpb19j
b21wbGV0ZShzdHJ1Y3QgbXBzX3NvZnRjICpzYywgc3RydWN0IG1wc19jb21tYW5kICpjbSkKIHsK
IAlNUEkyX1NDU0lfSU9fUkVQTFkgKnJlcDsKQEAgLTIwMTgsNiArMjMxOSw4IEBAIG1wc3Nhc19z
Y3NpaW9fY29tcGxldGUoc3RydWN0IG1wc19zb2Z0YyAKIAkJY2NiLT5jY2JfaC5zdGF0dXMgPSBD
QU1fUkVRX0NNUF9FUlI7CiAJCWJyZWFrOwogCX0KKwkKKwltcHNfc2NfZmFpbGVkX2lvX2luZm8o
c2MsY3NpbyxyZXApOwogCiAJaWYgKHNhc3NjLT5mbGFncyAmIE1QU1NBU19RVUVVRV9GUk9aRU4p
IHsKIAkJY2NiLT5jY2JfaC5zdGF0dXMgfD0gQ0FNX1JFTEVBU0VfU0lNUTsKQEAgLTI3OTksMTcg
KzMxMDIsMjYgQEAgbXBzc2FzX3NjYW5uZXJfdGhyZWFkKHZvaWQgKmFyZykKIAogCW1wc19sb2Nr
KHNjKTsKIAlmb3IgKDs7KSB7CisJCS8qIFNsZWVwIGZvciAxIHNlY29uZCBhbmQgY2hlY2sgdGhl
IHF1ZXVlIHN0YXR1cyovCiAJCW1zbGVlcCgmc2Fzc2MtPmNjYl9zY2FucSwgJnNjLT5tcHNfbXR4
LCBQUklCSU8sCi0JCSAgICAgICAibXBzX3NjYW5xIiwgMCk7CisJCSAgICAgICAibXBzX3NjYW5x
IiwgMSAqIGh6KTsKIAkJaWYgKHNhc3NjLT5mbGFncyAmIE1QU1NBU19TSFVURE9XTikgewogCQkJ
bXBzX2RwcmludChzYywgTVBTX1RSQUNFLCAiU2Nhbm5lciBzaHV0dGluZyBkb3duXG4iKTsKIAkJ
CWJyZWFrOwogCQl9CituZXh0X3dvcms6CisJCS8vIEdldCBmaXJzdCB3b3JrLgogCQljY2IgPSAo
dW5pb24gY2NiICopVEFJTFFfRklSU1QoJnNhc3NjLT5jY2Jfc2NhbnEpOwogCQlpZiAoY2NiID09
IE5VTEwpCiAJCQljb250aW51ZTsKKwkJLy8gR290IGZpcnN0IHdvcmsuCiAJCVRBSUxRX1JFTU9W
RSgmc2Fzc2MtPmNjYl9zY2FucSwgJmNjYi0+Y2NiX2gsIHNpbV9saW5rcy50cWUpOwogCQl4cHRf
YWN0aW9uKGNjYik7CisJCWlmIChzYXNzYy0+ZmxhZ3MgJiBNUFNTQVNfU0hVVERPV04pIHsKKwkJ
CW1wc19kcHJpbnQoc2MsIE1QU19UUkFDRSwgIlNjYW5uZXIgc2h1dHRpbmcgZG93blxuIik7CisJ
CQlicmVhazsKKwkJfQorCQlnb3RvIG5leHRfd29yazsKIAl9CiAKIAlzYXNzYy0+ZmxhZ3MgJj0g
fk1QU1NBU19TQ0FOVEhSRUFEOwpAQCAtMzAwOSw3ICszMzIxLDcgQEAgbXBzc2FzX2NoZWNrX2Vl
ZHAoc3RydWN0IG1wc3Nhc19zb2Z0YyAqcwogCQkJCX0KIAkJCQlpZiAoIWZvdW5kX2x1bikgewog
CQkJCQlsdW4gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBtcHNzYXNfbHVuKSwKLQkJCQkJICAgIE1f
TVBUMiwgTV9XQUlUT0sgfCBNX1pFUk8pOworCQkJCQkgICAgTV9NUFQyLCBNX05PV0FJVCB8IE1f
WkVSTyk7CiAJCQkJCWlmIChsdW4gPT0gTlVMTCkgewogCQkJCQkJbXBzX2RwcmludChzYywgTVBT
X0ZBVUxULAogCQkJCQkJICAgICJVbmFibGUgdG8gYWxsb2MgTFVOIGZvciAiCkBAIC0zMDg0LDYg
KzMzOTYsMjAgQEAgbXBzc2FzX3JlYWRfY2FwX2RvbmUoc3RydWN0IGNhbV9wZXJpcGggKgogCiAJ
aWYgKGRvbmVfY2NiID09IE5VTEwpCiAJCXJldHVybjsKKwkKKwkvKiBEcml2ZXIgbmVlZCB0byBy
ZWxlYXNlIGRldnEsIGl0IFNjc2kgY29tbWFuZCBpcworCSAqIGdlbmVyYXRlZCBieSBkcml2ZXIg
aW50ZXJuYWxseS4KKwkgKiBDdXJyZW50bHkgdGhlcmUgaXMgYSBzaW5nbGUgcGxhY2Ugd2hlcmUg
ZHJpdmVyCisJICogY2FsbHMgc2NzaSBjb21tYW5kIGludGVybmFsbHkuIEluIGZ1dHVyZSBpZiBk
cml2ZXIKKwkgKiBjYWxscyBtb3JlIHNjc2kgY29tbWFuZCBpbnRlcm5hbGx5LCBpdCBuZWVkcyB0
byByZWxlYXNlCisJICogZGV2cSBpbnRlcm5hbGx5LCBzaW5jZSB0aG9zZSBjb21tYW5kIHdpbGwg
bm90IGdvIGJhY2sgdG8KKwkgKiBjYW1fcGVyaXBoLgorCSAqLworCWlmICgoZG9uZV9jY2ItPmNj
Yl9oLnN0YXR1cyAmIENBTV9ERVZfUUZSWk4pICkgeworICAgICAgICAJZG9uZV9jY2ItPmNjYl9o
LnN0YXR1cyAmPSB+Q0FNX0RFVl9RRlJaTjsKKwkJeHB0X3JlbGVhc2VfZGV2cShkb25lX2NjYi0+
Y2NiX2gucGF0aCwKKwkJCSAgICAgICAJLypjb3VudCovIDEsIC8qcnVuX3F1ZXVlKi9UUlVFKTsK
Kwl9CiAKIAlyY2FwX2J1ZiA9IChzdHJ1Y3Qgc2NzaV9yZWFkX2NhcGFjaXR5X2VlZHAgKilkb25l
X2NjYi0+Y3Npby5kYXRhX3B0cjsKIApkaWZmIC1hcnVwIG1wc18xMS4yNTUuMDMuMDAtZmJzZC9t
cHNfc2FzLmggbXBzXzEzLjAwLjAwLjAwLWZic2QvbXBzX3Nhcy5oCi0tLSBtcHNfMTEuMjU1LjAz
LjAwLWZic2QvbXBzX3Nhcy5oCTIwMTItMDItMDYgMjE6NDg6MDkuMDUxNjAzMzM3ICswNTMwCisr
KyBtcHNfMTMuMDAuMDAuMDAtZmJzZC9tcHNfc2FzLmgJMjAxMi0wMi0wNiAyMTo0NzozNC42MTU5
OTQxMTkgKzA1MzAKQEAgLTQ5LDggKzQ5LDExIEBAIHN0cnVjdCBtcHNzYXNfdGFyZ2V0IHsKICNk
ZWZpbmUgTVBTU0FTX1RBUkdFVF9JTlJFU0VUCSgxIDw8IDEpCiAjZGVmaW5lIE1QU1NBU19UQVJH
RVRfSU5ESUFHUkVTRVQgKDEgPDwgMikKICNkZWZpbmUgTVBTU0FTX1RBUkdFVF9JTlJFTU9WQUwJ
KDEgPDwgMykKKyNkZWZpbmUgTVBTX1RBUkdFVF9GTEFHU19SQUlEX0NPTVBPTkVOVCAoMSA8PCA0
KQorI2RlZmluZSBNUFNfVEFSR0VUX0ZMQUdTX1ZPTFVNRSAgICAgICAgICgxIDw8IDUpCiAjZGVm
aW5lIE1QU1NBU19UQVJHRVRfSU5SRUNPVkVSWSAoTVBTU0FTX1RBUkdFVF9JTkFCT1JUIHwgXAog
ICAgIE1QU1NBU19UQVJHRVRfSU5SRVNFVCB8IE1QU1NBU19UQVJHRVRfSU5DSElQUkVTRVQpCisK
ICNkZWZpbmUgTVBTU0FTX1RBUkdFVF9BREQgICAgICAgKDEgPDwgMjkpCiAjZGVmaW5lIE1QU1NB
U19UQVJHRVRfUkVNT1ZFICAgICgxIDw8IDMwKQogCXVpbnQxNl90CXRpZDsKZGlmZiAtYXJ1cCBt
cHNfMTEuMjU1LjAzLjAwLWZic2QvbXBzX3Nhc19sc2kuYyBtcHNfMTMuMDAuMDAuMDAtZmJzZC9t
cHNfc2FzX2xzaS5jCi0tLSBtcHNfMTEuMjU1LjAzLjAwLWZic2QvbXBzX3Nhc19sc2kuYwkyMDEy
LTAyLTA2IDIxOjQ4OjA5LjA1NTU4MjEwOCArMDUzMAorKysgbXBzXzEzLjAwLjAwLjAwLWZic2Qv
bXBzX3Nhc19sc2kuYwkyMDEyLTAyLTA2IDIxOjQ3OjM0LjYxNjk5MTA0NyArMDUzMApAQCAtMTA3
LDcgKzEwNyw3IEBAIHN0cnVjdCBfYXRhX2lkZW50aWZ5X2RldmljZV9kYXRhIHsKIAl1MTYgbW9k
ZWxfbnVtYmVyWzIwXTsJLyogMjctNDYqLwogCXUxNiByZXNlcnZlZDNbMjA5XTsJLyogNDctMjU1
Ki8KIH07Ci0KK3N0YXRpYyB1MzIgZXZlbnRfY291bnQ7CiBzdGF0aWMgdm9pZCBtcHNzYXNfZndf
d29yayhzdHJ1Y3QgbXBzX3NvZnRjICpzYywKICAgICBzdHJ1Y3QgbXBzX2Z3X2V2ZW50X3dvcmsg
KmZ3X2V2ZW50KTsKIHN0YXRpYyB2b2lkIG1wc3Nhc19md19ldmVudF9mcmVlKHN0cnVjdCBtcHNf
c29mdGMgKiwKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgaW50IG1wc3Nhc19nZXRfc2F0YV9p
ZGVudGlmeShzdHJ1CiBpbnQgbXBzc2FzX2dldF9zYXNfYWRkcmVzc19mb3Jfc2F0YV9kaXNrKHN0
cnVjdCBtcHNfc29mdGMgKnNjLAogICAgIHU2NCAqc2FzX2FkZHJlc3MsIHUxNiBoYW5kbGUsIHUz
MiBkZXZpY2VfaW5mbyk7CiBzdGF0aWMgaW50IG1wc3Nhc192b2x1bWVfYWRkKHN0cnVjdCBtcHNf
c29mdGMgKnNjLAotICAgIE1waTJFdmVudElyQ29uZmlnRWxlbWVudF90ICplbGVtZW50KTsKKyAg
ICB1MTYgaGFuZGxlKTsKIAogdm9pZAogbXBzc2FzX2V2dF9oYW5kbGVyKHN0cnVjdCBtcHNfc29m
dGMgKnNjLCB1aW50cHRyX3QgZGF0YSwKQEAgLTE5MSw2ICsxOTEsOCBAQCBtcHNzYXNfZndfd29y
ayhzdHJ1Y3QgbXBzX3NvZnRjICpzYywgc3RyCiAJc3RydWN0IG1wc3Nhc19zb2Z0YyAqc2Fzc2M7
CiAJc2Fzc2MgPSBzYy0+c2Fzc2M7CiAKKwltcHNfZHByaW50KHNjLCBNUFNfSU5GTywgIiglZCkt
PiglcykgV29ya2luZyBvbiAgRXZlbnQ6IFsleF1cbiIsCisJCQlldmVudF9jb3VudCsrLF9fZnVu
Y19fLGZ3X2V2ZW50LT5ldmVudCk7CiAJc3dpdGNoIChmd19ldmVudC0+ZXZlbnQpIHsKIAljYXNl
IE1QSTJfRVZFTlRfU0FTX1RPUE9MT0dZX0NIQU5HRV9MSVNUOiAKIAl7CkBAIC0yODQsNyArMjg2
LDcgQEAgbXBzc2FzX2Z3X3dvcmsoc3RydWN0IG1wc19zb2Z0YyAqc2MsIHN0cgogCQkJY2FzZSBN
UEkyX0VWRU5UX0lSX0NIQU5HRV9SQ19WT0xVTUVfQ1JFQVRFRDoKIAkJCWNhc2UgTVBJMl9FVkVO
VF9JUl9DSEFOR0VfUkNfQURERUQ6CiAJCQkJaWYgKCFmb3JlaWduX2NvbmZpZykgewotCQkJCQlp
ZiAobXBzc2FzX3ZvbHVtZV9hZGQoc2MsIGVsZW1lbnQpKSB7CisJCQkJCWlmIChtcHNzYXNfdm9s
dW1lX2FkZChzYywgbGUxNnRvaChlbGVtZW50LT5Wb2xEZXZIYW5kbGUpKSl7CiAJCQkJCQlwcmlu
dGYoIiVzOiBmYWlsZWQgdG8gYWRkIFJBSUQgIgogCQkJCQkJICAgICJ2b2x1bWUgd2l0aCBoYW5k
bGUgMHgleFxuIiwKIAkJCQkJCSAgICBfX2Z1bmNfXywgbGUxNnRvaChlbGVtZW50LT4KQEAgLTMx
OSwxMiArMzIxLDE4IEBAIG1wc3Nhc19md193b3JrKHN0cnVjdCBtcHNfc29mdGMgKnNjLCBzdHIK
IAkJCQl9CiAJCQkJYnJlYWs7CiAJCQljYXNlIE1QSTJfRVZFTlRfSVJfQ0hBTkdFX1JDX1BEX0NS
RUFURUQ6CisJCQljYXNlIE1QSTJfRVZFTlRfSVJfQ0hBTkdFX1JDX0hJREU6CiAJCQkJLyoKIAkJ
CQkgKiBQaHlzIERpc2sgb2YgYSB2b2x1bWUgaGFzIGJlZW4gY3JlYXRlZC4gIEhpZGUKIAkJCQkg
KiBpdCBmcm9tIHRoZSBPUy4KIAkJCQkgKi8KLQkJCQltcHNzYXNfcHJlcGFyZV9yZW1vdmUoc2Fz
c2MsIGVsZW1lbnQtPgotCQkJCSAgICBQaHlzRGlza0RldkhhbmRsZSk7CisJCQkJdGFyZyA9IG1w
c3Nhc19maW5kX3RhcmdldF9ieV9oYW5kbGUoc2Fzc2MsIDAsIGVsZW1lbnQtPlBoeXNEaXNrRGV2
SGFuZGxlKTsKKwkJCQlpZiAodGFyZyA9PSBOVUxMKSAKKwkJCQkJYnJlYWs7CisKKwkJCQl0YXJn
LT5mbGFncyB8PSBNUFNfVEFSR0VUX0ZMQUdTX1JBSURfQ09NUE9ORU5UOworCQkJCW1wc3Nhc19y
ZXNjYW5fdGFyZ2V0KHNjLCB0YXJnKTsKKwkJCQkKIAkJCQlicmVhazsKIAkJCWNhc2UgTVBJMl9F
VkVOVF9JUl9DSEFOR0VfUkNfUERfREVMRVRFRDoKIAkJCQkvKgpAQCAtMzc5LDYgKzM4NywzNSBA
QCBtcHNzYXNfZndfd29yayhzdHJ1Y3QgbXBzX3NvZnRjICpzYywgc3RyCiAJCQkgICAgImhhbmRs
ZSAweCV4IiwgZXZlbnRfZGF0YS0+UHJldmlvdXNWYWx1ZSwKIAkJCSAgICBldmVudF9kYXRhLT5O
ZXdWYWx1ZSwKIAkJCSAgICBldmVudF9kYXRhLT5Wb2xEZXZIYW5kbGUpOworCQkJCXUzMiBzdGF0
ZTsKKwkJCQlzdHJ1Y3QgbXBzc2FzX3RhcmdldCAqdGFyZzsKKwkJCQlzdGF0ZSA9IGxlMzJ0b2go
ZXZlbnRfZGF0YS0+TmV3VmFsdWUpOworCQkJCXN3aXRjaCAoc3RhdGUpIHsKKwkJCQljYXNlIE1Q
STJfUkFJRF9WT0xfU1RBVEVfTUlTU0lORzoKKwkJCQljYXNlIE1QSTJfUkFJRF9WT0xfU1RBVEVf
RkFJTEVEOgorCQkJCQltcHNzYXNfcHJlcGFyZV92b2x1bWVfcmVtb3ZlKHNhc3NjLCBldmVudF9k
YXRhLT4KKwkJCQkJCQlWb2xEZXZIYW5kbGUpOworCQkJCQlicmVhazsKKwkJIAorCQkJCWNhc2Ug
TVBJMl9SQUlEX1ZPTF9TVEFURV9PTkxJTkU6CisJCQkJY2FzZSBNUEkyX1JBSURfVk9MX1NUQVRF
X0RFR1JBREVEOgorCQkJCWNhc2UgTVBJMl9SQUlEX1ZPTF9TVEFURV9PUFRJTUFMOgorCQkJCQl0
YXJnID0gbXBzc2FzX2ZpbmRfdGFyZ2V0X2J5X2hhbmRsZShzYXNzYywgMCwgZXZlbnRfZGF0YS0+
Vm9sRGV2SGFuZGxlKTsKKwkJCQkJaWYgKHRhcmcpIHsKKwkJCQkJCXByaW50ZigiJXMgJWQ6IFZv
bHVtZSBoYW5kbGUgMHgleCBpcyBhbHJlYWR5IGFkZGVkIFxuIiwKKwkJCQkJCQkgICAgICAgCV9f
ZnVuY19fLCBfX0xJTkVfXyAsIGV2ZW50X2RhdGEtPlZvbERldkhhbmRsZSk7CisJCQkJCQlicmVh
azsKKwkJCQkJfQorCQkJCQlpZiAobXBzc2FzX3ZvbHVtZV9hZGQoc2MsIGxlMTZ0b2goZXZlbnRf
ZGF0YS0+Vm9sRGV2SGFuZGxlKSkpIHsKKwkJCQkJCXByaW50ZigiJXM6IGZhaWxlZCB0byBhZGQg
UkFJRCAiCisJCQkJCQkJInZvbHVtZSB3aXRoIGhhbmRsZSAweCV4XG4iLAorCQkJCQkJCV9fZnVu
Y19fLCBsZTE2dG9oKGV2ZW50X2RhdGEtPgorCQkJCQkJCVZvbERldkhhbmRsZSkpOworCQkJCQl9
CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCWJyZWFrOworCQkJCX0KIAkJCWJyZWFr
OwogCQlkZWZhdWx0OgogCQkJYnJlYWs7CkBAIC0zODksNiArNDI2LDcgQEAgbXBzc2FzX2Z3X3dv
cmsoc3RydWN0IG1wc19zb2Z0YyAqc2MsIHN0cgogCXsKIAkJTXBpMkV2ZW50RGF0YUlyUGh5c2lj
YWxEaXNrX3QgKmV2ZW50X2RhdGEgPQogCQkgICAgZndfZXZlbnQtPmV2ZW50X2RhdGE7CisJCXN0
cnVjdCBtcHNzYXNfdGFyZ2V0ICp0YXJnOwogCiAJCS8qCiAJCSAqIEluZm9ybWF0aW9uYWwgb25s
eS4KQEAgLTM5OSw3ICs0MzcsNyBAQCBtcHNzYXNfZndfd29yayhzdHJ1Y3QgbXBzX3NvZnRjICpz
Yywgc3RyCiAJCQltcHNfZHByaW50KHNjLCBNUFNfSU5GTywgIiAgIFBoeXMgRGlzayBTZXR0aW5n
cyAiCiAJCQkgICAgImNoYW5nZWQgZnJvbSAweCV4IHRvIDB4JXggZm9yIFBoeXMgRGlzayBOdW1i
ZXIgIgogCQkJICAgICIlZCBhbmQgaGFuZGxlIDB4JXggYXQgRW5jbG9zdXJlIGhhbmRsZSAweCV4
LCBTbG90ICIKLQkJCSAgICAiJWQiLCBldmVudF9kYXRhLT5QcmV2aW91c1ZhbHVlLAorCQkJICAg
ICIlZFxuIiwgZXZlbnRfZGF0YS0+UHJldmlvdXNWYWx1ZSwKIAkJCSAgICBldmVudF9kYXRhLT5O
ZXdWYWx1ZSwgZXZlbnRfZGF0YS0+UGh5c0Rpc2tOdW0sCiAJCQkgICAgZXZlbnRfZGF0YS0+UGh5
c0Rpc2tEZXZIYW5kbGUsCiAJCQkgICAgZXZlbnRfZGF0YS0+RW5jbG9zdXJlSGFuZGxlLCBldmVu
dF9kYXRhLT5TbG90KTsKQEAgLTQwNyw3ICs0NDUsNyBAQCBtcHNzYXNfZndfd29yayhzdHJ1Y3Qg
bXBzX3NvZnRjICpzYywgc3RyCiAJCWNhc2UgTVBJMl9FVkVOVF9JUl9QSFlTRElTS19SQ19TVEFU
VVNfRkxBR1NfQ0hBTkdFRDoKIAkJCW1wc19kcHJpbnQoc2MsIE1QU19JTkZPLCAiICAgUGh5cyBE
aXNrIFN0YXR1cyBjaGFuZ2VkICIKIAkJCSAgICAiZnJvbSAweCV4IHRvIDB4JXggZm9yIFBoeXMg
RGlzayBOdW1iZXIgJWQgYW5kICIKLQkJCSAgICAiaGFuZGxlIDB4JXggYXQgRW5jbG9zdXJlIGhh
bmRsZSAweCV4LCBTbG90ICVkIiwKKwkJCSAgICAiaGFuZGxlIDB4JXggYXQgRW5jbG9zdXJlIGhh
bmRsZSAweCV4LCBTbG90ICVkXG4iLAogCQkJICAgIGV2ZW50X2RhdGEtPlByZXZpb3VzVmFsdWUs
IGV2ZW50X2RhdGEtPk5ld1ZhbHVlLAogCQkJICAgIGV2ZW50X2RhdGEtPlBoeXNEaXNrTnVtLAog
CQkJICAgIGV2ZW50X2RhdGEtPlBoeXNEaXNrRGV2SGFuZGxlLApAQCAtNDE2LDEyICs0NTQsMzgg
QEAgbXBzc2FzX2Z3X3dvcmsoc3RydWN0IG1wc19zb2Z0YyAqc2MsIHN0cgogCQljYXNlIE1QSTJf
RVZFTlRfSVJfUEhZU0RJU0tfUkNfU1RBVEVfQ0hBTkdFRDoKIAkJCW1wc19kcHJpbnQoc2MsIE1Q
U19JTkZPLCAiICAgUGh5cyBEaXNrIFN0YXRlIGNoYW5nZWQgIgogCQkJICAgICJmcm9tIDB4JXgg
dG8gMHgleCBmb3IgUGh5cyBEaXNrIE51bWJlciAlZCBhbmQgIgotCQkJICAgICJoYW5kbGUgMHgl
eCBhdCBFbmNsb3N1cmUgaGFuZGxlIDB4JXgsIFNsb3QgJWQiLAorCQkJICAgICJoYW5kbGUgMHgl
eCBhdCBFbmNsb3N1cmUgaGFuZGxlIDB4JXgsIFNsb3QgJWRcbiIsCiAJCQkgICAgZXZlbnRfZGF0
YS0+UHJldmlvdXNWYWx1ZSwgZXZlbnRfZGF0YS0+TmV3VmFsdWUsCiAJCQkgICAgZXZlbnRfZGF0
YS0+UGh5c0Rpc2tOdW0sCiAJCQkgICAgZXZlbnRfZGF0YS0+UGh5c0Rpc2tEZXZIYW5kbGUsCiAJ
CQkgICAgZXZlbnRfZGF0YS0+RW5jbG9zdXJlSGFuZGxlLCBldmVudF9kYXRhLT5TbG90KTsKLQkJ
CWJyZWFrOworCQkJc3dpdGNoIChldmVudF9kYXRhLT5OZXdWYWx1ZSkgeworCQkJCWNhc2UgTVBJ
Ml9SQUlEX1BEX1NUQVRFX09OTElORToKKwkJCQljYXNlIE1QSTJfUkFJRF9QRF9TVEFURV9ERUdS
QURFRDoKKwkJCQljYXNlIE1QSTJfUkFJRF9QRF9TVEFURV9SRUJVSUxESU5HOgorCQkJCWNhc2Ug
TVBJMl9SQUlEX1BEX1NUQVRFX09QVElNQUw6CisJCQkJY2FzZSBNUEkyX1JBSURfUERfU1RBVEVf
SE9UX1NQQVJFOgorCQkJCQl0YXJnID0gbXBzc2FzX2ZpbmRfdGFyZ2V0X2J5X2hhbmRsZShzYXNz
YywgMCwgCisJCQkJCQkJZXZlbnRfZGF0YS0+UGh5c0Rpc2tEZXZIYW5kbGUpOworCQkJCQlpZiAo
dGFyZykgeworCQkJCQkJdGFyZy0+ZmxhZ3MgfD0gTVBTX1RBUkdFVF9GTEFHU19SQUlEX0NPTVBP
TkVOVDsKKwkJCQkJCXByaW50ZigiJXMgJWQ6IEZvdW5kIFRhcmdldCBmb3IgaGFuZGxlIDB4JXgu
ICBcbiIsCisJCQkJCQlfX2Z1bmNfXywgX19MSU5FX18gLCBldmVudF9kYXRhLT5QaHlzRGlza0Rl
dkhhbmRsZSk7CisJCQkJCX0KKwkJCQlicmVhazsKKwkJCQljYXNlIE1QSTJfUkFJRF9QRF9TVEFU
RV9PRkZMSU5FOgorCQkJCWNhc2UgTVBJMl9SQUlEX1BEX1NUQVRFX05PVF9DT05GSUdVUkVEOgor
CQkJCWNhc2UgTVBJMl9SQUlEX1BEX1NUQVRFX05PVF9DT01QQVRJQkxFOgorCQkJCWRlZmF1bHQ6
CisJCQkJCXRhcmcgPSBtcHNzYXNfZmluZF90YXJnZXRfYnlfaGFuZGxlKHNhc3NjLCAwLCAKKwkJ
CQkJCQlldmVudF9kYXRhLT5QaHlzRGlza0RldkhhbmRsZSk7CisJCQkJCWlmICh0YXJnKSB7CisJ
CQkJCQl0YXJnLT5mbGFncyB8PSB+TVBTX1RBUkdFVF9GTEFHU19SQUlEX0NPTVBPTkVOVDsKKwkJ
CQkJCXByaW50ZigiJXMgJWQ6IEZvdW5kIFRhcmdldCBmb3IgaGFuZGxlIDB4JXguICBcbiIsCisJ
CQkJCQlfX2Z1bmNfXywgX19MSU5FX18gLCBldmVudF9kYXRhLT5QaHlzRGlza0RldkhhbmRsZSk7
CisJCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KIAkJZGVmYXVsdDoKIAkJCWJyZWFrOwogCQl9CkBA
IC00OTQsNiArNTU4LDcgQEAgbXBzc2FzX2Z3X3dvcmsoc3RydWN0IG1wc19zb2Z0YyAqc2MsIHN0
cgogCQlicmVhazsKIAogCX0KKwltcHNfZHByaW50KHNjLCBNUFNfSU5GTywgIiglZCktPiglcykg
RXZlbnQgRnJlZTogWyV4XVxuIixldmVudF9jb3VudCxfX2Z1bmNfXywgZndfZXZlbnQtPmV2ZW50
KTsKIAltcHNzYXNfZndfZXZlbnRfZnJlZShzYywgZndfZXZlbnQpOwogfQogCkBAIC01ODQsNyAr
NjQ5LDcgQEAgbXBzc2FzX2FkZF9kZXZpY2Uoc3RydWN0IG1wc19zb2Z0YyAqc2MsIAogCQllcnJv
ciA9IEVOWElPOwogCQlnb3RvIG91dDsKIAl9Ci0JbXBzX3ZwcmludGYoc2MsICJTQVMgQWRkcmVz
cyBmcm9tIFNBUyBkZXZpY2UgcGFnZTAgPSAlanhcbiIsCisJbXBzX2RwcmludChzYywgTVBTX0lO
Rk8sICJTQVMgQWRkcmVzcyBmcm9tIFNBUyBkZXZpY2UgcGFnZTAgPSAlanhcbiIsCiAJICAgIHNh
c19hZGRyZXNzKTsKIAl0YXJnID0gJnNhc3NjLT50YXJnZXRzW2lkXTsKIAl0YXJnLT5kZXZpbmZv
ID0gZGV2aWNlX2luZm87CkBAIC02MDUsMTIgKzY3MCwxMiBAQCBtcHNzYXNfYWRkX2RldmljZShz
dHJ1Y3QgbXBzX3NvZnRjICpzYywgCiAJVEFJTFFfSU5JVCgmdGFyZy0+dGltZWRvdXRfY29tbWFu
ZHMpOwogCVNMSVNUX0lOSVQoJnRhcmctPmx1bnMpOwogCW1wc19kZXNjcmliZV9kZXZpbmZvKHRh
cmctPmRldmluZm8sIGRldnN0cmluZywgODApOwotCW1wc192cHJpbnRmKHNjLCAiRm91bmQgZGV2
aWNlIDwlcz4gPCVzPiA8MHglMDR4PiA8JWQvJWQ+XG4iLCBkZXZzdHJpbmcsCisJbXBzX2Rwcmlu
dChzYywgTVBTX0lORk8sICJGb3VuZCBkZXZpY2UgPCVzPiA8JXM+IDwweCUwNHg+IDwlZC8lZD5c
biIsIGRldnN0cmluZywKIAkgICAgbXBzX2Rlc2NyaWJlX3RhYmxlKG1wc19saW5rcmF0ZV9uYW1l
cywgdGFyZy0+bGlua3JhdGUpLAogCSAgICB0YXJnLT5oYW5kbGUsIHRhcmctPmVuY2xfaGFuZGxl
LCB0YXJnLT5lbmNsX3Nsb3QpOwogCWlmICgoc2Fzc2MtPmZsYWdzICYgTVBTU0FTX0lOX1NUQVJU
VVApID09IDApCiAJCW1wc3Nhc19yZXNjYW5fdGFyZ2V0KHNjLCB0YXJnKTsKLQltcHNfdnByaW50
ZihzYywgIlRhcmdldCBpZCAweCV4IGFkZGVkXG4iLCB0YXJnLT50aWQpOworCW1wc19kcHJpbnQo
c2MsIE1QU19JTkZPLCAiVGFyZ2V0IGlkIDB4JXggYWRkZWRcbiIsIHRhcmctPnRpZCk7CiBvdXQ6
CiAJbXBzc2FzX3N0YXJ0dXBfZGVjcmVtZW50KHNhc3NjKTsKIAlyZXR1cm4gKGVycm9yKTsKQEAg
LTc1MSwxMiArODE2LDExIEBAIG91dDoKIH0KIAogc3RhdGljIGludAotbXBzc2FzX3ZvbHVtZV9h
ZGQoc3RydWN0IG1wc19zb2Z0YyAqc2MsIE1waTJFdmVudElyQ29uZmlnRWxlbWVudF90ICplbGVt
ZW50KQorbXBzc2FzX3ZvbHVtZV9hZGQoc3RydWN0IG1wc19zb2Z0YyAqc2MsIHUxNiBoYW5kbGUp
CiB7CiAJc3RydWN0IG1wc3Nhc19zb2Z0YyAqc2Fzc2M7CiAJc3RydWN0IG1wc3Nhc190YXJnZXQg
KnRhcmc7CiAJdTY0IHd3aWQ7Ci0JdTE2IGhhbmRsZSA9IGxlMTZ0b2goZWxlbWVudC0+Vm9sRGV2
SGFuZGxlKTsKIAl1bnNpZ25lZCBpbnQgaWQ7CiAJaW50IGVycm9yID0gMDsKIApAQCAtODU1LDcg
KzkxOSw5IEBAIG1wc3Nhc19pcl9zaHV0ZG93bihzdHJ1Y3QgbXBzX3NvZnRjICpzYykKIAlhY3Rp
b24tPkZ1bmN0aW9uID0gTVBJMl9GVU5DVElPTl9SQUlEX0FDVElPTjsKIAlhY3Rpb24tPkFjdGlv
biA9IE1QSTJfUkFJRF9BQ1RJT05fU1lTVEVNX1NIVVRET1dOX0lOSVRJQVRFRDsKIAljbS0+Y21f
ZGVzYy5EZWZhdWx0LlJlcXVlc3RGbGFncyA9IE1QSTJfUkVRX0RFU0NSSVBUX0ZMQUdTX0RFRkFV
TFRfVFlQRTsKKwltcHNfbG9jayhzYyk7CiAJbXBzX3JlcXVlc3RfcG9sbGVkKHNjLCBjbSk7CisJ
bXBzX3VubG9jayhzYyk7CiAKIAkvKgogCSAqIERvbid0IGNoZWNrIGZvciByZXBseSwganVzdCBs
ZWF2ZS4KZGlmZiAtYXJ1cCBtcHNfMTEuMjU1LjAzLjAwLWZic2QvbXBzX3VzZXIuYyBtcHNfMTMu
MDAuMDAuMDAtZmJzZC9tcHNfdXNlci5jCi0tLSBtcHNfMTEuMjU1LjAzLjAwLWZic2QvbXBzX3Vz
ZXIuYwkyMDEyLTAyLTA2IDIxOjQ4OjA5LjA2MTU2MjgzNCArMDUzMAorKysgbXBzXzEzLjAwLjAw
LjAwLWZic2QvbXBzX3VzZXIuYwkyMDEyLTAyLTA2IDIxOjQ3OjM0LjYxOTk3NjUyMiArMDUzMApA
QCAtNzEyLDcgKzcxMiw3IEBAIG1wc191c2VyX2NvbW1hbmQoc3RydWN0IG1wc19zb2Z0YyAqc2Ms
IHMKIAljbS0+Y21fZGVzYy5EZWZhdWx0LlJlcXVlc3RGbGFncyA9IE1QSTJfUkVRX0RFU0NSSVBU
X0ZMQUdTX0RFRkFVTFRfVFlQRTsKIAogCW1wc19sb2NrKHNjKTsKLQllcnIgPSBtcHNfd2FpdF9j
b21tYW5kKHNjLCBjbSwgMCk7CisJZXJyID0gbXBzX3dhaXRfY29tbWFuZChzYywgY20sIDMwKTsK
IAogCWlmIChlcnIpIHsKIAkJbXBzX3ByaW50ZihzYywgIiVzOiBpbnZhbGlkIHJlcXVlc3Q6IGVy
cm9yICVkXG4iLApAQCAtODQyLDcgKzg0Miw3IEBAIG1wc191c2VyX3Bhc3NfdGhydShzdHJ1Y3Qg
bXBzX3NvZnRjICpzYywKIAkJY20tPmNtX2NvbXBsZXRlID0gTlVMTDsKIAkJY20tPmNtX2NvbXBs
ZXRlX2RhdGEgPSBOVUxMOwogCi0JCWVyciA9IG1wc193YWl0X2NvbW1hbmQoc2MsIGNtLCAwKTsK
KwkJZXJyID0gbXBzX3dhaXRfY29tbWFuZChzYywgY20sIDMwKTsKIAogCQlpZiAoZXJyICE9IDAp
IHsKIAkJCWVyciA9IEVJTzsKQEAgLTk3OSw3ICs5NzksNyBAQCBtcHNfdXNlcl9wYXNzX3RocnUo
c3RydWN0IG1wc19zb2Z0YyAqc2MsCiAKIAltcHNfbG9jayhzYyk7CiAKLQllcnIgPSBtcHNfd2Fp
dF9jb21tYW5kKHNjLCBjbSwgMCk7CisJZXJyID0gbXBzX3dhaXRfY29tbWFuZChzYywgY20sIDMw
KTsKIAogCWlmIChlcnIpIHsKIAkJbXBzX3ByaW50ZihzYywgIiVzOiBpbnZhbGlkIHJlcXVlc3Q6
IGVycm9yICVkXG4iLCBfX2Z1bmNfXywKQEAgLTEwOTgsMTAgKzEwOTgsMTIgQEAgbXBzX3VzZXJf
Z2V0X2FkYXB0ZXJfZGF0YShzdHJ1Y3QgbXBzX3NvZgogCSAqIE5lZWQgdG8gZ2V0IEJJT1MgQ29u
ZmlnIFBhZ2UgMyBmb3IgdGhlIEJJT1MgVmVyc2lvbi4KIAkgKi8KIAlkYXRhLT5CaW9zVmVyc2lv
biA9IDA7CisJbXBzX2xvY2soc2MpOwogCWlmIChtcHNfY29uZmlnX2dldF9iaW9zX3BnMyhzYywg
Jm1waV9yZXBseSwgJmNvbmZpZ19wYWdlKSkKIAkJcHJpbnRmKCIlczogRXJyb3Igd2hpbGUgcmV0
cmlldmluZyBCSU9TIFZlcnNpb25cbiIsIF9fZnVuY19fKTsKIAllbHNlCiAJCWRhdGEtPkJpb3NW
ZXJzaW9uID0gY29uZmlnX3BhZ2UuQmlvc1ZlcnNpb247CisJbXBzX3VubG9jayhzYyk7CiB9CiAK
IHN0YXRpYyB2b2lkCkBAIC0xMTk0LDcgKzExOTYsNyBAQCBtcHNfcG9zdF9md19kaWFnX2J1ZmZl
cihzdHJ1Y3QgbXBzX3NvZnRjCiAJLyoKIAkgKiBTZW5kIGNvbW1hbmQgc3luY2hyb25vdXNseS4K
IAkgKi8KLQlzdGF0dXMgPSBtcHNfd2FpdF9jb21tYW5kKHNjLCBjbSwgMCk7CisJc3RhdHVzID0g
bXBzX3dhaXRfY29tbWFuZChzYywgY20sIDMwKTsKIAlpZiAoc3RhdHVzKSB7CiAJCW1wc19wcmlu
dGYoc2MsICIlczogaW52YWxpZCByZXF1ZXN0OiBlcnJvciAlZFxuIiwgX19mdW5jX18sCiAJCSAg
ICBzdGF0dXMpOwpAQCAtMTI3OCw3ICsxMjgwLDcgQEAgbXBzX3JlbGVhc2VfZndfZGlhZ19idWZm
ZXIoc3RydWN0IG1wc19zbwogCS8qCiAJICogU2VuZCBjb21tYW5kIHN5bmNocm9ub3VzbHkuCiAJ
ICovCi0Jc3RhdHVzID0gbXBzX3dhaXRfY29tbWFuZChzYywgY20sIDApOworCXN0YXR1cyA9IG1w
c193YWl0X2NvbW1hbmQoc2MsIGNtLCAzMCk7CiAJaWYgKHN0YXR1cykgewogCQltcHNfcHJpbnRm
KHNjLCAiJXM6IGludmFsaWQgcmVxdWVzdDogZXJyb3IgJWRcbiIsIF9fZnVuY19fLAogCQkgICAg
c3RhdHVzKTsKZGlmZiAtYXJ1cCBtcHNfMTEuMjU1LjAzLjAwLWZic2QvbXBzdmFyLmggbXBzXzEz
LjAwLjAwLjAwLWZic2QvbXBzdmFyLmgKLS0tIG1wc18xMS4yNTUuMDMuMDAtZmJzZC9tcHN2YXIu
aAkyMDEyLTAyLTA2IDIxOjQ4OjA5LjA2NDU0NjkxMyArMDUzMAorKysgbXBzXzEzLjAwLjAwLjAw
LWZic2QvbXBzdmFyLmgJMjAxMi0wMi0wNiAyMTo0ODo1NC4wMzc2OTgzMDkgKzA1MzAKQEAgLTU4
LDcgKzU4LDcgQEAKICNpZm5kZWYgX01QU1ZBUl9ICiAjZGVmaW5lIF9NUFNWQVJfSAogCi0jZGVm
aW5lIE1QU19EUklWRVJfVkVSU0lPTgkiMTEuMjU1LjAzLjAwLWZic2QiCisjZGVmaW5lIE1QU19E
UklWRVJfVkVSU0lPTgkiMTMuMDAuMDAuMDAtZmJzZCIKIAogI2RlZmluZSBNUFNfREJfTUFYX1dB
SVQJCTI1MDAKIApAQCAtNzgsNiArNzgsNyBAQAogI2RlZmluZSBNUFNfUEVSSU9ESUNfREVMQVkJ
MQkvKiAxIHNlY29uZCBoZWFydGJlYXQvd2F0Y2hkb2cgY2hlY2sgKi8KIAogI2RlZmluZSBNUFNf
U0NTSV9SSV9JTlZBTElEX0ZSQU1FCSgweDAwMDAwMDAyKQorI2RlZmluZSBNUFNfU1RSSU5HX0xF
TkdUSCAgICAgICAgICAgICAgIDY0CiAKIC8qCiAgKiBob3N0IG1hcHBpbmcgcmVsYXRlZCBtYWNy
byBkZWZpbml0aW9ucwpAQCAtMzA5LDcgKzMxMCw3IEBAIHN0cnVjdCBtcHNfc29mdGMgewogCXN0
cnVjdCBjYWxsb3V0CQkJcGVyaW9kaWM7CiAKIAlzdHJ1Y3QgbXBzc2FzX3NvZnRjCQkqc2Fzc2M7
Ci0KKwljaGFyICAgICAgICAgICAgdG1wX3N0cmluZ1tNUFNfU1RSSU5HX0xFTkdUSF07CiAJVEFJ
TFFfSEVBRCgsIG1wc19jb21tYW5kKQlyZXFfbGlzdDsKIAlUQUlMUV9IRUFEKCwgbXBzX2NvbW1h
bmQpCWhpZ2hfcHJpb3JpdHlfcmVxX2xpc3Q7CiAJVEFJTFFfSEVBRCgsIG1wc19jaGFpbikJCWNo
YWluX2xpc3Q7CkBAIC01MjEsNiArNTIyLDEyIEBAIG1wc19mcmVlX2NvbW1hbmQoc3RydWN0IG1w
c19zb2Z0YyAqc2MsIHMKIAljbS0+Y21fbWF4X3NlZ3MgPSAwOwogCWNtLT5jbV9sdW4gPSAwOwog
CWNtLT5jbV9zdGF0ZSA9IE1QU19DTV9TVEFURV9GUkVFOworCWNtLT5jbV9kYXRhID0gTlVMTDsK
KwljbS0+Y21fbGVuZ3RoID0gMDsKKwljbS0+Y21fb3V0X2xlbiA9IDA7CisJY20tPmNtX3NnbHNp
emUgPSAwOworCWNtLT5jbV9zZ2UgPSBOVUxMOworCiAJVEFJTFFfRk9SRUFDSF9TQUZFKGNoYWlu
LCAmY20tPmNtX2NoYWluX2xpc3QsIGNoYWluX2xpbmssIGNoYWluX3RlbXApIHsKIAkJVEFJTFFf
UkVNT1ZFKCZjbS0+Y21fY2hhaW5fbGlzdCwgY2hhaW4sIGNoYWluX2xpbmspOwogCQltcHNfZnJl
ZV9jaGFpbihzYywgY2hhaW4pOwpAQCAtNzQ5LDcgKzc1Niw5IEBAIHZvaWQgbXBzX21hcHBpbmdf
aXJfY29uZmlnX2NoYW5nZV9ldmVudCgKIHZvaWQgbXBzc2FzX2V2dF9oYW5kbGVyKHN0cnVjdCBt
cHNfc29mdGMgKnNjLCB1aW50cHRyX3QgZGF0YSwKICAgICBNUEkyX0VWRU5UX05PVElGSUNBVElP
Tl9SRVBMWSAqZXZlbnQpOwogdm9pZCBtcHNzYXNfcHJlcGFyZV9yZW1vdmUoc3RydWN0IG1wc3Nh
c19zb2Z0YyAqc2Fzc2MsIHVpbnQxNl90IGhhbmRsZSk7Cit2b2lkIG1wc3Nhc19wcmVwYXJlX3Zv
bHVtZV9yZW1vdmUoc3RydWN0IG1wc3Nhc19zb2Z0YyAqc2Fzc2MsIHVpbnQxNl90IGhhbmRsZSk7
CiBpbnQgbXBzc2FzX3N0YXJ0dXAoc3RydWN0IG1wc19zb2Z0YyAqc2MpOworc3RydWN0IG1wc3Nh
c190YXJnZXQgKiBtcHNzYXNfZmluZF90YXJnZXRfYnlfaGFuZGxlKHN0cnVjdCBtcHNzYXNfc29m
dGMgKiwgaW50LCB1aW50MTZfdCk7CiAKIFNZU0NUTF9ERUNMKF9od19tcHMpOwogCg==

--_002_B2FD678A64EAAD45B089B123FDFC3ED729A3415109inbmail01lsic_--



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