[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [RFC 00/17] Clean up compatibility mode handling
From: |
David Gibson |
Subject: |
[Qemu-ppc] [RFC 00/17] Clean up compatibility mode handling |
Date: |
Sun, 30 Oct 2016 22:11:51 +1100 |
This series is a significant rework to how we handle CPU compatibility
modes on ppc.
* Information about compatibility modes was previously open coded and
scattered across a number of functions in both target-ppc and spapr
code. It's now brought together into a common table of
compatibility modes.
* There was significant conceptual confusion about what a
compatibility mode means, and how it interacts with the machine
type. This cleans that up, clarifying that a compatibility mode
(as an externally set option) only makes sense on machine types
that don't permit the guest hypervisor privilege (i.e. 'pseries')
* It was previously the user's (or management layer's) responsibility
to determine compatibility of CPUs on either end for migration.
This uses the compatibility modes to check that properly during an
incoming migration.
* Some ill-considered sanity checks broke migration from 2.6 to 2.7,
due to some new instruction classes being added. This should avoid
a repeat of that problem for 2.8 (we may be able to backport a
minimal subset to 2.7-stable to fix the existing problem).
Patches 1-5 are preliminary cleanups which could stand on their own.
Patches 6-16 are the compatibility mode cleanup proper.
So far, this has been mimimally tested. There are quite a few
migration cases to check.
David Gibson (17):
ppc: Remove some stub POWER6 models
powernv: CPU compatibility modes don't make sense for powernv
pseries: Always use core objects for CPU construction
pseries: Make cpu_update during CAS unconditional
ppc: Clean up and QOMify hypercall emulation
ppc: Rename cpu_version to compat_pvr
ppc: Rewrite ppc_set_compat()
ppc: Rewrite ppc_get_compat_smt_threads()
ppc: Validate compatibility modes when setting
pseries: Rewrite CAS PVR compatibility logic
ppc: Add ppc_set_compat_all()
ppc: Migrate compatibility mode
pseries: Move CPU compatibility property to machine
pseries: Reset CPU compatibility mode
ppc: Check that CPU model stays consistent across migration
ppc: Remove counter-productive "sanity checks" in migration
pseries: Default to POWER8 compatibility mode
hw/ppc/pnv.c | 6 +-
hw/ppc/spapr.c | 159 ++++++++++++++++------------
hw/ppc/spapr_cpu_core.c | 84 +++++++++++----
hw/ppc/spapr_hcall.c | 142 ++++++++-----------------
hw/ppc/trace-events | 2 +-
include/hw/ppc/spapr.h | 12 ++-
target-ppc/Makefile.objs | 1 +
target-ppc/compat.c | 251 ++++++++++++++++++++++++++++++++++++++++++++
target-ppc/cpu-models.c | 4 -
target-ppc/cpu-models.h | 2 -
target-ppc/cpu.h | 49 +++++++--
target-ppc/excp_helper.c | 11 +-
target-ppc/kvm.c | 4 +-
target-ppc/kvm_ppc.h | 4 +-
target-ppc/machine.c | 55 ++++++++--
target-ppc/translate_init.c | 146 +++-----------------------
16 files changed, 564 insertions(+), 368 deletions(-)
create mode 100644 target-ppc/compat.c
--
2.7.4
- [Qemu-ppc] [RFC 00/17] Clean up compatibility mode handling,
David Gibson <=
- [Qemu-ppc] [RFC 02/17] powernv: CPU compatibility modes don't make sense for powernv, David Gibson, 2016/10/30
- [Qemu-ppc] [RFC 01/17] ppc: Remove some stub POWER6 models, David Gibson, 2016/10/30
- [Qemu-ppc] [RFC 14/17] pseries: Reset CPU compatibility mode, David Gibson, 2016/10/30
- [Qemu-ppc] [RFC 06/17] ppc: Rename cpu_version to compat_pvr, David Gibson, 2016/10/30
- [Qemu-ppc] [RFC 05/17] ppc: Clean up and QOMify hypercall emulation, David Gibson, 2016/10/30