[PATCH 0/2] efi_loader: provide media ID
AKASHI Takahiro
takahiro.akashi at linaro.org
Fri Sep 16 02:58:05 CEST 2022
On Thu, Sep 15, 2022 at 10:02:40PM +0200, Heinrich Schuchardt wrote:
> The medium a device like 'mmc 0' or 'usb 0' points to may change over
> time. Hence device type and number are not sufficient to identify the
> inserted medium. The same is true for the device path generated for
> such a device.
Well, it depends on how a device path is generated in U-Boot's UEFI
implementation. I believe that a device path represents an "unique path"
to a given device however this device is enumerated.
In this sense, the current dp_fill()/efi_dp_from_part() is not a right
implementation as it relies on device numbers.
Furthermore, a generated device path here is different from one generated
by EDK2 (even if both software are run on the same board).
This is an issue that I used to tackle in
https://lists.denx.de/pipermail/u-boot/2021-November/468216.html
although I have since had no progress.
> This is why the EFI_BLOCK_IO_PROTOCOL provides a field
> MediaId.
>
> Whenever a removable medium is changed or a new block device with a
> previously used device path is created we should provide a different
> MediaID.
>
> This series adds a field media_id to the block device descriptor and fills
> it after probing. The value of the field is then copied to the
> EFI_BLOCK_IO_PROTOCOL.
I'm afraid that your patch doesn't always work as you expect.
When "scsi rescan" or "usb stop; usb start", for instance, is invoked,
all the existing devices and associated blk_desc structures are once freed
and even if nothing is changed, i.e. a device is neither removed nor added,
the exact same structures will be re-created.
With your patch applied, however, a new (and different) "media_id" will be
assigned to an existing device. UEFI User may be notified of "media change".
(To be honest, this is quite unlikely because the current UEFI implementation
doesn't use BLOCK_IO_PROTOCOL internally, say, for file system access.)
-Takahiro Akashi
> With future patches we can refine this in sub-systems like USB, MMC, SCSI
> to indicate media changes
>
> Heinrich Schuchardt (2):
> dm: blk: assign media ID to block devices
> efi_loader: fill media_id from block device descriptor
>
> drivers/block/blk-uclass.c | 16 +++++++++++++++-
> include/blk.h | 11 +++++++++++
> lib/efi_loader/efi_disk.c | 6 +-----
> 3 files changed, 27 insertions(+), 6 deletions(-)
>
> --
> 2.37.2
>
More information about the U-Boot
mailing list