From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [RFC PATCH V2 26/26] x86/vvtd: save and restore emulated VT-d Date: Thu, 18 May 2017 01:34:56 -0400 Message-ID: <1495085696-10819-27-git-send-email-tianyu.lan@intel.com> References: <1495085696-10819-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: <1495085696-10819-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 , andrew.cooper3@citrix.com, kevin.tian@intel.com, jbeulich@suse.com, Chao Gao List-Id: xen-devel@lists.xenproject.org RnJvbTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KCldyYXAgc29tZSB1c2VmdWwgc3Rh dHVzIGluIGEgbmV3IHN0cnVjdHVyZSBodm1faHdfdnZ0ZCwgZm9sbG93aW5nCnRoZSBjdXN0b21z IG9mIHZsYXBpYywgdmlvYXBpYyBhbmQgZXRjLiBQcm92aWRlIHR3byBzYXZlLXJlc3RvcmUKcGFp cnMgdG8gc2F2ZS9yZXN0b3JlIHJlZ2lzdGVycyBhbmQgbm9uLXJlZ2lzdGVyIHN0YXR1cy4KClNp Z25lZC1vZmYtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IExhbiBUaWFueXUgPHRpYW55dS5sYW5AaW50ZWwuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9odm0v dnZ0ZC5jICAgICAgICAgICAgICAgIHwgOTggKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQogeGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmggfCAyNCArKysrKysr Ky0KIDIgZmlsZXMgY2hhbmdlZCwgODggaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92dnRkLmMgYi94ZW4vYXJjaC94ODYvaHZtL3Z2 dGQuYwppbmRleCBjZTI1YTc3Li5lMzViYzllIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZt L3Z2dGQuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3Z2dGQuYwpAQCAtMjAsNiArMjAsNyBAQAog CiAjaW5jbHVkZSA8eGVuL2RvbWFpbl9wYWdlLmg+CiAjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2lu Y2x1ZGUgPHhlbi9odm0vc2F2ZS5oPgogI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgogI2luY2x1ZGUg PHhlbi90eXBlcy5oPgogI2luY2x1ZGUgPHhlbi92aW9tbXUuaD4KQEAgLTMzLDM4ICszNCwyNSBA QAogI2luY2x1ZGUgPGFzbS9wMm0uaD4KICNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CiAjaW5jbHVk ZSA8cHVibGljL3Zpb21tdS5oPgorI2luY2x1ZGUgPHB1YmxpYy9odm0vc2F2ZS5oPgogCiAjaW5j bHVkZSAiLi4vLi4vLi4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuaCIKICNpbmNsdWRl ICIuLi8uLi8uLi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC92dGQuaCIKIAotc3RydWN0IGh2bV9o d192dnRkX3JlZ3MgewotICAgIHVpbnQ4X3QgZGF0YVsxMDI0XTsKLX07Ci0KIC8qIFN0YXR1cyBm aWVsZCBvZiBzdHJ1Y3QgdnZ0ZCAqLwogI2RlZmluZSBWSU9NTVVfU1RBVFVTX0lSUV9SRU1BUFBJ TkdfRU5BQkxFRCAgICAgKDEgPDwgMCkKICNkZWZpbmUgVklPTU1VX1NUQVRVU19ETUFfUkVNQVBQ SU5HX0VOQUJMRUQgICAgICgxIDw8IDEpCiAKICNkZWZpbmUgdnZ0ZF9pcnFfcmVtYXBwaW5nX2Vu YWJsZWQodnZ0ZCkgXAotICAgICAgICAgICAgKHZ2dGQtPnN0YXR1cyAmIFZJT01NVV9TVEFUVVNf SVJRX1JFTUFQUElOR19FTkFCTEVEKQorICAgICAgICAgICAgKHZ2dGQtPmh3LnN0YXR1cyAmIFZJ T01NVV9TVEFUVVNfSVJRX1JFTUFQUElOR19FTkFCTEVEKQogCiBzdHJ1Y3QgdnZ0ZCB7Ci0gICAg LyogVklPTU1VX1NUQVRVU19YWFhfUkVNQVBQSU5HX0VOQUJMRUQgKi8KLSAgICBpbnQgc3RhdHVz OwotICAgIC8qIEZhdWx0IFJlY29yZGluZyBpbmRleCAqLwotICAgIGludCBmcmNkX2lkeDsKICAg ICAvKiBBZGRyZXNzIHJhbmdlIG9mIHJlbWFwcGluZyBoYXJkd2FyZSByZWdpc3Rlci1zZXQgKi8K ICAgICB1aW50NjRfdCBiYXNlX2FkZHI7CiAgICAgdWludDY0X3QgbGVuZ3RoOwogICAgIC8qIFBv aW50IGJhY2sgdG8gdGhlIG93bmVyIGRvbWFpbiAqLwogICAgIHN0cnVjdCBkb21haW4gKmRvbWFp bjsKLSAgICAvKiBJcyBpbiBFeHRlbmRlZCBJbnRlcnJ1cHQgTW9kZT8gKi8KLSAgICBib29sIGVp bTsKLSAgICAvKiBNYXggcmVtYXBwaW5nIGVudHJpZXMgaW4gSVJUICovCi0gICAgaW50IGlydF9t YXhfZW50cnk7Ci0gICAgLyogSW50ZXJydXB0IHJlbWFwcGluZyB0YWJsZSBiYXNlIGdmbiAqLwot ICAgIHVpbnQ2NF90IGlydDsKLQorICAgIHN0cnVjdCBodm1faHdfdnZ0ZCBodzsKICAgICBzdHJ1 Y3QgaHZtX2h3X3Z2dGRfcmVncyAqcmVnczsKICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpyZWdzX3Bh Z2U7CiB9OwpAQCAtMzY5LDEyICszNTcsMTIgQEAgc3RhdGljIGludCB2dnRkX2FsbG9jX2ZyY2Qo c3RydWN0IHZ2dGQgKnZ2dGQpCiB7CiAgICAgaW50IHByZXY7CiAgICAgLyogU2V0IHRoZSBGIGJp dCB0byBpbmRpY2F0ZSB0aGUgRlJDRCBpcyBpbiB1c2UuICovCi0gICAgaWYgKCB2dnRkX3Rlc3Rf YW5kX3NldF9iaXQodnZ0ZCwgRE1BX0ZSQ0QodnZ0ZC0+ZnJjZF9pZHgsIERNQV9GUkNEM19PRkZT RVQpLAorICAgIGlmICggdnZ0ZF90ZXN0X2FuZF9zZXRfYml0KHZ2dGQsIERNQV9GUkNEKHZ2dGQt Pmh3LmZyY2RfaWR4LCBETUFfRlJDRDNfT0ZGU0VUKSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBETUFfRlJDRF9GX0JJVCkgKQogICAgIHsKLSAgICAgICAgcHJldiA9IHZ2dGQtPmZy Y2RfaWR4OwotICAgICAgICB2dnRkLT5mcmNkX2lkeCA9IChwcmV2ICsgMSkgJSBETUFSX0ZSQ0Rf UkVHX05SOwotICAgICAgICByZXR1cm4gdnZ0ZC0+ZnJjZF9pZHg7CisgICAgICAgIHByZXYgPSB2 dnRkLT5ody5mcmNkX2lkeDsKKyAgICAgICAgdnZ0ZC0+aHcuZnJjZF9pZHggPSAocHJldiArIDEp ICUgRE1BUl9GUkNEX1JFR19OUjsKKyAgICAgICAgcmV0dXJuIHZ2dGQtPmh3LmZyY2RfaWR4Owog ICAgIH0KICAgICByZXR1cm4gLTE7CiB9CkBAIC03MDYsMTIgKzY5NCwxMiBAQCBzdGF0aWMgaW50 IHZ2dGRfaGFuZGxlX2djbWRfaXJlKHN0cnVjdCB2dnRkICp2dnRkLCB1aW50MzJfdCB2YWwpCiAK ICAgICBpZiAoIHZhbCAmIERNQV9HQ01EX0lSRSApCiAgICAgewotICAgICAgICB2dnRkLT5zdGF0 dXMgfD0gVklPTU1VX1NUQVRVU19JUlFfUkVNQVBQSU5HX0VOQUJMRUQ7CisgICAgICAgIHZ2dGQt Pmh3LnN0YXR1cyB8PSBWSU9NTVVfU1RBVFVTX0lSUV9SRU1BUFBJTkdfRU5BQkxFRDsKICAgICAg ICAgX192dnRkX3NldF9iaXQodnZ0ZCwgRE1BUl9HU1RTX1JFRywgRE1BX0dTVFNfSVJFU19CSVQp OwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICB2dnRkLT5zdGF0dXMgfD0gflZJT01N VV9TVEFUVVNfSVJRX1JFTUFQUElOR19FTkFCTEVEOworICAgICAgICB2dnRkLT5ody5zdGF0dXMg fD0gflZJT01NVV9TVEFUVVNfSVJRX1JFTUFQUElOR19FTkFCTEVEOwogICAgICAgICBfX3Z2dGRf Y2xlYXJfYml0KHZ2dGQsIERNQVJfR1NUU19SRUcsIERNQV9HU1RTX0lSRVNfQklUKTsKICAgICB9 CiAKQEAgLTczMCwxMSArNzE4LDExIEBAIHN0YXRpYyBpbnQgdnZ0ZF9oYW5kbGVfZ2NtZF9zaXJ0 cChzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwgdWludDMyX3QgdmFsKQogICAgICAgICAgICAgICAgICAgICJh Y3RpdmUuIiApOwogCiAgICAgdnZ0ZF9nZXRfcmVnX3F1YWQodnZ0ZCwgRE1BUl9JUlRBX1JFRywg aXJ0YSk7Ci0gICAgdnZ0ZC0+aXJ0ID0gRE1BX0lSVEFfQUREUihpcnRhKSA+PiBQQUdFX1NISUZU OwotICAgIHZ2dGQtPmlydF9tYXhfZW50cnkgPSBETUFfSVJUQV9TSVpFKGlydGEpOwotICAgIHZ2 dGQtPmVpbSA9IERNQV9JUlRBX0VJTUUoaXJ0YSk7CisgICAgdnZ0ZC0+aHcuaXJ0ID0gRE1BX0lS VEFfQUREUihpcnRhKSA+PiBQQUdFX1NISUZUOworICAgIHZ2dGQtPmh3LmlydF9tYXhfZW50cnkg PSBETUFfSVJUQV9TSVpFKGlydGEpOworICAgIHZ2dGQtPmh3LmVpbSA9IERNQV9JUlRBX0VJTUUo aXJ0YSk7CiAgICAgVlZURF9ERUJVRyhWVlREX0RCR19SVywgIlVwZGF0ZSBJUiBpbmZvIChhZGRy PSVseCBlaW09JWQgc2l6ZT0lZCkuIiwKLSAgICAgICAgICAgICAgIHZ2dGQtPmlydCwgdnZ0ZC0+ ZWltLCB2dnRkLT5pcnRfbWF4X2VudHJ5KTsKKyAgICAgICAgICAgICAgIHZ2dGQtPmh3LmlydCwg dnZ0ZC0+aHcuZWltLCB2dnRkLT5ody5pcnRfbWF4X2VudHJ5KTsKICAgICBfX3Z2dGRfc2V0X2Jp dCh2dnRkLCBETUFSX0dTVFNfUkVHLCBETUFfR1NUU19TSVJUUFNfQklUKTsKIAogICAgIHJldHVy biBYODZFTVVMX09LQVk7CkBAIC05NTMsMTMgKzk0MSwxMyBAQCBzdGF0aWMgaW50IHZ2dGRfZ2V0 X2VudHJ5KHN0cnVjdCB2dnRkICp2dnRkLAogCiAgICAgVlZURF9ERUJVRyhWVlREX0RCR19UUkFO UywgImludGVycHJldCBhIHJlcXVlc3Qgd2l0aCBpbmRleCAleCIsIGVudHJ5KTsKIAotICAgIGlm ICggZW50cnkgPiB2dnRkLT5pcnRfbWF4X2VudHJ5ICkKKyAgICBpZiAoIGVudHJ5ID4gdnZ0ZC0+ aHcuaXJ0X21heF9lbnRyeSApCiAgICAgewogICAgICAgICByZXQgPSBWVERfRlJfSVJfSU5ERVhf T1ZFUjsKICAgICAgICAgZ290byBoYW5kbGVfZmF1bHQ7CiAgICAgfQogCi0gICAgcmV0ID0gbWFw X2d1ZXN0X3BhZ2UodnZ0ZC0+ZG9tYWluLCB2dnRkLT5pcnQgKyAoZW50cnkgPj4gSVJFTUFQX0VO VFJZX09SREVSKSwKKyAgICByZXQgPSBtYXBfZ3Vlc3RfcGFnZSh2dnRkLT5kb21haW4sIHZ2dGQt Pmh3LmlydCArIChlbnRyeSA+PiBJUkVNQVBfRU5UUllfT1JERVIpLAogICAgICAgICAgICAgICAg ICAgICAgICAgICh2b2lkKiopJmlydF9wYWdlKTsKICAgICBpZiAoIHJldCApCiAgICAgewpAQCAt MTA4NCw2ICsxMDcyLDQ5IEBAIHN0YXRpYyBpbnQgdnZ0ZF9nZXRfaXJxX2luZm8oc3RydWN0IGRv bWFpbiAqZCwKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCB2dnRkX2xvYWRfcmVncyhz dHJ1Y3QgZG9tYWluICpkLCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKK3sKKyAgICBpZiAoICFk b21haW5fdnZ0ZChkKSApCisgICAgICAgIHJldHVybiAtRU5PREVWOworCisgICAgaWYgKCBodm1f bG9hZF9lbnRyeShJT01NVV9SRUdTLCBoLCBkb21haW5fdnZ0ZChkKS0+cmVncykgKQorICAgICAg ICByZXR1cm4gLUVJTlZBTDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZ2dGRf c2F2ZV9yZWdzKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQorewor ICAgIGlmICggIWRvbWFpbl92dnRkKGQpICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1 cm4gaHZtX3NhdmVfZW50cnkoSU9NTVVfUkVHUywgMCwgaCwgZG9tYWluX3Z2dGQoZCktPnJlZ3Mp OworfQorCitzdGF0aWMgaW50IHZ2dGRfbG9hZF9oaWRkZW4oc3RydWN0IGRvbWFpbiAqZCwgaHZt X2RvbWFpbl9jb250ZXh0X3QgKmgpCit7CisgICAgaWYgKCAhZG9tYWluX3Z2dGQoZCkgKQorICAg ICAgICByZXR1cm4gLUVOT0RFVjsKKworICAgIGlmICggaHZtX2xvYWRfZW50cnkoSU9NTVUsIGgs ICZkb21haW5fdnZ0ZChkKS0+aHcpICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBy ZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2dnRkX3NhdmVfaGlkZGVuKHN0cnVjdCBkb21haW4g KmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQoreworICAgIGlmICggIWRvbWFpbl92dnRkKGQp ICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gaHZtX3NhdmVfZW50cnkoSU9NTVUs IDAsIGgsICZkb21haW5fdnZ0ZChkKS0+aHcpOworfQorCitIVk1fUkVHSVNURVJfU0FWRV9SRVNU T1JFKElPTU1VLCB2dnRkX3NhdmVfaGlkZGVuLCB2dnRkX2xvYWRfaGlkZGVuLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAxLCBIVk1TUl9QRVJfRE9NKTsKK0hWTV9SRUdJU1RFUl9TQVZFX1JF U1RPUkUoSU9NTVVfUkVHUywgdnZ0ZF9zYXZlX3JlZ3MsIHZ2dGRfbG9hZF9yZWdzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAxLCBIVk1TUl9QRVJfRE9NKTsKKwogc3RhdGljIHZvaWQgdnZ0 ZF9yZXNldChzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwgdWludDY0X3QgY2FwYWJpbGl0eSkKIHsKICAgICB1 aW50NjRfdCBjYXAsIGVjYXA7CkBAIC0xMTQ3LDEyICsxMTc4LDEzIEBAIHN0YXRpYyBpbnQgdnZ0 ZF9jcmVhdGUoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZpb21tdSAqdmlvbW11KQogICAgIHZ2 dGQtPmJhc2VfYWRkciA9IHZpb21tdS0+YmFzZV9hZGRyZXNzOwogICAgIHZ2dGQtPmxlbmd0aCA9 IHZpb21tdS0+bGVuZ3RoOwogICAgIHZ2dGQtPmRvbWFpbiA9IGQ7Ci0gICAgdnZ0ZC0+c3RhdHVz ID0gMDsKLSAgICB2dnRkLT5laW0gPSAwOwotICAgIHZ2dGQtPmlydCA9IDA7Ci0gICAgdnZ0ZC0+ aXJ0X21heF9lbnRyeSA9IDA7Ci0gICAgdnZ0ZC0+ZnJjZF9pZHggPSAwOworICAgIHZ2dGQtPmh3 LnN0YXR1cyA9IDA7CisgICAgdnZ0ZC0+aHcuZWltID0gMDsKKyAgICB2dnRkLT5ody5pcnQgPSAw OworICAgIHZ2dGQtPmh3LmlydF9tYXhfZW50cnkgPSAwOworICAgIHZ2dGQtPmh3LmZyY2RfaWR4 ID0gMDsKICAgICByZWdpc3Rlcl9tbWlvX2hhbmRsZXIoZCwgJnZ2dGRfbW1pb19vcHMpOworICAg IHZpb21tdS0+cHJpdiA9ICh2b2lkICopdnZ0ZDsKICAgICByZXR1cm4gMDsKIAogb3V0MjoKZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLXg4Ni9odm0vc2F2ZS5oIGIveGVuL2lu Y2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmgKaW5kZXggODE2OTczYi4uMjhmYWZjOCAx MDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmgKKysrIGIv eGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmgKQEAgLTYzOCwxMCArNjM4LDMy IEBAIHN0cnVjdCBodm1fbXNyIHsKIAogI2RlZmluZSBDUFVfTVNSX0NPREUgIDIwCiAKK3N0cnVj dCBodm1faHdfdnZ0ZF9yZWdzIHsKKyAgICB1aW50OF90IGRhdGFbMTAyNF07Cit9OworCitERUNM QVJFX0hWTV9TQVZFX1RZUEUoSU9NTVVfUkVHUywgMjEsIHN0cnVjdCBodm1faHdfdnZ0ZF9yZWdz KTsKKworc3RydWN0IGh2bV9od192dnRkCit7CisgICAgLyogVklPTU1VX1NUQVRVU19YWFhfUkVN QVBQSU5HX0VOQUJMRUQgKi8KKyAgICB1aW50MzJfdCBzdGF0dXM7CisgICAgLyogRmF1bHQgUmVj b3JkaW5nIGluZGV4ICovCisgICAgdWludDMyX3QgZnJjZF9pZHg7CisgICAgLyogSXMgaW4gRXh0 ZW5kZWQgSW50ZXJydXB0IE1vZGU/ICovCisgICAgdWludDMyX3QgZWltOworICAgIC8qIE1heCBy ZW1hcHBpbmcgZW50cmllcyBpbiBJUlQgKi8KKyAgICB1aW50MzJfdCBpcnRfbWF4X2VudHJ5Owor ICAgIC8qIEludGVycnVwdCByZW1hcHBpbmcgdGFibGUgYmFzZSBnZm4gKi8KKyAgICB1aW50NjRf dCBpcnQ7Cit9OworCitERUNMQVJFX0hWTV9TQVZFX1RZUEUoSU9NTVUsIDIyLCBzdHJ1Y3QgaHZt X2h3X3Z2dGQpOworCiAvKiAKICAqIExhcmdlc3QgdHlwZS1jb2RlIGluIHVzZQogICovCi0jZGVm aW5lIEhWTV9TQVZFX0NPREVfTUFYIDIwCisjZGVmaW5lIEhWTV9TQVZFX0NPREVfTUFYIDIyCiAK ICNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfSFZNX1NBVkVfWDg2X0hfXyAqLwogCi0tIAoxLjguMy4x CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==