diff mbox series

starfive: visionfive2: switch to standard boot

Message ID 20240221120014.149193-1-namcao@linutronix.de
State Accepted
Commit e3a904a6906870fb472dafbf3e2c99449653b304
Delegated to: Andes
Headers show
Series starfive: visionfive2: switch to standard boot | expand

Commit Message

Nam Cao Feb. 21, 2024, noon UTC
Distro boot scripts are deprecated. Use standard boot instead.

Signed-off-by: Nam Cao <namcao@linutronix.de>
---
 configs/starfive_visionfive2_defconfig |  2 +-
 include/configs/starfive-visionfive2.h | 14 +-------------
 2 files changed, 2 insertions(+), 14 deletions(-)

Comments

Leo Liang March 12, 2024, 6:31 a.m. UTC | #1
On Wed, Feb 21, 2024 at 01:00:14PM +0100, Nam Cao wrote:
> Distro boot scripts are deprecated. Use standard boot instead.
> 
> Signed-off-by: Nam Cao <namcao@linutronix.de>
> ---
>  configs/starfive_visionfive2_defconfig |  2 +-
>  include/configs/starfive-visionfive2.h | 14 +-------------
>  2 files changed, 2 insertions(+), 14 deletions(-)

Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com>
Milan P. Stanić March 13, 2024, 6:42 p.m. UTC | #2
On Wed, 2024-02-21 at 13:00, Nam Cao wrote:
> Distro boot scripts are deprecated. Use standard boot instead.
I had to enable 'CONFIG_CMD_SYSBOOT=y' in
configs/starfive_visionfive2_defconfig because it doesn't boot without
it. With this option it boots fine with this patch.
Tested on u-boot version 2024.04-rc4-dirty

> Signed-off-by: Nam Cao <namcao@linutronix.de>
> Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com>
Tested-by: Milan P. Stanić <mps@arvanta.net>

> ---
>  configs/starfive_visionfive2_defconfig |  2 +-
>  include/configs/starfive-visionfive2.h | 14 +-------------
>  2 files changed, 2 insertions(+), 14 deletions(-)
> 
> diff --git a/configs/starfive_visionfive2_defconfig b/configs/starfive_visionfive2_defconfig
> index b11be7ac86..aec751f871 100644
> --- a/configs/starfive_visionfive2_defconfig
> +++ b/configs/starfive_visionfive2_defconfig
> @@ -31,8 +31,8 @@ CONFIG_RISCV_SMODE=y
>  # CONFIG_OF_BOARD_FIXUP is not set
>  # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
>  CONFIG_FIT=y
> +CONFIG_BOOTSTD_DEFAULTS=y
>  CONFIG_SYS_BOOTM_LEN=0x4000000
> -CONFIG_DISTRO_DEFAULTS=y
>  CONFIG_BOOTSTAGE=y
>  CONFIG_QSPI_BOOT=y
>  CONFIG_SD_BOOT=y
> diff --git a/include/configs/starfive-visionfive2.h b/include/configs/starfive-visionfive2.h
> index 29c74470c7..049b0a0630 100644
> --- a/include/configs/starfive-visionfive2.h
> +++ b/include/configs/starfive-visionfive2.h
> @@ -15,17 +15,6 @@
>  
>  #define __io
>  
> -/* Environment options */
> -
> -#define BOOT_TARGET_DEVICES(func) \
> -	func(NVME, nvme, 0) \
> -	func(USB, usb, 0) \
> -	func(MMC, mmc, 0) \
> -	func(MMC, mmc, 1) \
> -	func(DHCP, dhcp, na)
> -
> -#include <config_distro_bootcmd.h>
> -
>  #define TYPE_GUID_SPL		"2E54B353-1271-4842-806F-E436D6AF6985"
>  #define TYPE_GUID_UBOOT	"BC13C2FF-59E6-4262-A352-B275FD6F7172"
>  #define TYPE_GUID_SYSTEM	"EBD0A0A2-B9E5-4433-87C0-68B6B72699C7"
> @@ -48,7 +37,6 @@
>  	"type_guid_gpt_loader2=" TYPE_GUID_UBOOT "\0" \
>  	"type_guid_gpt_system=" TYPE_GUID_SYSTEM "\0" \
>  	"partitions=" PARTS_DEFAULT "\0" \
> -	"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
> -	BOOTENV
> +	"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0"
>  
>  #endif /* _STARFIVE_VISIONFIVE2_H */
Nam Cao March 14, 2024, 12:04 p.m. UTC | #3
On 13/Mar/2024 Milan P. Stanić wrote:
> On Wed, 2024-02-21 at 13:00, Nam Cao wrote:
> > Distro boot scripts are deprecated. Use standard boot instead.  
> I had to enable 'CONFIG_CMD_SYSBOOT=y' in
> configs/starfive_visionfive2_defconfig because it doesn't boot without
> it. With this option it boots fine with this patch.

