From: christoffer.dall@linaro.org (Christoffer Dall)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 4/5] ARM64: KVM: vgic_elrsr and vgic_eisr need to be byteswapped in BE case
Date: Wed, 19 Mar 2014 20:42:00 -0700 [thread overview]
Message-ID: <20140320034200.GT1297@cbox> (raw)
In-Reply-To: <1392184643-6108-5-git-send-email-victor.kamensky@linaro.org>
On Tue, Feb 11, 2014 at 09:57:22PM -0800, Victor Kamensky wrote:
> On arm64 'u32 vgic_eisr[2];' and 'u32 vgic_elrsr[2]' are accessed as
> one 'unsigned long *' bit fields, which has 64bit size. So we need to
> swap least significant word with most significant word when code reads
> those registers from h/w.
>
> Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
> ---
> arch/arm64/kvm/hyp.S | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/arch/arm64/kvm/hyp.S b/arch/arm64/kvm/hyp.S
> index 104216c..667293f 100644
> --- a/arch/arm64/kvm/hyp.S
> +++ b/arch/arm64/kvm/hyp.S
> @@ -415,10 +415,17 @@ CPU_BE( rev w11, w11 )
> str w4, [x3, #VGIC_CPU_HCR]
> str w5, [x3, #VGIC_CPU_VMCR]
> str w6, [x3, #VGIC_CPU_MISR]
> +#ifndef CONFIG_CPU_BIG_ENDIAN
> str w7, [x3, #VGIC_CPU_EISR]
> str w8, [x3, #(VGIC_CPU_EISR + 4)]
> str w9, [x3, #VGIC_CPU_ELRSR]
> str w10, [x3, #(VGIC_CPU_ELRSR + 4)]
> +#else
> + str w7, [x3, #(VGIC_CPU_EISR + 4)]
> + str w8, [x3, #VGIC_CPU_EISR]
> + str w9, [x3, #(VGIC_CPU_ELRSR + 4)]
> + str w10, [x3, #VGIC_CPU_ELRSR]
> +#endif
> str w11, [x3, #VGIC_CPU_APR]
>
> /* Clear GICH_HCR */
> --
> 1.8.1.4
>
Isn't it the vgic emulation code that's incorrect then? The GICv2
hardware defines two registers, GICH_ELRSR0 and GICH_ELRSR1 (and
GICH_EISR0 and GICH_EISR1) and I would find it most logic that
vgic_cpu->elrsr[0] == GICH_ELRSR0, always.
Marc?
-Christoffer
next prev parent reply other threads:[~2014-03-20 3:42 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-12 5:57 [PATCH 0/5] aarch64 BE kvm support Victor Kamensky
2014-02-12 5:57 ` [PATCH 1/5] ARM64: KVM: MMIO support BE host running LE code Victor Kamensky
2014-03-20 3:41 ` Christoffer Dall
2014-02-12 5:57 ` [PATCH 2/5] ARM64: KVM: set and get of sys registers in BE case Victor Kamensky
2014-03-20 3:41 ` Christoffer Dall
2014-02-12 5:57 ` [PATCH 3/5] ARM64: KVM: store kvm_vcpu_fault_info est_el2 as word Victor Kamensky
2014-03-20 3:41 ` Christoffer Dall
2014-02-12 5:57 ` [PATCH 4/5] ARM64: KVM: vgic_elrsr and vgic_eisr need to be byteswapped in BE case Victor Kamensky
2014-02-12 7:15 ` Alexander Graf
2014-03-20 3:42 ` Christoffer Dall [this message]
2014-02-12 5:57 ` [PATCH 5/5] ARM64: KVM: fix vgic_bitmap_get_reg function for BE 64bit case Victor Kamensky
2014-03-20 3:43 ` 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=20140320034200.GT1297@cbox \
--to=christoffer.dall@linaro.org \
--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.