On Tue, 6 Dec 2016 14:25:45 -0200 Eduardo Habkost <ehabk...@redhat.com> wrote:
> On Tue, Dec 06, 2016 at 04:41:12PM +0100, Greg Kurz wrote: > > The current code recursively applies global properties from child up to > > parent types. This can cause properties passed with the -global option to > > be silently overridden by internal compat properties. > > > > This is exactly what happens with virtio-*-pci drivers 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. > > > > This patch fixes the issue by reversing the logic: we now go through the > > global property list and, for each property, we check if it is applicable > > to the device. > > > > This result in compat properties being applied first, in the order they > > appear in the HW_COMPAT_* macros, followed by global properties, in they > > order appear on the command line. > > > > Signed-off-by: Greg Kurz <gr...@kaod.org> > > FWIW, this is the behavior I would like to see. But: > > I think it's too late to change the rules on 2.8. I would like to > change behavior only on 2.9, so we have time to discuss and test > it. I believe the 2.8 fix should be just changing the HW_COMPAT_* > macros to touch only the device subclasses, so we fix the > regression introduced by commit 9a4c0e220d8a without changing any > rules on how -global is handled. Agreed on both counts.