08 Oct, 2018

1 commit

  • Serial init in board_init_f will cost much time, skip it here
    because the serial will be initialized again in board_init_r
    and it's more faster (after cache is enabled). We will miss
    some logs before the serial is ready but it's ok for Android Auto.
    This commit will save about 190ms on imx8qm.

    Test: boot ok for both imx8qm and imx8qxp.

    Change-Id: If6efdc19794aecda862f22b6fec7f7aba2005766
    Signed-off-by: Ji Luo
    Reviewed-by: Ye Li

    Ji Luo
     

28 Jan, 2018

1 commit


25 Jan, 2018

1 commit


24 Jan, 2018

2 commits


12 Jan, 2018

1 commit


08 Dec, 2017

2 commits


16 Sep, 2017

1 commit

  • Once U-Boot relocates itself the existing driver-model timer (if any) is
    no-longer valid until the device is reinitialised. Any use of the device
    may cause a crash. To handle this, set the timer to NULL after relocation.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng

    Simon Glass
     

20 Aug, 2017

1 commit


16 Aug, 2017

1 commit


02 Aug, 2017

1 commit


27 Jul, 2017

1 commit

  • Some platforms have very limited SRAM to run SPL code, so there may
    not be the same amount space for a malloc pool before relocation in
    the SPL stage as the normal U-Boot stage.

    Make SPL and (the full) U-Boot stage use independent SYS_MALLOC_F_LEN,
    so the size of pre-relocation malloc pool can be configured memory
    space independently.

    Signed-off-by: Andy Yan
    Reviewed-by: Tom Rini
    Acked-by: Philipp Tomsich
    Reviewed-by: Philipp Tomsich
    [fixed up commit-message:]
    Signed-off-by: Philipp Tomsich

    Andy Yan
     

26 Jul, 2017

1 commit

  • U-Boot has up until now built with -fpic for the MIPS architecture,
    producing position independent code which uses indirection through a
    global offset table, making relocation fairly straightforward as it
    simply involves patching up GOT entries.

    Using -fpic does however have some downsides. The biggest of these is
    that generated code is bloated in various ways. For example, function
    calls are indirected through the GOT & the t9 register:

    8f998064 lw t9,-32668(gp)
    0320f809 jalr t9

    Without -fpic the call is simply:

    0f803f01 jal be00fc04

    This is more compact & faster (due to the lack of the load & the
    dependency the jump has on its result). It is also easier to read &
    debug because the disassembly shows what function is being called,
    rather than just an offset from gp which would then have to be looked up
    in the ELF to discover the target function.

    Another disadvantage of -fpic is that each function begins with a
    sequence to calculate the value of the gp register, for example:

    3c1c0004 lui gp,0x4
    279c3384 addiu gp,gp,13188
    0399e021 addu gp,gp,t9

    Without using -fpic this sequence no longer appears at the start of each
    function, reducing code size considerably.

    This patch switches U-Boot from building with -fpic to building with
    -fno-pic, in order to gain the benefits described above. The cost of
    this is an extra step during the build process to extract relocation
    data from the ELF & write it into a new .rel section in a compact
    format, plus the added complexity of dealing with multiple types of
    relocation rather than the single type that applied to the GOT. The
    benefit is smaller, cleaner, more debuggable code. The relocate_code()
    function is reimplemented in C to handle the new relocation scheme,
    which also makes it easier to read & debug.

    Taking maltael_defconfig as an example the size of u-boot.bin built
    using the Codescape MIPS 2016.05-06 toolchain (gcc 4.9.2, binutils
    2.24.90) shrinks from 254KiB to 224KiB.

    Signed-off-by: Paul Burton
    Cc: Daniel Schwierzeck
    Cc: u-boot@lists.denx.de
    Reviewed-by: Daniel Schwierzeck
    Tested-by: Daniel Schwierzeck

    Paul Burton
     

11 Jul, 2017

1 commit

  • Runtime U-boot dtb selection is generally a two step process. First step
    is to simply use an initial generic dtb. The second step is to select
    the dtb and perhaps execute additional code ones U-boot knows what board
    it is running on. Embedded_dtb_select handles the second step by allowing
    board specific code to run and perform what ever necessary configuration
    that is needed.

    Signed-off-by: Franklin S Cooper Jr
    Reviewed-by: Tom Rini

    Cooper Jr., Franklin
     

04 Jul, 2017

