02 Oct, 2016

3 commits

  • In both DOS and ISO partition tables the same code to create partition name
    like "hda1" was repeated.

    Code moved to into a new function part_set_generic_name() in part.c and optimized.
    Added recognition of MMC and SD types, name is like "mmcsda1".

    Signed-off-by: Petr Kulhavy
    Reviewed-by: Tom Rini
    Acked-by: Steve Rae
    Reviewed-by: Simon Glass

    Petr Kulhavy
     
  • Add special target "mbr" (otherwise configurable via CONFIG_FASTBOOT_MBR_NAME)
    to write MBR partition table.
    Partitions are now searched using the generic function which finds any
    partiiton by name. For MBR the partition names hda1, sda1, etc. are used.

    Signed-off-by: Petr Kulhavy
    Reviewed-by: Tom Rini
    Acked-by: Steve Rae
    Reviewed-by: Simon Glass

    Petr Kulhavy
     
  • So far partition search by name has been supported only on the EFI partition
    table. This patch extends the search to all partition tables.

    Rename part_get_info_efi_by_name() to part_get_info_by_name(), move it from
    part_efi.c into part.c and make it a generic function which traverses all part
    drivers and searches all partitions (in the order given by the linked list).

    For this a new variable struct part_driver.max_entries is added, which limits
    the number of partitions searched. For EFI this was GPT_ENTRY_NUMBERS.
    Similarly the limit is defined for DOS, ISO, MAC and AMIGA partition tables.

    Signed-off-by: Petr Kulhavy
    Reviewed-by: Tom Rini
    Acked-by: Steve Rae

    Petr Kulhavy
     

17 May, 2016

9 commits


12 Apr, 2016

1 commit

  • The patch "dm: part: Convert partition API use to linker lists"
    (sha1: 96e5b03c8ab749b6547f6a3ceb4d4b9f274211aa) is adding new
    dependency for enabling SPL_EXT_SUPPORT to be able to get
    information about DOS partition.
    get_info is also required for FAT support only which is used on Xilinx
    Zynq boards.

    Reported-by: Nathan Rossi
    Signed-off-by: Michal Simek
    Reviewed-by: Tom Rini
    Reviewed-by: Simon Glass

    Michal Simek
     

16 Mar, 2016

1 commit

  • We have a pretty nice and generic interface to ask for a specific block
    device. However, that one is still based around the magic notion that
    we know the driver name.

    In order to be able to write fully generic disk access code, expose the
    currently internal list to other source files so that they can scan through
    all available block drivers.

    Signed-off-by: Alexander Graf
    Reviewed-by: Simon Glass
    Tested-by: Simon Glass

    Alexander Graf
     

15 Mar, 2016

9 commits

  • Rename three partition functions so that they start with part_. This makes
    it clear what they relate to.

    Signed-off-by: Simon Glass
    Tested-by: Stephen Warren

    Simon Glass
     
  • We can use linker lists instead of explicitly declaring each function.
    This makes the code shorter by avoiding switch() statements and lots of
    header file declarations.

    While this does clean up the code it introduces a few code issues with SPL.
    SPL never needs to print partition information since this all happens from
    commands. SPL mostly doesn't need to obtain information about a partition
    either, except in a few cases. Add these cases so that the code will be
    dropped from each partition driver when not needed. This avoids code bloat.

    I think this is still a win, since it is not a bad thing to be explicit
    about which features are used in SPL. But others may like to weigh in.

    Signed-off-by: Simon Glass
    Reviewed-by: Tom Rini
    Tested-by: Stephen Warren

    Simon Glass
     
  • Rename this function to blk_get_device_part_str(). This is a better name
    because it makes it clear that the function returns a block device and
    parses a string.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng
    Tested-by: Stephen Warren

    Simon Glass
     
  • The current name is too generic. The function returns a block device based
    on a provided string. Rename it to aid searching and make its purpose
    clearer. Also add a few comments.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng
    Tested-by: Stephen Warren

    Simon Glass
     
  • The current name is too generic. Add a 'blk_' prefix to aid searching and
    make its purpose clearer.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng
    Tested-by: Stephen Warren

    Simon Glass
     
  • The block interface is not well documented in the code. Pick two important
    functions and add comments.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng
    Tested-by: Stephen Warren

    Simon Glass
     
  • At present block devices are tied up with partitions. But not all block
    devices have partitions within them. They are in fact separate concepts.

    Create a separate blk.h header file for block devices.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng
    Tested-by: Stephen Warren

    Simon Glass
     
  • We should not include in header files. Each C file should include
    it if needed.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng
    Tested-by: Stephen Warren

    Simon Glass
     
  • Use 'struct' instead of a typdef. Also since 'struct block_dev_desc' is long
    and causes 80-column violations, rename it to struct blk_desc.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng
    Tested-by: Stephen Warren

    Simon Glass
     

25 Jan, 2016

