[U-Boot] [PATCH v1] cmd: gpt: backup boot code before writing MBR

Andy Shevchenko andriy.shevchenko at linux.intel.com
Mon Jan 30 13:46:07 CET 2017


From: Vincent Tinelli <vincent.tinelli at intel.com>

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 <vincent.tinelli at intel.com>
Signed-off-by: Brennan Ashton <brn at deako.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko at linux.intel.com>
---
 disk/part_efi.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/disk/part_efi.c b/disk/part_efi.c
index 19243380da..fcb267b42a 100644
--- a/disk/part_efi.c
+++ b/disk/part_efi.c
@@ -324,6 +324,13 @@ static int set_protective_mbr(struct blk_desc *dev_desc)
 		printf("%s: calloc failed!\n", __func__);
 		return -1;
 	}
+
+	/* Read MBR to backup boot code if it exists */
+	if (blk_dread(dev_desc, 0, 1, p_mbr) != 1) {
+		error("** Can't read from device %d **\n", dev_desc->devnum);
+		return -1;
+	}
+
 	/* Append signature */
 	p_mbr->signature = MSDOS_MBR_SIGNATURE;
 	p_mbr->partition_record[0].sys_ind = EFI_PMBR_OSTYPE_EFI_GPT;
-- 
2.11.0



More information about the U-Boot mailing list