]> Git Repo - J-u-boot.git/commitdiff
gpt: Fix the protective MBR partition size
authorMaxime Ripard <[email protected]>
Thu, 8 Jan 2015 11:26:44 +0000 (12:26 +0100)
committerTom Rini <[email protected]>
Thu, 8 Jan 2015 16:00:45 +0000 (11:00 -0500)
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: Maxime Ripard <[email protected]>
disk/part_efi.c

index 338010e148e24c5f2eecc1c0097529e5bd9d878b..5856f9321118da1be38015d4bce89e8e498f1683 100644 (file)
@@ -342,7 +342,7 @@ static int set_protective_mbr(block_dev_desc_t *dev_desc)
        p_mbr->signature = MSDOS_MBR_SIGNATURE;
        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].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 */
        if (dev_desc->block_write(dev_desc->dev, 0, 1, p_mbr) != 1) {
This page took 0.037247 seconds and 4 git commands to generate.