From: "Laszlo Ersek" <lersek@redhat.com>
To: devel@edk2.groups.io, xh_young@163.com
Subject: Re: [edk2-devel] How does EDK2 detect virtio-blk-pci device as a boot device
Date: Fri, 12 Mar 2021 21:42:45 +0100 [thread overview]
Message-ID: <472bcdc2-ed67-c01b-8d9b-c0afd93f6c3c@redhat.com> (raw)
In-Reply-To: <f126b81c-6002-825b-a3e0-bf474a69660e@163.com>
On 03/11/21 15:48, Xiaohe Yang wrote:
> Hello, I am using EDK2 OvmfPkgX64 at commit 37568365, and have a
> problem. The following is the detail.
>
>
> The Image disk that I use has EFI system partition, and is configured as
> a virtio-blk-pci device. Bootorder file-entry is not added in fw_cfg
> device. The log of EDK2 shows that
>
> (1) VirtioBlkDxe.efi is successfully loaded at DXE stage.
> BootScriptExecutorDxe drivers "was discovered but not loaded".
>
> (2) PCI enumeration has finished at the start of BDS stage,
> virtio-blk-pci device is discovered. And one Option Rom's address is 0/0.
>
> (3) Before entering Shell, log shows "map: No mapping found".
>
> (4) After entering Shell, I choose “Boot From File”, the virtio-blk-pci
> device is not displayed.
>
>
> So I wonder what are the requirements for UEFI to detect the
> virtio-blk-pci device as a boot device, except having EFI system partition?
If you have a firmware log with DEBUG_VERBOSE enabled, I could take a look.
Assuming you are *not* on QEMU (e.g., you are developing a new
virtio-blk device, and running OVMF on your non-QEMU emulator), it could
be anything, really. Try to add DEBUG messages to the following drivers
/ functions:
- VirtioPciDeviceDxe
- VirtioPciDeviceBindingSupported
- VirtioPciDeviceBindingStart
- Virtio10Dxe
- Virtio10BindingSupported
- Virtio10BindingStart
- VirtioBlkDxe
- VirtioBlkDriverBindingSupported
- VirtioBlkDriverBindingStart
These drivers all follow the UEFI driver model. So, if you find no
mapping for the virtio-blk-pci device in the UEFI shell, then they fail
to bind your device implementation for some reason.
You mention that there is no "bootorder" fw_cfg file, so
PlatformBdsConnectSequence() will see ConnectDevicesFromQemu() fail, and
then EfiBootManagerConnectAll() will be called. If the virtio-blk-pci
devices are not connected under those circumstances, then they don't do
something that the virtio PCI transport drivers (0.9.5 or 1.0) expect,
or the virtio-blk device driver expects. There's no silver bullet, you
may have to add DEBUGs to various spots in these drivers, to see what fails.
Thanks
Laszlo
next prev parent reply other threads:[~2021-03-12 20:42 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-11 14:48 How does EDK2 detect virtio-blk-pci device as a boot device Xiaohe Yang
2021-03-12 20:42 ` Laszlo Ersek [this message]
2021-03-17 11:10 ` [edk2-devel] " xh_young
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-list 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=472bcdc2-ed67-c01b-8d9b-c0afd93f6c3c@redhat.com \
--to=devel@edk2.groups.io \
/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