[PATCH v3 0/6] qemu: acpi-generic-initiator support

Andrea Righi via Devel posted 6 patches 1 year ago
Failed in applying to current master (apply log)
There is a newer version of this series
src/ch/ch_domain.c                                 |   1 +
src/conf/domain_conf.c                             | 159 +++++++++++++++++++++
src/conf/domain_conf.h                             |  14 ++
src/conf/domain_postparse.c                        |   1 +
src/conf/domain_validate.c                         |  37 +++++
src/conf/numa_conf.c                               |   3 +
src/conf/schemas/domaincommon.rng                  |  19 +++
src/conf/virconftypes.h                            |   2 +
src/libxl/libxl_driver.c                           |   6 +
src/lxc/lxc_driver.c                               |   6 +
src/qemu/qemu_capabilities.c                       |   2 +
src/qemu/qemu_capabilities.h                       |   1 +
src/qemu/qemu_command.c                            |  49 ++++++-
src/qemu/qemu_domain.c                             |   2 +
src/qemu/qemu_domain_address.c                     |   4 +
src/qemu/qemu_driver.c                             |   3 +
src/qemu/qemu_hotplug.c                            |   5 +
src/qemu/qemu_postparse.c                          |   1 +
src/qemu/qemu_validate.c                           |   1 +
src/test/test_driver.c                             |   4 +
.../caps_10.0.0_x86_64+amdsev.xml                  |   1 +
tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml  |   1 +
tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml   |   1 +
tests/qemucapabilitiesdata/caps_9.1.0_riscv64.xml  |   1 +
tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml   |   1 +
.../caps_9.2.0_aarch64+hvf.xml                     |   1 +
.../caps_9.2.0_x86_64+amdsev.xml                   |   1 +
tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml   |   1 +
.../acpi-generic-initiator.x86_64-latest.args      |  55 +++++++
.../acpi-generic-initiator.x86_64-latest.xml       | 102 +++++++++++++
tests/qemuxmlconfdata/acpi-generic-initiator.xml   | 102 +++++++++++++
tests/qemuxmlconftest.c                            |   1 +
32 files changed, 581 insertions(+), 7 deletions(-)
create mode 100644 tests/qemuxmlconfdata/acpi-generic-initiator.x86_64-latest.args
create mode 100644 tests/qemuxmlconfdata/acpi-generic-initiator.x86_64-latest.xml
create mode 100644 tests/qemuxmlconfdata/acpi-generic-initiator.xml
[PATCH v3 0/6] qemu: acpi-generic-initiator support
Posted by Andrea Righi via Devel 1 year ago
= Overview =

This patch set introduces support for acpi-generic-initiator devices,
supported by QEMU [1].

The acpi-generic-initiator object is required to support Multi-Instance GPU
(MIG) configurations on NVIDIA GPUs [2]. MIG enables partitioning of GPU
resources into multiple isolated instances, each requiring a dedicated NUMA
node definition.

= Implementation =

This patch set implements the libvirt counterpart to the QEMU feature,
enabling users to configure acpi-generic-initiator objects within libvirt
domain XML.

This includes:
 - adding XML syntax to define acpi-generic-initiator objects,
 - resolving the acpi-generic-initiator definitions into the proper QEMU
   command-line arguments,
 - ensuring compatibility with existing NUMA configuration.

= Example =

 - Domain XML:
