From: cdall@cs.columbia.edu (Christoffer Dall)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 5/7] ARM: KVM: don't special case PC when doing an MMIO
Date: Mon, 27 May 2013 19:11:57 -0700 [thread overview]
Message-ID: <20130528021157.GE16071@ubuntu> (raw)
In-Reply-To: <1368529900-22572-6-git-send-email-marc.zyngier@arm.com>
On Tue, May 14, 2013 at 12:11:38PM +0100, Marc Zyngier wrote:
> Admitedly, reading a MMIO register to load PC is very weird.
> Writing PC to a MMIO register is probably even worse. But
> the architecture doesn't forbid any of these, and injecting
> a Prefetch Abort is the wrong thing to do anyway.
>
> Remove this check altogether, and let the adventurous guest
> wander into LaLaLand if they feel compelled to do so.
>
> Reported-by: Catalin Marinas <catalin.marinas@arm.com>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> ---
> arch/arm/include/asm/kvm_emulate.h | 5 -----
> arch/arm/kvm/mmio.c | 6 ------
> 2 files changed, 11 deletions(-)
>
> diff --git a/arch/arm/include/asm/kvm_emulate.h b/arch/arm/include/asm/kvm_emulate.h
> index 82b4bab..a464e8d 100644
> --- a/arch/arm/include/asm/kvm_emulate.h
> +++ b/arch/arm/include/asm/kvm_emulate.h
> @@ -65,11 +65,6 @@ static inline bool vcpu_mode_priv(struct kvm_vcpu *vcpu)
> return cpsr_mode > USR_MODE;;
> }
>
> -static inline bool kvm_vcpu_reg_is_pc(struct kvm_vcpu *vcpu, int reg)
> -{
> - return reg == 15;
> -}
> -
> static inline u32 kvm_vcpu_get_hsr(struct kvm_vcpu *vcpu)
> {
> return vcpu->arch.fault.hsr;
> diff --git a/arch/arm/kvm/mmio.c b/arch/arm/kvm/mmio.c
> index 72a12f2..b8e06b7 100644
> --- a/arch/arm/kvm/mmio.c
> +++ b/arch/arm/kvm/mmio.c
> @@ -86,12 +86,6 @@ static int decode_hsr(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
> sign_extend = kvm_vcpu_dabt_issext(vcpu);
> rt = kvm_vcpu_dabt_get_rd(vcpu);
>
> - if (kvm_vcpu_reg_is_pc(vcpu, rt)) {
> - /* IO memory trying to read/write pc */
> - kvm_inject_pabt(vcpu, kvm_vcpu_get_hfar(vcpu));
> - return 1;
> - }
> -
> mmio->is_write = is_write;
> mmio->phys_addr = fault_ipa;
> mmio->len = len;
> --
> 1.8.2.3
>
>
Applied, thanks.
-Christoffer
WARNING: multiple messages have this Message-ID (diff)
From: Christoffer Dall <cdall@cs.columbia.edu>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: linux-arm-kernel@lists.infradead.org,
kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org,
Catalin Marinas <catalin.marinas@arm.com>
Subject: Re: [PATCH v3 5/7] ARM: KVM: don't special case PC when doing an MMIO
Date: Mon, 27 May 2013 19:11:57 -0700 [thread overview]
Message-ID: <20130528021157.GE16071@ubuntu> (raw)
In-Reply-To: <1368529900-22572-6-git-send-email-marc.zyngier@arm.com>
On Tue, May 14, 2013 at 12:11:38PM +0100, Marc Zyngier wrote:
> Admitedly, reading a MMIO register to load PC is very weird.
> Writing PC to a MMIO register is probably even worse. But
> the architecture doesn't forbid any of these, and injecting
> a Prefetch Abort is the wrong thing to do anyway.
>
> Remove this check altogether, and let the adventurous guest
> wander into LaLaLand if they feel compelled to do so.
>
> Reported-by: Catalin Marinas <catalin.marinas@arm.com>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> ---
> arch/arm/include/asm/kvm_emulate.h | 5 -----
> arch/arm/kvm/mmio.c | 6 ------
> 2 files changed, 11 deletions(-)
>
> diff --git a/arch/arm/include/asm/kvm_emulate.h b/arch/arm/include/asm/kvm_emulate.h
> index 82b4bab..a464e8d 100644
> --- a/arch/arm/include/asm/kvm_emulate.h
> +++ b/arch/arm/include/asm/kvm_emulate.h
> @@ -65,11 +65,6 @@ static inline bool vcpu_mode_priv(struct kvm_vcpu *vcpu)
> return cpsr_mode > USR_MODE;;
> }
>
> -static inline bool kvm_vcpu_reg_is_pc(struct kvm_vcpu *vcpu, int reg)
> -{
> - return reg == 15;
> -}
> -
> static inline u32 kvm_vcpu_get_hsr(struct kvm_vcpu *vcpu)
> {
> return vcpu->arch.fault.hsr;
> diff --git a/arch/arm/kvm/mmio.c b/arch/arm/kvm/mmio.c
> index 72a12f2..b8e06b7 100644
> --- a/arch/arm/kvm/mmio.c
> +++ b/arch/arm/kvm/mmio.c
> @@ -86,12 +86,6 @@ static int decode_hsr(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
> sign_extend = kvm_vcpu_dabt_issext(vcpu);
> rt = kvm_vcpu_dabt_get_rd(vcpu);
>
> - if (kvm_vcpu_reg_is_pc(vcpu, rt)) {
> - /* IO memory trying to read/write pc */
> - kvm_inject_pabt(vcpu, kvm_vcpu_get_hfar(vcpu));
> - return 1;
> - }
> -
> mmio->is_write = is_write;
> mmio->phys_addr = fault_ipa;
> mmio->len = len;
> --
> 1.8.2.3
>
>
Applied, thanks.
-Christoffer
next prev parent reply other threads:[~2013-05-28 2:11 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-14 11:11 [PATCH v3 0/7] ARM: KVM: various mmu related fixes for 3.10 Marc Zyngier
2013-05-14 11:11 ` Marc Zyngier
2013-05-14 11:11 ` [PATCH v3 1/7] ARM: KVM: be more thorough when invalidating TLBs Marc Zyngier
2013-05-14 11:11 ` Marc Zyngier
2013-05-28 1:53 ` Christoffer Dall
2013-05-28 1:53 ` Christoffer Dall
2013-05-14 11:11 ` [PATCH v3 2/7] ARM: KVM: remove dead prototype for __kvm_tlb_flush_vmid Marc Zyngier
2013-05-14 11:11 ` Marc Zyngier
2013-05-28 1:54 ` Christoffer Dall
2013-05-28 1:54 ` Christoffer Dall
2013-05-14 11:11 ` [PATCH v3 3/7] ARM: KVM: relax cache maintainance when building page tables Marc Zyngier
2013-05-14 11:11 ` Marc Zyngier
2013-05-14 13:05 ` Will Deacon
2013-05-14 13:05 ` Will Deacon
2013-05-28 2:10 ` Christoffer Dall
2013-05-28 2:10 ` Christoffer Dall
2013-05-14 11:11 ` [PATCH v3 4/7] ARM: KVM: use phys_addr_t instead of unsigned long long for HYP PGDs Marc Zyngier
2013-05-14 11:11 ` Marc Zyngier
2013-05-28 2:11 ` Christoffer Dall
2013-05-28 2:11 ` Christoffer Dall
2013-05-14 11:11 ` [PATCH v3 5/7] ARM: KVM: don't special case PC when doing an MMIO Marc Zyngier
2013-05-14 11:11 ` Marc Zyngier
2013-05-28 2:11 ` Christoffer Dall [this message]
2013-05-28 2:11 ` Christoffer Dall
2013-05-14 11:11 ` [PATCH v3 6/7] ARM: KVM: get rid of S2_PGD_SIZE Marc Zyngier
2013-05-14 11:11 ` Marc Zyngier
2013-05-28 2:12 ` Christoffer Dall
2013-05-28 2:12 ` Christoffer Dall
2013-05-28 2:15 ` Christoffer Dall
2013-05-28 2:15 ` Christoffer Dall
2013-05-14 11:11 ` [PATCH v3 7/7] ARM: KVM: drop use of PAGE_S2_DEVICE Marc Zyngier
2013-05-14 11:11 ` Marc Zyngier
2013-05-27 20:01 ` Christoffer Dall
2013-05-27 20:01 ` Christoffer Dall
2013-05-28 10:11 ` Marc Zyngier
2013-05-28 10:11 ` Marc Zyngier
2013-05-28 14:16 ` Christoffer Dall
2013-05-28 14:16 ` Christoffer Dall
2013-05-28 14:25 ` Marc Zyngier
2013-05-28 14:25 ` Marc Zyngier
2013-05-28 14:29 ` Christoffer Dall
2013-05-28 14:29 ` Christoffer Dall
2013-05-21 16:07 ` [PATCH v3 0/7] ARM: KVM: various mmu related fixes for 3.10 Catalin Marinas
2013-05-21 16:07 ` Catalin Marinas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130528021157.GE16071@ubuntu \
--to=cdall@cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.