Re: [PATCH 5/8] qemu: Generate acpi-generic-initiator command from acpi nodeset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Sep 06, 2025 at 03:09:00PM +0200, Andrea Righi wrote:
> Signed-off-by: Andrea Righi <arighi@xxxxxxxxxx>
> ---
>  src/qemu/qemu_command.c | 45 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 45 insertions(+)

Reviewed-by: Daniel P. Berrangé <berrange@xxxxxxxxxx>

> 
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 3f9b583985..9ca0847789 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -5222,6 +5222,47 @@ qemuBuildHostdevSCSICommandLine(virCommand *cmd,
>  }
>  
>  
> +static int
> +qemuBuildAcpiNodesetProps(virCommand *cmd,
> +                          virDomainDeviceInfo *info,
> +                          virQEMUCaps *qemuCaps)
> +{
> +    static unsigned int giIndex;
> +    int node = -1;
> +
> +    if (!info->acpiNodeset)
> +        return 0;
> +
> +    if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_ACPI_GENERIC_INITIATOR))
> +        return -1;

We can assume the validate function already ran, so we don't
need this check here, which is good as this would return an
error status without setting an error message.

> +
> +    while ((node = virBitmapNextSetBit(info->acpiNodeset, node)) > -1) {
> +        g_autoptr(virJSONValue) props = NULL;
> +        g_autofree char *id = g_strdup_printf("gi%u", giIndex++);
> +
> +        if (virJSONValueObjectAdd(&props,
> +                                  "s:qom-type", "acpi-generic-initiator",
> +                                  "s:id", id,
> +                                  "s:pci-dev", info->alias,
> +                                  "i:node", node,
> +                                  NULL) < 0) {
> +            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                           _("Failed to build acpi-generic-initiator properties"));
> +
> +            return -1;
> +        }
> +
> +        if (qemuBuildObjectCommandlineFromJSON(cmd, props) < 0) {
> +            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                           _("Failed to build QEMU command line for acpi-generic-initiator"));
> +            return -1;
> +        }
> +    }
> +
> +    return 0;
> +}
> +
> +
>  static int
>  qemuBuildHostdevCommandLine(virCommand *cmd,
>                              const virDomainDef *def,
> @@ -5264,6 +5305,10 @@ qemuBuildHostdevCommandLine(virCommand *cmd,
>  
>              if (qemuBuildDeviceCommandlineFromJSON(cmd, devprops, def, qemuCaps) < 0)
>                  return -1;
> +
> +            if (qemuBuildAcpiNodesetProps(cmd, hostdev->info, qemuCaps) < 0)
> +                return -1;
> +
>              break;
>  
>          /* SCSI */
> -- 
> 2.51.0
> 

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux