From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from smtp.megiteam.pl ([31.186.83.105]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fwmyd-000230-Tf for barebox@lists.infradead.org; Mon, 03 Sep 2018 11:25:08 +0000 From: Marcin Niestroj Date: Mon, 3 Sep 2018 13:23:54 +0200 Message-Id: <20180903112408.2086-5-m.niestroj@grinn-global.com> In-Reply-To: <20180903112408.2086-1-m.niestroj@grinn-global.com> References: <20180903112408.2086-1-m.niestroj@grinn-global.com> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH 04/18] crypto: caam - handle core endianness != caam endianness To: barebox@lists.infradead.org Cc: Marcin Niestroj UGljayBjb21taXQgMjYxZWEwNThmMDE2YmMwNGZhMDY0MzQ4YWQ5YmYzOWQ5NDM3OTM4MSBmcm9t IExpbnV4CnVwc3RyZWFtLgoKICAgIGNyeXB0bzogY2FhbSAtIGhhbmRsZSBjb3JlIGVuZGlhbm5l c3MgIT0gY2FhbSBlbmRpYW5uZXNzCgogICAgVGhlcmUgYXJlIFNvQ3MgbGlrZSBMUzEwNDNBIHdo ZXJlIENBQU0gZW5kaWFubmVzcyAoQkUpIGRvZXMgbm90IG1hdGNoCiAgICB0aGUgZGVmYXVsdCBl bmRpYW5uZXNzIG9mIHRoZSBjb3JlIChMRSkuCiAgICBNb3Jlb3ZlciwgdGhlcmUgYXJlIHJlcXVp cmVtZW50cyBmb3IgdGhlIGRyaXZlciB0byBoYW5kbGUgY2FzZXMgbGlrZQogICAgQ1BVX0JJR19F TkRJQU49eSBvbiBBUk0tYmFzZWQgU29Dcy4KICAgIFRoaXMgcmVxdWlyZXMgZm9yIGEgY29tcGxl dGUgcmV3cml0ZSBvZiB0aGUgSS9PIGFjY2Vzc29ycy4KCiAgICBQUEMtc3BlY2lmaWMgYWNjZXNz b3JzIC0ge2luLG91dH1fe2xlLGJlfVhYIC0gYXJlIHJlcGxhY2VkIHdpdGgKICAgIGdlbmVyaWMg b25lcyAtIGlve3JlYWQsd3JpdGV9W2JlXVhYLgoKICAgIEVuZGlhbm5lc3MgaXMgZGV0ZWN0ZWQg ZHluYW1pY2FsbHkgKGF0IHJ1bnRpbWUpIHRvIGFsbG93IGZvcgogICAgbXVsdGlwbGF0Zm9ybSBr ZXJuZWxzLCBmb3IgZS5nLiBydW5uaW5nIHRoZSBzYW1lIGtlcm5lbCBpbWFnZQogICAgb24gTFMx MDQzQSAoQkUgQ0FBTSkgYW5kIExTMjA4MEEgKExFIENBQU0pIGFybXY4LWJhc2VkIFNvQ3MuCgog ICAgV2hpbGUgaGVyZTogZGVidWdmcyBlbnRyaWVzIG5lZWQgdG8gdGFrZSBpbnRvIGNvbnNpZGVy YXRpb24gdGhlCiAgICBlbmRpYW5uZXNzIG9mIHRoZSBjb3JlIHdoZW4gZGlzcGxheWluZyBkYXRh LiBBZGQgdGhlIG5lY2Vzc2FyeQogICAgZ2x1ZSBjb2RlIHNvIHRoZSBlbnRyaWVzIHJlbWFpbiB0 aGUgc2FtZSwgYnV0IHRoZXkgYXJlIHByb3Blcmx5CiAgICByZWFkLCByZWdhcmRsZXNzIG9mIHRo ZSBjb3JlIGFuZC9vciBTRUMgZW5kaWFubmVzcy4KCiAgICBOb3RlOiBwZGIuaCBmaXhlcyBvbmx5 IHdoYXQgaXMgY3VycmVudGx5IGJlaW5nIHVzZWQgKElQc2VjKS4KCiAgICBSZXZpZXdlZC1ieTog VHVkb3IgQW1iYXJ1cyA8dHVkb3ItZGFuLmFtYmFydXNAbnhwLmNvbT4KICAgIFNpZ25lZC1vZmYt Ynk6IEhvcmlhIEdlYW50xIMgPGhvcmlhLmdlYW50YUBueHAuY29tPgogICAgU2lnbmVkLW9mZi1i eTogQWxleCBQb3Jvc2FudSA8YWxleGFuZHJ1LnBvcm9zYW51QG54cC5jb20+CiAgICBTaWduZWQt b2ZmLWJ5OiBIZXJiZXJ0IFh1IDxoZXJiZXJ0QGdvbmRvci5hcGFuYS5vcmcuYXU+CgpBcyBwYXJ0 IG9mIHRoaXMgcGF0Y2ggcmRfcmVnWzgsMTYsMzIsNjRdKCkgYW5kIHdyX3JlZ1s4LDE2LDMyLDY0 XSgpCmhlbHBlciBmdW5jdGlvbnMgYXJlIGludHJvZHVjZWQuIEFsbCByZWFkbCgpIGNhbGxzIGFy ZSByZXBsYWNlZCBieQpyZF9yZWczMigpIGFuZCBhbGwgd3JpdGVsKCkgY2FsbHMgYXJlIHJlcGxh Y2VkIGJ5IHdyX3JlZzMyKCkuCgpTaWduZWQtb2ZmLWJ5OiBNYXJjaW4gTmllc3Ryb2ogPG0ubmll c3Ryb2pAZ3Jpbm4tZ2xvYmFsLmNvbT4KLS0tCiBkcml2ZXJzL2NyeXB0by9jYWFtL2N0cmwuYyAg ICAgICAgfCAgODcgKysrKysrKysrKystLS0tLS0tLS0tLQogZHJpdmVycy9jcnlwdG8vY2FhbS9k ZXNjLmggICAgICAgIHwgICAzICstCiBkcml2ZXJzL2NyeXB0by9jYWFtL2Rlc2NfY29uc3RyLmgg fCAgNDIgKysrKysrKy0tLS0KIGRyaXZlcnMvY3J5cHRvL2NhYW0vanIuYyAgICAgICAgICB8ICA2 MiArKysrKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2NyeXB0by9jYWFtL3JlZ3MuaCAgICAgICAgfCAx MTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiA1IGZpbGVzIGNoYW5nZWQsIDIwNiBp bnNlcnRpb25zKCspLCAxMDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcnlw dG8vY2FhbS9jdHJsLmMgYi9kcml2ZXJzL2NyeXB0by9jYWFtL2N0cmwuYwppbmRleCA4Y2U5YTg1 OWUuLjBiYWRkZjczMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcnlwdG8vY2FhbS9jdHJsLmMKKysr IGIvZHJpdmVycy9jcnlwdG8vY2FhbS9jdHJsLmMKQEAgLTIwLDYgKzIwLDkgQEAKICNpbmNsdWRl ICJlcnJvci5oIgogI2luY2x1ZGUgImN0cmwuaCIKIAorYm9vbCBjYWFtX2xpdHRsZV9lbmQ7CitF WFBPUlRfU1lNQk9MKGNhYW1fbGl0dGxlX2VuZCk7CisKIC8qCiAgKiBEZXNjcmlwdG9yIHRvIGlu c3RhbnRpYXRlIFJORyBTdGF0ZSBIYW5kbGUgMCBpbiBub3JtYWwgbW9kZSBhbmQKICAqIGxvYWQg dGhlIEpES0VLLCBUREtFSyBhbmQgVERTSyByZWdpc3RlcnMKQEAgLTgzLDEwICs4NiwxMCBAQCBz dGF0aWMgaW5saW5lIGludCBydW5fZGVzY3JpcHRvcl9kZWNvMChzdHJ1Y3QgZGV2aWNlX2QgKmN0 cmxkZXYsIHUzMiAqZGVzYywKIAlkZWNvID0gY3RybHByaXYtPmRlY287CiAKIAlpZiAoY3RybHBy aXYtPnZpcnRfZW4gPT0gMSkgewotCQlzZXRiaXRzMzIoJmN0cmwtPmRlY29fcnNyLCBERUNPUlNS X0pSMCk7CisJCWNscnNldGJpdHNfMzIoJmN0cmwtPmRlY29fcnNyLCAwLCBERUNPUlNSX0pSMCk7 CiAKIAkJc3RhcnQgPSBnZXRfdGltZV9ucygpOwotCQl3aGlsZSAoIShyZWFkbCgmY3RybC0+ZGVj b19yc3IpICYgREVDT1JTUl9WQUxJRCkpIHsKKwkJd2hpbGUgKCEocmRfcmVnMzIoJmN0cmwtPmRl Y29fcnNyKSAmIERFQ09SU1JfVkFMSUQpKSB7CiAJCQlpZiAoaXNfdGltZW91dChzdGFydCwgMTAw ICogTVNFQ09ORCkpIHsKIAkJCQlkZXZfZXJyKGN0cmxkZXYsICJERUNPIHRpbWVkIG91dFxuIik7 CiAJCQkJcmV0dXJuIC1FVElNRURPVVQ7CkBAIC05NCwxOSArOTcsMTkgQEAgc3RhdGljIGlubGlu ZSBpbnQgcnVuX2Rlc2NyaXB0b3JfZGVjbzAoc3RydWN0IGRldmljZV9kICpjdHJsZGV2LCB1MzIg KmRlc2MsCiAJCX0KIAl9CiAKLQlzZXRiaXRzMzIoJmN0cmwtPmRlY29fcnEsIERFQ09SUl9SUUQw RU5BQkxFKTsKKwljbHJzZXRiaXRzXzMyKCZjdHJsLT5kZWNvX3JxLCAwLCBERUNPUlJfUlFEMEVO QUJMRSk7CiAKIAlzdGFydCA9IGdldF90aW1lX25zKCk7Ci0Jd2hpbGUgKCEocmVhZGwoJmN0cmwt PmRlY29fcnEpICYgREVDT1JSX0RFTjApKSB7CisJd2hpbGUgKCEocmRfcmVnMzIoJmN0cmwtPmRl Y29fcnEpICYgREVDT1JSX0RFTjApKSB7CiAJCWlmIChpc190aW1lb3V0KHN0YXJ0LCAxMDAgKiBN U0VDT05EKSkgewogCQkJZGV2X2VycihjdHJsZGV2LCAiZmFpbGVkIHRvIGFjcXVpcmUgREVDTyAw XG4iKTsKLQkJCWNscmJpdHMzMigmY3RybC0+ZGVjb19ycSwgREVDT1JSX1JRRDBFTkFCTEUpOwor CQkJY2xyc2V0Yml0c18zMigmY3RybC0+ZGVjb19ycSwgREVDT1JSX1JRRDBFTkFCTEUsIDApOwog CQkJcmV0dXJuIC1FVElNRURPVVQ7CiAJCX0KIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgZGVzY19s ZW4oZGVzYyk7IGkrKykKLQkJd3JpdGVsKCooZGVzYyArIGkpLCAmZGVjby0+ZGVzY2J1ZltpXSk7 CisJCXdyX3JlZzMyKCZkZWNvLT5kZXNjYnVmW2ldLCBjYWFtMzJfdG9fY3B1KCooZGVzYyArIGkp KSk7CiAKIAlmbGFncyA9IERFQ09fSlFDUl9XSEw7CiAJLyoKQEAgLTExNywxMCArMTIwLDEwIEBA IHN0YXRpYyBpbmxpbmUgaW50IHJ1bl9kZXNjcmlwdG9yX2RlY28wKHN0cnVjdCBkZXZpY2VfZCAq Y3RybGRldiwgdTMyICpkZXNjLAogCQlmbGFncyB8PSBERUNPX0pRQ1JfRk9VUjsKIAogCS8qIElu c3RydWN0IHRoZSBERUNPIHRvIGV4ZWN1dGUgaXQgKi8KLQlzZXRiaXRzMzIoJmRlY28tPmpyX2N0 bF9oaSwgZmxhZ3MpOworCWNscnNldGJpdHNfMzIoJmRlY28tPmpyX2N0bF9oaSwgMCwgZmxhZ3Mp OwogCiAJc3RhcnQgPSBnZXRfdGltZV9ucygpOwotCXdoaWxlICgoZGVjb19kYmdfcmVnID0gcmVh ZGwoJmRlY28tPmRlc2NfZGJnKSkgJgorCXdoaWxlICgoZGVjb19kYmdfcmVnID0gcmRfcmVnMzIo JmRlY28tPmRlc2NfZGJnKSkgJgogCQkgREVTQ19EQkdfREVDT19TVEFUX1ZBTElEKSB7CiAJCS8q CiAJCSAqIElmIGFuIGVycm9yIG9jY3VyZWQgaW4gdGhlIGRlc2NyaXB0b3IsIHRoZW4KQEAgLTEz MSwxNCArMTM0LDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJ1bl9kZXNjcmlwdG9yX2RlY28wKHN0 cnVjdCBkZXZpY2VfZCAqY3RybGRldiwgdTMyICpkZXNjLAogCQkJYnJlYWs7CiAJfQogCi0JKnN0 YXR1cyA9IHJlYWRsKCZkZWNvLT5vcF9zdGF0dXNfaGkpICYKKwkqc3RhdHVzID0gcmRfcmVnMzIo JmRlY28tPm9wX3N0YXR1c19oaSkgJgogCQkgIERFQ09fT1BfU1RBVFVTX0hJX0VSUl9NQVNLOwog CiAJaWYgKGN0cmxwcml2LT52aXJ0X2VuID09IDEpCi0JCWNscmJpdHMzMigmY3RybC0+ZGVjb19y c3IsIERFQ09SU1JfSlIwKTsKKwkJY2xyc2V0Yml0c18zMigmY3RybC0+ZGVjb19yc3IsIERFQ09S U1JfSlIwLCAwKTsKIAogCS8qIE1hcmsgdGhlIERFQ08gYXMgZnJlZSAqLwotCWNscmJpdHMzMigm Y3RybC0+ZGVjb19ycSwgREVDT1JSX1JRRDBFTkFCTEUpOworCWNscnNldGJpdHNfMzIoJmN0cmwt PmRlY29fcnEsIERFQ09SUl9SUUQwRU5BQkxFLCAwKTsKIAogCWlmIChpc190aW1lb3V0KHN0YXJ0 LCAxMDAgKiBNU0VDT05EKSkKIAkJcmV0dXJuIC1FQUdBSU47CkBAIC0xOTksNyArMjAyLDcgQEAg c3RhdGljIGludCBpbnN0YW50aWF0ZV9ybmcoc3RydWN0IGRldmljZV9kICpjdHJsZGV2LCBpbnQg c3RhdGVfaGFuZGxlX21hc2ssCiAJCSAqIHdpdGhvdXQgYW55IGVycm9yIChIVyBvcHRpbWl6YXRp b25zIGZvciBsYXRlcgogCQkgKiBDQUFNIGVyYXMpLCB0aGVuIHRyeSBhZ2Fpbi4KIAkJICovCi0J CXJkc3RhX3ZhbCA9IHJlYWRsKCZjdHJsLT5yNHRzdFswXS5yZHN0YSkgJiBSRFNUQV9JRk1BU0s7 CisJCXJkc3RhX3ZhbCA9IHJkX3JlZzMyKCZjdHJsLT5yNHRzdFswXS5yZHN0YSkgJiBSRFNUQV9J Rk1BU0s7CiAJCWlmICgoc3RhdHVzICYmIHN0YXR1cyAhPSBKUlNUQV9TU1JDX0pVTVBfSEFMVF9D QykgfHwKIAkJICAgICEocmRzdGFfdmFsICYgKDEgPDwgc2hfaWR4KSkpCiAJCQlyZXQgPSAtRUFH QUlOOwpAQCAtMjQxLDcgKzI0NCw3IEBAIHN0YXRpYyB2b2lkIGtpY2tfdHJuZyhzdHJ1Y3QgZGV2 aWNlX2QgKmN0cmxkZXYsIGludCBlbnRfZGVsYXkpCiAJcjR0c3QgPSAmY3RybC0+cjR0c3RbMF07 CiAKIAkvKiBwdXQgUk5HNCBpbnRvIHByb2dyYW0gbW9kZSAqLwotCXNldGJpdHMzMigmcjR0c3Qt PnJ0bWN0bCwgUlRNQ1RMX1BSR00pOworCWNscnNldGJpdHNfMzIoJnI0dHN0LT5ydG1jdGwsIDAs IFJUTUNUTF9QUkdNKTsKIAogCS8qCiAJICogUGVyZm9ybWFuY2Utd2lzZSwgaXQgZG9lcyBub3Qg bWFrZSBzZW5zZSB0bwpAQCAtMjUxLDMzICsyNTQsMzMgQEAgc3RhdGljIHZvaWQga2lja190cm5n KHN0cnVjdCBkZXZpY2VfZCAqY3RybGRldiwgaW50IGVudF9kZWxheSkKIAkgKiB0aW1lIHRyeWlu ZyB0byBzZXQgdGhlIHZhbHVlcyBjb250cm9sbGluZyB0aGUgc2FtcGxlCiAJICogZnJlcXVlbmN5 LCB0aGUgZnVuY3Rpb24gc2ltcGx5IHJldHVybnMuCiAJICovCi0JdmFsID0gKHJlYWRsKCZyNHRz dC0+cnRzZGN0bCkgJiBSVFNEQ1RMX0VOVF9ETFlfTUFTSykKKwl2YWwgPSAocmRfcmVnMzIoJnI0 dHN0LT5ydHNkY3RsKSAmIFJUU0RDVExfRU5UX0RMWV9NQVNLKQogCSAgICAgID4+IFJUU0RDVExf RU5UX0RMWV9TSElGVDsKIAlpZiAoZW50X2RlbGF5IDw9IHZhbCkgewogCQkvKiBwdXQgUk5HNCBp bnRvIHJ1biBtb2RlICovCi0JCWNscmJpdHMzMigmcjR0c3QtPnJ0bWN0bCwgUlRNQ1RMX1BSR00p OworCQljbHJzZXRiaXRzXzMyKCZyNHRzdC0+cnRtY3RsLCBSVE1DVExfUFJHTSwgMCk7CiAJCXJl dHVybjsKIAl9CiAKLQl2YWwgPSByZWFkbCgmcjR0c3QtPnJ0c2RjdGwpOworCXZhbCA9IHJkX3Jl ZzMyKCZyNHRzdC0+cnRzZGN0bCk7CiAJdmFsID0gKHZhbCAmIH5SVFNEQ1RMX0VOVF9ETFlfTUFT SykgfAogCSAgICAgIChlbnRfZGVsYXkgPDwgUlRTRENUTF9FTlRfRExZX1NISUZUKTsKLQl3cml0 ZWwodmFsLCAmcjR0c3QtPnJ0c2RjdGwpOworCXdyX3JlZzMyKCZyNHRzdC0+cnRzZGN0bCwgdmFs KTsKIAkvKiBtaW4uIGZyZXEuIGNvdW50LCBlcXVhbCB0byAxLzQgb2YgdGhlIGVudHJvcHkgc2Ft cGxlIGxlbmd0aCAqLwotCXdyaXRlbChlbnRfZGVsYXkgPj4gMiwgJnI0dHN0LT5ydGZycW1pbik7 CisJd3JfcmVnMzIoJnI0dHN0LT5ydGZycW1pbiwgZW50X2RlbGF5ID4+IDIpOwogCS8qIGRpc2Fi bGUgbWF4aW11bSBmcmVxdWVuY3kgY291bnQgKi8KLQl3cml0ZWwoUlRGUlFNQVhfRElTQUJMRSwg JnI0dHN0LT5ydGZycW1heCk7CisJd3JfcmVnMzIoJnI0dHN0LT5ydGZycW1heCwgUlRGUlFNQVhf RElTQUJMRSk7CiAJLyogcmVhZCB0aGUgY29udHJvbCByZWdpc3RlciAqLwotCXZhbCA9IHJlYWRs KCZyNHRzdC0+cnRtY3RsKTsKKwl2YWwgPSByZF9yZWczMigmcjR0c3QtPnJ0bWN0bCk7CiAJLyoK IAkgKiBzZWxlY3QgcmF3IHNhbXBsaW5nIGluIGJvdGggZW50cm9weSBzaGlmdGVyCiAJICogYW5k IHN0YXRpc3RpY2FsIGNoZWNrZXIKIAkgKi8KLQlzZXRiaXRzMzIoJnZhbCwgUlRNQ1RMX1NBTVBf TU9ERV9SQVdfRVNfU0MpOworCWNscnNldGJpdHNfMzIoJnZhbCwgMCwgUlRNQ1RMX1NBTVBfTU9E RV9SQVdfRVNfU0MpOwogCS8qIHB1dCBSTkc0IGludG8gcnVuIG1vZGUgKi8KLQljbHJiaXRzMzIo JnZhbCwgUlRNQ1RMX1BSR00pOworCWNscnNldGJpdHNfMzIoJnZhbCwgUlRNQ1RMX1BSR00sIDAp OwogCS8qIHdyaXRlIGJhY2sgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgKi8KLQl3cml0ZWwodmFsLCAm cjR0c3QtPnJ0bWN0bCk7CisJd3JfcmVnMzIoJnI0dHN0LT5ydG1jdGwsIHZhbCk7CiB9CiAKIC8q KgpAQCAtMzc5LDggKzM4MiwxMiBAQCBzdGF0aWMgaW50IGNhYW1fcHJvYmUoc3RydWN0IGRldmlj ZV9kICpkZXYpCiAJCWRldl9lcnIoZGV2LCAiY2FhbTogb2ZfaW9tYXAoKSBmYWlsZWRcbiIpOwog CQlyZXR1cm4gLUVOT01FTTsKIAl9CisKKwljYWFtX2xpdHRsZV9lbmQgPSAhKGJvb2wpKHJkX3Jl ZzMyKCZjdHJsLT5wZXJmbW9uLnN0YXR1cykgJgorCQkJCSAgKENTVEFfUExFTkQgfCBDU1RBX0FM VF9QTEVORCkpOworCiAJLyogRmluZGluZyB0aGUgcGFnZSBzaXplIGZvciB1c2luZyB0aGUgQ1RQ Ul9NUyByZWdpc3RlciAqLwotCWNvbXBfcGFyYW1zID0gcmVhZGwoJmN0cmwtPnBlcmZtb24uY29t cF9wYXJtc19tcyk7CisJY29tcF9wYXJhbXMgPSByZF9yZWczMigmY3RybC0+cGVyZm1vbi5jb21w X3Bhcm1zX21zKTsKIAlwZ19zaXplID0gKGNvbXBfcGFyYW1zICYgQ1RQUl9NU19QR19TWl9NQVNL KSA+PiBDVFBSX01TX1BHX1NaX1NISUZUOwogCiAJLyogQWxsb2NhdGluZyB0aGUgQkxPQ0tfT0ZG U0VUIGJhc2VkIG9uIHRoZSBzdXBwb3J0ZWQgcGFnZSBzaXplIG9uCkBAIC00MDMsNyArNDEwLDcg QEAgc3RhdGljIGludCBjYWFtX3Byb2JlKHN0cnVjdCBkZXZpY2VfZCAqZGV2KQogCSAqIEVuYWJs ZSBERUNPIHdhdGNoZG9ncyBhbmQsIGlmIHRoaXMgaXMgYSBQSFlTX0FERFJfVF82NEJJVCBrZXJu ZWwsCiAJICogbG9uZyBwb2ludGVycyBpbiBtYXN0ZXIgY29uZmlndXJhdGlvbiByZWdpc3Rlcgog CSAqLwotCWNscnNldGJpdHNfYmUzMigmY3RybC0+bWNyLCBNQ0ZHUl9BV0NBQ0hFX01BU0sgfCBN Q0ZHUl9BUkNBQ0hFX01BU0ssCisJY2xyc2V0Yml0c18zMigmY3RybC0+bWNyLCBNQ0ZHUl9BV0NB Q0hFX01BU0sgfCBNQ0ZHUl9BUkNBQ0hFX01BU0ssCiAJCQlNQ0ZHUl9BV0NBQ0hFX0NBQ0ggfCBN Q0ZHUl9BUkNBQ0hFX01BU0sgfAogCQkJTUNGR1JfV0RFTkFCTEUgfCAoc2l6ZW9mKGRtYV9hZGRy X3QpID09IHNpemVvZih1NjQpID8KIAkJCQkJICBNQ0ZHUl9MT05HX1BUUiA6IDApKTsKQEAgLTQx Miw3ICs0MTksNyBAQCBzdGF0aWMgaW50IGNhYW1fcHJvYmUoc3RydWN0IGRldmljZV9kICpkZXYp CiAJICogIFJlYWQgdGhlIENvbXBpbGUgVGltZSBwYXJhbXRlcnMgYW5kIFNDRkdSIHRvIGRldGVy bWluZQogCSAqIGlmIFZpcnR1YWxpemF0aW9uIGlzIGVuYWJsZWQgZm9yIHRoaXMgcGxhdGZvcm0K IAkgKi8KLQlzY2ZnciA9IHJlYWRsKCZjdHJsLT5zY2Zncik7CisJc2NmZ3IgPSByZF9yZWczMigm Y3RybC0+c2NmZ3IpOwogCiAJY3RybHByaXYtPnZpcnRfZW4gPSAwOwogCWlmIChjb21wX3BhcmFt cyAmIENUUFJfTVNfVklSVF9FTl9JTkNMKSB7CkBAIC00MzAsOSArNDM3LDkgQEAgc3RhdGljIGlu dCBjYWFtX3Byb2JlKHN0cnVjdCBkZXZpY2VfZCAqZGV2KQogCX0KIAogCWlmIChjdHJscHJpdi0+ dmlydF9lbiA9PSAxKQotCQlzZXRiaXRzMzIoJmN0cmwtPmpyc3RhcnQsIEpSU1RBUlRfSlIwX1NU QVJUIHwKLQkJCSAgSlJTVEFSVF9KUjFfU1RBUlQgfCBKUlNUQVJUX0pSMl9TVEFSVCB8Ci0JCQkg IEpSU1RBUlRfSlIzX1NUQVJUKTsKKwkJY2xyc2V0Yml0c18zMigmY3RybC0+anJzdGFydCwgMCwg SlJTVEFSVF9KUjBfU1RBUlQgfAorCQkJICAgICAgSlJTVEFSVF9KUjFfU1RBUlQgfCBKUlNUQVJU X0pSMl9TVEFSVCB8CisJCQkgICAgICBKUlNUQVJUX0pSM19TVEFSVCk7CiAKIAkvKgogCSAqIEVS UkFUQTogIG14NiBkZXZpY2VzIGhhdmUgYW4gaXNzdWUgd2hlcmVpbiBBWEkgYnVzIHRyYW5zYWN0 aW9ucwpAQCAtNDQzLDggKzQ1MCw4IEBAIHN0YXRpYyBpbnQgY2FhbV9wcm9iZShzdHJ1Y3QgZGV2 aWNlX2QgKmRldikKIAkgKiB0byBhIGRlcHRoIG9mIDEgKGZyb20gaXQncyBkZWZhdWx0IG9mIDQp IHRvIHByZWNsdWRlIHRoaXMgc2l0dWF0aW9uCiAJICogZnJvbSBvY2N1cnJpbmcuCiAJICovCi0J d3JpdGVsKChyZWFkbCgmY3RybC0+bWNyKSAmIH4oTUNGR1JfQVhJUElQRV9NQVNLKSkgfAotCSAg ICAgICAoKDEgPDwgTUNGR1JfQVhJUElQRV9TSElGVCkgJiBNQ0ZHUl9BWElQSVBFX01BU0spLCAm Y3RybC0+bWNyKTsKKwl3cl9yZWczMigmY3RybC0+bWNyLCAocmRfcmVnMzIoJmN0cmwtPm1jcikg JiB+KE1DRkdSX0FYSVBJUEVfTUFTSykpIHwKKwkJCSgoMSA8PCBNQ0ZHUl9BWElQSVBFX1NISUZU KSAmIE1DRkdSX0FYSVBJUEVfTUFTSykpOwogCiAJLyoKIAkgKiBEZXRlY3QgYW5kIGVuYWJsZSBK b2JScwpAQCAtNDg3LDE1ICs0OTQsMTMgQEAgc3RhdGljIGludCBjYWFtX3Byb2JlKHN0cnVjdCBk ZXZpY2VfZCAqZGV2KQogCX0KIAogCS8qIENoZWNrIHRvIHNlZSBpZiBRSSBwcmVzZW50LiBJZiBz bywgZW5hYmxlICovCi0JY3RybHByaXYtPnFpX3ByZXNlbnQgPQotCQkJISEocmVhZGwoJmN0cmwt PnBlcmZtb24uY29tcF9wYXJtc19tcykgJgotCQkJICAgQ1RQUl9NU19RSV9NQVNLKTsKKwljdHJs cHJpdi0+cWlfcHJlc2VudCA9ICEhKGNvbXBfcGFyYW1zICYgQ1RQUl9NU19RSV9NQVNLKTsKIAlp ZiAoY3RybHByaXYtPnFpX3ByZXNlbnQpIHsKIAkJY3RybHByaXYtPnFpID0gKHN0cnVjdCBjYWFt X3F1ZXVlX2lmIF9fZm9yY2UgKikKIAkJCSAgICAgICAoKHVpbnQ4X3QgKiljdHJsICsKIAkJCQkg QkxPQ0tfT0ZGU0VUICogUUlfQkxPQ0tfTlVNQkVSKTsKIAkJLyogVGhpcyBpcyBhbGwgdGhhdCdz IHJlcXVpcmVkIHRvIHBoeXNpY2FsbHkgZW5hYmxlIFFJICovCi0JCXdyaXRlbChRSUNUTF9EUUVO LCAmY3RybHByaXYtPnFpLT5xaV9jb250cm9sX2xvKTsKKwkJd3JfcmVnMzIoJmN0cmxwcml2LT5x aS0+cWlfY29udHJvbF9sbywgUUlDVExfRFFFTik7CiAJfQogCiAJLyogSWYgbm8gUUkgYW5kIG5v IHJpbmdzIHNwZWNpZmllZCwgcXVpdCBhbmQgZ28gaG9tZSAqLwpAQCAtNTA1LDcgKzUxMCw3IEBA IHN0YXRpYyBpbnQgY2FhbV9wcm9iZShzdHJ1Y3QgZGV2aWNlX2QgKmRldikKIAkJcmV0dXJuIC1F Tk9NRU07CiAJfQogCi0JY2hhX3ZpZF9scyA9IHJlYWRsKCZjdHJsLT5wZXJmbW9uLmNoYV9pZF9s cyk7CisJY2hhX3ZpZF9scyA9IHJkX3JlZzMyKCZjdHJsLT5wZXJmbW9uLmNoYV9pZF9scyk7CiAK IAkvKgogCSAqIElmIFNFQyBoYXMgUk5HIHZlcnNpb24gPj0gNCBhbmQgUk5HIHN0YXRlIGhhbmRs ZSBoYXMgbm90IGJlZW4KQEAgLTUxMyw3ICs1MTgsNyBAQCBzdGF0aWMgaW50IGNhYW1fcHJvYmUo c3RydWN0IGRldmljZV9kICpkZXYpCiAJICovCiAJaWYgKChjaGFfdmlkX2xzICYgQ0hBX0lEX0xT X1JOR19NQVNLKSA+PiBDSEFfSURfTFNfUk5HX1NISUZUID49IDQpIHsKIAkJY3RybHByaXYtPnJu ZzRfc2hfaW5pdCA9Ci0JCQlyZWFkbCgmY3RybC0+cjR0c3RbMF0ucmRzdGEpOworCQkJcmRfcmVn MzIoJmN0cmwtPnI0dHN0WzBdLnJkc3RhKTsKIAkJLyoKIAkJICogSWYgdGhlIHNlY3VyZSBrZXlz IChUREtFSywgSkRLRUssIFREU0spLCB3ZXJlIGFscmVhZHkKIAkJICogZ2VuZXJhdGVkLCBzaWdu YWwgdGhpcyB0byB0aGUgZnVuY3Rpb24gdGhhdCBpcyBpbnN0YW50aWF0aW5nCkBAIC01MjQsNyAr NTI5LDcgQEAgc3RhdGljIGludCBjYWFtX3Byb2JlKHN0cnVjdCBkZXZpY2VfZCAqZGV2KQogCQlj dHJscHJpdi0+cm5nNF9zaF9pbml0ICY9IFJEU1RBX0lGTUFTSzsKIAkJZG8gewogCQkJaW50IGlu c3RfaGFuZGxlcyA9Ci0JCQkJcmVhZGwoJmN0cmwtPnI0dHN0WzBdLnJkc3RhKSAmIFJEU1RBX0lG TUFTSzsKKwkJCQlyZF9yZWczMigmY3RybC0+cjR0c3RbMF0ucmRzdGEpICYgUkRTVEFfSUZNQVNL OwogCQkJLyoKIAkJCSAqIElmIGVpdGhlciBTSCB3ZXJlIGluc3RhbnRpYXRlZCBieSBzb21lYm9k eSBlbHNlCiAJCQkgKiAoZS5nLiB1LWJvb3QpIHRoZW4gaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBl bnRyb3B5CkBAIC01NjAsNyArNTY1LDcgQEAgc3RhdGljIGludCBjYWFtX3Byb2JlKHN0cnVjdCBk ZXZpY2VfZCAqZGV2KQogCQljdHJscHJpdi0+cm5nNF9zaF9pbml0ID0gfmN0cmxwcml2LT5ybmc0 X3NoX2luaXQgJiBSRFNUQV9JRk1BU0s7CiAKIAkJLyogRW5hYmxlIFJEQiBiaXQgc28gdGhhdCBS Tkcgd29ya3MgZmFzdGVyICovCi0JCXNldGJpdHMzMigmY3RybC0+c2NmZ3IsIFNDRkdSX1JEQkVO QUJMRSk7CisJCWNscnNldGJpdHNfMzIoJmN0cmwtPnNjZmdyLCAwLCBTQ0ZHUl9SREJFTkFCTEUp OwogCX0KIAogCWlmIChJU19FTkFCTEVEKENPTkZJR19DUllQVE9fREVWX0ZTTF9DQUFNX1JORykp IHsKQEAgLTU3Myw4ICs1NzgsOCBAQCBzdGF0aWMgaW50IGNhYW1fcHJvYmUoc3RydWN0IGRldmlj ZV9kICpkZXYpCiAJfQogCiAJLyogTk9URTogUlRJQyBkZXRlY3Rpb24gb3VnaHQgdG8gZ28gaGVy ZSwgYXJvdW5kIFNpIHRpbWUgKi8KLQljYWFtX2lkID0gKHU2NClyZWFkbCgmY3RybC0+cGVyZm1v bi5jYWFtX2lkX21zKSA8PCAzMiB8Ci0JCSAgKHU2NClyZWFkbCgmY3RybC0+cGVyZm1vbi5jYWFt X2lkX2xzKTsKKwljYWFtX2lkID0gKHU2NClyZF9yZWczMigmY3RybC0+cGVyZm1vbi5jYWFtX2lk X21zKSA8PCAzMiB8CisJCSAgKHU2NClyZF9yZWczMigmY3RybC0+cGVyZm1vbi5jYWFtX2lkX2xz KTsKIAogCS8qIFJlcG9ydCAiYWxpdmUiIGZvciBkZXZlbG9wZXIgdG8gc2VlICovCiAJZGV2X2Ri ZyhkZXYsICJkZXZpY2UgSUQgPSAweCUwMTZsbHggKEVyYSAlZClcbiIsIGNhYW1faWQsCmRpZmYg LS1naXQgYS9kcml2ZXJzL2NyeXB0by9jYWFtL2Rlc2MuaCBiL2RyaXZlcnMvY3J5cHRvL2NhYW0v ZGVzYy5oCmluZGV4IGExMmViODYwMy4uZTk2NGE1YTkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Ny eXB0by9jYWFtL2Rlc2MuaAorKysgYi9kcml2ZXJzL2NyeXB0by9jYWFtL2Rlc2MuaApAQCAtMzAs OCArMzAsNyBAQCBzdHJ1Y3Qgc2VjNF9zZ19lbnRyeSB7CiAJdTMyIHB0cjsKICNlbmRpZgogCXUz MiBsZW47Ci0JdTE2IGJ1Zl9wb29sX2lkOwotCXUxNiBvZmZzZXQ7CisJdTMyIGJwaWRfb2Zmc2V0 OwogfTsKIAogLyogTWF4IHNpemUgb2YgYW55IENBQU0gZGVzY3JpcHRvciBpbiAzMi1iaXQgd29y ZHMsIGluY2x1c2l2ZSBvZiBoZWFkZXIgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3J5cHRvL2Nh YW0vZGVzY19jb25zdHIuaCBiL2RyaXZlcnMvY3J5cHRvL2NhYW0vZGVzY19jb25zdHIuaAppbmRl eCBjMDZlZTczNGQuLmNmODZjYzgzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcnlwdG8vY2FhbS9k ZXNjX2NvbnN0ci5oCisrKyBiL2RyaXZlcnMvY3J5cHRvL2NhYW0vZGVzY19jb25zdHIuaApAQCAt NSw2ICs1LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiZGVzYy5oIgorI2luY2x1ZGUgInJlZ3MuaCIK IAogI2RlZmluZSBJTU1FRElBVEUgKDEgPDwgMjMpCiAjZGVmaW5lIENBQU1fQ01EX1NaIHNpemVv Zih1MzIpCkBAIC0zMiw3ICszMyw3IEBACiAKIHN0YXRpYyBpbmxpbmUgaW50IGRlc2NfbGVuKHUz MiAqZGVzYykKIHsKLQlyZXR1cm4gKmRlc2MgJiBIRFJfREVTQ0xFTl9NQVNLOworCXJldHVybiBj YWFtMzJfdG9fY3B1KCpkZXNjKSAmIEhEUl9ERVNDTEVOX01BU0s7CiB9CiAKIHN0YXRpYyBpbmxp bmUgaW50IGRlc2NfYnl0ZXModm9pZCAqZGVzYykKQEAgLTUyLDcgKzUzLDcgQEAgc3RhdGljIGlu bGluZSB2b2lkICpzaF9kZXNjX3BkYih1MzIgKmRlc2MpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBp bml0X2Rlc2ModTMyICpkZXNjLCB1MzIgb3B0aW9ucykKIHsKLQkqZGVzYyA9IChvcHRpb25zIHwg SERSX09ORSkgKyAxOworCSpkZXNjID0gY3B1X3RvX2NhYW0zMigob3B0aW9ucyB8IEhEUl9PTkUp ICsgMSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3NoX2Rlc2ModTMyICpkZXNjLCB1 MzIgb3B0aW9ucykKQEAgLTc4LDkgKzc5LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRf cHRyKHUzMiAqZGVzYywgZG1hX2FkZHJfdCBwdHIpCiB7CiAJZG1hX2FkZHJfdCAqb2Zmc2V0ID0g KGRtYV9hZGRyX3QgKilkZXNjX2VuZChkZXNjKTsKIAotCSpvZmZzZXQgPSBwdHI7CisJKm9mZnNl dCA9IGNwdV90b19jYWFtX2RtYShwdHIpOwogCi0JKCpkZXNjKSArPSBDQUFNX1BUUl9TWiAvIENB QU1fQ01EX1NaOworCSgqZGVzYykgPSBjcHVfdG9fY2FhbTMyKGNhYW0zMl90b19jcHUoKmRlc2Mp ICsKKwkJCQlDQUFNX1BUUl9TWiAvIENBQU1fQ01EX1NaKTsKIH0KIAogc3RhdGljIGlubGluZSB2 b2lkIGluaXRfam9iX2Rlc2Nfc2hhcmVkKHUzMiAqZGVzYywgZG1hX2FkZHJfdCBwdHIsIGludCBs ZW4sCkBAIC05OSwxNiArMTAxLDE3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRfZGF0YSh1 MzIgKmRlc2MsIHZvaWQgKmRhdGEsIGludCBsZW4pCiAJaWYgKGxlbikgLyogYXZvaWQgc3BhcnNl IHdhcm5pbmc6IG1lbWNweSB3aXRoIGJ5dGUgY291bnQgb2YgMCAqLwogCQltZW1jcHkob2Zmc2V0 LCBkYXRhLCBsZW4pOwogCi0JKCpkZXNjKSArPSAobGVuICsgQ0FBTV9DTURfU1ogLSAxKSAvIENB QU1fQ01EX1NaOworCSgqZGVzYykgPSBjcHVfdG9fY2FhbTMyKGNhYW0zMl90b19jcHUoKmRlc2Mp ICsKKwkJCQkobGVuICsgQ0FBTV9DTURfU1ogLSAxKSAvIENBQU1fQ01EX1NaKTsKIH0KIAogc3Rh dGljIGlubGluZSB2b2lkIGFwcGVuZF9jbWQodTMyICpkZXNjLCB1MzIgY29tbWFuZCkKIHsKIAl1 MzIgKmNtZCA9IGRlc2NfZW5kKGRlc2MpOwogCi0JKmNtZCA9IGNvbW1hbmQ7CisJKmNtZCA9IGNw dV90b19jYWFtMzIoY29tbWFuZCk7CiAKLQkoKmRlc2MpKys7CisJKCpkZXNjKSA9IGNwdV90b19j YWFtMzIoY2FhbTMyX3RvX2NwdSgqZGVzYykgKyAxKTsKIH0KIAogI2RlZmluZSBhcHBlbmRfdTMy IGFwcGVuZF9jbWQKQEAgLTExNywxNiArMTIwLDIyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBl bmRfdTY0KHUzMiAqZGVzYywgdTY0IGRhdGEpCiB7CiAJdTMyICpvZmZzZXQgPSBkZXNjX2VuZChk ZXNjKTsKIAotCSpvZmZzZXQgPSB1cHBlcl8zMl9iaXRzKGRhdGEpOwotCSooKytvZmZzZXQpID0g bG93ZXJfMzJfYml0cyhkYXRhKTsKKwkvKiBPbmx5IDMyLWJpdCBhbGlnbm1lbnQgaXMgZ3VhcmFu dGVlZCBpbiBkZXNjcmlwdG9yIGJ1ZmZlciAqLworCWlmIChjYWFtX2xpdHRsZV9lbmQpIHsKKwkJ Km9mZnNldCA9IGNwdV90b19jYWFtMzIobG93ZXJfMzJfYml0cyhkYXRhKSk7CisJCSooKytvZmZz ZXQpID0gY3B1X3RvX2NhYW0zMih1cHBlcl8zMl9iaXRzKGRhdGEpKTsKKwl9IGVsc2UgeworCQkq b2Zmc2V0ID0gY3B1X3RvX2NhYW0zMih1cHBlcl8zMl9iaXRzKGRhdGEpKTsKKwkJKigrK29mZnNl dCkgPSBjcHVfdG9fY2FhbTMyKGxvd2VyXzMyX2JpdHMoZGF0YSkpOworCX0KIAotCSgqZGVzYykg Kz0gMjsKKwkoKmRlc2MpID0gY3B1X3RvX2NhYW0zMihjYWFtMzJfdG9fY3B1KCpkZXNjKSArIDIp OwogfQogCiAvKiBXcml0ZSBjb21tYW5kIHdpdGhvdXQgYWZmZWN0aW5nIGhlYWRlciwgYW5kIHJl dHVybiBwb2ludGVyIHRvIG5leHQgd29yZCAqLwogc3RhdGljIGlubGluZSB1MzIgKndyaXRlX2Nt ZCh1MzIgKmRlc2MsIHUzMiBjb21tYW5kKQogewotCSpkZXNjID0gY29tbWFuZDsKKwkqZGVzYyA9 IGNwdV90b19jYWFtMzIoY29tbWFuZCk7CiAKIAlyZXR1cm4gZGVzYyArIDE7CiB9CkBAIC0xNjgs MTQgKzE3NywxNyBAQCBBUFBFTkRfQ01EX1JFVChtb3ZlLCBNT1ZFKQogCiBzdGF0aWMgaW5saW5l IHZvaWQgc2V0X2p1bXBfdGd0X2hlcmUodTMyICpkZXNjLCB1MzIgKmp1bXBfY21kKQogewotCSpq dW1wX2NtZCA9ICpqdW1wX2NtZCB8IChkZXNjX2xlbihkZXNjKSAtIChqdW1wX2NtZCAtIGRlc2Mp KTsKKwkqanVtcF9jbWQgPSBjcHVfdG9fY2FhbTMyKGNhYW0zMl90b19jcHUoKmp1bXBfY21kKSB8 CisJCQkJKGRlc2NfbGVuKGRlc2MpIC0gKGp1bXBfY21kIC0gZGVzYykpKTsKIH0KIAogc3RhdGlj IGlubGluZSB2b2lkIHNldF9tb3ZlX3RndF9oZXJlKHUzMiAqZGVzYywgdTMyICptb3ZlX2NtZCkK IHsKLQkqbW92ZV9jbWQgJj0gfk1PVkVfT0ZGU0VUX01BU0s7Ci0JKm1vdmVfY21kID0gKm1vdmVf Y21kIHwgKChkZXNjX2xlbihkZXNjKSA8PCAoTU9WRV9PRkZTRVRfU0hJRlQgKyAyKSkgJgotCQkJ CSBNT1ZFX09GRlNFVF9NQVNLKTsKKwl1MzIgdmFsID0gY2FhbTMyX3RvX2NwdSgqbW92ZV9jbWQp OworCisJdmFsICY9IH5NT1ZFX09GRlNFVF9NQVNLOworCXZhbCB8PSAoZGVzY19sZW4oZGVzYykg PDwgKE1PVkVfT0ZGU0VUX1NISUZUICsgMikpICYgTU9WRV9PRkZTRVRfTUFTSzsKKwkqbW92ZV9j bWQgPSBjcHVfdG9fY2FhbTMyKHZhbCk7CiB9CiAKICNkZWZpbmUgQVBQRU5EX0NNRChjbWQsIG9w KSBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NyeXB0by9jYWFtL2pyLmMgYi9kcml2ZXJzL2NyeXB0 by9jYWFtL2pyLmMKaW5kZXggOGYxNjlkNDA2Li44NDM5NmU0MWUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvY3J5cHRvL2NhYW0vanIuYworKysgYi9kcml2ZXJzL2NyeXB0by9jYWFtL2pyLmMKQEAgLTIx LDQzICsyMSwxNiBAQAogI2luY2x1ZGUgImRlc2MuaCIKICNpbmNsdWRlICJpbnRlcm4uaCIKIAot LyoKLSAqIFRoZSBETUEgYWRkcmVzcyByZWdpc3RlcnMgaW4gdGhlIEpSIGFyZSBhIHBhaXIgb2Yg MzItYml0IHJlZ2lzdGVycy4KLSAqIFRoZSBsYXlvdXQgaXM6Ci0gKgotICogICAgYmFzZSArIDB4 MDAwMCA6IG1vc3Qtc2lnbmlmaWNhbnQgMzIgYml0cwotICogICAgYmFzZSArIDB4MDAwNCA6IGxl YXN0LXNpZ25pZmljYW50IDMyIGJpdHMKLSAqCi0gKiBUaGUgMzItYml0IHZlcnNpb24gb2YgdGhp cyBjb3JlIHRoZXJlZm9yZSBoYXMgdG8gd3JpdGUgdG8gYmFzZSArIDB4MDAwNAotICogdG8gc2V0 IHRoZSAzMi1iaXQgd2lkZSBETUEgYWRkcmVzcy4gVGhpcyBzZWVtcyB0byBiZSBpbmRlcGVuZGVu dCBvZiB0aGUKLSAqIGVuZGlhbm5lc3Mgb2YgdGhlIHdyaXR0ZW4vcmVhZCBkYXRhLgotICovCi0K LSNkZWZpbmUgUkVHNjRfTVMzMihyZWcpICgodTMyIF9faW9tZW0gKikocmVnKSkKLSNkZWZpbmUg UkVHNjRfTFMzMihyZWcpICgodTMyIF9faW9tZW0gKikocmVnKSArIDEpCi0KLXN0YXRpYyBpbmxp bmUgdm9pZCB3cl9yZWc2NCh1NjQgX19pb21lbSAqcmVnLCB1NjQgZGF0YSkKLXsKLQl3cml0ZWwo ZGF0YSA+PiAzMiwgUkVHNjRfTVMzMihyZWcpKTsKLQl3cml0ZWwoZGF0YSwgUkVHNjRfTFMzMihy ZWcpKTsKLX0KLQotc3RhdGljIGlubGluZSB1NjQgcmRfcmVnNjQodTY0IF9faW9tZW0gKnJlZykK LXsKLQlyZXR1cm4gKCh1NjQpcmVhZGwoUkVHNjRfTVMzMihyZWcpKSA8PCAzMiB8Ci0JCSh1NjQp cmVhZGwoUkVHNjRfTFMzMihyZWcpKSk7Ci19Ci0KIHN0YXRpYyBpbnQgY2FhbV9yZXNldF9od19q cihzdHJ1Y3QgZGV2aWNlX2QgKmRldikKIHsKIAlzdHJ1Y3QgY2FhbV9kcnZfcHJpdmF0ZV9qciAq anJwID0gZGV2LT5wcml2OwogCXVpbnQ2NF90IHN0YXJ0OwogCiAJLyogaW5pdGlhdGUgZmx1c2gg KHJlcXVpcmVkIHByaW9yIHRvIHJlc2V0KSAqLwotCXdyaXRlbChKUkNSX1JFU0VULCAmanJwLT5y cmVncy0+anJjb21tYW5kKTsKKwl3cl9yZWczMigmanJwLT5ycmVncy0+anJjb21tYW5kLCBKUkNS X1JFU0VUKTsKIAogCXN0YXJ0ID0gZ2V0X3RpbWVfbnMoKTsKLQl3aGlsZSAoKHJlYWRsKCZqcnAt PnJyZWdzLT5qcmludHN0YXR1cykgJiBKUklOVF9FUlJfSEFMVF9NQVNLKSA9PQorCXdoaWxlICgo cmRfcmVnMzIoJmpycC0+cnJlZ3MtPmpyaW50c3RhdHVzKSAmIEpSSU5UX0VSUl9IQUxUX01BU0sp ID09CiAJICAgICAgICBKUklOVF9FUlJfSEFMVF9JTlBST0dSRVNTKSB7CiAJCWlmIChpc190aW1l b3V0KHN0YXJ0LCAxMDAgKiBNU0VDT05EKSkgewogCQkJZGV2X2VycihkZXYsICJqb2IgcmluZyAl ZCB0aW1lZCBvdXQgb24gZmx1c2hcbiIsCkBAIC02NywxMCArNDAsMTAgQEAgc3RhdGljIGludCBj YWFtX3Jlc2V0X2h3X2pyKHN0cnVjdCBkZXZpY2VfZCAqZGV2KQogCX0KIAogCS8qIGluaXRpYXRl IHJlc2V0ICovCi0Jd3JpdGVsKEpSQ1JfUkVTRVQsICZqcnAtPnJyZWdzLT5qcmNvbW1hbmQpOwor CXdyX3JlZzMyKCZqcnAtPnJyZWdzLT5qcmNvbW1hbmQsIEpSQ1JfUkVTRVQpOwogCiAJc3RhcnQg PSBnZXRfdGltZV9ucygpOwotCXdoaWxlIChyZWFkbCgmanJwLT5ycmVncy0+anJjb21tYW5kKSAm IEpSQ1JfUkVTRVQpIHsKKwl3aGlsZSAocmRfcmVnMzIoJmpycC0+cnJlZ3MtPmpyY29tbWFuZCkg JiBKUkNSX1JFU0VUKSB7CiAJCWlmIChpc190aW1lb3V0KHN0YXJ0LCAxMDAgKiBNU0VDT05EKSkg ewogCQkJZGV2X2VycihkZXYsICJqb2IgcmluZyAlZCB0aW1lZCBvdXQgb24gcmVzZXRcbiIsCiAJ CQkJanJwLT5yaWR4KTsKQEAgLTkwLDcgKzYzLDcgQEAgc3RhdGljIGludCBjYWFtX2pyX2RlcXVl dWUoc3RydWN0IGNhYW1fZHJ2X3ByaXZhdGVfanIgKmpycCkKIAl2b2lkICp1c2VyYXJnOwogCWlu dCBmb3VuZDsKIAotCXdoaWxlIChyZWFkbCgmanJwLT5ycmVncy0+b3V0cmluZ191c2VkKSkgewor CXdoaWxlIChyZF9yZWczMigmanJwLT5ycmVncy0+b3V0cmluZ191c2VkKSkgewogCQloZWFkID0g anJwLT5oZWFkOwogCiAJCXN3X2lkeCA9IHRhaWwgPSBqcnAtPnRhaWw7CkBAIC0xMDIsNyArNzUs NyBAQCBzdGF0aWMgaW50IGNhYW1fanJfZGVxdWV1ZShzdHJ1Y3QgY2FhbV9kcnZfcHJpdmF0ZV9q ciAqanJwKQogCQkJc3dfaWR4ID0gKHRhaWwgKyBpKSAmIChKT0JSX0RFUFRIIC0gMSk7CiAKIAkJ CWlmIChqcnAtPm91dHJpbmdbaHdfaWR4XS5kZXNjID09Ci0JCQkgICAganJwLT5lbnRpbmZvW3N3 X2lkeF0uZGVzY19hZGRyX2RtYSkgeworCQkJICAgIGNhYW1fZG1hX3RvX2NwdShqcnAtPmVudGlu Zm9bc3dfaWR4XS5kZXNjX2FkZHJfZG1hKSkgewogCQkJCWZvdW5kID0gMTsKIAkJCQlicmVhazsg LyogZm91bmQgKi8KIAkJCX0KQEAgLTEyMCwxMiArOTMsMTIgQEAgc3RhdGljIGludCBjYWFtX2py X2RlcXVldWUoc3RydWN0IGNhYW1fZHJ2X3ByaXZhdGVfanIgKmpycCkKIAkJdXNlcmNhbGwgPSBq cnAtPmVudGluZm9bc3dfaWR4XS5jYWxsYms7CiAJCXVzZXJhcmcgPSBqcnAtPmVudGluZm9bc3df aWR4XS5jYmthcmc7CiAJCXVzZXJkZXNjID0ganJwLT5lbnRpbmZvW3N3X2lkeF0uZGVzY19hZGRy X3ZpcnQ7Ci0JCXVzZXJzdGF0dXMgPSBqcnAtPm91dHJpbmdbaHdfaWR4XS5qcnN0YXR1czsKKwkJ dXNlcnN0YXR1cyA9IGNhYW0zMl90b19jcHUoanJwLT5vdXRyaW5nW2h3X2lkeF0uanJzdGF0dXMp OwogCiAJCWJhcnJpZXIoKTsKIAogCQkvKiBzZXQgZG9uZSAqLwotCQl3cml0ZWwoMSwgJmpycC0+ cnJlZ3MtPm91dHJpbmdfcm12ZCk7CisJCXdyX3JlZzMyKCZqcnAtPnJyZWdzLT5vdXRyaW5nX3Jt dmQsIDEpOwogCiAJCWpycC0+b3V0X3JpbmdfcmVhZF9pbmRleCA9IChqcnAtPm91dF9yaW5nX3Jl YWRfaW5kZXggKyAxKSAmCiAJCQkJCSAgIChKT0JSX0RFUFRIIC0gMSk7CkBAIC0xNTgsNyArMTMx LDcgQEAgc3RhdGljIGludCBjYWFtX2pyX2ludGVycnVwdChzdHJ1Y3QgY2FhbV9kcnZfcHJpdmF0 ZV9qciAqanJwKQogCXUzMiBpcnFzdGF0ZTsKIAogCXN0YXJ0ID0gZ2V0X3RpbWVfbnMoKTsKLQl3 aGlsZSAoIShpcnFzdGF0ZSA9IHJlYWRsKCZqcnAtPnJyZWdzLT5qcmludHN0YXR1cykpKSB7CisJ d2hpbGUgKCEoaXJxc3RhdGUgPSByZF9yZWczMigmanJwLT5ycmVncy0+anJpbnRzdGF0dXMpKSkg ewogCQlpZiAoaXNfdGltZW91dChzdGFydCwgMTAwICogTVNFQ09ORCkpIHsKIAkJCWRldl9lcnIo anJwLT5kZXYsICJ0aW1lb3V0IHdhaXRpbmcgZm9yIGludGVycnVwdFxuIik7CiAJCQlyZXR1cm4g LUVUSU1FRE9VVDsKQEAgLTE3Niw3ICsxNDksNyBAQCBzdGF0aWMgaW50IGNhYW1fanJfaW50ZXJy dXB0KHN0cnVjdCBjYWFtX2Rydl9wcml2YXRlX2pyICpqcnApCiAJfQogCiAJLyogSGF2ZSB2YWxp ZCBpbnRlcnJ1cHQgYXQgdGhpcyBwb2ludCwganVzdCBBQ0sgYW5kIHRyaWdnZXIgKi8KLQl3cml0 ZWwoaXJxc3RhdGUsICZqcnAtPnJyZWdzLT5qcmludHN0YXR1cyk7CisJd3JfcmVnMzIoJmpycC0+ cnJlZ3MtPmpyaW50c3RhdHVzLCBpcnFzdGF0ZSk7CiAKIAlyZXR1cm4gY2FhbV9qcl9kZXF1ZXVl KGpycCk7CiB9CkBAIC0yMTgsNyArMTkxLDcgQEAgaW50IGNhYW1fanJfZW5xdWV1ZShzdHJ1Y3Qg ZGV2aWNlX2QgKmRldiwgdTMyICpkZXNjLAogCXN0cnVjdCBjYWFtX2pyZW50cnlfaW5mbyAqaGVh ZF9lbnRyeTsKIAlpbnQgaGVhZCwgdGFpbCwgZGVzY19zaXplOwogCi0JZGVzY19zaXplID0gKCpk ZXNjICYgSERSX0pEX0xFTkdUSF9NQVNLKSAqIHNpemVvZih1MzIpOworCWRlc2Nfc2l6ZSA9IChj YWFtMzJfdG9fY3B1KCpkZXNjKSAmIEhEUl9KRF9MRU5HVEhfTUFTSykgKiBzaXplb2YodTMyKTsK IAogCWlmICghZGV2LT5wcml2KQogCQlyZXR1cm4gLUVOT0RFVjsKQEAgLTIyNyw3ICsyMDAsNyBA QCBpbnQgY2FhbV9qcl9lbnF1ZXVlKHN0cnVjdCBkZXZpY2VfZCAqZGV2LCB1MzIgKmRlc2MsCiAK IAloZWFkID0ganJwLT5oZWFkOwogCXRhaWwgPSBqcnAtPnRhaWw7Ci0JaWYgKCFyZWFkbCgmanJw LT5ycmVncy0+aW5wcmluZ19hdmFpbCkgfHwKKwlpZiAoIXJkX3JlZzMyKCZqcnAtPnJyZWdzLT5p bnByaW5nX2F2YWlsKSB8fAogCSAgICBDSVJDX1NQQUNFKGhlYWQsIHRhaWwsIEpPQlJfREVQVEgp IDw9IDApIHsKIAkJcmV0dXJuIC1FQlVTWTsKIAl9CkBAIC0yNDIsNyArMjE1LDggQEAgaW50IGNh YW1fanJfZW5xdWV1ZShzdHJ1Y3QgZGV2aWNlX2QgKmRldiwgdTMyICpkZXNjLAogCWlmICghanJw LT5pbnByaW5nKQogCQlyZXR1cm4gLUVJTzsKIAotCWpycC0+aW5wcmluZ1tqcnAtPmlucF9yaW5n X3dyaXRlX2luZGV4XSA9IChkbWFfYWRkcl90KWRlc2M7CisJanJwLT5pbnByaW5nW2pycC0+aW5w X3Jpbmdfd3JpdGVfaW5kZXhdID0KKwkJY3B1X3RvX2NhYW1fZG1hKChkbWFfYWRkcl90KWRlc2Mp OwogCiAJYmFycmllcigpOwogCkBAIC0yNTEsOSArMjI1LDkgQEAgaW50IGNhYW1fanJfZW5xdWV1 ZShzdHJ1Y3QgZGV2aWNlX2QgKmRldiwgdTMyICpkZXNjLAogCWpycC0+aGVhZCA9IChoZWFkICsg MSkgJiAoSk9CUl9ERVBUSCAtIDEpOwogCiAJYmFycmllcigpOwotCXdyaXRlbCgxLCAmanJwLT5y cmVncy0+aW5wcmluZ19qb2JhZGQpOworCXdyX3JlZzMyKCZqcnAtPnJyZWdzLT5pbnByaW5nX2pv YmFkZCwgMSk7CiAKLQljbHJiaXRzMzIoJmpycC0+cnJlZ3MtPnJjb25maWdfbG8sIEpSQ0ZHX0lN U0spOworCWNscnNldGJpdHNfMzIoJmpycC0+cnJlZ3MtPnJjb25maWdfbG8sIEpSQ0ZHX0lNU0ss IDApOwogCiAJcmV0dXJuIGNhYW1fanJfaW50ZXJydXB0KGpycCk7CiB9CkBAIC0zMDEsOCArMjc1 LDggQEAgc3RhdGljIGludCBjYWFtX2pyX2luaXQoc3RydWN0IGRldmljZV9kICpkZXYpCiAKIAl3 cl9yZWc2NCgmanJwLT5ycmVncy0+aW5wcmluZ19iYXNlLCBkbWFfaW5wcmluZyk7CiAJd3JfcmVn NjQoJmpycC0+cnJlZ3MtPm91dHJpbmdfYmFzZSwgZG1hX291dHJpbmcpOwotCXdyaXRlbChKT0JS X0RFUFRILCAmanJwLT5ycmVncy0+aW5wcmluZ19zaXplKTsKLQl3cml0ZWwoSk9CUl9ERVBUSCwg JmpycC0+cnJlZ3MtPm91dHJpbmdfc2l6ZSk7CisJd3JfcmVnMzIoJmpycC0+cnJlZ3MtPmlucHJp bmdfc2l6ZSwgSk9CUl9ERVBUSCk7CisJd3JfcmVnMzIoJmpycC0+cnJlZ3MtPm91dHJpbmdfc2l6 ZSwgSk9CUl9ERVBUSCk7CiAKIAlqcnAtPnJpbmdzaXplID0gSk9CUl9ERVBUSDsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9jcnlwdG8vY2FhbS9yZWdzLmggYi9kcml2ZXJzL2NyeXB0by9jYWFtL3Jl Z3MuaAppbmRleCBiOGNhNWUzOTYuLmQ1MGU5YWQ2OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9jcnlw dG8vY2FhbS9yZWdzLmgKKysrIGIvZHJpdmVycy9jcnlwdG8vY2FhbS9yZWdzLmgKQEAgLTEwLDkg KzEwLDExOCBAQAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8aW8uaD4KIAot LyogVGhlc2UgYXJlIGNvbW1vbiBtYWNyb3MgZm9yIFBvd2VyLCBwdXQgaGVyZSBmb3IgQVJNcyAq LwotI2RlZmluZSBzZXRiaXRzMzIoX2FkZHIsIF92KSB3cml0ZWwoKHJlYWRsKF9hZGRyKSB8IChf dikpLCAoX2FkZHIpKQotI2RlZmluZSBjbHJiaXRzMzIoX2FkZHIsIF92KSB3cml0ZWwoKHJlYWRs KF9hZGRyKSAmIH4oX3YpKSwgKF9hZGRyKSkKK2V4dGVybiBib29sIGNhYW1fbGl0dGxlX2VuZDsK KworI2RlZmluZSBjYWFtX3RvX2NwdShsZW4pCQkJCVwKK3N0YXRpYyBpbmxpbmUgdSMjbGVuIGNh YW0jI2xlbiAjIyBfdG9fY3B1KHUjI2xlbiB2YWwpCVwKK3sJCQkJCQkJXAorCWlmIChjYWFtX2xp dHRsZV9lbmQpCQkJCVwKKwkJcmV0dXJuIGxlIyNsZW4gIyMgX3RvX2NwdSh2YWwpOwkJXAorCWVs c2UJCQkJCQlcCisJCXJldHVybiBiZSMjbGVuICMjIF90b19jcHUodmFsKTsJCVwKK30KKworI2Rl ZmluZSBjcHVfdG9fY2FhbShsZW4pCQkJCVwKK3N0YXRpYyBpbmxpbmUgdSMjbGVuIGNwdV90b19j YWFtIyNsZW4odSMjbGVuIHZhbCkJXAorewkJCQkJCQlcCisJaWYgKGNhYW1fbGl0dGxlX2VuZCkJ CQkJXAorCQlyZXR1cm4gY3B1X3RvX2xlIyNsZW4odmFsKTsJCVwKKwllbHNlCQkJCQkJXAorCQly ZXR1cm4gY3B1X3RvX2JlIyNsZW4odmFsKTsJCVwKK30KKworY2FhbV90b19jcHUoMTYpCitjYWFt X3RvX2NwdSgzMikKK2NhYW1fdG9fY3B1KDY0KQorY3B1X3RvX2NhYW0oMTYpCitjcHVfdG9fY2Fh bSgzMikKK2NwdV90b19jYWFtKDY0KQorCitzdGF0aWMgaW5saW5lIHZvaWQgd3JfcmVnMzIodm9p ZCBfX2lvbWVtICpyZWcsIHUzMiBkYXRhKQoreworCWlmIChjYWFtX2xpdHRsZV9lbmQpCisJCWlv d3JpdGUzMihkYXRhLCByZWcpOworCWVsc2UKKwkJaW93cml0ZTMyYmUoZGF0YSwgcmVnKTsKK30K Kworc3RhdGljIGlubGluZSB1MzIgcmRfcmVnMzIodm9pZCBfX2lvbWVtICpyZWcpCit7CisJaWYg KGNhYW1fbGl0dGxlX2VuZCkKKwkJcmV0dXJuIGlvcmVhZDMyKHJlZyk7CisKKwlyZXR1cm4gaW9y ZWFkMzJiZShyZWcpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY2xyc2V0Yml0c18zMih2b2lk IF9faW9tZW0gKnJlZywgdTMyIGNsZWFyLCB1MzIgc2V0KQoreworCWlmIChjYWFtX2xpdHRsZV9l bmQpCisJCWlvd3JpdGUzMigoaW9yZWFkMzIocmVnKSAmIH5jbGVhcikgfCBzZXQsIHJlZyk7CisJ ZWxzZQorCQlpb3dyaXRlMzJiZSgoaW9yZWFkMzJiZShyZWcpICYgfmNsZWFyKSB8IHNldCwgcmVn KTsKK30KKworLyoKKyAqIFRoZSBETUEgYWRkcmVzcyByZWdpc3RlcnMgaW4gdGhlIEpSIGFyZSBh IHBhaXIgb2YgMzItYml0IHJlZ2lzdGVycy4KKyAqIFRoZSBsYXlvdXQgaXM6CisgKgorICogICAg YmFzZSArIDB4MDAwMCA6IG1vc3Qtc2lnbmlmaWNhbnQgMzIgYml0cworICogICAgYmFzZSArIDB4 MDAwNCA6IGxlYXN0LXNpZ25pZmljYW50IDMyIGJpdHMKKyAqCisgKiBUaGUgMzItYml0IHZlcnNp b24gb2YgdGhpcyBjb3JlIHRoZXJlZm9yZSBoYXMgdG8gd3JpdGUgdG8gYmFzZSArIDB4MDAwNAor ICogdG8gc2V0IHRoZSAzMi1iaXQgd2lkZSBETUEgYWRkcmVzcy4gVGhpcyBzZWVtcyB0byBiZSBp bmRlcGVuZGVudCBvZiB0aGUKKyAqIGVuZGlhbm5lc3Mgb2YgdGhlIHdyaXR0ZW4vcmVhZCBkYXRh LgorICovCisKKyNpZmRlZiBDT05GSUdfNjRCSVQKK3N0YXRpYyBpbmxpbmUgdm9pZCB3cl9yZWc2 NCh2b2lkIF9faW9tZW0gKnJlZywgdTY0IGRhdGEpCit7CisJaWYgKGNhYW1fbGl0dGxlX2VuZCkK KwkJaW93cml0ZTY0KGRhdGEsIHJlZyk7CisJZWxzZQorCQlpb3dyaXRlNjRiZShkYXRhLCByZWcp OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcmRfcmVnNjQodm9pZCBfX2lvbWVtICpyZWcpCit7 CisJaWYgKGNhYW1fbGl0dGxlX2VuZCkKKwkJaW9yZWFkNjQocmVnKTsKKwllbHNlCisJCWlvcmVh ZDY0YmUocmVnKTsKK30KKyNlbHNlIC8qIENPTkZJR182NEJJVCAqLworc3RhdGljIGlubGluZSB2 b2lkIHdyX3JlZzY0KHZvaWQgX19pb21lbSAqcmVnLCB1NjQgZGF0YSkKK3sKKwl3cl9yZWczMigo dTMyIF9faW9tZW0gKikocmVnKSwgZGF0YSA+PiAzMik7CisJd3JfcmVnMzIoKHUzMiBfX2lvbWVt ICopKHJlZykgKyAxLCBkYXRhKTsKK30KKworc3RhdGljIGlubGluZSB1NjQgcmRfcmVnNjQodm9p ZCBfX2lvbWVtICpyZWcpCit7CisJcmV0dXJuICgodTY0KXJkX3JlZzMyKCh1MzIgX19pb21lbSAq KShyZWcpKSA8PCAzMiB8CisJCSh1NjQpcmRfcmVnMzIoKHUzMiBfX2lvbWVtICopKHJlZykgKyAx KSk7Cit9CisjZW5kaWYgLyogQ09ORklHXzY0QklUICovCisKK3N0YXRpYyBpbmxpbmUgdTY0IGNw dV90b19jYWFtX2RtYTY0KGRtYV9hZGRyX3QgdmFsdWUpCit7CisJcmV0dXJuICgoKHU2NCljcHVf dG9fY2FhbTMyKGxvd2VyXzMyX2JpdHModmFsdWUpKSA8PCAzMikgfAorCQkgKHU2NCljcHVfdG9f Y2FhbTMyKHVwcGVyXzMyX2JpdHModmFsdWUpKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTY0IGNh YW1fZG1hNjRfdG9fY3B1KHU2NCB2YWx1ZSkKK3sKKwlyZXR1cm4gKCgodTY0KWNhYW0zMl90b19j cHUobG93ZXJfMzJfYml0cyh2YWx1ZSkpIDw8IDMyKSB8CisJCSAodTY0KWNhYW0zMl90b19jcHUo dXBwZXJfMzJfYml0cyh2YWx1ZSkpKTsKK30KKworI2lmZGVmIENPTkZJR19BUkNIX0RNQV9BRERS X1RfNjRCSVQKKyNkZWZpbmUgY3B1X3RvX2NhYW1fZG1hKHZhbHVlKSBjcHVfdG9fY2FhbV9kbWE2 NCh2YWx1ZSkKKyNkZWZpbmUgY2FhbV9kbWFfdG9fY3B1KHZhbHVlKSBjYWFtX2RtYTY0X3RvX2Nw dSh2YWx1ZSkKKyNlbHNlCisjZGVmaW5lIGNwdV90b19jYWFtX2RtYSh2YWx1ZSkgY3B1X3RvX2Nh YW0zMih2YWx1ZSkKKyNkZWZpbmUgY2FhbV9kbWFfdG9fY3B1KHZhbHVlKSBjYWFtMzJfdG9fY3B1 KHZhbHVlKQorI2VuZGlmIC8qIENPTkZJR19BUkNIX0RNQV9BRERSX1RfNjRCSVQgKi8KIAogLyoK ICAqIGpyX291dGVudHJ5CkBAIC0xOTAsNiArMjk5LDggQEAgc3RydWN0IGNhYW1fcGVyZm1vbiB7 CiAJdTMyIGZhdWx0bGlvZG47CS8qIEZBTFIgLSBGYXVsdCBBZGRyZXNzIExJT0ROCSovCiAJdTMy IGZhdWx0ZGV0YWlsOwkvKiBGQURSIC0gRmF1bHQgQWRkciBEZXRhaWwJKi8KIAl1MzIgcnN2ZDM7 CisjZGVmaW5lIENTVEFfUExFTkQJCUJJVCgxMCkKKyNkZWZpbmUgQ1NUQV9BTFRfUExFTkQJCUJJ VCgxOCkKIAl1MzIgc3RhdHVzOwkJLyogQ1NUQSAtIENBQU0gU3RhdHVzICovCiAJdTMyIHNtcGFy dDsJCS8qIFNlY3VyZSBNZW1vcnkgUGFydGl0aW9uIFBhcmFtZXRlcnMgKi8KIAl1MzIgc212aWQ7 CQkvKiBTZWN1cmUgTWVtb3J5IFZlcnNpb24gSUQgKi8KLS0gCjIuMTguMAoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmJhcmVib3ggbWFpbGluZyBsaXN0 CmJhcmVib3hAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2JhcmVib3gK