From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v4 07/28] x86/hvm: Introduce a emulated VTD for HVM Date: Fri, 17 Nov 2017 14:22:14 +0800 Message-ID: <1510899755-40237-8-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 , Ian Jackson , Tim Deegan , Jan Beulich , Andrew Cooper , Chao Gao , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBhZGRzIGNyZWF0ZS9kZXN0cm95IGZ1bmN0aW9uIGZvciB0aGUgZW11bGF0ZWQg VlRECmFuZCBhZGFwdHMgaXQgdG8gdGhlIGNvbW1vbiBWSU9NTVUgYWJzdHJhY3Rpb24uCgpBcyB0 aGUgTWFrZWZpbGUgaXMgY2hhbmdlZCBoZXJlLCBwdXQgYWxsIGZpbGVzIGluIGFscGhhYmV0aWMg b3JkZXIKYnkgdGhpcyBjaGFuY2UuCgpTaWduZWQtb2ZmLWJ5OiBDaGFvIEdhbyA8Y2hhby5nYW9A aW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBMYW4gVGlhbnl1IDx0aWFueXUubGFuQGludGVsLmNv bT4KCi0tLQp2NDoKLSB1c2UgUkVHSVNURVJfVklPTU1VCi0gc2hyaW5rIHRoZSBzaXplIG9mIGh2 bV9od192dnRkX3JlZ3MKLSBtYWtlIGh2bV9od192dnRkX3JlZ3MgYSBmaWVsZCBpbnNpZGUgc3Ry dWN0IHZ2dGQKLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvTWFrZWZpbGUgfCAgIDcg Ky0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oICB8ICAgOSArKysKIHhlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC92dnRkLmMgICB8IDE1MCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxNjMgaW5zZXJ0aW9ucygrKSwgMyBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92 dGQvdnZ0ZC5jCgpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL01ha2Vm aWxlIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL01ha2VmaWxlCmluZGV4IGYzMDI2NTMu LjE2M2M3ZmUgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9NYWtlZmls ZQorKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvTWFrZWZpbGUKQEAgLTEsOCArMSw5 IEBACiBzdWJkaXItJChDT05GSUdfWDg2KSArPSB4ODYKIAotb2JqLXkgKz0gaW9tbXUubwogb2Jq LXkgKz0gZG1hci5vCi1vYmoteSArPSB1dGlscy5vCi1vYmoteSArPSBxaW52YWwubwogb2JqLXkg Kz0gaW50cmVtYXAubworb2JqLXkgKz0gaW9tbXUubworb2JqLXkgKz0gcWludmFsLm8KIG9iai15 ICs9IHF1aXJrcy5vCitvYmoteSArPSB1dGlscy5vCitvYmotJChDT05GSUdfVklPTU1VKSArPSB2 dnRkLm8KZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oIGIv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmgKaW5kZXggZGI4MGIzMS4uZjJlZjNk ZCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmgKKysrIGIv eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmgKQEAgLTQ3LDYgKzQ3LDcgQEAKICNk ZWZpbmUgRE1BUl9JUUhfUkVHICAgICAgICAgICAgMHg4MCAvKiBpbnZhbGlkYXRpb24gcXVldWUg aGVhZCAqLwogI2RlZmluZSBETUFSX0lRVF9SRUcgICAgICAgICAgICAweDg4IC8qIGludmFsaWRh dGlvbiBxdWV1ZSB0YWlsICovCiAjZGVmaW5lIERNQVJfSVFBX1JFRyAgICAgICAgICAgIDB4OTAg LyogaW52YWxpZGF0aW9uIHF1ZXVlIGFkZHIgKi8KKyNkZWZpbmUgRE1BUl9JRUNUTF9SRUcgICAg ICAgICAgMHhhMCAvKiBpbnZhbGlkYXRpb24gZXZlbnQgY29udHJvbCByZWdpc3RlciAqLwogI2Rl ZmluZSBETUFSX0lSVEFfUkVHICAgICAgICAgICAweGI4IC8qIGludHIgcmVtYXAgKi8KIAogI2Rl ZmluZSBPRkZTRVRfU1RSSURFICAgICAgICAoOSkKQEAgLTg5LDYgKzkwLDEyIEBACiAjZGVmaW5l IGNhcF9hZmwoYykgICAgICAgICgoKGMpID4+IDMpICYgMSkKICNkZWZpbmUgY2FwX25kb21zKGMp ICAgICAgICAoMSA8PCAoNCArIDIgKiAoKGMpICYgMHg3KSkpCiAKKyNkZWZpbmUgY2FwX3NldF9u dW1fZmF1bHRfcmVncyhjKSAgICgoKChjKSAtIDEpICYgMHhmZikgPDwgNDApCisjZGVmaW5lIGNh cF9zZXRfZmF1bHRfcmVnX29mZnNldChjKSAoKCgoYykgLyAxNikgJiAweDNmZikgPDwgMjQpCisj ZGVmaW5lIGNhcF9zZXRfbWdhdyhjKSAgICAgICAgICAgICAoKCgoYykgLSAxKSAmIDB4M2YpIDw8 IDE2KQorI2RlZmluZSBjYXBfc2V0X3NhZ2F3KGMpICAgICAgICAgICAgKCgoYykgJiAweDFmKSA8 PCA4KQorI2RlZmluZSBjYXBfc2V0X25kb21zKGMpICAgICAgICAgICAgKChjKSAmIDB4NykKKwog LyoKICAqIEV4dGVuZGVkIENhcGFiaWxpdHkgUmVnaXN0ZXIKICAqLwpAQCAtMTE0LDYgKzEyMSw4 IEBACiAjZGVmaW5lIGVjYXBfbmlvdGxiX2l1bml0cyhlKSAgICAoKCgoZSkgPj4gMjQpICYgMHhm ZikgKyAxKQogI2RlZmluZSBlY2FwX2lvdGxiX29mZnNldChlKSAgICAgKCgoKGUpID4+IDgpICYg MHgzZmYpICogMTYpCiAKKyNkZWZpbmUgZWNhcF9zZXRfbWhtdihlKSAgICAgICAgICgoKGUpICYg MHhmKSA8PCAyMCkKKwogLyogSU9UTEJfUkVHICovCiAjZGVmaW5lIERNQV9UTEJfRkxVU0hfR1JB TlVfT0ZGU0VUICA2MAogI2RlZmluZSBETUFfVExCX0dMT0JBTF9GTFVTSCAoKCh1NjQpMSkgPDwg NjApCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvdnZ0ZC5jIGIveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Z2dGQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi45Zjc2Y2NmCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Ro cm91Z2gvdnRkL3Z2dGQuYwpAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIHZ2dGQuYworICoKKyAq IHZpcnR1YWxpemUgVlREIGZvciBIVk0uCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE3IENoYW8g R2FvLCBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExp Y2Vuc2UsIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVkZSA8eGVuL3R5 cGVzLmg+CisjaW5jbHVkZSA8eGVuL3Zpb21tdS5oPgorI2luY2x1ZGUgPHhlbi94bWFsbG9jLmg+ CisjaW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4KKyNpbmNsdWRlIDxhc20vaHZtL2RvbWFpbi5oPgor CisjaW5jbHVkZSAiaW9tbXUuaCIKKworLyogU3VwcG9ydGVkIGNhcGFiaWxpdGllcyBieSB2dnRk ICovCisjZGVmaW5lIFZWVERfTUFYX0NBUFMgVklPTU1VX0NBUF9JUlFfUkVNQVBQSU5HCisKKyNk ZWZpbmUgVlZURF9GUkNEX05VTSAgIDFVTEwKKyNkZWZpbmUgVlZURF9GUkNEX1NUQVJUIChETUFS X0lSVEFfUkVHICsgOCkKKyNkZWZpbmUgVlZURF9GUkNEX0VORCAgIChWVlREX0ZSQ0RfU1RBUlQg KyBWVlREX0ZSQ0RfTlVNICogMTYpCisjZGVmaW5lIFZWVERfTUFYX09GRlNFVCBWVlREX0ZSQ0Rf RU5ECisKK3N0cnVjdCBodm1faHdfdnZ0ZCB7CisgICAgdWludDMyX3QgcmVnc1tWVlREX01BWF9P RkZTRVQvc2l6ZW9mKHVpbnQzMl90KV07Cit9OworCitzdHJ1Y3QgdnZ0ZCB7CisgICAgLyogQmFz ZSBhZGRyZXNzIG9mIHJlbWFwcGluZyBoYXJkd2FyZSByZWdpc3Rlci1zZXQgKi8KKyAgICB1aW50 NjRfdCBiYXNlX2FkZHI7CisgICAgLyogUG9pbnQgYmFjayB0byB0aGUgb3duZXIgZG9tYWluICov CisgICAgc3RydWN0IGRvbWFpbiAqZG9tYWluOworCisgICAgc3RydWN0IGh2bV9od192dnRkIGh3 OworfTsKKworLyogU2V0dGluZyB2aW9tbXVfdmVyYm9zZSBlbmFibGVzIGRlYnVnZ2luZyBtZXNz YWdlcyBvZiB2SU9NTVUgKi8KK2Jvb2wgX19yZWFkX21vc3RseSB2aW9tbXVfdmVyYm9zZTsKK2Jv b2xlYW5fcnVudGltZV9wYXJhbSgidmlvbW11X3ZlcmJvc2UiLCB2aW9tbXVfdmVyYm9zZSk7CisK KyNpZm5kZWYgTkRFQlVHCisjZGVmaW5lIHZ2dGRfaW5mbyhmbXQuLi4pIGRvIHsgICAgICAgICAg ICAgICAgICAgIFwKKyAgICBpZiAoIHZpb21tdV92ZXJib3NlICkgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICBncHJpbnRrKFhFTkxPR19JTkZPLCAjIyBmbXQpOyAgICAgICAgICAg ICBcCit9IHdoaWxlKDApCisvKgorICogVXNlIHByaW50ayBhbmQgJ19HXycgcHJlZml4IGJlY2F1 c2UgdnZ0ZF9kZWJ1ZygpIG1heSBiZSBjYWxsZWQKKyAqIGluIHRoZSBjb250ZXh0IG9mIGFub3Ro ZXIgZG9tYWluJ3MgdkNQVS4gRG9uJ3Qgb3V0cHV0ICdjdXJyZW50JworICogaW5mb3JtYXRpb24g dG8gYXZvaWQgY29uZnVzaW9uLgorICovCisjZGVmaW5lIHZ2dGRfZGVidWcoZm10Li4uKSBkbyB7 ICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIHZpb21tdV92ZXJib3NlICYmIHByaW50a19y YXRlbGltaXQoKSkgICAgXAorICAgICAgICBwcmludGsoWEVOTE9HX0dfREVCVUcgZm10KTsgICAg ICAgICAgICAgICBcCit9IHdoaWxlKDApCisjZWxzZQorI2RlZmluZSB2dnRkX2luZm8oLi4uKSBk byB7fSB3aGlsZSgwKQorI2RlZmluZSB2dnRkX2RlYnVnKC4uLikgZG8ge30gd2hpbGUoMCkKKyNl bmRpZgorCisjZGVmaW5lIFZWVERfUkVHX1BPUyh2dnRkLCBvZmZzZXQpICYodnZ0ZC0+aHcucmVn c1tvZmZzZXQvc2l6ZW9mKHVpbnQzMl90KV0pCisKK3N0YXRpYyBpbmxpbmUgdm9pZCB2dnRkX3Nl dF9yZWcoc3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsdWUpCit7 CisgICAgKlZWVERfUkVHX1BPUyh2dnRkLCByZWcpID0gdmFsdWU7Cit9CisKK3N0YXRpYyBpbmxp bmUgdWludDMyX3QgdnZ0ZF9nZXRfcmVnKGNvbnN0IHN0cnVjdCB2dnRkICp2dnRkLCB1aW50MzJf dCByZWcpCit7CisgICAgcmV0dXJuICpWVlREX1JFR19QT1ModnZ0ZCwgcmVnKTsKK30KKworc3Rh dGljIGlubGluZSB2b2lkIHZ2dGRfc2V0X3JlZ19xdWFkKHN0cnVjdCB2dnRkICp2dnRkLCB1aW50 MzJfdCByZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qg dmFsdWUpCit7CisgICAgKih1aW50NjRfdCopVlZURF9SRUdfUE9TKHZ2dGQsIHJlZykgPSB2YWx1 ZTsKK30KKworc3RhdGljIGlubGluZSB1aW50NjRfdCB2dnRkX2dldF9yZWdfcXVhZChjb25zdCBz dHJ1Y3QgdnZ0ZCAqdnZ0ZCwgdWludDMyX3QgcmVnKQoreworICAgIHJldHVybiAqKHVpbnQ2NF90 KilWVlREX1JFR19QT1ModnZ0ZCwgcmVnKTsKK30KKworc3RhdGljIHZvaWQgdnZ0ZF9yZXNldChz dHJ1Y3QgdnZ0ZCAqdnZ0ZCkKK3sKKyAgICB1aW50NjRfdCBjYXAgPSBjYXBfc2V0X251bV9mYXVs dF9yZWdzKFZWVERfRlJDRF9OVU0pCisgICAgICAgICAgICAgICAgICAgfCBjYXBfc2V0X2ZhdWx0 X3JlZ19vZmZzZXQoVlZURF9GUkNEX1NUQVJUKQorICAgICAgICAgICAgICAgICAgIHwgY2FwX3Nl dF9tZ2F3KDM5KSAvKiBtYXhpbXVtIGd1ZXN0IGFkZHJlc3Mgd2lkdGggKi8KKyAgICAgICAgICAg ICAgICAgICB8IGNhcF9zZXRfc2FnYXcoMikgLyogc3VwcG9ydCAzLWxldmVsIHBhZ2VfdGFibGUg Ki8KKyAgICAgICAgICAgICAgICAgICB8IGNhcF9zZXRfbmRvbXMoNik7IC8qIHN1cHBvcnQgNjRL IGRvbWFpbnMgKi8KKyAgICB1aW50NjRfdCBlY2FwID0gRE1BX0VDQVBfUVVFVUVEX0lOVkFMIHwg RE1BX0VDQVBfSU5UUl9SRU1BUCB8IERNQV9FQ0FQX0VJTSB8CisgICAgICAgICAgICAgICAgICAg IGVjYXBfc2V0X21obXYoMHhmKTsKKworICAgIHZ2dGRfc2V0X3JlZyh2dnRkLCBETUFSX1ZFUl9S RUcsIDB4MTBVTCk7CisgICAgdnZ0ZF9zZXRfcmVnX3F1YWQodnZ0ZCwgRE1BUl9DQVBfUkVHLCBj YXApOworICAgIHZ2dGRfc2V0X3JlZ19xdWFkKHZ2dGQsIERNQVJfRUNBUF9SRUcsIGVjYXApOwor ICAgIHZ2dGRfc2V0X3JlZyh2dnRkLCBETUFSX0ZFQ1RMX1JFRywgMHg4MDAwMDAwMFVMKTsKKyAg ICB2dnRkX3NldF9yZWcodnZ0ZCwgRE1BUl9JRUNUTF9SRUcsIDB4ODAwMDAwMDBVTCk7Cit9CisK K3N0YXRpYyBpbnQgdnZ0ZF9jcmVhdGUoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZpb21tdSAq dmlvbW11KQoreworICAgIHN0cnVjdCB2dnRkICp2dnRkOworCisgICAgaWYgKCAhaXNfaHZtX2Rv bWFpbihkKSB8fCAodmlvbW11LT5iYXNlX2FkZHJlc3MgJiAoUEFHRV9TSVpFIC0gMSkpIHx8Cisg ICAgICAgICAoflZWVERfTUFYX0NBUFMgJiB2aW9tbXUtPmNhcHMpICkKKyAgICAgICAgcmV0dXJu IC1FSU5WQUw7CisKKyAgICB2dnRkID0geHphbGxvY19ieXRlcyhzaXplb2Yoc3RydWN0IHZ2dGQp KTsKKyAgICBpZiAoICF2dnRkICkKKyAgICAgICAgcmV0dXJuIEVOT01FTTsKKworICAgIHZ2dGRf cmVzZXQodnZ0ZCk7CisgICAgdnZ0ZC0+YmFzZV9hZGRyID0gdmlvbW11LT5iYXNlX2FkZHJlc3M7 CisgICAgdnZ0ZC0+ZG9tYWluID0gZDsKKworICAgIHZpb21tdS0+cHJpdiA9IHZ2dGQ7CisKKyAg ICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2dnRkX2Rlc3Ryb3koc3RydWN0IHZpb21tdSAq dmlvbW11KQoreworICAgIHN0cnVjdCB2dnRkICp2dnRkID0gdmlvbW11LT5wcml2OworCisgICAg aWYgKCB2dnRkICkKKyAgICAgICAgeGZyZWUodnZ0ZCk7CisKKyAgICByZXR1cm4gMDsKK30KKwor c3RhdGljIGNvbnN0IHN0cnVjdCB2aW9tbXVfb3BzIHZ2dGRfaHZtX3ZteF9vcHMgPSB7CisgICAg LmNyZWF0ZSA9IHZ2dGRfY3JlYXRlLAorICAgIC5kZXN0cm95ID0gdnZ0ZF9kZXN0cm95LAorfTsK KworUkVHSVNURVJfVklPTU1VKHZ2dGRfaHZtX3ZteF9vcHMpOwotLSAKMS44LjMuMQoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAo=