From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [PATCH 25/25] x86/vvtd: save and restore emulated VT-d Date: Thu, 29 Jun 2017 01:50:57 -0400 Message-ID: <1498715457-16565-26-git-send-email-tianyu.lan@intel.com> References: <1498715457-16565-1-git-send-email-tianyu.lan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1498715457-16565-1-git-send-email-tianyu.lan@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@intel.com, Chao Gao List-Id: xen-devel@lists.xenproject.org RnJvbTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KCldyYXAgc29tZSB1c2VmdWwgc3Rh dHVzIGluIGEgbmV3IHN0cnVjdHVyZSBodm1faHdfdnZ0ZCwgZm9sbG93aW5nCnRoZSBjdXN0b21z IG9mIHZsYXBpYywgdmlvYXBpYyBhbmQgZXRjLiBQcm92aWRlIHR3byBzYXZlLXJlc3RvcmUKcGFp cnMgdG8gc2F2ZS9yZXN0b3JlIHJlZ2lzdGVycyBhbmQgbm9uLXJlZ2lzdGVyIHN0YXR1cy4KClNp Z25lZC1vZmYtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IExhbiBUaWFueXUgPHRpYW55dS5sYW5AaW50ZWwuY29tPgotLS0KIHhlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3Z0ZC92dnRkLmMgICAgIHwgOTggKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQogeGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmggfCAyNCArKysrKysr Ky0KIDIgZmlsZXMgY2hhbmdlZCwgODggaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Z2dGQuYyBiL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC92dnRkLmMKaW5kZXggNmU1Y2ZkZi4uOGQ5OWM0MiAxMDA2NDQK LS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Z2dGQuYworKysgYi94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC92dGQvdnZ0ZC5jCkBAIC0yMCw2ICsyMCw3IEBACiAKICNpbmNsdWRlIDx4 ZW4vZG9tYWluX3BhZ2UuaD4KICNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL2h2 bS9zYXZlLmg+CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8eGVuL3R5cGVzLmg+ CiAjaW5jbHVkZSA8eGVuL3Zpb21tdS5oPgpAQCAtMzMsMzggKzM0LDI1IEBACiAjaW5jbHVkZSA8 YXNtL3AybS5oPgogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KICNpbmNsdWRlIDxwdWJsaWMvdmlv bW11Lmg+CisjaW5jbHVkZSA8cHVibGljL2h2bS9zYXZlLmg+CiAKICNpbmNsdWRlICJpb21tdS5o IgogI2luY2x1ZGUgInZ0ZC5oIgogCi1zdHJ1Y3QgaHZtX2h3X3Z2dGRfcmVncyB7Ci0gICAgdWlu dDhfdCBkYXRhWzEwMjRdOwotfTsKLQogLyogU3RhdHVzIGZpZWxkIG9mIHN0cnVjdCB2dnRkICov CiAjZGVmaW5lIFZJT01NVV9TVEFUVVNfSVJRX1JFTUFQUElOR19FTkFCTEVEICAgICAoMSA8PCAw KQogI2RlZmluZSBWSU9NTVVfU1RBVFVTX0RNQV9SRU1BUFBJTkdfRU5BQkxFRCAgICAgKDEgPDwg MSkKIAogI2RlZmluZSB2dnRkX2lycV9yZW1hcHBpbmdfZW5hYmxlZCh2dnRkKSBcCi0gICAgKHZ2 dGQtPnN0YXR1cyAmIFZJT01NVV9TVEFUVVNfSVJRX1JFTUFQUElOR19FTkFCTEVEKQorICAgICh2 dnRkLT5ody5zdGF0dXMgJiBWSU9NTVVfU1RBVFVTX0lSUV9SRU1BUFBJTkdfRU5BQkxFRCkKIAog c3RydWN0IHZ2dGQgewotICAgIC8qIFZJT01NVV9TVEFUVVNfWFhYX1JFTUFQUElOR19FTkFCTEVE ICovCi0gICAgaW50IHN0YXR1czsKLSAgICAvKiBGYXVsdCBSZWNvcmRpbmcgaW5kZXggKi8KLSAg ICBpbnQgZnJjZF9pZHg7CiAgICAgLyogQWRkcmVzcyByYW5nZSBvZiByZW1hcHBpbmcgaGFyZHdh cmUgcmVnaXN0ZXItc2V0ICovCiAgICAgdWludDY0X3QgYmFzZV9hZGRyOwogICAgIHVpbnQ2NF90 IGxlbmd0aDsKICAgICAvKiBQb2ludCBiYWNrIHRvIHRoZSBvd25lciBkb21haW4gKi8KICAgICBz dHJ1Y3QgZG9tYWluICpkb21haW47Ci0gICAgLyogSXMgaW4gRXh0ZW5kZWQgSW50ZXJydXB0IE1v ZGU/ICovCi0gICAgYm9vbCBlaW07Ci0gICAgLyogTWF4IHJlbWFwcGluZyBlbnRyaWVzIGluIElS VCAqLwotICAgIGludCBpcnRfbWF4X2VudHJ5OwotICAgIC8qIEludGVycnVwdCByZW1hcHBpbmcg dGFibGUgYmFzZSBnZm4gKi8KLSAgICB1aW50NjRfdCBpcnQ7Ci0KKyAgICBzdHJ1Y3QgaHZtX2h3 X3Z2dGQgaHc7CiAgICAgc3RydWN0IGh2bV9od192dnRkX3JlZ3MgKnJlZ3M7CiAgICAgc3RydWN0 IHBhZ2VfaW5mbyAqcmVnc19wYWdlOwogfTsKQEAgLTM3MCwxMiArMzU4LDEyIEBAIHN0YXRpYyBp bnQgdnZ0ZF9hbGxvY19mcmNkKHN0cnVjdCB2dnRkICp2dnRkKQogICAgIGludCBwcmV2OwogCiAg ICAgLyogU2V0IHRoZSBGIGJpdCB0byBpbmRpY2F0ZSB0aGUgRlJDRCBpcyBpbiB1c2UuICovCi0g ICAgaWYgKCB2dnRkX3Rlc3RfYW5kX3NldF9iaXQodnZ0ZCwgRE1BX0ZSQ0QodnZ0ZC0+ZnJjZF9p ZHgsIERNQV9GUkNEM19PRkZTRVQpLAorICAgIGlmICggdnZ0ZF90ZXN0X2FuZF9zZXRfYml0KHZ2 dGQsIERNQV9GUkNEKHZ2dGQtPmh3LmZyY2RfaWR4LCBETUFfRlJDRDNfT0ZGU0VUKSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBETUFfRlJDRF9GX0JJVCkgKQogICAgIHsKLSAgICAg ICAgcHJldiA9IHZ2dGQtPmZyY2RfaWR4OwotICAgICAgICB2dnRkLT5mcmNkX2lkeCA9IChwcmV2 ICsgMSkgJSBETUFfRlJDRF9SRUdfTlI7Ci0gICAgICAgIHJldHVybiB2dnRkLT5mcmNkX2lkeDsK KyAgICAgICAgcHJldiA9IHZ2dGQtPmh3LmZyY2RfaWR4OworICAgICAgICB2dnRkLT5ody5mcmNk X2lkeCA9IChwcmV2ICsgMSkgJSBETUFfRlJDRF9SRUdfTlI7CisgICAgICAgIHJldHVybiB2dnRk LT5ody5mcmNkX2lkeDsKICAgICB9CiAgICAgcmV0dXJuIC0xOwogfQpAQCAtNzEyLDEyICs3MDAs MTIgQEAgc3RhdGljIGludCB2dnRkX2hhbmRsZV9nY21kX2lyZShzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwg dWludDMyX3QgdmFsKQogCiAgICAgaWYgKCB2YWwgJiBETUFfR0NNRF9JUkUgKQogICAgIHsKLSAg ICAgICAgdnZ0ZC0+c3RhdHVzIHw9IFZJT01NVV9TVEFUVVNfSVJRX1JFTUFQUElOR19FTkFCTEVE OworICAgICAgICB2dnRkLT5ody5zdGF0dXMgfD0gVklPTU1VX1NUQVRVU19JUlFfUkVNQVBQSU5H X0VOQUJMRUQ7CiAgICAgICAgIF9fdnZ0ZF9zZXRfYml0KHZ2dGQsIERNQVJfR1NUU19SRUcsIERN QV9HU1RTX0lSRVNfQklUKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgdnZ0ZC0+ c3RhdHVzIHw9IH5WSU9NTVVfU1RBVFVTX0lSUV9SRU1BUFBJTkdfRU5BQkxFRDsKKyAgICAgICAg dnZ0ZC0+aHcuc3RhdHVzIHw9IH5WSU9NTVVfU1RBVFVTX0lSUV9SRU1BUFBJTkdfRU5BQkxFRDsK ICAgICAgICAgX192dnRkX2NsZWFyX2JpdCh2dnRkLCBETUFSX0dTVFNfUkVHLCBETUFfR1NUU19J UkVTX0JJVCk7CiAgICAgfQogCkBAIC03MzYsMTEgKzcyNCwxMSBAQCBzdGF0aWMgaW50IHZ2dGRf aGFuZGxlX2djbWRfc2lydHAoc3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQzMl90IHZhbCkKICAgICAg ICAgICAgICAgICAgICAiYWN0aXZlLiIgKTsKIAogICAgIHZ2dGRfZ2V0X3JlZ19xdWFkKHZ2dGQs IERNQVJfSVJUQV9SRUcsIGlydGEpOwotICAgIHZ2dGQtPmlydCA9IERNQV9JUlRBX0FERFIoaXJ0 YSkgPj4gUEFHRV9TSElGVDsKLSAgICB2dnRkLT5pcnRfbWF4X2VudHJ5ID0gRE1BX0lSVEFfU0la RShpcnRhKTsKLSAgICB2dnRkLT5laW0gPSBETUFfSVJUQV9FSU1FKGlydGEpOworICAgIHZ2dGQt Pmh3LmlydCA9IERNQV9JUlRBX0FERFIoaXJ0YSkgPj4gUEFHRV9TSElGVDsKKyAgICB2dnRkLT5o dy5pcnRfbWF4X2VudHJ5ID0gRE1BX0lSVEFfU0laRShpcnRhKTsKKyAgICB2dnRkLT5ody5laW0g PSBETUFfSVJUQV9FSU1FKGlydGEpOwogICAgIFZWVERfREVCVUcoVlZURF9EQkdfUlcsICJVcGRh dGUgSVIgaW5mbyAoYWRkcj0lbHggZWltPSVkIHNpemU9JWQpLiIsCi0gICAgICAgICAgICAgICB2 dnRkLT5pcnQsIHZ2dGQtPmVpbSwgdnZ0ZC0+aXJ0X21heF9lbnRyeSk7CisgICAgICAgICAgICAg ICB2dnRkLT5ody5pcnQsIHZ2dGQtPmh3LmVpbSwgdnZ0ZC0+aHcuaXJ0X21heF9lbnRyeSk7CiAg ICAgX192dnRkX3NldF9iaXQodnZ0ZCwgRE1BUl9HU1RTX1JFRywgRE1BX0dTVFNfU0lSVFBTX0JJ VCk7CiAKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwpAQCAtOTQ4LDEzICs5MzYsMTMgQEAgc3Rh dGljIGludCB2dnRkX2dldF9lbnRyeShzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwKIAogICAgIFZWVERfREVC VUcoVlZURF9EQkdfVFJBTlMsICJpbnRlcnByZXQgYSByZXF1ZXN0IHdpdGggaW5kZXggJXgiLCBl bnRyeSk7CiAKLSAgICBpZiAoIGVudHJ5ID4gdnZ0ZC0+aXJ0X21heF9lbnRyeSApCisgICAgaWYg KCBlbnRyeSA+IHZ2dGQtPmh3LmlydF9tYXhfZW50cnkgKQogICAgIHsKICAgICAgICAgcmV0ID0g VlREX0ZSX0lSX0lOREVYX09WRVI7CiAgICAgICAgIGdvdG8gaGFuZGxlX2ZhdWx0OwogICAgIH0K IAotICAgIHJldCA9IG1hcF9ndWVzdF9wYWdlKHZ2dGQtPmRvbWFpbiwgdnZ0ZC0+aXJ0ICsgKGVu dHJ5ID4+IElSRU1BUF9FTlRSWV9PUkRFUiksCisgICAgcmV0ID0gbWFwX2d1ZXN0X3BhZ2UodnZ0 ZC0+ZG9tYWluLCB2dnRkLT5ody5pcnQgKyAoZW50cnkgPj4gSVJFTUFQX0VOVFJZX09SREVSKSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCoqKSZpcnRfcGFnZSk7CiAgICAgaWYgKCBy ZXQgKQogICAgIHsKQEAgLTEwNzgsNiArMTA2Niw0OSBAQCBzdGF0aWMgaW50IHZ2dGRfZ2V0X2ly cV9pbmZvKHN0cnVjdCBkb21haW4gKmQsCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQg dnZ0ZF9sb2FkX3JlZ3Moc3RydWN0IGRvbWFpbiAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgp Cit7CisgICAgaWYgKCAhZG9tYWluX3Z2dGQoZCkgKQorICAgICAgICByZXR1cm4gLUVOT0RFVjsK KworICAgIGlmICggaHZtX2xvYWRfZW50cnkoSU9NTVVfUkVHUywgaCwgZG9tYWluX3Z2dGQoZCkt PnJlZ3MpICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICByZXR1cm4gMDsKK30KKwor c3RhdGljIGludCB2dnRkX3NhdmVfcmVncyhzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2Nv bnRleHRfdCAqaCkKK3sKKyAgICBpZiAoICFkb21haW5fdnZ0ZChkKSApCisgICAgICAgIHJldHVy biAwOworCisgICAgcmV0dXJuIGh2bV9zYXZlX2VudHJ5KElPTU1VX1JFR1MsIDAsIGgsIGRvbWFp bl92dnRkKGQpLT5yZWdzKTsKK30KKworc3RhdGljIGludCB2dnRkX2xvYWRfaGlkZGVuKHN0cnVj dCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQoreworICAgIGlmICggIWRvbWFp bl92dnRkKGQpICkKKyAgICAgICAgcmV0dXJuIC1FTk9ERVY7CisKKyAgICBpZiAoIGh2bV9sb2Fk X2VudHJ5KElPTU1VLCBoLCAmZG9tYWluX3Z2dGQoZCktPmh3KSApCisgICAgICAgIHJldHVybiAt RUlOVkFMOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdnZ0ZF9zYXZlX2hpZGRl bihzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKK3sKKyAgICBpZiAo ICFkb21haW5fdnZ0ZChkKSApCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGh2bV9z YXZlX2VudHJ5KElPTU1VLCAwLCBoLCAmZG9tYWluX3Z2dGQoZCktPmh3KTsKK30KKworSFZNX1JF R0lTVEVSX1NBVkVfUkVTVE9SRShJT01NVSwgdnZ0ZF9zYXZlX2hpZGRlbiwgdnZ0ZF9sb2FkX2hp ZGRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgSFZNU1JfUEVSX0RPTSk7CitIVk1f UkVHSVNURVJfU0FWRV9SRVNUT1JFKElPTU1VX1JFR1MsIHZ2dGRfc2F2ZV9yZWdzLCB2dnRkX2xv YWRfcmVncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgSFZNU1JfUEVSX0RPTSk7CisK IHN0YXRpYyB2b2lkIHZ2dGRfcmVzZXQoc3RydWN0IHZ2dGQgKnZ2dGQsIHVpbnQ2NF90IGNhcGFi aWxpdHkpCiB7CiAgICAgdWludDY0X3QgY2FwLCBlY2FwOwpAQCAtMTEyNCwxMiArMTE1NSwxMyBA QCBzdGF0aWMgaW50IHZ2dGRfY3JlYXRlKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2aW9tbXUg KnZpb21tdSkKICAgICB2dnRkLT5iYXNlX2FkZHIgPSB2aW9tbXUtPmJhc2VfYWRkcmVzczsKICAg ICB2dnRkLT5sZW5ndGggPSB2aW9tbXUtPmxlbmd0aDsKICAgICB2dnRkLT5kb21haW4gPSBkOwot ICAgIHZ2dGQtPnN0YXR1cyA9IDA7Ci0gICAgdnZ0ZC0+ZWltID0gMDsKLSAgICB2dnRkLT5pcnQg PSAwOwotICAgIHZ2dGQtPmlydF9tYXhfZW50cnkgPSAwOwotICAgIHZ2dGQtPmZyY2RfaWR4ID0g MDsKKyAgICB2dnRkLT5ody5zdGF0dXMgPSAwOworICAgIHZ2dGQtPmh3LmVpbSA9IDA7CisgICAg dnZ0ZC0+aHcuaXJ0ID0gMDsKKyAgICB2dnRkLT5ody5pcnRfbWF4X2VudHJ5ID0gMDsKKyAgICB2 dnRkLT5ody5mcmNkX2lkeCA9IDA7CiAgICAgcmVnaXN0ZXJfbW1pb19oYW5kbGVyKGQsICZ2dnRk X21taW9fb3BzKTsKKyAgICB2aW9tbXUtPnByaXYgPSAodm9pZCAqKXZ2dGQ7CiAgICAgcmV0dXJu IDA7CiAKICBvdXQyOgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2 bS9zYXZlLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODYvaHZtL3NhdmUuaAppbmRleCA4 MTY5NzNiLi4yOGZhZmM4IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODYv aHZtL3NhdmUuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODYvaHZtL3NhdmUuaApA QCAtNjM4LDEwICs2MzgsMzIgQEAgc3RydWN0IGh2bV9tc3IgewogCiAjZGVmaW5lIENQVV9NU1Jf Q09ERSAgMjAKIAorc3RydWN0IGh2bV9od192dnRkX3JlZ3MgeworICAgIHVpbnQ4X3QgZGF0YVsx MDI0XTsKK307CisKK0RFQ0xBUkVfSFZNX1NBVkVfVFlQRShJT01NVV9SRUdTLCAyMSwgc3RydWN0 IGh2bV9od192dnRkX3JlZ3MpOworCitzdHJ1Y3QgaHZtX2h3X3Z2dGQKK3sKKyAgICAvKiBWSU9N TVVfU1RBVFVTX1hYWF9SRU1BUFBJTkdfRU5BQkxFRCAqLworICAgIHVpbnQzMl90IHN0YXR1czsK KyAgICAvKiBGYXVsdCBSZWNvcmRpbmcgaW5kZXggKi8KKyAgICB1aW50MzJfdCBmcmNkX2lkeDsK KyAgICAvKiBJcyBpbiBFeHRlbmRlZCBJbnRlcnJ1cHQgTW9kZT8gKi8KKyAgICB1aW50MzJfdCBl aW07CisgICAgLyogTWF4IHJlbWFwcGluZyBlbnRyaWVzIGluIElSVCAqLworICAgIHVpbnQzMl90 IGlydF9tYXhfZW50cnk7CisgICAgLyogSW50ZXJydXB0IHJlbWFwcGluZyB0YWJsZSBiYXNlIGdm biAqLworICAgIHVpbnQ2NF90IGlydDsKK307CisKK0RFQ0xBUkVfSFZNX1NBVkVfVFlQRShJT01N VSwgMjIsIHN0cnVjdCBodm1faHdfdnZ0ZCk7CisKIC8qIAogICogTGFyZ2VzdCB0eXBlLWNvZGUg aW4gdXNlCiAgKi8KLSNkZWZpbmUgSFZNX1NBVkVfQ09ERV9NQVggMjAKKyNkZWZpbmUgSFZNX1NB VkVfQ09ERV9NQVggMjIKIAogI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19IVk1fU0FWRV9YODZfSF9f ICovCiAKLS0gCjEuOC4zLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK