From: Maxime Ripard Date: Thu, 8 Jan 2015 11:26:44 +0000 (+0100) Subject: gpt: Fix the protective MBR partition size X-Git-Tag: v2015.01~26 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=b349abbfe95972ee7770d8ffef0eaf45cc84f419;p=u-boot 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: Maxime Ripard --- diff --git a/disk/part_efi.c b/disk/part_efi.c index 338010e148..5856f93211 100644 --- a/disk/part_efi.c +++ b/disk/part_efi.c @@ -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) {