mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 08:42:12 +02:00
distro_bootcmd: refactor virtio to support PCI block devices
Starting libvirt v5.3.0 with QEMU 4.0.0 use of PCI is automatic and thus storage is connected via PCI, which is not visible to U-Boot out-of-the-box. Refactor to do "pci enum" followed by "virtio scan" to see PCI connected storage, and allow bootloader to load kernel and initramfs images. Tested with Fedora/RISCV using releases: libvirt 5.4.0 & 5.5.0, QEMU 4.0.0 and U-Boot 2019.07 RC4. Signed-off-by: David Abdurachmanov <david.abdurachmanov@sifive.com>
This commit is contained in:
committed by
Tom Rini
parent
26557d1025
commit
f0ebcf8c17
@@ -254,11 +254,11 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_DM_PCI)
|
#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 \
|
#define BOOTENV_SHARED_PCI \
|
||||||
"boot_net_pci_enum=pci enum\0"
|
"boot_pci_enum=pci enum\0"
|
||||||
#else
|
#else
|
||||||
#define BOOTENV_RUN_NET_PCI_ENUM
|
#define BOOTENV_RUN_PCI_ENUM
|
||||||
#define BOOTENV_SHARED_PCI
|
#define BOOTENV_SHARED_PCI
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -281,10 +281,24 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_CMD_VIRTIO
|
#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)
|
||||||
#define BOOTENV_DEV_VIRTIO BOOTENV_DEV_BLKDEV
|
#define BOOTENV_DEV_VIRTIO BOOTENV_DEV_BLKDEV
|
||||||
#define BOOTENV_DEV_NAME_VIRTIO BOOTENV_DEV_NAME_BLKDEV
|
#define BOOTENV_DEV_NAME_VIRTIO BOOTENV_DEV_NAME_BLKDEV
|
||||||
#else
|
#else
|
||||||
|
#define BOOTENV_RUN_VIRTIO_INIT
|
||||||
|
#define BOOTENV_SET_VIRTIO_NEED_INIT
|
||||||
#define BOOTENV_SHARED_VIRTIO
|
#define BOOTENV_SHARED_VIRTIO
|
||||||
#define BOOTENV_DEV_VIRTIO \
|
#define BOOTENV_DEV_VIRTIO \
|
||||||
BOOT_TARGET_DEVICES_references_VIRTIO_without_CONFIG_CMD_VIRTIO
|
BOOT_TARGET_DEVICES_references_VIRTIO_without_CONFIG_CMD_VIRTIO
|
||||||
@@ -350,7 +364,7 @@
|
|||||||
#define BOOTENV_DEV_DHCP(devtypeu, devtypel, instance) \
|
#define BOOTENV_DEV_DHCP(devtypeu, devtypel, instance) \
|
||||||
"bootcmd_dhcp=" \
|
"bootcmd_dhcp=" \
|
||||||
BOOTENV_RUN_NET_USB_START \
|
BOOTENV_RUN_NET_USB_START \
|
||||||
BOOTENV_RUN_NET_PCI_ENUM \
|
BOOTENV_RUN_PCI_ENUM \
|
||||||
"if dhcp ${scriptaddr} ${boot_script_dhcp}; then " \
|
"if dhcp ${scriptaddr} ${boot_script_dhcp}; then " \
|
||||||
"source ${scriptaddr}; " \
|
"source ${scriptaddr}; " \
|
||||||
"fi;" \
|
"fi;" \
|
||||||
@@ -369,7 +383,7 @@
|
|||||||
#define BOOTENV_DEV_PXE(devtypeu, devtypel, instance) \
|
#define BOOTENV_DEV_PXE(devtypeu, devtypel, instance) \
|
||||||
"bootcmd_pxe=" \
|
"bootcmd_pxe=" \
|
||||||
BOOTENV_RUN_NET_USB_START \
|
BOOTENV_RUN_NET_USB_START \
|
||||||
BOOTENV_RUN_NET_PCI_ENUM \
|
BOOTENV_RUN_PCI_ENUM \
|
||||||
"dhcp; " \
|
"dhcp; " \
|
||||||
"if pxe get; then " \
|
"if pxe get; then " \
|
||||||
"pxe boot; " \
|
"pxe boot; " \
|
||||||
@@ -465,6 +479,7 @@
|
|||||||
"distro_bootcmd=" BOOTENV_SET_SCSI_NEED_INIT \
|
"distro_bootcmd=" BOOTENV_SET_SCSI_NEED_INIT \
|
||||||
BOOTENV_SET_NVME_NEED_INIT \
|
BOOTENV_SET_NVME_NEED_INIT \
|
||||||
BOOTENV_SET_IDE_NEED_INIT \
|
BOOTENV_SET_IDE_NEED_INIT \
|
||||||
|
BOOTENV_SET_VIRTIO_NEED_INIT \
|
||||||
"for target in ${boot_targets}; do " \
|
"for target in ${boot_targets}; do " \
|
||||||
"run bootcmd_${target}; " \
|
"run bootcmd_${target}; " \
|
||||||
"done\0"
|
"done\0"
|
||||||
|
Reference in New Issue
Block a user