Skip to content

arm: reduce .bss section clear time

Stefan Roese u-boot 1 version New

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest0 of 3 patches 0 repliesNew

Patches in v1 No applies recorded yet

None of the 3 patches the cover letter announces are in this archive.

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [U-Boot] [PATCH 0/3] arm: reduce .bss section clear time

Hi Przemyslaw,

Quoted 25 lines · Przemyslaw Marczak

This patchset reduces the boot time for ARM architecture, Exynos boards, and boards with DFU enabled(ARM).

For tested Trats2 device, this was done in three steps.

First was enable the arch memcpy and memset.
The second step was enable memset for .bss clear.
The third step for reduce this operation is to keep .bss section small as possible.

The .bss section will grow if we have a lot of static variables. This section is cleared before jump to the relocated U-Boot, and it's done word by word. To reduce the time for this step, we can enable arch memset, which uses multiple ARM registers.

For configs with DFU enabled, we can find the dfu buffer in this section, which has at least 8MB (32MB for trats2). This is a lot of useless data, which is not required for standard boot. So this buffer should be dynamic allocated.

Przemyslaw Marczak (3):
exynos: config: enable arch memcpy and arch memset
arm: relocation: clear .bss section with arch memset if defined
dfu: mmc: file buffer: remove static allocation

Quoted 4 lines
  arch/arm/lib/crt0.S             | 10 +++++++++-
  drivers/dfu/dfu_mmc.c           | 25 ++++++++++++++++++++++---
  include/configs/exynos-common.h |  3 +++
  3 files changed, 34 insertions(+), 4 deletions(-)

Looking at the commit messages of this patchset I can conclude that your overall boot time reduction is:

from ~1527ms
to ~464ms

This is amazing! Congrats. :)

We really should in general make more use of the optimized functions and take care that the buffers (e.g. the DFU buffer in this case) are used in a sane way.

Thanks,
Stefan