```
...
<cpu mode='host-passthrough' check='none'>
  <numa>
    <cell id='0' cpus='0-15' memory='8388608' unit='KiB'/>
    <cell id='1' memory='0' unit='KiB'/>
    <cell id='2' memory='0' unit='KiB'/>
    <cell id='3' memory='0' unit='KiB'/>
    <cell id='4' memory='0' unit='KiB'/>
    <cell id='5' memory='0' unit='KiB'/>
    <cell id='6' memory='0' unit='KiB'/>
    <cell id='7' memory='0' unit='KiB'/>
    <cell id='8' memory='0' unit='KiB'/>
  </numa>
</cpu>
...
<devices>
...
    <hostdev mode='subsystem' type='pci' managed='no'>
      <source>
        <address domain='0x0009' bus='0x01' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </hostdev>
  <acpi-generic-initiator>
    <alias name="gi1"/>
    <pci-dev>hostdev0</pci-dev>
    <numa-node>1</numa-node>
  </acpi-generic-initiator>
  <acpi-generic-initiator>
    <alias name="gi2"/>
    <pci-dev>hostdev0</pci-dev>
    <numa-node>2</numa-node>
  </acpi-generic-initiator>
  <acpi-generic-initiator>
    <alias name="gi3"/>
    <pci-dev>hostdev0</pci-dev>
    <numa-node>3</numa-node>
  </acpi-generic-initiator>
  <acpi-generic-initiator>
    <alias name="gi4"/>
    <pci-dev>hostdev0</pci-dev>
    <numa-node>4</numa-node>
  </acpi-generic-initiator>
  <acpi-generic-initiator>
    <alias name="gi5"/>
    <pci-dev>hostdev0</pci-dev>
    <numa-node>5</numa-node>
  </acpi-generic-initiator>
  <acpi-generic-initiator>
    <alias name="gi6"/>
    <pci-dev>hostdev0</pci-dev>
    <numa-node>6</numa-node>
  </acpi-generic-initiator>
  <acpi-generic-initiator>
    <alias name="gi7"/>
    <pci-dev>hostdev0</pci-dev>
    <numa-node>7</numa-node>
  </acpi-generic-initiator>
  <acpi-generic-initiator>
    <alias name="gi8"/>
    <pci-dev>hostdev0</pci-dev>
    <numa-node>8</numa-node>
  </acpi-generic-initiator>
</devices>
```

 - Generated QEMU command line options:
```
... /usr/bin/qemu-system-aarch64 \
...
-object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":8589934592}' \
-numa node,nodeid=0,cpus=0-15,memdev=ram-node0 \
-numa node,nodeid=1 \
-numa node,nodeid=2 \
-numa node,nodeid=3 \
-numa node,nodeid=4 \
-numa node,nodeid=5 \
-numa node,nodeid=6 \
-numa node,nodeid=7 \
-numa node,nodeid=8 \
...
-device '{"driver":"vfio-pci","host":"0009:01:00.0","id":"hostdev0","bus":"pci.3","addr":"0x0"}'
...
-object acpi-generic-initiator,id=gi1,pci-dev=hostdev0,node=1 \
-object acpi-generic-initiator,id=gi2,pci-dev=hostdev0,node=2 \
-object acpi-generic-initiator,id=gi3,pci-dev=hostdev0,node=3 \
-object acpi-generic-initiator,id=gi4,pci-dev=hostdev0,node=4 \
-object acpi-generic-initiator,id=gi5,pci-dev=hostdev0,node=5 \
-object acpi-generic-initiator,id=gi6,pci-dev=hostdev0,node=6 \
-object acpi-generic-initiator,id=gi7,pci-dev=hostdev0,node=7 \
-object acpi-generic-initiator,id=gi8,pci-dev=hostdev0,node=8
```

= References =

[1] https://lore.kernel.org/all/20231225045603.7654-2-ankita@nvidia.com/
[2] https://www.nvidia.com/en-in/technologies/multi-instance-gpu/

ChangeLog v2 -> v3:
  - replaced <text/> with proper types in the XML schema
  - avoid mixing g_free() and VIR_FREE()
  - use virXMLPropString() instead of looping all XML nodes
  - report proper errors with virReportError()
  - use virBufferEscapeString() to process strings passed by the user
  - fix broken formatting of function headers
  - misc coding style fixes

ChangeLog v1 -> v2:
  - split parser and driver changes in separate patches
  - introduce a new qemu capability flag
  - introduce test in qemuxmlconftest

