Re: [PATCH 2/2] sunxi: remove support for boot0 header reservation

2023-04-11 Thread Andre Przywara
On Sat, 08 Apr 2023 08:19:16 +0200
Jernej Škrabec  wrote:

Hi,

> Dne sreda, 05. april 2023 ob 16:27:31 CEST je Andre Przywara napisal(a):
> > In the early days of the Allwinner A64 U-Boot support, we relied on a
> > vendor provided "boot0" binary to perform the DRAM initialisation. This
> > replaced the SPL, and required to equip the U-Boot (proper) binary with
> > a vendor specific header to be recognised as a valid boot0 payload.
> > Fortunately these days are long gone (we gained SPL and DRAM support in
> > early 2017!), and we never needed to use that hack on any later 64-bit
> > Allwinner SoC.
> > 
> > Since this is highly obsolete by now, remove the Kconfig option and the
> > small pieces of "code" associated with it.
> > 
> > Provide some comments about the purpose of the remaining boot0 code on
> > the way.
> > 
> > Signed-off-by: Andre Przywara   
> 
> I think it's time to remove this code too.
> 
> Reviewed-by: Jernej Skrabec 

Many thanks! So I kept the "code" in for now, to appease Piotr, but
removed the symbols from the A64's defconfigs. I will propose that
removal then again at a later time.

Queued for sunxi/master.

Cheers,
Andre



> 
> > ---
> >  arch/arm/include/asm/arch-sunxi/boot0.h | 18 +++---
> >  arch/arm/mach-sunxi/Kconfig |  9 -
> >  configs/a64-olinuxino-emmc_defconfig|  1 -
> >  configs/a64-olinuxino_defconfig |  1 -
> >  configs/amarula_a64_relic_defconfig |  1 -
> >  configs/bananapi_m64_defconfig  |  1 -
> >  configs/nanopi_a64_defconfig|  1 -
> >  configs/oceanic_5205_5inmfd_defconfig   |  1 -
> >  configs/orangepi_win_defconfig  |  1 -
> >  configs/pine64_plus_defconfig   |  1 -
> >  configs/sopine_baseboard_defconfig  |  1 -
> >  11 files changed, 11 insertions(+), 25 deletions(-)
> > 
> > diff --git a/arch/arm/include/asm/arch-sunxi/boot0.h
> > b/arch/arm/include/asm/arch-sunxi/boot0.h index 59ea75a96b5..1a396f78488
> > 100644
> > --- a/arch/arm/include/asm/arch-sunxi/boot0.h
> > +++ b/arch/arm/include/asm/arch-sunxi/boot0.h
> > @@ -1,13 +1,17 @@
> >  /* SPDX-License-Identifier: GPL-2.0+ */
> >  /*
> > - * Configuration settings for the Allwinner A64 (sun50i) CPU
> > + * Very early code for Allwinner 64-bit CPUs.
> > + *
> > + * The BROM runs entirely in AArch32 state, so the SPL is entered using
> > this + * ISA. Depending on the rest of the firmware stack, this may also be
> > true + * for U-Boot proper.
> > + * Provide the "RMR reset into 64-bit" sequence, in AArch32 machine
> > language, + * so that we can have all of U-Boot in AArch64. The first
> > instruction is + * chosen so that if the CPU is already using AArch64, it
> > will skip the code + * and jump straight to the reset vector.
> >   */
> > 
> > -#if defined(CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER) &&
> > !defined(CONFIG_SPL_BUILD) -/* reserve space for BOOT0 header information
> > */
> > -   b   reset
> > -   .space  1532
> > -#elif defined(CONFIG_ARM_BOOT_HOOK_RMR)
> > +#ifdef CONFIG_ARM_BOOT_HOOK_RMR
> >  /*
> >   * Switch into AArch64 if needed.
> >   * Refer to arch/arm/mach-sunxi/rmr_switch.S for the original source.
> > @@ -47,7 +51,7 @@
> > .word   CONFIG_TEXT_BASE
> >  #endif
> > .word   fel_stash - .
> > -#else
> > +#else  /* !CONFIG_ARM_BOOT_HOOK_RMR */
> >  /* normal execution */
> > b   reset
> >  #endif
> > diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
> > index b46667ce01e..0527b3863a7 100644
> > --- a/arch/arm/mach-sunxi/Kconfig
> > +++ b/arch/arm/mach-sunxi/Kconfig
> > @@ -386,15 +386,6 @@ config MACH_SUN8I
> > default y if MACH_SUN8I_R40
> > default y if MACH_SUN8I_V3S
> > 
> > -config RESERVE_ALLWINNER_BOOT0_HEADER
> > -   bool "reserve space for Allwinner boot0 header"
> > -   select ENABLE_ARM_SOC_BOOT0_HOOK
> > -   ---help---
> > -   Prepend a 1536 byte (empty) header to the U-Boot image file, to be
> > -   filled with magic values post build. The Allwinner provided boot0
> > -   blob relies on this information to load and execute U-Boot.
> > -   Only needed on 64-bit Allwinner boards so far when using boot0.
> > -
> >  config ARM_BOOT_HOOK_RMR
> > bool
> > depends on ARM64
> > diff --git a/configs/a64-olinuxino-emmc_defconfig
> > b/configs/a64-olinuxino-emmc_defconfig index 8ec9eb3e9c2..a5989fab1c6
> > 100644
> > --- a/configs/a64-olinuxino-emmc_defconfig
> > +++ b/configs/a64-olinuxino-emmc_defconfig
> > @@ -3,7 +3,6 @@ CONFIG_ARCH_SUNXI=y
> >  CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-olinuxino-emmc"
> >  CONFIG_SPL=y
> >  CONFIG_MACH_SUN50I=y
> > -CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER=y
> >  CONFIG_MMC_SUNXI_SLOT_EXTRA=2
> >  # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
> >  CONFIG_SUPPORT_EMMC_BOOT=y
> > diff --git a/configs/a64-olinuxino_defconfig
> > b/configs/a64-olinuxino_defconfig index 16cef18beef..0b469c25d0d 100644
> > --- a/configs/a64-olinuxino_defconfig
> > +++ b/configs/a64-olinuxino_defconfig
> > @@ -3,7 +3,6 @@ 

