Hi Daniel, On Wed, Aug 27, 2025 at 02:17:43PM +0100, Daniel P. Berrangé wrote: > On Wed, Aug 06, 2025 at 02:42:10PM +0200, 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. > > > Ok, this took me a while to understand, but after looking at the actual > QEMU code for acpi-generic-initiator it is finally clear how ridiculously > simple the entire use case is. > > We can have multiple virtual NUMA nodes, which traditionally would have > virtual CPUs and RAM assigned. Virtual PCI devices could be indirectly > associated with a NUMA node by having them placed on a PXB which has > affinity with a *single* NUMA node. > > For the NVIDIA GPU use case, however, the PCI device itself to have > direct affinity with *multiple* NUMA nodes. Those nodes would not have > any CPUs or memory associated with them typically. Conceptually that > is an easy thing to model in the XML. > > > The 'acpi-generic-initiator' object exposed by QEMU is a direct > reflection of how the NUMA affinity is mapped at the ACPI table > level. This is an inappropriate low level impl detail to expose > at a high level, as well as being an insanely verbose way to > configure what is really just a bitmask (of NUMA node IDs) > against a device. > > IOW, we should not expose any of this acpi-generic-initiator stuff > in libvirt XML at all. > > In the virDomainDeviceInfo struct we record 'acpiIndex' which > is a property that sets an ACPI table index for PCI devices. > This maps to the XML: > > <acpi index='8'/> > > We should extend virDomainDeviceInfo to hold 'virBitmap *acpiNodeset' > to record the NUMA affinity of PCI devives (if any), and expose > this as a bitset on the existing <acpi> element eg > > <acpi nodeset="3-5,8-10,11,15' index='8'/> > > Or possibly 'numaNodeset' as the attr name.
Thanks for taking a look. Makes sense, I like this new syntax. I'll send a new patch set implementing it. -Andrea