1 commit

  • There was for long time no activity in the 4xx area.
    We need to go further and convert to Kconfig, but it
    turned out, nobody is interested anymore in 4xx,
    so remove it.

    Signed-off-by: Heiko Schocher

    Heiko Schocher
     

16 Jun, 2017

1 commit


12 Jun, 2017

5 commits

  • relocate_code() calculates the relocation offset wrt. the symbol
    __image_copy_start which happens to have the same value as
    CONFIG_TEXT_BASE on most systems.
    When creating an i.MX boot image with an integrated IVT it is
    convenient to have CONFIG_TEXT_BASE point to the start of the IVT
    that is prepended to the actual code. Thus CONFIG_TEXT_BASE will
    differ from __image_copy_start, while the calculation
    'gd->relocaddr - __image_copy_start' still gives the right relocation
    offset.

    Signed-off-by: Lothar Waßmann

    Lothar Waßmann
     
  • The current implementation makes it look like the 'if (from_spl)' part is
    dead code because these features are not enabled for sandbox. We could
    enable it for sandbox_spl, but this is not done yet (it requires sharing
    memory between SPL and U-Boot proper which is in fact supported).

    It is probably nicer to avoid #ifdef anyway. Change it.

    Signed-off-by: Simon Glass
    Reported-by: Coverity (CID: 163244)
    Fixes: 824bb1b (bootstage: Support SPL)

    Simon Glass
     
  • There was for long time no activity in the 5xx area.
    We need to go further and convert to Kconfig, but it
    turned out, nobody is interested anymore in 5xx,
    so remove it.

    Signed-off-by: Heiko Schocher

    Heiko Schocher
     
  • There was for long time no activity in the 8260 area.
    We need to go further and convert to Kconfig, but it
    turned out, nobody is interested anymore in 8260,
    so remove it.

    Signed-off-by: Heiko Schocher

    Heiko Schocher
     
  • There was for long time no activity in the 8xx area.
    We need to go further and convert to Kconfig, but it
    turned out, nobody is interested anymore in 8xx,
    so remove it (with a heavy heart, knowing that I remove
    here the root of U-Boot).

    Signed-off-by: Heiko Schocher

    Heiko Schocher
     

06 Jun, 2017

5 commits

  • At present bootstage only supports U-Boot proper. But SPL can also consume
    boot time so it is useful to have the record start there.

    Add bootstage support to SPL. Also support stashing the timing information
    when SPL finishes so that it can be picked up and reported by U-Boot
    proper. This provides a full boot time record, excluding only the time
    taken by the boot ROM.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • Driver model is set up ones before relocation and once after. Record the
    time taken in each case.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • At present we don't allow use of bootstage before driver model is running.
    This means we cannot time the init of driver model itself.

    Now that bootstage requires its own board-specific timer, we can move its
    init to earlier in the sequence, both before and after relocation.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • Some boards cannot access pre-relocation data after relocation. Reserve
    space for this and copy it during preparation for relocation.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • At present bootstage uses the data section of the image to store its
    information. There are a few problems with this:

    - It does not work on all boards (e.g. those which run from flash before
    relocation)
    - Allocated strings still point back to the pre-relocation data after
    relocation

    Now that U-Boot has a pre-relocation malloc() we can use this instead,
    with a pointer to the data in global_data. Update bootstage to do this and
    set up an init routine to allocate the memory.

    Now that we have a real init function, we can drop the fake 'reset' record
    and add a normal one instead.

    Note that part of the problem with allocated strings remains. They are
    reallocated but this will only work where pre-relocation memory is
    accessible after relocation.

    Signed-off-by: Simon Glass

    Simon Glass
     

05 Jun, 2017

1 commit


16 May, 2017

1 commit


15 May, 2017

2 commits


13 Apr, 2017

1 commit


07 Apr, 2017

1 commit

  • With d53ecad92f06 some unused interrupt related code was removed.
    However all of these options are currently unused. Rather than migrate
    some of these options to Kconfig we just remove the code in question.

    The only related code changes here are that in some cases we use
    CONFIG_STACKSIZE in non-IRQ related context. In these cases we rename
    and move the value local to the code in question.

    Fixes: d53ecad92f06 ("Merge branch 'master' of git://git.denx.de/u-boot-sunxi")
    Signed-off-by: Tom Rini

    Tom Rini
     

06 Apr, 2017

7 commits