KVM: MIPS: Add VZ support to build system
authorJames Hogan <james.hogan@imgtec.com>
Tue, 14 Mar 2017 10:15:32 +0000 (10:15 +0000)
committerJames Hogan <james.hogan@imgtec.com>
Tue, 28 Mar 2017 13:53:54 +0000 (14:53 +0100)
Add support for the MIPS Virtualization (VZ) ASE to the MIPS KVM build
system. For now KVM can only be configured for T&E or VZ and not both,
but the design of the user facing APIs support the possibility of having
both available, so this could change in future.

Note that support for various optional guest features (some of which
can't be turned off) are implemented in immediately following commits,
so although it should now be possible to build VZ support, it may not
work yet on your hardware.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Radim Krčmář" <rkrcmar@redhat.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Cc: kvm@vger.kernel.org
arch/mips/kvm/Kconfig
arch/mips/kvm/Makefile

index 65067327db122bac7a98d318c21a1c2ca99f6aa1..50a722dfb236d7edbaf99ab51dd65986e250dc08 100644 (file)
@@ -26,11 +26,34 @@ config KVM
        select SRCU
        ---help---
          Support for hosting Guest kernels.
-         Currently supported on MIPS32 processors.
+
+choice
+       prompt "Virtualization mode"
+       depends on KVM
+       default KVM_MIPS_TE
+
+config KVM_MIPS_TE
+       bool "Trap & Emulate"
+       ---help---
+         Use trap and emulate to virtualize 32-bit guests in user mode. This
+         does not require any special hardware Virtualization support beyond
+         standard MIPS32/64 r2 or later, but it does require the guest kernel
+         to be configured with CONFIG_KVM_GUEST=y so that it resides in the
+         user address segment.
+
+config KVM_MIPS_VZ
+       bool "MIPS Virtualization (VZ) ASE"
+       ---help---
+         Use the MIPS Virtualization (VZ) ASE to virtualize guests. This
+         supports running unmodified guest kernels (with CONFIG_KVM_GUEST=n),
+         but requires hardware support.
+
+endchoice
 
 config KVM_MIPS_DYN_TRANS
        bool "KVM/MIPS: Dynamic binary translation to reduce traps"
-       depends on KVM
+       depends on KVM_MIPS_TE
+       default y
        ---help---
          When running in Trap & Emulate mode patch privileged
          instructions to reduce the number of traps.
index e56403c8a3f5f9b64cfe8e051f2d33224b23f255..45d90f5d5177a0783842e0b6137cc8d1c38db2d0 100644 (file)
@@ -9,9 +9,15 @@ common-objs-$(CONFIG_CPU_HAS_MSA) += msa.o
 
 kvm-objs := $(common-objs-y) mips.o emulate.o entry.o \
            interrupt.o stats.o commpage.o \
-           dyntrans.o trap_emul.o fpu.o
+           fpu.o
 kvm-objs += hypcall.o
 kvm-objs += mmu.o
 
+ifdef CONFIG_KVM_MIPS_VZ
+kvm-objs               += vz.o
+else
+kvm-objs               += dyntrans.o
+kvm-objs               += trap_emul.o
+endif
 obj-$(CONFIG_KVM)      += kvm.o
 obj-y                  += callback.o tlb.o