qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 00/12] KVM Support for MIPS32 Processors
@ 2013-03-02 15:18 Sanjay Lal
  2013-03-02 15:18 ` [Qemu-devel] [PATCH 01/12] KVM/MIPS: Bootcode for MIPS SMP configurations with a GCMP Sanjay Lal
                   ` (14 more replies)
  0 siblings, 15 replies; 25+ messages in thread
From: Sanjay Lal @ 2013-03-02 15:18 UTC (permalink / raw)
  To: qemu-devel; +Cc: Sanjay Lal, Gleb Natapov, Marcelo Tosatti, Aurelien Jarno, kvm

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

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2013-03-06 20:06 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-02 15:18 [Qemu-devel] [PATCH 00/12] KVM Support for MIPS32 Processors Sanjay Lal
2013-03-02 15:18 ` [Qemu-devel] [PATCH 01/12] KVM/MIPS: Bootcode for MIPS SMP configurations with a GCMP Sanjay Lal
2013-03-02 20:03   ` Peter Maydell
2013-03-06 19:44     ` Sanjay Lal
2013-03-02 15:18 ` [Qemu-devel] [PATCH 01/12] MIPS: " Sanjay Lal
2013-03-02 15:18 ` [Qemu-devel] [PATCH 02/12] KVM/MIPS: GIC emulation for SMP guests Sanjay Lal
2013-03-02 15:18 ` [Qemu-devel] [PATCH 03/12] KVM/MIPS: Add save/restore state APIs for saving/restoring KVM guests Sanjay Lal
2013-03-02 15:27   ` Peter Maydell
2013-03-06 19:45     ` Sanjay Lal
2013-03-02 15:18 ` [Qemu-devel] [PATCH 04/12] KVM/MIPS: Do not start the periodic timer in KVM mode. Compare/Count timer interrupts are handled in-kernel Sanjay Lal
2013-03-02 15:18 ` [Qemu-devel] [PATCH 05/12] KVM/MIPS: In KVM mode, inject IRQ2 (I/O) interupts via ioctls(). COP0 emulation is in-kernel Sanjay Lal
2013-03-02 15:18 ` [Qemu-devel] [PATCH 06/12] KVM/MIPS: Define APIs to convert Guest KSEG0 <-> Guest Physical addresses Sanjay Lal
2013-03-02 15:18 ` [Qemu-devel] [PATCH 07/12] KVM/MIPS: QEMU <-> Kernel interface for KVM/MIPS Sanjay Lal
2013-03-02 15:44   ` Peter Maydell
2013-03-02 15:18 ` [Qemu-devel] [PATCH 08/12] KVM/MIPS: Enable KVM/MIPS for MIPS targets. Add MIPS GIC code to the build Sanjay Lal
2013-03-02 15:42   ` Peter Maydell
2013-03-04 11:27   ` Andreas Färber
2013-03-02 15:18 ` [Qemu-devel] [PATCH 09/12] KVM/MIPS: set sigmask length to 16 for MIPS targets Sanjay Lal
2013-03-02 15:18 ` [Qemu-devel] [PATCH 10/12] KVM/MIPS: Set page size to 16K in KVM mode Sanjay Lal
2013-03-02 15:18 ` [Qemu-devel] [PATCH 11/12] KVM/MIPS: MIPS specfic APIs for KVM Sanjay Lal
2013-03-02 15:45   ` Peter Maydell
2013-03-06 19:43     ` Sanjay Lal
2013-03-02 15:18 ` [Qemu-devel] [PATCH 12/12] KVM/MIPS: General KVM support and support for SMP Guests Sanjay Lal
2013-03-04  1:21 ` [Qemu-devel] [PATCH 00/12] KVM Support for MIPS32 Processors Zhang, Yang Z
2013-03-04 11:55 ` Andreas Färber

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).