Re: [PATCH qemu-server v4 08/17] cpu flags: improve flags list returned by endpoint

Fiona Ebner
2026-05-07T13:10:40Z

Am 30.04.26 um 6:01 PM schrieb Arthur Bied-Charreton:
> Enhance the cpu-flags endpoint's list of flags by using the new
> query_available_cpu_flags utility, which for each flag, additionally
> returns a list of nodes supporting it, e.g.:
>
> ```
> name: 'aes',
> 'supported-on': ['node1', 'node2'],
> description: '...',
> ```
>
> An `accel` parameter selects the acceleration type, `kvm` (default) or
> `tcg` for which flag to node compatibility is evaluated.

Typo: s/to/the/

>
> Signed-off-by: Arthur Bied-Charreton <a.bied-charreton@proxmox.com>
> ---
> src/PVE/API2/Qemu/CPUFlags.pm | 27 +++++++++++++++++++++++----
> 1 file changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/src/PVE/API2/Qemu/CPUFlags.pm b/src/PVE/API2/Qemu/CPUFlags.pm
> index 672bd2d2..122f0ed9 100644
> --- a/src/PVE/API2/Qemu/CPUFlags.pm
> +++ b/src/PVE/API2/Qemu/CPUFlags.pm
> @@ -6,7 +6,8 @@ use PVE::JSONSchema qw(get_standard_option);
> use PVE::RESTHandler;
> use PVE::Tools qw(extract_param);
>
> -use PVE::QemuServer::CPUConfig;
> +use PVE::QemuServer::Helpers;
> +use PVE::QemuServer::CPUFlags;

Nit: not ordered alphabetically

>
> use base qw(PVE::RESTHandler);
>
> @@ -14,13 +15,22 @@ __PACKAGE__->register_method({
> name => 'index',
> path => '',
> method => 'GET',
> - description => 'List of available VM-specific CPU flags.',
> + description =>
> + "List of available VM-specific CPU flags. Returns an empty list for 'aarch64' "
> + . "as no VM-specific flags are defined for it yet.",
> permissions => { user => 'all' },
> parameters => {
> additionalProperties => 0,
> properties => {
> node => get_standard_option('pve-node'),
> arch => get_standard_option('pve-qm-cpu-arch', { optional => 1 }),
> + accel => {
> + description => 'Acceleration type to check node compatibility for.',
> + type => 'string',
> + enum => [qw(kvm tcg)],
> + optional => 1,
> + default => 'kvm',
> + },
> },
> },
> returns => {
> @@ -35,6 +45,14 @@ __PACKAGE__->register_method({
> description => {
> type => 'string',
> description => "Description of the CPU flag.",
> + optional => 1,

AFAICT, we still always have a description, so this is not necessary.

> + },
> + 'supported-on' => {
> + description =>
> + 'List of nodes supporting the CPU flag with the selected acceleration type ("accel").',
> + type => 'array',
> + items => get_standard_option('pve-node'),
> + optional => 1,
> },
> },
> },
> @@ -42,9 +60,10 @@ __PACKAGE__->register_method({
> code => sub {
> my ($param) = @_;
>
> - my $arch = extract_param($param, 'arch');
> + my $arch = extract_param($param, 'arch') // PVE::QemuServer::Helpers::get_host_arch();
> + my $accel = extract_param($param, 'accel') // 'kvm';
>
> - return PVE::QemuServer::CPUConfig::get_supported_cpu_flags($arch);
> + return PVE::QemuServer::CPUFlags::query_available_cpu_flags($accel, 1, $arch);
> },
> });
>