Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755577AbYLEGel (ORCPT ); Fri, 5 Dec 2008 01:34:41 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751873AbYLEGeb (ORCPT ); Fri, 5 Dec 2008 01:34:31 -0500 Received: from rv-out-0506.google.com ([209.85.198.226]:8611 "EHLO rv-out-0506.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751692AbYLEGea (ORCPT ); Fri, 5 Dec 2008 01:34:30 -0500 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:mime-version:content-type; b=VN4KuSIvCFop1he7J8sf2YAqlySnd69kfHhMdkiqC9Hoy5ff2XimY5R6GBBYHwVpTX WFcDVUh/szIwQztfkRAHDpEAZmYfaqOhhQgo/MC0rqurYxtdy1tNYZUTLyS9N2Zuej0p nuTflOd+UjmhZCxVkmiJwqEIjaPGcR9pBHCAs= Message-ID: <5d5443650812042234y6301148at6658f4855500b105@mail.gmail.com> Date: Fri, 5 Dec 2008 12:04:29 +0530 From: "Trilok Soni" To: linux-kernel@vger.kernel.org, samuel@sortiz.org Subject: [PATCH] OMAP IrDA driver Cc: irda-users@lists.sourceforge.net, "linux-omap@vger.kernel.org Mailing List" , "Andrew Morton" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_20444_32833649.1228458869193" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 33509 Lines: 449 ------=_Part_20444_32833649.1228458869193 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline This time adding LKML too. -- ---Trilok Soni http://triloksoni.wordpress.com http://www.linkedin.com/in/triloksoni ------=_Part_20444_32833649.1228458869193 Content-Type: application/octet-stream; name=0001-OMAP-IrDA-driver.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_focgni400 Content-Disposition: attachment; filename=0001-OMAP-IrDA-driver.patch RnJvbSBlMjE4Y2Q1YjJmMjlmYTNjYTM0MmE1ZjQwNzRhOWUzY2QzY2FjZGFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUcmlsb2sgU29uaSA8c29uaS50cmlsb2tAZ21haWwuY29tPgpE YXRlOiBGcmksIDI4IE5vdiAyMDA4IDE2OjQ5OjQ0ICswNTMwClN1YmplY3Q6IFtQQVRDSF0gT01B UCBJckRBIGRyaXZlcgoKQWRkIFRleGFzIEluc3RydW1lbnRzIE9NQVAgSXJEQSBkZXZpY2UgZHJp dmVyLCB3aGljaCBzdXBwb3J0cwpTSVIvTUlSIGFuZCBGSVIuCgpTaWduZWQtb2ZmLWJ5OiBUcmls b2sgU29uaSA8c29uaS50cmlsb2tAZ21haWwuY29tPgotLS0KIGRyaXZlcnMvbmV0L2lyZGEvS2Nv bmZpZyAgIHwgICAgOSArCiBkcml2ZXJzL25ldC9pcmRhL01ha2VmaWxlICB8ICAgIDEgKwogZHJp dmVycy9uZXQvaXJkYS9vbWFwLWlyLmMgfCAgODkzICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDkwMyBpbnNlcnRpb25zKCspLCAw IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2lyZGEvb21hcC1p ci5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS9LY29uZmlnIGIvZHJpdmVycy9uZXQv aXJkYS9LY29uZmlnCmluZGV4IGU2MzE3NTUuLjZhZjBjMTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bmV0L2lyZGEvS2NvbmZpZworKysgYi9kcml2ZXJzL25ldC9pcmRhL0tjb25maWcKQEAgLTM0Miw1 ICszNDIsMTQgQEAgY29uZmlnIE1DU19GSVIKIAkgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUs IGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWQKIAkgIG1jczc3ODAuCiAK K2NvbmZpZyBPTUFQX0lSCisJdHJpc3RhdGUgIk9NQVAgSXJEQShTSVIvTUlSL0ZJUikiCisJZGVw ZW5kcyBvbiBJUkRBICYmIEFSQ0hfT01BUAorICAgICAgICBoZWxwCisJICBTYXkgWSBoZXJlIGlm IHlvdSB3YW50IHRvIGJ1aWxkIHN1cHBvcnQgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cworCSAg T01BUCBJckRBIGRldmljZSBkcml2ZXIsIHdoaWNoIHN1cHBvcnRzIFNJUi9NSVIvRklSLiBUaGlz IGRyaXZlcgorCSAgcmVsaWVzIG9uIHBsYXRmb3JtIHNwZWNpZmljIGhlbHBlciByb3V0aW5lcyBz byBhdmFpbGFibGUgY2FwYWJpbGl0aWVzCisJICBtYXkgdmFyeSBmcm9tIG9uZSBPTUFQIHRhcmdl dCB0byBhbm90aGVyLgorCiBlbmRtZW51CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEv TWFrZWZpbGUgYi9kcml2ZXJzL25ldC9pcmRhL01ha2VmaWxlCmluZGV4IDVkMjBmZGUuLjcyYmJj MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9u ZXQvaXJkYS9NYWtlZmlsZQpAQCAtMTksNiArMTksNyBAQCBvYmotJChDT05GSUdfVklBX0ZJUikJ CSs9IHZpYS1pcmNjLm8KIG9iai0kKENPTkZJR19QWEFfRklDUCkJICAgICAgICArPSBweGFmaWNw X2lyLm8KIG9iai0kKENPTkZJR19NQ1NfRklSKQkgICAgICAgICs9IG1jczc3ODAubwogb2JqLSQo Q09ORklHX0FVMTAwMF9GSVIpCSs9IGF1MWtfaXIubworb2JqLSQoQ09ORklHX09NQVBfSVIpCQkr PSBvbWFwLWlyLm8KICMgU0lSIGRyaXZlcnMKIG9iai0kKENPTkZJR19JUlRUWV9TSVIpCQkrPSBp cnR0eS1zaXIubwlzaXItZGV2Lm8KICMgZG9uZ2xlIGRyaXZlcnMgZm9yIFNJUiBkcml2ZXJzCmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL29tYXAtaXIuYyBiL2RyaXZlcnMvbmV0L2lyZGEv b21hcC1pci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMjk1ODUKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL25ldC9pcmRhL29tYXAtaXIuYwpAQCAtMCwwICsxLDg5 MyBAQAorLyoKKyAqIEJSSUVGIE1PRFVMRSBERVNDUklQVElPTgorICoKKyAqCUluZnJhLXJlZCBk cml2ZXIgZm9yIHRoZSBPTUFQMTYxMC1IMiBhbmQgT01BUDE3MTAtSDMgYW5kIEg0IFBsYXRmb3Jt cworICoJICAoU0lSL01JUi9GSVIgbW9kZXMpCisgKgkgIChiYXNlZCBvbiBvbWFwLXNpci5jKQor ICoKKyAqIENvcHlyaWdodCAyMDAzIE1vbnRhVmlzdGEgU29mdHdhcmUgSW5jLgorICogQXV0aG9y OiBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCisgKgkgICBzb3VyY2VAbXZpc3RhLmNvbQorICoK KyAqIENvcHlyaWdodCAyMDA0IFRleGFzIEluc3RydW1lbnRzLgorICoKKyAqICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUJIGl0IGFuZC9vciBtb2Rp ZnkgaXQKKyAqICB1bmRlciAgdGhlIHRlcm1zIG9mCSB0aGUgR05VIEdlbmVyYWwgIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAqICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 ICBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZQlMaWNlbnNlLCBvciAoYXQgeW91cgorICogIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRISVMgIFNPRlRXQVJFICBJUyBQUk9WSURF RAkgIGBgQVMJSVMnJyBBTkQgICBBTlkJRVhQUkVTUyBPUiBJTVBMSUVECisgKiAgV0FSUkFOVElF UywJICBJTkNMVURJTkcsIEJVVCBOT1QgIExJTUlURUQgIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U SUVTIE9GCisgKiAgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOCisgKiAgTk8JRVZFTlQgIFNIQUxMICAgVEhFIEFV VEhPUiAgQkUJIExJQUJMRSBGT1IgQU5ZCSAgRElSRUNULCBJTkRJUkVDVCwKKyAqICBJTkNJREVO VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE SU5HLCBCVVQKKyAqICBOT1QgTElNSVRFRAkgIFRPLCBQUk9DVVJFTUVOVCBPRiAgU1VCU1RJVFVU RSBHT09EUwlPUiBTRVJWSUNFUzsgTE9TUyBPRgorICogIFVTRSwgREFUQSwJT1IgUFJPRklUUzsg T1IJQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqICBBTlkg VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgkgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ VFksIE9SIFRPUlQKKyAqICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqICBUSElTIFNPRlRXQVJFLCBFVkVO IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYWxvbmcKKyAqICB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSAgdG8g dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqICA2NzUgTWFzcyBBdmUsIENh bWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVs ZS5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgor I2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+Cisj aW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgorI2lu Y2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5j bHVkZSA8bGludXgvaW9wb3J0Lmg+CisjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKyNp bmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC93b3JrcXVl dWUuaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4L3NlcmlhbC5oPgor CisjaW5jbHVkZSA8bmV0L2lyZGEvaXJkYS5oPgorI2luY2x1ZGUgPG5ldC9pcmRhL2lybW9kLmg+ CisjaW5jbHVkZSA8bmV0L2lyZGEvd3JhcHBlci5oPgorI2luY2x1ZGUgPG5ldC9pcmRhL2lyZGFf ZGV2aWNlLmg+CisKKyNpbmNsdWRlIDxhc20vaXJxLmg+CisjaW5jbHVkZSA8YXNtL21hY2gtdHlw ZXMuaD4KKyNpbmNsdWRlIDxhc20vZG1hLmg+CisKKyNpbmNsdWRlIDxtYWNoL2hhcmR3YXJlLmg+ CisjaW5jbHVkZSA8bWFjaC9tdXguaD4KKyNpbmNsdWRlIDxtYWNoL2dwaW8uaD4KKyNpbmNsdWRl IDxtYWNoL2lyZGEuaD4KKworI2RlZmluZSBVQVJUM19FRlJfRU4JCQkoMSA8PCA0KQorI2RlZmlu ZSBVQVJUM19NQ1JfRU5fVENSX1RMUgkJKDEgPDwgNikKKworI2RlZmluZSBVQVJUM19MQ1JfV0xf OAkJCSgzIDw8IDApCisjZGVmaW5lIFVBUlQzX0xDUl9TUDIJCQkoMSA8PCAyKQorI2RlZmluZSBV QVJUM19MQ1JfRElWRU4JCQkoMSA8PCA3KQorCisjZGVmaW5lIFVBUlQzX0ZDUl9GSUZPX0VOCQko MSA8PCAwKQorI2RlZmluZSBVQVJUM19GQ1JfRklGT19SWAkJKDEgPDwgMSkKKyNkZWZpbmUgVUFS VDNfRkNSX0ZJRk9fVFgJCSgxIDw8IDIpCisjZGVmaW5lIFVBUlQzX0ZDUl9GSUZPX0RNQTEJCSgx IDw8IDMpCisjZGVmaW5lIFVBUlQzX0ZDUl9GSUZPX1RYX1RSSUcxNgkoMSA8PCA0KQorI2RlZmlu ZSBVQVJUM19GQ1JfRklGT19SWF9UUklHMTYJKDEgPDwgNikKKyNkZWZpbmUgVUFSVDNfRkNSX0NP TkZJRwkoXAorCQlVQVJUM19GQ1JfRklGT19FTiB8IFVBUlQzX0ZDUl9GSUZPX1JYCXxcCisJCVVB UlQzX0ZDUl9GSUZPX1RYIHwgVUFSVDNfRkNSX0ZJRk9fRE1BMSB8XAorCQlVQVJUM19GQ1JfRklG T19UWF9UUklHMTYJCXxcCisJCVVBUlQzX0ZDUl9GSUZPX1JYX1RSSUcxNikKKworI2RlZmluZSBV QVJUM19TQ1JfVFhfVFJJRzEJCSgxIDw8IDYpCisjZGVmaW5lIFVBUlQzX1NDUl9SWF9UUklHMQkJ KDEgPDwgNykKKworI2RlZmluZSBVQVJUM19NRFIxX1JFU0VUCQkoMHgwNykKKyNkZWZpbmUgVUFS VDNfTURSMV9TSVIJCQkoMSA8PCAwKQorI2RlZmluZSBVQVJUM19NRFIxX01JUgkJCSg0IDw8IDAp CisjZGVmaW5lIFVBUlQzX01EUjFfRklSCQkJKDUgPDwgMCkKKyNkZWZpbmUgVUFSVDNfTURSMV9T SVBfQVVUTwkJKDEgPDwgNikKKworI2RlZmluZSBVQVJUM19NRFIyX1RSSUcxCQkoMCA8PCAxKQor I2RlZmluZSBVQVJUM19NRFIyX0lSVFhfVU5ERVJSVU4JKDEgPDwgMCkKKworI2RlZmluZSBVQVJU M19BQ0VSR19UWF9VTkRFUlJVTl9ESVMJKDEgPDwgNCkKKyNkZWZpbmUgVUFSVDNfQUNFUkdfU0Rf TU9ERV9MT1cJCSgxIDw8IDYpCisjZGVmaW5lIFVBUlQzX0FDRVJHX0RJU19JUl9SWAkJKDEgPDwg NSkKKworI2RlZmluZSBVQVJUM19JRVJfRU9GCQkJKDEgPDwgNSkKKyNkZWZpbmUgVUFSVDNfSUVS X0NUUwkJCSgxIDw8IDcpCisKKyNkZWZpbmUgVUFSVDNfSUlSX1RYX1NUQVRVUwkJKDEgPDwgNSkK KyNkZWZpbmUgVUFSVDNfSUlSX0VPRgkJCSgweDgwKQorCisjZGVmaW5lIElTX0ZJUihvbWFwX2ly KQkJKChvbWFwX2lyKS0+c3BlZWQgPj0gNDAwMDAwMCkKKworc3RydWN0IG9tYXBfaXJkYSB7CisJ dW5zaWduZWQgY2hhciBvcGVuOworCWludCBzcGVlZDsJCS8qIEN1cnJlbnQgSXJEQSBzcGVlZCAq LworCWludCBuZXdzcGVlZDsKKworCXN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzIHN0YXRzOworCXN0 cnVjdCBpcmxhcF9jYiAqaXJsYXA7CisJc3RydWN0IHFvc19pbmZvIHFvczsKKworCWludCByeF9k bWFfY2hhbm5lbDsKKwlpbnQgdHhfZG1hX2NoYW5uZWw7CisKKwlkbWFfYWRkcl90IHJ4X2J1Zl9k bWFfcGh5czsJLyogUGh5c2ljYWwgYWRkcmVzcyBvZiBSWCBETUEgYnVmZmVyICovCisJZG1hX2Fk ZHJfdCB0eF9idWZfZG1hX3BoeXM7CS8qIFBoeXNpY2FsIGFkZHJlc3Mgb2YgVFggRE1BIGJ1ZmZl ciAqLworCisJdm9pZCAqcnhfYnVmX2RtYV92aXJ0OwkJLyogVmlydHVhbCBhZGRyZXNzIG9mIFJY IERNQSBidWZmZXIgKi8KKwl2b2lkICp0eF9idWZfZG1hX3ZpcnQ7CQkvKiBWaXJ0dWFsIGFkZHJl c3Mgb2YgVFggRE1BIGJ1ZmZlciAqLworCisJc3RydWN0IGRldmljZSAqZGV2OworCXN0cnVjdCBv bWFwX2lyZGFfY29uZmlnICpwZGF0YTsKK307CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB1YXJ0X3Jl Z19vdXQoaW50IGlkeCwgdTggdmFsKQoreworCW9tYXBfd3JpdGViKHZhbCwgaWR4KTsKK30KKwor c3RhdGljIGlubGluZSB1OCB1YXJ0X3JlZ19pbihpbnQgaWR4KQoreworCXU4IGIgPSBvbWFwX3Jl YWRiKGlkeCk7CisJcmV0dXJuIGI7Cit9CisKKy8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCitz dGF0aWMgaW50IG9tYXBfaXJkYV9zZXRfc3BlZWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50 IHNwZWVkKTsKKworc3RhdGljIHZvaWQgb21hcF9pcmRhX3N0YXJ0X3J4X2RtYShzdHJ1Y3Qgb21h cF9pcmRhICpvbWFwX2lyKQoreworCS8qIENvbmZpZ3VyZSBETUEgKi8KKwlvbWFwX3NldF9kbWFf c3JjX3BhcmFtcyhvbWFwX2lyLT5yeF9kbWFfY2hhbm5lbCwgMHgzLCAweDAsCisJCQkJb21hcF9p ci0+cGRhdGEtPnNyY19zdGFydCwKKwkJCQkwLCAwKTsKKworCW9tYXBfZW5hYmxlX2RtYV9pcnEo b21hcF9pci0+cnhfZG1hX2NoYW5uZWwsIDB4MDEpOworCisJb21hcF9zZXRfZG1hX2Rlc3RfcGFy YW1zKG9tYXBfaXItPnJ4X2RtYV9jaGFubmVsLCAweDAsIDB4MSwKKwkJCQlvbWFwX2lyLT5yeF9i dWZfZG1hX3BoeXMsCisJCQkJMCwgMCk7CisKKwlvbWFwX3NldF9kbWFfdHJhbnNmZXJfcGFyYW1z KG9tYXBfaXItPnJ4X2RtYV9jaGFubmVsLCAweDAsCisJCQkJSVJEQV9TS0JfTUFYX01UVSwgMHgx LAorCQkJCTB4MCwgb21hcF9pci0+cGRhdGEtPnJ4X3RyaWdnZXIsIDApOworCisJb21hcF9zdGFy dF9kbWEob21hcF9pci0+cnhfZG1hX2NoYW5uZWwpOworfQorCitzdGF0aWMgdm9pZCBvbWFwX3N0 YXJ0X3R4X2RtYShzdHJ1Y3Qgb21hcF9pcmRhICpvbWFwX2lyLCBpbnQgc2l6ZSkKK3sKKwkvKiBD b25maWd1cmUgRE1BICovCisJb21hcF9zZXRfZG1hX2Rlc3RfcGFyYW1zKG9tYXBfaXItPnR4X2Rt YV9jaGFubmVsLCAweDAzLCAweDAsCisJCQkJb21hcF9pci0+cGRhdGEtPmRlc3Rfc3RhcnQsIDAs IDApOworCisJb21hcF9lbmFibGVfZG1hX2lycShvbWFwX2lyLT50eF9kbWFfY2hhbm5lbCwgMHgw MSk7CisKKwlvbWFwX3NldF9kbWFfc3JjX3BhcmFtcyhvbWFwX2lyLT50eF9kbWFfY2hhbm5lbCwg MHgwLCAweDEsCisJCQkJb21hcF9pci0+dHhfYnVmX2RtYV9waHlzLAorCQkJCTAsIDApOworCisJ b21hcF9zZXRfZG1hX3RyYW5zZmVyX3BhcmFtcyhvbWFwX2lyLT50eF9kbWFfY2hhbm5lbCwgMHgw LCBzaXplLCAweDEsCisJCQkJMHgwLCBvbWFwX2lyLT5wZGF0YS0+dHhfdHJpZ2dlciwgMCk7CisK KwkvKiBTdGFydCBETUEgKi8KKwlvbWFwX3N0YXJ0X2RtYShvbWFwX2lyLT50eF9kbWFfY2hhbm5l bCk7Cit9CisKKy8qIERNQSBSWCBjYWxsYmFjayAtIG5vcm1hbGx5LCB3ZSBzaG91bGQgbm90IGdv IGhlcmUsCisgKiBpdCBjYWxscyBvbmx5IGlmIHNvbWV0aGluZyBpcyBnb2luZyB3cm9uZworICov CitzdGF0aWMgdm9pZCBvbWFwX2lyZGFfcnhfZG1hX2NhbGxiYWNrKGludCBsY2gsIHUxNiBjaF9z dGF0dXMsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IGRhdGE7CisJ c3RydWN0IG9tYXBfaXJkYSAqb21hcF9pciA9IG5ldGRldl9wcml2KGRldik7CisKKwlwcmludGso S0VSTl9FUlIgIlJYIFRyYW5zZmVyIGVycm9yIG9yIHZlcnkgYmlnIGZyYW1lXG4iKTsKKworCS8q IENsZWFyIGludGVycnVwdHMgKi8KKwl1YXJ0X3JlZ19pbihVQVJUM19JSVIpOworCisJb21hcF9p ci0+c3RhdHMucnhfZnJhbWVfZXJyb3JzKys7CisKKwl1YXJ0X3JlZ19pbihVQVJUM19SRVNVTUUp OworCisJLyogUmUtaW5pdCBSWCBETUEgKi8KKwlvbWFwX2lyZGFfc3RhcnRfcnhfZG1hKG9tYXBf aXIpOworfQorCisvKiBETUEgVFggY2FsbGJhY2sgLSBjYWxsaW5nIHdoZW4gZnJhbWUgdHJhbnNm ZXIgaGFzIGJlZW4gZmluaXNoZWQgKi8KK3N0YXRpYyB2b2lkIG9tYXBfaXJkYV90eF9kbWFfY2Fs bGJhY2soaW50IGxjaCwgdTE2IGNoX3N0YXR1cywgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgbmV0 X2RldmljZSAqZGV2ID0gZGF0YTsKKwlzdHJ1Y3Qgb21hcF9pcmRhICpvbWFwX2lyID0gbmV0ZGV2 X3ByaXYoZGV2KTsKKworCS8qU3RvcCBETUEgY29udHJvbGxlciAqLworCW9tYXBfc3RvcF9kbWEo b21hcF9pci0+dHhfZG1hX2NoYW5uZWwpOworfQorCisvKgorICogU2V0IHRoZSBJckRBIGNvbW11 bmljYXRpb25zIHNwZWVkLgorICogSW50ZXJydXB0IGhhdmUgdG8gYmUgZGlzYWJsZWQgaGVyZS4K KyAqLworc3RhdGljIGludCBvbWFwX2lyZGFfc3RhcnR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2 KQoreworCXN0cnVjdCBvbWFwX2lyZGEgKm9tYXBfaXIgPSBuZXRkZXZfcHJpdihkZXYpOworCisJ LyogRklYTUU6IHVzZSBjbGtfKiBhcGlzIGZvciBVQVJUMyBjbG9jayovCisJLyogRW5hYmxlIFVB UlQzIGNsb2NrIGFuZCBzZXQgVUFSVDMgdG8gSXJEQSBtb2RlICovCisJaWYgKG1hY2hpbmVfaXNf b21hcF9oMigpIHx8IG1hY2hpbmVfaXNfb21hcF9oMygpKQorCQlvbWFwX3dyaXRlbChvbWFwX3Jl YWRsKE1PRF9DT05GX0NUUkxfMCkgfCAoMSA8PCAzMSkgfCAoMSA8PCAxNSksCisJCQkJTU9EX0NP TkZfQ1RSTF8wKTsKKworCS8qIE9ubHkgZm9yIEgyPworCSAqLworCWlmIChvbWFwX2lyLT5wZGF0 YS0+dHJhbnNjZWl2ZXJfbW9kZSAmJiBtYWNoaW5lX2lzX29tYXBfaDIoKSkgeworCQkvKiBJcyBp dCBzZWxlY3RfaXJkYSBvbiBIMiA/ICovCisJCW9tYXBfd3JpdGVsKG9tYXBfcmVhZGwoRlVOQ19N VVhfQ1RSTF9BKSB8IDcsCisJCQkJCUZVTkNfTVVYX0NUUkxfQSk7CisJCW9tYXBfaXItPnBkYXRh LT50cmFuc2NlaXZlcl9tb2RlKG9tYXBfaXItPmRldiwgSVJfU0lSTU9ERSk7CisJfQorCisJdWFy dF9yZWdfb3V0KFVBUlQzX01EUjEsIFVBUlQzX01EUjFfUkVTRVQpOwkvKiBSZXNldCBtb2RlICov CisKKwkvKiBDbGVhciBETEggYW5kIERMTCAqLworCXVhcnRfcmVnX291dChVQVJUM19MQ1IsIFVB UlQzX0xDUl9ESVZFTik7CisKKwl1YXJ0X3JlZ19vdXQoVUFSVDNfRExMLCAwKTsKKwl1YXJ0X3Jl Z19vdXQoVUFSVDNfRExILCAwKTsKKwl1YXJ0X3JlZ19vdXQoVUFSVDNfTENSLCAweGJmKTsJLyog RklYTUU6IEFkZCAjZGVmaW5lICovCisKKwl1YXJ0X3JlZ19vdXQoVUFSVDNfRUZSLCBVQVJUM19F RlJfRU4pOworCXVhcnRfcmVnX291dChVQVJUM19MQ1IsIFVBUlQzX0xDUl9ESVZFTik7CisKKwkv KiBFbmFibGUgYWNjZXNzIHRvIFVBUlQzX1RMUiBhbmQgVUFSVDNfVENSIHJlZ2lzdGVycyAqLwor CXVhcnRfcmVnX291dChVQVJUM19NQ1IsIFVBUlQzX01DUl9FTl9UQ1JfVExSKTsKKworCXVhcnRf cmVnX291dChVQVJUM19TQ1IsIDApOworCS8qIFNldCBSeCB0cmlnZ2VyIHRvIDEgYW5kIFR4IHRy aWdnZXIgdG8gMSAqLworCXVhcnRfcmVnX291dChVQVJUM19UTFIsIDApOworCisJLyogU2V0IExD UiB0byA4IGJpdHMgYW5kIDEgc3RvcCBiaXQgKi8KKwl1YXJ0X3JlZ19vdXQoVUFSVDNfTENSLCAw eDAzKTsKKworCS8qIENsZWFyIFJYIGFuZCBUWCBGSUZPIGFuZCBlbmFibGUgRklGTyAqLworCS8q IFVzZSBETUEgUmVxIGZvciB0cmFuc2ZlcnMgKi8KKwl1YXJ0X3JlZ19vdXQoVUFSVDNfRkNSLCBV QVJUM19GQ1JfQ09ORklHKTsKKworCXVhcnRfcmVnX291dChVQVJUM19NQ1IsIDApOworCisJdWFy dF9yZWdfb3V0KFVBUlQzX1NDUiwgVUFSVDNfU0NSX1RYX1RSSUcxIHwKKwkJCVVBUlQzX1NDUl9S WF9UUklHMSk7CisKKwkvKiBFbmFibGUgVUFSVDMgU0lSIE1vZGUsKEZyYW1lLWxlbmd0aCBtZXRo b2QgdG8gZW5kIGZyYW1lcykgKi8KKwl1YXJ0X3JlZ19vdXQoVUFSVDNfTURSMSwgVUFSVDNfTURS MV9TSVIpOworCisJLyogU2V0IFN0YXR1cyBGSUZPIHRyaWcgdG8gMSAqLworCXVhcnRfcmVnX291 dChVQVJUM19NRFIyLCAwKTsKKworCS8qIEVuYWJsZXMgUlhJUiBpbnB1dCAqLworCS8qIGFuZCBk aXNhYmxlIFRYIHVuZGVycnVuICovCisJLyogU0VORF9TSVAgcHVsc2UgKi8KKwl1YXJ0X3JlZ19v dXQoVUFSVDNfQUNSRUcsIFVBUlQzX0FDRVJHX1NEX01PREVfTE9XIHwKKwkJCVVBUlQzX0FDRVJH X1RYX1VOREVSUlVOX0RJUyk7CisKKwkvKiBFbmFibGUgRU9GIEludGVycnVwdCBvbmx5ICovCisJ dWFydF9yZWdfb3V0KFVBUlQzX0lFUiwgVUFSVDNfSUVSX0NUUyB8IFVBUlQzX0lFUl9FT0YpOwor CisJLyogU2V0IE1heGltdW0gUmVjZWl2ZWQgRnJhbWUgc2l6ZSB0byAyMDQ4IGJ5dGVzICovCisJ dWFydF9yZWdfb3V0KFVBUlQzX1JYRkxMLCAweDAwKTsKKwl1YXJ0X3JlZ19vdXQoVUFSVDNfUlhG TEgsIDB4MDgpOworCisJdWFydF9yZWdfaW4oVUFSVDNfUkVTVU1FKTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IG9tYXBfaXJkYV9zaHV0ZG93bihzdHJ1Y3Qgb21hcF9pcmRhICpvbWFw X2lyKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7 CisKKwkvKiBEaXNhYmxlIGFsbCBVQVJUMyBJbnRlcnJ1cHRzICovCisJdWFydF9yZWdfb3V0KFVB UlQzX0lFUiwgMCk7CisKKwkvKiBEaXNhYmxlIFVBUlQzIGFuZCBkaXNhYmxlIGJhdWQgcmF0ZSBn ZW5lcmF0b3IgKi8KKwl1YXJ0X3JlZ19vdXQoVUFSVDNfTURSMSwgVUFSVDNfTURSMV9SRVNFVCk7 CisKKwkvKiBzZXQgU0RfTU9ERSBwaW4gdG8gaGlnaCBhbmQgRGlzYWJsZSBSWCBJUiAqLworCXVh cnRfcmVnX291dChVQVJUM19BQ1JFRywgKFVBUlQzX0FDRVJHX0RJU19JUl9SWCB8CisJCQl+KFVB UlQzX0FDRVJHX1NEX01PREVfTE9XKSkpOworCisJLyogQ2xlYXIgRExIIGFuZCBETEwgKi8KKwl1 YXJ0X3JlZ19vdXQoVUFSVDNfTENSLCBVQVJUM19MQ1JfRElWRU4pOworCXVhcnRfcmVnX291dChV QVJUM19ETEwsIDApOworCXVhcnRfcmVnX291dChVQVJUM19ETEgsIDApOworCisJbG9jYWxfaXJx X3Jlc3RvcmUoZmxhZ3MpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpcnFyZXR1cm5fdAor b21hcF9pcmRhX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCit7CisJc3RydWN0IG5ldF9kZXZp Y2UgKmRldiA9IGRldl9pZDsKKwlzdHJ1Y3Qgb21hcF9pcmRhICpvbWFwX2lyID0gbmV0ZGV2X3By aXYoZGV2KTsKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCisJdTggc3RhdHVzOworCWludCB3ID0g MDsKKworCS8qIENsZWFyIEVPRiBpbnRlcnJ1cHQgKi8KKwlzdGF0dXMgPSB1YXJ0X3JlZ19pbihV QVJUM19JSVIpOworCisJaWYgKHN0YXR1cyAmIFVBUlQzX0lJUl9UWF9TVEFUVVMpIHsKKwkJdTgg bWRyMiA9IHVhcnRfcmVnX2luKFVBUlQzX01EUjIpOworCQlpZiAobWRyMiAmIFVBUlQzX01EUjJf SVJUWF9VTkRFUlJVTikKKwkJCXByaW50ayhLRVJOX0VSUiAiSXJEQSBCdWZmZXIgdW5kZXJydW4g ZXJyb3JcbiIpOworCisJCW9tYXBfaXItPnN0YXRzLnR4X3BhY2tldHMrKzsKKworCQlpZiAob21h cF9pci0+bmV3c3BlZWQpIHsKKwkJCW9tYXBfaXJkYV9zZXRfc3BlZWQoZGV2LCBvbWFwX2lyLT5u ZXdzcGVlZCk7CisJCQlvbWFwX2lyLT5uZXdzcGVlZCA9IDA7CisJCX0KKworCQluZXRpZl93YWtl X3F1ZXVlKGRldik7CisJCWlmICghKHN0YXR1cyAmIFVBUlQzX0lJUl9FT0YpKQorCQkJcmV0dXJu IElSUV9IQU5ETEVEOworCX0KKworCS8qIFN0b3AgRE1BIGFuZCBpZiB0aGVyZSBhcmUgbm8gZXJy b3JzLCBzZW5kIGZyYW1lIHRvIHVwcGVyIGxheWVyICovCisJb21hcF9zdG9wX2RtYShvbWFwX2ly LT5yeF9kbWFfY2hhbm5lbCk7CisKKwlzdGF0dXMgPSB1YXJ0X3JlZ19pbihVQVJUM19TRkxTUik7 CS8qIFRha2UgYSBmcmFtZSBzdGF0dXMgKi8KKworCWlmIChzdGF0dXMgIT0gMCkgewkvKiBCYWQg ZnJhbWU/ICovCisJCW9tYXBfaXItPnN0YXRzLnJ4X2ZyYW1lX2Vycm9ycysrOworCQl1YXJ0X3Jl Z19pbihVQVJUM19SRVNVTUUpOworCX0gZWxzZSB7CisJCS8qIFdlIGdvdCBhIGZyYW1lISAqLwor CQlza2IgPSBkZXZfYWxsb2Nfc2tiKElSREFfU0tCX01BWF9NVFUpOworCisJCWlmICghc2tiKSB7 CisJCQlwcmludGsoS0VSTl9FUlIgIm9tYXBfc2lyOiBvdXQgb2YgbWVtb3J5IGZvciBSWCBTS0Jc biIpOworCQkJcmV0dXJuIElSUV9IQU5ETEVEOworCQl9CisJCS8qCisJCSAqIEFsaWduIGFueSBJ UCBoZWFkZXJzIHRoYXQgbWF5IGJlIGNvbnRhaW5lZAorCQkgKiB3aXRoaW4gdGhlIGZyYW1lLgor CQkgKi8KKworCQlza2JfcmVzZXJ2ZShza2IsIDEpOworCisJCXcgPSBvbWFwX2dldF9kbWFfZHN0 X3BvcyhvbWFwX2lyLT5yeF9kbWFfY2hhbm5lbCkgLQorCQkJCQkJb21hcF9pci0+cnhfYnVmX2Rt YV9waHlzOworCisJCWlmICghSVNfRklSKG9tYXBfaXIpKQorCQkJLyogQ29weSBETUEgYnVmZmVy IHRvIHNrYiAqLworCQkJbWVtY3B5KHNrYl9wdXQoc2tiLCB3IC0gMiksIG9tYXBfaXItPnJ4X2J1 Zl9kbWFfdmlydCwKKwkJCQkJdyAtIDIpOworCQllbHNlCisJCQkvKiBDb3B5IERNQSBidWZmZXIg dG8gc2tiICovCisJCQltZW1jcHkoc2tiX3B1dChza2IsIHcgLSA0KSwgb21hcF9pci0+cnhfYnVm X2RtYV92aXJ0LAorCQkJCQl3IC0gNCk7CisKKwkJc2tiLT5kZXYgPSBkZXY7CisJCXNrYl9yZXNl dF9tYWNfaGVhZGVyKHNrYik7CisJCXNrYi0+cHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUkRBKTsK KwkJb21hcF9pci0+c3RhdHMucnhfcGFja2V0cysrOworCQlvbWFwX2lyLT5zdGF0cy5yeF9ieXRl cyArPSBza2ItPmxlbjsKKwkJbmV0aWZfcmVjZWl2ZV9za2Ioc2tiKTsJLyogU2VuZCBkYXRhIHRv IHVwcGVyIGxldmVsICovCisJfQorCisJLyogUmUtaW5pdCBSWCBETUEgKi8KKwlvbWFwX2lyZGFf c3RhcnRfcnhfZG1hKG9tYXBfaXIpOworCisJZGV2LT5sYXN0X3J4ID0gamlmZmllczsKKworCXJl dHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIGludCBvbWFwX2lyZGFfaGFyZF94bWl0KHN0 cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCit7CisJc3RydWN0IG9t YXBfaXJkYSAqb21hcF9pciA9IG5ldGRldl9wcml2KGRldik7CisJaW50IHNwZWVkID0gaXJkYV9n ZXRfbmV4dF9zcGVlZChza2IpOworCWludCBtdHQgPSBpcmRhX2dldF9tdHQoc2tiKTsKKwlpbnQg eGJvZnMgPSBpcmRhX2dldF9uZXh0X3hib2ZzKHNrYik7CisKKworCS8qCisJICogRG9lcyB0aGlz IHBhY2tldCBjb250YWluIGEgcmVxdWVzdCB0byBjaGFuZ2UgdGhlIGludGVyZmFjZQorCSAqIHNw ZWVkPyAgSWYgc28sIHJlbWVtYmVyIGl0IHVudGlsIHdlIGNvbXBsZXRlIHRoZSB0cmFuc21pc3Np b24KKwkgKiBvZiB0aGlzIGZyYW1lLgorCSAqLworCWlmIChzcGVlZCAhPSBvbWFwX2lyLT5zcGVl ZCAmJiBzcGVlZCAhPSAtMSkKKwkJb21hcF9pci0+bmV3c3BlZWQgPSBzcGVlZDsKKworCWlmICh4 Ym9mcykgLyogU2V0IG51bWJlciBvZiBhZGR0aW9uYWwgQk9GUyAqLworCQl1YXJ0X3JlZ19vdXQo VUFSVDNfRUJMUiwgeGJvZnMgKyAxKTsKKworCS8qCisJICogSWYgdGhpcyBpcyBhbiBlbXB0eSBm cmFtZSwgd2UgY2FuIGJ5cGFzcyBhIGxvdC4KKwkgKi8KKwlpZiAoc2tiLT5sZW4gPT0gMCkgewor CQlpZiAob21hcF9pci0+bmV3c3BlZWQpIHsKKwkJCW9tYXBfaXItPm5ld3NwZWVkID0gMDsKKwkJ CW9tYXBfaXJkYV9zZXRfc3BlZWQoZGV2LCBzcGVlZCk7CisJCX0KKwkJZGV2X2tmcmVlX3NrYihz a2IpOworCQlyZXR1cm4gMDsKKwl9CisKKwluZXRpZl9zdG9wX3F1ZXVlKGRldik7CisKKwkvKiBD b3B5IHNrYiBkYXRhIHRvIERNQSBidWZmZXIgKi8KKwlza2JfY29weV9mcm9tX2xpbmVhcl9kYXRh KHNrYiwgb21hcF9pci0+dHhfYnVmX2RtYV92aXJ0LCBza2ItPmxlbik7CisKKwkvKiBDb3B5IHNr YiBkYXRhIHRvIERNQSBidWZmZXIgKi8KKwlvbWFwX2lyLT5zdGF0cy50eF9ieXRlcyArPSBza2It PmxlbjsKKworCS8qIFNldCBmcmFtZSBsZW5ndGggKi8KKwl1YXJ0X3JlZ19vdXQoVUFSVDNfVFhG TEwsIChza2ItPmxlbiAmIDB4ZmYpKTsKKwl1YXJ0X3JlZ19vdXQoVUFSVDNfVFhGTEgsIChza2It PmxlbiA+PiA4KSk7CisKKwlpZiAobXR0ID4gMTAwMCkKKwkJbWRlbGF5KG10dCAvIDEwMDApOwor CWVsc2UKKwkJdWRlbGF5KG10dCk7CisKKwkvKiBTdGFydCBUWCBETUEgdHJhbnNmZXIgKi8KKwlv bWFwX3N0YXJ0X3R4X2RtYShvbWFwX2lyLCBza2ItPmxlbik7CisKKwkvKiBXZSBjYW4gZnJlZSBz a2Igbm93IGJlY2F1c2UgaXQncyBhbHJlYWR5IGluIERNQSBidWZmZXIgKi8KKwlkZXZfa2ZyZWVf c2tiKHNrYik7CisKKwlkZXYtPnRyYW5zX3N0YXJ0ID0gamlmZmllczsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50CitvbWFwX2lyZGFfaW9jdGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwg c3RydWN0IGlmcmVxICppZnJlcSwgaW50IGNtZCkKK3sKKwlzdHJ1Y3QgaWZfaXJkYV9yZXEgKnJx ID0gKHN0cnVjdCBpZl9pcmRhX3JlcSAqKWlmcmVxOworCXN0cnVjdCBvbWFwX2lyZGEgKm9tYXBf aXIgPSBuZXRkZXZfcHJpdihkZXYpOworCWludCByZXQgPSAtRU9QTk9UU1VQUDsKKworCisJc3dp dGNoIChjbWQpIHsKKwljYXNlIFNJT0NTQkFORFdJRFRIOgorCQlpZiAoY2FwYWJsZShDQVBfTkVU X0FETUlOKSkgeworCQkJLyoKKwkJCSAqIFdlIGFyZSB1bmFibGUgdG8gc2V0IHRoZSBzcGVlZCBp ZiB0aGUKKwkJCSAqIGRldmljZSBpcyBub3QgcnVubmluZy4KKwkJCSAqLworCQkJaWYgKG9tYXBf aXItPm9wZW4pCisJCQkJcmV0ID0gb21hcF9pcmRhX3NldF9zcGVlZChkZXYsCisJCQkJCQlycS0+ aWZyX2JhdWRyYXRlKTsKKwkJCWVsc2UgeworCQkJCXByaW50ayhLRVJOX0VSUiAib21hcF9pcjog U0lPQ1NCQU5EV0lEVEg6IgorCQkJCQkJIiAhbmV0aWZfcnVubmluZ1xuIik7CisJCQkJcmV0ID0g MDsKKwkJCX0KKwkJfQorCQlicmVhazsKKworCWNhc2UgU0lPQ1NNRURJQUJVU1k6CisJCXJldCA9 IC1FUEVSTTsKKwkJaWYgKGNhcGFibGUoQ0FQX05FVF9BRE1JTikpIHsKKwkJCWlyZGFfZGV2aWNl X3NldF9tZWRpYV9idXN5KGRldiwgVFJVRSk7CisJCQlyZXQgPSAwOworCQl9CisJCWJyZWFrOwor CisJY2FzZSBTSU9DR1JFQ0VJVklORzoKKwkJcnEtPmlmcl9yZWNlaXZpbmcgPSAwOworCQlicmVh azsKKworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRp YyBzdHJ1Y3QgbmV0X2RldmljZV9zdGF0cyAqb21hcF9pcmRhX3N0YXRzKHN0cnVjdCBuZXRfZGV2 aWNlICpkZXYpCit7CisJc3RydWN0IG9tYXBfaXJkYSAqb21hcF9pciA9IG5ldGRldl9wcml2KGRl dik7CisJcmV0dXJuICZvbWFwX2lyLT5zdGF0czsKK30KKworc3RhdGljIGludCBvbWFwX2lyZGFf c3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3Qgb21hcF9pcmRhICpvbWFw X2lyID0gbmV0ZGV2X3ByaXYoZGV2KTsKKwlpbnQgZXJyOworCisJb21hcF9pci0+c3BlZWQgPSA5 NjAwOworCisJZXJyID0gcmVxdWVzdF9pcnEoZGV2LT5pcnEsIG9tYXBfaXJkYV9pcnEsIDAsIGRl di0+bmFtZSwgZGV2KTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycl9pcnE7CisKKwkvKgorCSAqIFRo ZSBpbnRlcnJ1cHQgbXVzdCByZW1haW4gZGlzYWJsZWQgZm9yIG5vdy4KKwkgKi8KKwlkaXNhYmxl X2lycShkZXYtPmlycSk7CisKKwkvKiAgUmVxdWVzdCBETUEgY2hhbm5lbHMgZm9yIElyREEgaGFy ZHdhcmUgKi8KKwlpZiAob21hcF9yZXF1ZXN0X2RtYShvbWFwX2lyLT5wZGF0YS0+cnhfY2hhbm5l bCwgIklyREEgUnggRE1BIiwKKwkJCSh2b2lkICopb21hcF9pcmRhX3J4X2RtYV9jYWxsYmFjaywK KwkJCWRldiwgJihvbWFwX2lyLT5yeF9kbWFfY2hhbm5lbCkpKSB7CisJCXByaW50ayhLRVJOX0VS UiAiRmFpbGVkIHRvIHJlcXVlc3QgSXJEQSBSeCBETUFcbiIpOworCQlnb3RvIGVycl9pcnE7CisJ fQorCisJaWYgKG9tYXBfcmVxdWVzdF9kbWEob21hcF9pci0+cGRhdGEtPnR4X2NoYW5uZWwsICJJ ckRBIFR4IERNQSIsCisJCQkodm9pZCAqKW9tYXBfaXJkYV90eF9kbWFfY2FsbGJhY2ssCisJCQlk ZXYsICYob21hcF9pci0+dHhfZG1hX2NoYW5uZWwpKSkgeworCQlwcmludGsoS0VSTl9FUlIgIkZh aWxlZCB0byByZXF1ZXN0IElyREEgVHggRE1BXG4iKTsKKwkJZ290byBlcnJfaXJxOworCX0KKwor CS8qIEFsbG9jYXRlIFRYIGFuZCBSWCBidWZmZXJzIGZvciBETUEgY2hhbm5lbHMgKi8KKwlvbWFw X2lyLT5yeF9idWZfZG1hX3ZpcnQgPQorCQlkbWFfYWxsb2NfY29oZXJlbnQoTlVMTCwgSVJEQV9T S0JfTUFYX01UVSwKKwkJCQkmKG9tYXBfaXItPnJ4X2J1Zl9kbWFfcGh5cyksCisJCQkJR0ZQX0tF Uk5FTCk7CisKKwlpZiAoIW9tYXBfaXItPnJ4X2J1Zl9kbWFfdmlydCkgeworCQlwcmludGsoS0VS Tl9FUlIgIlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHJ4X2J1Zl9kbWFcbiIpOworCQln b3RvIGVycl9pcnE7CisJfQorCisJb21hcF9pci0+dHhfYnVmX2RtYV92aXJ0ID0KKwkJZG1hX2Fs bG9jX2NvaGVyZW50KE5VTEwsIElSREFfU0lSX01BWF9GUkFNRSwKKwkJCQkmKG9tYXBfaXItPnR4 X2J1Zl9kbWFfcGh5cyksCisJCQkJR0ZQX0tFUk5FTCk7CisKKwlpZiAoIW9tYXBfaXItPnR4X2J1 Zl9kbWFfdmlydCkgeworCQlwcmludGsoS0VSTl9FUlIgIlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1v cnkgZm9yIHR4X2J1Zl9kbWFcbiIpOworCQlnb3RvIGVycl9tZW0xOworCX0KKworCS8qCisJICog U2V0dXAgdGhlIHNlcmlhbCBwb3J0IGZvciB0aGUgc3BlY2lmaWVkIGNvbmZpZy4KKwkgKi8KKwlp ZiAob21hcF9pci0+cGRhdGEtPnNlbGVjdF9pcmRhKQorCQlvbWFwX2lyLT5wZGF0YS0+c2VsZWN0 X2lyZGEob21hcF9pci0+ZGV2LCBJUl9TRUwpOworCisJZXJyID0gb21hcF9pcmRhX3N0YXJ0dXAo ZGV2KTsKKworCWlmIChlcnIpCisJCWdvdG8gZXJyX3N0YXJ0dXA7CisKKwlvbWFwX2lyZGFfc2V0 X3NwZWVkKGRldiwgb21hcF9pci0+c3BlZWQgPSA5NjAwKTsKKworCS8qCisJICogT3BlbiBhIG5l dyBJckxBUCBsYXllciBpbnN0YW5jZS4KKwkgKi8KKwlvbWFwX2lyLT5pcmxhcCA9IGlybGFwX29w ZW4oZGV2LCAmb21hcF9pci0+cW9zLCAib21hcF9zaXIiKTsKKworCWVyciA9IC1FTk9NRU07CisJ aWYgKCFvbWFwX2lyLT5pcmxhcCkKKwkJZ290byBlcnJfaXJsYXA7CisKKwkvKiBOb3cgZW5hYmxl IHRoZSBpbnRlcnJ1cHQgYW5kIHN0YXJ0IHRoZSBxdWV1ZSAqLworCW9tYXBfaXItPm9wZW4gPSAx OworCisJLyogU3RhcnQgUlggRE1BICovCisJb21hcF9pcmRhX3N0YXJ0X3J4X2RtYShvbWFwX2ly KTsKKworCWVuYWJsZV9pcnEoZGV2LT5pcnEpOworCW5ldGlmX3N0YXJ0X3F1ZXVlKGRldik7CisK KwlyZXR1cm4gMDsKKworZXJyX2lybGFwOgorCW9tYXBfaXItPm9wZW4gPSAwOworCW9tYXBfaXJk YV9zaHV0ZG93bihvbWFwX2lyKTsKK2Vycl9zdGFydHVwOgorCWRtYV9mcmVlX2NvaGVyZW50KE5V TEwsIElSREFfU0lSX01BWF9GUkFNRSwKKwkJCW9tYXBfaXItPnR4X2J1Zl9kbWFfdmlydCwgb21h cF9pci0+dHhfYnVmX2RtYV9waHlzKTsKK2Vycl9tZW0xOgorCWRtYV9mcmVlX2NvaGVyZW50KE5V TEwsIElSREFfU0tCX01BWF9NVFUsCisJCQlvbWFwX2lyLT5yeF9idWZfZG1hX3ZpcnQsIG9tYXBf aXItPnJ4X2J1Zl9kbWFfcGh5cyk7CitlcnJfaXJxOgorCWZyZWVfaXJxKGRldi0+aXJxLCBkZXYp OworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgb21hcF9pcmRhX3N0b3Aoc3RydWN0IG5l dF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3Qgb21hcF9pcmRhICpvbWFwX2lyID0gbmV0ZGV2X3By aXYoZGV2KTsKKworCWRpc2FibGVfaXJxKGRldi0+aXJxKTsKKworCW5ldGlmX3N0b3BfcXVldWUo ZGV2KTsKKworCW9tYXBfZnJlZV9kbWEob21hcF9pci0+cnhfZG1hX2NoYW5uZWwpOworCW9tYXBf ZnJlZV9kbWEob21hcF9pci0+dHhfZG1hX2NoYW5uZWwpOworCisJaWYgKG9tYXBfaXItPnJ4X2J1 Zl9kbWFfdmlydCkKKwkJZG1hX2ZyZWVfY29oZXJlbnQoTlVMTCwgSVJEQV9TS0JfTUFYX01UVSwK KwkJCQlvbWFwX2lyLT5yeF9idWZfZG1hX3ZpcnQsCisJCQkJb21hcF9pci0+cnhfYnVmX2RtYV9w aHlzKTsKKwlpZiAob21hcF9pci0+dHhfYnVmX2RtYV92aXJ0KQorCQlkbWFfZnJlZV9jb2hlcmVu dChOVUxMLCBJUkRBX1NJUl9NQVhfRlJBTUUsCisJCQkJb21hcF9pci0+dHhfYnVmX2RtYV92aXJ0 LAorCQkJCW9tYXBfaXItPnR4X2J1Zl9kbWFfcGh5cyk7CisKKwlvbWFwX2lyZGFfc2h1dGRvd24o b21hcF9pcik7CisKKwkvKiBTdG9wIElyTEFQICovCisJaWYgKG9tYXBfaXItPmlybGFwKSB7CisJ CWlybGFwX2Nsb3NlKG9tYXBfaXItPmlybGFwKTsKKwkJb21hcF9pci0+aXJsYXAgPSBOVUxMOwor CX0KKworCW9tYXBfaXItPm9wZW4gPSAwOworCisJLyoKKwkgKiBGcmVlIHJlc291cmNlcworCSAq LworCWZyZWVfaXJxKGRldi0+aXJxLCBkZXYpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgb21hcF9pcmRhX3NldF9zcGVlZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc3BlZWQp Cit7CisJc3RydWN0IG9tYXBfaXJkYSAqb21hcF9pciA9IG5ldGRldl9wcml2KGRldik7CisJaW50 IGRpdmlzb3I7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCS8qIFNldCBJckRBIHNwZWVkICov CisJaWYgKHNwZWVkIDw9IDExNTIwMCkgeworCisJCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwor CQkvKiBTSVIgbW9kZSAqLworCQlpZiAob21hcF9pci0+cGRhdGEtPnRyYW5zY2VpdmVyX21vZGUp CisJCQlvbWFwX2lyLT5wZGF0YS0+dHJhbnNjZWl2ZXJfbW9kZShvbWFwX2lyLT5kZXYsCisJCQkJ CQkJSVJfU0lSTU9ERSk7CisKKwkJLyogU2V0IFNJUiBtb2RlICovCisJCXVhcnRfcmVnX291dChV QVJUM19NRFIxLCAxKTsKKwkJdWFydF9yZWdfb3V0KFVBUlQzX0VCTFIsIDEpOworCisJCWRpdmlz b3IgPSA0ODAwMDAwMCAvICgxNiAqIHNwZWVkKTsJLyogQmFzZSBjbG9jayA0OCBNSHogKi8KKwor CQl1YXJ0X3JlZ19vdXQoVUFSVDNfTENSLCBVQVJUM19MQ1JfRElWRU4pOworCQl1YXJ0X3JlZ19v dXQoVUFSVDNfRExMLCAoZGl2aXNvciAmIDB4ZmYpKTsKKwkJdWFydF9yZWdfb3V0KFVBUlQzX0RM SCwgKGRpdmlzb3IgPj4gOCkpOworCQl1YXJ0X3JlZ19vdXQoVUFSVDNfTENSLCAweDAzKTsKKwor CQl1YXJ0X3JlZ19vdXQoVUFSVDNfTUNSLCAwKTsKKworCQlsb2NhbF9pcnFfcmVzdG9yZShmbGFn cyk7CisJfSBlbHNlIGlmIChzcGVlZCA8PSAxMTUyMDAwKSB7CisKKwkJbG9jYWxfaXJxX3NhdmUo ZmxhZ3MpOworCisJCS8qIFNldCBNSVIgbW9kZSwgYXV0byBTSVAgKi8KKwkJdWFydF9yZWdfb3V0 KFVBUlQzX01EUjEsIFVBUlQzX01EUjFfTUlSIHwKKwkJCQlVQVJUM19NRFIxX1NJUF9BVVRPKTsK KworCQl1YXJ0X3JlZ19vdXQoVUFSVDNfRUJMUiwgMik7CisKKwkJZGl2aXNvciA9IDQ4MDAwMDAw IC8gKDQxICogc3BlZWQpOwkvKiBCYXNlIGNsb2NrIDQ4IE1IeiAqLworCisJCXVhcnRfcmVnX291 dChVQVJUM19MQ1IsIFVBUlQzX0xDUl9ESVZFTik7CisJCXVhcnRfcmVnX291dChVQVJUM19ETEws IChkaXZpc29yICYgMHhmZikpOworCQl1YXJ0X3JlZ19vdXQoVUFSVDNfRExILCAoZGl2aXNvciA+ PiA4KSk7CisJCXVhcnRfcmVnX291dChVQVJUM19MQ1IsIDB4MDMpOworCisJCWlmIChvbWFwX2ly LT5wZGF0YS0+dHJhbnNjZWl2ZXJfbW9kZSkKKwkJCW9tYXBfaXItPnBkYXRhLT50cmFuc2NlaXZl cl9tb2RlKG9tYXBfaXItPmRldiwKKwkJCQkJCQlJUl9NSVJNT0RFKTsKKworCQlsb2NhbF9pcnFf cmVzdG9yZShmbGFncyk7CisJfSBlbHNlIHsKKwkJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworCisJ CS8qIEZJUiBtb2RlICovCisJCXVhcnRfcmVnX291dChVQVJUM19NRFIxLCBVQVJUM19NRFIxX0ZJ UiB8CisJCQkJVUFSVDNfTURSMV9TSVBfQVVUTyk7CisKKwkJaWYgKG9tYXBfaXItPnBkYXRhLT50 cmFuc2NlaXZlcl9tb2RlKQorCQkJb21hcF9pci0+cGRhdGEtPnRyYW5zY2VpdmVyX21vZGUob21h cF9pci0+ZGV2LAorCQkJCQkJCUlSX0ZJUk1PREUpOworCisJCWxvY2FsX2lycV9yZXN0b3JlKGZs YWdzKTsKKwl9CisKKwlvbWFwX2lyLT5zcGVlZCA9IHNwZWVkOworCisJcmV0dXJuIDA7Cit9CisK KyNpZmRlZiBDT05GSUdfUE0KKy8qCisgKiBTdXNwZW5kIHRoZSBJckRBIGludGVyZmFjZS4KKyAq Lworc3RhdGljIGludCBvbWFwX2lyZGFfc3VzcGVuZChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpCit7CisJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBs YXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCXN0cnVjdCBvbWFwX2lyZGEgKm9tYXBfaXIgPSBu ZXRkZXZfcHJpdihkZXYpOworCisJaWYgKCFkZXYpCisJCXJldHVybiAwOworCisJaWYgKG9tYXBf aXItPm9wZW4pIHsKKwkJLyoKKwkJICogU3RvcCB0aGUgdHJhbnNtaXQgcXVldWUKKwkJICovCisJ CW5ldGlmX2RldmljZV9kZXRhY2goZGV2KTsKKwkJZGlzYWJsZV9pcnEoZGV2LT5pcnEpOworCQlv bWFwX2lyZGFfc2h1dGRvd24ob21hcF9pcik7CisJfQorCXJldHVybiAwOworfQorCisvKgorICog UmVzdW1lIHRoZSBJckRBIGludGVyZmFjZS4KKyAqLworc3RhdGljIGludCBvbWFwX2lyZGFfcmVz dW1lKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IG5ldF9kZXZpY2Ug KmRldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCXN0cnVjdCBvbWFwX2lyZGEgKm9t YXBfaXIgPSBuZXRkZXZfcHJpdihkZXYpOworCisJaWYgKCFkZXYpCisJCXJldHVybiAwOworCisJ aWYgKG9tYXBfaXItPm9wZW4pIHsKKwkJLyoKKwkJICogSWYgd2UgbWlzc2VkIGEgc3BlZWQgY2hh bmdlLCBpbml0aWFsaXNlIGF0IHRoZSBuZXcgc3BlZWQKKwkJICogZGlyZWN0bHkuICBJdCBpcyBk ZWJhdGFibGUgd2hldGhlciB0aGlzIGlzIGFjdHVhbGx5CisJCSAqIHJlcXVpcmVkLCBidXQgaW4g dGhlIGludGVyZXN0cyBvZiBjb250aW51aW5nIGZyb20gd2hlcmUKKwkJICogd2UgbGVmdCBvZmYg aXQgaXMgZGVzaXJlYWJsZS4gIFRoZSBjb252ZXJzZSBhcmd1bWVudCBpcworCQkgKiB0aGF0IHdl IHNob3VsZCByZS1uZWdvdGlhdGUgYXQgOTYwMCBiYXVkIGFnYWluLgorCQkgKi8KKwkJaWYgKG9t YXBfaXItPm5ld3NwZWVkKSB7CisJCQlvbWFwX2lyLT5zcGVlZCA9IG9tYXBfaXItPm5ld3NwZWVk OworCQkJb21hcF9pci0+bmV3c3BlZWQgPSAwOworCQl9CisKKwkJb21hcF9pcmRhX3N0YXJ0dXAo ZGV2KTsKKwkJb21hcF9pcmRhX3NldF9zcGVlZChkZXYsIG9tYXBfaXItPnNwZWVkKTsKKwkJZW5h YmxlX2lycShkZXYtPmlycSk7CisKKwkJLyoKKwkJICogVGhpcyBhdXRvbWF0aWNhbGx5IHdha2Vz IHVwIHRoZSBxdWV1ZQorCQkgKi8KKwkJbmV0aWZfZGV2aWNlX2F0dGFjaChkZXYpOworCX0KKwor CXJldHVybiAwOworfQorI2Vsc2UKKyNkZWZpbmUgb21hcF9pcmRhX3N1c3BlbmQJTlVMTAorI2Rl ZmluZSBvbWFwX2lyZGFfcmVzdW1lCU5VTEwKKyNlbmRpZgorCitzdGF0aWMgaW50IG9tYXBfaXJk YV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBuZXRfZGV2 aWNlICpkZXY7CisJc3RydWN0IG9tYXBfaXJkYSAqb21hcF9pcjsKKwlzdHJ1Y3Qgb21hcF9pcmRh X2NvbmZpZyAqcGRhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKKwl1bnNpZ25lZCBpbnQg YmF1ZHJhdGVfbWFzazsKKwlpbnQgZXJyID0gMDsKKwlpbnQgaXJxID0gTk9fSVJROworCisJaWYg KCFwZGF0YSkgeworCQlwcmludGsoS0VSTl9FUlIgIklyREEgUGxhdGZvcm0gZGF0YSBub3Qgc3Vw cGxpZWRcbiIpOworCQlyZXR1cm4gLUVOT0VOVDsKKwl9CisKKwlpZiAoIXBkYXRhLT5yeF9jaGFu bmVsIHx8ICFwZGF0YS0+dHhfY2hhbm5lbCkgeworCQlwcmludGsoS0VSTl9FUlIgIklyREEgaW52 YWxpZCByeC90eCBjaGFubmVsIHZhbHVlXG4iKTsKKwkJcmV0dXJuIC1FTk9FTlQ7CisJfQorCisJ aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKKwlpZiAoaXJxIDw9IDApIHsKKwkJcHJp bnRrKEtFUk5fV0FSTklORyAibm8gaXJxIGZvciBJckRBXG4iKTsKKwkJcmV0dXJuIC1FTk9FTlQ7 CisJfQorCisJZGV2ID0gYWxsb2NfaXJkYWRldihzaXplb2Yoc3RydWN0IG9tYXBfaXJkYSkpOwor CWlmICghZGV2KQorCQlnb3RvIGVycl9tZW1fMTsKKworCisJb21hcF9pciA9IG5ldGRldl9wcml2 KGRldik7CisJb21hcF9pci0+ZGV2ID0gJnBkZXYtPmRldjsKKwlvbWFwX2lyLT5wZGF0YSA9IHBk YXRhOworCisJZGV2LT5oYXJkX3N0YXJ0X3htaXQJPSBvbWFwX2lyZGFfaGFyZF94bWl0OworCWRl di0+b3BlbgkJPSBvbWFwX2lyZGFfc3RhcnQ7CisJZGV2LT5zdG9wCQk9IG9tYXBfaXJkYV9zdG9w OworCWRldi0+ZG9faW9jdGwJCT0gb21hcF9pcmRhX2lvY3RsOworCWRldi0+Z2V0X3N0YXRzCQk9 IG9tYXBfaXJkYV9zdGF0czsKKwlkZXYtPmlycQkJPSBpcnE7CisKKwlpcmRhX2luaXRfbWF4X3Fv c19jYXBhYmlsaWVzKCZvbWFwX2lyLT5xb3MpOworCisJYmF1ZHJhdGVfbWFzayA9IDA7CisJaWYg KG9tYXBfaXItPnBkYXRhLT50cmFuc2NlaXZlcl9jYXAgJiBJUl9TSVJNT0RFKQorCQliYXVkcmF0 ZV9tYXNrIHw9IElSXzk2MDB8SVJfMTkyMDB8SVJfMzg0MDB8SVJfNTc2MDB8SVJfMTE1MjAwOwor CWlmIChvbWFwX2lyLT5wZGF0YS0+dHJhbnNjZWl2ZXJfY2FwICYgSVJfTUlSTU9ERSkKKwkJYmF1 ZHJhdGVfbWFzayB8PSBJUl81NzYwMCB8IElSXzExNTIwMDA7CisJaWYgKG9tYXBfaXItPnBkYXRh LT50cmFuc2NlaXZlcl9jYXAgJiBJUl9GSVJNT0RFKQorCQliYXVkcmF0ZV9tYXNrIHw9IElSXzQw MDAwMDAgPDwgODsKKworCW9tYXBfaXItPnFvcy5iYXVkX3JhdGUuYml0cyAmPSBiYXVkcmF0ZV9t YXNrOworCW9tYXBfaXItPnFvcy5taW5fdHVybl90aW1lLmJpdHMgPSA3OworCisJaXJkYV9xb3Nf Yml0c190b192YWx1ZSgmb21hcF9pci0+cW9zKTsKKworCS8qIEFueSBiZXR0ZXIgd2F5IHRvIGF2 b2lkIHRoaXM/IE5vLiAqLworCWlmIChtYWNoaW5lX2lzX29tYXBfaDMoKSB8fCBtYWNoaW5lX2lz X29tYXBfaDQoKSkKKwkJSU5JVF9ERUxBWUVEX1dPUksoJm9tYXBfaXItPnBkYXRhLT5ncGlvX2V4 cGEsIE5VTEwpOworCisJZXJyID0gcmVnaXN0ZXJfbmV0ZGV2KGRldik7CisJaWYgKCFlcnIpCisJ CXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGRldik7CisJZWxzZQorCQlmcmVlX25ldGRldihk ZXYpOworCitlcnJfbWVtXzE6CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBvbWFwX2ly ZGFfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IG5ldF9k ZXZpY2UgKmRldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCisJaWYgKHBkZXYpIHsK KwkJdW5yZWdpc3Rlcl9uZXRkZXYoZGV2KTsKKwkJZnJlZV9uZXRkZXYoZGV2KTsKKwl9CisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG9tYXBpcl9kcml2ZXIg PSB7CisJLnByb2JlCQk9IG9tYXBfaXJkYV9wcm9iZSwKKwkucmVtb3ZlCQk9IG9tYXBfaXJkYV9y ZW1vdmUsCisJLnN1c3BlbmQJPSBvbWFwX2lyZGFfc3VzcGVuZCwKKwkucmVzdW1lCQk9IG9tYXBf aXJkYV9yZXN1bWUsCisJLmRyaXZlcgkJPSB7CisJCS5uYW1lCT0gIm9tYXBpcmRhIiwKKwkJLm93 bmVyCT0gVEhJU19NT0RVTEUsCisJfSwKK307CisKK3N0YXRpYyBjaGFyIF9faW5pdGRhdGEgYmFu bmVyW10gPSBLRVJOX0lORk8gIk9NQVAgSXJEQSBkcml2ZXIgaW5pdGlhbGl6aW5nXG4iOworCitz dGF0aWMgaW50IF9faW5pdCBvbWFwX2lyZGFfaW5pdCh2b2lkKQoreworCXByaW50ayhiYW5uZXIp OworCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJm9tYXBpcl9kcml2ZXIpOworfQor CitzdGF0aWMgdm9pZCBfX2V4aXQgb21hcF9pcmRhX2V4aXQodm9pZCkKK3sKKwlwbGF0Zm9ybV9k cml2ZXJfdW5yZWdpc3Rlcigmb21hcGlyX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KG9tYXBf aXJkYV9pbml0KTsKK21vZHVsZV9leGl0KG9tYXBfaXJkYV9leGl0KTsKKworTU9EVUxFX0FVVEhP UigiTW9udGFWaXN0YSIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJPTUFQIElyREEgRHJpdmVyIik7 CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CisKLS0gCjEuNi4wLjMKCg== ------=_Part_20444_32833649.1228458869193-- -- 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/