[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCHv5 0/4] Clean up compatibility mode handling
From: |
David Gibson |
Subject: |
[Qemu-ppc] [PATCHv5 0/4] Clean up compatibility mode handling |
Date: |
Fri, 2 Jun 2017 13:15:03 +1000 |
This is a rebased and revised version of my patches revising CPU
compatiblity mode handling on ppc, last posted in November. Since
then, many of the patches have already been merged (some for 2.9, some
since). This is what's left.
* There was 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.
This hasn't been extensively tested yet. There are quite a few
migration cases to consider, for example:
Basic:
1) Boot guest with -cpu host
Should go into POWER8 compat mode after CAS
Previously would have been raw mode
2) Boot guest with -machine pseries,max-cpu-compat=power7 -cpu host
Should go into POWER7 compat mode
3) Boot guest with -cpu host,compat=power7
Should act as (2), but print a warning
4) Boot guest via libvirt with power7 compat mode specified in XML
Should act as (3), (2) once we fix libvirt
5) Hack guest to only advertise power7 compatibility, boot with -cpu host
Should go into POWER7 compat mode after CAS
6) Hack guest to only advertise real PVRs
Should remain in POWER8 raw mode after CAS
7) Hack guest to only advertise real PVRs
Boot with -machine pseries,max-cpu-compat=power8
Should fail at CAS time
8) Hack guest to only advertise power7 compatibility, boot with -cpu host
Reboot to normal guest
Should go to power7 compat mode after CAS of boot 1
Should revert to raw mode on reboot
SHould go to power8 compat mode after CAS of boot 2
Migration:
9) Boot guest with qemu-2.6 -machine pseries-2.6 -cpu host
Migrate to qemu-2.8 -machine pseries-2.6 -cpu host
Should work, end up running in power8 raw mode
10) Boot guest with qemu-2.7 -machine pseries-2.7 -cpu host
Migrate to qemu-2.8 -machine pseries-2.7 -cpu host
Should work, end up running in power8 raw mode
11) Boot guest with qemu-2.7 -machine pseries-2.7 -cpu host,compat=power7
Migrate to qemu-2.8 -machine pseries-2.7 -cpu host,compat=power7
Should work, be running in POWER7 compat after, but give warning like
(3)
12) Boot guest with qemu-2.7 -machine pseries-2.7 -cpu host,compat=power7
Migrate to qemu-2.8 -machine pseries-2.7,max-cpu-compat=power7 -cpu host
Should work, be running in POWER7 compat after, no warning
13) Boot to SLOF with qemu-2.6 -machine pseries-2.6 -cpu host
Migrate to qemu-2.8 -machine pseries-2.6 -cpu host
?
14) Boot to SLOF with qemu-2.7 -machine pseries-2.7 -cpu host
Migrate to qemu-2.8 -machine pseries-2.7 -cpu host
?
15) Boot to SLOF with qemu-2.7 -machine pseries-2.7 -cpu host,compat=power7
Migrate to qemu-2.8 -machine pseries-2.7 -cpu host,compat=power7
?
16) Boot to SLOF with qemu-2.7 -machine pseries-2.7 -cpu host,compat=power7
Migrate to qemu-2.8 -machine pseries-2.7,max-cpu-compat=power7 -cpu host
?
17) Boot guest with qemu-2.6 -machine pseries-2.6 -cpu host
Migrate to qemu-2.7.z -machine pseries-2.6 -cpu host
Should work
18) Hack guest to only advertise power7 compatibility, boot with -cpu host
Boot with qemu-2.8, migrate to qemu-2.8
Should be in power7 compat mode after CAS on source, and still
in power7 compat mode on destination
Changes since v4:
* Fixed a crash bug in the smp option compatiblity mangling
* Removed an unnecessary fallback for missing pvr_match
* Some spelling corrections
* Migration core patch removed (alread merged to ppc-for-2.10)
Changes since v3:
* Backwards compatible -cpu handling now removes compat= option from
options passed on to the cpu, so it doesn't trigger further warnings
* Add a migration fix make cpu_synchronize_state() safe in post_load
handlers, which in turn fixes a bug in 5/5.
* A number of bugfixes and other tweaks suggested by feedback on v2.
Changes since RFCv2:
* Many patches dropped, since they're already merged
* Rebased, fixed conflicts
* Restored support for backwards migration (wasn't as complicated as
I thought)
* Updated final patch's description to more accurately reflect the
logic
Changes since RFCv1:
* Change CAS logic to prefer compatibility modes over raw mode
* Simplified by giving up on half-hearted attempts to maintain
backwards migration
* Folded migration stream changes into a single patch
* Removed some preliminary patches which are already merged
David Gibson (3):
pseries: Move CPU compatibility property to machine
pseries: Reset CPU compatibility mode
ppc: Rework CPU compatibility testing across migration
Greg Kurz (1):
qapi: add explicit null to string input and output visitors
hw/ppc/spapr.c | 8 +++-
hw/ppc/spapr_cpu_core.c | 61 +++++++++++++++++++++-----
hw/ppc/spapr_hcall.c | 8 ++--
include/hw/ppc/spapr.h | 12 +++--
qapi/string-input-visitor.c | 11 +++++
qapi/string-output-visitor.c | 14 ++++++
target/ppc/compat.c | 102 +++++++++++++++++++++++++++++++++++++++++++
target/ppc/cpu.h | 5 ++-
target/ppc/machine.c | 69 +++++++++++++++++++++++++++--
target/ppc/translate_init.c | 86 +++++++++++-------------------------
10 files changed, 292 insertions(+), 84 deletions(-)
--
2.9.4
- [Qemu-ppc] [PATCHv5 0/4] Clean up compatibility mode handling,
David Gibson <=
- [Qemu-ppc] [PATCHv5 4/4] ppc: Rework CPU compatibility testing across migration, David Gibson, 2017/06/01
- [Qemu-ppc] [PATCHv5 1/4] qapi: add explicit null to string input and output visitors, David Gibson, 2017/06/01
- [Qemu-ppc] [PATCHv5 3/4] pseries: Reset CPU compatibility mode, David Gibson, 2017/06/01
- [Qemu-ppc] [PATCHv5 2/4] pseries: Move CPU compatibility property to machine, David Gibson, 2017/06/01
- Re: [Qemu-ppc] [Qemu-devel] [PATCHv5 0/4] Clean up compatibility mode handling, no-reply, 2017/06/01