From owner-freebsd-stable@FreeBSD.ORG Mon Jul 19 16:00:47 2010 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 924FE1065670 for ; Mon, 19 Jul 2010 16:00:47 +0000 (UTC) (envelope-from h.schmalzbauer@omnilan.de) Received: from stith.flb.omnilan.net (s1.omnilan.net [62.245.232.135]) by mx1.freebsd.org (Postfix) with ESMTP id 522738FC25 for ; Mon, 19 Jul 2010 16:00:44 +0000 (UTC) Received: from titan.flb.omnilan.net (titan.lo4.flb.omnilan.net [172.21.1.150]) (authenticated bits=0) by stith.flb.omnilan.net (8.13.8/8.13.8) with ESMTP id o6JG0NYv031237 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 19 Jul 2010 18:00:24 +0200 (CEST) (envelope-from h.schmalzbauer@omnilan.de) X-Authentication-Warning: smtp.dmz.omnisec.de: Host titan.lo4.flb.omnilan.net [172.21.1.150] claimed to be titan.flb.omnilan.net Message-ID: <4C447684.7010308@omnilan.de> Date: Mon, 19 Jul 2010 18:00:04 +0200 From: Harald Schmalzbauer Organization: OmniLAN User-Agent: Thunderbird 2.0.0.23 (X11/20090906) MIME-Version: 1.0 To: bseklecki@collaborativefusion.com References: <1275419919.30057.50.camel@soundwave.ws.pitbpa0.priv.collaborativefusion.com> <20100601193733.GA44816@icarus.home.lan> <4C3CBC1E.9030106@omnilan.de> <1279212377.31311.144.camel@soundwave> <1279212602.31311.151.camel@soundwave> <84875A93-3851-476E-8F2E-A7008CA6BD5C@FreeBSD.org> <4C3F49E8.9090201@comcast.net> <1279552398.31311.443.camel@soundwave> In-Reply-To: <1279552398.31311.443.camel@soundwave> X-Enigmail-Version: 0.95.6 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enigF6A690C36A07BC733D80DCC7" Cc: freebsd-stable , Brandon Gooch , Sean McAfee , Steve Polyack , Michael Tuexen , Jack Vogel , Jeremy Chadwick Subject: Re: em(4) duplex problems with 82541EI on RELENG_8, -CURRENT on PowerEdge 1850 X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Jul 2010 16:00:47 -0000 This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enigF6A690C36A07BC733D80DCC7 Content-Type: multipart/mixed; boundary="------------020608030802000604090208" This is a multi-part message in MIME format. --------------020608030802000604090208 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Brian A. Seklecki schrieb am 19.07.2010 17:13 (localtime): > On Thu, 2010-07-15 at 10:53 -0700, Jack Vogel wrote: >> The fact that I WISH it to be MFC'd doesn't mean that I am actually >> given permission to do so. >=20 > It seems 8.1 release was tagged on Saturday so we're proper-fucked > (we will have to run local patches on all 1850s and 2850s for the > duration of RELENG_8_1) >=20 > http://svn.freebsd.org/viewvc/base?view=3Drevision&revision=3D210187 >=20 >=20 > Might want to prepare a patch file and instructions now for when At least the patchfile is something I have hand, Find attached. > the whining starts on freebsd-questions@. -Harry --------------020608030802000604090208 Content-Type: text/plain; name="e1000-releng8.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="e1000-releng8.patch" LS0tIHN5cy9kZXYvZTEwMDAvaWZfZW0uYwkyMDEwLzA1LzE4IDE3OjA5OjIwCTEuMjEuMi4x MAorKysgc3lzL2Rldi9lMTAwMC9pZl9lbS5jCTIwMTAvMDYvMTggMTc6MjI6MDgJMS4yMS4y LjExCkBAIC0zMCw3ICszMCw3IEBACiAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog CiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiRGcmVlQlNEOiBzcmMvc3lzL2Rldi9l MTAwMC9pZl9lbS5jLHYgMS4yMS4yLjEwLjIuMSAyMDEwLzA2LzE0IDAyOjA5OjA2IGtlbnNt aXRoIEV4cCAkKi8KKy8qJEZyZWVCU0Q6IHNyYy9zeXMvZGV2L2UxMDAwL2lmX2VtLmMsdiAx LjIxLjIuMTEgMjAxMC8wNi8xOCAxNzoyMjowOCBqZnYgRXhwICQqLwogCiAjaWZkZWYgSEFW RV9LRVJORUxfT1BUSU9OX0hFQURFUlMKICNpbmNsdWRlICJvcHRfZGV2aWNlX3BvbGxpbmcu aCIKQEAgLTIzMCw4ICsyMzAsOSBAQCBzdGF0aWMgdm9pZAllbV9mcmVlX3JlY2VpdmVfYnVm ZmVycyhzdHJ1CiBzdGF0aWMgdm9pZAllbV9lbmFibGVfaW50cihzdHJ1Y3QgYWRhcHRlciAq KTsKIHN0YXRpYyB2b2lkCWVtX2Rpc2FibGVfaW50cihzdHJ1Y3QgYWRhcHRlciAqKTsKIHN0 YXRpYyB2b2lkCWVtX3VwZGF0ZV9zdGF0c19jb3VudGVycyhzdHJ1Y3QgYWRhcHRlciAqKTsK K3N0YXRpYyB2b2lkCWVtX2FkZF9od19zdGF0cyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7 CiBzdGF0aWMgYm9vbAllbV90eGVvZihzdHJ1Y3QgdHhfcmluZyAqKTsKLXN0YXRpYyBpbnQJ ZW1fcnhlb2Yoc3RydWN0IHJ4X3JpbmcgKiwgaW50KTsKK3N0YXRpYyBib29sCWVtX3J4ZW9m KHN0cnVjdCByeF9yaW5nICosIGludCwgaW50ICopOwogI2lmbmRlZiBfX05PX1NUUklDVF9B TElHTk1FTlQKIHN0YXRpYyBpbnQJZW1fZml4dXBfcngoc3RydWN0IHJ4X3JpbmcgKik7CiAj ZW5kaWYKQEAgLTI0Miw3ICsyNDMsNiBAQCBzdGF0aWMgYm9vbAllbV90c29fc2V0dXAoc3Ry dWN0IHR4X3JpbmcgCiBzdGF0aWMgdm9pZAllbV9zZXRfcHJvbWlzYyhzdHJ1Y3QgYWRhcHRl ciAqKTsKIHN0YXRpYyB2b2lkCWVtX2Rpc2FibGVfcHJvbWlzYyhzdHJ1Y3QgYWRhcHRlciAq KTsKIHN0YXRpYyB2b2lkCWVtX3NldF9tdWx0aShzdHJ1Y3QgYWRhcHRlciAqKTsKLXN0YXRp YyB2b2lkCWVtX3ByaW50X2h3X3N0YXRzKHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGljIHZv aWQJZW1fdXBkYXRlX2xpbmtfc3RhdHVzKHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGljIHZv aWQJZW1fcmVmcmVzaF9tYnVmcyhzdHJ1Y3QgcnhfcmluZyAqLCBpbnQpOwogc3RhdGljIHZv aWQJZW1fcmVnaXN0ZXJfdmxhbih2b2lkICosIHN0cnVjdCBpZm5ldCAqLCB1MTYpOwpAQCAt MjUyLDExICsyNTIsOSBAQCBzdGF0aWMgaW50CWVtX3htaXQoc3RydWN0IHR4X3JpbmcgKiwg c3RyCiBzdGF0aWMgaW50CWVtX2RtYV9tYWxsb2Moc3RydWN0IGFkYXB0ZXIgKiwgYnVzX3Np emVfdCwKIAkJICAgIHN0cnVjdCBlbV9kbWFfYWxsb2MgKiwgaW50KTsKIHN0YXRpYyB2b2lk CWVtX2RtYV9mcmVlKHN0cnVjdCBhZGFwdGVyICosIHN0cnVjdCBlbV9kbWFfYWxsb2MgKik7 Ci1zdGF0aWMgdm9pZAllbV9wcmludF9kZWJ1Z19pbmZvKHN0cnVjdCBhZGFwdGVyICopOwor c3RhdGljIGludAllbV9zeXNjdGxfbnZtX2luZm8oU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CiBz dGF0aWMgdm9pZAllbV9wcmludF9udm1faW5mbyhzdHJ1Y3QgYWRhcHRlciAqKTsKIHN0YXRp YyBpbnQgCWVtX2lzX3ZhbGlkX2V0aGVyX2FkZHIodTggKik7Ci1zdGF0aWMgaW50CWVtX3N5 c2N0bF9zdGF0cyhTWVNDVExfSEFORExFUl9BUkdTKTsKLXN0YXRpYyBpbnQJZW1fc3lzY3Rs X2RlYnVnX2luZm8oU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CiBzdGF0aWMgaW50CWVtX3N5c2N0 bF9pbnRfZGVsYXkoU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CiBzdGF0aWMgdm9pZAllbV9hZGRf aW50X2RlbGF5X3N5c2N0bChzdHJ1Y3QgYWRhcHRlciAqLCBjb25zdCBjaGFyICosCiAJCSAg ICBjb25zdCBjaGFyICosIHN0cnVjdCBlbV9pbnRfZGVsYXlfaW5mbyAqLCBpbnQsIGludCk7 CkBAIC0zNDcsOCArMzQ1LDEzIEBAIHN0YXRpYyBpbnQgZW1fZGVidWdfc2JwID0gRkFMU0U7 CiBUVU5BQkxFX0lOVCgiaHcuZW0uc2JwIiwgJmVtX2RlYnVnX3NicCk7CiAKIC8qIExvY2Fs IGNvbnRyb2xzIGZvciBNU0kvTVNJWCAqLworI2lmZGVmIEVNX01VTFRJUVVFVUUKIHN0YXRp YyBpbnQgZW1fZW5hYmxlX21zaXggPSBUUlVFOwogc3RhdGljIGludCBlbV9tc2l4X3F1ZXVl cyA9IDI7IC8qIGZvciA4MjU3NCwgY2FuIGJlIDEgb3IgMiAqLworI2Vsc2UKK3N0YXRpYyBp bnQgZW1fZW5hYmxlX21zaXggPSBGQUxTRTsKK3N0YXRpYyBpbnQgZW1fbXNpeF9xdWV1ZXMg PSAwOyAvKiBkaXNhYmxlICovCisjZW5kaWYKIFRVTkFCTEVfSU5UKCJody5lbS5lbmFibGVf bXNpeCIsICZlbV9lbmFibGVfbXNpeCk7CiBUVU5BQkxFX0lOVCgiaHcuZW0ubXNpeF9xdWV1 ZXMiLCAmZW1fbXNpeF9xdWV1ZXMpOwogCkBAIC00NDcsMTMgKzQ1MCw4IEBAIGVtX2F0dGFj aChkZXZpY2VfdCBkZXYpCiAJLyogU1lTQ1RMIHN0dWZmICovCiAJU1lTQ1RMX0FERF9QUk9D KGRldmljZV9nZXRfc3lzY3RsX2N0eChkZXYpLAogCSAgICBTWVNDVExfQ0hJTERSRU4oZGV2 aWNlX2dldF9zeXNjdGxfdHJlZShkZXYpKSwKLQkgICAgT0lEX0FVVE8sICJkZWJ1ZyIsIENU TFRZUEVfSU5UfENUTEZMQUdfUlcsIGFkYXB0ZXIsIDAsCi0JICAgIGVtX3N5c2N0bF9kZWJ1 Z19pbmZvLCAiSSIsICJEZWJ1ZyBJbmZvcm1hdGlvbiIpOwotCi0JU1lTQ1RMX0FERF9QUk9D KGRldmljZV9nZXRfc3lzY3RsX2N0eChkZXYpLAotCSAgICBTWVNDVExfQ0hJTERSRU4oZGV2 aWNlX2dldF9zeXNjdGxfdHJlZShkZXYpKSwKLQkgICAgT0lEX0FVVE8sICJzdGF0cyIsIENU TFRZUEVfSU5UfENUTEZMQUdfUlcsIGFkYXB0ZXIsIDAsCi0JICAgIGVtX3N5c2N0bF9zdGF0 cywgIkkiLCAiU3RhdGlzdGljcyIpOworCSAgICBPSURfQVVUTywgIm52bSIsIENUTFRZUEVf SU5UfENUTEZMQUdfUlcsIGFkYXB0ZXIsIDAsCisJICAgIGVtX3N5c2N0bF9udm1faW5mbywg IkkiLCAiTlZNIEluZm9ybWF0aW9uIik7CiAKIAljYWxsb3V0X2luaXRfbXR4KCZhZGFwdGVy LT50aW1lciwgJmFkYXB0ZXItPmNvcmVfbXR4LCAwKTsKIApAQCAtNjUxLDYgKzY0OSw4IEBA IGVtX2F0dGFjaChkZXZpY2VfdCBkZXYpCiAJYWRhcHRlci0+dmxhbl9kZXRhY2ggPSBFVkVO VEhBTkRMRVJfUkVHSVNURVIodmxhbl91bmNvbmZpZywKIAkgICAgZW1fdW5yZWdpc3Rlcl92 bGFuLCBhZGFwdGVyLCBFVkVOVEhBTkRMRVJfUFJJX0ZJUlNUKTsgCiAKKwllbV9hZGRfaHdf c3RhdHMoYWRhcHRlcik7CisKIAkvKiBOb24tQU1UIGJhc2VkIGhhcmR3YXJlIGNhbiBub3cg dGFrZSBjb250cm9sIGZyb20gZmlybXdhcmUgKi8KIAlpZiAoYWRhcHRlci0+aGFzX21hbmFn ZSAmJiAhYWRhcHRlci0+aGFzX2FtdCkKIAkJZW1fZ2V0X2h3X2NvbnRyb2woYWRhcHRlcik7 CkBAIC0xMzUxLDEyICsxMzUxLDEzIEBAIGVtX3BvbGwoc3RydWN0IGlmbmV0ICppZnAsIGVu dW0gcG9sbF9jbWQKIAlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciA9IGlmcC0+aWZfc29mdGM7 CiAJc3RydWN0IHR4X3JpbmcJKnR4ciA9IGFkYXB0ZXItPnR4X3JpbmdzOwogCXN0cnVjdCBy eF9yaW5nCSpyeHIgPSBhZGFwdGVyLT5yeF9yaW5nczsKLQl1MzIJCXJlZ19pY3IsIHJ4X2Rv bmUgPSAwOworCXUzMgkJcmVnX2ljcjsKKwlpbnQJCXJ4X2RvbmU7CiAKIAlFTV9DT1JFX0xP Q0soYWRhcHRlcik7CiAJaWYgKChpZnAtPmlmX2Rydl9mbGFncyAmIElGRl9EUlZfUlVOTklO RykgPT0gMCkgewogCQlFTV9DT1JFX1VOTE9DSyhhZGFwdGVyKTsKLQkJcmV0dXJuIChyeF9k b25lKTsKKwkJcmV0dXJuICgwKTsKIAl9CiAKIAlpZiAoY21kID09IFBPTExfQU5EX0NIRUNL X1NUQVRVUykgewpAQCAtMTM3MSw5ICsxMzcyLDcgQEAgZW1fcG9sbChzdHJ1Y3QgaWZuZXQg KmlmcCwgZW51bSBwb2xsX2NtZAogCX0KIAlFTV9DT1JFX1VOTE9DSyhhZGFwdGVyKTsKIAot CUVNX1JYX0xPQ0socnhyKTsKLQlyeF9kb25lID0gZW1fcnhlb2YocnhyLCBjb3VudCk7Ci0J RU1fUlhfVU5MT0NLKHJ4cik7CisJZW1fcnhlb2YocnhyLCBjb3VudCwgJnJ4X2RvbmUpOwog CiAJRU1fVFhfTE9DSyh0eHIpOwogCWVtX3R4ZW9mKHR4cik7CkBAIC0xNDQ1LDE2ICsxNDQ0 LDE1IEBAIGVtX2hhbmRsZV9xdWUodm9pZCAqY29udGV4dCwgaW50IHBlbmRpbmcKIAlzdHJ1 Y3QgaWZuZXQJKmlmcCA9IGFkYXB0ZXItPmlmcDsKIAlzdHJ1Y3QgdHhfcmluZwkqdHhyID0g YWRhcHRlci0+dHhfcmluZ3M7CiAJc3RydWN0IHJ4X3JpbmcJKnJ4ciA9IGFkYXB0ZXItPnJ4 X3JpbmdzOwotCWJvb2wJCW1vcmVfcng7CisJYm9vbAkJbW9yZTsKIAogCiAJaWYgKGlmcC0+ aWZfZHJ2X2ZsYWdzICYgSUZGX0RSVl9SVU5OSU5HKSB7Ci0JCUVNX1JYX0xPQ0socnhyKTsK LQkJbW9yZV9yeCA9IGVtX3J4ZW9mKHJ4ciwgYWRhcHRlci0+cnhfcHJvY2Vzc19saW1pdCk7 Ci0JCUVNX1JYX1VOTE9DSyhyeHIpOworCQltb3JlID0gZW1fcnhlb2YocnhyLCBhZGFwdGVy LT5yeF9wcm9jZXNzX2xpbWl0LCBOVUxMKTsKIAogCQlFTV9UWF9MT0NLKHR4cik7Ci0JCWVt X3R4ZW9mKHR4cik7CisJCWlmIChlbV90eGVvZih0eHIpKQorCQkJbW9yZSA9IFRSVUU7CiAj aWZkZWYgRU1fTVVMVElRVUVVRQogCQlpZiAoIWRyYnJfZW1wdHkoaWZwLCB0eHItPmJyKSkK IAkJCWVtX21xX3N0YXJ0X2xvY2tlZChpZnAsIHR4ciwgTlVMTCk7CkBAIC0xNDYzLDcgKzE0 NjEsNyBAQCBlbV9oYW5kbGVfcXVlKHZvaWQgKmNvbnRleHQsIGludCBwZW5kaW5nCiAJCQll bV9zdGFydF9sb2NrZWQoaWZwLCB0eHIpOwogI2VuZGlmCiAJCUVNX1RYX1VOTE9DSyh0eHIp OwotCQlpZiAobW9yZV9yeCkgeworCQlpZiAobW9yZSkgewogCQkJdGFza3F1ZXVlX2VucXVl dWUoYWRhcHRlci0+dHEsICZhZGFwdGVyLT5xdWVfdGFzayk7CiAJCQlyZXR1cm47CiAJCX0K QEAgLTE1MTEsMTAgKzE1MDksOCBAQCBlbV9tc2l4X3J4KHZvaWQgKmFyZykKIAlzdHJ1Y3Qg YWRhcHRlcgkqYWRhcHRlciA9IHJ4ci0+YWRhcHRlcjsKIAlib29sCQltb3JlOwogCi0JRU1f UlhfTE9DSyhyeHIpOwogCSsrcnhyLT5yeF9pcnE7Ci0JbW9yZSA9IGVtX3J4ZW9mKHJ4ciwg YWRhcHRlci0+cnhfcHJvY2Vzc19saW1pdCk7Ci0JRU1fUlhfVU5MT0NLKHJ4cik7CisJbW9y ZSA9IGVtX3J4ZW9mKHJ4ciwgYWRhcHRlci0+cnhfcHJvY2Vzc19saW1pdCwgTlVMTCk7CiAJ aWYgKG1vcmUpCiAJCXRhc2txdWV1ZV9lbnF1ZXVlKHJ4ci0+dHEsICZyeHItPnJ4X3Rhc2sp OwogCWVsc2UKQEAgLTE1MzksNyArMTUzNSw3IEBAIGVtX21zaXhfbGluayh2b2lkICphcmcp CiAKIAlpZiAocmVnX2ljciAmIChFMTAwMF9JQ1JfUlhTRVEgfCBFMTAwMF9JQ1JfTFNDKSkg ewogCQlhZGFwdGVyLT5ody5tYWMuZ2V0X2xpbmtfc3RhdHVzID0gMTsKLQkJdGFza3F1ZXVl X2VucXVldWUodGFza3F1ZXVlX2Zhc3QsICZhZGFwdGVyLT5saW5rX3Rhc2spOworCQllbV9o YW5kbGVfbGluayhhZGFwdGVyLCAwKTsKIAl9IGVsc2UKIAkJRTEwMDBfV1JJVEVfUkVHKCZh ZGFwdGVyLT5odywgRTEwMDBfSU1TLAogCQkgICAgRU1fTVNJWF9MSU5LIHwgRTEwMDBfSU1T X0xTQyk7CkBAIC0xNTUzLDkgKzE1NDksNyBAQCBlbV9oYW5kbGVfcngodm9pZCAqY29udGV4 dCwgaW50IHBlbmRpbmcpCiAJc3RydWN0IGFkYXB0ZXIJKmFkYXB0ZXIgPSByeHItPmFkYXB0 ZXI7CiAgICAgICAgIGJvb2wgICAgICAgICAgICBtb3JlOwogCi0JRU1fUlhfTE9DSyhyeHIp OwotCW1vcmUgPSBlbV9yeGVvZihyeHIsIGFkYXB0ZXItPnJ4X3Byb2Nlc3NfbGltaXQpOwot CUVNX1JYX1VOTE9DSyhyeHIpOworCW1vcmUgPSBlbV9yeGVvZihyeHIsIGFkYXB0ZXItPnJ4 X3Byb2Nlc3NfbGltaXQsIE5VTEwpOwogCWlmIChtb3JlKQogCQl0YXNrcXVldWVfZW5xdWV1 ZShyeHItPnRxLCAmcnhyLT5yeF90YXNrKTsKIAllbHNlCkBAIC0yMDY5LDkgKzIwNjMsNiBA QCBlbV9sb2NhbF90aW1lcih2b2lkICphcmcpCiAJaWYgKGUxMDAwX2dldF9sYWFfc3RhdGVf ODI1NzEoJmFkYXB0ZXItPmh3KSA9PSBUUlVFKQogCQllMTAwMF9yYXJfc2V0KCZhZGFwdGVy LT5odywgYWRhcHRlci0+aHcubWFjLmFkZHIsIDApOwogCi0JaWYgKGVtX2Rpc3BsYXlfZGVi dWdfc3RhdHMgJiYgaWZwLT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JVTk5JTkcpCi0JCWVt X3ByaW50X2h3X3N0YXRzKGFkYXB0ZXIpOwotCiAJLyoKIAkqKiBDaGVjayBmb3IgdGltZSBz aW5jZSBhbnkgZGVzY3JpcHRvciB3YXMgY2xlYW5lZAogCSovCkBAIC0yNDMxLDExICsyNDIy LDYgQEAgZW1fYWxsb2NhdGVfbXNpeChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcgogCWFkYXB0 ZXItPmxpbmt2ZWMgPSB2ZWN0b3I7CiAJYWRhcHRlci0+aXZhcnMgfD0gICg4IHwgdmVjdG9y KSA8PCAxNjsKIAlhZGFwdGVyLT5pdmFycyB8PSAweDgwMDAwMDAwOwotCVRBU0tfSU5JVCgm YWRhcHRlci0+bGlua190YXNrLCAwLCBlbV9oYW5kbGVfbGluaywgYWRhcHRlcik7Ci0JYWRh cHRlci0+dHEgPSB0YXNrcXVldWVfY3JlYXRlX2Zhc3QoImVtX2xpbmsiLCBNX05PV0FJVCwK LQkgICAgdGFza3F1ZXVlX3RocmVhZF9lbnF1ZXVlLCAmYWRhcHRlci0+dHEpOwotCXRhc2tx dWV1ZV9zdGFydF90aHJlYWRzKCZhZGFwdGVyLT50cSwgMSwgUElfTkVULCAiJXMgbGlua3Ei LAotCSAgICBkZXZpY2VfZ2V0X25hbWV1bml0KGFkYXB0ZXItPmRldikpOwogCiAJcmV0dXJu ICgwKTsKIH0KQEAgLTQwOTAsOCArNDA3Niw4IEBAIGVtX2luaXRpYWxpemVfcmVjZWl2ZV91 bml0KHN0cnVjdCBhZGFwdGUKICAqICAKICAqICBGb3IgcG9sbGluZyB3ZSBhbHNvIG5vdyBy ZXR1cm4gdGhlIG51bWJlciBvZiBjbGVhbmVkIHBhY2tldHMKICAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov Ci1zdGF0aWMgaW50Ci1lbV9yeGVvZihzdHJ1Y3QgcnhfcmluZyAqcnhyLCBpbnQgY291bnQp CitzdGF0aWMgYm9vbAorZW1fcnhlb2Yoc3RydWN0IHJ4X3JpbmcgKnJ4ciwgaW50IGNvdW50 LCBpbnQgKmRvbmUpCiB7CiAJc3RydWN0IGFkYXB0ZXIJCSphZGFwdGVyID0gcnhyLT5hZGFw dGVyOwogCXN0cnVjdCBpZm5ldAkJKmlmcCA9IGFkYXB0ZXItPmlmcDsKQEAgLTQxMDIsNyAr NDA4OCw3IEBAIGVtX3J4ZW9mKHN0cnVjdCByeF9yaW5nICpyeHIsIGludCBjb3VudCkKIAli b29sCQkJZW9wOwogCXN0cnVjdCBlMTAwMF9yeF9kZXNjCSpjdXI7CiAKLQlFTV9SWF9MT0NL X0FTU0VSVChyeHIpOworCUVNX1JYX0xPQ0socnhyKTsKIAogCWZvciAoaSA9IHJ4ci0+bmV4 dF90b19jaGVjaywgcHJvY2Vzc2VkID0gMDsgY291bnQgIT0gMDspIHsKIApAQCAtNDE5Niw4 ICs0MTgyLDEzIEBAIHNraXA6CiAJCQlpID0gMDsKIAogCQkvKiBTZW5kIHRvIHRoZSBzdGFj ayAqLwotCQlpZiAoc2VuZG1wICE9IE5VTEwpCisJCWlmIChzZW5kbXAgIT0gTlVMTCkgewor CQkJcnhyLT5uZXh0X3RvX2NoZWNrID0gaTsKKwkJCUVNX1JYX1VOTE9DSyhyeHIpOwogCQkJ KCppZnAtPmlmX2lucHV0KShpZnAsIHNlbmRtcCk7CisJCQlFTV9SWF9MT0NLKHJ4cik7CisJ CQlpID0gcnhyLT5uZXh0X3RvX2NoZWNrOworCQl9CiAKIAkJLyogT25seSByZWZyZXNoIG1i dWZzIGV2ZXJ5IDggZGVzY3JpcHRvcnMgKi8KIAkJaWYgKHByb2Nlc3NlZCA9PSA4KSB7CkBA IC00MjEzLDEyICs0MjA0LDExIEBAIHNraXA6CiAJfQogCiAJcnhyLT5uZXh0X3RvX2NoZWNr ID0gaTsKKwlpZiAoZG9uZSAhPSBOVUxMKQorCQkqZG9uZSA9IHJ4ZG9uZTsKKwlFTV9SWF9V TkxPQ0socnhyKTsKIAotI2lmZGVmIERFVklDRV9QT0xMSU5HCi0JcmV0dXJuIChyeGRvbmUp OwotI2Vsc2UKIAlyZXR1cm4gKChzdGF0dXMgJiBFMTAwMF9SWERfU1RBVF9ERCkgPyBUUlVF IDogRkFMU0UpOwotI2VuZGlmCiB9CiAKICNpZm5kZWYgX19OT19TVFJJQ1RfQUxJR05NRU5U CkBAIC00ODY5LDExNCArNDg1OSwyODUgQEAgZW1fdXBkYXRlX3N0YXRzX2NvdW50ZXJzKHN0 cnVjdCBhZGFwdGVyIAogfQogCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIFRoaXMg cm91dGluZSBpcyBjYWxsZWQgb25seSB3aGVuIGVtX2Rpc3BsYXlfZGVidWdfc3RhdHMgaXMg ZW5hYmxlZC4KLSAqICBUaGlzIHJvdXRpbmUgcHJvdmlkZXMgYSB3YXkgdG8gdGFrZSBhIGxv b2sgYXQgaW1wb3J0YW50IHN0YXRpc3RpY3MKLSAqICBtYWludGFpbmVkIGJ5IHRoZSBkcml2 ZXIgYW5kIGhhcmR3YXJlLgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIEFkZCBz eXNjdGwgdmFyaWFibGVzLCBvbmUgcGVyIHN0YXRpc3RpYywgdG8gdGhlIHN5c3RlbS4KKyAq Lwogc3RhdGljIHZvaWQKLWVtX3ByaW50X2RlYnVnX2luZm8oc3RydWN0IGFkYXB0ZXIgKmFk YXB0ZXIpCitlbV9hZGRfaHdfc3RhdHMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCiB7CisK IAlkZXZpY2VfdCBkZXYgPSBhZGFwdGVyLT5kZXY7Ci0JdTggKmh3X2FkZHIgPSBhZGFwdGVy LT5ody5od19hZGRyOwotCXN0cnVjdCByeF9yaW5nICpyeHIgPSBhZGFwdGVyLT5yeF9yaW5n czsKLQlzdHJ1Y3QgdHhfcmluZyAqdHhyID0gYWRhcHRlci0+dHhfcmluZ3M7CiAKLQlkZXZp Y2VfcHJpbnRmKGRldiwgIkFkYXB0ZXIgaGFyZHdhcmUgYWRkcmVzcyA9ICVwIFxuIiwgaHdf YWRkcik7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJDVFJMID0gMHgleCBSQ1RMID0gMHgleCBc biIsCi0JICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfQ1RSTCksCi0J ICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUkNUTCkpOwotCWRldmlj ZV9wcmludGYoZGV2LCAiUGFja2V0IGJ1ZmZlciA9IFR4PSVkayBSeD0lZGsgXG4iLAotCSAg ICAoKEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUEJBKSAmIDB4ZmZmZjAw MDApID4+IDE2KSxcCi0JICAgIChFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAw X1BCQSkgJiAweGZmZmYpICk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJGbG93IGNvbnRyb2wg d2F0ZXJtYXJrcyBoaWdoID0gJWQgbG93ID0gJWRcbiIsCi0JICAgIGFkYXB0ZXItPmh3LmZj LmhpZ2hfd2F0ZXIsCi0JICAgIGFkYXB0ZXItPmh3LmZjLmxvd193YXRlcik7Ci0JZGV2aWNl X3ByaW50ZihkZXYsICJ0eF9pbnRfZGVsYXkgPSAlZCwgdHhfYWJzX2ludF9kZWxheSA9ICVk XG4iLAotCSAgICBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX1RJRFYpLAot CSAgICBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX1RBRFYpKTsKLQlkZXZp Y2VfcHJpbnRmKGRldiwgInJ4X2ludF9kZWxheSA9ICVkLCByeF9hYnNfaW50X2RlbGF5ID0g JWRcbiIsCi0JICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUkRUUiks Ci0JICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUkFEVikpOworCXN0 cnVjdCBzeXNjdGxfY3R4X2xpc3QgKmN0eCA9IGRldmljZV9nZXRfc3lzY3RsX2N0eChkZXYp OworCXN0cnVjdCBzeXNjdGxfb2lkICp0cmVlID0gZGV2aWNlX2dldF9zeXNjdGxfdHJlZShk ZXYpOworCXN0cnVjdCBzeXNjdGxfb2lkX2xpc3QgKmNoaWxkID0gU1lTQ1RMX0NISUxEUkVO KHRyZWUpOworCXN0cnVjdCBlMTAwMF9od19zdGF0cyAqc3RhdHMgPSAmYWRhcHRlci0+c3Rh dHM7CisKKwlzdHJ1Y3Qgc3lzY3RsX29pZCAqc3RhdF9ub2RlLCAqaW50X25vZGUsICpob3N0 X25vZGU7CisJc3RydWN0IHN5c2N0bF9vaWRfbGlzdCAqc3RhdF9saXN0LCAqaW50X2xpc3Qs ICpob3N0X2xpc3Q7CisKKwkvKiBEcml2ZXIgU3RhdGlzdGljcyAqLworCVNZU0NUTF9BRERf VUlOVChjdHgsIGNoaWxkLCBPSURfQVVUTywgImxpbmtfaXJxIiwgCisJCQlDVExGTEFHX1JE LCAmYWRhcHRlci0+bGlua19pcnEsIDAsCisJCQkiTGluayBNU0lYIElSUSBIYW5kbGVkIik7 CisJU1lTQ1RMX0FERF9VTE9ORyhjdHgsIGNoaWxkLCBPSURfQVVUTywgIm1idWZfYWxsb2Nf ZmFpbCIsIAorCQkJIENUTEZMQUdfUkQsICZhZGFwdGVyLT5tYnVmX2FsbG9jX2ZhaWxlZCwK KwkJCSAiU3RkIG1idWYgZmFpbGVkIik7CisJU1lTQ1RMX0FERF9VTE9ORyhjdHgsIGNoaWxk LCBPSURfQVVUTywgImNsdXN0ZXJfYWxsb2NfZmFpbCIsIAorCQkJIENUTEZMQUdfUkQsICZh ZGFwdGVyLT5tYnVmX2NsdXN0ZXJfZmFpbGVkLAorCQkJICJTdGQgbWJ1ZiBjbHVzdGVyIGZh aWxlZCIpOworCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJkcm9w cGVkIiwgCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+ZHJvcHBlZF9wa3RzLAorCQkJIkRy aXZlciBkcm9wcGVkIHBhY2tldHMiKTsKKwlTWVNDVExfQUREX1VMT05HKGN0eCwgY2hpbGQs IE9JRF9BVVRPLCAidHhfZG1hX2ZhaWwiLCAKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5u b190eF9kbWFfc2V0dXAsCisJCQkiRHJpdmVyIHR4IGRtYSBmYWlsdXJlIGluIHhtaXQiKTsK KworCVNZU0NUTF9BRERfVUlOVChjdHgsIGNoaWxkLCBPSURfQVVUTywgImZjX2hpZ2hfd2F0 ZXIiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPmh3LmZjLmhpZ2hfd2F0ZXIsIDAsCisJ CQkiRmxvdyBDb250cm9sIEhpZ2ggV2F0ZXJtYXJrIik7CisJU1lTQ1RMX0FERF9VSU5UKGN0 eCwgY2hpbGQsIE9JRF9BVVRPLCAiZmNfbG93X3dhdGVyIiwgCisJCQlDVExGTEFHX1JELCAm YWRhcHRlci0+aHcuZmMubG93X3dhdGVyLCAwLAorCQkJIkZsb3cgQ29udHJvbCBMb3cgV2F0 ZXJtYXJrIik7CisKKwkvKiBNQUMgc3RhdHMgZ2V0IHRoZSBvd24gc3ViIG5vZGUgKi8KKwor CXN0YXRfbm9kZSA9IFNZU0NUTF9BRERfTk9ERShjdHgsIGNoaWxkLCBPSURfQVVUTywgIm1h Y19zdGF0cyIsIAorCQkJCSAgICBDVExGTEFHX1JELCBOVUxMLCAiU3RhdGlzdGljcyIpOwor CXN0YXRfbGlzdCA9IFNZU0NUTF9DSElMRFJFTihzdGF0X25vZGUpOworCisJU1lTQ1RMX0FE RF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgImV4Y2Vzc19jb2xsIiwgCisJCQlD VExGTEFHX1JELCAmc3RhdHMtPmVjb2wsCisJCQkiRXhjZXNzaXZlIGNvbGxpc2lvbnMiKTsK KwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAic3ltYm9sX2Vy cm9ycyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuc3ltZXJycywKKwkJCSJT eW1ib2wgRXJyb3JzIik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURf QVVUTywgInNlcXVlbmNlX2Vycm9ycyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3Rh dHMuc2VjLAorCQkJIlNlcXVlbmNlIEVycm9ycyIpOworCVNZU0NUTF9BRERfUVVBRChjdHgs IHN0YXRfbGlzdCwgT0lEX0FVVE8sICJkZWZlcl9jb3VudCIsCisJCQlDVExGTEFHX1JELCAm YWRhcHRlci0+c3RhdHMuZGMsCisJCQkiRGVmZXIgQ291bnQiKTsKKwlTWVNDVExfQUREX1FV QUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAibWlzc2VkX3BhY2tldHMiLAorCQkJQ1RM RkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLm1wYywKKwkJCSJNaXNzZWQgUGFja2V0cyIpOwor CVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyZWN2X25vX2J1 ZmYiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnJuYmMsCisJCQkiUmVjZWl2 ZSBObyBCdWZmZXJzIik7CisJLyogUkxFQyBpcyBpbmFjY3VyYXRlIG9uIHNvbWUgaGFyZHdh cmUsIGNhbGN1bGF0ZSBvdXIgb3duLiAqLworLyogCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0 YXRfbGlzdCwgT0lEX0FVVE8sICJyZWN2X2xlbl9lcnJzIiwgKi8KKy8qIAkJCUNUTEZMQUdf UkQsIGFkYXB0ZXItPnN0YXRzLnJvYyArIGFkYXB0ZXItPnN0YXRzLnJ1YywgKi8KKy8qIAkJ CSJSZWNlaXZlIExlbmd0aCBFcnJvcnMiKTsgKi8KKworCVNZU0NUTF9BRERfUVVBRChjdHgs IHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyZWN2X2VycnMiLAorCQkJQ1RMRkxBR19SRCwgJmFk YXB0ZXItPnN0YXRzLnJ4ZXJyYywKKwkJCSJSZWNlaXZlIEVycm9ycyIpOworCVNZU0NUTF9B RERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJjcmNfZXJycyIsCisJCQlDVExG TEFHX1JELCAmYWRhcHRlci0+c3RhdHMuY3JjZXJycywKKwkJCSJDUkMgZXJyb3JzIik7CisJ U1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgImFsaWdubWVudF9l cnJzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5hbGduZXJyYywKKwkJCSJB bGlnbm1lbnQgRXJyb3JzIik7CisJLyogT24gODI1NzUgdGhlc2UgYXJlIGNvbGxpc2lvbiBj b3VudHMgKi8KKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAi Y29sbF9leHRfZXJycyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuY2V4dGVy ciwKKwkJCSJDb2xsaXNpb24vQ2FycmllciBleHRlbnNpb24gZXJyb3JzIik7CisJU1lTQ1RM X0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJ4X292ZXJydW5zIiwKKwkJ CUNUTEZMQUdfUkQsICZhZGFwdGVyLT5yeF9vdmVycnVucywKKwkJCSJSWCBvdmVycnVucyIp OworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ3YXRjaGRv Z190aW1lb3V0cyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+d2F0Y2hkb2dfZXZlbnRz LAorCQkJIldhdGNoZG9nIHRpbWVvdXRzIik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3Rh dF9saXN0LCBPSURfQVVUTywgInhvbl9yZWN2ZCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRl ci0+c3RhdHMueG9ucnhjLAorCQkJIlhPTiBSZWNlaXZlZCIpOworCVNZU0NUTF9BRERfUVVB RChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ4b25fdHhkIiwKKwkJCUNUTEZMQUdfUkQs ICZhZGFwdGVyLT5zdGF0cy54b250eGMsCisJCQkiWE9OIFRyYW5zbWl0dGVkIik7CisJU1lT Q1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInhvZmZfcmVjdmQiLAor CQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnhvZmZyeGMsCisJCQkiWE9GRiBSZWNl aXZlZCIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ4 b2ZmX3R4ZCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMueG9mZnR4YywKKwkJ CSJYT0ZGIFRyYW5zbWl0dGVkIik7CisKKwkvKiBQYWNrZXQgUmVjZXB0aW9uIFN0YXRzICov CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInRvdGFsX3Br dHNfcmVjdmQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnRwciwKKwkJCSJU b3RhbCBQYWNrZXRzIFJlY2VpdmVkICIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRf bGlzdCwgT0lEX0FVVE8sICJnb29kX3BrdHNfcmVjdmQiLAorCQkJQ1RMRkxBR19SRCwgJmFk YXB0ZXItPnN0YXRzLmdwcmMsCisJCQkiR29vZCBQYWNrZXRzIFJlY2VpdmVkIik7CisJU1lT Q1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgImJjYXN0X3BrdHNfcmVj dmQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmJwcmMsCisJCQkiQnJvYWRj YXN0IFBhY2tldHMgUmVjZWl2ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xp c3QsIE9JRF9BVVRPLCAibWNhc3RfcGt0c19yZWN2ZCIsCisJCQlDVExGTEFHX1JELCAmYWRh cHRlci0+c3RhdHMubXByYywKKwkJCSJNdWx0aWNhc3QgUGFja2V0cyBSZWNlaXZlZCIpOwor CVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyeF9mcmFtZXNf NjQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnByYzY0LAorCQkJIjY0IGJ5 dGUgZnJhbWVzIHJlY2VpdmVkICIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlz dCwgT0lEX0FVVE8sICJyeF9mcmFtZXNfNjVfMTI3IiwKKwkJCUNUTEZMQUdfUkQsICZhZGFw dGVyLT5zdGF0cy5wcmMxMjcsCisJCQkiNjUtMTI3IGJ5dGUgZnJhbWVzIHJlY2VpdmVkIik7 CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJ4X2ZyYW1l c18xMjhfMjU1IiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5wcmMyNTUsCisJ CQkiMTI4LTI1NSBieXRlIGZyYW1lcyByZWNlaXZlZCIpOworCVNZU0NUTF9BRERfUVVBRChj dHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyeF9mcmFtZXNfMjU2XzUxMSIsCisJCQlDVExG TEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHJjNTExLAorCQkJIjI1Ni01MTEgYnl0ZSBmcmFt ZXMgcmVjZWl2ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9B VVRPLCAicnhfZnJhbWVzXzUxMl8xMDIzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5z dGF0cy5wcmMxMDIzLAorCQkJIjUxMi0xMDIzIGJ5dGUgZnJhbWVzIHJlY2VpdmVkIik7CisJ U1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJ4X2ZyYW1lc18x MDI0XzE1MjIiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnByYzE1MjIsCisJ CQkiMTAyMy0xNTIyIGJ5dGUgZnJhbWVzIHJlY2VpdmVkIik7CisgCVNZU0NUTF9BRERfUVVB RChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJnb29kX29jdGV0c19yZWN2ZCIsIAorIAkJ CUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5nb3JjLCAKKyAJCQkiR29vZCBPY3RldHMg UmVjZWl2ZWQiKTsgCisKKwkvKiBQYWNrZXQgVHJhbnNtaXNzaW9uIFN0YXRzICovCisgCVNZ U0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJnb29kX29jdGVzdF90 eGQiLCAKKyAJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuZ290YywgCisgCQkJIkdv b2QgT2N0ZXN0IFRyYW5zbWl0dGVkIik7IAorCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRf bGlzdCwgT0lEX0FVVE8sICJ0b3RhbF9wa3RzX3R4ZCIsCisJCQlDVExGTEFHX1JELCAmYWRh cHRlci0+c3RhdHMudHB0LAorCQkJIlRvdGFsIFBhY2tldHMgVHJhbnNtaXR0ZWQiKTsKKwlT WVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZ29vZF9wa3RzX3R4 ZCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuZ3B0YywKKwkJCSJHb29kIFBh Y2tldHMgVHJhbnNtaXR0ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3Qs IE9JRF9BVVRPLCAiYmNhc3RfcGt0c190eGQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXIt PnN0YXRzLmJwdGMsCisJCQkiQnJvYWRjYXN0IFBhY2tldHMgVHJhbnNtaXR0ZWQiKTsKKwlT WVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAibWNhc3RfcGt0c190 eGQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLm1wdGMsCisJCQkiTXVsdGlj YXN0IFBhY2tldHMgVHJhbnNtaXR0ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0 X2xpc3QsIE9JRF9BVVRPLCAidHhfZnJhbWVzXzY0IiwKKwkJCUNUTEZMQUdfUkQsICZhZGFw dGVyLT5zdGF0cy5wdGM2NCwKKwkJCSI2NCBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCAiKTsK KwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAidHhfZnJhbWVz XzY1XzEyNyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHRjMTI3LAorCQkJ IjY1LTEyNyBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCIpOworCVNZU0NUTF9BRERfUVVBRChj dHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ0eF9mcmFtZXNfMTI4XzI1NSIsCisJCQlDVExG TEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHRjMjU1LAorCQkJIjEyOC0yNTUgYnl0ZSBmcmFt ZXMgdHJhbnNtaXR0ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9J RF9BVVRPLCAidHhfZnJhbWVzXzI1Nl81MTEiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXIt PnN0YXRzLnB0YzUxMSwKKwkJCSIyNTYtNTExIGJ5dGUgZnJhbWVzIHRyYW5zbWl0dGVkIik7 CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInR4X2ZyYW1l c181MTJfMTAyMyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHRjMTAyMywK KwkJCSI1MTItMTAyMyBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCIpOworCVNZU0NUTF9BRERf UVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ0eF9mcmFtZXNfMTAyNF8xNTIyIiwK KwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5wdGMxNTIyLAorCQkJIjEwMjQtMTUy MiBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0 YXRfbGlzdCwgT0lEX0FVVE8sICJ0c29fdHhkIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVy LT5zdGF0cy50c2N0YywKKwkJCSJUU08gQ29udGV4dHMgVHJhbnNtaXR0ZWQiKTsKKwlTWVND VExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAidHNvX2N0eF9mYWlsIiwK KwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy50c2N0ZmMsCisJCQkiVFNPIENvbnRl eHRzIEZhaWxlZCIpOworCisKKwkvKiBJbnRlcnJ1cHQgU3RhdHMgKi8KKworCWludF9ub2Rl ID0gU1lTQ1RMX0FERF9OT0RFKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAiaW50ZXJydXB0cyIs IAorCQkJCSAgICBDVExGTEFHX1JELCBOVUxMLCAiSW50ZXJydXB0IFN0YXRpc3RpY3MiKTsK KwlpbnRfbGlzdCA9IFNZU0NUTF9DSElMRFJFTihpbnRfbm9kZSk7CisKKwlTWVNDVExfQURE X1FVQUQoY3R4LCBpbnRfbGlzdCwgT0lEX0FVVE8sICJhc3NlcnRzIiwKKwkJCUNUTEZMQUdf UkQsICZhZGFwdGVyLT5zdGF0cy5pYWMsCisJCQkiSW50ZXJydXB0IEFzc2VydGlvbiBDb3Vu dCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgaW50X2xpc3QsIE9JRF9BVVRPLCAicnhf cGt0X3RpbWVyIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5pY3J4cHRjLAor CQkJIkludGVycnVwdCBDYXVzZSBSeCBQa3QgVGltZXIgRXhwaXJlIENvdW50Iik7CisKKwlT WVNDVExfQUREX1FVQUQoY3R4LCBpbnRfbGlzdCwgT0lEX0FVVE8sICJyeF9hYnNfdGltZXIi LAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmljcnhhdGMsCisJCQkiSW50ZXJy dXB0IENhdXNlIFJ4IEFicyBUaW1lciBFeHBpcmUgQ291bnQiKTsKKworCVNZU0NUTF9BRERf UVVBRChjdHgsIGludF9saXN0LCBPSURfQVVUTywgInR4X3BrdF90aW1lciIsCisJCQlDVExG TEFHX1JELCAmYWRhcHRlci0+c3RhdHMuaWN0eHB0YywKKwkJCSJJbnRlcnJ1cHQgQ2F1c2Ug VHggUGt0IFRpbWVyIEV4cGlyZSBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwg aW50X2xpc3QsIE9JRF9BVVRPLCAidHhfYWJzX3RpbWVyIiwKKwkJCUNUTEZMQUdfUkQsICZh ZGFwdGVyLT5zdGF0cy5pY3R4YXRjLAorCQkJIkludGVycnVwdCBDYXVzZSBUeCBBYnMgVGlt ZXIgRXhwaXJlIENvdW50Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBpbnRfbGlzdCwg T0lEX0FVVE8sICJ0eF9xdWV1ZV9lbXB0eSIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+ c3RhdHMuaWN0eHFlYywKKwkJCSJJbnRlcnJ1cHQgQ2F1c2UgVHggUXVldWUgRW1wdHkgQ291 bnQiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGludF9saXN0LCBPSURfQVVUTywgInR4 X3F1ZXVlX21pbl90aHJlc2giLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmlj dHhxbXRjLAorCQkJIkludGVycnVwdCBDYXVzZSBUeCBRdWV1ZSBNaW4gVGhyZXNoIENvdW50 Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBpbnRfbGlzdCwgT0lEX0FVVE8sICJyeF9k ZXNjX21pbl90aHJlc2giLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmljcnhk bXRjLAorCQkJIkludGVycnVwdCBDYXVzZSBSeCBEZXNjIE1pbiBUaHJlc2ggQ291bnQiKTsK KworCVNZU0NUTF9BRERfUVVBRChjdHgsIGludF9saXN0LCBPSURfQVVUTywgInJ4X292ZXJy dW4iLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmljcnhvYywKKwkJCSJJbnRl cnJ1cHQgQ2F1c2UgUmVjZWl2ZXIgT3ZlcnJ1biBDb3VudCIpOworCisJLyogSG9zdCB0byBD YXJkIFN0YXRzICovCisKKwlob3N0X25vZGUgPSBTWVNDVExfQUREX05PREUoY3R4LCBjaGls ZCwgT0lEX0FVVE8sICJob3N0IiwgCisJCQkJICAgIENUTEZMQUdfUkQsIE5VTEwsIAorCQkJ CSAgICAiSG9zdCB0byBDYXJkIFN0YXRpc3RpY3MiKTsKKworCWhvc3RfbGlzdCA9IFNZU0NU TF9DSElMRFJFTihob3N0X25vZGUpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgaG9zdF9s aXN0LCBPSURfQVVUTywgImJyZWFrZXJfdHhfcGt0IiwKKwkJCUNUTEZMQUdfUkQsICZhZGFw dGVyLT5zdGF0cy5jYnRtcGMsCisJCQkiQ2lyY3VpdCBCcmVha2VyIFR4IFBhY2tldCBDb3Vu dCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgaG9zdF9saXN0LCBPSURfQVVUTywgImhv c3RfdHhfcGt0X2Rpc2NhcmQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmh0 ZHBtYywKKwkJCSJIb3N0IFRyYW5zbWl0IERpc2NhcmRlZCBQYWNrZXRzIik7CisKKwlTWVND VExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAicnhfcGt0IiwKKwkJCUNU TEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5ycHRoYywKKwkJCSJSeCBQYWNrZXRzIFRvIEhv c3QiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGhvc3RfbGlzdCwgT0lEX0FVVE8sICJi cmVha2VyX3J4X3BrdHMiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmNicm1w YywKKwkJCSJDaXJjdWl0IEJyZWFrZXIgUnggUGFja2V0IENvdW50Iik7CisKKwlTWVNDVExf QUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAiYnJlYWtlcl9yeF9wa3RfZHJv cCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuY2JyZHBjLAorCQkJIkNpcmN1 aXQgQnJlYWtlciBSeCBEcm9wcGVkIENvdW50Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4 LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAidHhfZ29vZF9wa3QiLAorCQkJQ1RMRkxBR19SRCwg JmFkYXB0ZXItPnN0YXRzLmhncHRjLAorCQkJIkhvc3QgR29vZCBQYWNrZXRzIFR4IENvdW50 Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAiYnJl YWtlcl90eF9wa3RfZHJvcCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuaHRj YmRwYywKKwkJCSJIb3N0IFR4IENpcmN1aXQgQnJlYWtlciBEcm9wcGVkIENvdW50Iik7CisK KwlTWVNDVExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAicnhfZ29vZF9i eXRlcyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuaGdvcmMsCisJCQkiSG9z dCBHb29kIE9jdGV0cyBSZWNlaXZlZCBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0 eCwgaG9zdF9saXN0LCBPSURfQVVUTywgInR4X2dvb2RfYnl0ZXMiLAorCQkJQ1RMRkxBR19S RCwgJmFkYXB0ZXItPnN0YXRzLmhnb3RjLAorCQkJIkhvc3QgR29vZCBPY3RldHMgVHJhbnNt aXQgQ291bnQiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGhvc3RfbGlzdCwgT0lEX0FV VE8sICJsZW5ndGhfZXJyb3JzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5s ZW5lcnJzLAorCQkJIkxlbmd0aCBFcnJvcnMiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgs IGhvc3RfbGlzdCwgT0lEX0FVVE8sICJzZXJkZXNfdmlvbGF0aW9uX3BrdCIsCisJCQlDVExG TEFHX1JELCAmYWRhcHRlci0+c3RhdHMuc2N2cGMsCisJCQkiU2VyRGVzL1NHTUlJIENvZGUg VmlvbGF0aW9uIFBrdCBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgaG9zdF9s aXN0LCBPSURfQVVUTywgImhlYWRlcl9yZWRpcl9taXNzZWQiLAorCQkJQ1RMRkxBR19SRCwg JmFkYXB0ZXItPnN0YXRzLmhybXBjLAorCQkJIkhlYWRlciBSZWRpcmVjdGlvbiBNaXNzZWQg UGFja2V0IENvdW50Iik7CiAKLQlmb3IgKGludCBpID0gMDsgaSA8IGFkYXB0ZXItPm51bV9x dWV1ZXM7IGkrKywgdHhyKyspIHsKLQkJZGV2aWNlX3ByaW50ZihkZXYsICJRdWV1ZSglZCkg dGRoID0gJWQsIHRkdCA9ICVkXG4iLCBpLAotCQkgICAgRTEwMDBfUkVBRF9SRUcoJmFkYXB0 ZXItPmh3LCBFMTAwMF9UREgoaSkpLAotCQkgICAgRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXIt Pmh3LCBFMTAwMF9URFQoaSkpKTsKLQkJZGV2aWNlX3ByaW50ZihkZXYsICJUWCglZCkgbm8g ZGVzY3JpcHRvcnMgYXZhaWwgZXZlbnQgPSAlbGRcbiIsCi0JCSAgICB0eHItPm1lLCB0eHIt Pm5vX2Rlc2NfYXZhaWwpOwotCQlkZXZpY2VfcHJpbnRmKGRldiwgIlRYKCVkKSBNU0lYIElS USBIYW5kbGVkID0gJWxkXG4iLAotCQkgICAgdHhyLT5tZSwgdHhyLT50eF9pcnEpOwotCQlk ZXZpY2VfcHJpbnRmKGRldiwgIk51bSBUeCBkZXNjcmlwdG9ycyBhdmFpbCA9ICVkXG4iLAot CQkgICAgdHhyLT50eF9hdmFpbCk7Ci0JCWRldmljZV9wcmludGYoZGV2LCAiVHggRGVzY3Jp cHRvcnMgbm90IGF2YWlsMSA9ICVsZFxuIiwKLQkJICAgIHR4ci0+bm9fZGVzY19hdmFpbCk7 Ci0JfQotCWZvciAoaW50IGkgPSAwOyBpIDwgYWRhcHRlci0+bnVtX3F1ZXVlczsgaSsrLCBy eHIrKykgewotCQlkZXZpY2VfcHJpbnRmKGRldiwgIlJYKCVkKSBNU0lYIElSUSBIYW5kbGVk ID0gJWxkXG4iLAotCQkgICAgcnhyLT5tZSwgcnhyLT5yeF9pcnEpOwotCQlkZXZpY2VfcHJp bnRmKGRldiwgImh3IHJkaCA9ICVkLCBodyByZHQgPSAlZFxuIiwKLQkJICAgIEUxMDAwX1JF QURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUkRIKGkpKSwKLQkJICAgIEUxMDAwX1JFQURf UkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUkRUKGkpKSk7Ci0JfQotCWRldmljZV9wcmludGYo ZGV2LCAiU3RkIG1idWYgZmFpbGVkID0gJWxkXG4iLAotCSAgICBhZGFwdGVyLT5tYnVmX2Fs bG9jX2ZhaWxlZCk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJTdGQgbWJ1ZiBjbHVzdGVyIGZh aWxlZCA9ICVsZFxuIiwKLQkgICAgYWRhcHRlci0+bWJ1Zl9jbHVzdGVyX2ZhaWxlZCk7Ci0J ZGV2aWNlX3ByaW50ZihkZXYsICJEcml2ZXIgZHJvcHBlZCBwYWNrZXRzID0gJWxkXG4iLAot CSAgICBhZGFwdGVyLT5kcm9wcGVkX3BrdHMpOwotfQogCi1zdGF0aWMgdm9pZAotZW1fcHJp bnRfaHdfc3RhdHMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCi17Ci0JZGV2aWNlX3QgZGV2 ID0gYWRhcHRlci0+ZGV2OwogCi0JZGV2aWNlX3ByaW50ZihkZXYsICJFeGNlc3NpdmUgY29s bGlzaW9ucyA9ICVsbGRcbiIsCi0JICAgIChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMuZWNv bCk7Ci0jaWYJKERFQlVHX0hXID4gMCkgIC8qIERvbnQgb3V0cHV0IHRoZXNlIGVycm9ycyBu b3JtYWxseSAqLwotCWRldmljZV9wcmludGYoZGV2LCAiU3ltYm9sIGVycm9ycyA9ICVsbGRc biIsCi0JICAgIChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMuc3ltZXJycyk7Ci0jZW5kaWYK LQlkZXZpY2VfcHJpbnRmKGRldiwgIlNlcXVlbmNlIGVycm9ycyA9ICVsbGRcbiIsCi0JICAg IChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMuc2VjKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwg IkRlZmVyIGNvdW50ID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0 cy5kYyk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJNaXNzZWQgUGFja2V0cyA9ICVsbGRcbiIs Ci0JICAgIChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMubXBjKTsKLQlkZXZpY2VfcHJpbnRm KGRldiwgIlJlY2VpdmUgTm8gQnVmZmVycyA9ICVsbGRcbiIsCi0JICAgIChsb25nIGxvbmcp YWRhcHRlci0+c3RhdHMucm5iYyk7Ci0JLyogUkxFQyBpcyBpbmFjY3VyYXRlIG9uIHNvbWUg aGFyZHdhcmUsIGNhbGN1bGF0ZSBvdXIgb3duLiAqLwotCWRldmljZV9wcmludGYoZGV2LCAi UmVjZWl2ZSBMZW5ndGggRXJyb3JzID0gJWxsZFxuIiwKLQkgICAgKChsb25nIGxvbmcpYWRh cHRlci0+c3RhdHMucm9jICsgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5ydWMpKTsKLQlk ZXZpY2VfcHJpbnRmKGRldiwgIlJlY2VpdmUgZXJyb3JzID0gJWxsZFxuIiwKLQkgICAgKGxv bmcgbG9uZylhZGFwdGVyLT5zdGF0cy5yeGVycmMpOwotCWRldmljZV9wcmludGYoZGV2LCAi Q3JjIGVycm9ycyA9ICVsbGRcbiIsCi0JICAgIChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMu Y3JjZXJycyk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJBbGlnbm1lbnQgZXJyb3JzID0gJWxs ZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5hbGduZXJyYyk7Ci0JZGV2 aWNlX3ByaW50ZihkZXYsICJDb2xsaXNpb24vQ2FycmllciBleHRlbnNpb24gZXJyb3JzID0g JWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5jZXh0ZXJyKTsKLQlk ZXZpY2VfcHJpbnRmKGRldiwgIndhdGNoZG9nIHRpbWVvdXRzID0gJWxkXG4iLAotCSAgICBh ZGFwdGVyLT53YXRjaGRvZ19ldmVudHMpOwotCWRldmljZV9wcmludGYoZGV2LCAiWE9OIFJj dmQgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLnhvbnJ4Yyk7 Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJYT04gWG10ZCA9ICVsbGRcbiIsCi0JICAgIChsb25n IGxvbmcpYWRhcHRlci0+c3RhdHMueG9udHhjKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIlhP RkYgUmN2ZCA9ICVsbGRcbiIsCi0JICAgIChsb25nIGxvbmcpYWRhcHRlci0+c3RhdHMueG9m ZnJ4Yyk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJYT0ZGIFhtdGQgPSAlbGxkXG4iLAotCSAg ICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLnhvZmZ0eGMpOwotCWRldmljZV9wcmludGYo ZGV2LCAiR29vZCBQYWNrZXRzIFJjdmQgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25nKWFk YXB0ZXItPnN0YXRzLmdwcmMpOwotCWRldmljZV9wcmludGYoZGV2LCAiR29vZCBQYWNrZXRz IFhtdGQgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLmdwdGMp OwotCWRldmljZV9wcmludGYoZGV2LCAiVFNPIENvbnRleHRzIFhtdGQgPSAlbGxkXG4iLAot CSAgICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLnRzY3RjKTsKLQlkZXZpY2VfcHJpbnRm KGRldiwgIlRTTyBDb250ZXh0cyBGYWlsZWQgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25n KWFkYXB0ZXItPnN0YXRzLnRzY3RmYyk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC00 OTg2LDI4ICs1MTQ3LDkgQEAgZW1fcHJpbnRfaHdfc3RhdHMoc3RydWN0IGFkYXB0ZXIgKmFk YXB0ZQogICogIDMyIHdvcmRzLCBzdHVmZiB0aGF0IG1hdHRlcnMgaXMgaW4gdGhhdCBleHRl bnQuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgdm9pZAotZW1fcHJpbnRfbnZt X2luZm8oc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCi17Ci0JdTE2CWVlcHJvbV9kYXRhOwot CWludAlpLCBqLCByb3cgPSAwOwotCi0JLyogSXRzIGEgYml0IGNydWRlLCBidXQgaXQgZ2V0 cyB0aGUgam9iIGRvbmUgKi8KLQlwcmludGYoIlxuSW50ZXJmYWNlIEVFUFJPTSBEdW1wOlxu Iik7Ci0JcHJpbnRmKCJPZmZzZXRcbjB4MDAwMCAgIik7Ci0JZm9yIChpID0gMCwgaiA9IDA7 IGkgPCAzMjsgaSsrLCBqKyspIHsKLQkJaWYgKGogPT0gOCkgeyAvKiBNYWtlIHRoZSBvZmZz ZXQgYmxvY2sgKi8KLQkJCWogPSAwOyArK3JvdzsKLQkJCXByaW50ZigiXG4weDAwJXgwICAi LHJvdyk7Ci0JCX0KLQkJZTEwMDBfcmVhZF9udm0oJmFkYXB0ZXItPmh3LCBpLCAxLCAmZWVw cm9tX2RhdGEpOwotCQlwcmludGYoIiUwNHggIiwgZWVwcm9tX2RhdGEpOwotCX0KLQlwcmlu dGYoIlxuIik7Ci19CiAKIHN0YXRpYyBpbnQKLWVtX3N5c2N0bF9kZWJ1Z19pbmZvKFNZU0NU TF9IQU5ETEVSX0FSR1MpCitlbV9zeXNjdGxfbnZtX2luZm8oU1lTQ1RMX0hBTkRMRVJfQVJH UykKIHsKIAlzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcjsKIAlpbnQgZXJyb3I7CkBAIC01MDE5 LDE2ICs1MTYxLDEyIEBAIGVtX3N5c2N0bF9kZWJ1Z19pbmZvKFNZU0NUTF9IQU5ETEVSX0FS R1MKIAlpZiAoZXJyb3IgfHwgIXJlcS0+bmV3cHRyKQogCQlyZXR1cm4gKGVycm9yKTsKIAot CWlmIChyZXN1bHQgPT0gMSkgewotCQlhZGFwdGVyID0gKHN0cnVjdCBhZGFwdGVyICopYXJn MTsKLQkJZW1fcHJpbnRfZGVidWdfaW5mbyhhZGFwdGVyKTsKLQl9CiAJLyoKIAkgKiBUaGlz IHZhbHVlIHdpbGwgY2F1c2UgYSBoZXggZHVtcCBvZiB0aGUKIAkgKiBmaXJzdCAzMiAxNi1i aXQgd29yZHMgb2YgdGhlIEVFUFJPTSB0bwogCSAqIHRoZSBzY3JlZW4uCiAJICovCi0JaWYg KHJlc3VsdCA9PSAyKSB7CisJaWYgKHJlc3VsdCA9PSAxKSB7CiAJCWFkYXB0ZXIgPSAoc3Ry dWN0IGFkYXB0ZXIgKilhcmcxOwogCQllbV9wcmludF9udm1faW5mbyhhZGFwdGVyKTsKICAg ICAgICAgfQpAQCAtNTAzNiwyNiArNTE3NCwyNCBAQCBlbV9zeXNjdGxfZGVidWdfaW5mbyhT WVNDVExfSEFORExFUl9BUkdTCiAJcmV0dXJuIChlcnJvcik7CiB9CiAKLQotc3RhdGljIGlu dAotZW1fc3lzY3RsX3N0YXRzKFNZU0NUTF9IQU5ETEVSX0FSR1MpCitzdGF0aWMgdm9pZAor ZW1fcHJpbnRfbnZtX2luZm8oc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCiB7Ci0Jc3RydWN0 IGFkYXB0ZXIgKmFkYXB0ZXI7Ci0JaW50IGVycm9yOwotCWludCByZXN1bHQ7Ci0KLQlyZXN1 bHQgPSAtMTsKLQllcnJvciA9IHN5c2N0bF9oYW5kbGVfaW50KG9pZHAsICZyZXN1bHQsIDAs IHJlcSk7Ci0KLQlpZiAoZXJyb3IgfHwgIXJlcS0+bmV3cHRyKQotCQlyZXR1cm4gKGVycm9y KTsKKwl1MTYJZWVwcm9tX2RhdGE7CisJaW50CWksIGosIHJvdyA9IDA7CiAKLQlpZiAocmVz dWx0ID09IDEpIHsKLQkJYWRhcHRlciA9IChzdHJ1Y3QgYWRhcHRlciAqKWFyZzE7Ci0JCWVt X3ByaW50X2h3X3N0YXRzKGFkYXB0ZXIpOworCS8qIEl0cyBhIGJpdCBjcnVkZSwgYnV0IGl0 IGdldHMgdGhlIGpvYiBkb25lICovCisJcHJpbnRmKCJcbkludGVyZmFjZSBFRVBST00gRHVt cDpcbiIpOworCXByaW50ZigiT2Zmc2V0XG4weDAwMDAgICIpOworCWZvciAoaSA9IDAsIGog PSAwOyBpIDwgMzI7IGkrKywgaisrKSB7CisJCWlmIChqID09IDgpIHsgLyogTWFrZSB0aGUg b2Zmc2V0IGJsb2NrICovCisJCQlqID0gMDsgKytyb3c7CisJCQlwcmludGYoIlxuMHgwMCV4 MCAgIixyb3cpOworCQl9CisJCWUxMDAwX3JlYWRfbnZtKCZhZGFwdGVyLT5odywgaSwgMSwg JmVlcHJvbV9kYXRhKTsKKwkJcHJpbnRmKCIlMDR4ICIsIGVlcHJvbV9kYXRhKTsKIAl9Ci0K LQlyZXR1cm4gKGVycm9yKTsKKwlwcmludGYoIlxuIik7CiB9CiAKIHN0YXRpYyBpbnQKLS0t IHN5cy9kZXYvZTEwMDAvaWZfaWdiLmMJMjAxMC8wNS8xNCAyMjoyMDo1OAkxLjIxLjIuOAor Kysgc3lzL2Rldi9lMTAwMC9pZl9pZ2IuYwkyMDEwLzA2LzE4IDE3OjIyOjA4CTEuMjEuMi45 CkBAIC0zMCw3ICszMCw3IEBACiAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCi0vKiRGcmVlQlNEOiBzcmMvc3lzL2Rldi9lMTAw MC9pZl9pZ2IuYyx2IDEuMjEuMi44LjIuMSAyMDEwLzA2LzE0IDAyOjA5OjA2IGtlbnNtaXRo IEV4cCAkKi8KKy8qJEZyZWVCU0Q6IHNyYy9zeXMvZGV2L2UxMDAwL2lmX2lnYi5jLHYgMS4y MS4yLjkgMjAxMC8wNi8xOCAxNzoyMjowOCBqZnYgRXhwICQqLwogCiAKICNpZmRlZiBIQVZF X0tFUk5FTF9PUFRJT05fSEVBREVSUwpAQCAtOTksNyArOTksNyBAQCBpbnQJaWdiX2Rpc3Bs YXlfZGVidWdfc3RhdHMgPSAwOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogIERyaXZlciB2ZXJz aW9uOgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KLWNoYXIgaWdiX2RyaXZlcl92ZXJzaW9uW10gPSAi dmVyc2lvbiAtIDEuOS41IjsKK2NoYXIgaWdiX2RyaXZlcl92ZXJzaW9uW10gPSAidmVyc2lv biAtIDEuOS42IjsKIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0yMDUsMTQgKzIwNSwxMyBA QCBzdGF0aWMgX19pbmxpbmUJdm9pZCBpZ2JfcnhfZGlzY2FyZChzdHJ1CiBzdGF0aWMgX19p bmxpbmUgdm9pZCBpZ2JfcnhfaW5wdXQoc3RydWN0IHJ4X3JpbmcgKiwKIAkJICAgIHN0cnVj dCBpZm5ldCAqLCBzdHJ1Y3QgbWJ1ZiAqLCB1MzIpOwogCi1zdGF0aWMgYm9vbAlpZ2Jfcnhl b2Yoc3RydWN0IGlnYl9xdWV1ZSAqLCBpbnQpOworc3RhdGljIGJvb2wJaWdiX3J4ZW9mKHN0 cnVjdCBpZ2JfcXVldWUgKiwgaW50LCBpbnQgKik7CiBzdGF0aWMgdm9pZAlpZ2JfcnhfY2hl Y2tzdW0odTMyLCBzdHJ1Y3QgbWJ1ZiAqLCB1MzIpOwogc3RhdGljIGludAlpZ2JfdHhfY3R4 X3NldHVwKHN0cnVjdCB0eF9yaW5nICosIHN0cnVjdCBtYnVmICopOwogc3RhdGljIGJvb2wJ aWdiX3Rzb19zZXR1cChzdHJ1Y3QgdHhfcmluZyAqLCBzdHJ1Y3QgbWJ1ZiAqLCB1MzIgKik7 CiBzdGF0aWMgdm9pZAlpZ2Jfc2V0X3Byb21pc2Moc3RydWN0IGFkYXB0ZXIgKik7CiBzdGF0 aWMgdm9pZAlpZ2JfZGlzYWJsZV9wcm9taXNjKHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGlj IHZvaWQJaWdiX3NldF9tdWx0aShzdHJ1Y3QgYWRhcHRlciAqKTsKLXN0YXRpYyB2b2lkCWln Yl9wcmludF9od19zdGF0cyhzdHJ1Y3QgYWRhcHRlciAqKTsKIHN0YXRpYyB2b2lkCWlnYl91 cGRhdGVfbGlua19zdGF0dXMoc3RydWN0IGFkYXB0ZXIgKik7CiBzdGF0aWMgdm9pZAlpZ2Jf cmVmcmVzaF9tYnVmcyhzdHJ1Y3QgcnhfcmluZyAqLCBpbnQpOwogCkBAIC0yMjQsMTEgKzIy MywxMCBAQCBzdGF0aWMgaW50CWlnYl94bWl0KHN0cnVjdCB0eF9yaW5nICosIHN0CiBzdGF0 aWMgaW50CWlnYl9kbWFfbWFsbG9jKHN0cnVjdCBhZGFwdGVyICosIGJ1c19zaXplX3QsCiAJ CSAgICBzdHJ1Y3QgaWdiX2RtYV9hbGxvYyAqLCBpbnQpOwogc3RhdGljIHZvaWQJaWdiX2Rt YV9mcmVlKHN0cnVjdCBhZGFwdGVyICosIHN0cnVjdCBpZ2JfZG1hX2FsbG9jICopOwotc3Rh dGljIHZvaWQJaWdiX3ByaW50X2RlYnVnX2luZm8oc3RydWN0IGFkYXB0ZXIgKik7CitzdGF0 aWMgaW50CWlnYl9zeXNjdGxfbnZtX2luZm8oU1lTQ1RMX0hBTkRMRVJfQVJHUyk7CiBzdGF0 aWMgdm9pZAlpZ2JfcHJpbnRfbnZtX2luZm8oc3RydWN0IGFkYXB0ZXIgKik7CiBzdGF0aWMg aW50IAlpZ2JfaXNfdmFsaWRfZXRoZXJfYWRkcih1OCAqKTsKLXN0YXRpYyBpbnQJaWdiX3N5 c2N0bF9zdGF0cyhTWVNDVExfSEFORExFUl9BUkdTKTsKLXN0YXRpYyBpbnQJaWdiX3N5c2N0 bF9kZWJ1Z19pbmZvKFNZU0NUTF9IQU5ETEVSX0FSR1MpOworc3RhdGljIHZvaWQgICAgIGln Yl9hZGRfaHdfc3RhdHMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOwogLyogTWFuYWdlbWVu dCBhbmQgV09MIFN1cHBvcnQgKi8KIHN0YXRpYyB2b2lkCWlnYl9pbml0X21hbmFnZWFiaWxp dHkoc3RydWN0IGFkYXB0ZXIgKik7CiBzdGF0aWMgdm9pZAlpZ2JfcmVsZWFzZV9tYW5hZ2Vh YmlsaXR5KHN0cnVjdCBhZGFwdGVyICopOwpAQCAtMjQwLDcgKzIzOCw2IEBAIHN0YXRpYyB2 b2lkICAgICBpZ2JfbGVkX2Z1bmModm9pZCAqLCBpbnQKIHN0YXRpYyBpbnQJaWdiX2lycV9m YXN0KHZvaWQgKik7CiBzdGF0aWMgdm9pZAlpZ2JfYWRkX3J4X3Byb2Nlc3NfbGltaXQoc3Ry dWN0IGFkYXB0ZXIgKiwgY29uc3QgY2hhciAqLAogCQkgICAgY29uc3QgY2hhciAqLCBpbnQg KiwgaW50KTsKLXN0YXRpYyB2b2lkCWlnYl9oYW5kbGVfcnh0eCh2b2lkICpjb250ZXh0LCBp bnQgcGVuZGluZyk7CiBzdGF0aWMgdm9pZAlpZ2JfaGFuZGxlX3F1ZSh2b2lkICpjb250ZXh0 LCBpbnQgcGVuZGluZyk7CiBzdGF0aWMgdm9pZAlpZ2JfaGFuZGxlX2xpbmsodm9pZCAqY29u dGV4dCwgaW50IHBlbmRpbmcpOwogCkBAIC00MTIsMTMgKzQwOSw4IEBAIGlnYl9hdHRhY2go ZGV2aWNlX3QgZGV2KQogCS8qIFNZU0NUTCBzdHVmZiAqLwogCVNZU0NUTF9BRERfUFJPQyhk ZXZpY2VfZ2V0X3N5c2N0bF9jdHgoZGV2KSwKIAkgICAgU1lTQ1RMX0NISUxEUkVOKGRldmlj ZV9nZXRfc3lzY3RsX3RyZWUoZGV2KSksCi0JICAgIE9JRF9BVVRPLCAiZGVidWciLCBDVExU WVBFX0lOVHxDVExGTEFHX1JXLCBhZGFwdGVyLCAwLAotCSAgICBpZ2Jfc3lzY3RsX2RlYnVn X2luZm8sICJJIiwgIkRlYnVnIEluZm9ybWF0aW9uIik7Ci0KLQlTWVNDVExfQUREX1BST0Mo ZGV2aWNlX2dldF9zeXNjdGxfY3R4KGRldiksCi0JICAgIFNZU0NUTF9DSElMRFJFTihkZXZp Y2VfZ2V0X3N5c2N0bF90cmVlKGRldikpLAotCSAgICBPSURfQVVUTywgInN0YXRzIiwgQ1RM VFlQRV9JTlR8Q1RMRkxBR19SVywgYWRhcHRlciwgMCwKLQkgICAgaWdiX3N5c2N0bF9zdGF0 cywgIkkiLCAiU3RhdGlzdGljcyIpOworCSAgICBPSURfQVVUTywgIm52bSIsIENUTFRZUEVf SU5UfENUTEZMQUdfUlcsIGFkYXB0ZXIsIDAsCisJICAgIGlnYl9zeXNjdGxfbnZtX2luZm8s ICJJIiwgIk5WTSBJbmZvcm1hdGlvbiIpOwogCiAJU1lTQ1RMX0FERF9JTlQoZGV2aWNlX2dl dF9zeXNjdGxfY3R4KGFkYXB0ZXItPmRldiksCiAJICAgIFNZU0NUTF9DSElMRFJFTihkZXZp Y2VfZ2V0X3N5c2N0bF90cmVlKGFkYXB0ZXItPmRldikpLApAQCAtNTg0LDYgKzU3Niw4IEBA IGlnYl9hdHRhY2goZGV2aWNlX3QgZGV2KQogCWFkYXB0ZXItPnZsYW5fZGV0YWNoID0gRVZF TlRIQU5ETEVSX1JFR0lTVEVSKHZsYW5fdW5jb25maWcsCiAJICAgICBpZ2JfdW5yZWdpc3Rl cl92bGFuLCBhZGFwdGVyLCBFVkVOVEhBTkRMRVJfUFJJX0ZJUlNUKTsKIAorCWlnYl9hZGRf aHdfc3RhdHMoYWRhcHRlcik7CisKIAkvKiBUZWxsIHRoZSBzdGFjayB0aGF0IHRoZSBpbnRl cmZhY2UgaXMgbm90IGFjdGl2ZSAqLwogCWFkYXB0ZXItPmlmcC0+aWZfZHJ2X2ZsYWdzICY9 IH4oSUZGX0RSVl9SVU5OSU5HIHwgSUZGX0RSVl9PQUNUSVZFKTsKIApAQCAtODE4LDIxICs4 MTIsMjUgQEAgaWdiX3N0YXJ0KHN0cnVjdCBpZm5ldCAqaWZwKQogc3RhdGljIGludAogaWdi X21xX3N0YXJ0KHN0cnVjdCBpZm5ldCAqaWZwLCBzdHJ1Y3QgbWJ1ZiAqbSkKIHsKLQlzdHJ1 Y3QgYWRhcHRlcgkqYWRhcHRlciA9IGlmcC0+aWZfc29mdGM7Ci0Jc3RydWN0IHR4X3JpbmcJ KnR4cjsKLQlpbnQgCQlpID0gMCwgZXJyID0gMDsKKwlzdHJ1Y3QgYWRhcHRlcgkJKmFkYXB0 ZXIgPSBpZnAtPmlmX3NvZnRjOworCXN0cnVjdCBpZ2JfcXVldWUJKnF1ZTsKKwlzdHJ1Y3Qg dHhfcmluZwkJKnR4cjsKKwlpbnQgCQkJaSA9IDAsIGVyciA9IDA7CiAKIAkvKiBXaGljaCBx dWV1ZSB0byB1c2UgKi8KIAlpZiAoKG0tPm1fZmxhZ3MgJiBNX0ZMT1dJRCkgIT0gMCkKIAkJ aSA9IG0tPm1fcGt0aGRyLmZsb3dpZCAlIGFkYXB0ZXItPm51bV9xdWV1ZXM7CiAKIAl0eHIg PSAmYWRhcHRlci0+dHhfcmluZ3NbaV07CisJcXVlID0gJmFkYXB0ZXItPnF1ZXVlc1tpXTsK IAogCWlmIChJR0JfVFhfVFJZTE9DSyh0eHIpKSB7CiAJCWVyciA9IGlnYl9tcV9zdGFydF9s b2NrZWQoaWZwLCB0eHIsIG0pOwogCQlJR0JfVFhfVU5MT0NLKHR4cik7Ci0JfSBlbHNlCisJ fSBlbHNlIHsKIAkJZXJyID0gZHJicl9lbnF1ZXVlKGlmcCwgdHhyLT5iciwgbSk7CisJCXRh c2txdWV1ZV9lbnF1ZXVlKHF1ZS0+dHEsICZxdWUtPnF1ZV90YXNrKTsKKwl9CiAKIAlyZXR1 cm4gKGVycik7CiB9CkBAIC0xMjI1LDUwICsxMjIzLDI0IEBAIGlnYl9pbml0KHZvaWQgKmFy ZykKIAogCiBzdGF0aWMgdm9pZAotaWdiX2hhbmRsZV9yeHR4KHZvaWQgKmNvbnRleHQsIGlu dCBwZW5kaW5nKQotewotCXN0cnVjdCBpZ2JfcXVldWUJKnF1ZSA9IGNvbnRleHQ7Ci0Jc3Ry dWN0IGFkYXB0ZXIJCSphZGFwdGVyID0gcXVlLT5hZGFwdGVyOwotCXN0cnVjdCB0eF9yaW5n CQkqdHhyID0gYWRhcHRlci0+dHhfcmluZ3M7Ci0Jc3RydWN0IGlmbmV0CQkqaWZwOwotCi0J aWZwID0gYWRhcHRlci0+aWZwOwotCi0JaWYgKGlmcC0+aWZfZHJ2X2ZsYWdzICYgSUZGX0RS Vl9SVU5OSU5HKSB7Ci0JCWlmIChpZ2Jfcnhlb2YocXVlLCBhZGFwdGVyLT5yeF9wcm9jZXNz X2xpbWl0KSkKLQkJCXRhc2txdWV1ZV9lbnF1ZXVlKGFkYXB0ZXItPnRxLCAmYWRhcHRlci0+ cnh0eF90YXNrKTsKLQkJSUdCX1RYX0xPQ0sodHhyKTsKLQkJaWdiX3R4ZW9mKHR4cik7Ci0K LSNpZiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA4MDAwMDAKLQkJaWYgKCFkcmJyX2VtcHR5KGlm cCwgdHhyLT5icikpCi0JCQlpZ2JfbXFfc3RhcnRfbG9ja2VkKGlmcCwgdHhyLCBOVUxMKTsK LSNlbHNlCi0JCWlmICghSUZRX0RSVl9JU19FTVBUWSgmaWZwLT5pZl9zbmQpKQotCQkJaWdi X3N0YXJ0X2xvY2tlZCh0eHIsIGlmcCk7Ci0jZW5kaWYKLQkJSUdCX1RYX1VOTE9DSyh0eHIp OwotCX0KLQotCWlnYl9lbmFibGVfaW50cihhZGFwdGVyKTsKLX0KLQotc3RhdGljIHZvaWQK IGlnYl9oYW5kbGVfcXVlKHZvaWQgKmNvbnRleHQsIGludCBwZW5kaW5nKQogewogCXN0cnVj dCBpZ2JfcXVldWUgKnF1ZSA9IGNvbnRleHQ7CiAJc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIg PSBxdWUtPmFkYXB0ZXI7CiAJc3RydWN0IHR4X3JpbmcgKnR4ciA9IHF1ZS0+dHhyOwogCXN0 cnVjdCBpZm5ldAkqaWZwID0gYWRhcHRlci0+aWZwOwotCWJvb2wJCW1vcmU7CiAKIAlpZiAo aWZwLT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JVTk5JTkcpIHsKLQkJbW9yZSA9IGlnYl9y eGVvZihxdWUsIC0xKTsKKwkJYm9vbAltb3JlOworCisJCW1vcmUgPSBpZ2Jfcnhlb2YocXVl LCAtMSwgTlVMTCk7CiAKIAkJSUdCX1RYX0xPQ0sodHhyKTsKLQkJaWdiX3R4ZW9mKHR4cik7 CisJCWlmIChpZ2JfdHhlb2YodHhyKSkKKwkJCW1vcmUgPSBUUlVFOwogI2lmIF9fRnJlZUJT RF92ZXJzaW9uID49IDgwMDAwMAotCQlpZ2JfbXFfc3RhcnRfbG9ja2VkKGlmcCwgdHhyLCBO VUxMKTsKKwkJaWYgKCFkcmJyX2VtcHR5KGlmcCwgdHhyLT5icikpCisJCQlpZ2JfbXFfc3Rh cnRfbG9ja2VkKGlmcCwgdHhyLCBOVUxMKTsKICNlbHNlCiAJCWlmICghSUZRX0RSVl9JU19F TVBUWSgmaWZwLT5pZl9zbmQpKQogCQkJaWdiX3N0YXJ0X2xvY2tlZCh0eHIsIGlmcCk7CkBA IC0xMjgwLDExICsxMjUyLDE1IEBAIGlnYl9oYW5kbGVfcXVlKHZvaWQgKmNvbnRleHQsIGlu dCBwZW5kaW4KIAkJfQogCX0KIAotCS8qIFJlZW5hYmxlIHRoaXMgaW50ZXJydXB0ICovCiAj aWZkZWYgREVWSUNFX1BPTExJTkcKLQlpZiAoIShpZnAtPmlmX2NhcGVuYWJsZSAmIElGQ0FQ X1BPTExJTkcpKQorCWlmIChpZnAtPmlmX2NhcGVuYWJsZSAmIElGQ0FQX1BPTExJTkcpCisJ CXJldHVybjsKICNlbmRpZgotCUUxMDAwX1dSSVRFX1JFRygmYWRhcHRlci0+aHcsIEUxMDAw X0VJTVMsIHF1ZS0+ZWltcyk7CisJLyogUmVlbmFibGUgdGhpcyBpbnRlcnJ1cHQgKi8KKwlp ZiAocXVlLT5laW1zKQorCQlFMTAwMF9XUklURV9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9F SU1TLCBxdWUtPmVpbXMpOworCWVsc2UKKwkJaWdiX2VuYWJsZV9pbnRyKGFkYXB0ZXIpOwog fQogCiAvKiBEZWFsIHdpdGggbGluayBpbiBhIHNsZWVwYWJsZSBjb250ZXh0ICovCkBAIC0x MzA2LDggKzEyODIsOSBAQCBpZ2JfaGFuZGxlX2xpbmsodm9pZCAqY29udGV4dCwgaW50IHBl bmRpCiBzdGF0aWMgaW50CiBpZ2JfaXJxX2Zhc3Qodm9pZCAqYXJnKQogewotCXN0cnVjdCBh ZGFwdGVyCSphZGFwdGVyID0gYXJnOwotCXVpbnQzMl90CXJlZ19pY3I7CisJc3RydWN0IGFk YXB0ZXIJCSphZGFwdGVyID0gYXJnOworCXN0cnVjdCBpZ2JfcXVldWUJKnF1ZSA9IGFkYXB0 ZXItPnF1ZXVlczsKKwl1MzIJCQlyZWdfaWNyOwogCiAKIAlyZWdfaWNyID0gRTEwMDBfUkVB RF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9JQ1IpOwpAQCAtMTMyOSwxMSArMTMwNiwxMSBA QCBpZ2JfaXJxX2Zhc3Qodm9pZCAqYXJnKQogCSAqIE1TSSBtZXNzYWdlIHJlb3JkZXJpbmcg ZXJyYXRhIG9uIGNlcnRhaW4gc3lzdGVtcy4KIAkgKi8KIAlpZ2JfZGlzYWJsZV9pbnRyKGFk YXB0ZXIpOwotCXRhc2txdWV1ZV9lbnF1ZXVlKGFkYXB0ZXItPnRxLCAmYWRhcHRlci0+cnh0 eF90YXNrKTsKKwl0YXNrcXVldWVfZW5xdWV1ZShxdWUtPnRxLCAmcXVlLT5xdWVfdGFzayk7 CiAKIAkvKiBMaW5rIHN0YXR1cyBjaGFuZ2UgKi8KIAlpZiAocmVnX2ljciAmIChFMTAwMF9J Q1JfUlhTRVEgfCBFMTAwMF9JQ1JfTFNDKSkKLQkJdGFza3F1ZXVlX2VucXVldWUoYWRhcHRl ci0+dHEsICZhZGFwdGVyLT5saW5rX3Rhc2spOworCQl0YXNrcXVldWVfZW5xdWV1ZShxdWUt PnRxLCAmYWRhcHRlci0+bGlua190YXNrKTsKIAogCWlmIChyZWdfaWNyICYgRTEwMDBfSUNS X1JYTykKIAkJYWRhcHRlci0+cnhfb3ZlcnJ1bnMrKzsKQEAgLTEzNzMsMTUgKzEzNTAsMTQg QEAgaWdiX3BvbGwoc3RydWN0IGlmbmV0ICppZnAsIGVudW0gcG9sbF9jbQogCQlyZWdfaWNy ID0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9JQ1IpOwogCQkvKiBMaW5r IHN0YXR1cyBjaGFuZ2UgKi8KIAkJaWYgKHJlZ19pY3IgJiAoRTEwMDBfSUNSX1JYU0VRIHwg RTEwMDBfSUNSX0xTQykpCi0JCQl0YXNrcXVldWVfZW5xdWV1ZShhZGFwdGVyLT50cSwgJmFk YXB0ZXItPmxpbmtfdGFzayk7CisJCQlpZ2JfaGFuZGxlX2xpbmsoYWRhcHRlciwgMCk7CiAK IAkJaWYgKHJlZ19pY3IgJiBFMTAwMF9JQ1JfUlhPKQogCQkJYWRhcHRlci0+cnhfb3ZlcnJ1 bnMrKzsKIAl9CiAJSUdCX0NPUkVfVU5MT0NLKGFkYXB0ZXIpOwogCi0JLyogVE9ETzogcnhf Y291bnQgKi8KLQlyeF9kb25lID0gaWdiX3J4ZW9mKHF1ZSwgY291bnQpID8gMSA6IDA7CisJ aWdiX3J4ZW9mKHF1ZSwgY291bnQsICZyeF9kb25lKTsKIAogCUlHQl9UWF9MT0NLKHR4cik7 CiAJZG8gewpAQCAtMTQyMSw3ICsxMzk3LDcgQEAgaWdiX21zaXhfcXVlKHZvaWQgKmFyZykK IAltb3JlX3R4ID0gaWdiX3R4ZW9mKHR4cik7CiAJSUdCX1RYX1VOTE9DSyh0eHIpOwogCi0J bW9yZV9yeCA9IGlnYl9yeGVvZihxdWUsIGFkYXB0ZXItPnJ4X3Byb2Nlc3NfbGltaXQpOwor CW1vcmVfcnggPSBpZ2Jfcnhlb2YocXVlLCBhZGFwdGVyLT5yeF9wcm9jZXNzX2xpbWl0LCBO VUxMKTsKIAogCWlmIChpZ2JfZW5hYmxlX2FpbSA9PSBGQUxTRSkKIAkJZ290byBub19jYWxj OwpAQCAtMTUwMSw3ICsxNDc3LDcgQEAgaWdiX21zaXhfbGluayh2b2lkICphcmcpCiAJaWNy ID0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9JQ1IpOwogCWlmICghKGlj ciAmIEUxMDAwX0lDUl9MU0MpKQogCQlnb3RvIHNwdXJpb3VzOwotCXRhc2txdWV1ZV9lbnF1 ZXVlKGFkYXB0ZXItPnRxLCAmYWRhcHRlci0+bGlua190YXNrKTsKKwlpZ2JfaGFuZGxlX2xp bmsoYWRhcHRlciwgMCk7CiAKIHNwdXJpb3VzOgogCS8qIFJlYXJtICovCkBAIC0xOTAwLDcg KzE4NzYsNiBAQCBzdGF0aWMgdm9pZAogaWdiX2xvY2FsX3RpbWVyKHZvaWQgKmFyZykKIHsK IAlzdHJ1Y3QgYWRhcHRlcgkJKmFkYXB0ZXIgPSBhcmc7Ci0Jc3RydWN0IGlmbmV0CQkqaWZw ID0gYWRhcHRlci0+aWZwOwogCWRldmljZV90CQlkZXYgPSBhZGFwdGVyLT5kZXY7CiAJc3Ry dWN0IHR4X3JpbmcJCSp0eHIgPSBhZGFwdGVyLT50eF9yaW5nczsKIApAQCAtMTkxMCw5ICsx ODg1LDYgQEAgaWdiX2xvY2FsX3RpbWVyKHZvaWQgKmFyZykKIAlpZ2JfdXBkYXRlX2xpbmtf c3RhdHVzKGFkYXB0ZXIpOwogCWlnYl91cGRhdGVfc3RhdHNfY291bnRlcnMoYWRhcHRlcik7 CiAKLQlpZiAoaWdiX2Rpc3BsYXlfZGVidWdfc3RhdHMgJiYgaWZwLT5pZl9kcnZfZmxhZ3Mg JiBJRkZfRFJWX1JVTk5JTkcpCi0JCWlnYl9wcmludF9od19zdGF0cyhhZGFwdGVyKTsKLQog ICAgICAgICAvKgogICAgICAgICAqKiBXYXRjaGRvZzogY2hlY2sgZm9yIHRpbWUgc2luY2Ug YW55IGRlc2NyaXB0b3Igd2FzIGNsZWFuZWQKICAgICAgICAgKi8KQEAgLTE5MjMsMTEgKzE4 OTUsNiBAQCBpZ2JfbG9jYWxfdGltZXIodm9pZCAqYXJnKQogCQkJZ290byB0aW1lb3V0Owog CX0KIAotCS8qIFRyaWdnZXIgYW4gUlggaW50ZXJydXB0IG9uIGFsbCBxdWV1ZXMgKi8KLSNp ZmRlZiBERVZJQ0VfUE9MTElORwotCWlmICghKGlmcC0+aWZfY2FwZW5hYmxlICYgSUZDQVBf UE9MTElORykpCi0jZW5kaWYKLQlFMTAwMF9XUklURV9SRUcoJmFkYXB0ZXItPmh3LCBFMTAw MF9FSUNTLCBhZGFwdGVyLT5yeF9tYXNrKTsKIAljYWxsb3V0X3Jlc2V0KCZhZGFwdGVyLT50 aW1lciwgaHosIGlnYl9sb2NhbF90aW1lciwgYWRhcHRlcik7CiAJcmV0dXJuOwogCkBAIC0y MTQyLDIwICsyMTA5LDIwIEBAIGlnYl9hbGxvY2F0ZV9sZWdhY3koc3RydWN0IGFkYXB0ZXIg KmFkYXAKIAkgKiBUcnkgYWxsb2NhdGluZyBhIGZhc3QgaW50ZXJydXB0IGFuZCB0aGUgYXNz b2NpYXRlZCBkZWZlcnJlZAogCSAqIHByb2Nlc3NpbmcgY29udGV4dHMuCiAJICovCi0JVEFT S19JTklUKCZhZGFwdGVyLT5yeHR4X3Rhc2ssIDAsIGlnYl9oYW5kbGVfcnh0eCwgcXVlKTsK KwlUQVNLX0lOSVQoJnF1ZS0+cXVlX3Rhc2ssIDAsIGlnYl9oYW5kbGVfcXVlLCBxdWUpOwog CS8qIE1ha2UgdGFza2xldCBmb3IgZGVmZXJyZWQgbGluayBoYW5kbGluZyAqLwogCVRBU0tf SU5JVCgmYWRhcHRlci0+bGlua190YXNrLCAwLCBpZ2JfaGFuZGxlX2xpbmssIGFkYXB0ZXIp OwotCWFkYXB0ZXItPnRxID0gdGFza3F1ZXVlX2NyZWF0ZV9mYXN0KCJpZ2JfdGFza3EiLCBN X05PV0FJVCwKLQkgICAgdGFza3F1ZXVlX3RocmVhZF9lbnF1ZXVlLCAmYWRhcHRlci0+dHEp OwotCXRhc2txdWV1ZV9zdGFydF90aHJlYWRzKCZhZGFwdGVyLT50cSwgMSwgUElfTkVULCAi JXMgdGFza3EiLAorCXF1ZS0+dHEgPSB0YXNrcXVldWVfY3JlYXRlX2Zhc3QoImlnYl90YXNr cSIsIE1fTk9XQUlULAorCSAgICB0YXNrcXVldWVfdGhyZWFkX2VucXVldWUsICZxdWUtPnRx KTsKKwl0YXNrcXVldWVfc3RhcnRfdGhyZWFkcygmcXVlLT50cSwgMSwgUElfTkVULCAiJXMg dGFza3EiLAogCSAgICBkZXZpY2VfZ2V0X25hbWV1bml0KGFkYXB0ZXItPmRldikpOwogCWlm ICgoZXJyb3IgPSBidXNfc2V0dXBfaW50cihkZXYsIGFkYXB0ZXItPnJlcywKIAkgICAgSU5U Ul9UWVBFX05FVCB8IElOVFJfTVBTQUZFLCBpZ2JfaXJxX2Zhc3QsIE5VTEwsCiAJICAgIGFk YXB0ZXIsICZhZGFwdGVyLT50YWcpKSAhPSAwKSB7CiAJCWRldmljZV9wcmludGYoZGV2LCAi RmFpbGVkIHRvIHJlZ2lzdGVyIGZhc3QgaW50ZXJydXB0ICIKIAkJCSAgICAiaGFuZGxlcjog JWRcbiIsIGVycm9yKTsKLQkJdGFza3F1ZXVlX2ZyZWUoYWRhcHRlci0+dHEpOwotCQlhZGFw dGVyLT50cSA9IE5VTEw7CisJCXRhc2txdWV1ZV9mcmVlKHF1ZS0+dHEpOworCQlxdWUtPnRx ID0gTlVMTDsKIAkJcmV0dXJuIChlcnJvcik7CiAJfQogCkBAIC0yMTk0LDYgKzIxNjEsOSBA QCBpZ2JfYWxsb2NhdGVfbXNpeChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlCiAJCQlkZXZpY2Vf cHJpbnRmKGRldiwgIkZhaWxlZCB0byByZWdpc3RlciBRdWV1ZSBoYW5kbGVyIik7CiAJCQly ZXR1cm4gKGVycm9yKTsKIAkJfQorI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDUwNAor CQlidXNfZGVzY3JpYmVfaW50cihkZXYsIHF1ZS0+cmVzLCBxdWUtPnRhZywgInF1ZSAlZCIs IGkpOworI2VuZGlmCiAJCXF1ZS0+bXNpeCA9IHZlY3RvcjsKIAkJaWYgKGFkYXB0ZXItPmh3 Lm1hYy50eXBlID09IGUxMDAwXzgyNTc1KQogCQkJcXVlLT5laW1zID0gRTEwMDBfRUlDUl9U WF9RVUVVRTAgPDwgaTsKQEAgLTIyMjksMTUgKzIxOTksMTEgQEAgaWdiX2FsbG9jYXRlX21z aXgoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZQogCQlkZXZpY2VfcHJpbnRmKGRldiwgIkZhaWxl ZCB0byByZWdpc3RlciBMaW5rIGhhbmRsZXIiKTsKIAkJcmV0dXJuIChlcnJvcik7CiAJfQor I2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDgwMDUwNAorCWJ1c19kZXNjcmliZV9pbnRyKGRl diwgYWRhcHRlci0+cmVzLCBhZGFwdGVyLT50YWcsICJsaW5rIik7CisjZW5kaWYKIAlhZGFw dGVyLT5saW5rdmVjID0gdmVjdG9yOwogCi0JLyogTWFrZSB0YXNrbGV0IGZvciBkZWZlcnJl ZCBoYW5kbGluZyAqLwotCVRBU0tfSU5JVCgmYWRhcHRlci0+bGlua190YXNrLCAwLCBpZ2Jf aGFuZGxlX2xpbmssIGFkYXB0ZXIpOwotCWFkYXB0ZXItPnRxID0gdGFza3F1ZXVlX2NyZWF0 ZV9mYXN0KCJpZ2JfbGluayIsIE1fTk9XQUlULAotCSAgICB0YXNrcXVldWVfdGhyZWFkX2Vu cXVldWUsICZhZGFwdGVyLT50cSk7Ci0JdGFza3F1ZXVlX3N0YXJ0X3RocmVhZHMoJmFkYXB0 ZXItPnRxLCAxLCBQSV9ORVQsICIlcyBsaW5rIiwKLQkgICAgZGV2aWNlX2dldF9uYW1ldW5p dChhZGFwdGVyLT5kZXYpKTsKLQogCXJldHVybiAoMCk7CiB9CiAKQEAgLTM1NzAsNyArMzUz Niw3IEBAIGlnYl9yZWZyZXNoX21idWZzKHN0cnVjdCByeF9yaW5nICpyeHIsIGkKIAljbGVh bmVkID0gLTE7IC8qIFNpZ25pZnkgbm8gY29tcGxldGlvbnMgKi8KIAl3aGlsZSAoaSAhPSBs aW1pdCkgewogCQlyeGJ1ZiA9ICZyeHItPnJ4X2J1ZmZlcnNbaV07Ci0JCWlmIChyeGJ1Zi0+ bV9oZWFkID09IE5VTEwpIHsKKwkJaWYgKChyeGJ1Zi0+bV9oZWFkID09IE5VTEwpICYmIChy eHItPmhkcl9zcGxpdCkpIHsKIAkJCW1oID0gbV9nZXRoZHIoTV9ET05UV0FJVCwgTVRfREFU QSk7CiAJCQlpZiAobWggPT0gTlVMTCkKIAkJCQlnb3RvIHVwZGF0ZTsKQEAgLTM3NzYsMTYg KzM3NDIsMjQgQEAgaWdiX3NldHVwX3JlY2VpdmVfcmluZyhzdHJ1Y3QgcnhfcmluZyAqcgog CSovCiAJaWdiX2ZyZWVfcmVjZWl2ZV9yaW5nKHJ4cik7CiAKKwkvKiBDb25maWd1cmUgZm9y IGhlYWRlciBzcGxpdD8gKi8KKwlpZiAoaWdiX2hlYWRlcl9zcGxpdCkKKwkJcnhyLT5oZHJf c3BsaXQgPSBUUlVFOworCiAgICAgICAgIC8qIE5vdyByZXBsZW5pc2ggdGhlIHJpbmcgbWJ1 ZnMgKi8KIAlmb3IgKGludCBqID0gMDsgaiAhPSBhZGFwdGVyLT5udW1fcnhfZGVzYzsgKytq KSB7CiAJCXN0cnVjdCBtYnVmCSptaCwgKm1wOwogCiAJCXJ4YnVmID0gJnJ4ci0+cnhfYnVm ZmVyc1tqXTsKKwkJaWYgKHJ4ci0+aGRyX3NwbGl0ID09IEZBTFNFKQorCQkJZ290byBza2lw X2hlYWQ7CiAKIAkJLyogRmlyc3QgdGhlIGhlYWRlciAqLwogCQlyeGJ1Zi0+bV9oZWFkID0g bV9nZXRoZHIoTV9ET05UV0FJVCwgTVRfREFUQSk7Ci0JCWlmIChyeGJ1Zi0+bV9oZWFkID09 IE5VTEwpCisJCWlmIChyeGJ1Zi0+bV9oZWFkID09IE5VTEwpIHsKKwkJCWVycm9yID0gRU5P QlVGUzsKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKwkJfQogCQltX2Fk aihyeGJ1Zi0+bV9oZWFkLCBFVEhFUl9BTElHTik7CiAJCW1oID0gcnhidWYtPm1faGVhZDsK IAkJbWgtPm1fbGVuID0gbWgtPm1fcGt0aGRyLmxlbiA9IE1ITEVOOwpAQCAtMzgwMSwxMSAr Mzc3NSwxNCBAQCBpZ2Jfc2V0dXBfcmVjZWl2ZV9yaW5nKHN0cnVjdCByeF9yaW5nICpyCiAJ CS8qIFVwZGF0ZSBkZXNjcmlwdG9yICovCiAJCXJ4ci0+cnhfYmFzZVtqXS5yZWFkLmhkcl9h ZGRyID0gaHRvbGU2NChoc2VnWzBdLmRzX2FkZHIpOwogCitza2lwX2hlYWQ6CiAJCS8qIE5v dyB0aGUgcGF5bG9hZCBjbHVzdGVyICovCiAJCXJ4YnVmLT5tX3BhY2sgPSBtX2dldGpjbChN X0RPTlRXQUlULCBNVF9EQVRBLAogCQkgICAgTV9QS1RIRFIsIGFkYXB0ZXItPnJ4X21idWZf c3opOwotCQlpZiAocnhidWYtPm1fcGFjayA9PSBOVUxMKQorCQlpZiAocnhidWYtPm1fcGFj ayA9PSBOVUxMKSB7CisJCQllcnJvciA9IEVOT0JVRlM7CiAgICAgICAgICAgICAgICAgICAg ICAgICBnb3RvIGZhaWw7CisJCX0KIAkJbXAgPSByeGJ1Zi0+bV9wYWNrOwogCQltcC0+bV9w a3RoZHIubGVuID0gbXAtPm1fbGVuID0gYWRhcHRlci0+cnhfbWJ1Zl9zejsKIAkJLyogR2V0 IHRoZSBtZW1vcnkgbWFwcGluZyAqLwpAQCAtMzgyNCwxMSArMzgwMSw4IEBAIGlnYl9zZXR1 cF9yZWNlaXZlX3Jpbmcoc3RydWN0IHJ4X3JpbmcgKnIKIAlyeHItPm5leHRfdG9fY2hlY2sg PSAwOwogCXJ4ci0+bmV4dF90b19yZWZyZXNoID0gMDsKIAlyeHItPmxyb19lbmFibGVkID0g RkFMU0U7Ci0KLQlpZiAoaWdiX2hlYWRlcl9zcGxpdCkKLQkJcnhyLT5oZHJfc3BsaXQgPSBU UlVFOwotCWVsc2UKLQkJaWZwLT5pZl9jYXBhYmlsaXRpZXMgJj0gfklGQ0FQX0xSTzsKKwly eHItPnJ4X3NwbGl0X3BhY2tldHMgPSAwOworCXJ4ci0+cnhfYnl0ZXMgPSAwOwogCiAJcnhy LT5mbXAgPSBOVUxMOwogCXJ4ci0+bG1wID0gTlVMTDsKQEAgLTM4NzIsNyArMzg0Niw3IEBA IHN0YXRpYyBpbnQKIGlnYl9zZXR1cF9yZWNlaXZlX3N0cnVjdHVyZXMoc3RydWN0IGFkYXB0 ZXIgKmFkYXB0ZXIpCiB7CiAJc3RydWN0IHJ4X3JpbmcgKnJ4ciA9IGFkYXB0ZXItPnJ4X3Jp bmdzOwotCWludCBpLCBqOworCWludCBpOwogCiAJZm9yIChpID0gMDsgaSA8IGFkYXB0ZXIt Pm51bV9xdWV1ZXM7IGkrKywgcnhyKyspCiAJCWlmIChpZ2Jfc2V0dXBfcmVjZWl2ZV9yaW5n KHJ4cikpCkBAIC0zODgzLDEzICszODU3LDExIEBAIGZhaWw6CiAJLyoKIAkgKiBGcmVlIFJY IGJ1ZmZlcnMgYWxsb2NhdGVkIHNvIGZhciwgd2Ugd2lsbCBvbmx5IGhhbmRsZQogCSAqIHRo ZSByaW5ncyB0aGF0IGNvbXBsZXRlZCwgdGhlIGZhaWxpbmcgY2FzZSB3aWxsIGhhdmUKLQkg KiBjbGVhbmVkIHVwIGZvciBpdHNlbGYuIFRoZSB2YWx1ZSBvZiAnaScgd2lsbCBiZSB0aGUK LQkgKiBmYWlsZWQgcmluZyBzbyB3ZSBtdXN0IHByZS1kZWNyZW1lbnQgaXQuCisJICogY2xl YW5lZCB1cCBmb3IgaXRzZWxmLiAnaScgaXMgdGhlIGVuZHBvaW50LgogCSAqLwotCXJ4ciA9 IGFkYXB0ZXItPnJ4X3JpbmdzOwotCWZvciAoLS1pOyBpID4gMDsgaS0tLCByeHIrKykgewot CQlmb3IgKGogPSAwOyBqIDwgYWRhcHRlci0+bnVtX3J4X2Rlc2M7IGorKykKLQkJCWlnYl9m cmVlX3JlY2VpdmVfcmluZyhyeHIpOworCWZvciAoaW50IGogPSAwOyBqID4gaTsgKytqKSB7 CisJCXJ4ciA9ICZhZGFwdGVyLT5yeF9yaW5nc1tpXTsKKwkJaWdiX2ZyZWVfcmVjZWl2ZV9y aW5nKHJ4cik7CiAJfQogCiAJcmV0dXJuIChFTk9CVUZTKTsKQEAgLTQxOTUsNyArNDE2Nyw5 IEBAIGlnYl9yeF9pbnB1dChzdHJ1Y3QgcnhfcmluZyAqcnhyLCBzdHJ1Y3QKIAkJCWlmICh0 Y3BfbHJvX3J4KCZyeHItPmxybywgbSwgMCkgPT0gMCkKIAkJCQlyZXR1cm47CiAJfQorCUlH Ql9SWF9VTkxPQ0socnhyKTsKIAkoKmlmcC0+aWZfaW5wdXQpKGlmcCwgbSk7CisJSUdCX1JY X0xPQ0socnhyKTsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNDIxMCwxNCArNDE4NCwx NCBAQCBpZ2JfcnhfaW5wdXQoc3RydWN0IHJ4X3JpbmcgKnJ4ciwgc3RydWN0CiAgKiAgUmV0 dXJuIFRSVUUgaWYgbW9yZSB0byBjbGVhbiwgRkFMU0Ugb3RoZXJ3aXNlCiAgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwogc3RhdGljIGJvb2wKLWlnYl9yeGVvZihzdHJ1Y3QgaWdiX3F1ZXVlICpxdWUs IGludCBjb3VudCkKK2lnYl9yeGVvZihzdHJ1Y3QgaWdiX3F1ZXVlICpxdWUsIGludCBjb3Vu dCwgaW50ICpkb25lKQogewogCXN0cnVjdCBhZGFwdGVyCQkqYWRhcHRlciA9IHF1ZS0+YWRh cHRlcjsKIAlzdHJ1Y3QgcnhfcmluZwkJKnJ4ciA9IHF1ZS0+cnhyOwogCXN0cnVjdCBpZm5l dAkJKmlmcCA9IGFkYXB0ZXItPmlmcDsKIAlzdHJ1Y3QgbHJvX2N0cmwJCSpscm8gPSAmcnhy LT5scm87CiAJc3RydWN0IGxyb19lbnRyeQkqcXVldWVkOwotCWludAkJCWksIHByb2Nlc3Nl ZCA9IDA7CisJaW50CQkJaSwgcHJvY2Vzc2VkID0gMCwgcnhkb25lID0gMDsKIAl1MzIJCQlw dHlwZSwgc3RhdGVyciA9IDA7CiAJdW5pb24gZTEwMDBfYWR2X3J4X2Rlc2MJKmN1cjsKIApA QCAtNDM2Niw4ICs0MzQwLDEyIEBAIG5leHRfZGVzYzoKIAkJLyoKIAkJKiogU2VuZCB0byB0 aGUgc3RhY2sgb3IgTFJPCiAJCSovCi0JCWlmIChzZW5kbXAgIT0gTlVMTCkKKwkJaWYgKHNl bmRtcCAhPSBOVUxMKSB7CisJCQlyeHItPm5leHRfdG9fY2hlY2sgPSBpOwogCQkJaWdiX3J4 X2lucHV0KHJ4ciwgaWZwLCBzZW5kbXAsIHB0eXBlKTsKKwkJCWkgPSByeHItPm5leHRfdG9f Y2hlY2s7CisJCQlyeGRvbmUrKzsKKwkJfQogCiAJCS8qIEV2ZXJ5IDggZGVzY3JpcHRvcnMg d2UgZ28gdG8gcmVmcmVzaCBtYnVmcyAqLwogCQlpZiAocHJvY2Vzc2VkID09IDgpIHsKQEAg LTQzOTQsNiArNDM3Miw5IEBAIG5leHRfZGVzYzoKIAogCUlHQl9SWF9VTkxPQ0socnhyKTsK IAorCWlmIChkb25lICE9IE5VTEwpCisJCSpkb25lID0gcnhkb25lOworCiAJLyoKIAkqKiBX ZSBzdGlsbCBoYXZlIGNsZWFuaW5nIHRvIGRvPwogCSoqIFNjaGVkdWxlIGFub3RoZXIgaW50 ZXJydXB0IGlmIHNvLgpAQCAtNDc1MSw4ICs0NzMyLDEwIEBAIGlnYl91cGRhdGVfc3RhdHNf Y291bnRlcnMoc3RydWN0IGFkYXB0ZXIKIAkvKiBGb3IgdGhlIDY0LWJpdCBieXRlIGNvdW50 ZXJzIHRoZSBsb3cgZHdvcmQgbXVzdCBiZSByZWFkIGZpcnN0LiAqLwogCS8qIEJvdGggcmVn aXN0ZXJzIGNsZWFyIG9uIHRoZSByZWFkIG9mIHRoZSBoaWdoIGR3b3JkICovCiAKLQlhZGFw dGVyLT5zdGF0cy5nb3JjICs9IEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBf R09SQ0gpOwotCWFkYXB0ZXItPnN0YXRzLmdvdGMgKz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0 ZXItPmh3LCBFMTAwMF9HT1RDSCk7CisJYWRhcHRlci0+c3RhdHMuZ29yYyArPSBFMTAwMF9S RUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0dPUkNMKSArCisJICAoKHU2NClFMTAwMF9S RUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0dPUkNIKSA8PCAzMik7CisJYWRhcHRlci0+ c3RhdHMuZ290YyArPSBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0dPVENM KSArCisJICAoKHU2NClFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0dPVENI KSA8PCAzMikgOwogCiAJYWRhcHRlci0+c3RhdHMucm5iYyArPSBFMTAwMF9SRUFEX1JFRygm YWRhcHRlci0+aHcsIEUxMDAwX1JOQkMpOwogCWFkYXB0ZXItPnN0YXRzLnJ1YyArPSBFMTAw MF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX1JVQyk7CkBAIC00Nzc0LDYgKzQ3NTcs MzggQEAgaWdiX3VwZGF0ZV9zdGF0c19jb3VudGVycyhzdHJ1Y3QgYWRhcHRlcgogCWFkYXB0 ZXItPnN0YXRzLm1wdGMgKz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9N UFRDKTsKIAlhZGFwdGVyLT5zdGF0cy5icHRjICs9IEUxMDAwX1JFQURfUkVHKCZhZGFwdGVy LT5odywgRTEwMDBfQlBUQyk7CiAKKwkvKiBJbnRlcnJ1cHQgQ291bnRzICovCisKKwlhZGFw dGVyLT5zdGF0cy5pYWMgKz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9J QUMpOworCWFkYXB0ZXItPnN0YXRzLmljcnhwdGMgKz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0 ZXItPmh3LCBFMTAwMF9JQ1JYUFRDKTsKKwlhZGFwdGVyLT5zdGF0cy5pY3J4YXRjICs9IEUx MDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfSUNSWEFUQyk7CisJYWRhcHRlci0+ c3RhdHMuaWN0eHB0YyArPSBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0lD VFhQVEMpOworCWFkYXB0ZXItPnN0YXRzLmljdHhhdGMgKz0gRTEwMDBfUkVBRF9SRUcoJmFk YXB0ZXItPmh3LCBFMTAwMF9JQ1RYQVRDKTsKKwlhZGFwdGVyLT5zdGF0cy5pY3R4cWVjICs9 IEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfSUNUWFFFQyk7CisJYWRhcHRl ci0+c3RhdHMuaWN0eHFtdGMgKz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAw MF9JQ1RYUU1UQyk7CisJYWRhcHRlci0+c3RhdHMuaWNyeGRtdGMgKz0gRTEwMDBfUkVBRF9S RUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9JQ1JYRE1UQyk7CisJYWRhcHRlci0+c3RhdHMuaWNy eG9jICs9IEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfSUNSWE9DKTsKKwor CS8qIEhvc3QgdG8gQ2FyZCBTdGF0aXN0aWNzICovCisKKwlhZGFwdGVyLT5zdGF0cy5jYnRt cGMgKz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9DQlRNUEMpOworCWFk YXB0ZXItPnN0YXRzLmh0ZHBtYyArPSBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUx MDAwX0hURFBNQyk7CisJYWRhcHRlci0+c3RhdHMuY2JyZHBjICs9IEUxMDAwX1JFQURfUkVH KCZhZGFwdGVyLT5odywgRTEwMDBfQ0JSRFBDKTsKKwlhZGFwdGVyLT5zdGF0cy5jYnJtcGMg Kz0gRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9DQlJNUEMpOworCWFkYXB0 ZXItPnN0YXRzLnJwdGhjICs9IEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBf UlBUSEMpOworCWFkYXB0ZXItPnN0YXRzLmhncHRjICs9IEUxMDAwX1JFQURfUkVHKCZhZGFw dGVyLT5odywgRTEwMDBfSEdQVEMpOworCWFkYXB0ZXItPnN0YXRzLmh0Y2JkcGMgKz0gRTEw MDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9IVENCRFBDKTsKKwlhZGFwdGVyLT5z dGF0cy5oZ29yYyArPSAoRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9IR09S Q0wpICsKKwkJCQkgKCh1NjQpRTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCAKKwkJCQkJ CSAgICAgIEUxMDAwX0hHT1JDSCkgPDwgMzIpKTsKKworCWFkYXB0ZXItPnN0YXRzLmhnb3Rj ICs9IChFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0hHT1RDTCkgKworCQkJ CSAoKHU2NClFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIAorCQkJCQkJICAgICAgRTEw MDBfSEdPVENIKSA8PCAzMikpOworCWFkYXB0ZXItPnN0YXRzLmxlbmVycnMgKz0gRTEwMDBf UkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9MRU5FUlJTKTsKKwlhZGFwdGVyLT5zdGF0 cy5zY3ZwYyArPSBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX1NDVlBDKTsK KwlhZGFwdGVyLT5zdGF0cy5ocm1wYyArPSBFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcs IEUxMDAwX0hSTVBDKTsKKwogCWFkYXB0ZXItPnN0YXRzLmFsZ25lcnJjICs9IAogCQlFMTAw MF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX0FMR05FUlJDKTsKIAlhZGFwdGVyLT5z dGF0cy5yeGVycmMgKz0gCkBAIC00ODAyLDE0MCArNDgxNywzNzUgQEAgaWdiX3VwZGF0ZV9z dGF0c19jb3VudGVycyhzdHJ1Y3QgYWRhcHRlcgogfQogCiAKLS8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ci0gKgotICogIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgb25seSB3aGVuIGlnYl9kaXNwbGF5 X2RlYnVnX3N0YXRzIGlzIGVuYWJsZWQuCi0gKiAgVGhpcyByb3V0aW5lIHByb3ZpZGVzIGEg d2F5IHRvIHRha2UgYSBsb29rIGF0IGltcG9ydGFudCBzdGF0aXN0aWNzCi0gKiAgbWFpbnRh aW5lZCBieSB0aGUgZHJpdmVyIGFuZCBoYXJkd2FyZS4KLSAqCi0gKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKy8qCisgKiBBZGQgc3lzY3RsIHZhcmlhYmxlcywgb25lIHBlciBzdGF0aXN0aWMsIHRv IHRoZSBzeXN0ZW0uCisgKi8KIHN0YXRpYyB2b2lkCi1pZ2JfcHJpbnRfZGVidWdfaW5mbyhz dHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikKK2lnYl9hZGRfaHdfc3RhdHMoc3RydWN0IGFkYXB0 ZXIgKmFkYXB0ZXIpCiB7CisKIAlkZXZpY2VfdCBkZXYgPSBhZGFwdGVyLT5kZXY7Ci0Jc3Ry dWN0IGlnYl9xdWV1ZSAqcXVlID0gYWRhcHRlci0+cXVldWVzOwotCXN0cnVjdCByeF9yaW5n ICpyeHIgPSBhZGFwdGVyLT5yeF9yaW5nczsKKwogCXN0cnVjdCB0eF9yaW5nICp0eHIgPSBh ZGFwdGVyLT50eF9yaW5nczsKLQl1aW50OF90ICpod19hZGRyID0gYWRhcHRlci0+aHcuaHdf YWRkcjsKKwlzdHJ1Y3QgcnhfcmluZyAqcnhyID0gYWRhcHRlci0+cnhfcmluZ3M7CiAKLQlk ZXZpY2VfcHJpbnRmKGRldiwgIkFkYXB0ZXIgaGFyZHdhcmUgYWRkcmVzcyA9ICVwIFxuIiwg aHdfYWRkcik7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJDVFJMID0gMHgleCBSQ1RMID0gMHgl eCBcbiIsCi0JICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfQ1RSTCks Ci0JICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUkNUTCkpOwotCi0j aWYJKERFQlVHX0hXID4gMCkgIC8qIERvbnQgb3V0cHV0IHRoZXNlIGVycm9ycyBub3JtYWxs eSAqLwotCWRldmljZV9wcmludGYoZGV2LCAiSU1TID0gMHgleCBFSU1TID0gMHgleCBcbiIs Ci0JICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfSU1TKSwKLQkgICAg RTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9FSU1TKSk7Ci0jZW5kaWYKKwlz dHJ1Y3Qgc3lzY3RsX2N0eF9saXN0ICpjdHggPSBkZXZpY2VfZ2V0X3N5c2N0bF9jdHgoZGV2 KTsKKwlzdHJ1Y3Qgc3lzY3RsX29pZCAqdHJlZSA9IGRldmljZV9nZXRfc3lzY3RsX3RyZWUo ZGV2KTsKKwlzdHJ1Y3Qgc3lzY3RsX29pZF9saXN0ICpjaGlsZCA9IFNZU0NUTF9DSElMRFJF Tih0cmVlKTsKKwlzdHJ1Y3QgZTEwMDBfaHdfc3RhdHMgKnN0YXRzID0gJmFkYXB0ZXItPnN0 YXRzOworCisJc3RydWN0IHN5c2N0bF9vaWQgKnN0YXRfbm9kZSwgKnF1ZXVlX25vZGUsICpp bnRfbm9kZSwgKmhvc3Rfbm9kZTsKKwlzdHJ1Y3Qgc3lzY3RsX29pZF9saXN0ICpzdGF0X2xp c3QsICpxdWV1ZV9saXN0LCAqaW50X2xpc3QsICpob3N0X2xpc3Q7CisKKyNkZWZpbmUgUVVF VUVfTkFNRV9MRU4gMzIKKwljaGFyIG5hbWVidWZbUVVFVUVfTkFNRV9MRU5dOworCisJLyog RHJpdmVyIFN0YXRpc3RpY3MgKi8KKwlTWVNDVExfQUREX1VJTlQoY3R4LCBjaGlsZCwgT0lE X0FVVE8sICJsaW5rX2lycSIsIAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPmxpbmtfaXJx LCAwLAorCQkJIkxpbmsgTVNJWCBJUlEgSGFuZGxlZCIpOworCVNZU0NUTF9BRERfVUxPTkco Y3R4LCBjaGlsZCwgT0lEX0FVVE8sICJkcm9wcGVkIiwgCisJCQlDVExGTEFHX1JELCAmYWRh cHRlci0+ZHJvcHBlZF9wa3RzLAorCQkJIkRyaXZlciBkcm9wcGVkIHBhY2tldHMiKTsKKwlT WVNDVExfQUREX1VMT05HKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAidHhfZG1hX2ZhaWwiLCAK KwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5ub190eF9kbWFfc2V0dXAsCisJCQkiRHJpdmVy IHR4IGRtYSBmYWlsdXJlIGluIHhtaXQiKTsKKworCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBj aGlsZCwgT0lEX0FVVE8sICJkZXZpY2VfY29udHJvbCIsIAorCQkJQ1RMRkxBR19SRCwgJmFk YXB0ZXItPmRldmljZV9jb250cm9sLAorCQkJIkRldmljZSBDb250cm9sIFJlZ2lzdGVyIik7 CisJU1lTQ1RMX0FERF9VTE9ORyhjdHgsIGNoaWxkLCBPSURfQVVUTywgInJ4X2NvbnRyb2wi LCAKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5yeF9jb250cm9sLAorCQkJIlJlY2VpdmVy IENvbnRyb2wgUmVnaXN0ZXIiKTsKKwlTWVNDVExfQUREX1VMT05HKGN0eCwgY2hpbGQsIE9J RF9BVVRPLCAiaW50ZXJydXB0X21hc2siLCAKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5p bnRfbWFzaywKKwkJCSJJbnRlcnJ1cHQgTWFzayIpOworCVNZU0NUTF9BRERfVUxPTkcoY3R4 LCBjaGlsZCwgT0lEX0FVVE8sICJleHRlbmRlZF9pbnRfbWFzayIsIAorCQkJQ1RMRkxBR19S RCwgJmFkYXB0ZXItPmVpbnRfbWFzaywKKwkJCSJFeHRlbmRlZCBJbnRlcnJ1cHQgTWFzayIp OworCVNZU0NUTF9BRERfVUxPTkcoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJ0eF9idWZfYWxs b2MiLCAKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5wYWNrZXRfYnVmX2FsbG9jX3R4LAor CQkJIlRyYW5zbWl0IEJ1ZmZlciBQYWNrZXQgQWxsb2NhdGlvbiIpOworCVNZU0NUTF9BRERf VUxPTkcoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJyeF9idWZfYWxsb2MiLCAKKwkJCUNUTEZM QUdfUkQsICZhZGFwdGVyLT5wYWNrZXRfYnVmX2FsbG9jX3J4LAorCQkJIlJlY2VpdmUgQnVm ZmVyIFBhY2tldCBBbGxvY2F0aW9uIik7CisJU1lTQ1RMX0FERF9VSU5UKGN0eCwgY2hpbGQs IE9JRF9BVVRPLCAiZmNfaGlnaF93YXRlciIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+ aHcuZmMuaGlnaF93YXRlciwgMCwKKwkJCSJGbG93IENvbnRyb2wgSGlnaCBXYXRlcm1hcmsi KTsKKwlTWVNDVExfQUREX1VJTlQoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJmY19sb3dfd2F0 ZXIiLCAKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5ody5mYy5sb3dfd2F0ZXIsIDAsCisJ CQkiRmxvdyBDb250cm9sIExvdyBXYXRlcm1hcmsiKTsKIAotCWRldmljZV9wcmludGYoZGV2 LCAiUGFja2V0IGJ1ZmZlciA9IFR4PSVkayBSeD0lZGsgXG4iLAotCSAgICAoKEUxMDAwX1JF QURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfUEJBKSAmIDB4ZmZmZjAwMDApID4+IDE2KSxc Ci0JICAgIChFMTAwMF9SRUFEX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX1BCQSkgJiAweGZm ZmYpICk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJGbG93IGNvbnRyb2wgd2F0ZXJtYXJrcyBo aWdoID0gJWQgbG93ID0gJWRcbiIsCi0JICAgIGFkYXB0ZXItPmh3LmZjLmhpZ2hfd2F0ZXIs Ci0JICAgIGFkYXB0ZXItPmh3LmZjLmxvd193YXRlcik7Ci0KLQlmb3IgKGludCBpID0gMDsg aSA8IGFkYXB0ZXItPm51bV9xdWV1ZXM7IGkrKywgcnhyKyssIHR4cisrKSB7Ci0JCWRldmlj ZV9wcmludGYoZGV2LCAiUXVldWUoJWQpIHRkaCA9ICVkLCB0ZHQgPSAlZCAgIiwgaSwKLQkJ ICAgIEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfVERIKGkpKSwKLQkJICAg IEUxMDAwX1JFQURfUkVHKCZhZGFwdGVyLT5odywgRTEwMDBfVERUKGkpKSk7Ci0JCWRldmlj ZV9wcmludGYoZGV2LCAicmRoID0gJWQsIHJkdCA9ICVkXG4iLAotCQkgICAgRTEwMDBfUkVB RF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9SREgoaSkpLAotCQkgICAgRTEwMDBfUkVBRF9S RUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9SRFQoaSkpKTsKLQkJZGV2aWNlX3ByaW50ZihkZXYs ICJUWCglZCkgbm8gZGVzY3JpcHRvcnMgYXZhaWwgZXZlbnQgPSAlbGxkXG4iLAotCQkgICAg dHhyLT5tZSwgKGxvbmcgbG9uZyl0eHItPm5vX2Rlc2NfYXZhaWwpOwotCQlkZXZpY2VfcHJp bnRmKGRldiwgIlRYKCVkKSBQYWNrZXRzIHNlbnQgPSAlbGxkXG4iLAotCQkgICAgdHhyLT5t ZSwgKGxvbmcgbG9uZyl0eHItPnR4X3BhY2tldHMpOwotCQlkZXZpY2VfcHJpbnRmKGRldiwg IlJYKCVkKSBQYWNrZXRzIHJlY2VpdmVkID0gJWxsZCAgIiwKLQkJICAgIHJ4ci0+bWUsIChs b25nIGxvbmcpcnhyLT5yeF9wYWNrZXRzKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IGFkYXB0 ZXItPm51bV9xdWV1ZXM7IGkrKywgdHhyKyspIHsKKwkJc25wcmludGYobmFtZWJ1ZiwgUVVF VUVfTkFNRV9MRU4sICJxdWV1ZSVkIiwgaSk7CisJCXF1ZXVlX25vZGUgPSBTWVNDVExfQURE X05PREUoY3R4LCBjaGlsZCwgT0lEX0FVVE8sIG5hbWVidWYsCisJCQkJCSAgICBDVExGTEFH X1JELCBOVUxMLCAiUXVldWUgTmFtZSIpOworCQlxdWV1ZV9saXN0ID0gU1lTQ1RMX0NISUxE UkVOKHF1ZXVlX25vZGUpOworCisJCVNZU0NUTF9BRERfVUlOVChjdHgsIHF1ZXVlX2xpc3Qs IE9JRF9BVVRPLCAidHhkX2hlYWQiLAorCQkJCUNUTEZMQUdfUkQsICZ0eHItPnRkaCwgMCwK KwkJCQkiVHJhbnNtaXQgRGVzY3JpcHRvciBIZWFkIik7CisJCVNZU0NUTF9BRERfVUlOVChj dHgsIHF1ZXVlX2xpc3QsIE9JRF9BVVRPLCAidHhkX3RhaWwiLAorCQkJCUNUTEZMQUdfUkQs ICZ0eHItPnRkdCwgMCwKKwkJCQkiVHJhbnNtaXQgRGVzY3JpcHRvciBUYWlsIik7CisJCVNZ U0NUTF9BRERfUVVBRChjdHgsIHF1ZXVlX2xpc3QsIE9JRF9BVVRPLCAibm9fZGVzY19hdmFp bCIsIAorCQkJCUNUTEZMQUdfUkQsICZ0eHItPm5vX2Rlc2NfYXZhaWwsCisJCQkJIlF1ZXVl IE5vIERlc2NyaXB0b3IgQXZhaWxhYmxlIik7CisJCVNZU0NUTF9BRERfUVVBRChjdHgsIHF1 ZXVlX2xpc3QsIE9JRF9BVVRPLCAidHhfcGFja2V0cyIsCisJCQkJQ1RMRkxBR19SRCwgJnR4 ci0+dHhfcGFja2V0cywKKwkJCQkiUXVldWUgUGFja2V0cyBUcmFuc21pdHRlZCIpOwogCX0K IAogCWZvciAoaW50IGkgPSAwOyBpIDwgYWRhcHRlci0+bnVtX3F1ZXVlczsgaSsrLCByeHIr KykgewogCQlzdHJ1Y3QgbHJvX2N0cmwgKmxybyA9ICZyeHItPmxybzsKLQkJZGV2aWNlX3By aW50ZihkZXYsICJRdWV1ZSglZCkgcmRoID0gJWQsIHJkdCA9ICVkXG4iLCBpLAotCQkgICAg RTEwMDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9SREgoaSkpLAotCQkgICAgRTEw MDBfUkVBRF9SRUcoJmFkYXB0ZXItPmh3LCBFMTAwMF9SRFQoaSkpKTsKLQkJZGV2aWNlX3By aW50ZihkZXYsICJSWCglZCkgUGFja2V0cyByZWNlaXZlZCA9ICVsbGRcbiIsIHJ4ci0+bWUs Ci0JCSAgICAobG9uZyBsb25nKXJ4ci0+cnhfcGFja2V0cyk7Ci0JCWRldmljZV9wcmludGYo ZGV2LCAiIFNwbGl0IFBhY2tldHMgPSAlbGxkICIsCi0JCSAgICAobG9uZyBsb25nKXJ4ci0+ cnhfc3BsaXRfcGFja2V0cyk7Ci0JCWRldmljZV9wcmludGYoZGV2LCAiIEJ5dGUgY291bnQg PSAlbGxkXG4iLAotCQkgICAgKGxvbmcgbG9uZylyeHItPnJ4X2J5dGVzKTsKLQkJZGV2aWNl X3ByaW50ZihkZXYsIlJYKCVkKSBMUk8gUXVldWVkPSAlZCAgIiwKLQkJICAgIGksIGxyby0+ bHJvX3F1ZXVlZCk7Ci0JCWRldmljZV9wcmludGYoZGV2LCJMUk8gRmx1c2hlZD0gJWRcbiIs bHJvLT5scm9fZmx1c2hlZCk7Ci0JfQotCi0JZm9yIChpbnQgaSA9IDA7IGkgPCBhZGFwdGVy LT5udW1fcXVldWVzOyBpKyssIHF1ZSsrKQotCQlkZXZpY2VfcHJpbnRmKGRldiwiUVVFKCVk KSBJUlFzID0gJWxseFxuIiwKLQkJICAgIGksIChsb25nIGxvbmcpcXVlLT5pcnFzKTsKLQot CWRldmljZV9wcmludGYoZGV2LCAiTElOSyBNU0lYIElSUSBIYW5kbGVkID0gJXVcbiIsIGFk YXB0ZXItPmxpbmtfaXJxKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIk1idWYgZGVmcmFnIGZh aWxlZCA9ICVsZFxuIiwKLQkgICAgYWRhcHRlci0+bWJ1Zl9kZWZyYWdfZmFpbGVkKTsKLQlk ZXZpY2VfcHJpbnRmKGRldiwgIlN0ZCBtYnVmIGhlYWRlciBmYWlsZWQgPSAlbGRcbiIsCi0J ICAgIGFkYXB0ZXItPm1idWZfaGVhZGVyX2ZhaWxlZCk7Ci0JZGV2aWNlX3ByaW50ZihkZXYs ICJTdGQgbWJ1ZiBwYWNrZXQgZmFpbGVkID0gJWxkXG4iLAotCSAgICBhZGFwdGVyLT5tYnVm X3BhY2tldF9mYWlsZWQpOwotCWRldmljZV9wcmludGYoZGV2LCAiRHJpdmVyIGRyb3BwZWQg cGFja2V0cyA9ICVsZFxuIiwKLQkgICAgYWRhcHRlci0+ZHJvcHBlZF9wa3RzKTsKLQlkZXZp Y2VfcHJpbnRmKGRldiwgIkRyaXZlciB0eCBkbWEgZmFpbHVyZSBpbiB4bWl0ID0gJWxkXG4i LAotCQlhZGFwdGVyLT5ub190eF9kbWFfc2V0dXApOwotfQogCi1zdGF0aWMgdm9pZAotaWdi X3ByaW50X2h3X3N0YXRzKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQotewotCWRldmljZV90 IGRldiA9IGFkYXB0ZXItPmRldjsKKwkJc25wcmludGYobmFtZWJ1ZiwgUVVFVUVfTkFNRV9M RU4sICJxdWV1ZSVkIiwgaSk7CisJCXF1ZXVlX25vZGUgPSBTWVNDVExfQUREX05PREUoY3R4 LCBjaGlsZCwgT0lEX0FVVE8sIG5hbWVidWYsIAorCQkJCQkgICAgQ1RMRkxBR19SRCwgTlVM TCwgIlF1ZXVlIE5hbWUiKTsKKwkJcXVldWVfbGlzdCA9IFNZU0NUTF9DSElMRFJFTihxdWV1 ZV9ub2RlKTsKKworCQlTWVNDVExfQUREX1VJTlQoY3R4LCBxdWV1ZV9saXN0LCBPSURfQVVU TywgInJ4ZF9oZWFkIiwKKwkJCQlDVExGTEFHX1JELCAmcnhyLT5yZGgsIDAsCisJCQkJIlJl Y2VpdmUgRGVzY3JpcHRvciBIZWFkIik7CisJCVNZU0NUTF9BRERfVUlOVChjdHgsIHF1ZXVl X2xpc3QsIE9JRF9BVVRPLCAicnhkX3RhaWwiLAorCQkJCUNUTEZMQUdfUkQsICZyeHItPnJk dCwgMCwKKwkJCQkiUmVjZWl2ZSBEZXNjcmlwdG9yIFRhaWwiKTsKKwkJU1lTQ1RMX0FERF9R VUFEKGN0eCwgcXVldWVfbGlzdCwgT0lEX0FVVE8sICJyeF9wYWNrZXRzIiwKKwkJCQlDVExG TEFHX1JELCAmcnhyLT5yeF9wYWNrZXRzLAorCQkJCSJRdWV1ZSBQYWNrZXRzIFJlY2VpdmVk Iik7CisJCVNZU0NUTF9BRERfUVVBRChjdHgsIHF1ZXVlX2xpc3QsIE9JRF9BVVRPLCAicnhf Ynl0ZXMiLAorCQkJCUNUTEZMQUdfUkQsICZyeHItPnJ4X2J5dGVzLAorCQkJCSJRdWV1ZSBC eXRlcyBSZWNlaXZlZCIpOworCQlTWVNDVExfQUREX1VJTlQoY3R4LCBxdWV1ZV9saXN0LCBP SURfQVVUTywgImxyb19xdWV1ZWQiLAorCQkJCUNUTEZMQUdfUkQsICZscm8tPmxyb19xdWV1 ZWQsIDAsCisJCQkJIkxSTyBRdWV1ZWQiKTsKKwkJU1lTQ1RMX0FERF9VSU5UKGN0eCwgcXVl dWVfbGlzdCwgT0lEX0FVVE8sICJscm9fZmx1c2hlZCIsCisJCQkJQ1RMRkxBR19SRCwgJmxy by0+bHJvX2ZsdXNoZWQsIDAsCisJCQkJIkxSTyBGbHVzaGVkIik7CisJfQorCisJLyogTUFD IHN0YXRzIGdldCB0aGUgb3duIHN1YiBub2RlICovCisKKwlzdGF0X25vZGUgPSBTWVNDVExf QUREX05PREUoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJtYWNfc3RhdHMiLCAKKwkJCQkgICAg Q1RMRkxBR19SRCwgTlVMTCwgIk1BQyBTdGF0aXN0aWNzIik7CisJc3RhdF9saXN0ID0gU1lT Q1RMX0NISUxEUkVOKHN0YXRfbm9kZSk7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0 X2xpc3QsIE9JRF9BVVRPLCAiZXhjZXNzX2NvbGwiLCAKKwkJCUNUTEZMQUdfUkQsICZzdGF0 cy0+ZWNvbCwKKwkJCSJFeGNlc3NpdmUgY29sbGlzaW9ucyIpOworCVNZU0NUTF9BRERfUVVB RChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJzaW5nbGVfY29sbCIsIAorCQkJQ1RMRkxB R19SRCwgJnN0YXRzLT5zY2MsCisJCQkiU2luZ2xlIGNvbGxpc2lvbnMiKTsKKwlTWVNDVExf QUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAibXVsdGlwbGVfY29sbCIsIAor CQkJQ1RMRkxBR19SRCwgJnN0YXRzLT5tY2MsCisJCQkiTXVsdGlwbGUgY29sbGlzaW9ucyIp OworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJsYXRlX2Nv bGwiLCAKKwkJCUNUTEZMQUdfUkQsICZzdGF0cy0+bGF0ZWNvbCwKKwkJCSJMYXRlIGNvbGxp c2lvbnMiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAi Y29sbGlzaW9uX2NvdW50IiwgCisJCQlDVExGTEFHX1JELCAmc3RhdHMtPmNvbGMsCisJCQki Q29sbGlzaW9uIENvdW50Iik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBP SURfQVVUTywgInN5bWJvbF9lcnJvcnMiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0 YXRzLnN5bWVycnMsCisJCQkiU3ltYm9sIEVycm9ycyIpOworCVNZU0NUTF9BRERfUVVBRChj dHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJzZXF1ZW5jZV9lcnJvcnMiLAorCQkJQ1RMRkxB R19SRCwgJmFkYXB0ZXItPnN0YXRzLnNlYywKKwkJCSJTZXF1ZW5jZSBFcnJvcnMiKTsKKwlT WVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZGVmZXJfY291bnQi LAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmRjLAorCQkJIkRlZmVyIENvdW50 Iik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgIm1pc3Nl ZF9wYWNrZXRzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5tcGMsCisJCQki TWlzc2VkIFBhY2tldHMiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9J RF9BVVRPLCAicmVjdl9ub19idWZmIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0 cy5ybmJjLAorCQkJIlJlY2VpdmUgTm8gQnVmZmVycyIpOworCVNZU0NUTF9BRERfUVVBRChj dHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyZWN2X3VuZGVyc2l6ZSIsCisJCQlDVExGTEFH X1JELCAmYWRhcHRlci0+c3RhdHMucnVjLAorCQkJIlJlY2VpdmUgVW5kZXJzaXplIik7CisJ U1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJlY3ZfZnJhZ21l bnRlZCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucmZjLAorCQkJIkZyYWdt ZW50ZWQgUGFja2V0cyBSZWNlaXZlZCAiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0 X2xpc3QsIE9JRF9BVVRPLCAicmVjdl9vdmVyc2l6ZSIsCisJCQlDVExGTEFHX1JELCAmYWRh cHRlci0+c3RhdHMucm9jLAorCQkJIk92ZXJzaXplZCBQYWNrZXRzIFJlY2VpdmVkIik7CisJ U1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJlY3ZfamFiYmVy IiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5yamMsCisJCQkiUmVjZXZpZWQg SmFiYmVyIik7CiAKLQlkZXZpY2VfcHJpbnRmKGRldiwgIkV4Y2Vzc2l2ZSBjb2xsaXNpb25z ID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5lY29sKTsKLSNp ZgkoREVCVUdfSFcgPiAwKSAgLyogRG9udCBvdXRwdXQgdGhlc2UgZXJyb3JzIG5vcm1hbGx5 ICovCi0JZGV2aWNlX3ByaW50ZihkZXYsICJTeW1ib2wgZXJyb3JzID0gJWxsZFxuIiwKLQkg ICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5zeW1lcnJzKTsKLSNlbmRpZgotCWRldmlj ZV9wcmludGYoZGV2LCAiU2VxdWVuY2UgZXJyb3JzID0gJWxsZFxuIiwKLQkgICAgKGxvbmcg bG9uZylhZGFwdGVyLT5zdGF0cy5zZWMpOwotCWRldmljZV9wcmludGYoZGV2LCAiRGVmZXIg Y291bnQgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLmRjKTsK LQlkZXZpY2VfcHJpbnRmKGRldiwgIk1pc3NlZCBQYWNrZXRzID0gJWxsZFxuIiwKLQkgICAg KGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5tcGMpOwotCWRldmljZV9wcmludGYoZGV2LCAi UmVjZWl2ZSBObyBCdWZmZXJzID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVy LT5zdGF0cy5ybmJjKTsKIAkvKiBSTEVDIGlzIGluYWNjdXJhdGUgb24gc29tZSBoYXJkd2Fy ZSwgY2FsY3VsYXRlIG91ciBvd24uICovCi0JZGV2aWNlX3ByaW50ZihkZXYsICJSZWNlaXZl IExlbmd0aCBFcnJvcnMgPSAlbGxkXG4iLAotCSAgICAoKGxvbmcgbG9uZylhZGFwdGVyLT5z dGF0cy5yb2MgKyAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLnJ1YykpOwotCWRldmljZV9w cmludGYoZGV2LCAiUmVjZWl2ZSBlcnJvcnMgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25n KWFkYXB0ZXItPnN0YXRzLnJ4ZXJyYyk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJDcmMgZXJy b3JzID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5jcmNlcnJz KTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIkFsaWdubWVudCBlcnJvcnMgPSAlbGxkXG4iLAot CSAgICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLmFsZ25lcnJjKTsKKy8qIAlTWVNDVExf QUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAicmVjdl9sZW5fZXJycyIsICov CisvKiAJCQlDVExGTEFHX1JELCBhZGFwdGVyLT5zdGF0cy5yb2MgKyBhZGFwdGVyLT5zdGF0 cy5ydWMsICovCisvKiAJCQkiUmVjZWl2ZSBMZW5ndGggRXJyb3JzIik7ICovCisKKwlTWVND VExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAicmVjdl9lcnJzIiwKKwkJ CUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5yeGVycmMsCisJCQkiUmVjZWl2ZSBFcnJv cnMiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiY3Jj X2VycnMiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmNyY2VycnMsCisJCQki Q1JDIGVycm9ycyIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FV VE8sICJhbGlnbm1lbnRfZXJycyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMu YWxnbmVycmMsCisJCQkiQWxpZ25tZW50IEVycm9ycyIpOwogCS8qIE9uIDgyNTc1IHRoZXNl IGFyZSBjb2xsaXNpb24gY291bnRzICovCi0JZGV2aWNlX3ByaW50ZihkZXYsICJDb2xsaXNp b24vQ2FycmllciBleHRlbnNpb24gZXJyb3JzID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9u ZylhZGFwdGVyLT5zdGF0cy5jZXh0ZXJyKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIlJYIG92 ZXJydW5zID0gJWxkXG4iLCBhZGFwdGVyLT5yeF9vdmVycnVucyk7Ci0JZGV2aWNlX3ByaW50 ZihkZXYsICJ3YXRjaGRvZyB0aW1lb3V0cyA9ICVsZFxuIiwKLQkgICAgYWRhcHRlci0+d2F0 Y2hkb2dfZXZlbnRzKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIlhPTiBSY3ZkID0gJWxsZFxu IiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy54b25yeGMpOwotCWRldmljZV9w cmludGYoZGV2LCAiWE9OIFhtdGQgPSAlbGxkXG4iLAotCSAgICAobG9uZyBsb25nKWFkYXB0 ZXItPnN0YXRzLnhvbnR4Yyk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJYT0ZGIFJjdmQgPSAl bGxkXG4iLAotCSAgICAobG9uZyBsb25nKWFkYXB0ZXItPnN0YXRzLnhvZmZyeGMpOwotCWRl dmljZV9wcmludGYoZGV2LCAiWE9GRiBYbXRkID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9u ZylhZGFwdGVyLT5zdGF0cy54b2ZmdHhjKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIkdvb2Qg UGFja2V0cyBSY3ZkID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0 cy5ncHJjKTsKLQlkZXZpY2VfcHJpbnRmKGRldiwgIkdvb2QgUGFja2V0cyBYbXRkID0gJWxs ZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5zdGF0cy5ncHRjKTsKLQlkZXZpY2Vf cHJpbnRmKGRldiwgIlRTTyBDb250ZXh0cyBYbXRkID0gJWxsZFxuIiwKLQkgICAgKGxvbmcg bG9uZylhZGFwdGVyLT5zdGF0cy50c2N0Yyk7Ci0JZGV2aWNlX3ByaW50ZihkZXYsICJUU08g Q29udGV4dHMgRmFpbGVkID0gJWxsZFxuIiwKLQkgICAgKGxvbmcgbG9uZylhZGFwdGVyLT5z dGF0cy50c2N0ZmMpOwotfQorCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lE X0FVVE8sICJjb2xsX2V4dF9lcnJzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0 cy5jZXh0ZXJyLAorCQkJIkNvbGxpc2lvbi9DYXJyaWVyIGV4dGVuc2lvbiBlcnJvcnMiKTsK KwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAicnhfb3ZlcnJ1 bnMiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnJ4X292ZXJydW5zLAorCQkJIlJYIG92 ZXJydW5zIik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywg IndhdGNoZG9nX3RpbWVvdXRzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT53YXRjaGRv Z19ldmVudHMsCisJCQkiV2F0Y2hkb2cgdGltZW91dHMiKTsKKwlTWVNDVExfQUREX1FVQUQo Y3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAieG9uX3JlY3ZkIiwKKwkJCUNUTEZMQUdfUkQs ICZhZGFwdGVyLT5zdGF0cy54b25yeGMsCisJCQkiWE9OIFJlY2VpdmVkIik7CisJU1lTQ1RM X0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInhvbl90eGQiLAorCQkJQ1RM RkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnhvbnR4YywKKwkJCSJYT04gVHJhbnNtaXR0ZWQi KTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAieG9mZl9y ZWN2ZCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMueG9mZnJ4YywKKwkJCSJY T0ZGIFJlY2VpdmVkIik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURf QVVUTywgInhvZmZfdHhkIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy54b2Zm dHhjLAorCQkJIlhPRkYgVHJhbnNtaXR0ZWQiKTsKKwkvKiBQYWNrZXQgUmVjZXB0aW9uIFN0 YXRzICovCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInRv dGFsX3BrdHNfcmVjdmQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnRwciwK KwkJCSJUb3RhbCBQYWNrZXRzIFJlY2VpdmVkICIpOworCVNZU0NUTF9BRERfUVVBRChjdHgs IHN0YXRfbGlzdCwgT0lEX0FVVE8sICJnb29kX3BrdHNfcmVjdmQiLAorCQkJQ1RMRkxBR19S RCwgJmFkYXB0ZXItPnN0YXRzLmdwcmMsCisJCQkiR29vZCBQYWNrZXRzIFJlY2VpdmVkIik7 CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgImJjYXN0X3Br dHNfcmVjdmQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmJwcmMsCisJCQki QnJvYWRjYXN0IFBhY2tldHMgUmVjZWl2ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBz dGF0X2xpc3QsIE9JRF9BVVRPLCAibWNhc3RfcGt0c19yZWN2ZCIsCisJCQlDVExGTEFHX1JE LCAmYWRhcHRlci0+c3RhdHMubXByYywKKwkJCSJNdWx0aWNhc3QgUGFja2V0cyBSZWNlaXZl ZCIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyeF9m cmFtZXNfNjQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnByYzY0LAorCQkJ IjY0IGJ5dGUgZnJhbWVzIHJlY2VpdmVkICIpOworCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0 YXRfbGlzdCwgT0lEX0FVVE8sICJyeF9mcmFtZXNfNjVfMTI3IiwKKwkJCUNUTEZMQUdfUkQs ICZhZGFwdGVyLT5zdGF0cy5wcmMxMjcsCisJCQkiNjUtMTI3IGJ5dGUgZnJhbWVzIHJlY2Vp dmVkIik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJ4 X2ZyYW1lc18xMjhfMjU1IiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5wcmMy NTUsCisJCQkiMTI4LTI1NSBieXRlIGZyYW1lcyByZWNlaXZlZCIpOworCVNZU0NUTF9BRERf UVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJyeF9mcmFtZXNfMjU2XzUxMSIsCisJ CQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHJjNTExLAorCQkJIjI1Ni01MTEgYnl0 ZSBmcmFtZXMgcmVjZWl2ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3Qs IE9JRF9BVVRPLCAicnhfZnJhbWVzXzUxMl8xMDIzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFw dGVyLT5zdGF0cy5wcmMxMDIzLAorCQkJIjUxMi0xMDIzIGJ5dGUgZnJhbWVzIHJlY2VpdmVk Iik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInJ4X2Zy YW1lc18xMDI0XzE1MjIiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLnByYzE1 MjIsCisJCQkiMTAyMy0xNTIyIGJ5dGUgZnJhbWVzIHJlY2VpdmVkIik7CisgCVNZU0NUTF9B RERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJnb29kX29jdGV0c19yZWN2ZCIs IAorIAkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5nb3JjLCAKKyAJCQkiR29vZCBP Y3RldHMgUmVjZWl2ZWQiKTsgCisKKwkvKiBQYWNrZXQgVHJhbnNtaXNzaW9uIFN0YXRzICov CisgCVNZU0NUTF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJnb29kX29j dGVzdF90eGQiLCAKKyAJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuZ290YywgCisg CQkJIkdvb2QgT2N0ZXN0IFRyYW5zbWl0dGVkIik7IAorCVNZU0NUTF9BRERfUVVBRChjdHgs IHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ0b3RhbF9wa3RzX3R4ZCIsCisJCQlDVExGTEFHX1JE LCAmYWRhcHRlci0+c3RhdHMudHB0LAorCQkJIlRvdGFsIFBhY2tldHMgVHJhbnNtaXR0ZWQi KTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAiZ29vZF9w a3RzX3R4ZCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuZ3B0YywKKwkJCSJH b29kIFBhY2tldHMgVHJhbnNtaXR0ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0 X2xpc3QsIE9JRF9BVVRPLCAiYmNhc3RfcGt0c190eGQiLAorCQkJQ1RMRkxBR19SRCwgJmFk YXB0ZXItPnN0YXRzLmJwdGMsCisJCQkiQnJvYWRjYXN0IFBhY2tldHMgVHJhbnNtaXR0ZWQi KTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAibWNhc3Rf cGt0c190eGQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLm1wdGMsCisJCQki TXVsdGljYXN0IFBhY2tldHMgVHJhbnNtaXR0ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4 LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAidHhfZnJhbWVzXzY0IiwKKwkJCUNUTEZMQUdfUkQs ICZhZGFwdGVyLT5zdGF0cy5wdGM2NCwKKwkJCSI2NCBieXRlIGZyYW1lcyB0cmFuc21pdHRl ZCAiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAidHhf ZnJhbWVzXzY1XzEyNyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHRjMTI3 LAorCQkJIjY1LTEyNyBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCIpOworCVNZU0NUTF9BRERf UVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ0eF9mcmFtZXNfMTI4XzI1NSIsCisJ CQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHRjMjU1LAorCQkJIjEyOC0yNTUgYnl0 ZSBmcmFtZXMgdHJhbnNtaXR0ZWQiKTsKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xp c3QsIE9JRF9BVVRPLCAidHhfZnJhbWVzXzI1Nl81MTEiLAorCQkJQ1RMRkxBR19SRCwgJmFk YXB0ZXItPnN0YXRzLnB0YzUxMSwKKwkJCSIyNTYtNTExIGJ5dGUgZnJhbWVzIHRyYW5zbWl0 dGVkIik7CisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgc3RhdF9saXN0LCBPSURfQVVUTywgInR4 X2ZyYW1lc181MTJfMTAyMyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMucHRj MTAyMywKKwkJCSI1MTItMTAyMyBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCIpOworCVNZU0NU TF9BRERfUVVBRChjdHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ0eF9mcmFtZXNfMTAyNF8x NTIyIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5wdGMxNTIyLAorCQkJIjEw MjQtMTUyMiBieXRlIGZyYW1lcyB0cmFuc21pdHRlZCIpOworCVNZU0NUTF9BRERfUVVBRChj dHgsIHN0YXRfbGlzdCwgT0lEX0FVVE8sICJ0c29fdHhkIiwKKwkJCUNUTEZMQUdfUkQsICZh ZGFwdGVyLT5zdGF0cy50c2N0YywKKwkJCSJUU08gQ29udGV4dHMgVHJhbnNtaXR0ZWQiKTsK KwlTWVNDVExfQUREX1FVQUQoY3R4LCBzdGF0X2xpc3QsIE9JRF9BVVRPLCAidHNvX2N0eF9m YWlsIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy50c2N0ZmMsCisJCQkiVFNP IENvbnRleHRzIEZhaWxlZCIpOworCisKKwkvKiBJbnRlcnJ1cHQgU3RhdHMgKi8KKworCWlu dF9ub2RlID0gU1lTQ1RMX0FERF9OT0RFKGN0eCwgY2hpbGQsIE9JRF9BVVRPLCAiaW50ZXJy dXB0cyIsIAorCQkJCSAgICBDVExGTEFHX1JELCBOVUxMLCAiSW50ZXJydXB0IFN0YXRpc3Rp Y3MiKTsKKwlpbnRfbGlzdCA9IFNZU0NUTF9DSElMRFJFTihpbnRfbm9kZSk7CisKKwlTWVND VExfQUREX1FVQUQoY3R4LCBpbnRfbGlzdCwgT0lEX0FVVE8sICJhc3NlcnRzIiwKKwkJCUNU TEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5pYWMsCisJCQkiSW50ZXJydXB0IEFzc2VydGlv biBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgaW50X2xpc3QsIE9JRF9BVVRP LCAicnhfcGt0X3RpbWVyIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5pY3J4 cHRjLAorCQkJIkludGVycnVwdCBDYXVzZSBSeCBQa3QgVGltZXIgRXhwaXJlIENvdW50Iik7 CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBpbnRfbGlzdCwgT0lEX0FVVE8sICJyeF9hYnNf dGltZXIiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmljcnhhdGMsCisJCQki SW50ZXJydXB0IENhdXNlIFJ4IEFicyBUaW1lciBFeHBpcmUgQ291bnQiKTsKKworCVNZU0NU TF9BRERfUVVBRChjdHgsIGludF9saXN0LCBPSURfQVVUTywgInR4X3BrdF90aW1lciIsCisJ CQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuaWN0eHB0YywKKwkJCSJJbnRlcnJ1cHQg Q2F1c2UgVHggUGt0IFRpbWVyIEV4cGlyZSBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFE KGN0eCwgaW50X2xpc3QsIE9JRF9BVVRPLCAidHhfYWJzX3RpbWVyIiwKKwkJCUNUTEZMQUdf UkQsICZhZGFwdGVyLT5zdGF0cy5pY3R4YXRjLAorCQkJIkludGVycnVwdCBDYXVzZSBUeCBB YnMgVGltZXIgRXhwaXJlIENvdW50Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBpbnRf bGlzdCwgT0lEX0FVVE8sICJ0eF9xdWV1ZV9lbXB0eSIsCisJCQlDVExGTEFHX1JELCAmYWRh cHRlci0+c3RhdHMuaWN0eHFlYywKKwkJCSJJbnRlcnJ1cHQgQ2F1c2UgVHggUXVldWUgRW1w dHkgQ291bnQiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGludF9saXN0LCBPSURfQVVU TywgInR4X3F1ZXVlX21pbl90aHJlc2giLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0 YXRzLmljdHhxbXRjLAorCQkJIkludGVycnVwdCBDYXVzZSBUeCBRdWV1ZSBNaW4gVGhyZXNo IENvdW50Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBpbnRfbGlzdCwgT0lEX0FVVE8s ICJyeF9kZXNjX21pbl90aHJlc2giLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRz LmljcnhkbXRjLAorCQkJIkludGVycnVwdCBDYXVzZSBSeCBEZXNjIE1pbiBUaHJlc2ggQ291 bnQiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGludF9saXN0LCBPSURfQVVUTywgInJ4 X292ZXJydW4iLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmljcnhvYywKKwkJ CSJJbnRlcnJ1cHQgQ2F1c2UgUmVjZWl2ZXIgT3ZlcnJ1biBDb3VudCIpOworCisJLyogSG9z dCB0byBDYXJkIFN0YXRzICovCisKKwlob3N0X25vZGUgPSBTWVNDVExfQUREX05PREUoY3R4 LCBjaGlsZCwgT0lEX0FVVE8sICJob3N0IiwgCisJCQkJICAgIENUTEZMQUdfUkQsIE5VTEws IAorCQkJCSAgICAiSG9zdCB0byBDYXJkIFN0YXRpc3RpY3MiKTsKKworCWhvc3RfbGlzdCA9 IFNZU0NUTF9DSElMRFJFTihob3N0X25vZGUpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwg aG9zdF9saXN0LCBPSURfQVVUTywgImJyZWFrZXJfdHhfcGt0IiwKKwkJCUNUTEZMQUdfUkQs ICZhZGFwdGVyLT5zdGF0cy5jYnRtcGMsCisJCQkiQ2lyY3VpdCBCcmVha2VyIFR4IFBhY2tl dCBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwgaG9zdF9saXN0LCBPSURfQVVU TywgImhvc3RfdHhfcGt0X2Rpc2NhcmQiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0 YXRzLmh0ZHBtYywKKwkJCSJIb3N0IFRyYW5zbWl0IERpc2NhcmRlZCBQYWNrZXRzIik7CisK KwlTWVNDVExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAicnhfcGt0IiwK KwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5zdGF0cy5ycHRoYywKKwkJCSJSeCBQYWNrZXRz IFRvIEhvc3QiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGhvc3RfbGlzdCwgT0lEX0FV VE8sICJicmVha2VyX3J4X3BrdHMiLAorCQkJQ1RMRkxBR19SRCwgJmFkYXB0ZXItPnN0YXRz LmNicm1wYywKKwkJCSJDaXJjdWl0IEJyZWFrZXIgUnggUGFja2V0IENvdW50Iik7CisKKwlT WVNDVExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAiYnJlYWtlcl9yeF9w a3RfZHJvcCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuY2JyZHBjLAorCQkJ IkNpcmN1aXQgQnJlYWtlciBSeCBEcm9wcGVkIENvdW50Iik7CisKKwlTWVNDVExfQUREX1FV QUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAidHhfZ29vZF9wa3QiLAorCQkJQ1RMRkxB R19SRCwgJmFkYXB0ZXItPnN0YXRzLmhncHRjLAorCQkJIkhvc3QgR29vZCBQYWNrZXRzIFR4 IENvdW50Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRP LCAiYnJlYWtlcl90eF9wa3RfZHJvcCIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3Rh dHMuaHRjYmRwYywKKwkJCSJIb3N0IFR4IENpcmN1aXQgQnJlYWtlciBEcm9wcGVkIENvdW50 Iik7CisKKwlTWVNDVExfQUREX1FVQUQoY3R4LCBob3N0X2xpc3QsIE9JRF9BVVRPLCAicnhf Z29vZF9ieXRlcyIsCisJCQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuaGdvcmMsCisJ CQkiSG9zdCBHb29kIE9jdGV0cyBSZWNlaXZlZCBDb3VudCIpOworCisJU1lTQ1RMX0FERF9R VUFEKGN0eCwgaG9zdF9saXN0LCBPSURfQVVUTywgInR4X2dvb2RfYnl0ZXMiLAorCQkJQ1RM RkxBR19SRCwgJmFkYXB0ZXItPnN0YXRzLmhnb3RjLAorCQkJIkhvc3QgR29vZCBPY3RldHMg VHJhbnNtaXQgQ291bnQiKTsKKworCVNZU0NUTF9BRERfUVVBRChjdHgsIGhvc3RfbGlzdCwg T0lEX0FVVE8sICJsZW5ndGhfZXJyb3JzIiwKKwkJCUNUTEZMQUdfUkQsICZhZGFwdGVyLT5z dGF0cy5sZW5lcnJzLAorCQkJIkxlbmd0aCBFcnJvcnMiKTsKKworCVNZU0NUTF9BRERfUVVB RChjdHgsIGhvc3RfbGlzdCwgT0lEX0FVVE8sICJzZXJkZXNfdmlvbGF0aW9uX3BrdCIsCisJ CQlDVExGTEFHX1JELCAmYWRhcHRlci0+c3RhdHMuc2N2cGMsCisJCQkiU2VyRGVzL1NHTUlJ IENvZGUgVmlvbGF0aW9uIFBrdCBDb3VudCIpOworCisJU1lTQ1RMX0FERF9RVUFEKGN0eCwg aG9zdF9saXN0LCBPSURfQVVUTywgImhlYWRlcl9yZWRpcl9taXNzZWQiLAorCQkJQ1RMRkxB R19SRCwgJmFkYXB0ZXItPnN0YXRzLmhybXBjLAorCQkJIkhlYWRlciBSZWRpcmVjdGlvbiBN aXNzZWQgUGFja2V0IENvdW50Iik7CiAKKworfQogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAg KiAgVGhpcyByb3V0aW5lIHByb3ZpZGVzIGEgd2F5IHRvIGR1bXAgb3V0IHRoZSBhZGFwdGVy IGVlcHJvbSwKQEAgLTQ5NDMsMjggKzUxOTMsOCBAQCBpZ2JfcHJpbnRfaHdfc3RhdHMoc3Ry dWN0IGFkYXB0ZXIgKmFkYXB0CiAgKiAgMzIgd29yZHMsIHN0dWZmIHRoYXQgbWF0dGVycyBp cyBpbiB0aGF0IGV4dGVudC4KICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0YXRpYyB2b2lk Ci1pZ2JfcHJpbnRfbnZtX2luZm8oc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpCi17Ci0JdTE2 CWVlcHJvbV9kYXRhOwotCWludAlpLCBqLCByb3cgPSAwOwotCi0JLyogSXRzIGEgYml0IGNy dWRlLCBidXQgaXQgZ2V0cyB0aGUgam9iIGRvbmUgKi8KLQlwcmludGYoIlxuSW50ZXJmYWNl IEVFUFJPTSBEdW1wOlxuIik7Ci0JcHJpbnRmKCJPZmZzZXRcbjB4MDAwMCAgIik7Ci0JZm9y IChpID0gMCwgaiA9IDA7IGkgPCAzMjsgaSsrLCBqKyspIHsKLQkJaWYgKGogPT0gOCkgeyAv KiBNYWtlIHRoZSBvZmZzZXQgYmxvY2sgKi8KLQkJCWogPSAwOyArK3JvdzsKLQkJCXByaW50 ZigiXG4weDAwJXgwICAiLHJvdyk7Ci0JCX0KLQkJZTEwMDBfcmVhZF9udm0oJmFkYXB0ZXIt Pmh3LCBpLCAxLCAmZWVwcm9tX2RhdGEpOwotCQlwcmludGYoIiUwNHggIiwgZWVwcm9tX2Rh dGEpOwotCX0KLQlwcmludGYoIlxuIik7Ci19Ci0KIHN0YXRpYyBpbnQKLWlnYl9zeXNjdGxf ZGVidWdfaW5mbyhTWVNDVExfSEFORExFUl9BUkdTKQoraWdiX3N5c2N0bF9udm1faW5mbyhT WVNDVExfSEFORExFUl9BUkdTKQogewogCXN0cnVjdCBhZGFwdGVyICphZGFwdGVyOwogCWlu dCBlcnJvcjsKQEAgLTQ5NzYsMTYgKzUyMDYsMTIgQEAgaWdiX3N5c2N0bF9kZWJ1Z19pbmZv KFNZU0NUTF9IQU5ETEVSX0FSRwogCWlmIChlcnJvciB8fCAhcmVxLT5uZXdwdHIpCiAJCXJl dHVybiAoZXJyb3IpOwogCi0JaWYgKHJlc3VsdCA9PSAxKSB7Ci0JCWFkYXB0ZXIgPSAoc3Ry dWN0IGFkYXB0ZXIgKilhcmcxOwotCQlpZ2JfcHJpbnRfZGVidWdfaW5mbyhhZGFwdGVyKTsK LQl9CiAJLyoKIAkgKiBUaGlzIHZhbHVlIHdpbGwgY2F1c2UgYSBoZXggZHVtcCBvZiB0aGUK IAkgKiBmaXJzdCAzMiAxNi1iaXQgd29yZHMgb2YgdGhlIEVFUFJPTSB0bwogCSAqIHRoZSBz Y3JlZW4uCiAJICovCi0JaWYgKHJlc3VsdCA9PSAyKSB7CisJaWYgKHJlc3VsdCA9PSAxKSB7 CiAJCWFkYXB0ZXIgPSAoc3RydWN0IGFkYXB0ZXIgKilhcmcxOwogCQlpZ2JfcHJpbnRfbnZt X2luZm8oYWRhcHRlcik7CiAgICAgICAgIH0KQEAgLTQ5OTMsMjYgKzUyMTksMjQgQEAgaWdi X3N5c2N0bF9kZWJ1Z19pbmZvKFNZU0NUTF9IQU5ETEVSX0FSRwogCXJldHVybiAoZXJyb3Ip OwogfQogCi0KLXN0YXRpYyBpbnQKLWlnYl9zeXNjdGxfc3RhdHMoU1lTQ1RMX0hBTkRMRVJf QVJHUykKK3N0YXRpYyB2b2lkCitpZ2JfcHJpbnRfbnZtX2luZm8oc3RydWN0IGFkYXB0ZXIg KmFkYXB0ZXIpCiB7Ci0Jc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXI7Ci0JaW50IGVycm9yOwot CWludCByZXN1bHQ7Ci0KLQlyZXN1bHQgPSAtMTsKLQllcnJvciA9IHN5c2N0bF9oYW5kbGVf aW50KG9pZHAsICZyZXN1bHQsIDAsIHJlcSk7Ci0KLQlpZiAoZXJyb3IgfHwgIXJlcS0+bmV3 cHRyKQotCQlyZXR1cm4gKGVycm9yKTsKKwl1MTYJZWVwcm9tX2RhdGE7CisJaW50CWksIGos IHJvdyA9IDA7CiAKLQlpZiAocmVzdWx0ID09IDEpIHsKLQkJYWRhcHRlciA9IChzdHJ1Y3Qg YWRhcHRlciAqKWFyZzE7Ci0JCWlnYl9wcmludF9od19zdGF0cyhhZGFwdGVyKTsKKwkvKiBJ dHMgYSBiaXQgY3J1ZGUsIGJ1dCBpdCBnZXRzIHRoZSBqb2IgZG9uZSAqLworCXByaW50Zigi XG5JbnRlcmZhY2UgRUVQUk9NIER1bXA6XG4iKTsKKwlwcmludGYoIk9mZnNldFxuMHgwMDAw ICAiKTsKKwlmb3IgKGkgPSAwLCBqID0gMDsgaSA8IDMyOyBpKyssIGorKykgeworCQlpZiAo aiA9PSA4KSB7IC8qIE1ha2UgdGhlIG9mZnNldCBibG9jayAqLworCQkJaiA9IDA7ICsrcm93 OworCQkJcHJpbnRmKCJcbjB4MDAleDAgICIscm93KTsKKwkJfQorCQllMTAwMF9yZWFkX252 bSgmYWRhcHRlci0+aHcsIGksIDEsICZlZXByb21fZGF0YSk7CisJCXByaW50ZigiJTA0eCAi LCBlZXByb21fZGF0YSk7CiAJfQotCi0JcmV0dXJuIChlcnJvcik7CisJcHJpbnRmKCJcbiIp OwogfQogCiBzdGF0aWMgdm9pZAotLS0gc3lzL2Rldi9lMTAwMC9pZl9pZ2IuaAkyMDEwLzA0 LzA1IDIwOjM5OjQ0CTEuNC4yLjIKKysrIHN5cy9kZXYvZTEwMDAvaWZfaWdiLmgJMjAxMC8w Ni8xOCAxNzoyMjowOAkxLjQuMi4zCkBAIC0zMCw3ICszMCw3IEBACiAgIFBPU1NJQklMSVRZ IE9GIFNVQ0ggREFNQUdFLgogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiRGcmVl QlNEOiBzcmMvc3lzL2Rldi9lMTAwMC9pZl9pZ2IuaCx2IDEuNC4yLjIuMi4xIDIwMTAvMDYv MTQgMDI6MDk6MDYga2Vuc21pdGggRXhwICQqLworLyokRnJlZUJTRDogc3JjL3N5cy9kZXYv ZTEwMDAvaWZfaWdiLmgsdiAxLjQuMi4zIDIwMTAvMDYvMTggMTc6MjI6MDggamZ2IEV4cCAk Ki8KIAogI2lmbmRlZiBfSUdCX0hfREVGSU5FRF8KICNkZWZpbmUgX0lHQl9IX0RFRklORURf CkBAIC0zMTcsNiArMzE3LDkgQEAgc3RydWN0IHR4X3JpbmcgewogCWludAkJCXdhdGNoZG9n X3RpbWU7CiAJdTY0CQkJbm9fZGVzY19hdmFpbDsKIAl1NjQJCQl0eF9wYWNrZXRzOworCS8q IFN0YXRpc3RpY3MgZm9yIHJlcG9ydGluZywgT05MWS4gKi8KKwl1MzIJCQl0ZGg7IC8qIFRy YW5zbWl0IERlc2NyaXB0b3IgSGVhZCAqLworCXUzMgkJCXRkdDsgLyogVHJhbnNtaXQgRGVz Y3JpcHRvciBUYWlsICovCiB9OwogCiAvKgpAQCAtMzUzLDYgKzM1Niw5IEBAIHN0cnVjdCBy eF9yaW5nIHsKIAl1NjQJCQlyeF9kaXNjYXJkZWQ7CiAJdTY0CQkJcnhfcGFja2V0czsKIAl1 NjQJCQlyeF9ieXRlczsKKwkvKiBTdGF0aXN0aWNzIGZvciByZXBvcnRpbmcsIE9OTFkuICov CisJdTMyCQkJcmRoOyAvKiBUcmFuc21pdCBEZXNjcmlwdG9yIEhlYWQgKi8KKwl1MzIJCQly ZHQ7IC8qIFRyYW5zbWl0IERlc2NyaXB0b3IgVGFpbCAqLwogfTsKIAogc3RydWN0IGFkYXB0 ZXIgewpAQCAtMzgyLDggKzM4OCw2IEBAIHN0cnVjdCBhZGFwdGVyIHsKIAlpbnQJCW1pbl9m cmFtZV9zaXplOwogCXN0cnVjdCBtdHgJY29yZV9tdHg7CiAJaW50CQlpZ2JfaW5zZXJ0X3Zs YW5faGVhZGVyOwotCXN0cnVjdCB0YXNrICAgICByeHR4X3Rhc2s7Ci0Jc3RydWN0IHRhc2tx dWV1ZSAqdHE7CS8qIGFkYXB0ZXIgdGFzayBxdWV1ZSAqLwogICAgICAgICB1MTYJCW51bV9x dWV1ZXM7CiAKIAlldmVudGhhbmRsZXJfdGFnIHZsYW5fYXR0YWNoOwpAQCAtNDI4LDYgKzQz MiwxMiBAQCBzdHJ1Y3QgYWRhcHRlciB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcJbm9fdHhf ZG1hX3NldHVwOwogCXVuc2lnbmVkIGxvbmcJd2F0Y2hkb2dfZXZlbnRzOwogCXVuc2lnbmVk IGxvbmcJcnhfb3ZlcnJ1bnM7CisJdW5zaWduZWQgbG9uZwlkZXZpY2VfY29udHJvbDsKKwl1 bnNpZ25lZCBsb25nCXJ4X2NvbnRyb2w7CisJdW5zaWduZWQgbG9uZwlpbnRfbWFzazsKKwl1 bnNpZ25lZCBsb25nCWVpbnRfbWFzazsKKwl1bnNpZ25lZCBsb25nCXBhY2tldF9idWZfYWxs b2Nfcng7CisJdW5zaWduZWQgbG9uZwlwYWNrZXRfYnVmX2FsbG9jX3R4OwogCiAJYm9vbGVh bl90ICAgICAgIGluX2RldGFjaDsKIAotLS0gc3lzL2Rldi9lMTAwMC9pZl9sZW0uYwkyMDEw LzA1LzE0IDIyOjIwOjU4CTEuMy4yLjQKKysrIHN5cy9kZXYvZTEwMDAvaWZfbGVtLmMJMjAx MC8wNi8xOCAxNzoyMjowOAkxLjMuMi41CkBAIC0zMCw3ICszMCw3IEBACiAgIFBPU1NJQklM SVRZIE9GIFNVQ0ggREFNQUdFLgogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiRG cmVlQlNEOiBzcmMvc3lzL2Rldi9lMTAwMC9pZl9sZW0uYyx2IDEuMy4yLjQuMi4xIDIwMTAv MDYvMTQgMDI6MDk6MDYga2Vuc21pdGggRXhwICQqLworLyokRnJlZUJTRDogc3JjL3N5cy9k ZXYvZTEwMDAvaWZfbGVtLmMsdiAxLjMuMi41IDIwMTAvMDYvMTggMTc6MjI6MDggamZ2IEV4 cCAkKi8KIAogI2lmZGVmIEhBVkVfS0VSTkVMX09QVElPTl9IRUFERVJTCiAjaW5jbHVkZSAi b3B0X2RldmljZV9wb2xsaW5nLmgiCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIHZvaWQJ bGVtX3R4ZW9mKHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGljIHZvaWQJbGVtX3R4X3B1cmdl KHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGljIGludAlsZW1fYWxsb2NhdGVfcmVjZWl2ZV9z dHJ1Y3R1cmVzKHN0cnVjdCBhZGFwdGVyICopOwogc3RhdGljIGludAlsZW1fYWxsb2NhdGVf dHJhbnNtaXRfc3RydWN0dXJlcyhzdHJ1Y3QgYWRhcHRlciAqKTsKLXN0YXRpYyBpbnQJbGVt X3J4ZW9mKHN0cnVjdCBhZGFwdGVyICosIGludCk7CitzdGF0aWMgYm9vbAlsZW1fcnhlb2Yo c3RydWN0IGFkYXB0ZXIgKiwgaW50LCBpbnQgKik7CiAjaWZuZGVmIF9fTk9fU1RSSUNUX0FM SUdOTUVOVAogc3RhdGljIGludAlsZW1fZml4dXBfcngoc3RydWN0IGFkYXB0ZXIgKik7CiAj ZW5kaWYKQEAgLTEyNTUsNyArMTI1NSw3IEBAIGxlbV9wb2xsKHN0cnVjdCBpZm5ldCAqaWZw LCBlbnVtIHBvbGxfY20KIAl9CiAJRU1fQ09SRV9VTkxPQ0soYWRhcHRlcik7CiAKLQlyeF9k b25lID0gbGVtX3J4ZW9mKGFkYXB0ZXIsIGNvdW50KTsKKwlsZW1fcnhlb2YoYWRhcHRlciwg Y291bnQsICZyeF9kb25lKTsKIAogCUVNX1RYX0xPQ0soYWRhcHRlcik7CiAJbGVtX3R4ZW9m KGFkYXB0ZXIpOwpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgbGVtX2ludHIodm9pZCAqYXJnKQog CiAJRU1fVFhfTE9DSyhhZGFwdGVyKTsKIAlsZW1fdHhlb2YoYWRhcHRlcik7Ci0JbGVtX3J4 ZW9mKGFkYXB0ZXIsIC0xKTsKKwlsZW1fcnhlb2YoYWRhcHRlciwgLTEsIE5VTEwpOwogCWxl bV90eGVvZihhZGFwdGVyKTsKIAlpZiAoaWZwLT5pZl9kcnZfZmxhZ3MgJiBJRkZfRFJWX1JV Tk5JTkcgJiYKIAkgICAgIUlGUV9EUlZfSVNfRU1QVFkoJmlmcC0+aWZfc25kKSkKQEAgLTEz NTAsNyArMTM1MCw3IEBAIGxlbV9oYW5kbGVfcnh0eCh2b2lkICpjb250ZXh0LCBpbnQgcGVu ZGkKIAogCiAJaWYgKGlmcC0+aWZfZHJ2X2ZsYWdzICYgSUZGX0RSVl9SVU5OSU5HKSB7Ci0J CWlmIChsZW1fcnhlb2YoYWRhcHRlciwgYWRhcHRlci0+cnhfcHJvY2Vzc19saW1pdCkgIT0g MCkKKwkJaWYgKGxlbV9yeGVvZihhZGFwdGVyLCBhZGFwdGVyLT5yeF9wcm9jZXNzX2xpbWl0 LCBOVUxMKSAhPSAwKQogCQkJdGFza3F1ZXVlX2VucXVldWUoYWRhcHRlci0+dHEsICZhZGFw dGVyLT5yeHR4X3Rhc2spOwogCQlFTV9UWF9MT0NLKGFkYXB0ZXIpOwogCQlsZW1fdHhlb2Yo YWRhcHRlcik7CkBAIC0zNDQ5LDggKzM0NDksOCBAQCBsZW1fZnJlZV9yZWNlaXZlX3N0cnVj dHVyZXMoc3RydWN0IGFkYXB0CiAgKiAgCiAgKiAgRm9yIHBvbGxpbmcgd2UgYWxzbyBub3cg cmV0dXJuIHRoZSBudW1iZXIgb2YgY2xlYW5lZCBwYWNrZXRzCiAgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Lwotc3RhdGljIGludAotbGVtX3J4ZW9mKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBpbnQg Y291bnQpCitzdGF0aWMgYm9vbAorbGVtX3J4ZW9mKHN0cnVjdCBhZGFwdGVyICphZGFwdGVy LCBpbnQgY291bnQsIGludCAqZG9uZSkKIHsKIAlzdHJ1Y3QgaWZuZXQJKmlmcCA9IGFkYXB0 ZXItPmlmcDs7CiAJc3RydWN0IG1idWYJKm1wOwpAQCAtMzQ2Niw4ICszNDY2LDEwIEBAIGxl bV9yeGVvZihzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgaW50IGMKIAkgICAgQlVTX0RNQVNZ TkNfUE9TVFJFQUQpOwogCiAJaWYgKCEoKGN1cnJlbnRfZGVzYy0+c3RhdHVzKSAmIEUxMDAw X1JYRF9TVEFUX0REKSkgeworCQlpZiAoZG9uZSAhPSBOVUxMKQorCQkJKmRvbmUgPSByeF9z ZW50OwogCQlFTV9SWF9VTkxPQ0soYWRhcHRlcik7Ci0JCXJldHVybiAocnhfc2VudCk7CisJ CXJldHVybiAoRkFMU0UpOwogCX0KIAogCXdoaWxlICgoY3VycmVudF9kZXNjLT5zdGF0dXMg JiBFMTAwMF9SWERfU1RBVF9ERCkgJiYKQEAgLTM2MjYsOCArMzYyOCwxMCBAQCBkaXNjYXJk OgogCWlmICgtLWkgPCAwKQogCQlpID0gYWRhcHRlci0+bnVtX3J4X2Rlc2MgLSAxOwogCUUx MDAwX1dSSVRFX1JFRygmYWRhcHRlci0+aHcsIEUxMDAwX1JEVCgwKSwgaSk7CisJaWYgKGRv bmUgIT0gTlVMTCkKKwkJKmRvbmUgPSByeF9zZW50OwogCUVNX1JYX1VOTE9DSyhhZGFwdGVy KTsKLQlyZXR1cm4gKHJ4X3NlbnQpOworCXJldHVybiAoY3VycmVudF9kZXNjLT5zdGF0dXMg JiBFMTAwMF9SWERfU1RBVF9ERCk7CiB9CiAKICNpZm5kZWYgX19OT19TVFJJQ1RfQUxJR05N RU5UCg== --------------020608030802000604090208-- --------------enigF6A690C36A07BC733D80DCC7 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.13 (FreeBSD) iEYEARECAAYFAkxEdpcACgkQLDqVQ9VXb8jz9ACfaLxQ+Y+z2ullaBPna0/0KrDT bAYAoKW/S/STf/Y8EzULUKEd8l6bxGNJ =zpqG -----END PGP SIGNATURE----- --------------enigF6A690C36A07BC733D80DCC7--