[PATCH v2 37/39] efi: Avoid using sandbox virtio devices

Tom Rini trini at konsulko.com
Wed Aug 7 03:56:13 CEST 2024


On Wed, Aug 07, 2024 at 03:47:21AM +0200, Heinrich Schuchardt wrote:
> On 06.08.24 14:58, Simon Glass wrote:
> > While sandbox supports virtio it cannot support actually using the block
> > devices to read files, since there is nothing on the other end of the
> > 'virtqueue'.
> > 
> > A recent change makes EFI probe all block devices, whether used or not.
> > This is apparently required by EFI, although it violates U-Boot's
> > lazy-init principle.
> > 
> > We cannot just drop the virtio devices as they are used in sandbox tests.
> > 
> > So for now just add a special case to work around this.
> > 
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > ---
> > 
> > (no changes since v1)
> > 
> >   lib/efi_loader/efi_disk.c | 14 +++++++++++++-
> >   1 file changed, 13 insertions(+), 1 deletion(-)
> > 
> > diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c
> > index 93a9a5ac025..2e1d37848fc 100644
> > --- a/lib/efi_loader/efi_disk.c
> > +++ b/lib/efi_loader/efi_disk.c
> > @@ -838,8 +838,20 @@ efi_status_t efi_disk_get_device_name(const efi_handle_t handle, char *buf, int
> >   efi_status_t efi_disks_register(void)
> >   {
> >   	struct udevice *dev;
> > +	struct uclass *uc;
> > 
> > -	uclass_foreach_dev_probe(UCLASS_BLK, dev) {
> > +	uclass_id_foreach_dev(UCLASS_BLK, dev, uc) {
> > +		/*
> > +		 * The virtio block-device hangs on sandbox when accessed since
> > +		 * there is nothing listening to the mailbox
> > +		 */
> > +		if (IS_ENABLED(CONFIG_SANDBOX)) {
> > +			struct blk_desc *desc = dev_get_uclass_plat(dev);
> > +
> > +			if (desc->uclass_id == UCLASS_VIRTIO)
> > +				continue;
> 
> We should avoid depending on the sandbox everywhere.
> 
> Please, fix the problem in the sandbox driver.
> 
> If you cannot fix it, run the tests involving virtio on QEMU instead of
> the sandbox.

This is an area we go back-and-forth on but, yes, IMHO, if we can't
easily provide a virtio device for sandbox, QEMU is right there and what
this is for, so I see sandbox as more useful as build rather than
runtime checking in this case.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20240806/b50a2315/attachment.sig>


More information about the U-Boot mailing list