On 08.03.2012, at 00:12, Stuart Yoder wrote: > From: Liu Yu-B13201 <Yu.Liu@xxxxxxxxxxxxx> > > Discard the old way that invoke hypercall, > instead, use epapr paravirt. > > Signed-off-by: Liu Yu <yu.liu@xxxxxxxxxxxxx> > [stuart.yoder@xxxxxxxxxxxxx: kconfig fixes] > Signed-off-by: Stuart Yoder <stuart.yoder@xxxxxxxxxxxxx> > --- > 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" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html