From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from exchange.timesys.com (mail.timesys.com [65.117.135.102]) by ozlabs.org (Postfix) with ESMTP id 8FE5467A67 for ; Wed, 23 Mar 2005 08:12:34 +1100 (EST) From: Jason McMullan To: linuxppc-embedded Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-BJulNEGbcuD7NMpoWAgM" Date: Tue, 22 Mar 2005 16:12:30 -0500 Message-Id: <1111525951.2987.76.camel@ad.doubleclick.net> Mime-Version: 1.0 Subject: [PATCH] Updated: CPM2 I2C (SDMA and BitBang) List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --=-BJulNEGbcuD7NMpoWAgM Content-Type: multipart/mixed; boundary="=-fmxhV2iNFK/ZH8wRhJOo" --=-fmxhV2iNFK/ZH8wRhJOo Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Updated (thanks to a quick eye by ebs) patch to add=20 CPM2 SDMA and BitBang I2C support to the MPC85xx This patch gets rid of some really stupid cut & paste errors during initialization. --=20 Jason McMullan TimeSys Corporation --=-fmxhV2iNFK/ZH8wRhJOo Content-Disposition: attachment; filename=driver-i2c-cpm.patch Content-Type: text/x-patch; name=driver-i2c-cpm.patch; charset=ISO-8859-1 Content-Transfer-Encoding: base64 IyMjIyBBdXRvLWdlbmVyYXRlZCBwYXRjaCAjIyMjDQpEYXRlOiAgICAgICAgVHVlLCAyMiBNYXIg MjAwNSAxNTo1OTowMSAtMDUwMA0KTWFpbnRhaW5lcjogIEphc29uIE1jTXVsbGFuIDxqbWNtdWxs YW5AdGltZXN5cy5jb20+DQpTdW1tYXJ5OiAgICAgQ1BNL0NQTTIgSTJDIGRyaXZlciBmb3IgRnJl ZXNjYWxlIFNvQyBkZXZpY2VzDQpEZXNjcmlwdGlvbjogQ1BNL0NQTTIgSTJDIGRyaXZlciBmb3Ig RnJlZXNjYWxlIFNvQyBkZXZpY2VzDQpEZXBlbmRzOg0KCQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIw0KDQpJbmRleCBvZiBjaGFuZ2VzOg0KDQogZHJpdmVycy9pMmMvYWxnb3MvS2Nv bmZpZyAgICAgICAgICAgICAgfCAgICA0IA0KIGRyaXZlcnMvaTJjL2FsZ29zL01ha2VmaWxlICAg ICAgICAgICAgIHwgICAgMSANCiBkcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZyAgICAgICAgICAg ICB8ICAgMjUgKw0KIGRyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmlsZSAgICAgICAgICAgIHwgICAg MSANCiBpbmNsdWRlL2xpbnV4L2kyYy1pZC5oICAgICAgICAgICAgICAgICB8ICAgIDQgDQogbGlu dXgvZHJpdmVycy9pMmMvYWxnb3MvaTJjLWFsZ28tY3BtLmMgfCAgNDc3ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKw0KIGxpbnV4L2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtY3BtLmMg ICAgIHwgIDIxOSArKysrKysrKysrKysrKysNCiBsaW51eC9pbmNsdWRlL2xpbnV4L2kyYy1hbGdv LWNwbS5oICAgICB8ICAgNjQgKysrKw0KIDggZmlsZXMgY2hhbmdlZCwgNzkxIGluc2VydGlvbnMo KyksIDQgZGVsZXRpb25zKC0pDQoNCg0KLS0tIGxpbnV4LW9yaWcvZHJpdmVycy9pMmMvYWxnb3Mv S2NvbmZpZw0KKysrIGxpbnV4L2RyaXZlcnMvaTJjL2FsZ29zL0tjb25maWcNCkBAIC0xNiw2ICsx NiwxMCBAQA0KIAkgIFRoaXMgc3VwcG9ydCBpcyBhbHNvIGF2YWlsYWJsZSBhcyBhIG1vZHVsZS4g IElmIHNvLCB0aGUgbW9kdWxlIA0KIAkgIHdpbGwgYmUgY2FsbGVkIGkyYy1hbGdvLWJpdC4NCiAN Citjb25maWcgSTJDX0FMR09fQ1BNDQorCXRyaXN0YXRlICJNUEMgKDh4eCBhbmQgOHh4eCkgQ1BN IEkyQyBpbnRlcmZhY2UiDQorCWRlcGVuZHMgb24gKDh4eCB8fCA4NXh4ICkgJiYgSTJDDQorDQog Y29uZmlnIEkyQ19BTEdPUENGDQogCXRyaXN0YXRlICJJMkMgUENGIDg1ODQgaW50ZXJmYWNlcyIN CiAJZGVwZW5kcyBvbiBJMkMNCi0tLSBsaW51eC1vcmlnL2RyaXZlcnMvaTJjL2FsZ29zL01ha2Vm aWxlDQorKysgbGludXgvZHJpdmVycy9pMmMvYWxnb3MvTWFrZWZpbGUNCkBAIC0zLDYgKzMsNyBA QA0KICMNCiANCiBvYmotJChDT05GSUdfSTJDX0FMR09CSVQpCSs9IGkyYy1hbGdvLWJpdC5vDQor b2JqLSQoQ09ORklHX0kyQ19BTEdPX0NQTSkJKz0gaTJjLWFsZ28tY3BtLm8NCiBvYmotJChDT05G SUdfSTJDX0FMR09QQ0YpCSs9IGkyYy1hbGdvLXBjZi5vDQogb2JqLSQoQ09ORklHX0kyQ19BTEdP UENBKQkrPSBpMmMtYWxnby1wY2Eubw0KIG9iai0kKENPTkZJR19JMkNfQUxHT0lURSkJKz0gaTJj LWFsZ28taXRlLm8NCi0tLSAvZGV2L251bGwNCisrKyBsaW51eC9kcml2ZXJzL2kyYy9hbGdvcy9p MmMtYWxnby1jcG0uYw0KQEAgLTAsMCArMSw0NzcgQEANCisvKg0KKyAqIGkyYy1hbGdvLWNwbS5j IGkyeCBkcml2ZXIgYWxnb3JpdGhtcyBmb3IgTW90b3JvbGEgTVBDIENQTQ0KKyAqIENvcHlyaWdo dCAoYykgMjAwNCBKYXNvbiBNY011bGxhbiAoamFzb24ubWNtdWxsYW5AdGltZXN5cy5jb20pDQor ICogQ29weXJpZ2h0IChjKSAxOTk5IERhbiBNYWxlayAoZG1hbGVrQGpsYy5uZXQpLg0KKyAqDQor ICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5DQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorICogIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQorICogIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICog IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mDQorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUNCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4NCisgKg0KKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KKyAqICBGb3VuZGF0aW9u LCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4NCisgKg0KKyAq IGJhc2VkIG9uIGkyYy1hbGdvLWNwbS5jDQorICovDQorDQorLyogJElkJCAqLw0KKw0KKyNpbmNs dWRlIDxsaW51eC9tb2R1bGUuaD4NCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0KKyNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4NCisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCisjaW5jbHVkZSA8 bGludXgvc2xhYi5oPg0KKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+DQorI2luY2x1ZGUgPGxp bnV4L2lvcG9ydC5oPg0KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPg0KKyNpbmNsdWRlIDxsaW51 eC9zY2hlZC5oPg0KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4NCisjaW5jbHVkZSA8bGlu dXgvcGNpLmg+DQorDQorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPg0KKyNpbmNsdWRlIDxsaW51eC9p MmMtYWxnby1jcG0uaD4NCisNCisjaW5jbHVkZSA8YXNtL2lvLmg+DQorDQorI2RlZmluZSBJMkNf VkVSU0lPTgkiMC4xIg0KKyNkZWZpbmUgSTJDX0RBVEUJIk1hciAyMiwgMjAwNSINCisNCisjZGVm aW5lIENQTV9NQVhfUkVBRAk1MTMNCisvKiAjZGVmaW5lIEkyQ19DSElQX0VSUkFUQSAqLyAvKiBU cnkgdW5jb21tZW50IHRoaXMgaWYgeW91IGhhdmUgYW4gb2xkZXIgQ1BVKGVhcmxpZXIgdGhhbiBy ZXYgRDQpICovDQorDQorI3VuZGVmIERFQlVHDQorDQorI2lmZGVmIERFQlVHDQoraW50IGNwbV9k ZWJ1ZyA9IDA7DQorTU9EVUxFX1BBUk0oY3BtX2RlYnVnLCAiaSIpOw0KKyNkZWZpbmUgc3RhdGlj IC8qKi8NCisjZGVmaW5lIERQUklOVEsoZm10LCBhcmdzLi4uKSBwcmludGsoS0VSTl9JTkZPIGZt dCAsIyNhcmdzKQ0KKyNlbHNlDQorI2RlZmluZSBEUFJJTlRLKGFyZ3MuLi4pIGRvIHsgfSB3aGls ZSAoMCkNCisjZW5kaWYNCisNCitzdGF0aWMgdm9pZCBjcG1faTJjX3BhcmFtX3Jlc2V0KHN0cnVj dCBpMmNfYWxnb19jcG1fZGF0YSAqY3BtX2FkYXApDQorew0KKwl2b2xhdGlsZSBjcG1faWljX3QJ KmlpcCA9IGNwbV9hZGFwLT5paXA7DQorDQorCS8qIFNldCB1cCB0aGUgSUlDIHBhcmFtZXRlcnMg aW4gdGhlIHBhcmFtZXRlciByYW0uDQorCSovDQorCWlpcC0+aWljX3JiYXNlID0gY3BtX2FkYXAt PmRwX29mZnNldDsNCisJaWlwLT5paWNfdGJhc2UgPSBjcG1fYWRhcC0+ZHBfb2Zmc2V0ICsgc2l6 ZW9mKGNiZF90KSoyOw0KKw0KKwkvKiBJbml0aWFsaXplIHRoZSBwYXJhbWV0ZXIgcmFtLg0KKwkg KiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSBtYW55IHRoaW5ncyBhcmUgaW5pdGlhbGl6ZWQgdG8gemVy bywNCisJICogZXNwZWNpYWxseSBpbiB0aGUgY2FzZSBvZiBhIG1pY3JvY29kZSBwYXRjaC4NCisJ ICovDQorCWlpcC0+aWljX3JzdGF0ZSA9IDA7DQorCWlpcC0+aWljX3JkcCA9IDA7DQorCWlpcC0+ aWljX3JicHRyID0gMDsNCisJaWlwLT5paWNfcmJjID0gMDsNCisJaWlwLT5paWNfcnh0bXAgPSAw Ow0KKwlpaXAtPmlpY190c3RhdGUgPSAwOw0KKwlpaXAtPmlpY190ZHAgPSAwOw0KKwlpaXAtPmlp Y190YnB0ciA9IDA7DQorCWlpcC0+aWljX3RiYyA9IDA7DQorCWlpcC0+aWljX3R4dG1wID0gMDsN CisNCisJaWlwLT5paWNfdGZjciA9IENQTUZDUl9FQiB8IENQTUZDUl9HQkw7DQorCWlpcC0+aWlj X3JmY3IgPSBDUE1GQ1JfRUIgfCBDUE1GQ1JfR0JMOw0KKw0KKwkvKiBTZXQgbWF4aW11bSByZWNl aXZlIHNpemUuDQorCSovDQorCWlpcC0+aWljX21yYmxyID0gQ1BNX01BWF9SRUFEOw0KKw0KK30N CisNCitzdGF0aWMgaW50IGkyY19jcG1fc3RhcnQoc3RydWN0IGkyY19hbGdvX2NwbV9kYXRhICpj cG0pDQorew0KKwl2b2xhdGlsZSBjcG1faTJjX3QgKmkyYyA9IGNwbS0+aTJjOw0KKw0KKwlEUFJJ TlRLKCJpMmNfY3BtX3N0YXJ0OiBSZWFkeSAoaTJjbXI9JS4yeCwgaTJjZXI9JS4yeCwgaTJjb209 JS4yeCwgaTJtb2Q9JS4yeClcbiIsIGkyYy0+aTJjX2kyY21yLGkyYy0+aTJjX2kyY2VyLGkyYy0+ aTJjX2kyY29tLGkyYy0+aTJjX2kybW9kKTsNCisNCisJLyogV2FpdCBmb3IgSUlDIHRyYW5zZmVy ICovDQorCWNwbS0+c3RhdHVzID0gLUVCVVNZOw0KKwlpMmMtPmkyY19pMm1vZCAmPSB+STJNT0Rf RU47DQorDQorCS8qIENoaXAgYnVnLCBzZXQgZW5hYmxlIGhlcmUgKi8NCisJaTJjLT5pMmNfaTJj bXIgPSBJMkNFUl9NQVNLOwkvKiBFbmFibGUgaW50ZXJ1cHRzICovDQorCWkyYy0+aTJjX2kyY2Vy ID0gSTJDRVJfTUFTSzsNCisJaTJjLT5pMmNfaTJtb2QgPSBJMk1PRF9FTjsJCS8qIEVuYWJsZSAq Lw0KKwlpMmMtPmkyY19pMmNvbSA9IEkyQ09NX1NUUiB8IEkyQ09NX01TOwkvKiBCZWdpbiB0cmFu c21pc3Npb24gKi8NCisJaW50ZXJydXB0aWJsZV9zbGVlcF9vbigmY3BtLT53YWl0KTsNCisNCisJ RFBSSU5USygiaTJjX2NwbV9zdGFydDogRG9uZSAgKGkyY21yPSUuMngsIGkyY2VyPSUuMngsIGky Y29tPSUuMngsIGkybW9kPSUuMngpXG4iLCBpMmMtPmkyY19pMmNtcixpMmMtPmkyY19pMmNlcixp MmMtPmkyY19pMmNvbSxpMmMtPmkyY19pMm1vZCk7DQorDQorCURQUklOVEsoImkyY19jcG1fc3Rh cnQ6IHJlc3VsdD0lZFxuIixjcG0tPnN0YXR1cyk7DQorCXJldHVybiBjcG0tPnN0YXR1czsNCit9 DQorDQorc3RhdGljIGlycXJldHVybl90IGkyY19jcG1faW50ZXJydXB0KGludCB1bnVzZWQsIHZv aWQgKmRldl9pZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpDQorIHsNCisJc3RydWN0IGkyY19hbGdv X2NwbV9kYXRhICpjcG1fYWRhcCA9IGRldl9pZDsNCisJdWludDhfdCBldmVudHM7DQorDQorI2lm ZGVmIEkyQ19DSElQX0VSUkFUQQ0KKwkvKiBDaGlwIGVycmF0YSwgY2xlYXIgZW5hYmxlLg0KKwkg KiBUaGlzIHNlZW1zIHRvIG5vdCBiZSBuZWVkZWQgb24gcmV2IEQ0IG9yIG5ld2VyIENQVXMuDQor CSAqIFNvbWVvbmUgd2l0aCBhbiBvbGRlciBDUFUgbmVlZHMgdG8gdmVyaWZ5IHRoaXMuDQorCSAq Lw0KKwljcG1fYWRhcC0+aTJjLT5pMmNfaTJtb2QgJj0gfkkyTU9EX0VOOyB3bWIoKTsNCisjZW5k aWYNCisNCisJZXZlbnRzID0gY3BtX2FkYXAtPmkyYy0+aTJjX2kyY2VyOw0KKwlEUFJJTlRLKCJp MmNfY3BtX2ludGVycnVwdDogZGV2X2lkPTB4JXAsIGkyY2VyPTB4JS4yeFxuIiwgZGV2X2lkLGV2 ZW50cyk7DQorDQorDQorCWlmIChldmVudHMgJiBJMkNFUl9UWEUpIHsNCisJCWNwbV9hZGFwLT5z dGF0dXMgPSAtRU5PREVWOw0KKwl9IGVsc2UgaWYgKGV2ZW50cyAmIEkyQ0VSX0JTWSkgew0KKwkJ Y3BtX2FkYXAtPnN0YXR1cyA9IC1FQUdBSU47DQorCX0gZWxzZSBpZiAoZXZlbnRzICYgKEkyQ0VS X1JYQiB8IEkyQ0VSX1RYQikpIHsNCisJCWNwbV9hZGFwLT5zdGF0dXMgPSAwOw0KKwl9DQorDQor CS8qIENsZWFyIGludGVycnVwdC4NCisJKi8NCisJY3BtX2FkYXAtPmkyYy0+aTJjX2kyY2VyID0g ZXZlbnRzOyB3bWIoKTsNCisNCisJLyogR2V0ICdlbSBnb2luZyBhZ2Fpbi4NCisJKi8NCisJd2Fr ZV91cF9pbnRlcnJ1cHRpYmxlKCZjcG1fYWRhcC0+d2FpdCk7DQorDQorCXJldHVybiBJUlFfSEFO RExFRDsNCit9DQorDQorLyogUmVhZCBmcm9tIElJQy4uLg0KKyAqIGFieXRlID0gYWRkcmVzcyBi eXRlLCB3aXRoIHIvdyBmbGFnIGFscmVhZHkgc2V0DQorICovDQorc3RhdGljIGludCBpMmNfY3Bt X3JlYWQoc3RydWN0IGkyY19hbGdvX2NwbV9kYXRhICpjcG0sIHVpbnQ4X3QgYWJ5dGUsIGNoYXIg KmJ1ZiwgaW50IGNvdW50KQ0KK3sNCisJdm9sYXRpbGUgY2JkX3QJKnRiZGYsICpyYmRmOw0KKwl1 aW50OF90ICp0YjsNCisJZG1hX2FkZHJfdCB0Yl9kbWFbMl07DQorCWludCBlcnI7DQorDQorCURQ UklOVEsoImkyY19jcG1fcmVhZDogYWJ5dGU9MHgleCglYylcbiIsIGFieXRlPj4xLCAid3IiW2Fi eXRlJjFdKTsNCisNCisJaWYgKGNvdW50ID49IENQTV9NQVhfUkVBRCkNCisJCXJldHVybiAtRUlO VkFMOw0KKw0KKwkvKiBJZiB3ZSBhcmUgcmVsb2NhdGVkLCB3ZSBtdXN0IHJlc2V0IHRoZSBwYXJh bXMgKi8NCisJaWYgKGNwbS0+cmVsb2MpDQorCQljcG1faTJjX3BhcmFtX3Jlc2V0KGNwbSk7DQor DQorCXJiZGYgPSAodm9pZCAqKWNwbV9kcHJhbV9hZGRyKGNwbS0+aWlwLT5paWNfcmJhc2UpOw0K Kwl0YmRmID0gKHZvaWQgKiljcG1fZHByYW1fYWRkcihjcG0tPmlpcC0+aWljX3RiYXNlKTsNCisN CisJLyogVG8gcmVhZCwgd2UgbmVlZCBhbiBlbXB0eSBidWZmZXIgb2YgdGhlIHByb3BlciBsZW5n dGguDQorCSAqIEFsbCB0aGF0IGlzIHVzZWQgaXMgdGhlIGZpcnN0IGJ5dGUgZm9yIGFkZHJlc3Ms IHRoZSByZW1haW5kZXINCisJICogaXMganVzdCB1c2VkIGZvciB0aW1pbmcgKGFuZCBkb2Vzbid0 IHJlYWxseSBoYXZlIHRvIGV4aXN0KS4NCisJICovDQorCXRiID0gY3BtLT50ZW1wOw0KKwl0Ylsw XSA9IGFieXRlOwkJLyogRGV2aWNlIGFkZHJlc3MgYnl0ZSB3L3J3IGZsYWcgKi8NCisNCisNCisJ dGJfZG1hWzBdID0gZG1hX21hcF9zaW5nbGUoY3BtLT5kZXZpY2UsIHRiLCAxLCBETUFfVE9fREVW SUNFKTsNCisJdGJkZi0+Y2JkX2J1ZmFkZHIgPSB0Yl9kbWFbMF07DQorCXRiZGYtPmNiZF9kYXRs ZW4gPSAxOw0KKwl0YmRmLT5jYmRfc2MgPSBCRF9TQ19SRUFEWSB8IEJEX1NDX0xBU1QgfCBCRF9T Q19XUkFQIHwgQkRfSUlDX1NUQVJUOw0KKw0KKwljcG0tPmlpcC0+aWljX21yYmxyID0gY291bnQg KyAxOw0KKw0KKwl0Yl9kbWFbMV0gPSBkbWFfbWFwX3NpbmdsZShjcG0tPmRldmljZSwgYnVmLCBj b3VudCwgRE1BX0ZST01fREVWSUNFKTsNCisJcmJkZi0+Y2JkX2RhdGxlbiA9IDA7DQorCXJiZGYt PmNiZF9idWZhZGRyID0gdGJfZG1hWzFdOw0KKwlyYmRmLT5jYmRfc2MgPSBCRF9TQ19FTVBUWSB8 IEJEX1NDX1dSQVB8IEJEX1NDX0lOVFJQVDsNCisNCisJRFBSSU5USygidGJkZi0+Y2JkX3NjKDB4 JXApID0gMHglLjR4XG4iLCZ0YmRmLT5jYmRfc2MsdGJkZi0+Y2JkX3NjKTsNCisJRFBSSU5USygi cmJkZi0+Y2JkX3NjKDB4JXApID0gMHglLjR4XG4iLCZyYmRmLT5jYmRfc2MscmJkZi0+Y2JkX3Nj KTsNCisJZXJyID0gaTJjX2NwbV9zdGFydChjcG0pOw0KKwlkbWFfdW5tYXBfc2luZ2xlKGNwbS0+ ZGV2aWNlLCB0Yl9kbWFbMV0sIGNvdW50LCBETUFfRlJPTV9ERVZJQ0UpOw0KKwlkbWFfdW5tYXBf c2luZ2xlKGNwbS0+ZGV2aWNlLCB0Yl9kbWFbMF0sIDEsIERNQV9UT19ERVZJQ0UpOw0KKwlEUFJJ TlRLKCJ0YmRmLT5jYmRfc2MoMHglcCkgPSAweCUuNHhcbiIsJnRiZGYtPmNiZF9zYyx0YmRmLT5j YmRfc2MpOw0KKwlEUFJJTlRLKCJyYmRmLT5jYmRfc2MoMHglcCkgPSAweCUuNHhcbiIsJnJiZGYt PmNiZF9zYyxyYmRmLT5jYmRfc2MpOw0KKwlpZiAoZXJyKQ0KKwkJcmV0dXJuIGVycjsNCisNCisJ aWYgKHRiZGYtPmNiZF9zYyAmIEJEX1NDX1JFQURZKSB7DQorCQlEUFJJTlRLKCJpMmNfY3BtX3Jl YWQ6IGNvbXBsZXRlIGJ1dCB0YnVmIHJlYWR5XG4iKTsNCisJCURQUklOVEsoIlx0dHggc2MgJTA0 eCwgcnggc2MgJTA0eFxuIiwgdGJkZi0+Y2JkX3NjLCByYmRmLT5jYmRfc2MpOw0KKwkJcmV0dXJu IC1FUkVNT1RFSU87DQorCX0NCisNCisJaWYgKHRiZGYtPmNiZF9zYyAmIEJEX1NDX05BSykgew0K KwkJRFBSSU5USygiaTJjX2NwbV9yZWFkOiBubyBhY2tcbiIpOw0KKwkJcmV0dXJuIC1FUkVNT1RF SU87DQorIAl9DQorDQorCWlmIChyYmRmLT5jYmRfc2MgJiBCRF9TQ19FTVBUWSkgew0KKwkJRFBS SU5USygiaTJjX2NwbV9yZWFkOiBjb21wbGV0ZSBidXQgcmJ1ZiBlbXB0eVxuIik7DQorCQlEUFJJ TlRLKCJcdHR4IHNjICUwNHgsIHJ4IHNjICUwNHhcbiIsIHRiZGYtPmNiZF9zYywgcmJkZi0+Y2Jk X3NjKTsNCisJCXJldHVybiAtRVJFTU9URUlPOw0KKwl9DQorDQorCWlmIChyYmRmLT5jYmRfc2Mg JiBCRF9TQ19PVikgew0KKwkJRFBSSU5USygiaTJjX2NwbV9yZWFkOiBPdmVycnVuXG4iKTsNCisJ CXJldHVybiAtRVJFTU9URUlPOw0KKyAJfQ0KKw0KKwlEUFJJTlRLKCJpMmNfY3BtX3JlYWQ6IHJl YWQgJWQgYnl0ZXNcbiIsIHJiZGYtPmNiZF9kYXRsZW4pOw0KKw0KKwlpZiAocmJkZi0+Y2JkX2Rh dGxlbiA8IGNvdW50KSB7DQorCQlEUFJJTlRLKCJpMmNfY3BtX3JlYWQ6IHNob3J0LCB3YW50ZWQg JWQgZ290ICVkXG4iLCBjb3VudCwgcmJkZi0+Y2JkX2RhdGxlbik7DQorCX0NCisNCisJcmV0dXJu IGNvdW50Ow0KK30NCisNCisvKiBXcml0ZSB0byBJSUMuLi4NCisgKiBhZGRyID0gYWRkcmVzcyBi eXRlLCB3aXRoIHIvdyBmbGFnIGFscmVhZHkgc2V0DQorICovDQorc3RhdGljIGludA0KK2kyY19j cG1fd3JpdGUoc3RydWN0IGkyY19hbGdvX2NwbV9kYXRhICpjcG0sIHVpbnQ4X3QgYWJ5dGUsIGNo YXIgKmJ1ZixpbnQgY291bnQpDQorew0KKwl2b2xhdGlsZSBjYmRfdCAqdGJkZiwgKnJiZGY7DQor CXVpbnQ4X3QgKnRiOw0KKwlkbWFfYWRkcl90IHRiX2RtYVsyXTsNCisJaW50IGVycjsNCisNCisJ RFBSSU5USygiaTJjX2NwbV93cml0ZTogYWJ5dGU9MHgleCglYylcbiIsIGFieXRlPj4xLCAid3Ii W2FieXRlJjFdKTsNCisNCisJLyogSWYgd2UgYXJlIHJlbG9jYXRlZCwgd2UgbXVzdCByZXNldCB0 aGUgcGFyYW1zICovDQorCWlmIChjcG0tPnJlbG9jKQ0KKwkJY3BtX2kyY19wYXJhbV9yZXNldChj cG0pOw0KKw0KKwl0YiA9IGNwbS0+dGVtcDsNCisJdGJbMF0gPSBhYnl0ZTsJCS8qIERldmljZSBh ZGRyZXNzIGJ5dGUgdy9ydyBmbGFnICovDQorDQorCS8qIHNldCB1cCAyIGRlc2NyaXB0b3JzICov DQorCXRiZGYgPSAodm9pZCAqKWNwbV9kcHJhbV9hZGRyKGNwbS0+aWlwLT5paWNfdGJhc2UpOw0K KwlyYmRmID0gKHZvaWQgKiljcG1fZHByYW1fYWRkcihjcG0tPmlpcC0+aWljX3JiYXNlKTsNCisN CisJdGJfZG1hWzBdID0gZG1hX21hcF9zaW5nbGUoY3BtLT5kZXZpY2UsIHRiLCAxLCBETUFfVE9f REVWSUNFKTsNCisJdGJkZlswXS5jYmRfYnVmYWRkciA9IHRiX2RtYVswXTsNCisJdGJkZlswXS5j YmRfZGF0bGVuID0gMTsNCisJdGJkZlswXS5jYmRfc2MgPSBCRF9TQ19SRUFEWSB8IEJEX1NDX0lO VFJQVCB8IEJEX0lJQ19TVEFSVDsNCisNCisJaWYgKGNvdW50ID4gMCkgew0KKwkJdGJfZG1hWzFd ID0gZG1hX21hcF9zaW5nbGUoY3BtLT5kZXZpY2UsIGJ1ZiwgY291bnQsIERNQV9UT19ERVZJQ0Up Ow0KKwkJdGJkZlsxXS5jYmRfYnVmYWRkciA9IHRiX2RtYVsxXTsNCisJCXRiZGZbMV0uY2JkX2Rh dGxlbiA9IGNvdW50Ow0KKwkJdGJkZlsxXS5jYmRfc2MgPSBCRF9TQ19SRUFEWSB8IEJEX1NDX0lO VFJQVCB8IEJEX1NDX0xBU1QgfCBCRF9TQ19XUkFQOw0KKwl9IGVsc2Ugew0KKwkJdGJkZlswXS5j YmRfc2MgfD0gQkRfU0NfSU5UUlBUIHwgQkRfU0NfTEFTVCB8IEJEX1NDX1dSQVA7DQorCQl0Yl9k bWFbMV0gPSAwOw0KKwl9DQorDQorCXJiZGZbMF0uY2JkX3NjID0gQkRfU0NfV1JBUDsNCisNCisJ RFBSSU5USygidGJkZi0+Y2JkX3NjKDB4JXApID0gMHglLjR4KCVkKSwweCUuNHgoJWQpXG4iLCZ0 YmRmLT5jYmRfc2MsdGJkZlswXS5jYmRfc2MsdGJkZlswXS5jYmRfZGF0bGVuLHRiZGZbMV0uY2Jk X3NjLHRiZGZbMV0uY2JkX2RhdGxlbik7DQorCWVyciA9IGkyY19jcG1fc3RhcnQoY3BtKTsNCisN CisJaWYgKHRiX2RtYVsxXSkNCisJCWRtYV91bm1hcF9zaW5nbGUoY3BtLT5kZXZpY2UsIHRiX2Rt YVsxXSwgY291bnQsIERNQV9UT19ERVZJQ0UpOw0KKwlkbWFfdW5tYXBfc2luZ2xlKGNwbS0+ZGV2 aWNlLCB0Yl9kbWFbMF0sIDEsIERNQV9UT19ERVZJQ0UpOw0KKw0KKwlEUFJJTlRLKCJ0YmRmLT5j YmRfc2MoMHglcCkgPSAweCUuNHgoJWQpLDB4JS40eCglZClcbiIsJnRiZGYtPmNiZF9zYyx0YmRm WzBdLmNiZF9zYyx0YmRmWzBdLmNiZF9kYXRsZW4sdGJkZlsxXS5jYmRfc2MsdGJkZlsxXS5jYmRf ZGF0bGVuKTsNCisJaWYgKGVyciA8IDApDQorCQlyZXR1cm4gZXJyOw0KKw0KKw0KKwlpZiAodGJk Zi0+Y2JkX3NjICYgQkRfU0NfTkFLKSB7DQorCQlEUFJJTlRLKCJpMmNfY3BtX3dyaXRlOyBubyBh Y2tcbiIpOw0KKwkJcmV0dXJuIC1FTk9ERVY7DQorCX0NCisNCisJaWYgKHRiZGYtPmNiZF9zYyAm IEJEX1NDX1JFQURZKSB7DQorCQlEUFJJTlRLKCJpMmNfY3BtX3dyaXRlOiBjb21wbGV0ZSBidXQg dGJ1ZiByZWFkeVxuIik7DQorCQlyZXR1cm4gLUVSRU1PVEVJTzsNCisJfQ0KKw0KKwlyZXR1cm4g Y291bnQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQgY3BtX3hmZXIoc3RydWN0IGkyY19hZGFwdGVyICpp MmNfYWRhcCwNCisJCSAgICBzdHJ1Y3QgaTJjX21zZyBtc2dzW10sDQorCQkgICAgaW50IG51bSkN Cit7DQorCXN0cnVjdCBpMmNfYWxnb19jcG1fZGF0YSAqYWRhcCA9IGkyY19hZGFwLT5hbGdvX2Rh dGE7DQorCXN0cnVjdCBpMmNfbXNnICpwbXNnOw0KKwlpbnQgaSwgcmV0Ow0KKwl1aW50OF90IGFk ZHI7DQorDQorCWZvciAoaSA9IDA7IGkgPCBudW07IGkrKykgew0KKwkJcG1zZyA9ICZtc2dzW2ld Ow0KKw0KKwkJRFBSSU5USygiaTJjLWFsZ28tY3BtOiAjJWQgYWRkcj0weCV4IGZsYWdzPTB4JXgg bGVuPSVkXG4gYnVmPSVseFxuIiwgaSwgcG1zZy0+YWRkciwgcG1zZy0+ZmxhZ3MsIHBtc2ctPmxl biwgKHVuc2lnbmVkIGxvbmcpcG1zZy0+YnVmKTsNCisNCisJCWFkZHIgPSBwbXNnLT5hZGRyIDw8 IDE7DQorCQlpZiAocG1zZy0+ZmxhZ3MgJiBJMkNfTV9SRCApDQorCQkJYWRkciB8PSAxOw0KKwkJ aWYgKHBtc2ctPmZsYWdzICYgSTJDX01fUkVWX0RJUl9BRERSICkNCisJCQlhZGRyIF49IDE7DQor DQorCQlpZiAoIShwbXNnLT5mbGFncyAmIEkyQ19NX05PU1RBUlQpKSB7DQorCQl9DQorCQlpZiAo cG1zZy0+ZmxhZ3MgJiBJMkNfTV9SRCApIHsNCisJCQkvKiByZWFkIGJ5dGVzIGludG8gYnVmZmVy Ki8NCisJCQlyZXQgPSBpMmNfY3BtX3JlYWQoYWRhcCwgYWRkciwgcG1zZy0+YnVmLCBwbXNnLT5s ZW4pOw0KKwkJCURQUklOVEsoImkyYy1hbGdvLWNwbTogcmVhZCAlZCBieXRlc1xuIiwgcmV0KTsN CisJCQlpZiAocmV0IDwgcG1zZy0+bGVuICkgew0KKwkJCQlyZXR1cm4gKHJldDwwKT8gcmV0IDog LUVSRU1PVEVJTzsNCisJCQl9DQorCQl9IGVsc2Ugew0KKwkJCS8qIHdyaXRlIGJ5dGVzIGZyb20g YnVmZmVyICovDQorCQkJcmV0ID0gaTJjX2NwbV93cml0ZShhZGFwLCBhZGRyLCBwbXNnLT5idWYs IHBtc2ctPmxlbik7DQorCQkJRFBSSU5USygiaTJjLWFsZ28tY3BtOiB3cm90ZSAlZFxuIiwgcmV0 KTsNCisJCQlpZiAocmV0IDwgcG1zZy0+bGVuICkgew0KKwkJCQlyZXR1cm4gKHJldDwwKSA/IHJl dCA6IC1FUkVNT1RFSU87DQorCQkJfQ0KKwkJfQ0KKwl9DQorCXJldHVybiAobnVtKTsNCit9DQor DQorc3RhdGljIGludCBhbGdvX2NvbnRyb2woc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLA0K Kwl1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykNCit7DQorCXJldHVybiAwOw0K K30NCisNCitzdGF0aWMgdTMyIGNwbV9mdW5jKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCkNCit7 DQorCXJldHVybiBJMkNfRlVOQ19TTUJVU19FTVVMIHwgSTJDX0ZVTkNfUFJPVE9DT0xfTUFOR0xJ Tkc7DQorfQ0KKw0KKy8qIC0tLS0tZXhwb3J0ZWQgYWxnb3JpdGhtIGRhdGE6IC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JKi8NCisNCitzdGF0aWMgc3RydWN0IGkyY19hbGdv cml0aG0gY3BtX2FsZ28gPSB7DQorCSJDUE0yIGFsZ29yaXRobSIsDQorCUkyQ19BTEdPX0NQTTIs DQorCWNwbV94ZmVyLA0KKwlOVUxMLA0KKwlOVUxMLAkJCQkvKiBzbGF2ZV94bWl0CQkqLw0KKwlO VUxMLAkJCQkvKiBzbGF2ZV9yZWN2CQkqLw0KKwlhbGdvX2NvbnRyb2wsCQkJLyogaW9jdGwJCSov DQorCWNwbV9mdW5jLAkJCS8qIGZ1bmN0aW9uYWxpdHkJKi8NCit9Ow0KKw0KK3N0YXRpYyBpbnQg aTJjX2NwbV9pbml0KHN0cnVjdCBpMmNfYWxnb19jcG1fZGF0YSAqY3BtX2FkYXApDQorew0KKwl2 b2xhdGlsZSBjcG1faTJjX3QJKmkyYyA9IGNwbV9hZGFwLT5pMmM7DQorCXVuc2lnbmVkIGNoYXIg YnJnOw0KKw0KKwlEUFJJTlRLKCJpMmNfY3BtX2luaXQoKSAtIGlpcD0lcFxuIixjcG1fYWRhcC0+ aWlwKTsNCisNCisJY3BtX2FkYXAtPmRwX29mZnNldCA9IGNwbV9kcGFsbG9jKHNpemVvZihjYmRf dCkqNCsxLCAxNik7DQorCWNwbV9hZGFwLT50ZW1wID0gY3BtX2RwcmFtX2FkZHIoY3BtX2FkYXAt PmRwX29mZnNldCtzaXplb2YoY2JkX3QpKjQpOw0KKw0KKwljcG1faTJjX3BhcmFtX3Jlc2V0KGNw bV9hZGFwKTsNCisNCisJLyogSW5pdGlhbGl6ZSBUeC9SeCBwYXJhbWV0ZXJzLg0KKwkqLw0KKwlp ZiAoISBjcG1fYWRhcC0+cmVsb2MpDQorCQljcG1fY3BfY29tbWFuZChDUE1fQ1BfSTJDLCBDUE1f Q1JfSU5JVF9UUlgpOw0KKw0KKwkvKiBTZWxlY3QgYW4gYXJiaXRyYXJ5IGFkZHJlc3MuICBKdXN0 IG1ha2Ugc3VyZSBpdCBpcyB1bmlxdWUuDQorCSovDQorCWkyYy0+aTJjX2kyYWRkID0gMHhmYzsg d21iKCk7DQorDQorCS8qIE1ha2UgY2xvY2sgcnVuIGF0IDYwIEtIei4NCisJKi8NCisJYnJnID0g KHVuc2lnbmVkIGNoYXIpIChjcG1fYWRhcC0+aW50ZnJlcS8oMzIqMio2MDAwMCkgLTMpOw0KKwlp MmMtPmkyY19pMmJyZyA9IGJyZzsNCisNCisJaTJjLT5pMmNfaTJtb2QgPSBJMk1PRF9GTFQ7IC8q IEVuYWJsZSBmaWx0ZXIgKi8NCisNCisJLyogRGlzYWJsZSBpbnRlcnJ1cHRzLg0KKwkqLw0KKwlp MmMtPmkyY19pMmNtciA9IDA7DQorCWkyYy0+aTJjX2kyY2VyID0gMHhmZjsNCisNCisJaW5pdF93 YWl0cXVldWVfaGVhZCgmY3BtX2FkYXAtPndhaXQpOw0KKw0KKwkvKiBJbnN0YWxsIGludGVycnVw dCBoYW5kbGVyLg0KKwkqLw0KKwlEUFJJTlRLKCIlc1slZF0gSW5zdGFsbCBJU1IgZm9yIElSUSAl ZFxuIiwgX19mdW5jX18sX19MSU5FX18sIGNwbV9hZGFwLT5pcnEpOw0KKwlyZXR1cm4gcmVxdWVz dF9pcnEoY3BtX2FkYXAtPmlycSwgaTJjX2NwbV9pbnRlcnJ1cHQsIDAsICJpMmMtYWxnby1jcG0i LCBjcG1fYWRhcCk7DQorfQ0KKw0KKw0KK3N0YXRpYyBpbnQNCitpMmNfY3BtX3NodXRkb3duKHN0 cnVjdCBpMmNfYWxnb19jcG1fZGF0YSAqY3BtX2FkYXApDQorew0KKwl2b2xhdGlsZSBjcG1faTJj X3QgKmkyYyA9IGNwbV9hZGFwLT5pMmM7DQorDQorCS8qIFNodXQgZG93biBJSUMuDQorCSovDQor CWkyYy0+aTJjX2kybW9kICY9IH5JMk1PRF9FTjsNCisJaTJjLT5pMmNfaTJjbXIgPSAwOw0KKwlp MmMtPmkyY19pMmNlciA9IEkyQ0VSX01BU0s7DQorCWZyZWVfaXJxKGNwbV9hZGFwLT5pcnEsY3Bt X2FkYXApOw0KKwljcG1fZHBmcmVlKGNwbV9hZGFwLT5kcF9vZmZzZXQpOw0KKw0KKwlyZXR1cm4o MCk7DQorfQ0KKw0KKy8qDQorICogcmVnaXN0ZXJpbmcgZnVuY3Rpb25zIHRvIGxvYWQgYWxnb3Jp dGhtcyBhdCBydW50aW1lDQorICovDQoraW50IGkyY19jcG1fYWRkX2J1cyhzdHJ1Y3QgaTJjX2Fk YXB0ZXIgKmFkYXApDQorew0KKwlzdHJ1Y3QgaTJjX2FsZ29fY3BtX2RhdGEgKmNwbV9hZGFwID0g YWRhcC0+YWxnb19kYXRhOw0KKw0KKwlEUFJJTlRLKCJpMmMtYWxnby1jcG06IGh3IHJvdXRpbmVz IGZvciAlcyByZWdpc3RlcmVkLlxuIiwgYWRhcC0+bmFtZSk7DQorDQorCS8qIHJlZ2lzdGVyIG5l dyBhZGFwdGVyIHRvIGkyYyBtb2R1bGUuLi4gKi8NCisNCisJYWRhcC0+aWQgfD0gY3BtX2FsZ28u aWQ7DQorCWFkYXAtPmFsZ28gPSAmY3BtX2FsZ287DQorDQorCWkyY19hZGRfYWRhcHRlcihhZGFw KTsNCisJaTJjX2NwbV9pbml0KGNwbV9hZGFwKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK2lu dCBpMmNfY3BtX2RlbF9idXMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwKQ0KK3sNCisJaW50IHJl czsNCisJc3RydWN0IGkyY19hbGdvX2NwbV9kYXRhICpjcG1fYWRhcCA9IGFkYXAtPmFsZ29fZGF0 YTsNCisNCisJaTJjX2NwbV9zaHV0ZG93bihjcG1fYWRhcCk7DQorDQorCWlmICgocmVzID0gaTJj X2RlbF9hZGFwdGVyKGFkYXApKSA8IDApDQorCQlyZXR1cm4gcmVzOw0KKw0KKwlwcmludGsoImky Yy1hbGdvLWNwbTogYWRhcHRlciB1bnJlZ2lzdGVyZWQ6ICVzXG4iLGFkYXAtPm5hbWUpOw0KKw0K KwlyZXR1cm4gMDsNCit9DQorDQorTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KK0VYUE9SVF9TWU1C T0woaTJjX2NwbV9hZGRfYnVzKTsNCitFWFBPUlRfU1lNQk9MKGkyY19jcG1fZGVsX2J1cyk7DQor DQoraW50IF9faW5pdCBpMmNfYWxnb19jcG1faW5pdCAodm9pZCkNCit7DQorCXByaW50aygiaTJj LWFsZ28tY3BtOiBDUE0yIEkyQyBhbGdvcml0aG0gbW9kdWxlIHZlcnNpb24gJXMgKCVzKVxuIiwg STJDX1ZFUlNJT04sIEkyQ19EQVRFKTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KKw0KK01PRFVMRV9B VVRIT1IoIkphc29uIE1jTXVsbGFuIDxqYXNvbi5tY211bGxhbkB0aW1lc3lzLmNvbT4iKTsNCitN T0RVTEVfREVTQ1JJUFRJT04oIkkyQy1CdXMgQ1BNMiBhbGdvcml0aG0iKTsNCisNCitzdGF0aWMg dm9pZCBpMmNfYWxnb19jcG1fZXhpdCh2b2lkKQ0KK3sNCit9DQorDQorbW9kdWxlX2luaXQoaTJj X2FsZ29fY3BtX2luaXQpOw0KK21vZHVsZV9leGl0KGkyY19hbGdvX2NwbV9leGl0KTsNCg0KLS0t IGxpbnV4LW9yaWcvZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWcNCisrKyBsaW51eC9kcml2ZXJz L2kyYy9idXNzZXMvS2NvbmZpZw0KQEAgLTIyOSw2ICsyMjksMjEgQEANCiAJICBUaGlzIGRyaXZl ciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gIElmIHNvLCB0aGUgbW9kdWxlDQogCSAg d2lsbCBiZSBjYWxsZWQgaTJjLW1wYy4NCiANCitjb25maWcgSTJDX0NQTQ0KKwl0cmlzdGF0ZSAi TW90b3JvbGEgTVBDOHh4IGFuZCBNUEM4NXh4IENQTSBJMkMiDQorCWRlcGVuZHMgb24gKDh4eCB8 fCA4NXh4KSAmJiBJMkMNCisJaGVscA0KKwkgIFRoaXMgc3VwcG9ydHMgdGhlIHVzZSBvZiB0aGUg STJDIGludGVyZmFjZSBpbiB0aGUgTW90b3JvbGENCisJICBNUEM4eHggYW5kIE1QQzg1eHggc2Vy aWVzIGVtYmVkZGVkIHByb2Nlc3NvcnMgb24gdGhlIENQTQ0KKwkgIEkyQyBtYWNyb2NlbGwuDQor DQorY29uZmlnIEkyQ19DUE1fQklUDQorCWJvb2wgIkJpdC1CYW5nIG9ubHk/Ig0KKwlkZXBlbmRz IG9uIEkyQ19DUE0NCisJaGVscA0KKwkgIE9ubHkgdXNlIHRoZSBDUE0gcGFyYWxsZWwgcG9ydCBi aXQtYmFuZ2luZyBpbnRlcmZhY2UsIG5vdCB0aGUNCisJICBTRE1BIENQTSBkZXZpY2UuDQorDQog Y29uZmlnIEkyQ19ORk9SQ0UyDQogCXRyaXN0YXRlICJOdmlkaWEgTmZvcmNlMiINCiAJZGVwZW5k cyBvbiBJMkMgJiYgUENJICYmIEVYUEVSSU1FTlRBTA0KQEAgLTMxNywxMCArMzMyLDEyIEBADQog CSAgVGhpcyBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgbW9kdWxlLiAgSWYgc28sIHRo ZSBtb2R1bGUgDQogCSAgd2lsbCBiZSBjYWxsZWQgaTJjLXByb3NhdmFnZS4NCiANCi1jb25maWcg STJDX1JQWExJVEUNCi0JdHJpc3RhdGUgIkVtYmVkZGVkIFBsYW5ldCBSUFggTGl0ZS9DbGFzc2lj IHN1cHBvcnQiDQotCWRlcGVuZHMgb24gKFJQWExJVEUgfHwgUlBYQ0xBU1NJQykgJiYgSTJDDQot CXNlbGVjdCBJMkNfQUxHTzhYWA0KKyMgVGhpcyBhcHBlYXJzIHRvIGJlIGJyb2tlbi4uLg0KKyMN CisjY29uZmlnIEkyQ19SUFhMSVRFDQorIwl0cmlzdGF0ZSAiRW1iZWRkZWQgUGxhbmV0IFJQWCBM aXRlL0NsYXNzaWMgc3VwcG9ydCINCisjCWRlcGVuZHMgb24gKFJQWExJVEUgfHwgUlBYQ0xBU1NJ QykgJiYgSTJDDQorIwlzZWxlY3QgSTJDX0FMR084WFgNCiANCiBjb25maWcgSTJDX1MzQzI0MTAN CiAJdHJpc3RhdGUgIlMzQzI0MTAgSTJDIERyaXZlciINCi0tLSBsaW51eC1vcmlnL2RyaXZlcnMv aTJjL2J1c3Nlcy9NYWtlZmlsZQ0KKysrIGxpbnV4L2RyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmls ZQ0KQEAgLTgsNiArOCw3IEBADQogb2JqLSQoQ09ORklHX0kyQ19BTUQ3NTYpCSs9IGkyYy1hbWQ3 NTYubw0KIG9iai0kKENPTkZJR19JMkNfQU1ENzU2X1M0ODgyKQkrPSBpMmMtYW1kNzU2LXM0ODgy Lm8NCiBvYmotJChDT05GSUdfSTJDX0FNRDgxMTEpCSs9IGkyYy1hbWQ4MTExLm8NCitvYmotJChD T05GSUdfSTJDX0NQTSkJCSs9IGkyYy1jcG0ubw0KIG9iai0kKENPTkZJR19JMkNfQVUxNTUwKQkr PSBpMmMtYXUxNTUwLm8NCiBvYmotJChDT05GSUdfSTJDX0VMRUtUT1IpCSs9IGkyYy1lbGVrdG9y Lm8NCiBvYmotJChDT05GSUdfSTJDX0hZRFJBKQkJKz0gaTJjLWh5ZHJhLm8NCi0tLSAvZGV2L251 bGwNCisrKyBsaW51eC9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWNwbS5jDQpAQCAtMCwwICsxLDIx OSBAQA0KKy8qDQorICogQ1BNIEkyQyBpbnRlcmZhY2UuDQorICogQ29weXJpZ2h0IChjKSAyMDA0 IEphc29uIE1jTXVsbGFuIChqYXNvbi5tY211bGxhbkB0aW1lc3lzLmNvbSkNCisgKiBDb3B5cmln aHQgKGMpIDE5OTkgRGFuIE1hbGVrIChkbWFsZWtAamxjLm5ldCkuDQorICoNCisgKiBPbi1DaGlw IFBlcmlwaGVyYWwgdmVyc2lvbiBvZiB0aGUgTW90b3JvbGEgQ1BNIEkyQyBtYWNyb2NlbGwgZHJp dmVyLA0KKyAqIHVzZWQgb24gdGhlIE1QQzh4eCBhbmQgTVBDODV4eCBzZXJpZXMgcHJvY2Vzc29y cy4NCisgKi8NCisNCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQorI2luY2x1ZGUgPGxpbnV4 L2lvcG9ydC5oPg0KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCisjaW5jbHVkZSA8bGludXgv aW5pdC5oPg0KKyNpbmNsdWRlIDxsaW51eC9zdGRkZWYuaD4NCisjaW5jbHVkZSA8bGludXgvZGV2 aWNlLmg+DQorDQorI2luY2x1ZGUgPGxpbnV4L2kyYy5oPg0KKw0KKyNpbmNsdWRlIDxhc20vaW8u aD4NCisjaWZkZWYgQ09ORklHX0NQTTINCisjaW5jbHVkZSA8YXNtL2NwbTIuaD4NCisjZWxzZQ0K KyNpbmNsdWRlIDxhc20vY29tbXByb2MuaD4NCisjZW5kaWYNCisNCisjaWZkZWYgQ09ORklHX0ky Q19DUE1fQklUDQorI2luY2x1ZGUgPGxpbnV4L2kyYy1hbGdvLWJpdC5oPg0KKw0KKyNkZWZpbmUg Q1lDTEVfREVMQVkJMTANCisjZGVmaW5lIFRJTUVPVVQJCShIWiAvIDIpDQorI2VuZGlmIC8qIENP TkZJR19JMkNfQ1BNX0JJVCAqLw0KKw0KKyNpZmRlZiBDT05GSUdfQ1BNMg0KKy8qIFNEQSBhbmQg U0NMIGJpdHMgb24gcG9ydCBEICovDQorI2RlZmluZSBCSVRfU0RBICgxPDwxNikNCisjZGVmaW5l IEJJVF9TQ0wgKDE8PDE3KQ0KKyNlbmRpZiAvKiBDT05GSUdfQ1BNMiAqLw0KKw0KKyNpZmRlZiBD T05GSUdfSTJDX0NQTV9CSVQNCitzdGF0aWMgdm9pZCBiaXRfY3BtX3NldHNkYSh2b2lkICpkYXRh LCBpbnQgc3RhdGUpDQorew0KKwlpZiAoc3RhdGUpDQorCQljcG0yX2ltbXItPmltX2lvcG9ydC5p b3BfcGRhdGQgfD0gQklUX1NEQTsNCisJZWxzZQ0KKwkJY3BtMl9pbW1yLT5pbV9pb3BvcnQuaW9w X3BkYXRkICY9IH5CSVRfU0RBOw0KK30NCisNCitzdGF0aWMgdm9pZCBiaXRfY3BtX3NldHNjbCh2 b2lkICpkYXRhLCBpbnQgc3RhdGUpDQorew0KKwlpZiAoc3RhdGUpDQorCQljcG0yX2ltbXItPmlt X2lvcG9ydC5pb3BfcGRhdGQgfD0gQklUX1NDTDsNCisJZWxzZQ0KKwkJY3BtMl9pbW1yLT5pbV9p b3BvcnQuaW9wX3BkYXRkICY9IH5CSVRfU0NMOw0KK30NCisNCitzdGF0aWMgaW50IGJpdF9jcG1f Z2V0c2RhKHZvaWQgKmRhdGEpDQorew0KKwlyZXR1cm4gKGNwbTJfaW1tci0+aW1faW9wb3J0Lmlv cF9wZGF0ZCAmIEJJVF9TREEpID8gMSA6IDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgYml0X2NwbV9n ZXRzY2wodm9pZCAqZGF0YSkNCit7DQorCXJldHVybiAoY3BtMl9pbW1yLT5pbV9pb3BvcnQuaW9w X3BkYXRkICYgQklUX1NDTCkgPyAxIDogMDsNCit9DQorDQorDQorc3RhdGljIHN0cnVjdCBpMmNf YWxnb19iaXRfZGF0YSBjcG1fZGF0YSA9IHsNCisJLnNldHNkYSA9IGJpdF9jcG1fc2V0c2RhLA0K Kwkuc2V0c2NsID0gYml0X2NwbV9zZXRzY2wsDQorCS5nZXRzZGEgPSBiaXRfY3BtX2dldHNkYSwN CisJLmdldHNjbCA9IGJpdF9jcG1fZ2V0c2NsLA0KKwkudWRlbGF5ID0gQ1lDTEVfREVMQVksDQor CS5tZGVsYXkgPSBDWUNMRV9ERUxBWSwNCisJLnRpbWVvdXQgPSBUSU1FT1VUDQorfTsNCisjZWxz ZSAvKiAhQ09ORklHX0kyQ19DUE1fQklUICovDQorI2luY2x1ZGUgPGxpbnV4L2kyYy1hbGdvLWNw bS5oPg0KKw0KK3N0YXRpYyBzdHJ1Y3QgaTJjX2FsZ29fY3BtX2RhdGEgY3BtX2RhdGEgPSB7IC5p cnEgPSAtMSB9Ow0KKyNlbmRpZiAvKiAhQ09ORklHX0kyQ19DUE1fQklUICovDQorDQorc3RhdGlj IHN0cnVjdCBpMmNfYWRhcHRlciBjcG1fb3BzID0gew0KKwkub3duZXIJCT0gVEhJU19NT0RVTEUs DQorCS5uYW1lCQk9ICJjcG0taTJjIiwNCisJLmlkCQk9IEkyQ19IV19DUE0yLA0KKwkuYWxnb19k YXRhCT0gJmNwbV9kYXRhLA0KK307DQorDQorI2lmZGVmIENPTkZJR19JMkNfQ1BNX0JJVA0KK3N0 YXRpYyBpbnQgX19kZXZpbml0IGNwbV9pMmNfcHJvYmVfYml0YmFuZyhzdHJ1Y3QgZGV2aWNlICpk ZXYpDQorew0KKyNpZmRlZiBDT05GSUdfQ1BNMg0KKwlpZiAoY3BtMl9pbW1yLT5pbV9pb3BvcnQu aW9wX3BwYXJkICYgKEJJVF9TQ0wgfCBCSVRfU0RBKSkgew0KKwkJcHJpbnRrKEtFUk5fSU5GTyAi JXM6IENQTSBJL08gUG9ydCBEIGlzIG5vdCBjb25maWd1cmVkIGZvciBJMkMgYml0LWJhbmcgbW9k ZS5cbiIsIHBkZXYtPmJ1c19pZCk7DQorCQlyZXR1cm4gLUVOT0RFVjsNCisJfQ0KKw0KKwkvKiBD b25maWd1cmUgYXMgb3BlbiBkcmFpbi4uLiAqLw0KKwljcG0yX2ltbXItPmltX2lvcG9ydC5pb3Bf cG9kcmQgfD0gKEJJVF9TQ0wgfCBCSVRfU0RBKTsNCisNCisJLyogSW5wdXRzLi4uICovDQorCWNw bTJfaW1tci0+aW1faW9wb3J0LmlvcF9wZGlyZCAmPSB+KEJJVF9TQ0wgfCBCSVRfU0RBKTsNCisj ZW5kaWYNCisNCisJcmV0dXJuIGkyY19iaXRfYWRkX2J1cygmY3BtX29wcyk7DQorfQ0KKyNlbHNl DQorc3RhdGljIGludCBfX2RldmluaXQgY3BtX2kyY19wcm9iZV9jcG0oc3RydWN0IGRldmljZSAq ZGV2KQ0KK3sNCisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2Rl dmljZShkZXYpOw0KKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsNCisJaW50IGVycjsNCisJc3RydWN0 IGkyY19hbGdvX2NwbV9kYXRhICpkYXRhID0gJmNwbV9kYXRhOw0KKwliZF90ICpiaW5mbyA9IChi ZF90ICopX19yZXM7DQorDQorCWlmIChkYXRhLT5pcnEgIT0gLTEpDQorCQlyZXR1cm4gLUVCVVNZ Ow0KKw0KKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0s IDApOw0KKwlpZiAocmVzID09IE5VTEwpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJZGF0YS0+ aTJjID0gKGNwbV9pMmNfdCAqKWlvcmVtYXAocmVzLT5zdGFydCxzaXplb2YoY3BtX2kyY190KSk7 DQorCWlmIChkYXRhLT5pMmMgPT0gTlVMTCkNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwlyZXMg PSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDEpOw0KKwlpZiAo cmVzID09IE5VTEwpIHsNCisJCWlvdW5tYXAoKHZvaWQgKilkYXRhLT5pMmMpOw0KKwkJcmV0dXJu IC1FSU5WQUw7DQorCX0NCisNCisJZGF0YS0+aWlwID0gKGlpY190ICopaW9yZW1hcChyZXMtPnN0 YXJ0LHNpemVvZihpaWNfdCkpOw0KKwlpZiAoZGF0YS0+aWlwID09IE5VTEwpIHsNCisJCWlvdW5t YXAoKHZvaWQgKilkYXRhLT5pMmMpOw0KKwkJcmV0dXJuIC1FTk9NRU07DQorCX0NCisNCisJcmVz ID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfSVJRLCAwKTsNCisJaWYg KHJlcyA9PSBOVUxMKSB7DQorCQlpb3VubWFwKCh2b2lkICopZGF0YS0+aWlwKTsNCisJCWlvdW5t YXAoKHZvaWQgKilkYXRhLT5pMmMpOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0NCisNCisJZGF0 YS0+aXJxID0gcmVzLT5zdGFydDsNCisNCisJZGF0YS0+ZGV2aWNlID0gZGV2Ow0KKwlkYXRhLT5p bnRmcmVxID0gYmluZm8tPmJpX2ludGZyZXE7DQorDQorI2lmZGVmIENPTkZJR19DUE0yDQorCS8q IENvbmZpZ3VyZSBhcyBwZXJpcGhlcmFsLi4uICovDQorCWNwbTJfaW1tci0+aW1faW9wb3J0Lmlv cF9wcGFyZCB8PSAoQklUX1NDTCB8IEJJVF9TREEpOw0KKwljcG0yX2ltbXItPmltX2lvcG9ydC5p b3BfcHNvcmQgfD0gKEJJVF9TQ0wgfCBCSVRfU0RBKTsNCisNCisJLyogSW5wdXRzLi4uICovDQor CWNwbTJfaW1tci0+aW1faW9wb3J0LmlvcF9wZGlyZCAmPSB+KEJJVF9TQ0wgfCBCSVRfU0RBKTsN CisjZW5kaWYNCisNCisJZXJyID0gaTJjX2NwbV9hZGRfYnVzKCZjcG1fb3BzKTsNCisJaWYgKGVy ciA8IDApIHsNCisJCWRhdGEtPmlycT0tMTsNCisJCWlvdW5tYXAoKHZvaWQgKilkYXRhLT5paXAp Ow0KKwkJaW91bm1hcCgodm9pZCAqKWRhdGEtPmkyYyk7DQorCQlyZXR1cm4gZXJyOw0KKwl9DQor DQorCXJldHVybiAwOw0KK30NCisjZW5kaWYNCisNCisjaWZkZWYgQ09ORklHX0kyQ19DUE1fQklU DQorc3RhdGljIHZvaWQgX19kZXZleGl0IGNwbV9pMmNfcmVtb3ZlX2JpdGJhbmcoc3RydWN0IGRl dmljZSAqZGV2KQ0KK3sNCisJaTJjX2JpdF9kZWxfYnVzKCZjcG1fb3BzKTsNCit9DQorI2Vsc2UN CitzdGF0aWMgdm9pZCBfX2RldmV4aXQgY3BtX2kyY19yZW1vdmVfY3BtKHN0cnVjdCBkZXZpY2Ug KmRldikNCit7DQorCXN0cnVjdCBpMmNfYWxnb19jcG1fZGF0YSAqZGF0YSA9ICZjcG1fZGF0YTsN CisNCisJaTJjX2NwbV9kZWxfYnVzKCZjcG1fb3BzKTsNCisNCisJaW91bm1hcCgodm9pZCAqKWRh dGEtPmlpcCk7DQorCWlvdW5tYXAoKHZvaWQgKilkYXRhLT5pMmMpOw0KK30NCisjZW5kaWYNCisN CitzdGF0aWMgc3RydWN0IGRldmljZV9kcml2ZXIgY3BtX2kyY19kcml2ZXIgPSB7DQorCS5uYW1l CT0gImZzbC1jcG0taTJjIiwNCisJLmJ1cwk9ICZwbGF0Zm9ybV9idXNfdHlwZSwNCisjaWZkZWYg Q09ORklHX0kyQ19DUE1fQklUDQorCS5wcm9iZQk9IGNwbV9pMmNfcHJvYmVfYml0YmFuZywNCisJ LnJlbW92ZQk9IF9fZGV2ZXhpdF9wKGNwbV9pMmNfcmVtb3ZlX2JpdGJhbmcpLA0KKyNlbHNlDQor CS5wcm9iZQk9IGNwbV9pMmNfcHJvYmVfY3BtLA0KKwkucmVtb3ZlCT0gX19kZXZleGl0X3AoY3Bt X2kyY19yZW1vdmVfY3BtKSwNCisjZW5kaWYNCit9Ow0KKw0KK2ludCBfX2luaXQgY3BtX2kyY19p bml0KHZvaWQpDQorew0KKwlwcmludGsoS0VSTl9JTkZPICIlczogQ1BNMiBpMmMgZHJpdmVyXG4i LGNwbV9pMmNfZHJpdmVyLm5hbWUpOw0KKw0KKwlyZXR1cm4gZHJpdmVyX3JlZ2lzdGVyKCZjcG1f aTJjX2RyaXZlcik7DQorfQ0KKw0KK3ZvaWQgX19leGl0IGNwbV9pMmNfZXhpdCh2b2lkKQ0KK3sN CisJZHJpdmVyX3VucmVnaXN0ZXIoJmNwbV9pMmNfZHJpdmVyKTsNCit9DQorDQorTU9EVUxFX0xJ Q0VOU0UoIkdQTCIpOw0KKw0KK01PRFVMRV9BVVRIT1IoIkphc29uIE1jTXVsbGFuIDxqYXNvbi5t Y211bGxhbkB0aW1lc3lzLmNvbT4iKTsNCitNT0RVTEVfREVTQ1JJUFRJT04oIkkyQy1CdXMgKG9u IENQTSkgYWRhcHRlciByb3V0aW5lcyBmb3IgTVBDOHh4IGFuZCBNUEM4NXh4IGJvYXJkcyIpOw0K Kw0KK21vZHVsZV9pbml0KGNwbV9pMmNfaW5pdCk7DQorbW9kdWxlX2V4aXQoY3BtX2kyY19leGl0 KTsNCg0KLS0tIC9kZXYvbnVsbA0KKysrIGxpbnV4L2luY2x1ZGUvbGludXgvaTJjLWFsZ28tY3Bt LmgNCkBAIC0wLDAgKzEsNjQgQEANCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQorLyogaTJjLWFs Z28tbXBjLmggaTJjIGRyaXZlciBhbGdvcml0aG1zIGZvciBNUEMgQ1BNcwkJCSAgICAgKi8NCisv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tICovDQorDQorLyogJElkJCAqLw0KKw0KKyNpZm5kZWYgSTJDX0FM R09fTVBDX0gNCisjZGVmaW5lIEkyQ19BTEdPX01QQ19IIDENCisNCisjaW5jbHVkZSA8bGludXgv aTJjLmg+DQorDQorI2lmZGVmIENPTkZJR184NXh4DQorI2luY2x1ZGUgPGFzbS9tcGM4NXh4Lmg+ DQorI2luY2x1ZGUgPGFzbS9jcG0yLmg+DQorI2luY2x1ZGUgPGFzbS9pbW1hcF84NXh4Lmg+DQor DQordHlwZWRlZiBpMmNfY3BtMl90IGNwbV9pMmNfdDsNCit0eXBlZGVmIGlpY190IGNwbV9paWNf dDsNCisNCisjZWxpZiBkZWZpbmVkKENPTkZJR184eHgpDQorI2luY2x1ZGUgPGFzbS9tcGM4eHgu aD4NCisjaW5jbHVkZSA8YXNtL2NvbW1wcm9jLmg+DQorDQordHlwZWRlZiBpMmM4eHhfdCBjcG1f aTJjX3Q7DQordHlwZWRlZiBpaWNfdCBjcG1faWljX3Q7DQorI2VuZGlmDQorDQorI2RlZmluZSBJ Mk1PRF9FTgkweDAxDQorI2RlZmluZSBJMk1PRF9QRElWX01BU0sJMHgwNg0KKyNkZWZpbmUgICBJ Mk1PRF9QRElWXzQJMHgwNg0KKyNkZWZpbmUgICBJMk1PRF9QRElWXzgJMHgwNA0KKyNkZWZpbmUg ICBJMk1PRF9QRElWXzE2CTB4MDINCisjZGVmaW5lICAgSTJNT0RfUERJVl8zMgkweDAwDQorI2Rl ZmluZSBJMk1PRF9GTFQJMHgwOA0KKyNkZWZpbmUgSTJNT0RfR0NECTB4MTANCisjZGVmaW5lIEky TU9EX1JFVkQJMHgyMA0KKw0KKyNkZWZpbmUgSTJDT01fTVMJMHgwMQ0KKyNkZWZpbmUgSTJDT01f U1RSCTB4ODANCisNCisjZGVmaW5lIEkyQ0VSX01BU0sJMHgxNw0KKyNkZWZpbmUgSTJDRVJfVFhF CTB4MTANCisjZGVmaW5lIEkyQ0VSX0JTWQkweDA0DQorI2RlZmluZSBJMkNFUl9UWEIJMHgwMg0K KyNkZWZpbmUgSTJDRVJfUlhCCTB4MDENCisNCitzdHJ1Y3QgaTJjX2FsZ29fY3BtX2RhdGEgew0K KwlzdHJ1Y3QgZGV2aWNlCQkqZGV2aWNlOw0KKyAgICAgICAgZG1hX2FkZHJfdAkJZHBfb2Zmc2V0 Ow0KKyAgICAgICAgaW50IAkJCXJlbG9jOw0KKyAgICAgICAgdm9sYXRpbGUgY3BtX2kyY190CSpp MmM7DQorICAgICAgICB2b2xhdGlsZSBjcG1faWljX3QJKmlpcDsNCisJaW50CQkJaXJxOw0KKwlp bnQJCQlpbnRmcmVxOw0KKyAgICAgICAgdWludDhfdAkJCSp0ZW1wOw0KKw0KKwl3YWl0X3F1ZXVl X2hlYWRfdAl3YWl0Ow0KKwlpbnQJCQlzdGF0dXM7DQorfTsNCisNCitpbnQgaTJjX2NwbV9hZGRf YnVzKHN0cnVjdCBpMmNfYWRhcHRlciAqKTsNCitpbnQgaTJjX2NwbV9kZWxfYnVzKHN0cnVjdCBp MmNfYWRhcHRlciAqKTsNCisNCisjZW5kaWYgLyogSTJDX0FMR09fQ1BNX0ggKi8NCg0KLS0tIGxp bnV4LW9yaWcvaW5jbHVkZS9saW51eC9pMmMtaWQuaA0KKysrIGxpbnV4L2luY2x1ZGUvbGludXgv aTJjLWlkLmgNCkBAIC0yMDEsNiArMjAxLDcgQEANCiAjZGVmaW5lIEkyQ19BTEdPX1NJQllURSAw eDE1MDAwMAkvKiBCcm9hZGNvbSBTaUJ5dGUgU09DcwkJKi8NCiAjZGVmaW5lIEkyQ19BTEdPX1NH SQkweDE2MDAwMCAgICAgICAgLyogU0dJIGFsZ29yaXRobSAgICAgICAgICAgICAgICAqLw0KICNk ZWZpbmUgSTJDX0FMR09fQVUxNTUwCTB4MTcwMDAwICAgICAgICAvKiBBdTE1NTAgUFNDIGFsZ29y aXRobQkJKi8NCisjZGVmaW5lIEkyQ19BTEdPX0NQTTIJMHgxODAwMDAJLyogTVBDOHh4eCBhbmQg TVBDOHh4IENQTSBJMkMgKi8NCiANCiAjZGVmaW5lIEkyQ19BTEdPX0VYUAkweDgwMDAwMAkvKiBl eHBlcmltZW50YWwJCQkqLw0KIA0KQEAgLTI1Myw2ICsyNTQsOSBAQA0KIC8qIC0tLSBBQ1BJIEVt YmVkZGVkIGNvbnRyb2xsZXIgYWxnb3JpdGhtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICovDQogI2RlZmluZSBJMkNfSFdfQUNQSV9FQyAgICAgICAgICAweDAwDQogDQorLyogLS0tIE1v dG9yb2xhIE1QQyBDUE0yIEkyQyBhZGFwdGVycyAtLSAqLw0KKyNkZWZpbmUgSTJDX0hXX0NQTTIJ MHgwMA0KKw0KIC8qIC0tLSBNUEM4MjR4IFBvd2VyUEMgYWRhcHRlcnMJCQkJCQkqLw0KICNkZWZp bmUgSTJDX0hXX01QQzgyNFggMHgwMAkvKiBNb3Rvcm9sYSA4MjQwIC8gODI0NSAgICAgICAgICAg ICAgICAgKi8NCiANCm== --=-fmxhV2iNFK/ZH8wRhJOo-- --=-BJulNEGbcuD7NMpoWAgM Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBCQIo+8/0vJ5szK6kRAtQjAKCzmpBdd2goHldW432gRktRKKK/RACfadOH bcsM/IZvDtfq69EuboR3RXA= =76J7 -----END PGP SIGNATURE----- --=-BJulNEGbcuD7NMpoWAgM--