[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