Skip to content
Snippets Groups Projects
Commit b349abbf authored by Maxime Ripard's avatar Maxime Ripard Committed by Tom Rini
Browse files

gpt: Fix the protective MBR partition size


According to the UEFI Spec (Table 16, section 5.2.3 of the version 2.4 Errata
B), the protective MBR partition record size must be set to the size of the
disk minus one, in LBAs.

However, the current code was setting the size as the total number of LBAs on
the disk, resulting in an off-by-one error.

This confused the AM335x ROM code, and will probably confuse other tools as
well.

Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
parent b6b1b445
No related branches found
No related tags found
No related merge requests found
...@@ -342,7 +342,7 @@ static int set_protective_mbr(block_dev_desc_t *dev_desc) ...@@ -342,7 +342,7 @@ static int set_protective_mbr(block_dev_desc_t *dev_desc)
p_mbr->signature = MSDOS_MBR_SIGNATURE; p_mbr->signature = MSDOS_MBR_SIGNATURE;
p_mbr->partition_record[0].sys_ind = EFI_PMBR_OSTYPE_EFI_GPT; p_mbr->partition_record[0].sys_ind = EFI_PMBR_OSTYPE_EFI_GPT;
p_mbr->partition_record[0].start_sect = 1; p_mbr->partition_record[0].start_sect = 1;
p_mbr->partition_record[0].nr_sects = (u32) dev_desc->lba; p_mbr->partition_record[0].nr_sects = (u32) dev_desc->lba - 1;
/* Write MBR sector to the MMC device */ /* Write MBR sector to the MMC device */
if (dev_desc->block_write(dev_desc->dev, 0, 1, p_mbr) != 1) { if (dev_desc->block_write(dev_desc->dev, 0, 1, p_mbr) != 1) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment