From mboxrd@z Thu Jan 1 00:00:00 1970 From: Luwei Kang Subject: [PATCH v2 07/10] x86: Add Intel Processor Trace MSRs read/write emulation Date: Wed, 30 May 2018 21:28:01 +0800 Message-ID: <1527686884-5917-8-git-send-email-luwei.kang@intel.com> References: <1527686884-5917-1-git-send-email-luwei.kang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1527686884-5917-1-git-send-email-luwei.kang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: kevin.tian@intel.com, sstabellini@kernel.org, wei.liu2@citrix.com, jun.nakajima@intel.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, julien.grall@arm.com, jbeulich@suse.com, Luwei Kang List-Id: xen-devel@lists.xenproject.org QWRkIEludGVsIFByb2Nlc3NvciBUcmFjZSBNU1JzIHJlYWQvd3JpdGUgZW11bGF0aW9uLgpJZiBJ bnRlbCBQcm9jZXNzb3IgVHJhY2UgaXMgbm90IHN1cHBvcnRlZCBpbiBndWVzdCwKYWNjZXNzIG5v dCBzdXBwb3J0ZWQgTVNScyBvciBhY2Nlc3MgcmVzZXJ2ZWQgYml0cywKYSAjR1Agd2lsbCBiZSBp bmplY3RlZCB0byBndWVzdC4KClNpZ25lZC1vZmYtYnk6IEx1d2VpIEthbmcgPGx1d2VpLmthbmdA aW50ZWwuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9jcHUvaXB0LmMgICAgIHwgMTA4ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L2h2bS92 bXgvdm14LmMgfCAgMTggKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvaXB0LmggIHwgICAz ICsrCiAzIGZpbGVzIGNoYW5nZWQsIDEyOSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L2NwdS9pcHQuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvaXB0LmMKaW5kZXggOTc3YTNk Ny4uZGNiN2E4ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9pcHQuYworKysgYi94ZW4v YXJjaC94ODYvY3B1L2lwdC5jCkBAIC0zMyw2ICszMywxNCBAQAogCiAjZGVmaW5lIEJJVChucikg ICAgICAgICAgICAgICAgICgxVUwgPDwgKG5yKSkKIAorI2RlZmluZSBNU1JfSUEzMl9SVElUX1NU QVRVU19NQVNLICh+KFJUSVRfU1RBVFVTX0ZJTFRFUl9FTiB8IFwKKyAgICAgICAgICAgICAgIFJU SVRfU1RBVFVTX0NPTlRFWFRfRU4gfCBSVElUX1NUQVRVU19UUklHR0VSX0VOIHwgXAorICAgICAg ICAgICAgICAgUlRJVF9TVEFUVVNfRVJST1IgfCBSVElUX1NUQVRVU19TVE9QUEVEIHwgXAorICAg ICAgICAgICAgICAgUlRJVF9TVEFUVVNfQllURUNOVCkpCisKKyNkZWZpbmUgTVNSX0lBMzJfUlRJ VF9PVVRQVVRfQkFTRV9NQVNLKG1heHBoeWFkZHIpIFwKKyAgICAgICAgICAgICAgICh+KCgxVUwg PDwgKG1heHBoeWFkZHIpKSAtIDEpIHwgMHg3ZikKKwogLyogaXB0OiBGbGFnIHRvIGVuYWJsZSBJ bnRlbCBQcm9jZXNzb3IgVHJhY2UgKGRlZmF1bHQgb2ZmKS4gKi8KIHVuc2lnbmVkIGludCBfX3Jl YWRfbW9zdGx5IGlwdF9tb2RlID0gSVBUX01PREVfT0ZGOwogc3RhdGljIGludCBwYXJzZV9pcHRf cGFyYW1zKGNvbnN0IGNoYXIgKnN0cik7CkBAIC0xMDYsNiArMTE0LDEwNSBAQCBzdGF0aWMgaW50 IF9faW5pdCBwYXJzZV9pcHRfcGFyYW1zKGNvbnN0IGNoYXIgKnN0cikKICAgICByZXR1cm4gMDsK IH0KIAoraW50IGlwdF9kb19yZG1zcih1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCAqbXNyX2Nv bnRlbnQpCit7CisgICAgY29uc3Qgc3RydWN0IGlwdF9kZXNjICppcHRfZGVzYyA9IGN1cnJlbnQt PmFyY2guaHZtX3ZteC5pcHRfZGVzYzsKKyAgICBjb25zdCBzdHJ1Y3QgY3B1aWRfcG9saWN5ICpw ID0gY3VycmVudC0+ZG9tYWluLT5hcmNoLmNwdWlkOworICAgIHVuc2lnbmVkIGludCBpbmRleDsK KworICAgIGlmICggIWlwdF9kZXNjICkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBzd2l0Y2gg KCBtc3IgKQorICAgIHsKKyAgICBjYXNlIE1TUl9JQTMyX1JUSVRfQ1RMOgorICAgICAgICAqbXNy X2NvbnRlbnQgPSBpcHRfZGVzYy0+aXB0X2d1ZXN0LmN0bDsKKyAgICAgICAgYnJlYWs7CisgICAg Y2FzZSBNU1JfSUEzMl9SVElUX1NUQVRVUzoKKyAgICAgICAgKm1zcl9jb250ZW50ID0gaXB0X2Rl c2MtPmlwdF9ndWVzdC5zdGF0dXM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTVNSX0lBMzJf UlRJVF9PVVRQVVRfQkFTRToKKyAgICAgICAgaWYgKCAhaXB0X2NhcChwLT5pcHQucmF3LCBJUFRf Q0FQX3NpbmdsZV9yYW5nZV9vdXRwdXQpICYmCisgICAgICAgICAgICAgIWlwdF9jYXAocC0+aXB0 LnJhdywgSVBUX0NBUF90b3BhX291dHB1dCkgKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAg ICAgICptc3JfY29udGVudCA9IGlwdF9kZXNjLT5pcHRfZ3Vlc3Qub3V0cHV0X2Jhc2U7CisgICAg ICAgIGJyZWFrOworICAgIGNhc2UgTVNSX0lBMzJfUlRJVF9PVVRQVVRfTUFTSzoKKyAgICAgICAg aWYgKCAhaXB0X2NhcChwLT5pcHQucmF3LCBJUFRfQ0FQX3NpbmdsZV9yYW5nZV9vdXRwdXQpICYm CisgICAgICAgICAgICAgIWlwdF9jYXAocC0+aXB0LnJhdywgSVBUX0NBUF90b3BhX291dHB1dCkg KQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICptc3JfY29udGVudCA9IGlwdF9kZXNj LT5pcHRfZ3Vlc3Qub3V0cHV0X21hc2sgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUlRJVF9PVVRQVVRfTUFTS19ERUZBVUxUOworICAgICAgICBicmVhazsKKyAgICBjYXNl IE1TUl9JQTMyX1JUSVRfQ1IzX01BVENIOgorICAgICAgICBpZiAoICFpcHRfY2FwKHAtPmlwdC5y YXcsIElQVF9DQVBfY3IzX2ZpbHRlcikgKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAg ICptc3JfY29udGVudCA9IGlwdF9kZXNjLT5pcHRfZ3Vlc3QuY3IzX21hdGNoOworICAgICAgICBi cmVhazsKKyAgICBkZWZhdWx0OgorCWluZGV4ID0gbXNyIC0gTVNSX0lBMzJfUlRJVF9BRERSX0Eo MCk7CisgICAgICAgIGlmICggaW5kZXggPj0gaXB0X2NhcChwLT5pcHQucmF3LCBJUFRfQ0FQX2Fk ZHJfcmFuZ2UpICogMiApCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgKm1zcl9jb250 ZW50ID0gaXB0X2Rlc2MtPmlwdF9ndWVzdC5hZGRyW2luZGV4XTsKKyAgICB9CisKKyAgICByZXR1 cm4gMDsKK30KKworaW50IGlwdF9kb193cm1zcih1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCBt c3JfY29udGVudCkKK3sKKyAgICBzdHJ1Y3QgaXB0X2Rlc2MgKmlwdF9kZXNjID0gY3VycmVudC0+ YXJjaC5odm1fdm14LmlwdF9kZXNjOworICAgIGNvbnN0IHN0cnVjdCBjcHVpZF9wb2xpY3kgKnAg PSBjdXJyZW50LT5kb21haW4tPmFyY2guY3B1aWQ7CisgICAgdW5zaWduZWQgaW50IGluZGV4Owor CisgICAgaWYgKCAhaXB0X2Rlc2MgKQorICAgICAgICByZXR1cm4gMTsKKworICAgIHN3aXRjaCAo IG1zciApCisgICAgeworICAgIGNhc2UgTVNSX0lBMzJfUlRJVF9DVEw6CisgICAgICAgIGlwdF9k ZXNjLT5pcHRfZ3Vlc3QuY3RsID0gbXNyX2NvbnRlbnQ7CisgICAgICAgIF9fdm13cml0ZShHVUVT VF9JQTMyX1JUSVRfQ1RMLCBtc3JfY29udGVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug TVNSX0lBMzJfUlRJVF9TVEFUVVM6CisgICAgICAgIGlmICggKGlwdF9kZXNjLT5pcHRfZ3Vlc3Qu Y3RsICYgUlRJVF9DVExfVFJBQ0VFTikgfHwKKyAgICAgICAgICAgICAobXNyX2NvbnRlbnQgJiBN U1JfSUEzMl9SVElUX1NUQVRVU19NQVNLKSApCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAg ICAgaXB0X2Rlc2MtPmlwdF9ndWVzdC5zdGF0dXMgPSBtc3JfY29udGVudDsKKyAgICAgICAgYnJl YWs7CisgICAgY2FzZSBNU1JfSUEzMl9SVElUX09VVFBVVF9CQVNFOgorICAgICAgICBpZiAoIChp cHRfZGVzYy0+aXB0X2d1ZXN0LmN0bCAmIFJUSVRfQ1RMX1RSQUNFRU4pIHx8CisgICAgICAgICAg ICAgKG1zcl9jb250ZW50ICYKKyAgICAgICAgICAgICAgICAgTVNSX0lBMzJfUlRJVF9PVVRQVVRf QkFTRV9NQVNLKHAtPmV4dGQubWF4cGh5c2FkZHIpKSB8fAorICAgICAgICAgICAgICghaXB0X2Nh cChwLT5pcHQucmF3LCBJUFRfQ0FQX3NpbmdsZV9yYW5nZV9vdXRwdXQpICYmCisgICAgICAgICAg ICAgICFpcHRfY2FwKHAtPmlwdC5yYXcsIElQVF9DQVBfdG9wYV9vdXRwdXQpKSApCisgICAgICAg ICAgICByZXR1cm4gMTsKKyAgICAgICAgaXB0X2Rlc2MtPmlwdF9ndWVzdC5vdXRwdXRfYmFzZSA9 IG1zcl9jb250ZW50OworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1TUl9JQTMyX1JUSVRfT1VU UFVUX01BU0s6CisgICAgICAgIGlmICggKGlwdF9kZXNjLT5pcHRfZ3Vlc3QuY3RsICYgUlRJVF9D VExfVFJBQ0VFTikgfHwKKyAgICAgICAgICAgICAoIWlwdF9jYXAocC0+aXB0LnJhdywgSVBUX0NB UF9zaW5nbGVfcmFuZ2Vfb3V0cHV0KSAmJgorICAgICAgICAgICAgICAhaXB0X2NhcChwLT5pcHQu cmF3LCBJUFRfQ0FQX3RvcGFfb3V0cHV0KSkgKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAg ICAgIGlwdF9kZXNjLT5pcHRfZ3Vlc3Qub3V0cHV0X21hc2sgPSBtc3JfY29udGVudCB8CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJUSVRfT1VUUFVUX01BU0tfREVGQVVMVDsKKyAg ICAgICAgYnJlYWs7CisgICAgY2FzZSBNU1JfSUEzMl9SVElUX0NSM19NQVRDSDoKKyAgICAgICAg aWYgKCAoaXB0X2Rlc2MtPmlwdF9ndWVzdC5jdGwgJiBSVElUX0NUTF9UUkFDRUVOKSB8fAorICAg ICAgICAgICAgICFpcHRfY2FwKHAtPmlwdC5yYXcsIElQVF9DQVBfY3IzX2ZpbHRlcikgKQorICAg ICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGlwdF9kZXNjLT5pcHRfZ3Vlc3QuY3IzX21hdGNo ID0gbXNyX2NvbnRlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGlu ZGV4ID0gbXNyIC0gTVNSX0lBMzJfUlRJVF9BRERSX0EoMCk7CisgICAgICAgIGlmICggaW5kZXgg Pj0gaXB0X2NhcChwLT5pcHQucmF3LCBJUFRfQ0FQX2FkZHJfcmFuZ2UpICogMiApCisgICAgICAg ICAgICByZXR1cm4gMTsKKyAgICAgICAgaXB0X2Rlc2MtPmlwdF9ndWVzdC5hZGRyW2luZGV4XSA9 IG1zcl9jb250ZW50OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW5saW5l IHZvaWQgaXB0X2xvYWRfbXNyKGNvbnN0IHN0cnVjdCBpcHRfY3R4ICpjdHgsCiAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhZGRyX3JhbmdlKQogewpAQCAtMjA0LDMgKzMxMSw0 IEBAIHZvaWQgaXB0X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYpCiAgICAgICAgIHYtPmFyY2guaHZt X3ZteC5pcHRfZGVzYyA9IE5VTEw7CiAgICAgfQogfQorCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvaHZtL3ZteC92bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCmluZGV4IDA2MGFi NjUuLmZhMWNhMGMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCisrKyBi L3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCkBAIC0yODk4LDYgKzI4OTgsMTUgQEAgc3RhdGlj IGludCB2bXhfbXNyX3JlYWRfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3IsIHVpbnQ2NF90ICpt c3JfY29udGVudCkKICAgICAgICAgaWYgKCB2cG11X2RvX3JkbXNyKG1zciwgbXNyX2NvbnRlbnQp ICkKICAgICAgICAgICAgIGdvdG8gZ3BfZmF1bHQ7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug TVNSX0lBMzJfUlRJVF9DVEw6CisgICAgY2FzZSBNU1JfSUEzMl9SVElUX1NUQVRVUzoKKyAgICBj YXNlIE1TUl9JQTMyX1JUSVRfT1VUUFVUX0JBU0U6CisgICAgY2FzZSBNU1JfSUEzMl9SVElUX09V VFBVVF9NQVNLOgorICAgIGNhc2UgTVNSX0lBMzJfUlRJVF9DUjNfTUFUQ0g6CisgICAgY2FzZSBN U1JfSUEzMl9SVElUX0FERFJfQSgwKSAuLi4gTVNSX0lBMzJfUlRJVF9BRERSX0IoMyk6CisgICAg ICAgIGlmICggaXB0X2RvX3JkbXNyKG1zciwgbXNyX2NvbnRlbnQpICkKKyAgICAgICAgICAgIGdv dG8gZ3BfZmF1bHQ7CisgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgaWYg KCBwYXNzaXZlX2RvbWFpbl9kb19yZG1zcihtc3IsIG1zcl9jb250ZW50KSApCkBAIC0zMTQ4LDYg KzMxNTcsMTUgQEAgc3RhdGljIGludCB2bXhfbXNyX3dyaXRlX2ludGVyY2VwdCh1bnNpZ25lZCBp bnQgbXNyLCB1aW50NjRfdCBtc3JfY29udGVudCkKICAgICAgICAgIGlmICggdnBtdV9kb193cm1z cihtc3IsIG1zcl9jb250ZW50LCAwKSApCiAgICAgICAgICAgICBnb3RvIGdwX2ZhdWx0OwogICAg ICAgICBicmVhazsKKyAgICBjYXNlIE1TUl9JQTMyX1JUSVRfQ1RMOgorICAgIGNhc2UgTVNSX0lB MzJfUlRJVF9TVEFUVVM6CisgICAgY2FzZSBNU1JfSUEzMl9SVElUX09VVFBVVF9CQVNFOgorICAg IGNhc2UgTVNSX0lBMzJfUlRJVF9PVVRQVVRfTUFTSzoKKyAgICBjYXNlIE1TUl9JQTMyX1JUSVRf Q1IzX01BVENIOgorICAgIGNhc2UgTVNSX0lBMzJfUlRJVF9BRERSX0EoMCkgLi4uIE1TUl9JQTMy X1JUSVRfQUREUl9CKDMpOgorICAgICAgICBpZiAoIGlwdF9kb193cm1zcihtc3IsIG1zcl9jb250 ZW50KSApCisgICAgICAgICAgICBnb3RvIGdwX2ZhdWx0OworICAgICAgICBicmVhazsKIAogICAg IGRlZmF1bHQ6CiAgICAgICAgIGlmICggcGFzc2l2ZV9kb21haW5fZG9fd3Jtc3IobXNyLCBtc3Jf Y29udGVudCkgKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9pcHQuaCBiL3hlbi9p bmNsdWRlL2FzbS14ODYvaXB0LmgKaW5kZXggNDIyZjQ2YS4uOTYxZGUwYiAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9pcHQuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2lwdC5o CkBAIC02NCw2ICs2NCw5IEBAIHN0cnVjdCBpcHRfZGVzYyB7CiAgICAgc3RydWN0IGlwdF9jdHgg aXB0X2d1ZXN0OwogfTsKIAorZXh0ZXJuIGludCBpcHRfZG9fcmRtc3IodW5zaWduZWQgaW50IG1z ciwgdWludDY0X3QgKnBkYXRhKTsKK2V4dGVybiBpbnQgaXB0X2RvX3dybXNyKHVuc2lnbmVkIGlu dCBtc3IsIHVpbnQ2NF90IGRhdGEpOworCiBleHRlcm4gdm9pZCBpcHRfZ3Vlc3RfZW50ZXIoc3Ry dWN0IHZjcHUgKnYpOwogZXh0ZXJuIHZvaWQgaXB0X2d1ZXN0X2V4aXQoc3RydWN0IHZjcHUgKnYp OwogCi0tIAoxLjguMy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVj dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1k ZXZlbA==