1 commit


14 Jan, 2016

2 commits

  • This will allow us to have multiple block device structs each referring
    to the same eMMC device, yet different HW partitions.

    For now, there is still a single block device per eMMC device. As before,
    this block device always accesses whichever HW partition was most recently
    selected. Clients wishing to make use of multiple block devices referring
    to different HW partitions can simply take a copy of this block device
    once it points at the correct HW partition, and use each one as they wish.
    This feature will be used by the next patch.

    In the future, perhaps get_device() could be enhanced to return a
    dynamically allocated block device struct, to avoid the client needing to
    copy it in order to maintain multiple block devices. However, this would
    require all users to be updated to free those block device structs at some
    point, which is rather a large change.

    Most callers of mmc_switch_part() wish to permanently switch the default
    MMC block device's HW partition. Enhance mmc_switch_part() so that it does
    this. This removes the need for callers to do this. However,
    common/env_mmc.c needs to save and restore the current HW partition. Make
    it do this more explicitly.

    Replace use of mmc_switch_part() with mmc_select_hwpart() in order to
    remove duplicate code that skips the call if that HW partition is already
    selected.

    Signed-off-by: Stephen Warren
    Reviewed-by: Tom Rini

    Stephen Warren
     
  • This will allow the implementation to make use of data in the block_dev
    structure beyond the base device number. This will be useful so that eMMC
    block devices can encompass the HW partition ID rather than treating this
    out-of-band. Equally, the existence of the priv field is crying out for
    this patch to exist.

    Signed-off-by: Stephen Warren
    Reviewed-by: Tom Rini

    Stephen Warren
     

24 Nov, 2015

1 commit

  • This commit provides definition and declaration of GPT verification
    functions - namely gpt_verify_headers() and gpt_verify_partitions().
    The former is used to only check CRC32 of GPT's header and PTEs.
    The latter examines each partition entry and compare attributes such as:
    name, start offset and size with ones provided at '$partitions' env
    variable.

    Signed-off-by: Lukasz Majewski
    Reviewed-by: Tom Rini
    Reviewed-by: Przemyslaw Marczak

    Lukasz Majewski
     

13 Nov, 2015

1 commit

  • code under flag CONFIG_PARTITION_TYPE_GUID
    add parameter "type" to select partition type guid

    example of use with gpt command :

    partitions = uuid_disk=${uuid_gpt_disk}; \
    name=boot,size=0x6bc00,uuid=${uuid_gpt_boot}; \
    name=root,size=0x7538ba00,uuid=${uuid_gpt_root}, \
    type=0fc63daf-8483-4772-8e79-3d69d8477de4;

    gpt write mmc 0 $partitions

    Signed-off-by: Patrick Delaunay

    Patrick Delaunay
     

18 Dec, 2014

1 commit

  • Implement a feature to allow fastboot to write the downloaded image
    to the space reserved for the Protective MBR and the Primary GUID
    Partition Table.
    Additionally, prepare and write the Backup GUID Partition Table.

    Signed-off-by: Steve Rae
    Tested-by: Lukasz Majewski
    [Test HW: Exynos4412 - Trats2]

    Steve Rae
     

06 Jun, 2014

1 commit


23 May, 2014

1 commit


05 May, 2014

1 commit

  • Implementation made use of types defined in common.h, even though it
    wasn't #included. It worked in circumstances when .c files included
    every needed header (all).

    Signed-off-by: Mateusz Zalega
    Cc: Tom Rini
    Cc: Minkyu Kang

    Mateusz Zalega
     

09 Jan, 2014

1 commit

  • Provide a way to use any host file or device as a block device in U-Boot.
    This can be used to provide filesystem access within U-Boot to an ext2
    image file on the host, for example.

    The support is plumbed into the filesystem and partition interfaces.

    We don't want to print a message in the driver every time we find a missing
    device. Pass the information back to the caller where a message can be printed
    if desired.

    Signed-off-by: Henrik Nordström
    Signed-off-by: Simon Glass
    - Removed change to part.c get_device_and_partition()

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

    Henrik Nordström
     

15 Oct, 2013

1 commit


24 Jul, 2013

1 commit


16 Jul, 2013

1 commit

  • 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: Frédéric Leroy

    Frederic Leroy
     

26 Jun, 2013

1 commit

  • 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.

    For some obscure reason, the current U-Boot code uses lbaint_t for the
    number of blocks to read (a rather optimistic estimation of how RAM
    sizes will evolve), but not for the starting address. Trying to access
    blocks beyond the 2TiB boundary will simply wrap around and read a
    block within the 0..2TiB range.

    We now use lbaint_t for block start addresses, too. This required
    changes to all block drivers as the signature of block_read(),
    block_write() and block_erase() in block_dev_desc_t changed.

    Signed-off-by: Sascha Silbe

    Sascha Silbe
     

02 May, 2013

2 commits


14 Dec, 2012

1 commit