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

Reply via email to