[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH V2] target-ppc: ppc64 target's virtio can be eit
From: |
Alexander Graf |
Subject: |
Re: [Qemu-devel] [PATCH V2] target-ppc: ppc64 target's virtio can be either endian. |
Date: |
Wed, 11 Dec 2013 17:11:49 +0100 |
On 11.12.2013, at 16:59, Greg Kurz <address@hidden> wrote:
> We base it on the OS endian, as reflected by the endianness of the
> interrupt vectors (handled through the ILE bit in the LPCR register).
>
> This patch does two things:
> - make LPCR a KVM register
> - implement virtio_get_byteswap() over LPCR
>
> Using first_cpu to fetch the registers from KVM may look arbitrary
> and awkward, but it is okay because KVM sets/unsets the ILE bit on
> all CPUs.
>
> Changes in v2:
> - call cpu_synchronize_state() instead of kvm_arch_get_registers().
>
> Suggested-by: Benjamin Herrenschmidt <address@hidden>
> Signed-off-by: Rusty Russell <address@hidden>
> Signed-off-by: Greg Kurz <address@hidden>
> ---
>
> Alex,
>
> If you are interested, I can resend the whole virtio+endian serie or
> setup a git tree for you to pull from.
I think this patch should really go in after / with the virtio-endian series,
since as it is it would be dead code. So I'll just give you my ack here and
hope whoever gets the virtio-endianness bits in also includes that with my
reviewed-by line.
Reviewed-by: Alexander Graf <address@hidden>
Alex
>
> --
> Greg
>
> target-ppc/kvm.c | 4 ++++
> target-ppc/misc_helper.c | 12 ++++++++++++
> 2 files changed, 16 insertions(+)
>
> diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
> index 10d0cd9..b450a22 100644
> --- a/target-ppc/kvm.c
> +++ b/target-ppc/kvm.c
> @@ -869,6 +869,8 @@ int kvm_arch_put_registers(CPUState *cs, int level)
> DPRINTF("Warning: Unable to set VPA information to KVM\n");
> }
> }
> +
> + kvm_put_one_spr(cs, KVM_REG_PPC_LPCR, SPR_LPCR);
> #endif /* TARGET_PPC64 */
> }
>
> @@ -1091,6 +1093,8 @@ int kvm_arch_get_registers(CPUState *cs)
> DPRINTF("Warning: Unable to get VPA information from KVM\n");
> }
> }
> +
> + kvm_get_one_spr(cs, KVM_REG_PPC_LPCR, SPR_LPCR);
> #endif
> }
>
> diff --git a/target-ppc/misc_helper.c b/target-ppc/misc_helper.c
> index 616aab6..e8fc8a3 100644
> --- a/target-ppc/misc_helper.c
> +++ b/target-ppc/misc_helper.c
> @@ -20,6 +20,8 @@
> #include "helper.h"
>
> #include "helper_regs.h"
> +#include "hw/virtio/virtio.h"
> +#include "sysemu/kvm.h"
>
> /*****************************************************************************/
> /* SPR accesses */
> @@ -116,3 +118,13 @@ void ppc_store_msr(CPUPPCState *env, target_ulong value)
> {
> hreg_store_msr(env, value, 0);
> }
> +
> +bool virtio_get_byteswap(void)
> +{
> + PowerPCCPU *cp = POWERPC_CPU(first_cpu);
> + CPUPPCState *env = &cp->env;
> +
> + cpu_synchronize_state(first_cpu);
> +
> + return env->spr[SPR_LPCR] & LPCR_ILE;
> +}
>
- Re: [Qemu-devel] [PATCH] target-ppc: ppc64 target's virtio can be either endian., Alexander Graf, 2013/12/09
- Re: [Qemu-devel] [PATCH] target-ppc: ppc64 target's virtio can be either endian., Greg Kurz, 2013/12/09
- Re: [Qemu-devel] [PATCH] target-ppc: ppc64 target's virtio can be either endian., Alexander Graf, 2013/12/09
- Re: [Qemu-devel] [PATCH] target-ppc: ppc64 target's virtio can be either endian., Greg Kurz, 2013/12/10
- Re: [Qemu-devel] [PATCH] target-ppc: ppc64 target's virtio can be either endian., Alexander Graf, 2013/12/10
- Re: [Qemu-devel] [PATCH] target-ppc: ppc64 target's virtio can be either endian., Greg Kurz, 2013/12/10
- Re: [Qemu-devel] [PATCH] target-ppc: ppc64 target's virtio can be either endian., Alexander Graf, 2013/12/10
- [Qemu-devel] [PATCH V2] target-ppc: ppc64 target's virtio can be either endian., Greg Kurz, 2013/12/11
- Re: [Qemu-devel] [PATCH V2] target-ppc: ppc64 target's virtio can be either endian.,
Alexander Graf <=
- Re: [Qemu-devel] [PATCH V2] target-ppc: ppc64 target's virtio can be either endian., Greg Kurz, 2013/12/11
Re: [Qemu-devel] [Qemu-ppc] [PATCH] target-ppc: ppc64 target's virtio can be either endian., Benjamin Herrenschmidt, 2013/12/09