From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HSJIO-0007CV-O4 for qemu-devel@nongnu.org; Fri, 16 Mar 2007 16:45:04 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HSJIM-0007Bo-M0 for qemu-devel@nongnu.org; Fri, 16 Mar 2007 16:45:03 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HSJIM-0007Bd-EL for qemu-devel@nongnu.org; Fri, 16 Mar 2007 15:45:02 -0500 Received: from wr-out-0506.google.com ([64.233.184.229]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1HSJHB-0005hT-N7 for qemu-devel@nongnu.org; Fri, 16 Mar 2007 16:43:50 -0400 Received: by wr-out-0506.google.com with SMTP id q50so690058wrq for ; Fri, 16 Mar 2007 13:43:48 -0700 (PDT) Message-ID: Date: Fri, 16 Mar 2007 21:43:47 +0100 From: "andrzej zaborowski" Sender: balrogg@gmail.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_98818_17771475.1174077827053" Subject: [Qemu-devel] [PATCH] Hitachi DSCM microdrive. PCMCIA bus support. Reply-To: balrogg@gmail.com, qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_98818_17771475.1174077827053 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline This emulates a hard drive present in various PDAs, that connects over PCMCIA and understands the CF-ATA command set. The drives series has names DSCM1xxxx. For this I add a simple API for PCMCIA cards and host slots. The monitor command "info pcmcia" lists sockets and cards that sit in them. I wasn't sure if I should put the code in a file separate from ide.c. Ideas? Cheers, Andrew ------=_Part_98818_17771475.1174077827053 Content-Type: text/plain; name=0001-Hitachi-DSCM-microdrive.-PCMCIA-bus-support.txt; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_ezd5687t Content-Disposition: attachment; filename="0001-Hitachi-DSCM-microdrive.-PCMCIA-bus-support.txt" RnJvbSBiZWEwOWFkMzhlMGQzMmJmMTg3ZGVmYTM3ZmY4ZmIxZWYyMjk3NzQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyemVqIFphYm9yb3dza2kgPGJhbHJvZ0B6YWJvci5vcmc+ CkRhdGU6IEZyaSwgMTYgTWFyIDIwMDcgMTU6MDA6MDUgKzAxMDAKU3ViamVjdDogW1BBVENIXSBI aXRhY2hpIERTQ00gbWljcm9kcml2ZS4gUENNQ0lBIGJ1cyBzdXBwb3J0LgoKLS0tCiBody9pZGUu YyAgfCAgNzQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0KIG1vbml0b3IuYyB8ICAgIDIgKwogdmwuYyAgICAgIHwgICA0MiArKysr CiB2bC5oICAgICAgfCAgIDUxICsrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDgzNCBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2h3L2lkZS5jIGIvaHcvaWRlLmMKaW5k ZXggOWU1NDUxZi4uMWM4MWM5OCAxMDA2NDQKLS0tIGEvaHcvaWRlLmMKKysrIGIvaHcvaWRlLmMK QEAgLTIsNiArMiw3IEBACiAgKiBRRU1VIElERSBkaXNrIGFuZCBDRC1ST00gRW11bGF0b3IKICAq IAogICogQ29weXJpZ2h0IChjKSAyMDAzIEZhYnJpY2UgQmVsbGFyZAorICogQ29weXJpZ2h0IChj KSAyMDA2IE9wZW5lZGhhbmQgTHRkLgogICogCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAgKiBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi U29mdHdhcmUiKSwgdG8gZGVhbApAQCAtMTMxLDYgKzEzMiw3IEBACiAjZGVmaW5lIFdJTl9TUEVD SUZZCQkJMHg5MSAvKiBzZXQgZHJpdmUgZ2VvbWV0cnkgdHJhbnNsYXRpb24gKi8KICNkZWZpbmUg V0lOX0RPV05MT0FEX01JQ1JPQ09ERQkJMHg5MgogI2RlZmluZSBXSU5fU1RBTkRCWU5PVzIJCQkw eDk0CisjZGVmaW5lIENGQV9JRExFSU1NRURJQVRFCQkweDk1IC8qIGZvcmNlIGRyaXZlIHRvIGJl Y29tZSAicmVhZHkiICovCiAjZGVmaW5lIFdJTl9TVEFOREJZMgkJCTB4OTYKICNkZWZpbmUgV0lO X1NFVElETEUyCQkJMHg5NwogI2RlZmluZSBXSU5fQ0hFQ0tQT1dFUk1PREUyCQkweDk4CkBAIC0x NDIsNyArMTQ0LDggQEAKICNkZWZpbmUgV0lOX1BJREVOVElGWQkJCTB4QTEgLyogaWRlbnRpZnkg QVRBUEkgZGV2aWNlCSovCiAjZGVmaW5lIFdJTl9RVUVVRURfU0VSVklDRQkJMHhBMgogI2RlZmlu ZSBXSU5fU01BUlQJCQkweEIwIC8qIHNlbGYtbW9uaXRvcmluZyBhbmQgcmVwb3J0aW5nICovCi0j ZGVmaW5lIENGQV9FUkFTRV9TRUNUT1JTICAgICAgIAkweEMwCisjZGVmaW5lIENGQV9BQ0NFU1Nf TUVUQURBVEFfU1RPUkFHRQkweEI4CisjZGVmaW5lIENGQV9FUkFTRV9TRUNUT1JTICAgICAgIAkw eEMwIC8qIG1pY3JvZHJpdmVzIGltcGxlbWVudCBhcyBOT1AgKi8KICNkZWZpbmUgV0lOX01VTFRS RUFECQkJMHhDNCAvKiByZWFkIHNlY3RvcnMgdXNpbmcgbXVsdGlwbGUgbW9kZSovCiAjZGVmaW5l IFdJTl9NVUxUV1JJVEUJCQkweEM1IC8qIHdyaXRlIHNlY3RvcnMgdXNpbmcgbXVsdGlwbGUgbW9k ZSAqLwogI2RlZmluZSBXSU5fU0VUTVVMVAkJCTB4QzYgLyogZW5hYmxlL2Rpc2FibGUgbXVsdGlw bGUgbW9kZSAqLwpAQCAtMTc2LDExICsxNzksMTMgQEAKICNkZWZpbmUgV0lOX0lERU5USUZZX0RN QQkJMHhFRSAvKiBzYW1lIGFzIFdJTl9JREVOVElGWSwgYnV0IERNQSAqLwogI2RlZmluZSBXSU5f U0VURkVBVFVSRVMJCQkweEVGIC8qIHNldCBzcGVjaWFsIGRyaXZlIGZlYXR1cmVzICovCiAjZGVm aW5lIEVYQUJZVEVfRU5BQkxFX05FU1QJCTB4RjAKKyNkZWZpbmUgSUJNX1NFTlNFX0NPTkRJVElP TgkJMHhGMCAvKiBtZWFzdXJlIGRpc2sgdGVtcGVyYXR1cmUgKi8KICNkZWZpbmUgV0lOX1NFQ1VS SVRZX1NFVF9QQVNTCQkweEYxCiAjZGVmaW5lIFdJTl9TRUNVUklUWV9VTkxPQ0sJCTB4RjIKICNk ZWZpbmUgV0lOX1NFQ1VSSVRZX0VSQVNFX1BSRVBBUkUJMHhGMwogI2RlZmluZSBXSU5fU0VDVVJJ VFlfRVJBU0VfVU5JVAkJMHhGNAogI2RlZmluZSBXSU5fU0VDVVJJVFlfRlJFRVpFX0xPQ0sJMHhG NQorI2RlZmluZSBDRkFfV0VBUl9MRVZFTAkJCTB4RjUgLyogbWljcm9kcml2ZXMgaW1wbGVtZW50 IGFzIE5PUCAqLwogI2RlZmluZSBXSU5fU0VDVVJJVFlfRElTQUJMRQkJMHhGNgogI2RlZmluZSBX SU5fUkVBRF9OQVRJVkVfTUFYCQkweEY4IC8qIHJldHVybiB0aGUgbmF0aXZlIG1heGltdW0gYWRk cmVzcyAqLwogI2RlZmluZSBXSU5fU0VUX01BWAkJCTB4RjkKQEAgLTI4Miw2ICsyODcsMTIgQEAK ICNkZWZpbmUgQVNDX01FRElVTV9OT1RfUFJFU0VOVCAgICAgICAgICAgICAgIDB4M2EKICNkZWZp bmUgQVNDX1NBVklOR19QQVJBTUVURVJTX05PVF9TVVBQT1JURUQgIDB4MzkKIAorI2RlZmluZSBD RkFfTk9fRVJST1IgICAgICAgICAgICAweDAwCisjZGVmaW5lIENGQV9NSVNDX0VSUk9SICAgICAg ICAgIDB4MDkKKyNkZWZpbmUgQ0ZBX0lOVkFMSURfQ09NTUFORCAgICAgMHgyMAorI2RlZmluZSBD RkFfSU5WQUxJRF9BRERSRVNTICAgICAweDIxCisjZGVmaW5lIENGQV9BRERSRVNTX09WRVJGTE9X ICAgIDB4MmYKKwogI2RlZmluZSBTRU5TRV9OT05FICAgICAgICAgICAgMAogI2RlZmluZSBTRU5T RV9OT1RfUkVBRFkgICAgICAgMgogI2RlZmluZSBTRU5TRV9JTExFR0FMX1JFUVVFU1QgNQpAQCAt Mjk1LDYgKzMwNiw3IEBAIHR5cGVkZWYgdm9pZCBFbmRUcmFuc2ZlckZ1bmMoc3RydWN0IElERVN0 YXRlICopOwogdHlwZWRlZiBzdHJ1Y3QgSURFU3RhdGUgewogICAgIC8qIGlkZSBjb25maWcgKi8K ICAgICBpbnQgaXNfY2Ryb207CisgICAgaW50IGlzX2NmOwogICAgIGludCBjeWxpbmRlcnMsIGhl YWRzLCBzZWN0b3JzOwogICAgIGludDY0X3QgbmJfc2VjdG9yczsKICAgICBpbnQgbXVsdF9zZWN0 b3JzOwpAQCAtMzQ5LDYgKzM2MSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBJREVTdGF0ZSB7CiAgICAg dWludDhfdCBpb19idWZmZXJbTUFYX01VTFRfU0VDVE9SUyo1MTIgKyA0XTsKICAgICBRRU1VVGlt ZXIgKnNlY3Rvcl93cml0ZV90aW1lcjsgLyogb25seSB1c2VkIGZvciB3aW4yayBpbnN0YWwgaGFj ayAqLwogICAgIHVpbnQzMl90IGlycV9jb3VudDsgLyogY291bnRzIElSUXMgd2hlbiB1c2luZyB3 aW4yayBpbnN0YWxsIGhhY2sgKi8KKyAgICAvKiBDRi1BVEEgZXh0ZW5kZWQgZXJyb3IgKi8KKyAg ICB1aW50OF90IGV4dF9lcnJvcjsKKyAgICAvKiBDRi1BVEEgbWV0YWRhdGEgc3RvcmFnZSAqLwor ICAgIHVpbnQzMl90IG1kYXRhX3NpemU7CisgICAgdWludDhfdCAqbWRhdGFfc3RvcmFnZTsKKyAg ICBpbnQgbWVkaWFfY2hhbmdlZDsKIH0gSURFU3RhdGU7CiAKICNkZWZpbmUgQk1fU1RBVFVTX0RN QUlORyAweDAxCkBAIC01NDQsNiArNTYyLDc0IEBAIHN0YXRpYyB2b2lkIGlkZV9hdGFwaV9pZGVu dGlmeShJREVTdGF0ZSAqcykKICAgICBzLT5pZGVudGlmeV9zZXQgPSAxOwogfQogCitzdGF0aWMg dm9pZCBpZGVfY2ZhdGFfaWRlbnRpZnkoSURFU3RhdGUgKnMpCit7CisgICAgdWludDE2X3QgKnA7 CisgICAgdWludDMyX3QgY3VyX3NlYzsKKyAgICBjaGFyIGJ1ZlsyMF07CisKKyAgICBwID0gKHVp bnQxNl90ICopIHMtPmlkZW50aWZ5X2RhdGE7CisgICAgaWYgKHMtPmlkZW50aWZ5X3NldCkKKyAg ICAgICAgZ290byBmaWxsX2J1ZmZlcjsKKworICAgIG1lbXNldChwLCAwLCBzaXplb2Yocy0+aWRl bnRpZnlfZGF0YSkpOworCisgICAgY3VyX3NlYyA9IHMtPmN5bGluZGVycyAqIHMtPmhlYWRzICog cy0+c2VjdG9yczsKKworICAgIHB1dF9sZTE2KHAgKyAwLCAweDg0OGEpOwkJCS8qIENGIFN0b3Jh Z2UgQ2FyZCBzaWduYXR1cmUgKi8KKyAgICBwdXRfbGUxNihwICsgMSwgcy0+Y3lsaW5kZXJzKTsJ CS8qIERlZmF1bHQgY3lsaW5kZXJzICovCisgICAgcHV0X2xlMTYocCArIDMsIHMtPmhlYWRzKTsJ CQkvKiBEZWZhdWx0IGhlYWRzICovCisgICAgcHV0X2xlMTYocCArIDYsIHMtPnNlY3RvcnMpOwkJ LyogRGVmYXVsdCBzZWN0b3JzIHBlciB0cmFjayAqLworICAgIHB1dF9sZTE2KHAgKyA3LCBzLT5u Yl9zZWN0b3JzID4+IDE2KTsJLyogU2VjdG9ycyBwZXIgY2FyZCAqLworICAgIHB1dF9sZTE2KHAg KyA4LCBzLT5uYl9zZWN0b3JzKTsJCS8qIFNlY3RvcnMgcGVyIGNhcmQgKi8KKyAgICBzbnByaW50 ZihidWYsIHNpemVvZihidWYpLCAiUU0lMDVkIiwgcy0+ZHJpdmVfc2VyaWFsKTsKKyAgICBwYWRz dHIoKHVpbnQ4X3QgKikocCArIDEwKSwgYnVmLCAyMCk7CS8qIFNlcmlhbCBudW1iZXIgaW4gQVND SUkgKi8KKyAgICBwdXRfbGUxNihwICsgMjIsIDB4MDAwNCk7CQkJLyogRUNDIGJ5dGVzICovCisg ICAgcGFkc3RyKCh1aW50OF90ICopIChwICsgMjMpLCBRRU1VX1ZFUlNJT04sIDgpOwkvKiBGaXJt d2FyZSBSZXZpc2lvbiAqLworICAgIHBhZHN0cigodWludDhfdCAqKSAocCArIDI3KSwgIlFFTVUg TUlDUk9EUklWRSIsIDQwKTsvKiBNb2RlbCBudW1iZXIgKi8KKyNpZiBNQVhfTVVMVF9TRUNUT1JT ID4gMQorICAgIHB1dF9sZTE2KHAgKyA0NywgMHg4MDAwIHwgTUFYX01VTFRfU0VDVE9SUyk7Cisj ZWxzZQorICAgIHB1dF9sZTE2KHAgKyA0NywgMHgwMDAwKTsKKyNlbmRpZgorICAgIHB1dF9sZTE2 KHAgKyA0OSwgMHgwZjAwKTsJCQkvKiBDYXBhYmlsaXRpZXMgKi8KKyAgICBwdXRfbGUxNihwICsg NTEsIDB4MDAwMik7CQkJLyogUElPIGN5Y2xlIHRpbWluZyBtb2RlICovCisgICAgcHV0X2xlMTYo cCArIDUyLCAweDAwMDEpOwkJCS8qIERNQSBjeWNsZSB0aW1pbmcgbW9kZSAqLworICAgIHB1dF9s ZTE2KHAgKyA1MywgMHgwMDAzKTsJCQkvKiBUcmFuc2xhdGlvbiBwYXJhbXMgdmFsaWQgKi8KKyAg ICBwdXRfbGUxNihwICsgNTQsIHMtPmN5bGluZGVycyk7CQkvKiBDdXJyZW50IGN5bGluZGVycyAq LworICAgIHB1dF9sZTE2KHAgKyA1NSwgcy0+aGVhZHMpOwkJCS8qIEN1cnJlbnQgaGVhZHMgKi8K KyAgICBwdXRfbGUxNihwICsgNTYsIHMtPnNlY3RvcnMpOwkJLyogQ3VycmVudCBzZWN0b3JzICov CisgICAgcHV0X2xlMTYocCArIDU3LCBjdXJfc2VjKTsJCQkvKiBDdXJyZW50IGNhcGFjaXR5ICov CisgICAgcHV0X2xlMTYocCArIDU4LCBjdXJfc2VjID4+IDE2KTsJCS8qIEN1cnJlbnQgY2FwYWNp dHkgKi8KKyAgICBpZiAocy0+bXVsdF9zZWN0b3JzKQkJCS8qIE11bHRpcGxlIHNlY3RvciBzZXR0 aW5nICovCisgICAgICAgIHB1dF9sZTE2KHAgKyA1OSwgMHgxMDAgfCBzLT5tdWx0X3NlY3RvcnMp OworICAgIHB1dF9sZTE2KHAgKyA2MCwgcy0+bmJfc2VjdG9ycyk7CQkvKiBUb3RhbCBMQkEgc2Vj dG9ycyAqLworICAgIHB1dF9sZTE2KHAgKyA2MSwgcy0+bmJfc2VjdG9ycyA+PiAxNik7CS8qIFRv dGFsIExCQSBzZWN0b3JzICovCisgICAgcHV0X2xlMTYocCArIDYzLCAweDAyMDMpOwkJCS8qIE11 bHRpd29yZCBETUEgY2FwYWJpbGl0eSAqLworICAgIHB1dF9sZTE2KHAgKyA2NCwgMHgwMDAxKTsJ CQkvKiBGbG93IENvbnRyb2wgUElPIHN1cHBvcnQgKi8KKyAgICBwdXRfbGUxNihwICsgNjUsIDB4 MDA5Nik7CQkJLyogTWluLiBNdWx0aXdvcmQgRE1BIGN5Y2xlICovCisgICAgcHV0X2xlMTYocCAr IDY2LCAweDAwOTYpOwkJCS8qIFJlYy4gTXVsdGl3b3JkIERNQSBjeWNsZSAqLworICAgIHB1dF9s ZTE2KHAgKyA2OCwgMHgwMGI0KTsJCQkvKiBNaW4uIFBJTyBjeWNsZSB0aW1lICovCisgICAgcHV0 X2xlMTYocCArIDgyLCAweDQwMGMpOwkJCS8qIENvbW1hbmQgU2V0IHN1cHBvcnRlZCAqLworICAg IHB1dF9sZTE2KHAgKyA4MywgMHg3MDY4KTsJCQkvKiBDb21tYW5kIFNldCBzdXBwb3J0ZWQgKi8K KyAgICBwdXRfbGUxNihwICsgODQsIDB4NDAwMCk7CQkJLyogRmVhdHVyZXMgc3VwcG9ydGVkICov CisgICAgcHV0X2xlMTYocCArIDg1LCAweDAwMGMpOwkJCS8qIENvbW1hbmQgU2V0IGVuYWJsZWQg Ki8KKyAgICBwdXRfbGUxNihwICsgODYsIDB4NzA0NCk7CQkJLyogQ29tbWFuZCBTZXQgZW5hYmxl ZCAqLworICAgIHB1dF9sZTE2KHAgKyA4NywgMHg0MDAwKTsJCQkvKiBGZWF0dXJlcyBlbmFibGVk ICovCisgICAgcHV0X2xlMTYocCArIDkxLCAweDQwNjApOwkJCS8qIEN1cnJlbnQgQVBNIGxldmVs ICovCisgICAgcHV0X2xlMTYocCArIDEyOSwgMHgwMDAyKTsJCQkvKiBDdXJyZW50IGZlYXR1cmVz IG9wdGlvbiAqLworICAgIHB1dF9sZTE2KHAgKyAxMzAsIDB4MDAwNSk7CQkJLyogUmVhc3NpZ25l ZCBzZWN0b3JzICovCisgICAgcHV0X2xlMTYocCArIDEzMSwgMHgwMDAxKTsJCQkvKiBJbml0aWFs IHBvd2VyIG1vZGUgKi8KKyAgICBwdXRfbGUxNihwICsgMTMyLCAweDAwMDApOwkJCS8qIFVzZXIg c2lnbmF0dXJlICovCisgICAgcHV0X2xlMTYocCArIDE2MCwgMHg4MTAwKTsJCQkvKiBQb3dlciBy ZXF1aXJlbWVudCAqLworICAgIHB1dF9sZTE2KHAgKyAxNjEsIDB4ODAwMSk7CQkJLyogQ0YgY29t bWFuZCBzZXQgKi8KKworICAgIHMtPmlkZW50aWZ5X3NldCA9IDE7CisKK2ZpbGxfYnVmZmVyOgor ICAgIG1lbWNweShzLT5pb19idWZmZXIsIHAsIHNpemVvZihzLT5pZGVudGlmeV9kYXRhKSk7Cit9 CisKIHN0YXRpYyB2b2lkIGlkZV9zZXRfc2lnbmF0dXJlKElERVN0YXRlICpzKQogewogICAgIHMt PnNlbGVjdCAmPSAweGYwOyAvKiBjbGVhciBoZWFkICovCkBAIC0xNDk4LDYgKzE1ODQsNTkgQEAg c3RhdGljIHZvaWQgaWRlX2F0YXBpX2NtZChJREVTdGF0ZSAqcykKICAgICB9CiB9CiAKK3N0YXRp YyB2b2lkIGlkZV9jZmF0YV9tZXRhZGF0YV9pbnF1aXJ5KElERVN0YXRlICpzKQoreworICAgIHVp bnQxNl90ICpwOworICAgIHVpbnQzMl90IHNwZDsKKworICAgIHAgPSAodWludDE2X3QgKikgcy0+ aW9fYnVmZmVyOworICAgIG1lbXNldChwLCAwLCAweDIwMCk7CisgICAgc3BkID0gKChzLT5tZGF0 YV9zaXplIC0gMSkgPj4gOSkgKyAxOworCisgICAgcHV0X2xlMTYocCArIDAsIDB4MDAwMSk7CQkJ LyogRGF0YSBmb3JtYXQgcmV2aXNpb24gKi8KKyAgICBwdXRfbGUxNihwICsgMSwgMHgwMDAwKTsJ CQkvKiBNZWRpYSBwcm9wZXJ0eTogc2lsaWNvbiAqLworICAgIHB1dF9sZTE2KHAgKyAyLCBzLT5t ZWRpYV9jaGFuZ2VkKTsJCS8qIE1lZGlhIHN0YXR1cyAqLworICAgIHB1dF9sZTE2KHAgKyAzLCBz LT5tZGF0YV9zaXplICYgMHhmZmZmKTsJLyogQ2FwYWNpdHkgaW4gYnl0ZXMgKGxvdykgKi8KKyAg ICBwdXRfbGUxNihwICsgNCwgcy0+bWRhdGFfc2l6ZSA+PiAxNik7CS8qIENhcGFjaXR5IGluIGJ5 dGVzIChoaWdoKSAqLworICAgIHB1dF9sZTE2KHAgKyA1LCBzcGQgJiAweGZmZmYpOwkJLyogU2Vj dG9ycyBwZXIgZGV2aWNlIChsb3cpICovCisgICAgcHV0X2xlMTYocCArIDYsIHNwZCA+PiAxNik7 CQkJLyogU2VjdG9ycyBwZXIgZGV2aWNlIChoaWdoKSAqLworfQorCitzdGF0aWMgdm9pZCBpZGVf Y2ZhdGFfbWV0YWRhdGFfcmVhZChJREVTdGF0ZSAqcykKK3sKKyAgICB1aW50MTZfdCAqcDsKKwor ICAgIGlmICgoKHMtPmhjeWwgPDwgMTYpIHwgcy0+bGN5bCkgPDwgOSA+IHMtPm1kYXRhX3NpemUg KyAyKSB7CisgICAgICAgIHMtPnN0YXR1cyA9IEVSUl9TVEFUOworICAgICAgICBzLT5lcnJvciA9 IEFCUlRfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcCA9ICh1aW50MTZfdCAq KSBzLT5pb19idWZmZXI7CisgICAgbWVtc2V0KHAsIDAsIDB4MjAwKTsKKworICAgIHB1dF9sZTE2 KHAgKyAwLCBzLT5tZWRpYV9jaGFuZ2VkKTsJCS8qIE1lZGlhIHN0YXR1cyAqLworICAgIG1lbWNw eShwICsgMSwgcy0+bWRhdGFfc3RvcmFnZSArICgoKHMtPmhjeWwgPDwgMTYpIHwgcy0+bGN5bCkg PDwgOSksCisgICAgICAgICAgICAgICAgICAgIE1JTihNSU4ocy0+bWRhdGFfc2l6ZSAtICgoKHMt PmhjeWwgPDwgMTYpIHwgcy0+bGN5bCkgPDwgOSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzLT5uc2VjdG9yIDw8IDkpLCAweDIwMCAtIDIpKTsKK30KKworc3RhdGljIHZv aWQgaWRlX2NmYXRhX21ldGFkYXRhX3dyaXRlKElERVN0YXRlICpzKQoreworICAgIGlmICgoKHMt PmhjeWwgPDwgMTYpIHwgcy0+bGN5bCkgPDwgOSA+IHMtPm1kYXRhX3NpemUgKyAyKSB7CisgICAg ICAgIHMtPnN0YXR1cyA9IEVSUl9TVEFUOworICAgICAgICBzLT5lcnJvciA9IEFCUlRfRVJSOwor ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcy0+bWVkaWFfY2hhbmdlZCA9IDA7CisKKyAg ICBtZW1jcHkocy0+bWRhdGFfc3RvcmFnZSArICgoKHMtPmhjeWwgPDwgMTYpIHwgcy0+bGN5bCkg PDwgOSksCisgICAgICAgICAgICAgICAgICAgIHMtPmlvX2J1ZmZlciArIDIsCisgICAgICAgICAg ICAgICAgICAgIE1JTihNSU4ocy0+bWRhdGFfc2l6ZSAtICgoKHMtPmhjeWwgPDwgMTYpIHwgcy0+ bGN5bCkgPDwgOSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5uc2Vj dG9yIDw8IDkpLCAweDIwMCAtIDIpKTsKK30KKwogLyogY2FsbGVkIHdoZW4gdGhlIGluc2VydGVk IHN0YXRlIG9mIHRoZSBtZWRpYSBoYXMgY2hhbmdlZCAqLwogc3RhdGljIHZvaWQgY2Ryb21fY2hh bmdlX2NiKHZvaWQgKm9wYXF1ZSkKIHsKQEAgLTE2MTMsNyArMTc1MiwxMCBAQCBzdGF0aWMgdm9p ZCBpZGVfaW9wb3J0X3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDMyX3QgYWRkciwgdWludDMyX3Qg dmFsKQogICAgICAgICBzd2l0Y2godmFsKSB7CiAgICAgICAgIGNhc2UgV0lOX0lERU5USUZZOgog ICAgICAgICAgICAgaWYgKHMtPmJzICYmICFzLT5pc19jZHJvbSkgewotICAgICAgICAgICAgICAg IGlkZV9pZGVudGlmeShzKTsKKyAgICAgICAgICAgICAgICBpZiAoIXMtPmlzX2NmKQorICAgICAg ICAgICAgICAgICAgICBpZGVfaWRlbnRpZnkocyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAg ICAgICAgICAgICAgICAgICBpZGVfY2ZhdGFfaWRlbnRpZnkocyk7CiAgICAgICAgICAgICAgICAg cy0+c3RhdHVzID0gUkVBRFlfU1RBVCB8IFNFRUtfU1RBVDsKICAgICAgICAgICAgICAgICBpZGVf dHJhbnNmZXJfc3RhcnQocywgcy0+aW9fYnVmZmVyLCA1MTIsIGlkZV90cmFuc2Zlcl9zdG9wKTsK ICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xNjMxLDcgKzE3NzMsMTEgQEAgc3RhdGljIHZvaWQg aWRlX2lvcG9ydF93cml0ZSh2b2lkICpvcGFxdWUsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZh bCkKICAgICAgICAgICAgIGlkZV9zZXRfaXJxKHMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg ICAgIGNhc2UgV0lOX1NFVE1VTFQ6Ci0gICAgICAgICAgICBpZiAoKHMtPm5zZWN0b3IgJiAweGZm KSA+IE1BWF9NVUxUX1NFQ1RPUlMgfHwKKyAgICAgICAgICAgIGlmIChzLT5pc19jZiAmJiBzLT5u c2VjdG9yID09IDApIHsKKyAgICAgICAgICAgICAgICAvKiBEaXNhYmxlIFJlYWQgYW5kIFdyaXRl IE11bHRpcGxlICovCisgICAgICAgICAgICAgICAgcy0+bXVsdF9zZWN0b3JzID0gMDsKKyAgICAg ICAgICAgICAgICBzLT5zdGF0dXMgPSBSRUFEWV9TVEFUOworICAgICAgICAgICAgfSBlbHNlIGlm ICgocy0+bnNlY3RvciAmIDB4ZmYpID4gTUFYX01VTFRfU0VDVE9SUyB8fCAKICAgICAgICAgICAg ICAgICBzLT5uc2VjdG9yID09IDAgfHwKICAgICAgICAgICAgICAgICAocy0+bnNlY3RvciAmIChz LT5uc2VjdG9yIC0gMSkpICE9IDApIHsKICAgICAgICAgICAgICAgICBpZGVfYWJvcnRfY29tbWFu ZChzKTsKQEAgLTE2NjQsMTEgKzE4MTAsMTQgQEAgc3RhdGljIHZvaWQgaWRlX2lvcG9ydF93cml0 ZSh2b2lkICpvcGFxdWUsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKIAkgICAgbGJhNDgg PSAxOwogICAgICAgICBjYXNlIFdJTl9XUklURToKICAgICAgICAgY2FzZSBXSU5fV1JJVEVfT05D RToKKyAgICAgICAgY2FzZSBDRkFfV1JJVEVfU0VDVF9XT19FUkFTRToKKyAgICAgICAgY2FzZSBX SU5fV1JJVEVfVkVSSUZZOgogCSAgICBpZGVfY21kX2xiYTQ4X3RyYW5zZm9ybShzLCBsYmE0OCk7 CiAgICAgICAgICAgICBzLT5lcnJvciA9IDA7CiAgICAgICAgICAgICBzLT5zdGF0dXMgPSBTRUVL X1NUQVQgfCBSRUFEWV9TVEFUOwogICAgICAgICAgICAgcy0+cmVxX25iX3NlY3RvcnMgPSAxOwog ICAgICAgICAgICAgaWRlX3RyYW5zZmVyX3N0YXJ0KHMsIHMtPmlvX2J1ZmZlciwgNTEyLCBpZGVf c2VjdG9yX3dyaXRlKTsKKyAgICAgICAgICAgIHMtPm1lZGlhX2NoYW5nZWQgPSAxOwogICAgICAg ICAgICAgYnJlYWs7CiAJY2FzZSBXSU5fTVVMVFJFQURfRVhUOgogCSAgICBsYmE0OCA9IDE7CkBA IC0xNjgyLDYgKzE4MzEsNyBAQCBzdGF0aWMgdm9pZCBpZGVfaW9wb3J0X3dyaXRlKHZvaWQgKm9w YXF1ZSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQogICAgICAgICBjYXNlIFdJTl9NVUxU V1JJVEVfRVhUOgogCSAgICBsYmE0OCA9IDE7CiAgICAgICAgIGNhc2UgV0lOX01VTFRXUklURToK KyAgICAgICAgY2FzZSBDRkFfV1JJVEVfTVVMVElfV09fRVJBU0U6CiAgICAgICAgICAgICBpZiAo IXMtPm11bHRfc2VjdG9ycykKICAgICAgICAgICAgICAgICBnb3RvIGFib3J0X2NtZDsKIAkgICAg aWRlX2NtZF9sYmE0OF90cmFuc2Zvcm0ocywgbGJhNDgpOwpAQCAtMTY5Miw2ICsxODQyLDcgQEAg c3RhdGljIHZvaWQgaWRlX2lvcG9ydF93cml0ZSh2b2lkICpvcGFxdWUsIHVpbnQzMl90IGFkZHIs IHVpbnQzMl90IHZhbCkKICAgICAgICAgICAgIGlmIChuID4gcy0+cmVxX25iX3NlY3RvcnMpCiAg ICAgICAgICAgICAgICAgbiA9IHMtPnJlcV9uYl9zZWN0b3JzOwogICAgICAgICAgICAgaWRlX3Ry YW5zZmVyX3N0YXJ0KHMsIHMtPmlvX2J1ZmZlciwgNTEyICogbiwgaWRlX3NlY3Rvcl93cml0ZSk7 CisgICAgICAgICAgICBzLT5tZWRpYV9jaGFuZ2VkID0gMTsKICAgICAgICAgICAgIGJyZWFrOwog CWNhc2UgV0lOX1JFQURETUFfRVhUOgogCSAgICBsYmE0OCA9IDE7CkBAIC0xNzEwLDYgKzE4NjEs NyBAQCBzdGF0aWMgdm9pZCBpZGVfaW9wb3J0X3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDMyX3Qg YWRkciwgdWludDMyX3QgdmFsKQogICAgICAgICAgICAgICAgIGdvdG8gYWJvcnRfY21kOwogCSAg ICBpZGVfY21kX2xiYTQ4X3RyYW5zZm9ybShzLCBsYmE0OCk7CiAgICAgICAgICAgICBpZGVfc2Vj dG9yX3dyaXRlX2RtYShzKTsKKyAgICAgICAgICAgIHMtPm1lZGlhX2NoYW5nZWQgPSAxOwogICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0lOX1JFQURfTkFUSVZFX01BWF9FWFQ6CiAJ ICAgIGxiYTQ4ID0gMTsKQEAgLTE3MjAsNiArMTg3Miw3IEBAIHN0YXRpYyB2b2lkIGlkZV9pb3Bv cnRfd3JpdGUodm9pZCAqb3BhcXVlLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpCiAgICAg ICAgICAgICBpZGVfc2V0X2lycShzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl IFdJTl9DSEVDS1BPV0VSTU9ERTE6CisgICAgICAgIGNhc2UgV0lOX0NIRUNLUE9XRVJNT0RFMjoK ICAgICAgICAgICAgIHMtPm5zZWN0b3IgPSAweGZmOyAvKiBkZXZpY2UgYWN0aXZlIG9yIGlkbGUg Ki8KICAgICAgICAgICAgIHMtPnN0YXR1cyA9IFJFQURZX1NUQVQ7CiAgICAgICAgICAgICBpZGVf c2V0X2lycShzKTsKQEAgLTE3MzMsNiArMTg4NiwxNCBAQCBzdGF0aWMgdm9pZCBpZGVfaW9wb3J0 X3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQogICAgICAg ICAgICAgY2FzZSAweDgyOiAvKiB3cml0ZSBjYWNoZSBkaXNhYmxlICovCiAgICAgICAgICAgICBj YXNlIDB4YWE6IC8qIHJlYWQgbG9vay1haGVhZCBlbmFibGUgKi8KICAgICAgICAgICAgIGNhc2Ug MHg1NTogLyogcmVhZCBsb29rLWFoZWFkIGRpc2FibGUgKi8KKyAgICAgICAgICAgIGNhc2UgMHgw NTogLyogc2V0IGFkdmFuY2VkIHBvd2VyIG1hbmFnZW1lbnQgbW9kZSAqLworICAgICAgICAgICAg Y2FzZSAweDg1OiAvKiBkaXNhYmxlIGFkdmFuY2VkIHBvd2VyIG1hbmFnZW1lbnQgbW9kZSAqLwor ICAgICAgICAgICAgY2FzZSAweDY5OiAvKiBOT1AgKi8KKyAgICAgICAgICAgIGNhc2UgMHg2Nzog LyogTk9QICovCisgICAgICAgICAgICBjYXNlIDB4OTY6IC8qIE5PUCAqLworICAgICAgICAgICAg Y2FzZSAweDlhOiAvKiBOT1AgKi8KKyAgICAgICAgICAgIGNhc2UgMHg2NjogLyogZGlzYWJsZSBw b3dlciBvbiByZXNldCBhdCBzb2Z0IHJlc2V0ICovCisgICAgICAgICAgICBjYXNlIDB4Y2M6IC8q IGVuYWJsZSBwb3dlciBvbiByZXNldCBhdCBzb2Z0IHJlc2V0ICovCiAgICAgICAgICAgICAgICAg cy0+c3RhdHVzID0gUkVBRFlfU1RBVCB8IFNFRUtfU1RBVDsKICAgICAgICAgICAgICAgICBpZGVf c2V0X2lycShzKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE3NzIsNyArMTkzMywxMSBA QCBzdGF0aWMgdm9pZCBpZGVfaW9wb3J0X3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDMyX3QgYWRk ciwgdWludDMyX3QgdmFsKQogICAgICAgICAgICAgaWRlX3NldF9pcnEocyk7CiAgICAgICAgICAg ICBicmVhazsKIAljYXNlIFdJTl9TVEFOREJZTk9XMToKKwljYXNlIFdJTl9TVEFOREJZTk9XMjoK ICAgICAgICAgY2FzZSBXSU5fSURMRUlNTUVESUFURToKKyAgICAgICAgY2FzZSBDRkFfSURMRUlN TUVESUFURToKKyAgICAgICAgY2FzZSBXSU5fU0VUSURMRTE6CisgICAgICAgIGNhc2UgV0lOX1NF VElETEUyOgogCSAgICBzLT5zdGF0dXMgPSBSRUFEWV9TVEFUOwogICAgICAgICAgICAgaWRlX3Nl dF9pcnEocyk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE4MTAsNiArMTk3NSw3OSBAQCBzdGF0 aWMgdm9pZCBpZGVfaW9wb3J0X3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDMyX3QgYWRkciwgdWlu dDMyX3QgdmFsKQogICAgICAgICAgICAgaWRlX3RyYW5zZmVyX3N0YXJ0KHMsIHMtPmlvX2J1ZmZl ciwgQVRBUElfUEFDS0VUX1NJWkUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlk ZV9hdGFwaV9jbWQpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8qIENGLUFUQSBjb21t YW5kcyAqLworICAgICAgICBjYXNlIENGQV9SRVFfRVhUX0VSUk9SX0NPREU6CisgICAgICAgICAg ICBpZiAoIXMtPmlzX2NmKQorICAgICAgICAgICAgICAgIGdvdG8gYWJvcnRfY21kOworICAgICAg ICAgICAgcy0+ZXJyb3IgPSAweDA5OyAgICAvKiBtaXNjZWxsYW5lb3VzIGVycm9yICovCisgICAg ICAgICAgICBzLT5zdGF0dXMgPSBSRUFEWV9TVEFUOworICAgICAgICAgICAgaWRlX3NldF9pcnEo cyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDRkFfRVJBU0VfU0VDVE9SUzoK KyAgICAgICAgY2FzZSBDRkFfV0VBUl9MRVZFTDoKKyAgICAgICAgICAgIGlmICghcy0+aXNfY2Yp CisgICAgICAgICAgICAgICAgZ290byBhYm9ydF9jbWQ7CisgICAgICAgICAgICBpZiAodmFsID09 IENGQV9XRUFSX0xFVkVMKQorICAgICAgICAgICAgICAgIHMtPm5zZWN0b3IgPSAwOworICAgICAg ICAgICAgaWYgKHZhbCA9PSBDRkFfRVJBU0VfU0VDVE9SUykKKyAgICAgICAgICAgICAgICBzLT5t ZWRpYV9jaGFuZ2VkID0gMTsKKyAgICAgICAgICAgIHMtPmVycm9yID0gMHgwMDsKKyAgICAgICAg ICAgIHMtPnN0YXR1cyA9IFJFQURZX1NUQVQ7CisgICAgICAgICAgICBpZGVfc2V0X2lycShzKTsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENGQV9UUkFOU0xBVEVfU0VDVE9SOgor ICAgICAgICAgICAgaWYgKCFzLT5pc19jZikKKyAgICAgICAgICAgICAgICBnb3RvIGFib3J0X2Nt ZDsKKyAgICAgICAgICAgIHMtPmVycm9yID0gMHgwMDsKKyAgICAgICAgICAgIHMtPnN0YXR1cyA9 IFJFQURZX1NUQVQ7CisgICAgICAgICAgICBtZW1zZXQocy0+aW9fYnVmZmVyLCAwLCAweDIwMCk7 CisgICAgICAgICAgICBzLT5pb19idWZmZXJbMHgwMF0gPSBzLT5oY3lsOwkJCS8qIEN5bCBNU0Ig Ki8KKyAgICAgICAgICAgIHMtPmlvX2J1ZmZlclsweDAxXSA9IHMtPmxjeWw7CQkJLyogQ3lsIExT QiAqLworICAgICAgICAgICAgcy0+aW9fYnVmZmVyWzB4MDJdID0gcy0+c2VsZWN0OwkJCS8qIEhl YWQgKi8KKyAgICAgICAgICAgIHMtPmlvX2J1ZmZlclsweDAzXSA9IHMtPnNlY3RvcjsJCQkvKiBT ZWN0b3IgKi8KKyAgICAgICAgICAgIHMtPmlvX2J1ZmZlclsweDA0XSA9IGlkZV9nZXRfc2VjdG9y KHMpID4+IDE2OwkvKiBMQkEgTVNCICovCisgICAgICAgICAgICBzLT5pb19idWZmZXJbMHgwNV0g PSBpZGVfZ2V0X3NlY3RvcihzKSA+PiA4OwkvKiBMQkEgKi8KKyAgICAgICAgICAgIHMtPmlvX2J1 ZmZlclsweDA2XSA9IGlkZV9nZXRfc2VjdG9yKHMpID4+IDA7CS8qIExCQSBMU0IgKi8KKyAgICAg ICAgICAgIHMtPmlvX2J1ZmZlclsweDEzXSA9IDB4MDA7CQkJCS8qIEVyYXNlIGZsYWcgKi8KKyAg ICAgICAgICAgIHMtPmlvX2J1ZmZlclsweDE4XSA9IDB4MDA7CQkJCS8qIEhvdCBjb3VudCAqLwor ICAgICAgICAgICAgcy0+aW9fYnVmZmVyWzB4MTldID0gMHgwMDsJCQkJLyogSG90IGNvdW50ICov CisgICAgICAgICAgICBzLT5pb19idWZmZXJbMHgxYV0gPSAweDAxOwkJCQkvKiBIb3QgY291bnQg Ki8KKyAgICAgICAgICAgIGlkZV90cmFuc2Zlcl9zdGFydChzLCBzLT5pb19idWZmZXIsIDB4MjAw LCBpZGVfdHJhbnNmZXJfc3RvcCk7CisgICAgICAgICAgICBpZGVfc2V0X2lycShzKTsKKyAgICAg ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENGQV9BQ0NFU1NfTUVUQURBVEFfU1RPUkFHRToK KyAgICAgICAgICAgIGlmICghcy0+aXNfY2YpCisgICAgICAgICAgICAgICAgZ290byBhYm9ydF9j bWQ7CisgICAgICAgICAgICBzd2l0Y2ggKHMtPmZlYXR1cmUpIHsKKyAgICAgICAgICAgIGNhc2Ug MHgwMjoJLyogSW5xdWlyeSBNZXRhZGF0YSBTdG9yYWdlICovCisgICAgICAgICAgICAgICAgaWRl X2NmYXRhX21ldGFkYXRhX2lucXVpcnkocyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICBjYXNlIDB4MDM6CS8qIFJlYWQgTWV0YWRhdGEgU3RvcmFnZSAqLworICAgICAgICAg ICAgICAgIGlkZV9jZmF0YV9tZXRhZGF0YV9yZWFkKHMpOworICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgY2FzZSAweDA0OgkvKiBXcml0ZSBNZXRhZGF0YSBTdG9yYWdlICovCisg ICAgICAgICAgICAgICAgaWRlX2NmYXRhX21ldGFkYXRhX3dyaXRlKHMpOworICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBnb3RvIGFi b3J0X2NtZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlkZV90cmFuc2Zlcl9zdGFydChz LCBzLT5pb19idWZmZXIsIDB4MjAwLCBpZGVfdHJhbnNmZXJfc3RvcCk7CisgICAgICAgICAgICBz LT5zdGF0dXMgPSAweDAwOyAvKiBOT1RFOiBSRUFEWSBpcyBfbm90XyBzZXQgKi8KKyAgICAgICAg ICAgIGlkZV9zZXRfaXJxKHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSUJN X1NFTlNFX0NPTkRJVElPTjoKKyAgICAgICAgICAgIGlmICghcy0+aXNfY2YpCisgICAgICAgICAg ICAgICAgZ290byBhYm9ydF9jbWQ7CisgICAgICAgICAgICBzd2l0Y2ggKHMtPmZlYXR1cmUpIHsK KyAgICAgICAgICAgIGNhc2UgMHgwMTogIC8qIHNlbnNlIHRlbXBlcmF0dXJlIGluIGRldmljZSAq LworICAgICAgICAgICAgICAgIHMtPm5zZWN0b3IgPSAweDUwOyAgICAgIC8qICsyMCBDICovCisg ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg ICAgIGdvdG8gYWJvcnRfY21kOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcy0+c3RhdHVz ID0gUkVBRFlfU1RBVDsKKyAgICAgICAgICAgIGlkZV9zZXRfaXJxKHMpOworICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIGFib3J0X2NtZDoKICAgICAgICAgICAg IGlkZV9hYm9ydF9jb21tYW5kKHMpOwpAQCAtMjAxNSw3ICsyMjUzLDEwIEBAIHN0YXRpYyB2b2lk IGlkZV9kdW1teV90cmFuc2Zlcl9zdG9wKElERVN0YXRlICpzKQogCiBzdGF0aWMgdm9pZCBpZGVf cmVzZXQoSURFU3RhdGUgKnMpCiB7Ci0gICAgcy0+bXVsdF9zZWN0b3JzID0gTUFYX01VTFRfU0VD VE9SUzsKKyAgICBpZiAocy0+aXNfY2YpCisgICAgICAgIHMtPm11bHRfc2VjdG9ycyA9IDA7Cisg ICAgZWxzZQorICAgICAgICBzLT5tdWx0X3NlY3RvcnMgPSBNQVhfTVVMVF9TRUNUT1JTOwogICAg IHMtPmN1cl9kcml2ZSA9IHM7CiAgICAgcy0+c2VsZWN0ID0gMHhhMDsKICAgICBzLT5zdGF0dXMg PSBSRUFEWV9TVEFUOwpAQCAtMjAyNCw2ICsyMjY1LDcgQEAgc3RhdGljIHZvaWQgaWRlX3Jlc2V0 KElERVN0YXRlICpzKQogICAgICAgIGFjY2Vzc2VzICovCiAgICAgcy0+ZW5kX3RyYW5zZmVyX2Z1 bmMgPSBpZGVfZHVtbXlfdHJhbnNmZXJfc3RvcDsKICAgICBpZGVfZHVtbXlfdHJhbnNmZXJfc3Rv cChzKTsKKyAgICBzLT5tZWRpYV9jaGFuZ2VkID0gMDsKIH0KIAogc3RydWN0IHBhcnRpdGlvbiB7 CkBAIC0yNzkxLDMgKzMwMzMsNDk2IEBAIGludCBwbWFjX2lkZV9pbml0IChCbG9ja0RyaXZlclN0 YXRlICoqaGRfdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwbWFjX2lkZV93cml0ZSwgJmlkZV9pZlswXSk7CiAgICAgcmV0dXJuIHBtYWNfaWRlX21l bW9yeTsKIH0KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworLyogQ0YtQVRBIE1pY3JvZHJpdmUgKi8KKworI2RlZmluZSBNRVRB REFUQV9TSVpFCTB4MjAKKworLyogRFNDTS0xWFhYWCBNaWNyb2RyaXZlIGhhcmQgZGlzayB3aXRo IENGKyBJSSAvIFBDTUNJQSBpbnRlcmZhY2UuICAqLworc3RydWN0IG1kX3MgeworICAgIElERVN0 YXRlIGlkZVsyXTsKKyAgICBzdHJ1Y3QgcGNtY2lhX2NhcmRfcyBjYXJkOworICAgIHVpbnQzMl90 IGF0dHJfYmFzZTsKKyAgICB1aW50MzJfdCBpb19iYXNlOworCisgICAgLyogQ2FyZCBzdGF0ZSAq LworICAgIHVpbnQ4X3Qgb3B0OworICAgIHVpbnQ4X3Qgc3RhdDsKKyAgICB1aW50OF90IHBpbnM7 CisKKyAgICB1aW50OF90IGN0cmw7CisgICAgdWludDE2X3QgaW87CisgICAgaW50IGN5Y2xlOwor fTsKKworLyogUmVnaXN0ZXIgYml0ZmllbGRzICovCitlbnVtIG1kX29wdCB7CisgICAgT1BUX01P REVfTU1BUAk9IDAsCisgICAgT1BUX01PREVfSU9NQVAxNgk9IDEsCisgICAgT1BUX01PREVfSU9N QVAxCT0gMiwKKyAgICBPUFRfTU9ERV9JT01BUDIJPSAzLAorICAgIE9QVF9NT0RFCQk9IDB4M2Ys CisgICAgT1BUX0xFVklSRVEJCT0gMHg0MCwKKyAgICBPUFRfU1JFU0VUCQk9IDB4ODAsCit9Owor ZW51bSBtZF9jc3RhdCB7CisgICAgU1RBVF9JTlQJCT0gMHgwMiwKKyAgICBTVEFUX1BXUkRXTgkJ PSAweDA0LAorICAgIFNUQVRfWEUJCT0gMHgxMCwKKyAgICBTVEFUX0lPSVM4CQk9IDB4MjAsCisg ICAgU1RBVF9TSUdDSEcJCT0gMHg0MCwKKyAgICBTVEFUX0NIQU5HRUQJPSAweDgwLAorfTsKK2Vu dW0gbWRfcGlucyB7CisgICAgUElOU19NUkRZCQk9IDB4MDIsCisgICAgUElOU19DUkRZCQk9IDB4 MjAsCit9OworZW51bSBtZF9jdHJsIHsKKyAgICBDVFJMX0lFTgkJPSAweDAyLAorICAgIENUUkxf U1JTVAkJPSAweDA0LAorfTsKKworc3RhdGljIGlubGluZSB2b2lkIG1kX2ludGVycnVwdF91cGRh dGUoc3RydWN0IG1kX3MgKnMpCit7CisgICAgaWYgKCFzLT5jYXJkLnNsb3QpCisgICAgICAgIHJl dHVybjsKKworICAgIHMtPmNhcmQuc2xvdC0+c2V0X2lycShzLT5jYXJkLnNsb3QtPm9wYXF1ZSwg MCwKKyAgICAgICAgICAgICAgICAgICAgIShzLT5zdGF0ICYgU1RBVF9JTlQpICYmCS8qIEludmVy dGVkICovCisgICAgICAgICAgICAgICAgICAgICEocy0+Y3RybCAmIChDVFJMX0lFTiB8IENUUkxf U1JTVCkpICYmCisgICAgICAgICAgICAgICAgICAgICEocy0+b3B0ICYgT1BUX1NSRVNFVCkpOwor fQorCitzdGF0aWMgdm9pZCBtZF9zZXRfaXJxKHZvaWQgKm9wYXF1ZSwgaW50IGlycSwgaW50IGxl dmVsKQoreworICAgIHN0cnVjdCBtZF9zICpzID0gKHN0cnVjdCBtZF9zICopIG9wYXF1ZTsKKyAg ICBpZiAobGV2ZWwpCisgICAgICAgIHMtPnN0YXQgfD0gU1RBVF9JTlQ7CisgICAgZWxzZQorICAg ICAgICBzLT5zdGF0ICY9IH5TVEFUX0lOVDsKKworICAgIG1kX2ludGVycnVwdF91cGRhdGUocyk7 Cit9CisKK3N0YXRpYyB2b2lkIG1kX3Jlc2V0KHN0cnVjdCBtZF9zICpzKQoreworICAgIHMtPm9w dCA9IE9QVF9NT0RFX01NQVA7CisgICAgcy0+c3RhdCA9IDA7CisgICAgcy0+cGlucyA9IDA7Cisg ICAgcy0+Y3ljbGUgPSAwOworICAgIHMtPmN0cmwgPSAwOworICAgIGlkZV9yZXNldChzLT5pZGUp OworfQorCitzdGF0aWMgdWludDhfdCBtZF9hdHRyX3JlYWQodm9pZCAqb3BhcXVlLCB1aW50MTZf dCBhdCkKK3sKKyAgICBzdHJ1Y3QgbWRfcyAqcyA9IChzdHJ1Y3QgbWRfcyAqKSBvcGFxdWU7Cisg ICAgaWYgKGF0IDwgcy0+YXR0cl9iYXNlKSB7CisgICAgICAgIGlmIChhdCA8IHMtPmNhcmQuY2lz X2xlbikKKyAgICAgICAgICAgIHJldHVybiBzLT5jYXJkLmNpc1thdF07CisgICAgICAgIGVsc2UK KyAgICAgICAgICAgIHJldHVybiAweDAwOworICAgIH0KKworICAgIGF0IC09IHMtPmF0dHJfYmFz ZTsKKworICAgIHN3aXRjaCAoYXQpIHsKKyAgICBjYXNlIDB4MDA6CS8qIENvbmZpZ3VyYXRpb24g T3B0aW9uIFJlZ2lzdGVyICovCisgICAgICAgIHJldHVybiBzLT5vcHQ7CisgICAgY2FzZSAweDAy OgkvKiBDYXJkIENvbmZpZ3VyYXRpb24gU3RhdHVzIFJlZ2lzdGVyICovCisgICAgICAgIGlmIChz LT5jdHJsICYgQ1RSTF9JRU4pCisgICAgICAgICAgICByZXR1cm4gcy0+c3RhdCAmIH5TVEFUX0lO VDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHMtPnN0YXQ7CisgICAgY2FzZSAw eDA0OgkvKiBQaW4gUmVwbGFjZW1lbnQgUmVnaXN0ZXIgKi8KKyAgICAgICAgcmV0dXJuIChzLT5w aW5zICYgUElOU19DUkRZKSB8IDB4MGM7CisgICAgY2FzZSAweDA2OgkvKiBTb2NrZXQgYW5kIENv cHkgUmVnaXN0ZXIgKi8KKyAgICAgICAgcmV0dXJuIDB4MDA7CisjaWZkZWYgVkVSQk9TRQorICAg IGRlZmF1bHQ6CisgICAgICAgIHByaW50ZigiJXM6IEJhZCBhdHRyaWJ1dGUgc3BhY2UgcmVnaXN0 ZXIgJTAyeFxuIiwgX19GVU5DVElPTl9fLCBhdCk7CisjZW5kaWYKKyAgICB9CisKKyAgICByZXR1 cm4gMDsKK30KKworc3RhdGljIHZvaWQgbWRfYXR0cl93cml0ZSh2b2lkICpvcGFxdWUsIHVpbnQx Nl90IGF0LCB1aW50OF90IHZhbHVlKQoreworICAgIHN0cnVjdCBtZF9zICpzID0gKHN0cnVjdCBt ZF9zICopIG9wYXF1ZTsKKyAgICBhdCAtPSBzLT5hdHRyX2Jhc2U7CisKKyAgICBzd2l0Y2ggKGF0 KSB7CisgICAgY2FzZSAweDAwOgkvKiBDb25maWd1cmF0aW9uIE9wdGlvbiBSZWdpc3RlciAqLwor ICAgICAgICBzLT5vcHQgPSB2YWx1ZSAmIDB4Y2Y7CisgICAgICAgIGlmICh2YWx1ZSAmIE9QVF9T UkVTRVQpCisgICAgICAgICAgICBtZF9yZXNldChzKTsKKyAgICAgICAgbWRfaW50ZXJydXB0X3Vw ZGF0ZShzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAweDAyOgkvKiBDYXJkIENvbmZpZ3Vy YXRpb24gU3RhdHVzIFJlZ2lzdGVyICovCisgICAgICAgIGlmICgocy0+c3RhdCBeIHZhbHVlKSAm IFNUQVRfUFdSRFdOKQorICAgICAgICAgICAgcy0+cGlucyB8PSBQSU5TX0NSRFk7CisgICAgICAg IHMtPnN0YXQgJj0gMHg4MjsKKyAgICAgICAgcy0+c3RhdCB8PSB2YWx1ZSAmIDB4NzQ7CisgICAg ICAgIG1kX2ludGVycnVwdF91cGRhdGUocyk7CisgICAgICAgIC8qIFdvcmQgMTcwIGluIElkZW50 aWZ5IERldmljZSBtdXN0IGJlIGVxdWFsIHRvIFNUQVRfWEUgKi8KKyAgICAgICAgYnJlYWs7Cisg ICAgY2FzZSAweDA0OgkvKiBQaW4gUmVwbGFjZW1lbnQgUmVnaXN0ZXIgKi8KKyAgICAgICAgcy0+ cGlucyAmPSBQSU5TX0NSRFk7CisgICAgICAgIHMtPnBpbnMgfD0gdmFsdWUgJiBQSU5TX01SRFk7 CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMHgwNjoJLyogU29ja2V0IGFuZCBDb3B5IFJlZ2lz dGVyICovCisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHByaW50ZigiJXM6 IEJhZCBhdHRyaWJ1dGUgc3BhY2UgcmVnaXN0ZXIgJTAyeFxuIiwgX19GVU5DVElPTl9fLCBhdCk7 CisgICAgfQorfQorCitzdGF0aWMgdWludDE2X3QgbWRfY29tbW9uX3JlYWQodm9pZCAqb3BhcXVl LCB1aW50MTZfdCBhdCkKK3sKKyAgICBzdHJ1Y3QgbWRfcyAqcyA9IChzdHJ1Y3QgbWRfcyAqKSBv cGFxdWU7CisgICAgdWludDE2X3QgcmV0OworICAgIGF0IC09IHMtPmlvX2Jhc2U7CisKKyAgICBz d2l0Y2ggKHMtPm9wdCAmIE9QVF9NT0RFKSB7CisgICAgY2FzZSBPUFRfTU9ERV9NTUFQOgorICAg ICAgICBpZiAoKGF0ICYgfjB4M2ZmKSA9PSAweDQwMCkKKyAgICAgICAgICAgIGF0ID0gMDsKKyAg ICAgICAgYnJlYWs7CisgICAgY2FzZSBPUFRfTU9ERV9JT01BUDE2OgorICAgICAgICBhdCAmPSAw eGY7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT1BUX01PREVfSU9NQVAxOgorICAgICAgICBp ZiAoKGF0ICYgfjB4ZikgPT0gMHgzZjApCisgICAgICAgICAgICBhdCAtPSAweDNlODsKKyAgICAg ICAgZWxzZSBpZiAoKGF0ICYgfjB4ZikgPT0gMHgxZjApCisgICAgICAgICAgICBhdCAtPSAweDFm MDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPUFRfTU9ERV9JT01BUDI6CisgICAgICAgIGlm ICgoYXQgJiB+MHhmKSA9PSAweDM3MCkKKyAgICAgICAgICAgIGF0IC09IDB4MzY4OworICAgICAg ICBlbHNlIGlmICgoYXQgJiB+MHhmKSA9PSAweDE3MCkKKyAgICAgICAgICAgIGF0IC09IDB4MTcw OworICAgIH0KKworICAgIHN3aXRjaCAoYXQpIHsKKyAgICBjYXNlIDB4MDoJLyogRXZlbiBSRCBE YXRhICovCisgICAgY2FzZSAweDg6CisgICAgICAgIHJldHVybiBpZGVfZGF0YV9yZWFkdyhzLT5p ZGUsIDApOworCisgICAgICAgIC8qIFRPRE86IDgtYml0IGFjY2Vzc2VzICovCisgICAgICAgIGlm IChzLT5jeWNsZSkKKyAgICAgICAgICAgIHJldCA9IHMtPmlvID4+IDg7CisgICAgICAgIGVsc2Ug eworICAgICAgICAgICAgcy0+aW8gPSBpZGVfZGF0YV9yZWFkdyhzLT5pZGUsIDApOworICAgICAg ICAgICAgcmV0ID0gcy0+aW8gJiAweGZmOworICAgICAgICB9CisgICAgICAgIHMtPmN5Y2xlID0g IXMtPmN5Y2xlOworICAgICAgICByZXR1cm4gcmV0OworICAgIGNhc2UgMHg5OgkvKiBPZGQgUkQg RGF0YSAqLworICAgICAgICByZXR1cm4gcy0+aW8gPj4gODsKKyAgICBjYXNlIDB4ZDoJLyogRXJy b3IgKi8KKyAgICAgICAgcmV0dXJuIGlkZV9pb3BvcnRfcmVhZChzLT5pZGUsIDB4MSk7CisgICAg Y2FzZSAweGU6CS8qIEFsdGVybmF0ZSBTdGF0dXMgKi8KKyAgICAgICAgaWYgKHMtPmlkZS0+Y3Vy X2RyaXZlLT5icykKKyAgICAgICAgICAgIHJldHVybiBzLT5pZGUtPmN1cl9kcml2ZS0+c3RhdHVz OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIDB4ZjoJLyog RGV2aWNlIEFkZHJlc3MgKi8KKyAgICAgICAgcmV0dXJuIDB4YzIgfCAoKH5zLT5pZGUtPnNlbGVj dCA8PCAyKSAmIDB4M2MpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBpZGVfaW9wb3J0 X3JlYWQocy0+aWRlLCBhdCk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2 b2lkIG1kX2NvbW1vbl93cml0ZSh2b2lkICpvcGFxdWUsIHVpbnQxNl90IGF0LCB1aW50MTZfdCB2 YWx1ZSkKK3sKKyAgICBzdHJ1Y3QgbWRfcyAqcyA9IChzdHJ1Y3QgbWRfcyAqKSBvcGFxdWU7Cisg ICAgYXQgLT0gcy0+aW9fYmFzZTsKKworICAgIHN3aXRjaCAocy0+b3B0ICYgT1BUX01PREUpIHsK KyAgICBjYXNlIE9QVF9NT0RFX01NQVA6CisgICAgICAgIGlmICgoYXQgJiB+MHgzZmYpID09IDB4 NDAwKQorICAgICAgICAgICAgYXQgPSAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9QVF9N T0RFX0lPTUFQMTY6CisgICAgICAgIGF0ICY9IDB4ZjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz ZSBPUFRfTU9ERV9JT01BUDE6CisgICAgICAgIGlmICgoYXQgJiB+MHhmKSA9PSAweDNmMCkKKyAg ICAgICAgICAgIGF0IC09IDB4M2U4OworICAgICAgICBlbHNlIGlmICgoYXQgJiB+MHhmKSA9PSAw eDFmMCkKKyAgICAgICAgICAgIGF0IC09IDB4MWYwOworICAgICAgICBicmVhazsKKyAgICBjYXNl IE9QVF9NT0RFX0lPTUFQMjoKKyAgICAgICAgaWYgKChhdCAmIH4weGYpID09IDB4MzcwKQorICAg ICAgICAgICAgYXQgLT0gMHgzNjg7CisgICAgICAgIGVsc2UgaWYgKChhdCAmIH4weGYpID09IDB4 MTcwKQorICAgICAgICAgICAgYXQgLT0gMHgxNzA7CisgICAgfQorCisgICAgc3dpdGNoIChhdCkg eworICAgIGNhc2UgMHgwOgkvKiBFdmVuIFdSIERhdGEgKi8KKyAgICBjYXNlIDB4ODoKKyAgICAg ICAgaWRlX2RhdGFfd3JpdGV3KHMtPmlkZSwgMCwgdmFsdWUpOworICAgICAgICBicmVhazsKKwor ICAgICAgICAvKiBUT0RPOiA4LWJpdCBhY2Nlc3NlcyAqLworICAgICAgICBpZiAocy0+Y3ljbGUp CisgICAgICAgICAgICBpZGVfZGF0YV93cml0ZXcocy0+aWRlLCAwLCBzLT5pbyB8ICh2YWx1ZSA8 PCA4KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHMtPmlvID0gdmFsdWUgJiAweGZmOwor ICAgICAgICBzLT5jeWNsZSA9ICFzLT5jeWNsZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAw eDk6CisgICAgICAgIHMtPmlvID0gdmFsdWUgJiAweGZmOworICAgICAgICBzLT5jeWNsZSA9ICFz LT5jeWNsZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAweGQ6CS8qIEZlYXR1cmVzICovCisg ICAgICAgIGlkZV9pb3BvcnRfd3JpdGUocy0+aWRlLCAweDEsIHZhbHVlKTsKKyAgICAgICAgYnJl YWs7CisgICAgY2FzZSAweGU6CS8qIERldmljZSBDb250cm9sICovCisgICAgICAgIHMtPmN0cmwg PSB2YWx1ZTsKKyAgICAgICAgaWYgKHZhbHVlICYgQ1RSTF9TUlNUKQorICAgICAgICAgICAgbWRf cmVzZXQocyk7CisgICAgICAgIG1kX2ludGVycnVwdF91cGRhdGUocyk7CisgICAgICAgIGJyZWFr OworICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChzLT5zdGF0ICYgU1RBVF9QV1JEV04pIHsKKyAg ICAgICAgICAgIHMtPnBpbnMgfD0gUElOU19DUkRZOworICAgICAgICAgICAgcy0+c3RhdCAmPSB+ U1RBVF9QV1JEV047CisgICAgICAgIH0KKyAgICAgICAgaWRlX2lvcG9ydF93cml0ZShzLT5pZGUs IGF0LCB2YWx1ZSk7CisgICAgfQorfQorCitzdGF0aWMgY29uc3QgdWludDhfdCBkc2NtMXh4eHhf Y2lzWzB4MTRhXSA9IHsKKyAgICBbMHgwMDBdID0gQ0lTVFBMX0RFVklDRSwJLyogNVYgRGV2aWNl IEluZm9ybWF0aW9uICovCisgICAgWzB4MDAyXSA9IDB4MDMsCQkvKiBUdXBsZSBsZW5ndGggPSA0 IGJ5dGVzICovCisgICAgWzB4MDA0XSA9IDB4ZGIsCQkvKiBJRDogRFRZUEVfRlVOQ1NQRUMsIG5v biBXUCwgRFNQRUVEXzE1ME5TICovCisgICAgWzB4MDA2XSA9IDB4MDEsCQkvKiBTaXplID0gMksg Ynl0ZXMgKi8KKyAgICBbMHgwMDhdID0gQ0lTVFBMX0VORE1BUkssCisKKyAgICBbMHgwMGFdID0g Q0lTVFBMX0RFVklDRV9PQywJLyogQWRkaXRpb25hbCBEZXZpY2UgSW5mb3JtYXRpb24gKi8KKyAg ICBbMHgwMGNdID0gMHgwNCwJCS8qIFR1cGxlIGxlbmd0aCA9IDQgYnllc3QgKi8KKyAgICBbMHgw MGVdID0gMHgwMywJCS8qIENvbmRpdGlvbnM6IEV4dCA9IDAsIFZjYyAzLjNWLCBNV0FJVCA9IDEg Ki8KKyAgICBbMHgwMTBdID0gMHhkYiwJCS8qIElEOiBEVFlQRV9GVU5DU1BFQywgbm9uIFdQLCBE U1BFRURfMTUwTlMgKi8KKyAgICBbMHgwMTJdID0gMHgwMSwJCS8qIFNpemUgPSAySyBieXRlcyAq LworICAgIFsweDAxNF0gPSBDSVNUUExfRU5ETUFSSywKKworICAgIFsweDAxNl0gPSBDSVNUUExf SkVERUNfQywJLyogSkVERUMgSUQgKi8KKyAgICBbMHgwMThdID0gMHgwMiwJCS8qIFR1cGxlIGxl bmd0aCA9IDIgYnl0ZXMgKi8KKyAgICBbMHgwMWFdID0gMHhkZiwJCS8qIFBDIENhcmQgQVRBIHdp dGggbm8gVnBwIHJlcXVpcmVkICovCisgICAgWzB4MDFjXSA9IDB4MDEsCisKKyAgICBbMHgwMWVd ID0gQ0lTVFBMX01BTkZJRCwJLyogTWFudWZhY3R1cmUgSUQgKi8KKyAgICBbMHgwMjBdID0gMHgw NCwJCS8qIFR1cGxlIGxlbmd0aCA9IDQgYnl0ZXMgKi8KKyAgICBbMHgwMjJdID0gMHhhNCwJCS8q IFRQTE1JRF9NQU5GID0gMDBhNCAoSUJNKSAqLworICAgIFsweDAyNF0gPSAweDAwLAorICAgIFsw eDAyNl0gPSAweDAwLAkJLyogUExNSURfQ0FSRCA9IDAwMDAgKi8KKyAgICBbMHgwMjhdID0gMHgw MCwKKworICAgIFsweDAyYV0gPSBDSVNUUExfVkVSU18xLAkvKiBMZXZlbCAxIFZlcnNpb24gKi8K KyAgICBbMHgwMmNdID0gMHgxMiwJCS8qIFR1cGxlIGxlbmd0aCA9IDIzIGJ5dGVzICovCisgICAg WzB4MDJlXSA9IDB4MDQsCQkvKiBNYWpvciBWZXJzaW9uID0gSkVJREEgNC4yIC8gUENNQ0lBIDIu MSAqLworICAgIFsweDAzMF0gPSAweDAxLAkJLyogTWlub3IgVmVyc2lvbiA9IDEgKi8KKyAgICBb MHgwMzJdID0gJ0knLAorICAgIFsweDAzNF0gPSAnQicsCisgICAgWzB4MDM2XSA9ICdNJywKKyAg ICBbMHgwMzhdID0gMHgwMCwKKyAgICBbMHgwM2FdID0gJ20nLAorICAgIFsweDAzY10gPSAnaScs CisgICAgWzB4MDNlXSA9ICdjJywKKyAgICBbMHgwNDBdID0gJ3InLAorICAgIFsweDA0Ml0gPSAn bycsCisgICAgWzB4MDQ0XSA9ICdkJywKKyAgICBbMHgwNDZdID0gJ3InLAorICAgIFsweDA0OF0g PSAnaScsCisgICAgWzB4MDRhXSA9ICd2JywKKyAgICBbMHgwNGNdID0gJ2UnLAorICAgIFsweDA0 ZV0gPSAweDAwLAorICAgIFsweDA1MF0gPSBDSVNUUExfRU5ETUFSSywKKworICAgIFsweDA1Ml0g PSBDSVNUUExfRlVOQ0lELAkvKiBGdW5jdGlvbiBJRCAqLworICAgIFsweDA1NF0gPSAweDAyLAkJ LyogVHVwbGUgbGVuZ3RoID0gMiBieXRlcyAqLworICAgIFsweDA1Nl0gPSAweDA0LAkJLyogVFBM RklEX0ZVTkNUSU9OID0gRml4ZWQgRGlzayAqLworICAgIFsweDA1OF0gPSAweDAxLAkJLyogVFBM RklEX1NZU0lOSVQ6IFBPU1QgPSAxLCBST00gPSAwICovCisKKyAgICBbMHgwNWFdID0gQ0lTVFBM X0ZVTkNFLAkvKiBGdW5jdGlvbiBFeHRlbnNpb24gKi8KKyAgICBbMHgwNWNdID0gMHgwMiwJCS8q IFR1cGxlIGxlbmd0aCA9IDIgYnl0ZXMgKi8KKyAgICBbMHgwNWVdID0gMHgwMSwJCS8qIFRQTEZF X1RZUEUgPSBEaXNrIERldmljZSBJbnRlcmZhY2UgKi8KKyAgICBbMHgwNjBdID0gMHgwMSwJCS8q IFRQTEZFX0RBVEEgPSBQQyBDYXJkIEFUQSBJbnRlcmZhY2UgKi8KKworICAgIFsweDA2Ml0gPSBD SVNUUExfRlVOQ0UsCS8qIEZ1bmN0aW9uIEV4dGVuc2lvbiAqLworICAgIFsweDA2NF0gPSAweDAz LAkJLyogVHVwbGUgbGVuZ3RoID0gMyBieXRlcyAqLworICAgIFsweDA2Nl0gPSAweDAyLAkJLyog VFBMRkVfVFlQRSA9IEJhc2ljIFBDIENhcmQgQVRBIEludGVyZmFjZSAqLworICAgIFsweDA2OF0g PSAweDA4LAkJLyogVFBMRkVfREFUQTogUm90YXRpbmcsIFVuaXF1ZSwgU2luZ2xlICovCisgICAg WzB4MDZhXSA9IDB4MGYsCQkvKiBUUExGRV9EQVRBOiBTbGVlcCwgU3RhbmRieSwgSWRsZSwgQXV0 byAqLworCisgICAgWzB4MDZjXSA9IENJU1RQTF9DT05GSUcsCS8qIENvbmZpZ3VyYXRpb24gKi8K KyAgICBbMHgwNmVdID0gMHgwNSwJCS8qIFR1cGxlIGxlbmd0aCA9IDUgYnl0ZXMgKi8KKyAgICBb MHgwNzBdID0gMHgwMSwJCS8qIFRQQ0NfUkFTWiA9IDIgYnl0ZXMsIFRQQ0NfUk1TWiA9IDEgYnl0 ZSAqLworICAgIFsweDA3Ml0gPSAweDA3LAkJLyogVFBDQ19MQVNUID0gNyAqLworICAgIFsweDA3 NF0gPSAweDAwLAkJLyogVFBDQ19SQURSID0gMDIwMCAqLworICAgIFsweDA3Nl0gPSAweDAyLAor ICAgIFsweDA3OF0gPSAweDBmLAkJLyogVFBDQ19STVNLID0gMjAwLCAyMDIsIDIwNCwgMjA2ICov CisKKyAgICBbMHgwN2FdID0gQ0lTVFBMX0NGVEFCTEVfRU5UUlksCS8qIDE2LWJpdCBQQyBDYXJk IENvbmZpZ3VyYXRpb24gKi8KKyAgICBbMHgwN2NdID0gMHgwYiwJCS8qIFR1cGxlIGxlbmd0aCA9 IDExIGJ5dGVzICovCisgICAgWzB4MDdlXSA9IDB4YzAsCQkvKiBUUENFX0lORFggPSBNZW1vcnkg TW9kZSwgRGVmYXVsdCwgSWZhY2UgKi8KKyAgICBbMHgwODBdID0gMHhjMCwJCS8qIFRQQ0VfSUYg PSBNZW1vcnksIG5vIEJWRHMsIG5vIFdQLCBSRUFEWSAqLworICAgIFsweDA4Ml0gPSAweGExLAkJ LyogVFBDRV9GUyA9IFZjYyBvbmx5LCBubyBJL08sIE1lbW9yeSwgTWlzYyAqLworICAgIFsweDA4 NF0gPSAweDI3LAkJLyogTm9tViA9IDEsIE1pblYgPSAxLCBNYXhWID0gMSwgUGVha2wgPSAxICov CisgICAgWzB4MDg2XSA9IDB4NTUsCQkvKiBOb21WOiA1LjAgViAqLworICAgIFsweDA4OF0gPSAw eDRkLAkJLyogTWluVjogNC41IFYgKi8KKyAgICBbMHgwOGFdID0gMHg1ZCwJCS8qIE1heFY6IDUu NSBWICovCisgICAgWzB4MDhjXSA9IDB4NGUsCQkvKiBQZWFrbDogNDUwIG1BICovCisgICAgWzB4 MDhlXSA9IDB4MDgsCQkvKiBUUENFX01TID0gMSB3aW5kb3csIDEgYnl0ZSwgSG9zdCBhZGRyZXNz ICovCisgICAgWzB4MDkwXSA9IDB4MDAsCQkvKiBXaW5kb3cgZGVzY3JpcHRvcjogV2luZG93IGxl bmd0aCA9IDAgKi8KKyAgICBbMHgwOTJdID0gMHgyMCwJCS8qIFRQQ0VfTUk6IHN1cHBvcnQgcG93 ZXIgZG93biBtb2RlLCBSVyAqLworCisgICAgWzB4MDk0XSA9IENJU1RQTF9DRlRBQkxFX0VOVFJZ LAkvKiAxNi1iaXQgUEMgQ2FyZCBDb25maWd1cmF0aW9uICovCisgICAgWzB4MDk2XSA9IDB4MDYs CQkvKiBUdXBsZSBsZW5ndGggPSA2IGJ5dGVzICovCisgICAgWzB4MDk4XSA9IDB4MDAsCQkvKiBU UENFX0lORFggPSBNZW1vcnkgTW9kZSwgbm8gRGVmYXVsdCAqLworICAgIFsweDA5YV0gPSAweDAx LAkJLyogVFBDRV9GUyA9IFZjYyBvbmx5LCBubyBJL08sIG5vIE1lbW9yeSAqLworICAgIFsweDA5 Y10gPSAweDIxLAkJLyogTm9tViA9IDEsIE1pblYgPSAwLCBNYXhWID0gMCwgUGVha2wgPSAxICov CisgICAgWzB4MDllXSA9IDB4YjUsCQkvKiBOb21WOiAzLjMgViAqLworICAgIFsweDBhMF0gPSAw eDFlLAorICAgIFsweDBhMl0gPSAweDNlLAkJLyogUGVha2w6IDM1MCBtQSAqLworCisgICAgWzB4 MGE0XSA9IENJU1RQTF9DRlRBQkxFX0VOVFJZLAkvKiAxNi1iaXQgUEMgQ2FyZCBDb25maWd1cmF0 aW9uICovCisgICAgWzB4MGE2XSA9IDB4MGQsCQkvKiBUdXBsZSBsZW5ndGggPSAxMyBieXRlcyAq LworICAgIFsweDBhOF0gPSAweGMxLAkJLyogVFBDRV9JTkRYID0gSS9PIGFuZCBNZW1vcnkgTW9k ZSwgRGVmYXVsdCAqLworICAgIFsweDBhYV0gPSAweDQxLAkJLyogVFBDRV9JRiA9IEkvTyBhbmQg TWVtb3J5LCBubyBCVkQsIG5vIFdQICovCisgICAgWzB4MGFjXSA9IDB4OTksCQkvKiBUUENFX0ZT ID0gVmNjIG9ubHksIEkvTywgSW50ZXJydXB0LCBNaXNjICovCisgICAgWzB4MGFlXSA9IDB4Mjcs CQkvKiBOb21WID0gMSwgTWluViA9IDEsIE1heFYgPSAxLCBQZWFrbCA9IDEgKi8KKyAgICBbMHgw YjBdID0gMHg1NSwJCS8qIE5vbVY6IDUuMCBWICovCisgICAgWzB4MGIyXSA9IDB4NGQsCQkvKiBN aW5WOiA0LjUgViAqLworICAgIFsweDBiNF0gPSAweDVkLAkJLyogTWF4VjogNS41IFYgKi8KKyAg ICBbMHgwYjZdID0gMHg0ZSwJCS8qIFBlYWtsOiA0NTAgbUEgKi8KKyAgICBbMHgwYjhdID0gMHg2 NCwJCS8qIFRQQ0VfSU8gPSAxNi1ieXRlIGJvdW5kYXJ5LCAxNi84IGFjY2Vzc2VzICovCisgICAg WzB4MGJhXSA9IDB4ZjAsCQkvKiBUUENFX0lSID0gIE1BU0ssIExldmVsLCBQdWxzZSwgU2hhcmUg Ki8KKyAgICBbMHgwYmNdID0gMHhmZiwJCS8qIElSUTAuLklSUTcgc3VwcG9ydGVkICovCisgICAg WzB4MGJlXSA9IDB4ZmYsCQkvKiBJUlE4Li5JUlExNSBzdXBwb3J0ZWQgKi8KKyAgICBbMHgwYzBd ID0gMHgyMCwJCS8qIFRQQ0VfTUkgPSBzdXBwb3J0IHBvd2VyIGRvd24gbW9kZSAqLworCisgICAg WzB4MGMyXSA9IENJU1RQTF9DRlRBQkxFX0VOVFJZLAkvKiAxNi1iaXQgUEMgQ2FyZCBDb25maWd1 cmF0aW9uICovCisgICAgWzB4MGM0XSA9IDB4MDYsCQkvKiBUdXBsZSBsZW5ndGggPSA2IGJ5dGVz ICovCisgICAgWzB4MGM2XSA9IDB4MDEsCQkvKiBUUENFX0lORFggPSBJL08gYW5kIE1lbW9yeSBN b2RlICovCisgICAgWzB4MGM4XSA9IDB4MDEsCQkvKiBUUENFX0ZTID0gVmNjIG9ubHksIG5vIEkv Tywgbm8gTWVtb3J5ICovCisgICAgWzB4MGNhXSA9IDB4MjEsCQkvKiBOb21WID0gMSwgTWluViA9 IDAsIE1heFYgPSAwLCBQZWFrbCA9IDEgKi8KKyAgICBbMHgwY2NdID0gMHhiNSwJCS8qIE5vbVY6 IDMuMyBWICovCisgICAgWzB4MGNlXSA9IDB4MWUsCisgICAgWzB4MGQwXSA9IDB4M2UsCQkvKiBQ ZWFrbDogMzUwIG1BICovCisKKyAgICBbMHgwZDJdID0gQ0lTVFBMX0NGVEFCTEVfRU5UUlksCS8q IDE2LWJpdCBQQyBDYXJkIENvbmZpZ3VyYXRpb24gKi8KKyAgICBbMHgwZDRdID0gMHgxMiwJCS8q IFR1cGxlIGxlbmd0aCA9IDE4IGJ5dGVzICovCisgICAgWzB4MGQ2XSA9IDB4YzIsCQkvKiBUUENF X0lORFggPSBJL08gUHJpbWFyeSBNb2RlICovCisgICAgWzB4MGQ4XSA9IDB4NDEsCQkvKiBUUENF X0lGID0gSS9PIGFuZCBNZW1vcnksIG5vIEJWRCwgbm8gV1AgKi8KKyAgICBbMHgwZGFdID0gMHg5 OSwJCS8qIFRQQ0VfRlMgPSBWY2Mgb25seSwgSS9PLCBJbnRlcnJ1cHQsIE1pc2MgKi8KKyAgICBb MHgwZGNdID0gMHgyNywJCS8qIE5vbVYgPSAxLCBNaW5WID0gMSwgTWF4ViA9IDEsIFBlYWtsID0g MSAqLworICAgIFsweDBkZV0gPSAweDU1LAkJLyogTm9tVjogNS4wIFYgKi8KKyAgICBbMHgwZTBd ID0gMHg0ZCwJCS8qIE1pblY6IDQuNSBWICovCisgICAgWzB4MGUyXSA9IDB4NWQsCQkvKiBNYXhW OiA1LjUgViAqLworICAgIFsweDBlNF0gPSAweDRlLAkJLyogUGVha2w6IDQ1MCBtQSAqLworICAg IFsweDBlNl0gPSAweGVhLAkJLyogVFBDRV9JTyA9IDFLIGJvdW5kYXJ5LCAxNi84IGFjY2Vzcywg UmFuZ2UgKi8KKyAgICBbMHgwZThdID0gMHg2MSwJCS8qIFJhbmdlOiAyIGZpZWxkcywgMiBieXRl cyBhZGRyLCAxIGJ5dGUgbGVuICovCisgICAgWzB4MGVhXSA9IDB4ZjAsCQkvKiBGaWVsZCAxIGFk ZHJlc3MgPSAweDAxZjAgKi8KKyAgICBbMHgwZWNdID0gMHgwMSwKKyAgICBbMHgwZWVdID0gMHgw NywJCS8qIEFkZHJlc3MgYmxvY2sgbGVuZ3RoID0gOCAqLworICAgIFsweDBmMF0gPSAweGY2LAkJ LyogRmllbGQgMiBhZGRyZXNzID0gMHgwM2Y2ICovCisgICAgWzB4MGYyXSA9IDB4MDMsCisgICAg WzB4MGY0XSA9IDB4MDEsCQkvKiBBZGRyZXNzIGJsb2NrIGxlbmd0aCA9IDIgKi8KKyAgICBbMHgw ZjZdID0gMHhlZSwJCS8qIFRQQ0VfSVIgPSBJUlEgRSwgTGV2ZWwsIFB1bHNlLCBTaGFyZSAqLwor ICAgIFsweDBmOF0gPSAweDIwLAkJLyogVFBDRV9NSSA9IHN1cHBvcnQgcG93ZXIgZG93biBtb2Rl ICovCisKKyAgICBbMHgwZmFdID0gQ0lTVFBMX0NGVEFCTEVfRU5UUlksCS8qIDE2LWJpdCBQQyBD YXJkIENvbmZpZ3VyYXRpb24gKi8KKyAgICBbMHgwZmNdID0gMHgwNiwJCS8qIFR1cGxlIGxlbmd0 aCA9IDYgYnl0ZXMgKi8KKyAgICBbMHgwZmVdID0gMHgwMiwJCS8qIFRQQ0VfSU5EWCA9IEkvTyBQ cmltYXJ5IE1vZGUsIG5vIERlZmF1bHQgKi8KKyAgICBbMHgxMDBdID0gMHgwMSwJCS8qIFRQQ0Vf RlMgPSBWY2Mgb25seSwgbm8gSS9PLCBubyBNZW1vcnkgKi8KKyAgICBbMHgxMDJdID0gMHgyMSwJ CS8qIE5vbVYgPSAxLCBNaW5WID0gMCwgTWF4ViA9IDAsIFBlYWtsID0gMSAqLworICAgIFsweDEw NF0gPSAweGI1LAkJLyogTm9tVjogMy4zIFYgKi8KKyAgICBbMHgxMDZdID0gMHgxZSwKKyAgICBb MHgxMDhdID0gMHgzZSwJCS8qIFBlYWtsOiAzNTAgbUEgKi8KKworICAgIFsweDEwYV0gPSBDSVNU UExfQ0ZUQUJMRV9FTlRSWSwJLyogMTYtYml0IFBDIENhcmQgQ29uZmlndXJhdGlvbiAqLworICAg IFsweDEwY10gPSAweDEyLAkJLyogVHVwbGUgbGVuZ3RoID0gMTggYnl0ZXMgKi8KKyAgICBbMHgx MGVdID0gMHhjMywJCS8qIFRQQ0VfSU5EWCA9IEkvTyBTZWNvbmRhcnkgTW9kZSwgRGVmYXVsdCAq LworICAgIFsweDExMF0gPSAweDQxLAkJLyogVFBDRV9JRiA9IEkvTyBhbmQgTWVtb3J5LCBubyBC VkQsIG5vIFdQICovCisgICAgWzB4MTEyXSA9IDB4OTksCQkvKiBUUENFX0ZTID0gVmNjIG9ubHks IEkvTywgSW50ZXJydXB0LCBNaXNjICovCisgICAgWzB4MTE0XSA9IDB4MjcsCQkvKiBOb21WID0g MSwgTWluViA9IDEsIE1heFYgPSAxLCBQZWFrbCA9IDEgKi8KKyAgICBbMHgxMTZdID0gMHg1NSwJ CS8qIE5vbVY6IDUuMCBWICovCisgICAgWzB4MTE4XSA9IDB4NGQsCQkvKiBNaW5WOiA0LjUgViAq LworICAgIFsweDExYV0gPSAweDVkLAkJLyogTWF4VjogNS41IFYgKi8KKyAgICBbMHgxMWNdID0g MHg0ZSwJCS8qIFBlYWtsOiA0NTAgbUEgKi8KKyAgICBbMHgxMWVdID0gMHhlYSwJCS8qIFRQQ0Vf SU8gPSAxSyBib3VuZGFyeSwgMTYvOCBhY2Nlc3MsIFJhbmdlICovCisgICAgWzB4MTIwXSA9IDB4 NjEsCQkvKiBSYW5nZTogMiBmaWVsZHMsIDIgYnl0ZSBhZGRyLCAxIGJ5dGUgbGVuICovCisgICAg WzB4MTIyXSA9IDB4NzAsCQkvKiBGaWVsZCAxIGFkZHJlc3MgPSAweDAxNzAgKi8KKyAgICBbMHgx MjRdID0gMHgwMSwKKyAgICBbMHgxMjZdID0gMHgwNywJCS8qIEFkZHJlc3MgYmxvY2sgbGVuZ3Ro ID0gOCAqLworICAgIFsweDEyOF0gPSAweDc2LAkJLyogRmllbGQgMiBhZGRyZXNzID0gMHgwMzc2 ICovCisgICAgWzB4MTJhXSA9IDB4MDMsCisgICAgWzB4MTJjXSA9IDB4MDEsCQkvKiBBZGRyZXNz IGJsb2NrIGxlbmd0aCA9IDIgKi8KKyAgICBbMHgxMmVdID0gMHhlZSwJCS8qIFRQQ0VfSVIgPSBJ UlEgRSwgTGV2ZWwsIFB1bHNlLCBTaGFyZSAqLworICAgIFsweDEzMF0gPSAweDIwLAkJLyogVFBD RV9NSSA9IHN1cHBvcnQgcG93ZXIgZG93biBtb2RlICovCisKKyAgICBbMHgxMzJdID0gQ0lTVFBM X0NGVEFCTEVfRU5UUlksCS8qIDE2LWJpdCBQQyBDYXJkIENvbmZpZ3VyYXRpb24gKi8KKyAgICBb MHgxMzRdID0gMHgwNiwJCS8qIFR1cGxlIGxlbmd0aCA9IDYgYnl0ZXMgKi8KKyAgICBbMHgxMzZd ID0gMHgwMywJCS8qIFRQQ0VfSU5EWCA9IEkvTyBTZWNvbmRhcnkgTW9kZSAqLworICAgIFsweDEz OF0gPSAweDAxLAkJLyogVFBDRV9GUyA9IFZjYyBvbmx5LCBubyBJL08sIG5vIE1lbW9yeSAqLwor ICAgIFsweDEzYV0gPSAweDIxLAkJLyogTm9tViA9IDEsIE1pblYgPSAwLCBNYXhWID0gMCwgUGVh a2wgPSAxICovCisgICAgWzB4MTNjXSA9IDB4YjUsCQkvKiBOb21WOiAzLjMgViAqLworICAgIFsw eDEzZV0gPSAweDFlLAorICAgIFsweDE0MF0gPSAweDNlLAkJLyogUGVha2w6IDM1MCBtQSAqLwor CisgICAgWzB4MTQyXSA9IENJU1RQTF9OT19MSU5LLAkvKiBObyBMaW5rICovCisgICAgWzB4MTQ0 XSA9IDB4MDAsCQkvKiBUdXBsZSBsZW5ndGggPSAwIGJ5dGVzICovCisKKyAgICBbMHgxNDZdID0g Q0lTVFBMX0VORCwJLyogVHVwbGUgRW5kICovCit9OworCitzdGF0aWMgaW50IGRzY20xeHh4eF9h dHRhY2godm9pZCAqb3BhcXVlKQoreworICAgIHN0cnVjdCBtZF9zICptZCA9IChzdHJ1Y3QgbWRf cyAqKSBvcGFxdWU7CisgICAgbWQtPmNhcmQuYXR0cl9yZWFkID0gbWRfYXR0cl9yZWFkOworICAg IG1kLT5jYXJkLmF0dHJfd3JpdGUgPSBtZF9hdHRyX3dyaXRlOworICAgIG1kLT5jYXJkLmNvbW1v bl9yZWFkID0gbWRfY29tbW9uX3JlYWQ7CisgICAgbWQtPmNhcmQuY29tbW9uX3dyaXRlID0gbWRf Y29tbW9uX3dyaXRlOworICAgIG1kLT5jYXJkLmlvX3JlYWQgPSBtZF9jb21tb25fcmVhZDsKKyAg ICBtZC0+Y2FyZC5pb193cml0ZSA9IG1kX2NvbW1vbl93cml0ZTsKKworICAgIG1kLT5hdHRyX2Jh c2UgPSBtZC0+Y2FyZC5jaXNbMHg3NF0gfCAobWQtPmNhcmQuY2lzWzB4NzZdIDw8IDgpOworICAg IG1kLT5pb19iYXNlID0gMHgwOworCisgICAgbWRfcmVzZXQobWQpOworICAgIG1kX2ludGVycnVw dF91cGRhdGUobWQpOworCisgICAgbWQtPmNhcmQuc2xvdC0+Y2FyZF9zdHJpbmcgPSAiRFNDTS0x eHh4eCBIaXRhY2hpIE1pY3JvZHJpdmUiOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50 IGRzY20xeHh4eF9kZXRhY2godm9pZCAqb3BhcXVlKQoreworICAgIHN0cnVjdCBtZF9zICptZCA9 IChzdHJ1Y3QgbWRfcyAqKSBvcGFxdWU7CisgICAgbWRfcmVzZXQobWQpOworICAgIHJldHVybiAw OworfQorCitzdHJ1Y3QgcGNtY2lhX2NhcmRfcyAqZHNjbTF4eHh4X2luaXQoQmxvY2tEcml2ZXJT dGF0ZSAqYmRydikKK3sKKyAgICBzdHJ1Y3QgbWRfcyAqbWQgPSAoc3RydWN0IG1kX3MgKikgcWVt dV9tYWxsb2N6KHNpemVvZihzdHJ1Y3QgbWRfcykpOworICAgIG1kLT5jYXJkLnN0YXRlID0gbWQ7 CisgICAgbWQtPmNhcmQuYXR0YWNoID0gZHNjbTF4eHh4X2F0dGFjaDsKKyAgICBtZC0+Y2FyZC5k ZXRhY2ggPSBkc2NtMXh4eHhfZGV0YWNoOworICAgIG1kLT5jYXJkLmNpcyA9IGRzY20xeHh4eF9j aXM7CisgICAgbWQtPmNhcmQuY2lzX2xlbiA9IHNpemVvZihkc2NtMXh4eHhfY2lzKTsKKworICAg IGlkZV9pbml0MihtZC0+aWRlLCBiZHJ2LCAwLCBtZF9zZXRfaXJxLCBtZCwgMCk7CisgICAgbWQt PmlkZS0+aXNfY2YgPSAxOworICAgIG1kLT5pZGUtPm1kYXRhX3NpemUgPSBNRVRBREFUQV9TSVpF OworICAgIG1kLT5pZGUtPm1kYXRhX3N0b3JhZ2UgPSAodWludDhfdCAqKSBxZW11X21hbGxvY3oo TUVUQURBVEFfU0laRSk7CisgICAgcmV0dXJuICZtZC0+Y2FyZDsKK30KZGlmZiAtLWdpdCBhL21v bml0b3IuYyBiL21vbml0b3IuYwppbmRleCBkZTA3ODNiLi45NDNiMjViIDEwMDY0NAotLS0gYS9t b25pdG9yLmMKKysrIGIvbW9uaXRvci5jCkBAIC0xMzEwLDYgKzEzMTAsOCBAQCBzdGF0aWMgdGVy bV9jbWRfdCBpbmZvX2NtZHNbXSA9IHsKICAgICAgICIiLCAic2hvdyBjYXB0dXJlIGluZm9ybWF0 aW9uIiB9LAogICAgIHsgInNuYXBzaG90cyIsICIiLCBkb19pbmZvX3NuYXBzaG90cywKICAgICAg ICIiLCAic2hvdyB0aGUgY3VycmVudGx5IHNhdmVkIFZNIHNuYXBzaG90cyIgfSwKKyAgICB7ICJw Y21jaWEiLCAiIiwgcGNtY2lhX2luZm8sCisgICAgICAiIiwgInNob3cgZ3Vlc3QgUENNQ0lBIHN0 YXR1cyIgfSwKICAgICB7ICJtaWNlIiwgIiIsIGRvX2luZm9fbWljZSwKICAgICAgICIiLCAic2hv dyB3aGljaCBndWVzdCBtb3VzZSBpcyByZWNlaXZpbmcgZXZlbnRzIiB9LAogICAgIHsgInZuYyIs ICIiLCBkb19pbmZvX3ZuYywKZGlmZiAtLWdpdCBhL3ZsLmMgYi92bC5jCmluZGV4IDc0MmY5MDAu LmQ0ZTEyYmEgMTAwNjQ0Ci0tLSBhL3ZsLmMKKysrIGIvdmwuYwpAQCAtNDM4Nyw2ICs0Mzg3LDQ4 IEBAIHZvaWQgdXNiX2luZm8odm9pZCkKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogUENNQ0lBL0NhcmRidXMgKi8K Kworc3RhdGljIHN0cnVjdCBwY21jaWFfc29ja2V0X2VudHJ5X3MgeworICAgIHN0cnVjdCBwY21j aWFfc29ja2V0X3MgKnNvY2tldDsKKyAgICBzdHJ1Y3QgcGNtY2lhX3NvY2tldF9lbnRyeV9zICpu ZXh0OworfSAqcGNtY2lhX3NvY2tldHMgPSAwOworCit2b2lkIHBjbWNpYV9zb2NrZXRfcmVnaXN0 ZXIoc3RydWN0IHBjbWNpYV9zb2NrZXRfcyAqc29ja2V0KQoreworICAgIHN0cnVjdCBwY21jaWFf c29ja2V0X2VudHJ5X3MgKmVudHJ5OworCisgICAgZW50cnkgPSBxZW11X21hbGxvYyhzaXplb2Yo c3RydWN0IHBjbWNpYV9zb2NrZXRfZW50cnlfcykpOworICAgIGVudHJ5LT5zb2NrZXQgPSBzb2Nr ZXQ7CisgICAgZW50cnktPm5leHQgPSBwY21jaWFfc29ja2V0czsKKyAgICBwY21jaWFfc29ja2V0 cyA9IGVudHJ5OworfQorCit2b2lkIHBjbWNpYV9zb2NrZXRfdW5yZWdpc3RlcihzdHJ1Y3QgcGNt Y2lhX3NvY2tldF9zICpzb2NrZXQpCit7CisgICAgc3RydWN0IHBjbWNpYV9zb2NrZXRfZW50cnlf cyAqZW50cnksICoqcHRyOworCisgICAgcHRyID0gJnBjbWNpYV9zb2NrZXRzOworICAgIGZvciAo ZW50cnkgPSAqcHRyOyBlbnRyeTsgcHRyID0gJmVudHJ5LT5uZXh0LCBlbnRyeSA9ICpwdHIpCisg ICAgICAgIGlmIChlbnRyeS0+c29ja2V0ID09IHNvY2tldCkgeworICAgICAgICAgICAgKnB0ciA9 IGVudHJ5LT5uZXh0OworICAgICAgICAgICAgcWVtdV9mcmVlKGVudHJ5KTsKKyAgICAgICAgfQor fQorCit2b2lkIHBjbWNpYV9pbmZvKHZvaWQpCit7CisgICAgc3RydWN0IHBjbWNpYV9zb2NrZXRf ZW50cnlfcyAqaXRlcjsKKyAgICBpZiAoIXBjbWNpYV9zb2NrZXRzKQorICAgICAgICB0ZXJtX3By aW50ZigiTm8gUENNQ0lBIHNvY2tldHNcbiIpOworCisgICAgZm9yIChpdGVyID0gcGNtY2lhX3Nv Y2tldHM7IGl0ZXI7IGl0ZXIgPSBpdGVyLT5uZXh0KQorICAgICAgICB0ZXJtX3ByaW50ZigiJXM6 ICVzXG4iLCBpdGVyLT5zb2NrZXQtPnNsb3Rfc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAg ICAgaXRlci0+c29ja2V0LT5hdHRhY2hlZCA/IGl0ZXItPnNvY2tldC0+Y2FyZF9zdHJpbmcgOgor ICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5Iik7Cit9CisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIHBpZCBmaWxl ICovCiAKIHN0YXRpYyBjaGFyICpwaWRfZmlsZW5hbWU7CmRpZmYgLS1naXQgYS92bC5oIGIvdmwu aAppbmRleCBjN2M3ZDczLi45NWYzMTM5IDEwMDY0NAotLS0gYS92bC5oCisrKyBiL3ZsLmgKQEAg LTEzODcsNiArMTM4Nyw1NyBAQCBwZmxhc2hfdCAqcGZsYXNoX3JlZ2lzdGVyICh0YXJnZXRfdWxv bmcgYmFzZSwgcmFtX2FkZHJfdCBvZmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MTZfdCBpZDAsIHVpbnQxNl90IGlkMSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MTZfdCBpZDIsIHVpbnQxNl90IGlkMyk7CiAKKy8qIFBDTUNJQS9DYXJkYnVzICovCisKK3N0cnVj dCBwY21jaWFfc29ja2V0X3MgeworICAgIHZvaWQgKCpzZXRfaXJxKSh2b2lkICpvcGFxdWUsIGlu dCBpcnEsIGludCBsZXZlbCk7CisgICAgdm9pZCAqb3BhcXVlOworICAgIGludCBhdHRhY2hlZDsK KyAgICBjb25zdCBjaGFyICpzbG90X3N0cmluZzsKKyAgICBjb25zdCBjaGFyICpjYXJkX3N0cmlu ZzsKK307CisKK3ZvaWQgcGNtY2lhX3NvY2tldF9yZWdpc3RlcihzdHJ1Y3QgcGNtY2lhX3NvY2tl dF9zICpzb2NrZXQpOwordm9pZCBwY21jaWFfc29ja2V0X3VucmVnaXN0ZXIoc3RydWN0IHBjbWNp YV9zb2NrZXRfcyAqc29ja2V0KTsKK3ZvaWQgcGNtY2lhX2luZm8odm9pZCk7CisKK3N0cnVjdCBw Y21jaWFfY2FyZF9zIHsKKyAgICB2b2lkICpzdGF0ZTsKKyAgICBzdHJ1Y3QgcGNtY2lhX3NvY2tl dF9zICpzbG90OworICAgIGludCAoKmF0dGFjaCkodm9pZCAqc3RhdGUpOworICAgIGludCAoKmRl dGFjaCkodm9pZCAqc3RhdGUpOworICAgIGNvbnN0IHVpbnQ4X3QgKmNpczsKKyAgICBpbnQgY2lz X2xlbjsKKworICAgIC8qIE9ubHkgdmFsaWQgaWYgYXR0YWNoZWQgKi8KKyAgICB1aW50OF90ICgq YXR0cl9yZWFkKSh2b2lkICpzdGF0ZSwgdWludDE2X3QgYWRkcmVzcyk7CisgICAgdm9pZCAoKmF0 dHJfd3JpdGUpKHZvaWQgKnN0YXRlLCB1aW50MTZfdCBhZGRyZXNzLCB1aW50OF90IHZhbHVlKTsK KyAgICB1aW50MTZfdCAoKmNvbW1vbl9yZWFkKSh2b2lkICpzdGF0ZSwgdWludDE2X3QgYWRkcmVz cyk7CisgICAgdm9pZCAoKmNvbW1vbl93cml0ZSkodm9pZCAqc3RhdGUsIHVpbnQxNl90IGFkZHJl c3MsIHVpbnQxNl90IHZhbHVlKTsKKyAgICB1aW50MTZfdCAoKmlvX3JlYWQpKHZvaWQgKnN0YXRl LCB1aW50MTZfdCBhZGRyZXNzKTsKKyAgICB2b2lkICgqaW9fd3JpdGUpKHZvaWQgKnN0YXRlLCB1 aW50MTZfdCBhZGRyZXNzLCB1aW50MTZfdCB2YWx1ZSk7Cit9OworCisjZGVmaW5lIENJU1RQTF9E RVZJQ0UJCTB4MDEJLyogNVYgRGV2aWNlIEluZm9ybWF0aW9uIFR1cGxlICovCisjZGVmaW5lIENJ U1RQTF9OT19MSU5LCQkweDE0CS8qIE5vIExpbmsgVHVwbGUgKi8KKyNkZWZpbmUgQ0lTVFBMX1ZF UlNfMQkJMHgxNQkvKiBMZXZlbCAxIFZlcnNpb24gVHVwbGUgKi8KKyNkZWZpbmUgQ0lTVFBMX0pF REVDX0MJCTB4MTgJLyogSkVERUMgSUQgVHVwbGUgKi8KKyNkZWZpbmUgQ0lTVFBMX0pFREVDX0EJ CTB4MTkJLyogSkVERUMgSUQgVHVwbGUgKi8KKyNkZWZpbmUgQ0lTVFBMX0NPTkZJRwkJMHgxYQkv KiBDb25maWd1cmF0aW9uIFR1cGxlICovCisjZGVmaW5lIENJU1RQTF9DRlRBQkxFX0VOVFJZCTB4 MWIJLyogMTYtYml0IFBDQ2FyZCBDb25maWd1cmF0aW9uICovCisjZGVmaW5lIENJU1RQTF9ERVZJ Q0VfT0MJMHgxYwkvKiBBZGRpdGlvbmFsIERldmljZSBJbmZvcm1hdGlvbiAqLworI2RlZmluZSBD SVNUUExfREVWSUNFX09BCTB4MWQJLyogQWRkaXRpb25hbCBEZXZpY2UgSW5mb3JtYXRpb24gKi8K KyNkZWZpbmUgQ0lTVFBMX0RFVklDRV9HRU8JMHgxZQkvKiBBZGRpdGlvbmFsIERldmljZSBJbmZv cm1hdGlvbiAqLworI2RlZmluZSBDSVNUUExfREVWSUNFX0dFT19BCTB4MWYJLyogQWRkaXRpb25h bCBEZXZpY2UgSW5mb3JtYXRpb24gKi8KKyNkZWZpbmUgQ0lTVFBMX01BTkZJRAkJMHgyMAkvKiBN YW51ZmFjdHVyZSBJRCBUdXBsZSAqLworI2RlZmluZSBDSVNUUExfRlVOQ0lECQkweDIxCS8qIEZ1 bmN0aW9uIElEIFR1cGxlICovCisjZGVmaW5lIENJU1RQTF9GVU5DRQkJMHgyMgkvKiBGdW5jdGlv biBFeHRlbnNpb24gVHVwbGUgKi8KKyNkZWZpbmUgQ0lTVFBMX0VORAkJMHhmZgkvKiBUdXBsZSBF bmQgKi8KKyNkZWZpbmUgQ0lTVFBMX0VORE1BUksJCTB4ZmYKKworLyogZHNjbTF4eHh4LmMgKi8K K3N0cnVjdCBwY21jaWFfY2FyZF9zICpkc2NtMXh4eHhfaW5pdChCbG9ja0RyaXZlclN0YXRlICpi ZHJ2KTsKKwogI2luY2x1ZGUgImdkYnN0dWIuaCIKIAogI2VuZGlmIC8qIGRlZmluZWQoUUVNVV9U T09MKSAqLwotLSAKMS40LjQuMwoK ------=_Part_98818_17771475.1174077827053--