Re: [PATCH 2/2] sunxi: remove support for boot0 header reservation

2023-04-08 Thread Jernej Škrabec
Dne sreda, 05. april 2023 ob 16:27:31 CEST je Andre Przywara napisal(a):
> In the early days of the Allwinner A64 U-Boot support, we relied on a
> vendor provided "boot0" binary to perform the DRAM initialisation. This
> replaced the SPL, and required to equip the U-Boot (proper) binary with
> a vendor specific header to be recognised as a valid boot0 payload.
> Fortunately these days are long gone (we gained SPL and DRAM support in
> early 2017!), and we never needed to use that hack on any later 64-bit
> Allwinner SoC.
> 
> Since this is highly obsolete by now, remove the Kconfig option and the
> small pieces of "code" associated with it.
> 
> Provide some comments about the purpose of the remaining boot0 code on
> the way.
> 
> Signed-off-by: Andre Przywara 

I think it's time to remove this code too.

Reviewed-by: Jernej Skrabec 

Best regards,
Jernej

> ---
>  arch/arm/include/asm/arch-sunxi/boot0.h | 18 +++---
>  arch/arm/mach-sunxi/Kconfig |  9 -
>  configs/a64-olinuxino-emmc_defconfig|  1 -
>  configs/a64-olinuxino_defconfig |  1 -
>  configs/amarula_a64_relic_defconfig |  1 -
>  configs/bananapi_m64_defconfig  |  1 -
>  configs/nanopi_a64_defconfig|  1 -
>  configs/oceanic_5205_5inmfd_defconfig   |  1 -
>  configs/orangepi_win_defconfig  |  1 -
>  configs/pine64_plus_defconfig   |  1 -
>  configs/sopine_baseboard_defconfig  |  1 -
>  11 files changed, 11 insertions(+), 25 deletions(-)
> 
> diff --git a/arch/arm/include/asm/arch-sunxi/boot0.h
> b/arch/arm/include/asm/arch-sunxi/boot0.h index 59ea75a96b5..1a396f78488
> 100644
> --- a/arch/arm/include/asm/arch-sunxi/boot0.h
> +++ b/arch/arm/include/asm/arch-sunxi/boot0.h
> @@ -1,13 +1,17 @@
>  /* SPDX-License-Identifier: GPL-2.0+ */
>  /*
> - * Configuration settings for the Allwinner A64 (sun50i) CPU
> + * Very early code for Allwinner 64-bit CPUs.
> + *
> + * The BROM runs entirely in AArch32 state, so the SPL is entered using
> this + * ISA. Depending on the rest of the firmware stack, this may also be
> true + * for U-Boot proper.
> + * Provide the "RMR reset into 64-bit" sequence, in AArch32 machine
> language, + * so that we can have all of U-Boot in AArch64. The first
> instruction is + * chosen so that if the CPU is already using AArch64, it
> will skip the code + * and jump straight to the reset vector.
>   */
> 
> -#if defined(CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER) &&
> !defined(CONFIG_SPL_BUILD) -/* reserve space for BOOT0 header information
> */
> - b   reset
> - .space  1532
> -#elif defined(CONFIG_ARM_BOOT_HOOK_RMR)
> +#ifdef CONFIG_ARM_BOOT_HOOK_RMR
>  /*
>   * Switch into AArch64 if needed.
>   * Refer to arch/arm/mach-sunxi/rmr_switch.S for the original source.
> @@ -47,7 +51,7 @@
>   .word   CONFIG_TEXT_BASE
>  #endif
>   .word   fel_stash - .
> -#else
> +#else/* !CONFIG_ARM_BOOT_HOOK_RMR */
>  /* normal execution */
>   b   reset
>  #endif
> diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
> index b46667ce01e..0527b3863a7 100644
> --- a/arch/arm/mach-sunxi/Kconfig
> +++ b/arch/arm/mach-sunxi/Kconfig
> @@ -386,15 +386,6 @@ config MACH_SUN8I
>   default y if MACH_SUN8I_R40
>   default y if MACH_SUN8I_V3S
> 
> -config RESERVE_ALLWINNER_BOOT0_HEADER
> - bool "reserve space for Allwinner boot0 header"
> - select ENABLE_ARM_SOC_BOOT0_HOOK
> - ---help---
> - Prepend a 1536 byte (empty) header to the U-Boot image file, to be
> - filled with magic values post build. The Allwinner provided boot0
> - blob relies on this information to load and execute U-Boot.
> - Only needed on 64-bit Allwinner boards so far when using boot0.
> -
>  config ARM_BOOT_HOOK_RMR
>   bool
>   depends on ARM64
> diff --git a/configs/a64-olinuxino-emmc_defconfig
> b/configs/a64-olinuxino-emmc_defconfig index 8ec9eb3e9c2..a5989fab1c6
> 100644
> --- a/configs/a64-olinuxino-emmc_defconfig
> +++ b/configs/a64-olinuxino-emmc_defconfig
> @@ -3,7 +3,6 @@ CONFIG_ARCH_SUNXI=y
>  CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-olinuxino-emmc"
>  CONFIG_SPL=y
>  CONFIG_MACH_SUN50I=y
> -CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER=y
>  CONFIG_MMC_SUNXI_SLOT_EXTRA=2
>  # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
>  CONFIG_SUPPORT_EMMC_BOOT=y
> diff --git a/configs/a64-olinuxino_defconfig
> b/configs/a64-olinuxino_defconfig index 16cef18beef..0b469c25d0d 100644
> --- a/configs/a64-olinuxino_defconfig
> +++ b/configs/a64-olinuxino_defconfig
> @@ -3,7 +3,6 @@ CONFIG_ARCH_SUNXI=y
>  CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-olinuxino"
>  CONFIG_SPL=y
>  CONFIG_MACH_SUN50I=y
> -CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER=y
>  CONFIG_MMC_SUNXI_SLOT_EXTRA=2
>  # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
>  CONFIG_SUN8I_EMAC=y
> diff --git a/configs/amarula_a64_relic_defconfig
> b/configs/amarula_a64_relic_defconfig index ae44b66d109..292af6e372e 100644
> --- a/configs/amarula_a64_relic_defconfig
> +++ 

