From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [RFC PATCH V2 12/26] X86/vvtd: Add MMIO handler for VVTD Date: Thu, 18 May 2017 01:34:42 -0400 Message-ID: <1495085696-10819-13-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 , kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, jbeulich@suse.com, Chao Gao List-Id: xen-devel@lists.xenproject.org RnJvbTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KClRoaXMgcGF0Y2ggYWRkcyBWVlRE IE1NSU8gaGFuZGxlciB0byBkZWFsIHdpdGggTU1JTyBhY2Nlc3MuCgpTaWduZWQtb2ZmLWJ5OiBD aGFvIEdhbyA8Y2hhby5nYW9AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBMYW4gVGlhbnl1IDx0 aWFueXUubGFuQGludGVsLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3Z2dGQuYyB8IDEyNyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBj aGFuZ2VkLCAxMjcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0v dnZ0ZC5jIGIveGVuL2FyY2gveDg2L2h2bS92dnRkLmMKaW5kZXggZTM2NGYyYi4uYjBhMjNlZSAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92dnRkLmMKKysrIGIveGVuL2FyY2gveDg2L2h2 bS92dnRkLmMKQEAgLTUwLDYgKzUwLDM4IEBAIHN0cnVjdCB2dnRkIHsKICAgICBzdHJ1Y3QgcGFn ZV9pbmZvICpyZWdzX3BhZ2U7CiB9OwogCisjZGVmaW5lIF9fREVCVUdfVlZURF9fCisjaWZkZWYg X19ERUJVR19WVlREX18KK2V4dGVybiB1bnNpZ25lZCBpbnQgdnZ0ZF9kZWJ1Z19sZXZlbDsKKyNk ZWZpbmUgVlZURF9EQkdfSU5GTyAgICAgMQorI2RlZmluZSBWVlREX0RCR19UUkFOUyAgICAoMTw8 MSkKKyNkZWZpbmUgVlZURF9EQkdfUlcgICAgICAgKDE8PDIpCisjZGVmaW5lIFZWVERfREJHX0ZB VUxUICAgICgxPDwzKQorI2RlZmluZSBWVlREX0RCR19FT0kgICAgICAoMTw8NCkKKyNkZWZpbmUg VlZURF9ERUJVRyhsdmwsIF9mLCBfYS4uLikgZG8geyBcCisgICAgaWYgKCB2dnRkX2RlYnVnX2xl dmVsICYgbHZsICkgXAorICAgIHByaW50aygiVlZURCAlczoiIF9mICJcbiIsIF9fZnVuY19fLCAj IyBfYSk7ICAgIFwKK30gd2hpbGUoMCkKKyNlbHNlCisjZGVmaW5lIFZWVERfREVCVUcoZm10Li4u KSBkbyB7fSB3aGlsZSgwKQorI2VuZGlmCisKK3Vuc2lnbmVkIGludCB2dnRkX2RlYnVnX2xldmVs IF9fcmVhZF9tb3N0bHk7CitpbnRlZ2VyX3BhcmFtKCJ2dnRkX2RlYnVnIiwgdnZ0ZF9kZWJ1Z19s ZXZlbCk7CisKK3N0cnVjdCB2dnRkICpkb21haW5fdnZ0ZChzdHJ1Y3QgZG9tYWluICpkKQorewor ICAgIHN0cnVjdCB2aW9tbXVfaW5mbyAqaW5mbyA9ICZkLT52aW9tbXU7CisKKyAgICBCVUlMRF9C VUdfT04oTlJfVklPTU1VX1BFUl9ET01BSU4gIT0gMSk7CisgICAgcmV0dXJuIChpbmZvICYmIGlu Zm8tPnZpb21tdVswXSkgPyBpbmZvLT52aW9tbXVbMF0tPnByaXYgOiBOVUxMOworfQorCitzdGF0 aWMgaW5saW5lIHN0cnVjdCB2dnRkICp2Y3B1X3Z2dGQoc3RydWN0IHZjcHUgKnYpCit7CisgICAg cmV0dXJuIGRvbWFpbl92dnRkKHYtPmRvbWFpbik7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCB2 dnRkX3NldF9yZWcoc3RydWN0IHZ2dGQgKnZ0ZCwgdWludDMyX3QgcmVnLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSkKIHsKQEAgLTc2LDYgKzEwOCwxMDAg QEAgc3RhdGljIGlubGluZSB1aW50OF90IHZ2dGRfZ2V0X3JlZ19ieXRlKHN0cnVjdCB2dnRkICp2 dGQsIHVpbnQzMl90IHJlZykKICAgICB2dnRkX3NldF9yZWcodnZ0ZCwgKHJlZykgKyA0LCAodmFs KSA+PiAzMik7IFwKIH0gd2hpbGUoMCkKIAorc3RhdGljIGludCB2dnRkX3JhbmdlKHN0cnVjdCB2 Y3B1ICp2LCB1bnNpZ25lZCBsb25nIGFkZHIpCit7CisgICAgc3RydWN0IHZ2dGQgKnZ2dGQgPSB2 Y3B1X3Z2dGQodik7CisKKyAgICBpZiAoIHZ2dGQgKQorICAgICAgICByZXR1cm4gKGFkZHIgPj0g dnZ0ZC0+YmFzZV9hZGRyKSAmJgorICAgICAgICAgICAgICAgKGFkZHIgPCB2dnRkLT5iYXNlX2Fk ZHIgKyBQQUdFX1NJWkUpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZ2dGRfcmVh ZChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBhZGRyLAorICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyAqcHZhbCkKK3sKKyAgICBzdHJ1Y3Qg dnZ0ZCAqdnZ0ZCA9IHZjcHVfdnZ0ZCh2KTsKKyAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gYWRk ciAtIHZ2dGQtPmJhc2VfYWRkcjsKKyAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0X2FsaWduZWQgPSBv ZmZzZXQgJiB+MzsKKworICAgIGlmICggIXB2YWwgKQorICAgICAgICByZXR1cm4gWDg2RU1VTF9P S0FZOworCisgICAgVlZURF9ERUJVRyhWVlREX0RCR19SVywgIlJFQUQgSU5GTzogb2Zmc2V0ICV4 IGxlbiAlZC4iLCBvZmZzZXQsIGxlbik7CisKKyAgICBpZiAoIG9mZnNldCAmIDMgKQorICAgIHsK KyAgICAgICAgVlZURF9ERUJVRyhWVlREX0RCR19SVywgIkFsaWdubWVudCBpcyBub3QgY2Fub25p Y2FsLiIpOworICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOworICAgIH0KKworICAgIHN3aXRj aCggbGVuICkKKyAgICB7CisgICAgY2FzZSA0OgorICAgICAgICAqcHZhbCA9IHZ2dGRfZ2V0X3Jl Zyh2dnRkLCBvZmZzZXRfYWxpZ25lZCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSA4Ogor ICAgICAgICB2dnRkX2dldF9yZWdfcXVhZCh2dnRkLCBvZmZzZXRfYWxpZ25lZCwgKnB2YWwpOwor ICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKwor ICAgIHJldHVybiBYODZFTVVMX09LQVk7Cit9CisKK3N0YXRpYyBpbnQgdnZ0ZF93cml0ZShzdHJ1 Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBsZW4sIHVuc2lnbmVkIGxvbmcgdmFsKQoreworICAgIHN0cnVjdCB2dnRkICp2 dnRkID0gdmNwdV92dnRkKHYpOworICAgIHVuc2lnbmVkIGludCBvZmZzZXQgPSBhZGRyIC0gdnZ0 ZC0+YmFzZV9hZGRyOworICAgIHVuc2lnbmVkIGludCBvZmZzZXRfYWxpZ25lZCA9IG9mZnNldCAm IH4weDM7CisgICAgaW50IHJldDsKKworICAgIFZWVERfREVCVUcoVlZURF9EQkdfUlcsICJXUklU RSBJTkZPOiBvZmZzZXQgJXggbGVuICVkIHZhbCAlbHguIiwKKyAgICAgICAgICAgICAgIG9mZnNl dCwgbGVuLCB2YWwpOworCisgICAgaWYgKCAob2Zmc2V0ICYgMykgfHwgKChsZW4gIT0gNCkgJiYg KGxlbiAhPSA4KSkgKQorICAgIHsKKyAgICAgICAgVlZURF9ERUJVRyhWVlREX0RCR19SVywgIkFs aWdubWVudCBvciBsZW5ndGggaXMgbm90IGNhbm9uaWNhbCIpOworICAgICAgICByZXR1cm4gWDg2 RU1VTF9VTkhBTkRMRUFCTEU7CisgICAgfQorCisgICAgcmV0ID0gWDg2RU1VTF9PS0FZOworICAg IGlmICggbGVuID09IDQgKQorICAgIHsKKyAgICAgICAgc3dpdGNoICggb2Zmc2V0X2FsaWduZWQg KQorICAgICAgICB7CisgICAgICAgIGNhc2UgRE1BUl9JRURBVEFfUkVHOgorICAgICAgICBjYXNl IERNQVJfSUVBRERSX1JFRzoKKyAgICAgICAgY2FzZSBETUFSX0lFVUFERFJfUkVHOgorICAgICAg ICBjYXNlIERNQVJfRkVEQVRBX1JFRzoKKyAgICAgICAgY2FzZSBETUFSX0ZFQUREUl9SRUc6Cisg ICAgICAgIGNhc2UgRE1BUl9GRVVBRERSX1JFRzoKKyAgICAgICAgICAgIHZ2dGRfc2V0X3JlZyh2 dnRkLCBvZmZzZXRfYWxpZ25lZCwgdmFsKTsKKyAgICAgICAgICAgIHJldCA9IFg4NkVNVUxfT0tB WTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy ZXQgPSBYODZFTVVMX1VOSEFORExFQUJMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9 CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0ID0gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CisK KyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGh2bV9tbWlvX29wcyB2 dnRkX21taW9fb3BzID0geworICAgIC5jaGVjayA9IHZ2dGRfcmFuZ2UsCisgICAgLnJlYWQgPSB2 dnRkX3JlYWQsCisgICAgLndyaXRlID0gdnZ0ZF93cml0ZQorfTsKKwogc3RhdGljIHZvaWQgdnZ0 ZF9yZXNldChzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwgdWludDY0X3QgY2FwYWJpbGl0eSkKIHsKICAgICB1 aW50NjRfdCBjYXAsIGVjYXA7CkBAIC0xNDAsNiArMjY2LDcgQEAgc3RhdGljIGludCB2dnRkX2Ny ZWF0ZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmlvbW11ICp2aW9tbXUpCiAgICAgdnZ0ZC0+ bGVuZ3RoID0gdmlvbW11LT5sZW5ndGg7CiAgICAgdnZ0ZC0+ZG9tYWluID0gZDsKICAgICB2dnRk LT5zdGF0dXMgPSAwOworICAgIHJlZ2lzdGVyX21taW9faGFuZGxlcihkLCAmdnZ0ZF9tbWlvX29w cyk7CiAgICAgcmV0dXJuIDA7CiAKIG91dDI6Ci0tIAoxLjguMy4xCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==