From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH for 4.9 4/6] x86/svm: Introduce svm_emul_swint_injection() Date: Fri, 31 Mar 2017 20:50:51 +0100 Message-ID: <1490989853-21879-5-git-send-email-andrew.cooper3@citrix.com> References: <1490989853-21879-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1490989853-21879-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Boris Ostrovsky , Julien Grall , Suravee Suthikulpanit , Jan Beulich List-Id: xen-devel@lists.xenproject.org U29mdHdhcmUgZXZlbnRzIHJlcXVpcmUgZW11bGF0aW9uIGluIHNvbWUgY2FzZXMgb24gQU1EIGhh cmR3YXJlLiAgSW50cm9kdWNlCnN2bV9lbXVsX3N3aW50X2luamVjdGlvbigpIHRvIHBlcmZvcm0g dGhpcyBlbXVsYXRpb24gaWYgbmVjZXNzYXJ5IGluCnN2bV9pbmplY3RfZXZlbnQoKSwgd2hpY2gg d2lsbCBjb3BlIHdpdGggYW55IHNvdXJjZXMgb2YgZXZlbnQsIHJhdGhlciB0aGFuCmp1c3QgdGhv c2UgY29taW5nIGZyb20geDg2X2VtdWxhdGUoKS4KClRoaXMgbG9naWMgbWlycm9ycyBpbmplY3Rf c3dpbnQoKSBpbiB0aGUgeDg2IGluc3RydWN0aW9uIGVtdWxhdG9yLgoKU2lnbmVkLW9mZi1ieTog QW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCkNDOiBKYW4gQmV1 bGljaCA8SkJldWxpY2hAc3VzZS5jb20+CkNDOiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJv dnNreUBvcmFjbGUuY29tPgpDQzogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhp a3VscGFuaXRAYW1kLmNvbT4KQ0M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+ Ci0tLQogeGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgfCAxMzYgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTM2IGluc2VydGlv bnMoKykKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYyBiL3hlbi9hcmNo L3g4Ni9odm0vc3ZtL3N2bS5jCmluZGV4IDRkN2U0OWYuLjZkNzdjN2UgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5j CkBAIC0xMTgzLDYgKzExODMsMTI0IEBAIHN0YXRpYyB2b2lkIHN2bV92Y3B1X2Rlc3Ryb3koc3Ry dWN0IHZjcHUgKnYpCiAgICAgcGFzc2l2ZV9kb21haW5fZGVzdHJveSh2KTsKIH0KIAorLyoKKyAq IEVtdWxhdGUgZW5vdWdoIG9mIGludGVycnVwdCBpbmplY3Rpb24gdG8gY292ZXIgdGhlIERQTCBj aGVjayAob21pdHRlZCBieQorICogaGFyZHdhcmUpLCBhbmQgdG8gd29yayBvdXQgd2hldGhlciBp dCBpcyBzYWZlIHRvIG1vdmUgJXJpcCBmb3dhcmRzIGZvcgorICogYXJjaGl0ZWN0dXJhbCB0cmFw IHZzIGZhdWx0IHNlbWFudGljcyBpbiB0aGUgZXhjZXB0aW9uIGZyYW1lICh3aGljaAorICogaGFy ZHdhcmUgd29uJ3QgY29wZSB3aXRoKS4KKyAqCisgKiBUaGUgZXZlbnQgcGFyYW1ldGVyIHdpbGwg YmUgbW9kaWZpZWQgdG8gYSBmYXVsdCBpZiBuZWNlc3NhcnkuCisgKi8KK3N0YXRpYyB2b2lkIHN2 bV9lbXVsX3N3aW50X2luamVjdGlvbihzdHJ1Y3QgeDg2X2V2ZW50ICpldmVudCkKK3sKKyAgICBz dHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7CisgICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNi ID0gY3Vyci0+YXJjaC5odm1fc3ZtLnZtY2I7CisgICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MgPSBndWVzdF9jcHVfdXNlcl9yZWdzKCk7CisKKyAgICB1bnNpZ25lZCBpbnQgdHJhcCA9IGV2 ZW50LT52ZWN0b3IsIHR5cGUgPSBldmVudC0+dHlwZTsKKyAgICB1bnNpZ25lZCBpbnQgZmF1bHQg PSBUUkFQX2dwX2ZhdWx0LCBlYyA9IDA7CisKKyAgICBpZiAoIHZtY2ItPl9jcjAgJiBYODZfQ1Iw X1BFICkgLyogVE9ETzogc3VwcG9ydCByZWFsLW1vZGUgaW5qZWN0aW9uPyAqLworICAgIHsKKyAg ICAgICAgcGFnZWZhdWx0X2luZm9fdCBwZjsKKyAgICAgICAgc3RydWN0IHNlZ21lbnRfcmVnaXN0 ZXIgaWR0cjsKKyAgICAgICAgdW5zaWduZWQgaW50IGlkdGVfc2l6ZSwgaWR0ZV9vZmZzZXQ7Cisg ICAgICAgIHVuc2lnbmVkIGxvbmcgaWR0ZV9saW5lYXJfYWRkcjsKKyAgICAgICAgc3RydWN0IHsg dWludDMyX3QgYSwgYiwgYywgZDsgfSBpZHRlID0ge307CisgICAgICAgIGJvb2wgbG0gPSB2bWNi LT5fZWZlciAmIEVGRVJfTE1BOworICAgICAgICBlbnVtIGh2bV9zZWdtZW50YXRpb25fbW9kZSBz ZWdfbW9kZSA9CisgICAgICAgICAgICBsbSA/IGh2bV9zZWdfbW9kZV9sb25nIDogaHZtX3NlZ19t b2RlX3Byb3Q7CisgICAgICAgIGludCByYzsKKworICAgICAgICBpZHRlX3NpemUgPSBsbSA/IDE2 IDogODsKKyAgICAgICAgaWR0ZV9vZmZzZXQgPSB0cmFwICogaWR0ZV9zaXplOworCisgICAgICAg IC8qIElDRUJQIHNldHMgdGhlIEV4dGVybmFsIEV2ZW50IGJpdCBkZXNwaXRlIGJlaW5nIGFuIGlu c3RydWN0aW9uLiAqLworICAgICAgICBlYyA9ICh0cmFwIDw8IDMpIHwgWDg2X1hFQ19JRFQgfAor ICAgICAgICAgICAgKHR5cGUgPT0gWDg2X0VWRU5UVFlQRV9QUklfU1dfRVhDRVBUSU9OID8gWDg2 X1hFQ19FWFQgOiAwKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOiBUaGlzIGRvZXMg bm90IGNvdmVyIHRoZSB2ODA4NiBtb2RlIHdpdGggQ1I0LlZNRSBjYXNlCisgICAgICAgICAqIGNv cnJlY3RseSwgYnV0IGZhbGxzIG9uIHRoZSBzYWZlIHNpZGUgZnJvbSB0aGUgcG9pbnQgb2Ygdmll dyBvZiBhCisgICAgICAgICAqIDMyYml0IE9TLiAgU29tZW9uZSB3aXRoIG1hbnkgVFVJVHMgY2Fu IHNlZSBhYm91dCByZWFkaW5nIHRoZSBUU1MKKyAgICAgICAgICogU29mdHdhcmUgSW50ZXJydXB0 IFJlZGlyZWN0aW9uIGJpdG1hcC4KKyAgICAgICAgICovCisgICAgICAgIGlmICggKHJlZ3MtPmVm bGFncyAmIFg4Nl9FRkxBR1NfVk0pICYmCisgICAgICAgICAgICAgTUFTS19FWFRSKHJlZ3MtPmVm bGFncywgWDg2X0VGTEFHU19JT1BMKSAhPSAzICkKKyAgICAgICAgICAgIGdvdG8gcmFpc2VfZXhj ZXB0aW9uOworCisgICAgICAgIC8qCisgICAgICAgICAqIFJlYWQgYWxsIDgvMTYgYnl0ZXMgc28g dGhlIGlkdHIgbGltaXQgY2hlY2sgaXMgYXBwbGllZCBwcm9wZXJseSB0bworICAgICAgICAgKiB0 aGlzIGVudHJ5LCBldmVuIHRob3VnaCBkb24ndCBsb29rIGFsbCB0aGUgd29yZHMgcmVhZC4KKyAg ICAgICAgICovCisgICAgICAgIGh2bV9nZXRfc2VnbWVudF9yZWdpc3RlcihjdXJyLCB4ODZfc2Vn X2lkdHIsICZpZHRyKTsKKyAgICAgICAgaWYgKCAhaHZtX3ZpcnR1YWxfdG9fbGluZWFyX2FkZHIo eDg2X3NlZ19pZHRyLCAmaWR0ciwgaWR0ZV9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlkdGVfc2l6ZSwgaHZtX2FjY2Vzc19yZWFkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdfbW9kZSwgJmlkdGVfbGluZWFyX2Fk ZHIpICkKKyAgICAgICAgICAgIGdvdG8gcmFpc2VfZXhjZXB0aW9uOworCisgICAgICAgIHJjID0g aHZtX2NvcHlfZnJvbV9ndWVzdF9saW5lYXIoJmlkdGUsIGlkdGVfbGluZWFyX2FkZHIsIGlkdGVf c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRkVDX2ltcGxp Y2l0LCAmcGYpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg KCByYyA9PSBIVk1DT1BZX2JhZF9ndmFfdG9fZ2ZuICkKKyAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICBmYXVsdCA9IFRSQVBfcGFnZV9mYXVsdDsKKyAgICAgICAgICAgICAgICBlYyA9IHBm LmVjOworICAgICAgICAgICAgICAgIGV2ZW50LT5jcjIgPSBwZi5saW5lYXI7CisgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgIGdvdG8gcmFpc2VfZXhjZXB0aW9uOworICAgICAgICB9CisKKyAg ICAgICAgLyogVGhpcyBtdXN0IGJlIGFuIGludGVycnVwdCwgdHJhcCwgb3IgdGFzayBnYXRlLiAq LworICAgICAgICBzd2l0Y2ggKCAoaWR0ZS5iID4+IDgpICYgMHgxZiApCisgICAgICAgICAgICB7 CisgICAgICAgICAgICBjYXNlIFNZU19ERVNDX2lycV9nYXRlOgorICAgICAgICAgICAgY2FzZSBT WVNfREVTQ190cmFwX2dhdGU6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj YXNlIFNZU19ERVNDX2lycV9nYXRlMTY6CisgICAgICAgICAgICBjYXNlIFNZU19ERVNDX3RyYXBf Z2F0ZTE2OgorICAgICAgICAgICAgY2FzZSBTWVNfREVTQ190YXNrX2dhdGU6CisgICAgICAgICAg ICAgICAgaWYgKCAhbG0gKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg ICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg ICAgICAgZ290byByYWlzZV9leGNlcHRpb247CisgICAgICAgICAgICB9CisKKyAgICAgICAgLyog VGhlIDY0LWJpdCBoaWdoIGhhbGYncyB0eXBlIG11c3QgYmUgemVyby4gKi8KKyAgICAgICAgaWYg KCBpZHRlLmQgJiAweDFmMDAgKQorICAgICAgICAgICAgZ290byByYWlzZV9leGNlcHRpb247CisK KyAgICAgICAgLyogSUNFQlAgY291bnRzIGFzIGEgaGFyZHdhcmUgZXZlbnQsIGFuZCBieXBhc3Nl cyB0aGUgZHBsIGNoZWNrLiAqLworICAgICAgICBpZiAoIHR5cGUgIT0gWDg2X0VWRU5UVFlQRV9Q UklfU1dfRVhDRVBUSU9OICYmCisgICAgICAgICAgICAgdm1jYi0+X2NwbCA+ICgoaWR0ZS5iID4+ IDEzKSAmIDMpICkKKyAgICAgICAgICAgICAgICBnb3RvIHJhaXNlX2V4Y2VwdGlvbjsKKworICAg ICAgICAvKiBJcyB0aGlzIGVudHJ5IHByZXNlbnQ/ICovCisgICAgICAgIGlmICggIShpZHRlLmIg JiAoMXUgPDwgMTUpKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZhdWx0ID0gVFJBUF9ub19z ZWdtZW50OworICAgICAgICAgICAgZ290byByYWlzZV9leGNlcHRpb247CisgICAgICAgIH0KKwor ICAgICAgICAvKgorICAgICAgICAgKiBBbnkgZnVydGhlciBmYXVsdCBkdXJpbmcgaW5qZWN0aW9u IHdpbGwgY2F1c2UgYSBkb3VibGUgZmF1bHQuICBJdAorICAgICAgICAgKiBpcyBmaW5lIHRvIGxl YXZlIHRoaXMgdXAgdG8gaGFyZHdhcmUsIGFuZCBzb2Z0d2FyZSB3b24ndCBiZSBpbiBhCisgICAg ICAgICAqIHBvc2l0aW9uIHRvIGNhcmUgYWJvdXQgdGhlIGFyY2hpdGVjdHVyYWwgY29ycmVjdG5l c3Mgb2YgJXJpcCBpbiB0aGUKKyAgICAgICAgICogZXhjZXB0aW9uIGZyYW1lLgorICAgICAgICAg Ki8KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworIHJhaXNlX2V4Y2VwdGlvbjoKKyAgICBldmVu dC0+dmVjdG9yID0gZmF1bHQ7CisgICAgZXZlbnQtPnR5cGUgPSBYODZfRVZFTlRUWVBFX0hXX0VY Q0VQVElPTjsKKyAgICBldmVudC0+aW5zbl9sZW4gPSAwOworICAgIGV2ZW50LT5lcnJvcl9jb2Rl ID0gZWM7Cit9CisKIHN0YXRpYyB2b2lkIHN2bV9pbmplY3RfZXZlbnQoY29uc3Qgc3RydWN0IHg4 Nl9ldmVudCAqZXZlbnQpCiB7CiAgICAgc3RydWN0IHZjcHUgKmN1cnIgPSBjdXJyZW50OwpAQCAt MTE5MSw2ICsxMzA5LDI0IEBAIHN0YXRpYyB2b2lkIHN2bV9pbmplY3RfZXZlbnQoY29uc3Qgc3Ry dWN0IHg4Nl9ldmVudCAqZXZlbnQpCiAgICAgc3RydWN0IHg4Nl9ldmVudCBfZXZlbnQgPSAqZXZl bnQ7CiAgICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MgPSBndWVzdF9jcHVfdXNlcl9yZWdz KCk7CiAKKyAgICAvKgorICAgICAqIEZvciBoYXJkd2FyZSBsYWNraW5nIE5SaXBzIHN1cHBvcnQs IGFuZCBhbHdheXMgZm9yIElDRUJQIGluc3RydWN0aW9ucywKKyAgICAgKiB0aGUgcHJvY2Vzc29y IHJlcXVpcmVzIGV4dHJhIGhlbHAgdG8gZGVsaXZlciBzb2Z0d2FyZSBldmVudHMuCisgICAgICoK KyAgICAgKiBYZW4gbXVzdCBlbXVsYXRlIGVub3VnaCBvZiB0aGUgZXZlbnQgaW5qZWN0aW9uIHRv IGJlIHN1cmUgdGhhdCBhCisgICAgICogZnVydGhlciBmYXVsdCBzaG91bGRuJ3Qgb2NjdXIgZHVy aW5nIGRlbGl2ZXJ5LiAgVGhpcyBjb3ZlcnMgdGhlIGZhY3QKKyAgICAgKiB0aGF0IGhhcmR3YXJl IGRvZXNuJ3QgcGVyZm9ybSBEUEwgY2hlY2tpbmcgb24gaW5qZWN0aW9uLgorICAgICAqCisgICAg ICogQWxzbywgaXQgYWNjb3VudHMgZm9yIHByb3BlciBwb3NpdGlvbmluZyBvZiAlcmlwIGZvciBh biBldmVudCB3aXRoIHRyYXAKKyAgICAgKiBzZW1hbnRpY3MgKHdoZXJlICVyaXAgc2hvdWxkIHBv aW50IGFmdGVyIHRoZSBpbnN0cnVjdGlvbikgd2hpY2ggc3VmZmVycworICAgICAqIGEgZmF1bHQg ZHVyaW5nIGluamVjdGlvbiAoYXQgd2hpY2ggcG9pbnQgJXJpcCBzaG91bGQgcG9pbnQgYXQgdGhl CisgICAgICogaW5zdHJ1Y3Rpb24pLgorICAgICAqLworICAgIGlmICggZXZlbnQtPnR5cGUgPT0g WDg2X0VWRU5UVFlQRV9QUklfU1dfRVhDRVBUSU9OIHx8CisgICAgICAgICAoIWNwdV9oYXNfc3Zt X25yaXBzICYmIChldmVudC0+dHlwZSA9PSBYODZfRVZFTlRUWVBFX1NXX0lOVEVSUlVQVCB8fAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnR5cGUgPT0gWDg2X0VWRU5U VFlQRV9TV19FWENFUFRJT04pKSApCisgICAgICAgIHN2bV9lbXVsX3N3aW50X2luamVjdGlvbigm X2V2ZW50KTsKKwogICAgIHN3aXRjaCAoIF9ldmVudC52ZWN0b3IgKQogICAgIHsKICAgICBjYXNl IFRSQVBfZGVidWc6Ci0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhl bi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=