[PATCH 2/2] sunxi: remove support for boot0 header reservation

2023-04-05 Thread Andre Przywara
In the early days of the Allwinner A64 U-Boot support, we relied on a
vendor provided "boot0" binary to perform the DRAM initialisation. This
replaced the SPL, and required to equip the U-Boot (proper) binary with
a vendor specific header to be recognised as a valid boot0 payload.
Fortunately these days are long gone (we gained SPL and DRAM support in
early 2017!), and we never needed to use that hack on any later 64-bit
Allwinner SoC.

Since this is highly obsolete by now, remove the Kconfig option and the
small pieces of "code" associated with it.

Provide some comments about the purpose of the remaining boot0 code on
the way.

Signed-off-by: Andre Przywara 
---
 arch/arm/include/asm/arch-sunxi/boot0.h | 18 +++---
 arch/arm/mach-sunxi/Kconfig |  9 -
 configs/a64-olinuxino-emmc_defconfig|  1 -
 configs/a64-olinuxino_defconfig |  1 -
 configs/amarula_a64_relic_defconfig |  1 -
 configs/bananapi_m64_defconfig  |  1 -
 configs/nanopi_a64_defconfig|  1 -
 configs/oceanic_5205_5inmfd_defconfig   |  1 -
 configs/orangepi_win_defconfig  |  1 -
 configs/pine64_plus_defconfig   |  1 -
 configs/sopine_baseboard_defconfig  |  1 -
 11 files changed, 11 insertions(+), 25 deletions(-)

