Hi Eric, On Tue, Nov 6, 2018 at 7:42 PM Eric Auger <eric.au...@redhat.com> wrote: > Commit af7d64ede0b9 (hw/arm/sysbus-fdt: Allow device matching with DT > compatible value) introduced a match_fn callback which gets called > for each registered combo to check whether a sysbus device can be > dynamically instantiated. However the callback gets called even if > the device type does not match the binding combo typename field. > This causes an assert when passing "-device ramfb" to the qemu > command line as vfio_platform_match() gets called on a non > vfio-platform device. > > To fix this regression, let's change the add_fdt_node() logic so > that we first check the type and if the match_fn callback is defined, > then we also call it. > > Binding combos only requesting a type check do not define the > match_fn callback. > > Fixes: af7d64ede0b9 (hw/arm/sysbus-fdt: Allow device matching with > DT compatible value) > > Signed-off-by: Eric Auger <eric.au...@redhat.com> > Reported-by: Thomas Huth <th...@redhat.com> > > --- > > v1 -> v2: > - use "if (!iter->match_fn || iter->match_fn(sbdev, iter)) {" > as suggested by Peter to avoid code duplication > - mention the ramfb regression fixed by this patch in the > commit message.
Thanks for looking into this! After applying "hw/arm/sysbus-fdt: Add support for instantiating generic devices", "-device vfio-platform,host=ee300000.sata" still works fine. Tested-by: Geert Uytterhoeven <geert+rene...@glider.be> Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds