[U-Boot] [PATCH 16/27] arm: qemu: Enumerate virtio bus during early boot

Bin Meng bmeng.cn at gmail.com
Thu Oct 11 13:28:46 UTC 2018


Hi Tuomas,

On Fri, Sep 28, 2018 at 6:13 AM Tuomas Tynkkynen
<tuomas.tynkkynen at iki.fi> wrote:
>
> Hi Bin,
>
> On 09/23/2018 04:42 PM, Bin Meng wrote:
> > Currently devices on the virtio bus is not automatically enumerated,
> > which means peripherals on the virtio bus are not discovered by their
> > drivers. This uses board_init() to do the virtio enumeration.
> >
> > Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
> > ---
> >
> >   board/emulation/qemu-arm/Kconfig    | 3 +++
> >   board/emulation/qemu-arm/qemu-arm.c | 7 +++++++
> >   2 files changed, 10 insertions(+)
> >
> ...
> >diff --git a/board/emulation/qemu-arm/Kconfig b/board/emulation/qemu-arm/Kconfig
> >index d1c08c2..16b80fe 100644
> >--- a/board/emulation/qemu-arm/Kconfig
> >+++ b/board/emulation/qemu-arm/Kconfig
> >@@ -5,5 +5,8 @@ config SYS_TEXT_BASE
> >
> > config BOARD_SPECIFIC_OPTIONS # dummy
> >       def_bool y
> >+      imply VIRTIO_MMIO
> >+      imply VIRTIO_NET
> >+      imply VIRTIO_BLK
>
> I think we should have VIRTIO_PCI here as well, so that QEMU command lines
> that work on x86 will work on ARM just as well.
>

Will do in v2.

> ...
> > --- a/board/emulation/qemu-arm/qemu-arm.c
> > +++ b/board/emulation/qemu-arm/qemu-arm.c
> > @@ -4,6 +4,7 @@
> >    */
> >   #include <common.h>
> >   #include <fdtdec.h>
> > +#include <virtio.h>
> >
> >   #ifdef CONFIG_ARM64
> >   #include <asm/armv8/mmu.h>
> > @@ -58,6 +59,12 @@ struct mm_region *mem_map = qemu_arm64_mem_map;
> >
> >   int board_init(void)
> >   {
> > +     /*
> > +      * Make sure virtio bus is enumerated so that peripherals
> > +      * on the virtio bus can be discovered by their drivers
> > +      */
> > +     virtio_init();
> > +
> >       return 0;
> >   }
> >
> >
>
> Note that in include/configs/qemu-arm.h, the boards auto-enumerate
> PCI devices with a different mechanism, like this:
>
> #define CONFIG_PREBOOT "pci enum"
>
> I am not sure which one is better but at least we should be consistent.

Ah yes, but I felt the same as you about which one is better :). I
think using PREBOOT is a little bit late, for example if we call
"virtio scan" here, we still see "Net:   No ethernet found." which may
confuse people. Probably what Simon suggested (have a flag to indicate
that all devices in it should be probed at start-up) is an ideal
solution ...

Regards,
Bin


More information about the U-Boot mailing list