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 :|