Re: [RFC PATCH 08/11] kvm: powerpc: book3s: Support building HV and PR KVM as module

2013-09-30 Thread Alexander Graf

On 27.09.2013, at 15:08, Aneesh Kumar K.V wrote:

 Alexander Graf ag...@suse.de writes:
 
 On 27.09.2013, at 12:03, Aneesh Kumar K.V wrote:
 
 diff --git a/arch/powerpc/kvm/book3s_64_mmu_host.c 
 b/arch/powerpc/kvm/book3s_64_mmu_host.c
 index fd5b393..775d368 100644
 --- a/arch/powerpc/kvm/book3s_64_mmu_host.c
 +++ b/arch/powerpc/kvm/book3s_64_mmu_host.c
 @@ -27,6 +27,7 @@
 #include asm/machdep.h
 #include asm/mmu_context.h
 #include asm/hw_irq.h
 +
 
 Stray whitespace change
 
 
 will fix
 
 #include trace_pr.h
 
 #define PTE_SIZE 12
 diff --git a/arch/powerpc/kvm/book3s_emulate.c 
 b/arch/powerpc/kvm/book3s_emulate.c
 index b9841ad..20d03c2 100644
 --- a/arch/powerpc/kvm/book3s_emulate.c
 +++ b/arch/powerpc/kvm/book3s_emulate.c
 @@ -172,7 +172,7 @@ int kvmppc_core_emulate_op_pr(struct kvm_run *run, 
 struct kvm_vcpu *vcpu,
 vcpu-arch.mmu.tlbie(vcpu, addr, large);
 break;
 }
 -#ifdef CONFIG_KVM_BOOK3S_64_PR
 +#ifdef CONFIG_KVM_BOOK3S_PR
 
 Why?
 
 If i have CONFIG_KVM_BOOK3S_64_PR=m  #ifdef CONFIG_KVM_BOOK3S_64_PR will
 not work. There is a runtime check I can use IS_ENABLED(). But didn't
 want to do those. Hence moved to the symbol which will be set as
 CONFIG_KVM_BOOK3S_PR = y

Ah, I see. The naming starts to get really confusing. Could you please give 
this a slightly better name, such as CONFIG_KVM_BOOK3S_PR_POSSIBLE or such, so 
that it's obvious that this #ifdef doesn't mean option is enabled, but 
instead means option can potentially be enabled through a module.


Alex

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


Re: [RFC PATCH 08/11] kvm: powerpc: book3s: Support building HV and PR KVM as module

2013-09-30 Thread Aneesh Kumar K.V
Alexander Graf ag...@suse.de writes:

 On 27.09.2013, at 15:08, Aneesh Kumar K.V wrote:

 Alexander Graf ag...@suse.de writes:
 
 On 27.09.2013, at 12:03, Aneesh Kumar K.V wrote:
 
 diff --git a/arch/powerpc/kvm/book3s_64_mmu_host.c 
 b/arch/powerpc/kvm/book3s_64_mmu_host.c
 index fd5b393..775d368 100644
 --- a/arch/powerpc/kvm/book3s_64_mmu_host.c
 +++ b/arch/powerpc/kvm/book3s_64_mmu_host.c
 @@ -27,6 +27,7 @@
 #include asm/machdep.h
 #include asm/mmu_context.h
 #include asm/hw_irq.h
 +
 
 Stray whitespace change
 
 
 will fix
 
 #include trace_pr.h
 
 #define PTE_SIZE 12
 diff --git a/arch/powerpc/kvm/book3s_emulate.c 
 b/arch/powerpc/kvm/book3s_emulate.c
 index b9841ad..20d03c2 100644
 --- a/arch/powerpc/kvm/book3s_emulate.c
 +++ b/arch/powerpc/kvm/book3s_emulate.c
 @@ -172,7 +172,7 @@ int kvmppc_core_emulate_op_pr(struct kvm_run *run, 
 struct kvm_vcpu *vcpu,
vcpu-arch.mmu.tlbie(vcpu, addr, large);
break;
}
 -#ifdef CONFIG_KVM_BOOK3S_64_PR
 +#ifdef CONFIG_KVM_BOOK3S_PR
 
 Why?
 
 If i have CONFIG_KVM_BOOK3S_64_PR=m  #ifdef CONFIG_KVM_BOOK3S_64_PR will
 not work. There is a runtime check I can use IS_ENABLED(). But didn't
 want to do those. Hence moved to the symbol which will be set as
 CONFIG_KVM_BOOK3S_PR = y

 Ah, I see. The naming starts to get really confusing. Could you please
 give this a slightly better name, such as
 CONFIG_KVM_BOOK3S_PR_POSSIBLE or such, so that it's obvious that this
 #ifdef doesn't mean option is enabled, but instead means option can
 potentially be enabled through a module.

