On Mon, 12 Dec 2016 18:49:05 -0200 Eduardo Habkost <ehabk...@redhat.com> wrote:
> Original problem description by Greg Kurz: > > > Since commit "9a4c0e220d8a hw/virtio-pci: fix virtio > > behaviour", passing -device virtio-blk-pci.disable-modern=off > > has no effect on 2.6 machine types because the internal > > virtio-pci.disable-modern=on compat property always prevail. > > The same bug also affects other abstract type names mentioned on > compat_props by machine-types: apic-common, i386-cpu, pci-device, > powerpc64-cpu, s390-skeys, spapr-pci-host-bridge, usb-device, > virtio-pci, x86_64-cpu. > > The right fix for this problem is to make sure compat_props and > -global options are always applied in the order they are > registered, instead of reordering them based on the type > hierarchy. But changing the ordering rules of -global is risky > and might break existing configurations, so we shouldn't do that > on a stable branch. > > This is a temporary hack that will work around the bug when > registering compat_props properties: if we find an abstract class > on compat_props, register properties for all its non-abstract > subtypes instead. This will make sure -global won't be overridden > by compat_props, while keeping the existing ordering rules on > -global options. > > Note that there's one case that won't be fixed by this hack: > "-global spapr-pci-vfio-host-bridge.<option>=<value>" won't be > able to override compat_props, because spapr-pci-host-bridge is > not an abstract class. Hm... static void spapr_phb_vfio_instance_init(Object *obj) { if (!qtest_enabled()) { error_report("spapr-pci-vfio-host-bridge is deprecated"); } } I guess we can live with that :) > > Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> > --- > Changes v1 (RFC) -> v2: > * New commit message > * Clarified comments > Suggested-by: Halil Pasic <pa...@linux.vnet.ibm.com> > * Moved variable declaration outside of loop > Suggested-by: Cornelia Huck <cornelia.h...@de.ibm.com> > --- > hw/core/machine.c | 39 ++++++++++++++++++++++++++++++++++++--- > 1 file changed, 36 insertions(+), 3 deletions(-) Reviewed-by: Cornelia Huck <cornelia.h...@de.ibm.com>