Andrea Righi (6):
      schema: Introduce acpi-generic-initiator definition
      conf: Introduce acpi-generic-initiator device
      qemu: Allow to define NUMA nodes without memory or CPUs assigned
      qemu: capabilies: Introduce QEMU_CAPS_ACPI_GENERIC_INITIATOR
      qemu: support acpi-generic-initiator
      qemu: Add test case for acpi-generic-initiator

 src/ch/ch_domain.c                                 |   1 +
 src/conf/domain_conf.c                             | 159 +++++++++++++++++++++
 src/conf/domain_conf.h                             |  14 ++
 src/conf/domain_postparse.c                        |   1 +
 src/conf/domain_validate.c                         |  37 +++++
 src/conf/numa_conf.c                               |   3 +
 src/conf/schemas/domaincommon.rng                  |  19 +++
 src/conf/virconftypes.h                            |   2 +
 src/libxl/libxl_driver.c                           |   6 +
 src/lxc/lxc_driver.c                               |   6 +
 src/qemu/qemu_capabilities.c                       |   2 +
 src/qemu/qemu_capabilities.h                       |   1 +
 src/qemu/qemu_command.c                            |  49 ++++++-
 src/qemu/qemu_domain.c                             |   2 +
 src/qemu/qemu_domain_address.c                     |   4 +
 src/qemu/qemu_driver.c                             |   3 +
 src/qemu/qemu_hotplug.c                            |   5 +
 src/qemu/qemu_postparse.c                          |   1 +
 src/qemu/qemu_validate.c                           |   1 +
 src/test/test_driver.c                             |   4 +
 .../caps_10.0.0_x86_64+amdsev.xml                  |   1 +
 tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml  |   1 +
 tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml   |   1 +
 tests/qemucapabilitiesdata/caps_9.1.0_riscv64.xml  |   1 +
 tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml   |   1 +
 .../caps_9.2.0_aarch64+hvf.xml                     |   1 +
 .../caps_9.2.0_x86_64+amdsev.xml                   |   1 +
 tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml   |   1 +
 .../acpi-generic-initiator.x86_64-latest.args      |  55 +++++++
 .../acpi-generic-initiator.x86_64-latest.xml       | 102 +++++++++++++
 tests/qemuxmlconfdata/acpi-generic-initiator.xml   | 102 +++++++++++++
 tests/qemuxmlconftest.c                            |   1 +
 32 files changed, 581 insertions(+), 7 deletions(-)
 create mode 100644 tests/qemuxmlconfdata/acpi-generic-initiator.x86_64-latest.args
 create mode 100644 tests/qemuxmlconfdata/acpi-generic-initiator.x86_64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/acpi-generic-initiator.xml
