qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]