Will do

-aneesh

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev


[RFC PATCH 08/11] kvm: powerpc: book3s: Support building HV and PR KVM as module

2013-09-27 Thread Aneesh Kumar K.V
From: Aneesh Kumar K.V aneesh.ku...@linux.vnet.ibm.com

Signed-off-by: Aneesh Kumar K.V aneesh.ku...@linux.vnet.ibm.com
---
 arch/powerpc/kvm/Kconfig  |  6 +++---
 arch/powerpc/kvm/Makefile | 12 
 arch/powerpc/kvm/book3s.c | 19 ++-
 arch/powerpc/kvm/book3s_64_mmu_host.c |  1 +
 arch/powerpc/kvm/book3s_emulate.c |  2 +-
 arch/powerpc/kvm/book3s_hv.c  |  4 
 arch/powerpc/kvm/book3s_pr.c  |  5 -
 arch/powerpc/kvm/book3s_rtas.c|  1 +
 arch/powerpc/kvm/emulate.c|  1 +
 arch/powerpc/kvm/powerpc.c|  6 ++
 virt/kvm/kvm_main.c   |  3 +++
 11 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig
index 5c62459..f63fd8f 100644
--- a/arch/powerpc/kvm/Kconfig
+++ b/arch/powerpc/kvm/Kconfig
@@ -73,7 +73,7 @@ config KVM_BOOK3S_64
  If unsure, say N.
 
 config KVM_BOOK3S_64_HV
-   bool KVM support for POWER7 and PPC970 using hypervisor mode in host
+   tristate KVM support for POWER7 and PPC970 using hypervisor mode in 
host
depends on KVM_BOOK3S_64
select KVM_BOOK3S_HV
select MMU_NOTIFIER
@@ -94,8 +94,8 @@ config KVM_BOOK3S_64_HV
  If unsure, say N.
 
 config KVM_BOOK3S_64_PR
-   bool KVM support without using hypervisor mode in host
-   depends on KVM_BOOK3S_64  !KVM_BOOK3S_64_HV
+   tristate KVM support without using hypervisor mode in host
+   depends on KVM_BOOK3S_64
select KVM_BOOK3S_PR
---help---
  Support running guest kernels in virtual machines on processors
diff --git a/arch/powerpc/kvm/Makefile b/arch/powerpc/kvm/Makefile
index a514ecd..861b8da 100644
--- a/arch/powerpc/kvm/Makefile
+++ b/arch/powerpc/kvm/Makefile
@@ -56,8 +56,7 @@ kvm-objs-$(CONFIG_KVM_E500MC) := $(kvm-e500mc-objs)
 kvm-book3s_64-builtin-objs-$(CONFIG_KVM_BOOK3S_64_HANDLER) := \
book3s_64_vio_hv.o
 
-kvm-book3s_64-objs-$(CONFIG_KVM_BOOK3S_64_PR) := \
-   $(KVM)/coalesced_mmio.o \
+kvm-pr-y := \
fpu.o \
book3s_paired_singles.o \
book3s_pr.o \
@@ -77,7 +76,7 @@ kvm-book3s_64-builtin-objs-$(CONFIG_KVM_BOOK3S_64_HANDLER) += 
\
book3s_rmhandlers.o
 endif
 
-kvm-book3s_64-objs-$(CONFIG_KVM_BOOK3S_64_HV)  += \
+kvm-hv-y += \
book3s_hv.o \
book3s_hv_interrupts.o \
book3s_64_mmu_hv.o
@@ -85,13 +84,15 @@ kvm-book3s_64-objs-$(CONFIG_KVM_BOOK3S_64_HV)  += \
 kvm-book3s_64-builtin-xics-objs-$(CONFIG_KVM_XICS) := \
book3s_hv_rm_xics.o
 
