From fd1432c7ae1c471aef84f3f83e0bb38bb32af7c2 Mon Sep 17 00:00:00 2001 From: Osier Yang Date: Tue, 2 Apr 2013 13:42:14 +0800 Subject: [PATCH] qemu: Error out if the bitmap for pinning is all clear For both "live" and "config" changes of vcpupin and emulatorpin, an all clear bitmap doesn't make sense, and it can just cause corruptions. E.g (similar for emulatorpin). % virsh vcpupin hame 0 8,^8 --config % virsh vcpupin hame VCPU: CPU Affinity ---------------------------------- 0: 1: 0-63 2: 0-63 3: 0-63 % virsh dumpxml hame | grep cpuset % virsh start hame error: Failed to start domain hame error: An error occurred, but the cause is unknown --- src/qemu/qemu_driver.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index eba53dae41..997d7c3162 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -3873,6 +3873,12 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, if (!pcpumap) goto cleanup; + if (virBitmapIsAllClear(pcpumap)) { + virReportError(VIR_ERR_INVALID_ARG, "%s", + _("Empty cpu list for pinning")); + goto cleanup; + } + /* pinning to all physical cpus means resetting, * so check if we can reset setting. */ @@ -4142,6 +4148,12 @@ qemuDomainPinEmulator(virDomainPtr dom, if (!pcpumap) goto cleanup; + if (virBitmapIsAllClear(pcpumap)) { + virReportError(VIR_ERR_INVALID_ARG, "%s", + _("Empty cpu list for pinning")); + goto cleanup; + } + /* pinning to all physical cpus means resetting, * so check if we can reset setting. */