[U-Boot] [PATCH] Add ability for arch code to make changes before we boot

Kumar Gala galak at kernel.crashing.org
Thu Aug 27 05:27:21 CEST 2009


On Aug 26, 2009, at 3:46 PM, Wolfgang Denk wrote:

> Dear Kumar Gala,
>
> In message <1250276442-28463-1-git-send-email-galak at kernel.crashing.org 
> > you wrote:
>> Added a arch_preboot() function that cpu specific code can  
>> implement to
>> allow for various modifications to the state of the machine right  
>> before
>> we boot.  This can be useful to setup register state to a specific
>> configuration.
>>
>> Signed-off-by: Kumar Gala <galak at kernel.crashing.org>
>> ---
>> common/cmd_bootm.c |   10 ++++++++++
>> 1 files changed, 10 insertions(+), 0 deletions(-)
>>
>> diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
>> index 86c8122..766889a 100644
>> --- a/common/cmd_bootm.c
>> +++ b/common/cmd_bootm.c
>> @@ -166,6 +166,13 @@ void __arch_lmb_reserve(struct lmb *lmb)
>> }
>> void arch_lmb_reserve(struct lmb *lmb) __attribute__((weak,  
>> alias("__arch_lmb_reserve")));
>>
>> +/* Allow for arch specific config before we boot */
>> +void __arch_preboot(void)
>
> As this is only used when booting an OS (and not for example when
> starting a standalone program) we should probably write:
>
> 	/* Allow for arch specific code before booting the OS */
> 	void __arch_preboot_os()
> 	...

no problem, will change the name.

>> +{
>> +	/* please define platform specific arch_preboot() */
>> +}
>> +void arch_preboot(void) __attribute__((weak,  
>> alias("__arch_preboot")));
>> +
>> #if defined(__ARM__)
>>   #define IH_INITRD_ARCH IH_ARCH_ARM
>> #elif defined(__avr32__)
>> @@ -543,6 +550,7 @@ int do_bootm_subcommand (cmd_tbl_t *cmdtp, int  
>> flag, int argc, char *argv[])
>> 			break;
>> 		case BOOTM_STATE_OS_GO:
>
> Hm... maybe this could / should be handled in BOOTM_STATE_OS_PREP
> state?

I'd prefer to keep arch_preboot_os() as close to boot_fn() as possible

>> 			disable_interrupts();
>> +			arch_preboot();
>
> And maybe we should mode disable_interrupts() into the default
> implementation of arch_preboot_os() ?

Got no issue with moving disable_interrupts into the default  
implementation of arch_preboot_os()
>
>
>> 			boot_fn(BOOTM_STATE_OS_GO, argc, argv, &images);
>> 			break;
>> 	}
>> @@ -673,6 +681,8 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int  
>> argc, char *argv[])
>> 		return 1;
>> 	}
>>
>> +	arch_preboot();
>> +
>> 	boot_fn(0, argc, argv, &images);
>
> But this would change behaviour here. Eventually to the better?

Not sure if I see how this would be better (or worse for that matter).

- k


More information about the U-Boot mailing list