See 12/14 for explanation and seeing the fix in action. Michal Prívozník (14): virnuma: Move virNumaNodesetToCPUset() our of WITH_NUMACTL virnuma: Introduce virNumaCPUSetToNodeset() virnumamock: Introduce virNumaGetNodeOfCPU() mock qemuxml2argvtest: Use virnuma mock qemuxml2argvdata: Adjust maximum NUMA node used qemuxml2argvdata: Extend vCPUs placement in memory-hotplug-dimm-addr.xml qemuxml2argvmock: Drop virNuma* mocks qemu: Move cpuset preference evaluation into a separate function qemu: Fix qemuDomainGetEmulatorPinInfo() qemu: Add @nodemaskRet argument to qemuBuildMemoryBackendProps() qemu: Add @nodemask argument to qemuBuildThreadContextProps() qemuBuildThreadContextProps: Prune .node-afinity wrt <emulatorpin/> docs: Document memory allocation and emulator pinning limitation NEWS: Document recent thread-context bug fix NEWS.rst | 7 + docs/formatdomain.rst | 4 +- src/libvirt_private.syms | 2 + src/qemu/qemu_command.c | 90 +++++++---- src/qemu/qemu_command.h | 8 +- src/qemu/qemu_domain.c | 18 +++ src/qemu/qemu_domain.h | 5 + src/qemu/qemu_driver.c | 11 +- src/qemu/qemu_hotplug.c | 2 +- src/qemu/qemu_process.c | 9 +- src/util/virnuma.c | 148 ++++++++++++------ src/util/virnuma.h | 5 +- tests/meson.build | 2 +- ...emory-hotplug-dimm-addr.x86_64-latest.args | 2 +- .../memory-hotplug-dimm-addr.xml | 2 +- .../migrate-numa-unaligned.args | 4 +- .../migrate-numa-unaligned.xml | 4 +- .../numatune-memnode-restrictive-mode.xml | 4 +- ...-unavailable-restrictive.x86_64-latest.err | 2 +- ...mnode-unavailable-strict.x86_64-latest.err | 2 +- tests/qemuxml2argvdata/numatune-memnode.args | 4 +- .../numatune-memnode.x86_64-5.2.0.args | 4 +- .../numatune-memnode.x86_64-latest.args | 4 +- tests/qemuxml2argvdata/numatune-memnode.xml | 4 +- ...umatune-static-nodeset-exceed-hostnode.err | 2 +- tests/qemuxml2argvmock.c | 41 ----- tests/qemuxml2argvtest.c | 5 +- ...memory-hotplug-dimm-addr.x86_64-latest.xml | 2 +- tests/qemuxml2xmloutdata/numatune-memnode.xml | 4 +- .../linux-basic/system/cpu/cpu0/node0 | 1 + .../linux-basic/system/cpu/cpu1/node0 | 1 + .../linux-basic/system/cpu/cpu10/node2 | 1 + .../linux-basic/system/cpu/cpu11/node2 | 1 + .../linux-basic/system/cpu/cpu12/node3 | 1 + .../linux-basic/system/cpu/cpu13/node3 | 1 + .../linux-basic/system/cpu/cpu14/node3 | 1 + .../linux-basic/system/cpu/cpu15/node3 | 1 + .../linux-basic/system/cpu/cpu2/node0 | 1 + .../linux-basic/system/cpu/cpu3/node0 | 1 + .../linux-basic/system/cpu/cpu4/node1 | 1 + .../linux-basic/system/cpu/cpu5/node1 | 1 + .../linux-basic/system/cpu/cpu6/node1 | 1 + .../linux-basic/system/cpu/cpu7/node1 | 1 + .../linux-basic/system/cpu/cpu8/node2 | 1 + .../linux-basic/system/cpu/cpu9/node2 | 1 + .../linux-caches/system/cpu/cpu0/node0 | 1 + .../linux-caches/system/cpu/cpu1/node0 | 1 + .../linux-caches/system/cpu/cpu2/node0 | 1 + .../linux-caches/system/cpu/cpu3/node0 | 1 + .../linux-caches/system/cpu/cpu4/node0 | 1 + .../linux-caches/system/cpu/cpu5/node0 | 1 + .../linux-caches/system/cpu/cpu6/node0 | 1 + .../linux-caches/system/cpu/cpu7/node0 | 1 + .../system/cpu/cpu0/node0 | 1 + .../linux-resctrl/system/cpu/cpu0/node0 | 1 + .../linux-resctrl/system/cpu/cpu1/node0 | 1 + .../linux-resctrl/system/cpu/cpu10/node1 | 1 + .../linux-resctrl/system/cpu/cpu11/node1 | 1 + .../linux-resctrl/system/cpu/cpu2/node0 | 1 + .../linux-resctrl/system/cpu/cpu3/node0 | 1 + .../linux-resctrl/system/cpu/cpu4/node0 | 1 + .../linux-resctrl/system/cpu/cpu5/node0 | 1 + .../linux-resctrl/system/cpu/cpu6/node1 | 1 + .../linux-resctrl/system/cpu/cpu7/node1 | 1 + .../linux-resctrl/system/cpu/cpu8/node1 | 1 + .../linux-resctrl/system/cpu/cpu9/node1 | 1 + tests/virnumamock.c | 42 +++++ 67 files changed, 317 insertions(+), 163 deletions(-) create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu0/node0 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu1/node0 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu10/node2 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu11/node2 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu12/node3 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu13/node3 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu14/node3 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu15/node3 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu2/node0 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu3/node0 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu4/node1 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu5/node1 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu6/node1 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu7/node1 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu8/node2 create mode 120000 tests/vircaps2xmldata/linux-basic/system/cpu/cpu9/node2 create mode 120000 tests/vircaps2xmldata/linux-caches/system/cpu/cpu0/node0 create mode 120000 tests/vircaps2xmldata/linux-caches/system/cpu/cpu1/node0 create mode 120000 tests/vircaps2xmldata/linux-caches/system/cpu/cpu2/node0 create mode 120000 tests/vircaps2xmldata/linux-caches/system/cpu/cpu3/node0 create mode 120000 tests/vircaps2xmldata/linux-caches/system/cpu/cpu4/node0 create mode 120000 tests/vircaps2xmldata/linux-caches/system/cpu/cpu5/node0 create mode 120000 tests/vircaps2xmldata/linux-caches/system/cpu/cpu6/node0 create mode 120000 tests/vircaps2xmldata/linux-caches/system/cpu/cpu7/node0 create mode 120000 tests/vircaps2xmldata/linux-resctrl-skx-twocaches/system/cpu/cpu0/node0 create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu0/node0 create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu1/node0 create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu10/node1 create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu11/node1 create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu2/node0 create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu3/node0 create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu4/node0 create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu5/node0 create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu6/node1 create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu7/node1 create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu8/node1 create mode 120000 tests/vircaps2xmldata/linux-resctrl/system/cpu/cpu9/node1 -- 2.39.2