qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC 00/17] Clean up compatibility mode handling
@ 2016-10-30 11:11 David Gibson
  2016-10-30 11:11 ` [Qemu-devel] [RFC 01/17] ppc: Remove some stub POWER6 models David Gibson
                   ` (16 more replies)
  0 siblings, 17 replies; 75+ messages in thread
From: David Gibson @ 2016-10-30 11:11 UTC (permalink / raw)
  To: nikunj, aik, mdroth; +Cc: thuth, lvivier, qemu-ppc, qemu-devel, David Gibson

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

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

end of thread, other threads:[~2016-11-14  6:54 UTC | newest]

Thread overview: 75+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-30 11:11 [Qemu-devel] [RFC 00/17] Clean up compatibility mode handling David Gibson
2016-10-30 11:11 ` [Qemu-devel] [RFC 01/17] ppc: Remove some stub POWER6 models David Gibson
2016-10-31  7:38   ` Thomas Huth
2016-10-31  8:37     ` David Gibson
2016-11-08  3:40   ` David Gibson
2016-10-30 11:11 ` [Qemu-devel] [RFC 02/17] powernv: CPU compatibility modes don't make sense for powernv David Gibson
2016-10-31  7:46   ` Thomas Huth
2016-10-31  8:38     ` David Gibson
2016-10-31 10:35   ` Greg Kurz
2016-10-30 11:11 ` [Qemu-devel] [RFC 03/17] pseries: Always use core objects for CPU construction David Gibson
2016-11-03  8:11   ` Alexey Kardashevskiy
2016-11-04  9:51     ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2016-11-08  5:34       ` David Gibson
2016-10-30 11:11 ` [Qemu-devel] [RFC 04/17] pseries: Make cpu_update during CAS unconditional David Gibson
2016-11-03  8:24   ` Alexey Kardashevskiy
2016-11-04 10:45   ` Thomas Huth
2016-11-08  3:44     ` David Gibson
2016-10-30 11:11 ` [Qemu-devel] [RFC 05/17] ppc: Clean up and QOMify hypercall emulation David Gibson
2016-11-03  8:50   ` Alexey Kardashevskiy
2016-10-30 11:11 ` [Qemu-devel] [RFC 06/17] ppc: Rename cpu_version to compat_pvr David Gibson
2016-11-04  2:26   ` Alexey Kardashevskiy
2016-11-08  3:48     ` David Gibson
2016-11-04 10:51   ` Thomas Huth
2016-10-30 11:11 ` [Qemu-devel] [RFC 07/17] ppc: Rewrite ppc_set_compat() David Gibson
2016-11-04  2:57   ` Alexey Kardashevskiy
2016-11-08  3:49     ` David Gibson
2016-10-30 11:11 ` [Qemu-devel] [RFC 08/17] ppc: Rewrite ppc_get_compat_smt_threads() David Gibson
2016-11-04  3:37   ` Alexey Kardashevskiy
2016-11-08  5:13     ` David Gibson
2016-10-30 11:12 ` [Qemu-devel] [RFC 09/17] ppc: Validate compatibility modes when setting David Gibson
2016-10-31  5:55   ` Alexey Kardashevskiy
2016-10-31  8:39     ` David Gibson
2016-11-04  3:45       ` Alexey Kardashevskiy
2016-11-08  5:14         ` David Gibson
2016-10-30 11:12 ` [Qemu-devel] [RFC 10/17] pseries: Rewrite CAS PVR compatibility logic David Gibson
2016-10-31  5:00   ` Alexey Kardashevskiy
2016-10-31  5:44     ` David Gibson
2016-11-10 17:54   ` Michael Roth
2016-11-10 23:50     ` David Gibson
2016-10-30 11:12 ` [Qemu-devel] [RFC 11/17] ppc: Add ppc_set_compat_all() David Gibson
2016-11-04  4:01   ` Alexey Kardashevskiy
2016-11-08  5:18     ` David Gibson
2016-11-09  1:27       ` Alexey Kardashevskiy
2016-11-09  3:52         ` David Gibson
2016-11-09  5:18           ` Alexey Kardashevskiy
2016-11-10  3:13             ` David Gibson
2016-10-30 11:12 ` [Qemu-devel] [RFC 12/17] ppc: Migrate compatibility mode David Gibson
2016-11-04  5:58   ` Alexey Kardashevskiy
2016-11-08  5:19     ` David Gibson
2016-11-08  5:51       ` Alexey Kardashevskiy
2016-11-10  1:59         ` David Gibson
2016-11-10 23:55           ` Michael Roth
2016-11-14  1:15             ` David Gibson
2016-10-30 11:12 ` [Qemu-devel] [RFC 13/17] pseries: Move CPU compatibility property to machine David Gibson
2016-11-04  7:43   ` Alexey Kardashevskiy
2016-11-08  5:26     ` David Gibson
2016-11-08  5:56       ` Alexey Kardashevskiy
2016-11-09  4:41         ` David Gibson
2016-10-30 11:12 ` [Qemu-devel] [RFC 14/17] pseries: Reset CPU compatibility mode David Gibson
2016-11-04  7:50   ` Alexey Kardashevskiy
2016-10-30 11:12 ` [Qemu-devel] [RFC 15/17] ppc: Check that CPU model stays consistent across migration David Gibson
2016-11-04  7:54   ` Alexey Kardashevskiy
2016-11-08  5:29     ` David Gibson
2016-11-08  6:03       ` Alexey Kardashevskiy
2016-11-09  4:24         ` David Gibson
2016-11-09  6:06           ` Alexey Kardashevskiy
2016-11-09  6:40             ` David Gibson
2016-10-30 11:12 ` [Qemu-devel] [RFC 16/17] ppc: Remove counter-productive "sanity checks" in migration David Gibson
2016-11-04  5:52   ` Alexey Kardashevskiy
2016-11-08  5:31     ` David Gibson
2016-11-11 18:13       ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2016-11-14  2:34         ` Alexey Kardashevskiy
2016-11-14  6:08           ` David Gibson
2016-10-30 11:12 ` [Qemu-devel] [RFC 17/17] pseries: Default to POWER8 compatibility mode David Gibson
2016-10-30 11:58   ` David Gibson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).