From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoffer Dall Subject: [PULL 13/19] kvm: arm64: handle single-step during SError exceptions Date: Mon, 4 Dec 2017 15:03:42 +0100 Message-ID: <20171204140348.21965-11-cdall@kernel.org> References: <20171204135637.21620-1-cdall@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 67D3C49DA6 for ; Mon, 4 Dec 2017 09:01:05 -0500 (EST) Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id VcJBQGYqRtIL for ; Mon, 4 Dec 2017 09:01:00 -0500 (EST) Received: from mail-wr0-f196.google.com (mail-wr0-f196.google.com [209.85.128.196]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id 0D5BF49D7F for ; Mon, 4 Dec 2017 09:00:59 -0500 (EST) Received: by mail-wr0-f196.google.com with SMTP id x49so17407084wrb.13 for ; Mon, 04 Dec 2017 06:04:06 -0800 (PST) In-Reply-To: <20171204135637.21620-1-cdall@kernel.org> 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: kvmarm@lists.cs.columbia.edu, Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= Cc: Marc Zyngier , kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org List-Id: kvmarm@lists.cs.columbia.edu RnJvbTogQWxleCBCZW5uw6llIDxhbGV4LmJlbm5lZUBsaW5hcm8ub3JnPgoKV2hlbiBhbiBTRXJy b3IgYXJyaXZlcyBkdXJpbmcgc2luZ2xlLXN0ZXAgYm90aCB0aGUgU0Vycm9yIGFuZCBkZWJ1Zwpl eGNlcHRpb25zIG1heSBiZSBwZW5kaW5nIHdoZW4gdGhlIHN0ZXAgaXMgY29tcGxldGVkLCBhbmQg dGhlCmFyY2hpdGVjdHVyZSBkb2Vzbid0IGRlZmluZSB0aGUgb3JkZXJpbmcgb2YgdGhlIHR3by4g IFRoaXMgbWVhbnMgdGhhdCB3ZQpjYW4gb2JzZXJ2ZSBlbiBTRXJyb3IgZXZlbiB0aG91Z2ggd2Un dmUganVzdCBjb21wbGV0ZWQgYSBzdGVwLCB3aXRob3V0CnJlY2VpdmluZyBhIGRlYnVnIGV4Y2Vw dGlvbi4gIEluIHRoYXQgY2FzZSB0aGUgREJHX1NQU1JfU1MgYml0IHdpbGwgaGF2ZQpmbGlwcGVk IGFzIHRoZSBpbnN0cnVjdGlvbiBleGVjdXRlZC4gQWZ0ZXIgaGFuZGxpbmcgdGhlIGFib3J0IGlu CmhhbmRsZV9leGl0KCkgd2UgdGVzdCB0byBzZWUgaWYgdGhlIGJpdCBpcyBjbGVhciBhbmQgd2Ug d2VyZQpzaW5nbGUtc3RlcHBpbmcgYmVmb3JlIGRlY2lkaW5nIGlmIHdlIG5lZWQgdG8gZXhpdCB0 byB1c2VyIHNwYWNlLgoKQWNrZWQtYnk6IE1hcmMgWnluZ2llciA8bWFyYy56eW5naWVyQGFybS5j b20+ClJldmlld2VkLWJ5OiBDaHJpc3RvZmZlciBEYWxsIDxjaHJpc3RvZmZlci5kYWxsQGxpbmFy by5vcmc+ClNpZ25lZC1vZmYtYnk6IEFsZXggQmVubsOpZSA8YWxleC5iZW5uZWVAbGluYXJvLm9y Zz4KU2lnbmVkLW9mZi1ieTogQ2hyaXN0b2ZmZXIgRGFsbCA8Y2hyaXN0b2ZmZXIuZGFsbEBsaW5h cm8ub3JnPgotLS0KIGFyY2gvYXJtNjQva3ZtL2hhbmRsZV9leGl0LmMgfCA4ICsrKysrKystCiAx IGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvYXJjaC9hcm02NC9rdm0vaGFuZGxlX2V4aXQuYyBiL2FyY2gvYXJtNjQva3ZtL2hhbmRsZV9l eGl0LmMKaW5kZXggMDI5YzI4ZGQyNWU5Li4zMDQyMDNmYTllMzMgMTAwNjQ0Ci0tLSBhL2FyY2gv YXJtNjQva3ZtL2hhbmRsZV9leGl0LmMKKysrIGIvYXJjaC9hcm02NC9rdm0vaGFuZGxlX2V4aXQu YwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPGFzbS9rdm1fZW11bGF0ZS5oPgogI2luY2x1 ZGUgPGFzbS9rdm1fbW11Lmg+CiAjaW5jbHVkZSA8YXNtL2t2bV9wc2NpLmg+CisjaW5jbHVkZSA8 YXNtL2RlYnVnLW1vbml0b3JzLmg+CiAKICNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UUwogI2lu Y2x1ZGUgInRyYWNlLmgiCkBAIC0yNTIsNyArMjUzLDEyIEBAIGludCBoYW5kbGVfZXhpdChzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sCiAJCXJldHVybiAxOwogCWNh c2UgQVJNX0VYQ0VQVElPTl9FTDFfU0VSUk9SOgogCQlrdm1faW5qZWN0X3ZhYnQodmNwdSk7Ci0J CXJldHVybiAxOworCQkvKiBXZSBtYXkgc3RpbGwgbmVlZCB0byByZXR1cm4gZm9yIHNpbmdsZS1z dGVwICovCisJCWlmICghKCp2Y3B1X2Nwc3IodmNwdSkgJiBEQkdfU1BTUl9TUykKKwkJCSYmIGt2 bV9hcm1faGFuZGxlX3N0ZXBfZGVidWcodmNwdSwgcnVuKSkKKwkJCXJldHVybiAwOworCQllbHNl CisJCQlyZXR1cm4gMTsKIAljYXNlIEFSTV9FWENFUFRJT05fVFJBUDoKIAkJcmV0dXJuIGhhbmRs ZV90cmFwX2V4Y2VwdGlvbnModmNwdSwgcnVuKTsKIAljYXNlIEFSTV9FWENFUFRJT05fSFlQX0dP TkU6Ci0tIAoyLjE0LjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmt2bWFybSBtYWlsaW5nIGxpc3QKa3ZtYXJtQGxpc3RzLmNzLmNvbHVtYmlhLmVkdQpo dHRwczovL2xpc3RzLmNzLmNvbHVtYmlhLmVkdS9tYWlsbWFuL2xpc3RpbmZvL2t2bWFybQo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: cdall@kernel.org (Christoffer Dall) Date: Mon, 4 Dec 2017 15:03:42 +0100 Subject: [PULL 13/19] kvm: arm64: handle single-step during SError exceptions In-Reply-To: <20171204135637.21620-1-cdall@kernel.org> References: <20171204135637.21620-1-cdall@kernel.org> Message-ID: <20171204140348.21965-11-cdall@kernel.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org From: Alex Benn?e When an SError arrives during single-step both the SError and debug exceptions may be pending when the step is completed, and the architecture doesn't define the ordering of the two. This means that we can observe en SError even though we've just completed a step, without receiving a debug exception. In that case the DBG_SPSR_SS bit will have flipped as the instruction executed. After handling the abort in handle_exit() we test to see if the bit is clear and we were single-stepping before deciding if we need to exit to user space. Acked-by: Marc Zyngier Reviewed-by: Christoffer Dall Signed-off-by: Alex Benn?e Signed-off-by: Christoffer Dall --- arch/arm64/kvm/handle_exit.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c index 029c28dd25e9..304203fa9e33 100644 --- a/arch/arm64/kvm/handle_exit.c +++ b/arch/arm64/kvm/handle_exit.c @@ -28,6 +28,7 @@ #include #include #include +#include #define CREATE_TRACE_POINTS #include "trace.h" @@ -252,7 +253,12 @@ int handle_exit(struct kvm_vcpu *vcpu, struct kvm_run *run, return 1; case ARM_EXCEPTION_EL1_SERROR: kvm_inject_vabt(vcpu); - return 1; + /* We may still need to return for single-step */ + if (!(*vcpu_cpsr(vcpu) & DBG_SPSR_SS) + && kvm_arm_handle_step_debug(vcpu, run)) + return 0; + else + return 1; case ARM_EXCEPTION_TRAP: return handle_trap_exceptions(vcpu, run); case ARM_EXCEPTION_HYP_GONE: -- 2.14.2