Message ID | 20250220065326.312596-1-anisinha@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v2] microvm: do not use the lastest cpu version | expand |
On Thu, Feb 20, 2025 at 12:23:26PM +0530, Ani Sinha wrote: > Date: Thu, 20 Feb 2025 12:23:26 +0530 > From: Ani Sinha <anisinha@redhat.com> > Subject: [PATCH v2] microvm: do not use the lastest cpu version > X-Mailer: git-send-email 2.45.2 > > commit 0788a56bd1ae3 ("i386: Make unversioned CPU models be aliases") > introduced 'default_cpu_version' for PCMachineClass. This created three > categories of CPU models: > - Most unversioned CPU models would use version 1 by default. > - For machines 4.0.1 and older that do not support cpu model aliases, a > special default_cpu_version value of CPU_VERSION_LEGACY is used. > - It was thought that future machines would use the latest value of cpu > versions corresponding to default_cpu_version value of > CPU_VERSION_LATEST [1]. > > All pc machines still use the default cpu version of 1 for > unversioned cpu models. CPU_VERSION_LATEST is a moving target and > changes with time. Therefore, if machines use CPU_VERSION_LATEST, it would > mean that over a period of time, for the same versioned machine type, > the cpu version would be different depending on what the latest was at that > time. This would break guests even when they use a constant specific > versioned machine type. > Additionally, microvm machines are not versioned anyway and therefore > there is no requirement to use the latest cpu model by default. > Let microvms use the non-versioned cpu model and remove all references > to CPU_VERSION_LATEST as there are no other users (nor we anticipate > future consumers of CPU_VERSION_LATEST). > > Those users who need spefific cpu versions can use explicit version in > the QEMU command line to select the specific cpu version desired. > > CI pipline does not break with this change. > > 1) See commit dcafd1ef0af227 ("i386: Register versioned CPU models") > > CC: imammedo@redhat.com > CC: zhao1.liu@intel.com > Reviewed-by: Igor Mammedov <imammedo@redhat.com> > Reviewed-by: Sergio Lopez <slp@redhat.com> > Signed-off-by: Ani Sinha <anisinha@redhat.com> > --- > hw/i386/microvm.c | 2 +- > target/i386/cpu.c | 15 --------------- > target/i386/cpu.h | 4 ---- > 3 files changed, 1 insertion(+), 20 deletions(-) > > changelog: > v2: tags added, more explanation in the commit log. Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index a8d354aabe..b8be1542ff 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -458,7 +458,7 @@ static void microvm_machine_state_init(MachineState *machine) microvm_memory_init(mms); - x86_cpus_init(x86ms, CPU_VERSION_LATEST); + x86_cpus_init(x86ms, 1); microvm_devices_init(mms); } diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 72ab147e85..0a95b33d15 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -5513,18 +5513,6 @@ void x86_cpu_set_default_version(X86CPUVersion version) default_cpu_version = version; } -static X86CPUVersion x86_cpu_model_last_version(const X86CPUModel *model) -{ - int v = 0; - const X86CPUVersionDefinition *vdef = - x86_cpu_def_get_versions(model->cpudef); - while (vdef->version) { - v = vdef->version; - vdef++; - } - return v; -} - /* Return the actual version being used for a specific CPU model */ static X86CPUVersion x86_cpu_model_resolve_version(const X86CPUModel *model) { @@ -5532,9 +5520,6 @@ static X86CPUVersion x86_cpu_model_resolve_version(const X86CPUModel *model) if (v == CPU_VERSION_AUTO) { v = default_cpu_version; } - if (v == CPU_VERSION_LATEST) { - return x86_cpu_model_last_version(model); - } return v; } diff --git a/target/i386/cpu.h b/target/i386/cpu.h index c67b42d34f..71f150a05f 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -2701,10 +2701,6 @@ void apic_handle_tpr_access_report(DeviceState *d, target_ulong ip, TPRAccess access); /* Special values for X86CPUVersion: */ - -/* Resolve to latest CPU version */ -#define CPU_VERSION_LATEST -1 - /* * Resolve to version defined by current machine type. * See x86_cpu_set_default_version()