Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S270998AbTGPKmj (ORCPT ); Wed, 16 Jul 2003 06:42:39 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S270999AbTGPKmj (ORCPT ); Wed, 16 Jul 2003 06:42:39 -0400 Received: from dialin-145-254-201-018.arcor-ip.net ([145.254.201.18]:55512 "EHLO tek01.teknet") by vger.kernel.org with ESMTP id S270998AbTGPKmX (ORCPT ); Wed, 16 Jul 2003 06:42:23 -0400 Date: Wed, 16 Jul 2003 12:57:03 +0200 (CEST) From: Thorsten Knabe X-X-Sender: tek@tek01.teknet To: Linus Torvalds , linux-kernel@vger.kernel.org Subject: [PATCH] 2.6.0-test1/sound/oss/ad1816.c Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="655617-567491154-1058353023=:26143" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 44772 Lines: 755 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --655617-567491154-1058353023=:26143 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi. The following patch fixes various problems with the AD1816 sound driver in 2.6.0-test1: * Compilation errors with CONFIG_PNP enabled fixed. * PNP specific code rewritten. * SMP fixes. * DMA resource handling fixes. * Other minor code cleanup. Patch attached. Please apply. Regards Thorsten -- E-Mail: linux@thorsten-knabe.de ___ WWW: http://linux.thorsten-knabe.de | | / |horsten |/\nabe --655617-567491154-1058353023=:26143 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="ad1816.c-2.6.0-test1.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="ad1816.c-2.6.0-test1.patch" LS0tIGxpbnV4LTIuNi4wLXRlc3QxL3NvdW5kL29zcy9hZDE4MTYuYy1vcmln CVR1ZSBKdWwgMTUgMjE6MTU6MzcgMjAwMw0KKysrIGxpbnV4LTIuNi4wLXRl c3QxL3NvdW5kL29zcy9hZDE4MTYuYwlXZWQgSnVsIDE2IDAwOjE4OjM2IDIw MDMNCkBAIC0xLDE1ICsxLDE1IEBADQogLyoNCiAgKg0KLSAqIEFEMTgxNiBs b3dsZXZlbCBzb3VuZCBkcml2ZXIgZm9yIExpbnV4IDIuMi4wIGFuZCBhYm92 ZQ0KKyAqIEFEMTgxNiBsb3dsZXZlbCBzb3VuZCBkcml2ZXIgZm9yIExpbnV4 IDIuNi4wIGFuZCBhYm92ZQ0KICAqDQotICogQ29weXJpZ2h0IChDKSAxOTk4 IGJ5IFRob3JzdGVuIEtuYWJlIDx0ZWtAcmJnLmluZm9ybWF0aWsudHUtZGFy bXN0YWR0LmRlPg0KKyAqIENvcHlyaWdodCAoQykgMTk5OC0yMDAzIGJ5IFRo b3JzdGVuIEtuYWJlIDxsaW51eEB0aG9yc3Rlbi1rbmFiZS5kZT4NCiAgKg0K ICAqIEJhc2VkIG9uIHRoZSBDUzQyMzIvQUQxODQ4IGRyaXZlciBDb3B5cmln aHQgKEMpIGJ5IEhhbm51IFNhdm9sYWluZW4gMTk5My0xOTk2DQogICoNCiAg Kg0KLSAqIHZlcnNpb246IDEuMy4xDQotICogc3RhdHVzOiBleHBlcmltZW50 YWwNCi0gKiBkYXRlOiAxOTk5LzQvMTgNCisgKiB2ZXJzaW9uOiAxLjUNCisg KiBzdGF0dXM6IGJldGENCisgKiBkYXRlOiAyMDAzLzA3LzE1DQogICoNCiAg KiBDaGFuZ2VzOg0KICAqCU9sZWcgRHJva2luOiBTb21lIGNsZWFudXAgb2Yg bG9hZC91bmxvYWQgZnVuY3Rpb25zLgkxOTk4LzExLzI0DQpAQCAtMzAsOCAr MzAsMTcgQEANCiAgKglDaHJpc3RvcGggSGVsbHdpZzogQWRkZWQgaXNhcG5w IHN1cHBvcnQJCQkyMDAwLzAzLzE1DQogICoNCiAgKglBcm5hbGRvIENhcnZh bGhvIGRlIE1lbG86IGdldCByaWQgb2YgY2hlY2tfcmVnaW9uCTIwMDEvMTAv MDcNCisgKiAgICAgIA0KKyAqICAgICAgVGhvcnN0ZW4gS25hYmU6IENvbXBp bGluZyB3aXRoIENPTkZJR19QTlAgZW5hYmxlZA0KKyAqCXdvcmtzIGFnYWlu LiBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIG1vcmUgdGhhbiBvbmUgDQor ICoJQUQxODE2IHNvdW5kIGNhcmQuIFNhbXBsZSByYXRlIG5vdyBtYXkgYmUg Y2hhbmdlZCBkdXJpbmcNCisgKglwbGF5YmFjay9jYXB0dXJlLiBwcmludGso KSB1c2VzIGxvZyBsZXZlbHMgZXZlcnl3aGVyZS4NCisgKglTTVAgZml4ZXMu IERNQSBoYW5kbGluZyBmaXhlcy4NCisgKglPdGhlciBtaW5vciBjb2RlIGNs ZWFudXAuCQkJCTIwMDMvMDcvMTUNCisgKg0KICAqLw0KIA0KKw0KICNpbmNs dWRlIDxsaW51eC9jb25maWcuaD4NCiAjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+DQogI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4NCkBAIC00Miw5ICs1MSw2 IEBADQogI2luY2x1ZGUgInNvdW5kX2NvbmZpZy5oIg0KIA0KICNkZWZpbmUg REVCVUdOT0lTRSh4KQ0KLSNkZWZpbmUgREVCVUdJTkZPKHgpDQotI2RlZmlu ZSBERUJVR0xPRyh4KQ0KLSNkZWZpbmUgREVCVUdXQVJOKHgpDQogDQogI2Rl ZmluZSBDSEVDS19GT1JfUE9XRVIgeyBpbnQgdGltZW91dD0xMDA7IFwNCiAg IHdoaWxlICh0aW1lb3V0ID4gMCAmJiAoaW5iKGRldmMtPmJhc2UpJjB4ODAp IT0gMHg4MCkge1wNCkBAIC02MywyMSArNjksMjEgQEANCiAJaW50ICAgICAg ICAgICAgZG1hX3BsYXliYWNrOw0KICAgICAgICAgaW50ICAgICAgICAgICAg ZG1hX2NhcHR1cmU7DQogICANCi0gICAgICAgIGludCAgICAgICAgICAgIHNw ZWVkOyAgICAgICAgIC8qIG9wZW4gKi8NCisJaW50ICAgICAgICAgICAgb3Bl bmVkOyAgICAgICAgIC8qIG9wZW4gKi8NCisgICAgICAgIGludCAgICAgICAg ICAgIHNwZWVkOwkNCiAJaW50ICAgICAgICAgICAgY2hhbm5lbHM7DQogCWlu dCAgICAgICAgICAgIGF1ZGlvX2Zvcm1hdDsNCi0JdW5zaWduZWQgY2hhciAg Zm9ybWF0X2JpdHM7DQogICAgICAgICBpbnQgICAgICAgICAgICBhdWRpb19t b2RlOyANCi0JaW50ICAgICAgICAgICAgb3BlbmVkOw0KICAgDQogICAgICAg ICBpbnQgICAgICAgICAgICByZWNtYXNrOyAgICAgICAgLyogc2V0dXAgKi8N CisJdW5zaWduZWQgY2hhciAgZm9ybWF0X2JpdHM7DQogCWludCAgICAgICAg ICAgIHN1cHBvcnRlZF9kZXZpY2VzOw0KIAlpbnQgICAgICAgICAgICBzdXBw b3J0ZWRfcmVjX2RldmljZXM7DQogCXVuc2lnbmVkIHNob3J0IGxldmVsc1tT T1VORF9NSVhFUl9OUkRFVklDRVNdOw0KKwkJCQkJLyogbWlzYyAqLw0KKwlz dHJ1Y3QgcG5wX2RldiAqcG5wZGV2OwkgLyogY29uZmlndXJlZCB2aWEgcG5w ICovDQogICAgICAgICBpbnQgICAgICAgICAgICBkZXZfbm87ICAgLyogdGhp cyBpcyB0aGUgIyBpbiBhdWRpb19kZXZzIGFuZCBOT1QgDQogCQkJCSAgICBp biBhZDE4MTZfaW5mbyAqLw0KLQlpbnQgICAgICAgICAgICBpcnFfb2s7DQot CWludCAgICAgICAgICAgICpvc3A7DQogCXNwaW5sb2NrX3QJbG9jazsgIA0K IH0gYWQxODE2X2luZm87DQogDQpAQCAtODUsMTIgKzkxLDYgQEANCiBzdGF0 aWMgaW50IGFkMTgxNl9jbG9ja2ZyZXEgPSAzMzAwMDsNCiBzdGF0aWMgaW50 IG9wdGlvbnM7DQogDQotLyogZm9yIGJhY2t3YXJkIG1hcHBpbmcgb2YgaXJx IHRvIHNvdW5kIGRldmljZSAqLw0KLQ0KLXN0YXRpYyB2b2xhdGlsZSBjaGFy IGlycTJkZXZbMTddID0gey0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAt MSwNCi0JCQkJICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwg LTF9Ow0KLQ0KLQ0KIC8qIHN1cHBvcnRlZCBhdWRpbyBmb3JtYXRzICovDQog c3RhdGljIGludCAgYWRfZm9ybWF0X21hc2sgPQ0KIEFGTVRfVTggfCBBRk1U X1MxNl9MRSB8IEFGTVRfUzE2X0JFIHwgQUZNVF9NVV9MQVcgfCBBRk1UX0Ff TEFXOw0KQEAgLTEwNSwzMyArMTA1LDIyIEBADQogDQogc3RhdGljIGludCBh ZF9yZWFkIChhZDE4MTZfaW5mbyAqIGRldmMsIGludCByZWcpDQogew0KLQl1 bnNpZ25lZCBsb25nICAgZmxhZ3M7DQogCWludCByZXN1bHQ7DQogCQ0KIAlD SEVDS19GT1JfUE9XRVI7DQotDQotCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZj LT5sb2NrLGZsYWdzKTsgLyogbWFrZSByZWdpc3RlciBhY2Nlc3MgYXRvbWlj ICovDQogCW91dGIgKCh1bnNpZ25lZCBjaGFyKSAocmVnICYgMHgzZiksIGRl dmMtPmJhc2UrMCk7DQogCXJlc3VsdCA9IGluYihkZXZjLT5iYXNlKzIpOw0K IAlyZXN1bHQrPSBpbmIoZGV2Yy0+YmFzZSszKTw8ODsNCi0Jc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmZGV2Yy0+bG9jayxmbGFncyk7DQotCQ0KIAlyZXR1 cm4gKHJlc3VsdCk7DQogfQ0KIA0KIA0KIHN0YXRpYyB2b2lkIGFkX3dyaXRl IChhZDE4MTZfaW5mbyAqIGRldmMsIGludCByZWcsIGludCBkYXRhKQ0KIHsN Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsNCi0JDQogCUNIRUNLX0ZPUl9QT1dF UjsNCi0JDQotCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZjLT5sb2NrLGZsYWdz KTsgLyogbWFrZSByZWdpc3RlciBhY2Nlc3MgYXRvbWljICovDQogCW91dGIg KCh1bnNpZ25lZCBjaGFyKSAocmVnICYgMHhmZiksIGRldmMtPmJhc2UrMCk7 DQogCW91dGIgKCh1bnNpZ25lZCBjaGFyKSAoZGF0YSAmIDB4ZmYpLGRldmMt PmJhc2UrMik7DQogCW91dGIgKCh1bnNpZ25lZCBjaGFyKSAoKGRhdGE+Pjgp JjB4ZmYpLGRldmMtPmJhc2UrMyk7DQotCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmRldmMtPmxvY2ssZmxhZ3MpOw0KLQ0KIH0NCiANCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tICovDQpAQCAtMTQ0LDcgKzEzMyw3IEBADQogCWFk MTgxNl9pbmZvICAgICpkZXZjID0gKGFkMTgxNl9pbmZvICopIGF1ZGlvX2Rl dnNbZGV2XS0+ZGV2YzsNCiAJdW5zaWduZWQgY2hhciBidWZmZXI7DQogCQ0K LQlERUJVR0lORk8gKHByaW50aygiYWQxODE2OiBoYWx0X2lucHV0IGNhbGxl ZFxuIikpOw0KKwlERUJVR05PSVNFKHByaW50ayhLRVJOX0RFQlVHICJhZDE4 MTY6IGhhbHRfaW5wdXQgY2FsbGVkXG4iKSk7DQogCQ0KIAlzcGluX2xvY2tf aXJxc2F2ZSgmZGV2Yy0+bG9jayxmbGFncyk7IA0KIAkNCkBAIC0xNzYsNyAr MTY1LDcgQEANCiAJDQogCXVuc2lnbmVkIGNoYXIgYnVmZmVyOw0KIA0KLQlE RUJVR0lORk8gKHByaW50aygiYWQxODE2OiBoYWx0X291dHB1dCBjYWxsZWQh XG4iKSk7DQorCURFQlVHTk9JU0UocHJpbnRrKEtFUk5fREVCVUcgImFkMTgx NjogaGFsdF9vdXRwdXQgY2FsbGVkIVxuIikpOw0KIA0KIAlzcGluX2xvY2tf aXJxc2F2ZSgmZGV2Yy0+bG9jayxmbGFncyk7IA0KIAkvKiBNdXRlIHBjbSBv dXRwdXQgKi8NCkBAIC0yMTAsNyArMTk5LDcgQEANCiAJdW5zaWduZWQgbG9u ZyBjbnQ7DQogCWFkMTgxNl9pbmZvICAgICpkZXZjID0gKGFkMTgxNl9pbmZv ICopIGF1ZGlvX2RldnNbZGV2XS0+ZGV2YzsNCiAJDQotCURFQlVHSU5GTyhw cmludGsoImFkMTgxNjogb3V0cHV0X2Jsb2NrIGNhbGxlZCBidWY9JWxkIGNv dW50PSVkIGZsYWdzPSVkXG4iLGJ1Zixjb3VudCxpbnRyZmxhZykpOw0KKwlE RUJVR05PSVNFKHByaW50ayhLRVJOX0RFQlVHICJhZDE4MTY6IG91dHB1dF9i bG9jayBjYWxsZWQgYnVmPSVsZCBjb3VudD0lZCBmbGFncz0lZFxuIixidWYs Y291bnQsaW50cmZsYWcpKTsNCiAgIA0KIAljbnQgPSBjb3VudC80IC0gMTsN CiAgIA0KQEAgLTIzMSw3ICsyMjAsNyBAQA0KIAl1bnNpZ25lZCBsb25nICBj bnQ7DQogCWFkMTgxNl9pbmZvICAgICpkZXZjID0gKGFkMTgxNl9pbmZvICop IGF1ZGlvX2RldnNbZGV2XS0+ZGV2YzsNCiAJDQotCURFQlVHSU5GTyhwcmlu dGsoImFkMTgxNjogc3RhcnRfaW5wdXQgY2FsbGVkIGJ1Zj0lbGQgY291bnQ9 JWQgZmxhZ3M9JWRcbiIsYnVmLGNvdW50LGludHJmbGFnKSk7DQorCURFQlVH Tk9JU0UocHJpbnRrKEtFUk5fREVCVUcgImFkMTgxNjogc3RhcnRfaW5wdXQg Y2FsbGVkIGJ1Zj0lbGQgY291bnQ9JWQgZmxhZ3M9JWRcbiIsYnVmLGNvdW50 LGludHJmbGFnKSk7DQogDQogCWNudCA9IGNvdW50LzQgLSAxOw0KIA0KQEAg LTIzOSw3ICsyMjgsNiBAQA0KIA0KIAkvKiBzZXQgdHJhbnNmZXIgY291bnQg Ki8NCiAJYWRfd3JpdGUgKGRldmMsIDEwLCBjbnQgJiAweGZmZmYpOyANCi0N CiAJZGV2Yy0+YXVkaW9fbW9kZSB8PSBQQ01fRU5BQkxFX0lOUFVUOw0KIAlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZjLT5sb2NrLGZsYWdzKTsNCiB9 DQpAQCAtMjUxLDMzICsyMzksMTkgQEANCiAJYWQxODE2X2luZm8gICAgKmRl dmMgPSAoYWQxODE2X2luZm8gKikgYXVkaW9fZGV2c1tkZXZdLT5kZXZjOw0K IAl1bnNpZ25lZCBjaGFyIGZtdF9iaXRzOw0KIAkNCi0JREVCVUdJTkZPIChw cmludGsgKCJhZDE4MTY6IHByZXBhcmVfZm9yX2lucHV0IGNhbGxlZDogYnNp emU9JWQgYmNvdW50PSVkXG4iLGJzaXplLGJjb3VudCkpOw0KKwlERUJVR05P SVNFKHByaW50ayhLRVJOX0RFQlVHICJhZDE4MTY6IHByZXBhcmVfZm9yX2lu cHV0IGNhbGxlZDogYnNpemU9JWQgYmNvdW50PSVkXG4iLGJzaXplLGJjb3Vu dCkpOw0KIA0KIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2Yy0+bG9jayxmbGFn cyk7DQotCQ0KIAlmbXRfYml0cz0gKGRldmMtPmZvcm1hdF9iaXRzJjB4Nyk8 PDM7DQogCQ0KIAkvKiBzZXQgbW9uby9zdGVyZW8gbW9kZSAqLw0KIAlpZiAo ZGV2Yy0+Y2hhbm5lbHMgPiAxKSB7DQogCQlmbXRfYml0cyB8PTB4NDsNCiAJ fQ0KLQ0KIAkvKiBzZXQgTW9uby9TdGVyZW8gaW4gcGxheWJhY2svY2FwdHVy ZSByZWdpc3RlciAqLw0KIAlvdXRiKCAoaW5iKGRldmMtPmJhc2UrOCkgJiB+ MHgzQyl8Zm10X2JpdHMsIGRldmMtPmJhc2UrOCk7IA0KIAlvdXRiKCAoaW5i KGRldmMtPmJhc2UrOSkgJiB+MHgzQyl8Zm10X2JpdHMsIGRldmMtPmJhc2Ur OSk7DQotICANCi0JLyogSWYgY29tcGlsZWQgaW50byBrZXJuZWwsIEFEMTgx Nl9DTE9DSyBpcyBkZWZpbmVkLCBzbyB1c2UgaXQgKi8NCi0jaWZkZWYgQUQx ODE2X0NMT0NLIA0KLQlhZDE4MTZfY2xvY2tmcmVxPUFEMTgxNl9DTE9DSzsN Ci0jZW5kaWYNCi0NCi0JLyogY2FwdHVyZS9wbGF5YmFjayBmcmVxdWVuY3kg Y29ycmVjdGlvbiBmb3Igc291bmRjYXJkcyANCi0JICAgd2l0aCBjbG9jayBj aGlwcyAhPSAzM01IeiAoYWxsb3dlZCByYW5nZSA1IC0gMTAwIGtIeikgKi8N CiANCi0JaWYgKGFkMTgxNl9jbG9ja2ZyZXE8NTAwMCB8fCBhZDE4MTZfY2xv Y2tmcmVxPjEwMDAwMCkgew0KLQkJYWQxODE2X2Nsb2NrZnJlcT0zMzAwMDsN Ci0JfQ0KLQkNCiAJZnJlcT0oKHVuc2lnbmVkIGludClkZXZjLT5zcGVlZCoz MzAwMCkvYWQxODE2X2Nsb2NrZnJlcTsgDQogDQogCS8qIHdyaXRlIHBsYXli YWNrL2NhcHR1cmUgc3BlZWRzICovDQpAQCAtMjk3LDcgKzI3MSw3IEBADQog CWFkMTgxNl9pbmZvICAgICpkZXZjID0gKGFkMTgxNl9pbmZvICopIGF1ZGlv X2RldnNbZGV2XS0+ZGV2YzsNCiAJdW5zaWduZWQgY2hhciBmbXRfYml0czsN CiANCi0JREVCVUdJTkZPIChwcmludGsgKCJhZDE4MTY6IHByZXBhcmVfZm9y X291dHB1dCBjYWxsZWQ6IGJzaXplPSVkIGJjb3VudD0lZFxuIixic2l6ZSxi Y291bnQpKTsNCisJREVCVUdOT0lTRShwcmludGsoS0VSTl9ERUJVRyAiYWQx ODE2OiBwcmVwYXJlX2Zvcl9vdXRwdXQgY2FsbGVkOiBic2l6ZT0lZCBiY291 bnQ9JWRcbiIsYnNpemUsYmNvdW50KSk7DQogDQogCXNwaW5fbG9ja19pcnFz YXZlKCZkZXZjLT5sb2NrLGZsYWdzKTsNCiANCkBAIC0zMTEsMTcgKzI4NSw2 IEBADQogCW91dGIoIChpbmIoZGV2Yy0+YmFzZSs4KSAmIH4weDNDKXxmbXRf Yml0cywgZGV2Yy0+YmFzZSs4KTsgDQogCW91dGIoIChpbmIoZGV2Yy0+YmFz ZSs5KSAmIH4weDNDKXxmbXRfYml0cywgZGV2Yy0+YmFzZSs5KTsNCiAgIA0K LSNpZmRlZiBBRDE4MTZfQ0xPQ0sgDQotCWFkMTgxNl9jbG9ja2ZyZXE9QUQx ODE2X0NMT0NLOw0KLSNlbmRpZg0KLQ0KLQkvKiBjYXB0dXJlL3BsYXliYWNr IGZyZXF1ZW5jeSBjb3JyZWN0aW9uIGZvciBzb3VuZGNhcmRzIA0KLQkgICB3 aXRoIGNsb2NrIGNoaXBzICE9IDMzTUh6IChhbGxvd2VkIHJhbmdlIDUgLSAx MDAga0h6KSovDQotDQotCWlmIChhZDE4MTZfY2xvY2tmcmVxPDUwMDAgfHwg YWQxODE2X2Nsb2NrZnJlcT4xMDAwMDApIHsNCi0JCWFkMTgxNl9jbG9ja2Zy ZXE9MzMwMDA7DQotCX0NCi0gIA0KIAlmcmVxPSgodW5zaWduZWQgaW50KWRl dmMtPnNwZWVkKjMzMDAwKS9hZDE4MTZfY2xvY2tmcmVxOyANCiAJDQogCS8q IHdyaXRlIHBsYXliYWNrL2NhcHR1cmUgc3BlZWRzICovDQpAQCAtMzQwLDcg KzMwMyw3IEBADQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogCWFkMTgxNl9p bmZvICAgICpkZXZjID0gKGFkMTgxNl9pbmZvICopIGF1ZGlvX2RldnNbZGV2 XS0+ZGV2YzsNCiANCi0JREVCVUdJTkZPIChwcmludGsoImFkMTgxNjogdHJp Z2dlciBjYWxsZWQhIChkZXZjPSVkLGRldmMtPmJhc2U9JWRcbiIsIGRldmMs IGRldmMtPmJhc2UpKTsNCisJREVCVUdOT0lTRShwcmludGsoS0VSTl9ERUJV RyAiYWQxODE2OiB0cmlnZ2VyIGNhbGxlZCEgKGRldmM9JWQsZGV2Yy0+YmFz ZT0lZFxuIiwgZGV2YywgZGV2Yy0+YmFzZSkpOw0KIA0KIAkvKiBtb2RlIG1h eSBoYXZlIGNoYW5nZWQgKi8NCiANCkBAIC0zODgsMTAgKzM1MSwxNyBAQA0K IC8qIHNldCBwbGF5YmFjayBzcGVlZCAqLw0KIHN0YXRpYyBpbnQgYWQxODE2 X3NldF9zcGVlZCAoaW50IGRldiwgaW50IGFyZykNCiB7DQorCXVuc2lnbmVk IGxvbmcgZmxhZ3M7DQorCXVuc2lnbmVkIGludCBmcmVxOw0KKwlpbnQgcmV0 Ow0KKw0KIAlhZDE4MTZfaW5mbyAgICAqZGV2YyA9IChhZDE4MTZfaW5mbyAq KSBhdWRpb19kZXZzW2Rldl0tPmRldmM7DQogCQ0KKwlzcGluX2xvY2tfaXJx c2F2ZSgmZGV2Yy0+bG9jaywgZmxhZ3MpOw0KIAlpZiAoYXJnID09IDApIHsN Ci0JCXJldHVybiBkZXZjLT5zcGVlZDsNCisJCXJldCA9IGRldmMtPnNwZWVk Ow0KKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2Yy0+bG9jaywgZmxh Z3MpOw0KKwkJcmV0dXJuIHJldDsNCiAJfQ0KIAkvKiByYW5nZSBjaGVja2lu ZyAqLw0KIAlpZiAoYXJnIDwgNDAwMCkgew0KQEAgLTQwMCwxNCArMzcwLDIz IEBADQogCWlmIChhcmcgPiA1NTAwMCkgew0KIAkJYXJnID0gNTUwMDA7DQog CX0NCi0NCiAJZGV2Yy0+c3BlZWQgPSBhcmc7DQotCXJldHVybiBkZXZjLT5z cGVlZDsNCisNCisJLyogY2hhbmdlIHNwZWVkIGR1cmluZyBwbGF5YmFjayAq Lw0KKwlmcmVxPSgodW5zaWduZWQgaW50KWRldmMtPnNwZWVkKjMzMDAwKS9h ZDE4MTZfY2xvY2tmcmVxOyANCisJLyogd3JpdGUgcGxheWJhY2svY2FwdHVy ZSBzcGVlZHMgKi8NCisJYWRfd3JpdGUgKGRldmMsIDIsIGZyZXEgJiAweGZm ZmYpOwkNCisJYWRfd3JpdGUgKGRldmMsIDMsIGZyZXEgJiAweGZmZmYpOwkN CisNCisJcmV0ID0gZGV2Yy0+c3BlZWQ7DQorCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmRldmMtPmxvY2ssIGZsYWdzKTsNCisJcmV0dXJuIHJldDsNCiAN CiB9DQogDQogc3RhdGljIHVuc2lnbmVkIGludCBhZDE4MTZfc2V0X2JpdHMg KGludCBkZXYsIHVuc2lnbmVkIGludCBhcmcpDQogew0KKwl1bnNpZ25lZCBs b25nIGZsYWdzOw0KIAlhZDE4MTZfaW5mbyAgICAqZGV2YyA9IChhZDE4MTZf aW5mbyAqKSBhdWRpb19kZXZzW2Rldl0tPmRldmM7DQogCQ0KIAlzdGF0aWMg c3RydWN0IGZvcm1hdF90Ymwgew0KQEAgLTQyOCwxMCArNDA3LDEzIEBADQog DQogCWludCAgaSwgbiA9IHNpemVvZiAoZm9ybWF0MmJpdHMpIC8gc2l6ZW9m IChzdHJ1Y3QgZm9ybWF0X3RibCk7DQogDQorCXNwaW5fbG9ja19pcnFzYXZl KCZkZXZjLT5sb2NrLCBmbGFncyk7DQogCS8qIHJldHVybiBjdXJyZW50IGZv cm1hdCAqLw0KLQlpZiAoYXJnID09IDApDQotCQlyZXR1cm4gZGV2Yy0+YXVk aW9fZm9ybWF0Ow0KLQkNCisJaWYgKGFyZyA9PSAwKSB7DQorCSAgCWFyZyA9 IGRldmMtPmF1ZGlvX2Zvcm1hdDsNCisJCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmRldmMtPmxvY2ssIGZsYWdzKTsNCisJCXJldHVybiBhcmc7DQorCX0N CiAJZGV2Yy0+YXVkaW9fZm9ybWF0ID0gYXJnOw0KIA0KIAkvKiBzZWFyY2gg bWF0Y2hpbmcgZm9ybWF0IGJpdHMgKi8NCkBAIC00MzksMTIgKzQyMSwxNSBA QA0KIAkJaWYgKGZvcm1hdDJiaXRzW2ldLmZvcm1hdCA9PSBhcmcpIHsNCiAJ CQlkZXZjLT5mb3JtYXRfYml0cyA9IGZvcm1hdDJiaXRzW2ldLmJpdHM7DQog CQkJZGV2Yy0+YXVkaW9fZm9ybWF0ID0gYXJnOw0KKwkJCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmRldmMtPmxvY2ssIGZsYWdzKTsNCiAJCQlyZXR1cm4g YXJnOw0KIAkJfQ0KIA0KIAkvKiBTdGlsbCBoYW5naW5nIGhlcmUuIFNvbWV0 aGluZyBtdXN0IGJlIHRlcnJpYmx5IHdyb25nICovDQogCWRldmMtPmZvcm1h dF9iaXRzID0gMDsNCi0JcmV0dXJuIGRldmMtPmF1ZGlvX2Zvcm1hdCA9IEFG TVRfVTg7DQorCWRldmMtPmF1ZGlvX2Zvcm1hdCA9IEFGTVRfVTg7DQorCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldmMtPmxvY2ssIGZsYWdzKTsNCisJ cmV0dXJuKEFGTVRfVTgpOyANCiB9DQogDQogc3RhdGljIHNob3J0IGFkMTgx Nl9zZXRfY2hhbm5lbHMgKGludCBkZXYsIHNob3J0IGFyZykNCkBAIC00ODYs OSArNDcxLDggQEANCiAJZGV2Yy0+c3BlZWQgPSA4MDAwOw0KIAlkZXZjLT5h dWRpb19mb3JtYXQ9QUZNVF9VODsNCiAJZGV2Yy0+Y2hhbm5lbHM9MTsNCi0N Ci0JYWQxODE2X3Jlc2V0KGRldmMtPmRldl9ubyk7IC8qIGhhbHQgYWxsIHBl bmRpbmcgb3V0cHV0ICovDQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRl dmMtPmxvY2ssZmxhZ3MpOw0KKwlhZDE4MTZfcmVzZXQoZGV2Yy0+ZGV2X25v KTsgLyogaGFsdCBhbGwgcGVuZGluZyBvdXRwdXQgKi8NCiAJcmV0dXJuIDA7 DQogfQ0KIA0KQEAgLTQ5NywxNyArNDgxLDE1IEBADQogCXVuc2lnbmVkIGxv bmcgZmxhZ3M7DQogCWFkMTgxNl9pbmZvICAgICpkZXZjID0gKGFkMTgxNl9p bmZvICopIGF1ZGlvX2RldnNbZGV2XS0+ZGV2YzsNCiANCi0Jc3Bpbl9sb2Nr X2lycXNhdmUoJmRldmMtPmxvY2ssZmxhZ3MpOw0KLQ0KIAkvKiBoYWx0IGFs bCBwZW5kaW5nIG91dHB1dCAqLw0KIAlhZDE4MTZfcmVzZXQoZGV2Yy0+ZGV2 X25vKTsgDQotCQ0KKw0KKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2Yy0+bG9j ayxmbGFncyk7DQogCWRldmMtPm9wZW5lZCA9IDA7DQogCWRldmMtPmF1ZGlv X21vZGUgPSAwOw0KIAlkZXZjLT5zcGVlZCA9IDgwMDA7DQogCWRldmMtPmF1 ZGlvX2Zvcm1hdD1BRk1UX1U4Ow0KIAlkZXZjLT5mb3JtYXRfYml0cyA9IDA7 DQotDQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldmMtPmxvY2ssZmxh Z3MpOw0KIH0NCiANCkBAIC01NDMsMjUgKzUyNSwxMyBAQA0KIHN0YXRpYyBp cnFyZXR1cm5fdCBhZDE4MTZfaW50ZXJydXB0IChpbnQgaXJxLCB2b2lkICpk ZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpkdW1teSkNCiB7DQogCXVuc2lnbmVk IGNoYXIJc3RhdHVzOw0KLQlhZDE4MTZfaW5mbwkqZGV2YzsNCi0JaW50CQlk ZXY7DQotDQorCWFkMTgxNl9pbmZvCSpkZXZjID0gKGFkMTgxNl9pbmZvICop ZGV2X2lkOw0KIAkNCiAJaWYgKGlycSA8IDAgfHwgaXJxID4gMTUpIHsNCiAJ ICAgICAgICBwcmludGsoS0VSTl9XQVJOSU5HICJhZDE4MTY6IEdvdCBib2d1 cyBpbnRlcnJ1cHQgJWRcbiIsIGlycSk7DQogCQlyZXR1cm4gSVJRX05PTkU7 DQogCX0NCiANCi0JZGV2ID0gaXJxMmRldltpcnFdOw0KLQkNCi0JaWYgKGRl diA8IDAgfHwgZGV2ID49IG51bV9hdWRpb2RldnMpIHsNCi0JICAgICAgICBw cmludGsoS0VSTl9XQVJOSU5HICJhZDE4MTY6IElSUTJBRDE4MTYtbWFwcGlu ZyBmYWlsZWQgZm9yICINCi0JCQkJICAgICJpcnEgJWQgZGV2aWNlICVkXG4i LCBpcnEsZGV2KTsNCi0JCXJldHVybiBJUlFfTk9ORTsNCi0JfQ0KLQ0KLQlk ZXZjID0gKGFkMTgxNl9pbmZvICopIGF1ZGlvX2RldnNbZGV2XS0+ZGV2YzsN Ci0JDQogCXNwaW5fbG9jaygmZGV2Yy0+bG9jayk7DQogDQogCS8qIHJlYWQg aW50ZXJydXB0IHJlZ2lzdGVyICovDQpAQCAtNTY5LDE4ICs1MzksMTkgQEAN CiAJLyogQ2xlYXIgYWxsIGludGVycnVwdCAgKi8NCiAJb3V0YiAofnN0YXR1 cywgZGV2Yy0+YmFzZSsxKTsJDQogDQotCURFQlVHTk9JU0UgKHByaW50aygi YWQxODE2OiBHb3QgaW50ZXJydXB0IHN1YmNsYXNzICVkXG4iLHN0YXR1cykp Ow0KLQkNCi0JZGV2Yy0+aXJxX29rPTE7DQorCURFQlVHTk9JU0UocHJpbnRr KEtFUk5fREVCVUcgImFkMTgxNjogR290IGludGVycnVwdCBzdWJjbGFzcyAl ZFxuIixzdGF0dXMpKTsNCiANCi0JaWYgKHN0YXR1cyA9PSAwKQ0KLQkJREVC VUdXQVJOKHByaW50ayAoImFkMTgxNjogaW50ZXJydXB0OiBHb3QgaW50ZXJy dXB0LCBidXQgbm8gcmVhc29uP1xuIikpOw0KKwlpZiAoc3RhdHVzID09IDAp IHsNCisJCURFQlVHTk9JU0UocHJpbnRrKEtFUk5fREVCVUcgImFkMTgxNjog aW50ZXJydXB0OiBHb3QgaW50ZXJydXB0LCBidXQgbm8gc291cmNlLlxuIikp Ow0KKwkJc3Bpbl91bmxvY2soJmRldmMtPmxvY2spOw0KKwkJcmV0dXJuIElS UV9OT05FOw0KKwl9DQogDQogCWlmIChkZXZjLT5vcGVuZWQgJiYgKGRldmMt PmF1ZGlvX21vZGUgJiBQQ01fRU5BQkxFX0lOUFVUKSAmJiAoc3RhdHVzJjY0 KSkNCi0JCURNQWJ1Zl9pbnB1dGludHIgKGRldik7DQorCQlETUFidWZfaW5w dXRpbnRyIChkZXZjLT5kZXZfbm8pOw0KIA0KIAlpZiAoZGV2Yy0+b3BlbmVk ICYmIChkZXZjLT5hdWRpb19tb2RlICYgUENNX0VOQUJMRV9PVVRQVVQpICYm IChzdGF0dXMgJiAxMjgpKQ0KLQkJRE1BYnVmX291dHB1dGludHIgKGRldiwg MSk7DQorCQlETUFidWZfb3V0cHV0aW50ciAoZGV2Yy0+ZGV2X25vLCAxKTsN CiANCiAJc3Bpbl91bmxvY2soJmRldmMtPmxvY2spOw0KIAlyZXR1cm4gSVJR X0hBTkRMRUQ7DQpAQCAtNjcxLDkgKzY0MiwxMSBAQA0KIHN0YXRpYyBpbnQN CiBhZDE4MTZfc2V0X3JlY21hc2sgKGFkMTgxNl9pbmZvICogZGV2YywgaW50 IG1hc2spDQogew0KKyAgCXVuc2lnbmVkIGxvbmcgCWZsYWdzOw0KIAl1bnNp Z25lZCBjaGFyICAgcmVjZGV2Ow0KIAlpbnQgICAgICAgICAgICAgaSwgbjsN CiAJDQorCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZjLT5sb2NrLCBmbGFncyk7 DQogCW1hc2sgJj0gZGV2Yy0+c3VwcG9ydGVkX3JlY19kZXZpY2VzOw0KIAkN CiAJbiA9IDA7DQpAQCAtNzMzLDYgKzcwNiw3IEBADQogCQkgIChhZF9yZWFk IChkZXZjLCAyMCkgJiAweDhmOGYpIHwgcmVjZGV2IHwgKHJlY2Rldjw8OCkp Ow0KIA0KIAlkZXZjLT5yZWNtYXNrID0gbWFzazsNCisJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZGV2Yy0+bG9jaywgZmxhZ3MpOw0KIAlyZXR1cm4gbWFz azsNCiB9DQogDQpAQCAtNzYwLDcgKzczNCw3IEBADQogc3RhdGljIGludA0K IGFkMTgxNl9taXhlcl9nZXQgKGFkMTgxNl9pbmZvICogZGV2YywgaW50IGRl dikNCiB7DQotCURFQlVHSU5GTyhwcmludGsoImFkMTgxNjogbWl4ZXJfZ2V0 IGNhbGxlZCFcbiIpKTsNCisJREVCVUdOT0lTRShwcmludGsoS0VSTl9ERUJV RyAiYWQxODE2OiBtaXhlcl9nZXQgY2FsbGVkIVxuIikpOw0KIAkNCiAJLyog cmFuZ2UgY2hlY2sgKyBzdXBwb3J0ZWQgbWl4ZXIgY2hlY2sgKi8NCiAJaWYg KGRldiA8IDAgfHwgZGV2ID49IFNPVU5EX01JWEVSX05SREVWSUNFUyApDQpA QCAtNzgxLDggKzc1NSw5IEBADQogCWludCAgIHJlZ29mZnM7DQogCWludCAg IHZhbDsNCiAJaW50ICAgdmFsbXV0ZTsNCisJdW5zaWduZWQgbG9uZyBmbGFn czsNCiANCi0JREVCVUdJTkZPKHByaW50aygiYWQxODE2OiBtaXhlcl9zZXQg Y2FsbGVkIVxuIikpOw0KKwlERUJVR05PSVNFKHByaW50ayhLRVJOX0RFQlVH ICJhZDE4MTY6IG1peGVyX3NldCBjYWxsZWQhXG4iKSk7DQogCQ0KIAlpZiAo ZGV2IDwgMCB8fCBkZXYgPj0gU09VTkRfTUlYRVJfTlJERVZJQ0VTICkNCiAJ CXJldHVybiAtKEVJTlZBTCk7DQpAQCAtODEzLDYgKzc4OCw3IEBADQogCS8q IHNhbml0eSBjaGVjayAqLw0KIAlpZiAobWl4X2RldmljZXNbZGV2XVtMRUZU X0NITl0ubmJpdHMgPT0gMCkNCiAJCXJldHVybiAtKEVJTlZBTCk7DQorCXNw aW5fbG9ja19pcnFzYXZlKCZkZXZjLT5sb2NrLCBmbGFncyk7DQogDQogCS8q IGtlZXAgcHJlY2lzZSB2b2x1bWUgaW50ZXJuYWwgKi8NCiAJZGV2Yy0+bGV2 ZWxzW2Rldl0gPSByZXR2b2w7DQpAQCAtODQwLDggKzgxNiwxMCBAQA0KIAkg Ki8NCiAgDQogCS8qIFdhcyBqdXN0IGEgbW9ubyBjaGFubmVsICovDQotCWlm IChtaXhfZGV2aWNlc1tkZXZdW1JJR0hUX0NITl0ubmJpdHMgPT0gMCkNCisJ aWYgKG1peF9kZXZpY2VzW2Rldl1bUklHSFRfQ0hOXS5uYml0cyA9PSAwKSB7 DQorCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZjLT5sb2NrLCBmbGFn cyk7DQogCQlyZXR1cm4gcmV0dm9sOwkJDQorCX0NCiANCiAJcmVnb2ZmcyA9 IG1peF9kZXZpY2VzW2Rldl1bUklHSFRfQ0hOXS5yZWdubzsNCiAJdmFsID0g YWRfcmVhZCAoZGV2YywgcmVnb2Zmcyk7DQpAQCAtODU3LDcgKzgzNSw3IEBA DQogCQkJdmFsbXV0ZSAmPSB+MHg4MDsNCiAJfQ0KIAlhZF93cml0ZSAoZGV2 YywgcmVnb2ZmcywgdmFsbXV0ZSk7IC8qIG11dGUgKi8NCi0JDQorCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmRldmMtPmxvY2ssIGZsYWdzKTsNCiAgICAg ICAgCXJldHVybiByZXR2b2w7DQogfQ0KIA0KQEAgLTkwMSw3ICs4NzksNyBA QA0KIAlhZDE4MTZfaW5mbyAgICAqZGV2YyA9IG1peGVyX2RldnNbZGV2XS0+ ZGV2YzsNCiAJaW50IHZhbDsNCiAgIA0KLQlERUJVR0lORk8ocHJpbnRrKCJh ZDE4MTY6IG1peGVyX2lvY3RsIGNhbGxlZCFcbiIpKTsNCisJREVCVUdOT0lT RShwcmludGsoS0VSTl9ERUJVRyAiYWQxODE2OiBtaXhlcl9pb2N0bCBjYWxs ZWQhXG4iKSk7DQogICANCiAJLyogTWl4ZXIgaW9jdGwgKi8NCiAJaWYgKCgo Y21kID4+IDgpICYgMHhmZikgPT0gJ00nKSB7IA0KQEAgLTk4MCw4MyArOTU4 LDkxIEBADQogDQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KIA0K LS8qIHN0dWZmIGZvciBjYXJkIHJlY29nbml0aW9uLCBpbml0IGFuZCB1bmxv YWRpbmcgKi8NCisvKiBzdHVmZiBmb3IgY2FyZCByZWNvZ25pdGlvbiwgaW5p dCBhbmQgdW5sb2FkaW5nIFBOUCAuLi4qLw0KIA0KIA0KLS8qIHJlcGxhY2Ug d2l0aCBwcm9iZSByb3V0aW5lICovDQotc3RhdGljIGludCBfX2luaXQgcHJv YmVfYWQxODE2ICggc3RydWN0IGFkZHJlc3NfaW5mbyAqaHdfY29uZmlnICkN CisvKiBjaGVjayBpZiBBRDE4MTYgcHJlc2VudCBhdCBzcGVjaWZpZWQgaHdf Y29uZmlnIGFuZCByZWdpc3RlciBkZXZpY2Ugd2l0aCBPUyANCisgKiByZXR1 cm4gMSBpZiBpbml0aWFsaXphdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgMCBvdGhl cndpc2UNCisgKi8NCitzdGF0aWMgaW50IF9faW5pdCBhZDE4MTZfaW5pdF9j YXJkIChzdHJ1Y3QgYWRkcmVzc19pbmZvICpod19jb25maWcsIA0KKwlzdHJ1 Y3QgcG5wX2RldiAqcG5wKQ0KIHsNCi0JYWQxODE2X2luZm8gICAgKmRldmMg PSAmZGV2X2luZm9bbnJfYWQxODE2X2RldnNdOw0KLQlpbnQgaW9fYmFzZT1o d19jb25maWctPmlvX2Jhc2U7DQotCWludCAqb3NwPWh3X2NvbmZpZy0+b3Nw Ow0KKwlhZDE4MTZfaW5mbyAgICAqZGV2YyA9IE5VTEw7DQogCWludCB0bXA7 DQorCWludCBvc3NfZGV2bm8gPSAtMTsNCiANCi0JcHJpbnRrKEtFUk5fSU5G TyAiYWQxODE2OiBBRDE4MTYgc291bmRkcml2ZXIgIg0KLQkJCSAiQ29weXJp Z2h0IChDKSAxOTk4IGJ5IFRob3JzdGVuIEtuYWJlXG4iKTsNCi0JcHJpbnRr KEtFUk5fSU5GTyAiYWQxODE2OiBpbz0weCV4LCBpcnE9JWQsIGRtYT0lZCwg ZG1hMj0lZCwgIg0KLQkJCSAiY2xvY2tmcmVxPSVkLCBvcHRpb25zPSVkIGlz YWRtYWJ1Zz0lZFxuIiwNCisJcHJpbnRrKEtFUk5fSU5GTyAiYWQxODE2OiBp bml0aWFsaXppbmcgY2FyZDogaW89MHgleCwgaXJxPSVkLCBkbWE9JWQsICIN CisJCQkgImRtYTI9JWQsIGNsb2NrZnJlcT0lZCwgb3B0aW9ucz0lZCBpc2Fk bWFidWc9JWQgIg0KKwkJCSAiJXNcbiIsDQogCSAgICAgICBod19jb25maWct PmlvX2Jhc2UsDQogCSAgICAgICBod19jb25maWctPmlycSwNCiAJICAgICAg IGh3X2NvbmZpZy0+ZG1hLA0KIAkgICAgICAgaHdfY29uZmlnLT5kbWEyLA0K IAkgICAgICAgYWQxODE2X2Nsb2NrZnJlcSwNCiAJICAgICAgIG9wdGlvbnMs DQotCSAgICAgICBpc2FfZG1hX2JyaWRnZV9idWdneSk7DQotDQotCWlmICgh cmVxdWVzdF9yZWdpb24oaW9fYmFzZSwgMTYsICJBRDE4MTYgU291bmQiKSkg ew0KLQkJcHJpbnRrKEtFUk5fV0FSTklORyAiYWQxODE2OiBJL08gcG9ydCAw eCUwM3ggbm90IGZyZWVcbiIsDQotCQkJCSAgICBpb19iYXNlKTsNCi0JCWdv dG8gZXJyOw0KLQl9DQorCSAgICAgICBpc2FfZG1hX2JyaWRnZV9idWdneSwN CisJICAgICAgIHBucD8iKFBOUCkiOiIiKTsNCiANCi0JREVCVUdMT0cocHJp bnRrICgiYWQxODE2OiBkZXRlY3QoJXgpXG4iLCBpb19iYXNlKSk7DQotCQ0K KwkvKiBhZDE4MTZfaW5mbyBzdHJ1Y3R1cmUgcmVtYWluaW5nID8gKi8NCiAJ aWYgKG5yX2FkMTgxNl9kZXZzID49IE1BWF9BVURJT19ERVYpIHsNCi0JCXBy aW50ayhLRVJOX1dBUk5JTkcgImFkMTgxNjogZGV0ZWN0IGVycm9yIC0gc3Rl cCAwXG4iKTsNCi0JCWdvdG8gb3V0X3JlbGVhc2VfcmVnaW9uOw0KKwkJcHJp bnRrKEtFUk5fV0FSTklORyAiYWQxODE2OiBubyBtb3JlIGFkMTgxNl9pbmZv IHN0cnVjdHVyZXMgIg0KKwkJCSJsZWZ0XG4iKTsNCisJCWdvdG8gb3V0Ow0K IAl9DQogDQotCWRldmMtPmJhc2UgPSBpb19iYXNlOw0KLQlkZXZjLT5pcnFf b2sgPSAwOw0KLQlkZXZjLT5pcnEgPSAwOw0KKwlkZXZjID0gJmRldl9pbmZv W25yX2FkMTgxNl9kZXZzXTsNCisJZGV2Yy0+YmFzZSA9IGh3X2NvbmZpZy0+ aW9fYmFzZTsNCisJZGV2Yy0+aXJxID0gaHdfY29uZmlnLT5pcnE7DQorCWRl dmMtPmRtYV9wbGF5YmFjaz1od19jb25maWctPmRtYTsNCisJZGV2Yy0+ZG1h X2NhcHR1cmU9aHdfY29uZmlnLT5kbWEyOw0KIAlkZXZjLT5vcGVuZWQgPSAw Ow0KLQlkZXZjLT5vc3AgPSBvc3A7DQorCWRldmMtPnBucGRldiA9IHBucDsN CiAJc3Bpbl9sb2NrX2luaXQoJmRldmMtPmxvY2spOw0KIA0KKwlpZiAoIXJl cXVlc3RfcmVnaW9uKGRldmMtPmJhc2UsIDE2LCAiQUQxODE2IFNvdW5kIikp IHsNCisJCXByaW50ayhLRVJOX1dBUk5JTkcgImFkMTgxNjogSS9PIHBvcnQg MHglMDN4IG5vdCBmcmVlXG4iLA0KKwkJCQkgICAgZGV2Yy0+YmFzZSk7DQor CQlnb3RvIG91dDsNCisJfQ0KKw0KKwlwcmludGsoS0VSTl9JTkZPICJhZDE4 MTY6IEV4YW1pbmluZyBBRDE4MTYgYXQgYWRkcmVzcyAweCUwM3guXG4iLCAN CisJCWRldmMtPmJhc2UpOw0KKwkNCisNCisJLyogdGVzdHMgZm9yIGFkMTgx NiAqLw0KIAkvKiBiYXNlKzA6IGJpdCAxIG11c3QgYmUgc2V0IGJ1dCBub3Qg MjU1ICovDQogCXRtcD1pbmIoZGV2Yy0+YmFzZSk7DQogCWlmICggKHRtcCYw eDgwKT09MCB8fCB0bXA9PTI1NSApIHsNCi0JCURFQlVHTE9HIChwcmludGsg KCJhZDE4MTY6IENoaXAgaXMgbm90IGFuIEFEMTgxNiBvciBjaGlwIGlzIG5v dCBhY3RpdmUgKFRlc3QgMClcbiIpKTsNCisJCXByaW50ayAoS0VSTl9JTkZP ICJhZDE4MTY6IENoaXAgaXMgbm90IGFuIEFEMTgxNiBvciBjaGlwICINCisJ CQkiaXMgbm90IGFjdGl2ZSAoVGVzdCAwKVxuIik7DQogCQlnb3RvIG91dF9y ZWxlYXNlX3JlZ2lvbjsNCiAJfQ0KIA0KLQ0KIAkvKiB3cml0ZXMgdG8gaXJl ZyA4IGFyZSBjb3BpZWQgdG8gaXJlZyA5ICovDQogCWFkX3dyaXRlKGRldmMs OCwxMjM0NSk7IA0KIAlpZiAoYWRfcmVhZChkZXZjLDkpIT0xMjM0NSkgew0K LQkJREVCVUdMT0cgKHByaW50ayAoImFkMTgxNjogQ2hpcCBpcyBub3QgYW4g QUQxODE2IChUZXN0IDEpXG4iKSk7DQorCQlwcmludGsoS0VSTl9JTkZPICJh ZDE4MTY6IENoaXAgaXMgbm90IGFuIEFEMTgxNiAoVGVzdCAxKVxuIik7DQog CQlnb3RvIG91dF9yZWxlYXNlX3JlZ2lvbjsNCiAJfQ0KICAgDQogCS8qIHdy aXRlcyB0byBpcmVnIDggYXJlIGNvcGllZCB0byBpcmVnIDkgKi8NCiAJYWRf d3JpdGUoZGV2Yyw4LDU0MzIxKTsgDQogCWlmIChhZF9yZWFkKGRldmMsOSkh PTU0MzIxKSB7DQotCQlERUJVR0xPRyAocHJpbnRrICgiYWQxODE2OiBDaGlw IGlzIG5vdCBhbiBBRDE4MTYgKFRlc3QgMilcbiIpKTsNCisJCXByaW50ayhL RVJOX0lORk8gImFkMTgxNjogQ2hpcCBpcyBub3QgYW4gQUQxODE2IChUZXN0 IDIpXG4iKTsNCiAJCWdvdG8gb3V0X3JlbGVhc2VfcmVnaW9uOw0KIAl9DQog DQotDQogCS8qIHdyaXRlcyB0byBpcmVnIDEwIGFyZSBjb3BpZWQgdG8gaXJl ZyAxMSAqLw0KIAlhZF93cml0ZShkZXZjLDEwLDU0MzIxKTsgDQogCWlmIChh ZF9yZWFkKGRldmMsMTEpIT01NDMyMSkgew0KLQkJREVCVUdMT0cgKHByaW50 ayAoImFkMTgxNjogQ2hpcCBpcyBub3QgYW4gQUQxODE2IChUZXN0IDMpXG4i KSk7DQorCQlwcmludGsgKEtFUk5fSU5GTyAiYWQxODE2OiBDaGlwIGlzIG5v dCBhbiBBRDE4MTYgKFRlc3QgMylcbiIpOw0KIAkJZ290byBvdXRfcmVsZWFz ZV9yZWdpb247DQogCX0NCiANCiAJLyogd3JpdGVzIHRvIGlyZWcgMTAgYXJl IGNvcGllZCB0byBpcmVnIDExICovDQogCWFkX3dyaXRlKGRldmMsMTAsMTIz NDUpOyANCiAJaWYgKGFkX3JlYWQoZGV2YywxMSkhPTEyMzQ1KSB7DQotCQlE RUJVR0xPRyAocHJpbnRrICgiYWQxODE2OiBDaGlwIGlzIG5vdCBhbiBBRDE4 MTYgKFRlc3QgNClcbiIpKTsNCisJCXByaW50ayAoS0VSTl9JTkZPICJhZDE4 MTY6IENoaXAgaXMgbm90IGFuIEFEMTgxNiAoVGVzdCA0KVxuIik7DQogCQln b3RvIG91dF9yZWxlYXNlX3JlZ2lvbjsNCiAJfQ0KIA0KQEAgLTEwNjQsMzUg KzEwNTAsMTIgQEANCiAJdG1wPWluYihkZXZjLT5iYXNlKzEpOw0KIAlvdXRi KDB4ZmYsZGV2Yy0+YmFzZSsxKTsgDQogCWlmIChpbmIoZGV2Yy0+YmFzZSsx KSE9dG1wKSB7DQotCQlERUJVR0xPRyAocHJpbnRrICgiYWQxODE2OiBDaGlw IGlzIG5vdCBhbiBBRDE4MTYgKFRlc3QgNSlcbiIpKTsNCisJCXByaW50ayhL RVJOX0lORk8gImFkMTgxNjogQ2hpcCBpcyBub3QgYW4gQUQxODE2IChUZXN0 IDUpXG4iKTsNCiAJCWdvdG8gb3V0X3JlbGVhc2VfcmVnaW9uOw0KIAl9DQot DQogICANCi0JREVCVUdMT0cgKHByaW50ayAoImFkMTgxNjogZGV0ZWN0KCkg LSBEZXRlY3RlZCBPS1xuIikpOw0KLQlERUJVR0xPRyAocHJpbnRrICgiYWQx ODE2OiBBRDE4MTYgVmVyc2lvbjogJWRcbiIsYWRfcmVhZChkZXZjLDQ1KSkp Ow0KLQ0KLQkvKiBkZXRlY3Rpb24gd2FzIHN1Y2Nlc3NmdWwgKi8NCi0JcmV0 dXJuIDE7IA0KLW91dF9yZWxlYXNlX3JlZ2lvbjoNCi0JcmVsZWFzZV9yZWdp b24oaW9fYmFzZSwgMTYpOw0KLQkvKiBkZXRlY3Rpb24gd2FzIE5PVCBzdWNj ZXNzZnVsICovDQotZXJyOglyZXR1cm4gMDsNCi19DQotDQotDQotLyogYWxs b2NhdGUgcmVzb3VyY2VzIGZyb20gdGhlIGtlcm5lbC4gSWYgYW55IGFsbG9j YXRpb24gZmFpbHMsIGZyZWUNCi0gICBhbGwgYWxsb2NhdGVkIHJlc291cmNl cyBhbmQgZXhpdCBhdHRhY2guDQotICANCi0gKi8NCi0NCi1zdGF0aWMgdm9p ZCBfX2luaXQgYXR0YWNoX2FkMTgxNiAoc3RydWN0IGFkZHJlc3NfaW5mbyAq aHdfY29uZmlnKQ0KLXsNCi0JaW50ICAgICAgICAgICAgIG15X2RldjsNCi0J Y2hhciAgICAgICAgICAgIGRldl9uYW1lWzEwMF07DQotCWFkMTgxNl9pbmZv ICAgICpkZXZjID0gJmRldl9pbmZvW25yX2FkMTgxNl9kZXZzXTsNCi0NCi0J ZGV2Yy0+YmFzZSA9IGh3X2NvbmZpZy0+aW9fYmFzZTsJDQorCXByaW50ayhL RVJOX0lORk8gImFkMTgxNjogQUQxODE2ICh2ZXJzaW9uICVkKSBzdWNjZXNz ZnVsbHkgZGV0ZWN0ZWQhXG4iLA0KKwkJYWRfcmVhZChkZXZjLDQ1KSk7DQog DQogCS8qIGRpc2FibGUgYWxsIGludGVycnVwdHMgKi8NCiAJYWRfd3JpdGUo ZGV2YywxLDApOyAgICAgDQpAQCAtMTEwMSw2MiArMTA2NCw1NCBAQA0KIAlv dXRiICgwLCBkZXZjLT5iYXNlKzEpOwkNCiANCiAJLyogYWxsb2NhdGUgaXJx ICovDQotCWlmIChod19jb25maWctPmlycSA8IDAgfHwgaHdfY29uZmlnLT5p cnEgPiAxNSkNCisJaWYgKGRldmMtPmlycSA8IDAgfHwgZGV2Yy0+aXJxID4g MTUpDQogCQlnb3RvIG91dF9yZWxlYXNlX3JlZ2lvbjsNCi0JaWYgKHJlcXVl c3RfaXJxKGh3X2NvbmZpZy0+aXJxLCBhZDE4MTZfaW50ZXJydXB0LDAsDQot CQkJIlNvdW5kUG9ydCIsIGh3X2NvbmZpZy0+b3NwKSA8IDApCXsNCisJaWYg KHJlcXVlc3RfaXJxKGRldmMtPmlycSwgYWQxODE2X2ludGVycnVwdCwwLA0K KwkJCSJTb3VuZFBvcnQiLCBkZXZjKSA8IDApCXsNCiAJICAgICAgICBwcmlu dGsoS0VSTl9XQVJOSU5HICJhZDE4MTY6IElSUSBpbiB1c2VcbiIpOw0KIAkJ Z290byBvdXRfcmVsZWFzZV9yZWdpb247DQogCX0NCi0JZGV2Yy0+aXJxPWh3 X2NvbmZpZy0+aXJxOw0KIA0KIAkvKiBETUEgc3R1ZmYgKi8NCi0JaWYgKHNv dW5kX2FsbG9jX2RtYSAoaHdfY29uZmlnLT5kbWEsICJTb3VuZCBTeXN0ZW0i KSkgew0KKwlpZiAoc291bmRfYWxsb2NfZG1hIChkZXZjLT5kbWFfcGxheWJh Y2ssICJTb3VuZCBTeXN0ZW0iKSkgew0KIAkJcHJpbnRrKEtFUk5fV0FSTklO RyAiYWQxODE2OiBDYW4ndCBhbGxvY2F0ZSBETUElZFxuIiwNCi0JCQkJICAg IGh3X2NvbmZpZy0+ZG1hKTsNCisJCQkJICAgIGRldmMtPmRtYV9wbGF5YmFj ayk7DQogCQlnb3RvIG91dF9mcmVlX2lycTsNCiAJfQ0KLQlkZXZjLT5kbWFf cGxheWJhY2s9aHdfY29uZmlnLT5kbWE7DQogCQ0KLQlpZiAoIGh3X2NvbmZp Zy0+ZG1hMiAhPSAtMSAmJiBod19jb25maWctPmRtYTIgIT0gaHdfY29uZmln LT5kbWEpIHsNCi0JCWlmIChzb3VuZF9hbGxvY19kbWEoaHdfY29uZmlnLT5k bWEyLA0KKwlpZiAoIGRldmMtPmRtYV9jYXB0dXJlID49IDAgJiYgDQorCSAg CWRldmMtPmRtYV9jYXB0dXJlICE9IGRldmMtPmRtYV9wbGF5YmFjaykgew0K KwkJaWYgKHNvdW5kX2FsbG9jX2RtYShkZXZjLT5kbWFfY2FwdHVyZSwNCiAJ CQkJICAgICJTb3VuZCBTeXN0ZW0gKGNhcHR1cmUpIikpIHsNCiAJCQlwcmlu dGsoS0VSTl9XQVJOSU5HICJhZDE4MTY6IENhbid0IGFsbG9jYXRlIERNQSVk XG4iLA0KLQkJCQkJICAgIGh3X2NvbmZpZy0+ZG1hMik7DQorCQkJCQkgICAg ZGV2Yy0+ZG1hX2NhcHR1cmUpOw0KIAkJCWdvdG8gb3V0X2ZyZWVfZG1hOw0K IAkJfQ0KLQkJZGV2Yy0+ZG1hX2NhcHR1cmU9aHdfY29uZmlnLT5kbWEyOw0K IAkJZGV2Yy0+YXVkaW9fbW9kZT1ETUFfQVVUT01PREV8RE1BX0RVUExFWDsN CiAJfSBlbHNlIHsNCi0JICAgICAgICBkZXZjLT5kbWFfY2FwdHVyZT0tMTsN CisJICAJcHJpbnRrKEtFUk5fV0FSTklORyAiYWQxODE2OiBPbmx5IG9uZSBE TUEgY2hhbm5lbCAiDQorCQkJImF2YWlsYWJsZS9jb25maWd1cmVkLiBObyBk dXBsZXggb3BlcmF0aW9uIHBvc3NpYmxlXG4iKTsNCiAJCWRldmMtPmF1ZGlv X21vZGU9RE1BX0FVVE9NT0RFOw0KIAl9DQogDQotCXNwcmludGYgKGRldl9u YW1lLCJBRDE4MTYgYXVkaW8gZHJpdmVyIik7DQotICANCi0JY29uZl9wcmlu dGYyIChkZXZfbmFtZSwNCi0JCSAgICAgIGRldmMtPmJhc2UsIGRldmMtPmly cSwgaHdfY29uZmlnLT5kbWEsIGh3X2NvbmZpZy0+ZG1hMik7DQorCWNvbmZf cHJpbnRmMiAoIkFEMTgxNiBhdWRpbyBkcml2ZXIiLA0KKwkJICAgICAgZGV2 Yy0+YmFzZSwgZGV2Yy0+aXJxLCBkZXZjLT5kbWFfcGxheWJhY2ssIA0KKwkJ ICAgICAgZGV2Yy0+ZG1hX2NhcHR1cmUpOw0KIA0KIAkvKiByZWdpc3RlciBk ZXZpY2UgKi8NCi0JaWYgKChteV9kZXYgPSBzb3VuZF9pbnN0YWxsX2F1ZGlv ZHJ2IChBVURJT19EUklWRVJfVkVSU0lPTiwNCi0JCQkJCSAgICAgIGRldl9u YW1lLA0KKwlpZiAoKG9zc19kZXZubyA9IHNvdW5kX2luc3RhbGxfYXVkaW9k cnYgKEFVRElPX0RSSVZFUl9WRVJTSU9OLA0KKwkJCQkJICAgICAgIkFEMTgx NiBhdWRpbyBkcml2ZXIiLA0KIAkJCQkJICAgICAgJmFkMTgxNl9hdWRpb19k cml2ZXIsDQogCQkJCQkgICAgICBzaXplb2YgKHN0cnVjdCBhdWRpb19kcml2 ZXIpLA0KIAkJCQkJICAgICAgZGV2Yy0+YXVkaW9fbW9kZSwNCiAJCQkJCSAg ICAgIGFkX2Zvcm1hdF9tYXNrLA0KIAkJCQkJICAgICAgZGV2YywNCi0JCQkJ CSAgICAgIGh3X2NvbmZpZy0+ZG1hLCANCi0JCQkJCSAgICAgIGh3X2NvbmZp Zy0+ZG1hMikpIDwgMCkgew0KKwkJCQkJICAgICAgZGV2Yy0+ZG1hX3BsYXli YWNrLCANCisJCQkJCSAgICAgIGRldmMtPmRtYV9jYXB0dXJlKSkgPCAwKSB7 DQogCQlwcmludGsoS0VSTl9XQVJOSU5HICJhZDE4MTY6IENhbid0IGluc3Rh bGwgc291bmQgZHJpdmVyXG4iKTsNCiAJCWdvdG8gb3V0X2ZyZWVfZG1hXzI7 DQogCX0NCiANCi0JLyogZmlsbCByZXN0IG9mIHN0cnVjdHVyZSB3aXRoIHJl YXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMgKi8NCi0JaXJxMmRldltod19jb25m aWctPmlycV0gPSBkZXZjLT5kZXZfbm8gPSBteV9kZXY7DQotCWRldmMtPm9w ZW5lZCA9IDA7DQotCWRldmMtPmlycV9vayA9IDA7DQotCWRldmMtPm9zcCA9 IGh3X2NvbmZpZy0+b3NwOyAgDQotCW5yX2FkMTgxNl9kZXZzKys7DQogDQog CWFkX3dyaXRlKGRldmMsMzIsMHg4MGYwKTsgLyogc291bmQgc3lzdGVtIG1v ZGUgKi8NCiAJaWYgKG9wdGlvbnMmMSkgew0KQEAgLTExODYsMjUgKzExNDEs MzAgQEANCiAJYWQxODE2X21peGVyX3Jlc2V0IChkZXZjKTsgDQogICANCiAJ LyogcmVnaXN0ZXIgbWl4ZXIgKi8NCi0JaWYgKChhdWRpb19kZXZzW215X2Rl dl0tPm1peGVyX2Rldj1zb3VuZF9pbnN0YWxsX21peGVyKA0KKwlpZiAoKGF1 ZGlvX2RldnNbb3NzX2Rldm5vXS0+bWl4ZXJfZGV2PXNvdW5kX2luc3RhbGxf bWl4ZXIoDQogCQkJCSAgICAgICBNSVhFUl9EUklWRVJfVkVSU0lPTiwNCi0J CQkJICAgICAgIGRldl9uYW1lLA0KKwkJCQkgICAgICAgIkFEMTgxNiBhdWRp byBkcml2ZXIiLA0KIAkJCQkgICAgICAgJmFkMTgxNl9taXhlcl9vcGVyYXRp b25zLA0KIAkJCQkgICAgICAgc2l6ZW9mIChzdHJ1Y3QgbWl4ZXJfb3BlcmF0 aW9ucyksDQotCQkJCSAgICAgICBkZXZjKSkgPj0gMCkgew0KLQkJYXVkaW9f ZGV2c1tteV9kZXZdLT5taW5fZnJhZ21lbnQgPSAwOw0KKwkJCQkgICAgICAg ZGV2YykpIDwgMCkgew0KKwkgIAlwcmludGsoS0VSTl9XQVJOSU5HICJDYW4n dCBpbnN0YWxsIG1peGVyXG4iKTsNCiAJfQ0KLW91dDoJcmV0dXJuOw0KKwkv KiBtYWtlIGFkMTgxNl9pbmZvIGFjdGl2ZSAqLw0KKwlucl9hZDE4MTZfZGV2 cysrOw0KKwlwcmludGsoS0VSTl9JTkZPICJhZDE4MTY6IGNhcmQgc3VjY2Vz c2Z1bGx5IGluc3RhbGxlZCFcbiIpOw0KKwlyZXR1cm4gMTsNCisJLyogZXJy b3IgaGFuZGxpbmcgKi8NCiBvdXRfZnJlZV9kbWFfMjoNCi0JaWYgKGRldmMt PmRtYV9jYXB0dXJlID49IDApDQotCSAgICAgICAgc291bmRfZnJlZV9kbWEo aHdfY29uZmlnLT5kbWEyKTsNCisJaWYgKGRldmMtPmRtYV9jYXB0dXJlID49 IDAgJiYgZGV2Yy0+ZG1hX2NhcHR1cmUgIT0gZGV2Yy0+ZG1hX3BsYXliYWNr KQ0KKwkgICAgICAgIHNvdW5kX2ZyZWVfZG1hKGRldmMtPmRtYV9jYXB0dXJl KTsNCiBvdXRfZnJlZV9kbWE6DQotCXNvdW5kX2ZyZWVfZG1hKGh3X2NvbmZp Zy0+ZG1hKTsNCisJc291bmRfZnJlZV9kbWEoZGV2Yy0+ZG1hX3BsYXliYWNr KTsNCiBvdXRfZnJlZV9pcnE6DQotCWZyZWVfaXJxKGh3X2NvbmZpZy0+aXJx LGh3X2NvbmZpZy0+b3NwKTsNCisJZnJlZV9pcnEoZGV2Yy0+aXJxLCBkZXZj KTsNCiBvdXRfcmVsZWFzZV9yZWdpb246DQotCXJlbGVhc2VfcmVnaW9uKGh3 X2NvbmZpZy0+aW9fYmFzZSwgMTYpOw0KLQlnb3RvIG91dDsNCisJcmVsZWFz ZV9yZWdpb24oZGV2Yy0+YmFzZSwgMTYpOw0KK291dDoNCisJcmV0dXJuIDA7 DQogfQ0KIA0KIHN0YXRpYyB2b2lkIF9fZXhpdCB1bmxvYWRfY2FyZChhZDE4 MTZfaW5mbyAqZGV2YykNCkBAIC0xMjEyLDcgKzExNzIsNyBAQA0KIAlpbnQg IG1peGVyLCBkZXYgPSAwOw0KIAkNCiAJaWYgKGRldmMgIT0gTlVMTCkgew0K LQkJREVCVUdMT0cgKHByaW50aygiYWQxODE2OiBVbmxvYWRpbmcgY2FyZCBh dCBiYXNlPSV4XG4iLGRldmMtPmJhc2UpKTsNCisJCXByaW50aygiYWQxODE2 OiBVbmxvYWRpbmcgY2FyZCBhdCBhZGRyZXNzIDB4JTAzeFxuIixkZXZjLT5i YXNlKTsNCiAJCQ0KIAkJZGV2ID0gZGV2Yy0+ZGV2X25vOw0KIAkJbWl4ZXIg PSBhdWRpb19kZXZzW2Rldl0tPm1peGVyX2RldjsNCkBAIC0xMjIxLDQ1ICsx MTgxLDQxIEBADQogCQlpZihtaXhlcj49MCkgew0KIAkJCXNvdW5kX3VubG9h ZF9taXhlcmRldihtaXhlcik7DQogCQl9DQorCQkvKiB1bnJlZyBhdWRpb2Rl diAqLw0KIAkJc291bmRfdW5sb2FkX2F1ZGlvZGV2KGRldik7DQogCQkNCiAJ CS8qIGZyZWUgZG1hIGNoYW5uZWxzICovDQotCQlpZiAoZGV2Yy0+ZG1hX2Nh cHR1cmU+PTApIHsNCisJCWlmIChkZXZjLT5kbWFfY2FwdHVyZT49MCAmJiAN CisJCSAgCWRldmMtPmRtYV9jYXB0dXJlICE9IGRldmMtPmRtYV9wbGF5YmFj aykgew0KIAkJCXNvdW5kX2ZyZWVfZG1hKGRldmMtPmRtYV9jYXB0dXJlKTsN CiAJCX0NCi0NCi0JCS8qIGNhcmQgd29uJ3QgZ2V0IGFkZGVkIGlmIHJlc291 cmNlcyBjb3VsZCBub3QgYmUgYWxsb2NhdGVkDQotCQkgICB0aHVzIHdlIG5l ZWQgbm90IGNrZWNrIGlmIGFsbG9jYXRpb24gd2FzIHN1Y2Nlc3NmdWwgKi8N CiAJCXNvdW5kX2ZyZWVfZG1hIChkZXZjLT5kbWFfcGxheWJhY2spOw0KLQkJ ZnJlZV9pcnEoZGV2Yy0+aXJxLCBkZXZjLT5vc3ApOw0KKwkJLyogZnJlZSBp cnEgKi8NCisJCWZyZWVfaXJxKGRldmMtPmlycSwgZGV2Yyk7DQorCQkvKiBm cmVlIGlvICovDQogCQlyZWxlYXNlX3JlZ2lvbiAoZGV2Yy0+YmFzZSwgMTYp Ow0KLQkJDQotCQlERUJVR0xPRyAocHJpbnRrKCJhZDE4MTY6IFVubG9hZGlu ZyBjYXJkIGF0IGJhc2U9JXggd2FzIHN1Y2Nlc3NmdWxcbiIsZGV2Yy0+YmFz ZSkpOw0KKyNpZmRlZiBfX0lTQVBOUF9fDQorCQlpZiAoZGV2Yy0+cG5wZGV2 KSB7DQorCQkgIAlwbnBfZGlzYWJsZV9kZXYoZGV2Yy0+cG5wZGV2KTsNCisJ CQlwbnBfZGV2aWNlX2RldGFjaChkZXZjLT5wbnBkZXYpOw0KKwkJfQ0KKyNl bmRpZg0KIAkJDQogCX0gZWxzZQ0KIAkJcHJpbnRrKEtFUk5fV0FSTklORyAi YWQxODE2OiBubyBkZXZpY2UvY2FyZCBzcGVjaWZpZWRcbiIpOw0KIH0NCiAN Ci1zdGF0aWMgc3RydWN0IGFkZHJlc3NfaW5mbyBjZmc7DQotDQogc3RhdGlj IGludCBfX2luaXRkYXRhIGlvID0gLTE7DQogc3RhdGljIGludCBfX2luaXRk YXRhIGlycSA9IC0xOw0KIHN0YXRpYyBpbnQgX19pbml0ZGF0YSBkbWEgPSAt MTsNCiBzdGF0aWMgaW50IF9faW5pdGRhdGEgZG1hMiA9IC0xOw0KIA0KICNp ZmRlZiBfX0lTQVBOUF9fDQotc3RydWN0IHBjaV9kZXYJKmFkMTgxNl9kZXYg ID0gTlVMTDsNCi0NCi1zdGF0aWMgaW50IGFjdGl2YXRlZAk9IDE7DQotDQor LyogdXNlIGlzYXBucCBmb3IgY29uZmlndXJhdGlvbiAqLw0KIHN0YXRpYyBp bnQgaXNhcG5wCT0gMTsNCiBzdGF0aWMgaW50IGlzYXBucGp1bXAJPSAwOw0K LQ0KIE1PRFVMRV9QQVJNKGlzYXBucCwgImkiKTsNCiBNT0RVTEVfUEFSTShp c2FwbnBqdW1wLCAiaSIpOw0KLQ0KLSNlbHNlDQotc3RhdGljIGludCBpc2Fw bnAgPSAwOw0KICNlbmRpZg0KIA0KIE1PRFVMRV9QQVJNKGlvLCJpIik7DQpA QCAtMTI3MCw1MSArMTIyNiw2IEBADQogTU9EVUxFX1BBUk0ob3B0aW9ucywi aSIpOw0KIA0KICNpZmRlZiBfX0lTQVBOUF9fDQotDQotc3RhdGljIHN0cnVj dCBwY2lfZGV2ICphY3RpdmF0ZV9kZXYoY2hhciAqZGV2bmFtZSwgY2hhciAq cmVzbmFtZSwgc3RydWN0IHBjaV9kZXYgKmRldikNCi17DQotCWludCBlcnI7 DQotCQ0KLQlpZihkZXYtPmFjdGl2ZSkgew0KLQkJYWN0aXZhdGVkID0gMDsN Ci0JCXJldHVybihkZXYpOw0KLQl9DQotDQotCWlmKChlcnIgPSBkZXYtPmFj dGl2YXRlKGRldikpIDwgMCkgew0KLQkJcHJpbnRrKEtFUk5fRVJSICJhZDE4 MTY6ICVzICVzIGNvbmZpZyBmYWlsZWQgKG91dCBvZiByZXNvdXJjZXM/KVsl ZF1cbiIsDQotCQkJZGV2bmFtZSwgcmVzbmFtZSwgZXJyKTsNCi0JCWRldi0+ ZGVhY3RpdmF0ZShkZXYpOw0KLQkJcmV0dXJuKE5VTEwpOw0KLQl9DQotCQkN Ci0JcmV0dXJuKGRldik7DQotfQ0KLQ0KLXN0YXRpYyBzdHJ1Y3QgcGNpX2Rl diAqYWQxODE2X2luaXRfZ2VuZXJpYyhzdHJ1Y3QgcGNpX2J1cyAqYnVzLCBz dHJ1Y3QgcGNpX2RldiAqY2FyZCwNCi0Jc3RydWN0IGFkZHJlc3NfaW5mbyAq aHdfY29uZmlnKQ0KLXsNCi0JaWYoKGFkMTgxNl9kZXYgPSBpc2FwbnBfZmlu ZF9kZXYoYnVzLCBjYXJkLT52ZW5kb3IsIGNhcmQtPmRldmljZSwgTlVMTCkp KSB7DQotCQlhZDE4MTZfZGV2LT5wcmVwYXJlKGFkMTgxNl9kZXYpOw0KLQkJ DQotCQlpZigoYWQxODE2X2RldiA9IGFjdGl2YXRlX2RldigiQW5hbG9nIERl dmljZXMgMTgxNihBKSIsICJhZDE4MTYiLCBhZDE4MTZfZGV2KSkpIHsNCi0J CQlod19jb25maWctPmlvX2Jhc2UJPSBhZDE4MTZfZGV2LT5yZXNvdXJjZVsy XS5zdGFydDsNCi0JCQlod19jb25maWctPmlycQkJPSBhZDE4MTZfZGV2LT5p cnFfcmVzb3VyY2VbMF0uc3RhcnQ7DQotCQkJaHdfY29uZmlnLT5kbWEJCT0g YWQxODE2X2Rldi0+ZG1hX3Jlc291cmNlWzBdLnN0YXJ0Ow0KLQkJCWh3X2Nv bmZpZy0+ZG1hMgkJPSBhZDE4MTZfZGV2LT5kbWFfcmVzb3VyY2VbMV0uc3Rh cnQ7DQotCQl9DQotCX0NCi0JDQotCXJldHVybihhZDE4MTZfZGV2KTsNCi19 DQotDQotc3RhdGljIHN0cnVjdCBhZDE4MTZfZGF0YSB7DQotCXN0cnVjdCBw Y2lfZGV2ICogKCppbml0ZnVuYykoc3RydWN0IHBjaV9idXMqLCBzdHJ1Y3Qg cGNpX2RldiAqLCBzdHJ1Y3QgYWRkcmVzc19pbmZvICopOw0KLQljaGFyICpu YW1lOw0KLX0gYWQxODE2X3BucF9kYXRhW10gX19pbml0ZGF0YSA9IHsNCi0J eyAmYWQxODE2X2luaXRfZ2VuZXJpYywgIkFuYWxvZyBEZXZpY2VzIDE4MTUi IH0sDQotCXsgJmFkMTgxNl9pbml0X2dlbmVyaWMsICJBbmFsb2cgRGV2aWNl cyAxODE2QSIgfQ0KLX07DQotDQogc3RhdGljIHN0cnVjdCB7DQogCXVuc2ln bmVkIHNob3J0IGNhcmRfdmVuZG9yLCBjYXJkX2RldmljZTsNCiAJdW5zaWdu ZWQgc2hvcnQgdmVuZG9yOw0KQEAgLTEzMjMsMTA3ICsxMjM0LDEwMSBAQA0K IH0gaXNhcG5wX2FkMTgxNl9saXN0W10gX19pbml0ZGF0YSA9IHsNCiAJewlJ U0FQTlBfQU5ZX0lELCBJU0FQTlBfQU5ZX0lELA0KIAkJSVNBUE5QX1ZFTkRP UignQScsJ0QnLCdTJyksIElTQVBOUF9GVU5DVElPTigweDcxNTApLCANCi0J CSZhZDE4MTZfcG5wX2RhdGFbMF0gfSwNCisJCTAgfSwNCiAJewlJU0FQTlBf QU5ZX0lELCBJU0FQTlBfQU5ZX0lELA0KIAkJSVNBUE5QX1ZFTkRPUignQScs J0QnLCdTJyksIElTQVBOUF9GVU5DVElPTigweDcxODApLA0KLQkJJmFkMTgx Nl9wbnBfZGF0YVsxXSB9LA0KKwkJMCB9LA0KIAl7MH0NCiB9Ow0KIA0KIE1P RFVMRV9ERVZJQ0VfVEFCTEUoaXNhcG5wLCBpc2FwbnBfYWQxODE2X2xpc3Qp Ow0KIA0KLXN0YXRpYyBpbnQgX19pbml0IGFkMTgxNl9pbml0X2lzYXBucChz dHJ1Y3QgYWRkcmVzc19pbmZvICpod19jb25maWcsDQotCXN0cnVjdCBwY2lf YnVzICpidXMsIHN0cnVjdCBwY2lfZGV2ICpjYXJkLCBpbnQgc2xvdCkNCisN Cit2b2lkIF9faW5pdCBhZDE4MTZfY29uZmlnX3BucF9jYXJkKHN0cnVjdCBw bnBfY2FyZCAqY2FyZCwgdW5zaWduZWQgc2hvcnQgdmVuZG9yLA0KKwl1bnNp Z25lZCBzaG9ydCBmdW5jdGlvbikNCiB7DQotCXN0cnVjdCBwY2lfZGV2ICpp ZGV2ID0gTlVMTDsNCi0JDQotCS8qIFlvdSBtaXNzZWQgdGhlIGluaXQgZnVu Yz8gVGhhdCdzIGJhZC4gKi8NCi0JaWYoaXNhcG5wX2FkMTgxNl9saXN0W3Ns b3RdLmRhdGEtPmluaXRmdW5jKSB7DQotCQljaGFyICpidXNuYW1lID0gYnVz LT5uYW1lWzBdID8gYnVzLT5uYW1lIDogaXNhcG5wX2FkMTgxNl9saXN0W3Ns b3RdLmRhdGEtPm5hbWU7DQotCQkNCi0JCXByaW50ayhLRVJOX0lORk8gImFk MTgxNjogJXMgZGV0ZWN0ZWRcbiIsIGJ1c25hbWUpOw0KLQkJDQotCQkvKiBJ bml0aWFsaXplIHRoaXMgYmFieS4gKi8NCi0JCWlmKChpZGV2ID0gaXNhcG5w X2FkMTgxNl9saXN0W3Nsb3RdLmRhdGEtPmluaXRmdW5jKGJ1cywgY2FyZCwg aHdfY29uZmlnKSkpIHsNCi0JCQkvKiBXZSBnb3QgaXQuICovDQotDQotCQkJ cHJpbnRrKEtFUk5fTk9USUNFICJhZDE4MTY6IElTQVBuUCByZXBvcnRzICcl cycgYXQgaS9vICUjeCwgaXJxICVkLCBkbWEgJWQsICVkXG4iLA0KLQkJCQli dXNuYW1lLA0KLQkJCQlod19jb25maWctPmlvX2Jhc2UsIGh3X2NvbmZpZy0+ aXJxLCBod19jb25maWctPmRtYSwNCi0JCQkJaHdfY29uZmlnLT5kbWEyKTsN Ci0JCQlyZXR1cm4gMTsNCi0JCX0gZWxzZQ0KLQkJCXByaW50ayhLRVJOX0lO Rk8gImFkMTgxNjogRmFpbGVkIHRvIGluaXRpYWxpemUgJXNcbiIsIGJ1c25h bWUpOw0KLQl9IGVsc2UNCi0JCXByaW50ayhLRVJOX0VSUiAiYWQxODE2OiBC YWQgZW50cnkgaW4gYWQxODE2LmMgUG5QIHRhYmxlXG4iKTsNCi0JDQotCXJl dHVybiAwOw0KKwlzdHJ1Y3QgYWRkcmVzc19pbmZvIGNmZzsNCisgIAlzdHJ1 Y3QgcG5wX2RldiAqY2FyZF9kZXYgPSBwbnBfZmluZF9kZXYoY2FyZCwgdmVu ZG9yLCBmdW5jdGlvbiwgTlVMTCk7DQorCWlmICghY2FyZF9kZXYpIHJldHVy bjsNCisJaWYgKHBucF9kZXZpY2VfYXR0YWNoKGNhcmRfZGV2KSA8IDApIHsN CisJICAJcHJpbnRrKEtFUk5fV0FSTklORyAiYWQxODE2OiBGYWlsZWQgdG8g YXR0YWNoIFBuUCBkZXZpY2VcbiIpOw0KKwkJcmV0dXJuOw0KKwl9DQorCWlm IChwbnBfYWN0aXZhdGVfZGV2KGNhcmRfZGV2KSA8IDApIHsNCisJCXByaW50 ayhLRVJOX1dBUk5JTkcgImFkMTgxNjogRmFpbGVkIHRvIGFjdGl2YXRlIFBu UCBkZXZpY2VcbiIpOw0KKwkJcG5wX2RldmljZV9kZXRhY2goY2FyZF9kZXYp Ow0KKwkJcmV0dXJuOw0KKwl9DQorCWNmZy5pb19iYXNlID0gcG5wX3BvcnRf c3RhcnQoY2FyZF9kZXYsIDIpOw0KKwljZmcuaXJxID0gcG5wX2lycShjYXJk X2RldiwgMCk7DQorCWNmZy5kbWEgPSBwbnBfaXJxKGNhcmRfZGV2LCAwKTsN CisJY2ZnLmRtYTIgPSBwbnBfaXJxKGNhcmRfZGV2LCAxKTsNCisJaWYgKCFh ZDE4MTZfaW5pdF9jYXJkKCZjZmcsIGNhcmRfZGV2KSkgew0KKwkgIAlwbnBf ZGlzYWJsZV9kZXYoY2FyZF9kZXYpOw0KKwkJcG5wX2RldmljZV9kZXRhY2go Y2FyZF9kZXYpOw0KKwl9DQogfQ0KIA0KLS8qDQotICogQWN0dWFsbHkgdGhp cyByb3V0aW5lIHdpbGwgZGV0ZWN0IGFuZCBjb25maWd1cmUgb25seSB0aGUg Zmlyc3QgY2FyZCB3aXRoIHN1Y2Nlc3NmdWwNCi0gKiBpbml0aWFsaXphdGlv bi4gaXNhcG5wanVtcCBjb3VsZCBiZSB1c2VkIHRvIGp1bXAgdG8gYSBzcGVj aWZpYyBlbnRyeS4NCi0gKiBQbGVhc2UgYWx3YXlzIGFkZCBlbnRyaWVzIGF0 IHRoZSBlbmQgb2YgdGhlIGFycmF5Lg0KLSAqIFNob3VsZCB0aGlzIGJlIGZp eGVkPyAtIGF6dW1tbw0KLSAqLw0KLQ0KLWludCBfX2luaXQgYWQxODE2X3By b2JlX2lzYXBucChzdHJ1Y3QgYWRkcmVzc19pbmZvICpod19jb25maWcpDQor dm9pZCBfX2luaXQgYWQxODE2X2NvbmZpZ19wbnBfY2FyZHModm9pZCkNCiB7 DQorCWludCBucl9wbnBfY2ZnOw0KIAlpbnQgaTsNCiAJDQogCS8qIENvdW50 IGVudHJpZXMgaW4gaXNhcG5wX2FkMTgxNl9saXN0ICovDQotCWZvciAoaSA9 IDA7IGlzYXBucF9hZDE4MTZfbGlzdFtpXS52ZW5kb3IgIT0gMDsgaSsrKQ0K LQkJOw0KKwlmb3IgKG5yX3BucF9jZmcgPSAwOyBpc2FwbnBfYWQxODE2X2xp c3RbbnJfcG5wX2NmZ10uY2FyZF92ZW5kb3IgIT0gMDsgDQorCQlucl9wbnBf Y2ZnKyspOw0KIAkvKiBDaGVjayBhbmQgYWRqdXN0IGlzYXBucGp1bXAgKi8N Ci0JaWYoIGlzYXBucGp1bXAgPCAwIHx8IGlzYXBucGp1bXAgPiAoIGkgLSAx ICkgKSB7DQotCQlwcmludGsoS0VSTl9FUlIgImFkMTgxNjogVmFsaWQgcmFu Z2UgZm9yIGlzYXBucGp1bXAgaXMgMC0lZC4gQWRqdXN0ZWQgdG8gMC5cbiIs IGktMSk7DQorCWlmKCBpc2FwbnBqdW1wIDwgMCB8fCBpc2FwbnBqdW1wID49 IG5yX3BucF9jZmcpIHsNCisJCXByaW50ayhLRVJOX1dBUk5JTkcgDQorCQkJ ImFkMTgxNjogVmFsaWQgcmFuZ2UgZm9yIGlzYXBucGp1bXAgaXMgMC0lZC4g Ig0KKwkJCSJBZGp1c3RlZCB0byAwLlxuIiwgbnJfcG5wX2NmZy0xKTsNCiAJ CWlzYXBucGp1bXAgPSAwOw0KIAl9DQotDQotCSBmb3IgKGkgPSBpc2FwbnBq dW1wOyBpc2FwbnBfYWQxODE2X2xpc3RbaV0udmVuZG9yICE9IDA7IGkrKykg ew0KLQkgCXN0cnVjdCBwY2lfZGV2ICpjYXJkID0gTlVMTDsNCi0JCQ0KLQkJ d2hpbGUgKChjYXJkID0gaXNhcG5wX2ZpbmRfZGV2KE5VTEwsIGlzYXBucF9h ZDE4MTZfbGlzdFtpXS52ZW5kb3IsDQotCQkgIGlzYXBucF9hZDE4MTZfbGlz dFtpXS5mdW5jdGlvbiwgY2FyZCkpKQ0KLQkJCWlmKGFkMTgxNl9pbml0X2lz YXBucChod19jb25maWcsIGNhcmQtPmJ1cywgY2FyZCwgaSkpDQotCQkJCXJl dHVybiAwOw0KKwlmb3IgKGkgPSBpc2FwbnBqdW1wOyBpc2FwbnBfYWQxODE2 X2xpc3RbaV0uY2FyZF92ZW5kb3IgIT0gMDsgaSsrKSB7DQorCSAJc3RydWN0 IHBucF9jYXJkICpjYXJkID0gTlVMTDsNCisJCS8qIGl0ZXJhdGUgb3ZlciBh bGwgcG5wIGNhcmRzICovCQkNCisJCXdoaWxlICgoY2FyZCA9IHBucF9maW5k X2NhcmQoaXNhcG5wX2FkMTgxNl9saXN0W2ldLmNhcmRfdmVuZG9yLA0KKwkJ ICAgICAgICAgICAgICAJaXNhcG5wX2FkMTgxNl9saXN0W2ldLmNhcmRfZGV2 aWNlLCBjYXJkKSkpIA0KKwkJCWFkMTgxNl9jb25maWdfcG5wX2NhcmQoY2Fy ZCwgDQorCQkJCWlzYXBucF9hZDE4MTZfbGlzdFtpXS52ZW5kb3IsDQorCQkJ CWlzYXBucF9hZDE4MTZfbGlzdFtpXS5mdW5jdGlvbik7DQogCX0NCi0NCi0J cmV0dXJuIC1FTk9ERVY7DQogfQ0KICNlbmRpZg0KIA0KKy8qIG1vZHVsZSBp bml0aWFsaXphdGlvbiAqLw0KIHN0YXRpYyBpbnQgX19pbml0IGluaXRfYWQx ODE2KHZvaWQpDQogew0KLQ0KLSNpZmRlZiBfX0lTQVBOUF9fDQotCWlmKGlz YXBucCAmJiAoYWQxODE2X3Byb2JlX2lzYXBucCgmY2ZnKSA8IDApICkgew0K LQkJcHJpbnRrKEtFUk5fTk9USUNFICJhZDE4MTY6IE5vIElTQVBuUCBjYXJk cyBmb3VuZCwgdHJ5aW5nIHN0YW5kYXJkIG9uZXMuLi5cbiIpOw0KLQkJaXNh cG5wID0gMDsNCi0JfQ0KKwlwcmludGsoS0VSTl9JTkZPICJhZDE4MTY6IEFE MTgxNiBzb3VuZGRyaXZlciAiDQorCQkJICJDb3B5cmlnaHQgKEMpIDE5OTgt MjAwMyBieSBUaG9yc3RlbiBLbmFiZSBhbmQgIg0KKwkJCSAib3RoZXJzXG4i KTsNCisjaWZkZWYgQUQxODE2X0NMT0NLIA0KKwkvKiBzZXQgYWQxODE2X2Ns b2NrZnJlcSBpZiBzZXQgZHVyaW5nIGNvbXBpbGF0aW9uICovDQorCWFkMTgx Nl9jbG9ja2ZyZXE9QUQxODE2X0NMT0NLOw0KICNlbmRpZg0KLQ0KLQlpZigg aXNhcG5wID09IDApIHsNCi0JCWNmZy5pb19iYXNlCT0gaW87DQotCQljZmcu aXJxCQk9IGlycTsNCi0JCWNmZy5kbWEJCT0gZG1hOw0KLQkJY2ZnLmRtYTIJ PSBkbWEyOw0KLQl9DQotDQotCWlmIChjZmcuaW9fYmFzZSA9PSAtMSB8fCBj ZmcuaXJxID09IC0xIHx8IGNmZy5kbWEgPT0gLTEgfHwgY2ZnLmRtYTIgPT0g LTEpIHsNCi0JCXByaW50ayhLRVJOX0lORk8gImFkMTgxNjogZG1hLCBkbWEy LCBpcnEgYW5kIGlvIG11c3QgYmUgc2V0LlxuIik7DQotCQlyZXR1cm4gLUVJ TlZBTDsNCisJaWYgKGFkMTgxNl9jbG9ja2ZyZXE8NTAwMCB8fCBhZDE4MTZf Y2xvY2tmcmVxPjEwMDAwMCkgew0KKwkJYWQxODE2X2Nsb2NrZnJlcT0zMzAw MDsNCiAJfQ0KIA0KLQlpZiAocHJvYmVfYWQxODE2KCZjZmcpID09IDApIHsN Ci0JCXJldHVybiAtRU5PREVWOw0KKyNpZmRlZiBfX0lTQVBOUF9fDQorCS8q IGNvbmZpZ3VyZSBQblAgY2FyZHMgKi8NCisJaWYoaXNhcG5wKSBhZDE4MTZf Y29uZmlnX3BucF9jYXJkcygpOw0KKyNlbmRpZg0KKwkvKiBjb25maWd1cmUg Y2FyZCBieSBtb2R1bGUgcGFyYW1zICovDQorCWlmIChpbyAhPSAtMSAmJiBp cnEgIT0gLTEgJiYgZG1hICE9IC0xKSB7DQorCQlzdHJ1Y3QgYWRkcmVzc19p bmZvIGNmZzsNCisJCWNmZy5pb19iYXNlID0gaW87DQorCQljZmcuaXJxID0g aXJxOw0KKwkJY2ZnLmRtYSA9IGRtYTsNCisJCWNmZy5kbWEyID0gZG1hMjsN CisJCWFkMTgxNl9pbml0X2NhcmQoJmNmZywgTlVMTCk7DQogCX0NCi0NCi0J YXR0YWNoX2FkMTgxNigmY2ZnKTsNCi0NCisJaWYgKG5yX2FkMTgxNl9kZXZz IDw9IDApDQorCSAgCXJldHVybiAtRU5PREVWOw0KIAlyZXR1cm4gMDsNCiB9 DQogDQorLyogbW9kdWxlIGNsZWFudXAgKi8NCiBzdGF0aWMgdm9pZCBfX2V4 aXQgY2xlYW51cF9hZDE4MTYgKHZvaWQpDQogew0KIAlpbnQgICAgICAgICAg aTsNCkBAIC0xNDM1LDE4ICsxMzQwLDE0IEBADQogCQl1bmxvYWRfY2FyZChk ZXZjKTsNCiAJfSAgICAgDQogCW5yX2FkMTgxNl9kZXZzPTA7DQotDQotI2lm ZGVmIF9fSVNBUE5QX18NCi0JaWYoYWN0aXZhdGVkKQ0KLQkJaWYoYWQxODE2 X2RldikNCi0JCQlhZDE4MTZfZGV2LT5kZWFjdGl2YXRlKGFkMTgxNl9kZXYp Ow0KLSNlbmRpZg0KKwlwcmludGsoS0VSTl9JTkZPICJhZDE4MTY6IGRyaXZl ciB1bmxvYWRlZCFcbiIpOw0KIH0NCiANCiBtb2R1bGVfaW5pdChpbml0X2Fk MTgxNik7DQogbW9kdWxlX2V4aXQoY2xlYW51cF9hZDE4MTYpOw0KIA0KICNp Zm5kZWYgTU9EVUxFDQorLyoga2VybmVsIGNvbW1hbmQgbGluZSBwYXJhbWV0 ZXIgZXZhbHVhdGlvbiAqLw0KIHN0YXRpYyBpbnQgX19pbml0IHNldHVwX2Fk MTgxNihjaGFyICpzdHIpDQogew0KIAkvKiBpbywgaXJxLCBkbWEsIGRtYTIg Ki8NCkBAIC0xNDU4LDcgKzEzNTksNiBAQA0KIAlpcnEJPSBpbnRzWzJdOw0K IAlkbWEJPSBpbnRzWzNdOw0KIAlkbWEyCT0gaW50c1s0XTsNCi0NCiAJcmV0 dXJuIDE7DQogfQ0KIA0K --655617-567491154-1058353023=:26143-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/