[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-arm] [PATCH v2 for-3.1] hw/arm/sysbus-fdt: Only call match_fn
From: |
Geert Uytterhoeven |
Subject: |
Re: [Qemu-arm] [PATCH v2 for-3.1] hw/arm/sysbus-fdt: Only call match_fn callback if the type matches |
Date: |
Wed, 7 Nov 2018 09:41:29 +0100 |
Hi Eric,
On Tue, Nov 6, 2018 at 7:42 PM Eric Auger <address@hidden> 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 <address@hidden>
> Reported-by: Thomas Huth <address@hidden>
>
> ---
>
> 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 <address@hidden>
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- address@hidden
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