From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:53377) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TGsqG-0004hl-Gg for qemu-devel@nongnu.org; Wed, 26 Sep 2012 10:44:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TGsqA-000640-Bz for qemu-devel@nongnu.org; Wed, 26 Sep 2012 10:44:00 -0400 Received: from va3ehsobe001.messaging.microsoft.com ([216.32.180.11]:10557 helo=va3outboundpool.messaging.microsoft.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TGsqA-00063s-7M for qemu-devel@nongnu.org; Wed, 26 Sep 2012 10:43:54 -0400 Message-ID: <50631523.3060602@amd.com> Date: Wed, 26 Sep 2012 16:45:55 +0200 From: Wei Wang MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080306080505040702010200" Subject: [Qemu-devel] [PATCH] Add amd iommu emulation for Xen. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "qemu-devel@nongnu.org" Cc: "xen-devel@lists.xensource.com" --------------080306080505040702010200 Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit HI, Attached patch adds amd iommu emulation for Xen. Please review it. Thanks, Wei --------------080306080505040702010200 Content-Type: text/plain; charset="UTF-8"; name="0001-Add-amd-iommu-emulation-for-Xen.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Add-amd-iommu-emulation-for-Xen.patch" Content-Description: 0001-Add-amd-iommu-emulation-for-Xen.patch RnJvbSAxMjI1MTc0MzU2NDEzODRlNGY1ZTM2ZWFhZDgzMDJmZjI3MzY0OGU4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBXZWkgV2FuZyA8d2VpLndhbmcyQGFtZC5jb20+CkRh dGU6IFdlZCwgMjYgU2VwIDIwMTIgMTY6NDM6NDAgKzAyMDAKU3ViamVjdDogW1BBVENIXSBB ZGQgYW1kIGlvbW11IGVtdWxhdGlvbiBmb3IgWGVuLgoKVG8gcGFzc3Rocm91Z2ggYW1kIHNv dXRoZXJuIGlzbGFuZHMgc2VyaWVzIGdwdSB0byBndWVzdCwgYSB2aXJ0dWFsIGlvbW11IGRl dmljZSBtdXN0CmJlIHJlZ2lzdGVyZWQgb24gcWVtdSBwY2kgYnVzLiBJdCB1c2VzIGEgbmV3 IGh5cGVyY2FsbCB4Y19kb21haW5fdXBkYXRlX2lvbW11X21zaQp0byBub3RpZnkgeGVuIHRo ZSBtc2kgdmVjdG9yIG9mIGlvbW11LgoKU2lnbmVkLW9mZi1ieTogV2VpIFdhbmcgPHdlaS53 YW5nMkBhbWQuY29tPgotLS0KIGh3L2kzODYvTWFrZWZpbGUub2JqcyB8ICAgIDIgKy0KIGh3 L3BjX3BpaXguYyAgICAgICAgICB8ICAgIDYgKysKIGh3L3hlbl9pb21tdS5jICAgICAgICB8 ICAxOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogaHcveGVuX3B0LmggICAgICAgICAgIHwgICAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDE5 OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGh3 L3hlbl9pb21tdS5jCgpkaWZmIC0tZ2l0IGEvaHcvaTM4Ni9NYWtlZmlsZS5vYmpzIGIvaHcv aTM4Ni9NYWtlZmlsZS5vYmpzCmluZGV4IDhjNzY0YmIuLjhiMjMxYWIgMTAwNjQ0Ci0tLSBh L2h3L2kzODYvTWFrZWZpbGUub2JqcworKysgYi9ody9pMzg2L01ha2VmaWxlLm9ianMKQEAg LTgsNyArOCw3IEBAIG9iai15ICs9IHBjX3BpaXgubwogb2JqLXkgKz0gcGNfc3lzZncubwog b2JqLSQoQ09ORklHX1hFTikgKz0geGVuX3BsYXRmb3JtLm8geGVuX2FwaWMubwogb2JqLSQo Q09ORklHX1hFTl9QQ0lfUEFTU1RIUk9VR0gpICs9IHhlbi1ob3N0LXBjaS1kZXZpY2Uubwot b2JqLSQoQ09ORklHX1hFTl9QQ0lfUEFTU1RIUk9VR0gpICs9IHhlbl9wdC5vIHhlbl9wdF9j b25maWdfaW5pdC5vIHhlbl9wdF9tc2kubworb2JqLSQoQ09ORklHX1hFTl9QQ0lfUEFTU1RI Uk9VR0gpICs9IHhlbl9wdC5vIHhlbl9wdF9jb25maWdfaW5pdC5vIHhlbl9wdF9tc2kubyB4 ZW5faW9tbXUubwogb2JqLXkgKz0ga3ZtLwogb2JqLSQoQ09ORklHX1NQSUNFKSArPSBxeGwu byBxeGwtbG9nZ2VyLm8gcXhsLXJlbmRlci5vCiAKZGlmZiAtLWdpdCBhL2h3L3BjX3BpaXgu YyBiL2h3L3BjX3BpaXguYwppbmRleCBmZDU4OThmLi4wYjVkMDM0IDEwMDY0NAotLS0gYS9o dy9wY19waWl4LmMKKysrIGIvaHcvcGNfcGlpeC5jCkBAIC00Niw2ICs0Niw5IEBACiAjaWZk ZWYgQ09ORklHX1hFTgogIyAgaW5jbHVkZSA8eGVuL2h2bS9odm1faW5mb190YWJsZS5oPgog I2VuZGlmCisjaWZkZWYgQ09ORklHX1hFTl9QQ0lfUEFTU1RIUk9VR0gKKyMgIGluY2x1ZGUg Inhlbl9wdC5oIgorI2VuZGlmCiAKICNkZWZpbmUgTUFYX0lERV9CVVMgMgogCkBAIC0yMjgs NiArMjMxLDkgQEAgc3RhdGljIHZvaWQgcGNfaW5pdDEoTWVtb3J5UmVnaW9uICpzeXN0ZW1f bWVtb3J5LAogICAgIHBjX3ZnYV9pbml0KGlzYV9idXMsIHBjaV9lbmFibGVkID8gcGNpX2J1 cyA6IE5VTEwpOwogICAgIGlmICh4ZW5fZW5hYmxlZCgpKSB7CiAgICAgICAgIHBjaV9jcmVh dGVfc2ltcGxlKHBjaV9idXMsIC0xLCAieGVuLXBsYXRmb3JtIik7CisjaWZkZWYgQ09ORklH X1hFTl9QQ0lfUEFTU1RIUk9VR0gKKyAgICAgICAgeGVuX3B0X2lvbW11X2NyZWF0ZShwY2lf YnVzKTsKKyNlbmRpZgogICAgIH0KIAogICAgIC8qIGluaXQgYmFzaWMgUEMgaGFyZHdhcmUg Ki8KZGlmZiAtLWdpdCBhL2h3L3hlbl9pb21tdS5jIGIvaHcveGVuX2lvbW11LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE5ZWRlNAotLS0gL2Rldi9udWxsCisr KyBiL2h3L3hlbl9pb21tdS5jCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogYW1kIGlvbW11 IHN1cHBvcnQKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWR2YW5jZWQgTWljcm8gRGV2 aWNlcywgSW5jLgorICogQXV0aG9yOiBXZWkgV2FuZyA8d2VpLndhbmcyQGFtZC5jb20+IAor ICoKKyAqIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHUEwsIHZlcnNpb24gMi4gIFNlZQorICogdGhlIENPUFlJTkcgZmlsZSBpbiB0aGUgdG9w LWxldmVsIGRpcmVjdG9yeS4KKyAqLworCisjaW5jbHVkZSAieGVuX3B0LmgiCisjaW5jbHVk ZSAieGVuX2JhY2tlbmQuaCIKKworI3ByYWdtYSBwYWNrKDEpCisKK3R5cGVkZWYgc3RydWN0 IGlvbW11X2NhcGFiaWxpdHlfYmxvY2sgeworICAgIHVpbnQ4X3QgICAgIGlkOworICAgIHVp bnQ4X3QgICAgIG5leHRfcHRyOworICAgIHVpbnQ4X3QgICAgIGNhcF9pbmZvOworICAgIHVp bnQ4X3QgICAgIGZsYWdzOworICAgIHVpbnQzMl90ICAgIGJhc2VfbG93OworICAgIHVpbnQz Ml90ICAgIGJhc2VfaGlnaDsKKyAgICB1aW50MzJfdCAgICByYW5nZTsKKyAgICB1aW50MzJf dCAgICBtaXNjOworfSBpb21tdV9jYXBhYmlsaXR5X3Q7CisKK3R5cGVkZWYgc3RydWN0IG1z aV9jYXBhYmlsaXR5X2Jsb2NrIHsKKyAgICB1aW50OF90ICAgICBpZDsKKyAgICB1aW50OF90 ICAgICBuZXh0X3B0cjsKKyAgICB1aW50MTZfdCAgICBtc2dfY3RybDsKKyAgICB1aW50MzJf dCAgICBhZGRyX2xvdzsKKyAgICB1aW50MzJfdCAgICBhZGRyX2hpZ2g7CisgICAgdWludDMy X3QgICAgbXNpX2RhdGE7Cit9IG1zaV9jYXBhYmlsaXR5X3Q7CisKK3N0cnVjdCBhbWRfaW9t bXVfY29uZmlnIHsKKyAgICB1aW50MTZfdCAgICB2ZW5kb3JfaWQ7CisgICAgdWludDE2X3Qg ICAgZGV2aWNlX2lkOworICAgIHVpbnQxNl90ICAgIGNvbW1hbmQ7CisgICAgdWludDE2X3Qg ICAgc3RhdHVzOworICAgIHVpbnQ4X3QgICAgIHJldmlzaW9uOworICAgIHVpbnQ4X3QgICAg IGFwaTsKKyAgICB1aW50OF90ICAgICBzdWJjbGFzczsKKyAgICB1aW50OF90ICAgICBjbGFz czsKKyAgICB1aW50OF90ICAgICBjYWNoZV9saW5lX3NpemU7CisgICAgdWludDhfdCAgICAg bGF0ZW5jeV90aW1lcjsKKyAgICB1aW50OF90ICAgICBoZWFkZXJfdHlwZTsKKyAgICB1aW50 OF90ICAgICBiaXN0OworICAgIHVpbnQzMl90ICAgIGJhc2VfYWRkcmVzc19yZWdzWzZdOwor ICAgIHVpbnQzMl90ICAgIHJlc2VydmVkMTsKKyAgICB1aW50MTZfdCAgICBzdWJzeXN0ZW1f dmVuZG9yX2lkOworICAgIHVpbnQxNl90ICAgIHN1YnN5c3RlbV9pZDsKKyAgICB1aW50MzJf dCAgICByb21fYWRkcjsKKyAgICB1aW50OF90ICAgICBjYXBfcHRyOworICAgIHVpbnQ4X3Qg ICAgIHJlc2VydmVkM1szXTsKKyAgICB1aW50MzJfdCAgICByZXNlcnZlZDQ7CisgICAgdWlu dDhfdCAgICAgaW50ZXJydXB0X2xpbmU7CisgICAgdWludDhfdCAgICAgaW50ZXJydXB0X3Bp bjsKKyAgICB1aW50OF90ICAgICBtaW5fZ250OworICAgIHVpbnQ4X3QgICAgIG1heF9sYXQ7 CisgICAgaW9tbXVfY2FwYWJpbGl0eV90IGNhcDsKKyAgICBtc2lfY2FwYWJpbGl0eV90ICAg bXNpOworfTsKKyNwcmFnbWEgcGFjaygpCisKKyNpZm5kZWYgUENJX0NBUF9JRF9TRUMKKyNk ZWZpbmUgUENJX0NBUF9JRF9TRUMgICAgICAgICAgICAgICAgICAweDBGCisjZW5kaWYKKyNk ZWZpbmUgUENJX0NMQVNTX1NZU1RFTV9BTURfSU9NTVUgICAgICAweDA4MDYKKyNkZWZpbmUg UENJX0RFVklDRV9BTURfSU9NTVVfVjIgICAgICAgICAweEZGRkYKKyNkZWZpbmUgSU9NTVVf Q0FQX0ZMQUdTX0lPVExCICAgICAgICAgICAwCisjZGVmaW5lIElPTU1VX0NBUF9GTEFHU19F RlJTVVAgICAgICAgICAgMworI2RlZmluZSBJT01NVV9DQVBfVFlQRSAgICAgICAgICAgICAg ICAgIDB4MworI2RlZmluZSBJT01NVV9DQVBfUkVWICAgICAgICAgICAgICAgICAgIDB4MQor CisjZGVmaW5lIE1TSV9EQVRBX1ZFQ1RPUl9TSElGVCAgICAgICAgICAwCisjZGVmaW5lIE1T SV9EQVRBX0RFTElWRVJZX1NISUZUICAgICAgICA4CisjZGVmaW5lIE1TSV9EQVRBX0xFVkVM X1NISUZUICAgICAgICAgICAxNAorI2RlZmluZSBNU0lfREFUQV9UUklHR0VSX1NISUZUICAg ICAgICAgMTUKKyNkZWZpbmUgTVNJX0FERFJfREVTVElEX01BU0sgICAgICAgICAgIDB4ZmZm MDAwMGYKKyNkZWZpbmUgTVNJX0FERFJfREVTVE1PREVfU0hJRlQgICAgICAgIDIKKyNkZWZp bmUgTVNJX0FERFJfUkVESVJFQ1RJT05fU0hJRlQgICAgIDMKKyNkZWZpbmUgTVNJX1RBUkdF VF9DUFVfU0hJRlQgICAgICAgICAgIDEyCisjZGVmaW5lIFBDSV9TVEFUVVNfQ0FQQUJJTElU SUVTICAgICAgICAweDAxMAorCitzdGF0aWMgdm9pZCBhbWRfaW9tbXVfcGNpX3dyaXRlX2Nv bmZpZyhQQ0lEZXZpY2UgKmQsIHVpbnQzMl90IGFkZHJlc3MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWwsIGludCBsZW4pCit7CisgICAg c3RydWN0IGFtZF9pb21tdV9jb25maWcgKmlvbW11X2NvbmZpZzsKKyAgICB1aW50NjRfdCBt c2lfYWRkcjsKKyAgICB1aW50MzJfdCBtc2lfZGF0YTsKKyAgICB1aW50OF90IG9mZnNldF9t c2lfZGF0YSwgdmVjdG9yLCBlbjsKKyAgICB1aW50OF90IGRlc3RfbW9kZSwgZGVzdCwgZGVs aXZlcnlfbW9kZSwgdHJpZ19tb2RlOworCisgICAgcGNpX2RlZmF1bHRfd3JpdGVfY29uZmln KGQsIGFkZHJlc3MsIHZhbCwgbGVuKTsKKworICAgIGlvbW11X2NvbmZpZyA9IChzdHJ1Y3Qg YW1kX2lvbW11X2NvbmZpZyAqKWQtPmNvbmZpZzsKKworICAgIG9mZnNldF9tc2lfZGF0YSA9 IGlvbW11X2NvbmZpZy0+Y2FwLm5leHRfcHRyICsgc2l6ZW9mKHVpbnQzMl90KSArCisgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVpbnQ2NF90KTsKKworICAgIGlmICggYWRkcmVz cyA9PSBvZmZzZXRfbXNpX2RhdGEgKQorICAgIHsKKyAgICAgICAgbXNpX2FkZHIgPSAodWlu dDY0X3QpaW9tbXVfY29uZmlnLT5tc2kuYWRkcl9oaWdoIDw8IDMyIHwgCisgICAgICAgICAg ICAgICAgICAgaW9tbXVfY29uZmlnLT5tc2kuYWRkcl9sb3c7CisgICAgICAgIG1zaV9kYXRh ID0gdmFsOworICAgICAgICB2ZWN0b3IgPSBtc2lfZGF0YSAmIDB4RkY7CisgICAgICAgIGVu ID0gaW9tbXVfY29uZmlnLT5tc2kubXNnX2N0cmwgJiAweDE7CisgICAgICAgIAorICAgICAg ICBpZiAoICFlbiApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZGVzdF9tb2Rl ID0gKG1zaV9hZGRyID4+IE1TSV9BRERSX0RFU1RNT0RFX1NISUZUKSAmIDB4MTsKKyAgICAg ICAgZGVzdCA9IChtc2lfYWRkciA+PiBNU0lfVEFSR0VUX0NQVV9TSElGVCkgJiAweGZmOwor ICAgICAgICBkZWxpdmVyeV9tb2RlID0gKG1zaV9kYXRhID4+IE1TSV9EQVRBX0RFTElWRVJZ X1NISUZUKSAmIDB4NzsKKyAgICAgICAgdHJpZ19tb2RlID0gKG1zaV9kYXRhID4+IE1TSV9E QVRBX1RSSUdHRVJfU0hJRlQpICYgMHgxOworCisgICAgICAgIHhjX2RvbWFpbl91cGRhdGVf aW9tbXVfbXNpKHhlbl94YywgeGVuX2RvbWlkLCB2ZWN0b3IsIGRlc3QsIAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X21vZGUsIGRlbGl2ZXJ5X21vZGUsIHRy aWdfbW9kZSk7CisgICAgfQorfQorCitzdGF0aWMgaW50IGFtZF9pb21tdV9pbml0Zm4oUENJ RGV2aWNlICpkKQoreworICAgIHN0cnVjdCBhbWRfaW9tbXVfY29uZmlnICpjZmc7CisKKyAg ICBjZmcgPSAoc3RydWN0IGFtZF9pb21tdV9jb25maWcgKilkLT5jb25maWc7CisKKyAgICBj ZmctPnN0YXR1cyAgICAgICA9ICAgUENJX1NUQVRVU19DQVBBQklMSVRJRVM7CisgICAgY2Zn LT5jYXBfcHRyICAgICAgPSAgIHNpemVvZihzdHJ1Y3QgYW1kX2lvbW11X2NvbmZpZykgLSAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGlvbW11X2NhcGFiaWxpdHlfdCkt IHNpemVvZihtc2lfY2FwYWJpbGl0eV90KTsKKworICAgIGNmZy0+Y2FwLmlkICAgICAgID0g UENJX0NBUF9JRF9TRUM7CisgICAgY2ZnLT5jYXAuY2FwX2luZm8gPSBJT01NVV9DQVBfUkVW IDw8IDMgfCBJT01NVV9DQVBfVFlQRTsKKworICAgIGNmZy0+Y2FwLmZsYWdzICAgfD0gMSA8 PCBJT01NVV9DQVBfRkxBR1NfSU9UTEI7CisgICAgY2ZnLT5jYXAuZmxhZ3MgICB8PSAxIDw8 IElPTU1VX0NBUF9GTEFHU19FRlJTVVA7CisKKyAgICBjZmctPmNhcC5uZXh0X3B0ciA9IGNm Zy0+Y2FwX3B0ciArIHNpemVvZihpb21tdV9jYXBhYmlsaXR5X3QpOworICAgIGNmZy0+bXNp LmlkICAgICAgID0gUENJX0NBUF9JRF9NU0k7CisgICAgY2ZnLT5tc2kubXNnX2N0cmwgPSBQ Q0lfTVNJX0ZMQUdTXzY0QklUOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lk IHhlbl9pb21tdV9jbGFzc19pbml0KE9iamVjdENsYXNzICprbGFzcywgdm9pZCAqZGF0YSkK K3sKKyAgICBQQ0lEZXZpY2VDbGFzcyAqayA9IFBDSV9ERVZJQ0VfQ0xBU1Moa2xhc3MpOwor CisgICAgay0+aW5pdCA9IGFtZF9pb21tdV9pbml0Zm47CisgICAgay0+dmVuZG9yX2lkID0g UENJX1ZFTkRPUl9JRF9BTUQ7CisgICAgay0+ZGV2aWNlX2lkID0gUENJX0RFVklDRV9BTURf SU9NTVVfVjI7CisgICAgay0+Y2xhc3NfaWQgPSBQQ0lfQ0xBU1NfU1lTVEVNX0FNRF9JT01N VTsKKyAgICBrLT5zdWJzeXN0ZW1fdmVuZG9yX2lkID0gUENJX1ZFTkRPUl9JRF9BTUQ7Cisg ICAgay0+c3Vic3lzdGVtX2lkID0gUENJX0RFVklDRV9BTURfSU9NTVVfVjI7CisgICAgay0+ Y29uZmlnX3dyaXRlID0gYW1kX2lvbW11X3BjaV93cml0ZV9jb25maWc7Cit9OworCit0eXBl ZGVmIHN0cnVjdCBYZW5Jb21tdVN0YXRlIHsKKyAgICBQQ0lEZXZpY2UgZGV2OworfSBYZW5J b21tdVN0YXRlOworCitzdGF0aWMgVHlwZUluZm8geGVuX2lvbW11X2luZm8gPSB7CisgICAg Lm5hbWUgPSAieGVuLWlvbW11IiwKKyAgICAucGFyZW50ID0gVFlQRV9QQ0lfREVWSUNFLAor ICAgIC5pbnN0YW5jZV9zaXplID0gc2l6ZW9mKFhlbklvbW11U3RhdGUpLAorICAgIC5jbGFz c19pbml0ID0geGVuX2lvbW11X2NsYXNzX2luaXQsCit9OworCitzdGF0aWMgdm9pZCB4ZW5f aW9tbXVfcmVnaXN0ZXJfdHlwZXModm9pZCkKK3sKKyAgICB0eXBlX3JlZ2lzdGVyX3N0YXRp YygmeGVuX2lvbW11X2luZm8pOworfQorCit0eXBlX2luaXQoeGVuX2lvbW11X3JlZ2lzdGVy X3R5cGVzKQorCit2b2lkIHhlbl9wdF9pb21tdV9jcmVhdGUoUENJQnVzICpwY2lfYnVzKQor eworICAgIGNoYXIgKnBhdGg7CisgICAgY2hhciAqaW9tbXU7CisgICAgc3RydWN0IHhzX2hh bmRsZSAqeHMgPSB4c19vcGVuKDApOworICAgICAgICAgICAgCisgICAgcGF0aCA9IHhzX2dl dF9kb21haW5fcGF0aCh4cywgeGVuX2RvbWlkKTsKKyAgICBpb21tdSA9IHhlbnN0b3JlX3Jl YWRfc3RyKHBhdGgsICJndWVzdF9pb21tdSIpOworICAgIAorICAgIGlmICggIXN0cmNtcChp b21tdSwgIjEiKSApCisgICAgICAgIHBjaV9jcmVhdGVfc2ltcGxlKHBjaV9idXMsIC0xLCAi eGVuLWlvbW11Iik7CisgICAgCisgICAgZnJlZShwYXRoKTsKKyAgICB4c19jbG9zZSh4cyk7 Cit9CmRpZmYgLS1naXQgYS9ody94ZW5fcHQuaCBiL2h3L3hlbl9wdC5oCmluZGV4IDExMjQ3 N2EuLmI1NGEwZmIgMTAwNjQ0Ci0tLSBhL2h3L3hlbl9wdC5oCisrKyBiL2h3L3hlbl9wdC5o CkBAIC0yOTEsNiArMjkxLDcgQEAgdm9pZCB4ZW5fcHRfbXNpeF9kZWxldGUoWGVuUENJUGFz c3Rocm91Z2hTdGF0ZSAqcyk7CiBpbnQgeGVuX3B0X21zaXhfdXBkYXRlKFhlblBDSVBhc3N0 aHJvdWdoU3RhdGUgKnMpOwogaW50IHhlbl9wdF9tc2l4X3VwZGF0ZV9yZW1hcChYZW5QQ0lQ YXNzdGhyb3VnaFN0YXRlICpzLCBpbnQgYmFyX2luZGV4KTsKIHZvaWQgeGVuX3B0X21zaXhf ZGlzYWJsZShYZW5QQ0lQYXNzdGhyb3VnaFN0YXRlICpzKTsKK3ZvaWQgeGVuX3B0X2lvbW11 X2NyZWF0ZShQQ0lCdXMgKnBjaV9idXMpOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgeGVuX3B0 X2hhc19tc2l4X21hcHBpbmcoWGVuUENJUGFzc3Rocm91Z2hTdGF0ZSAqcywgaW50IGJhcikK IHsKLS0gCjEuNy40Cgo= --------------080306080505040702010200-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Wang Subject: [PATCH] Add amd iommu emulation for Xen. Date: Wed, 26 Sep 2012 16:45:55 +0200 Message-ID: <50631523.3060602@amd.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080306080505040702010200" Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org Sender: qemu-devel-bounces+gceq-qemu-devel=gmane.org@nongnu.org To: "qemu-devel@nongnu.org" Cc: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org --------------080306080505040702010200 Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit HI, Attached patch adds amd iommu emulation for Xen. Please review it. Thanks, Wei --------------080306080505040702010200 Content-Type: text/plain; charset="UTF-8"; name="0001-Add-amd-iommu-emulation-for-Xen.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Add-amd-iommu-emulation-for-Xen.patch" Content-Description: 0001-Add-amd-iommu-emulation-for-Xen.patch RnJvbSAxMjI1MTc0MzU2NDEzODRlNGY1ZTM2ZWFhZDgzMDJmZjI3MzY0OGU4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBXZWkgV2FuZyA8d2VpLndhbmcyQGFtZC5jb20+CkRh dGU6IFdlZCwgMjYgU2VwIDIwMTIgMTY6NDM6NDAgKzAyMDAKU3ViamVjdDogW1BBVENIXSBB ZGQgYW1kIGlvbW11IGVtdWxhdGlvbiBmb3IgWGVuLgoKVG8gcGFzc3Rocm91Z2ggYW1kIHNv dXRoZXJuIGlzbGFuZHMgc2VyaWVzIGdwdSB0byBndWVzdCwgYSB2aXJ0dWFsIGlvbW11IGRl dmljZSBtdXN0CmJlIHJlZ2lzdGVyZWQgb24gcWVtdSBwY2kgYnVzLiBJdCB1c2VzIGEgbmV3 IGh5cGVyY2FsbCB4Y19kb21haW5fdXBkYXRlX2lvbW11X21zaQp0byBub3RpZnkgeGVuIHRo ZSBtc2kgdmVjdG9yIG9mIGlvbW11LgoKU2lnbmVkLW9mZi1ieTogV2VpIFdhbmcgPHdlaS53 YW5nMkBhbWQuY29tPgotLS0KIGh3L2kzODYvTWFrZWZpbGUub2JqcyB8ICAgIDIgKy0KIGh3 L3BjX3BpaXguYyAgICAgICAgICB8ICAgIDYgKysKIGh3L3hlbl9pb21tdS5jICAgICAgICB8 ICAxOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogaHcveGVuX3B0LmggICAgICAgICAgIHwgICAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDE5 OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGh3 L3hlbl9pb21tdS5jCgpkaWZmIC0tZ2l0IGEvaHcvaTM4Ni9NYWtlZmlsZS5vYmpzIGIvaHcv aTM4Ni9NYWtlZmlsZS5vYmpzCmluZGV4IDhjNzY0YmIuLjhiMjMxYWIgMTAwNjQ0Ci0tLSBh L2h3L2kzODYvTWFrZWZpbGUub2JqcworKysgYi9ody9pMzg2L01ha2VmaWxlLm9ianMKQEAg LTgsNyArOCw3IEBAIG9iai15ICs9IHBjX3BpaXgubwogb2JqLXkgKz0gcGNfc3lzZncubwog b2JqLSQoQ09ORklHX1hFTikgKz0geGVuX3BsYXRmb3JtLm8geGVuX2FwaWMubwogb2JqLSQo Q09ORklHX1hFTl9QQ0lfUEFTU1RIUk9VR0gpICs9IHhlbi1ob3N0LXBjaS1kZXZpY2Uubwot b2JqLSQoQ09ORklHX1hFTl9QQ0lfUEFTU1RIUk9VR0gpICs9IHhlbl9wdC5vIHhlbl9wdF9j b25maWdfaW5pdC5vIHhlbl9wdF9tc2kubworb2JqLSQoQ09ORklHX1hFTl9QQ0lfUEFTU1RI Uk9VR0gpICs9IHhlbl9wdC5vIHhlbl9wdF9jb25maWdfaW5pdC5vIHhlbl9wdF9tc2kubyB4 ZW5faW9tbXUubwogb2JqLXkgKz0ga3ZtLwogb2JqLSQoQ09ORklHX1NQSUNFKSArPSBxeGwu byBxeGwtbG9nZ2VyLm8gcXhsLXJlbmRlci5vCiAKZGlmZiAtLWdpdCBhL2h3L3BjX3BpaXgu YyBiL2h3L3BjX3BpaXguYwppbmRleCBmZDU4OThmLi4wYjVkMDM0IDEwMDY0NAotLS0gYS9o dy9wY19waWl4LmMKKysrIGIvaHcvcGNfcGlpeC5jCkBAIC00Niw2ICs0Niw5IEBACiAjaWZk ZWYgQ09ORklHX1hFTgogIyAgaW5jbHVkZSA8eGVuL2h2bS9odm1faW5mb190YWJsZS5oPgog I2VuZGlmCisjaWZkZWYgQ09ORklHX1hFTl9QQ0lfUEFTU1RIUk9VR0gKKyMgIGluY2x1ZGUg Inhlbl9wdC5oIgorI2VuZGlmCiAKICNkZWZpbmUgTUFYX0lERV9CVVMgMgogCkBAIC0yMjgs NiArMjMxLDkgQEAgc3RhdGljIHZvaWQgcGNfaW5pdDEoTWVtb3J5UmVnaW9uICpzeXN0ZW1f bWVtb3J5LAogICAgIHBjX3ZnYV9pbml0KGlzYV9idXMsIHBjaV9lbmFibGVkID8gcGNpX2J1 cyA6IE5VTEwpOwogICAgIGlmICh4ZW5fZW5hYmxlZCgpKSB7CiAgICAgICAgIHBjaV9jcmVh dGVfc2ltcGxlKHBjaV9idXMsIC0xLCAieGVuLXBsYXRmb3JtIik7CisjaWZkZWYgQ09ORklH X1hFTl9QQ0lfUEFTU1RIUk9VR0gKKyAgICAgICAgeGVuX3B0X2lvbW11X2NyZWF0ZShwY2lf YnVzKTsKKyNlbmRpZgogICAgIH0KIAogICAgIC8qIGluaXQgYmFzaWMgUEMgaGFyZHdhcmUg Ki8KZGlmZiAtLWdpdCBhL2h3L3hlbl9pb21tdS5jIGIvaHcveGVuX2lvbW11LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE5ZWRlNAotLS0gL2Rldi9udWxsCisr KyBiL2h3L3hlbl9pb21tdS5jCkBAIC0wLDAgKzEsMTkxIEBACisvKgorICogYW1kIGlvbW11 IHN1cHBvcnQKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWR2YW5jZWQgTWljcm8gRGV2 aWNlcywgSW5jLgorICogQXV0aG9yOiBXZWkgV2FuZyA8d2VpLndhbmcyQGFtZC5jb20+IAor ICoKKyAqIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHUEwsIHZlcnNpb24gMi4gIFNlZQorICogdGhlIENPUFlJTkcgZmlsZSBpbiB0aGUgdG9w LWxldmVsIGRpcmVjdG9yeS4KKyAqLworCisjaW5jbHVkZSAieGVuX3B0LmgiCisjaW5jbHVk ZSAieGVuX2JhY2tlbmQuaCIKKworI3ByYWdtYSBwYWNrKDEpCisKK3R5cGVkZWYgc3RydWN0 IGlvbW11X2NhcGFiaWxpdHlfYmxvY2sgeworICAgIHVpbnQ4X3QgICAgIGlkOworICAgIHVp bnQ4X3QgICAgIG5leHRfcHRyOworICAgIHVpbnQ4X3QgICAgIGNhcF9pbmZvOworICAgIHVp bnQ4X3QgICAgIGZsYWdzOworICAgIHVpbnQzMl90ICAgIGJhc2VfbG93OworICAgIHVpbnQz Ml90ICAgIGJhc2VfaGlnaDsKKyAgICB1aW50MzJfdCAgICByYW5nZTsKKyAgICB1aW50MzJf dCAgICBtaXNjOworfSBpb21tdV9jYXBhYmlsaXR5X3Q7CisKK3R5cGVkZWYgc3RydWN0IG1z aV9jYXBhYmlsaXR5X2Jsb2NrIHsKKyAgICB1aW50OF90ICAgICBpZDsKKyAgICB1aW50OF90 ICAgICBuZXh0X3B0cjsKKyAgICB1aW50MTZfdCAgICBtc2dfY3RybDsKKyAgICB1aW50MzJf dCAgICBhZGRyX2xvdzsKKyAgICB1aW50MzJfdCAgICBhZGRyX2hpZ2g7CisgICAgdWludDMy X3QgICAgbXNpX2RhdGE7Cit9IG1zaV9jYXBhYmlsaXR5X3Q7CisKK3N0cnVjdCBhbWRfaW9t bXVfY29uZmlnIHsKKyAgICB1aW50MTZfdCAgICB2ZW5kb3JfaWQ7CisgICAgdWludDE2X3Qg ICAgZGV2aWNlX2lkOworICAgIHVpbnQxNl90ICAgIGNvbW1hbmQ7CisgICAgdWludDE2X3Qg ICAgc3RhdHVzOworICAgIHVpbnQ4X3QgICAgIHJldmlzaW9uOworICAgIHVpbnQ4X3QgICAg IGFwaTsKKyAgICB1aW50OF90ICAgICBzdWJjbGFzczsKKyAgICB1aW50OF90ICAgICBjbGFz czsKKyAgICB1aW50OF90ICAgICBjYWNoZV9saW5lX3NpemU7CisgICAgdWludDhfdCAgICAg bGF0ZW5jeV90aW1lcjsKKyAgICB1aW50OF90ICAgICBoZWFkZXJfdHlwZTsKKyAgICB1aW50 OF90ICAgICBiaXN0OworICAgIHVpbnQzMl90ICAgIGJhc2VfYWRkcmVzc19yZWdzWzZdOwor ICAgIHVpbnQzMl90ICAgIHJlc2VydmVkMTsKKyAgICB1aW50MTZfdCAgICBzdWJzeXN0ZW1f dmVuZG9yX2lkOworICAgIHVpbnQxNl90ICAgIHN1YnN5c3RlbV9pZDsKKyAgICB1aW50MzJf dCAgICByb21fYWRkcjsKKyAgICB1aW50OF90ICAgICBjYXBfcHRyOworICAgIHVpbnQ4X3Qg ICAgIHJlc2VydmVkM1szXTsKKyAgICB1aW50MzJfdCAgICByZXNlcnZlZDQ7CisgICAgdWlu dDhfdCAgICAgaW50ZXJydXB0X2xpbmU7CisgICAgdWludDhfdCAgICAgaW50ZXJydXB0X3Bp bjsKKyAgICB1aW50OF90ICAgICBtaW5fZ250OworICAgIHVpbnQ4X3QgICAgIG1heF9sYXQ7 CisgICAgaW9tbXVfY2FwYWJpbGl0eV90IGNhcDsKKyAgICBtc2lfY2FwYWJpbGl0eV90ICAg bXNpOworfTsKKyNwcmFnbWEgcGFjaygpCisKKyNpZm5kZWYgUENJX0NBUF9JRF9TRUMKKyNk ZWZpbmUgUENJX0NBUF9JRF9TRUMgICAgICAgICAgICAgICAgICAweDBGCisjZW5kaWYKKyNk ZWZpbmUgUENJX0NMQVNTX1NZU1RFTV9BTURfSU9NTVUgICAgICAweDA4MDYKKyNkZWZpbmUg UENJX0RFVklDRV9BTURfSU9NTVVfVjIgICAgICAgICAweEZGRkYKKyNkZWZpbmUgSU9NTVVf Q0FQX0ZMQUdTX0lPVExCICAgICAgICAgICAwCisjZGVmaW5lIElPTU1VX0NBUF9GTEFHU19F RlJTVVAgICAgICAgICAgMworI2RlZmluZSBJT01NVV9DQVBfVFlQRSAgICAgICAgICAgICAg ICAgIDB4MworI2RlZmluZSBJT01NVV9DQVBfUkVWICAgICAgICAgICAgICAgICAgIDB4MQor CisjZGVmaW5lIE1TSV9EQVRBX1ZFQ1RPUl9TSElGVCAgICAgICAgICAwCisjZGVmaW5lIE1T SV9EQVRBX0RFTElWRVJZX1NISUZUICAgICAgICA4CisjZGVmaW5lIE1TSV9EQVRBX0xFVkVM X1NISUZUICAgICAgICAgICAxNAorI2RlZmluZSBNU0lfREFUQV9UUklHR0VSX1NISUZUICAg ICAgICAgMTUKKyNkZWZpbmUgTVNJX0FERFJfREVTVElEX01BU0sgICAgICAgICAgIDB4ZmZm MDAwMGYKKyNkZWZpbmUgTVNJX0FERFJfREVTVE1PREVfU0hJRlQgICAgICAgIDIKKyNkZWZp bmUgTVNJX0FERFJfUkVESVJFQ1RJT05fU0hJRlQgICAgIDMKKyNkZWZpbmUgTVNJX1RBUkdF VF9DUFVfU0hJRlQgICAgICAgICAgIDEyCisjZGVmaW5lIFBDSV9TVEFUVVNfQ0FQQUJJTElU SUVTICAgICAgICAweDAxMAorCitzdGF0aWMgdm9pZCBhbWRfaW9tbXVfcGNpX3dyaXRlX2Nv bmZpZyhQQ0lEZXZpY2UgKmQsIHVpbnQzMl90IGFkZHJlc3MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWwsIGludCBsZW4pCit7CisgICAg c3RydWN0IGFtZF9pb21tdV9jb25maWcgKmlvbW11X2NvbmZpZzsKKyAgICB1aW50NjRfdCBt c2lfYWRkcjsKKyAgICB1aW50MzJfdCBtc2lfZGF0YTsKKyAgICB1aW50OF90IG9mZnNldF9t c2lfZGF0YSwgdmVjdG9yLCBlbjsKKyAgICB1aW50OF90IGRlc3RfbW9kZSwgZGVzdCwgZGVs aXZlcnlfbW9kZSwgdHJpZ19tb2RlOworCisgICAgcGNpX2RlZmF1bHRfd3JpdGVfY29uZmln KGQsIGFkZHJlc3MsIHZhbCwgbGVuKTsKKworICAgIGlvbW11X2NvbmZpZyA9IChzdHJ1Y3Qg YW1kX2lvbW11X2NvbmZpZyAqKWQtPmNvbmZpZzsKKworICAgIG9mZnNldF9tc2lfZGF0YSA9 IGlvbW11X2NvbmZpZy0+Y2FwLm5leHRfcHRyICsgc2l6ZW9mKHVpbnQzMl90KSArCisgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVpbnQ2NF90KTsKKworICAgIGlmICggYWRkcmVz cyA9PSBvZmZzZXRfbXNpX2RhdGEgKQorICAgIHsKKyAgICAgICAgbXNpX2FkZHIgPSAodWlu dDY0X3QpaW9tbXVfY29uZmlnLT5tc2kuYWRkcl9oaWdoIDw8IDMyIHwgCisgICAgICAgICAg ICAgICAgICAgaW9tbXVfY29uZmlnLT5tc2kuYWRkcl9sb3c7CisgICAgICAgIG1zaV9kYXRh ID0gdmFsOworICAgICAgICB2ZWN0b3IgPSBtc2lfZGF0YSAmIDB4RkY7CisgICAgICAgIGVu ID0gaW9tbXVfY29uZmlnLT5tc2kubXNnX2N0cmwgJiAweDE7CisgICAgICAgIAorICAgICAg ICBpZiAoICFlbiApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZGVzdF9tb2Rl ID0gKG1zaV9hZGRyID4+IE1TSV9BRERSX0RFU1RNT0RFX1NISUZUKSAmIDB4MTsKKyAgICAg ICAgZGVzdCA9IChtc2lfYWRkciA+PiBNU0lfVEFSR0VUX0NQVV9TSElGVCkgJiAweGZmOwor ICAgICAgICBkZWxpdmVyeV9tb2RlID0gKG1zaV9kYXRhID4+IE1TSV9EQVRBX0RFTElWRVJZ X1NISUZUKSAmIDB4NzsKKyAgICAgICAgdHJpZ19tb2RlID0gKG1zaV9kYXRhID4+IE1TSV9E QVRBX1RSSUdHRVJfU0hJRlQpICYgMHgxOworCisgICAgICAgIHhjX2RvbWFpbl91cGRhdGVf aW9tbXVfbXNpKHhlbl94YywgeGVuX2RvbWlkLCB2ZWN0b3IsIGRlc3QsIAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X21vZGUsIGRlbGl2ZXJ5X21vZGUsIHRy aWdfbW9kZSk7CisgICAgfQorfQorCitzdGF0aWMgaW50IGFtZF9pb21tdV9pbml0Zm4oUENJ RGV2aWNlICpkKQoreworICAgIHN0cnVjdCBhbWRfaW9tbXVfY29uZmlnICpjZmc7CisKKyAg ICBjZmcgPSAoc3RydWN0IGFtZF9pb21tdV9jb25maWcgKilkLT5jb25maWc7CisKKyAgICBj ZmctPnN0YXR1cyAgICAgICA9ICAgUENJX1NUQVRVU19DQVBBQklMSVRJRVM7CisgICAgY2Zn LT5jYXBfcHRyICAgICAgPSAgIHNpemVvZihzdHJ1Y3QgYW1kX2lvbW11X2NvbmZpZykgLSAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGlvbW11X2NhcGFiaWxpdHlfdCkt IHNpemVvZihtc2lfY2FwYWJpbGl0eV90KTsKKworICAgIGNmZy0+Y2FwLmlkICAgICAgID0g UENJX0NBUF9JRF9TRUM7CisgICAgY2ZnLT5jYXAuY2FwX2luZm8gPSBJT01NVV9DQVBfUkVW IDw8IDMgfCBJT01NVV9DQVBfVFlQRTsKKworICAgIGNmZy0+Y2FwLmZsYWdzICAgfD0gMSA8 PCBJT01NVV9DQVBfRkxBR1NfSU9UTEI7CisgICAgY2ZnLT5jYXAuZmxhZ3MgICB8PSAxIDw8 IElPTU1VX0NBUF9GTEFHU19FRlJTVVA7CisKKyAgICBjZmctPmNhcC5uZXh0X3B0ciA9IGNm Zy0+Y2FwX3B0ciArIHNpemVvZihpb21tdV9jYXBhYmlsaXR5X3QpOworICAgIGNmZy0+bXNp LmlkICAgICAgID0gUENJX0NBUF9JRF9NU0k7CisgICAgY2ZnLT5tc2kubXNnX2N0cmwgPSBQ Q0lfTVNJX0ZMQUdTXzY0QklUOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lk IHhlbl9pb21tdV9jbGFzc19pbml0KE9iamVjdENsYXNzICprbGFzcywgdm9pZCAqZGF0YSkK K3sKKyAgICBQQ0lEZXZpY2VDbGFzcyAqayA9IFBDSV9ERVZJQ0VfQ0xBU1Moa2xhc3MpOwor CisgICAgay0+aW5pdCA9IGFtZF9pb21tdV9pbml0Zm47CisgICAgay0+dmVuZG9yX2lkID0g UENJX1ZFTkRPUl9JRF9BTUQ7CisgICAgay0+ZGV2aWNlX2lkID0gUENJX0RFVklDRV9BTURf SU9NTVVfVjI7CisgICAgay0+Y2xhc3NfaWQgPSBQQ0lfQ0xBU1NfU1lTVEVNX0FNRF9JT01N VTsKKyAgICBrLT5zdWJzeXN0ZW1fdmVuZG9yX2lkID0gUENJX1ZFTkRPUl9JRF9BTUQ7Cisg ICAgay0+c3Vic3lzdGVtX2lkID0gUENJX0RFVklDRV9BTURfSU9NTVVfVjI7CisgICAgay0+ Y29uZmlnX3dyaXRlID0gYW1kX2lvbW11X3BjaV93cml0ZV9jb25maWc7Cit9OworCit0eXBl ZGVmIHN0cnVjdCBYZW5Jb21tdVN0YXRlIHsKKyAgICBQQ0lEZXZpY2UgZGV2OworfSBYZW5J b21tdVN0YXRlOworCitzdGF0aWMgVHlwZUluZm8geGVuX2lvbW11X2luZm8gPSB7CisgICAg Lm5hbWUgPSAieGVuLWlvbW11IiwKKyAgICAucGFyZW50ID0gVFlQRV9QQ0lfREVWSUNFLAor ICAgIC5pbnN0YW5jZV9zaXplID0gc2l6ZW9mKFhlbklvbW11U3RhdGUpLAorICAgIC5jbGFz c19pbml0ID0geGVuX2lvbW11X2NsYXNzX2luaXQsCit9OworCitzdGF0aWMgdm9pZCB4ZW5f aW9tbXVfcmVnaXN0ZXJfdHlwZXModm9pZCkKK3sKKyAgICB0eXBlX3JlZ2lzdGVyX3N0YXRp YygmeGVuX2lvbW11X2luZm8pOworfQorCit0eXBlX2luaXQoeGVuX2lvbW11X3JlZ2lzdGVy X3R5cGVzKQorCit2b2lkIHhlbl9wdF9pb21tdV9jcmVhdGUoUENJQnVzICpwY2lfYnVzKQor eworICAgIGNoYXIgKnBhdGg7CisgICAgY2hhciAqaW9tbXU7CisgICAgc3RydWN0IHhzX2hh bmRsZSAqeHMgPSB4c19vcGVuKDApOworICAgICAgICAgICAgCisgICAgcGF0aCA9IHhzX2dl dF9kb21haW5fcGF0aCh4cywgeGVuX2RvbWlkKTsKKyAgICBpb21tdSA9IHhlbnN0b3JlX3Jl YWRfc3RyKHBhdGgsICJndWVzdF9pb21tdSIpOworICAgIAorICAgIGlmICggIXN0cmNtcChp b21tdSwgIjEiKSApCisgICAgICAgIHBjaV9jcmVhdGVfc2ltcGxlKHBjaV9idXMsIC0xLCAi eGVuLWlvbW11Iik7CisgICAgCisgICAgZnJlZShwYXRoKTsKKyAgICB4c19jbG9zZSh4cyk7 Cit9CmRpZmYgLS1naXQgYS9ody94ZW5fcHQuaCBiL2h3L3hlbl9wdC5oCmluZGV4IDExMjQ3 N2EuLmI1NGEwZmIgMTAwNjQ0Ci0tLSBhL2h3L3hlbl9wdC5oCisrKyBiL2h3L3hlbl9wdC5o CkBAIC0yOTEsNiArMjkxLDcgQEAgdm9pZCB4ZW5fcHRfbXNpeF9kZWxldGUoWGVuUENJUGFz c3Rocm91Z2hTdGF0ZSAqcyk7CiBpbnQgeGVuX3B0X21zaXhfdXBkYXRlKFhlblBDSVBhc3N0 aHJvdWdoU3RhdGUgKnMpOwogaW50IHhlbl9wdF9tc2l4X3VwZGF0ZV9yZW1hcChYZW5QQ0lQ YXNzdGhyb3VnaFN0YXRlICpzLCBpbnQgYmFyX2luZGV4KTsKIHZvaWQgeGVuX3B0X21zaXhf ZGlzYWJsZShYZW5QQ0lQYXNzdGhyb3VnaFN0YXRlICpzKTsKK3ZvaWQgeGVuX3B0X2lvbW11 X2NyZWF0ZShQQ0lCdXMgKnBjaV9idXMpOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgeGVuX3B0 X2hhc19tc2l4X21hcHBpbmcoWGVuUENJUGFzc3Rocm91Z2hTdGF0ZSAqcywgaW50IGJhcikK IHsKLS0gCjEuNy40Cgo= --------------080306080505040702010200--