From: Eduardo Habkost <ehabkost@redhat.com>
To: qemu-devel@nongnu.org
Cc: Pavel Hrdina <phrdina@redhat.com>,
"Daniel P. Berrange" <berrange@redhat.com>,
Tao Xu <tao3.xu@intel.com>, "Hu, Robert" <robert.hu@intel.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Igor Mammedov <imammedo@redhat.com>,
Jiri Denemark <jdenemar@redhat.com>,
Richard Henderson <rth@twiddle.net>
Subject: [Qemu-devel] [PATCH 0/6] x86 CPU model versioning
Date: Tue, 25 Jun 2019 02:00:02 -0300 [thread overview]
Message-ID: <20190625050008.12789-1-ehabkost@redhat.com> (raw)
This series implements basic infrastructure for CPU model
versioning, as discussed before[1][2][3]. This will finally
allow us to update CPU models in ways that introduce new software
or hardware requirements.
My original plan was to use "query-cpu-model-expansion
mode=static" to resolve aliases, but I dropped that plan because
it would increase complexity for management software a lot.
static CPU models are documented as not being affected by the
machine type and accelerator at all, which would make the
versioned CPU models very inconvenient to use in the command
line. e.g.: users would be forced to replace:
-cpu Haswell
with:
-cpu Haswell-4.1,+2apic,+monitor,+kvmclock,+kvm-nopiodelay,+kvm-asyncpf,+kvm-steal-time,+kvm-pv-eoi,+kvmclock-stable-bit,+x2apic,-acpi,-monitor,-svm
In the end, making the versioned CPU models static is not a
requirement at all: what we really need is to drop the
runnability guarantees from unversioned CPU model names, and
require management software to resolve the unversioned alias
before saving the VM configuration.
Guest ABI compatibility and live migration guarantees are going
to be kept: unversioned CPU models will still be usable with live
migration. Only runnability guarantees when updating the machine
type will be dropped. This means unversioned CPU models are
still reported as migration-safe in query-cpu-definitions.
The last patch in the series demonstrates how the new feature can
be used to update a CPU model: it adds a Cascadelake-Server-4.1.1
CPU model, including "arch-capabilities=on" and "stepping=5".
Unfortunately we can't enable arch-capabilities in the -4.1
version of Cascadelake-Server because it would break our existing
runnability guarantees.
[1] https://www.mail-archive.com/libvir-list@redhat.com/msg167342.html
[2] https://www.mail-archive.com/qemu-devel@nongnu.org/msg590034.html
[3] https://www.mail-archive.com/qemu-devel@nongnu.org/msg611244.html
---
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Pavel Hrdina <phrdina@redhat.com>
Cc: Jiri Denemark <jdenemar@redhat.com>
Cc: "Hu, Robert" <robert.hu@intel.com>
Cc: Tao Xu <tao3.xu@intel.com>
Cc: Richard Henderson <rth@twiddle.net>
Eduardo Habkost (6):
i386: Add x-force-features option for testing
i386: Remove unused host_cpudef variable
qmp: Add "alias-of" field to query-cpu-definitions
i386: Infrastructure for versioned CPU models
docs: Deprecate CPU model runnability guarantees
i386: Add Cascadelake-Server-4.1.1 CPU model
qapi/target.json | 9 +-
include/hw/i386/pc.h | 3 +
target/i386/cpu-qom.h | 10 +-
target/i386/cpu.h | 16 ++
hw/i386/pc.c | 3 +
hw/i386/pc_piix.c | 4 +
hw/i386/pc_q35.c | 4 +
target/i386/cpu.c | 188 +++++++++++++++++----
qemu-deprecated.texi | 19 +++
tests/acceptance/x86_cpu_model_versions.py | 173 +++++++++++++++++++
10 files changed, 388 insertions(+), 41 deletions(-)
create mode 100644 tests/acceptance/x86_cpu_model_versions.py
--
2.18.0.rc1.1.g3f1ff2140
next reply other threads:[~2019-06-25 5:03 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-25 5:00 Eduardo Habkost [this message]
2019-06-25 5:00 ` [Qemu-devel] [PATCH 1/6] i386: Add x-force-features option for testing Eduardo Habkost
2019-06-25 5:00 ` [Qemu-devel] [PATCH 2/6] i386: Remove unused host_cpudef variable Eduardo Habkost
2019-06-25 9:04 ` Dr. David Alan Gilbert
2019-06-25 5:00 ` [Qemu-devel] [PATCH 3/6] qmp: Add "alias-of" field to query-cpu-definitions Eduardo Habkost
2019-06-25 16:15 ` Daniel P. Berrangé
2019-06-25 18:00 ` Eduardo Habkost
2019-06-25 5:00 ` [Qemu-devel] [PATCH 4/6] i386: Infrastructure for versioned CPU models Eduardo Habkost
2019-06-25 9:32 ` Dr. David Alan Gilbert
2019-06-25 13:40 ` Eduardo Habkost
2019-06-25 14:32 ` Dr. David Alan Gilbert
2019-06-25 14:53 ` Eduardo Habkost
2019-06-25 14:56 ` Dr. David Alan Gilbert
2019-06-25 16:05 ` Eduardo Habkost
2019-06-25 16:26 ` Daniel P. Berrangé
2019-06-25 17:59 ` Eduardo Habkost
2019-06-25 18:08 ` Daniel P. Berrangé
2019-06-25 18:11 ` Eduardo Habkost
2019-06-25 5:00 ` [Qemu-devel] [PATCH 5/6] docs: Deprecate CPU model runnability guarantees Eduardo Habkost
2019-06-25 5:00 ` [Qemu-devel] [PATCH 6/6] i386: Add Cascadelake-Server-4.1.1 CPU model Eduardo Habkost
2019-06-25 5:35 ` Tao Xu
2019-06-25 13:11 ` Eduardo Habkost
2019-06-25 5:15 ` [Qemu-devel] [PATCH 0/6] x86 CPU model versioning no-reply
2019-06-25 16:13 ` Daniel P. Berrangé
2019-06-25 18:11 ` Eduardo Habkost
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190625050008.12789-1-ehabkost@redhat.com \
--to=ehabkost@redhat.com \
--cc=berrange@redhat.com \
--cc=dgilbert@redhat.com \
--cc=imammedo@redhat.com \
--cc=jdenemar@redhat.com \
--cc=pbonzini@redhat.com \
--cc=phrdina@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=robert.hu@intel.com \
--cc=rth@twiddle.net \
--cc=tao3.xu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).