From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [PATCH V2 12/25] x86/vvtd: Add MMIO handler for VVTD Date: Wed, 9 Aug 2017 16:34:13 -0400 Message-ID: <1502310866-10450-13-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, wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, julien.grall@arm.com, jbeulich@suse.com, Chao Gao List-Id: xen-devel@lists.xenproject.org RnJvbTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KClRoaXMgcGF0Y2ggYWRkcyBWVlRE IE1NSU8gaGFuZGxlciB0byBkZWFsIHdpdGggTU1JTyBhY2Nlc3MuCgpTaWduZWQtb2ZmLWJ5OiBD aGFvIEdhbyA8Y2hhby5nYW9AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBMYW4gVGlhbnl1IDx0 aWFueXUubGFuQGludGVsLmNvbT4KLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvdnZ0 ZC5jIHwgMTE0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3Z0ZC92dnRkLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvdnZ0ZC5jCmlu ZGV4IDM1M2ZhZmUuLjk0NjgwZTYgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L3Z0ZC92dnRkLmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Z2dGQuYwpAQCAt NTAsNiArNTAsMzggQEAgc3RydWN0IHZ2dGQgewogICAgIHN0cnVjdCBwYWdlX2luZm8gKnJlZ3Nf cGFnZTsKIH07CiAKKyNkZWZpbmUgX19ERUJVR19WVlREX18KKyNpZmRlZiBfX0RFQlVHX1ZWVERf XworZXh0ZXJuIHVuc2lnbmVkIGludCB2dnRkX2RlYnVnX2xldmVsOworI2RlZmluZSBWVlREX0RC R19JTkZPICAgICAxCisjZGVmaW5lIFZWVERfREJHX1RSQU5TICAgICgxPDwxKQorI2RlZmluZSBW VlREX0RCR19SVyAgICAgICAoMTw8MikKKyNkZWZpbmUgVlZURF9EQkdfRkFVTFQgICAgKDE8PDMp CisjZGVmaW5lIFZWVERfREJHX0VPSSAgICAgICgxPDw0KQorI2RlZmluZSBWVlREX0RFQlVHKGx2 bCwgX2YsIF9hLi4uKSBkbyB7IFwKKyAgICBpZiAoIHZ2dGRfZGVidWdfbGV2ZWwgJiBsdmwgKSBc CisgICAgICAgIHByaW50aygiVlZURCAlczoiIF9mICJcbiIsIF9fZnVuY19fLCAjIyBfYSk7ICAg IFwKK30gd2hpbGUoMCkKKyNlbHNlCisjZGVmaW5lIFZWVERfREVCVUcoZm10Li4uKSBkbyB7fSB3 aGlsZSgwKQorI2VuZGlmCisKK3Vuc2lnbmVkIGludCB2dnRkX2RlYnVnX2xldmVsIF9fcmVhZF9t b3N0bHk7CitpbnRlZ2VyX3BhcmFtKCJ2dnRkX2RlYnVnIiwgdnZ0ZF9kZWJ1Z19sZXZlbCk7CisK K3N0cnVjdCB2dnRkICpkb21haW5fdnZ0ZChzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIHN0cnVj dCB2aW9tbXVfaW5mbyAqaW5mbyA9ICZkLT52aW9tbXU7CisKKyAgICBCVUlMRF9CVUdfT04oTlJf VklPTU1VX1BFUl9ET01BSU4gIT0gMSk7CisgICAgcmV0dXJuIChpbmZvICYmIGluZm8tPnZpb21t dVswXSkgPyBpbmZvLT52aW9tbXVbMF0tPnByaXYgOiBOVUxMOworfQorCitzdGF0aWMgaW5saW5l IHN0cnVjdCB2dnRkICp2Y3B1X3Z2dGQoc3RydWN0IHZjcHUgKnYpCit7CisgICAgcmV0dXJuIGRv bWFpbl92dnRkKHYtPmRvbWFpbik7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCB2dnRkX3NldF9y ZWcoc3RydWN0IHZ2dGQgKnZ0ZCwgdWludDMyX3QgcmVnLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSkKIHsKQEAgLTc2LDYgKzEwOCw4NyBAQCBzdGF0aWMg aW5saW5lIHVpbnQ4X3QgdnZ0ZF9nZXRfcmVnX2J5dGUoc3RydWN0IHZ2dGQgKnZ0ZCwgdWludDMy X3QgcmVnKQogICAgIHZ2dGRfc2V0X3JlZyh2dnRkLCAocmVnKSArIDQsICh2YWwpID4+IDMyKTsg XAogfSB3aGlsZSgwKQogCitzdGF0aWMgaW50IHZ2dGRfcmFuZ2Uoc3RydWN0IHZjcHUgKnYsIHVu c2lnbmVkIGxvbmcgYWRkcikKK3sKKyAgICBzdHJ1Y3QgdnZ0ZCAqdnZ0ZCA9IHZjcHVfdnZ0ZCh2 KTsKKworICAgIGlmICggdnZ0ZCApCisgICAgICAgIHJldHVybiAoYWRkciA+PSB2dnRkLT5iYXNl X2FkZHIpICYmCisgICAgICAgICAgICAgICAoYWRkciA8IHZ2dGQtPmJhc2VfYWRkciArIFBBR0Vf U0laRSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdnZ0ZF9yZWFkKHN0cnVjdCB2 Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgbGVuLCB1bnNpZ25lZCBsb25nICpwdmFsKQoreworICAgIHN0cnVjdCB2dnRkICp2dnRk ID0gdmNwdV92dnRkKHYpOworICAgIHVuc2lnbmVkIGludCBvZmZzZXQgPSBhZGRyIC0gdnZ0ZC0+ YmFzZV9hZGRyOworICAgIHVuc2lnbmVkIGludCBvZmZzZXRfYWxpZ25lZCA9IG9mZnNldCAmIH4z OworCisgICAgVlZURF9ERUJVRyhWVlREX0RCR19SVywgIlJFQUQgSU5GTzogb2Zmc2V0ICV4IGxl biAlZC4iLCBvZmZzZXQsIGxlbik7CisKKyAgICBpZiAoICFwdmFsICkKKyAgICAgICAgcmV0dXJu IFg4NkVNVUxfVU5IQU5ETEVBQkxFOworCisgICAgaWYgKCAob2Zmc2V0ICYgMykgfHwgKChsZW4g IT0gNCkgJiYgKGxlbiAhPSA4KSkgKQorICAgIHsKKyAgICAgICAgVlZURF9ERUJVRyhWVlREX0RC R19SVywgIkFsaWdubWVudCBvciBsZW5ndGggaXMgbm90IGNhbm9uaWNhbCIpOworICAgICAgICBy ZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CisgICAgfQorCisgICAgaWYgKCBsZW4gPT0gNCAp CisgICAgICAgICpwdmFsID0gdnZ0ZF9nZXRfcmVnKHZ2dGQsIG9mZnNldF9hbGlnbmVkKTsKKyAg ICBlbHNlCisgICAgICAgIHZ2dGRfZ2V0X3JlZ19xdWFkKHZ2dGQsIG9mZnNldF9hbGlnbmVkLCAq cHZhbCk7CisgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKK30KKworc3RhdGljIGludCB2dnRkX3dy aXRlKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIsCisgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwpCit7CisgICAgc3RydWN0 IHZ2dGQgKnZ2dGQgPSB2Y3B1X3Z2dGQodik7CisgICAgdW5zaWduZWQgaW50IG9mZnNldCA9IGFk ZHIgLSB2dnRkLT5iYXNlX2FkZHI7CisgICAgdW5zaWduZWQgaW50IG9mZnNldF9hbGlnbmVkID0g b2Zmc2V0ICYgfjB4MzsKKyAgICBpbnQgcmV0OworCisgICAgVlZURF9ERUJVRyhWVlREX0RCR19S VywgIldSSVRFIElORk86IG9mZnNldCAleCBsZW4gJWQgdmFsICVseC4iLAorICAgICAgICAgICAg ICAgb2Zmc2V0LCBsZW4sIHZhbCk7CisKKyAgICBpZiAoIChvZmZzZXQgJiAzKSB8fCAoKGxlbiAh PSA0KSAmJiAobGVuICE9IDgpKSApCisgICAgeworICAgICAgICBWVlREX0RFQlVHKFZWVERfREJH X1JXLCAiQWxpZ25tZW50IG9yIGxlbmd0aCBpcyBub3QgY2Fub25pY2FsIik7CisgICAgICAgIHJl dHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKKyAgICB9CisKKyAgICByZXQgPSBYODZFTVVMX1VO SEFORExFQUJMRTsKKyAgICBpZiAoIGxlbiA9PSA0ICkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo IG9mZnNldF9hbGlnbmVkICkKKyAgICAgICAgeworICAgICAgICBjYXNlIERNQVJfSUVEQVRBX1JF RzoKKyAgICAgICAgY2FzZSBETUFSX0lFQUREUl9SRUc6CisgICAgICAgIGNhc2UgRE1BUl9JRVVB RERSX1JFRzoKKyAgICAgICAgY2FzZSBETUFSX0ZFREFUQV9SRUc6CisgICAgICAgIGNhc2UgRE1B Ul9GRUFERFJfUkVHOgorICAgICAgICBjYXNlIERNQVJfRkVVQUREUl9SRUc6CisgICAgICAgICAg ICB2dnRkX3NldF9yZWcodnZ0ZCwgb2Zmc2V0X2FsaWduZWQsIHZhbCk7CisgICAgICAgICAgICBy ZXQgPSBYODZFTVVMX09LQVk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0 OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmV0 OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGh2bV9tbWlvX29wcyB2dnRkX21taW9fb3BzID0g eworICAgIC5jaGVjayA9IHZ2dGRfcmFuZ2UsCisgICAgLnJlYWQgPSB2dnRkX3JlYWQsCisgICAg LndyaXRlID0gdnZ0ZF93cml0ZQorfTsKKwogc3RhdGljIHZvaWQgdnZ0ZF9yZXNldChzdHJ1Y3Qg dnZ0ZCAqdnZ0ZCwgdWludDY0X3QgY2FwYWJpbGl0eSkKIHsKICAgICB1aW50NjRfdCBjYXAgPSBE TUFfQ0FQX05GUiB8IERNQV9DQVBfU0xMUFMgfCBETUFfQ0FQX0ZSTyB8CkBAIC0xMjIsNiArMjM1 LDcgQEAgc3RhdGljIGludCB2dnRkX2NyZWF0ZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qgdmlv bW11ICp2aW9tbXUpCiAgICAgdnZ0ZC0+bGVuZ3RoID0gdmlvbW11LT5sZW5ndGg7CiAgICAgdnZ0 ZC0+ZG9tYWluID0gZDsKICAgICB2dnRkLT5zdGF0dXMgPSBWSU9NTVVfU1RBVFVTX0RFRkFVTFQ7 CisgICAgcmVnaXN0ZXJfbW1pb19oYW5kbGVyKGQsICZ2dnRkX21taW9fb3BzKTsKICAgICByZXR1 cm4gMDsKIAogIG91dDI6Ci0tIAoxLjguMy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==