From: Tom Rini <trini@konsulko.com>
To: Simon Glass <sjg@chromium.org>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>,
Ilias Apalodimas <ilias.apalodimas@linaro.org>,
U-Boot Mailing List <u-boot@lists.denx.de>
Subject: Re: [PATCH v5 12/14] efi_loader: Avoid using sandbox virtio devices
Date: Tue, 17 Sep 2024 11:03:46 -0600 [thread overview]
Message-ID: <20240917170346.GN4252@bill-the-cat> (raw)
In-Reply-To: <CAFLszTj47fa7m2Xa4yi5NkcWNUGr4kiM1z4sAnrbd5rFUKq1Zw@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4100 bytes --]
On Mon, Sep 16, 2024 at 05:42:31PM +0200, Simon Glass wrote:
> Hi Heinrich,
>
> On Thu, 12 Sept 2024 at 09:12, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> >
> > On 02.09.24 03:18, 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 always did this.
>
> Commit d5391bf02b9 dates from 2022, so I don't think that is correct.
Yes, but I also could have sworn that was fixing the behavior having
been changed again previous to that.
> > What problem do you want to fix? I have not seen any issues in our CI.
>
> The EFI test in this series hangs trying to probe a virtio block
> device. If you drop this patch and try the rest of the series in CI,
> you will see the failure. Or you could just accept that I investigated
> this, root-caused it and produced a suitable fix. This is a v5 patch
> which has had quite a bit of discussion.
And as I noted an iteration or two back, it's entirely unclear if the
problem is "sandbox virtio is broken" or "this code is wrong here".
Which in fact gets us back to ...
> > > 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.
> > >
> > > The eventual fix is likely adding an implementation of
> > > virtio_sandbox_notify() to actually do the block read. That is tracked
> > > in [1].
> > >
> > > Signed-off-by: Simon Glass <sjg@chromium.org>
> > > Fixes: d5391bf02b9 ("efi_loader: ensure all block devices are probed")
> > > Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> > > [1] https://source.denx.de/u-boot/u-boot/-/issues/37
> > > ---
> > >
> > > (no changes since v3)
> > >
> > > Changes in v3:
> > > - Add a Fixes tag
> > > - Mention the issue created for this problem
> > >
> > > 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;
> > > + }
> > > + device_probe(dev);
> > > }
> > >
> > > return EFI_SUCCESS;
> >
> > Please, do not spray sandbox tweaks all over the place.
> >
> > Can't you just return an error from the sandbox-virtio driver when an
> > attempt to read a queue is made?
> >
> > We are using virtio on QEMU. Why do we need sandbox virtio devices? Just
> > run the relevant tests on the real thing.
>
> Please go ahead with whatever approach to testing you wish. But
> sandbox testing is an important component of U-Boot.
Yes, but is sandbox implementing the "just be a state machine" part here
correctly, or not? It keeps feeling like "not" and that the reasonable
course of action would be to stop testing this on sandbox until that is
fixed especially since we can test this reliably on qemu.
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
next prev parent reply other threads:[~2024-09-17 17:03 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-02 1:18 [PATCH v5 00/14] efi: Add a test for EFI bootmeth Simon Glass
2024-09-02 1:18 ` [PATCH v5 01/14] efi_loader: Use puts() in cout so that console recording works Simon Glass
2024-09-02 1:18 ` [PATCH v5 02/14] efi_loader: Put back copyright message Simon Glass
2024-09-02 1:18 ` [PATCH v5 03/14] efi_loader: Rename and move CMD_BOOTEFI_HELLO_COMPILE Simon Glass
2024-09-02 1:18 ` [PATCH v5 04/14] efi: arm: x86: riscv: Drop crt0/relocal extra- rules Simon Glass
2024-09-02 1:18 ` [PATCH v5 05/14] efi_loader: Shorten the app rules Simon Glass
2024-09-02 1:18 ` [PATCH v5 06/14] efi_loader: Shorten the app rules further Simon Glass
2024-09-02 1:18 ` [PATCH v5 07/14] efi_loader: Show the vendor in helloworld Simon Glass
2024-09-02 1:18 ` [PATCH v5 08/14] efi: Use the same filename for all sandbox builds Simon Glass
2024-09-12 14:03 ` Heinrich Schuchardt
2024-09-16 15:41 ` Simon Glass
2024-09-02 1:18 ` [PATCH v5 09/14] bootstd: Add debugging for efi bootmeth Simon Glass
2024-09-12 15:28 ` Heinrich Schuchardt
2024-09-02 1:18 ` [PATCH v5 10/14] efi_loader: Disable ANSI output for tests Simon Glass
2024-09-12 14:45 ` Heinrich Schuchardt
2024-09-16 15:42 ` Simon Glass
2024-09-16 16:33 ` Tom Rini
2024-09-17 3:54 ` Simon Glass
2024-09-17 16:59 ` Tom Rini
2024-09-19 14:14 ` Simon Glass
2024-09-02 1:18 ` [PATCH v5 11/14] efi_loader: Add a test app Simon Glass
2024-09-12 14:48 ` Heinrich Schuchardt
2024-09-16 15:41 ` Simon Glass
2024-09-02 1:18 ` [PATCH v5 12/14] efi_loader: Avoid using sandbox virtio devices Simon Glass
2024-09-12 15:00 ` Heinrich Schuchardt
2024-09-16 15:42 ` Simon Glass
2024-09-17 17:03 ` Tom Rini [this message]
2024-09-19 14:10 ` Simon Glass
2024-09-19 17:45 ` Tom Rini
2024-09-20 7:25 ` Simon Glass
2024-09-20 14:59 ` Tom Rini
2024-09-25 12:52 ` Simon Glass
2024-09-25 17:26 ` Tom Rini
2024-09-26 21:34 ` Simon Glass
2024-09-02 1:18 ` [PATCH v5 13/14] test: efi: boot: Set up an image suitable for EFI testing Simon Glass
2024-09-12 15:04 ` Heinrich Schuchardt
2024-09-16 15:42 ` Simon Glass
2024-09-16 16:34 ` Tom Rini
2024-09-17 3:52 ` Simon Glass
2024-09-17 22:19 ` Tom Rini
2024-09-19 14:13 ` Simon Glass
2024-09-25 17:26 ` Tom Rini
2024-09-02 1:18 ` [PATCH v5 14/14] test: efi: boot: Add a test for the efi bootmeth Simon Glass
2024-09-12 15:07 ` Heinrich Schuchardt
2024-09-16 15:42 ` Simon Glass
2024-09-12 1:01 ` [PATCH v5 00/14] efi: Add a test for EFI bootmeth Simon Glass
2024-09-12 7:02 ` Ilias Apalodimas
2024-09-13 13:50 ` Heinrich Schuchardt
2024-09-19 14:13 ` Simon Glass
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240917170346.GN4252@bill-the-cat \
--to=trini@konsulko.com \
--cc=ilias.apalodimas@linaro.org \
--cc=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
--cc=xypron.glpk@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox