Hi Jonas, On Mon, 17 Feb 2025 at 13:28, Jonas Karlman <jo...@kwiboo.se> wrote: > > Hi Simon, > > On 2025-02-09 22:14, Simon Glass wrote: > > The most common word for features that make a platform work is to use > > 'HAVE_xxx'. Rename this option to match. > > We already have HAS_CUSTOM_SYS_INIT_SP_ADDR related to the init stack > pointer address, maybe the new symbol should be named something similar > to that? e.g. HAS_xPL_INIT_SP_ADDR
That would be quite confusing, since we still need SYS_INIT_SP_ADDR that option to work. The name would have to be xPL_HAS_SP_INIT_SP_ADDR to fit with the naming convention and allow CONFIG_IS_ENABLED() and avoid more confusion. Plus, SYS_INIT_SP_ADDR is actually a fallback for when the xPL builds don't provide their own address. So I think this needs to be separate, particularly as Tom is talking of splitting the deconfig files, at which point we wouldn't be able to make xPL use SYS_INIT_SP_ADDR as a default. > > > > > Update the help to use the word 'phase' rather than 'stage', since > > that is the current terminology. Also clarify that, absent this setting, > > the stack pointer generally comes from the value used by U-Boot proper, > > rather than SPL. > > The last statement is not fully correct, see below. > > > > > Move the option just above TPL_STACK which depends on it. > > > > Signed-off-by: Simon Glass <s...@chromium.org> > > --- > > > > Changes in v2: > > - Add new patch to rename TPL_NEEDS_SEPARATE_STACK > > > > arch/arm/lib/crt0.S | 2 +- > > arch/arm/lib/crt0_64.S | 2 +- > > arch/arm/mach-rockchip/Kconfig | 14 +++++++------- > > common/spl/Kconfig.tpl | 19 ++++++++++--------- > > configs/mk808_defconfig | 2 +- > > 5 files changed, 20 insertions(+), 19 deletions(-) > > > > diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S > > index a691d844847..a7e6f50d39a 100644 > > --- a/arch/arm/lib/crt0.S > > +++ b/arch/arm/lib/crt0.S > > @@ -100,7 +100,7 @@ ENTRY(_main) > > * Set up initial C runtime environment and call board_init_f(0). > > */ > > > > -#if defined(CONFIG_TPL_BUILD) && defined(CONFIG_TPL_NEEDS_SEPARATE_STACK) > > +#if defined(CONFIG_TPL_BUILD) && defined(CONFIG_TPL_HAVE_INIT_STACK) > > ldr r0, =(CONFIG_TPL_STACK) > > #elif defined(CONFIG_XPL_BUILD) && defined(CONFIG_SPL_STACK) > > ldr r0, =(CONFIG_SPL_STACK) > > Here we can see that SPL_STACK is used as the first fallback for > XPL_BUILD's. Oh dear. I believe that is unintended, but I'm not sure which way to take it. For now I'll update the comment. > > > diff --git a/arch/arm/lib/crt0_64.S b/arch/arm/lib/crt0_64.S > > index 32401f544a7..62a0abe1fed 100644 > > --- a/arch/arm/lib/crt0_64.S > > +++ b/arch/arm/lib/crt0_64.S > > @@ -69,7 +69,7 @@ ENTRY(_main) > > /* > > * Set up initial C runtime environment and call board_init_f(0). > > */ > > -#if defined(CONFIG_TPL_BUILD) && defined(CONFIG_TPL_NEEDS_SEPARATE_STACK) > > +#if defined(CONFIG_TPL_BUILD) && defined(CONFIG_TPL_HAVE_INIT_STACK) > > ldr x0, =(CONFIG_TPL_STACK) > > #elif defined(CONFIG_XPL_BUILD) && defined(CONFIG_SPL_STACK) > > ldr x0, =(CONFIG_SPL_STACK) > > diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig > > index 4d3157b2edd..4c515593718 100644 > > --- a/arch/arm/mach-rockchip/Kconfig > > +++ b/arch/arm/mach-rockchip/Kconfig > > @@ -9,7 +9,7 @@ config ROCKCHIP_PX30 > > select SPL > > select TPL > > select TPL_TINY_FRAMEWORK if TPL > > - select TPL_NEEDS_SEPARATE_STACK if TPL > > + select TPL_HAVE_INIT_STACK if TPL > > imply SPL_SEPARATE_BSS > > select SPL_SERIAL > > select TPL_SERIAL > > @@ -106,7 +106,7 @@ config ROCKCHIP_RK322X > > select TPL > > select TPL_DM > > select TPL_OF_LIBFDT > > - select TPL_NEEDS_SEPARATE_STACK if TPL > > + select TPL_HAVE_INIT_STACK if TPL > > select SPL_DRIVERS_MISC > > imply ROCKCHIP_COMMON_BOARD > > imply SPL_SERIAL > > @@ -139,7 +139,7 @@ config ROCKCHIP_RK3288 > > imply TPL_DRIVERS_MISC > > imply TPL_LIBCOMMON_SUPPORT > > imply TPL_LIBGENERIC_SUPPORT > > - imply TPL_NEEDS_SEPARATE_STACK > > + imply TPL_HAVE_INIT_STACK > > imply TPL_OF_CONTROL > > imply TPL_OF_PLATDATA > > imply TPL_RAM > > @@ -197,7 +197,7 @@ config ROCKCHIP_RK3328 > > select SPL > > select SUPPORT_TPL > > select TPL > > - select TPL_NEEDS_SEPARATE_STACK if TPL > > + select TPL_HAVE_INIT_STACK if TPL > > imply ARMV8_CRYPTO > > imply ARMV8_SET_SMPEN > > imply MISC > > @@ -225,7 +225,7 @@ config ROCKCHIP_RK3368 > > select ARM64 > > select SUPPORT_SPL > > select SUPPORT_TPL > > - select TPL_NEEDS_SEPARATE_STACK if TPL > > + select TPL_HAVE_INIT_STACK if TPL > > imply ROCKCHIP_COMMON_BOARD > > imply SPL_ROCKCHIP_COMMON_BOARD > > imply SPL_SEPARATE_BSS > > @@ -257,7 +257,7 @@ config ROCKCHIP_RK3399 > > select SPL_RAM if SPL > > select SPL_REGMAP if SPL > > select SPL_SYSCON if SPL > > - select TPL_NEEDS_SEPARATE_STACK if TPL > > + select TPL_HAVE_INIT_STACK if TPL > > select SPL_SEPARATE_BSS > > select CLK > > select FIT > > @@ -392,7 +392,7 @@ config ROCKCHIP_RV1126 > > select SKIP_LOWLEVEL_INIT_ONLY > > select TPL > > select SUPPORT_TPL > > - select TPL_NEEDS_SEPARATE_STACK > > + select TPL_HAVE_INIT_STACK > > select TPL_ROCKCHIP_BACK_TO_BROM > > select SPL > > select SUPPORT_SPL > > diff --git a/common/spl/Kconfig.tpl b/common/spl/Kconfig.tpl > > index 22ca7016453..980d6da202a 100644 > > --- a/common/spl/Kconfig.tpl > > +++ b/common/spl/Kconfig.tpl > > @@ -106,12 +106,6 @@ config TPL_LDSCRIPT > > May be left empty to trigger the Makefile infrastructure to > > fall back to the linker-script used for the SPL stage. > > > > -config TPL_NEEDS_SEPARATE_STACK > > - bool "TPL needs a separate initial stack-pointer" > > - help > > - Enable, if the TPL stage should not inherit its initial > > - stack-pointer from the settings for the SPL stage. > > - > > config TPL_POWER > > bool "Support power drivers" > > help > > @@ -140,11 +134,18 @@ config TPL_MAX_SIZE > > help > > The maximum size (in bytes) of the TPL stage. > > > > +config TPL_HAVE_INIT_STACK > > + bool "TPL requires a initial, fixed, stack-pointer location" > > + help > > + Enable if the TPL phase should not use inherit its initial > > "should not use inherit its initial" does not sound correct. Fixed > > > + stack-pointer from the settings for U-Boot proper, but should set > > Here you are changing from SPL to proper, however the SPL address will > be used as the fallback (if it is defined) and then SYS_INIT_SP_ADDR. OK, I'll update that. > > > + its own value. > > + > > config TPL_STACK > > - hex "Address of the initial stack-pointer for the TPL stage" > > - depends on TPL_NEEDS_SEPARATE_STACK > > + hex "Address of the initial stack-pointer for the TPL phase" > > + depends on TPL_HAVE_INIT_STACK > > help > > - The address of the initial stack-pointer for the TPL stage. > > + The address of the initial stack-pointer for the TPL phase > > Did you remove the . (period) on purpose? Yes, as it is not a sentence > > Regards, > Jonas > > > Usually this will be the (aligned) top-of-stack. > > > > config TPL_READ_ONLY > > diff --git a/configs/mk808_defconfig b/configs/mk808_defconfig > > index e47d0b594f3..a1f089a23ea 100644 > > --- a/configs/mk808_defconfig > > +++ b/configs/mk808_defconfig > > @@ -48,7 +48,7 @@ CONFIG_SPL_NO_BSS_LIMIT=y > > CONFIG_SPL_SEPARATE_BSS=y > > CONFIG_SPL_FS_EXT4=y > > CONFIG_SYS_MMCSD_FS_BOOT_PARTITION=2 > > -CONFIG_TPL_NEEDS_SEPARATE_STACK=y > > +CONFIG_TPL_HAVE_INIT_STACK=y > > # CONFIG_BOOTM_PLAN9 is not set > > # CONFIG_BOOTM_RTEMS is not set > > # CONFIG_BOOTM_VXWORKS is not set > Regards, Simon