From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex =?utf-8?Q?Benn=C3=A9e?= Subject: Re: [PATCH 1/2] kvm/arm: skip MMIO insn after emulation Date: Fri, 09 Nov 2018 15:43:11 +0000 Message-ID: <87h8gq5ka8.fsf@linaro.org> References: <20181109150711.45864-1-mark.rutland@arm.com> <20181109150711.45864-2-mark.rutland@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <20181109150711.45864-2-mark.rutland@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Mark Rutland Cc: marc.zyngier@arm.com, peter.maydell@linaro.org, kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org, christoffer.dall@arm.com List-Id: kvmarm@lists.cs.columbia.edu Ck1hcmsgUnV0bGFuZCA8bWFyay5ydXRsYW5kQGFybS5jb20+IHdyaXRlczoKCj4gV2hlbiB3ZSBl bXVsYXRlIGFuIE1NSU8gaW5zdHJ1Y3Rpb24sIHdlIGFkdmFuY2UgdGhlIENQVSBzdGF0ZSB3aXRo aW4KPiBkZWNvZGVfaHNyKCksIGJlZm9yZSBlbXVsYXRpbmcgdGhlIGluc3RydWN0aW9uIGVmZmVj dHMuCj4KPiBIYXZpbmcgdGhpcyBsb2dpYyBpbiBkZWNvZGVfaHNyKCkgaXMgb3BhcXVlLCBhbmQg YWR2YW5jaW5nIHRoZSBzdGF0ZQo+IGJlZm9yZSBlbXVsYXRpb24gaXMgcHJvYmxlbWF0aWMuIEl0 IGdldHMgaW4gdGhlIHdheSBvZiBhcHBseWluZwo+IGNvbnNpc3RlbnQgc2luZ2xlLXN0ZXAgbG9n aWMsIGFuZCBpdCBwcmV2ZW50cyB1cyBmcm9tIGJlaW5nIGFibGUgdG8gZmFpbAo+IGFuIE1NSU8g aW5zdHJ1Y3Rpb24gd2l0aCBhIHN5bmNocm9ub3VzIGV4Y2VwdGlvbi4KPgo+IENsZWFuIHRoaXMg dXAgYnkgb25seSBhZHZhbmNpbmcgdGhlIENQVSBzdGF0ZSAqYWZ0ZXIqIHRoZSBlZmZlY3RzIG9m IHRoZQo+IGluc3RydWN0aW9uIGFyZSBlbXVsYXRlZC4KPgo+IFNpZ25lZC1vZmYtYnk6IE1hcmsg UnV0bGFuZCA8bWFyay5ydXRsYW5kQGFybS5jb20+Cj4gQ2M6IEFsZXggQmVubsOpZSA8YWxleC5i ZW5uZWVAbGluYXJvLm9yZz4KPiBDYzogQ2hyaXN0b2ZmZXIgRGFsbCA8Y2hyaXN0b2ZmZXIuZGFs bEBhcm0uY29tPgo+IENjOiBNYXJjIFp5bmdpZXIgPG1hcmMuenluZ2llckBhcm0uY29tPgo+IENj OiBQZXRlciBNYXlkZWxsIDxwZXRlci5tYXlkZWxsQGxpbmFyby5vcmc+CgpSZXZpZXdlZC1ieTog QWxleCBCZW5uw6llIDxhbGV4LmJlbm5lZUBsaW5hcm8ub3JnPgoKPiAtLS0KPiAgdmlydC9rdm0v YXJtL21taW8uYyB8IDExICsrKysrKy0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlv bnMoKyksIDUgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvdmlydC9rdm0vYXJtL21taW8u YyBiL3ZpcnQva3ZtL2FybS9tbWlvLmMKPiBpbmRleCBkYWM3Y2ViMWE2NzcuLjA4NDQzYTE1ZTZi ZSAxMDA2NDQKPiAtLS0gYS92aXJ0L2t2bS9hcm0vbW1pby5jCj4gKysrIGIvdmlydC9rdm0vYXJt L21taW8uYwo+IEBAIC0xMTcsNiArMTE3LDEyIEBAIGludCBrdm1faGFuZGxlX21taW9fcmV0dXJu KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bikKPiAgCQl2Y3B1X3Nl dF9yZWcodmNwdSwgdmNwdS0+YXJjaC5tbWlvX2RlY29kZS5ydCwgZGF0YSk7Cj4gIAl9Cj4KPiAr CS8qCj4gKwkgKiBUaGUgTU1JTyBpbnN0cnVjdGlvbiBpcyBlbXVsYXRlZCBhbmQgc2hvdWxkIG5v dCBiZSByZS1leGVjdXRlZAo+ICsJICogaW4gdGhlIGd1ZXN0Lgo+ICsJICovCj4gKwlrdm1fc2tp cF9pbnN0cih2Y3B1LCBrdm1fdmNwdV90cmFwX2lsX2lzMzJiaXQodmNwdSkpOwo+ICsKPiAgCXJl dHVybiAwOwo+ICB9Cj4KPiBAQCAtMTQ0LDExICsxNTAsNiBAQCBzdGF0aWMgaW50IGRlY29kZV9o c3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sICppc193cml0ZSwgaW50ICpsZW4pCj4gIAl2 Y3B1LT5hcmNoLm1taW9fZGVjb2RlLnNpZ25fZXh0ZW5kID0gc2lnbl9leHRlbmQ7Cj4gIAl2Y3B1 LT5hcmNoLm1taW9fZGVjb2RlLnJ0ID0gcnQ7Cj4KPiAtCS8qCj4gLQkgKiBUaGUgTU1JTyBpbnN0 cnVjdGlvbiBpcyBlbXVsYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSByZS1leGVjdXRlZAo+IC0JICog aW4gdGhlIGd1ZXN0Lgo+IC0JICovCj4gLQlrdm1fc2tpcF9pbnN0cih2Y3B1LCBrdm1fdmNwdV90 cmFwX2lsX2lzMzJiaXQodmNwdSkpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KCgotLQpBbGV4IEJlbm7D qWUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4 LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFy bS1rZXJuZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: alex.bennee@linaro.org (Alex =?utf-8?Q?Benn=C3=A9e?=) Date: Fri, 09 Nov 2018 15:43:11 +0000 Subject: [PATCH 1/2] kvm/arm: skip MMIO insn after emulation In-Reply-To: <20181109150711.45864-2-mark.rutland@arm.com> References: <20181109150711.45864-1-mark.rutland@arm.com> <20181109150711.45864-2-mark.rutland@arm.com> Message-ID: <87h8gq5ka8.fsf@linaro.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Mark Rutland writes: > When we emulate an MMIO instruction, we advance the CPU state within > decode_hsr(), before emulating the instruction effects. > > Having this logic in decode_hsr() is opaque, and advancing the state > before emulation is problematic. It gets in the way of applying > consistent single-step logic, and it prevents us from being able to fail > an MMIO instruction with a synchronous exception. > > Clean this up by only advancing the CPU state *after* the effects of the > instruction are emulated. > > Signed-off-by: Mark Rutland > Cc: Alex Benn?e > Cc: Christoffer Dall > Cc: Marc Zyngier > Cc: Peter Maydell Reviewed-by: Alex Benn?e > --- > virt/kvm/arm/mmio.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/virt/kvm/arm/mmio.c b/virt/kvm/arm/mmio.c > index dac7ceb1a677..08443a15e6be 100644 > --- a/virt/kvm/arm/mmio.c > +++ b/virt/kvm/arm/mmio.c > @@ -117,6 +117,12 @@ int kvm_handle_mmio_return(struct kvm_vcpu *vcpu, struct kvm_run *run) > vcpu_set_reg(vcpu, vcpu->arch.mmio_decode.rt, data); > } > > + /* > + * The MMIO instruction is emulated and should not be re-executed > + * in the guest. > + */ > + kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu)); > + > return 0; > } > > @@ -144,11 +150,6 @@ static int decode_hsr(struct kvm_vcpu *vcpu, bool *is_write, int *len) > vcpu->arch.mmio_decode.sign_extend = sign_extend; > vcpu->arch.mmio_decode.rt = rt; > > - /* > - * The MMIO instruction is emulated and should not be re-executed > - * in the guest. > - */ > - kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu)); > return 0; > } -- Alex Benn?e