From owner-freebsd-current@FreeBSD.ORG Thu Oct 16 07:17:42 2003 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4B54916A4BF for ; Thu, 16 Oct 2003 07:17:42 -0700 (PDT) Received: from st68.arena.ne.jp (st68.arena.ne.jp [203.138.213.2]) by mx1.FreeBSD.org (Postfix) with SMTP id 0594E43FA3 for ; Thu, 16 Oct 2003 07:17:41 -0700 (PDT) (envelope-from eyes@navi.org) Received: (qmail 11035 invoked by SAV 20031015.9); 16 Oct 2003 23:17:39 +0900 Received: from unknown (HELO localhost) (219.164.26.108) by st68.arena.ne.jp with SMTP; 16 Oct 2003 23:17:39 +0900 Date: Thu, 16 Oct 2003 23:17:47 +0900 From: Hiroyuki Aizu To: current@freebsd.org Message-Id: <20031016231747.4f0640e3.eyes@navi.org> Organization: navi.org X-Mailer: Sylpheed version 0.9.5-gtk2-20030906 (GTK+ 2.2.4; i386-portbld-freebsd5.1) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart_Thu__16_Oct_2003_23_17_47_+0900_0865e200" Subject: PATCH for ATAng X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Oct 2003 14:17:42 -0000 This is a multi-part message in MIME format. --Multipart_Thu__16_Oct_2003_23_17_47_+0900_0865e200 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Hi. The original ata_reset() lost ATA-master drive and remove main file system after suspend/resume. Of cource it occors panic! I think that the ata_reset() in ata-lowlevel.c is bogus and I can not understand the code. So I study ATA and rewrite ata_reset() completely. New device detect algorism using ata command ATA_IDENTIFY_DEVICE and ATA_IDENTIFY_PACKET_DEVICE for judge ATA and ATAPI devices. This patch works fine with my TOSHIBA Libretto L5. But not yet test ATAPI devices and ATA-slave channel. Maybe there is need to adjust wait DELAY time. Please test and replace ata_reset(). I hope this solve ATAng troubles. -- Hiroyuki Aizu --Multipart_Thu__16_Oct_2003_23_17_47_+0900_0865e200 Content-Type: application/octet-stream; name="ata-lowlevel.c.diff" Content-Disposition: attachment; filename="ata-lowlevel.c.diff" Content-Transfer-Encoding: base64 LS0tIGF0YS1sb3dsZXZlbC5jLm9yaWcJVGh1IE9jdCAgOSAyMzozMzowNiAyMDAzCisrKyBhdGEt bG93bGV2ZWwuYwlUaHUgT2N0IDE2IDIyOjI4OjA2IDIwMDMKQEAgLTQ4OCwxNjIgKzQ4OCwyMjIg QEAKIH0KIAogLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBBVEEgY2hhbm5lbCBsb2NrZWQgKi8KLXN0 YXRpYyB2b2lkCi1hdGFfcmVzZXQoc3RydWN0IGF0YV9jaGFubmVsICpjaCkKKyNkZWZpbmUgQVRB X1RJTUVPVVQJCQkxMDAwMAorI2RlZmluZSBBVEFfSURFTlRJRllfREVWSUNFCQkweGVjCisjZGVm aW5lIEFUQV9JREVOVElGWV9QQUNLRVRfREVWSUNFCTB4YTEKKworI2RlZmluZSBBVEFfTUFTVEVS X01BU0sJCShBVEFfQVRBX01BU1RFUiB8IEFUQV9BVEFQSV9NQVNURVIpCisjZGVmaW5lIEFUQV9T TEFWRV9NQVNLCQkoQVRBX0FUQV9TTEFWRSB8IEFUQV9BVEFQSV9TTEFWRSkKKworc3RhdGljIGlu dAorYXRhX3dhaXRfcmVhZHkoc3RydWN0IGF0YV9jaGFubmVsICpjaCkKIHsKLSAgICB1X2ludDhf dCBlcnIsIGxzYiwgbXNiLCBvc3RhdDAsIG9zdGF0MTsKLSAgICB1X2ludDhfdCBzdGF0MCA9IDAs IHN0YXQxID0gMDsKLSAgICBpbnQgbWFzayA9IDAsIHRpbWVvdXQ7CisgICAgaW50IGksIHN0YXQ7 CiAKLSAgICAvKiBkbyB3ZSBoYXZlIGFueSBzaWducyBvZiBBVEEvQVRBUEkgSFcgYmVpbmcgcHJl c2VudCA/ICovCi0gICAgQVRBX0lEWF9PVVRCKGNoLCBBVEFfRFJJVkUsIEFUQV9EX0lCTSB8IEFU QV9NQVNURVIpOwotICAgIERFTEFZKDEwKTsKLSAgICBvc3RhdDAgPSBBVEFfSURYX0lOQihjaCwg QVRBX1NUQVRVUyk7Ci0gICAgaWYgKChvc3RhdDAgJiAweGY4KSAhPSAweGY4ICYmIG9zdGF0MCAh PSAweGE1KSB7Ci0Jc3RhdDAgPSBBVEFfU19CVVNZOwotCW1hc2sgfD0gMHgwMTsKLSAgICB9Ci0K LSAgICBBVEFfSURYX09VVEIoY2gsIEFUQV9EUklWRSwgQVRBX0RfSUJNIHwgQVRBX1NMQVZFKTsK LSAgICBERUxBWSgxMCk7CQotICAgIG9zdGF0MSA9IEFUQV9JRFhfSU5CKGNoLCBBVEFfU1RBVFVT KTsKLQotICAgIC8qIGluIHNvbWUgc2V0dXBzIHdlIGRvbnQgd2FudCB0byB0ZXN0IGZvciBhIHNs YXZlICovCi0gICAgaWYgKCEoY2gtPmZsYWdzICYgQVRBX05PX1NMQVZFKSkgewotCWlmICgob3N0 YXQxICYgMHhmOCkgIT0gMHhmOCAmJiBvc3RhdDEgIT0gMHhhNSkgewotCSAgICBzdGF0MSA9IEFU QV9TX0JVU1k7Ci0JICAgIG1hc2sgfD0gMHgwMjsKLQl9CisgICAgZm9yIChpID0gMDsgaTwgQVRB X1RJTUVPVVQ7IGkrKykgeworCURFTEFZKDEwKTsKKyAgICAgICAgc3RhdCA9IEFUQV9JRFhfSU5C KGNoLCBBVEFfU1RBVFVTKTsKKyAgICAgICAgaWYgKCEoc3RhdCAmIEFUQV9TX0JVU1kpICYmICEo c3RhdCAmIEFUQV9TX0RSUSkpCisgICAgICAgICAgICBicmVhazsKICAgICB9CisgICAgREVMQVko MTApOwogCi0gICAgLyogaWYgbm90aGluZyBzaG93ZWQgdXAgbm8gbmVlZCB0byBnZXQgYW55IGZ1 cnRoZXIgKi8KLSAgICAvKiBTT1MgaXMgdGhhdCB0b28gc3Ryb25nPywgd2UganVzdCBtaWdodCBs b29zZSBkZXZpY2VzIGhlcmUgWFhYICovCi0gICAgY2gtPmRldmljZXMgPSAwOwotICAgIGlmICgh bWFzaykKLQlyZXR1cm47CisgICAgaWYgKGkgPT0gQVRBX1RJTUVPVVQpCisgICAgICAgIHJldHVy biAtMTsKIAotICAgIGlmIChib290dmVyYm9zZSkKLQlhdGFfcHJpbnRmKGNoLCAtMSwgInJlc2V0 IHRwMSBtYXNrPSUwMnggb3N0YXQwPSUwMnggb3N0YXQxPSUwMnhcbiIsCi0JCSAgIG1hc2ssIG9z dGF0MCwgb3N0YXQxKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorYXRhX3NvZnRf cmVzZXQoc3RydWN0IGF0YV9jaGFubmVsICpjaCkKK3sKKyAgICBpbnQgaSwgc3RhdDsKIAogICAg IC8qIHJlc2V0IGNoYW5uZWwgKi8KLSAgICBBVEFfSURYX09VVEIoY2gsIEFUQV9EUklWRSwgQVRB X0RfSUJNIHwgQVRBX01BU1RFUik7Ci0gICAgREVMQVkoMTApOwogICAgIEFUQV9JRFhfT1VUQihj aCwgQVRBX0FMVFNUQVQsIEFUQV9BX0lEUyB8IEFUQV9BX1JFU0VUKTsKICAgICBERUxBWSgxMDAw MCk7IAogICAgIEFUQV9JRFhfT1VUQihjaCwgQVRBX0FMVFNUQVQsIEFUQV9BX0lEUyk7Ci0gICAg REVMQVkoMTAwMDApOworICAgIERFTEFZKDIwMDAwKTsKKworICAgIGZvciAoaSA9IDA7IGk8IEFU QV9USU1FT1VUOyBpKyspIHsKKwlERUxBWSgxMDApOworICAgICAgICAvKiBzdGF0ID0gQVRBX0lE WF9JTkIoY2gsIEFUQV9TVEFUVVMpOyAqLworICAgICAgICBzdGF0ID0gQVRBX0lEWF9JTkIoY2gs IEFUQV9BTFRTVEFUKTsKKyAgICAgICAgaWYgKCEoc3RhdCAmIEFUQV9TX0JVU1kpKQorICAgICAg ICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChpID09IEFUQV9USU1FT1VUKQorICAgICAgICBy ZXR1cm4gLTE7CisKKyAgICBERUxBWSgxMCk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj IGludAorYXRhX2RldmljZV9zZWxlY3Qoc3RydWN0IGF0YV9jaGFubmVsICpjaCwgdV9pbnQ4X3Qg dW5pdCkKK3sKKyAgICBpZiAoYXRhX3dhaXRfcmVhZHkoY2gpKQorICAgICAgICByZXR1cm4gLTE7 CisKKyAgICBBVEFfSURYX09VVEIoY2gsIEFUQV9EUklWRSwgQVRBX0RfSUJNIHwgdW5pdCk7Cisg ICAgREVMQVkoMTApOworCisgICAgaWYgKGF0YV93YWl0X3JlYWR5KGNoKSkKKyAgICAgICAgcmV0 dXJuIC0xOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2F0YV9jaGVja19kZXZp Y2VfZXhpc3RlbmNlKHN0cnVjdCBhdGFfY2hhbm5lbCAqY2gpCit7CisgICAgdV9pbnQ4X3QgbHNi LCBtc2I7CisKKyAgICBBVEFfSURYX09VVEIoY2gsIEFUQV9DWUxfTFNCLCAweDU1KTsKKyAgICBB VEFfSURYX09VVEIoY2gsIEFUQV9DWUxfTVNCLCAweGFhKTsKKworICAgIGxzYiA9IEFUQV9JRFhf SU5CKGNoLCBBVEFfQ1lMX0xTQik7CisgICAgbXNiID0gQVRBX0lEWF9JTkIoY2gsIEFUQV9DWUxf TVNCKTsKKworICAgIGlmIChsc2IgIT0gMHg1NSB8fCBtc2IgIT0gMHhhYSkgeworICAgICAgICAv KiBub3QgZm91bmQgKi8KKyAgICAgICAgYXRhX3ByaW50ZihjaCwgLTEsICJjaGVjayBkZXYgZXhp c3RlbmNlOmxzYj0lMDJ4IG1zYj0lMDJ4XG4iLCBsc2IsIG1zYik7CisgICAgICAgIHJldHVybiAw OworICAgIH0KKworICAgIC8qIGZvdW5kICovCisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBp bnQKK2lkZW50aWZ5X2RldmljZShzdHJ1Y3QgYXRhX2NoYW5uZWwgKmNoLCBpbnQgZGV2aWNlLCB1 X2ludDhfdCB0eXBlKQoreworICAgIGludCBpLCBqOworICAgIHVfaW50OF90IHN0YXQ7CisKKyAg ICBBVEFfSURYX09VVEIoY2gsIEFUQV9BTFRTVEFULCBBVEFfQV9JRFMpOworCisgICAgQVRBX0lE WF9PVVRCKGNoLCBBVEFfRkVBVFVSRSwgMCk7CisgICAgQVRBX0lEWF9PVVRCKGNoLCBBVEFfQ09V TlQsIDApOworICAgIEFUQV9JRFhfT1VUQihjaCwgQVRBX1NFQ1RPUiwgMCk7CisgICAgQVRBX0lE WF9PVVRCKGNoLCBBVEFfQ1lMX0xTQiwgMCk7CisgICAgQVRBX0lEWF9PVVRCKGNoLCBBVEFfQ1lM X01TQiwgMCk7CisgICAgQVRBX0lEWF9PVVRCKGNoLCBBVEFfRFJJVkUsIEFUQV9EX0lCTSB8IGRl dmljZSk7CisgICAgQVRBX0lEWF9PVVRCKGNoLCBBVEFfQ01ELCB0eXBlKTsKKyAgICBERUxBWSgx MCk7CiAKLSAgICAvKiB3YWl0IGZvciBCVVNZIHRvIGdvIGluYWN0aXZlICovCi0gICAgZm9yICh0 aW1lb3V0ID0gMDsgdGltZW91dCA8IDMxMDsgdGltZW91dCsrKSB7Ci0JaWYgKHN0YXQwICYgQVRB X1NfQlVTWSkgewotCSAgICBBVEFfSURYX09VVEIoY2gsIEFUQV9EUklWRSwgQVRBX0RfSUJNIHwg QVRBX01BU1RFUik7Ci0JICAgIERFTEFZKDEwKTsKLSAgICAJICAgIGVyciA9IEFUQV9JRFhfSU5C KGNoLCBBVEFfRVJST1IpOwotCSAgICBsc2IgPSBBVEFfSURYX0lOQihjaCwgQVRBX0NZTF9MU0Ip OwotCSAgICBtc2IgPSBBVEFfSURYX0lOQihjaCwgQVRBX0NZTF9NU0IpOwotCSAgICBzdGF0MCA9 IEFUQV9JRFhfSU5CKGNoLCBBVEFfU1RBVFVTKTsKLQkgICAgaWYgKGJvb3R2ZXJib3NlKQotCQlh dGFfcHJpbnRmKGNoLCBBVEFfTUFTVEVSLAotCQkJICAgInN0YXQ9MHglMDJ4IGVycj0weCUwMngg bHNiPTB4JTAyeCBtc2I9MHglMDJ4XG4iLAotCQkJICAgc3RhdDAsIGVyciwgbHNiLCBtc2IpOwot CSAgICBpZiAoIShzdGF0MCAmIEFUQV9TX0JVU1kpKSB7Ci0JCWlmICgoZXJyICYgMHg3ZikgPT0g QVRBX0VfSUxJKSB7Ci0JCSAgICBpZiAobHNiID09IEFUQVBJX01BR0lDX0xTQiAmJiBtc2IgPT0g QVRBUElfTUFHSUNfTVNCKSB7Ci0JCQljaC0+ZGV2aWNlcyB8PSBBVEFfQVRBUElfTUFTVEVSOwot CQkgICAgfQotCQkgICAgZWxzZSBpZiAoc3RhdDAgJiBBVEFfU19SRUFEWSkgewotCQkJY2gtPmRl dmljZXMgfD0gQVRBX0FUQV9NQVNURVI7Ci0JCSAgICB9Ci0JCX0KLQkJZWxzZSBpZiAoKHN0YXQw ICYgMHg0ZikgJiYgZXJyID09IGxzYiAmJiBlcnIgPT0gbXNiKSB7Ci0JCSAgICBzdGF0MCB8PSBB VEFfU19CVVNZOwotCQl9Ci0JICAgIH0KLQl9Ci0JaWYgKHN0YXQxICYgQVRBX1NfQlVTWSkgewot CSAgICBBVEFfSURYX09VVEIoY2gsIEFUQV9EUklWRSwgQVRBX0RfSUJNIHwgQVRBX1NMQVZFKTsK LQkgICAgREVMQVkoMTApOwotICAgIAkgICAgZXJyID0gQVRBX0lEWF9JTkIoY2gsIEFUQV9FUlJP Uik7Ci0JICAgIGxzYiA9IEFUQV9JRFhfSU5CKGNoLCBBVEFfQ1lMX0xTQik7Ci0JICAgIG1zYiA9 IEFUQV9JRFhfSU5CKGNoLCBBVEFfQ1lMX01TQik7Ci0JICAgIHN0YXQxID0gQVRBX0lEWF9JTkIo Y2gsIEFUQV9TVEFUVVMpOwotCSAgICBpZiAoYm9vdHZlcmJvc2UpCi0JCWF0YV9wcmludGYoY2gs IEFUQV9TTEFWRSwKLQkJCSAgICIgc3RhdD0weCUwMnggZXJyPTB4JTAyeCBsc2I9MHglMDJ4IG1z Yj0weCUwMnhcbiIsCi0JCQkgICBzdGF0MSwgZXJyLCBsc2IsIG1zYik7Ci0JICAgIGlmICghKHN0 YXQxICYgQVRBX1NfQlVTWSkpIHsKLQkJaWYgKChlcnIgJiAweDdmKSA9PSBBVEFfRV9JTEkpIHsK LQkJICAgIGlmIChsc2IgPT0gQVRBUElfTUFHSUNfTFNCICYmIG1zYiA9PSBBVEFQSV9NQUdJQ19N U0IpIHsKLQkJCWNoLT5kZXZpY2VzIHw9IEFUQV9BVEFQSV9TTEFWRTsKLQkJICAgIH0KLQkJICAg IGVsc2UgaWYgKHN0YXQxICYgQVRBX1NfUkVBRFkpIHsKLQkJCWNoLT5kZXZpY2VzIHw9IEFUQV9B VEFfU0xBVkU7Ci0JCSAgICB9Ci0JCX0KLQkJZWxzZSBpZiAoKHN0YXQxICYgMHg0ZikgJiYgZXJy ID09IGxzYiAmJiBlcnIgPT0gbXNiKSB7Ci0JCSAgICBzdGF0MSB8PSBBVEFfU19CVVNZOwotCQl9 Ci0JICAgIH0KLQl9Ci0JaWYgKG1hc2sgPT0gMHgwMSkJLyogd2FpdCBmb3IgbWFzdGVyIG9ubHkg Ki8KLQkgICAgaWYgKCEoc3RhdDAgJiBBVEFfU19CVVNZKSB8fCAoc3RhdDAgPT0gMHhmZiAmJiB0 aW1lb3V0ID4gMjApKQotCQlicmVhazsKLQlpZiAobWFzayA9PSAweDAyKQkvKiB3YWl0IGZvciBz bGF2ZSBvbmx5ICovCi0JICAgIGlmICghKHN0YXQxICYgQVRBX1NfQlVTWSkgfHwgKHN0YXQxID09 IDB4ZmYgJiYgdGltZW91dCA+IDIwKSkKLQkJYnJlYWs7Ci0JaWYgKG1hc2sgPT0gMHgwMykJLyog d2FpdCBmb3IgYm90aCBtYXN0ZXIgJiBzbGF2ZSAqLwotCSAgICBpZiAoKCEoc3RhdDAgJiBBVEFf U19CVVNZKSB8fCAoc3RhdDAgPT0gMHhmZiAmJiB0aW1lb3V0ID4gMjApKSAmJgotCSAgICAgICAg KCEoc3RhdDEgJiBBVEFfU19CVVNZKSB8fCAoc3RhdDEgPT0gMHhmZiAmJiB0aW1lb3V0ID4gMjAp KSkKLQkJYnJlYWs7Ci0JREVMQVkoMTAwMDAwKTsKLSAgICB9CQotCi0gICAgaWYgKHN0YXQwICYg QVRBX1NfQlVTWSkKLQltYXNrICY9IH4weDAxOwotICAgIGlmIChzdGF0MSAmIEFUQV9TX0JVU1kp Ci0JbWFzayAmPSB+MHgwMjsKKyAgICBBVEFfSURYX0lOQihjaCwgQVRBX0FMVFNUQVQpOworCisg ICAgZm9yIChqID0gMDsgaiA8IEFUQV9USU1FT1VUOyBqKyspIHsKKyAgICAgICAgc3RhdCA9IEFU QV9JRFhfSU5CKGNoLCBBVEFfQUxUU1RBVCk7CisgICAgICAgIGlmICghKHN0YXQgJiBBVEFfU19C VVNZKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoaiA9PSBBVEFfVElNRU9V VCkgeworICAgICAgICBpZiAoYm9vdHZlcmJvc2UpCisgICAgICAgICAgICBhdGFfcHJpbnRmKGNo LCAtMSwgImlkZW50aWZ5IHRpbWVvdXQgJTAyeFxuIiwgc3RhdCk7CisgICAgICAgIHJldHVybiAt MTsKKyAgICB9CisKKyAgICBpZiAoc3RhdCAmIEFUQV9TX0VSUk9SKSB7CisgICAgICAgIEFUQV9J RFhfSU5CKGNoLCBBVEFfU1RBVFVTKTsKKyAgICAgICAgaWYgKGJvb3R2ZXJib3NlKQorICAgICAg ICAgICAgYXRhX3ByaW50ZihjaCwgLTEsICJpZGVudGlmeSBlcnJvciAlMDJ4XG4iLCBzdGF0KTsK KyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICghKHN0YXQgJiBBVEFfU19EUlEp KSB7CisgICAgICAgIEFUQV9JRFhfSU5CKGNoLCBBVEFfU1RBVFVTKTsKKyAgICAgICAgaWYgKGJv b3R2ZXJib3NlKQorICAgICAgICAgICAgYXRhX3ByaW50ZihjaCwgLTEsICJpZGVudGlmeSBkcnEg JTAyeFxuIiwgc3RhdCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmb3IgKGkg PSAwOyBpIDwgMjU2OyBpKyspIHsKKyAgICAgICAgQVRBX0lEWF9JTlcoY2gsIEFUQV9EQVRBKTsK KyAgICB9CisKKyAgICBBVEFfSURYX0lOQihjaCwgQVRBX1NUQVRVUyk7CisgICAgcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB2b2lkCithdGFfcmVzZXQoc3RydWN0IGF0YV9jaGFubmVsICpjaCkKK3sK KyAgICBpbnQgbWFzayA9IDA7CisgICAgaW50IGRldmljZXMgPSAwOworICAgIGludCByZXQ7CisK KyAgICBjaC0+ZGV2aWNlcyA9IDA7CisKKyAgICAvKiByZXNldCAqLworICAgIGlmIChhdGFfc29m dF9yZXNldChjaCkpIHsKKyAgICAgICAgaWYgKGJvb3R2ZXJib3NlKQorICAgICAgICAgICAgYXRh X3ByaW50ZihjaCwgLTEsICJlcnJvciBvciB0aW1lb3V0IHdoaWxlIHJlc2V0XG4iKTsKKyAgICAg ICAgcmV0dXJuOworICAgIH0KKworICAgIC8qIGNoZWNrIE1BU1RFUiAqLworICAgIGlmIChhdGFf ZGV2aWNlX3NlbGVjdChjaCwgQVRBX01BU1RFUikpCisgICAgICAgIHJldHVybjsKKyAgICByZXQg PSBhdGFfY2hlY2tfZGV2aWNlX2V4aXN0ZW5jZShjaCk7CisgICAgaWYgKHJldCA+IDApIHsKKyAg ICAgICAgbWFzayB8PSAweDAxOworICAgIH0KKworICAgIC8qIGNoZWNrIFNMQVZFICovCisgICAg aWYgKGF0YV9kZXZpY2Vfc2VsZWN0KGNoLCBBVEFfU0xBVkUpKQorICAgICAgICByZXR1cm47Cisg ICAgcmV0ID0gYXRhX2NoZWNrX2RldmljZV9leGlzdGVuY2UoY2gpOworICAgIGlmIChyZXQgPiAw KSB7CisgICAgICAgIG1hc2sgfD0gMHgwMjsKKyAgICB9CisKKyAgICAvKiBBVEEgTUFTVEVSICov CisgICAgaWYgKG1hc2sgJiAweDAxKSB7CisgICAgICAgIGlmICghYXRhX2RldmljZV9zZWxlY3Qo Y2gsIEFUQV9NQVNURVIpKQorICAgICAgICAgICAgaWYgKCFpZGVudGlmeV9kZXZpY2UoY2gsIEFU QV9NQVNURVIsIEFUQV9JREVOVElGWV9ERVZJQ0UpKQorICAgICAgICAgICAgICAgIGRldmljZXMg fD0gQVRBX0FUQV9NQVNURVI7CisgICAgfQorCisgICAgLyogQVRBIFNMQVZFICovCisgICAgaWYg KG1hc2sgJiAweDAyKSB7CisgICAgICAgIGlmICghYXRhX2RldmljZV9zZWxlY3QoY2gsIEFUQV9T TEFWRSkpCisgICAgICAgICAgICBpZiAoIWlkZW50aWZ5X2RldmljZShjaCwgQVRBX1NMQVZFLCBB VEFfSURFTlRJRllfREVWSUNFKSkKKyAgICAgICAgICAgICAgICBkZXZpY2VzIHw9IEFUQV9BVEFf U0xBVkU7CisgICAgfQogCiAgICAgaWYgKGJvb3R2ZXJib3NlKQotCWF0YV9wcmludGYoY2gsIC0x LAotCQkgICAicmVzZXQgdHAyIG1hc2s9JTAyeCBzdGF0MD0lMDJ4IHN0YXQxPSUwMnggZGV2aWNl cz0weCViXG4iLAotCQkgICBtYXNrLCBzdGF0MCwgc3RhdDEsIGNoLT5kZXZpY2VzLAotCQkgICAi XDIwXDRBVEFQSV9TTEFWRVwzQVRBUElfTUFTVEVSXDJBVEFfU0xBVkVcMUFUQV9NQVNURVIiKTsK LSNpZiAwCi0gICAgaWYgKCFtYXNrKQotCXJldHVybjsKLQotICAgIGlmIChtYXNrICYgMHgwMSAm JiBvc3RhdDAgIT0gMHgwMCAmJgotICAgICAgICAhKGNoLT5kZXZpY2VzICYgKEFUQV9BVEFfTUFT VEVSIHwgQVRBX0FUQVBJX01BU1RFUikpKSB7Ci0JQVRBX0lEWF9PVVRCKGNoLCBBVEFfRFJJVkUs IEFUQV9EX0lCTSB8IEFUQV9NQVNURVIpOwotCURFTEFZKDEwKTsKLQlBVEFfSURYX09VVEIoY2gs IEFUQV9FUlJPUiwgMHg1OCk7Ci0JQVRBX0lEWF9PVVRCKGNoLCBBVEFfQ1lMX0xTQiwgMHhhNSk7 Ci0JZXJyID0gQVRBX0lEWF9JTkIoY2gsIEFUQV9FUlJPUik7Ci0JbHNiID0gQVRBX0lEWF9JTkIo Y2gsIEFUQV9DWUxfTFNCKTsKLQlpZiAoYm9vdHZlcmJvc2UpCi0JICAgIGF0YV9wcmludGYoY2gs IEFUQV9NQVNURVIsICJBVEEgZXJyPTB4JTAyeCBsc2I9MHglMDJ4XG4iLCBlcnIsIGxzYik7Ci0J aWYgKGVyciAhPSAweDU4ICYmIGxzYiA9PSAweGE1KQotCSAgICBjaC0+ZGV2aWNlcyB8PSBBVEFf QVRBX01BU1RFUjsKLSAgICB9Ci0gICAgaWYgKG1hc2sgJiAweDAyICYmIG9zdGF0MSAhPSAweDAw ICYmCi0JIShjaC0+ZGV2aWNlcyAmIChBVEFfQVRBX1NMQVZFIHwgQVRBX0FUQVBJX1NMQVZFKSkp IHsKLQlBVEFfSURYX09VVEIoY2gsIEFUQV9EUklWRSwgQVRBX0RfSUJNIHwgQVRBX1NMQVZFKTsK LQlERUxBWSgxMCk7Ci0JQVRBX0lEWF9PVVRCKGNoLCBBVEFfRVJST1IsIDB4NTgpOwotCUFUQV9J RFhfT1VUQihjaCwgQVRBX0NZTF9MU0IsIDB4YTUpOwotCWVyciA9IEFUQV9JRFhfSU5CKGNoLCBB VEFfRVJST1IpOwotCWxzYiA9IEFUQV9JRFhfSU5CKGNoLCBBVEFfQ1lMX0xTQik7Ci0JaWYgKGJv b3R2ZXJib3NlKQotCSAgICBhdGFfcHJpbnRmKGNoLCBBVEFfU0xBVkUsICJBVEEgZXJyPTB4JTAy eCBsc2I9MHglMDJ4XG4iLCBlcnIsIGxzYik7Ci0JaWYgKGVyciAhPSAweDU4ICYmIGxzYiA9PSAw eGE1KQotCSAgICBjaC0+ZGV2aWNlcyB8PSBBVEFfQVRBX1NMQVZFOworICAgICAgICBhdGFfcHJp bnRmKGNoLCAtMSwgInJlc2V0IGNoZWNrIEFUQTogZGV2aWNlcz0lMDJ4XG4iLCBkZXZpY2VzKTsK KworICAgIC8qIEFUQVBJIE1BU1RFUiAqLworICAgIGlmIChtYXNrICYgMHgwMSkgeworICAgICAg ICBpZiAoIWF0YV9kZXZpY2Vfc2VsZWN0KGNoLCBBVEFfTUFTVEVSKSkKKyAgICAgICAgICAgIGlm ICghaWRlbnRpZnlfZGV2aWNlKGNoLCBBVEFfTUFTVEVSLCBBVEFfSURFTlRJRllfUEFDS0VUX0RF VklDRSkpCisgICAgICAgICAgICAgICAgZGV2aWNlcyB8PSBBVEFfQVRBUElfTUFTVEVSOworICAg IH0KKworICAgIC8qIEFUQVBJIFNMQVZFICovCisgICAgaWYgKG1hc2sgJiAweDAyKSB7CisgICAg ICAgIGlmICghYXRhX2RldmljZV9zZWxlY3QoY2gsIEFUQV9TTEFWRSkpCisgICAgICAgICAgICBp ZiAoIWlkZW50aWZ5X2RldmljZShjaCwgQVRBX1NMQVZFLCBBVEFfSURFTlRJRllfUEFDS0VUX0RF VklDRSkpCisgICAgICAgICAgICAgICAgZGV2aWNlcyB8PSBBVEFfQVRBUElfU0xBVkU7CiAgICAg fQogCiAgICAgaWYgKGJvb3R2ZXJib3NlKQotCWF0YV9wcmludGYoY2gsIC0xLCAicmVzZXQgdHAz IGRldmljZXM9MHglYlxuIiwgY2gtPmRldmljZXMsCi0JCSAgICJcMjBcNEFUQVBJX1NMQVZFXDNB VEFQSV9NQVNURVJcMkFUQV9TTEFWRVwxQVRBX01BU1RFUiIpOwotI2VuZGlmCisgICAgICAgIGF0 YV9wcmludGYoY2gsIC0xLCAicmVzZXQgY2hlY2sgQVRBUEk6IGRldmljZXM9JTAyeFxuIiwgZGV2 aWNlcyk7CisKKyAgICBpZiAoISgoZGV2aWNlcyAmIEFUQV9BVEFfTUFTVEVSKSAmJiAoZGV2aWNl cyAmIEFUQV9BVEFQSV9NQVNURVIpKSkKKyAgICAgICAgY2gtPmRldmljZXMgfD0gKGRldmljZXMg JiBBVEFfTUFTVEVSX01BU0spOworCisgICAgaWYgKCEoKGRldmljZXMgJiBBVEFfQVRBX1NMQVZF KSAmJiAoZGV2aWNlcyAmIEFUQV9BVEFQSV9TTEFWRSkpKQorICAgICAgICBjaC0+ZGV2aWNlcyB8 PSAoZGV2aWNlcyAmIEFUQV9TTEFWRV9NQVNLKTsKKworICAgIGlmIChib290dmVyYm9zZSkKKyAg ICAgICAgYXRhX3ByaW50ZihjaCwgLTEsICJyZXNldCBjaGVjayBmaW5hbDogZGV2aWNlcz0lMDJ4 XG4iLCBjaC0+ZGV2aWNlcyk7CisKKyAgICByZXR1cm47CiB9CiAKIHN0YXRpYyBpbnQK --Multipart_Thu__16_Oct_2003_23_17_47_+0900_0865e200--