public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: AKASHI Takahiro <takahiro.akashi@linaro.org>
To: u-boot@lists.denx.de
Subject: [PATCH] disk: part_efi: update partition table entries after write
Date: Wed, 27 Jan 2021 15:33:52 +0900	[thread overview]
Message-ID: <20210127063352.GA39168@laputa> (raw)
In-Reply-To: <a7be29d7-4534-a059-fd85-2300223cb4bd@gmx.de>

On Tue, Jan 26, 2021 at 04:08:13PM +0100, Heinrich Schuchardt wrote:
> 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@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.

As far as "efi_loader" is concerned, none of partitions on the media,
either in case of repartitioning or changing media, will no longer be
recognized as a "efi disk" after efi subsystem is initialized.
All we can and have to do is to just reboot the system.

I think we should take one step further to fixing the issue along with
this patch. I have posted a couple of proposals in the past, for example,
see [1].

[1] https://lists.denx.de/pipermail/u-boot/2019-January/356499.html

-Takahiro Akashi

> Best regards
> 
> Heinrich
> 

  parent reply	other threads:[~2021-01-27  6:33 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-26 13:56 [PATCH] disk: part_efi: update partition table entries after write Gary Bisson
2021-01-26 15:08 ` Heinrich Schuchardt
2021-01-26 15:16   ` Gary Bisson
2021-01-27  6:33   ` AKASHI Takahiro [this message]
2021-01-27 18:50     ` Heinrich Schuchardt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210127063352.GA39168@laputa \
    --to=takahiro.akashi@linaro.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox