From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [PATCH V3 29/29] x86/vvtd: save and restore emulated VT-d Date: Thu, 21 Sep 2017 23:02:10 -0400 Message-ID: <1506049330-11196-30-git-send-email-tianyu.lan@intel.com> References: <1506049330-11196-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: <1506049330-11196-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, andrew.cooper3@citrix.com, jbeulich@suse.com, Chao Gao , roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org RnJvbTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KClByb3ZpZGUgYSBzYXZlLXJlc3Rv cmUgcGFpciB0byBzYXZlL3Jlc3RvcmUgcmVnaXN0ZXJzIGFuZCBub24tcmVnaXN0ZXIKc3RhdHVz LgoKU2lnbmVkLW9mZi1ieTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KU2lnbmVkLW9m Zi1ieTogTGFuIFRpYW55dSA8dGlhbnl1LmxhbkBpbnRlbC5jb20+Ci0tLQp2MzoKIC0gdXNlIG9u ZSBlbnRyeSB0byBzYXZlIGJvdGggdnZ0ZCByZWdpc3RlcnMgYW5kIG90aGVyIGludGVybWVkaWF0 ZQogc3RhdGUKLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvdnZ0ZC5jICAgICB8IDY2 ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHhlbi9pbmNsdWRlL3B1YmxpYy9h cmNoLXg4Ni9odm0vc2F2ZS5oIHwgMjUgKysrKysrKysrKysrLQogMiBmaWxlcyBjaGFuZ2VkLCA3 NiBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC92dGQvdnZ0ZC5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Z2 dGQuYwppbmRleCA2NjhkMGM5Li4yYWVjZDkzIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC92dGQvdnZ0ZC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC92dnRk LmMKQEAgLTI4LDExICsyOCwxMyBAQAogI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CiAjaW5jbHVk ZSA8YXNtL2V2ZW50Lmg+CiAjaW5jbHVkZSA8YXNtL2h2bS9kb21haW4uaD4KKyNpbmNsdWRlIDxh c20vaHZtL3NhdmUuaD4KICNpbmNsdWRlIDxhc20vaHZtL3N1cHBvcnQuaD4KICNpbmNsdWRlIDxh c20vaW9fYXBpYy5oPgogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CiAjaW5jbHVkZSA8YXNtL3AybS5o PgogI2luY2x1ZGUgPGFzbS92aW9tbXUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvaHZtL3NhdmUuaD4K IAogI2luY2x1ZGUgImlvbW11LmgiCiAjaW5jbHVkZSAidnRkLmgiCkBAIC00MCwyMCArNDIsNiBA QAogLyogU3VwcG9ydGVkIGNhcGFiaWxpdGllcyBieSB2dnRkICovCiB1bnNpZ25lZCBpbnQgdnZ0 ZF9jYXBzID0gVklPTU1VX0NBUF9JUlFfUkVNQVBQSU5HOwogCi1zdHJ1Y3QgaHZtX2h3X3Z2dGRf c3RhdHVzIHsKLSAgICB1aW50MzJfdCBlaW1fZW5hYmxlZCA6IDEsCi0gICAgICAgICAgICAgaW50 cmVtYXBfZW5hYmxlZCA6IDE7Ci0gICAgdWludDMyX3QgZmF1bHRfaW5kZXg7Ci0gICAgdWludDMy X3QgaXJ0X21heF9lbnRyeTsKLSAgICAvKiBJbnRlcnJ1cHQgcmVtYXBwaW5nIHRhYmxlIGJhc2Ug Z2ZuICovCi0gICAgdWludDY0X3QgaXJ0OwotfTsKLQotdW5pb24gaHZtX2h3X3Z2dGRfcmVncyB7 Ci0gICAgdWludDMyX3QgZGF0YTMyWzI1Nl07Ci0gICAgdWludDY0X3QgZGF0YTY0WzEyOF07Ci19 OwotCiBzdHJ1Y3QgdnZ0ZCB7CiAgICAgLyogQWRkcmVzcyByYW5nZSBvZiByZW1hcHBpbmcgaGFy ZHdhcmUgcmVnaXN0ZXItc2V0ICovCiAgICAgdWludDY0X3QgYmFzZV9hZGRyOwpAQCAtMTA1Nyw2 ICsxMDQ1LDU2IEBAIHN0YXRpYyBib29sIHZ2dGRfaXNfcmVtYXBwaW5nKHN0cnVjdCBkb21haW4g KmQsCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgdnZ0ZF9sb2FkKHN0cnVjdCBkb21h aW4gKmQsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQoreworICAgIHN0cnVjdCBodm1faHdfdnZ0 ZCAqaHdfdnZ0ZDsKKworICAgIGlmICggIWRvbWFpbl92dnRkKGQpICkKKyAgICAgICAgcmV0dXJu IC1FTk9ERVY7CisKKyAgICBod192dnRkID0geG1hbGxvYyhzdHJ1Y3QgaHZtX2h3X3Z2dGQpOwor ICAgIGlmICggIWh3X3Z2dGQgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKworICAgIGlmICgg aHZtX2xvYWRfZW50cnkoVlZURCwgaCwgaHdfdnZ0ZCkgKQorICAgIHsKKyAgICAgICAgeGZyZWUo aHdfdnZ0ZCk7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIG1lbWNweSgm ZG9tYWluX3Z2dGQoZCktPnN0YXR1cywgJmh3X3Z2dGQtPnN0YXR1cywKKyAgICAgICAgICAgc2l6 ZW9mKHN0cnVjdCBodm1faHdfdnZ0ZF9zdGF0dXMpKTsKKyAgICBtZW1jcHkoZG9tYWluX3Z2dGQo ZCktPnJlZ3MsICZod192dnRkLT5yZWdzLAorICAgICAgICAgICBzaXplb2YodW5pb24gaHZtX2h3 X3Z2dGRfcmVncykpOworICAgIHhmcmVlKGh3X3Z2dGQpOworCisgICAgcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgdnZ0ZF9zYXZlKHN0cnVjdCBkb21haW4gKmQsIGh2bV9kb21haW5fY29udGV4 dF90ICpoKQoreworICAgIHN0cnVjdCBodm1faHdfdnZ0ZCAqaHdfdnZ0ZDsKKyAgICBpbnQgcmV0 OworCisgICAgaWYgKCAhZG9tYWluX3Z2dGQoZCkgKQorICAgICAgICByZXR1cm4gMDsKKworICAg IGh3X3Z2dGQgPSB4bWFsbG9jKHN0cnVjdCBodm1faHdfdnZ0ZCk7CisgICAgaWYgKCAhaHdfdnZ0 ZCApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgbWVtY3B5KCZod192dnRkLT5zdGF0 dXMsICZkb21haW5fdnZ0ZChkKS0+c3RhdHVzLAorICAgICAgICAgICBzaXplb2Yoc3RydWN0IGh2 bV9od192dnRkX3N0YXR1cykpOworICAgIG1lbWNweSgmaHdfdnZ0ZC0+cmVncywgZG9tYWluX3Z2 dGQoZCktPnJlZ3MsCisgICAgICAgICAgIHNpemVvZih1bmlvbiBodm1faHdfdnZ0ZF9yZWdzKSk7 CisgICAgcmV0ID0gaHZtX3NhdmVfZW50cnkoVlZURCwgMCwgaCwgaHdfdnZ0ZCk7CisgICAgeGZy ZWUoaHdfdnZ0ZCk7CisKKyAgICByZXR1cm4gcmV0OworfQorCitIVk1fUkVHSVNURVJfU0FWRV9S RVNUT1JFKFZWVEQsIHZ2dGRfc2F2ZSwgdnZ0ZF9sb2FkLCAxLCBIVk1TUl9QRVJfRE9NKTsKKwog c3RhdGljIHZvaWQgdnZ0ZF9yZXNldChzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwgdWludDY0X3QgY2FwYWJp bGl0eSkKIHsKICAgICB1aW50NjRfdCBjYXAgPSBjYXBfc2V0X251bV9mYXVsdF9yZWdzKDFVTEwp IHwKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLXg4Ni9odm0vc2F2ZS5oIGIv eGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmgKaW5kZXggZmQ3YmYzZi4uMTgx YWJiMiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmgK KysrIGIveGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmgKQEAgLTYzOSwxMCAr NjM5LDMzIEBAIHN0cnVjdCBodm1fbXNyIHsKIAogI2RlZmluZSBDUFVfTVNSX0NPREUgIDIwCiAK K3VuaW9uIGh2bV9od192dnRkX3JlZ3MgeworICAgIHVpbnQzMl90IGRhdGEzMlsyNTZdOworICAg IHVpbnQ2NF90IGRhdGE2NFsxMjhdOworfTsKKworc3RydWN0IGh2bV9od192dnRkX3N0YXR1cwor eworICAgIHVpbnQzMl90IGVpbV9lbmFibGVkIDogMSwKKyAgICAgICAgICAgICBpbnRyZW1hcF9l bmFibGVkIDogMTsKKyAgICB1aW50MzJfdCBmYXVsdF9pbmRleDsKKyAgICB1aW50MzJfdCBpcnRf bWF4X2VudHJ5OworICAgIC8qIEludGVycnVwdCByZW1hcHBpbmcgdGFibGUgYmFzZSBnZm4gKi8K KyAgICB1aW50NjRfdCBpcnQ7Cit9OworCitzdHJ1Y3QgaHZtX2h3X3Z2dGQKK3sKKyAgICB1bmlv biBodm1faHdfdnZ0ZF9yZWdzIHJlZ3M7CisgICAgc3RydWN0IGh2bV9od192dnRkX3N0YXR1cyBz dGF0dXM7Cit9OworCitERUNMQVJFX0hWTV9TQVZFX1RZUEUoVlZURCwgMjEsIHN0cnVjdCBodm1f aHdfdnZ0ZCk7CisKIC8qIAogICogTGFyZ2VzdCB0eXBlLWNvZGUgaW4gdXNlCiAgKi8KLSNkZWZp bmUgSFZNX1NBVkVfQ09ERV9NQVggMjAKKyNkZWZpbmUgSFZNX1NBVkVfQ09ERV9NQVggMjEKIAog I2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19IVk1fU0FWRV9YODZfSF9fICovCiAKLS0gCjEuOC4zLjEK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK