mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-07-11 12:25:52 +00:00
qemu: Assume QEMU_CAPS_NUMA
Introduced in QEMU's commit of v3.0.0-rc0~124^2~1 the set-numa-node command is always available for all QEMU versions we support (4.2.0, currently). Therefore, we can assume the capability is always set and thus doesn't need to be checked for. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
bb5bc36792
commit
8bf50fa018
@ -4531,16 +4531,12 @@ qemuDomainDefTsegPostParse(virDomainDef *def,
|
|||||||
* Returns: 0 on success, -1 on error
|
* Returns: 0 on success, -1 on error
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
qemuDomainDefNumaCPUsRectify(virDomainDef *def, virQEMUCaps *qemuCaps)
|
qemuDomainDefNumaCPUsRectify(virDomainDef *def,
|
||||||
|
virQEMUCaps *qemuCaps G_GNUC_UNUSED)
|
||||||
{
|
{
|
||||||
unsigned int vcpusMax, numacpus;
|
unsigned int vcpusMax, numacpus;
|
||||||
|
|
||||||
/* QEMU_CAPS_NUMA tells us if QEMU is able to handle disjointed
|
if (virDomainNumaGetNodeCount(def->numa) == 0)
|
||||||
* NUMA CPU ranges. The filling process will create a disjointed
|
|
||||||
* setup in node0 most of the time. Do not proceed if QEMU
|
|
||||||
* can't handle it.*/
|
|
||||||
if (virDomainNumaGetNodeCount(def->numa) == 0 ||
|
|
||||||
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_NUMA))
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
vcpusMax = virDomainDefGetVcpusMax(def);
|
vcpusMax = virDomainDefGetVcpusMax(def);
|
||||||
|
@ -983,27 +983,6 @@ static int
|
|||||||
qemuValidateDomainDefNuma(const virDomainDef *def,
|
qemuValidateDomainDefNuma(const virDomainDef *def,
|
||||||
virQEMUCaps *qemuCaps)
|
virQEMUCaps *qemuCaps)
|
||||||
{
|
{
|
||||||
size_t ncells = virDomainNumaGetNodeCount(def->numa);
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
for (i = 0; i < ncells; i++) {
|
|
||||||
virBitmap *cpumask = virDomainNumaGetNodeCpumask(def->numa, i);
|
|
||||||
|
|
||||||
if (cpumask) {
|
|
||||||
g_autofree char * cpumaskStr = NULL;
|
|
||||||
if (!(cpumaskStr = virBitmapFormat(cpumask)))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (strchr(cpumaskStr, ',') &&
|
|
||||||
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_NUMA)) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("disjoint NUMA cpu ranges are not supported "
|
|
||||||
"with this QEMU"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virDomainNumaHasHMAT(def->numa)) {
|
if (virDomainNumaHasHMAT(def->numa)) {
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_NUMA_HMAT)) {
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_NUMA_HMAT)) {
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
@ -1 +0,0 @@
|
|||||||
unsupported configuration: disjoint NUMA cpu ranges are not supported with this QEMU
|
|
@ -16,7 +16,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-instance-00000092/.config \
|
|||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 20,sockets=1,cores=8,threads=1 \
|
-smp 20,sockets=1,cores=8,threads=1 \
|
||||||
-object memory-backend-file,id=ram-node0,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node0,share=off,prealloc=on,size=15032385536 \
|
-object memory-backend-file,id=ram-node0,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node0,share=off,prealloc=on,size=15032385536 \
|
||||||
-numa node,nodeid=0,cpus=0-7,memdev=ram-node0 \
|
-numa node,nodeid=0,cpus=0-7,cpus=16-19,memdev=ram-node0 \
|
||||||
-object memory-backend-file,id=ram-node1,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node1,share=on,prealloc=on,size=15032385536 \
|
-object memory-backend-file,id=ram-node1,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node1,share=on,prealloc=on,size=15032385536 \
|
||||||
-numa node,nodeid=1,cpus=8-15,memdev=ram-node1 \
|
-numa node,nodeid=1,cpus=8-15,memdev=ram-node1 \
|
||||||
-uuid 126f2720-6f8e-45ab-a886-ec9277079a67 \
|
-uuid 126f2720-6f8e-45ab-a886-ec9277079a67 \
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
<cpu>
|
<cpu>
|
||||||
<topology sockets='1' dies='1' cores='8' threads='1'/>
|
<topology sockets='1' dies='1' cores='8' threads='1'/>
|
||||||
<numa>
|
<numa>
|
||||||
<cell id='0' cpus='0-7' memory='14680064' unit='KiB'/>
|
<cell id='0' cpus='0-7,16-19' memory='14680064' unit='KiB'/>
|
||||||
<cell id='1' cpus='8-15' memory='14680064' unit='KiB' memAccess='shared'/>
|
<cell id='1' cpus='8-15' memory='14680064' unit='KiB' memAccess='shared'/>
|
||||||
</numa>
|
</numa>
|
||||||
</cpu>
|
</cpu>
|
||||||
|
@ -16,7 +16,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-instance-00000092/.config \
|
|||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 32,sockets=1,cores=24,threads=1 \
|
-smp 32,sockets=1,cores=24,threads=1 \
|
||||||
-object memory-backend-file,id=ram-node0,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node0,share=on,prealloc=on,size=15032385536 \
|
-object memory-backend-file,id=ram-node0,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node0,share=on,prealloc=on,size=15032385536 \
|
||||||
-numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \
|
-numa node,nodeid=0,cpus=0-1,cpus=6-31,memdev=ram-node0 \
|
||||||
-object memory-backend-file,id=ram-node1,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node1,share=on,prealloc=on,size=15032385536 \
|
-object memory-backend-file,id=ram-node1,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node1,share=on,prealloc=on,size=15032385536 \
|
||||||
-numa node,nodeid=1,cpus=2-3,memdev=ram-node1 \
|
-numa node,nodeid=1,cpus=2-3,memdev=ram-node1 \
|
||||||
-object memory-backend-file,id=ram-node2,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node2,share=off,prealloc=on,size=15032385536 \
|
-object memory-backend-file,id=ram-node2,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node2,share=off,prealloc=on,size=15032385536 \
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
<cpu>
|
<cpu>
|
||||||
<topology sockets='1' dies='1' cores='24' threads='1'/>
|
<topology sockets='1' dies='1' cores='24' threads='1'/>
|
||||||
<numa>
|
<numa>
|
||||||
<cell id='0' cpus='0-1' memory='14680064' unit='KiB'/>
|
<cell id='0' cpus='0-1,6-31' memory='14680064' unit='KiB'/>
|
||||||
<cell id='1' cpus='2-3' memory='14680064' unit='KiB' memAccess='shared'/>
|
<cell id='1' cpus='2-3' memory='14680064' unit='KiB' memAccess='shared'/>
|
||||||
<cell id='2' cpus='4-5' memory='14680064' unit='KiB' memAccess='private'/>
|
<cell id='2' cpus='4-5' memory='14680064' unit='KiB' memAccess='private'/>
|
||||||
</numa>
|
</numa>
|
||||||
|
@ -1 +0,0 @@
|
|||||||
unsupported configuration: disjoint NUMA cpu ranges are not supported with this QEMU
|
|
@ -1866,7 +1866,6 @@ mymain(void)
|
|||||||
ARG_MIGRATE_FROM, "stdio",
|
ARG_MIGRATE_FROM, "stdio",
|
||||||
ARG_MIGRATE_FD, 7,
|
ARG_MIGRATE_FD, 7,
|
||||||
ARG_QEMU_CAPS,
|
ARG_QEMU_CAPS,
|
||||||
QEMU_CAPS_NUMA,
|
|
||||||
QEMU_CAPS_LAST,
|
QEMU_CAPS_LAST,
|
||||||
ARG_END);
|
ARG_END);
|
||||||
|
|
||||||
@ -1904,8 +1903,7 @@ mymain(void)
|
|||||||
DO_TEST_NOCAPS("cpu-numa2");
|
DO_TEST_NOCAPS("cpu-numa2");
|
||||||
DO_TEST_NOCAPS("cpu-numa-no-memory-element");
|
DO_TEST_NOCAPS("cpu-numa-no-memory-element");
|
||||||
DO_TEST_PARSE_ERROR_NOCAPS("cpu-numa3");
|
DO_TEST_PARSE_ERROR_NOCAPS("cpu-numa3");
|
||||||
DO_TEST_PARSE_ERROR_NOCAPS("cpu-numa-disjoint");
|
DO_TEST_NOCAPS("cpu-numa-disjoint");
|
||||||
DO_TEST("cpu-numa-disjoint", QEMU_CAPS_NUMA);
|
|
||||||
DO_TEST_NOCAPS("cpu-numa-memshared");
|
DO_TEST_NOCAPS("cpu-numa-memshared");
|
||||||
DO_TEST("cpu-host-model",
|
DO_TEST("cpu-host-model",
|
||||||
QEMU_CAPS_DEVICE_PCI_BRIDGE,
|
QEMU_CAPS_DEVICE_PCI_BRIDGE,
|
||||||
@ -1971,19 +1969,16 @@ mymain(void)
|
|||||||
|
|
||||||
DO_TEST_NOCAPS("numatune-memory");
|
DO_TEST_NOCAPS("numatune-memory");
|
||||||
DO_TEST_PARSE_ERROR_NOCAPS("numatune-memory-invalid-nodeset");
|
DO_TEST_PARSE_ERROR_NOCAPS("numatune-memory-invalid-nodeset");
|
||||||
DO_TEST("numatune-memnode",
|
DO_TEST_NOCAPS("numatune-memnode");
|
||||||
QEMU_CAPS_NUMA);
|
|
||||||
DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnode");
|
|
||||||
DO_TEST_CAPS_VER("numatune-memnode", "5.2.0");
|
DO_TEST_CAPS_VER("numatune-memnode", "5.2.0");
|
||||||
DO_TEST_CAPS_LATEST("numatune-memnode");
|
DO_TEST_CAPS_LATEST("numatune-memnode");
|
||||||
DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnode-invalid-mode");
|
DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnode-invalid-mode");
|
||||||
DO_TEST_CAPS_LATEST("numatune-memnode-restrictive-mode");
|
DO_TEST_CAPS_LATEST("numatune-memnode-restrictive-mode");
|
||||||
DO_TEST_CAPS_LATEST("numatune-system-memory");
|
DO_TEST_CAPS_LATEST("numatune-system-memory");
|
||||||
|
|
||||||
DO_TEST("numatune-memnode-no-memory",
|
DO_TEST_NOCAPS("numatune-memnode-no-memory");
|
||||||
QEMU_CAPS_NUMA);
|
|
||||||
|
|
||||||
DO_TEST("numatune-distances", QEMU_CAPS_NUMA);
|
DO_TEST_NOCAPS("numatune-distances");
|
||||||
DO_TEST_NOCAPS("numatune-no-vcpu");
|
DO_TEST_NOCAPS("numatune-no-vcpu");
|
||||||
DO_TEST_CAPS_LATEST("numatune-hmat");
|
DO_TEST_CAPS_LATEST("numatune-hmat");
|
||||||
|
|
||||||
@ -2632,16 +2627,16 @@ mymain(void)
|
|||||||
DO_TEST_PARSE_ERROR("memory-hotplug-nonuma", QEMU_CAPS_DEVICE_PC_DIMM);
|
DO_TEST_PARSE_ERROR("memory-hotplug-nonuma", QEMU_CAPS_DEVICE_PC_DIMM);
|
||||||
DO_TEST_PARSE_ERROR_NOCAPS("memory-hotplug-invalid-targetnode");
|
DO_TEST_PARSE_ERROR_NOCAPS("memory-hotplug-invalid-targetnode");
|
||||||
DO_TEST_NOCAPS("memory-hotplug");
|
DO_TEST_NOCAPS("memory-hotplug");
|
||||||
DO_TEST("memory-hotplug", QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA);
|
DO_TEST("memory-hotplug", QEMU_CAPS_DEVICE_PC_DIMM);
|
||||||
DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA);
|
DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM);
|
||||||
DO_TEST_CAPS_LATEST("memory-hotplug-dimm-addr");
|
DO_TEST_CAPS_LATEST("memory-hotplug-dimm-addr");
|
||||||
DO_TEST("memory-hotplug-ppc64-nonuma", QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA,
|
DO_TEST("memory-hotplug-ppc64-nonuma", QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM,
|
||||||
QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
|
QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
|
||||||
DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "",
|
DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "",
|
||||||
ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
||||||
ARG_QEMU_CAPS,
|
ARG_QEMU_CAPS,
|
||||||
QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM,
|
QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM,
|
||||||
QEMU_CAPS_NUMA, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
|
QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
|
||||||
QEMU_CAPS_LAST,
|
QEMU_CAPS_LAST,
|
||||||
ARG_END);
|
ARG_END);
|
||||||
DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm");
|
DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm");
|
||||||
|
@ -924,14 +924,14 @@ mymain(void)
|
|||||||
DO_TEST_NOCAPS("cpu-numa2");
|
DO_TEST_NOCAPS("cpu-numa2");
|
||||||
DO_TEST_NOCAPS("cpu-numa-no-memory-element");
|
DO_TEST_NOCAPS("cpu-numa-no-memory-element");
|
||||||
DO_TEST_NOCAPS("cpu-numa-disordered");
|
DO_TEST_NOCAPS("cpu-numa-disordered");
|
||||||
DO_TEST("cpu-numa-disjoint", QEMU_CAPS_NUMA);
|
DO_TEST_NOCAPS("cpu-numa-disjoint");
|
||||||
DO_TEST_NOCAPS("cpu-numa-memshared");
|
DO_TEST_NOCAPS("cpu-numa-memshared");
|
||||||
|
|
||||||
DO_TEST_NOCAPS("numatune-auto-prefer");
|
DO_TEST_NOCAPS("numatune-auto-prefer");
|
||||||
DO_TEST("numatune-memnode", QEMU_CAPS_NUMA);
|
DO_TEST_NOCAPS("numatune-memnode");
|
||||||
DO_TEST_NOCAPS("numatune-memnode-no-memory");
|
DO_TEST_NOCAPS("numatune-memnode-no-memory");
|
||||||
DO_TEST("numatune-distances", QEMU_CAPS_NUMA);
|
DO_TEST_NOCAPS("numatune-distances");
|
||||||
DO_TEST("numatune-no-vcpu", QEMU_CAPS_NUMA);
|
DO_TEST_NOCAPS("numatune-no-vcpu");
|
||||||
DO_TEST("numatune-hmat", QEMU_CAPS_NUMA_HMAT);
|
DO_TEST("numatune-hmat", QEMU_CAPS_NUMA_HMAT);
|
||||||
DO_TEST_CAPS_LATEST("numatune-memnode-restrictive-mode");
|
DO_TEST_CAPS_LATEST("numatune-memnode-restrictive-mode");
|
||||||
|
|
||||||
@ -1023,13 +1023,13 @@ mymain(void)
|
|||||||
/* SVE aarch64 CPU features work on modern QEMU */
|
/* SVE aarch64 CPU features work on modern QEMU */
|
||||||
DO_TEST_CAPS_ARCH_LATEST("aarch64-features-sve", "aarch64");
|
DO_TEST_CAPS_ARCH_LATEST("aarch64-features-sve", "aarch64");
|
||||||
|
|
||||||
DO_TEST("memory-hotplug-ppc64-nonuma", QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA,
|
DO_TEST("memory-hotplug-ppc64-nonuma", QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM,
|
||||||
QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
|
QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
|
||||||
DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "", WHEN_BOTH,
|
DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "", WHEN_BOTH,
|
||||||
ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
|
||||||
ARG_QEMU_CAPS,
|
ARG_QEMU_CAPS,
|
||||||
QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM,
|
QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM,
|
||||||
QEMU_CAPS_NUMA, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
|
QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
|
||||||
QEMU_CAPS_LAST, ARG_END);
|
QEMU_CAPS_LAST, ARG_END);
|
||||||
DO_TEST_NOCAPS("memory-hotplug");
|
DO_TEST_NOCAPS("memory-hotplug");
|
||||||
DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM);
|
DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM);
|
||||||
|
Loading…
Reference in New Issue
Block a user