You should not have to do that for it to work, otherwise this patch
introduced a bug.

CONFIG_CMD_SYSBOOT adds the "sysboot" command, which is only used by
distroboot. So I suspect that you were actually still using distro boot,
because you didn't "update" your environment variable (that can be checked
with "printenv bootcmd"). For this patch to work, the environment variables
also need to be updated with:
    env default
    env save -a

This makes me realize that the patch breaks boards if the users forget to
update the environment variables. I am not sure if this is considered a
bug. What do maintainers think?

Best regards,
Nam

> Tested on u-boot version 2024.04-rc4-dirty
> 
> > Signed-off-by: Nam Cao <namcao@linutronix.de>
> > Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com>  
> Tested-by: Milan P. Stanić <mps@arvanta.net>
> 
> > ---
> >  configs/starfive_visionfive2_defconfig |  2 +-
> >  include/configs/starfive-visionfive2.h | 14 +-------------
> >  2 files changed, 2 insertions(+), 14 deletions(-)
> > 
> > diff --git a/configs/starfive_visionfive2_defconfig b/configs/starfive_visionfive2_defconfig
> > index b11be7ac86..aec751f871 100644
> > --- a/configs/starfive_visionfive2_defconfig
> > +++ b/configs/starfive_visionfive2_defconfig
> > @@ -31,8 +31,8 @@ CONFIG_RISCV_SMODE=y
> >  # CONFIG_OF_BOARD_FIXUP is not set
> >  # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
> >  CONFIG_FIT=y
> > +CONFIG_BOOTSTD_DEFAULTS=y
> >  CONFIG_SYS_BOOTM_LEN=0x4000000
> > -CONFIG_DISTRO_DEFAULTS=y
> >  CONFIG_BOOTSTAGE=y
> >  CONFIG_QSPI_BOOT=y
> >  CONFIG_SD_BOOT=y
> > diff --git a/include/configs/starfive-visionfive2.h b/include/configs/starfive-visionfive2.h
> > index 29c74470c7..049b0a0630 100644
> > --- a/include/configs/starfive-visionfive2.h
> > +++ b/include/configs/starfive-visionfive2.h
> > @@ -15,17 +15,6 @@
> >  
> >  #define __io
> >  
> > -/* Environment options */
> > -
> > -#define BOOT_TARGET_DEVICES(func) \
> > -	func(NVME, nvme, 0) \
> > -	func(USB, usb, 0) \
> > -	func(MMC, mmc, 0) \
> > -	func(MMC, mmc, 1) \
> > -	func(DHCP, dhcp, na)
> > -
> > -#include <config_distro_bootcmd.h>
> > -
> >  #define TYPE_GUID_SPL		"2E54B353-1271-4842-806F-E436D6AF6985"
> >  #define TYPE_GUID_UBOOT	"BC13C2FF-59E6-4262-A352-B275FD6F7172"
> >  #define TYPE_GUID_SYSTEM	"EBD0A0A2-B9E5-4433-87C0-68B6B72699C7"
> > @@ -48,7 +37,6 @@
> >  	"type_guid_gpt_loader2=" TYPE_GUID_UBOOT "\0" \
> >  	"type_guid_gpt_system=" TYPE_GUID_SYSTEM "\0" \
> >  	"partitions=" PARTS_DEFAULT "\0" \
> > -	"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
> > -	BOOTENV
> > +	"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0"
> >  
> >  #endif /* _STARFIVE_VISIONFIVE2_H */
Milan P. Stanić March 18, 2024, 8:34 p.m. UTC | #4
On Thu, 2024-03-14 at 13:04, Nam Cao wrote:
> On 13/Mar/2024 Milan P. Stanić wrote:
> > On Wed, 2024-02-21 at 13:00, Nam Cao wrote:
> > > Distro boot scripts are deprecated. Use standard boot instead.  
> > I had to enable 'CONFIG_CMD_SYSBOOT=y' in
> > configs/starfive_visionfive2_defconfig because it doesn't boot without
> > it. With this option it boots fine with this patch.
> 
> You should not have to do that for it to work, otherwise this patch
> introduced a bug.
> 
> CONFIG_CMD_SYSBOOT adds the "sysboot" command, which is only used by
> distroboot. So I suspect that you were actually still using distro boot,
> because you didn't "update" your environment variable (that can be checked
> with "printenv bootcmd"). For this patch to work, the environment variables
> also need to be updated with:
>     env default
>     env save -a
> 
> This makes me realize that the patch breaks boards if the users forget to
> update the environment variables. I am not sure if this is considered a
> bug. What do maintainers think?

