summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Tinelli <vincent.tinelli@intel.com>2017-01-30 15:46:07 +0300
committerTom Rini <trini@konsulko.com>2017-02-08 15:56:29 -0500
commite163a931af34ba06d11b98707b69b8819e353257 (patch)
tree73d9f4cd8ce384cdb0661c85458babce1406d806
parentd726f225f5eabc0efa1ef7006c4a6f840b28b767 (diff)
downloadu-boot-imx-e163a931af34ba06d11b98707b69b8819e353257.zip
u-boot-imx-e163a931af34ba06d11b98707b69b8819e353257.tar.gz
u-boot-imx-e163a931af34ba06d11b98707b69b8819e353257.tar.bz2
cmd: gpt: backup boot code before writing MBR
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@intel.com> Signed-off-by: Brennan Ashton <brn@deako.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r--disk/part_efi.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/disk/part_efi.c b/disk/part_efi.c
index b5928e5..893cbbd 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;