[U-Boot] [PATCH 16/27] arm: qemu: Enumerate virtio bus during early boot
Tuomas Tynkkynen
tuomas.tynkkynen at iki.fi
Thu Sep 27 22:13:32 UTC 2018
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.
...
> --- 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.
More information about the U-Boot
mailing list