qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC PATCH 0/9] ISA 3.00 KVM guest support


From: Sam Bobroff
Subject: [Qemu-devel] [RFC PATCH 0/9] ISA 3.00 KVM guest support
Date: Tue, 7 Feb 2017 13:56:43 +1100

Because KVM will soon provide the necessary infrastructure for KVM guests to
run on POWER9 CPUs, we can now start exploiting this new functionality from
QEMU. See:
https://lists.ozlabs.org/pipermail/linuxppc-dev/2017-January/153433.html

This work is not yet complete but it is functional and is presented for early
review. It overlaps in some places with current work supporting the same guests
under full emulation.

This set aims to support only the following scenarios:
* A POWER9 host running in radix mode, running a guest in radix mode.
* A POWER9 host running in hash mode, running a guest in hash mode.
* A POWER9 host running in hash mode, running a guest in legacy(+) mode.
(+) Where legacy means that the guest does not support ISA 3.00.

Hash or radix mode for the host is controlled via the "disable_radix" kernel
command line parameter: the host will use radix unless disable_radix is given.
For the guest it should be automatically selected to match the host.

Bad legacy guests: There are some recent kernels (e.g. 4.9) that will, when run
as a KVM guest and if the ibm,pa-features entry in the device tree has the
Radix MMU bit set, attempt to initialize the MMU as if they were a host (which
will cause them to crash). To avoid exposing this problem, the Radix MMU bit
is removed from ibm,pa-features when a legacy guest is detected.

Prerequsites:
* This set is based on current QEMU master, but relies on some work already 
posted here:
https://lists.gnu.org/archive/html/qemu-devel/2017-01/msg02527.html
Specifically patches 1..4 which set up the new CPU and MMU models.

Notes:
    * Migration/snapshots are not yet investigated.
    * If the host cannot support the guest (e.g. radix host and a legacy guest)
      then the guest will crash but QEMU should probably terminate with a
      descriptive message.


Sam Bobroff (9):
  spapr: fix off-by-one error in spapr_ovec_populate_dt()
  Update headers using update-linux-headers.sh
  spapr: Add ibm,processor-radix-AP-encodings to the device tree
  target-ppc: support KVM_CAP_PPC_MMU_RADIX, KVM_CAP_PPC_MMU_HASH_V3
  spapr: Only setup HTP if necessary.
  spapr: Add h_register_process_table() hypercall
  spapr: Set ISA 3.00 radix and hash bits in OV5
  spapr: Advertise ISA 3.0 MMU features in pa_features
  spapr: Small cleanup of PPC MMU enums

 hw/ppc/spapr.c                                     | 152 +++++---
 hw/ppc/spapr_hcall.c                               |  52 ++-
 hw/ppc/spapr_ovec.c                                |   2 +-
 include/hw/ppc/spapr.h                             |   4 +-
 include/hw/ppc/spapr_ovec.h                        |   6 +
 include/standard-headers/linux/input-event-codes.h |   2 +-
 include/standard-headers/linux/pci_regs.h          |   8 +
 include/standard-headers/linux/virtio_ids.h        |   1 +
 linux-headers/asm-arm/kvm.h                        |   2 +
 linux-headers/asm-arm/unistd.h                     | 419 +--------------------
 linux-headers/asm-powerpc/kvm.h                    |  25 ++
 linux-headers/asm-powerpc/unistd.h                 |   1 +
 linux-headers/asm-x86/kvm_para.h                   |   4 +-
 linux-headers/linux/kvm.h                          |  11 +-
 linux-headers/linux/vfio.h                         |  10 +
 target/ppc/cpu-qom.h                               |  12 +-
 target/ppc/cpu.h                                   |   5 +
 target/ppc/kvm.c                                   |  66 +++-
 target/ppc/kvm_ppc.h                               |  13 +
 target/ppc/mmu-hash64.c                            |  10 +-
 target/ppc/mmu_helper.c                            |  67 ++--
 target/ppc/translate.c                             |  12 +-
 22 files changed, 346 insertions(+), 538 deletions(-)

-- 
2.11.0




reply via email to

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