diff options
author | Fiona Klute <fiona.klute@gmx.de> | 2024-05-01 10:54:09 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2024-05-17 13:18:43 -0600 |
commit | 3be9f399e911cfc437a37ac826441f1d96da1c9b (patch) | |
tree | 4b554e14f4f8292f44f520d378bd511b52e4988a | |
parent | ad7dce5abd49ef3b5c93da5303e15449c8c162b4 (diff) | |
download | u-boot-WIP/17May2024.zip u-boot-WIP/17May2024.tar.gz u-boot-WIP/17May2024.tar.bz2 |
Init virtio before loading ENV from EXT4 or FATWIP/17May2024
Specifying a file in an EXT4 or FAT partition on a virtio device as
environment location failed because virtio hadn't been initialized by
the time the environment was loaded. This patch mirrors commit
54ee5ae84191 ("Add SCSI scan for ENV in EXT4 or FAT") in issue and
fix, just for a different kind of block device.
The additional include in include/virtio.h is needed so all functions
called there are defined, the alternative would have been to include
dm/device.h separately in the env/ sources.
Checkpatch suggests using "if (IS_ENABLED(CONFIG...))" instead of
"#if defined(CONFIG_...)", I'm sticking to the style of the existing
code here.
Signed-off-by: Fiona Klute <fiona.klute@gmx.de>
CC: Joe Hershberger <joe.hershberger@ni.com>
CC: Bin Meng <bmeng.cn@gmail.com>
CC: Rogier Stam <rogier@unrailed.org>
-rw-r--r-- | env/ext4.c | 5 | ||||
-rw-r--r-- | env/fat.c | 5 | ||||
-rw-r--r-- | include/virtio.h | 1 |
3 files changed, 11 insertions, 0 deletions
@@ -31,6 +31,7 @@ #include <ext4fs.h> #include <mmc.h> #include <scsi.h> +#include <virtio.h> #include <asm/global_data.h> DECLARE_GLOBAL_DATA_PTR; @@ -150,6 +151,10 @@ static int env_ext4_load(void) if (!strcmp(ifname, "scsi")) scsi_scan(true); #endif +#if defined(CONFIG_VIRTIO) + if (!strcmp(ifname, "virtio")) + virtio_init(); +#endif part = blk_get_device_part_str(ifname, dev_and_part, &dev_desc, &info, 1); @@ -17,6 +17,7 @@ #include <fat.h> #include <mmc.h> #include <scsi.h> +#include <virtio.h> #include <asm/cache.h> #include <asm/global_data.h> #include <linux/stddef.h> @@ -133,6 +134,10 @@ static int env_fat_load(void) if (!strcmp(CONFIG_ENV_FAT_INTERFACE, "scsi")) scsi_scan(true); #endif +#if defined(CONFIG_VIRTIO) + if (!strcmp(ifname, "virtio")) + virtio_init(); +#endif #endif part = blk_get_device_part_str(ifname, dev_and_part, &dev_desc, &info, 1); diff --git a/include/virtio.h b/include/virtio.h index 1ab0ec5..17f894a 100644 --- a/include/virtio.h +++ b/include/virtio.h @@ -21,6 +21,7 @@ #define __VIRTIO_H__ #include <virtio_types.h> +#include <dm/device.h> #include <linux/bitops.h> #include <linux/bug.h> #include <linux/typecheck.h> |