[U-Boot] [PATCH 16/22] x86: board_f: Adjust x86 boot order for performance
Bin Meng
bmeng.cn at gmail.com
Sun Jan 4 04:26:48 CET 2015
Hi Simon,
On Fri, Jan 2, 2015 at 6:23 AM, Simon Glass <sjg at chromium.org> wrote:
> Hi Bin,
>
> On 30 December 2014 at 22:51, Bin Meng <bmeng.cn at gmail.com> wrote:
>>
>> Hi Simon,
>>
>> On Sun, Dec 28, 2014 at 10:20 AM, Simon Glass <sjg at chromium.org> wrote:
>> > For bare platforms we turn off ROM-caching before calling board_init_f_r()
>> > It is then very slow to copy U-Boot from ROM to RAM. So adjust the order so
>> > that the copying happens before we turn off ROM-caching.
>> >
>> > Signed-off-by: Simon Glass <sjg at chromium.org>
>> > ---
>> >
>> > common/board_f.c | 8 +++++---
>> > 1 file changed, 5 insertions(+), 3 deletions(-)
>> >
>> > diff --git a/common/board_f.c b/common/board_f.c
>> > index 98c9c72..1b65575 100644
>> > --- a/common/board_f.c
>> > +++ b/common/board_f.c
>> > @@ -983,6 +983,11 @@ static init_fnc_t init_sequence_f[] = {
>> > INIT_FUNC_WATCHDOG_RESET
>> > reloc_fdt,
>> > setup_reloc,
>> > +#ifdef CONFIG_X86
>> > + copy_uboot_to_ram,
>> > + clear_bss,
>> > + do_elf_reloc_fixups,
>> > +#endif
>> > #if !defined(CONFIG_ARM) && !defined(CONFIG_SANDBOX)
>> > jump_to_copy,
>> > #endif
>> > @@ -1042,9 +1047,6 @@ void board_init_f(ulong boot_flags)
>> > */
>> > static init_fnc_t init_sequence_f_r[] = {
>> > init_cache_f_r,
>> > - copy_uboot_to_ram,
>> > - clear_bss,
>> > - do_elf_reloc_fixups,
>> >
>> > NULL,
>> > };
>> > --
>>
>> I don't understand. Isn't the init_cache_f_r() which turns on the cache?
>>
>
> Yes it turns on the cache, but turns off the ROM cache (they are
> different things). So this ordering is much faster. I think I might
> have more tuning to do though.
>
Got it. Since we moved these 3 routines from init_sequence_f_r[] to
init_sequence_f[], how about we remove the whole init_sequence_f_r[]
completely? If not possible, the comment block above
init_sequence_f_r[] needs to be fixed?
*
* The '_f_r' sequence must, as a minimum, copy U-Boot to RAM (if
* supported). It _should_, if possible, copy global data to RAM and
* initialise the CPU caches (to speed up the relocation process)
*
* NOTE: At present only x86 uses this route, but it is intended that
* all archs will move to this when generic relocation is implemented.
*/
So looks that we should either drop this _f_r stage, or make other
arch use this _f_r?
Regards,
Bin
More information about the U-Boot
mailing list