From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Martin Subject: [PATCH v4 23/28] arm64/sve: KVM: Treat guest SVE use as undefined instruction execution Date: Fri, 27 Oct 2017 11:51:05 +0100 Message-ID: <1509101470-7881-24-git-send-email-Dave.Martin@arm.com> References: <1509101470-7881-1-git-send-email-Dave.Martin@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1509101470-7881-1-git-send-email-Dave.Martin@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu To: linux-arm-kernel@lists.infradead.org Cc: linux-arch@vger.kernel.org, Okamoto Takayuki , libc-alpha@sourceware.org, Ard Biesheuvel , Szabolcs Nagy , Catalin Marinas , Will Deacon , kvmarm@lists.cs.columbia.edu List-Id: linux-arch.vger.kernel.org V2hlbiB0cmFwcGluZyBmb3JiaWRkZW4gYXR0ZW1wdHMgYnkgYSBndWVzdCB0byB1c2UgU1ZFLCB3 ZSB3YW50IHRoZQpndWVzdCB0byBzZWUgYSB0cmFwIGNvbnNpc3RlbnQgd2l0aCBTVkUgbm90IGJl aW5nIGltcGxlbWVudGVkLgoKVGhpcyBwYXRjaCBpbmplY3RzIGFuIHVuZGVmaW5lZCBpbnN0cnVj dGlvbiBleGNlcHRpb24gaW50byB0aGUKZ3Vlc3QgaW4gcmVzcG9uc2UgdG8gc3VjaCBhbiBleGNl cHRpb24uCgpTaWduZWQtb2ZmLWJ5OiBEYXZlIE1hcnRpbiA8RGF2ZS5NYXJ0aW5AYXJtLmNvbT4K UmV2aWV3ZWQtYnk6IEFsZXggQmVubsOpZSA8YWxleC5iZW5uZWVAbGluYXJvLm9yZz4KQWNrZWQt Ynk6IENhdGFsaW4gTWFyaW5hcyA8Y2F0YWxpbi5tYXJpbmFzQGFybS5jb20+CkFja2VkLWJ5OiBD aHJpc3RvZmZlciBEYWxsIDxjaHJpc3RvZmZlci5kYWxsQGxpbmFyby5vcmc+Ci0tLQogYXJjaC9h cm02NC9rdm0vaGFuZGxlX2V4aXQuYyB8IDggKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA4IGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2t2bS9oYW5kbGVfZXhpdC5jIGIv YXJjaC9hcm02NC9rdm0vaGFuZGxlX2V4aXQuYwppbmRleCA3ZGViYjc0Li5iNzEyNDc5IDEwMDY0 NAotLS0gYS9hcmNoL2FybTY0L2t2bS9oYW5kbGVfZXhpdC5jCisrKyBiL2FyY2gvYXJtNjQva3Zt L2hhbmRsZV9leGl0LmMKQEAgLTE0Nyw2ICsxNDcsMTMgQEAgc3RhdGljIGludCBrdm1faGFuZGxl X3Vua25vd25fZWMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKQog CXJldHVybiAxOwogfQogCitzdGF0aWMgaW50IGhhbmRsZV9zdmUoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKQoreworCS8qIFVudGlsIFNWRSBpcyBzdXBwb3J0ZWQg Zm9yIGd1ZXN0czogKi8KKwlrdm1faW5qZWN0X3VuZGVmaW5lZCh2Y3B1KTsKKwlyZXR1cm4gMTsK K30KKwogc3RhdGljIGV4aXRfaGFuZGxlX2ZuIGFybV9leGl0X2hhbmRsZXJzW10gPSB7CiAJWzAg Li4uIEVTUl9FTHhfRUNfTUFYXQk9IGt2bV9oYW5kbGVfdW5rbm93bl9lYywKIAlbRVNSX0VMeF9F Q19XRnhdCT0ga3ZtX2hhbmRsZV93ZngsCkBAIC0xNjAsNiArMTY3LDcgQEAgc3RhdGljIGV4aXRf aGFuZGxlX2ZuIGFybV9leGl0X2hhbmRsZXJzW10gPSB7CiAJW0VTUl9FTHhfRUNfSFZDNjRdCT0g aGFuZGxlX2h2YywKIAlbRVNSX0VMeF9FQ19TTUM2NF0JPSBoYW5kbGVfc21jLAogCVtFU1JfRUx4 X0VDX1NZUzY0XQk9IGt2bV9oYW5kbGVfc3lzX3JlZywKKwlbRVNSX0VMeF9FQ19TVkVdCT0gaGFu ZGxlX3N2ZSwKIAlbRVNSX0VMeF9FQ19JQUJUX0xPV10JPSBrdm1faGFuZGxlX2d1ZXN0X2Fib3J0 LAogCVtFU1JfRUx4X0VDX0RBQlRfTE9XXQk9IGt2bV9oYW5kbGVfZ3Vlc3RfYWJvcnQsCiAJW0VT Ul9FTHhfRUNfU09GVFNUUF9MT1ddPSBrdm1faGFuZGxlX2d1ZXN0X2RlYnVnLAotLSAKMi4xLjQK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmt2bWFybSBt YWlsaW5nIGxpc3QKa3ZtYXJtQGxpc3RzLmNzLmNvbHVtYmlhLmVkdQpodHRwczovL2xpc3RzLmNz LmNvbHVtYmlhLmVkdS9tYWlsbWFuL2xpc3RpbmZvL2t2bWFybQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com ([217.140.101.70]:57040 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752507AbdJ0KwE (ORCPT ); Fri, 27 Oct 2017 06:52:04 -0400 From: Dave Martin Subject: [PATCH v4 23/28] arm64/sve: KVM: Treat guest SVE use as undefined instruction execution Date: Fri, 27 Oct 2017 11:51:05 +0100 Message-ID: <1509101470-7881-24-git-send-email-Dave.Martin@arm.com> In-Reply-To: <1509101470-7881-1-git-send-email-Dave.Martin@arm.com> References: <1509101470-7881-1-git-send-email-Dave.Martin@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-arch-owner@vger.kernel.org List-ID: To: linux-arm-kernel@lists.infradead.org Cc: Catalin Marinas , Will Deacon , Ard Biesheuvel , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Szabolcs Nagy , Okamoto Takayuki , kvmarm@lists.cs.columbia.edu, libc-alpha@sourceware.org, linux-arch@vger.kernel.org Message-ID: <20171027105105.c9D3Q_uAU77tc6_bsqneEa2yQ3x8E95O7yeYTy0cWcc@z> When trapping forbidden attempts by a guest to use SVE, we want the guest to see a trap consistent with SVE not being implemented. This patch injects an undefined instruction exception into the guest in response to such an exception. Signed-off-by: Dave Martin Reviewed-by: Alex Bennée Acked-by: Catalin Marinas Acked-by: Christoffer Dall --- arch/arm64/kvm/handle_exit.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c index 7debb74..b712479 100644 --- a/arch/arm64/kvm/handle_exit.c +++ b/arch/arm64/kvm/handle_exit.c @@ -147,6 +147,13 @@ static int kvm_handle_unknown_ec(struct kvm_vcpu *vcpu, struct kvm_run *run) return 1; } +static int handle_sve(struct kvm_vcpu *vcpu, struct kvm_run *run) +{ + /* Until SVE is supported for guests: */ + kvm_inject_undefined(vcpu); + return 1; +} + static exit_handle_fn arm_exit_handlers[] = { [0 ... ESR_ELx_EC_MAX] = kvm_handle_unknown_ec, [ESR_ELx_EC_WFx] = kvm_handle_wfx, @@ -160,6 +167,7 @@ static exit_handle_fn arm_exit_handlers[] = { [ESR_ELx_EC_HVC64] = handle_hvc, [ESR_ELx_EC_SMC64] = handle_smc, [ESR_ELx_EC_SYS64] = kvm_handle_sys_reg, + [ESR_ELx_EC_SVE] = handle_sve, [ESR_ELx_EC_IABT_LOW] = kvm_handle_guest_abort, [ESR_ELx_EC_DABT_LOW] = kvm_handle_guest_abort, [ESR_ELx_EC_SOFTSTP_LOW]= kvm_handle_guest_debug, -- 2.1.4