Re: [PATCH 2/2] Add SCSI scan for ENV in EXT4 or FAT

Rogier Stam
2022-05-11T21:02:15Z

Hi,

Sorry for the late reply. Not much time lately, also had some trouble
figuring the world build out. That said I have a fix. Not sure on the
usual process, but I will repost it on the mailing list in a moment.
Pali was quite close on the solution. I went a slightly different route
as I did not want to deviate from style in fat.c, also from reading the
recommended CONFIG_IS_ENABLED macro I got the impression you'd have to
define separate vars for TPL and SPL which would deviate from normal
usage for storing env in fat.

Effectively it amounts to:

+#ifndef CONFIG_SPL_BUILD
+#if defined(CONFIG_AHCI) || defined(CONFIG_SCSI)
+       if (!strcmp(CONFIG_ENV_FAT_INTERFACE, "scsi"))
+               scsi_scan(true);
+#endif
+#endif

Anyway, let me know if you disagree.

Thanks and regards

Rogier

On 21-04-2022 12:57, Pali Rohár wrote:
> On Thursday 21 April 2022 12:34:30 Stefan Roese wrote:
>> Hi Rogier,
>>
>> On 2/28/22 08:13, Pali Rohár wrote:
>>> + Simon, could you review this change? It would be nice to have this fix in upcoming U-Boot release.
>>>
>>> On Wednesday 09 February 2022 00:27:01 Rogier Stam wrote:
>>>> When having environment stored in EXT4 or FAT
>>>> and using an AHCI or SCSI device / partition
>>>> the scan would not be performed early enough
>>>> and hence the device would not be recognized.
>>>> This change adds the scan when the interface
>>>> is "scsi" in a similar way to mmc_initialize.
>>>>
>>>> Signed-off-by: Rogier Stam <rogier@unrailed.org>
>>> Reviewed-by: Pali Rohár <pali@kernel.org>
>> While running some CI tests, this error occurs with this patch:
>>
>> $ make dra7xx_hs_evm_usb_defconfig
>> ...
>> $ make -s -j20
>> ...
>> /opt/kernel.org/gcc-11.1.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-ld.bfd:
>> env/fat.o: in function `env_fat_load':
>> /home/stefan/git/u-boot/u-boot-marvell/env/fat.c:134: undefined reference to
>> `scsi_scan'
>> make[1]: *** [scripts/Makefile.spl:512: spl/u-boot-spl] Error 1
>> make: *** [Makefile:2101: spl/u-boot-spl] Error 2
> This is failing while building SPL...
>
>> Could you please take a look? And send a fixed version which also
>> passed a "world build" for all supported targets?
>>
>> Thanks,
>> Stefan
>>
>>
>>>> ---
>>>> env/ext4.c | 5 +++++
>>>> env/fat.c | 5 +++++
>>>> 2 files changed, 10 insertions(+)
>>>>
>>>> diff --git a/env/ext4.c b/env/ext4.c
>>>> index 9f65afb..47e05a4 100644
>>>> --- a/env/ext4.c
>>>> +++ b/env/ext4.c
>>>> @@ -31,6 +31,7 @@
>>>> #include <errno.h>
>>>> #include <ext4fs.h>
>>>> #include <mmc.h>
>>>> +#include <scsi.h>
>>>> #include <asm/global_data.h>
>>>> DECLARE_GLOBAL_DATA_PTR;
>>>> @@ -146,6 +147,10 @@ static int env_ext4_load(void)
>>>> if (!strcmp(ifname, "mmc"))
>>>> mmc_initialize(NULL);
>>>> #endif
>>>> +#if defined(CONFIG_AHCI) || defined(CONFIG_SCSI)
>>>> + if (!strcmp(ifname, "scsi"))
>>>> + scsi_scan(true);
>>>> +#endif
>>>> part = blk_get_device_part_str(ifname, dev_and_part,
>>>> &dev_desc, &info, 1);
>>>> diff --git a/env/fat.c b/env/fat.c
>>>> index fdccd6c..dbd6a13 100644
>>>> --- a/env/fat.c
>>>> +++ b/env/fat.c
>>>> @@ -17,6 +17,7 @@
>>>> #include <errno.h>
>>>> #include <fat.h>
>>>> #include <mmc.h>
>>>> +#include <scsi.h>
>>>> #include <asm/cache.h>
>>>> #include <asm/global_data.h>
>>>> #include <linux/stddef.h>
>>>> @@ -122,6 +123,10 @@ static int env_fat_load(void)
>>>> if (!strcmp(CONFIG_ENV_FAT_INTERFACE, "mmc"))
>>>> mmc_initialize(NULL);
>>>> #endif
>>>> +#if defined(CONFIG_AHCI) || defined(CONFIG_SCSI)
> ... I guess that you should use CONFIG_IS_ENABLED(AHCI) instead of
> defined(CONFIG_AHCI) for proper SPL support.
>
>>>> + if (!strcmp(CONFIG_ENV_FAT_INTERFACE, "scsi"))
>>>> + scsi_scan(true);
>>>> +#endif
>>>> part = blk_get_device_part_str(CONFIG_ENV_FAT_INTERFACE,
>>>> env_fat_device_and_part(),
>>>> --
>>>> 2.7.4
>>>>
>> Viele Grüße,
>> Stefan Roese
>>
>> --
>> DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
>> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
>> Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr@denx.de