-kvm-book3s_64-builtin-objs-$(CONFIG_KVM_BOOK3S_64_HV) += \
+ifdef CONFIG_KVM_BOOK3S_HV
+kvm-book3s_64-builtin-objs-$(CONFIG_KVM_BOOK3S_64_HANDLER) += \
book3s_hv_rmhandlers.o \
book3s_hv_rm_mmu.o \
book3s_hv_ras.o \
book3s_hv_builtin.o \
book3s_hv_cma.o \
$(kvm-book3s_64-builtin-xics-objs-y)
+endif
 
 kvm-book3s_64-objs-$(CONFIG_KVM_XICS) += \
book3s_xics.o
@@ -132,4 +133,7 @@ obj-$(CONFIG_KVM_E500MC) += kvm.o
 obj-$(CONFIG_KVM_BOOK3S_64) += kvm.o
 obj-$(CONFIG_KVM_BOOK3S_32) += kvm.o
 
+obj-$(CONFIG_KVM_BOOK3S_64_PR) += kvm-pr.o
+obj-$(CONFIG_KVM_BOOK3S_64_HV) += kvm-hv.o
+
 obj-y += $(kvm-book3s_64-builtin-objs-y)
diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c
index 12f94bf..ca617e1 100644
--- a/arch/powerpc/kvm/book3s.c
+++ b/arch/powerpc/kvm/book3s.c
@@ -170,13 +170,14 @@ void kvmppc_book3s_queue_irqprio(struct kvm_vcpu *vcpu, 
unsigned int vec)
printk(KERN_INFO Queueing interrupt %x\n, vec);
 #endif
 }
-
+EXPORT_SYMBOL_GPL(kvmppc_book3s_queue_irqprio);
 
 void kvmppc_core_queue_program(struct kvm_vcpu *vcpu, ulong flags)
 {
/* might as well deliver this straight away */
kvmppc_inject_interrupt(vcpu, BOOK3S_INTERRUPT_PROGRAM, flags);
 }
+EXPORT_SYMBOL_GPL(kvmppc_core_queue_program);
 
 void kvmppc_core_queue_dec(struct kvm_vcpu *vcpu)
 {
@@ -351,6 +352,7 @@ pfn_t kvmppc_gfn_to_pfn(struct kvm_vcpu *vcpu, gfn_t gfn)
 
return gfn_to_pfn(vcpu-kvm, gfn);
 }
+EXPORT_SYMBOL_GPL(kvmppc_gfn_to_pfn);
 
 static int kvmppc_xlate(struct kvm_vcpu *vcpu, ulong eaddr, bool data,
 struct kvmppc_pte *pte)
@@ -418,6 +420,7 @@ int kvmppc_st(struct kvm_vcpu *vcpu, ulong *eaddr, int 
size, void *ptr,
 
return EMULATE_DONE;
 }
+EXPORT_SYMBOL_GPL(kvmppc_st);
 
 int kvmppc_ld(struct kvm_vcpu *vcpu, ulong *eaddr, int size, void *ptr,
  bool data)
@@ -448,6 +451,7 @@ nopte:
 mmio:
return EMULATE_DO_MMIO;
 }
