On 08.03.2012, at 00:12, Stuart Yoder wrote:

> From: Liu Yu-B13201 <yu....@freescale.com>
> 
> Discard the old way that invoke hypercall,
> instead, use epapr paravirt.
> 
> Signed-off-by: Liu Yu <yu....@freescale.com>
> [stuart.yo...@freescale.com: kconfig fixes]
> Signed-off-by: Stuart Yoder <stuart.yo...@freescale.com>
> ---
> v9: no changes
> 
> arch/powerpc/include/asm/epapr_hcalls.h |   22 +++++++++---------
> arch/powerpc/include/asm/fsl_hcalls.h   |   36 +++++++++++++++---------------
> arch/powerpc/platforms/Kconfig          |    1 +
> drivers/tty/Kconfig                     |    1 +
> drivers/virt/Kconfig                    |    1 +
> 5 files changed, 32 insertions(+), 29 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/epapr_hcalls.h 
> b/arch/powerpc/include/asm/epapr_hcalls.h
> index 78460ac..b95758d 100644
> --- a/arch/powerpc/include/asm/epapr_hcalls.h
> +++ b/arch/powerpc/include/asm/epapr_hcalls.h
> @@ -189,7 +189,7 @@ static inline unsigned int ev_int_set_config(unsigned int 
> interrupt,
>       r5  = priority;
>       r6  = destination;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "+r" (r4), "+r" (r5), "+r" (r6)
>               : : EV_HCALL_CLOBBERS4
>       );
> @@ -218,7 +218,7 @@ static inline unsigned int ev_int_get_config(unsigned int 
> interrupt,
>       r11 = EV_HCALL_TOKEN(EV_INT_GET_CONFIG);
>       r3 = interrupt;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "=r" (r4), "=r" (r5), "=r" (r6)
>               : : EV_HCALL_CLOBBERS4
>       );
> @@ -248,7 +248,7 @@ static inline unsigned int ev_int_set_mask(unsigned int 
> interrupt,
>       r3 = interrupt;
>       r4 = mask;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "+r" (r4)
>               : : EV_HCALL_CLOBBERS2
>       );
> @@ -273,7 +273,7 @@ static inline unsigned int ev_int_get_mask(unsigned int 
> interrupt,
>       r11 = EV_HCALL_TOKEN(EV_INT_GET_MASK);
>       r3 = interrupt;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "=r" (r4)
>               : : EV_HCALL_CLOBBERS2
>       );
> @@ -301,7 +301,7 @@ static inline unsigned int ev_int_eoi(unsigned int 
> interrupt)
>       r11 = EV_HCALL_TOKEN(EV_INT_EOI);
>       r3 = interrupt;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3)
>               : : EV_HCALL_CLOBBERS1
>       );
> @@ -340,7 +340,7 @@ static inline unsigned int ev_byte_channel_send(unsigned 
> int handle,
>       r7 = be32_to_cpu(p[2]);
>       r8 = be32_to_cpu(p[3]);
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3),
>                 "+r" (r4), "+r" (r5), "+r" (r6), "+r" (r7), "+r" (r8)
>               : : EV_HCALL_CLOBBERS6
> @@ -379,7 +379,7 @@ static inline unsigned int 
> ev_byte_channel_receive(unsigned int handle,
>       r3 = handle;
>       r4 = *count;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "+r" (r4),
>                 "=r" (r5), "=r" (r6), "=r" (r7), "=r" (r8)
>               : : EV_HCALL_CLOBBERS6
> @@ -417,7 +417,7 @@ static inline unsigned int ev_byte_channel_poll(unsigned 
> int handle,
>       r11 = EV_HCALL_TOKEN(EV_BYTE_CHANNEL_POLL);
>       r3 = handle;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "=r" (r4), "=r" (r5)
>               : : EV_HCALL_CLOBBERS3
>       );
> @@ -450,7 +450,7 @@ static inline unsigned int ev_int_iack(unsigned int 
> handle,
>       r11 = EV_HCALL_TOKEN(EV_INT_IACK);
>       r3 = handle;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "=r" (r4)
>               : : EV_HCALL_CLOBBERS2
>       );
> @@ -474,7 +474,7 @@ static inline unsigned int ev_doorbell_send(unsigned int 
> handle)
>       r11 = EV_HCALL_TOKEN(EV_DOORBELL_SEND);
>       r3 = handle;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3)
>               : : EV_HCALL_CLOBBERS1
>       );
> @@ -494,7 +494,7 @@ static inline unsigned int ev_idle(void)
> 
>       r11 = EV_HCALL_TOKEN(EV_IDLE);
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "=r" (r3)
>               : : EV_HCALL_CLOBBERS1
>       );
> diff --git a/arch/powerpc/include/asm/fsl_hcalls.h 
> b/arch/powerpc/include/asm/fsl_hcalls.h
> index 922d9b5..3abb583 100644
> --- a/arch/powerpc/include/asm/fsl_hcalls.h
> +++ b/arch/powerpc/include/asm/fsl_hcalls.h
> @@ -96,7 +96,7 @@ static inline unsigned int fh_send_nmi(unsigned int 
> vcpu_mask)
>       r11 = FH_HCALL_TOKEN(FH_SEND_NMI);
>       r3 = vcpu_mask;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3)
>               : : EV_HCALL_CLOBBERS1
>       );
> @@ -151,7 +151,7 @@ static inline unsigned int fh_partition_get_dtprop(int 
> handle,
>       r9 = (uint32_t)propvalue_addr;
>       r10 = *propvalue_len;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11),
>                 "+r" (r3), "+r" (r4), "+r" (r5), "+r" (r6), "+r" (r7),
>                 "+r" (r8), "+r" (r9), "+r" (r10)
> @@ -205,7 +205,7 @@ static inline unsigned int fh_partition_set_dtprop(int 
> handle,
>       r9 = (uint32_t)propvalue_addr;
>       r10 = propvalue_len;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11),
>                 "+r" (r3), "+r" (r4), "+r" (r5), "+r" (r6), "+r" (r7),
>                 "+r" (r8), "+r" (r9), "+r" (r10)
> @@ -229,7 +229,7 @@ static inline unsigned int fh_partition_restart(unsigned 
> int partition)
>       r11 = FH_HCALL_TOKEN(FH_PARTITION_RESTART);
>       r3 = partition;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3)
>               : : EV_HCALL_CLOBBERS1
>       );
> @@ -262,7 +262,7 @@ static inline unsigned int 
> fh_partition_get_status(unsigned int partition,
>       r11 = FH_HCALL_TOKEN(FH_PARTITION_GET_STATUS);
>       r3 = partition;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "=r" (r4)
>               : : EV_HCALL_CLOBBERS2
>       );
> @@ -295,7 +295,7 @@ static inline unsigned int fh_partition_start(unsigned 
> int partition,
>       r4 = entry_point;
>       r5 = load;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "+r" (r4), "+r" (r5)
>               : : EV_HCALL_CLOBBERS3
>       );
> @@ -317,7 +317,7 @@ static inline unsigned int fh_partition_stop(unsigned int 
> partition)
>       r11 = FH_HCALL_TOKEN(FH_PARTITION_STOP);
>       r3 = partition;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3)
>               : : EV_HCALL_CLOBBERS1
>       );
> @@ -376,7 +376,7 @@ static inline unsigned int fh_partition_memcpy(unsigned 
> int source,
> #endif
>       r7 = count;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11),
>                 "+r" (r3), "+r" (r4), "+r" (r5), "+r" (r6), "+r" (r7)
>               : : EV_HCALL_CLOBBERS5
> @@ -399,7 +399,7 @@ static inline unsigned int fh_dma_enable(unsigned int 
> liodn)
>       r11 = FH_HCALL_TOKEN(FH_DMA_ENABLE);
>       r3 = liodn;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3)
>               : : EV_HCALL_CLOBBERS1
>       );
> @@ -421,7 +421,7 @@ static inline unsigned int fh_dma_disable(unsigned int 
> liodn)
>       r11 = FH_HCALL_TOKEN(FH_DMA_DISABLE);
>       r3 = liodn;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3)
>               : : EV_HCALL_CLOBBERS1
>       );
> @@ -447,7 +447,7 @@ static inline unsigned int fh_vmpic_get_msir(unsigned int 
> interrupt,
>       r11 = FH_HCALL_TOKEN(FH_VMPIC_GET_MSIR);
>       r3 = interrupt;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "=r" (r4)
>               : : EV_HCALL_CLOBBERS2
>       );
> @@ -469,7 +469,7 @@ static inline unsigned int fh_system_reset(void)
> 
>       r11 = FH_HCALL_TOKEN(FH_SYSTEM_RESET);
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "=r" (r3)
>               : : EV_HCALL_CLOBBERS1
>       );
> @@ -506,7 +506,7 @@ static inline unsigned int fh_err_get_info(int queue, 
> uint32_t *bufsize,
>       r6 = addr_lo;
>       r7 = peek;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "+r" (r4), "+r" (r5), "+r" (r6),
>                 "+r" (r7)
>               : : EV_HCALL_CLOBBERS5
> @@ -542,7 +542,7 @@ static inline unsigned int fh_get_core_state(unsigned int 
> handle,
>       r3 = handle;
>       r4 = vcpu;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "+r" (r4)
>               : : EV_HCALL_CLOBBERS2
>       );
> @@ -572,7 +572,7 @@ static inline unsigned int fh_enter_nap(unsigned int 
> handle, unsigned int vcpu)
>       r3 = handle;
>       r4 = vcpu;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "+r" (r4)
>               : : EV_HCALL_CLOBBERS2
>       );
> @@ -597,7 +597,7 @@ static inline unsigned int fh_exit_nap(unsigned int 
> handle, unsigned int vcpu)
>       r3 = handle;
>       r4 = vcpu;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3), "+r" (r4)
>               : : EV_HCALL_CLOBBERS2
>       );
> @@ -618,7 +618,7 @@ static inline unsigned int fh_claim_device(unsigned int 
> handle)
>       r11 = FH_HCALL_TOKEN(FH_CLAIM_DEVICE);
>       r3 = handle;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3)
>               : : EV_HCALL_CLOBBERS1
>       );
> @@ -645,7 +645,7 @@ static inline unsigned int fh_partition_stop_dma(unsigned 
> int handle)
>       r11 = FH_HCALL_TOKEN(FH_PARTITION_STOP_DMA);
>       r3 = handle;
> 
> -     __asm__ __volatile__ ("sc 1"
> +     asm volatile("bl        epapr_hypercall_start"
>               : "+r" (r11), "+r" (r3)
>               : : EV_HCALL_CLOBBERS1
>       );
> diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig
> index e0c0834..81e60e0 100644
> --- a/arch/powerpc/platforms/Kconfig
> +++ b/arch/powerpc/platforms/Kconfig
> @@ -90,6 +90,7 @@ config MPIC
> config PPC_EPAPR_HV_PIC
>       bool
>       default n
> +     select EPAPR_PARAVIRT
> 
> config MPIC_WEIRD
>       bool
> diff --git a/drivers/tty/Kconfig b/drivers/tty/Kconfig
> index f1ea59b..9ac4bc6 100644
> --- a/drivers/tty/Kconfig
> +++ b/drivers/tty/Kconfig
> @@ -354,6 +354,7 @@ config TRACE_SINK
> config PPC_EPAPR_HV_BYTECHAN
>       tristate "ePAPR hypervisor byte channel driver"
>       depends on PPC
> +     select EPAPR_PARAVIRT
>       help
>         This driver creates /dev entries for each ePAPR hypervisor byte
>         channel, thereby allowing applications to communicate with byte
> diff --git a/drivers/virt/Kconfig b/drivers/virt/Kconfig
> index 2dcdbc9..99ebdde 100644
> --- a/drivers/virt/Kconfig
> +++ b/drivers/virt/Kconfig
> @@ -15,6 +15,7 @@ if VIRT_DRIVERS
> config FSL_HV_MANAGER
>       tristate "Freescale hypervisor management driver"
>       depends on FSL_SOC
> +     select EPAPR_PARAVIRT

Do you maybe have older versions of topaz that don't expose a /hypervisor node 
for which you want to have fallback code in?


Alex

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

Reply via email to