Hi Heinrich, On Sat, 13 Nov 2021 at 02:29, Heinrich Schuchardt <xypron.g...@gmx.de> wrote: > > > > On 11/8/21 06:29, AKASHI Takahiro wrote: > > On Sun, Nov 07, 2021 at 09:43:22AM -0700, Simon Glass wrote: > >> Hi Heinrich, > >> > >> On Sun, 7 Nov 2021 at 01:21, Heinrich Schuchardt <xypron.g...@gmx.de> > >> wrote: > >>> > >>> > >>> > >>> On 11/4/21 04:09, Simon Glass wrote: > >>>> At present UCLASS_EFI is used to represent an EFI filesystem among other > >>>> things. The description of this uclass is "EFI managed devices" which is > >>>> pretty vague. The only driver that uses this uclass is in fact not a real > >>>> U-Boot driver, since its operations do not include a struct udevice. > >>>> > >>>> Rather than mess with this, create a new UCLASS_EFI_MEDIA uclass to > >>>> handle > >>>> EFI media such as disks. Make this the uclass to use for EFI media so > >>>> that > >>>> it can be used with 'part list', for example. > >>>> > >>>> The existing implementation using UCLASS_EFI remains as is, for > >>>> discussion. > >>>> > >>>> Signed-off-by: Simon Glass <s...@chromium.org> > >>>> --- > >>>> > >>>> (no changes since v2) > >>>> > >>>> Changes in v2: > >>>> - Add MAINTAINERS entry > >>>> - Show the correct interface type with 'part list' > >>>> - Update the commit message to explain things better > >>>> > >>>> MAINTAINERS | 3 +++ > >>>> arch/sandbox/dts/test.dts | 4 ++++ > >>>> disk/part.c | 5 ++++- > >>>> drivers/block/Kconfig | 23 +++++++++++++++++++++++ > >>>> drivers/block/Makefile | 3 +++ > >>>> drivers/block/blk-uclass.c | 2 +- > >>>> drivers/block/efi-media-uclass.c | 15 +++++++++++++++ > >>>> drivers/block/sb_efi_media.c | 20 ++++++++++++++++++++ > >>>> include/dm/uclass-id.h | 1 + > >>>> test/dm/Makefile | 1 + > >>>> test/dm/efi_media.c | 24 ++++++++++++++++++++++++ > >>>> 11 files changed, 99 insertions(+), 2 deletions(-) > >>>> create mode 100644 drivers/block/efi-media-uclass.c > >>>> create mode 100644 drivers/block/sb_efi_media.c > >>>> create mode 100644 test/dm/efi_media.c > >>>>
[..] > >>>> [IF_TYPE_NVME] = UCLASS_NVME, > >>>> - [IF_TYPE_EFI] = UCLASS_EFI, > >>>> + [IF_TYPE_EFI] = UCLASS_EFI_MEDIA, > >>> > >>> Don't break existing code. Create a new if_type here. > >> > >> My understanding is that this is not actually used at present. The > >> tests appear to pass without trouble. > >> > >> What problem are you seeing? > > I want the following to be successful: > > make sandconfig > make menuconfig > # set CONFIG_EFI_SELFTEST=y > make -j$(nproc) > ./u-boot -T > setenv efi_selftest block device > bootefi selftest > ls efi 0:1 > load efi 0:1 $fdt_addr_r hello.txt > mm.b $fdt_addr_r > > A file with the following string is loaded to memory: "Hello world!\r" I still am lost here. Do you mean CONFIG_CMD_BOOTEFI_SELFTEST=y I cannot find CONFIG_EFI_SELFTEST Assuming it is that, this is what I see when I try that on -next : /tmp/b/sandbox/u-boot -T sandbox_serial serial: pinctrl_select_state_full: uclass_get_device_by_phandle_id: err=-19 U-Boot 2022.01-rc3-00126-gf89615088fb-dirty (Dec 03 2021 - 20:34:58 -0700) Model: sandbox DRAM: 128 MiB WDT: Not starting gpio-wdt WDT: Not starting wdt@0 MMC: mmc2: 2 (SD), mmc1: 1 (SD), mmc0: 0 (SD) Loading Environment from nowhere... OK In: cros-ec-keyb Out: vidconsole Err: vidconsole Model: sandbox SCSI: Net: eth0: eth@10002000, eth5: eth@10003000, eth3: sbe5, eth6: eth@10004000, eth4: dsa-test-eth, eth2: lan0, eth7: lan1 Hit any key to stop autoboot: 0 => setenv efi_selftest block device => bootefi selftest Scanning disk mmc2.blk... Scanning disk mmc1.blk... Scanning disk mmc0.blk... Found 3 disks No EFI system partition Cannot install EFI_TCG2_PROTOCOL "dfu_alt_info" env variable not defined! Probably dfu_alt_info not defined "dfu_alt_info" env variable not defined! Probably dfu_alt_info not defined Testing EFI API implementation Selected test: 'block device' Setting up 'block device' Setting up 'block device' succeeded Executing 'block device' lib/efi_selftest/efi_selftest_block_device.c(404): TODO: Wrong volume label '', expected 'U-BOOT TEST' Executing 'block device' succeeded Tearing down 'block device' Tearing down 'block device' succeeded Summary: 0 failures => ls efi 0:1 Couldn't find partition efi 0:1 => load efi 0:1 $fdt_addr_r hello.txt Couldn't find partition efi 0:1 Can't set block device What am I missing? > > It works if I apply > > [PATCH 1/1] blk: simplify blk_get_devnum_by_typename() > https://lists.denx.de/pipermail/u-boot/2021-October/464585.html > > If you want to keep the superfluous if_type-uclass table, please, use a > separate if_type for each uclass in this patch and suggest an > alternative fix for the test above. Regards, Simon [..]