All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC PATCH 0/9] ISA 3.00 KVM guest support
@ 2017-02-07  2:56 Sam Bobroff
  2017-02-07  2:56 ` [Qemu-devel] [RFC PATCH 1/9] spapr: fix off-by-one error in spapr_ovec_populate_dt() Sam Bobroff
                   ` (10 more replies)
  0 siblings, 11 replies; 30+ messages in thread
From: Sam Bobroff @ 2017-02-07  2:56 UTC (permalink / raw)
  To: qemu-devel; +Cc: qemu-ppc, david


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

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

end of thread, other threads:[~2017-02-09  7:45 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-07  2:56 [Qemu-devel] [RFC PATCH 0/9] ISA 3.00 KVM guest support Sam Bobroff
2017-02-07  2:56 ` [Qemu-devel] [RFC PATCH 1/9] spapr: fix off-by-one error in spapr_ovec_populate_dt() Sam Bobroff
2017-02-07 15:47   ` [Qemu-devel] [Qemu-ppc] " Thomas Huth
2017-02-09  1:53     ` David Gibson
2017-02-07 22:12   ` [Qemu-devel] " Michael Roth
2017-02-07 22:53     ` Sam Bobroff
2017-02-07  2:56 ` [Qemu-devel] [RFC PATCH 2/9] Update headers using update-linux-headers.sh Sam Bobroff
2017-02-07 12:59   ` [Qemu-devel] [Qemu-ppc] " Thomas Huth
2017-02-09  4:53     ` Sam Bobroff
2017-02-09  7:45       ` Thomas Huth
2017-02-09  1:55   ` [Qemu-devel] " David Gibson
2017-02-09  4:54     ` Sam Bobroff
2017-02-07  2:56 ` [Qemu-devel] [RFC PATCH 3/9] spapr: Add ibm, processor-radix-AP-encodings to the device tree Sam Bobroff
2017-02-09  2:14   ` David Gibson
2017-02-09  5:07     ` Sam Bobroff
2017-02-07  2:56 ` [Qemu-devel] [RFC PATCH 4/9] target-ppc: support KVM_CAP_PPC_MMU_RADIX, KVM_CAP_PPC_MMU_HASH_V3 Sam Bobroff
2017-02-09  2:16   ` David Gibson
2017-02-07  2:56 ` [Qemu-devel] [RFC PATCH 5/9] spapr: Only setup HTP if necessary Sam Bobroff
2017-02-09  2:24   ` David Gibson
2017-02-07  2:56 ` [Qemu-devel] [RFC PATCH 6/9] spapr: Add h_register_process_table() hypercall Sam Bobroff
2017-02-09  2:32   ` David Gibson
2017-02-09  4:16   ` [Qemu-devel] [Qemu-ppc] " Alexey Kardashevskiy
2017-02-07  2:56 ` [Qemu-devel] [RFC PATCH 7/9] spapr: Set ISA 3.00 radix and hash bits in OV5 Sam Bobroff
2017-02-09  2:34   ` David Gibson
2017-02-07  2:56 ` [Qemu-devel] [RFC PATCH 8/9] spapr: Advertise ISA 3.0 MMU features in pa_features Sam Bobroff
2017-02-09  2:42   ` David Gibson
2017-02-07  2:56 ` [Qemu-devel] [RFC PATCH 9/9] spapr: Small cleanup of PPC MMU enums Sam Bobroff
2017-02-09  2:49   ` David Gibson
2017-02-09  2:51 ` [Qemu-devel] [RFC PATCH 0/9] ISA 3.00 KVM guest support David Gibson
2017-02-09  3:21 ` Alexey Kardashevskiy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.