Signed-off-by: Sanjay Lal <email@example.com>
arch/mips/kvm/00README.txt | 31 +++++++++++++++++++++++++++++++
arch/mips/kvm/Makefile | 17 +++++++++++++++++
2 files changed, 48 insertions(+)
create mode 100644 arch/mips/kvm/00README.txt
create mode 100644 arch/mips/kvm/Makefile
diff --git a/arch/mips/kvm/00README.txt b/arch/mips/kvm/00README.txt
new file mode 100644
@@ -0,0 +1,31 @@
+KVM/MIPS Trap & Emulate Release Notes
+(1) KVM/MIPS should support MIPS32R2 and beyond. It has been tested on the
+ Malta Board with FPGA based 34K
+ Sigma Designs TangoX board with a 24K based 8654 SoC.
+ Malta Board with 74K @ 1GHz
+(2) Both Guest kernel and Guest Userspace execute in UM.
+ Guest User address space: 0x00000000 -> 0x40000000
+ Guest Kernel Unmapped: 0x40000000 -> 0x60000000
+ Guest Kernel Mapped: 0x60000000 -> 0x80000000
+ Guest Usermode virtual memory is limited to 1GB.
+(2) 16K Page Sizes: Both Host Kernel and Guest Kernel should have the same
page size, currently at least 16K.
+ Note that due to cache aliasing issues, 4K page sizes are NOT supported.
+(3) No HugeTLB Support
+ Both the host kernel and Guest kernel should have the page size set to 16K.
+ This will be implemented in a future release.
+(4) KVM/MIPS does not have support for SMP Guests
+ Linux-3.7-rc2 based SMP guest hangs due to the following code sequence in
the generated TLB handlers:
+ LL/TLBP/SC. Since the TLBP instruction causes a trap the reservation
+ when we ERET back to the guest. This causes the guest to hang in an
+ This will be fixed in a future release.
+(5) Use Host FPU
+ Currently KVM/MIPS emulates a 24K CPU without a FPU.
+ This will be fixed in a future release
diff --git a/arch/mips/kvm/Makefile b/arch/mips/kvm/Makefile
new file mode 100644
@@ -0,0 +1,17 @@
+# Makefile for KVM support for MIPS
+common-objs = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o)
+EXTRA_CFLAGS += -Ivirt/kvm -Iarch/mips/kvm
+kvm-objs := $(common-objs) kvm_mips.o kvm_mips_emul.o kvm_locore.o
+ kvm_mips_stats.o kvm_mips_commpage.o kvm_mips_dyntrans.o
+kvm-objs += kvm_vz.o
+kvm-objs += kvm_trap_emul.o
+obj-$(CONFIG_KVM) += kvm.o
+obj-y += kvm_tlb.o kvm_cb.o