Skip to content
Snippets Groups Projects
  1. Feb 19, 2014
    • Masahiro Yamada's avatar
      kbuild: use Linux Kernel build scripts · 6825a95b
      Masahiro Yamada authored
      
      Now we are ready to switch over to real Kbuild.
      
      This commit disables temporary scripts:
        scripts/{Makefile.build.tmp, Makefile.host.tmp}
      and enables real Kbuild scripts:
        scripts/{Makefile.build,Makefile.host,Makefile.lib}.
      
      This switch is triggered by the line in scripts/Kbuild.include
        -build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build.tmp obj
        +build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
      
      We need to adjust some build scripts for U-Boot.
      But smaller amount of modification is preferable.
      
      Additionally, we need to fix compiler flags which are
      locally added or removed.
      
      In Kbuild, it is not allowed to change CFLAGS locally.
      Instead, ccflags-y, asflags-y, cppflags-y,
      CFLAGS_$(basetarget).o, CFLAGS_REMOVE_$(basetarget).o
      are prepared for that purpose.
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.m@jp.panasonic.com>
      Tested-by: default avatarGerhard Sittig <gsi@denx.de>
      6825a95b
  2. Jan 09, 2014
  3. Oct 31, 2013
  4. Oct 14, 2013
  5. Sep 20, 2013
    • Mark Langsdorf's avatar
      part_efi: make sure the gpt_pte is freed · 6d2ee5a3
      Mark Langsdorf authored
      
      the gpt_pte wasn't being freed if it was checked against an invalid
      partition. The resulting memory leakage could make it impossible
      to repeatedly attempt to load non-existent files in a script.
      
      Also, downgrade the message for not finding an invalid partition
      from a printf() to a debug() so as to minimize message spam in
      perfectly normal situations.
      
      Signed-off-by: default avatarMark Langsdorf <mark.langsdorf@calxeda.com>
      6d2ee5a3
  6. Jul 24, 2013
  7. Jul 22, 2013
    • Lan Yixun (dlan)'s avatar
      fs/ext4: fix log2blksz un-initialized error, by cacaulating its value from blksz · 50ffc3b6
      Lan Yixun (dlan) authored
      The problem here is that uboot can't mount ext4 filesystem with
      commit "50ce4c07" applied. We use hard-coded "SECTOR_SIZE"(512)
      before this commit, now we introduce (block_dev_desc_t *)->log2blksz
      to replace this macro. And after we calling do_ls()->fs_set_blk_dev(),
      the variable log2blksz is not initialized, which it's not correct.
      
      And this patch try to solve the problem by caculating the value of
      log2blksz from variable blksz.
      50ffc3b6
  8. Jul 15, 2013
    • Frederic Leroy's avatar
      Fix ext2/ext4 filesystem accesses beyond 2TiB · 04735e9c
      Frederic Leroy authored
      
      With CONFIG_SYS_64BIT_LBA, lbaint_t gets defined as a 64-bit type,
      which is required to represent block numbers for storage devices that
      exceed 2TiB (the block size usually is 512B), e.g. recent hard drives
      
      We now use lbaint_t for partition offset to reflect the lbaint_t change,
      and access partitions beyond or crossing the 2.1TiB limit.
      This required changes to signature of ext4fs_devread(), and type of all
      variables relatives to block sector.
      
      ext2/ext4 fs uses logical block represented by a 32 bit value. Logical
      block is a multiple of device block sector. To avoid overflow problem
      when calling ext4fs_devread(), we need to cast the sector parameter.
      
      Signed-off-by: default avatarFrédéric Leroy <fredo@starox.org>
      04735e9c
  9. Jun 04, 2013
    • Marek Vasut's avatar
      disk: Fix possible out-of-bounds access in part_efi.c · 67cd4a63
      Marek Vasut authored
      
      Make sure to never access beyond bounds of either EFI partition name
      or DOS partition name. This situation is happening:
      
      part.h:     disk_partition_t->name is 32-byte long
      part_efi.h: gpt_entry->partition_name is 36-bytes long
      
      The loop in part_efi.c copies over 36 bytes and thus accesses beyond
      the disk_partition_t->name .
      
      Fix this by picking the shortest of source and destination arrays and
      make sure the destination array is cleared so the trailing bytes are
      zeroed-out and don't cause issues with string manipulation.
      
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Tom Rini <trini@ti.com>
      Cc: Simon Glass <sjg@chromium.org>
      67cd4a63
  10. May 01, 2013
    • Egbert Eich's avatar
      disk/iso: Add Support for block sizes > 512 byte to ISO partition support · d7ea4d4d
      Egbert Eich authored
      
      For ISO we check the block size of the device if this is != the CD sector
      size we assume that the device has no ISO partition.
      
      Signed-off-by: default avatarEgbert Eich <eich@suse.com>
      d7ea4d4d
    • Egbert Eich's avatar
      disk/gpt: Fix GPT partition handling for blocksize != 512 · ae1768a7
      Egbert Eich authored
      
      Disks beyond 2T in size use blocksizes of 4096 bytes. However a lot of
      code in u-boot  still assumes a 512 byte blocksize.
      This patch fixes the handling of GPTs.
      
      Signed-off-by: default avatarEgbert Eich <eich@suse.com>
      ae1768a7
    • Egbert Eich's avatar
      disk/part_dos: check harder for partition table · 9d956e0f
      Egbert Eich authored
      
      Devices that used to have a whole disk FAT filesystem but got then
      partitioned will most likely still have a FAT or FAT32 signature
      in the first sector as this sector does not get overwritten by
      a partitioning tool (otherwise the tool would risk to kill the mbr).
      
      The current partition search algorithm will erronously detects such
      a device as a raw FAT device.
      
      Instead of looking for the FAT or FAT32 signatures immediately we
      use the same algorithm as used by the Linux kernel and first check
      for a valid boot indicator flag on each of the 4 partitions.
      If the value of this flag is invalid for the first entry we then
      do the raw partition check.
      If the flag for any higher partition is wrong we assume the device
      is neiter a MBR nor PBR device.
      
      Signed-off-by: default avatarEgbert Eich <eich@suse.com>
      9d956e0f
  11. Apr 02, 2013
  12. Mar 14, 2013
  13. Mar 04, 2013
  14. Dec 13, 2012
  15. Dec 06, 2012
  16. Oct 22, 2012
  17. Oct 19, 2012
  18. Oct 17, 2012
  19. Oct 08, 2012
    • Stephen Warren's avatar
      disk: part_dos: don't claim whole-disk FAT filesystems · d1efb644
      Stephen Warren authored
      
      Logically, a disk that contains a raw FAT filesystem does not in fact
      have a partition table. However, test_part_dos() was claiming that such
      disks did in fact have a DOS-style partition table. This caused
      get_device_and_partition() not to return a whole-disk disk_partition_t,
      since part_type != PART_TYPE_UNKNOWN.
      
      part_dos.c's print_partition_extended() detected the raw FAT filesystem
      condition and printed a fake partition table that encompassed the whole
      disk.
      
      However, part_dos.c's get_partition_info_extended() did not return any
      valid partitions in this case. This combination caused
      get_device_and_partition() not to find any valid partitions, and hence
      to return an error.
      
      Fix test_part_dos() not to claim that raw FAT filesystems are DOS
      partition tables. In turn, this causes get_device_and_partition() to
      return a whole-disk disk_partition_t, and hence the following commands
      work:
      
      fatls mmc 0 /
      fatls mmc 0:auto /
      
      An alternative would be to modify print_partition_extended() to detect
      raw FAT filesystems, just like print_partition_extended() does, and to
      return a fake partition in this case. However, this seems logically
      incorrect, and also duplicates code, since get_device_and_partition()
      falls back to returning a whole-disk partition when there is no partition
      table on the device.
      
      Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
      d1efb644
  20. Sep 28, 2012
  21. Sep 25, 2012
    • Stephen Warren's avatar
      disk: part_msdos: parse and store partition UUID · d27b5f93
      Stephen Warren authored
      
      The MSDOS/MBR partition table includes a 32-bit unique ID, often referred
      to as the NT disk signature. When combined with a partition number within
      the table, this can form a unique ID similar in concept to EFI/GPT's
      partition UUID.
      
      This patch generates UUIDs in the format 0002dd75-01, which matches the
      format expected by the Linux kernel.
      
      Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
      d27b5f93
    • Stephen Warren's avatar
      disk: part_efi: parse and store partition UUID · 894bfbbf
      Stephen Warren authored
      
      Each EFI partition table entry contains a UUID. Extend U-Boot's struct
      disk_partition to be able to store this information, and modify
      get_partition_info_efi() to fill it in.
      
      The implementation of uuid_string() was derived from the Linux kernel,
      tag v3.6-rc4 file lib/vsprintf.c function uuid_string().
      
      Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
      894bfbbf
    • Stephen Warren's avatar
      disk: part_efi: range-check partition number · c04d68c6
      Stephen Warren authored
      
      Enhance get_partition_info_efi() to range-check the partition number.
      This prevents invalid partitions being accessed, and prevents access
      beyond the end of the gpt_pte[] array.
      
      Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
      c04d68c6
    • Stephen Warren's avatar
      disk: get_device_and_partition() "auto" partition and cleanup · 10a37fd7
      Stephen Warren authored
      
      Rework get_device_and_partition() to:
      a) Implement a new partition ID of "auto", which requests that U-Boot
         search for the first "bootable" partition, and fall back to the first
         valid partition if none is found. This way, users don't need to
         specify an explicit partition in their commands.
      b) Make use of get_device().
      c) Add parameter to indicate whether returning a whole device is
         acceptable, or whether a partition is mandatory.
      d) Make error-checking of the user's device-/partition-specification
         more complete. In particular, if strtoul() doesn't convert all
         characters, it's an error rather than just ignored.
      
      The resultant device/partition returned by the function will be as
      follows, based on whether the disk has a partition table (ptable) or not,
      and whether the calling command allows the whole device to be returned
      or not.
      
      (D and P are integers, P >= 1)
      
      D
      D:
        No ptable:
          !allow_whole_dev: error
          allow_whole_dev: device D
        ptable:
          device D partition 1
      D:0
        !allow_whole_dev: error
        allow_whole_dev: device D
      D:P
        No ptable: error
        ptable: device D partition P
      D:auto
        No ptable:
          !allow_whole_dev: error
          allow_whole_dev: device D
        ptable:
          first partition in device D with bootable flag set.
          If none, first valid paratition in device D.
      
      Note: In order to review this patch, it's probably easiest to simply
      look at the file contents post-application, rather than reading the
      patch itself.
      
      Signed-off-by: default avatarRob Herring <rob.herring@calxeda.com>
      [swarren: Rob implemented scanning for bootable partitions. I fixed a
      couple of issues there, switched the syntax to ":auto", added the
      error-checking rework, and ":0" syntax for the whole device]
      Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
      10a37fd7
    • Stephen Warren's avatar
      disk: introduce get_device() · 2023e608
      Stephen Warren authored
      
      This patch introduces function get_device(). This looks up a
      block_dev_desc_t from an interface name (e.g. mmc) and device number
      (e.g. 0). This function is essentially the non-partition-specific
      prefix of get_device_and_partition().
      
      Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
      2023e608
    • Rob Herring's avatar
      disk/part: introduce get_device_and_partition · 99d2c205
      Rob Herring authored
      
      All block device related commands (scsiboot, fatload, ext2ls, etc.) have
      simliar duplicated device and partition parsing and selection code. This
      adds a common function to replace various implementations.
      
      The new function has an enhancement over current versions. If no device
      or partition is specified on the command line, the bootdevice env variable
      will be used (scsiboot does this).
      
      Signed-off-by: default avatarRob Herring <rob.herring@calxeda.com>
      99d2c205
    • Rob Herring's avatar
      disk/part: check bootable flag for DOS partitions · 40e0e568
      Rob Herring authored
      
      Determine which partitions are bootable/active. In the partition listing,
      print "Boot" for partitions with the bootable/active flag set.
      
      Signed-off-by: default avatarRob Herring <rob.herring@calxeda.com>
      40e0e568
Loading