From owner-freebsd-scsi@FreeBSD.ORG Wed Feb 8 18:29:23 2012 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BAE44106566C; Wed, 8 Feb 2012 18:29:23 +0000 (UTC) (envelope-from Kashyap.Desai@lsi.com) Received: from na3sys009aog106.obsmtp.com (na3sys009aob106.obsmtp.com [74.125.149.76]) by mx1.freebsd.org (Postfix) with ESMTP id 985838FC12; Wed, 8 Feb 2012 18:29:22 +0000 (UTC) Received: from paledge01.lsi.com ([192.19.193.42]) (using TLSv1) by na3sys009aob106.postini.com ([74.125.148.12]) with SMTP ID DSNKTzK/ASk1uQ8WOI43VoyLzczty7hq/0NK@postini.com; Wed, 08 Feb 2012 10:29:22 PST Received: from PALCAS01.lsi.com (128.94.213.117) by PALEDGE01.lsi.com (192.19.193.42) with Microsoft SMTP Server (TLS) id 8.3.213.0; Wed, 8 Feb 2012 13:33:38 -0500 Received: from inbexch01.lsi.com (135.36.98.37) by PALCAS01.lsi.com (128.94.213.117) with Microsoft SMTP Server (TLS) id 8.3.213.0; Wed, 8 Feb 2012 13:29:20 -0500 Received: from inbmail01.lsi.com ([135.36.98.64]) by inbexch01.lsi.com ([135.36.98.37]) with mapi; Wed, 8 Feb 2012 23:59:16 +0530 From: "Desai, Kashyap" To: =?iso-8859-1?Q?Leon_Me=DFner?= , "freebsd-scsi@freebsd.org" Date: Wed, 8 Feb 2012 23:59:14 +0530 Thread-Topic: getencstat and smp_discover get stuck with lsi mps Thread-Index: Aczmd9cSgKZ0x+UySyS1BXglye1G0QAF3q5Q Message-ID: References: <20120208152507.GA17395@emmi.physik-pool.tu-berlin.de> In-Reply-To: <20120208152507.GA17395@emmi.physik-pool.tu-berlin.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: multipart/mixed; boundary="_002_B2FD678A64EAAD45B089B123FDFC3ED729A3415109inbmail01lsic_" MIME-Version: 1.0 Cc: "Kenneth D. Merry" , "McConnell, Stephen" Subject: RE: getencstat and smp_discover get stuck with lsi mps X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Feb 2012 18:29:23 -0000 --_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: 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: 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_--