[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 00/12] KVM Support for MIPS32 Processors
From: |
Sanjay Lal |
Subject: |
[Qemu-devel] [PATCH 00/12] KVM Support for MIPS32 Processors |
Date: |
Sat, 2 Mar 2013 07:18:34 -0800 |
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.
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
- [Qemu-devel] [PATCH 00/12] KVM Support for MIPS32 Processors,
Sanjay Lal <=
- [Qemu-devel] [PATCH 02/12] KVM/MIPS: GIC emulation for SMP guests., Sanjay Lal, 2013/03/02
- [Qemu-devel] [PATCH 03/12] KVM/MIPS: Add save/restore state APIs for saving/restoring KVM guests., Sanjay Lal, 2013/03/02
- [Qemu-devel] [PATCH 07/12] KVM/MIPS: QEMU <-> Kernel interface for KVM/MIPS, Sanjay Lal, 2013/03/02
- [Qemu-devel] [PATCH 09/12] KVM/MIPS: set sigmask length to 16 for MIPS targets., Sanjay Lal, 2013/03/02
- [Qemu-devel] [PATCH 11/12] KVM/MIPS: MIPS specfic APIs for KVM., Sanjay Lal, 2013/03/02