From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v4 26/28] tools/libxl: build DMAR table for a guest with one virtual VTD Date: Fri, 17 Nov 2017 14:22:33 +0800 Message-ID: <1510899755-40237-27-git-send-email-chao.gao@intel.com> References: <1510899755-40237-1-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1510899755-40237-1-git-send-email-chao.gao@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Lan Tianyu , Kevin Tian , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Tim Deegan , Jan Beulich , Chao Gao , Ian Jackson , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org QSBuZXcgbG9naWMgaXMgYWRkZWQgdG8gaW5pdF9hY3BpX2NvbmZpZygpLiBUaGUgbG9naWMgaW5p dGlhbGl6ZXMKc29tZSBmaWVsZHMgaW50cm9kdWNlZCBmb3IgRE1BUiB0YWJsZS4gRm9yIFBWSCBn dWVzdCwgdGhlIERNQVIgdGFibGUKaXMgYnVpbHQgYXMgb3RoZXIgdGFibGVzLiBCdXQgZm9yIEhW TSBndWVzdCwgb25seSB0aGUgRE1BUiB0YWJsZSBpcwpidWlsdCBpbiB0b29sc3RhY2sgYW5kIHBh c3MgdGhyb3VnaCBpdCB0byBndWVzdCB2aWEgZXhpc3RpbmcgbWVjaGFuaXNtLgoKU2lnbmVkLW9m Zi1ieTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTGFuIFRp YW55dSA8dGlhbnl1LmxhbkBpbnRlbC5jb20+Ci0tLQp2NDoKIC0gYnVpbGQgRE1BUiB0YWJsZSBm b3IgUFZIIGd1ZXN0LgogLSByZW1vdmUgTElCWExfREVWSUNFX01PREVMX1ZFUlNJT05fTk9ORQoK djM6CiAtIGJ1aWxkIGRtYXIgYW5kIGluaXRpYWxpemUgcmVsYXRlZCBhY3BpX21vZHVsZXMgc3Ry dWN0IGluCiBsaWJ4bF94ODZfYWNwaS5jLCBrZWVwaW5nIGluIGFjY29yZGFuY2Ugd2l0aCBwdmgu Ci0tLQogdG9vbHMvbGliYWNwaS9idWlsZC5jICAgICAgICB8IDEyICsrKysrKwogdG9vbHMvbGli YWNwaS9saWJhY3BpLmggICAgICB8ICAxICsKIHRvb2xzL2xpYnhsL2xpYnhsX3g4Ni5jICAgICAg fCAgNCArLQogdG9vbHMvbGlieGwvbGlieGxfeDg2X2FjcGkuYyB8IDk4ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiA0IGZpbGVzIGNoYW5nZWQsIDExMSBpbnNl cnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYmFjcGkvYnVp bGQuYyBiL3Rvb2xzL2xpYmFjcGkvYnVpbGQuYwppbmRleCBiZDc1OWRhLi5kZjBhNjdjIDEwMDY0 NAotLS0gYS90b29scy9saWJhY3BpL2J1aWxkLmMKKysrIGIvdG9vbHMvbGliYWNwaS9idWlsZC5j CkBAIC01MTcsNiArNTE3LDE4IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3NlY29uZGFyeV90YWJs ZXMoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwKICAgICAgICAgICAgIHByaW50ZigiRmFpbGVkIHRv IGJ1aWxkIFNMSVQsIHNraXBwaW5nLi4uXG4iKTsKICAgICB9CiAKKyAgICAvKiBETUFSICovCisg ICAgaWYgKCBjb25maWctPnRhYmxlX2ZsYWdzICYgQUNQSV9IQVNfRE1BUiApCisgICAgeworICAg ICAgICBzdHJ1Y3QgYWNwaV9kbWFyICpkbWFyID0gY29uc3RydWN0X2RtYXIoY3R4dCwgY29uZmln KTsKKworICAgICAgICBpZiAoIGRtYXIgKQorICAgICAgICAgICAgdGFibGVfcHRyc1tucl90YWJs ZXMrK10gPSBjdHh0LT5tZW1fb3BzLnYycChjdHh0LCBkbWFyKTsKKyAgICAgICAgZWxzZQorICAg ICAgICAgICAgcHJpbnRmKCJGYWlsZWQgdG8gYnVpbGQgRE1BUiwgc2tpcHBpbmcuLi5cbiIpOwor ICAgIH0KKworCiAgICAgLyogTG9hZCBhbnkgYWRkaXRpb25hbCB0YWJsZXMgcGFzc2VkIHRocm91 Z2guICovCiAgICAgbnJfdGFibGVzICs9IGNvbnN0cnVjdF9wYXNzdGhyb3VnaF90YWJsZXMoY3R4 dCwgdGFibGVfcHRycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBucl90YWJsZXMsIGNvbmZpZyk7CmRpZmYgLS1naXQgYS90b29scy9saWJhY3BpL2xpYmFj cGkuaCBiL3Rvb2xzL2xpYmFjcGkvbGliYWNwaS5oCmluZGV4IGMwOWFmZGMuLmJkZWVjY2MgMTAw NjQ0Ci0tLSBhL3Rvb2xzL2xpYmFjcGkvbGliYWNwaS5oCisrKyBiL3Rvb2xzL2xpYmFjcGkvbGli YWNwaS5oCkBAIC0zNiw2ICszNiw3IEBACiAjZGVmaW5lIEFDUElfSEFTXzgwNDIgICAgICAgICAg ICAgICgxPDwxMykKICNkZWZpbmUgQUNQSV9IQVNfQ01PU19SVEMgICAgICAgICAgKDE8PDE0KQog I2RlZmluZSBBQ1BJX0hBU19TU0RUX0xBUFRPUF9TTEFURSAoMTw8MTUpCisjZGVmaW5lIEFDUElf SEFTX0RNQVIgICAgICAgICAgICAgICgxPDwxNikKIAogc3RydWN0IHhlbl92bWVtcmFuZ2U7CiBz dHJ1Y3QgYWNwaV9udW1hIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3g4Ni5jIGIv dG9vbHMvbGlieGwvbGlieGxfeDg2LmMKaW5kZXggNWY5MWZlNC4uY2IyZjQ5NCAxMDA2NDQKLS0t IGEvdG9vbHMvbGlieGwvbGlieGxfeDg2LmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfeDg2LmMK QEAgLTM4Myw3ICszODMsOSBAQCBpbnQgbGlieGxfX2FyY2hfZG9tYWluX2ZpbmFsaXNlX2h3X2Rl c2NyaXB0aW9uKGxpYnhsX19nYyAqZ2MsCiB7CiAgICAgaW50IHJjID0gMDsKIAotICAgIGlmIChp bmZvLT50eXBlID09IExJQlhMX0RPTUFJTl9UWVBFX1BWSCkgeworCisgICAgaWYgKGluZm8tPnR5 cGUgPT0gTElCWExfRE9NQUlOX1RZUEVfSFZNCisgICAgICAgICAgICB8fCBpbmZvLT50eXBlID09 IExJQlhMX0RPTUFJTl9UWVBFX1BWSCkgewogICAgICAgICByYyA9IGxpYnhsX19kb21fbG9hZF9h Y3BpKGdjLCBpbmZvLCBkb20pOwogICAgICAgICBpZiAocmMgIT0gMCkKICAgICAgICAgICAgIExP R0UoRVJST1IsICJsaWJ4bF9kb21fbG9hZF9hY3BpIGZhaWxlZCIpOwpkaWZmIC0tZ2l0IGEvdG9v bHMvbGlieGwvbGlieGxfeDg2X2FjcGkuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3g4Nl9hY3BpLmMK aW5kZXggOWE3YzkwNC4uYmJlOTIxOSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfeDg2 X2FjcGkuYworKysgYi90b29scy9saWJ4bC9saWJ4bF94ODZfYWNwaS5jCkBAIC0xNiw2ICsxNiw3 IEBACiAjaW5jbHVkZSAibGlieGxfYXJjaC5oIgogI2luY2x1ZGUgPHhlbi9odm0vaHZtX2luZm9f dGFibGUuaD4KICNpbmNsdWRlIDx4ZW4vaHZtL2U4MjAuaD4KKyNpbmNsdWRlICJsaWJhY3BpL2Fj cGkyXzAuaCIKICNpbmNsdWRlICJsaWJhY3BpL2xpYmFjcGkuaCIKIAogI2luY2x1ZGUgPHhjX2Rv bS5oPgpAQCAtMTAwLDYgKzEwMSwyNSBAQCBzdGF0aWMgaW50IGluaXRfYWNwaV9jb25maWcobGli eGxfX2djICpnYywKICAgICBzdHJ1Y3QgaHZtX2luZm9fdGFibGUgKmh2bWluZm87CiAgICAgaW50 IGksIHIsIHJjOwogCisgICAgaWYgKChiX2luZm8tPm51bV92aW9tbXVzID09IDEpICYmCisgICAg ICAgIChiX2luZm8tPnZpb21tdVswXS50eXBlID09IExJQlhMX1ZJT01NVV9UWVBFX0lOVEVMX1ZU RCkpIHsKKyAgICAgICAgaWYgKGxpYnhsX2RlZmJvb2xfdmFsKGJfaW5mby0+dmlvbW11WzBdLmlu dHJlbWFwKSkKKyAgICAgICAgICAgIGNvbmZpZy0+aW9tbXVfaW50cmVtYXBfc3VwcG9ydGVkID0g dHJ1ZTsKKyAgICAgICAgY29uZmlnLT5pb21tdV9iYXNlX2FkZHIgPSBiX2luZm8tPnZpb21tdVsw XS5iYXNlX2FkZHI7CisKKyAgICAgICAgLyogSU9BUElDIGlkIGFuZCBQU0VVRE8gQkRGICovCisg ICAgICAgIGNvbmZpZy0+aW9hcGljX2lkID0gMTsKKyAgICAgICAgY29uZmlnLT5pb2FwaWNfYnVz ID0gMHhmZjsKKyAgICAgICAgY29uZmlnLT5pb2FwaWNfZGV2Zm4gPSAweDA7CisKKyAgICAgICAg Y29uZmlnLT5ob3N0X2FkZHJfd2lkdGggPSAzOTsKKyAgICAgICAgY29uZmlnLT50YWJsZV9mbGFn cyB8PSBBQ1BJX0hBU19ETUFSOworICAgIH0KKworICAgIGlmIChiX2luZm8tPnR5cGUgPT0gTElC WExfRE9NQUlOX1RZUEVfSFZNKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGNv bmZpZy0+ZHNkdF9hbnljcHUgPSBjb25maWctPmRzZHRfMTVjcHUgPSBkc2R0X3B2aDsKICAgICBj b25maWctPmRzZHRfYW55Y3B1X2xlbiA9IGNvbmZpZy0+ZHNkdF8xNWNwdV9sZW4gPSBkc2R0X3B2 aF9sZW47CiAKQEAgLTE2MSw5ICsxODEsOSBAQCBvdXQ6CiAgICAgcmV0dXJuIHJjOwogfQogCi1p bnQgbGlieGxfX2RvbV9sb2FkX2FjcGkobGlieGxfX2djICpnYywKLSAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyAqYl9pbmZvLAotICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSkKK3N0YXRpYyBpbnQgbGli eGxfX2RvbV9sb2FkX2FjcGlfcHZoKGxpYnhsX19nYyAqZ2MsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyAqYl9pbmZvLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhjX2RvbV9pbWFnZSAq ZG9tKQogewogICAgIHN0cnVjdCBhY3BpX2NvbmZpZyBjb25maWcgPSB7MH07CiAgICAgc3RydWN0 IGxpYnhsX2FjcGlfY3R4dCBsaWJ4bF9jdHh0OwpAQCAtMjM1LDYgKzI1NSw3OCBAQCBvdXQ6CiAg ICAgcmV0dXJuIHJjOwogfQogCitzdGF0aWMgdm9pZCAqYWNwaV9tZW1hbGlnbihzdHJ1Y3QgYWNw aV9jdHh0ICpjdHh0LCB1aW50MzJfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDMyX3QgYWxpZ24pCit7CisgICAgaW50IHJldDsKKyAgICB2b2lkICpwdHI7CisKKyAgICBy ZXQgPSBwb3NpeF9tZW1hbGlnbigmcHRyLCBhbGlnbiwgc2l6ZSk7CisgICAgaWYgKHJldCAhPSAw IHx8ICFwdHIpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIHB0cjsKK30KKwor LyoKKyAqIEZvciBodm0sIHdlIGRvbid0IG5lZWQgYnVpbGQgYWNwaSBpbiBsaWJ4bC4gSW5zdGVh ZCwgaXQncyBidWlsdCBpbiBodm1sb2FkZXIuCisgKiBCdXQgaWYgb25lIGh2bSBoYXMgdmlydHVh bCBWVEQocyksIHdlIGJ1aWxkIERNQVIgdGFibGUgZm9yIGl0IGFuZCBqb2ludCB0aGlzCisgKiB0 YWJsZSB3aXRoIGV4aXN0aW5nIGNvbnRlbnQgaW4gYWNwaV9tb2R1bGVzIGluIG9yZGVyIHRvIGVt cGxveSBIVk0KKyAqIGZpcm13YXJlIHBhc3MtdGhyb3VnaCBtZWNoYW5pc20gdG8gcGFzcy10aHJv dWdoIERNQVIgdGFibGUuCisgKi8KK3N0YXRpYyBpbnQgbGlieGxfX2RvbV9sb2FkX2FjcGlfaHZt KGxpYnhsX19nYyAqZ2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyAqYl9pbmZvLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tKQoreworICAgIHN0cnVjdCBh Y3BpX2NvbmZpZyBjb25maWcgPSB7IDAgfTsKKyAgICBzdHJ1Y3QgYWNwaV9jdHh0IGN0eHQ7Cisg ICAgc3RydWN0IGFjcGlfZG1hciAqZG1hcjsKKyAgICB1aW50MzJfdCBsZW47CisKKyAgICBjdHh0 Lm1lbV9vcHMuYWxsb2MgPSBhY3BpX21lbWFsaWduOworICAgIGN0eHQubWVtX29wcy52MnAgPSB2 aXJ0X3RvX3BoeXM7CisgICAgY3R4dC5tZW1fb3BzLmZyZWUgPSBhY3BpX21lbV9mcmVlOworCisg ICAgaW5pdF9hY3BpX2NvbmZpZyhnYywgZG9tLCBiX2luZm8sICZjb25maWcpOworICAgIGRtYXIg PSBjb25zdHJ1Y3RfZG1hcigmY3R4dCwgJmNvbmZpZyk7CisgICAgaWYgKCAhZG1hciApCisgICAg ICAgIHJldHVybiBFUlJPUl9OT01FTTsKKyAgICBsZW4gPSBkbWFyLT5oZWFkZXIubGVuZ3RoOwor CisgICAgaWYgKGxlbikgeworICAgICAgICBsaWJ4bF9fcHRyX2FkZChnYywgZG1hcik7CisgICAg ICAgIGlmICghZG9tLT5hY3BpX21vZHVsZXNbMF0uZGF0YSkgeworICAgICAgICAgICAgZG9tLT5h Y3BpX21vZHVsZXNbMF0uZGF0YSA9ICh2b2lkICopZG1hcjsKKyAgICAgICAgICAgIGRvbS0+YWNw aV9tb2R1bGVzWzBdLmxlbmd0aCA9IGxlbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg IC8qIGpvaW50IHRhYmxlcyAqLworICAgICAgICAgICAgdm9pZCAqbmV3ZGF0YTsKKworICAgICAg ICAgICAgbmV3ZGF0YSA9IGxpYnhsX19tYWxsb2MoZ2MsIGxlbiArIGRvbS0+YWNwaV9tb2R1bGVz WzBdLmxlbmd0aCk7CisgICAgICAgICAgICBtZW1jcHkobmV3ZGF0YSwgZG9tLT5hY3BpX21vZHVs ZXNbMF0uZGF0YSwKKyAgICAgICAgICAgICAgICAgICBkb20tPmFjcGlfbW9kdWxlc1swXS5sZW5n dGgpOworICAgICAgICAgICAgbWVtY3B5KG5ld2RhdGEgKyBkb20tPmFjcGlfbW9kdWxlc1swXS5s ZW5ndGgsIGRtYXIsIGxlbik7CisKKyAgICAgICAgICAgIGZyZWUoZG9tLT5hY3BpX21vZHVsZXNb MF0uZGF0YSk7CisgICAgICAgICAgICBkb20tPmFjcGlfbW9kdWxlc1swXS5kYXRhID0gbmV3ZGF0 YTsKKyAgICAgICAgICAgIGRvbS0+YWNwaV9tb2R1bGVzWzBdLmxlbmd0aCArPSBsZW47CisgICAg ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBsaWJ4bF9fZG9tX2xvYWRfYWNw aShsaWJ4bF9fZ2MgKmdjLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX2Rv bWFpbl9idWlsZF9pbmZvICpiX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHhjX2RvbV9pbWFnZSAqZG9tKQoreworCisgICAgaWYgKGJfaW5mby0+dHlwZSA9PSBMSUJYTF9E T01BSU5fVFlQRV9QVkgpCisgICAgICAgIHJldHVybiBsaWJ4bF9fZG9tX2xvYWRfYWNwaV9wdmgo Z2MsIGJfaW5mbywgZG9tKTsKKyAgICBlbHNlIGlmIChiX2luZm8tPnR5cGUgPT0gTElCWExfRE9N QUlOX1RZUEVfSFZNKQorICAgICAgICByZXR1cm4gbGlieGxfX2RvbV9sb2FkX2FjcGlfaHZtKGdj LCBiX2luZm8sIGRvbSk7CisKKyAgICByZXR1cm4gLUVJTlZBTDsKK30KIC8qCiAgKiBMb2NhbCB2 YXJpYWJsZXM6CiAgKiBtb2RlOiBDCi0tIAoxLjguMy4xCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==