Rebuild it again and it worked out of the box.

Tested-by: Milan P. Stanić <mps@arvanta.net>
E Shattow March 28, 2024, 5:02 a.m. UTC | #5
Hi, does this standard boot no longer try to boot from the configured
EFI list? I have a boot listing (for Debian's grub EFI loader)
configured with u-boot eficonfig but it does not seem to be attempting
EFI boot anymore, there is a message about card select error but I
think that must be trying the eMMC (mmc 1) and not the SD Card (mmc
0).

StarFive # mmc list
mmc@16010000: 0 (SD)
mmc@16020000: 1

StarFive # help bootflow
bootflow - Boot flows

Usage:
bootflow scan - boot first available bootflow


StarFive # bootflow scan
Card did not respond to voltage select! : -110
No working controllers found
ethernet@16030000 Waiting for PHY auto negotiation to complete....... done
BOOTP broadcast 1

StarFive # bootefi bootmgr
Card did not respond to voltage select! : -110
Booting: Debian bootloader GRUB
error: no suitable video mode found.
"                                    GNU GRUB  version 2.12-1+b1"...

The documentation for bootflow command seems to have a lot more
options than what I'm seeing now?
diff mbox series

Patch

diff --git a/configs/starfive_visionfive2_defconfig b/configs/starfive_visionfive2_defconfig
index b11be7ac86..aec751f871 100644
--- a/configs/starfive_visionfive2_defconfig
+++ b/configs/starfive_visionfive2_defconfig
@@ -31,8 +31,8 @@  CONFIG_RISCV_SMODE=y
 # CONFIG_OF_BOARD_FIXUP is not set
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
 CONFIG_FIT=y
+CONFIG_BOOTSTD_DEFAULTS=y
 CONFIG_SYS_BOOTM_LEN=0x4000000
-CONFIG_DISTRO_DEFAULTS=y
 CONFIG_BOOTSTAGE=y
 CONFIG_QSPI_BOOT=y
 CONFIG_SD_BOOT=y
diff --git a/include/configs/starfive-visionfive2.h b/include/configs/starfive-visionfive2.h
index 29c74470c7..049b0a0630 100644
--- a/include/configs/starfive-visionfive2.h
+++ b/include/configs/starfive-visionfive2.h
@@ -15,17 +15,6 @@ 
 
 #define __io
 
-/* Environment options */
-
-#define BOOT_TARGET_DEVICES(func) \
-	func(NVME, nvme, 0) \
-	func(USB, usb, 0) \
-	func(MMC, mmc, 0) \
-	func(MMC, mmc, 1) \
-	func(DHCP, dhcp, na)
-
-#include <config_distro_bootcmd.h>
-
 #define TYPE_GUID_SPL		"2E54B353-1271-4842-806F-E436D6AF6985"
 #define TYPE_GUID_UBOOT	"BC13C2FF-59E6-4262-A352-B275FD6F7172"
 #define TYPE_GUID_SYSTEM	"EBD0A0A2-B9E5-4433-87C0-68B6B72699C7"
@@ -48,7 +37,6 @@ 
 	"type_guid_gpt_loader2=" TYPE_GUID_UBOOT "\0" \
 	"type_guid_gpt_system=" TYPE_GUID_SYSTEM "\0" \
 	"partitions=" PARTS_DEFAULT "\0" \
-	"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \
-	BOOTENV
+	"fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0"
 
 #endif /* _STARFIVE_VISIONFIVE2_H */