From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v4 10/28] x86/vvtd: Enable Interrupt Remapping through GCMD Date: Fri, 17 Nov 2017 14:22:17 +0800 Message-ID: <1510899755-40237-11-git-send-email-chao.gao@intel.com> References: <1510899755-40237-1-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1510899755-40237-1-git-send-email-chao.gao@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 , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Ian Jackson , Tim Deegan , Jan Beulich , Andrew Cooper , Chao Gao , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org U29mdHdhcmUgd3JpdGVzIHRoaXMgZmllbGQgdG8gZW5hYmxlL2Rpc2FibGUgaW50ZXJydXB0IHJl YW1wcGluZy4gVGhpcwpwYXRjaCBlbXVsYXRlIElSRVMgZmllbGQgb2YgR0NNRC4gQ3VycmVudGx5 LCBHdWVzdCdzIHdob2xlIElSVCBhcmUKbWFwcGVkIHRvIFhlbiBwZXJtYW5lbnRseSBmb3IgdGhl IGxhdGVuY3kgb2YgZGVsaXZlcmluZyBpbnRlcnJ1cHQuIEFuZAp0aGUgb2xkIG1hcHBpbmcgaXMg dW5kb25lIGlmIHByZXNlbnQgd2hlbiB0cnlpbmcgdG8gc2V0IHVwIGEgbmV3IG9uZS4KClNpZ25l ZC1vZmYtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IExh biBUaWFueXUgPHRpYW55dS5sYW5AaW50ZWwuY29tPgotLS0KdjQ6CiAtIG1hcCBndWVzdCdzIGlu dGVycnVwdCByZWFtcHBpbmcgdGFibGUgdG8gWGVuIHBlcm1hbmVudGx5IHJhdGhlciB0aGFuCiBt YXBwaW5nIG9uZSBzcGVjaWZpYyBwYWdlIG9uIGRlbWFuZC4KLS0tCiB4ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC92dGQvaW9tbXUuaCB8ICAzICstCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQv dnZ0ZC5jICB8IDk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmls ZXMgY2hhbmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuaCBiL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3Z0ZC9pb21tdS5oCmluZGV4IDg1Nzk4NDMuLjljNTlhZWIgMTAwNjQ0Ci0tLSBhL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5oCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3Z0ZC9pb21tdS5oCkBAIC0xNjEsOSArMTYxLDEwIEBACiAjZGVmaW5lIERNQV9HU1RT X0FGTFMgICAoKCh1NjQpMSkgPDwgMjgpCiAjZGVmaW5lIERNQV9HU1RTX1dCRlMgICAoKCh1NjQp MSkgPDwgMjcpCiAjZGVmaW5lIERNQV9HU1RTX1FJRVMgICAoKCh1NjQpMSkgPDwyNikKKyNkZWZp bmUgRE1BX0dTVFNfSVJFU19TSElGVCAgICAgMjUKKyNkZWZpbmUgRE1BX0dTVFNfSVJFUyAgICgo KHU2NCkxKSA8PCBETUFfR1NUU19JUkVTX1NISUZUKQogI2RlZmluZSBETUFfR1NUU19TSVJUUFNf U0hJRlQgICAyNAogI2RlZmluZSBETUFfR1NUU19TSVJUUFMgKCgodTY0KTEpIDw8IERNQV9HU1RT X1NJUlRQU19TSElGVCkKLSNkZWZpbmUgRE1BX0dTVFNfSVJFUyAgICgoKHU2NCkxKSA8PDI1KQog I2RlZmluZSBETUFfR1NUU19DRklTICAgKCgodTY0KTEpIDw8MjMpCiAKIC8qIElSVEFfUkVHICov CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvdnZ0ZC5jIGIveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Z2dGQuYwppbmRleCBmMDQ3NmZlLi4wNmU1MjJhIDEwMDY0 NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvdnZ0ZC5jCisrKyBiL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC92dnRkLmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlIDx4 ZW4veG1hbGxvYy5oPgogI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CiAjaW5jbHVkZSA8YXNtL2h2 bS9kb21haW4uaD4KKyNpbmNsdWRlIDxhc20vcDJtLmg+CiAKICNpbmNsdWRlICJpb21tdS5oIgog CkBAIC0zNyw2ICszOCw3IEBACiAKIHN0cnVjdCBodm1faHdfdnZ0ZCB7CiAgICAgYm9vbCBlaW1f ZW5hYmxlZDsKKyAgICBib29sIGludHJlbWFwX2VuYWJsZWQ7CiAKICAgICAvKiBJbnRlcnJ1cHQg cmVtYXBwaW5nIHRhYmxlIGJhc2UgZ2ZuIGFuZCB0aGUgbWF4IG9mIGVudHJpZXMgKi8KICAgICB1 aW50MTZfdCBpcnRfbWF4X2VudHJ5OwpAQCAtNTIsNiArNTQsNyBAQCBzdHJ1Y3QgdnZ0ZCB7CiAg ICAgc3RydWN0IGRvbWFpbiAqZG9tYWluOwogCiAgICAgc3RydWN0IGh2bV9od192dnRkIGh3Owor ICAgIHZvaWQgKmlydF9iYXNlOwogfTsKIAogLyogU2V0dGluZyB2aW9tbXVfdmVyYm9zZSBlbmFi bGVzIGRlYnVnZ2luZyBtZXNzYWdlcyBvZiB2SU9NTVUgKi8KQEAgLTExOCw2ICsxMjEsNzcgQEAg c3RhdGljIHZvaWQgKmRvbWFpbl92dnRkKGNvbnN0IHN0cnVjdCBkb21haW4gKmQpCiAgICAgICAg IHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgdm9pZCAqbWFwX2d1ZXN0X3BhZ2VzKHN0cnVjdCBk b21haW4gKmQsIHVpbnQ2NF90IGdmbiwgdWludDMyX3QgbnIpCit7CisgICAgbWZuX3QgKm1mbiA9 IHhtYWxsb2NfYXJyYXkobWZuX3QsIG5yKTsKKyAgICB2b2lkKiByZXQ7CisgICAgaW50IGk7CisK KyAgICBpZiAoICFtZm4gKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoIGkgPSAw OyBpIDwgbnI7IGkrKykKKyAgICB7CisgICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnAgPSBnZXRf cGFnZV9mcm9tX2dmbihkLCBnZm4gKyBpLCBOVUxMLCBQMk1fQUxMT0MpOworCisgICAgICAgIGlm ICggIXAgfHwgIWdldF9wYWdlX3R5cGUocCwgUEdUX3dyaXRhYmxlX3BhZ2UpICkKKyAgICAgICAg eworICAgICAgICAgICAgaWYgKCBwICkKKyAgICAgICAgICAgICAgICBwdXRfcGFnZShwKTsKKyAg ICAgICAgICAgIGdvdG8gdW5kbzsKKyAgICAgICAgfQorCisgICAgICAgIG1mbltpXSA9IF9tZm4o cGFnZV90b19tZm4ocCkpOworICAgIH0KKworICAgIHJldCA9IHZtYXAobWZuLCBucik7CisgICAg aWYgKCByZXQgPT0gTlVMTCApCisgICAgICAgIGdvdG8gdW5kbzsKKyAgICB4ZnJlZShtZm4pOwor CisgICAgcmV0dXJuIHJldDsKKworIHVuZG86CisgICAgZm9yICggOyAtLWkgPj0gMDsgKQorICAg ICAgICBwdXRfcGFnZV9hbmRfdHlwZShtZm5fdG9fcGFnZShtZm5feChtZm5baV0pKSk7CisgICAg eGZyZWUobWZuKTsKKyAgICBncHJpbnRrKFhFTkxPR19FUlIsICJGYWlsZWQgdG8gbWFwIGd1ZXN0 IHBhZ2VzICVseCBuciAleFxuIiwgZ2ZuLCBucik7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKwor c3RhdGljIHZvaWQgdW5tYXBfZ3Vlc3RfcGFnZXModm9pZCAqdmEsIHVpbnQzMl90IG5yKQorewor ICAgIHVuc2lnbmVkIGxvbmcgKm1mbiA9IHhtYWxsb2NfYXJyYXkodW5zaWduZWQgbG9uZywgbnIp OworICAgIGludCBpOworICAgIHZvaWQgKnZhX2NvcHkgPSB2YTsKKworICAgIGlmICggIW1mbiAp CisgICAgeworICAgICAgICBwcmludGsoIiVzICVkOiBObyBmcmVlIG1lbW9yeVxuIiwgX19GSUxF X18sIF9fTElORV9fKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoIGkgPSAw OyBpIDwgbnI7IGkrKywgdmEgKz0gUEFHRV9TSVpFKQorICAgICAgICBtZm5baV0gPSBkb21haW5f cGFnZV9tYXBfdG9fbWZuKHZhKTsKKworICAgIHZ1bm1hcCh2YV9jb3B5KTsKKworICAgIGZvciAo IGkgPSAwOyBpIDwgbnI7IGkrKykKKyAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUobWZuX3RvX3Bh Z2UobWZuW2ldKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdyaXRlX2djbWRfaXJlKHN0cnVjdCB2dnRk ICp2dnRkLCB1aW50MzJfdCB2YWwpCit7CisgICAgYm9vbCBzZXQgPSB2YWwgJiBETUFfR0NNRF9J UkU7CisKKyAgICB2dnRkX2luZm8oIiVzYWJsZSBJbnRlcnJ1cHQgUmVtYXBwaW5nXG4iLCBzZXQg PyAiRW4iIDogIkRpcyIpOworCisgICAgdnZ0ZC0+aHcuaW50cmVtYXBfZW5hYmxlZCA9IHNldDsK KyAgICAoc2V0ID8gdnZ0ZF9zZXRfYml0IDogdnZ0ZF9jbGVhcl9iaXQpCisgICAgICAgICh2dnRk LCBETUFSX0dTVFNfUkVHLCBETUFfR1NUU19JUkVTX1NISUZUKTsKK30KKwogc3RhdGljIHZvaWQg d3JpdGVfZ2NtZF9zaXJ0cChzdHJ1Y3QgdnZ0ZCAqdnZ0ZCwgdWludDMyX3QgdmFsKQogewogICAg IHVpbnQ2NF90IGlydGEgPSB2dnRkX2dldF9yZWdfcXVhZCh2dnRkLCBETUFSX0lSVEFfUkVHKTsK QEAgLTEzMSwxNiArMjA1LDI5IEBAIHN0YXRpYyB2b2lkIHdyaXRlX2djbWRfc2lydHAoc3RydWN0 IHZ2dGQgKnZ2dGQsIHVpbnQzMl90IHZhbCkKICAgICAgKiB0aGUgJ1NldCBJbnRlcnJ1cHQgUmVt YXAgVGFibGUgUG9pbnRlcicgb3BlcmF0aW9uLgogICAgICAqLwogICAgIHZ2dGRfY2xlYXJfYml0 KHZ2dGQsIERNQVJfR1NUU19SRUcsIERNQV9HU1RTX1NJUlRQU19TSElGVCk7CisgICAgaWYgKCB2 dnRkLT5ody5pbnRyZW1hcF9lbmFibGVkICkKKyAgICAgICAgdnZ0ZF9pbmZvKCJVcGRhdGUgSW50 ZXJydXB0IFJlbWFwcGluZyBUYWJsZSB3aGVuIGFjdGl2ZVxuIik7CiAKICAgICBpZiAoIGdmbl94 KHZ2dGQtPmh3LmlydCkgIT0gUEZOX0RPV04oRE1BX0lSVEFfQUREUihpcnRhKSkgfHwKICAgICAg ICAgIHZ2dGQtPmh3LmlydF9tYXhfZW50cnkgIT0gRE1BX0lSVEFfU0laRShpcnRhKSApCiAgICAg eworICAgICAgICBpZiAoIHZ2dGQtPmlydF9iYXNlICkKKyAgICAgICAgeworICAgICAgICAgICAg dW5tYXBfZ3Vlc3RfcGFnZXModnZ0ZC0+aXJ0X2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQRk5fVVAodnZ0ZC0+aHcuaXJ0X21heF9lbnRyeSAqCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpcmVtYXBfZW50cnkpKSk7CisgICAg ICAgICAgICB2dnRkLT5pcnRfYmFzZSA9IE5VTEw7CisgICAgICAgIH0KICAgICAgICAgdnZ0ZC0+ aHcuaXJ0ID0gX2dmbihQRk5fRE9XTihETUFfSVJUQV9BRERSKGlydGEpKSk7CiAgICAgICAgIHZ2 dGQtPmh3LmlydF9tYXhfZW50cnkgPSBETUFfSVJUQV9TSVpFKGlydGEpOwogICAgICAgICB2dnRk LT5ody5laW1fZW5hYmxlZCA9ICEhKGlydGEgJiBJUlRBX0VJTUUpOwogICAgICAgICB2dnRkX2lu Zm8oIlVwZGF0ZSBJUiBpbmZvIChhZGRyPSVseCBlaW09JWQgc2l6ZT0lZClcbiIsCiAgICAgICAg ICAgICAgICAgICBnZm5feCh2dnRkLT5ody5pcnQpLCB2dnRkLT5ody5laW1fZW5hYmxlZCwKICAg ICAgICAgICAgICAgICAgIHZ2dGQtPmh3LmlydF9tYXhfZW50cnkpOworCisgICAgICAgIHZ2dGQt PmlydF9iYXNlID0gbWFwX2d1ZXN0X3BhZ2VzKHZ2dGQtPmRvbWFpbiwgZ2ZuX3godnZ0ZC0+aHcu aXJ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEZOX1VQKHZ2 dGQtPmh3LmlydF9tYXhfZW50cnkgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpcmVtYXBfZW50cnkpKSk7CiAgICAgfQogICAg IHZ2dGRfc2V0X2JpdCh2dnRkLCBETUFSX0dTVFNfUkVHLCBETUFfR1NUU19TSVJUUFNfU0hJRlQp OwogfQpAQCAtMTYyLDYgKzI0OSw4IEBAIHN0YXRpYyB2b2lkIHZ2dGRfd3JpdGVfZ2NtZChzdHJ1 Y3QgdnZ0ZCAqdnZ0ZCwgdWludDMyX3QgdmFsKQogCiAgICAgaWYgKCBjaGFuZ2VkICYgRE1BX0dD TURfU0lSVFAgKQogICAgICAgICB3cml0ZV9nY21kX3NpcnRwKHZ2dGQsIHZhbCk7CisgICAgaWYg KCBjaGFuZ2VkICYgRE1BX0dDTURfSVJFICkKKyAgICAgICAgd3JpdGVfZ2NtZF9pcmUodnZ0ZCwg dmFsKTsKIH0KIAogc3RhdGljIGludCB2dnRkX2luX3JhbmdlKHN0cnVjdCB2Y3B1ICp2LCB1bnNp Z25lZCBsb25nIGFkZHIpCkBAIC0yNzgsNyArMzY3LDE2IEBAIHN0YXRpYyBpbnQgdnZ0ZF9kZXN0 cm95KHN0cnVjdCB2aW9tbXUgKnZpb21tdSkKICAgICBzdHJ1Y3QgdnZ0ZCAqdnZ0ZCA9IHZpb21t dS0+cHJpdjsKIAogICAgIGlmICggdnZ0ZCApCisgICAgeworICAgICAgICBpZiAoIHZ2dGQtPmly dF9iYXNlICkKKyAgICAgICAgeworICAgICAgICAgICAgdW5tYXBfZ3Vlc3RfcGFnZXModnZ0ZC0+ aXJ0X2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRk5fVVAodnZ0ZC0+aHcu aXJ0X21heF9lbnRyeSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZW9mKHN0cnVjdCBpcmVtYXBfZW50cnkpKSk7CisgICAgICAgICAgICB2dnRkLT5pcnRfYmFzZSA9 IE5VTEw7CisgICAgICAgIH0KICAgICAgICAgeGZyZWUodnZ0ZCk7CisgICAgfQogCiAgICAgcmV0 dXJuIDA7CiB9Ci0tIAoxLjguMy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==