[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 0/7] i386: Add `machine` parameter to query-cpu-definitions
From: |
Eduardo Habkost |
Subject: |
[PATCH v2 0/7] i386: Add `machine` parameter to query-cpu-definitions |
Date: |
Tue, 13 Oct 2020 19:04:50 -0400 |
Changes v1 -> v2:
* Rewrite documentation, with suggestions from Markus
* Try to reduce churn and keep the existing default_cpu_version
static variable
* Replace x86_cpu_class_get_alias_of() with x86_cpu_model_resolve_alias()
Link to v1:
https://lore.kernel.org/qemu-devel/20191025022553.25298-1-ehabkost@redhat.com
We had introduced versioned CPU models in QEMU 4.1, including a
method for querying for CPU model versions using
query-cpu-definitions. This solution had one problem: fetching
CPU alias information for multiple machine types required
restarting QEMU for each machine being queried.
This series adds a new `machine` parameter to
query-cpu-definitions, that can be used to query CPU model alias
information for multiple machines without restarting QEMU.
About CPU model versioning vs query-cpu-model-expansion
-------------------------------------------------------
There had been some discussion[1] about using a mechanism for
this similar to what's done in s390x, based on
query-cpu-model-expansion. I had considered that approach in the
beginning, but this would require
query-cpu-model-expansion type=static
to resolve to a useful base CPU model that is static.
Unfortunately, we have no useful static CPU model in x86 yet,
except for "base", because of the complex accelerator-dependent
rules that affect expansion of CPU models. Maybe in the future
we'll be able to define static versions of each CPU model, and
unify the CPU model versioning approaches in all architectures.
While we don't have this, we need to work with what we have.
What we have today in x86 are CPU models that are not static and
not accelerator-independent.
[1]
https://lore.kernel.org/qemu-devel/dbf9e4c1-0acf-9469-84f9-f80c41e2cae0@redhat.com/
Eduardo Habkost (7):
machine: machine_find_class() function
i386: Add X86CPUModel.alias_of field
i386: Replace x86_cpu_class_get_alias_of() with
x86_cpu_model_resolve_alias()
i386: Add default_version parameter to CPU version functions
i386: Wrap QMP code in !CONFIG_USER_ONLY
i386: Don't use default_cpu_version inside x86_cpu_definition_entry()
cpu: Add `machine` parameter to query-cpu-definitions
qapi/machine-target.json | 14 ++-
include/hw/boards.h | 2 +
hw/core/machine.c | 16 ++++
softmmu/vl.c | 17 +---
target/arm/helper.c | 4 +-
target/i386/cpu.c | 105 +++++++++++++++------
target/mips/helper.c | 4 +-
target/s390x/cpu_models.c | 4 +-
target/ppc/translate_init.c.inc | 4 +-
tests/acceptance/x86_cpu_model_versions.py | 48 ++++++++++
10 files changed, 167 insertions(+), 51 deletions(-)
--
2.28.0
- [PATCH v2 0/7] i386: Add `machine` parameter to query-cpu-definitions,
Eduardo Habkost <=
- [PATCH v2 1/7] machine: machine_find_class() function, Eduardo Habkost, 2020/10/13
- [PATCH v2 2/7] i386: Add X86CPUModel.alias_of field, Eduardo Habkost, 2020/10/13
- [PATCH v2 3/7] i386: Replace x86_cpu_class_get_alias_of() with x86_cpu_model_resolve_alias(), Eduardo Habkost, 2020/10/13
- [PATCH v2 4/7] i386: Add default_version parameter to CPU version functions, Eduardo Habkost, 2020/10/13
- [PATCH v2 5/7] i386: Wrap QMP code in !CONFIG_USER_ONLY, Eduardo Habkost, 2020/10/13
- [PATCH v2 6/7] i386: Don't use default_cpu_version inside x86_cpu_definition_entry(), Eduardo Habkost, 2020/10/13
- [PATCH v2 7/7] cpu: Add `machine` parameter to query-cpu-definitions, Eduardo Habkost, 2020/10/13