gpt: Fix the protective MBR partition size
PATCH 1/1 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.
--- disk/part_efi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
disk/part_efi.c +1 -1
@@ -240,7 +240,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 ) {
Signature · 1 line
2.2.1
PATCH 1/1 gpt: Fix the protective MBR partition size
(+ Lukasz)
Interesting - I'll defer to Lukasz...
Thanks, Steve
Quoted 29 lines · Maxime Ripard
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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)disk/part_efi.c +1
-1@@ -240,7 +240,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 ) {
PATCH 1/1 gpt: Fix the protective MBR partition size
Hi Steve,
Quoted 3 lines
(+ Lukasz)
Interesting - I'll defer to Lukasz...
Thanks, Steve
Thanks guys for spotting the mistake and sorry for a late reply (holidays time).
I'm glad that this patch was included to v2015.01
Quoted 33 lines · Maxime Ripard
Quoted 31 lines
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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)disk/part_efi.c +1
-2@@ -240,7 +240,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) {
Signature · 5 lines
Best regards, Lukasz Majewski Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
Quoted 11 lines · Maxime Ripard
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]>
Applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20150109/9aa3b759/attachment.pgp>