在 2021/3/13 上午4:42, Laszlo Ersek 写道:
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:


Yes, I am developing a new virtio-blk device on my non-QEMU emulator.


- 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

I follow your suggestions and add more debug infos, and the problem is fixed.


Thanks for your help.

Xiaohe Yang




-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#72989): https://edk2.groups.io/g/devel/message/72989
Mute This Topic: https://groups.io/mt/81260476/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to