提交 68115fe0 编写于 作者: P Peter Krempa

qemu: process: Fix start with unpluggable vcpus with NUMA pinning

Similarly to vcpu hotplug the emulator thread cgroup numa mapping needs
to be relaxed while hot-adding vcpus so that the threads can allocate
data in the DMA zone.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1370084
上级 eb5dee35
...@@ -4864,6 +4864,8 @@ qemuProcessSetupHotpluggableVcpus(virQEMUDriverPtr driver, ...@@ -4864,6 +4864,8 @@ qemuProcessSetupHotpluggableVcpus(virQEMUDriverPtr driver,
qemuDomainAsyncJob asyncJob) qemuDomainAsyncJob asyncJob)
{ {
unsigned int maxvcpus = virDomainDefGetVcpusMax(vm->def); unsigned int maxvcpus = virDomainDefGetVcpusMax(vm->def);
qemuDomainObjPrivatePtr priv = vm->privateData;
qemuCgroupEmulatorAllNodesDataPtr emulatorCgroup = NULL;
virDomainVcpuDefPtr vcpu; virDomainVcpuDefPtr vcpu;
qemuDomainVcpuPrivatePtr vcpupriv; qemuDomainVcpuPrivatePtr vcpupriv;
virJSONValuePtr vcpuprops = NULL; virJSONValuePtr vcpuprops = NULL;
...@@ -4896,6 +4898,9 @@ qemuProcessSetupHotpluggableVcpus(virQEMUDriverPtr driver, ...@@ -4896,6 +4898,9 @@ qemuProcessSetupHotpluggableVcpus(virQEMUDriverPtr driver,
qsort(bootHotplug, nbootHotplug, sizeof(*bootHotplug), qsort(bootHotplug, nbootHotplug, sizeof(*bootHotplug),
qemuProcessVcpusSortOrder); qemuProcessVcpusSortOrder);
if (qemuCgroupEmulatorAllNodesAllow(priv->cgroup, &emulatorCgroup) < 0)
goto cleanup;
for (i = 0; i < nbootHotplug; i++) { for (i = 0; i < nbootHotplug; i++) {
vcpu = bootHotplug[i]; vcpu = bootHotplug[i];
...@@ -4920,6 +4925,7 @@ qemuProcessSetupHotpluggableVcpus(virQEMUDriverPtr driver, ...@@ -4920,6 +4925,7 @@ qemuProcessSetupHotpluggableVcpus(virQEMUDriverPtr driver,
ret = 0; ret = 0;
cleanup: cleanup:
qemuCgrouEmulatorAllNodesRestore(emulatorCgroup);
VIR_FREE(bootHotplug); VIR_FREE(bootHotplug);
virJSONValueFree(vcpuprops); virJSONValueFree(vcpuprops);
return ret; return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册