Re: [PATCH v3 0/6] qemu: acpi-generic-initiator support
Posted by Michal Prívozník via Devel 11 months, 2 weeks ago
On 4/2/25 10:25, Andrea Righi via Devel wrote:
> = Overview =
> 
> This patch set introduces support for acpi-generic-initiator devices,
> supported by QEMU [1].
> 
> The acpi-generic-initiator object is required to support Multi-Instance GPU
> (MIG) configurations on NVIDIA GPUs [2]. MIG enables partitioning of GPU
> resources into multiple isolated instances, each requiring a dedicated NUMA
> node definition.
> 
> = Implementation =
> 
> This patch set implements the libvirt counterpart to the QEMU feature,
> enabling users to configure acpi-generic-initiator objects within libvirt
> domain XML.
> 
> This includes:
>  - adding XML syntax to define acpi-generic-initiator objects,
>  - resolving the acpi-generic-initiator definitions into the proper QEMU
>    command-line arguments,
>  - ensuring compatibility with existing NUMA configuration.
> 
> = Example =
> 
>  - Domain XML:
> ```
> ...
> <cpu mode='host-passthrough' check='none'>
>   <numa>
>     <cell id='0' cpus='0-15' memory='8388608' unit='KiB'/>
>     <cell id='1' memory='0' unit='KiB'/>
>     <cell id='2' memory='0' unit='KiB'/>
>     <cell id='3' memory='0' unit='KiB'/>
>     <cell id='4' memory='0' unit='KiB'/>
>     <cell id='5' memory='0' unit='KiB'/>
>     <cell id='6' memory='0' unit='KiB'/>
>     <cell id='7' memory='0' unit='KiB'/>
>     <cell id='8' memory='0' unit='KiB'/>
>   </numa>
> </cpu>
> ...
> <devices>
> ...
>     <hostdev mode='subsystem' type='pci' managed='no'>
>       <source>
>         <address domain='0x0009' bus='0x01' slot='0x00' function='0x0'/>
>       </source>
>       <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
>     </hostdev>
>   <acpi-generic-initiator>
>     <alias name="gi1"/>
>     <pci-dev>hostdev0</pci-dev>
>     <numa-node>1</numa-node>
>   </acpi-generic-initiator>
>   <acpi-generic-initiator>
>     <alias name="gi2"/>
>     <pci-dev>hostdev0</pci-dev>
>     <numa-node>2</numa-node>
>   </acpi-generic-initiator>
>   <acpi-generic-initiator>
>     <alias name="gi3"/>
>     <pci-dev>hostdev0</pci-dev>
>     <numa-node>3</numa-node>
>   </acpi-generic-initiator>
>   <acpi-generic-initiator>
>     <alias name="gi4"/>
>     <pci-dev>hostdev0</pci-dev>
>     <numa-node>4</numa-node>
>   </acpi-generic-initiator>
>   <acpi-generic-initiator>
>     <alias name="gi5"/>
>     <pci-dev>hostdev0</pci-dev>
>     <numa-node>5</numa-node>
>   </acpi-generic-initiator>
>   <acpi-generic-initiator>
>     <alias name="gi6"/>
>     <pci-dev>hostdev0</pci-dev>
>     <numa-node>6</numa-node>
>   </acpi-generic-initiator>
>   <acpi-generic-initiator>
>     <alias name="gi7"/>
>     <pci-dev>hostdev0</pci-dev>
>     <numa-node>7</numa-node>
>   </acpi-generic-initiator>
>   <acpi-generic-initiator>
>     <alias name="gi8"/>
>     <pci-dev>hostdev0</pci-dev>
>     <numa-node>8</numa-node>
>   </acpi-generic-initiator>
> </devices>
> ```
> 
>  - Generated QEMU command line options:
> ```
> ... /usr/bin/qemu-system-aarch64 \
> ...
> -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":8589934592}' \
> -numa node,nodeid=0,cpus=0-15,memdev=ram-node0 \
> -numa node,nodeid=1 \
> -numa node,nodeid=2 \
> -numa node,nodeid=3 \
> -numa node,nodeid=4 \
> -numa node,nodeid=5 \
> -numa node,nodeid=6 \
> -numa node,nodeid=7 \
> -numa node,nodeid=8 \
> ...
> -device '{"driver":"vfio-pci","host":"0009:01:00.0","id":"hostdev0","bus":"pci.3","addr":"0x0"}'
> ...
> -object acpi-generic-initiator,id=gi1,pci-dev=hostdev0,node=1 \
> -object acpi-generic-initiator,id=gi2,pci-dev=hostdev0,node=2 \
> -object acpi-generic-initiator,id=gi3,pci-dev=hostdev0,node=3 \
> -object acpi-generic-initiator,id=gi4,pci-dev=hostdev0,node=4 \
> -object acpi-generic-initiator,id=gi5,pci-dev=hostdev0,node=5 \
> -object acpi-generic-initiator,id=gi6,pci-dev=hostdev0,node=6 \
> -object acpi-generic-initiator,id=gi7,pci-dev=hostdev0,node=7 \
> -object acpi-generic-initiator,id=gi8,pci-dev=hostdev0,node=8
> ```
> 
> = References =
> 
> [1] https://lore.kernel.org/all/20231225045603.7654-2-ankita@nvidia.com/
> [2] https://www.nvidia.com/en-in/technologies/multi-instance-gpu/
> 
> ChangeLog v2 -> v3:
>   - replaced <text/> with proper types in the XML schema
>   - avoid mixing g_free() and VIR_FREE()
>   - use virXMLPropString() instead of looping all XML nodes
>   - report proper errors with virReportError()
>   - use virBufferEscapeString() to process strings passed by the user
>   - fix broken formatting of function headers
>   - misc coding style fixes
> 
> ChangeLog v1 -> v2:
>   - split parser and driver changes in separate patches
>   - introduce a new qemu capability flag
>   - introduce test in qemuxmlconftest
> 
> Andrea Righi (6):
>       schema: Introduce acpi-generic-initiator definition
>       conf: Introduce acpi-generic-initiator device
>       qemu: Allow to define NUMA nodes without memory or CPUs assigned
>       qemu: capabilies: Introduce QEMU_CAPS_ACPI_GENERIC_INITIATOR
>       qemu: support acpi-generic-initiator
>       qemu: Add test case for acpi-generic-initiator
> 
>  src/ch/ch_domain.c                                 |   1 +
>  src/conf/domain_conf.c                             | 159 +++++++++++++++++++++
>  src/conf/domain_conf.h                             |  14 ++
>  src/conf/domain_postparse.c                        |   1 +
>  src/conf/domain_validate.c                         |  37 +++++
>  src/conf/numa_conf.c                               |   3 +
>  src/conf/schemas/domaincommon.rng                  |  19 +++
>  src/conf/virconftypes.h                            |   2 +
>  src/libxl/libxl_driver.c                           |   6 +
>  src/lxc/lxc_driver.c                               |   6 +
>  src/qemu/qemu_capabilities.c                       |   2 +
>  src/qemu/qemu_capabilities.h                       |   1 +
>  src/qemu/qemu_command.c                            |  49 ++++++-
>  src/qemu/qemu_domain.c                             |   2 +
>  src/qemu/qemu_domain_address.c                     |   4 +
>  src/qemu/qemu_driver.c                             |   3 +
>  src/qemu/qemu_hotplug.c                            |   5 +
>  src/qemu/qemu_postparse.c                          |   1 +
>  src/qemu/qemu_validate.c                           |   1 +
>  src/test/test_driver.c                             |   4 +
>  .../caps_10.0.0_x86_64+amdsev.xml                  |   1 +
>  tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml  |   1 +
>  tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml   |   1 +
>  tests/qemucapabilitiesdata/caps_9.1.0_riscv64.xml  |   1 +
>  tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml   |   1 +
>  .../caps_9.2.0_aarch64+hvf.xml                     |   1 +
>  .../caps_9.2.0_x86_64+amdsev.xml                   |   1 +
>  tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml   |   1 +
>  .../acpi-generic-initiator.x86_64-latest.args      |  55 +++++++
>  .../acpi-generic-initiator.x86_64-latest.xml       | 102 +++++++++++++
>  tests/qemuxmlconfdata/acpi-generic-initiator.xml   | 102 +++++++++++++
>  tests/qemuxmlconftest.c                            |   1 +
>  32 files changed, 581 insertions(+), 7 deletions(-)
>  create mode 100644 tests/qemuxmlconfdata/acpi-generic-initiator.x86_64-latest.args
>  create mode 100644 tests/qemuxmlconfdata/acpi-generic-initiator.x86_64-latest.xml
>  create mode 100644 tests/qemuxmlconfdata/acpi-generic-initiator.xml
> 

