Thanks Markus for the review. >> Introduce a new acpi-generic-initiator object to allow host admin provide the >> device and the corresponding NUMA nodes. Qemu maintain this association and >> use this object to build the requisite GI Affinity Structure. > > Pardon my ignorance... What makes this object an "initiator", and why > is it "generic"?
In ACPI 6.3 (https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf), a new table in System Resource Affinity Table called Generic initiator Affinity table was introduced to describe devices such as heterogeneous processors and accelerators, GPUs, and I/O devices with integrated compute or DMA engines (termed as Generic Initiator) that are present on the system. It is used to associate a proximity domain with those devices. You may refer 5.2.16.6 in the aforementioned link. This patch implements that structure (Table 5-78) for Qemu ACPI. >> An admin can provide the range of nodes through a uint16 array host-nodes >> and link it to a device by providing its id. Currently, only PCI device is >> supported. The following sample creates 8 nodes and link them to the PCI >> device dev0: >> >> -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 \ >> -numa node,nodeid=9 \ >> -device >> vfio-pci-nohotplug,host=0009:01:00.0,bus=pcie.0,addr=04.0,rombar=0,id=dev0 \ >> -object acpi-generic-initiator,id=gi0,pci-dev=dev0,host-nodes=2-9 \ > > Does this link *all* NUMA nodes to dev0? > > Would an example involving two devices be more instructive? Sure, updated in v6. >> diff --git a/qapi/qom.json b/qapi/qom.json >> index c53ef978ff..efcc4b8dfd 100644 >> --- a/qapi/qom.json >> +++ b/qapi/qom.json >> @@ -794,6 +794,21 @@ >> { 'struct': 'VfioUserServerProperties', >> 'data': { 'socket': 'SocketAddress', 'device': 'str' } } >> >> +## >> +# @AcpiGenericInitiatorProperties: >> +# >> +# Properties for acpi-generic-initiator objects. >> +# >> +# @pci-dev: PCI device ID to be associated with the node >> +# >> +# @host-nodes: numa node list > > This feels a bit terse. The commit message makes me guess this > specifies the NUMA nodes to be linked to @pci-dev. Correct? Right, it could be made cleared. Done in v6.