From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HCJ4r-0004hX-Tm for qemu-devel@nongnu.org; Wed, 31 Jan 2007 12:16:57 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HCJ4q-0004hL-As for qemu-devel@nongnu.org; Wed, 31 Jan 2007 12:16:56 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HCJ4q-0004hI-5I for qemu-devel@nongnu.org; Wed, 31 Jan 2007 12:16:56 -0500 Received: from ug-out-1314.google.com ([66.249.92.175]) by monty-python.gnu.org with esmtp (Exim 4.52) id 1HCJ4p-00019s-E8 for qemu-devel@nongnu.org; Wed, 31 Jan 2007 12:16:56 -0500 Received: by ug-out-1314.google.com with SMTP id j40so225938ugd for ; Wed, 31 Jan 2007 09:16:54 -0800 (PST) Message-ID: Date: Wed, 31 Jan 2007 09:16:53 -0800 From: "Ed Swierk" Sender: eswierk@gmail.com Subject: Re: [Qemu-devel] [PATCH] PIIX4 SMBus host, EEPROM device emulation In-Reply-To: <20070131120747.GA521@networkno.de> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_7419_13485848.1170263813266" References: <45B68307.9090509@bellard.org> <20070131120747.GA521@networkno.de> Reply-To: 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_7419_13485848.1170263813266 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 1/31/07, Thiemo Seufer wrote: > It doesn't apply for current CVS. Could you please update the patch? > I would also prefer to have enums instead of raw constants in all those > case statements. Here you go. --Ed ------=_Part_7419_13485848.1170263813266 Content-Type: text/x-patch; name=qemu-piix4-smbus-eeprom.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_exm0u9kd Content-Disposition: attachment; filename="qemu-piix4-smbus-eeprom.patch" ZGlmZiAtQnVyTiBxZW11LXNuYXBzaG90LTIwMDctMDEtMjJfMDUub3JpZy9ody9hY3BpLmMgcWVt dS1zbmFwc2hvdC0yMDA3LTAxLTIyXzA1L2h3L2FjcGkuYwotLS0gcWVtdS1zbmFwc2hvdC0yMDA3 LTAxLTIyXzA1Lm9yaWcvaHcvYWNwaS5jCTIwMDYtMTAtMDIgMTE6MjU6NDAuMDAwMDAwMDAwIC0w NzAwCisrKyBxZW11LXNuYXBzaG90LTIwMDctMDEtMjJfMDUvaHcvYWNwaS5jCTIwMDctMDEtMzEg MDg6NTk6NDcuMDAwMDAwMDAwIC0wODAwCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIFBNX0ZS RVEgMzU3OTU0NQogCiAjZGVmaW5lIEFDUElfREJHX0lPX0FERFIgIDB4YjA0NAorI2RlZmluZSBT TUJfSU9fQkFTRSAgICAgICAweGIxMDAKIAogdHlwZWRlZiBzdHJ1Y3QgUElJWDRQTVN0YXRlIHsK ICAgICBQQ0lEZXZpY2UgZGV2OwpAQCAtMzQsNiArMzUsMTUgQEAKICAgICB1aW50OF90IGFwbXM7 CiAgICAgUUVNVVRpbWVyICp0bXJfdGltZXI7CiAgICAgaW50NjRfdCB0bXJfb3ZlcmZsb3dfdGlt ZTsKKyAgICBTTUJ1c0RldmljZSAqc21iX2RldlsxMjhdOworICAgIHVpbnQ4X3Qgc21iX3N0YXQ7 CisgICAgdWludDhfdCBzbWJfY3RsOworICAgIHVpbnQ4X3Qgc21iX2NtZDsKKyAgICB1aW50OF90 IHNtYl9hZGRyOworICAgIHVpbnQ4X3Qgc21iX2RhdGEwOworICAgIHVpbnQ4X3Qgc21iX2RhdGEx OworICAgIHVpbnQ4X3Qgc21iX2RhdGFbMzJdOworICAgIHVpbnQ4X3Qgc21iX2luZGV4OwogfSBQ SUlYNFBNU3RhdGU7CiAKICNkZWZpbmUgUlRDX0VOICgxIDw8IDEwKQpAQCAtNDUsNiArNTUsMTcg QEAKIAogI2RlZmluZSBTVVNfRU4gKDEgPDwgMTMpCiAKKyNkZWZpbmUgU01CSFNUU1RTIDB4MDAK KyNkZWZpbmUgU01CSFNUQ05UIDB4MDIKKyNkZWZpbmUgU01CSFNUQ01EIDB4MDMKKyNkZWZpbmUg U01CSFNUQUREIDB4MDQKKyNkZWZpbmUgU01CSFNUREFUMCAweDA1CisjZGVmaW5lIFNNQkhTVERB VDEgMHgwNgorI2RlZmluZSBTTUJCTEtEQVQgMHgwNworCisvKiBOb3RlOiBvbmx5IHVzZWQgZm9y IHBpaXg0X3NtYnVzX3JlZ2lzdGVyX2RldmljZSAqLworc3RhdGljIFBJSVg0UE1TdGF0ZSAqcGlp eDRfcG1fc3RhdGU7CisKIHN0YXRpYyB1aW50MzJfdCBnZXRfcG10bXIoUElJWDRQTVN0YXRlICpz KQogewogICAgIHVpbnQzMl90IGQ7CkBAIC0yMzEsNiArMjUyLDE1NiBAQAogI2VuZGlmCiB9CiAK K3N0YXRpYyB2b2lkIHNtYl90cmFuc2FjdGlvbihQSUlYNFBNU3RhdGUgKnMpCit7CisgICAgdWlu dDhfdCBwcm90ID0gKHMtPnNtYl9jdGwgPj4gMikgJiAweDA3OworICAgIHVpbnQ4X3QgcmVhZCA9 IHMtPnNtYl9hZGRyICYgMHgwMTsKKyAgICB1aW50OF90IGNtZCA9IHMtPnNtYl9jbWQ7CisgICAg dWludDhfdCBhZGRyID0gcy0+c21iX2FkZHIgPj4gMTsKKyAgICBTTUJ1c0RldmljZSAqZGV2ID0g cy0+c21iX2RldlthZGRyXTsKKworI2lmZGVmIERFQlVHCisgICAgcHJpbnRmKCJTTUJ1cyB0cmFu cyBhZGRyPTB4JTAyeCBwcm90PTB4JTAyeFxuIiwgYWRkciwgcHJvdCk7CisjZW5kaWYKKyAgICBp ZiAoIWRldikgZ290byBlcnJvcjsKKworICAgIHN3aXRjaChwcm90KSB7CisgICAgY2FzZSAweDA6 CisgICAgICAgIGlmICghZGV2LT5xdWlja19jbWQpIGdvdG8gZXJyb3I7CisgICAgICAgICgqZGV2 LT5xdWlja19jbWQpKGRldiwgcmVhZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMHgxOgor ICAgICAgICBpZiAocmVhZCkgeworICAgICAgICAgICAgaWYgKCFkZXYtPnJlY2VpdmVfYnl0ZSkg Z290byBlcnJvcjsKKyAgICAgICAgICAgIHMtPnNtYl9kYXRhMCA9ICgqZGV2LT5yZWNlaXZlX2J5 dGUpKGRldik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIWRl di0+c2VuZF9ieXRlKSBnb3RvIGVycm9yOworICAgICAgICAgICAgKCpkZXYtPnNlbmRfYnl0ZSko ZGV2LCBjbWQpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMHgyOgorICAg ICAgICBpZiAocmVhZCkgeworICAgICAgICAgICAgaWYgKCFkZXYtPnJlYWRfYnl0ZSkgZ290byBl cnJvcjsKKyAgICAgICAgICAgIHMtPnNtYl9kYXRhMCA9ICgqZGV2LT5yZWFkX2J5dGUpKGRldiwg Y21kKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghZGV2LT53 cml0ZV9ieXRlKSBnb3RvIGVycm9yOworICAgICAgICAgICAgKCpkZXYtPndyaXRlX2J5dGUpKGRl diwgY21kLCBzLT5zbWJfZGF0YTApOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNh c2UgMHgzOgorICAgICAgICBpZiAocmVhZCkgeworICAgICAgICAgICAgdWludDE2X3QgdmFsOwor ICAgICAgICAgICAgaWYgKCFkZXYtPnJlYWRfd29yZCkgZ290byBlcnJvcjsKKyAgICAgICAgICAg IHZhbCA9ICgqZGV2LT5yZWFkX3dvcmQpKGRldiwgY21kKTsKKyAgICAgICAgICAgIHMtPnNtYl9k YXRhMCA9IHZhbDsKKyAgICAgICAgICAgIHMtPnNtYl9kYXRhMSA9IHZhbCA+PiA4OworICAgICAg ICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFkZXYtPndyaXRlX3dvcmQpIGdv dG8gZXJyb3I7CisgICAgICAgICAgICAoKmRldi0+d3JpdGVfd29yZCkoZGV2LCBjbWQsIChzLT5z bWJfZGF0YTEgPDwgOCkgfCBzLT5zbWJfZGF0YTApOworICAgICAgICB9CisgICAgICAgIGJyZWFr OworICAgIGNhc2UgMHg1OgorICAgICAgICBpZiAocmVhZCkgeworICAgICAgICAgICAgaWYgKCFk ZXYtPnJlYWRfYmxvY2spIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBzLT5zbWJfZGF0YTAgPSAo KmRldi0+cmVhZF9ibG9jaykoZGV2LCBjbWQsIHMtPnNtYl9kYXRhKTsKKyAgICAgICAgfQorICAg ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghZGV2LT53cml0ZV9ibG9jaykgZ290byBlcnJv cjsKKyAgICAgICAgICAgICgqZGV2LT53cml0ZV9ibG9jaykoZGV2LCBjbWQsIHMtPnNtYl9kYXRh MCwgcy0+c21iX2RhdGEpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6 CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHJldHVybjsKKworICBlcnJvcjoKKyAg ICBzLT5zbWJfc3RhdCB8PSAweDA0OworfQorCitzdGF0aWMgdm9pZCBzbWJfaW9wb3J0X3dyaXRl Yih2b2lkICpvcGFxdWUsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKK3sKKyAgICBQSUlY NFBNU3RhdGUgKnMgPSBvcGFxdWU7CisgICAgYWRkciAmPSAweDNmOworI2lmZGVmIERFQlVHCisg ICAgcHJpbnRmKCJTTUIgd3JpdGViIHBvcnQ9MHglMDR4IHZhbD0weCUwMnhcbiIsIGFkZHIsIHZh bCk7CisjZW5kaWYKKyAgICBzd2l0Y2goYWRkcikgeworICAgIGNhc2UgU01CSFNUU1RTOgorICAg ICAgICBzLT5zbWJfc3RhdCA9IDA7CisgICAgICAgIHMtPnNtYl9pbmRleCA9IDA7CisgICAgICAg IGJyZWFrOworICAgIGNhc2UgU01CSFNUQ05UOgorICAgICAgICBzLT5zbWJfY3RsID0gdmFsOwor ICAgICAgICBpZiAodmFsICYgMHg0MCkKKyAgICAgICAgICAgIHNtYl90cmFuc2FjdGlvbihzKTsK KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTTUJIU1RDTUQ6CisgICAgICAgIHMtPnNtYl9jbWQg PSB2YWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU01CSFNUQUREOgorICAgICAgICBzLT5z bWJfYWRkciA9IHZhbDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTTUJIU1REQVQwOgorICAg ICAgICBzLT5zbWJfZGF0YTAgPSB2YWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU01CSFNU REFUMToKKyAgICAgICAgcy0+c21iX2RhdGExID0gdmFsOworICAgICAgICBicmVhazsKKyAgICBj YXNlIFNNQkJMS0RBVDoKKyAgICAgICAgcy0+c21iX2RhdGFbcy0+c21iX2luZGV4KytdID0gdmFs OworICAgICAgICBpZiAocy0+c21iX2luZGV4ID4gMzEpCisgICAgICAgICAgICBzLT5zbWJfaW5k ZXggPSAwOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAg ICB9Cit9CisKK3N0YXRpYyB1aW50MzJfdCBzbWJfaW9wb3J0X3JlYWRiKHZvaWQgKm9wYXF1ZSwg dWludDMyX3QgYWRkcikKK3sKKyAgICBQSUlYNFBNU3RhdGUgKnMgPSBvcGFxdWU7CisgICAgdWlu dDMyX3QgdmFsOworCisgICAgYWRkciAmPSAweDNmOworICAgIHN3aXRjaChhZGRyKSB7CisgICAg Y2FzZSBTTUJIU1RTVFM6CisgICAgICAgIHZhbCA9IHMtPnNtYl9zdGF0OworICAgICAgICBicmVh azsKKyAgICBjYXNlIFNNQkhTVENOVDoKKyAgICAgICAgcy0+c21iX2luZGV4ID0gMDsKKyAgICAg ICAgdmFsID0gcy0+c21iX2N0bCAmIDB4MWY7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU01C SFNUQ01EOgorICAgICAgICB2YWwgPSBzLT5zbWJfY21kOworICAgICAgICBicmVhazsKKyAgICBj YXNlIFNNQkhTVEFERDoKKyAgICAgICAgdmFsID0gcy0+c21iX2FkZHI7CisgICAgICAgIGJyZWFr OworICAgIGNhc2UgU01CSFNUREFUMDoKKyAgICAgICAgdmFsID0gcy0+c21iX2RhdGEwOworICAg ICAgICBicmVhazsKKyAgICBjYXNlIFNNQkhTVERBVDE6CisgICAgICAgIHZhbCA9IHMtPnNtYl9k YXRhMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTTUJCTEtEQVQ6CisgICAgICAgIHZhbCA9 IHMtPnNtYl9kYXRhW3MtPnNtYl9pbmRleCsrXTsKKyAgICAgICAgaWYgKHMtPnNtYl9pbmRleCA+ IDMxKQorICAgICAgICAgICAgcy0+c21iX2luZGV4ID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAg ZGVmYXVsdDoKKyAgICAgICAgdmFsID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorI2lmZGVm IERFQlVHCisgICAgcHJpbnRmKCJTTUIgcmVhZGIgcG9ydD0weCUwNHggdmFsPTB4JTAyeFxuIiwg YWRkciwgdmFsKTsKKyNlbmRpZgorICAgIHJldHVybiB2YWw7Cit9CisKIHN0YXRpYyB2b2lkIHBt X2lvX3NwYWNlX3VwZGF0ZShQSUlYNFBNU3RhdGUgKnMpCiB7CiAgICAgdWludDMyX3QgcG1faW9f YmFzZTsKQEAgLTMwMiw2ICs0NzMsNyBAQAogewogICAgIFBJSVg0UE1TdGF0ZSAqczsKICAgICB1 aW50OF90ICpwY2lfY29uZjsKKyAgICB1aW50MzJfdCBwbV9pb19iYXNlLCBzbWJfaW9fYmFzZTsK IAogICAgIHMgPSAoUElJWDRQTVN0YXRlICopcGNpX3JlZ2lzdGVyX2RldmljZShidXMsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQTSIsIHNpemVvZihQSUlYNFBN U3RhdGUpLApAQCAtMzMyLDcgKzUwNCwyMCBAQAogICAgIHBjaV9jb25mWzB4NjddID0gKHNlcmlh bF9oZHNbMF0gIT0gTlVMTCA/IDB4MDggOiAwKSB8CiAJKHNlcmlhbF9oZHNbMV0gIT0gTlVMTCA/ IDB4OTAgOiAwKTsKIAorICAgIHNtYl9pb19iYXNlID0gU01CX0lPX0JBU0U7CisgICAgcGNpX2Nv bmZbMHg5MF0gPSBzbWJfaW9fYmFzZSB8IDE7CisgICAgcGNpX2NvbmZbMHg5MV0gPSBzbWJfaW9f YmFzZSA+PiA4OworICAgIHBjaV9jb25mWzB4ZDJdID0gMHgwOTsKKyAgICByZWdpc3Rlcl9pb3Bv cnRfd3JpdGUoc21iX2lvX2Jhc2UsIDY0LCAxLCBzbWJfaW9wb3J0X3dyaXRlYiwgcyk7CisgICAg cmVnaXN0ZXJfaW9wb3J0X3JlYWQoc21iX2lvX2Jhc2UsIDY0LCAxLCBzbWJfaW9wb3J0X3JlYWRi LCBzKTsKKwogICAgIHMtPnRtcl90aW1lciA9IHFlbXVfbmV3X3RpbWVyKHZtX2Nsb2NrLCBwbV90 bXJfdGltZXIsIHMpOwogCiAgICAgcmVnaXN0ZXJfc2F2ZXZtKCJwaWl4NF9wbSIsIDAsIDEsIHBt X3NhdmUsIHBtX2xvYWQsIHMpOworICAgIHBpaXg0X3BtX3N0YXRlID0gczsKK30KKwordm9pZCBw aWl4NF9zbWJ1c19yZWdpc3Rlcl9kZXZpY2UoU01CdXNEZXZpY2UgKmRldiwgdWludDhfdCBhZGRy KQoreworICAgIHBpaXg0X3BtX3N0YXRlLT5zbWJfZGV2W2FkZHJdID0gZGV2OwogfQpkaWZmIC1C dXJOIHFlbXUtc25hcHNob3QtMjAwNy0wMS0yMl8wNS5vcmlnL2h3L3BjLmMgcWVtdS1zbmFwc2hv dC0yMDA3LTAxLTIyXzA1L2h3L3BjLmMKLS0tIHFlbXUtc25hcHNob3QtMjAwNy0wMS0yMl8wNS5v cmlnL2h3L3BjLmMJMjAwNy0wMS0xMCAwODoyMzo0MS4wMDAwMDAwMDAgLTA4MDAKKysrIHFlbXUt c25hcHNob3QtMjAwNy0wMS0yMl8wNS9ody9wYy5jCTIwMDctMDEtMzEgMDg6NTE6MDQuMDAwMDAw MDAwIC0wODAwCkBAIC02OTksNyArNjk5LDEzIEBACiAgICAgfQogCiAgICAgaWYgKHBjaV9lbmFi bGVkICYmIGFjcGlfZW5hYmxlZCkgeworICAgICAgICB1aW50OF90ICplZXByb21fYnVmID0gcWVt dV9tYWxsb2N6KDggKiAyNTYpOyAvKiBYWFg6IG1ha2UgdGhpcyBwZXJzaXN0ZW50ICovCiAgICAg ICAgIHBpaXg0X3BtX2luaXQocGNpX2J1cywgcGlpeDNfZGV2Zm4gKyAzKTsKKyAgICAgICAgZm9y IChpID0gMDsgaSA8IDg7IGkrKykgeworICAgICAgICAgICAgU01CdXNEZXZpY2UgKmVlcHJvbSA9 IHNtYnVzX2VlcHJvbV9kZXZpY2VfaW5pdCgweDUwICsgaSwKKyAgICAgICAgICAgICAgICBlZXBy b21fYnVmICsgKGkgKiAyNTYpKTsKKyAgICAgICAgICAgIHBpaXg0X3NtYnVzX3JlZ2lzdGVyX2Rl dmljZShlZXByb20sIDB4NTAgKyBpKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICBpZiAo aTQ0MGZ4X3N0YXRlKSB7CmRpZmYgLUJ1ck4gcWVtdS1zbmFwc2hvdC0yMDA3LTAxLTIyXzA1Lm9y aWcvaHcvc21idXNfZWVwcm9tLmMgcWVtdS1zbmFwc2hvdC0yMDA3LTAxLTIyXzA1L2h3L3NtYnVz X2VlcHJvbS5jCi0tLSBxZW11LXNuYXBzaG90LTIwMDctMDEtMjJfMDUub3JpZy9ody9zbWJ1c19l ZXByb20uYwkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysgcWVtdS1zbmFw c2hvdC0yMDA3LTAxLTIyXzA1L2h3L3NtYnVzX2VlcHJvbS5jCTIwMDctMDEtMzEgMDg6NTE6MDQu MDAwMDAwMDAwIC0wODAwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBRRU1VIFNNQnVzIEVFUFJP TSBkZXZpY2UKKyAqIAorICogQ29weXJpZ2h0IChjKSAyMDA3IEFyYXN0cmEsIEluYy4KKyAqIAor ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKyAqIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0 aW9uIHRoZSByaWdodHMKKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICog ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK KyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS Q0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisg KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorICogVEhFIFNPRlRX QVJFLgorICovCisKKyNpbmNsdWRlICJ2bC5oIgorCisvLyNkZWZpbmUgREVCVUcKKwordHlwZWRl ZiBzdHJ1Y3QgU01CdXNFRVBST01EZXZpY2UgeworICAgIFNNQnVzRGV2aWNlIGRldjsKKyAgICB1 aW50OF90ICpkYXRhOworICAgIHVpbnQ4X3Qgb2Zmc2V0OworfSBTTUJ1c0VFUFJPTURldmljZTsK Kworc3RhdGljIHZvaWQgZWVwcm9tX3F1aWNrX2NtZChTTUJ1c0RldmljZSAqZGV2LCB1aW50OF90 IHJlYWQpCit7CisjaWZkZWYgREVCVUcKKyAgICBwcmludGYoImVlcHJvbV9xdWlja19jbWQ6IGFk ZHI9MHglMDJ4IHJlYWQ9JWRcbiIsIGRldi0+YWRkciwgcmVhZCk7CisjZW5kaWYKK30KKworc3Rh dGljIHZvaWQgZWVwcm9tX3NlbmRfYnl0ZShTTUJ1c0RldmljZSAqZGV2LCB1aW50OF90IHZhbCkK K3sKKyAgICBTTUJ1c0VFUFJPTURldmljZSAqZWVwcm9tID0gKFNNQnVzRUVQUk9NRGV2aWNlICop IGRldjsKKyNpZmRlZiBERUJVRworICAgIHByaW50ZigiZWVwcm9tX3NlbmRfYnl0ZTogYWRkcj0w eCUwMnggdmFsPTB4JTAyeFxuIiwgZGV2LT5hZGRyLCB2YWwpOworI2VuZGlmCisgICAgZWVwcm9t LT5vZmZzZXQgPSB2YWw7Cit9CisKK3N0YXRpYyB1aW50OF90IGVlcHJvbV9yZWNlaXZlX2J5dGUo U01CdXNEZXZpY2UgKmRldikKK3sKKyAgICBTTUJ1c0VFUFJPTURldmljZSAqZWVwcm9tID0gKFNN QnVzRUVQUk9NRGV2aWNlICopIGRldjsKKyAgICB1aW50OF90IHZhbCA9IGVlcHJvbS0+ZGF0YVtl ZXByb20tPm9mZnNldCsrXTsKKyNpZmRlZiBERUJVRworICAgIHByaW50ZigiZWVwcm9tX3JlY2Vp dmVfYnl0ZTogYWRkcj0weCUwMnggdmFsPTB4JTAyeFxuIiwgZGV2LT5hZGRyLCB2YWwpOworI2Vu ZGlmCisgICAgcmV0dXJuIHZhbDsKK30KKworc3RhdGljIHZvaWQgZWVwcm9tX3dyaXRlX2J5dGUo U01CdXNEZXZpY2UgKmRldiwgdWludDhfdCBjbWQsIHVpbnQ4X3QgdmFsKQoreworICAgIFNNQnVz RUVQUk9NRGV2aWNlICplZXByb20gPSAoU01CdXNFRVBST01EZXZpY2UgKikgZGV2OworI2lmZGVm IERFQlVHCisgICAgcHJpbnRmKCJlZXByb21fd3JpdGVfYnl0ZTogYWRkcj0weCUwMnggY21kPTB4 JTAyeCB2YWw9MHglMDJ4XG4iLCBkZXYtPmFkZHIsCisgICAgICAgICAgIGNtZCwgdmFsKTsKKyNl bmRpZgorICAgIGVlcHJvbS0+ZGF0YVtjbWRdID0gdmFsOworfQorCitzdGF0aWMgdWludDhfdCBl ZXByb21fcmVhZF9ieXRlKFNNQnVzRGV2aWNlICpkZXYsIHVpbnQ4X3QgY21kKQoreworICAgIFNN QnVzRUVQUk9NRGV2aWNlICplZXByb20gPSAoU01CdXNFRVBST01EZXZpY2UgKikgZGV2OworICAg IHVpbnQ4X3QgdmFsID0gZWVwcm9tLT5kYXRhW2NtZF07CisjaWZkZWYgREVCVUcKKyAgICBwcmlu dGYoImVlcHJvbV9yZWFkX2J5dGU6IGFkZHI9MHglMDJ4IGNtZD0weCUwMnggdmFsPTB4JTAyeFxu IiwgZGV2LT5hZGRyLAorICAgICAgICAgICBjbWQsIHZhbCk7CisjZW5kaWYKKyAgICByZXR1cm4g dmFsOworfQorCitTTUJ1c0RldmljZSAqc21idXNfZWVwcm9tX2RldmljZV9pbml0KHVpbnQ4X3Qg YWRkciwgdWludDhfdCAqYnVmKQoreworICAgIFNNQnVzRUVQUk9NRGV2aWNlICplZXByb20gPSBx ZW11X21hbGxvY3ooc2l6ZW9mKFNNQnVzRUVQUk9NRGV2aWNlKSk7CisgICAgZWVwcm9tLT5kZXYu YWRkciA9IGFkZHI7CisgICAgZWVwcm9tLT5kZXYucXVpY2tfY21kID0gZWVwcm9tX3F1aWNrX2Nt ZDsKKyAgICBlZXByb20tPmRldi5zZW5kX2J5dGUgPSBlZXByb21fc2VuZF9ieXRlOworICAgIGVl cHJvbS0+ZGV2LnJlY2VpdmVfYnl0ZSA9IGVlcHJvbV9yZWNlaXZlX2J5dGU7CisgICAgZWVwcm9t LT5kZXYud3JpdGVfYnl0ZSA9IGVlcHJvbV93cml0ZV9ieXRlOworICAgIGVlcHJvbS0+ZGV2LnJl YWRfYnl0ZSA9IGVlcHJvbV9yZWFkX2J5dGU7CisgICAgZWVwcm9tLT5kYXRhID0gYnVmOworICAg IGVlcHJvbS0+b2Zmc2V0ID0gMDsKKyAgICByZXR1cm4gKFNNQnVzRGV2aWNlICopIGVlcHJvbTsK K30KZGlmZiAtQnVyTiBxZW11LXNuYXBzaG90LTIwMDctMDEtMjJfMDUub3JpZy9ody9zbWJ1cy5o IHFlbXUtc25hcHNob3QtMjAwNy0wMS0yMl8wNS9ody9zbWJ1cy5oCi0tLSBxZW11LXNuYXBzaG90 LTIwMDctMDEtMjJfMDUub3JpZy9ody9zbWJ1cy5oCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAw MDAwIC0wODAwCisrKyBxZW11LXNuYXBzaG90LTIwMDctMDEtMjJfMDUvaHcvc21idXMuaAkyMDA3 LTAxLTMxIDA4OjUxOjA0LjAwMDAwMDAwMCAtMDgwMApAQCAtMCwwICsxLDM4IEBACisvKgorICog UUVNVSBTTUJ1cyBBUEkKKyAqIAorICogQ29weXJpZ2h0IChjKSAyMDA3IEFyYXN0cmEsIEluYy4K KyAqIAorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKKyAq IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs aW1pdGF0aW9uIHRoZSByaWdodHMKKyAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKKyAqIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBp cworICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U SEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgorICogVEhF IFNPRlRXQVJFLgorICovCisKK3R5cGVkZWYgc3RydWN0IFNNQnVzRGV2aWNlIFNNQnVzRGV2aWNl OworCitzdHJ1Y3QgU01CdXNEZXZpY2UgeworICAgIHVpbnQ4X3QgYWRkcjsKKyAgICB2b2lkICgq cXVpY2tfY21kKShTTUJ1c0RldmljZSAqZGV2LCB1aW50OF90IHJlYWQpOworICAgIHZvaWQgKCpz ZW5kX2J5dGUpKFNNQnVzRGV2aWNlICpkZXYsIHVpbnQ4X3QgdmFsKTsKKyAgICB1aW50OF90ICgq cmVjZWl2ZV9ieXRlKShTTUJ1c0RldmljZSAqZGV2KTsKKyAgICB2b2lkICgqd3JpdGVfYnl0ZSko U01CdXNEZXZpY2UgKmRldiwgdWludDhfdCBjbWQsIHVpbnQ4X3QgdmFsKTsKKyAgICB1aW50OF90 ICgqcmVhZF9ieXRlKShTTUJ1c0RldmljZSAqZGV2LCB1aW50OF90IGNtZCk7CisgICAgdm9pZCAo KndyaXRlX3dvcmQpKFNNQnVzRGV2aWNlICpkZXYsIHVpbnQ4X3QgY21kLCB1aW50MTZfdCB2YWwp OworICAgIHVpbnQxNl90ICgqcmVhZF93b3JkKShTTUJ1c0RldmljZSAqZGV2LCB1aW50OF90IGNt ZCk7CisgICAgdm9pZCAoKndyaXRlX2Jsb2NrKShTTUJ1c0RldmljZSAqZGV2LCB1aW50OF90IGNt ZCwgdWludDhfdCBsZW4sIHVpbnQ4X3QgKmJ1Zik7CisgICAgdWludDhfdCAoKnJlYWRfYmxvY2sp KFNNQnVzRGV2aWNlICpkZXYsIHVpbnQ4X3QgY21kLCB1aW50OF90ICpidWYpOworfTsKZGlmZiAt QnVyTiBxZW11LXNuYXBzaG90LTIwMDctMDEtMjJfMDUub3JpZy9NYWtlZmlsZS50YXJnZXQgcWVt dS1zbmFwc2hvdC0yMDA3LTAxLTIyXzA1L01ha2VmaWxlLnRhcmdldAotLS0gcWVtdS1zbmFwc2hv dC0yMDA3LTAxLTIyXzA1Lm9yaWcvTWFrZWZpbGUudGFyZ2V0CTIwMDctMDEtMjEgMTQ6NDA6MDQu MDAwMDAwMDAwIC0wODAwCisrKyBxZW11LXNuYXBzaG90LTIwMDctMDEtMjJfMDUvTWFrZWZpbGUu dGFyZ2V0CTIwMDctMDEtMzEgMDk6MDA6MTcuMDAwMDAwMDAwIC0wODAwCkBAIC0zNjUsNyArMzY1 LDcgQEAKIFZMX09CSlMrPSBpZGUubyBwY2tiZC5vIHBzMi5vIHZnYS5vICQoU09VTkRfSFcpIGRt YS5vICQoQVVESU9EUlYpCiBWTF9PQkpTKz0gZmRjLm8gbWMxNDY4MThydGMubyBzZXJpYWwubyBp ODI1OS5vIGk4MjU0Lm8gcGNzcGsubyBwYy5vCiBWTF9PQkpTKz0gY2lycnVzX3ZnYS5vIG1peGVu Zy5vIGFwaWMubyBwYXJhbGxlbC5vIGFjcGkubyBwaWl4X3BjaS5vCi1WTF9PQkpTKz0gdXNiLXVo Y2kubworVkxfT0JKUys9IHVzYi11aGNpLm8gc21idXNfZWVwcm9tLm8KIENQUEZMQUdTICs9IC1E SEFTX0FVRElPCiBlbmRpZgogaWZlcSAoJChUQVJHRVRfQkFTRV9BUkNIKSwgcHBjKQpkaWZmIC1C dXJOIHFlbXUtc25hcHNob3QtMjAwNy0wMS0yMl8wNS5vcmlnL3ZsLmggcWVtdS1zbmFwc2hvdC0y MDA3LTAxLTIyXzA1L3ZsLmgKLS0tIHFlbXUtc25hcHNob3QtMjAwNy0wMS0yMl8wNS5vcmlnL3Zs LmgJMjAwNy0wMS0yMSAwODo0NzowMS4wMDAwMDAwMDAgLTA4MDAKKysrIHFlbXUtc25hcHNob3Qt MjAwNy0wMS0yMl8wNS92bC5oCTIwMDctMDEtMzEgMDg6NTE6MDQuMDAwMDAwMDAwIC0wODAwCkBA IC0xMDQzLDExICsxMDQzLDE3IEBACiB2b2lkIHBjc3BrX2luaXQoUElUU3RhdGUgKik7CiBpbnQg cGNzcGtfYXVkaW9faW5pdChBdWRpb1N0YXRlICopOwogCisjaW5jbHVkZSAiaHcvc21idXMuaCIK KwogLyogYWNwaS5jICovCiBleHRlcm4gaW50IGFjcGlfZW5hYmxlZDsKIHZvaWQgcGlpeDRfcG1f aW5pdChQQ0lCdXMgKmJ1cywgaW50IGRldmZuKTsKK3ZvaWQgcGlpeDRfc21idXNfcmVnaXN0ZXJf ZGV2aWNlKFNNQnVzRGV2aWNlICpkZXYsIHVpbnQ4X3QgYWRkcik7CiB2b2lkIGFjcGlfYmlvc19p bml0KHZvaWQpOwogCisvKiBzbWJ1c19lZXByb20uYyAqLworU01CdXNEZXZpY2UgKnNtYnVzX2Vl cHJvbV9kZXZpY2VfaW5pdCh1aW50OF90IGFkZHIsIHVpbnQ4X3QgKmJ1Zik7CisKIC8qIHBjLmMg Ki8KIGV4dGVybiBRRU1VTWFjaGluZSBwY19tYWNoaW5lOwogZXh0ZXJuIFFFTVVNYWNoaW5lIGlz YXBjX21hY2hpbmU7Cg== ------=_Part_7419_13485848.1170263813266--