Sorry for late review. Normally, to make it up to you I'd fix all the
small nits and merge, but this is introducing new feature and yet not
updating documentation and that's a show stopper. Also, don't forget to
add a NEWS.rst entry ;-)

Michal
Re: [PATCH v3 0/6] qemu: acpi-generic-initiator support
Posted by Andrea Righi via Devel 11 months, 1 week ago
Hi Michal,

On Fri, May 09, 2025 at 03:30:21PM +0200, Michal Prívozník wrote:
> On 4/2/25 10:25, Andrea Righi via Devel wrote:
> > = Overview =
> > 
> > This patch set introduces support for acpi-generic-initiator devices,
> > supported by QEMU [1].
> > 
> > The acpi-generic-initiator object is required to support Multi-Instance GPU
> > (MIG) configurations on NVIDIA GPUs [2]. MIG enables partitioning of GPU
> > resources into multiple isolated instances, each requiring a dedicated NUMA
> > node definition.
> > 
> > = Implementation =
> > 
> > This patch set implements the libvirt counterpart to the QEMU feature,
> > enabling users to configure acpi-generic-initiator objects within libvirt
> > domain XML.
> > 
> > This includes:
> >  - adding XML syntax to define acpi-generic-initiator objects,
> >  - resolving the acpi-generic-initiator definitions into the proper QEMU
> >    command-line arguments,
> >  - ensuring compatibility with existing NUMA configuration.
> > 
> > = Example =
> > 
> >  - Domain XML:
> > ```
> > ...
> > <cpu mode='host-passthrough' check='none'>
> >   <numa>
> >     <cell id='0' cpus='0-15' memory='8388608' unit='KiB'/>
> >     <cell id='1' memory='0' unit='KiB'/>
> >     <cell id='2' memory='0' unit='KiB'/>
> >     <cell id='3' memory='0' unit='KiB'/>
> >     <cell id='4' memory='0' unit='KiB'/>
> >     <cell id='5' memory='0' unit='KiB'/>
> >     <cell id='6' memory='0' unit='KiB'/>
> >     <cell id='7' memory='0' unit='KiB'/>
> >     <cell id='8' memory='0' unit='KiB'/>
> >   </numa>
> > </cpu>
> > ...
> > <devices>
> > ...
> >     <hostdev mode='subsystem' type='pci' managed='no'>
> >       <source>
> >         <address domain='0x0009' bus='0x01' slot='0x00' function='0x0'/>
> >       </source>
> >       <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
> >     </hostdev>
> >   <acpi-generic-initiator>
> >     <alias name="gi1"/>
> >     <pci-dev>hostdev0</pci-dev>
> >     <numa-node>1</numa-node>
> >   </acpi-generic-initiator>
> >   <acpi-generic-initiator>
> >     <alias name="gi2"/>
> >     <pci-dev>hostdev0</pci-dev>
> >     <numa-node>2</numa-node>
> >   </acpi-generic-initiator>
> >   <acpi-generic-initiator>
> >     <alias name="gi3"/>
> >     <pci-dev>hostdev0</pci-dev>
> >     <numa-node>3</numa-node>
> >   </acpi-generic-initiator>
> >   <acpi-generic-initiator>
> >     <alias name="gi4"/>
> >     <pci-dev>hostdev0</pci-dev>
> >     <numa-node>4</numa-node>
> >   </acpi-generic-initiator>
> >   <acpi-generic-initiator>
> >     <alias name="gi5"/>
> >     <pci-dev>hostdev0</pci-dev>
> >     <numa-node>5</numa-node>
> >   </acpi-generic-initiator>
> >   <acpi-generic-initiator>
> >     <alias name="gi6"/>
> >     <pci-dev>hostdev0</pci-dev>
> >     <numa-node>6</numa-node>
> >   </acpi-generic-initiator>
> >   <acpi-generic-initiator>
> >     <alias name="gi7"/>
> >     <pci-dev>hostdev0</pci-dev>
> >     <numa-node>7</numa-node>
> >   </acpi-generic-initiator>
> >   <acpi-generic-initiator>
> >     <alias name="gi8"/>
> >     <pci-dev>hostdev0</pci-dev>
> >     <numa-node>8</numa-node>
> >   </acpi-generic-initiator>
> > </devices>
> > ```
> > 
> >  - Generated QEMU command line options:
> > ```
> > ... /usr/bin/qemu-system-aarch64 \
> > ...
> > -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":8589934592}' \
> > -numa node,nodeid=0,cpus=0-15,memdev=ram-node0 \
> > -numa node,nodeid=1 \
> > -numa node,nodeid=2 \
> > -numa node,nodeid=3 \
> > -numa node,nodeid=4 \
> > -numa node,nodeid=5 \
> > -numa node,nodeid=6 \
> > -numa node,nodeid=7 \
> > -numa node,nodeid=8 \
> > ...
> > -device '{"driver":"vfio-pci","host":"0009:01:00.0","id":"hostdev0","bus":"pci.3","addr":"0x0"}'
> > ...
> > -object acpi-generic-initiator,id=gi1,pci-dev=hostdev0,node=1 \
> > -object acpi-generic-initiator,id=gi2,pci-dev=hostdev0,node=2 \
> > -object acpi-generic-initiator,id=gi3,pci-dev=hostdev0,node=3 \
> > -object acpi-generic-initiator,id=gi4,pci-dev=hostdev0,node=4 \
> > -object acpi-generic-initiator,id=gi5,pci-dev=hostdev0,node=5 \
> > -object acpi-generic-initiator,id=gi6,pci-dev=hostdev0,node=6 \
> > -object acpi-generic-initiator,id=gi7,pci-dev=hostdev0,node=7 \
> > -object acpi-generic-initiator,id=gi8,pci-dev=hostdev0,node=8
> > ```
> > 
> > = References =
> > 
> > [1] https://lore.kernel.org/all/20231225045603.7654-2-ankita@nvidia.com/
> > [2] https://www.nvidia.com/en-in/technologies/multi-instance-gpu/
> > 
> > ChangeLog v2 -> v3:
> >   - replaced <text/> with proper types in the XML schema
> >   - avoid mixing g_free() and VIR_FREE()
> >   - use virXMLPropString() instead of looping all XML nodes
> >   - report proper errors with virReportError()
> >   - use virBufferEscapeString() to process strings passed by the user
> >   - fix broken formatting of function headers
> >   - misc coding style fixes
> > 
> > ChangeLog v1 -> v2:
> >   - split parser and driver changes in separate patches
> >   - introduce a new qemu capability flag
> >   - introduce test in qemuxmlconftest
> > 
> > Andrea Righi (6):
> >       schema: Introduce acpi-generic-initiator definition
> >       conf: Introduce acpi-generic-initiator device
> >       qemu: Allow to define NUMA nodes without memory or CPUs assigned
> >       qemu: capabilies: Introduce QEMU_CAPS_ACPI_GENERIC_INITIATOR
> >       qemu: support acpi-generic-initiator
> >       qemu: Add test case for acpi-generic-initiator
> > 
> >  src/ch/ch_domain.c                                 |   1 +
> >  src/conf/domain_conf.c                             | 159 +++++++++++++++++++++
> >  src/conf/domain_conf.h                             |  14 ++
> >  src/conf/domain_postparse.c                        |   1 +
> >  src/conf/domain_validate.c                         |  37 +++++
> >  src/conf/numa_conf.c                               |   3 +
> >  src/conf/schemas/domaincommon.rng                  |  19 +++
> >  src/conf/virconftypes.h                            |   2 +
> >  src/libxl/libxl_driver.c                           |   6 +
> >  src/lxc/lxc_driver.c                               |   6 +
> >  src/qemu/qemu_capabilities.c                       |   2 +
> >  src/qemu/qemu_capabilities.h                       |   1 +
> >  src/qemu/qemu_command.c                            |  49 ++++++-
> >  src/qemu/qemu_domain.c                             |   2 +
> >  src/qemu/qemu_domain_address.c                     |   4 +
> >  src/qemu/qemu_driver.c                             |   3 +
> >  src/qemu/qemu_hotplug.c                            |   5 +
> >  src/qemu/qemu_postparse.c                          |   1 +
> >  src/qemu/qemu_validate.c                           |   1 +
> >  src/test/test_driver.c                             |   4 +
> >  .../caps_10.0.0_x86_64+amdsev.xml                  |   1 +
> >  tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml  |   1 +
> >  tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml   |   1 +
> >  tests/qemucapabilitiesdata/caps_9.1.0_riscv64.xml  |   1 +
> >  tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml   |   1 +
> >  .../caps_9.2.0_aarch64+hvf.xml                     |   1 +
> >  .../caps_9.2.0_x86_64+amdsev.xml                   |   1 +
> >  tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml   |   1 +
> >  .../acpi-generic-initiator.x86_64-latest.args      |  55 +++++++
> >  .../acpi-generic-initiator.x86_64-latest.xml       | 102 +++++++++++++
> >  tests/qemuxmlconfdata/acpi-generic-initiator.xml   | 102 +++++++++++++
> >  tests/qemuxmlconftest.c                            |   1 +
> >  32 files changed, 581 insertions(+), 7 deletions(-)
> >  create mode 100644 tests/qemuxmlconfdata/acpi-generic-initiator.x86_64-latest.args
> >  create mode 100644 tests/qemuxmlconfdata/acpi-generic-initiator.x86_64-latest.xml
> >  create mode 100644 tests/qemuxmlconfdata/acpi-generic-initiator.xml
> > 
> 
> Sorry for late review. Normally, to make it up to you I'd fix all the
> small nits and merge, but this is introducing new feature and yet not
> updating documentation and that's a show stopper. Also, don't forget to
> add a NEWS.rst entry ;-)

Thanks for taking a look at this. Do you think docs/formatdomain.rst is the
appropriate place to document the new acpi-generic-initiator?

I'll also make sure to add a proper entry in NEWS.rst.

-Andrea
Re: [PATCH v3 0/6] qemu: acpi-generic-initiator support
Posted by Michal Prívozník via Devel 11 months, 1 week ago
On 5/15/25 16:35, Andrea Righi wrote:
> Hi Michal,


>>
>> Sorry for late review. Normally, to make it up to you I'd fix all the
>> small nits and merge, but this is introducing new feature and yet not
>> updating documentation and that's a show stopper. Also, don't forget to
>> add a NEWS.rst entry ;-)
> 
> Thanks for taking a look at this. Do you think docs/formatdomain.rst is the
> appropriate place to document the new acpi-generic-initiator?

Yes, that's where we document our XML schema.

> 
> I'll also make sure to add a proper entry in NEWS.rst.

Thanks!

> 
> -Andrea
> 

Michal
Re: [PATCH v3 0/6] qemu: acpi-generic-initiator support
Posted by arighi--- via Devel 1 year ago
Ping. Any opinions / feedback about this?

Thanks,
-Andrea