Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751171AbWHGJMh (ORCPT ); Mon, 7 Aug 2006 05:12:37 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751173AbWHGJMh (ORCPT ); Mon, 7 Aug 2006 05:12:37 -0400 Received: from out4.smtp.messagingengine.com ([66.111.4.28]:56234 "EHLO out4.smtp.messagingengine.com") by vger.kernel.org with ESMTP id S1751171AbWHGJMg (ORCPT ); Mon, 7 Aug 2006 05:12:36 -0400 Message-Id: <1154941953.26912.267785299@webmail.messagingengine.com> X-Sasl-Enc: ZkZGNqp5mxzzoRbXbqBd1A9m6A8Ie+kEmYnhKVoX36NH 1154941953 From: "Komal Shah" To: samuel@soritz.org, irda-users@lists.sourceforge.net Cc: " " , tony@atomide.com, r-woodruff2@ti.com, akpm@osdl.org Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_1154941953269120"; charset="ISO-8859-1" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface Subject: [PATCH] OMAP: Add support for IrDA driver Date: Mon, 07 Aug 2006 14:42:33 +0530 Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 34163 Lines: 581 This is a multi-part message in MIME format. --_----------=_1154941953269120 Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="ISO-8859-1" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface Date: Mon, 7 Aug 2006 09:12:33 UT Samuel/Tony, I have attached the OMAP IrDA patch for OMAP1610/1710 and OMAP242x for review. See that for IrDA driver to work on H3 and H4, we need gpio-expander functions to go in mainline, but it can work on H2. FYI...we are in process of submitting OMAP I2C driver to mainline, and right now I am working on the 2nd round of review comments from Jean. ---Komal Shah http://komalshah.blogspot.com -- http://www.fastmail.fm - Choose from over 50 domains or use your own --_----------=_1154941953269120 Content-Disposition: attachment; filename="0001-OMAP-Add-support-for-IrDA-driver.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-OMAP-Add-support-for-IrDA-driver.patch" MIME-Version: 1.0 X-Mailer: MessagingEngine.com Webmail Interface Date: Mon, 7 Aug 2006 09:12:33 UT RnJvbSBub2JvZHkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEtv bWFsIFNoYWggPGtvbWFsX3NoYWg4MDIwMDNAeWFob28uY29tPgpEYXRlOiBN b24sIDcgQXVnIDIwMDYgMTg6Mzg6NDUgKzA1MzAKU3ViamVjdDogW1BBVENI XSBPTUFQOiBBZGQgc3VwcG9ydCBmb3IgSXJEQSBkcml2ZXIKClBhdGNoIGFk ZHMgSXJEQSBkcml2ZXIgc3VwcG9ydCBmb3IgVGV4YXMgSW5zdHJ1bWVudHMg T01BUAooaHR0cDovL3d3dy50aS5jb20vb21hcCkgYmFzZWQgcHJvY2Vzc29y cyBsaWtlIE9NQVAxNjEwLzE3MTAgYW5kIE9NQVAyNDJ4LgoKU2lnbmVkLW9m Zi1ieTogS29tYWwgU2hhaCA8a29tYWxfc2hhaDgwMjAwM0B5YWhvby5jb20+ CgotLS0KCiBkcml2ZXJzL25ldC9pcmRhL0tjb25maWcgICB8ICAgMTAgCiBk cml2ZXJzL25ldC9pcmRhL01ha2VmaWxlICB8ICAgIDEgCiBkcml2ZXJzL25l dC9pcmRhL29tYXAtaXIuYyB8ICA5MDMgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgOTE0 IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9uZXQvaXJkYS9vbWFwLWlyLmMKCmU3MjVlNWFmYWY2 YjdmOTkwM2VlOGI0OGZhZjFmYWVmZjg2MDRhYzcKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L2lyZGEvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2lyZGEvS2Nv bmZpZwppbmRleCBlOWU2ZDk5Li44ZDI5YTBhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL25ldC9pcmRhL0tjb25maWcKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9L Y29uZmlnCkBAIC00MzIsNSArNDMyLDE1IEBAIGNvbmZpZyBNQ1NfRklSCiAJ ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0 aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkCiAJICBtY3M3NzgwLgogCitjb25m aWcgT01BUF9JUgorCXRyaXN0YXRlICJPTUFQIElyREEoU0lSL01JUi9GSVIp IgorCWRlcGVuZHMgb24gSVJEQSAmJiBBUkNIX09NQVAKKwlzZWxlY3QgR1BJ T0VYUEFOREVSX09NQVAgaWYgKE1BQ0hfT01BUF9IMyB8fCBNQUNIX09NQVBf SDQpCisgICAgICAgIGhlbHAKKwkgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQg dG8gYnVpbGQgc3VwcG9ydCBmb3IgdGhlIFRlYXhhcyBJbnN0cnVtZW50cwor CSAgT01BUCBJckRBIGRldmljZSBkcml2ZXIsIHdoaWNoIHN1cHBvcnRzIFNJ Ui9NSVIvRklSLiBUaGlzIGRyaXZlcgorCSAgcmVsaWVzIG9uIHBsYXRmb3Jt IHNwZWNpZmljIGhlbHBlciByb3V0aW5lcyBzbyBhdmFpbGFibGUgY2FwYWJp bGl0aWVzCisJICBtYXkgdmFyeSBmcm9tIG9uZSBPTUFQIHRhcmdldCB0byBh bm90aGVyLgorCiBlbmRtZW51CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L2lyZGEvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9pcmRhL01ha2VmaWxlCmlu ZGV4IDViZTA5ZjEuLjg5YzYzODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L2lyZGEvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9NYWtlZmls ZQpAQCAtMjAsNiArMjAsNyBAQCBvYmotJChDT05GSUdfVkxTSV9GSVIpCQkr PSB2bHNpX2lyLm8KIG9iai0kKENPTkZJR19WSUFfRklSKQkJKz0gdmlhLWly Y2Mubwogb2JqLSQoQ09ORklHX1BYQV9GSUNQKQkgICAgICAgICs9IHB4YWZp Y3BfaXIubwogb2JqLSQoQ09ORklHX01DU19GSVIpCSAgICAgICAgKz0gbWNz Nzc4MC5vCitvYmotJChDT05GSUdfT01BUF9JUikJCSs9IG9tYXAtaXIubwog IyBPbGQgZG9uZ2xlIGRyaXZlcnMgZm9yIG9sZCBTSVIgZHJpdmVycwogb2Jq LSQoQ09ORklHX0VTSV9ET05HTEVfT0xEKQkJKz0gZXNpLm8KIG9iai0kKENP TkZJR19URUtSQU1fRE9OR0xFX09MRCkJKz0gdGVrcmFtLm8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L2lyZGEvb21hcC1pci5jIGIvZHJpdmVycy9uZXQv aXJkYS9vbWFwLWlyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYzUxZmI0OAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbmV0 L2lyZGEvb21hcC1pci5jCkBAIC0wLDAgKzEsOTAzIEBACisvKgorICogQlJJ RUYgTU9EVUxFIERFU0NSSVBUSU9OCisgKgorICoJSW5mcmEtcmVkIGRyaXZl ciBmb3IgdGhlIE9NQVAxNjEwLUgyIGFuZCBPTUFQMTcxMC1IMyBhbmQgSDQg UGxhdGZvcm1zCisgKgkgIChTSVIvTUlSL0ZJUiBtb2RlcykKKyAqCSAgKGJh c2VkIG9uIG9tYXAtc2lyLmMpCisgKgorICogQ29weXJpZ2h0IDIwMDMgTW9u dGFWaXN0YSBTb2Z0d2FyZSBJbmMuCisgKiBBdXRob3I6IE1vbnRhVmlzdGEg U29mdHdhcmUsIEluYy4KKyAqCSAgIHNvdXJjZUBtdmlzdGEuY29tCisgKgor ICogQ29weXJpZ2h0IDIwMDQgVGV4YXMgSW5zdHJ1bWVudHMuCisgKgorICog IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZQkgaXQgYW5kL29yIG1vZGlmeSBpdAorICogIHVuZGVyICB0aGUg dGVybXMgb2YJIHRoZSBHTlUgR2VuZXJhbCAgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZQorICogIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlCUxpY2Vuc2UsIG9yIChhdCB5 b3VyCisgKiAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAg VEhJUyAgU09GVFdBUkUgIElTIFBST1ZJREVECSAgYGBBUwlJUycnIEFORCAg IEFOWQlFWFBSRVNTIE9SIElNUExJRUQKKyAqICBXQVJSQU5USUVTLAkgIElO Q0xVRElORywgQlVUIE5PVCAgTElNSVRFRCAgVE8sIFRIRSBJTVBMSUVEIFdB UlJBTlRJRVMgT0YKKyAqICBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4K KyAqICBOTwlFVkVOVCAgU0hBTEwgICBUSEUgQVVUSE9SICBCRQkgTElBQkxF IEZPUiBBTlkJICBESVJFQ1QsIElORElSRUNULAorICogIElOQ0lERU5UQUws IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT IChJTkNMVURJTkcsIEJVVAorICogIE5PVCBMSU1JVEVECSAgVE8sIFBST0NV UkVNRU5UIE9GICBTVUJTVElUVVRFIEdPT0RTCU9SIFNFUlZJQ0VTOyBMT1NT IE9GCisgKiAgVVNFLCBEQVRBLAlPUiBQUk9GSVRTOyBPUglCVVNJTkVTUyBJ TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogIEFOWSBU SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCSBDT05UUkFDVCwgU1RS SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogIChJTkNMVURJTkcgTkVHTElH RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg VEhFIFVTRSBPRgorICogIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICog IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogIHdpdGggdGhpcyBw cm9ncmFtOyBpZiBub3QsIHdyaXRlICB0byB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuLAorICogIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdl LCBNQSAwMjEzOSwgVVNBLgorICoKKyBNb2RpZmljYXRpb25zOgorIEZlYiAy MDA0LCBUZXhhcyBJbnN0cnVtZW50cworIC0gUG9ydGVkIHRvIDIuNiBrZXJu ZWwgKEZlYiAyMDA0KS4KKyAqCisgQXByIDIwMDQsIFRleGFzIEluc3RydW1l bnRzCisgLSBBZGRlZCBzdXBwb3J0IGZvciBIMyAoQXByIDIwMDQpLgorIE5v diAyMDA0LCBUZXhhcyBJbnN0cnVtZW50cworIC0gQWRkZWQgc3VwcG9ydCBm b3IgUG93ZXIgTWFuYWdlbWVudC4KKyAqLworCisjaW5jbHVkZSA8bGludXgv Y29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVk ZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cisj aW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9uZXRk ZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8 bGludXgvcnRuZXRsaW5rLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0 Lmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51 eC9pb3BvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgor I2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUg PGxpbnV4L2kyYy5oPgorCisjaW5jbHVkZSA8bmV0L2lyZGEvaXJkYS5oPgor I2luY2x1ZGUgPG5ldC9pcmRhL2lybW9kLmg+CisjaW5jbHVkZSA8bmV0L2ly ZGEvd3JhcHBlci5oPgorI2luY2x1ZGUgPG5ldC9pcmRhL2lyZGFfZGV2aWNl Lmg+CisKKyNpbmNsdWRlIDxhc20vaXJxLmg+CisjaW5jbHVkZSA8YXNtL2lv Lmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNt L3NlcmlhbC5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+CisjaW5j bHVkZSA8YXNtL2RtYS5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL211eC5oPgor I2luY2x1ZGUgPGFzbS9hcmNoL2dwaW8uaD4KKyNpbmNsdWRlIDxhc20vYXJj aC9pcmRhLmg+CisKKyNkZWZpbmUgVUFSVDNfRUZSX0VOCQkJKDEgPDwgNCkK KyNkZWZpbmUgVUFSVDNfTUNSX0VOX1RDUl9UTFIJCSgxIDw8IDYpCisKKyNk ZWZpbmUgVUFSVDNfTENSX1dMXzgJCQkoMyA8PCAwKQorI2RlZmluZSBVQVJU M19MQ1JfU1AyCQkJKDEgPDwgMikKKyNkZWZpbmUgVUFSVDNfTENSX0RJVkVO CQkJKDEgPDwgNykKKworI2RlZmluZSBVQVJUM19GQ1JfRklGT19FTgkJKDEg PDwgMCkKKyNkZWZpbmUgVUFSVDNfRkNSX0ZJRk9fUlgJCSgxIDw8IDEpCisj ZGVmaW5lIFVBUlQzX0ZDUl9GSUZPX1RYCQkoMSA8PCAyKQorI2RlZmluZSBV QVJUM19GQ1JfRklGT19ETUExCQkoMSA8PCAzKQorI2RlZmluZSBVQVJUM19G Q1JfRklGT19UWF9UUklHMTYJKDEgPDwgNCkKKyNkZWZpbmUgVUFSVDNfRkNS X0ZJRk9fUlhfVFJJRzE2CSgxIDw8IDYpCisjZGVmaW5lIFVBUlQzX0ZDUl9D T05GSUcJKFwKKwkJVUFSVDNfRkNSX0ZJRk9fRU4gfCBVQVJUM19GQ1JfRklG T19SWAl8XAorCQlVQVJUM19GQ1JfRklGT19UWCB8IFVBUlQzX0ZDUl9GSUZP X0RNQTEgfFwKKwkJVUFSVDNfRkNSX0ZJRk9fVFhfVFJJRzE2CQl8XAorCQlV QVJUM19GQ1JfRklGT19SWF9UUklHMTYpCisKKyNkZWZpbmUgVUFSVDNfU0NS X1RYX1RSSUcxCQkoMSA8PCA2KQorI2RlZmluZSBVQVJUM19TQ1JfUlhfVFJJ RzEJCSgxIDw8IDcpCisKKyNkZWZpbmUgVUFSVDNfTURSMV9SRVNFVAkJKDB4 MDcpCisjZGVmaW5lIFVBUlQzX01EUjFfU0lSCQkJKDEgPDwgMCkKKyNkZWZp bmUgVUFSVDNfTURSMV9NSVIJCQkoNCA8PCAwKQorI2RlZmluZSBVQVJUM19N RFIxX0ZJUgkJCSg1IDw8IDApCisjZGVmaW5lIFVBUlQzX01EUjFfU0lQX0FV VE8JCSgxIDw8IDYpCisKKyNkZWZpbmUgVUFSVDNfTURSMl9UUklHMQkJKDAg PDwgMSkKKyNkZWZpbmUgVUFSVDNfTURSMl9JUlRYX1VOREVSUlVOCSgxIDw8 IDApCisKKyNkZWZpbmUgVUFSVDNfQUNFUkdfVFhfVU5ERVJSVU5fRElTCSgx IDw8IDQpCisjZGVmaW5lIFVBUlQzX0FDRVJHX1NEX01PREVfTE9XCQkoMSA8 PCA2KQorI2RlZmluZSBVQVJUM19BQ0VSR19ESVNfSVJfUlgJCSgxIDw8IDUp CisKKyNkZWZpbmUgVUFSVDNfSUVSX0VPRgkJCSgxIDw8IDUpCisjZGVmaW5l IFVBUlQzX0lFUl9DVFMJCQkoMSA8PCA3KQorCisjZGVmaW5lIFVBUlQzX0lJ Ul9UWF9TVEFUVVMJCSgxIDw8IDUpCisjZGVmaW5lIFVBUlQzX0lJUl9FT0YJ CQkoMHg4MCkKKworI2RlZmluZSBJU19GSVIoc2kpCQkoKHNpKS0+c3BlZWQg Pj0gNDAwMDAwMCkKKyNkZWZpbmUgSVJEQV9GUkFNRV9TSVpFX0xJTUlUCTQw OTYKKworc3RhdGljIGludCByeF9zdGF0ZSA9IDA7CS8qIFJYIHN0YXRlIGZv ciBJT0NUTCAqLworCitzdHJ1Y3Qgb21hcF9pcmRhIHsKKwl1bnNpZ25lZCBj aGFyIG9wZW47CisJaW50IHNwZWVkOwkJLyogQ3VycmVudCBJckRBIHNwZWVk ICovCisJaW50IG5ld3NwZWVkOworCisJc3RydWN0IG5ldF9kZXZpY2Vfc3Rh dHMgc3RhdHM7CisJc3RydWN0IGlybGFwX2NiICppcmxhcDsKKwlzdHJ1Y3Qg cW9zX2luZm8gcW9zOworCisJaW50IHJ4X2RtYV9jaGFubmVsOworCWludCB0 eF9kbWFfY2hhbm5lbDsKKworCWRtYV9hZGRyX3QgcnhfYnVmX2RtYV9waHlz OwkvKiBQaHlzaWNhbCBhZGRyZXNzIG9mIFJYIERNQSBidWZmZXIgKi8KKwlk bWFfYWRkcl90IHR4X2J1Zl9kbWFfcGh5czsJLyogUGh5c2ljYWwgYWRkcmVz cyBvZiBUWCBETUEgYnVmZmVyICovCisKKwl2b2lkICpyeF9idWZfZG1hX3Zp cnQ7CQkvKiBWaXJ0dWFsIGFkZHJlc3Mgb2YgUlggRE1BIGJ1ZmZlciAqLwor CXZvaWQgKnR4X2J1Zl9kbWFfdmlydDsJCS8qIFZpcnR1YWwgYWRkcmVzcyBv ZiBUWCBETUEgYnVmZmVyICovCisKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJ c3RydWN0IG9tYXBfaXJkYV9jb25maWcgKnBkYXRhOworfTsKKworc3RhdGlj IHZvaWQgaW5saW5lIHVhcnRfcmVnX291dChpbnQgaWR4LCB1OCB2YWwpCit7 CisJb21hcF93cml0ZWIodmFsLCBpZHgpOworfQorCitzdGF0aWMgdTggaW5s aW5lIHVhcnRfcmVnX2luKGludCBpZHgpCit7CisJdTggYiA9IG9tYXBfcmVh ZGIoaWR4KTsKKwlyZXR1cm4gYjsKK30KKworLyogZm9yd2FyZCBkZWNsYXJh dGlvbnMgKi8KK2V4dGVybiB2b2lkIGlyZGFfZGV2aWNlX3NldHVwKHN0cnVj dCBuZXRfZGV2aWNlICpkZXYpOworZXh0ZXJuIHZvaWQgb21hcF9zdG9wX2Rt YShpbnQgbGNoKTsKK3N0YXRpYyBpbnQgb21hcF9pcmRhX3NldF9zcGVlZChz dHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc3BlZWQpOworCitzdGF0aWMg dm9pZCBvbWFwX2lyZGFfc3RhcnRfcnhfZG1hKHN0cnVjdCBvbWFwX2lyZGEg KnNpKQoreworCS8qIENvbmZpZ3VyZSBETUEgKi8KKwlvbWFwX3NldF9kbWFf c3JjX3BhcmFtcyhzaS0+cnhfZG1hX2NoYW5uZWwsIDB4MywgMHgwLAorCQkJ CXNpLT5wZGF0YS0+c3JjX3N0YXJ0LAorCQkJCTAsIDApOworCisJb21hcF9l bmFibGVfZG1hX2lycShzaS0+cnhfZG1hX2NoYW5uZWwsIDB4MDEpOworCisJ b21hcF9zZXRfZG1hX2Rlc3RfcGFyYW1zKHNpLT5yeF9kbWFfY2hhbm5lbCwg MHgwLCAweDEsCisJCQkJc2ktPnJ4X2J1Zl9kbWFfcGh5cywKKwkJCQkwLCAw KTsKKworCW9tYXBfc2V0X2RtYV90cmFuc2Zlcl9wYXJhbXMoc2ktPnJ4X2Rt YV9jaGFubmVsLCAweDAsCisJCQkJSVJEQV9GUkFNRV9TSVpFX0xJTUlULCAw eDEsCisJCQkJMHgwLCBzaS0+cGRhdGEtPnJ4X3RyaWdnZXIsIDApOworCisJ b21hcF9zdGFydF9kbWEoc2ktPnJ4X2RtYV9jaGFubmVsKTsKK30KKworc3Rh dGljIHZvaWQgb21hcF9zdGFydF90eF9kbWEoc3RydWN0IG9tYXBfaXJkYSAq c2ksIGludCBzaXplKQoreworCS8qIENvbmZpZ3VyZSBETUEgKi8KKwlvbWFw X3NldF9kbWFfZGVzdF9wYXJhbXMoc2ktPnR4X2RtYV9jaGFubmVsLCAweDAz LCAweDAsCisJCQkJc2ktPnBkYXRhLT5kZXN0X3N0YXJ0LCAwLCAwKTsKKwor CW9tYXBfZW5hYmxlX2RtYV9pcnEoc2ktPnR4X2RtYV9jaGFubmVsLCAweDAx KTsKKworCW9tYXBfc2V0X2RtYV9zcmNfcGFyYW1zKHNpLT50eF9kbWFfY2hh bm5lbCwgMHgwLCAweDEsCisJCQkJc2ktPnR4X2J1Zl9kbWFfcGh5cywKKwkJ CQkwLCAwKTsKKworCW9tYXBfc2V0X2RtYV90cmFuc2Zlcl9wYXJhbXMoc2kt PnR4X2RtYV9jaGFubmVsLCAweDAsIHNpemUsIDB4MSwKKwkJCQkweDAsIHNp LT5wZGF0YS0+dHhfdHJpZ2dlciwgMCk7CisKKwkvKiBTdGFydCBETUEgKi8K KwlvbWFwX3N0YXJ0X2RtYShzaS0+dHhfZG1hX2NoYW5uZWwpOworfQorCisv KiBETUEgUlggY2FsbGJhY2sgLSBub3JtYWxseSwgd2Ugc2hvdWxkIG5vdCBn byBoZXJlLAorICogaXQgY2FsbHMgb25seSBpZiBzb21ldGhpbmcgaXMgZ29p bmcgd3JvbmcKKyAqLworc3RhdGljIHZvaWQgb21hcF9pcmRhX3J4X2RtYV9j YWxsYmFjayhpbnQgbGNoLCB1MTYgY2hfc3RhdHVzLCB2b2lkICpkYXRhKQor eworCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBkYXRhOworCXN0cnVjdCBv bWFwX2lyZGEgKnNpID0gZGV2LT5wcml2OworCisJcHJpbnRrKEtFUk5fRVJS ICJSWCBUcmFuc2ZlciBlcnJvciBvciB2ZXJ5IGJpZyBmcmFtZVxuIik7CisK KwkvKiBDbGVhciBpbnRlcnJ1cHRzICovCisJdWFydF9yZWdfaW4oVUFSVDNf SUlSKTsKKworCXNpLT5zdGF0cy5yeF9mcmFtZV9lcnJvcnMrKzsKKworCXVh cnRfcmVnX2luKFVBUlQzX1JFU1VNRSk7CisKKwkvKiBSZS1pbml0IFJYIERN QSAqLworCW9tYXBfaXJkYV9zdGFydF9yeF9kbWEoc2kpOworfQorCisvKiBE TUEgVFggY2FsbGJhY2sgLSBjYWxsaW5nIHdoZW4gZnJhbWUgdHJhbnNmZXIg aGFzIGJlZW4gZmluaXNoZWQgKi8KK3N0YXRpYyB2b2lkIG9tYXBfaXJkYV90 eF9kbWFfY2FsbGJhY2soaW50IGxjaCwgdTE2IGNoX3N0YXR1cywgdm9pZCAq ZGF0YSkKK3sKKwlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZGF0YTsKKwlz dHJ1Y3Qgb21hcF9pcmRhICpzaSA9IGRldi0+cHJpdjsKKworCS8qU3RvcCBE TUEgY29udHJvbGxlciAqLworCW9tYXBfc3RvcF9kbWEoc2ktPnR4X2RtYV9j aGFubmVsKTsKK30KKworLyoKKyAqIFNldCB0aGUgSXJEQSBjb21tdW5pY2F0 aW9ucyBzcGVlZC4KKyAqIEludGVycnVwdCBoYXZlIHRvIGJlIGRpc2FibGVk IGhlcmUuCisgKi8KK3N0YXRpYyBpbnQgb21hcF9pcmRhX3N0YXJ0dXAoc3Ry dWN0IG5ldF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3Qgb21hcF9pcmRhICpz aSA9IGRldi0+cHJpdjsKKworCisJLyogRklYTUU6IHVzZSBjbGtfKiBhcGlz IGZvciBVQVJUMyBjbG9jayovCisJLyogRW5hYmxlIFVBUlQzIGNsb2NrIGFu ZCBzZXQgVUFSVDMgdG8gSXJEQSBtb2RlICovCisJaWYgKG1hY2hpbmVfaXNf b21hcF9oMigpIHx8IG1hY2hpbmVfaXNfb21hcF9oMygpKQorCQlvbWFwX3dy aXRlbChvbWFwX3JlYWRsKE1PRF9DT05GX0NUUkxfMCkgfCAoMSA8PCAzMSkg fCAoMSA8PCAxNSksCisJCQkJTU9EX0NPTkZfQ1RSTF8wKTsKKworCS8qIE9u bHkgZm9yIEgyPworCSAqLworCWlmIChzaS0+cGRhdGEtPnRyYW5zY2VpdmVy X21vZGUgJiYgbWFjaGluZV9pc19vbWFwX2gyKCkpIHsKKwkJLyogSXMgaXQg c2VsZWN0X2lyZGEgb24gSDIgPyAqLworCQlvbWFwX3dyaXRlbChvbWFwX3Jl YWRsKEZVTkNfTVVYX0NUUkxfQSkgfCA3LAorCQkJCQlGVU5DX01VWF9DVFJM X0EpOworCQlzaS0+cGRhdGEtPnRyYW5zY2VpdmVyX21vZGUoc2ktPmRldiwg SVJfU0lSTU9ERSk7CisJfQorCisJdWFydF9yZWdfb3V0KFVBUlQzX01EUjEs IFVBUlQzX01EUjFfUkVTRVQpOwkvKiBSZXNldCBtb2RlICovCisKKwkvKiBD bGVhciBETEggYW5kIERMTCAqLworCXVhcnRfcmVnX291dChVQVJUM19MQ1Is IFVBUlQzX0xDUl9ESVZFTik7CisKKwl1YXJ0X3JlZ19vdXQoVUFSVDNfRExM LCAwKTsKKwl1YXJ0X3JlZ19vdXQoVUFSVDNfRExILCAwKTsKKwl1YXJ0X3Jl Z19vdXQoVUFSVDNfTENSLCAweGJmKTsJLyogRklYTUU6IEFkZCAjZGVmaW5l ICovCisKKwl1YXJ0X3JlZ19vdXQoVUFSVDNfRUZSLCBVQVJUM19FRlJfRU4p OworCXVhcnRfcmVnX291dChVQVJUM19MQ1IsIFVBUlQzX0xDUl9ESVZFTik7 CisKKwkvKiBFbmFibGUgYWNjZXNzIHRvIFVBUlQzX1RMUiBhbmQgVUFSVDNf VENSIHJlZ2lzdGVycyAqLworCXVhcnRfcmVnX291dChVQVJUM19NQ1IsIFVB UlQzX01DUl9FTl9UQ1JfVExSKTsKKworCXVhcnRfcmVnX291dChVQVJUM19T Q1IsIDApOworCS8qIFNldCBSeCB0cmlnZ2VyIHRvIDEgYW5kIFR4IHRyaWdn ZXIgdG8gMSAqLworCXVhcnRfcmVnX291dChVQVJUM19UTFIsIDApOworCisJ LyogU2V0IExDUiB0byA4IGJpdHMgYW5kIDEgc3RvcCBiaXQgKi8KKwl1YXJ0 X3JlZ19vdXQoVUFSVDNfTENSLCAweDAzKTsKKworCS8qIENsZWFyIFJYIGFu ZCBUWCBGSUZPIGFuZCBlbmFibGUgRklGTyAqLworCS8qIFVzZSBETUEgUmVx IGZvciB0cmFuc2ZlcnMgKi8KKwl1YXJ0X3JlZ19vdXQoVUFSVDNfRkNSLCBV QVJUM19GQ1JfQ09ORklHKTsKKworCXVhcnRfcmVnX291dChVQVJUM19NQ1Is IDApOworCisJdWFydF9yZWdfb3V0KFVBUlQzX1NDUiwgVUFSVDNfU0NSX1RY X1RSSUcxIHwKKwkJCVVBUlQzX1NDUl9SWF9UUklHMSk7CisKKwkvKiBFbmFi bGUgVUFSVDMgU0lSIE1vZGUsKEZyYW1lLWxlbmd0aCBtZXRob2QgdG8gZW5k IGZyYW1lcykgKi8KKwl1YXJ0X3JlZ19vdXQoVUFSVDNfTURSMSwgVUFSVDNf TURSMV9TSVIpOworCisJLyogU2V0IFN0YXR1cyBGSUZPIHRyaWcgdG8gMSAq LworCXVhcnRfcmVnX291dChVQVJUM19NRFIyLCAwKTsKKworCS8qIEVuYWJs ZXMgUlhJUiBpbnB1dCAqLworCS8qIGFuZCBkaXNhYmxlIFRYIHVuZGVycnVu ICovCisJLyogU0VORF9TSVAgcHVsc2UgKi8KKwl1YXJ0X3JlZ19vdXQoVUFS VDNfQUNSRUcsIFVBUlQzX0FDRVJHX1NEX01PREVfTE9XIHwKKwkJCVVBUlQz X0FDRVJHX1RYX1VOREVSUlVOX0RJUyk7CisKKwkvKiBFbmFibGUgRU9GIElu dGVycnVwdCBvbmx5ICovCisJdWFydF9yZWdfb3V0KFVBUlQzX0lFUiwgVUFS VDNfSUVSX0NUUyB8IFVBUlQzX0lFUl9FT0YpOworCisJLyogU2V0IE1heGlt dW0gUmVjZWl2ZWQgRnJhbWUgc2l6ZSB0byAyMDQ4IGJ5dGVzICovCisJdWFy dF9yZWdfb3V0KFVBUlQzX1JYRkxMLCAweDAwKTsKKwl1YXJ0X3JlZ19vdXQo VUFSVDNfUlhGTEgsIDB4MDgpOworCisJdWFydF9yZWdfaW4oVUFSVDNfUkVT VU1FKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9tYXBfaXJk YV9zaHV0ZG93bihzdHJ1Y3Qgb21hcF9pcmRhICpzaSkKK3sKKwl1bnNpZ25l ZCBsb25nIGZsYWdzOworCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworCisJ LyogRGlzYWJsZSBhbGwgVUFSVDMgSW50ZXJydXB0cyAqLworCXVhcnRfcmVn X291dChVQVJUM19JRVIsIDApOworCisJLyogRGlzYWJsZSBVQVJUMyBhbmQg ZGlzYWJsZSBiYXVkIHJhdGUgZ2VuZXJhdG9yICovCisJdWFydF9yZWdfb3V0 KFVBUlQzX01EUjEsIFVBUlQzX01EUjFfUkVTRVQpOworCisJLyogc2V0IFNE X01PREUgcGluIHRvIGhpZ2ggYW5kIERpc2FibGUgUlggSVIgKi8KKwl1YXJ0 X3JlZ19vdXQoVUFSVDNfQUNSRUcsIChVQVJUM19BQ0VSR19ESVNfSVJfUlgg fAorCQkJfihVQVJUM19BQ0VSR19TRF9NT0RFX0xPVykpKTsKKworCS8qIENs ZWFyIERMSCBhbmQgRExMICovCisJdWFydF9yZWdfb3V0KFVBUlQzX0xDUiwg VUFSVDNfTENSX0RJVkVOKTsKKwl1YXJ0X3JlZ19vdXQoVUFSVDNfRExMLCAw KTsKKwl1YXJ0X3JlZ19vdXQoVUFSVDNfRExILCAwKTsKKworCWxvY2FsX2ly cV9yZXN0b3JlKGZsYWdzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg aXJxcmV0dXJuX3QKK29tYXBfaXJkYV9pcnEoaW50IGlycSwgdm9pZCAqZGV2 X2lkLCBzdHJ1Y3QgcHRfcmVncyAqaHdfcmVncykKK3sKKwlzdHJ1Y3QgbmV0 X2RldmljZSAqZGV2ID0gZGV2X2lkOworCXN0cnVjdCBvbWFwX2lyZGEgKnNp ID0gZGV2LT5wcml2OworCXN0cnVjdCBza19idWZmICpza2I7CisKKwl1OCBz dGF0dXM7CisJaW50IHcgPSAwOworCisJLyogQ2xlYXIgRU9GIGludGVycnVw dCAqLworCXN0YXR1cyA9IHVhcnRfcmVnX2luKFVBUlQzX0lJUik7CisKKwlp ZiAoc3RhdHVzICYgVUFSVDNfSUlSX1RYX1NUQVRVUykgeworCQl1OCBtZHIy ID0gdWFydF9yZWdfaW4oVUFSVDNfTURSMik7CisJCWlmIChtZHIyICYgVUFS VDNfTURSMl9JUlRYX1VOREVSUlVOKQorCQkJcHJpbnRrKEtFUk5fRVJSICJJ ckRBIEJ1ZmZlciB1bmRlcnJ1biBlcnJvclxuIik7CisKKwkJc2ktPnN0YXRz LnR4X3BhY2tldHMrKzsKKworCQlpZiAoc2ktPm5ld3NwZWVkKSB7CisJCQlv bWFwX2lyZGFfc2V0X3NwZWVkKGRldiwgc2ktPm5ld3NwZWVkKTsKKwkJCXNp LT5uZXdzcGVlZCA9IDA7CisJCX0KKworCQluZXRpZl93YWtlX3F1ZXVlKGRl dik7CisJCWlmICghKHN0YXR1cyAmIFVBUlQzX0lJUl9FT0YpKQorCQkJcmV0 dXJuIElSUV9IQU5ETEVEOworCX0KKworCS8qIFN0b3AgRE1BIGFuZCBpZiB0 aGVyZSBhcmUgbm8gZXJyb3JzLCBzZW5kIGZyYW1lIHRvIHVwcGVyIGxheWVy ICovCisJb21hcF9zdG9wX2RtYShzaS0+cnhfZG1hX2NoYW5uZWwpOworCisJ c3RhdHVzID0gdWFydF9yZWdfaW4oVUFSVDNfU0ZMU1IpOwkvKiBUYWtlIGEg ZnJhbWUgc3RhdHVzICovCisKKwlpZiAoc3RhdHVzICE9IDApIHsJLyogQmFk IGZyYW1lPyAqLworCQlzaS0+c3RhdHMucnhfZnJhbWVfZXJyb3JzKys7CisJ CXVhcnRfcmVnX2luKFVBUlQzX1JFU1VNRSk7CisJfSBlbHNlIHsKKwkJLyog V2UgZ290IGEgZnJhbWUhICovCisJCXNrYiA9IGFsbG9jX3NrYihJUkRBX0ZS QU1FX1NJWkVfTElNSVQsIEdGUF9BVE9NSUMpOworCisJCWlmICghc2tiKSB7 CisJCQlwcmludGsoS0VSTl9FUlIgIm9tYXBfc2lyOiBvdXQgb2YgbWVtb3J5 IGZvciBSWCBTS0JcbiIpOworCQkJcmV0dXJuIElSUV9IQU5ETEVEOworCQl9 CisJCS8qCisJCSAqIEFsaWduIGFueSBJUCBoZWFkZXJzIHRoYXQgbWF5IGJl IGNvbnRhaW5lZAorCQkgKiB3aXRoaW4gdGhlIGZyYW1lLgorCQkgKi8KKwor CQlza2JfcmVzZXJ2ZShza2IsIDEpOworCisJCXcgPSBPTUFQX0RNQV9DREFD X1JFRyhzaS0+cnhfZG1hX2NoYW5uZWwpOworCisJCWlmIChjcHVfaXNfb21h cDE2eHgoKSkKKwkJCXcgLT0gT01BUDFfRE1BX0NEU0FfTF9SRUcoc2ktPnJ4 X2RtYV9jaGFubmVsKTsKKwkJaWYgKGNwdV9pc19vbWFwMjR4eCgpKQorCQkJ dyAtPSBPTUFQMl9ETUFfQ0RTQV9SRUcoc2ktPnJ4X2RtYV9jaGFubmVsKTsK KworCQlpZiAoIUlTX0ZJUihzaSkpIHsKKwkJCS8qIENvcHkgRE1BIGJ1ZmZl ciB0byBza2IgKi8KKwkJCW1lbWNweShza2JfcHV0KHNrYiwgdyAtIDIpLCBz aS0+cnhfYnVmX2RtYV92aXJ0LCB3IC0gMik7CisJCX0gZWxzZSB7CisJCQkv KiBDb3B5IERNQSBidWZmZXIgdG8gc2tiICovCisJCQltZW1jcHkoc2tiX3B1 dChza2IsIHcgLSA0KSwgc2ktPnJ4X2J1Zl9kbWFfdmlydCwgdyAtIDQpOwor CQl9CisKKwkJc2tiLT5kZXYgPSBkZXY7CisJCXNrYi0+bWFjLnJhdyA9IHNr Yi0+ZGF0YTsKKwkJc2tiLT5wcm90b2NvbCA9IGh0b25zKEVUSF9QX0lSREEp OworCQlzaS0+c3RhdHMucnhfcGFja2V0cysrOworCQlzaS0+c3RhdHMucnhf Ynl0ZXMgKz0gc2tiLT5sZW47CisJCW5ldGlmX3JlY2VpdmVfc2tiKHNrYik7 CS8qIFNlbmQgZGF0YSB0byB1cHBlciBsZXZlbCAqLworCX0KKworCS8qIFJl LWluaXQgUlggRE1BICovCisJb21hcF9pcmRhX3N0YXJ0X3J4X2RtYShzaSk7 CisKKwlkZXYtPmxhc3RfcnggPSBqaWZmaWVzOworCisJcmV0dXJuIElSUV9I QU5ETEVEOworfQorCitzdGF0aWMgaW50IG9tYXBfaXJkYV9oYXJkX3htaXQo c3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikK K3sKKwlzdHJ1Y3Qgb21hcF9pcmRhICpzaSA9IGRldi0+cHJpdjsKKwlpbnQg c3BlZWQgPSBpcmRhX2dldF9uZXh0X3NwZWVkKHNrYik7CisJaW50IG10dCA9 IGlyZGFfZ2V0X210dChza2IpOworCWludCB4Ym9mcyA9IGlyZGFfZ2V0X25l eHRfeGJvZnMoc2tiKTsKKworCisJLyoKKwkgKiBEb2VzIHRoaXMgcGFja2V0 IGNvbnRhaW4gYSByZXF1ZXN0IHRvIGNoYW5nZSB0aGUgaW50ZXJmYWNlCisJ ICogc3BlZWQ/ICBJZiBzbywgcmVtZW1iZXIgaXQgdW50aWwgd2UgY29tcGxl dGUgdGhlIHRyYW5zbWlzc2lvbgorCSAqIG9mIHRoaXMgZnJhbWUuCisJICov CisJaWYgKHNwZWVkICE9IHNpLT5zcGVlZCAmJiBzcGVlZCAhPSAtMSkKKwkJ c2ktPm5ld3NwZWVkID0gc3BlZWQ7CisKKwlpZiAoeGJvZnMpIC8qIFNldCBu dW1iZXIgb2YgYWRkdGlvbmFsIEJPRlMgKi8KKwkJdWFydF9yZWdfb3V0KFVB UlQzX0VCTFIsIHhib2ZzICsgMSk7CisKKwkvKgorCSAqIElmIHRoaXMgaXMg YW4gZW1wdHkgZnJhbWUsIHdlIGNhbiBieXBhc3MgYSBsb3QuCisJICovCisJ aWYgKHNrYi0+bGVuID09IDApIHsKKwkJaWYgKHNpLT5uZXdzcGVlZCkgewor CQkJc2ktPm5ld3NwZWVkID0gMDsKKwkJCW9tYXBfaXJkYV9zZXRfc3BlZWQo ZGV2LCBzcGVlZCk7CisJCX0KKwkJZGV2X2tmcmVlX3NrYihza2IpOworCQly ZXR1cm4gMDsKKwl9CisKKwluZXRpZl9zdG9wX3F1ZXVlKGRldik7CisKKwkv KiBDb3B5IHNrYiBkYXRhIHRvIERNQSBidWZmZXIgKi8KKwltZW1jcHkoc2kt PnR4X2J1Zl9kbWFfdmlydCwgc2tiLT5kYXRhLCBza2ItPmxlbik7CisKKwkv KiBDb3B5IHNrYiBkYXRhIHRvIERNQSBidWZmZXIgKi8KKwlzaS0+c3RhdHMu dHhfYnl0ZXMgKz0gc2tiLT5sZW47CisKKwkvKiBTZXQgZnJhbWUgbGVuZ3Ro ICovCisJdWFydF9yZWdfb3V0KFVBUlQzX1RYRkxMLCAoc2tiLT5sZW4gJiAw eGZmKSk7CisJdWFydF9yZWdfb3V0KFVBUlQzX1RYRkxILCAoc2tiLT5sZW4g Pj4gOCkpOworCisJaWYgKG10dCA+IDEwMDApCisJCW1kZWxheShtdHQgLyAx MDAwKTsKKwllbHNlCisJCXVkZWxheShtdHQpOworCisJLyogU3RhcnQgVFgg RE1BIHRyYW5zZmVyICovCisJb21hcF9zdGFydF90eF9kbWEoc2ksIHNrYi0+ bGVuKTsKKworCS8qIFdlIGNhbiBmcmVlIHNrYiBub3cgYmVjYXVzZSBpdCdz IGFscmVhZHkgaW4gRE1BIGJ1ZmZlciAqLworCWRldl9rZnJlZV9za2Ioc2ti KTsKKworCWRldi0+dHJhbnNfc3RhcnQgPSBqaWZmaWVzOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQKK29tYXBfaXJkYV9pb2N0bChzdHJ1Y3Qg bmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKmlmcmVxLCBpbnQgY21k KQoreworCXN0cnVjdCBpZl9pcmRhX3JlcSAqcnEgPSAoc3RydWN0IGlmX2ly ZGFfcmVxICopaWZyZXE7CisJc3RydWN0IG9tYXBfaXJkYSAqc2kgPSBkZXYt PnByaXY7CisJaW50IHJldCA9IC1FT1BOT1RTVVBQOworCisKKwlzd2l0Y2gg KGNtZCkgeworCWNhc2UgU0lPQ1NCQU5EV0lEVEg6CisJCWlmIChjYXBhYmxl KENBUF9ORVRfQURNSU4pKSB7CisJCQkvKgorCQkJICogV2UgYXJlIHVuYWJs ZSB0byBzZXQgdGhlIHNwZWVkIGlmIHRoZQorCQkJICogZGV2aWNlIGlzIG5v dCBydW5uaW5nLgorCQkJICovCisJCQlpZiAoc2ktPm9wZW4pCisJCQkJcmV0 ID0gb21hcF9pcmRhX3NldF9zcGVlZChkZXYsCisJCQkJCQlycS0+aWZyX2Jh dWRyYXRlKTsKKwkJCWVsc2UgeworCQkJCXByaW50ayhLRVJOX0VSUiAib21h cF9pcmRhX2lvY3RsOiBTSU9DU0JBTkRXSURUSDogIW5ldGlmX3J1bm5pbmdc biIpOworCQkJCXJldCA9IDA7CisJCQl9CisJCX0KKwkJYnJlYWs7CisKKwlj YXNlIFNJT0NTTUVESUFCVVNZOgorCQlyZXQgPSAtRVBFUk07CisJCWlmIChj YXBhYmxlKENBUF9ORVRfQURNSU4pKSB7CisJCQlpcmRhX2RldmljZV9zZXRf bWVkaWFfYnVzeShkZXYsIFRSVUUpOworCQkJcmV0ID0gMDsKKwkJfQorCQli cmVhazsKKworCWNhc2UgU0lPQ0dSRUNFSVZJTkc6CisJCXJxLT5pZnJfcmVj ZWl2aW5nID0gcnhfc3RhdGU7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJ YnJlYWs7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0cnVj dCBuZXRfZGV2aWNlX3N0YXRzICpvbWFwX2lyZGFfc3RhdHMoc3RydWN0IG5l dF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3Qgb21hcF9pcmRhICpzaSA9IGRl di0+cHJpdjsKKwlyZXR1cm4gJnNpLT5zdGF0czsKK30KKworc3RhdGljIGlu dCBvbWFwX2lyZGFfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKK3sK KwlzdHJ1Y3Qgb21hcF9pcmRhICpzaSA9IGRldi0+cHJpdjsKKwlpbnQgZXJy OworCisJc2ktPnNwZWVkID0gOTYwMDsKKworCWVyciA9IHJlcXVlc3RfaXJx KGRldi0+aXJxLCBvbWFwX2lyZGFfaXJxLCAwLCBkZXYtPm5hbWUsIGRldik7 CisJaWYgKGVycikKKwkJZ290byBlcnJfaXJxOworCisJLyoKKwkgKiBUaGUg aW50ZXJydXB0IG11c3QgcmVtYWluIGRpc2FibGVkIGZvciBub3cuCisJICov CisJZGlzYWJsZV9pcnEoZGV2LT5pcnEpOworCisJLyogIFJlcXVlc3QgRE1B IGNoYW5uZWxzIGZvciBJckRBIGhhcmR3YXJlICovCisJaWYgKG9tYXBfcmVx dWVzdF9kbWEoc2ktPnBkYXRhLT5yeF9jaGFubmVsLCAiSXJEQSBSeCBETUEi LAorCQkJKHZvaWQgKilvbWFwX2lyZGFfcnhfZG1hX2NhbGxiYWNrLAorCQkJ ZGV2LCAmKHNpLT5yeF9kbWFfY2hhbm5lbCkpKSB7CisJCXByaW50ayhLRVJO X0VSUiAiRmFpbGVkIHRvIHJlcXVlc3QgSXJEQSBSeCBETUFcbiIpOworCQln b3RvIGVycl9pcnE7CisJfQorCisJaWYgKG9tYXBfcmVxdWVzdF9kbWEoc2kt PnBkYXRhLT50eF9jaGFubmVsLCAiSXJEQSBUeCBETUEiLAorCQkJKHZvaWQg KilvbWFwX2lyZGFfdHhfZG1hX2NhbGxiYWNrLAorCQkJZGV2LCAmKHNpLT50 eF9kbWFfY2hhbm5lbCkpKSB7CisJCXByaW50ayhLRVJOX0VSUiAiRmFpbGVk IHRvIHJlcXVlc3QgSXJEQSBUeCBETUFcbiIpOworCQlnb3RvIGVycl9pcnE7 CisJfQorCisJLyogQWxsb2NhdGUgVFggYW5kIFJYIGJ1ZmZlcnMgZm9yIERN QSBjaGFubmVscyAqLworCXNpLT5yeF9idWZfZG1hX3ZpcnQgPQorCQlkbWFf YWxsb2NfY29oZXJlbnQoTlVMTCwgSVJEQV9GUkFNRV9TSVpFX0xJTUlULAor CQkJCSYoc2ktPnJ4X2J1Zl9kbWFfcGh5cyksCisJCQkJR0ZQX0tFUk5FTCk7 CisKKwlpZiAoIXNpLT5yeF9idWZfZG1hX3ZpcnQpIHsKKwkJcHJpbnRrKEtF Uk5fRVJSICJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciByeF9idWZf ZG1hXG4iKTsKKwkJZ290byBlcnJfaXJxOworCX0KKworCXNpLT50eF9idWZf ZG1hX3ZpcnQgPQorCQlkbWFfYWxsb2NfY29oZXJlbnQoTlVMTCwgSVJEQV9G UkFNRV9TSVpFX0xJTUlULAorCQkJCSYoc2ktPnR4X2J1Zl9kbWFfcGh5cyks CisJCQkJR0ZQX0tFUk5FTCk7CisKKwlpZiAoIXNpLT50eF9idWZfZG1hX3Zp cnQpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJVbmFibGUgdG8gYWxsb2NhdGUg bWVtb3J5IGZvciB0eF9idWZfZG1hXG4iKTsKKwkJZ290byBlcnJfbWVtMTsK Kwl9CisKKwkvKgorCSAqIFNldHVwIHRoZSBzZXJpYWwgcG9ydCBmb3IgdGhl IHNwZWNpZmllZCBjb25maWcuCisJICovCisJaWYgKHNpLT5wZGF0YS0+c2Vs ZWN0X2lyZGEpCisJCXNpLT5wZGF0YS0+c2VsZWN0X2lyZGEoc2ktPmRldiwg SVJfU0VMKTsKKworCWVyciA9IG9tYXBfaXJkYV9zdGFydHVwKGRldik7CisK KwlpZiAoZXJyKQorCQlnb3RvIGVycl9zdGFydHVwOworCisJb21hcF9pcmRh X3NldF9zcGVlZChkZXYsIHNpLT5zcGVlZCA9IDk2MDApOworCisJLyoKKwkg KiBPcGVuIGEgbmV3IElyTEFQIGxheWVyIGluc3RhbmNlLgorCSAqLworCXNp LT5pcmxhcCA9IGlybGFwX29wZW4oZGV2LCAmc2ktPnFvcywgIm9tYXBfc2ly Iik7CisKKwllcnIgPSAtRU5PTUVNOworCWlmICghc2ktPmlybGFwKQorCQln b3RvIGVycl9pcmxhcDsKKworCS8qIE5vdyBlbmFibGUgdGhlIGludGVycnVw dCBhbmQgc3RhcnQgdGhlIHF1ZXVlICAqLworCXNpLT5vcGVuID0gMTsKKwor CS8qIFN0YXJ0IFJYIERNQSAqLworCW9tYXBfaXJkYV9zdGFydF9yeF9kbWEo c2kpOworCisJZW5hYmxlX2lycShkZXYtPmlycSk7CisJbmV0aWZfc3RhcnRf cXVldWUoZGV2KTsKKworCXJldHVybiAwOworCitlcnJfaXJsYXA6CisJc2kt Pm9wZW4gPSAwOworCW9tYXBfaXJkYV9zaHV0ZG93bihzaSk7CitlcnJfc3Rh cnR1cDoKKwlkbWFfZnJlZV9jb2hlcmVudChOVUxMLCBJUkRBX0ZSQU1FX1NJ WkVfTElNSVQsCisJCQlzaS0+dHhfYnVmX2RtYV92aXJ0LCBzaS0+dHhfYnVm X2RtYV9waHlzKTsKK2Vycl9tZW0xOgorCWRtYV9mcmVlX2NvaGVyZW50KE5V TEwsIElSREFfRlJBTUVfU0laRV9MSU1JVCwKKwkJCXNpLT5yeF9idWZfZG1h X3ZpcnQsIHNpLT5yeF9idWZfZG1hX3BoeXMpOworZXJyX2lycToKKwlmcmVl X2lycShkZXYtPmlycSwgZGV2KTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0 aWMgaW50IG9tYXBfaXJkYV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYp Cit7CisJc3RydWN0IG9tYXBfaXJkYSAqc2kgPSBkZXYtPnByaXY7CisKKwlk aXNhYmxlX2lycShkZXYtPmlycSk7CisKKwluZXRpZl9zdG9wX3F1ZXVlKGRl dik7CisKKwlvbWFwX2ZyZWVfZG1hKHNpLT5yeF9kbWFfY2hhbm5lbCk7CisJ b21hcF9mcmVlX2RtYShzaS0+dHhfZG1hX2NoYW5uZWwpOworCisJaWYgKHNp LT5yeF9idWZfZG1hX3ZpcnQpCisJCWRtYV9mcmVlX2NvaGVyZW50KE5VTEws IElSREFfRlJBTUVfU0laRV9MSU1JVCwKKwkJCQlzaS0+cnhfYnVmX2RtYV92 aXJ0LCBzaS0+cnhfYnVmX2RtYV9waHlzKTsKKwlpZiAoc2ktPnR4X2J1Zl9k bWFfdmlydCkKKwkJZG1hX2ZyZWVfY29oZXJlbnQoTlVMTCwgSVJEQV9GUkFN RV9TSVpFX0xJTUlULAorCQkJCXNpLT50eF9idWZfZG1hX3ZpcnQsIHNpLT50 eF9idWZfZG1hX3BoeXMpOworCisJb21hcF9pcmRhX3NodXRkb3duKHNpKTsK KworCS8qIFN0b3AgSXJMQVAgKi8KKwlpZiAoc2ktPmlybGFwKSB7CisJCWly bGFwX2Nsb3NlKHNpLT5pcmxhcCk7CisJCXNpLT5pcmxhcCA9IE5VTEw7CisJ fQorCisJc2ktPm9wZW4gPSAwOworCisJLyoKKwkgKiBGcmVlIHJlc291cmNl cworCSAqLworCWZyZWVfaXJxKGRldi0+aXJxLCBkZXYpOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgb21hcF9pcmRhX3NldF9zcGVlZChzdHJ1 Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgc3BlZWQpCit7CisJc3RydWN0IG9t YXBfaXJkYSAqc2kgPSBkZXYtPnByaXY7CisJaW50IGRpdmlzb3I7CisJdW5z aWduZWQgbG9uZyBmbGFnczsKKworCS8qIFNldCBJckRBIHNwZWVkICovCisJ aWYgKHNwZWVkIDw9IDExNTIwMCkgeworCisJCWxvY2FsX2lycV9zYXZlKGZs YWdzKTsKKworCQkvKiBTSVIgbW9kZSAqLworCQlpZiAoc2ktPnBkYXRhLT50 cmFuc2NlaXZlcl9tb2RlKQorCQkJc2ktPnBkYXRhLT50cmFuc2NlaXZlcl9t b2RlKHNpLT5kZXYsIElSX1NJUk1PREUpOworCisJCS8qIFNldCBTSVIgbW9k ZSAqLworCQl1YXJ0X3JlZ19vdXQoVUFSVDNfTURSMSwgMSk7CisJCXVhcnRf cmVnX291dChVQVJUM19FQkxSLCAxKTsKKworCQlkaXZpc29yID0gNDgwMDAw MDAgLyAoMTYgKiBzcGVlZCk7CS8qIEJhc2UgY2xvY2sgNDggTUh6ICovCisK KwkJdWFydF9yZWdfb3V0KFVBUlQzX0xDUiwgVUFSVDNfTENSX0RJVkVOKTsK KwkJdWFydF9yZWdfb3V0KFVBUlQzX0RMTCwgKGRpdmlzb3IgJiAweGZmKSk7 CisJCXVhcnRfcmVnX291dChVQVJUM19ETEgsIChkaXZpc29yID4+IDgpKTsK KwkJdWFydF9yZWdfb3V0KFVBUlQzX0xDUiwgMHgwMyk7CisKKwkJdWFydF9y ZWdfb3V0KFVBUlQzX01DUiwgMCk7CisKKwkJbG9jYWxfaXJxX3Jlc3RvcmUo ZmxhZ3MpOworCX0gZWxzZSBpZiAoc3BlZWQgPD0gMTE1MjAwMCkgeworCisJ CWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKworCQkvKiBTZXQgTUlSIG1vZGUs IGF1dG8gU0lQICovCisJCXVhcnRfcmVnX291dChVQVJUM19NRFIxLCBVQVJU M19NRFIxX01JUiB8CisJCQkJVUFSVDNfTURSMV9TSVBfQVVUTyk7CisKKwkJ dWFydF9yZWdfb3V0KFVBUlQzX0VCTFIsIDIpOworCisJCWRpdmlzb3IgPSA0 ODAwMDAwMCAvICg0MSAqIHNwZWVkKTsJLyogQmFzZSBjbG9jayA0OCBNSHog Ki8KKworCQl1YXJ0X3JlZ19vdXQoVUFSVDNfTENSLCBVQVJUM19MQ1JfRElW RU4pOworCQl1YXJ0X3JlZ19vdXQoVUFSVDNfRExMLCAoZGl2aXNvciAmIDB4 ZmYpKTsKKwkJdWFydF9yZWdfb3V0KFVBUlQzX0RMSCwgKGRpdmlzb3IgPj4g OCkpOworCQl1YXJ0X3JlZ19vdXQoVUFSVDNfTENSLCAweDAzKTsKKworCQlp ZiAoc2ktPnBkYXRhLT50cmFuc2NlaXZlcl9tb2RlKQorCQkJc2ktPnBkYXRh LT50cmFuc2NlaXZlcl9tb2RlKHNpLT5kZXYsIElSX01JUk1PREUpOworCisJ CWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKKwl9IGVsc2UgeworCQlsb2Nh bF9pcnFfc2F2ZShmbGFncyk7CisKKwkJLyogRklSIG1vZGUgKi8KKwkJdWFy dF9yZWdfb3V0KFVBUlQzX01EUjEsIFVBUlQzX01EUjFfRklSIHwKKwkJCQlV QVJUM19NRFIxX1NJUF9BVVRPKTsKKworCQlpZiAoc2ktPnBkYXRhLT50cmFu c2NlaXZlcl9tb2RlKQorCQkJc2ktPnBkYXRhLT50cmFuc2NlaXZlcl9tb2Rl KHNpLT5kZXYsIElSX0ZJUk1PREUpOworCisJCWxvY2FsX2lycV9yZXN0b3Jl KGZsYWdzKTsKKwl9CisKKwlzaS0+c3BlZWQgPSBzcGVlZDsKKworCXJldHVy biAwOworfQorCisjaWZkZWYgQ09ORklHX1BNCisvKgorICogU3VzcGVuZCB0 aGUgSXJEQSBpbnRlcmZhY2UuCisgKi8KK3N0YXRpYyBpbnQgb21hcF9pcmRh X3N1c3BlbmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgcG1fbWVz c2FnZV90IHN0YXRlKQoreworCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBw bGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKwlzdHJ1Y3Qgb21hcF9pcmRh ICpzaSA9IGRldi0+cHJpdjsKKworCWlmICghZGV2KQorCQlyZXR1cm4gMDsK KworCWlmIChzaS0+b3BlbikgeworCQkvKgorCQkgKiBTdG9wIHRoZSB0cmFu c21pdCBxdWV1ZQorCQkgKi8KKwkJbmV0aWZfZGV2aWNlX2RldGFjaChkZXYp OworCQlkaXNhYmxlX2lycShkZXYtPmlycSk7CisJCW9tYXBfaXJkYV9zaHV0 ZG93bihzaSk7CisJfQorCXJldHVybiAwOworfQorCisvKgorICogUmVzdW1l IHRoZSBJckRBIGludGVyZmFjZS4KKyAqLworc3RhdGljIGludCBvbWFwX2ly ZGFfcmVzdW1lKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJ c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRh KHBkZXYpOworCXN0cnVjdCBvbWFwX2lyZGEgKnNpPSBkZXYtPnByaXY7CisK KwlpZiAoIWRldikKKwkJcmV0dXJuIDA7CisKKwlpZiAoc2ktPm9wZW4pIHsK KwkJLyoKKwkJICogSWYgd2UgbWlzc2VkIGEgc3BlZWQgY2hhbmdlLCBpbml0 aWFsaXNlIGF0IHRoZSBuZXcgc3BlZWQKKwkJICogZGlyZWN0bHkuICBJdCBp cyBkZWJhdGFibGUgd2hldGhlciB0aGlzIGlzIGFjdHVhbGx5CisJCSAqIHJl cXVpcmVkLCBidXQgaW4gdGhlIGludGVyZXN0cyBvZiBjb250aW51aW5nIGZy b20gd2hlcmUKKwkJICogd2UgbGVmdCBvZmYgaXQgaXMgZGVzaXJlYWJsZS4g IFRoZSBjb252ZXJzZSBhcmd1bWVudCBpcworCQkgKiB0aGF0IHdlIHNob3Vs ZCByZS1uZWdvdGlhdGUgYXQgOTYwMCBiYXVkIGFnYWluLgorCQkgKi8KKwkJ aWYgKHNpLT5uZXdzcGVlZCkgeworCQkJc2ktPnNwZWVkID0gc2ktPm5ld3Nw ZWVkOworCQkJc2ktPm5ld3NwZWVkID0gMDsKKwkJfQorCisJCW9tYXBfaXJk YV9zdGFydHVwKGRldik7CisJCW9tYXBfaXJkYV9zZXRfc3BlZWQoZGV2LCBz aS0+c3BlZWQpOworCQllbmFibGVfaXJxKGRldi0+aXJxKTsKKworCQkvKgor CQkgKiBUaGlzIGF1dG9tYXRpY2FsbHkgd2FrZXMgdXAgdGhlIHF1ZXVlCisJ CSAqLworCQluZXRpZl9kZXZpY2VfYXR0YWNoKGRldik7CisJfQorCisJcmV0 dXJuIDA7Cit9CisjZWxzZQorI2RlZmluZSBvbWFwX2lyZGFfc3VzcGVuZAlO VUxMCisjZGVmaW5lIG9tYXBfaXJkYV9yZXN1bWUJTlVMTAorI2VuZGlmCisK K3N0YXRpYyBpbnQgb21hcF9pcmRhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKKwlz dHJ1Y3Qgb21hcF9pcmRhICpzaTsKKwlzdHJ1Y3Qgb21hcF9pcmRhX2NvbmZp ZyAqcGRhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKKwl1bnNpZ25l ZCBpbnQgYmF1ZHJhdGVfbWFzazsKKwlpbnQgZXJyID0gMDsKKwlpbnQgaXJx ID0gTk9fSVJROworCisJaWYgKCFwZGF0YSkgeworCQlwcmludGsoS0VSTl9F UlIgIklyREEgUGxhdGZvcm0gZGF0YSBub3Qgc3VwcGxpZWRcbiIpOworCQly ZXR1cm4gLUVOT0VOVDsKKwl9CisKKwlpZiAoIXBkYXRhLT5yeF9jaGFubmVs IHx8ICFwZGF0YS0+dHhfY2hhbm5lbCkgeworCQlwcmludGsoS0VSTl9FUlIg IklyREEgaW52YWxpZCByeC90eCBjaGFubmVsIHZhbHVlXG4iKTsKKwkJcmV0 dXJuIC1FTk9FTlQ7CisJfQorCisJaXJxID0gcGxhdGZvcm1fZ2V0X2lycShw ZGV2LCAwKTsKKwlpZiAoaXJxIDw9IDApIHsKKwkJcHJpbnRrKEtFUk5fV0FS TklORyAibm8gaXJxIGZvciBJckRBXG4iKTsKKwkJcmV0dXJuIC1FTk9FTlQ7 CisJfQorCisJZGV2ID0gYWxsb2NfaXJkYWRldihzaXplb2Yoc3RydWN0IG9t YXBfaXJkYSkpOworCWlmICghZGV2KQorCQlnb3RvIGVycl9tZW1fMTsKKwor CisJc2kgPSBkZXYtPnByaXY7CisJc2ktPmRldiA9ICZwZGV2LT5kZXY7CisJ c2ktPnBkYXRhID0gcGRhdGE7CisKKwlkZXYtPmhhcmRfc3RhcnRfeG1pdAk9 IG9tYXBfaXJkYV9oYXJkX3htaXQ7CisJZGV2LT5vcGVuCQk9IG9tYXBfaXJk YV9zdGFydDsKKwlkZXYtPnN0b3AJCT0gb21hcF9pcmRhX3N0b3A7CisJZGV2 LT5kb19pb2N0bAkJPSBvbWFwX2lyZGFfaW9jdGw7CisJZGV2LT5nZXRfc3Rh dHMJCT0gb21hcF9pcmRhX3N0YXRzOworCWRldi0+aXJxCQk9IGlycTsKKwor CWlyZGFfaW5pdF9tYXhfcW9zX2NhcGFiaWxpZXMoJnNpLT5xb3MpOworCisJ YmF1ZHJhdGVfbWFzayA9IDA7CisJaWYgKHNpLT5wZGF0YS0+dHJhbnNjZWl2 ZXJfY2FwICYgSVJfU0lSTU9ERSkKKwkJYmF1ZHJhdGVfbWFzayB8PSBJUl85 NjAwfElSXzE5MjAwfElSXzM4NDAwfElSXzU3NjAwfElSXzExNTIwMDsKKwlp ZiAoc2ktPnBkYXRhLT50cmFuc2NlaXZlcl9jYXAgJiBJUl9NSVJNT0RFKQor CQliYXVkcmF0ZV9tYXNrIHw9IElSXzU3NjAwIHwgSVJfMTE1MjAwMDsKKwlp ZiAoc2ktPnBkYXRhLT50cmFuc2NlaXZlcl9jYXAgJiBJUl9GSVJNT0RFKQor CQliYXVkcmF0ZV9tYXNrIHw9IElSXzQwMDAwMDAgPDwgODsKKworCXNpLT5x b3MuYmF1ZF9yYXRlLmJpdHMgJj0gYmF1ZHJhdGVfbWFzazsKKwlzaS0+cW9z Lm1pbl90dXJuX3RpbWUuYml0cyA9IDc7CisKKwlpcmRhX3Fvc19iaXRzX3Rv X3ZhbHVlKCZzaS0+cW9zKTsKKworCS8qIEFueSBiZXR0ZXIgd2F5IHRvIGF2 b2lkIHRoaXM/IE5vLiAqLworCWlmIChtYWNoaW5lX2lzX29tYXBfaDMoKSB8 fCBtYWNoaW5lX2lzX29tYXBfaDQoKSkKKwkJSU5JVF9XT1JLKCZzaS0+cGRh dGEtPmdwaW9fZXhwYSwgTlVMTCwgTlVMTCk7CisKKwllcnIgPSByZWdpc3Rl cl9uZXRkZXYoZGV2KTsKKwlpZiAoIWVycikKKwkJcGxhdGZvcm1fc2V0X2Ry dmRhdGEocGRldiwgZGV2KTsKKwllbHNlCisJCWZyZWVfbmV0ZGV2KGRldik7 CisKK2Vycl9tZW1fMToKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50 IG9tYXBfaXJkYV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKK3sKKwlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcGxhdGZvcm1fZ2V0 X2RydmRhdGEocGRldik7CisKKwlpZiAocGRldikgeworCQl1bnJlZ2lzdGVy X25ldGRldihkZXYpOworCQlmcmVlX25ldGRldihkZXYpOworCX0KKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgb21h cGlyX2RyaXZlciA9IHsKKwkucHJvYmUJCT0gb21hcF9pcmRhX3Byb2JlLAor CS5yZW1vdmUJCT0gb21hcF9pcmRhX3JlbW92ZSwKKwkuc3VzcGVuZAk9IG9t YXBfaXJkYV9zdXNwZW5kLAorCS5yZXN1bWUJCT0gb21hcF9pcmRhX3Jlc3Vt ZSwKKwkuZHJpdmVyCQk9IHsKKwkJLm5hbWUJPSAib21hcGlyZGEiLAorCX0s Cit9OworCitzdGF0aWMgY2hhciBfX2luaXRkYXRhIGJhbm5lcltdID0gS0VS Tl9JTkZPICJPTUFQIElyREEgZHJpdmVyIGluaXRpYWxpemluZ1xuIjsKKwor c3RhdGljIGludCBfX2luaXQgb21hcF9pcmRhX2luaXQodm9pZCkKK3sKKwlw cmludGsoYmFubmVyKTsKKwlyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lz dGVyKCZvbWFwaXJfZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0 IG9tYXBfaXJkYV9leGl0KHZvaWQpCit7CisJcGxhdGZvcm1fZHJpdmVyX3Vu cmVnaXN0ZXIoJm9tYXBpcl9kcml2ZXIpOworfQorCittb2R1bGVfaW5pdChv bWFwX2lyZGFfaW5pdCk7Cittb2R1bGVfZXhpdChvbWFwX2lyZGFfZXhpdCk7 CisKK01PRFVMRV9BVVRIT1IoIk1vbnRhVmlzdGEiKTsKK01PRFVMRV9ERVND UklQVElPTigiT01BUCBJckRBIERyaXZlciIpOworTU9EVUxFX0xJQ0VOU0Uo IkdQTCIpOworCi0tIAoxLjMuMwoK --_----------=_1154941953269120-- - 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/