Message ID | 1331161979-12759-5-git-send-email-stuart.yoder@freescale.com |
---|---|
State | New, archived |
Headers | show |
On 08.03.2012, at 00:12, Stuart Yoder wrote: > From: Liu Yu-B13201 <Yu.Liu@freescale.com> > > Discard the old way that invoke hypercall, > instead, use epapr paravirt. > > Signed-off-by: Liu Yu <yu.liu@freescale.com> > [stuart.yoder@freescale.com: kconfig fixes] > Signed-off-by: Stuart Yoder <stuart.yoder@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 majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 03/07/2012 05:37 PM, Alexander Graf wrote: > > On 08.03.2012, at 00:12, Stuart Yoder wrote: > >> 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? Probably not that lack a /hypervisor altogether, but it's possible someone's using a Topaz that's too old to have hcall-instructions, which was added about a year and a half ago. -Scott -- To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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 help The Freescale hypervisor management driver provides several services to drivers and applications related to the Freescale hypervisor: