Preparatory step for adding support for configuring custom CPU types in the PVE UI.
Add optional property 'arch' (x86_64|aarch64) to cpu_fmt to allow custom models to indicate which architecture they belong to. 'arch' defaults to x86_64 for backwards compatibility. Update get_cpu_models to only return custom models that match the arch to allow querying custom models for a given host architecture. Signed-off-by: Arthur Bied-Charreton <[email protected]> --- src/PVE/QemuServer/CPUConfig.pm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/PVE/QemuServer/CPUConfig.pm b/src/PVE/QemuServer/CPUConfig.pm index 32ec4954..728c5562 100644 --- a/src/PVE/QemuServer/CPUConfig.pm +++ b/src/PVE/QemuServer/CPUConfig.pm @@ -374,6 +374,13 @@ my $cpu_fmt = { . " note that doing so will break live migration to CPUs with other values.", optional => 1, }, + arch => { + type => 'string', + enum => [qw(x86_64 aarch64)], + default => 'x86_64', + description => 'The architecture the CPU model belongs to.', + optional => 1, + }, }; my $sev_fmt = { @@ -612,9 +619,14 @@ sub get_cpu_models { my $conf = load_custom_model_conf(); for my $custom_model (keys %{ $conf->{ids} }) { + my $custom_model_arch = $conf->{ids}->{$custom_model}->{'arch'}; + $custom_model_arch //= $cpu_fmt->{'arch'}->{default}; + next if ($custom_model_arch ne $arch); + my $reported_model = $conf->{ids}->{$custom_model}->{'reported-model'}; $reported_model //= $cpu_fmt->{'reported-model'}->{default}; my $vendor = $all_cpu_models->{$reported_model}; + push @$models, { name => "custom-$custom_model", -- 2.47.3
