[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 00/10] KVM Support for MIPS32 Processors
From: |
James Hogan |
Subject: |
[Qemu-devel] [PATCH v2 00/10] KVM Support for MIPS32 Processors |
Date: |
Mon, 16 Dec 2013 14:12:35 +0000 |
This patchset implements KVM support for MIPS32 processors, using Trap &
Emulation.
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.
KVM support (by trap and emulate) was added to the Linux kernel in
v3.10.
This patchset is based on Sanjay Lal's V1 patchset from 2nd March 2013:
https://patchwork.kernel.org/project/kvm/list/?submitter=51991&state=*&q=qemu-devel
I think I've addressed all the V1 feedback. The other main change is the
removal of the boot-CPS ROM code binary blob and GIC/SMP support since
it's all slightly orthogonal to KVM support. Instead the existing
minimal bootloader code for Malta has been updated to work with KVM T&E.
A git tag for this version of the patchset can also be found on github:
https://github.com/jahogan/qemu-kvm-mips.git kvm-mips-v2
Changes in v2:
- Expand commit messages
- Rebase on v1.7.0
- Misc checkpatch and other cleanups
- Some interrupt bug fixes from Yann Le Du <address@hidden>
- Add get/set register functionality from Yann Le Du <address@hidden>
- Use new 64 bit compatible ABI from Cavium from Sanjay Lal
<address@hidden>
- Add dummy kvm_arch_init_irq_routing()
The common KVM code insists on calling kvm_arch_init_irq_routing() as
soon as it sees kernel header support for it (regardless of whether
QEMU supports it). Provide a dummy function to satisfy this.
- Remove request_interrupt_window code (Peter Maydell)
- Remove #ifdef CONFIG_KVM where guarded by kvm_enabled() already
- Removal of cps / GIC / SMP support
- Minimal bootloader modified to execute safely from RAM
- Create asm-mips symlink using generic code and move above default
case (Peter Maydell)
- Remove redundant check of target_name = cpu = mips
- Remove mipsel cross compilation fix, which is now fixed by commit
61cc919f73ea (configure: detect endian via compile test)
- Add translation of guest kernel segments to allow an attached gdb to
see kernel memory correctly
James Hogan (3):
target-mips: get_physical_address: Add defines for segment bases
target-mips: get_physical_address: Add KVM awareness
hw/mips: malta: Add KVM support
Sanjay Lal (7):
hw/mips/cputimer: Don't start periodic timer in KVM mode
hw/mips: Add API to convert KVM guest KSEG0 <-> GPA
kvm: Set sigmask length to 16 for MIPS targets
target-mips: Set target page size to 16K in KVM mode
target-mips: kvm: Add main KVM support for MIPS
hw/mips: In KVM mode, inject IRQ2 (I/O) interupts via ioctls
target-mips: Enable KVM support in build system
configure | 6 +-
hw/mips/addr.c | 10 +
hw/mips/cputimer.c | 13 +-
hw/mips/mips_int.c | 11 ++
hw/mips/mips_malta.c | 85 ++++++---
include/hw/mips/cpudevs.h | 4 +
kvm-all.c | 5 +
target-mips/Makefile.objs | 1 +
target-mips/helper.c | 51 +++--
target-mips/kvm.c | 463 ++++++++++++++++++++++++++++++++++++++++++++++
target-mips/kvm_mips.h | 28 +++
target-mips/mips-defs.h | 5 +
12 files changed, 643 insertions(+), 39 deletions(-)
create mode 100644 target-mips/kvm.c
create mode 100644 target-mips/kvm_mips.h
--
1.8.1.2
- [Qemu-devel] [PATCH v2 00/10] KVM Support for MIPS32 Processors,
James Hogan <=