[PATCH v5 00/12] efi_loader: more tightly integrate UEFI disks to driver model
Heinrich Schuchardt
xypron.glpk at gmx.de
Tue Apr 26 19:02:46 CEST 2022
On 4/26/22 16:44, AKASHI Takahiro wrote:
> On Tue, Apr 26, 2022 at 03:57:26PM +0200, Heinrich Schuchardt wrote:
>> On 4/26/22 01:44, AKASHI Takahiro wrote:
>> 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
>
>
>
I am booting from mmc. Boot.scr just loads the device-tree from mmc-
mmcblk0 179:0 0 29.8G 0 disk
├─mmcblk0p1 179:1 0 1G 0 part /boot/efi
├─mmcblk0p2 179:2 0 1G 0 part /boot
└─mmcblk0p3 179:3 0 27.8G 0 part /
U-Boot 2022.04 (Apr 26 2022 - 16:02:27 +0000) Allwinner Technology
------------------------------------------------------------------
grub> ls
(hd0) (hd0,msdos1) (hd1) (hd1,msdos3) (hd1,msdos2) (hd1,msdos1)
hd0 is a USB stick
hd1 is the SD card
boot.scr
--------
#
# flash-kernel: bootscr.sunxi
#
# boot script for Allwinner SunXi-based devices
# Mainline u-boot v2014.10 introduces a new default environment and
# a new common bootcmd handling for all platforms, which is not fully
# compatible with the old-style environment used by u-boot-sunxi.
# This script therefore needs to check in which environment it
# is running and set some variables accordingly.
# On u-boot-sunxi, this script assumes that ${device} and ${partition}
# are set.
# The new-style environment predefines ${boot_targets}, the old-style
# environment does not.
if test -n "${boot_targets}"
then
echo "Mainline u-boot / new-style environment detected."
# Mainline u-boot v2014.10 uses ${devtype}, ${devnum} and
# ${bootpart} where u-boot-sunxi uses ${device} and ${partition}.
# ${distro_bootpart} replaced ${bootpart} in u-boot v2016.01.
if test -z "${device}"; then setenv device "${devtype}"; fi
if test -z "${partition}${distro_bootpart}"; then setenv partition
"${devnum}:${bootpart}"; fi
if test -z "${partition}"; then setenv partition
"${devnum}:${distro_bootpart}"; fi
else
echo "U-boot-sunxi / old-style environment detected."
# U-boot-sunxi does not predefine kernel_addr_r, fdt_addr_r and
# ramdisk_addr_r, so they have to be manually set. Use the values
# from mainline u-boot v2014.10, except for ramdisk_addr_r,
# which is set to 0x44300000 to allow for initrds larger than
# 13MB on u-boot-sunxi.
setenv kernel_addr_r 0x42000000
setenv fdt_addr_r 0x43000000
setenv ramdisk_addr_r 0x44300000
fi
if test -n "${console}"; then
setenv bootargs "${bootargs} console=${console}"
fi
setenv bootargs ${bootargs} quiet
if test -z "${image_locations}"; then
setenv image_locations ${prefix}
fi
if test -z "${image_locations}"; then
setenv image_locations /boot/ /
fi
if test -z "${fk_kvers}"; then
setenv fk_kvers '5.16.0-4-armmp-lpae'
fi
if test -n "${fdtfile}"; then
setenv fdtpath dtbs/${fk_kvers}/${fdtfile}
else
setenv fdtpath dtb-${fk_kvers}
fi
for pathprefix in ${image_locations}
do
if test -e ${device} ${partition} ${pathprefix}vmlinuz-${fk_kvers}
then
load ${device} ${partition} ${kernel_addr_r}
${pathprefix}vmlinuz-${fk_kvers} \
&& load ${device} ${partition} ${fdt_addr_r} ${pathprefix}${fdtpath} \
&& load ${device} ${partition} ${ramdisk_addr_r}
${pathprefix}initrd.img-${fk_kvers} \
&& echo "Booting Debian ${fk_kvers} from ${device} ${partition}..." \
&& bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}
fi
done
U-Boot 2022.04 (Apr 26 2022 - 16:02:27 +0000) Allwinner Technology
=> echo $boot_targets
fel mmc0 usb0 pxe dhcp
=> dm tree
Class Index Probed Driver Name
-----------------------------------------------------------
root 0 [ + ] root_driver root_driver
video 0 [ ] sunxi_de2 |-- sunxi_de2
display 0 [ ] sunxi_dw_hdmi |-- sunxi_dw_hdmi
simple_bus 0 [ + ] simple_bus |-- soc
mmc 0 [ + ] sunxi_mmc | |-- mmc at 1c0f000
blk 0 [ + ] mmc_blk | | `-- mmc at 1c0f000.blk
phy 0 [ + ] sun4i_usb_phy | |-- phy at 1c19400
usb 0 [ + ] ehci_generic | |-- usb at 1c1a000
usb_hub 0 [ + ] usb_hub | | `-- usb_hub
usb 1 [ + ] ohci_generic | |-- usb at 1c1a400
usb_hub 1 [ + ] usb_hub | | `-- usb_hub
usb 2 [ + ] ehci_generic | |-- usb at 1c1b000
usb_hub 2 [ + ] usb_hub | | `-- usb_hub
usb 3 [ + ] ohci_generic | |-- usb at 1c1b400
usb_hub 3 [ + ] usb_hub | | `-- usb_hub
usb 4 [ + ] ehci_generic | |-- usb at 1c1c000
usb_hub 4 [ + ] usb_hub | | `-- usb_hub
usb_mass_s 0 [ + ] usb_mass_storage | | `--
usb_mass_storage
blk 1 [ ] usb_storage_blk | | `--
usb_mass_storage.lun0
usb 5 [ + ] ohci_generic | |-- usb at 1c1c400
usb_hub 5 [ + ] usb_hub | | `-- usb_hub
usb 6 [ + ] ehci_generic | |-- usb at 1c1d000
usb_hub 6 [ + ] usb_hub | | `-- usb_hub
usb 7 [ + ] ohci_generic | |-- usb at 1c1d400
usb_hub 7 [ + ] usb_hub | | `-- usb_hub
clk 0 [ + ] sun8i_h3_ccu | |-- clock at 1c20000
reset 0 [ + ] sunxi_reset | | `-- reset
gpio 0 [ + ] gpio_sunxi | |-- pinctrl at 1c20800
gpio 1 [ + ] gpio_sunxi | | |-- PA
gpio 2 [ + ] gpio_sunxi | | |-- PB
gpio 3 [ + ] gpio_sunxi | | |-- PC
gpio 4 [ + ] gpio_sunxi | | |-- PD
gpio 5 [ + ] gpio_sunxi | | |-- PE
gpio 6 [ + ] gpio_sunxi | | |-- PF
gpio 7 [ + ] gpio_sunxi | | |-- PG
gpio 8 [ + ] gpio_sunxi | | |-- PH
gpio 9 [ + ] gpio_sunxi | | `-- PI
ethernet 0 [ + ] eth_sun8i_emac | |-- ethernet at 1c30000
watchdog 0 [ + ] sunxi_wdt | |-- watchdog at 1c20ca0
sysreset 0 [ ] wdt_reboot | | `-- watchdog at 1c20ca0
serial 0 [ + ] ns16550_serial | |-- serial at 1c28000
clk 1 [ + ] clk_sun6i_rtc | |-- rtc at 1f00000
clk 2 [ ] sun6i_a31_r_ccu | |-- clock at 1f01400
reset 1 [ ] sunxi_reset | | `-- reset
i2c 0 [ ] i2c_mvtwsi | |-- i2c at 1f02400
gpio 10 [ + ] gpio_sunxi | `-- pinctrl at 1f02c00
gpio 11 [ + ] gpio_sunxi | `-- PL
clk 3 [ + ] fixed_clock |-- osc24M_clk
clk 4 [ ] fixed_clock `-- osc32k_clk
U-Boot 2022.07-rc1 (Apr 26 2022 - 07:00:52 +0000) Allwinner Technology
=> echo $boot_targets
fel mmc0 usb0 pxe dhcp
=> dm tree
Class Index Probed Driver Name
-----------------------------------------------------------
root 0 [ + ] root_driver root_driver
video 0 [ ] sunxi_de2 |-- sunxi_de2
display 0 [ ] sunxi_dw_hdmi |-- sunxi_dw_hdmi
simple_bus 0 [ + ] simple_bus |-- soc
mmc 0 [ + ] sunxi_mmc | |-- mmc at 1c0f000
blk 0 [ + ] mmc_blk | | |-- mmc at 1c0f000.blk
partition 0 [ + ] blk_partition | | | |--
mmc at 1c0f000.blk:1
partition 1 [ + ] blk_partition | | | |--
mmc at 1c0f000.blk:2
partition 2 [ + ] blk_partition | | | `--
mmc at 1c0f000.blk:3
bootdev 0 [ ] mmc_bootdev | | `--
mmc at 1c0f000.bootdev
phy 0 [ + ] sun4i_usb_phy | |-- phy at 1c19400
usb 0 [ + ] ehci_generic | |-- usb at 1c1a000
usb_hub 0 [ + ] usb_hub | | `-- usb_hub
usb 1 [ + ] ohci_generic | |-- usb at 1c1a400
usb_hub 1 [ + ] usb_hub | | `-- usb_hub
usb 2 [ + ] ehci_generic | |-- usb at 1c1b000
usb_hub 2 [ + ] usb_hub | | `-- usb_hub
usb 3 [ + ] ohci_generic | |-- usb at 1c1b400
usb_hub 3 [ + ] usb_hub | | `-- usb_hub
usb 4 [ + ] ehci_generic | |-- usb at 1c1c000
usb_hub 4 [ + ] usb_hub | | `-- usb_hub
usb_mass_s 0 [ + ] usb_mass_storage | | `--
usb_mass_storage
blk 1 [ + ] usb_storage_blk | | |--
usb_mass_storage.lun0
partition 3 [ + ] blk_partition | | | `--
usb_mass_storage.lun0:1
bootdev 3 [ ] usb_bootdev | | `--
usb_mass_storage.lun0.bootdev
usb 5 [ + ] ohci_generic | |-- usb at 1c1c400
usb_hub 5 [ + ] usb_hub | | `-- usb_hub
usb 6 [ + ] ehci_generic | |-- usb at 1c1d000
usb_hub 6 [ + ] usb_hub | | `-- usb_hub
usb 7 [ + ] ohci_generic | |-- usb at 1c1d400
usb_hub 7 [ + ] usb_hub | | `-- usb_hub
clk 0 [ + ] sun8i_h3_ccu | |-- clock at 1c20000
reset 0 [ + ] sunxi_reset | | `-- reset
pinctrl 0 [ + ] sunxi-pinctrl | |-- pinctrl at 1c20800
gpio 0 [ + ] gpio_sunxi | | |-- pinctrl at 1c20800
gpio 1 [ + ] gpio_sunxi | | | |-- PA
gpio 2 [ + ] gpio_sunxi | | | |-- PB
gpio 3 [ + ] gpio_sunxi | | | |-- PC
gpio 4 [ + ] gpio_sunxi | | | |-- PD
gpio 5 [ + ] gpio_sunxi | | | |-- PE
gpio 6 [ + ] gpio_sunxi | | | |-- PF
gpio 7 [ + ] gpio_sunxi | | | `-- PG
pinconfig 0 [ ] pinconfig | | |-- csi-pins
pinconfig 1 [ ] pinconfig | | |-- emac-rgmii-pins
pinconfig 2 [ ] pinconfig | | |-- i2c0-pins
pinconfig 3 [ ] pinconfig | | |-- i2c1-pins
pinconfig 4 [ ] pinconfig | | |-- i2c2-pins
pinconfig 5 [ + ] pinconfig | | |-- mmc0-pins
pinconfig 6 [ ] pinconfig | | |-- mmc1-pins
pinconfig 7 [ ] pinconfig | | |-- mmc2-8bit-pins
pinconfig 8 [ ] pinconfig | | |-- spdif-tx-pin
pinconfig 9 [ ] pinconfig | | |-- spi0-pins
pinconfig 10 [ ] pinconfig | | |-- spi1-pins
pinconfig 11 [ + ] pinconfig | | |-- uart0-pa-pins
pinconfig 12 [ ] pinconfig | | |-- uart1-pins
pinconfig 13 [ ] pinconfig | | |--
uart1-rts-cts-pins
pinconfig 14 [ ] pinconfig | | |-- uart2-pins
pinconfig 15 [ ] pinconfig | | |--
uart2-rts-cts-pins
pinconfig 16 [ ] pinconfig | | |-- uart3-pins
pinconfig 17 [ ] pinconfig | | |--
uart3-rts-cts-pins
pinconfig 18 [ ] pinconfig | | |-- ahci_pwr_pin at 0
pinconfig 19 [ ] pinconfig | | |-- usb0_vbus_pin at 0
pinconfig 20 [ ] pinconfig | | |-- usb1_vbus_pin at 0
pinconfig 21 [ ] pinconfig | | `-- usb2_vbus_pin at 0
ethernet 0 [ + ] eth_sun8i_emac | |-- ethernet at 1c30000
bootdev 1 [ ] eth_bootdev | | `--
ethernet at 1c30000.bootdev
watchdog 0 [ + ] sunxi_wdt | |-- watchdog at 1c20ca0
sysreset 0 [ ] wdt_reboot | | `-- watchdog at 1c20ca0
serial 0 [ + ] ns16550_serial | |-- serial at 1c28000
clk 1 [ + ] clk_sun6i_rtc | |-- rtc at 1f00000
clk 2 [ + ] sun6i_a31_r_ccu | |-- clock at 1f01400
reset 1 [ ] sunxi_reset | | `-- reset
i2c 0 [ ] i2c_mvtwsi | |-- i2c at 1f02400
pinctrl 1 [ + ] sunxi-pinctrl | `-- pinctrl at 1f02c00
gpio 8 [ + ] gpio_sunxi | |-- pinctrl at 1f02c00
gpio 9 [ + ] gpio_sunxi | | `-- PL
pinconfig 22 [ ] pinconfig | |-- r-ir-rx-pin
pinconfig 23 [ ] pinconfig | |-- r-i2c-pins
pinconfig 24 [ ] pinconfig | `-- r-pwm-pin
clk 3 [ + ] fixed_clock |-- osc24M_clk
clk 4 [ ] fixed_clock |-- osc32k_clk
bootstd 0 [ ] bootstd_drv `-- bootstd
bootmeth 0 [ ] bootmeth_distro |-- distro
bootmeth 1 [ ] bootmeth_efi |-- efi
bootmeth 2 [ ] bootmeth_pxe |-- pxe
bootdev 2 [ ] system_bootdev `-- system-bootdev
grub rescue> ls
(hd0)
Grub does not see any partition at all.
Loading a device from a partition does not create a handle for the device:
=> efidebug devices
** Unable to read file ubootefi.var **
Failed to load EFI variables
Device Device Path
======== ====================
79f80f08 /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)
7dffc7ec /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/Uart(0,0,D,D)
79f7f1f8
/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/UsbClass(0x0,0x0,0x9,0x0,0x1)/UsbClass(0x781,0x5571,0x0,0x0,0x0)
79f7f2a0
/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/UsbClass(0x0,0x0,0x9,0x0,0x1)/UsbClass(0x781,0x5571,0x0,0x0,0x0)/HD(1,MBR,0x0c449046,0x800,0x800)
79fdc188 /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/MAC(0281431d5371,1)
=> bootefi $kernel_addr_r
Booting /helloworld.efi
invalid image type: 0
Hello, world!
=> efidebug devices
Device Device Path
======== ====================
79f80f08 /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)
7dffc7ec /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/Uart(0,0,D,D)
79f7f1f8
/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/UsbClass(0x0,0x0,0x9,0x0,0x1)/UsbClass(0x781,0x5571,0x0,0x0,0x0)
79f7f2a0
/VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/UsbClass(0x0,0x0,0x9,0x0,0x1)/UsbClass(0x781,0x5571,0x0,0x0,0x0)/HD(1,MBR,0x0c449046,0x800,0x800)
79fdc188 /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/MAC(0281431d5371,1)
=>
So the current state is a complete mess.
Best regards
Heinrich
More information about the U-Boot
mailing list