15 Jul, 2019
1 commit
-
this commit is a merge of three patches from imx_v2018.03 as below:
1.
commit dbcf1e3cc079d2f1b3df6c4c9ec3a34d0c05eb4c
Author: Luo Ji
Date: Fri Jun 8 10:31:11 2018 +0800[iot] Support dual bootloader in SPL
Move the A/B slot check to SPL, the A/B slot switch
workflow is just like what we have in libavb_ab.Test: A/B select works fine on imx8m.
2.
commit 71562aae3b8123ccd7503e596e478951568fcd24
Author: Ji Luo
Date: Mon Jan 14 18:28:08 2019 +0800MA-13938 [Android] imx8q: Support dual bootloader feature
Support dual bootloader feature for imx8q which uses the
container format. Move the A/B slot select and verify to
SPL stage, the bootloader rollback index will be stored
at the last 8K bytes of eMMC rpmb storage.Test: Boot and rbindex verify pass on imx8q.
Change-Id: Ic9410a48092cc05de599dd897fc912177e2a1fe1
Signed-off-by: faqiang.zhu
24 May, 2019
1 commit
-
Porting the FSL android fastboot features from imx u-boot v2018.03 to
support all SoCs: imx6/imx7/imx7ulp/imx8/imx8m.The UUU commands like UCmd and ACmd are also added. Users need set
CONFIG_FASTBOOT_UUU_SUPPORT=y to enable the feature.Signed-off-by: Frank Li
Signed-off-by: Ye Li
(cherry picked from commit 65120b06a7f750b9b1a6e0db3d2082cc7088d5a8)
18 Jan, 2019
1 commit
-
Make system_guid const.
Signed-off-by: Heinrich Schuchardt
Reviewed-by: Simon Glass
09 Oct, 2018
1 commit
-
The current name conflicts with the Chrome OS verified boot library, which
prevents it being built. That library uses a string whereas U-Boot uses a
64-bit hex value. Rename this in U-Boot.Signed-off-by: Simon Glass
11 Sep, 2018
1 commit
-
In int-ll64.h, we always use the following typedefs:
typedef unsigned int u32;
typedef unsigned long uintptr_t;
typedef unsigned long long u64;This does not need to match to the compiler's .
Do not include it.The use of PRI* makes the code super-ugly. You can simply use
"l" for printing uintptr_t, "ll" for u64, and no modifier for u32.Signed-off-by: Masahiro Yamada
14 Jun, 2018
1 commit
-
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
Signed-off-by: Alexander Graf
05 Jun, 2018
1 commit
-
In commit e163a931af34 ("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 $partitionsIn 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: Sam Protsenko
Cc: Alejandro Hernandez
Tested-by: Andy Shevchenko
07 May, 2018
1 commit
-
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: Tom Rini
09 Feb, 2018
1 commit
-
config_fallbacks.h has some logic that sets HAVE_BLOCK_DEVICE
based on a list of enabled options. Moving HAVE_BLOCK_DEVICE to
Kconfig allows us to drastically shrink the logic in
config_fallbacks.hSigned-off-by: Adam Ford
[trini: Rename HAVE_BLOCK_DEVICE to CONFIG_BLOCK_DEVICE]
Signed-off-by: Tom Rini
30 Nov, 2017
1 commit
-
use ALLOC_CACHE_ALIGN_BUFFER_PAD for mbr header allocation
in stack to fix alloc issue in is_gpt_valid()this patch fix also issue for GPT partition handling
with blocksize != 512 in set_protective_mbr()Signed-off-by: Patrick Delaunay
06 Nov, 2017
1 commit
-
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: Lukasz Majewski
24 Oct, 2017
1 commit
-
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 34And 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 0Partition 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-aff5c9c495b1And 0x22 = 34 LBA => offset = 0x4400 is accepted as expected
Reviewed-by: Łukasz Majewski
Tested-by: Stephen Warren
Signed-off-by: Patrick Delaunay
16 Oct, 2017
1 commit
-
While this goes somewhat against normal coding style we should ensure
that dev_desc is not NULL before we dereference it in allocation of
legacy_mbr.Reported-by: Coverity (CID: 167292)
Signed-off-by: Tom Rini
04 Oct, 2017
1 commit
-
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:
//
@@@@
-error
+pr_err
(...)
//Signed-off-by: Masahiro Yamada
Reviewed-by: Simon Glass
[trini: Re-run Coccinelle]
Signed-off-by: Tom Rini
20 Sep, 2017
1 commit
-
EFI client programs need the signature information from the partition
table to determine the disk a partition is on, so we need to fill that
in here.Signed-off-by: Peter Jones
[separated from efi_loader part, and fixed build-errors for non-
CONFIG_EFI_PARTITION case]
Signed-off-by: Rob Clark
Signed-off-by: Alexander Graf
03 Sep, 2017
4 commits
-
The current code checks that no partitions overlap with the GPT partition
table using the offset of the first LBA usable for that partition.This works fine, unless you have a partition entry that is further away
than it usually is and you want to create partitions in the gap between the
GPT header and the GPT partition entries, for example to reflash a
bootloader that needs to be set there.Rework the test to something a bit smarter that checks whether a partition
would overlap with either the GPT header or the partition entries, no
matter where it is on the disk.Partitions that do not have a start LBA specified will still start at the
first LBA usable set in the GPT header, to avoid weird behaviours.Signed-off-by: Maxime Ripard
Reviewed-by: Tom Rini -
The gpt_fill_pte will need to access the device block size. Let's pass the
device descriptor as an argument.Signed-off-by: Maxime Ripard
Reviewed-by: Tom Rini -
The start variable is only used inside a loop, and is never affected inside
it, so it's a purely local variable.In the same way the partition size is accessed several times, so we can
store it in a variable.Signed-off-by: Maxime Ripard
Reviewed-by: Tom Rini -
Both the config option and the DT options specify the offset to set the GPT
at in bytes, yet the code treats those values as block numbers.Fix that.
Signed-off-by: Maxime Ripard
Reviewed-by: Tom Rini
Reviewed-by: Philipp Tomsich
04 Aug, 2017
2 commits
-
In order to read the GPT, modify the partition name strings, and then
write out a new GPT, the disk GUID is needed. While there is an
existing accessor for the partition UUIDs, there is none yet for the
disk GUID.Changes since v6: none.
Signed-off-by: Alison Chaiken
-
Changes since v6: none.
Signed-off-by: Alison Chaiken
21 Mar, 2017
1 commit
-
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
Reviewed-by: Simon Glass
[trini: __maybe_unused on config_offset to avoid warning]
Signed-off-by: Tom Rini
18 Mar, 2017
1 commit
-
Change GPT UUID string format from UUID to GUID per specification.
Signed-off-by: Vincent Tinelli
Reviewed-by: Simon Glass
09 Feb, 2017
1 commit
-
On some cases the first 440 bytes of MBR are used to keep an additional
information for ROM boot loader. 'gpt write' command doesn't preserve
that area and makes boot code gone.Preserve boot code area when run 'gpt write' command.
Signed-off-by: Vincent Tinelli
Signed-off-by: Brennan Ashton
Signed-off-by: Andy Shevchenko
Reviewed-by: Simon Glass
28 Jan, 2017
2 commits
-
We convert CONFIG_PARTITION_UUIDS to Kconfig first. But in order to cleanly
update all of the config files we must also update CMD_PART and CMD_GPT to also
be in Kconfig in order to avoid complex logic elsewhere to update all of the
config files.Signed-off-by: Patrick Delaunay
Signed-off-by: Patrick Delaunay
Signed-off-by: Tom Rini -
Signed-off-by: Patrick Delaunay
Signed-off-by: Patrick Delaunay
02 Oct, 2016
1 commit
-
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
06 Aug, 2016
1 commit
-
The calculation of "dev_desc->lba - 34 - 1 - offset" is not correct for
size '-', because both fist_usable_lba and last_usable_lba will remain
34 sectors.We can simply use 0 for size '-' because the part_efi module will decode
the size and auto extend the size to maximum available size.Signed-off-by: Kever Yang
26 Jul, 2016
1 commit
-
This fixes a mismatch between the %zu format and the type used on sandbox.
Signed-off-by: Simon Glass
Reviewed-by: Tom Rini
27 May, 2016
1 commit
-
the last value acceptable value for offset is last_usable_lba + 1
and not last_usable_lba - 1issue found with SDCARD partition commands on u-boot 2015.10
but this part of code don't change1- create GPT partion on all the card
> gpt write mmc 0 name=test,start=0,size=0
> part list mmc 0Partition Map for MMC device 0 -- Partition Type: EFI
Part Start LBA End LBA Name
Attributes
Type GUID
Partition GUID
1 0x00000022 0x003a9fde "test"
attrs: 0x0000000000000000
type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
type: data
guid: b710eb04-45b9-e94a-8d0b-21458d596f54=> Start = 0x22*512 = 0x4400
=> Size = (0x003a9fde-0x22+1) * 512 = 0x753F7A002- try to recreate the same partition with the next command
(block size:512 bytes = 0x200)> gpt write mmc 0 name=test,start=0x4400,size=0x753F7A00
Writing GPT: Partitions layout exceds disk size> gpt write mmc 0 name=test,start=0x4400,size=0x753F7800
Writing GPT: Partitions layout exceds disk size> gpt write mmc 0 name=test,start=0x4400,size=0x753F7600
Writing GPT: success!Partition Map for MMC device 0 -- Partition Type: EFI
Part Start LBA End LBA Name
Attributes
Type GUID
Partition GUID
1 0x00000022 0x003a9fdc "test"
attrs: 0x0000000000000000
type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
type: data
guid: 36ec30ef-7ca4-cd48-97cd-ea9fb95185d0the max LBA when the size is indicated (0x003a9fdc) is lower than
when u-boot compute the max allowed value with size=0 (0x003a9fde)in the code :
/* partition ending lba */
if ((i == parts - 1) && (partitions[i].size == 0))
/* extend the last partition to maximuim */
gpt_e[i].ending_lba = gpt_h->last_usable_lba;
else
gpt_e[i].ending_lba = cpu_to_le64(offset - 1);so offset = gpt_h->last_usable_lba + 1 is acceptable !
but the test (offset >= last_usable_lba) cause the errorEND
Signed-off-by: Patrick Delaunay disk: part_efi: fix check of the max partition size
the last value acceptable value for offset is (last_usable_lba + 1)
and not (last_usable_lba - 1)issue found with SDCARD partition commands on u-boot 2015.10
but this part of code don't change1- I create GPT partion on all the card (start and size undefined)
> gpt write mmc 0 name=test,start=0,size=0
> part list mmc 0Partition Map for MMC device 0 -- Partition Type: EFI
Part Start LBA End LBA Name
Attributes
Type GUID
Partition GUID
1 0x00000022 0x003a9fde "test"
attrs: 0x0000000000000000
type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
type: data
guid: b710eb04-45b9-e94a-8d0b-21458d596f54=> Start = 0x22*512 = 0x4400
=> Size = (0x003a9fde-0x22+1) * 512 = 0x753F7A002- I try to recreate the same partition with the command gpt write
and with start and size values (block size:512 bytes = 0x200)> gpt write mmc 0 name=test,start=0x4400,size=0x753F7A00
Writing GPT: Partitions layout exceds disk size> gpt write mmc 0 name=test,start=0x4400,size=0x753F7800
Writing GPT: Partitions layout exceds disk size> gpt write mmc 0 name=test,start=0x4400,size=0x753F7600
Writing GPT: success!I check the partition created :
> 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 0x003a9fdc "test"
attrs: 0x0000000000000000
type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
type: data
guid: 36ec30ef-7ca4-cd48-97cd-ea9fb95185d0=> but the max LBA when the size is indicated (0x003a9fdc) is lower than
when u-boot compute the max allowed value with size=0 (0x003a9fde)3- in the code, just after my patch, line 446
/* partition ending lba */
if ((i == parts - 1) && (partitions[i].size == 0))
/* extend the last partition to maximuim */
gpt_e[i].ending_lba = gpt_h->last_usable_lba;
else
gpt_e[i].ending_lba = cpu_to_le64(offset - 1);so offset = gpt_h->last_usable_lba + 1 is acceptable !
(it the value used when size is 0)but today the test (offset >= last_usable_lba) cause the error
my patch only solve this issueEND
Signed-off-by: Patrick Delaunay
23 Mar, 2016
2 commits
-
This cannot be NULL since part_get_info() calls this function and requires
it to be non-NULL.Reported-by: Coverity (CID: 138497)
Signed-off-by: Simon Glass
Reviewed-by: Tom Rini -
This cannot be NULL since part_print() calls this function and requires it
to be non-NULL.Reported-by: Coverity (CID: 138498)
Signed-off-by: Simon Glass
Reviewed-by: Tom Rini
15 Mar, 2016
7 commits
-
Rename these functions so that part_ is at the start. This more clearly
identifies these functions as partition functions.Signed-off-by: Simon Glass
-
To ease conversion to driver model, add helper functions which deal with
calling each block device method. With driver model we can reimplement these
functions with the same arguments.Use inline functions to avoid increasing code size on some boards.
Signed-off-by: Simon Glass
Reviewed-by: Bin Meng
Tested-by: Stephen Warren -
This is a device number, and we want to use 'dev' to mean a driver model
device. Rename the member.Signed-off-by: Simon Glass
Reviewed-by: Bin Meng
Tested-by: Stephen Warren -
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 -
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 -
Adjust the cast to avoid a warning when stdint.h is used.
Signed-off-by: Simon Glass
Tested-by: Stephen Warren -
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
15 Jan, 2016
1 commit
-
With format-security errors turned on, GCC picks up the use of sprintf with
a format parameter not being a string literal.Simple uses of sprintf are also converted to use strcpy.
Signed-off-by: Ben Whitten
Acked-by: Wolfgang Denk
Reviewed-by: Tom Rini