05 Oct, 2019

1 commit


24 Apr, 2019

2 commits

  • This file should not include header files. They have already been included
    by the time initcall.h is included. Also, document how to enable debugging
    in this file.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • At present if one of the initcalls fails on sandbox the address printing
    is not help, e.g.:

    initcall sequence 0000557678967c80 failed at call 00005576709dfe1f (err=-96)

    This is because U-Boot gets relocated high into memory and the relocation
    offset (gd->reloc_off) does not work correctly for sandbox.

    Add support for finding the base address of the text region (at least on
    Linux) and use that to set the relocation offset. This makes the output
    better:

    initcall sequence 0000560775957c80 failed at call 0000000000048134 (err=-96)

    Then you use can use grep to see which init call failed, e.g.:

    $ grep 0000000000048134 u-boot.map
    stdio_add_devices

    Of course another option is to run it with a debugger such as gdb:

    $ gdb u-boot
    ...
    (gdb) br initcall.h:41
    Breakpoint 1 at 0x4db9d: initcall.h:41. (2 locations)

    Note that two locations are reported, since this function is used in both
    board_init_f() and board_init_r().

    (gdb) r
    Starting program: /tmp/b/sandbox/u-boot
    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

    U-Boot 2018.09-00264-ge0c2ba9814-dirty (Sep 22 2018 - 12:21:46 -0600)

    DRAM: 128 MiB
    MMC:

    Breakpoint 1, initcall_run_list (init_sequence=0x5555559619e0 )
    at /scratch/sglass/cosarm/src/third_party/u-boot/files/include/initcall.h:41
    41 printf("initcall sequence %p failed at call %p (err=%d)\n",
    (gdb) print *init_fnc_ptr
    $1 = (const init_fnc_t) 0x55555559c114
    (gdb)

    Signed-off-by: Simon Glass

    Simon Glass
     

09 Feb, 2019

1 commit

  • The board_r init function was complaining that we are looping through
    an array, calling all our tiny init stubs sequentially via indirect
    function calls (which can't be speculated, so they are slow).

    The solution to that is pretty easy though. All we need to do is inline
    the function that loops through the functions and the compiler will
    automatically convert almost all indirect calls into direct inlined code.

    With this patch, the overall code size drops (by 40 bytes on riscv64)
    and boot time should become measurably faster for every target.

    Signed-off-by: Alexander Graf

    Alexander Graf
     

07 May, 2018

1 commit

  • When U-Boot started using SPDX tags we were among the early adopters and
    there weren't a lot of other examples to borrow from. So we picked the
    area of the file that usually had a full license text and replaced it
    with an appropriate SPDX-License-Identifier: entry. Since then, the
    Linux Kernel has adopted SPDX tags and they place it as the very first
    line in a file (except where shebangs are used, then it's second line)
    and with slightly different comment styles than us.

    In part due to community overlap, in part due to better tag visibility
    and in part for other minor reasons, switch over to that style.

    This commit changes all instances where we have a single declared
    license in the tag as both the before and after are identical in tag
    contents. There's also a few places where I found we did not have a tag
    and have introduced one.

    Signed-off-by: Tom Rini

    Tom Rini
     

06 Apr, 2017

1 commit


28 May, 2014

1 commit

  • Add the ability to display the code offset of an initcall even after it
    is relocated. This makes it much easier to relate initcalls back to the
    U-Boot System.map file.

    Signed-off-by: Simon Glass
    Signed-off-by: Minkyu Kang

    Simon Glass
     

24 Jul, 2013

1 commit


16 Mar, 2013

1 commit