+EXPORT_SYMBOL_GPL(kvmppc_ld);
 
 int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
 {
@@ -693,6 +697,7 @@ void kvmppc_set_msr(struct kvm_vcpu *vcpu, u64 msr)
 {
kvmppc_ops-set_msr(vcpu, msr);
 }
+EXPORT_SYMBOL_GPL(kvmppc_set_msr);
 
 int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 {
@@ -774,6 +779,7 @@ int kvm_unmap_hva(struct kvm *kvm, unsigned long hva)
 {
return 

Re: [RFC PATCH 08/11] kvm: powerpc: book3s: Support building HV and PR KVM as module

2013-09-27 Thread Alexander Graf

On 27.09.2013, at 12:03, Aneesh Kumar K.V wrote:

 From: Aneesh Kumar K.V aneesh.ku...@linux.vnet.ibm.com
 
 Signed-off-by: Aneesh Kumar K.V aneesh.ku...@linux.vnet.ibm.com
 ---
 arch/powerpc/kvm/Kconfig  |  6 +++---
 arch/powerpc/kvm/Makefile | 12 
 arch/powerpc/kvm/book3s.c | 19 ++-
 arch/powerpc/kvm/book3s_64_mmu_host.c |  1 +
 arch/powerpc/kvm/book3s_emulate.c |  2 +-
 arch/powerpc/kvm/book3s_hv.c  |  4 
 arch/powerpc/kvm/book3s_pr.c  |  5 -
 arch/powerpc/kvm/book3s_rtas.c|  1 +
 arch/powerpc/kvm/emulate.c|  1 +
 arch/powerpc/kvm/powerpc.c|  6 ++
 virt/kvm/kvm_main.c   |  3 +++
 11 files changed, 50 insertions(+), 10 deletions(-)
 
 diff --git a/arch/powerpc/kvm/Kconfig b/arch/powerpc/kvm/Kconfig
 index 5c62459..f63fd8f 100644
 --- a/arch/powerpc/kvm/Kconfig
 +++ b/arch/powerpc/kvm/Kconfig
 @@ -73,7 +73,7 @@ config KVM_BOOK3S_64
 If unsure, say N.
 
 config KVM_BOOK3S_64_HV
 - bool KVM support for POWER7 and PPC970 using hypervisor mode in host
 + tristate KVM support for POWER7 and PPC970 using hypervisor mode in 
 host
   depends on KVM_BOOK3S_64
   select KVM_BOOK3S_HV
   select MMU_NOTIFIER
 @@ -94,8 +94,8 @@ config KVM_BOOK3S_64_HV
 If unsure, say N.
 
 config KVM_BOOK3S_64_PR
 - bool KVM support without using hypervisor mode in host
 - depends on KVM_BOOK3S_64  !KVM_BOOK3S_64_HV
 + tristate KVM support without using hypervisor mode in host
 + depends on KVM_BOOK3S_64
   select KVM_BOOK3S_PR
   ---help---
 Support running guest kernels in virtual machines on processors
 diff --git a/arch/powerpc/kvm/Makefile b/arch/powerpc/kvm/Makefile
 index a514ecd..861b8da 100644
 --- a/arch/powerpc/kvm/Makefile
 +++ b/arch/powerpc/kvm/Makefile
 @@ -56,8 +56,7 @@ kvm-objs-$(CONFIG_KVM_E500MC) := $(kvm-e500mc-objs)
 kvm-book3s_64-builtin-objs-$(CONFIG_KVM_BOOK3S_64_HANDLER) := \
   book3s_64_vio_hv.o
 
 -kvm-book3s_64-objs-$(CONFIG_KVM_BOOK3S_64_PR) := \
 - $(KVM)/coalesced_mmio.o \
 +kvm-pr-y := \
   fpu.o \
   book3s_paired_singles.o \
   book3s_pr.o \
 @@ -77,7 +76,7 @@ kvm-book3s_64-builtin-objs-$(CONFIG_KVM_BOOK3S_64_HANDLER) 
 += \
   book3s_rmhandlers.o
 endif
 
 -kvm-book3s_64-objs-$(CONFIG_KVM_BOOK3S_64_HV)  += \
 +kvm-hv-y += \
   book3s_hv.o \
   book3s_hv_interrupts.o \
   book3s_64_mmu_hv.o
 @@ -85,13 +84,15 @@ kvm-book3s_64-objs-$(CONFIG_KVM_BOOK3S_64_HV)  += \
 kvm-book3s_64-builtin-xics-objs-$(CONFIG_KVM_XICS) := \
   book3s_hv_rm_xics.o
 
 -kvm-book3s_64-builtin-objs-$(CONFIG_KVM_BOOK3S_64_HV) += \
 +ifdef CONFIG_KVM_BOOK3S_HV
 +kvm-book3s_64-builtin-objs-$(CONFIG_KVM_BOOK3S_64_HANDLER) += \
   book3s_hv_rmhandlers.o \
   book3s_hv_rm_mmu.o \
   book3s_hv_ras.o \
   book3s_hv_builtin.o \
   book3s_hv_cma.o \
   $(kvm-book3s_64-builtin-xics-objs-y)
 +endif
 
 kvm-book3s_64-objs-$(CONFIG_KVM_XICS) += \
   book3s_xics.o
 @@ -132,4 +133,7 @@ obj-$(CONFIG_KVM_E500MC) += kvm.o
 obj-$(CONFIG_KVM_BOOK3S_64) += kvm.o
 obj-$(CONFIG_KVM_BOOK3S_32) += kvm.o
 
 +obj-$(CONFIG_KVM_BOOK3S_64_PR) += kvm-pr.o
 +obj-$(CONFIG_KVM_BOOK3S_64_HV) += kvm-hv.o
 +
 obj-y += $(kvm-book3s_64-builtin-objs-y)
 diff --git a/arch/powerpc/kvm/book3s.c b/arch/powerpc/kvm/book3s.c
 index 12f94bf..ca617e1 100644
 --- a/arch/powerpc/kvm/book3s.c
 +++ b/arch/powerpc/kvm/book3s.c
 @@ -170,13 +170,14 @@ void kvmppc_book3s_queue_irqprio(struct kvm_vcpu *vcpu, 
 unsigned int vec)
   printk(KERN_INFO Queueing interrupt %x\n, vec);
 #endif
 }
 -
 +EXPORT_SYMBOL_GPL(kvmppc_book3s_queue_irqprio);
 
 void kvmppc_core_queue_program(struct kvm_vcpu *vcpu, ulong flags)
 {
   /* might as well deliver this straight away */
   kvmppc_inject_interrupt(vcpu, BOOK3S_INTERRUPT_PROGRAM, flags);
 }
 +EXPORT_SYMBOL_GPL(kvmppc_core_queue_program);
 
 void kvmppc_core_queue_dec(struct kvm_vcpu *vcpu)
 {
 @@ -351,6 +352,7 @@ pfn_t kvmppc_gfn_to_pfn(struct kvm_vcpu *vcpu, gfn_t gfn)
 
   return gfn_to_pfn(vcpu-kvm, gfn);
 }
 +EXPORT_SYMBOL_GPL(kvmppc_gfn_to_pfn);
 
 static int kvmppc_xlate(struct kvm_vcpu *vcpu, ulong eaddr, bool data,
struct kvmppc_pte *pte)
 @@ -418,6 +420,7 @@ int kvmppc_st(struct kvm_vcpu *vcpu, ulong *eaddr, int 
 size, void *ptr,
 
   return EMULATE_DONE;
 }
 +EXPORT_SYMBOL_GPL(kvmppc_st);
 
 int kvmppc_ld(struct kvm_vcpu *vcpu, ulong *eaddr, int size, void *ptr,
 bool data)
 @@ -448,6 +451,7 @@ nopte:
 mmio:
   return EMULATE_DO_MMIO;
 }
 +EXPORT_SYMBOL_GPL(kvmppc_ld);
 
 int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
 {
 @@ -693,6 +697,7 @@ void kvmppc_set_msr(struct kvm_vcpu *vcpu, u64 msr)
 {
   kvmppc_ops-set_msr(vcpu, msr);
 }
 +EXPORT_SYMBOL_GPL(kvmppc_set_msr);
 
 int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
 {
 @@ -774,6 +779,7 @@ int kvm_unmap_hva(struct 

Re: [RFC PATCH 08/11] kvm: powerpc: book3s: Support building HV and PR KVM as module

2013-09-27 Thread Aneesh Kumar K.V
Alexander Graf ag...@suse.de writes:

 On 27.09.2013, at 12:03, Aneesh Kumar K.V wrote:

 diff --git a/arch/powerpc/kvm/book3s_64_mmu_host.c 
 b/arch/powerpc/kvm/book3s_64_mmu_host.c
 index fd5b393..775d368 100644
 --- a/arch/powerpc/kvm/book3s_64_mmu_host.c
 +++ b/arch/powerpc/kvm/book3s_64_mmu_host.c
 @@ -27,6 +27,7 @@
 #include asm/machdep.h
 #include asm/mmu_context.h
 #include asm/hw_irq.h
 +

 Stray whitespace change


will fix

 #include trace_pr.h
 
 #define PTE_SIZE 12
 diff --git a/arch/powerpc/kvm/book3s_emulate.c 
 b/arch/powerpc/kvm/book3s_emulate.c
 index b9841ad..20d03c2 100644
 --- a/arch/powerpc/kvm/book3s_emulate.c
 +++ b/arch/powerpc/kvm/book3s_emulate.c
 @@ -172,7 +172,7 @@ int kvmppc_core_emulate_op_pr(struct kvm_run *run, 
 struct kvm_vcpu *vcpu,
  vcpu-arch.mmu.tlbie(vcpu, addr, large);
  break;
  }
 -#ifdef CONFIG_KVM_BOOK3S_64_PR
 +#ifdef CONFIG_KVM_BOOK3S_PR

 Why?

If i have CONFIG_KVM_BOOK3S_64_PR=m  #ifdef CONFIG_KVM_BOOK3S_64_PR will
not work. There is a runtime check I can use IS_ENABLED(). But didn't
want to do those. Hence moved to the symbol which will be set as
CONFIG_KVM_BOOK3S_PR = y

-aneesh

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev