Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S265690AbUFSNW0 (ORCPT ); Sat, 19 Jun 2004 09:22:26 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S265698AbUFSNW0 (ORCPT ); Sat, 19 Jun 2004 09:22:26 -0400 Received: from imap.gmx.net ([213.165.64.20]:24464 "HELO mail.gmx.net") by vger.kernel.org with SMTP id S265690AbUFSNVq (ORCPT ); Sat, 19 Jun 2004 09:21:46 -0400 X-Authenticated: #21910825 Message-ID: <40D43DC3.9000909@gmx.net> Date: Sat, 19 Jun 2004 15:21:07 +0200 From: Carl-Daniel Hailfinger User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040114 X-Accept-Language: de, en MIME-Version: 1.0 To: Brian Lazara CC: Christoph Hellwig , Manfred Spraul , Andrew de Quincey , Linux Kernel Mailing List Subject: [PATCH] new device support for forcedeth.c second try Content-Type: multipart/mixed; boundary="------------080401060207070901070906" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 56246 Lines: 793 This is a multi-part message in MIME format. --------------080401060207070901070906 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, Brian, thank you very much for contributing to forcedeth. It's great to see that forcedeth has been accepted and improved by NVidia. Your first patch drew some criticism, so I changed a few bits. Christoph, I tried to address all your concerns about the pci ids, free_netdev and function pointers. Please review the patch again in light of the changes. Patch originally by: Brian Lazara Signed-off-by: Carl-Daniel Hailfinger Please do not apply yet, this patch is here to be improved until nobody complains. Regards, Carl-Daniel -- http://www.hailfinger.org/ --------------080401060207070901070906 Content-Type: text/plain; name="forcedeth_gigabit_try2.txt" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="forcedeth_gigabit_try2.txt" PT09PT0gZHJpdmVycy9uZXQvZm9yY2VkZXRoLmMgMS4yIHZzIGVkaXRlZCA9PT09PQotLS0g MS4yL2RyaXZlcnMvbmV0L2ZvcmNlZGV0aC5jCTIwMDQtMDMtMDkgMTk6NTM6MTMgKzAxOjAw CisrKyBlZGl0ZWQvZHJpdmVycy9uZXQvZm9yY2VkZXRoLmMJMjAwNC0wNi0xOSAxNToxMTox NCArMDI6MDAKQEAgLTEyLDYgKzEyLDcgQEAKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMg TWFuZnJlZCBTcHJhdWwKICAqIENvcHlyaWdodCAoQykgMjAwNCBBbmRyZXcgZGUgUXVpbmNl eSAod29sIHN1cHBvcnQpCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQgTlZJRElBIENvcnBvcmF0 aW9uCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC02OSw2 ICs3MCw5IEBACiAgKgkwLjIzOiAyNiBKYW4gMjAwNDogdmFyaW91cyBzbWFsbCBjbGVhbnVw cwogICoJMC4yNDogMjcgRmViIDIwMDQ6IG1ha2UgZHJpdmVyIGV2ZW4gbGVzcyBhbm9ueW1v dXMgaW4gYmFja3RyYWNlcwogICoJMC4yNTogMDkgTWFyIDIwMDQ6IHdvbCBzdXBwb3J0Cisg KgkwLjI2OiAxOCBNYXkgMjAwNDogR2lnYWJpdCBzdXBwb3J0LCBuZXcgZGVzY3JpcHRvciBy aW5ncywKKyAqCQkJICAgYWRkZWQgQ0s4MDQvTUNQMDQgZGV2aWNlIElEcywgY29kZSBmaXhl cworICoJCQkgICBmb3IgcmVnaXN0ZXJzLCBsaW5rIHN0YXR1cyBhbmQgb3RoZXIgbWlub3Ig Zml4ZXMuCiAgKgogICogS25vd24gYnVnczoKICAqIFdlIHN1c3BlY3QgdGhhdCBvbiBzb21l IGhhcmR3YXJlIG5vIFRYIGRvbmUgaW50ZXJydXB0cyBhcmUgZ2VuZXJhdGVkLgpAQCAtODAs NyArODQsNyBAQAogICogREVWX05FRURfVElNRVJJUlEgd2lsbCBub3QgaGFybSB5b3Ugb24g c2FuZSBoYXJkd2FyZSwgb25seSBnZW5lcmF0aW5nIGEgZmV3CiAgKiBzdXBlcmZsdW91cyB0 aW1lciBpbnRlcnJ1cHRzIGZyb20gdGhlIG5pYy4KICAqLwotI2RlZmluZSBGT1JDRURFVEhf VkVSU0lPTgkJIjAuMjUiCisjZGVmaW5lIEZPUkNFREVUSF9WRVJTSU9OCQkiMC4yNiIKIAog I2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CkBA IC0xMjMsNiArMTI3LDcgQEAKICNkZWZpbmUgTlZSRUdfSVJRU1RBVF9NSUlFVkVOVAkweDA0 MAogI2RlZmluZSBOVlJFR19JUlFTVEFUX01BU0sJCTB4MWZmCiAJTnZSZWdJcnFNYXNrID0g MHgwMDQsCisjZGVmaW5lIE5WUkVHX0lSUV9SWF9FUlJPUgkJMHgwMDAxCiAjZGVmaW5lIE5W UkVHX0lSUV9SWAkJCTB4MDAwMgogI2RlZmluZSBOVlJFR19JUlFfUlhfTk9CVUYJCTB4MDAw NAogI2RlZmluZSBOVlJFR19JUlFfVFhfRVJSCQkweDAwMDgKQEAgLTEzMiw3ICsxMzcsNyBA QAogI2RlZmluZSBOVlJFR19JUlFfVFgxCQkJMHgwMTAwCiAjZGVmaW5lIE5WUkVHX0lSUU1B U0tfV0FOVEVEXzEJCTB4MDA1ZgogI2RlZmluZSBOVlJFR19JUlFNQVNLX1dBTlRFRF8yCQkw eDAxNDcKLSNkZWZpbmUgTlZSRUdfSVJRX1VOS05PV04JCSh+KE5WUkVHX0lSUV9SWHxOVlJF R19JUlFfUlhfTk9CVUZ8TlZSRUdfSVJRX1RYX0VSUnxOVlJFR19JUlFfVFgyfE5WUkVHX0lS UV9USU1FUnxOVlJFR19JUlFfTElOS3xOVlJFR19JUlFfVFgxKSkKKyNkZWZpbmUgTlZSRUdf SVJRX1VOS05PV04JCSh+KE5WUkVHX0lSUV9SWF9FUlJPUnxOVlJFR19JUlFfUlh8TlZSRUdf SVJRX1JYX05PQlVGfE5WUkVHX0lSUV9UWF9FUlJ8TlZSRUdfSVJRX1RYMnxOVlJFR19JUlFf VElNRVJ8TlZSRUdfSVJRX0xJTkt8TlZSRUdfSVJRX1RYMSkpCiAKIAlOdlJlZ1Vua25vd25T ZXR1cFJlZzYgPSAweDAwOCwKICNkZWZpbmUgTlZSRUdfVU5LU0VUVVA2X1ZBTAkJMwpAQCAt MTU5LDcgKzE2NCw3IEBACiAKIAlOdlJlZ09mZmxvYWRDb25maWcgPSAweDkwLAogI2RlZmlu ZSBOVlJFR19PRkZMT0FEX0hPTUVQSFkJMHg2MDEKLSNkZWZpbmUgTlZSRUdfT0ZGTE9BRF9O T1JNQUwJMHg1ZWUKKyNkZWZpbmUgTlZSRUdfT0ZGTE9BRF9OT1JNQUwJUlhfTklDX0JVRlNJ WkUKIAlOdlJlZ1JlY2VpdmVyQ29udHJvbCA9IDB4MDk0LAogI2RlZmluZSBOVlJFR19SQ1ZD VExfU1RBUlQJMHgwMQogCU52UmVnUmVjZWl2ZXJTdGF0dXMgPSAweDk4LApAQCAtMTY4LDYg KzE3Myw4IEBACiAJTnZSZWdSYW5kb21TZWVkID0gMHg5YywKICNkZWZpbmUgTlZSRUdfUk5E U0VFRF9NQVNLCTB4MDBmZgogI2RlZmluZSBOVlJFR19STkRTRUVEX0ZPUkNFCTB4N2YwMAor I2RlZmluZSBOVlJFR19STkRTRUVEX0ZPUkNFMgkweDJkMDAKKyNkZWZpbmUgTlZSRUdfUk5E U0VFRF9GT1JDRTMJMHg3NDAwCiAKIAlOdlJlZ1Vua25vd25TZXR1cFJlZzEgPSAweEEwLAog I2RlZmluZSBOVlJFR19VTktTRVRVUDFfVkFMCTB4MTYwNzBmCkBAIC0xODEsNiArMTg4LDkg QEAKIAlOdlJlZ011bHRpY2FzdE1hc2tBID0gMHhCOCwKIAlOdlJlZ011bHRpY2FzdE1hc2tC ID0gMHhCQywKIAorCU52UmVnUGh5SW50ZXJmYWNlID0gMHhDMCwKKyNkZWZpbmUgUEhZX1JH TUlJCQkweDEwMDAwMDAwCisKIAlOdlJlZ1R4UmluZ1BoeXNBZGRyID0gMHgxMDAsCiAJTnZS ZWdSeFJpbmdQaHlzQWRkciA9IDB4MTA0LAogCU52UmVnUmluZ1NpemVzID0gMHgxMDgsCkBA IC0xODksMTIgKzE5OSwxMiBAQAogCU52UmVnVW5rbm93blRyYW5zbWl0dGVyUmVnID0gMHgx MGMsCiAJTnZSZWdMaW5rU3BlZWQgPSAweDExMCwKICNkZWZpbmUgTlZSRUdfTElOS1NQRUVE X0ZPUkNFIDB4MTAwMDAKLSNkZWZpbmUgTlZSRUdfTElOS1NQRUVEXzEwCTEwCisjZGVmaW5l IE5WUkVHX0xJTktTUEVFRF8xMAkxMDAwCiAjZGVmaW5lIE5WUkVHX0xJTktTUEVFRF8xMDAJ MTAwCi0jZGVmaW5lIE5WUkVHX0xJTktTUEVFRF8xMDAwCTEwMDAKKyNkZWZpbmUgTlZSRUdf TElOS1NQRUVEXzEwMDAJNTAKIAlOdlJlZ1Vua25vd25TZXR1cFJlZzUgPSAweDEzMCwKICNk ZWZpbmUgTlZSRUdfVU5LU0VUVVA1X0JJVDMxCSgxPDwzMSkKLQlOdlJlZ1Vua25vd25TZXR1 cFJlZzMgPSAweDEzNCwKKwlOdlJlZ1Vua25vd25TZXR1cFJlZzMgPSAweDEzYywKICNkZWZp bmUgTlZSRUdfVU5LU0VUVVAzX1ZBTDEJMHgyMDAwMTAKIAlOdlJlZ1R4UnhDb250cm9sID0g MHgxNDQsCiAjZGVmaW5lIE5WUkVHX1RYUlhDVExfS0lDSwkweDAwMDEKQEAgLTIxMywxNSAr MjIzLDE1IEBACiAJTnZSZWdBZGFwdGVyQ29udHJvbCA9IDB4MTg4LAogI2RlZmluZSBOVlJF R19BREFQVENUTF9TVEFSVAkweDAyCiAjZGVmaW5lIE5WUkVHX0FEQVBUQ1RMX0xJTktVUAkw eDA0Ci0jZGVmaW5lIE5WUkVHX0FEQVBUQ1RMX1BIWVZBTElECTB4NDAwMAorI2RlZmluZSBO VlJFR19BREFQVENUTF9QSFlWQUxJRAkweDQwMDAwCiAjZGVmaW5lIE5WUkVHX0FEQVBUQ1RM X1JVTk5JTkcJMHgxMDAwMDAKICNkZWZpbmUgTlZSRUdfQURBUFRDVExfUEhZU0hJRlQJMjQK IAlOdlJlZ01JSVNwZWVkID0gMHgxOGMsCiAjZGVmaW5lIE5WUkVHX01JSVNQRUVEX0JJVDgJ KDE8PDgpCiAjZGVmaW5lIE5WUkVHX01JSURFTEFZCTUKIAlOdlJlZ01JSUNvbnRyb2wgPSAw eDE5MCwKLSNkZWZpbmUgTlZSRUdfTUlJQ1RMX0lOVVNFCTB4MTAwMDAKLSNkZWZpbmUgTlZS RUdfTUlJQ1RMX1dSSVRFCTB4MDgwMDAKKyNkZWZpbmUgTlZSRUdfTUlJQ1RMX0lOVVNFCTB4 MDgwMDAKKyNkZWZpbmUgTlZSRUdfTUlJQ1RMX1dSSVRFCTB4MDA0MDAKICNkZWZpbmUgTlZS RUdfTUlJQ1RMX0FERFJTSElGVAk1CiAJTnZSZWdNSUlEYXRhID0gMHgxOTQsCiAJTnZSZWdX YWtlVXBGbGFncyA9IDB4MjAwLApAQCAtMjUzLDEwICsyNjMsMjAgQEAKICNkZWZpbmUgTlZS RUdfUE9XRVJTVEFURV9EMwkJMHgwMDAzCiB9OwogCisvKkZJWE1FIGJpZyBlbmRpYW4gKi8K Kwogc3RydWN0IHJpbmdfZGVzYyB7CiAJdTMyIFBhY2tldEJ1ZmZlcjsKLQl1MTYgTGVuZ3Ro OwotCXUxNiBGbGFnczsKKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQl1MTYgTGVuZ3RoOwor CQkJdTE2IEZsYWdzOworCQl9IHYxOworCQlzdHJ1Y3QgeworCQkJdTMyIExlbmd0aDoxNDsK KwkJCXUzMiBGbGFnczoxODsKKwkJfSB2MjsKKwl9IHU7CiB9OwogCiAjZGVmaW5lIE5WX1RY X0xBU1RQQUNLRVQJKDE8PDApCkBAIC0yNjksOSArMjg5LDE5IEBACiAjZGVmaW5lIE5WX1RY X0VSUk9SCQkoMTw8MTQpCiAjZGVmaW5lIE5WX1RYX1ZBTElECQkoMTw8MTUpCiAKKyNkZWZp bmUgTlZfVFgyX0xBU1RQQUNLRVQJKDE8PDE1KQorI2RlZmluZSBOVl9UWDJfUkVUUllFUlJP UgkoMTw8NCkKKyNkZWZpbmUgTlZfVFgyX0xBU1RQQUNLRVQxCSgxPDw5KQorI2RlZmluZSBO Vl9UWDJfREVGRVJSRUQJCSgxPDwxMSkKKyNkZWZpbmUgTlZfVFgyX0NBUlJJRVJMT1NUCSgx PDwxMikKKyNkZWZpbmUgTlZfVFgyX0xBVEVDT0xMSVNJT04JKDE8PDEzKQorI2RlZmluZSBO Vl9UWDJfVU5ERVJGTE9XCSgxPDwxNCkKKyNkZWZpbmUgTlZfVFgyX0VSUk9SCQkoMTw8MTYp CisjZGVmaW5lIE5WX1RYMl9WQUxJRAkJKDE8PDE3KQorCiAjZGVmaW5lIE5WX1JYX0RFU0NS SVBUT1JWQUxJRAkoMTw8MCkKICNkZWZpbmUgTlZfUlhfTUlTU0VERlJBTUUJKDE8PDEpCi0j ZGVmaW5lIE5WX1JYX1NVQlNUUkFDVDEJKDE8PDMpCisjZGVmaW5lIE5WX1JYX1NVQlNUUkFD VDEJKDE8PDIpCiAjZGVmaW5lIE5WX1JYX0VSUk9SMQkJKDE8PDcpCiAjZGVmaW5lIE5WX1JY X0VSUk9SMgkJKDE8PDgpCiAjZGVmaW5lIE5WX1JYX0VSUk9SMwkJKDE8PDkpCkBAIC0yODIs NiArMzEyLDE4IEBACiAjZGVmaW5lIE5WX1JYX0VSUk9SCQkoMTw8MTQpCiAjZGVmaW5lIE5W X1JYX0FWQUlMCQkoMTw8MTUpCiAKKyNkZWZpbmUgTlZfUlgyX0RFU0NSSVBUT1JWQUxJRAko MTw8MTUpCisjZGVmaW5lIE5WX1JYMl9TVUJTVFJBQ1QxCSgxPDwxMSkKKyNkZWZpbmUgTlZf UlgyX0VSUk9SMQkJKDE8PDQpCisjZGVmaW5lIE5WX1JYMl9FUlJPUjIJCSgxPDw1KQorI2Rl ZmluZSBOVl9SWDJfRVJST1IzCQkoMTw8NikKKyNkZWZpbmUgTlZfUlgyX0VSUk9SNAkJKDE8 PDcpCisjZGVmaW5lIE5WX1JYMl9DUkNFUlIJCSgxPDw4KQorI2RlZmluZSBOVl9SWDJfT1ZF UkZMT1cJCSgxPDw5KQorI2RlZmluZSBOVl9SWDJfRlJBTUlOR0VSUgkoMTw8MTApCisjZGVm aW5lIE5WX1JYMl9FUlJPUgkJKDE8PDE2KQorI2RlZmluZSBOVl9SWDJfQVZBSUwJCSgxPDwx NykKKwogLyogTWlzY2VsYW5lb3VzIGhhcmR3YXJlIHJlbGF0ZWQgZGVmaW5lczogKi8KICNk ZWZpbmUgTlZfUENJX1JFR1NaCQkweDI3MAogCkBAIC0zMDksMTAgKzM1MSwxMCBAQAogI2Rl ZmluZSBERUZBVUxUX01UVQkJMTUwMAkvKiBhbHNvIG1heGltdW0gc3VwcG9ydGVkLCBhdCBs ZWFzdCBmb3Igbm93ICovCiAKICNkZWZpbmUgUlhfUklORwkJMTI4Ci0jZGVmaW5lIFRYX1JJ TkcJCTE2CisjZGVmaW5lIFRYX1JJTkcJCTY0CiAvKiBsaW1pdGVkIHRvIDEgcGFja2V0IHVu dGlsIHdlIHVuZGVyc3RhbmQgTlZfVFhfTEFTVFBBQ0tFVCAqLwotI2RlZmluZSBUWF9MSU1J VF9TVE9QCTEwCi0jZGVmaW5lIFRYX0xJTUlUX1NUQVJUCTUKKyNkZWZpbmUgVFhfTElNSVRf U1RPUAk2MworI2RlZmluZSBUWF9MSU1JVF9TVEFSVAk2MgogCiAvKiByeC90eCBtYWMgYWRk ciArIHR5cGUgKyB2bGFuICsgYWxpZ24gKyBzbGFjayovCiAjZGVmaW5lIFJYX05JQ19CVUZT SVpFCQkoREVGQVVMVF9NVFUgKyA2NCkKQEAgLTMyMiw2ICszNjQsNDAgQEAKICNkZWZpbmUg T09NX1JFRklMTAkoMStIWi8yMCkKICNkZWZpbmUgUE9MTF9XQUlUCSgxK0haLzEwMCkKIAor I2RlZmluZSBERVNDX1ZFUl8xCTB4MAorI2RlZmluZSBERVNDX1ZFUl8yCTB4MDIxMDAKKwor LyogUEhZIGRlZmluZXMgKi8KKyNkZWZpbmUgUEhZX09VSV9NQVJWRUxMCTB4NTA0MworI2Rl ZmluZSBQSFlfT1VJX0NJQ0FEQQkweDAzZjEKKyNkZWZpbmUgUEhZSUQxX09VSV9NQVNLCTB4 MDNmZgorI2RlZmluZSBQSFlJRDFfT1VJX1NIRlQJNgorI2RlZmluZSBQSFlJRDJfT1VJX01B U0sJMHhmYzAwCisjZGVmaW5lIFBIWUlEMl9PVUlfU0hGVAkxMAorI2RlZmluZSBQSFlfSU5J VDEJMHgwZjAwMAorI2RlZmluZSBQSFlfSU5JVDIJMHgwZTAwCisjZGVmaW5lIFBIWV9JTklU MwkweDAxMDAwCisjZGVmaW5lIFBIWV9JTklUNAkweDAyMDAKKyNkZWZpbmUgUEhZX0lOSVQ1 CTB4MDAwNAorI2RlZmluZSBQSFlfSU5JVDYJMHgwMjAwMAorI2RlZmluZSBQSFlfR0lHQUJJ VAkweDAxMDAKKworI2RlZmluZSBQSFlfVElNRU9VVAkweDEKKyNkZWZpbmUgUEhZX0VSUk9S CTB4MgorCisjZGVmaW5lIFBIWV8xMDAJMHgxCisjZGVmaW5lIFBIWV8xMDAwCTB4MgorI2Rl ZmluZSBQSFlfSEFMRgkweDEwMAorCisvKiBGSVhNRTogTUlJIGRlZmluZXMgdGhhdCBzaG91 bGQgYmUgYWRkZWQgdG8gPGxpbnV4L21paS5oPiAqLworI2RlZmluZSBNSUlfMTAwMEJUX0NS CTB4MDkKKyNkZWZpbmUgTUlJXzEwMDBCVF9TUgkweDBhCisjZGVmaW5lIEFEVkVSVElTRV8x MDAwRlVMTAkweDAyMDAKKyNkZWZpbmUgQURWRVJUSVNFXzEwMDBIQUxGCTB4MDEwMAorI2Rl ZmluZSBMUEFfMTAwMEZVTEwJMHgwODAwCisjZGVmaW5lIExQQV8xMDAwSEFMRgkweDA0MDAK KworCiAvKgogICogU01QIGxvY2tpbmc6CiAgKiBBbGwgaGFyZHdhcmUgYWNjZXNzIHVuZGVy IGRldi0+cHJpdi0+bG9jaywgZXhjZXB0IHRoZSBwZXJmb3JtYW5jZQpAQCAtMzQ1LDEyICs0 MjEsMTUgQEAKIAlpbnQgZHVwbGV4OwogCWludCBwaHlhZGRyOwogCWludCB3b2xlbmFibGVk OworCXVuc2lnbmVkIGludCBwaHlfb3VpOworCXUxNiBnaWdhYml0OwogCiAJLyogR2VuZXJh bCBkYXRhOiBSTyBmaWVsZHMgKi8KIAlkbWFfYWRkcl90IHJpbmdfYWRkcjsKIAlzdHJ1Y3Qg cGNpX2RldiAqcGNpX2RldjsKIAl1MzIgb3JpZ19tYWNbMl07CiAJdTMyIGlycW1hc2s7CisJ dTMyIGRlc2NfdmVyOwogCiAJLyogcnggc3BlY2lmaWMgZmllbGRzLgogCSAqIExvY2tpbmc6 IFdpdGhpbiBpcnEgaGFuZGVyIG9yIGRpc2FibGVfaXJxK3NwaW5fbG9jaygmbnAtPmxvY2sp OwpAQCAtMzcwLDcgKzQ0OSw3IEBACiAJdW5zaWduZWQgaW50IG5leHRfdHgsIG5pY190eDsK IAlzdHJ1Y3Qgc2tfYnVmZiAqdHhfc2tidWZmW1RYX1JJTkddOwogCWRtYV9hZGRyX3QgdHhf ZG1hW1RYX1JJTkddOwotCXUxNiB0eF9mbGFnczsKKwl1MzIgdHhfZmxhZ3M7CiB9OwogCiAv KgpAQCAtNDIxLDI0ICs1MDAsMTggQEAKIHN0YXRpYyBpbnQgbWlpX3J3KHN0cnVjdCBuZXRf ZGV2aWNlICpkZXYsIGludCBhZGRyLCBpbnQgbWlpcmVnLCBpbnQgdmFsdWUpCiB7CiAJdTgg KmJhc2UgPSBnZXRfaHdiYXNlKGRldik7Ci0JaW50IHdhc19ydW5uaW5nOwogCXUzMiByZWc7 CiAJaW50IHJldHZhbDsKIAogCXdyaXRlbChOVlJFR19NSUlTVEFUX01BU0ssIGJhc2UgKyBO dlJlZ01JSVN0YXR1cyk7Ci0Jd2FzX3J1bm5pbmcgPSAwOwotCXJlZyA9IHJlYWRsKGJhc2Ug KyBOdlJlZ0FkYXB0ZXJDb250cm9sKTsKLQlpZiAocmVnICYgTlZSRUdfQURBUFRDVExfUlVO TklORykgewotCQl3YXNfcnVubmluZyA9IDE7Ci0JCXdyaXRlbChyZWcgJiB+TlZSRUdfQURB UFRDVExfUlVOTklORywgYmFzZSArIE52UmVnQWRhcHRlckNvbnRyb2wpOwotCX0KKwogCXJl ZyA9IHJlYWRsKGJhc2UgKyBOdlJlZ01JSUNvbnRyb2wpOwogCWlmIChyZWcgJiBOVlJFR19N SUlDVExfSU5VU0UpIHsKIAkJd3JpdGVsKE5WUkVHX01JSUNUTF9JTlVTRSwgYmFzZSArIE52 UmVnTUlJQ29udHJvbCk7CiAJCXVkZWxheShOVl9NSUlCVVNZX0RFTEFZKTsKIAl9CiAKLQly ZWcgPSBOVlJFR19NSUlDVExfSU5VU0UgfCAoYWRkciA8PCBOVlJFR19NSUlDVExfQUREUlNI SUZUKSB8IG1paXJlZzsKKwlyZWcgPSAoYWRkciA8PCBOVlJFR19NSUlDVExfQUREUlNISUZU KSB8IG1paXJlZzsKIAlpZiAodmFsdWUgIT0gTUlJX1JFQUQpIHsKIAkJd3JpdGVsKHZhbHVl LCBiYXNlICsgTnZSZWdNSUlEYXRhKTsKIAkJcmVnIHw9IE5WUkVHX01JSUNUTF9XUklURTsK QEAgLTQ2NiwxMyArNTM5LDEzNSBAQAogCQlkcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBtaWlf cncgcmVhZCBmcm9tIHJlZyAlZCBhdCBQSFkgJWQ6IDB4JXguXG4iLAogCQkJCWRldi0+bmFt ZSwgbWlpcmVnLCBhZGRyLCByZXR2YWwpOwogCX0KLQlpZiAod2FzX3J1bm5pbmcpIHsKLQkJ cmVnID0gcmVhZGwoYmFzZSArIE52UmVnQWRhcHRlckNvbnRyb2wpOwotCQl3cml0ZWwocmVn IHwgTlZSRUdfQURBUFRDVExfUlVOTklORywgYmFzZSArIE52UmVnQWRhcHRlckNvbnRyb2wp OwotCX0KKwogCXJldHVybiByZXR2YWw7CiB9CiAKK3N0YXRpYyBpbnQgcGh5X3Jlc2V0KHN0 cnVjdCBuZXRfZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGZlX3ByaXYgKm5wID0gZ2V0X252 cHJpdihkZXYpOworCXUzMiBtaWljb250cm9sOworCXUzMiBtaWNyb3NlY29uZHMgPSAwOwor CXUzMiBtaWxsaXNlY29uZHMgPSAwOworCisJbWlpY29udHJvbCA9IG1paV9ydyhkZXYsIG5w LT5waHlhZGRyLCBNSUlfQk1DUiwgTUlJX1JFQUQpOworCW1paWNvbnRyb2wgfD0gQk1DUl9S RVNFVDsKKwlpZiAobWlpX3J3KGRldiwgbnAtPnBoeWFkZHIsIE1JSV9CTUNSLCBtaWljb250 cm9sKSkgeworCQlyZXR1cm4gLTE7CisJfQorCisJLy93YWl0IGZvciA1MDBtcworCW1kZWxh eSg1MDApOworCisJLy9tdXN0IHdhaXQgdGlsbCByZXNldCBpcyBkZWFzc2VydGVkCisJd2hp bGUgKG1paWNvbnRyb2wgJiBCTUNSX1JFU0VUKSB7CisJCXVkZWxheShOVl9NSUlCVVNZX0RF TEFZKTsKKwkJbWlpY29udHJvbCA9IG1paV9ydyhkZXYsIG5wLT5waHlhZGRyLCBNSUlfQk1D UiwgTUlJX1JFQUQpOworCQltaWNyb3NlY29uZHMrKzsKKwkJaWYgKG1pY3Jvc2Vjb25kcyA9 PSAyMCkgeworCQkJbWljcm9zZWNvbmRzID0gMDsKKwkJCW1pbGxpc2Vjb25kcysrOworCQl9 CisJCWlmIChtaWxsaXNlY29uZHMgPiA1MCkKKwkJCXJldHVybiAtMTsKKwl9CisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgcGh5X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikK K3sKKwlzdHJ1Y3QgZmVfcHJpdiAqbnAgPSBnZXRfbnZwcml2KGRldik7CisJdTggKmJhc2Ug PSBnZXRfaHdiYXNlKGRldik7CisJdTMyIHBoeWludGVyZmFjZSwgcGh5X3Jlc2VydmVkLCBt aWlfc3RhdHVzLCBtaWlfY29udHJvbCwgbWlpX2NvbnRyb2xfMTAwMCxyZWc7CisJdTMyIG1p Y3Jvc2Vjb25kcyA9IDA7CisJdTMyIG1pbGxpc2Vjb25kcyA9IDA7CisKKwkvLyBzZXQgYWR2 ZXJ0aXNlIHJlZ2lzdGVyCisJcmVnID0gbWlpX3J3KGRldiwgbnAtPnBoeWFkZHIsIE1JSV9B RFZFUlRJU0UsIE1JSV9SRUFEKTsKKwlyZWcgfD0gKEFEVkVSVElTRV8xMEhBTEZ8QURWRVJU SVNFXzEwRlVMTHxBRFZFUlRJU0VfMTAwSEFMRnxBRFZFUlRJU0VfMTAwRlVMTHwweDgwMHww eDQwMCk7CisJaWYgKG1paV9ydyhkZXYsIG5wLT5waHlhZGRyLCBNSUlfQURWRVJUSVNFLCBy ZWcpKSB7CisJCXByaW50ayhLRVJOX0lORk8gIiVzOiBwaHkgd3JpdGUgdG8gYWR2ZXJ0aXNl IGZhaWxlZC5cbiIsIGRldi0+bmFtZSk7CisJCXJldHVybiBQSFlfRVJST1I7CisJfQorCisJ Ly8gZ2V0IHBoeSBpbnRlcmZhY2UgdHlwZQorCXBoeWludGVyZmFjZSA9IHJlYWRsKGJhc2Ug KyBOdlJlZ1BoeUludGVyZmFjZSk7CisKKwkvLyBzZWUgaWYgZ2lnYWJpdCBwaHkKKwltaWlf c3RhdHVzID0gbWlpX3J3KGRldiwgbnAtPnBoeWFkZHIsIE1JSV9CTVNSLCBNSUlfUkVBRCk7 CisJaWYgKG1paV9zdGF0dXMgJiBQSFlfR0lHQUJJVCkgeworCQlucC0+Z2lnYWJpdCA9IFBI WV9HSUdBQklUOworCQltaWlfY29udHJvbF8xMDAwID0gbWlpX3J3KGRldiwgbnAtPnBoeWFk ZHIsIE1JSV8xMDAwQlRfQ1IsIE1JSV9SRUFEKTsKKwkJbWlpX2NvbnRyb2xfMTAwMCAmPSB+ QURWRVJUSVNFXzEwMDBIQUxGOworCQlpZiAocGh5aW50ZXJmYWNlICYgUEhZX1JHTUlJKQor CQkJbWlpX2NvbnRyb2xfMTAwMCB8PSBBRFZFUlRJU0VfMTAwMEZVTEw7CisJCWVsc2UKKwkJ CW1paV9jb250cm9sXzEwMDAgJj0gfkFEVkVSVElTRV8xMDAwRlVMTDsKKworCQlpZiAobWlp X3J3KGRldiwgbnAtPnBoeWFkZHIsIE1JSV8xMDAwQlRfQ1IsIG1paV9jb250cm9sXzEwMDAp KSB7CisJCQlwcmludGsoS0VSTl9JTkZPICIlczogcGh5IGluaXQgZmFpbGVkLlxuIiwgZGV2 LT5uYW1lKTsKKwkJCXJldHVybiBQSFlfRVJST1I7CisJCX0KKwl9CisJZWxzZQorCQlucC0+ Z2lnYWJpdCA9IDA7CisKKwkvLyByZXNldCB0aGUgcGh5CisJaWYgKHBoeV9yZXNldChkZXYp KSB7CisJCXByaW50ayhLRVJOX0lORk8gIiVzOiBwaHkgcmVzZXQgZmFpbGVkXG4iLCBkZXYt Pm5hbWUpOworCQlyZXR1cm4gUEhZX0VSUk9SOworCX0KKworCS8vIHBoeSB2ZW5kb3Igc3Bl Y2lmaWMgY29uZmlndXJhdGlvbgorCWlmICgobnAtPnBoeV9vdWkgPT0gUEhZX09VSV9DSUNB REEpICYmIChwaHlpbnRlcmZhY2UgJiBQSFlfUkdNSUkpICkgeworCQlwaHlfcmVzZXJ2ZWQg PSBtaWlfcncoZGV2LCBucC0+cGh5YWRkciwgTUlJX1JFU1YxLCBNSUlfUkVBRCk7CisJCXBo eV9yZXNlcnZlZCAmPSB+KFBIWV9JTklUMSB8IFBIWV9JTklUMik7CisJCXBoeV9yZXNlcnZl ZCB8PSAoUEhZX0lOSVQzIHwgUEhZX0lOSVQ0KTsKKwkJaWYgKG1paV9ydyhkZXYsIG5wLT5w aHlhZGRyLCBNSUlfUkVTVjEsIHBoeV9yZXNlcnZlZCkpIHsKKwkJCXByaW50ayhLRVJOX0lO Rk8gIiVzOiBwaHkgaW5pdCBmYWlsZWQuXG4iLCBkZXYtPm5hbWUpOworCQkJcmV0dXJuIC0x OworCQl9CisJCXBoeV9yZXNlcnZlZCA9IG1paV9ydyhkZXYsIG5wLT5waHlhZGRyLCBNSUlf TkNPTkZJRywgTUlJX1JFQUQpOworCQlwaHlfcmVzZXJ2ZWQgfD0gUEhZX0lOSVQ1OworCQlp ZiAobWlpX3J3KGRldiwgbnAtPnBoeWFkZHIsIE1JSV9OQ09ORklHLCBwaHlfcmVzZXJ2ZWQp KSB7CisJCQlwcmludGsoS0VSTl9JTkZPICIlczogcGh5IGluaXQgZmFpbGVkLlxuIiwgZGV2 LT5uYW1lKTsKKwkJCXJldHVybiBQSFlfRVJST1I7CisJCX0KKwl9CisJaWYgKG5wLT5waHlf b3VpID09IFBIWV9PVUlfQ0lDQURBKSB7CisJCXBoeV9yZXNlcnZlZCA9IG1paV9ydyhkZXYs IG5wLT5waHlhZGRyLCBNSUlfU1JFVklTSU9OLCBNSUlfUkVBRCk7CisJCXBoeV9yZXNlcnZl ZCB8PSBQSFlfSU5JVDY7CisJCWlmIChtaWlfcncoZGV2LCBucC0+cGh5YWRkciwgTUlJX1NS RVZJU0lPTiwgcGh5X3Jlc2VydmVkKSkgeworCQkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IHBo eSBpbml0IGZhaWxlZC5cbiIsIGRldi0+bmFtZSk7CisJCQlyZXR1cm4gUEhZX0VSUk9SOwor CQl9CisJfQorCisJLy8gcmVzdGFydCBhdXRvIG5lZ290aWF0aW9uCisJbWlpX2NvbnRyb2wg PSBtaWlfcncoZGV2LCBucC0+cGh5YWRkciwgTUlJX0JNQ1IsIE1JSV9SRUFEKTsKKwltaWlf Y29udHJvbCB8PSAoQk1DUl9BTlJFU1RBUlQgfCBCTUNSX0FORU5BQkxFKTsKKwlpZiAobWlp X3J3KGRldiwgbnAtPnBoeWFkZHIsIE1JSV9CTUNSLCBtaWlfY29udHJvbCkpIHsKKwkJcmV0 dXJuIFBIWV9FUlJPUjsKKwl9CisKKwkvLyBjaGVjayBhdXRvIG5lZ290aWF0aW9uIGlzIGNv bXBsZXRlCisJbWlpX3N0YXR1cyA9IG1paV9ydyhkZXYsIG5wLT5waHlhZGRyLCBNSUlfQk1T UiwgTUlJX1JFQUQpOworCXdoaWxlICghKG1paV9zdGF0dXMgJiBCTVNSX0FORUdDT01QTEVU RSkpIHsKKwkJdWRlbGF5KE5WX01JSUJVU1lfREVMQVkpOworCQltaWlfc3RhdHVzID0gbWlp X3J3KGRldiwgbnAtPnBoeWFkZHIsIE1JSV9CTVNSLCBNSUlfUkVBRCk7CisJCW1pY3Jvc2Vj b25kcysrOworCQlpZiAobWljcm9zZWNvbmRzID09IDIwKSB7CisJCQltaWNyb3NlY29uZHMg PSAwOworCQkJbWlsbGlzZWNvbmRzKys7CisJCX0KKwkJaWYgKG1pbGxpc2Vjb25kcyA+IDEy MDApIHsKKwkJCXByaW50ayhLRVJOX0lORk8gIiVzOiBwaHkgaW5pdCBmYWlsZWQgdG8gYXV0 b25lZy5cbiIsIGRldi0+bmFtZSk7CisJCQlyZXR1cm4gUEhZX1RJTUVPVVQ7CisJCX0KKwl9 CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkIG52X3N0YXJ0X3J4KHN0cnVjdCBuZXRf ZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGZlX3ByaXYgKm5wID0gZ2V0X252cHJpdihkZXYp OwpAQCAtNTI5LDEzICs3MjQsMTQgQEAKIAogc3RhdGljIHZvaWQgbnZfdHhyeF9yZXNldChz dHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogeworCXN0cnVjdCBmZV9wcml2ICpucCA9IGdldF9u dnByaXYoZGV2KTsKIAl1OCAqYmFzZSA9IGdldF9od2Jhc2UoZGV2KTsKIAogCWRwcmludGso S0VSTl9ERUJVRyAiJXM6IG52X3R4cnhfcmVzZXRcbiIsIGRldi0+bmFtZSk7Ci0Jd3JpdGVs KE5WUkVHX1RYUlhDVExfQklUMiB8IE5WUkVHX1RYUlhDVExfUkVTRVQsIGJhc2UgKyBOdlJl Z1R4UnhDb250cm9sKTsKKwl3cml0ZWwoTlZSRUdfVFhSWENUTF9CSVQyIHwgTlZSRUdfVFhS WENUTF9SRVNFVCB8IG5wLT5kZXNjX3ZlciwgYmFzZSArIE52UmVnVHhSeENvbnRyb2wpOwog CXBjaV9wdXNoKGJhc2UpOwogCXVkZWxheShOVl9UWFJYX1JFU0VUX0RFTEFZKTsKLQl3cml0 ZWwoTlZSRUdfVFhSWENUTF9CSVQyLCBiYXNlICsgTnZSZWdUeFJ4Q29udHJvbCk7CisJd3Jp dGVsKE5WUkVHX1RYUlhDVExfQklUMiB8IG5wLT5kZXNjX3ZlciwgYmFzZSArIE52UmVnVHhS eENvbnRyb2wpOwogCXBjaV9wdXNoKGJhc2UpOwogfQogCkBAIC02NDksNiArODQ1LDUxIEBA CiBzdGF0aWMgaW50IG52X2FsbG9jX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CiAJ c3RydWN0IGZlX3ByaXYgKm5wID0gZ2V0X252cHJpdihkZXYpOworCWlmIChucC0+ZGVzY192 ZXIgPT0gREVTQ19WRVJfMSkKKwkJcmV0dXJuIG52X2FsbG9jX3J4X3YxKGRldik7CisJZWxz ZQorCQlyZXR1cm4gbnZfYWxsb2NfcnhfdjIoZGV2KTsKK30KKworc3RhdGljIGludCBudl9h bGxvY19yeF92MShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBmZV9wcml2 ICpucCA9IGdldF9udnByaXYoZGV2KTsKKwl1bnNpZ25lZCBpbnQgcmVmaWxsX3J4ID0gbnAt PnJlZmlsbF9yeDsKKworCXdoaWxlIChucC0+Y3VyX3J4ICE9IHJlZmlsbF9yeCkgeworCQlp bnQgbnIgPSByZWZpbGxfcnggJSBSWF9SSU5HOworCQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwor CisJCWlmIChucC0+cnhfc2tidWZmW25yXSA9PSBOVUxMKSB7CisKKwkJCXNrYiA9IGRldl9h bGxvY19za2IoUlhfQUxMT0NfQlVGU0laRSk7CisJCQlpZiAoIXNrYikKKwkJCQlicmVhazsK KworCQkJc2tiLT5kZXYgPSBkZXY7CisJCQlucC0+cnhfc2tidWZmW25yXSA9IHNrYjsKKwkJ fSBlbHNlIHsKKwkJCXNrYiA9IG5wLT5yeF9za2J1ZmZbbnJdOworCQl9CisJCW5wLT5yeF9k bWFbbnJdID0gcGNpX21hcF9zaW5nbGUobnAtPnBjaV9kZXYsIHNrYi0+ZGF0YSwgc2tiLT5s ZW4sCisJCQkJCQlQQ0lfRE1BX0ZST01ERVZJQ0UpOworCQlucC0+cnhfcmluZ1tucl0uUGFj a2V0QnVmZmVyID0gY3B1X3RvX2xlMzIobnAtPnJ4X2RtYVtucl0pOworCQlucC0+cnhfcmlu Z1tucl0udS52MS5MZW5ndGggPSBjcHVfdG9fbGUxNihSWF9OSUNfQlVGU0laRSk7CisJCXdt YigpOworCQlucC0+cnhfcmluZ1tucl0udS52MS5GbGFncyA9IGNwdV90b19sZTE2KE5WX1JY X0FWQUlMKTsKKwkJZHByaW50ayhLRVJOX0RFQlVHICIlczogbnZfYWxsb2Nfcng6IFBhY2tl dCAlZCBtYXJrZWQgYXMgQXZhaWxhYmxlXG4iLAorCQkJCQlkZXYtPm5hbWUsIHJlZmlsbF9y eCk7CisJCXJlZmlsbF9yeCsrOworCX0KKwlucC0+cmVmaWxsX3J4ID0gcmVmaWxsX3J4Owor CWlmIChucC0+Y3VyX3J4IC0gcmVmaWxsX3J4ID09IFJYX1JJTkcpCisJCXJldHVybiAxOwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG52X2FsbG9jX3J4X3YyKHN0cnVjdCBuZXRf ZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGZlX3ByaXYgKm5wID0gZ2V0X252cHJpdihkZXYp OwogCXVuc2lnbmVkIGludCByZWZpbGxfcnggPSBucC0+cmVmaWxsX3J4OwogCiAJd2hpbGUg KG5wLT5jdXJfcnggIT0gcmVmaWxsX3J4KSB7CkBAIC02NjksOSArOTEwLDkgQEAKIAkJbnAt PnJ4X2RtYVtucl0gPSBwY2lfbWFwX3NpbmdsZShucC0+cGNpX2Rldiwgc2tiLT5kYXRhLCBz a2ItPmxlbiwKIAkJCQkJCVBDSV9ETUFfRlJPTURFVklDRSk7CiAJCW5wLT5yeF9yaW5nW25y XS5QYWNrZXRCdWZmZXIgPSBjcHVfdG9fbGUzMihucC0+cnhfZG1hW25yXSk7Ci0JCW5wLT5y eF9yaW5nW25yXS5MZW5ndGggPSBjcHVfdG9fbGUxNihSWF9OSUNfQlVGU0laRSk7CisJCW5w LT5yeF9yaW5nW25yXS51LnYyLkxlbmd0aCA9IGNwdV90b19sZTE2KFJYX05JQ19CVUZTSVpF KTsKIAkJd21iKCk7Ci0JCW5wLT5yeF9yaW5nW25yXS5GbGFncyA9IGNwdV90b19sZTE2KE5W X1JYX0FWQUlMKTsKKwkJbnAtPnJ4X3JpbmdbbnJdLnUudjIuRmxhZ3MgPSBjcHVfdG9fbGUz MihOVl9SWDJfQVZBSUwpOwogCQlkcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBudl9hbGxvY19y eDogUGFja2V0ICAlZCBtYXJrZWQgYXMgQXZhaWxhYmxlXG4iLAogCQkJCQlkZXYtPm5hbWUs IHJlZmlsbF9yeCk7CiAJCXJlZmlsbF9yeCsrOwpAQCAtNzA0LDEzICs5NDUsMTkgQEAKIAog CW5wLT5uZXh0X3R4ID0gbnAtPm5pY190eCA9IDA7CiAJZm9yIChpID0gMDsgaSA8IFRYX1JJ Tkc7IGkrKykgewotCQlucC0+dHhfcmluZ1tpXS5GbGFncyA9IDA7CisJCWlmIChucC0+ZGVz Y192ZXIgPT0gREVTQ19WRVJfMSkKKwkJCW5wLT50eF9yaW5nW2ldLnUudjEuRmxhZ3MgPSAw OworCQllbHNlCisJCQlucC0+dHhfcmluZ1tpXS51LnYyLkZsYWdzID0gMDsKIAl9CiAKIAlu cC0+Y3VyX3J4ID0gUlhfUklORzsKIAlucC0+cmVmaWxsX3J4ID0gMDsKIAlmb3IgKGkgPSAw OyBpIDwgUlhfUklORzsgaSsrKSB7Ci0JCW5wLT5yeF9yaW5nW2ldLkZsYWdzID0gMDsKKwkJ aWYgKG5wLT5kZXNjX3ZlciA9PSBERVNDX1ZFUl8xKQorCQkJbnAtPnJ4X3JpbmdbaV0udS52 MS5GbGFncyA9IDA7CisJCWVsc2UKKwkJCW5wLT5yeF9yaW5nW2ldLnUudjIuRmxhZ3MgPSAw OwogCX0KIAlyZXR1cm4gbnZfYWxsb2NfcngoZGV2KTsKIH0KQEAgLTcyMCw3ICs5NjcsMTAg QEAKIAlzdHJ1Y3QgZmVfcHJpdiAqbnAgPSBnZXRfbnZwcml2KGRldik7CiAJaW50IGk7CiAJ Zm9yIChpID0gMDsgaSA8IFRYX1JJTkc7IGkrKykgewotCQlucC0+dHhfcmluZ1tpXS5GbGFn cyA9IDA7CisJCWlmIChucC0+ZGVzY192ZXIgPT0gREVTQ19WRVJfMSkKKwkJCW5wLT50eF9y aW5nW2ldLnUudjEuRmxhZ3MgPSAwOworCQllbHNlCisJCQlucC0+dHhfcmluZ1tpXS51LnYy LkZsYWdzID0gMDsKIAkJaWYgKG5wLT50eF9za2J1ZmZbaV0pIHsKIAkJCXBjaV91bm1hcF9z aW5nbGUobnAtPnBjaV9kZXYsIG5wLT50eF9kbWFbaV0sCiAJCQkJCQlucC0+dHhfc2tidWZm W2ldLT5sZW4sCkBAIC03MzcsNyArOTg3LDEwIEBACiAJc3RydWN0IGZlX3ByaXYgKm5wID0g Z2V0X252cHJpdihkZXYpOwogCWludCBpOwogCWZvciAoaSA9IDA7IGkgPCBSWF9SSU5HOyBp KyspIHsKLQkJbnAtPnJ4X3JpbmdbaV0uRmxhZ3MgPSAwOworCQlpZiAobnAtPmRlc2NfdmVy ID09IERFU0NfVkVSXzEpCisJCQlucC0+cnhfcmluZ1tpXS51LnYxLkZsYWdzID0gMDsKKwkJ ZWxzZQorCQkJbnAtPnJ4X3JpbmdbaV0udS52Mi5GbGFncyA9IDA7CiAJCXdtYigpOwogCQlp ZiAobnAtPnJ4X3NrYnVmZltpXSkgewogCQkJcGNpX3VubWFwX3NpbmdsZShucC0+cGNpX2Rl diwgbnAtPnJ4X2RtYVtpXSwKQEAgLTc2Miw2ICsxMDE1LDE1IEBACiBzdGF0aWMgaW50IG52 X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRl dikKIHsKIAlzdHJ1Y3QgZmVfcHJpdiAqbnAgPSBnZXRfbnZwcml2KGRldik7CisJaWYgKG5w LT5kZXNjX3ZlciA9PSBERVNDX1ZFUl8xKQorCQlyZXR1cm4gbnZfc3RhcnRfeG1pdF92MShz a2IsIGRldik7CisJZWxzZQorCQlyZXR1cm4gbnZfc3RhcnRfeG1pdF92Mihza2IsIGRldik7 Cit9CisKK3N0YXRpYyBpbnQgbnZfc3RhcnRfeG1pdF92MShzdHJ1Y3Qgc2tfYnVmZiAqc2ti LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQoreworCXN0cnVjdCBmZV9wcml2ICpucCA9IGdl dF9udnByaXYoZGV2KTsKIAlpbnQgbnIgPSBucC0+bmV4dF90eCAlIFRYX1JJTkc7CiAKIAlu cC0+dHhfc2tidWZmW25yXSA9IHNrYjsKQEAgLTc2OSwxMSArMTAzMSwxMSBAQAogCQkJCQlQ Q0lfRE1BX1RPREVWSUNFKTsKIAogCW5wLT50eF9yaW5nW25yXS5QYWNrZXRCdWZmZXIgPSBj cHVfdG9fbGUzMihucC0+dHhfZG1hW25yXSk7Ci0JbnAtPnR4X3JpbmdbbnJdLkxlbmd0aCA9 IGNwdV90b19sZTE2KHNrYi0+bGVuLTEpOworCW5wLT50eF9yaW5nW25yXS51LnYxLkxlbmd0 aCA9IGNwdV90b19sZTE2KHNrYi0+bGVuLTEpOwogCiAJc3Bpbl9sb2NrX2lycSgmbnAtPmxv Y2spOwogCXdtYigpOwotCW5wLT50eF9yaW5nW25yXS5GbGFncyA9IG5wLT50eF9mbGFnczsK KwlucC0+dHhfcmluZ1tucl0udS52MS5GbGFncyA9IG5wLT50eF9mbGFnczsKIAlkcHJpbnRr KEtFUk5fREVCVUcgIiVzOiBudl9zdGFydF94bWl0OiBwYWNrZXQgcGFja2V0ICVkIHF1ZXVl ZCBmb3IgdHJhbnNtaXNzaW9uLlxuIiwKIAkJCQlkZXYtPm5hbWUsIG5wLT5uZXh0X3R4KTsK IAl7CkBAIC03OTIsNyArMTA1NCw0NSBAQAogCWlmIChucC0+bmV4dF90eCAtIG5wLT5uaWNf dHggPj0gVFhfTElNSVRfU1RPUCkKIAkJbmV0aWZfc3RvcF9xdWV1ZShkZXYpOwogCXNwaW5f dW5sb2NrX2lycSgmbnAtPmxvY2spOwotCXdyaXRlbChOVlJFR19UWFJYQ1RMX0tJQ0ssIGdl dF9od2Jhc2UoZGV2KSArIE52UmVnVHhSeENvbnRyb2wpOworCXdyaXRlbChOVlJFR19UWFJY Q1RMX0tJQ0t8bnAtPmRlc2NfdmVyLCBnZXRfaHdiYXNlKGRldikgKyBOdlJlZ1R4UnhDb250 cm9sKTsKKwlwY2lfcHVzaChnZXRfaHdiYXNlKGRldikpOworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IG52X3N0YXJ0X3htaXRfdjIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0 IG5ldF9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZmVfcHJpdiAqbnAgPSBnZXRfbnZwcml2 KGRldik7CisJaW50IG5yID0gbnAtPm5leHRfdHggJSBUWF9SSU5HOworCisJbnAtPnR4X3Nr YnVmZltucl0gPSBza2I7CisJbnAtPnR4X2RtYVtucl0gPSBwY2lfbWFwX3NpbmdsZShucC0+ cGNpX2Rldiwgc2tiLT5kYXRhLHNrYi0+bGVuLAorCQkJCQlQQ0lfRE1BX1RPREVWSUNFKTsK KworCW5wLT50eF9yaW5nW25yXS5QYWNrZXRCdWZmZXIgPSBjcHVfdG9fbGUzMihucC0+dHhf ZG1hW25yXSk7CisJbnAtPnR4X3JpbmdbbnJdLnUudjIuTGVuZ3RoID0gY3B1X3RvX2xlMTYo c2tiLT5sZW4tMSk7CisKKwlzcGluX2xvY2tfaXJxKCZucC0+bG9jayk7CisJd21iKCk7CisJ bnAtPnR4X3JpbmdbbnJdLnUudjIuRmxhZ3MgPSBucC0+dHhfZmxhZ3M7CisJZHByaW50ayhL RVJOX0RFQlVHICIlczogbnZfc3RhcnRfeG1pdDogcGFja2V0IHBhY2tldCAlZCBxdWV1ZWQg Zm9yIHRyYW5zbWlzc2lvbi5cbiIsCisJCQkJZGV2LT5uYW1lLCBucC0+bmV4dF90eCk7CisJ eworCQlpbnQgajsKKwkJZm9yIChqPTA7IGo8NjQ7IGorKykgeworCQkJaWYgKChqJTE2KSA9 PSAwKQorCQkJCWRwcmludGsoIlxuJTAzeDoiLCBqKTsKKwkJCWRwcmludGsoIiAlMDJ4Iiwg KCh1bnNpZ25lZCBjaGFyKilza2ItPmRhdGEpW2pdKTsKKwkJfQorCQlkcHJpbnRrKCJcbiIp OworCX0KKworCW5wLT5uZXh0X3R4Kys7CisKKwlkZXYtPnRyYW5zX3N0YXJ0ID0gamlmZmll czsKKwlpZiAobnAtPm5leHRfdHggLSBucC0+bmljX3R4ID49IFRYX0xJTUlUX1NUT1ApCisJ CW5ldGlmX3N0b3BfcXVldWUoZGV2KTsKKwlzcGluX3VubG9ja19pcnEoJm5wLT5sb2NrKTsK Kwl3cml0ZWwoTlZSRUdfVFhSWENUTF9LSUNLfG5wLT5kZXNjX3ZlciwgZ2V0X2h3YmFzZShk ZXYpICsgTnZSZWdUeFJ4Q29udHJvbCk7CiAJcGNpX3B1c2goZ2V0X2h3YmFzZShkZXYpKTsK IAlyZXR1cm4gMDsKIH0KQEAgLTgwNSwyMiArMTEwNSw2NiBAQAogc3RhdGljIHZvaWQgbnZf dHhfZG9uZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBmZV9wcml2ICpu cCA9IGdldF9udnByaXYoZGV2KTsKKwlpZiAobnAtPmRlc2NfdmVyID09IERFU0NfVkVSXzEp CisJCXJldHVybiBudl90eF9kb25lX3YxKGRldik7CisJZWxzZQorCQlyZXR1cm4gbnZfdHhf ZG9uZV92MihkZXYpOworfQorCitzdGF0aWMgdm9pZCBudl90eF9kb25lX3YxKHN0cnVjdCBu ZXRfZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGZlX3ByaXYgKm5wID0gZ2V0X252cHJpdihk ZXYpOwogCi0Jd2hpbGUgKG5wLT5uaWNfdHggPCBucC0+bmV4dF90eCkgeworCXdoaWxlIChu cC0+bmljX3R4ICE9IG5wLT5uZXh0X3R4KSB7CiAJCXN0cnVjdCByaW5nX2Rlc2MgKnByZDsK IAkJaW50IGkgPSBucC0+bmljX3R4ICUgVFhfUklORzsKIAogCQlwcmQgPSAmbnAtPnR4X3Jp bmdbaV07CiAKIAkJZHByaW50ayhLRVJOX0RFQlVHICIlczogbnZfdHhfZG9uZTogbG9va2lu ZyBhdCBwYWNrZXQgJWQsIEZsYWdzIDB4JXguXG4iLAotCQkJCQlkZXYtPm5hbWUsIG5wLT5u aWNfdHgsIHByZC0+RmxhZ3MpOwotCQlpZiAocHJkLT5GbGFncyAmIGNwdV90b19sZTE2KE5W X1RYX1ZBTElEKSkKKwkJCQkJZGV2LT5uYW1lLCBucC0+bmljX3R4LCBwcmQtPnUudjEuRmxh Z3MpOworCQlpZiAocHJkLT51LnYxLkZsYWdzICYgY3B1X3RvX2xlMTYoTlZfVFhfVkFMSUQp KQogCQkJYnJlYWs7Ci0JCWlmIChwcmQtPkZsYWdzICYgY3B1X3RvX2xlMTYoTlZfVFhfUkVU UllFUlJPUnxOVl9UWF9DQVJSSUVSTE9TVHxOVl9UWF9MQVRFQ09MTElTSU9OfAorCQlpZiAo cHJkLT51LnYxLkZsYWdzICYgY3B1X3RvX2xlMTYoTlZfVFhfUkVUUllFUlJPUnxOVl9UWF9D QVJSSUVSTE9TVHxOVl9UWF9MQVRFQ09MTElTSU9OfAogCQkJCQkJTlZfVFhfVU5ERVJGTE9X fE5WX1RYX0VSUk9SKSkgewotCQkJaWYgKHByZC0+RmxhZ3MgJiBjcHVfdG9fbGUxNihOVl9U WF9VTkRFUkZMT1cpKQorCQkJaWYgKHByZC0+dS52MS5GbGFncyAmIGNwdV90b19sZTE2KE5W X1RYX1VOREVSRkxPVykpCiAJCQkJbnAtPnN0YXRzLnR4X2ZpZm9fZXJyb3JzKys7Ci0JCQlp ZiAocHJkLT5GbGFncyAmIGNwdV90b19sZTE2KE5WX1RYX0NBUlJJRVJMT1NUKSkKKwkJCWlm IChwcmQtPnUudjEuRmxhZ3MgJiBjcHVfdG9fbGUxNihOVl9UWF9DQVJSSUVSTE9TVCkpCisJ CQkJbnAtPnN0YXRzLnR4X2NhcnJpZXJfZXJyb3JzKys7CisJCQlucC0+c3RhdHMudHhfZXJy b3JzKys7CisJCX0gZWxzZSB7CisJCQlucC0+c3RhdHMudHhfcGFja2V0cysrOworCQkJbnAt PnN0YXRzLnR4X2J5dGVzICs9IG5wLT50eF9za2J1ZmZbaV0tPmxlbjsKKwkJfQorCQlwY2lf dW5tYXBfc2luZ2xlKG5wLT5wY2lfZGV2LCBucC0+dHhfZG1hW2ldLAorCQkJCQlucC0+dHhf c2tidWZmW2ldLT5sZW4sCisJCQkJCVBDSV9ETUFfVE9ERVZJQ0UpOworCQlkZXZfa2ZyZWVf c2tiX2lycShucC0+dHhfc2tidWZmW2ldKTsKKwkJbnAtPnR4X3NrYnVmZltpXSA9IE5VTEw7 CisJCW5wLT5uaWNfdHgrKzsKKwl9CisJaWYgKG5wLT5uZXh0X3R4IC0gbnAtPm5pY190eCA8 IFRYX0xJTUlUX1NUQVJUKQorCQluZXRpZl93YWtlX3F1ZXVlKGRldik7Cit9CitzdGF0aWMg dm9pZCBudl90eF9kb25lX3YyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCit7CisJc3RydWN0 IGZlX3ByaXYgKm5wID0gZ2V0X252cHJpdihkZXYpOworCisJd2hpbGUgKG5wLT5uaWNfdHgg IT0gbnAtPm5leHRfdHgpIHsKKwkJc3RydWN0IHJpbmdfZGVzYyAqcHJkOworCQlpbnQgaSA9 IG5wLT5uaWNfdHggJSBUWF9SSU5HOworCisJCXByZCA9ICZucC0+dHhfcmluZ1tpXTsKKwor CQlkcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBudl90eF9kb25lOiBsb29raW5nIGF0IHBhY2tl dCAlZCwgRmxhZ3MgMHgleC5cbiIsCisJCQkJCWRldi0+bmFtZSwgbnAtPm5pY190eCwgcHJk LT51LnYyLkZsYWdzKTsKKwkJaWYgKHByZC0+dS52Mi5GbGFncyAmIGNwdV90b19sZTMyKE5W X1RYMl9WQUxJRCkpCisJCQlicmVhazsKKwkJaWYgKHByZC0+dS52Mi5GbGFncyAmIGNwdV90 b19sZTMyKE5WX1RYMl9SRVRSWUVSUk9SfE5WX1RYMl9DQVJSSUVSTE9TVHxOVl9UWDJfTEFU RUNPTExJU0lPTnwKKwkJCQkJCU5WX1RYMl9VTkRFUkZMT1d8TlZfVFgyX0VSUk9SKSkgewor CQkJaWYgKHByZC0+dS52Mi5GbGFncyAmIGNwdV90b19sZTMyKE5WX1RYMl9VTkRFUkZMT1cp KQorCQkJCW5wLT5zdGF0cy50eF9maWZvX2Vycm9ycysrOworCQkJaWYgKHByZC0+dS52Mi5G bGFncyAmIGNwdV90b19sZTMyKE5WX1RYMl9DQVJSSUVSTE9TVCkpCiAJCQkJbnAtPnN0YXRz LnR4X2NhcnJpZXJfZXJyb3JzKys7CiAJCQlucC0+c3RhdHMudHhfZXJyb3JzKys7CiAJCX0g ZWxzZSB7CkBAIC04NzUsNiArMTIxOSwxNSBAQAogc3RhdGljIHZvaWQgbnZfcnhfcHJvY2Vz cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBmZV9wcml2ICpucCA9IGdl dF9udnByaXYoZGV2KTsKKwlpZiAobnAtPmRlc2NfdmVyID09IERFU0NfVkVSXzEpCisJCXJl dHVybiBudl9yeF9wcm9jZXNzX3YxKGRldik7CisJZWxzZQorCQlyZXR1cm4gbnZfcnhfcHJv Y2Vzc192MihkZXYpOworfQorCitzdGF0aWMgdm9pZCBudl9yeF9wcm9jZXNzX3YxKHN0cnVj dCBuZXRfZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGZlX3ByaXYgKm5wID0gZ2V0X252cHJp dihkZXYpOwogCiAJZm9yICg7OykgewogCQlzdHJ1Y3QgcmluZ19kZXNjICpwcmQ7CkBAIC04 ODcsOSArMTI0MCw5IEBACiAJCWkgPSBucC0+Y3VyX3J4ICUgUlhfUklORzsKIAkJcHJkID0g Jm5wLT5yeF9yaW5nW2ldOwogCQlkcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBudl9yeF9wcm9j ZXNzOiBsb29raW5nIGF0IHBhY2tldCAlZCwgRmxhZ3MgMHgleC5cbiIsCi0JCQkJCWRldi0+ bmFtZSwgbnAtPmN1cl9yeCwgcHJkLT5GbGFncyk7CisJCQkJCWRldi0+bmFtZSwgbnAtPmN1 cl9yeCwgcHJkLT51LnYxLkZsYWdzKTsKIAotCQlpZiAocHJkLT5GbGFncyAmIGNwdV90b19s ZTE2KE5WX1JYX0FWQUlMKSkKKwkJaWYgKHByZC0+dS52MS5GbGFncyAmIGNwdV90b19sZTE2 KE5WX1JYX0FWQUlMKSkKIAkJCWJyZWFrOwkvKiBzdGlsbCBvd25lZCBieSBoYXJkd2FyZSwg Ki8KIAogCQkvKgpAQCAtOTAzLDcgKzEyNTYsNyBAQAogCiAJCXsKIAkJCWludCBqOwotCQkJ ZHByaW50ayhLRVJOX0RFQlVHICJEdW1waW5nIHBhY2tldCAoZmxhZ3MgMHgleCkuIixwcmQt PkZsYWdzKTsKKwkJCWRwcmludGsoS0VSTl9ERUJVRyAiRHVtcGluZyBwYWNrZXQgKGZsYWdz IDB4JXgpLiIscHJkLT51LnYxLkZsYWdzKTsKIAkJCWZvciAoaj0wOyBqPDY0OyBqKyspIHsK IAkJCQlpZiAoKGolMTYpID09IDApCiAJCQkJCWRwcmludGsoIlxuJTAzeDoiLCBqKTsKQEAg LTkxMiwzNSArMTI2NSwxMjMgQEAKIAkJCWRwcmludGsoIlxuIik7CiAJCX0KIAkJLyogbG9v ayBhdCB3aGF0IHdlIGFjdHVhbGx5IGdvdDogKi8KLQkJaWYgKCEocHJkLT5GbGFncyAmIGNw dV90b19sZTE2KE5WX1JYX0RFU0NSSVBUT1JWQUxJRCkpKQorCQlpZiAoIShwcmQtPnUudjEu RmxhZ3MgJiBjcHVfdG9fbGUxNihOVl9SWF9ERVNDUklQVE9SVkFMSUQpKSkKIAkJCWdvdG8g bmV4dF9wa3Q7CiAKIAotCQlsZW4gPSBsZTE2X3RvX2NwdShwcmQtPkxlbmd0aCk7CisJCWxl biA9IGxlMTZfdG9fY3B1KHByZC0+dS52MS5MZW5ndGgpOwogCi0JCWlmIChwcmQtPkZsYWdz ICYgY3B1X3RvX2xlMTYoTlZfUlhfTUlTU0VERlJBTUUpKSB7CisJCWlmIChwcmQtPnUudjEu RmxhZ3MgJiBjcHVfdG9fbGUxNihOVl9SWF9NSVNTRURGUkFNRSkpIHsKIAkJCW5wLT5zdGF0 cy5yeF9taXNzZWRfZXJyb3JzKys7CiAJCQlucC0+c3RhdHMucnhfZXJyb3JzKys7CiAJCQln b3RvIG5leHRfcGt0OwogCQl9Ci0JCWlmIChwcmQtPkZsYWdzICYgY3B1X3RvX2xlMTYoTlZf UlhfRVJST1IxfE5WX1JYX0VSUk9SMnxOVl9SWF9FUlJPUjN8TlZfUlhfRVJST1I0KSkgewor CQlpZiAocHJkLT51LnYxLkZsYWdzICYgY3B1X3RvX2xlMTYoTlZfUlhfRVJST1IxfE5WX1JY X0VSUk9SMnxOVl9SWF9FUlJPUjN8TlZfUlhfRVJST1I0KSkgewogCQkJbnAtPnN0YXRzLnJ4 X2Vycm9ycysrOwogCQkJZ290byBuZXh0X3BrdDsKIAkJfQotCQlpZiAocHJkLT5GbGFncyAm IGNwdV90b19sZTE2KE5WX1JYX0NSQ0VSUikpIHsKKwkJaWYgKHByZC0+dS52MS5GbGFncyAm IGNwdV90b19sZTE2KE5WX1JYX0NSQ0VSUikpIHsKIAkJCW5wLT5zdGF0cy5yeF9jcmNfZXJy b3JzKys7CiAJCQlucC0+c3RhdHMucnhfZXJyb3JzKys7CiAJCQlnb3RvIG5leHRfcGt0Owog CQl9Ci0JCWlmIChwcmQtPkZsYWdzICYgY3B1X3RvX2xlMTYoTlZfUlhfT1ZFUkZMT1cpKSB7 CisJCWlmIChwcmQtPnUudjEuRmxhZ3MgJiBjcHVfdG9fbGUxNihOVl9SWF9PVkVSRkxPVykp IHsKIAkJCW5wLT5zdGF0cy5yeF9vdmVyX2Vycm9ycysrOwogCQkJbnAtPnN0YXRzLnJ4X2Vy cm9ycysrOwogCQkJZ290byBuZXh0X3BrdDsKIAkJfQotCQlpZiAocHJkLT5GbGFncyAmIGNw dV90b19sZTE2KE5WX1JYX0VSUk9SKSkgeworCQlpZiAocHJkLT51LnYxLkZsYWdzICYgY3B1 X3RvX2xlMTYoTlZfUlhfRVJST1IpKSB7CiAJCQkvKiBmcmFtaW5nIGVycm9ycyBhcmUgc29m dCBlcnJvcnMsIHRoZSByZXN0IGlzIGZhdGFsLiAqLwotCQkJaWYgKHByZC0+RmxhZ3MgJiBj cHVfdG9fbGUxNihOVl9SWF9GUkFNSU5HRVJSKSkgewotCQkJCWlmIChwcmQtPkZsYWdzICYg Y3B1X3RvX2xlMTYoTlZfUlhfU1VCU1RSQUNUMSkpIHsKKwkJCWlmIChwcmQtPnUudjEuRmxh Z3MgJiBjcHVfdG9fbGUxNihOVl9SWF9GUkFNSU5HRVJSKSkgeworCQkJCWlmIChwcmQtPnUu djEuRmxhZ3MgJiBjcHVfdG9fbGUxNihOVl9SWF9TVUJTVFJBQ1QxKSkgeworCQkJCQlsZW4t LTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCW5wLT5zdGF0cy5yeF9lcnJvcnMrKzsKKwkJ CQlnb3RvIG5leHRfcGt0OworCQkJfQorCQl9CisJCS8qIGdvdCBhIHZhbGlkIHBhY2tldCAt IGZvcndhcmQgaXQgdG8gdGhlIG5ldHdvcmsgY29yZSAqLworCQlza2IgPSBucC0+cnhfc2ti dWZmW2ldOworCQlucC0+cnhfc2tidWZmW2ldID0gTlVMTDsKKworCQlza2JfcHV0KHNrYiwg bGVuKTsKKwkJc2tiLT5wcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgZGV2KTsKKwkJ ZHByaW50ayhLRVJOX0RFQlVHICIlczogbnZfcnhfcHJvY2VzczogcGFja2V0ICVkIHdpdGgg JWQgYnl0ZXMsIHByb3RvICVkIGFjY2VwdGVkLlxuIiwKKwkJCQkJZGV2LT5uYW1lLCBucC0+ Y3VyX3J4LCBsZW4sIHNrYi0+cHJvdG9jb2wpOworCQluZXRpZl9yeChza2IpOworCQlkZXYt Pmxhc3RfcnggPSBqaWZmaWVzOworCQlucC0+c3RhdHMucnhfcGFja2V0cysrOworCQlucC0+ c3RhdHMucnhfYnl0ZXMgKz0gbGVuOworbmV4dF9wa3Q6CisJCW5wLT5jdXJfcngrKzsKKwl9 Cit9CisKK3N0YXRpYyB2b2lkIG52X3J4X3Byb2Nlc3NfdjIoc3RydWN0IG5ldF9kZXZpY2Ug KmRldikKK3sKKwlzdHJ1Y3QgZmVfcHJpdiAqbnAgPSBnZXRfbnZwcml2KGRldik7CisKKwlm b3IgKDs7KSB7CisJCXN0cnVjdCByaW5nX2Rlc2MgKnByZDsKKwkJc3RydWN0IHNrX2J1ZmYg KnNrYjsKKwkJaW50IGxlbjsKKwkJaW50IGk7CisJCWlmIChucC0+Y3VyX3J4IC0gbnAtPnJl ZmlsbF9yeCA+PSBSWF9SSU5HKQorCQkJYnJlYWs7CS8qIHdlIHNjYW5uZWQgdGhlIHdob2xl IHJpbmcgLSBkbyBub3QgY29udGludWUgKi8KKworCQlpID0gbnAtPmN1cl9yeCAlIFJYX1JJ Tkc7CisJCXByZCA9ICZucC0+cnhfcmluZ1tpXTsKKwkJZHByaW50ayhLRVJOX0RFQlVHICIl czogbnZfcnhfcHJvY2VzczogbG9va2luZyBhdCBwYWNrZXQgJWQsIEZsYWdzIDB4JXguXG4i LAorCQkJCQlkZXYtPm5hbWUsIG5wLT5jdXJfcngsIHByZC0+dS52Mi5GbGFncyk7CisKKwkJ aWYgKHByZC0+dS52Mi5GbGFncyAmIGNwdV90b19sZTMyKE5WX1JYMl9BVkFJTCkpCisJCQli cmVhazsJLyogc3RpbGwgb3duZWQgYnkgaGFyZHdhcmUsICovCisKKwkJLyoKKwkJICogdGhl IHBhY2tldCBpcyBmb3IgdXMgLSBpbW1lZGlhdGVseSB0ZWFyIGRvd24gdGhlIHBjaSBtYXBw aW5nLgorCQkgKiBUT0RPOiBjaGVjayBpZiBhIHByZWZldGNoIG9mIHRoZSBmaXJzdCBjYWNo ZWxpbmUgaW1wcm92ZXMKKwkJICogdGhlIHBlcmZvcm1hbmNlLgorCQkgKi8KKwkJcGNpX3Vu bWFwX3NpbmdsZShucC0+cGNpX2RldiwgbnAtPnJ4X2RtYVtpXSwKKwkJCQlucC0+cnhfc2ti dWZmW2ldLT5sZW4sCisJCQkJUENJX0RNQV9GUk9NREVWSUNFKTsKKworCQl7CisJCQlpbnQg ajsKKwkJCWRwcmludGsoS0VSTl9ERUJVRyAiRHVtcGluZyBwYWNrZXQgKGZsYWdzIDB4JXgp LiIscHJkLT51LnYyLkZsYWdzKTsKKwkJCWZvciAoaj0wOyBqPDY0OyBqKyspIHsKKwkJCQlp ZiAoKGolMTYpID09IDApCisJCQkJCWRwcmludGsoIlxuJTAzeDoiLCBqKTsKKwkJCQlkcHJp bnRrKCIgJTAyeCIsICgodW5zaWduZWQgY2hhciopbnAtPnJ4X3NrYnVmZltpXS0+ZGF0YSlb al0pOworCQkJfQorCQkJZHByaW50aygiXG4iKTsKKwkJfQorCQkvKiBsb29rIGF0IHdoYXQg d2UgYWN0dWFsbHkgZ290OiAqLworCQlpZiAoIShwcmQtPnUudjIuRmxhZ3MgJiBjcHVfdG9f bGUzMihOVl9SWDJfREVTQ1JJUFRPUlZBTElEKSkpCisJCQlnb3RvIG5leHRfcGt0OworCisK KwkJbGVuID0gbGUxNl90b19jcHUocHJkLT51LnYyLkxlbmd0aCk7CisKKwkJaWYgKHByZC0+ dS52Mi5GbGFncyAmIGNwdV90b19sZTMyKE5WX1JYMl9FUlJPUjF8TlZfUlgyX0VSUk9SMnxO Vl9SWDJfRVJST1IzfE5WX1JYMl9FUlJPUjQpKSB7CisJCQlucC0+c3RhdHMucnhfZXJyb3Jz Kys7CisJCQlnb3RvIG5leHRfcGt0OworCQl9CisJCWlmIChwcmQtPnUudjIuRmxhZ3MgJiBj cHVfdG9fbGUzMihOVl9SWDJfQ1JDRVJSKSkgeworCQkJbnAtPnN0YXRzLnJ4X2NyY19lcnJv cnMrKzsKKwkJCW5wLT5zdGF0cy5yeF9lcnJvcnMrKzsKKwkJCWdvdG8gbmV4dF9wa3Q7CisJ CX0KKwkJaWYgKHByZC0+dS52Mi5GbGFncyAmIGNwdV90b19sZTMyKE5WX1JYMl9PVkVSRkxP VykpIHsKKwkJCW5wLT5zdGF0cy5yeF9vdmVyX2Vycm9ycysrOworCQkJbnAtPnN0YXRzLnJ4 X2Vycm9ycysrOworCQkJZ290byBuZXh0X3BrdDsKKwkJfQorCQlpZiAocHJkLT51LnYyLkZs YWdzICYgY3B1X3RvX2xlMzIoTlZfUlgyX0VSUk9SKSkgeworCQkJLyogZnJhbWluZyBlcnJv cnMgYXJlIHNvZnQgZXJyb3JzLCB0aGUgcmVzdCBpcyBmYXRhbC4gKi8KKwkJCWlmIChwcmQt PnUudjIuRmxhZ3MgJiBjcHVfdG9fbGUzMihOVl9SWDJfRlJBTUlOR0VSUikpIHsKKwkJCQlp ZiAocHJkLT51LnYyLkZsYWdzICYgY3B1X3RvX2xlMzIoTlZfUlgyX1NVQlNUUkFDVDEpKSB7 CiAJCQkJCWxlbi0tOwogCQkJCX0KIAkJCX0gZWxzZSB7CkBAIC0xMDQyLDE0ICsxNDgzLDMw IEBACiBzdGF0aWMgaW50IG52X3VwZGF0ZV9saW5rc3BlZWQoc3RydWN0IG5ldF9kZXZpY2Ug KmRldikKIHsKIAlzdHJ1Y3QgZmVfcHJpdiAqbnAgPSBnZXRfbnZwcml2KGRldik7Ci0JaW50 IGFkdiwgbHBhLCBuZXdscywgbmV3ZHVwOworCXU4ICpiYXNlID0gZ2V0X2h3YmFzZShkZXYp OworCWludCBhZHYsIGxwYTsKKwlpbnQgbmV3bHMgPSBucC0+bGlua3NwZWVkOworCWludCBu ZXdkdXAgPSBucC0+ZHVwbGV4OworCXUzMiBjb250cm9sXzEwMDAsIHN0YXR1c18xMDAwLCBw aHlyZWc7CisKKwlpZiAobnAtPmdpZ2FiaXQgPT0gUEhZX0dJR0FCSVQpIHsKKwkJY29udHJv bF8xMDAwID0gbWlpX3J3KGRldiwgbnAtPnBoeWFkZHIsIE1JSV8xMDAwQlRfQ1IsIE1JSV9S RUFEKTsKKwkJc3RhdHVzXzEwMDAgPSBtaWlfcncoZGV2LCBucC0+cGh5YWRkciwgTUlJXzEw MDBCVF9TUiwgTUlJX1JFQUQpOworCisJCWlmICgoY29udHJvbF8xMDAwICYgQURWRVJUSVNF XzEwMDBGVUxMKSAmJgorCQkJKHN0YXR1c18xMDAwICYgTFBBXzEwMDBGVUxMKSkgeworCQkJ bmV3bHMgPSBOVlJFR19MSU5LU1BFRURfRk9SQ0V8TlZSRUdfTElOS1NQRUVEXzEwMDA7CisJ CQluZXdkdXAgPSAxOworCQkJZ290byBzZXRfc3BlZWQ7CisJCX0KKwl9CiAKIAlhZHYgPSBt aWlfcncoZGV2LCBucC0+cGh5YWRkciwgTUlJX0FEVkVSVElTRSwgTUlJX1JFQUQpOwogCWxw YSA9IG1paV9ydyhkZXYsIG5wLT5waHlhZGRyLCBNSUlfTFBBLCBNSUlfUkVBRCk7CiAJZHBy aW50ayhLRVJOX0RFQlVHICIlczogbnZfdXBkYXRlX2xpbmtzcGVlZDogUEhZIGFkdmVydGlz ZXMgMHglMDR4LCBscGEgMHglMDR4LlxuIiwKIAkJCQlkZXYtPm5hbWUsIGFkdiwgbHBhKTsK IAotCS8qIEZJWE1FOiBoYW5kbGUgcGFyYWxsZWwgZGV0ZWN0aW9uIHByb3Blcmx5LCBoYW5k bGUgZ2lnYWJpdCBldGhlcm5ldCAqLworCS8qIEZJWE1FOiBoYW5kbGUgcGFyYWxsZWwgZGV0 ZWN0aW9uIHByb3Blcmx5ICovCiAJbHBhID0gbHBhICYgYWR2OwogCWlmIChscGEgICYgTFBB XzEwMEZVTEwpIHsKIAkJbmV3bHMgPSBOVlJFR19MSU5LU1BFRURfRk9SQ0V8TlZSRUdfTElO S1NQRUVEXzEwMDsKQEAgLTEwNjgsMTEgKzE1MjUsMzUgQEAKIAkJbmV3bHMgPSBOVlJFR19M SU5LU1BFRURfRk9SQ0V8TlZSRUdfTElOS1NQRUVEXzEwOwogCQluZXdkdXAgPSAwOwogCX0K Kworc2V0X3NwZWVkOgogCWlmIChucC0+ZHVwbGV4ICE9IG5ld2R1cCB8fCBucC0+bGlua3Nw ZWVkICE9IG5ld2xzKSB7CiAJCW5wLT5kdXBsZXggPSBuZXdkdXA7CiAJCW5wLT5saW5rc3Bl ZWQgPSBuZXdsczsKLQkJcmV0dXJuIDE7CiAJfQorCisJaWYgKG5wLT5naWdhYml0ID09IFBI WV9HSUdBQklUKSB7CisJCXBoeXJlZyA9IHJlYWRsKGJhc2UgKyBOdlJlZ1JhbmRvbVNlZWQp OworCQlwaHlyZWcgJj0gfigweDNGRjAwKTsKKwkJaWYgKChucC0+bGlua3NwZWVkICYgMHhG RkYpID09IE5WUkVHX0xJTktTUEVFRF8xMCkKKwkJCXBoeXJlZyB8PSBOVlJFR19STkRTRUVE X0ZPUkNFMzsKKwkJZWxzZSBpZiAoKG5wLT5saW5rc3BlZWQgJiAweEZGRikgPT0gTlZSRUdf TElOS1NQRUVEXzEwMCkKKwkJCXBoeXJlZyB8PSBOVlJFR19STkRTRUVEX0ZPUkNFMjsKKwkJ ZWxzZSBpZiAoKG5wLT5saW5rc3BlZWQgJiAweEZGRikgPT0gTlZSRUdfTElOS1NQRUVEXzEw MDApCisJCQlwaHlyZWcgfD0gTlZSRUdfUk5EU0VFRF9GT1JDRTsKKwkJd3JpdGVsKHBoeXJl ZywgYmFzZSArIE52UmVnUmFuZG9tU2VlZCk7CisJfQorCisJcGh5cmVnID0gcmVhZGwoYmFz ZSArIE52UmVnUGh5SW50ZXJmYWNlKTsKKwlwaHlyZWcgJj0gfigweDMpOworCWlmIChucC0+ ZHVwbGV4ID09IDApCisJCXBoeXJlZyB8PSBQSFlfSEFMRjsKKwlpZiAoKG5wLT5saW5rc3Bl ZWQgJiAweEZGRikgPT0gTlZSRUdfTElOS1NQRUVEXzEwMCkKKwkJcGh5cmVnIHw9IFBIWV8x MDA7CisJZWxzZSBpZiAoKG5wLT5saW5rc3BlZWQgJiAweEZGRikgPT0gTlZSRUdfTElOS1NQ RUVEXzEwMDApCisJCXBoeXJlZyB8PSBQSFlfMTAwMDsKKwl3cml0ZWwocGh5cmVnLCBiYXNl ICsgTnZSZWdQaHlJbnRlcmZhY2UpOworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEwODgsMjYg KzE1NjksMjggQEAKIAlwcmludGsoS0VSTl9ERUJVRyAiJXM6IGxpbmsgY2hhbmdlIG5vdGlm aWNhdGlvbiwgc3RhdHVzIDB4JXguXG4iLCBkZXYtPm5hbWUsIG1paXN0YXQpOwogCiAJbWlp dmFsID0gbWlpX3J3KGRldiwgbnAtPnBoeWFkZHIsIE1JSV9CTVNSLCBNSUlfUkVBRCk7Ci0J aWYgKG1paXZhbCAmIEJNU1JfQU5FR0NPTVBMRVRFKSB7Ci0JCW52X3VwZGF0ZV9saW5rc3Bl ZWQoZGV2KTsKKwlpZiAobWlpc3RhdCAmIE5WUkVHX01JSVNUQVRfTElOS0NIQU5HRSkgewor CQlpZiAobWlpdmFsICYgQk1TUl9MU1RBVFVTKSB7CisJCQludl91cGRhdGVfbGlua3NwZWVk KGRldik7CiAKLQkJaWYgKG5ldGlmX2NhcnJpZXJfb2soZGV2KSkgewotCQkJbnZfc3RvcF9y eChkZXYpOworCQkJaWYgKG5ldGlmX2NhcnJpZXJfb2soZGV2KSkgeworCQkJCW52X3N0b3Bf cngoZGV2KTsKKwkJCX0gZWxzZSB7CisJCQkJbmV0aWZfY2Fycmllcl9vbihkZXYpOworCQkJ CXByaW50ayhLRVJOX0lORk8gIiVzOiBsaW5rIHVwLlxuIiwgZGV2LT5uYW1lKTsKKwkJCX0K KwkJCXdyaXRlbChOVlJFR19NSVNDMV9GT1JDRSB8ICggbnAtPmR1cGxleCA/IDAgOiBOVlJF R19NSVNDMV9IRCksCisJCQkJYmFzZSArIE52UmVnTWlzYzEpOworCQkJbnZfc3RhcnRfcngo ZGV2KTsKIAkJfSBlbHNlIHsKLQkJCW5ldGlmX2NhcnJpZXJfb24oZGV2KTsKLQkJCXByaW50 ayhLRVJOX0lORk8gIiVzOiBsaW5rIHVwLlxuIiwgZGV2LT5uYW1lKTsKLQkJfQotCQl3cml0 ZWwoTlZSRUdfTUlTQzFfRk9SQ0UgfCAoIG5wLT5kdXBsZXggPyAwIDogTlZSRUdfTUlTQzFf SEQpLAotCQkJCQliYXNlICsgTnZSZWdNaXNjMSk7Ci0JCW52X3N0YXJ0X3J4KGRldik7Ci0J fSBlbHNlIHsKLQkJaWYgKG5ldGlmX2NhcnJpZXJfb2soZGV2KSkgewotCQkJbmV0aWZfY2Fy cmllcl9vZmYoZGV2KTsKLQkJCXByaW50ayhLRVJOX0lORk8gIiVzOiBsaW5rIGRvd24uXG4i LCBkZXYtPm5hbWUpOwotCQkJbnZfc3RvcF9yeChkZXYpOworCQkJaWYgKG5ldGlmX2NhcnJp ZXJfb2soZGV2KSkgeworCQkJCW5ldGlmX2NhcnJpZXJfb2ZmKGRldik7CisJCQkJcHJpbnRr KEtFUk5fSU5GTyAiJXM6IGxpbmsgZG93bi5cbiIsIGRldi0+bmFtZSk7CisJCQkJbnZfc3Rv cF9yeChkZXYpOworCQkJfQorCQkJd3JpdGVsKG5wLT5saW5rc3BlZWQsIGJhc2UgKyBOdlJl Z0xpbmtTcGVlZCk7CisJCQlwY2lfcHVzaChiYXNlKTsKIAkJfQotCQl3cml0ZWwobnAtPmxp bmtzcGVlZCwgYmFzZSArIE52UmVnTGlua1NwZWVkKTsKLQkJcGNpX3B1c2goYmFzZSk7CiAJ fQogfQogCkBAIC0xMTM1LDcgKzE2MTgsNyBAQAogCQkJc3Bpbl91bmxvY2soJm5wLT5sb2Nr KTsKIAkJfQogCi0JCWlmIChldmVudHMgJiAoTlZSRUdfSVJRX1JYfE5WUkVHX0lSUV9SWF9O T0JVRikpIHsKKwkJaWYgKGV2ZW50cyAmIChOVlJFR19JUlFfUlhfRVJST1J8TlZSRUdfSVJR X1JYfE5WUkVHX0lSUV9SWF9OT0JVRikpIHsKIAkJCW52X3J4X3Byb2Nlc3MoZGV2KTsKIAkJ CWlmIChudl9hbGxvY19yeChkZXYpKSB7CiAJCQkJc3Bpbl9sb2NrKCZucC0+bG9jayk7CkBA IC0xMjAwLDYgKzE2ODMsNyBAQAogCXN0cnVjdCBmZV9wcml2ICpucCA9IGdldF9udnByaXYo ZGV2KTsKIAl1OCAqYmFzZSA9IGdldF9od2Jhc2UoZGV2KTsKIAlpbnQgcmV0LCBvb20sIGk7 CisJaW50IHBoeV9zdGF0dXMgPSAwOwogCiAJZHByaW50ayhLRVJOX0RFQlVHICJudl9vcGVu OiBiZWdpblxuIik7CiAKQEAgLTEyMTAsMTUgKzE2OTQsMjEgQEAKIAl3cml0ZWwoMCwgYmFz ZSArIE52UmVnTXVsdGljYXN0TWFza0EpOwogCXdyaXRlbCgwLCBiYXNlICsgTnZSZWdNdWx0 aWNhc3RNYXNrQik7CiAJd3JpdGVsKDAsIGJhc2UgKyBOdlJlZ1BhY2tldEZpbHRlckZsYWdz KTsKKworCXdyaXRlbCgwLCBiYXNlICsgTnZSZWdUcmFuc21pdHRlckNvbnRyb2wpOworCXdy aXRlbCgwLCBiYXNlICsgTnZSZWdSZWNlaXZlckNvbnRyb2wpOworCiAJd3JpdGVsKDAsIGJh c2UgKyBOdlJlZ0FkYXB0ZXJDb250cm9sKTsKKworCS8qIDIpIGluaXRpYWxpemUgZGVzY3Jp cHRvciByaW5ncyAqLworCW9vbSA9IG52X2luaXRfcmluZyhkZXYpOworCiAJd3JpdGVsKDAs IGJhc2UgKyBOdlJlZ0xpbmtTcGVlZCk7CiAJd3JpdGVsKDAsIGJhc2UgKyBOdlJlZ1Vua25v d25UcmFuc21pdHRlclJlZyk7CiAJbnZfdHhyeF9yZXNldChkZXYpOwogCXdyaXRlbCgwLCBi YXNlICsgTnZSZWdVbmtub3duU2V0dXBSZWc2KTsKIAotCS8qIDIpIGluaXRpYWxpemUgZGVz Y3JpcHRvciByaW5ncyAqLwogCW5wLT5pbl9zaHV0ZG93biA9IDA7Ci0Jb29tID0gbnZfaW5p dF9yaW5nKGRldik7CiAKIAkvKiAzKSBzZXQgbWFjIGFkZHJlc3MgKi8KIAl7CkBAIC0xMjMy LDIwICsxNzIyLDMwIEBACiAJCXdyaXRlbChtYWNbMV0sIGJhc2UgKyBOdlJlZ01hY0FkZHJC KTsKIAl9CiAKLQkvKiA0KSBjb250aW51ZSBzZXR1cCAqLworCS8qIDQpIGdpdmUgaHcgcmlu Z3MgKi8KKwl3cml0ZWwoKHUzMikgbnAtPnJpbmdfYWRkciwgYmFzZSArIE52UmVnUnhSaW5n UGh5c0FkZHIpOworCXdyaXRlbCgodTMyKSAobnAtPnJpbmdfYWRkciArIFJYX1JJTkcqc2l6 ZW9mKHN0cnVjdCByaW5nX2Rlc2MpKSwgYmFzZSArIE52UmVnVHhSaW5nUGh5c0FkZHIpOwor CXdyaXRlbCggKChSWF9SSU5HLTEpIDw8IE5WUkVHX1JJTkdTWl9SWFNISUZUKSArICgoVFhf UklORy0xKSA8PCBOVlJFR19SSU5HU1pfVFhTSElGVCksCisJCWJhc2UgKyBOdlJlZ1JpbmdT aXplcyk7CisKKwkvKiA1KSBjb250aW51ZSBzZXR1cCAqLwogCW5wLT5saW5rc3BlZWQgPSBO VlJFR19MSU5LU1BFRURfRk9SQ0V8TlZSRUdfTElOS1NQRUVEXzEwOwogCW5wLT5kdXBsZXgg PSAwOworCisJd3JpdGVsKG5wLT5saW5rc3BlZWQsIGJhc2UgKyBOdlJlZ0xpbmtTcGVlZCk7 CiAJd3JpdGVsKE5WUkVHX1VOS1NFVFVQM19WQUwxLCBiYXNlICsgTnZSZWdVbmtub3duU2V0 dXBSZWczKTsKLQl3cml0ZWwoMCwgYmFzZSArIE52UmVnVHhSeENvbnRyb2wpOworCXdyaXRl bChucC0+ZGVzY192ZXIsIGJhc2UgKyBOdlJlZ1R4UnhDb250cm9sKTsKIAlwY2lfcHVzaChi YXNlKTsKLQl3cml0ZWwoTlZSRUdfVFhSWENUTF9CSVQxLCBiYXNlICsgTnZSZWdUeFJ4Q29u dHJvbCk7CisJd3JpdGVsKE5WUkVHX1RYUlhDVExfQklUMXxucC0+ZGVzY192ZXIsIGJhc2Ug KyBOdlJlZ1R4UnhDb250cm9sKTsKIAlyZWdfZGVsYXkoZGV2LCBOdlJlZ1Vua25vd25TZXR1 cFJlZzUsIE5WUkVHX1VOS1NFVFVQNV9CSVQzMSwgTlZSRUdfVU5LU0VUVVA1X0JJVDMxLAog CQkJTlZfU0VUVVA1X0RFTEFZLCBOVl9TRVRVUDVfREVMQVlNQVgsCiAJCQlLRVJOX0lORk8g Im9wZW46IFNldHVwUmVnNSwgQml0IDMxIHJlbWFpbmVkIG9mZlxuIik7CisKIAl3cml0ZWwo MCwgYmFzZSArIE52UmVnVW5rbm93blNldHVwUmVnNCk7CisJd3JpdGVsKE5WUkVHX0lSUVNU QVRfTUFTSywgYmFzZSArIE52UmVnSXJxU3RhdHVzKTsKKwl3cml0ZWwoTlZSRUdfTUlJU1RB VF9NQVNLMiwgYmFzZSArIE52UmVnTUlJU3RhdHVzKTsKIAotCS8qIDUpIEZpbmQgYSBzdWl0 YWJsZSBQSFkgKi8KLQl3cml0ZWwoTlZSRUdfTUlJU1BFRURfQklUOHxOVlJFR19NSUlERUxB WSwgYmFzZSArIE52UmVnTUlJU3BlZWQpOworCS8qIDZhKSBGaW5kIGEgc3VpdGFibGUgUEhZ ICovCiAJZm9yIChpID0gMTsgaSA8IDMyOyBpKyspIHsKIAkJaW50IGlkMSwgaWQyOwogCkBA IC0xMjU5LDEzICsxNzU5LDEzIEBACiAJCXNwaW5fdW5sb2NrX2lycSgmbnAtPmxvY2spOwog CQlpZiAoaWQyIDwgMCB8fCBpZDIgPT0gMHhmZmZmKQogCQkJY29udGludWU7CisKKwkJaWQx ID0gKGlkMSAmIFBIWUlEMV9PVUlfTUFTSykgPDwgUEhZSUQxX09VSV9TSEZUOworCQlpZDIg PSAoaWQyICYgUEhZSUQyX09VSV9NQVNLKSA+PiBQSFlJRDJfT1VJX1NIRlQ7CiAJCWRwcmlu dGsoS0VSTl9ERUJVRyAiJXM6IG9wZW46IEZvdW5kIFBIWSAlMDR4OiUwNHggYXQgYWRkcmVz cyAlZC5cbiIsCiAJCQkJZGV2LT5uYW1lLCBpZDEsIGlkMiwgaSk7CiAJCW5wLT5waHlhZGRy ID0gaTsKLQotCQlzcGluX2xvY2tfaXJxKCZucC0+bG9jayk7Ci0JCW52X3VwZGF0ZV9saW5r c3BlZWQoZGV2KTsKLQkJc3Bpbl91bmxvY2tfaXJxKCZucC0+bG9jayk7CisJCW5wLT5waHlf b3VpID0gaWQxIHwgaWQyOwogCiAJCWJyZWFrOwogCX0KQEAgLTEyNzYsOSArMTc3NiwyNSBA QAogCQlnb3RvIG91dF9kcmFpbjsKIAl9CiAKLQkvKiA2KSBjb250aW51ZSBzZXR1cCAqLwor CS8qIDZiKSBJbml0aWFsaXplIFBIWSAqLworCXNwaW5fbG9ja19pcnEoJm5wLT5sb2NrKTsK KworCS8qIHN5bmNocm9ub3VzIGluaXQgKi8KKwlwaHlfc3RhdHVzID0gcGh5X2luaXQoZGV2 KTsKKwlpZiAocGh5X3N0YXR1cyA9PSBQSFlfRVJST1IpIHsKKwkJcHJpbnRrKEtFUk5fSU5G TyAiJXM6IG9wZW46IGZhaWxpbmcgZHVlIHRvIFBIWSBJbml0LlxuIiwgZGV2LT5uYW1lKTsK KwkJcmV0ID0gLUVJTlZBTDsKKwkJc3Bpbl91bmxvY2tfaXJxKCZucC0+bG9jayk7CisJCWdv dG8gb3V0X2RyYWluOworCX0KKwllbHNlIGlmIChwaHlfc3RhdHVzICE9IFBIWV9USU1FT1VU KQorCQludl91cGRhdGVfbGlua3NwZWVkKGRldik7CisKKwlzcGluX3VubG9ja19pcnEoJm5w LT5sb2NrKTsKKworCS8qIDcpIGNvbnRpbnVlIHNldHVwICovCiAJd3JpdGVsKE5WUkVHX01J U0MxX0ZPUkNFIHwgKCBucC0+ZHVwbGV4ID8gMCA6IE5WUkVHX01JU0MxX0hEKSwKLQkJCQli YXNlICsgTnZSZWdNaXNjMSk7CisJCQliYXNlICsgTnZSZWdNaXNjMSk7CiAJd3JpdGVsKHJl YWRsKGJhc2UgKyBOdlJlZ1RyYW5zbWl0dGVyU3RhdHVzKSwgYmFzZSArIE52UmVnVHJhbnNt aXR0ZXJTdGF0dXMpOwogCXdyaXRlbChOVlJFR19QRkZfQUxXQVlTLCBiYXNlICsgTnZSZWdQ YWNrZXRGaWx0ZXJGbGFncyk7CiAJd3JpdGVsKE5WUkVHX09GRkxPQURfTk9STUFMLCBiYXNl ICsgTnZSZWdPZmZsb2FkQ29uZmlnKTsKQEAgLTEyOTAsMTcgKzE4MDYsMTIgQEAKIAl3cml0 ZWwoTlZSRUdfVU5LU0VUVVAyX1ZBTCwgYmFzZSArIE52UmVnVW5rbm93blNldHVwUmVnMik7 CiAJd3JpdGVsKE5WUkVHX1BPTExfREVGQVVMVCwgYmFzZSArIE52UmVnUG9sbGluZ0ludGVy dmFsKTsKIAl3cml0ZWwoTlZSRUdfVU5LU0VUVVA2X1ZBTCwgYmFzZSArIE52UmVnVW5rbm93 blNldHVwUmVnNik7Ci0Jd3JpdGVsKChucC0+cGh5YWRkciA8PCBOVlJFR19BREFQVENUTF9Q SFlTSElGVCl8TlZSRUdfQURBUFRDVExfUEhZVkFMSUQsCisJd3JpdGVsKChucC0+cGh5YWRk ciA8PCBOVlJFR19BREFQVENUTF9QSFlTSElGVCl8TlZSRUdfQURBUFRDVExfUEhZVkFMSUR8 TlZSRUdfQURBUFRDVExfUlVOTklORywKIAkJCWJhc2UgKyBOdlJlZ0FkYXB0ZXJDb250cm9s KTsKKwl3cml0ZWwoTlZSRUdfTUlJU1BFRURfQklUOHxOVlJFR19NSUlERUxBWSwgYmFzZSAr IE52UmVnTUlJU3BlZWQpOwogCXdyaXRlbChOVlJFR19VTktTRVRVUDRfVkFMLCBiYXNlICsg TnZSZWdVbmtub3duU2V0dXBSZWc0KTsKIAl3cml0ZWwoTlZSRUdfV0FLRVVQRkxBR1NfVkFM LCBiYXNlICsgTnZSZWdXYWtlVXBGbGFncyk7CiAKLQkvKiA3KSBzdGFydCBwYWNrZXQgcHJv Y2Vzc2luZyAqLwotCXdyaXRlbCgodTMyKSBucC0+cmluZ19hZGRyLCBiYXNlICsgTnZSZWdS eFJpbmdQaHlzQWRkcik7Ci0Jd3JpdGVsKCh1MzIpIChucC0+cmluZ19hZGRyICsgUlhfUklO RypzaXplb2Yoc3RydWN0IHJpbmdfZGVzYykpLCBiYXNlICsgTnZSZWdUeFJpbmdQaHlzQWRk cik7Ci0Jd3JpdGVsKCAoKFJYX1JJTkctMSkgPDwgTlZSRUdfUklOR1NaX1JYU0hJRlQpICsg KChUWF9SSU5HLTEpIDw8IE5WUkVHX1JJTkdTWl9UWFNISUZUKSwKLQkJCWJhc2UgKyBOdlJl Z1JpbmdTaXplcyk7Ci0KIAlpID0gcmVhZGwoYmFzZSArIE52UmVnUG93ZXJTdGF0ZSk7CiAJ aWYgKCAoaSAmIE5WUkVHX1BPV0VSU1RBVEVfUE9XRVJFRFVQKSA9PSAwKQogCQl3cml0ZWwo TlZSRUdfUE9XRVJTVEFURV9QT1dFUkVEVVB8aSwgYmFzZSArIE52UmVnUG93ZXJTdGF0ZSk7 CkBAIC0xMzA4LDEzICsxODE5LDkgQEAKIAlwY2lfcHVzaChiYXNlKTsKIAl1ZGVsYXkoMTAp OwogCXdyaXRlbChyZWFkbChiYXNlICsgTnZSZWdQb3dlclN0YXRlKSB8IE5WUkVHX1BPV0VS U1RBVEVfVkFMSUQsIGJhc2UgKyBOdlJlZ1Bvd2VyU3RhdGUpOwotCXdyaXRlbChOVlJFR19B REFQVENUTF9SVU5OSU5HLCBiYXNlICsgTnZSZWdBZGFwdGVyQ29udHJvbCk7Ci0KIAogCXdy aXRlbCgwLCBiYXNlICsgTnZSZWdJcnFNYXNrKTsKIAlwY2lfcHVzaChiYXNlKTsKLQl3cml0 ZWwoTlZSRUdfSVJRU1RBVF9NQVNLLCBiYXNlICsgTnZSZWdJcnFTdGF0dXMpOwotCXBjaV9w dXNoKGJhc2UpOwogCXdyaXRlbChOVlJFR19NSUlTVEFUX01BU0syLCBiYXNlICsgTnZSZWdN SUlTdGF0dXMpOwogCXdyaXRlbChOVlJFR19JUlFTVEFUX01BU0ssIGJhc2UgKyBOdlJlZ0ly cVN0YXR1cyk7CiAJcGNpX3B1c2goYmFzZSk7CkBAIC0xMzM2LDcgKzE4NDMsNyBAQAogCW5l dGlmX3N0YXJ0X3F1ZXVlKGRldik7CiAJaWYgKG9vbSkKIAkJbW9kX3RpbWVyKCZucC0+b29t X2tpY2ssIGppZmZpZXMgKyBPT01fUkVGSUxMKTsKLQlpZiAobWlpX3J3KGRldiwgbnAtPnBo eWFkZHIsIE1JSV9CTVNSLCBNSUlfUkVBRCkgJiBCTVNSX0FORUdDT01QTEVURSkgeworCWlm IChtaWlfcncoZGV2LCBucC0+cGh5YWRkciwgTUlJX0JNU1IsIE1JSV9SRUFEKSAmIEJNU1Jf TFNUQVRVUykgewogCQluZXRpZl9jYXJyaWVyX29uKGRldik7CiAJfSBlbHNlIHsKIAkJcHJp bnRrKCIlczogbm8gbGluayBkdXJpbmcgaW5pdGlhbGl6YXRpb24uXG4iLCBkZXYtPm5hbWUp OwpAQCAtMTQ0Nyw2ICsxOTU0LDE0IEBACiAJCWdvdG8gb3V0X3JlbHJlZzsKIAl9CiAKKwkv KiBoYW5kbGUgZGlmZmVyZW50IGRlc2NyaXB0b3IgdmVyc2lvbnMgKi8KKwlpZiAocGNpX2Rl di0+ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfTlZJRElBX05WRU5FVF8xIHx8CisJCXBjaV9k ZXYtPmRldmljZSA9PSBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfMiB8fAorCQlwY2lf ZGV2LT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzMpCisJCW5wLT5k ZXNjX3ZlciA9IERFU0NfVkVSXzE7CisJZWxzZQorCQlucC0+ZGVzY192ZXIgPSBERVNDX1ZF Ul8yOworCiAJZXJyID0gLUVOT01FTTsKIAlkZXYtPmJhc2VfYWRkciA9ICh1bnNpZ25lZCBs b25nKSBpb3JlbWFwKGFkZHIsIE5WX1BDSV9SRUdTWik7CiAJaWYgKCFkZXYtPmJhc2VfYWRk cikKQEAgLTE1MDYsOSArMjAyMSwxNiBAQAogCXdyaXRlbCgwLCBiYXNlICsgTnZSZWdXYWtl VXBGbGFncyk7CiAJbnAtPndvbGVuYWJsZWQgPSAwOwogCi0JbnAtPnR4X2ZsYWdzID0gY3B1 X3RvX2xlMTYoTlZfVFhfTEFTVFBBQ0tFVHxOVl9UWF9MQVNUUEFDS0VUMXxOVl9UWF9WQUxJ RCk7Ci0JaWYgKGlkLT5kcml2ZXJfZGF0YSAmIERFVl9ORUVEX0xBU1RQQUNLRVQxKQotCQlu cC0+dHhfZmxhZ3MgfD0gY3B1X3RvX2xlMTYoTlZfVFhfTEFTVFBBQ0tFVDEpOworCWlmIChu cC0+ZGVzY192ZXIgPT0gREVTQ19WRVJfMSkgeworCQlucC0+dHhfZmxhZ3MgPSBjcHVfdG9f bGUxNihOVl9UWF9MQVNUUEFDS0VUfE5WX1RYX0xBU1RQQUNLRVQxfE5WX1RYX1ZBTElEKTsK KwkJaWYgKGlkLT5kcml2ZXJfZGF0YSAmIERFVl9ORUVEX0xBU1RQQUNLRVQxKQorCQkJbnAt PnR4X2ZsYWdzIHw9IGNwdV90b19sZTE2KE5WX1RYX0xBU1RQQUNLRVQxKTsKKwl9CisJZWxz ZSB7CisJCW5wLT50eF9mbGFncyA9IGNwdV90b19sZTMyKE5WX1RYMl9MQVNUUEFDS0VUfE5W X1RYMl9MQVNUUEFDS0VUMXxOVl9UWDJfVkFMSUQpOworCQlpZiAoaWQtPmRyaXZlcl9kYXRh ICYgREVWX05FRURfTEFTVFBBQ0tFVDEpCisJCQlucC0+dHhfZmxhZ3MgfD0gY3B1X3RvX2xl MzIoTlZfVFgyX0xBU1RQQUNLRVQxKTsKKwl9CiAJaWYgKGlkLT5kcml2ZXJfZGF0YSAmIERF Vl9JUlFNQVNLXzEpCiAJCW5wLT5pcnFtYXNrID0gTlZSRUdfSVJRTUFTS19XQU5URURfMTsK IAlpZiAoaWQtPmRyaXZlcl9kYXRhICYgREVWX0lSUU1BU0tfMikKQEAgLTE1NjksMjEgKzIw OTEsNzcgQEAKIHN0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwY2lfdGJsW10gPSB7CiAJ ewkvKiBuRm9yY2UgRXRoZXJuZXQgQ29udHJvbGxlciAqLwogCQkudmVuZG9yID0gUENJX1ZF TkRPUl9JRF9OVklESUEsCi0JCS5kZXZpY2UgPSAweDFDMywKKwkJLmRldmljZSA9IFBDSV9E RVZJQ0VfSURfTlZJRElBX05WRU5FVF8xLAogCQkuc3VidmVuZG9yID0gUENJX0FOWV9JRCwK IAkJLnN1YmRldmljZSA9IFBDSV9BTllfSUQsCiAJCS5kcml2ZXJfZGF0YSA9IERFVl9JUlFN QVNLXzF8REVWX05FRURfVElNRVJJUlEsCiAJfSwKIAl7CS8qIG5Gb3JjZTIgRXRoZXJuZXQg Q29udHJvbGxlciAqLwogCQkudmVuZG9yID0gUENJX1ZFTkRPUl9JRF9OVklESUEsCi0JCS5k ZXZpY2UgPSAweDAwNjYsCisJCS5kZXZpY2UgPSBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVO RVRfMiwKIAkJLnN1YnZlbmRvciA9IFBDSV9BTllfSUQsCiAJCS5zdWJkZXZpY2UgPSBQQ0lf QU5ZX0lELAogCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9MQVNUUEFDS0VUMXxERVZfSVJR TUFTS18yfERFVl9ORUVEX1RJTUVSSVJRLAogCX0sCiAJewkvKiBuRm9yY2UzIEV0aGVybmV0 IENvbnRyb2xsZXIgKi8KIAkJLnZlbmRvciA9IFBDSV9WRU5ET1JfSURfTlZJRElBLAotCQku ZGV2aWNlID0gMHgwMEQ2LAorCQkuZGV2aWNlID0gUENJX0RFVklDRV9JRF9OVklESUFfTlZF TkVUXzMsCisJCS5zdWJ2ZW5kb3IgPSBQQ0lfQU5ZX0lELAorCQkuc3ViZGV2aWNlID0gUENJ X0FOWV9JRCwKKwkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfTEFTVFBBQ0tFVDF8REVWX0lS UU1BU0tfMnxERVZfTkVFRF9USU1FUklSUSwKKwl9LAorCXsJLyogbkZvcmNlMyBFdGhlcm5l dCBDb250cm9sbGVyICovCisJCS52ZW5kb3IgPSBQQ0lfVkVORE9SX0lEX05WSURJQSwKKwkJ LmRldmljZSA9IFBDSV9ERVZJQ0VfSURfTlZJRElBX05WRU5FVF80LAorCQkuc3VidmVuZG9y ID0gUENJX0FOWV9JRCwKKwkJLnN1YmRldmljZSA9IFBDSV9BTllfSUQsCisJCS5kcml2ZXJf ZGF0YSA9IERFVl9ORUVEX0xBU1RQQUNLRVQxfERFVl9JUlFNQVNLXzJ8REVWX05FRURfVElN RVJJUlEsCisJfSwKKwl7CS8qIG5Gb3JjZTMgRXRoZXJuZXQgQ29udHJvbGxlciAqLworCQku dmVuZG9yID0gUENJX1ZFTkRPUl9JRF9OVklESUEsCisJCS5kZXZpY2UgPSBQQ0lfREVWSUNF X0lEX05WSURJQV9OVkVORVRfNSwKKwkJLnN1YnZlbmRvciA9IFBDSV9BTllfSUQsCisJCS5z dWJkZXZpY2UgPSBQQ0lfQU5ZX0lELAorCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9MQVNU UEFDS0VUMXxERVZfSVJRTUFTS18yfERFVl9ORUVEX1RJTUVSSVJRLAorCX0sCisJewkvKiBu Rm9yY2UzIEV0aGVybmV0IENvbnRyb2xsZXIgKi8KKwkJLnZlbmRvciA9IFBDSV9WRU5ET1Jf SURfTlZJRElBLAorCQkuZGV2aWNlID0gUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzYs CisJCS5zdWJ2ZW5kb3IgPSBQQ0lfQU5ZX0lELAorCQkuc3ViZGV2aWNlID0gUENJX0FOWV9J RCwKKwkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfTEFTVFBBQ0tFVDF8REVWX0lSUU1BU0tf MnxERVZfTkVFRF9USU1FUklSUSwKKwl9LAorCXsJLyogbkZvcmNlMyBFdGhlcm5ldCBDb250 cm9sbGVyICovCisJCS52ZW5kb3IgPSBQQ0lfVkVORE9SX0lEX05WSURJQSwKKwkJLmRldmlj ZSA9IFBDSV9ERVZJQ0VfSURfTlZJRElBX05WRU5FVF83LAorCQkuc3VidmVuZG9yID0gUENJ X0FOWV9JRCwKKwkJLnN1YmRldmljZSA9IFBDSV9BTllfSUQsCisJCS5kcml2ZXJfZGF0YSA9 IERFVl9ORUVEX0xBU1RQQUNLRVQxfERFVl9JUlFNQVNLXzJ8REVWX05FRURfVElNRVJJUlEs CisJfSwKKwl7CS8qIENLODA0IEV0aGVybmV0IENvbnRyb2xsZXIgKi8KKwkJLnZlbmRvciA9 IFBDSV9WRU5ET1JfSURfTlZJRElBLAorCQkuZGV2aWNlID0gUENJX0RFVklDRV9JRF9OVklE SUFfTlZFTkVUXzgsCisJCS5zdWJ2ZW5kb3IgPSBQQ0lfQU5ZX0lELAorCQkuc3ViZGV2aWNl ID0gUENJX0FOWV9JRCwKKwkJLmRyaXZlcl9kYXRhID0gREVWX05FRURfTEFTVFBBQ0tFVDF8 REVWX0lSUU1BU0tfMnxERVZfTkVFRF9USU1FUklSUSwKKwl9LAorCXsJLyogQ0s4MDQgRXRo ZXJuZXQgQ29udHJvbGxlciAqLworCQkudmVuZG9yID0gUENJX1ZFTkRPUl9JRF9OVklESUEs CisJCS5kZXZpY2UgPSBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfOSwKKwkJLnN1YnZl bmRvciA9IFBDSV9BTllfSUQsCisJCS5zdWJkZXZpY2UgPSBQQ0lfQU5ZX0lELAorCQkuZHJp dmVyX2RhdGEgPSBERVZfTkVFRF9MQVNUUEFDS0VUMXxERVZfSVJRTUFTS18yfERFVl9ORUVE X1RJTUVSSVJRLAorCX0sCisJewkvKiBNQ1AwNCBFdGhlcm5ldCBDb250cm9sbGVyICovCisJ CS52ZW5kb3IgPSBQQ0lfVkVORE9SX0lEX05WSURJQSwKKwkJLmRldmljZSA9IFBDSV9ERVZJ Q0VfSURfTlZJRElBX05WRU5FVF8xMCwKKwkJLnN1YnZlbmRvciA9IFBDSV9BTllfSUQsCisJ CS5zdWJkZXZpY2UgPSBQQ0lfQU5ZX0lELAorCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9M QVNUUEFDS0VUMXxERVZfSVJRTUFTS18yfERFVl9ORUVEX1RJTUVSSVJRLAorCX0sCisJewkv KiBNQ1AwNCBFdGhlcm5ldCBDb250cm9sbGVyICovCisJCS52ZW5kb3IgPSBQQ0lfVkVORE9S X0lEX05WSURJQSwKKwkJLmRldmljZSA9IFBDSV9ERVZJQ0VfSURfTlZJRElBX05WRU5FVF8x MSwKIAkJLnN1YnZlbmRvciA9IFBDSV9BTllfSUQsCiAJCS5zdWJkZXZpY2UgPSBQQ0lfQU5Z X0lELAogCQkuZHJpdmVyX2RhdGEgPSBERVZfTkVFRF9MQVNUUEFDS0VUMXxERVZfSVJRTUFT S18yfERFVl9ORUVEX1RJTUVSSVJRLAo9PT09PSBpbmNsdWRlL2xpbnV4L3BjaV9pZHMuaCAx Ljk3IHZzIGVkaXRlZCA9PT09PQotLS0gMS45Ny9pbmNsdWRlL2xpbnV4L3BjaV9pZHMuaAky MDA0LTA2LTE1IDE3OjIwOjQzICswMjowMAorKysgZWRpdGVkL2luY2x1ZGUvbGludXgvcGNp X2lkcy5oCTIwMDQtMDYtMTkgMTQ6MzY6NTYgKzAyOjAwCkBAIC05ODAsMjEgKzk4MCwzMSBA QAogI2RlZmluZSBQQ0lfREVWSUNFX0lEX05WSURJQV9VVlROVDIJCTB4MDAyRAogI2RlZmlu ZSBQQ0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0VfTUNQMDRfSURFCTB4MDAzNQogI2RlZmlu ZSBQQ0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0VfTUNQMDRfU0FUQQkweDAwMzYKKyNkZWZp bmUgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzEwCQkweDAwMzcKKyNkZWZpbmUgUENJ X0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzExCQkweDAwMzgKICNkZWZpbmUgUENJX0RFVklD RV9JRF9OVklESUFfTkZPUkNFX01DUDA0X1NBVEEyCTB4MDAzZQogI2RlZmluZSBQQ0lfREVW SUNFX0lEX05WSURJQV9ORk9SQ0VfQ0s4MDRfSURFCTB4MDA1MwogI2RlZmluZSBQQ0lfREVW SUNFX0lEX05WSURJQV9ORk9SQ0VfQ0s4MDRfU0FUQQkweDAwNTQKICNkZWZpbmUgUENJX0RF VklDRV9JRF9OVklESUFfTkZPUkNFX0NLODA0X1NBVEEyCTB4MDA1NQorI2RlZmluZSBQQ0lf REVWSUNFX0lEX05WSURJQV9OVkVORVRfOAkJMHgwMDU2CisjZGVmaW5lIFBDSV9ERVZJQ0Vf SURfTlZJRElBX05WRU5FVF85CQkweDAwNTcKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklE SUFfTkZPUkNFMl9JREUJMHgwMDY1CisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElBX05W RU5FVF8yCQkweDAwNjYKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTUNQMl9BVURJ TwkJMHgwMDZhCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRTJTX0lERQkw eDAwODUKKyNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTlZFTkVUXzQJCTB4MDA4Ngor I2RlZmluZSBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfNQkJMHgwMDhjCiAjZGVmaW5l IFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRTJTX1NBVEEJMHgwMDhlCiAjZGVmaW5lIFBD SV9ERVZJQ0VfSURfTlZJRElBX0lUTlQyCQkweDAwQTAKICNkZWZpbmUgUENJX0RFVklDRV9J RF9OVklESUFfTkZPUkNFMwkJMHgwMGQxCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElB X05GT1JDRTNfSURFCTB4MDBkNQorI2RlZmluZSBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVO RVRfMwkJMHgwMGQ2CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElBX01DUDNfQVVESU8J CTB4MDBkYQorI2RlZmluZSBQQ0lfREVWSUNFX0lEX05WSURJQV9OVkVORVRfNwkJMHgwMGRm CiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElBX05GT1JDRTNTCQkweDAwZTEKICNkZWZp bmUgUENJX0RFVklDRV9JRF9OVklESUFfTkZPUkNFM1NfU0FUQQkweDAwZTMKICNkZWZpbmUg UENJX0RFVklDRV9JRF9OVklESUFfTkZPUkNFM1NfSURFCTB4MDBlNQorI2RlZmluZSBQQ0lf REVWSUNFX0lEX05WSURJQV9OVkVORVRfNgkJMHgwMGU2CiAjZGVmaW5lIFBDSV9ERVZJQ0Vf SURfTlZJRElBX05GT1JDRTNTX1NBVEEyCTB4MDBlZQogI2RlZmluZSBQQ0lfREVWSUNFX0lE X05WSURJQV9HRUZPUkNFX1NEUgkweDAxMDAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklE SUFfR0VGT1JDRV9ERFIJMHgwMTAxCkBAIC0xMDExLDYgKzEwMjEsNyBAQAogI2RlZmluZSBQ Q0lfREVWSUNFX0lEX05WSURJQV9ORk9SQ0UJCTB4MDFhNAogI2RlZmluZSBQQ0lfREVWSUNF X0lEX05WSURJQV9NQ1AxX0FVRElPCQkweDAxYjEKICNkZWZpbmUgUENJX0RFVklDRV9JRF9O VklESUFfTkZPUkNFX0lERQkJMHgwMWJjCisjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElB X05WRU5FVF8xCQkweDAxYzMKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfTkZPUkNF MgkJMHgwMWUwCiAjZGVmaW5lIFBDSV9ERVZJQ0VfSURfTlZJRElBX0dFRk9SQ0UzCQkweDAy MDAKICNkZWZpbmUgUENJX0RFVklDRV9JRF9OVklESUFfR0VGT1JDRTNfMQkJMHgwMjAxCg== --------------080401060207070901070906-- - 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/