(CCing libvirt folks) BTW:
On Thu, Jun 02, 2016 at 02:22:22PM +0200, Igor Mammedov wrote: [...] > > /* Special cases: */ > > if (!strcmp(name, "xlevel")) { > > numvalue = strtoul(val, &err, 0); > > if (!*val || *err) { > > error_setg(errp, "bad numerical value %s", val); > > return; > > } > > if (numvalue < 0x80000000) { > > error_report("xlevel value shall always be >= 0x80000000" > > ", fixup will be removed in future versions"); > > numvalue += 0x80000000; > > snprintf(num, sizeof(num), "%" PRIu32, numvalue); > > val = num; [...] > > } else if (!strcmp(name, "hv-spinlocks")) { > > const int min = 0xFFF; > > > > numvalue = strtoul(val, &err, 0); > > if (!*val || *err) { > > error_setg(errp, "bad numerical value %s", val); > > return; > > } > > if (numvalue < min) { > > error_report("hv-spinlocks value shall always be >= 0x%x" > > ", fixup will be removed in future versions", > > min); > > numvalue = min; > > } Those "fixup will be removed in future versions" warnings are present since QEMU 1.7. Assuming that libvirt never allowed those invalid values to be used in the configuration (did it?), I believe we can safely remove the hv-spinlocks and xlevel fixups in QEMU 2.7. The hv-spinlocks setter already rejects invalid values. We just need to make x86_cpu_realizefn() reject invalid xlevel values. -- Eduardo