[PATCH v5 00/12] efi_loader: more tightly integrate UEFI disks to driver model

AKASHI Takahiro takahiro.akashi at linaro.org
Tue Apr 26 16:44:18 CEST 2022


On Tue, Apr 26, 2022 at 03:57:26PM +0200, Heinrich Schuchardt wrote:
> On 4/26/22 01:44, AKASHI Takahiro wrote:
> > On Mon, Apr 25, 2022 at 10:43:44PM +0200, Heinrich Schuchardt wrote:
> > > On 4/19/22 03:05, AKASHI Takahiro wrote:
> > > > With this patch set[1] applied, UEFI subsystem maintains a list of its
> > > > disk objects dynamically at runtime based on block device's probing.
> > > > (See "issues" and "prerequisite" below.)
> > > > 
> > > > [1] https://github.com/t-akashi/u-boot/tree/efi/dm_disk
> > > > 
> > > > For instance,
> > > > => dm tree
> > > >    Class     Index  Probed  Driver                Name
> > > > -----------------------------------------------------------
> > > >    root          0  [ + ]   root_driver           root_driver
> > > >    ...
> > > >    pci           0  [ + ]   pci_generic_ecam      |-- pcie at 10000000
> > > >    ...
> > > >    ahci          0  [   ]   ahci_pci              |   |-- ahci_pci
> > > >    scsi          0  [   ]   ahci_scsi             |   |   `-- ahci_scsi
> > > >    usb           0  [   ]   xhci_pci              |   `-- xhci_pci
> > > >    ...
> > > > => efi devices
> > > > Missing RNG device for EFI_RNG_PROTOCOL
> > > > No EFI system partition
> > > > Unable to find TPMv2 device
> > > > Device           Device Path
> > > > ================ ====================
> > > > 000000013eee88d0 /VenHw(..)
> > > > 000000013ffeb798 /VenHw(..)/Uart(0,0,D,D)
> > > > 000000013eeeb810 /VenHw(..)/MAC(525252525252,1)
> > > > => scsi rescan
> > > 
> > > 
> > > With the series binding block devices after initializing the UEFI
> > > sub-system works fine. Also unbinding is reflected in the EFI devices.
> > > 
> > > But this series breaks UEFI compliance.
> > 
> > I don't think so.
> > 
> > > All block devices must be probed
> > > before booting.
> > 
> > This (not enumerating all the devices) is also true even before my patch.
> > 
> > > Without this GRUB will not be able to read the boot
> > > partition with vmlinuz and initrd.
> > 
> > I'm not sure what you expect here, but
> > is it enough to define "preboot" variables with any number of
> > enumerating commands, like "scsi rescan", "usb start" and so on?
> 
> I expect that boards that booted with previous versions of U-Boot using
> the respective defconfig still boot. But they don't. Here is one example
> (orangepi_pc_defconfig):
> 
>     Found U-Boot script /boot.scr.uimg
>     189 bytes read in 2 ms (91.8 KiB/s)
>     ## Executing script at 43100000
>     22979 bytes read in 8 ms (2.7 MiB/s)
>     98304 bytes read in 8 ms (11.7 MiB/s)
>     Booting /EFI\debian\grubarm.efi
>     Welcome to GRUB!
> 
>     error: disk `,msdos2' not found.
>     grub rescue>
> 
> In U-Boot v2022.04 function efi_disk_register() ensured that all block
> devices and their partitions were added as EFI handles.

Not the all block devices, but the block devices which have already
enumerated when efi_init_obj_list() is called.

> But that
> function is missing now.

What (boot) device are you using here?

Please show me the values of env variables, particularly, "boot_targets".

Please show me the content of boot.scr.uimg, too.

Please show me the output from
=> dm tree
=> efidebug devices
for 2022.04 and 2022.07-rc1.

-Takahiro Akashi



> Best regards
> 
> Heinrich
> 
> 
> > 
> > # Again, this method can also be applied even without my patch.
> > 
> > -Takahiro Akashi
> > 
> > > Will you provide the missing patch?
> > > 
> > > Best regards
> > > 
> > > Heinrich
> 


More information about the U-Boot mailing list