[PATCH] disk: part_efi: update partition table entries after write

Heinrich Schuchardt xypron.glpk at gmx.de
Tue Jan 26 16:08:13 CET 2021


On 26.01.21 14:56, Gary Bisson wrote:
> Fixes fastboot issues when switching from mbr to gpt partition tables.
>
> Signed-off-by: Gary Bisson <gary.bisson at boundarydevices.com>
> ---
> Hi,
>
> I hesitated calling this a RFC as I'm not sure everyone will like the
> idea.
>
> Basically the issue encountered was the following:
> - Device with its storage flashed with a MBR partition table
> - Run fastboot to flash a new OS (and new partition table)
> - After flashing a GPT partition table, U-Boot couldn't find any of the
>   partition names from the GPT
>   -> reason is that the partition table entries aren't updated
>   -> so U-Boot still believes it's a MBR table inside and so its parsing
>   fails
>
> This commit adds an update of the table entries inside the
> write_mbr_and_gpt_partitions() function. At first I thought maybe this
> should be added in fastboot file (fb_mmc.c) but couldn't think of a good
> reason why this shouldn't happened in part_efi directly.
>
> Let me know if you have any questions.
>
> Regards,
> Gary
> ---
>  disk/part_efi.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/disk/part_efi.c b/disk/part_efi.c
> index 2f922662e6e..7a24e33d189 100644
> --- a/disk/part_efi.c
> +++ b/disk/part_efi.c
> @@ -867,6 +867,9 @@ int write_mbr_and_gpt_partitions(struct blk_desc *dev_desc, void *buf)
>  		return 1;
>  	}
>
> +	/* Update the partition table entries*/
> +	part_init(dev_desc);
> +
>  	return 0;
>  }
>  #endif
>

This change is for GPT only. Don't we need the same for MBR partition
tables (write_mbr_partitions())?

@Simon:

Essentially this reflashing is similar to changing media. What I am
missing in part_init() is setting a field with a counter to indicate the
media change. The EFI_BLOCK_IO_PROTOCOL has a u32 field media_id. Would
struct blk_desc be the right place to add such a field.

Best regards

Heinrich



More information about the U-Boot mailing list