From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [PATCH V2 25/25] x86/vvtd: save and restore emulated VT-d Date: Wed, 9 Aug 2017 16:34:26 -0400 Message-ID: <1502310866-10450-26-git-send-email-tianyu.lan@intel.com> References: <1502310866-10450-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: <1502310866-10450-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, julien.grall@arm.com, Chao Gao List-Id: xen-devel@lists.xenproject.org RnJvbTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KCldyYXAgc29tZSB1c2VmdWwgc3Rh dHVzIGluIGEgbmV3IHN0cnVjdHVyZSBodm1faHdfdnZ0ZCwgZm9sbG93aW5nCnRoZSBjdXN0b21z IG9mIHZsYXBpYywgdmlvYXBpYyBhbmQgZXRjLiBQcm92aWRlIHR3byBzYXZlLXJlc3RvcmUKcGFp cnMgdG8gc2F2ZS9yZXN0b3JlIHJlZ2lzdGVycyBhbmQgbm9uLXJlZ2lzdGVyIHN0YXR1cy4KClNp Z25lZC1vZmYtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IExhbiBUaWFueXUgPHRpYW55dS5sYW5AaW50ZWwuY29tPgotLS0KIHhlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3Z0ZC92dnRkLmMgICAgIHwgOTggKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQogeGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmggfCAyNCArKysrKysr Ky0KIDIgZmlsZXMgY2hhbmdlZCwgODggaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Z2dGQuYyBiL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC92dnRkLmMKaW5kZXggNGY1ZTI4ZS4uZGQ2YmU4MyAxMDA2NDQK LS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Z2dGQuYworKysgYi94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC92dGQvdnZ0ZC5jCkBAIC0yMCw2ICsyMCw3IEBACiAKICNpbmNsdWRlIDx4 ZW4vZG9tYWluX3BhZ2UuaD4KICNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL2h2 bS9zYXZlLmg+CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8eGVuL3R5cGVzLmg+ CiAjaW5jbHVkZSA8eGVuL3Zpb21tdS5oPgpAQCAtMzIsMzkgKzMzLDI2IEBACiAjaW5jbHVkZSA8 YXNtL3BhZ2UuaD4KICNpbmNsdWRlIDxhc20vcDJtLmg+CiAjaW5jbHVkZSA8YXNtL3N5c3RlbS5o PgorI2luY2x1ZGUgPHB1YmxpYy9odm0vc2F2ZS5oPgogCiAjaW5jbHVkZSAiaW9tbXUuaCIKICNp bmNsdWRlICJ2dGQuaCIKIAotc3RydWN0IGh2bV9od192dnRkX3JlZ3MgewotICAgIHVpbnQ4X3Qg ZGF0YVsxMDI0XTsKLX07Ci0KIC8qIFN0YXR1cyBmaWVsZCBvZiBzdHJ1Y3QgdnZ0ZCAqLwogI2Rl ZmluZSBWSU9NTVVfU1RBVFVTX0RFRkFVTFQgICAgICAgICAgICAgICAgICAgKDApCiAjZGVmaW5l IFZJT01NVV9TVEFUVVNfSVJRX1JFTUFQUElOR19FTkFCTEVEICAgICAoMSA8PCAwKQogI2RlZmlu ZSBWSU9NTVVfU1RBVFVTX0RNQV9SRU1BUFBJTkdfRU5BQkxFRCAgICAgKDEgPDwgMSkKIAogI2Rl ZmluZSB2dnRkX2lycV9yZW1hcHBpbmdfZW5hYmxlZCh2dnRkKSBcCi0gICAgKHZ2dGQtPnN0YXR1 cyAmIFZJT01NVV9TVEFUVVNfSVJRX1JFTUFQUElOR19FTkFCTEVEKQorICAgICh2dnRkLT5ody5z dGF0dXMgJiBWSU9NTVVfU1RBVFVTX0lSUV9SRU1BUFBJTkdfRU5BQkxFRCkKIAogc3RydWN0IHZ2 dGQgewotICAgIC8qIFZJT01NVV9TVEFUVVNfWFhYICovCi0gICAgaW50IHN0YXR1czsKLSAgICAv KiBGYXVsdCBSZWNvcmRpbmcgaW5kZXggKi8KLSAgICBpbnQgZnJjZF9pZHg7CiAgICAgLyogQWRk cmVzcyByYW5nZSBvZiByZW1hcHBpbmcgaGFyZHdhcmUgcmVnaXN0ZXItc2V0ICovCiAgICAgdWlu dDY0X3QgYmFzZV9hZGRyOwogICAgIHVpbnQ2NF90IGxlbmd0aDsKICAgICAvKiBQb2ludCBiYWNr IHRvIHRoZSBvd25lciBkb21haW4gKi8KICAgICBzdHJ1Y3QgZG9tYWluICpkb21haW47Ci0gICAg LyogSXMgaW4gRXh0ZW5kZWQgSW50ZXJydXB0IE1vZGU/ICovCi0gICAgYm9vbCBlaW07Ci0gICAg LyogTWF4IHJlbWFwcGluZyBlbnRyaWVzIGluIElSVCAqLwotICAgIGludCBpcnRfbWF4X2VudHJ5 OwotICAgIC8qIEludGVycnVwdCByZW1hcHBpbmcgdGFibGUgYmFzZSBnZm4gKi8KLSAgICB1aW50 NjRfdCBpcnQ7Ci0KKyAgICBzdHJ1Y3QgaHZtX2h3X3Z2dGQgaHc7CiAgICAgc3RydWN0IGh2bV9o d192dnRkX3JlZ3MgKnJlZ3M7CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcmVnc19wYWdlOwogfTsK QEAgLTM3MCwxMiArMzU4LDEyIEBAIHN0YXRpYyBpbnQgdnZ0ZF9hbGxvY19mcmNkKHN0cnVjdCB2 dnRkICp2dnRkKQogICAgIGludCBwcmV2OwogCiAgICAgLyogU2V0IHRoZSBGIGJpdCB0byBpbmRp Y2F0ZSB0aGUgRlJDRCBpcyBpbiB1c2UuICovCi0gICAgaWYgKCB2dnRkX3Rlc3RfYW5kX3NldF9i aXQodnZ0ZCwgRE1BX0ZSQ0QodnZ0ZC0+ZnJjZF9pZHgsIERNQV9GUkNEM19PRkZTRVQpLAorICAg IGlmICggdnZ0ZF90ZXN0X2FuZF9zZXRfYml0KHZ2dGQsIERNQV9GUkNEKHZ2dGQtPmh3LmZyY2Rf aWR4LCBETUFfRlJDRDNfT0ZGU0VUKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE TUFfRlJDRF9GX0JJVCkgKQogICAgIHsKLSAgICAgICAgcHJldiA9IHZ2dGQtPmZyY2RfaWR4Owot ICAgICAgICB2dnRkLT5mcmNkX2lkeCA9IChwcmV2ICsgMSkgJSBETUFfRlJDRF9SRUdfTlI7Ci0g ICAgICAgIHJldHVybiB2dnRkLT5mcmNkX2lkeDsKKyAgICAgICAgcHJldiA9IHZ2dGQtPmh3LmZy Y2RfaWR4OworICAgICAgICB2dnRkLT5ody5mcmNkX2lkeCA9IChwcmV2ICsgMSkgJSBETUFfRlJD RF9SRUdfTlI7CisgICAgICAgIHJldHVybiB2dnRkLT5ody5mcmNkX2lkeDsKICAgICB9CiAgICAg cmV0dXJuIC0xOwogfQpAQCAtNzEyLDEyICs3MDAsMTIgQEAgc3RhdGljIGludCB2dnRkX2hhbmRs ZV9nY21kX2lyZShzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwgdWludDMyX3QgdmFsKQogCiAgICAgaWYgKCB2 YWwgJiBETUFfR0NNRF9JUkUgKQogICAgIHsKLSAgICAgICAgdnZ0ZC0+c3RhdHVzIHw9IFZJT01N VV9TVEFUVVNfSVJRX1JFTUFQUElOR19FTkFCTEVEOworICAgICAgICB2dnRkLT5ody5zdGF0dXMg fD0gVklPTU1VX1NUQVRVU19JUlFfUkVNQVBQSU5HX0VOQUJMRUQ7CiAgICAgICAgIF9fdnZ0ZF9z ZXRfYml0KHZ2dGQsIERNQVJfR1NUU19SRUcsIERNQV9HU1RTX0lSRVNfQklUKTsKICAgICB9CiAg ICAgZWxzZQogICAgIHsKLSAgICAgICAgdnZ0ZC0+c3RhdHVzIHw9IH5WSU9NTVVfU1RBVFVTX0lS UV9SRU1BUFBJTkdfRU5BQkxFRDsKKyAgICAgICAgdnZ0ZC0+aHcuc3RhdHVzIHw9IH5WSU9NTVVf U1RBVFVTX0lSUV9SRU1BUFBJTkdfRU5BQkxFRDsKICAgICAgICAgX192dnRkX2NsZWFyX2JpdCh2 dnRkLCBETUFSX0dTVFNfUkVHLCBETUFfR1NUU19JUkVTX0JJVCk7CiAgICAgfQogCkBAIC03MzYs MTEgKzcyNCwxMSBAQCBzdGF0aWMgaW50IHZ2dGRfaGFuZGxlX2djbWRfc2lydHAoc3RydWN0IHZ2 dGQgKnZ2dGQsIHVpbnQzMl90IHZhbCkKICAgICAgICAgICAgICAgICAgICAiYWN0aXZlLiIgKTsK IAogICAgIHZ2dGRfZ2V0X3JlZ19xdWFkKHZ2dGQsIERNQVJfSVJUQV9SRUcsIGlydGEpOwotICAg IHZ2dGQtPmlydCA9IERNQV9JUlRBX0FERFIoaXJ0YSkgPj4gUEFHRV9TSElGVDsKLSAgICB2dnRk LT5pcnRfbWF4X2VudHJ5ID0gRE1BX0lSVEFfU0laRShpcnRhKTsKLSAgICB2dnRkLT5laW0gPSBE TUFfSVJUQV9FSU1FKGlydGEpOworICAgIHZ2dGQtPmh3LmlydCA9IERNQV9JUlRBX0FERFIoaXJ0 YSkgPj4gUEFHRV9TSElGVDsKKyAgICB2dnRkLT5ody5pcnRfbWF4X2VudHJ5ID0gRE1BX0lSVEFf U0laRShpcnRhKTsKKyAgICB2dnRkLT5ody5laW0gPSBETUFfSVJUQV9FSU1FKGlydGEpOwogICAg IFZWVERfREVCVUcoVlZURF9EQkdfUlcsICJVcGRhdGUgSVIgaW5mbyAoYWRkcj0lbHggZWltPSVk IHNpemU9JWQpLiIsCi0gICAgICAgICAgICAgICB2dnRkLT5pcnQsIHZ2dGQtPmVpbSwgdnZ0ZC0+ aXJ0X21heF9lbnRyeSk7CisgICAgICAgICAgICAgICB2dnRkLT5ody5pcnQsIHZ2dGQtPmh3LmVp bSwgdnZ0ZC0+aHcuaXJ0X21heF9lbnRyeSk7CiAgICAgX192dnRkX3NldF9iaXQodnZ0ZCwgRE1B Ul9HU1RTX1JFRywgRE1BX0dTVFNfU0lSVFBTX0JJVCk7CiAKICAgICByZXR1cm4gWDg2RU1VTF9P S0FZOwpAQCAtOTQ3LDEzICs5MzUsMTMgQEAgc3RhdGljIGludCB2dnRkX2dldF9lbnRyeShzdHJ1 Y3QgdnZ0ZCAqdnZ0ZCwKIAogICAgIFZWVERfREVCVUcoVlZURF9EQkdfVFJBTlMsICJpbnRlcnBy ZXQgYSByZXF1ZXN0IHdpdGggaW5kZXggJXgiLCBlbnRyeSk7CiAKLSAgICBpZiAoIGVudHJ5ID4g dnZ0ZC0+aXJ0X21heF9lbnRyeSApCisgICAgaWYgKCBlbnRyeSA+IHZ2dGQtPmh3LmlydF9tYXhf ZW50cnkgKQogICAgIHsKICAgICAgICAgcmV0ID0gVlREX0ZSX0lSX0lOREVYX09WRVI7CiAgICAg ICAgIGdvdG8gaGFuZGxlX2ZhdWx0OwogICAgIH0KIAotICAgIHJldCA9IG1hcF9ndWVzdF9wYWdl KHZ2dGQtPmRvbWFpbiwgdnZ0ZC0+aXJ0ICsgKGVudHJ5ID4+IElSRU1BUF9FTlRSWV9PUkRFUiks CisgICAgcmV0ID0gbWFwX2d1ZXN0X3BhZ2UodnZ0ZC0+ZG9tYWluLCB2dnRkLT5ody5pcnQgKyAo ZW50cnkgPj4gSVJFTUFQX0VOVFJZX09SREVSKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAo dm9pZCoqKSZpcnRfcGFnZSk7CiAgICAgaWYgKCByZXQgKQogICAgIHsKQEAgLTEwNzcsNiArMTA2 NSw0OSBAQCBzdGF0aWMgaW50IHZ2dGRfZ2V0X2lycV9pbmZvKHN0cnVjdCBkb21haW4gKmQsCiAg ICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgdnZ0ZF9sb2FkX3JlZ3Moc3RydWN0IGRvbWFp biAqZCwgaHZtX2RvbWFpbl9jb250ZXh0X3QgKmgpCit7CisgICAgaWYgKCAhZG9tYWluX3Z2dGQo ZCkgKQorICAgICAgICByZXR1cm4gLUVOT0RFVjsKKworICAgIGlmICggaHZtX2xvYWRfZW50cnko SU9NTVVfUkVHUywgaCwgZG9tYWluX3Z2dGQoZCktPnJlZ3MpICkKKyAgICAgICAgcmV0dXJuIC1F SU5WQUw7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2dnRkX3NhdmVfcmVncyhz dHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKK3sKKyAgICBpZiAoICFk b21haW5fdnZ0ZChkKSApCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGh2bV9zYXZl X2VudHJ5KElPTU1VX1JFR1MsIDAsIGgsIGRvbWFpbl92dnRkKGQpLT5yZWdzKTsKK30KKworc3Rh dGljIGludCB2dnRkX2xvYWRfaGlkZGVuKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29u dGV4dF90ICpoKQoreworICAgIGlmICggIWRvbWFpbl92dnRkKGQpICkKKyAgICAgICAgcmV0dXJu IC1FTk9ERVY7CisKKyAgICBpZiAoIGh2bV9sb2FkX2VudHJ5KElPTU1VLCBoLCAmZG9tYWluX3Z2 dGQoZCktPmh3KSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgdnZ0ZF9zYXZlX2hpZGRlbihzdHJ1Y3QgZG9tYWluICpkLCBodm1fZG9t YWluX2NvbnRleHRfdCAqaCkKK3sKKyAgICBpZiAoICFkb21haW5fdnZ0ZChkKSApCisgICAgICAg IHJldHVybiAwOworCisgICAgcmV0dXJuIGh2bV9zYXZlX2VudHJ5KElPTU1VLCAwLCBoLCAmZG9t YWluX3Z2dGQoZCktPmh3KTsKK30KKworSFZNX1JFR0lTVEVSX1NBVkVfUkVTVE9SRShJT01NVSwg dnZ0ZF9zYXZlX2hpZGRlbiwgdnZ0ZF9sb2FkX2hpZGRlbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgMSwgSFZNU1JfUEVSX0RPTSk7CitIVk1fUkVHSVNURVJfU0FWRV9SRVNUT1JFKElPTU1V X1JFR1MsIHZ2dGRfc2F2ZV9yZWdzLCB2dnRkX2xvYWRfcmVncywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgMSwgSFZNU1JfUEVSX0RPTSk7CisKIHN0YXRpYyB2b2lkIHZ2dGRfcmVzZXQoc3Ry dWN0IHZ2dGQgKnZ2dGQsIHVpbnQ2NF90IGNhcGFiaWxpdHkpCiB7CiAgICAgdWludDY0X3QgY2Fw ID0gRE1BX0NBUF9ORlIgfCBETUFfQ0FQX1NMTFBTIHwgRE1BX0NBUF9GUk8gfApAQCAtMTEyMiwx MiArMTE1MywxMyBAQCBzdGF0aWMgaW50IHZ2dGRfY3JlYXRlKHN0cnVjdCBkb21haW4gKmQsIHN0 cnVjdCB2aW9tbXUgKnZpb21tdSkKICAgICB2dnRkLT5iYXNlX2FkZHIgPSB2aW9tbXUtPmJhc2Vf YWRkcmVzczsKICAgICB2dnRkLT5sZW5ndGggPSB2aW9tbXUtPmxlbmd0aDsKICAgICB2dnRkLT5k b21haW4gPSBkOwotICAgIHZ2dGQtPnN0YXR1cyA9IFZJT01NVV9TVEFUVVNfREVGQVVMVDsKLSAg ICB2dnRkLT5laW0gPSAwOwotICAgIHZ2dGQtPmlydCA9IDA7Ci0gICAgdnZ0ZC0+aXJ0X21heF9l bnRyeSA9IDA7Ci0gICAgdnZ0ZC0+ZnJjZF9pZHggPSAwOworICAgIHZ2dGQtPmh3LnN0YXR1cyA9 IFZJT01NVV9TVEFUVVNfREVGQVVMVDsKKyAgICB2dnRkLT5ody5laW0gPSAwOworICAgIHZ2dGQt Pmh3LmlydCA9IDA7CisgICAgdnZ0ZC0+aHcuaXJ0X21heF9lbnRyeSA9IDA7CisgICAgdnZ0ZC0+ aHcuZnJjZF9pZHggPSAwOwogICAgIHJlZ2lzdGVyX21taW9faGFuZGxlcihkLCAmdnZ0ZF9tbWlv X29wcyk7CisgICAgdmlvbW11LT5wcml2ID0gKHZvaWQgKil2dnRkOwogICAgIHJldHVybiAwOwog CiAgb3V0MjoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLXg4Ni9odm0vc2F2 ZS5oIGIveGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmgKaW5kZXggZmQ3YmYz Zi4uMTA1MzZjYiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9z YXZlLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmgKQEAgLTYz OSwxMCArNjM5LDMyIEBAIHN0cnVjdCBodm1fbXNyIHsKIAogI2RlZmluZSBDUFVfTVNSX0NPREUg IDIwCiAKK3N0cnVjdCBodm1faHdfdnZ0ZF9yZWdzIHsKKyAgICB1aW50OF90IGRhdGFbMTAyNF07 Cit9OworCitERUNMQVJFX0hWTV9TQVZFX1RZUEUoSU9NTVVfUkVHUywgMjEsIHN0cnVjdCBodm1f aHdfdnZ0ZF9yZWdzKTsKKworc3RydWN0IGh2bV9od192dnRkCit7CisgICAgLyogVklPTU1VX1NU QVRVU19YWFggKi8KKyAgICB1aW50MzJfdCBzdGF0dXM7CisgICAgLyogRmF1bHQgUmVjb3JkaW5n IGluZGV4ICovCisgICAgdWludDMyX3QgZnJjZF9pZHg7CisgICAgLyogSXMgaW4gRXh0ZW5kZWQg SW50ZXJydXB0IE1vZGU/ICovCisgICAgdWludDMyX3QgZWltOworICAgIC8qIE1heCByZW1hcHBp bmcgZW50cmllcyBpbiBJUlQgKi8KKyAgICB1aW50MzJfdCBpcnRfbWF4X2VudHJ5OworICAgIC8q IEludGVycnVwdCByZW1hcHBpbmcgdGFibGUgYmFzZSBnZm4gKi8KKyAgICB1aW50NjRfdCBpcnQ7 Cit9OworCitERUNMQVJFX0hWTV9TQVZFX1RZUEUoSU9NTVUsIDIyLCBzdHJ1Y3QgaHZtX2h3X3Z2 dGQpOworCiAvKiAKICAqIExhcmdlc3QgdHlwZS1jb2RlIGluIHVzZQogICovCi0jZGVmaW5lIEhW TV9TQVZFX0NPREVfTUFYIDIwCisjZGVmaW5lIEhWTV9TQVZFX0NPREVfTUFYIDIyCiAKICNlbmRp ZiAvKiBfX1hFTl9QVUJMSUNfSFZNX1NBVkVfWDg2X0hfXyAqLwogCi0tIAoxLjguMy4xCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==