Skip to content
Snippets Groups Projects
  1. Dec 18, 2024
  2. Dec 17, 2024
  3. Dec 16, 2024
  4. Dec 15, 2024
  5. Dec 12, 2024
    • Tom Rini's avatar
      Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-usb · 88bd5701
      Tom Rini authored
      - USB onboard-hub fix
      88bd5701
    • Tom Rini's avatar
      Merge tag 'xilinx-for-v2025.01-rc5' of https://source.denx.de/u-boot/custodians/u-boot-microblaze · 39adaa54
      Tom Rini authored
      AMD/Xilinx changes for v2025.01-rc5
      
      - Fix reset issue for SOM
      39adaa54
    • Sam Protsenko's avatar
      boot: fdt: Handle already reserved memory in boot_fdt_reserve_region() · 5a6aa7d5
      Sam Protsenko authored
      
      The boot_fdt_add_mem_rsv_regions() function can be called twice, e.g.
      first time during the board init (as a part of LMB init), and then when
      booting the OS with 'booti' command:
      
          lmb_add_region_flags
          lmb_reserve_flags
          boot_fdt_reserve_region
          boot_fdt_add_mem_rsv_regions
                     ^
                     |
                     +-----------------------+
                     | (1)                   | (2)
          lmb_reserve_common        image_setup_linux
          lmb_init                  ...
          initr_lmb                 do_booti
          board_init_r              'booti'
      
      That consequently leads to the attempt of reserving the same memory
      areas (described in the 'reserved-memory' dts node) in LMB. The
      lmb_add_region_flags() returns -EEXIST error code in such cases, but
      boot_fdt_reserve_region() handles all negative error codes as a failure
      to reserve fdt memory region, printing corresponding error messages,
      which are essentially harmless, but misleading. For example, this is the
      output of 'booti' command on E850-96 board:
      
          => booti $loadaddr - $fdtaddr
          ...
          ERROR: reserving fdt memory region failed
                 (addr=bab00000 size=5500000 flags=2)
          ERROR: reserving fdt memory region failed
                 (addr=f0000000 size=200000 flags=4)
          ...
          Starting kernel ...
      
      The mentioned false positive error messages are observed starting with
      commit 1d9aa4a2 ("lmb: Fix the allocation of overlapping memory
      areas with !LMB_NONE"), which removes the check for the already added
      memory regions in lmb_add_region_flags(), making it return -1 for
      !LMB_NONE cases. Another commit 827dee58 ("fdt: lmb: add reserved
      regions as no-overwrite") changes flags used for reserving memory in
      boot_fdt_add_mem_rsv_regions() from LMB_NONE to LMB_NOOVERWRITE. So
      together with the patch mentioned earlier, it makes
      lmb_add_region_flags() return -1 when called from
      boot_fdt_reserve_region().
      
      Since then, the different patch was implemented, returning -EEXIST error
      code in described cases, which is:
      
         lmb: Return -EEXIST in lmb_add_region_flags() if region already added
      
      Handle -EEXIST error code as a normal (successful) case in
      lmb_reserve_flags() and don't print any messages.
      
      Fixes: 1d9aa4a2 ("lmb: Fix the allocation of overlapping memory areas with !LMB_NONE")
      Signed-off-by: default avatarSam Protsenko <semen.protsenko@linaro.org>
      Reviewed-by: default avatarIlias Apalodimas <ilias.apalodimas@linaro.org>
      Tested-by: default avatarMichal Simek <michal.simek@amd.com>
      5a6aa7d5
Loading