From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lan Tianyu Subject: [RFC PATCH V2 22/26] x86/vmsi: Hook delivering remapping format msi to guest Date: Thu, 18 May 2017 01:34:52 -0400 Message-ID: <1495085696-10819-23-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 RnJvbTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KCkluIHR3byBzaXR1YXRpb25zLCBo eXBlcnZpc29yIGRlbGl2ZXJzIGEgbXNpIHRvIGEgaHZtIGd1ZXN0LiBPbmUgaXMKd2hlbiBxZW11 IHNlbmRzIGEgcmVxdWVzdCB0byBoeXBlcnZpc29yIHRocm91Z2ggWEVOX0RNT1BfaW5qZWN0X21z aS4KVGhlIG90aGVyIGlzIHdoZW4gYSBwaHlzaWNhbCBpbnRlcnJ1cHQgYXJyaXZlcyBhbmQgaXQg aGFzIGJlZW4gYm91bmQKdG8gYSBndWVzdCBtc2kuCgpGb3IgdGhlIGZvcm1lciwgdGhlIG1zaSBp cyByb3V0ZWQgdG8gY29tbW9uIHZJT01NVSBsYXllciBpZiBpdCBpcyBpbgpyZW1hcHBpbmcgZm9y bWF0LiBGb3IgdGhlIGxhdHRlciwgaWYgdGhlIHB0IGlycSBpcyBib3VuZCB0byBhIGd1ZXN0CnJl bWFwcGluZyBtc2ksIGEgbmV3IHJlbWFwcGluZyBtc2kgaXMgY29uc3RydWN0ZWQgYmFzZWQgb24g dGhlIGJpbmRpbmcKaW5mb3JtYXRpb24gYW5kIHJvdXRlZCB0byBjb21tb24gdklPTU1VIGxheWVy LgoKU2lnbmVkLW9mZi1ieTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4KU2lnbmVkLW9m Zi1ieTogTGFuIFRpYW55dSA8dGlhbnl1LmxhbkBpbnRlbC5jb20+Ci0tLQogeGVuL2FyY2gveDg2 L2h2bS9pcnEuYyAgICAgICB8IDExICsrKysrKysrKysKIHhlbi9hcmNoL3g4Ni9odm0vdm1zaS5j ICAgICAgfCAxNCArKysrKysrKysrLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvLmMgfCA1 MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogeGVuL2luY2x1 ZGUvYXNtLXg4Ni9tc2kuaCAgICB8ICAzICsrKwogNCBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRp b25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2ly cS5jIGIveGVuL2FyY2gveDg2L2h2bS9pcnEuYwppbmRleCA4NjI1NTg0Li5hYmUyZjc3IDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lycS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaXJx LmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxhc20vaHZtL2RvbWFpbi5oPgogI2luY2x1 ZGUgPGFzbS9odm0vc3VwcG9ydC5oPgogI2luY2x1ZGUgPGFzbS9tc2kuaD4KKyNpbmNsdWRlIDxh c20vdmlvbW11Lmg+CiAKIC8qIE11c3QgYmUgY2FsbGVkIHdpdGggaHZtX2RvbWFpbi0+aXJxX2xv Y2sgaG9sZCAqLwogc3RhdGljIHZvaWQgYXNzZXJ0X2dzaShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBpb2FwaWNfZ3NpKQpAQCAtMjk4LDYgKzI5OSwxNiBAQCBpbnQgaHZtX2luamVjdF9tc2ko c3RydWN0IGRvbWFpbiAqZCwgdWludDY0X3QgYWRkciwgdWludDMyX3QgZGF0YSkKICAgICAgICAg Pj4gTVNJX0RBVEFfVFJJR0dFUl9TSElGVDsKICAgICB1aW50OF90IHZlY3RvciA9IGRhdGEgJiBN U0lfREFUQV9WRUNUT1JfTUFTSzsKIAorICAgIGlmICggYWRkciAmIE1TSV9BRERSX0lOVEVGT1JN QVRfTUFTSyApCisgICAgeworICAgICAgICBzdHJ1Y3QgaXJxX3JlbWFwcGluZ19yZXF1ZXN0IHJl cXVlc3Q7CisKKyAgICAgICAgaXJxX3JlcXVlc3RfbXNpX2ZpbGwoJnJlcXVlc3QsIDAsIGFkZHIs IGRhdGEpOworICAgICAgICAvKiBDdXJyZW50bHksIG9ubHkgdmlvbW11IDAgaXMgc3VwcG9ydGVk ICovCisgICAgICAgIHZpb21tdV9oYW5kbGVfaXJxX3JlcXVlc3QoZCwgMCwgJnJlcXVlc3QpOwor ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoICF2ZWN0b3IgKQogICAgIHsKICAg ICAgICAgaW50IHBpcnEgPSAoKGFkZHIgPj4gMzIpICYgMHhmZmZmZmYwMCkgfCBkZXN0OwpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXNpLmMgYi94ZW4vYXJjaC94ODYvaHZtL3Ztc2ku YwppbmRleCBjNGVjMGFkLi43NWNlYjE5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3Zt c2kuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3Ztc2kuYwpAQCAtMTE0LDkgKzExNCwxOSBAQCB2 b2lkIHZtc2lfZGVsaXZlcl9waXJxKHN0cnVjdCBkb21haW4gKmQsIGNvbnN0IHN0cnVjdCBodm1f cGlycV9kcGNpICpwaXJxX2RwY2kpCiAgICAgICAgICAgICAgICAgInZlY3Rvcj0leCB0cmlnX21v ZGU9JXhcbiIsCiAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdF9tb2RlLCBkZWxpdmVyeV9tb2Rl LCB2ZWN0b3IsIHRyaWdfbW9kZSk7CiAKLSAgICBBU1NFUlQocGlycV9kcGNpLT5mbGFncyAmIEhW TV9JUlFfRFBDSV9HVUVTVF9NU0kpOworICAgIEFTU0VSVChwaXJxX2RwY2ktPmZsYWdzICYgKEhW TV9JUlFfRFBDSV9HVUVTVF9NU0kgfCBIVk1fSVJRX0RQQ0lfR1VFU1RfTVNJX0lSKSk7CisgICAg aWYgKCBwaXJxX2RwY2ktPmZsYWdzICYgSFZNX0lSUV9EUENJX0dVRVNUX01TSV9JUiApCisgICAg eworICAgICAgICBzdHJ1Y3QgaXJxX3JlbWFwcGluZ19yZXF1ZXN0IHJlcXVlc3Q7CiAKLSAgICB2 bXNpX2RlbGl2ZXIoZCwgdmVjdG9yLCBkZXN0LCBkZXN0X21vZGUsIGRlbGl2ZXJ5X21vZGUsIHRy aWdfbW9kZSk7CisgICAgICAgIGlycV9yZXF1ZXN0X21zaV9maWxsKCZyZXF1ZXN0LCBwaXJxX2Rw Y2ktPmdtc2kuaW50cmVtYXAuc291cmNlX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwaXJxX2RwY2ktPmdtc2kuaW50cmVtYXAuYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGlycV9kcGNpLT5nbXNpLmludHJlbWFwLmRhdGEpOworICAgICAgICAvKiBDdXJyZW50 bHksIG9ubHkgdmlvbW11IDAgaXMgc3VwcG9ydGVkICovCisgICAgICAgIHZpb21tdV9oYW5kbGVf aXJxX3JlcXVlc3QoZCwgMCwgJnJlcXVlc3QpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHZt c2lfZGVsaXZlcihkLCB2ZWN0b3IsIGRlc3QsIGRlc3RfbW9kZSwgZGVsaXZlcnlfbW9kZSwgdHJp Z19tb2RlKTsKIH0KIAogLyogUmV0dXJuIHZhbHVlLCAtMSA6IG11bHRpLWRlc3RzLCBub24tbmVn YXRpdmUgdmFsdWU6IGRlc3RfdmNwdV9pZCAqLwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvaW8uYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvLmMKaW5kZXggYjRiNmU5 Yy4uNTcyZTYwZCAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW8uYworKysg Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pby5jCkBAIC0xMzksNyArMTM5LDkgQEAgc3RhdGlj IHZvaWQgcHRfcGlycV9zb2Z0aXJxX3Jlc2V0KHN0cnVjdCBodm1fcGlycV9kcGNpICpwaXJxX2Rw Y2kpCiAKIGJvb2xfdCBwdF9pcnFfbmVlZF90aW1lcih1aW50MzJfdCBmbGFncykKIHsKLSAgICBy ZXR1cm4gIShmbGFncyAmIChIVk1fSVJRX0RQQ0lfR1VFU1RfTVNJIHwgSFZNX0lSUV9EUENJX1RS QU5TTEFURSkpOworICAgIHJldHVybiAhKGZsYWdzICYgKEhWTV9JUlFfRFBDSV9HVUVTVF9NU0lf SVIgfAorICAgICAgICAgICAgICAgICAgICAgIEhWTV9JUlFfRFBDSV9HVUVTVF9NU0kgfAorICAg ICAgICAgICAgICAgICAgICAgIEhWTV9JUlFfRFBDSV9UUkFOU0xBVEUpKTsKIH0KIAogc3RhdGlj IGludCBwdF9pcnFfZ3Vlc3RfZW9pKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBodm1fcGlycV9k cGNpICpwaXJxX2RwY2ksCkBAIC02NTksNyArNjYxLDggQEAgaW50IHB0X2lycV9kZXN0cm95X2Jp bmQoCiAgICAgcGlycSA9IHBpcnFfaW5mbyhkLCBtYWNoaW5lX2dzaSk7CiAgICAgcGlycV9kcGNp ID0gcGlycV9kcGNpKHBpcnEpOwogCi0gICAgaWYgKCBwdF9pcnFfYmluZC0+aXJxX3R5cGUgIT0g UFRfSVJRX1RZUEVfTVNJICkKKyAgICBpZiAoIChwdF9pcnFfYmluZC0+aXJxX3R5cGUgIT0gUFRf SVJRX1RZUEVfTVNJX0lSKSAmJgorICAgICAgICAgKHB0X2lycV9iaW5kLT5pcnFfdHlwZSAhPSBQ VF9JUlFfVFlQRV9NU0kpICkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGludCBidXMgPSBwdF9p cnFfYmluZC0+dS5wY2kuYnVzOwogICAgICAgICB1bnNpZ25lZCBpbnQgZGV2aWNlID0gcHRfaXJx X2JpbmQtPnUucGNpLmRldmljZTsKQEAgLTgyNCwyMCArODI3LDQxIEBAIHN0YXRpYyBpbnQgX2h2 bV9kcGNpX21zaV9lb2koc3RydWN0IGRvbWFpbiAqZCwKIHsKICAgICBpbnQgdmVjdG9yID0gKGxv bmcpYXJnOwogCi0gICAgaWYgKCAocGlycV9kcGNpLT5mbGFncyAmIEhWTV9JUlFfRFBDSV9NQUNI X01TSSkgJiYKLSAgICAgICAgIChwaXJxX2RwY2ktPmdtc2kubGVnYWN5Lmd2ZWMgPT0gdmVjdG9y KSApCisgICAgaWYgKCBwaXJxX2RwY2ktPmZsYWdzICYgSFZNX0lSUV9EUENJX01BQ0hfTVNJICkK ICAgICB7Ci0gICAgICAgIGludCBkZXN0ID0gcGlycV9kcGNpLT5nbXNpLmxlZ2FjeS5nZmxhZ3Mg JiBWTVNJX0RFU1RfSURfTUFTSzsKLSAgICAgICAgaW50IGRlc3RfbW9kZSA9ICEhKHBpcnFfZHBj aS0+Z21zaS5sZWdhY3kuZ2ZsYWdzICYgVk1TSV9ETV9NQVNLKTsKKyAgICAgICAgaWYgKCAocGly cV9kcGNpLT5mbGFncyAmIEhWTV9JUlFfRFBDSV9HVUVTVF9NU0kpICYmCisgICAgICAgICAgICAg KHBpcnFfZHBjaS0+Z21zaS5sZWdhY3kuZ3ZlYyA9PSB2ZWN0b3IpICkKKyAgICAgICAgeworICAg ICAgICAgICAgaW50IGRlc3QgPSBwaXJxX2RwY2ktPmdtc2kubGVnYWN5LmdmbGFncyAmIFZNU0lf REVTVF9JRF9NQVNLOworICAgICAgICAgICAgaW50IGRlc3RfbW9kZSA9ICEhKHBpcnFfZHBjaS0+ Z21zaS5sZWdhY3kuZ2ZsYWdzICYgVk1TSV9ETV9NQVNLKTsKIAotICAgICAgICBpZiAoIHZsYXBp Y19tYXRjaF9kZXN0KHZjcHVfdmxhcGljKGN1cnJlbnQpLCBOVUxMLCAwLCBkZXN0LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RfbW9kZSkgKQorICAgICAgICAgICAgaWYgKCB2 bGFwaWNfbWF0Y2hfZGVzdCh2Y3B1X3ZsYXBpYyhjdXJyZW50KSwgTlVMTCwgMCwgZGVzdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdF9tb2RlKSApCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgX19tc2lfcGlycV9lb2kocGlycV9kcGNpKTsKKyAgICAgICAg ICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNl IGlmICggcGlycV9kcGNpLT5mbGFncyAmIEhWTV9JUlFfRFBDSV9HVUVTVF9NU0lfSVIgKQogICAg ICAgICB7Ci0gICAgICAgICAgICBfX21zaV9waXJxX2VvaShwaXJxX2RwY2kpOwotICAgICAgICAg ICAgcmV0dXJuIDE7CisgICAgICAgICAgICBpbnQgcmV0OworICAgICAgICAgICAgc3RydWN0IGly cV9yZW1hcHBpbmdfcmVxdWVzdCByZXF1ZXN0OworICAgICAgICAgICAgc3RydWN0IGlycV9yZW1h cHBpbmdfaW5mbyBpcnFfaW5mbzsKKworICAgICAgICAgICAgaXJxX3JlcXVlc3RfbXNpX2ZpbGwo JnJlcXVlc3QsIHBpcnFfZHBjaS0+Z21zaS5pbnRyZW1hcC5zb3VyY2VfaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwaXJxX2RwY2ktPmdtc2kuaW50cmVtYXAuYWRkciwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpcnFfZHBjaS0+Z21zaS5pbnRyZW1hcC5k YXRhKTsKKyAgICAgICAgICAgIC8qIEN1cnJlbnRseSwgb25seSB2aW9tbXUgMCBpcyBzdXBwb3J0 ZWQgKi8KKyAgICAgICAgICAgIHJldCA9IHZpb21tdV9nZXRfaXJxX2luZm8oZCwgMCwgJnJlcXVl c3QsICZpcnFfaW5mbyk7CisgICAgICAgICAgICBpZiAoICghcmV0KSAmJiAoaXJxX2luZm8udmVj dG9yID09IHZlY3RvcikgJiYKKyAgICAgICAgICAgICAgICAgdmxhcGljX21hdGNoX2Rlc3QodmNw dV92bGFwaWMoY3VycmVudCksIE5VTEwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlycV9pbmZvLmRlc3QsIGlycV9pbmZvLmRlc3RfbW9kZSkgKQorICAgICAgICAgICAg eworICAgICAgICAgICAgICAgIF9fbXNpX3BpcnFfZW9pKHBpcnFfZHBjaSk7CisgICAgICAgICAg ICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KICAgICBy ZXR1cm4gMDsKIH0KIApAQCAtODY5LDE0ICs4OTMsMTYgQEAgc3RhdGljIHZvaWQgaHZtX2RpcnFf YXNzaXN0KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBodm1fcGlycV9kcGNpICpwaXJxX2RwY2kp CiAgICAgICAgIHsKICAgICAgICAgICAgIHNlbmRfZ3Vlc3RfcGlycShkLCBwaXJxKTsKIAotICAg ICAgICAgICAgaWYgKCBwaXJxX2RwY2ktPmZsYWdzICYgSFZNX0lSUV9EUENJX0dVRVNUX01TSSAp CisgICAgICAgICAgICBpZiAoIHBpcnFfZHBjaS0+ZmxhZ3MKKyAgICAgICAgICAgICAgICAgJiAo SFZNX0lSUV9EUENJX0dVRVNUX01TSSB8IEhWTV9JUlFfRFBDSV9HVUVTVF9NU0lfSVIpICkKICAg ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmZC0+ZXZlbnRfbG9jayk7 CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg ICAgICAgaWYgKCBwaXJxX2RwY2ktPmZsYWdzICYgSFZNX0lSUV9EUENJX0dVRVNUX01TSSApCisg ICAgICAgIGlmICggcGlycV9kcGNpLT5mbGFncworICAgICAgICAgICAgICYgKEhWTV9JUlFfRFBD SV9HVUVTVF9NU0kgfCBIVk1fSVJRX0RQQ0lfR1VFU1RfTVNJX0lSKSApCiAgICAgICAgIHsKICAg ICAgICAgICAgIHZtc2lfZGVsaXZlcl9waXJxKGQsIHBpcnFfZHBjaSk7CiAgICAgICAgICAgICBz cGluX3VubG9jaygmZC0+ZXZlbnRfbG9jayk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20t eDg2L21zaS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc2kuaAppbmRleCBhNWRlNmExLi5jNDFl MmE3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21zaS5oCisrKyBiL3hlbi9pbmNs dWRlL2FzbS14ODYvbXNpLmgKQEAgLTQ5LDYgKzQ5LDkgQEAKICNkZWZpbmUgTVNJX0FERFJfUkVE SVJFQ1RJT05fQ1BVICAgICgwIDw8IE1TSV9BRERSX1JFRElSRUNUSU9OX1NISUZUKQogI2RlZmlu ZSBNU0lfQUREUl9SRURJUkVDVElPTl9MT1dQUkkgKDEgPDwgTVNJX0FERFJfUkVESVJFQ1RJT05f U0hJRlQpCiAKKyNkZWZpbmUgTVNJX0FERFJfSU5URUZPUk1BVF9TSElGVCAgIDQKKyNkZWZpbmUg TVNJX0FERFJfSU5URUZPUk1BVF9NQVNLICAgICgxIDw8IE1TSV9BRERSX0lOVEVGT1JNQVRfU0hJ RlQpCisKICNkZWZpbmUgTVNJX0FERFJfREVTVF9JRF9TSElGVAkJMTIKICNkZWZpbmUJIE1TSV9B RERSX0RFU1RfSURfTUFTSwkJMHgwMGZmMDAwCiAjZGVmaW5lICBNU0lfQUREUl9ERVNUX0lEKGRl c3QpCQkoKChkZXN0KSA8PCBNU0lfQUREUl9ERVNUX0lEX1NISUZUKSAmIE1TSV9BRERSX0RFU1Rf SURfTUFTSykKLS0gCjEuOC4zLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK