[U-Boot] [PATCH 2/2] distro_bootcmd: refactor virtio to support PCI block devices
Bin Meng
bmeng.cn at gmail.com
Wed Jul 3 13:32:08 UTC 2019
Hi David,
On Wed, Jul 3, 2019 at 8:52 PM David Abdurachmanov
<david.abdurachmanov at gmail.com> wrote:
>
> libvirt v5.3.0 with QEMU 4.0.0 use PCI automatically and thus storage
nits: 5.3.0 or 5.4.0?
> is connected via PCI, which is not visible to U-Boot automatically.
> Refactor to do "pci enum" followed by "virtio scan" to see PCI
> connected storage.
>
> Tested with Fedora/RISCV using the latest releases: libvirt 5.4.0,
Here mentions 5.4.0
> QEMU 4.0.0 and U-Boot 2019.07 RC4.
>
> Signed-off-by: David Abdurachmanov <david.abdurachmanov at sifive.com>
> ---
> include/config_distro_bootcmd.h | 27 +++++++++++++++++++++------
> 1 file changed, 21 insertions(+), 6 deletions(-)
>
> diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h
> index 26e61ef196..3570a32dff 100644
> --- a/include/config_distro_bootcmd.h
> +++ b/include/config_distro_bootcmd.h
> @@ -254,11 +254,11 @@
> #endif
>
> #if defined(CONFIG_DM_PCI)
> -#define BOOTENV_RUN_NET_PCI_ENUM "run boot_net_pci_enum; "
> +#define BOOTENV_RUN_PCI_ENUM "run boot_pci_enum; "
> #define BOOTENV_SHARED_PCI \
> - "boot_net_pci_enum=pci enum\0"
> + "boot_pci_enum=pci enum\0"
> #else
> -#define BOOTENV_RUN_NET_PCI_ENUM
> +#define BOOTENV_RUN_PCI_ENUM
> #define BOOTENV_SHARED_PCI
> #endif
>
> @@ -281,10 +281,24 @@
> #endif
>
> #ifdef CONFIG_CMD_VIRTIO
> -#define BOOTENV_SHARED_VIRTIO BOOTENV_SHARED_BLKDEV(virtio)
> +#define BOOTENV_RUN_VIRTIO_INIT "run virtio_init; "
> +#define BOOTENV_SET_VIRTIO_NEED_INIT "virtio_need_init=; "
> +#define BOOTENV_SHARED_VIRTIO \
> + "virtio_init=" \
> + "if ${virtio_need_init}; then " \
> + "virtio_need_init=false; " \
> + "virtio scan; " \
> + "fi\0" \
> + \
> + "virtio_boot=" \
> + BOOTENV_RUN_PCI_ENUM \
> + BOOTENV_RUN_VIRTIO_INIT \
> + BOOTENV_SHARED_BLKDEV_BODY(virtio)
The changes should be surrounded by "#if defined(CONFIG_DM_PCI)".
> #define BOOTENV_DEV_VIRTIO BOOTENV_DEV_BLKDEV
> #define BOOTENV_DEV_NAME_VIRTIO BOOTENV_DEV_NAME_BLKDEV
> #else
> +#define BOOTENV_RUN_VIRTIO_INIT
> +#define BOOTENV_SET_VIRTIO_NEED_INIT
> #define BOOTENV_SHARED_VIRTIO
> #define BOOTENV_DEV_VIRTIO \
> BOOT_TARGET_DEVICES_references_VIRTIO_without_CONFIG_CMD_VIRTIO
> @@ -350,7 +364,7 @@
> #define BOOTENV_DEV_DHCP(devtypeu, devtypel, instance) \
> "bootcmd_dhcp=" \
> BOOTENV_RUN_NET_USB_START \
> - BOOTENV_RUN_NET_PCI_ENUM \
> + BOOTENV_RUN_PCI_ENUM \
> "if dhcp ${scriptaddr} ${boot_script_dhcp}; then " \
> "source ${scriptaddr}; " \
> "fi;" \
> @@ -369,7 +383,7 @@
> #define BOOTENV_DEV_PXE(devtypeu, devtypel, instance) \
> "bootcmd_pxe=" \
> BOOTENV_RUN_NET_USB_START \
> - BOOTENV_RUN_NET_PCI_ENUM \
> + BOOTENV_RUN_PCI_ENUM \
> "dhcp; " \
> "if pxe get; then " \
> "pxe boot; " \
> @@ -465,6 +479,7 @@
> "distro_bootcmd=" BOOTENV_SET_SCSI_NEED_INIT \
> BOOTENV_SET_NVME_NEED_INIT \
> BOOTENV_SET_IDE_NEED_INIT \
> + BOOTENV_SET_VIRTIO_NEED_INIT \
> "for target in ${boot_targets}; do " \
> "run bootcmd_${target}; " \
> "done\0"
> --
Regards,
Bin
More information about the U-Boot
mailing list