From: Vladimir Murzin <vladimir.murzin@arm.com>
To: Marc Zyngier <marc.zyngier@arm.com>,
"kvmarm@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH] arm64: KVM: Fix HCR setting for 32bit guests
Date: Wed, 7 Jan 2015 10:54:01 +0000 [thread overview]
Message-ID: <54AD1049.9050202@arm.com> (raw)
In-Reply-To: <1420627503-25183-1-git-send-email-marc.zyngier@arm.com>
Hi Marc,
On 07/01/15 10:45, Marc Zyngier wrote:
> Commit b856a59141b1 (arm/arm64: KVM: Reset the HCR on each vcpu
> when resetting the vcpu) moved the init of the HCR register to
> happen later in the init of a vcpu, but left out the fixup
> done in kvm_reset_vcpu when preparing for a 32bit guest.
>
> As a result, the 32bit guest is run as a 64bit guest, but the
> rest of the kernel still manages it as a 32bit. Fun follows.
>
> Moving the fixup to vcpu_reset_hcr solves the problem for good.
>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> ---
> arch/arm64/include/asm/kvm_emulate.h | 2 ++
> arch/arm64/kvm/reset.c | 1 -
> 2 files changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h
> index 8127e45..36dcef6 100644
> --- a/arch/arm64/include/asm/kvm_emulate.h
> +++ b/arch/arm64/include/asm/kvm_emulate.h
> @@ -41,6 +41,8 @@ void kvm_inject_pabt(struct kvm_vcpu *vcpu, unsigned long addr);
> static inline void vcpu_reset_hcr(struct kvm_vcpu *vcpu)
> {
> vcpu->arch.hcr_el2 = HCR_GUEST_FLAGS;
> + if (test_bit(KVM_ARM_VCPU_EL1_32BIT, vcpu->arch.features))
^
whitespace is here
Vladimir
> + vcpu->arch.hcr_el2 &= ~HCR_RW;
> }
>
> static inline unsigned long *vcpu_pc(const struct kvm_vcpu *vcpu)
> diff --git a/arch/arm64/kvm/reset.c b/arch/arm64/kvm/reset.c
> index 70a7816..0b43265 100644
> --- a/arch/arm64/kvm/reset.c
> +++ b/arch/arm64/kvm/reset.c
> @@ -90,7 +90,6 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)
> if (!cpu_has_32bit_el1())
> return -EINVAL;
> cpu_reset = &default_regs_reset32;
> - vcpu->arch.hcr_el2 &= ~HCR_RW;
> } else {
> cpu_reset = &default_regs_reset;
> }
>
-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No: 2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No: 2548782
next prev parent reply other threads:[~2015-01-07 10:54 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-07 10:45 [PATCH] arm64: KVM: Fix HCR setting for 32bit guests Marc Zyngier
2015-01-07 10:54 ` Vladimir Murzin [this message]
2015-01-07 14:17 ` Christoffer Dall
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=54AD1049.9050202@arm.com \
--to=vladimir.murzin@arm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=marc.zyngier@arm.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox