
On Thu, Oct 17, 2013 at 03:10:22PM +0200, Peter Krempa wrote:
+static bool +qemuProcessVerifyGuestCPU(virQEMUDriverPtr driver, virDomainObjPtr vm) +{ + virDomainDefPtr def = vm->def; + virArch arch = def->os.arch; + virCPUDataPtr guestcpu = NULL; + qemuDomainObjPrivatePtr priv = vm->privateData; + bool ret = false; + int rc; + + qemuDomainObjEnterMonitor(driver, vm); + rc = qemuMonitorGetGuestCPU(priv->mon, arch, &guestcpu); + qemuDomainObjExitMonitor(driver, vm); + + if (rc < 0) { + if (rc == -2) { + virResetLastError(); + return true; + } + + goto cleanup; + } + + switch (arch) { + case VIR_ARCH_I686: + case VIR_ARCH_X86_64: + if (def->features[VIR_DOMAIN_FEATURE_PVSPINLOCK] == VIR_DOMAIN_FEATURE_STATE_ON) { + if (!cpuHasFeature(guestcpu, VIR_CPU_x86_KVM_PV_UNHALT)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("host doesn't support paravirtual spinlocks")); + goto cleanup; + } + } + break; + + default: + break; + }
If you move the qemuMonitorGetGuestCPU call into this switch() case for x86, then you avoid the need to have the special -2 error case, and avoid resetting an already reported error message (which will have spammed the logs) Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|