Re: [PATCH v11 5/8] KVM: PPC: ev_idle hcall support for e500 guests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 22.06.2012, at 22:04, Stuart Yoder wrote:

> From: Liu Yu-B13201 <Yu.Liu@xxxxxxxxxxxxx>
> 
> Signed-off-by: Liu Yu <yu.liu@xxxxxxxxxxxxx>
> [varun: 64-bit changes]
> Signed-off-by: Varun Sethi <Varun.Sethi@xxxxxxxxxxxxx>
> Signed-off-by: Stuart Yoder <stuart.yoder@xxxxxxxxxxxxx>
> ---
> -v11:
>   -added comment about origin of idle instruction sequence
>   -update for 64-bit support found in testing
> 
> arch/powerpc/include/asm/epapr_hcalls.h |   11 +++++----
> arch/powerpc/kernel/epapr_hcalls.S      |   32 +++++++++++++++++++++++++++++++
> arch/powerpc/kernel/epapr_paravirt.c    |   11 +++++++++-
> 3 files changed, 48 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/epapr_hcalls.h b/arch/powerpc/include/asm/epapr_hcalls.h
> index c0c7adc..833ce2c 100644
> --- a/arch/powerpc/include/asm/epapr_hcalls.h
> +++ b/arch/powerpc/include/asm/epapr_hcalls.h
> @@ -50,10 +50,6 @@
> #ifndef _EPAPR_HCALLS_H
> #define _EPAPR_HCALLS_H
> 
> -#include <linux/types.h>
> -#include <linux/errno.h>
> -#include <asm/byteorder.h>
> -
> #define EV_BYTE_CHANNEL_SEND		1
> #define EV_BYTE_CHANNEL_RECEIVE		2
> #define EV_BYTE_CHANNEL_POLL		3
> @@ -109,6 +105,11 @@
> #define EV_UNIMPLEMENTED	12	/* Unimplemented hypercall */
> #define EV_BUFFER_OVERFLOW	13	/* Caller-supplied buffer too small */
> 
> +#ifndef __ASSEMBLY__
> +#include <linux/types.h>
> +#include <linux/errno.h>
> +#include <asm/byteorder.h>
> +
> /*
>  * Hypercall register clobber list
>  *
> @@ -506,5 +507,5 @@ static inline unsigned int ev_idle(void)
> 
> 	return r3;
> }
> -
> +#endif /* !__ASSEMBLY__ */
> #endif
> diff --git a/arch/powerpc/kernel/epapr_hcalls.S b/arch/powerpc/kernel/epapr_hcalls.S
> index 697b390..eb19377 100644
> --- a/arch/powerpc/kernel/epapr_hcalls.S
> +++ b/arch/powerpc/kernel/epapr_hcalls.S
> @@ -8,13 +8,45 @@
>  */
> 
> #include <linux/threads.h>
> +#include <asm/epapr_hcalls.h>
> #include <asm/reg.h>
> #include <asm/page.h>
> #include <asm/cputable.h>
> #include <asm/thread_info.h>
> #include <asm/ppc_asm.h>
> +#include <asm/asm-compat.h>
> #include <asm/asm-offsets.h>
> 
> +/* epapr_ev_idle() was derived from e500_idle() */
> +_GLOBAL(epapr_ev_idle)
> +#ifndef CONFIG_PPC64
> +	rlwinm	r3, r1, 0, 0, 31-THREAD_SHIFT	/* current thread_info */
> +#else
> +	clrrdi	r3, r1, THREAD_SHIFT
> +#endif

Ben, would you be opposed to a macro that does this? Open-coding subtile details like this always makes me wary we could screw them up :)


Alex

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux