Sanjay Lal wrote on 2013-03-02: > The following patchset implements KVM support for MIPS32 processors, > using Trap & Emulate, with basic runtime binary translation to improve > performance. > > In KVM mode, CPU virtualization is handled via the kvm kernel module, > while system and I/O virtualization leverage the Malta model already present > in QEMU. One question(maybe stupid): I don't see any changes to mips32 kernel. But you said cpu virtualization is handled via kvm kernel module. How it handle it? > Both Guest kernel and Guest Userspace execute in UM. The Guest address > space is > as folows: > Guest User address space: 0x00000000 -> 0x40000000 > Guest Kernel Unmapped: 0x40000000 -> 0x60000000 > Guest Kernel Mapped: 0x60000000 -> 0x80000000 > > As a result, Guest Usermode virtual memory is limited to 1GB. > > The Malta model has been enhanced to support SMP guest kernels via support > for the CPS bootcode from MIPS which supports bootstrapping multiple cpus. > A model for the MIPS GIC has also been added to support IPIs. > This allows booting Linux in full SMP mode with a cluster of MIPS32R2 cpus. > > There is a companion kernel patchset for KVM that has been posted on > the KVM/MIPS mailing lists. > > -- > Sanjay Lal (12): > KVM/MIPS: Bootcode for MIPS SMP configurations with a GCMP > KVM/MIPS: GIC emulation for SMP guests. > KVM/MIPS: Add save/restore state APIs for saving/restoring KVM > guests. KVM/MIPS: Do not start the periodic timer in KVM mode. > Compare/Count timer interrupts are handled in-kernel. KVM/MIPS: In > KVM mode, inject IRQ2 (I/O) interupts via ioctls(). COP0 emulation > is in-kernel KVM/MIPS: Define APIs to convert Guest KSEG0 <-> Guest > Physical addresses. > KVM/MIPS: QEMU <-> Kernel interface for KVM/MIPS > KVM/MIPS: Enable KVM/MIPS for MIPS targets. Add MIPS GIC code to the > build. > KVM/MIPS: set sigmask length to 16 for MIPS targets. > KVM/MIPS: Set page size to 16K in KVM mode. > KVM/MIPS: MIPS specfic APIs for KVM. > KVM/MIPS: General KVM support and support for SMP Guests > configure | 17 +- hw/gt64xxx.c > | 317 +++++++++++++++++++++++++++++ hw/mips/Makefile.objs > | 2 +- hw/mips_addr.c | 14 ++ > hw/mips_cps_bootcode.h | 310 ++++++++++++++++++++++++++++ > hw/mips_cpudevs.h | 4 + hw/mips_gcmpregs.h > | 122 +++++++++++ hw/mips_gic.c | 418 > ++++++++++++++++++++++++++++++++++++++ hw/mips_gic.h > | 378 ++++++++++++++++++++++++++++++++++ hw/mips_int.c > | 15 ++ hw/mips_malta.c | 192 +++++++++++------ > hw/mips_timer.c | 13 +- kvm-all.c > | 5 + linux-headers/asm-mips/kvm.h | 94 +++++++++ > linux-headers/asm-mips/kvm_para.h | 10 + target-mips/Makefile.objs > | 1 + target-mips/kvm.c | 292 > ++++++++++++++++++++++++++ target-mips/kvm_mips.h | 21 ++ > target-mips/mips-defs.h | 5 + 19 files changed, 2157 > insertions(+), 73 deletions(-) create mode 100644 > hw/mips_cps_bootcode.h create mode 100644 hw/mips_gcmpregs.h create > mode 100644 hw/mips_gic.c create mode 100644 hw/mips_gic.h create mode > 100644 linux-headers/asm-mips/kvm.h create mode 100644 > linux-headers/asm-mips/kvm_para.h create mode 100644 target-mips/kvm.c > create mode 100644 target-mips/kvm_mips.h > -- > 1.7.11.3 > > -- > 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 Best regards, Yang -- 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