diff --git a/arch/arm/include/asm/arch-sunxi/boot0.h 
b/arch/arm/include/asm/arch-sunxi/boot0.h
index 59ea75a96b5..1a396f78488 100644
--- a/arch/arm/include/asm/arch-sunxi/boot0.h
+++ b/arch/arm/include/asm/arch-sunxi/boot0.h
@@ -1,13 +1,17 @@
 /* SPDX-License-Identifier: GPL-2.0+ */
 /*
- * Configuration settings for the Allwinner A64 (sun50i) CPU
+ * Very early code for Allwinner 64-bit CPUs.
+ *
+ * The BROM runs entirely in AArch32 state, so the SPL is entered using this
+ * ISA. Depending on the rest of the firmware stack, this may also be true
+ * for U-Boot proper.
+ * Provide the "RMR reset into 64-bit" sequence, in AArch32 machine language,
+ * so that we can have all of U-Boot in AArch64. The first instruction is
+ * chosen so that if the CPU is already using AArch64, it will skip the code
+ * and jump straight to the reset vector.
  */
 
-#if defined(CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER) && 
!defined(CONFIG_SPL_BUILD)
-/* reserve space for BOOT0 header information */
-   b   reset
-   .space  1532
-#elif defined(CONFIG_ARM_BOOT_HOOK_RMR)
+#ifdef CONFIG_ARM_BOOT_HOOK_RMR
 /*
  * Switch into AArch64 if needed.
  * Refer to arch/arm/mach-sunxi/rmr_switch.S for the original source.
@@ -47,7 +51,7 @@
.word   CONFIG_TEXT_BASE
 #endif
.word   fel_stash - .
-#else
+#else  /* !CONFIG_ARM_BOOT_HOOK_RMR */
 /* normal execution */
b   reset
 #endif
diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
index b46667ce01e..0527b3863a7 100644
--- a/arch/arm/mach-sunxi/Kconfig
+++ b/arch/arm/mach-sunxi/Kconfig
@@ -386,15 +386,6 @@ config MACH_SUN8I
default y if MACH_SUN8I_R40
default y if MACH_SUN8I_V3S
 
-config RESERVE_ALLWINNER_BOOT0_HEADER
-   bool "reserve space for Allwinner boot0 header"
-   select ENABLE_ARM_SOC_BOOT0_HOOK
-   ---help---
-   Prepend a 1536 byte (empty) header to the U-Boot image file, to be
-   filled with magic values post build. The Allwinner provided boot0
-   blob relies on this information to load and execute U-Boot.
-   Only needed on 64-bit Allwinner boards so far when using boot0.
-
 config ARM_BOOT_HOOK_RMR
bool
depends on ARM64
diff --git a/configs/a64-olinuxino-emmc_defconfig 
b/configs/a64-olinuxino-emmc_defconfig
index 8ec9eb3e9c2..a5989fab1c6 100644
--- a/configs/a64-olinuxino-emmc_defconfig
+++ b/configs/a64-olinuxino-emmc_defconfig
@@ -3,7 +3,6 @@ CONFIG_ARCH_SUNXI=y
 CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-olinuxino-emmc"
 CONFIG_SPL=y
 CONFIG_MACH_SUN50I=y
-CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER=y
 CONFIG_MMC_SUNXI_SLOT_EXTRA=2
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
 CONFIG_SUPPORT_EMMC_BOOT=y
diff --git a/configs/a64-olinuxino_defconfig b/configs/a64-olinuxino_defconfig
index 16cef18beef..0b469c25d0d 100644
--- a/configs/a64-olinuxino_defconfig
+++ b/configs/a64-olinuxino_defconfig
@@ -3,7 +3,6 @@ CONFIG_ARCH_SUNXI=y
 CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-olinuxino"
 CONFIG_SPL=y
 CONFIG_MACH_SUN50I=y
-CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER=y
 CONFIG_MMC_SUNXI_SLOT_EXTRA=2
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
 CONFIG_SUN8I_EMAC=y
diff --git a/configs/amarula_a64_relic_defconfig 
b/configs/amarula_a64_relic_defconfig
index ae44b66d109..292af6e372e 100644
--- a/configs/amarula_a64_relic_defconfig
+++ b/configs/amarula_a64_relic_defconfig
@@ -3,7 +3,6 @@ CONFIG_ARCH_SUNXI=y
 CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-amarula-relic"
 CONFIG_SPL=y
 CONFIG_MACH_SUN50I=y
-CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER=y
 CONFIG_MMC_SUNXI_SLOT_EXTRA=2
 # CONFIG_VIDEO_DE2 is not set
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
diff --git a/configs/bananapi_m64_defconfig b/configs/bananapi_m64_defconfig