Skip to content
Snippets Groups Projects
  1. Feb 02, 2021
    • Simon Glass's avatar
      common: Drop asm/global_data.h from common header · 401d1c4f
      Simon Glass authored and Tom Rini's avatar Tom Rini committed
      
      Move this out of the common header and include it only where needed.  In
      a number of cases this requires adding "struct udevice;" to avoid adding
      another large header or in other cases replacing / adding missing header
      files that had been pulled in, very indirectly.   Finally, we have a few
      cases where we did not need to include <asm/global_data.h> at all, so
      remove that include.
      
      Signed-off-by: Simon Glass's avatarSimon Glass <sjg@chromium.org>
      Signed-off-by: default avatarTom Rini <trini@konsulko.com>
      401d1c4f
  2. Jan 29, 2021
  3. Jan 16, 2021
    • Rasmus Villemoes's avatar
      lib/uuid.c: change prototype of uuid_guid_get_str() · 31ce367c
      Rasmus Villemoes authored and Tom Rini's avatar Tom Rini committed
      
      There's no reason to require an appropriately sized output parameter
      for the string, that's error-prone should the table ever grow an
      element with a longer string. We can just return the const char*
      pointer directly.
      
      Update the only caller accordingly, and get rid of pointless ifdeffery
      in the header so that the compiler always sees a declaration and can
      thus do type-checking, whether or not PARTITION_TYPE_GUID is enabled
      or not.
      
      Signed-off-by: default avatarRasmus Villemoes <rasmus.villemoes@prevas.dk>
      31ce367c
  4. Sep 22, 2020
  5. May 19, 2020
  6. May 18, 2020
  7. Apr 30, 2020
    • Heinrich Schuchardt's avatar
      part: detect EFI system partition · 25801acc
      Heinrich Schuchardt authored
      
      Up to now for MBR and GPT partitions the info field 'bootable' was set to 1
      if either the partition was an EFI system partition or the bootable flag
      was set.
      
      Turn info field 'bootable' into a bit mask with separate bits for bootable
      and EFI system partition.
      
      This will allow us to identify the EFI system partition in the UEFI
      sub-system.
      
      Signed-off-by: Heinrich Schuchardt's avatarHeinrich Schuchardt <xypron.glpk@gmx.de>
      25801acc
  8. Dec 02, 2019
  9. Aug 23, 2019
  10. Jul 16, 2019
    • Heinrich Schuchardt's avatar
      disk: efi: avoid unaligned pointer error · 06e921b1
      Heinrich Schuchardt authored
      
      When building with GCC 9.1 an error occurs:
      
      disk/part_efi.c: In function ‘gpt_verify_partitions’:
      disk/part_efi.c:737:49: error: taking address of packed member of
      ‘struct _gpt_entry’ may result in an unaligned pointer value
      [-Werror=address-of-packed-member]
        737 |   gpt_convert_efi_name_to_char(efi_str, gpt_e[i].partition_name,
            |                                         ~~~~~~~~^~~~~~~~~~~~~~~
      cc1: all warnings being treated as errors
      make[1]: *** [scripts/Makefile.build:279: disk/part_efi.o] Error 1
      make: *** [Makefile:1594: disk] Error 2
      
      Adjust gpt_convert_efi_name_to_char() to accept unaligned strings.
      
      Reported-by: default avatarRamon Fried <rfried.dev@gmail.com>
      Signed-off-by: Heinrich Schuchardt's avatarHeinrich Schuchardt <xypron.glpk@gmx.de>
      06e921b1
  11. Jul 06, 2019
  12. May 02, 2019
    • Eugeniu Rosca's avatar
      disk: efi: Fix memory leak on 'gpt verify' · 716f919d
      Eugeniu Rosca authored and Heinrich Schuchardt's avatar Heinrich Schuchardt committed
      
      Below is what happens on R-Car H3ULCB-KF using clean U-Boot
      v2019.04-00810-g6aebc0d11a10 and r8a7795_ulcb_defconfig:
      
       => ### interrupt autoboot
       => gpt verify mmc 1
       No partition list provided - only basic check
       Verify GPT: success!
       => ### keep calling 'gpt verify mmc 1'
       => ### on 58th call, we are out of memory:
       => gpt verify mmc 1
       alloc_read_gpt_entries: ERROR: Can't allocate 0X4000 bytes for GPT Entries
       GPT: Failed to allocate memory for PTE
       gpt_verify_headers: *** ERROR: Invalid Backup GPT ***
       Verify GPT: error!
      
      This is caused by calling is_gpt_valid() twice (hence allocating pte
      also twice via alloc_read_gpt_entries()) while freeing pte only _once_
      in the caller of gpt_verify_headers(). Fix that by freeing the pte
      allocated and populated for primary GPT _before_ allocating and
      populating the pte for backup GPT. The latter will be freed by the
      caller of gpt_verify_headers().
      
      With the fix applied, the reproduction scenario [1-2] has been run
      hundreds of times in a loop w/o running into OOM.
      
      [1] gpt verify mmc 1
      [2] gpt verify mmc 1 $partitions
      
      Fixes: cef68bf9 ("gpt: part: Definition and declaration of GPT verification functions")
      Signed-off-by: default avatarEugeniu Rosca <erosca@de.adit-jv.com>
      Reviewed-by: Heinrich Schuchardt's avatarHeinrich Schuchardt <xypron.glpk@gmx.de>
      716f919d
    • Eugeniu Rosca's avatar
      disk: efi: Fix memory leak on 'gpt guid' · 1cfe9694
      Eugeniu Rosca authored and Heinrich Schuchardt's avatar Heinrich Schuchardt committed
      
      Below is what happens on R-Car H3ULCB-KF using clean U-Boot
      v2019.04-00810-g6aebc0d11a10 and r8a7795_ulcb_defconfig:
      
       => ### interrupt autoboot
       => gpt guid mmc 1
       21200400-0804-0146-9dcc-a8c51255994f
       success!
       => ### keep calling 'gpt guid mmc 1'
       => ### on 59th call, we are out of memory:
       => gpt guid mmc 1
       alloc_read_gpt_entries: ERROR: Can't allocate 0X4000 bytes for GPT Entries
       GPT: Failed to allocate memory for PTE
       get_disk_guid: *** ERROR: Invalid GPT ***
       alloc_read_gpt_entries: ERROR: Can't allocate 0X4000 bytes for GPT Entries
       GPT: Failed to allocate memory for PTE
       get_disk_guid: *** ERROR: Invalid Backup GPT ***
       error!
      
      After some inspection, it looks like get_disk_guid(), added via v2017.09
      commit 73d6d18b ("GPT: add accessor function for disk GUID"),
      unlike other callers of is_gpt_valid(), doesn't free the memory pointed
      out by 'gpt_entry *gpt_pte'. The latter is allocated by is_gpt_valid()
      via alloc_read_gpt_entries().
      
      With the fix applied, the reproduction scenario has been run hundreds
      of times ('while true; do gpt guid mmc 1; done') w/o running into OOM.
      
      Fixes: 73d6d18b ("GPT: add accessor function for disk GUID")
      Signed-off-by: default avatarEugeniu Rosca <erosca@de.adit-jv.com>
      Reviewed-by: Heinrich Schuchardt's avatarHeinrich Schuchardt <xypron.glpk@gmx.de>
      1cfe9694
  13. Jan 18, 2019
  14. Oct 09, 2018
  15. Sep 11, 2018
  16. Jun 14, 2018
    • Heinrich Schuchardt's avatar
      efi_loader: avoid initializer element is not constant · 44ab2d32
      Heinrich Schuchardt authored
      
      When building with -pedantic the current definition of EFI_GUID() causes
      an error 'initializer element is not constant'.
      
      Currently EFI_GUID() is used both as an anonymous constant and as an
      intializer. A conversion to efi_guid_t is not allowable when using
      EFI_GUID() as an initializer. But it is needed when using it as an
      anonymous constant.
      
      We should not use EFI_GUID() for anything but an initializer. So let's
      introduce a variable where needed and remove the conversion.
      
      Signed-off-by: Heinrich Schuchardt's avatarHeinrich Schuchardt <xypron.glpk@gmx.de>
      Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
      44ab2d32
  17. Jun 05, 2018
    • Sam Protsenko's avatar
      disk: efi: Correct backing up the MBR boot code · 955575c8
      Sam Protsenko authored and Tom Rini's avatar Tom Rini committed
      
      In commit e163a931 ("cmd: gpt: backup boot code before writing MBR")
      there was added the procedure for storing old boot code when doing "gpt
      write". But instead of storing just backup code, the whole MBR was
      stored, and only specific fields were replaced further, keeping
      everything else intact. That's obviously not what we want.
      
      Fix the code to actually store only old boot code and zero out
      everything else. This fixes next testing case:
      
          => mmc write $loadaddr 0x0 0x7b
          => gpt write mmc 1 $partitions
      
      In case when $loadaddr address and further memory contains 0xff, the
      board was bricked (ROM-code probably didn't like partition entries that
      were clobbered with 0xff). With this patch applied, commands above don't
      brick the board.
      
      Signed-off-by: default avatarSam Protsenko <semen.protsenko@linaro.org>
      Cc: Alejandro Hernandez <ajhernandez@ti.com>
      Tested-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
      955575c8
  18. May 07, 2018
    • Tom Rini's avatar
      SPDX: Convert all of our single license tags to Linux Kernel style · 83d290c5
      Tom Rini authored
      
      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: default avatarTom Rini <trini@konsulko.com>
      83d290c5
  19. Feb 09, 2018
  20. Nov 30, 2017
  21. Nov 06, 2017
    • Lukasz Majewski's avatar
      gpt: Use cache aligned buffers for gpt_h and gpt_e · bb021013
      Lukasz Majewski authored and Tom Rini's avatar Tom Rini committed
      
      Before this patch one could receive following errors when executing
      "gpt write" command on machine with cache enabled:
      
      display5 factory > gpt write mmc ${mmcdev} ${partitions}
      Writing GPT:
      CACHE: Misaligned operation at range [4ef8f7f0, 4ef8f9f0]
      CACHE: Misaligned operation at range [4ef8f9f8, 4ef939f8]
      CACHE: Misaligned operation at range [4ef8f9f8, 4ef939f8]
      CACHE: Misaligned operation at range [4ef8f7f0, 4ef8f9f0]
      success!
      
      To alleviate this problem - the calloc()s have been replaced with
      malloc_cache_aligned() and memset().
      
      After those changes the buffers are properly aligned (with both start
      address and size) to SoC cache line.
      
      Signed-off-by: default avatarLukasz Majewski <lukma@denx.de>
      bb021013
  22. Oct 23, 2017
    • Patrick Delaunay's avatar
      disk: efi: correct the overlap check on GPT header and PTE · ae0e0228
      Patrick Delaunay authored and Tom Rini's avatar Tom Rini committed
      
      the partition starting at 0x4400 is refused with overlap error:
        $> gpt write mmc 0 "name=test,start=0x4400,size=0"
        Writing GPT: Partition overlap
        error!
      
      even if the 0x4400 is the first available offset for LBA35 with default
      value:
      - MBR=LBA1
      - GPT header=LBA2
      - PTE= 32 LBAs (128 entry), 3 to 34
      
      And the command to have one partition for all the disk failed also :
        $> gpt write mmc 0 "name=test,size=0"
      
      After the patch :
      
        $> gpt write mmc 0 "name=test,size=0"
        Writing GPT: success!
        $> part list mmc 0
      
        Partition Map for MMC device 0  --   Partition Type: EFI
      
        Part	Start LBA	End LBA		Name
      	Attributes
      	Type GUID
      	Partition GUID
        1	0x00000022	0x01ce9fde	"test"
      	attrs:	0x0000000000000000
      	type:	ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
      	type:	data
      	guid:	b4b84b8a-04e3-4000-0036-aff5c9c495b1
      
      And 0x22 = 34 LBA => offset = 0x4400 is accepted as expected
      
      Reviewed-by: default avatarŁukasz Majewski <lukma@denx.de>
      Tested-by: Stephen Warren's avatarStephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarPatrick Delaunay <patrick.delaunay@st.com>
      ae0e0228
  23. Oct 16, 2017
  24. Oct 04, 2017
    • Masahiro Yamada's avatar
      treewide: replace with error() with pr_err() · 9b643e31
      Masahiro Yamada authored and Tom Rini's avatar Tom Rini committed
      
      U-Boot widely uses error() as a bit noisier variant of printf().
      
      This macro causes name conflict with the following line in
      include/linux/compiler-gcc.h:
      
        # define __compiletime_error(message) __attribute__((error(message)))
      
      This prevents us from using __compiletime_error(), and makes it
      difficult to fully sync BUILD_BUG macros with Linux.  (Notice
      Linux's BUILD_BUG_ON_MSG is implemented by using compiletime_assert().)
      
      Let's convert error() into now treewide-available pr_err().
      
      Done with the help of Coccinelle, excluing tools/ directory.
      
      The semantic patch I used is as follows:
      
      // <smpl>
      @@@@
      -error
      +pr_err
       (...)
      // </smpl>
      
      Signed-off-by: Masahiro Yamada's avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: Simon Glass's avatarSimon Glass <sjg@chromium.org>
      [trini: Re-run Coccinelle]
      Signed-off-by: default avatarTom Rini <trini@konsulko.com>
      9b643e31
  25. Sep 20, 2017
  26. Sep 03, 2017
  27. Aug 04, 2017
  28. Mar 20, 2017
    • Philipp Tomsich's avatar
      part_efi: support padding between the GPT header and partition entries · 02e43537
      Philipp Tomsich authored and Tom Rini's avatar Tom Rini committed
      
      Some architectures require their SPL loader at a fixed address within
      the first 16KB of the disk. To avoid an overlap with the partition
      entries of the EFI partition table, the first safe offset (in bytes,
      from the start of the device) for the entries can be set through
      CONFIG_EFI_PARTITION_ENTRIES_OFF (via Kconfig)
      
      When formatting a device with an EFI partition table, we may need to
      leave a gap between the GPT header (always in LBA 1) and the partition
      entries. The GPT header already contains a field to specify the
      on-disk location, which has so far always been set to LBA 2. With this
      change, a configurable offset will be translated into a LBA address
      indicating where to put the entries.
      
      Now also allows an override via device-tree using a config-node (see
      doc/device-tree-bindings/config.txt for documentation).
      
      Tested (exporting an internal MMC formatted with this) against Linux,
      MacOS X and Windows.
      
      Signed-off-by: Philipp Tomsich's avatarPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
      Reviewed-by: Simon Glass's avatarSimon Glass <sjg@chromium.org>
      [trini: __maybe_unused on config_offset to avoid warning]
      Signed-off-by: default avatarTom Rini <trini@konsulko.com>
      02e43537
  29. Mar 17, 2017
  30. Feb 08, 2017
  31. Jan 28, 2017
Loading