Re: Can DXE drivers be included in executable EFI binary?


Laszlo Ersek
 

On 02/22/21 12:12, joseph via [] wrote:
Hello Laszlo,

Thanks for your answer.

I looked at this a bit more today.
The cause is not that there is no driver, but it seems that Notify does not work properly for the protocol after installing the driver.
I don't understand "installing the driver".

Also, what is "notify" in this context? Do you mean the
RegisterProtocolNotify() boot service? In what context are you trying to
use it?

Immediately after booting, the EFI Shell recognizes NVMe devices but not partitions and filesystems.
If run `map -u` after loading anything filesystem driver (e.g. ext4) the NVMe partition and filesystems are recognized.
The BDS phase is responsible for connecting devices.

BDS is platform policy though. Even if you have a correctly loaded &
functioning NVMe driver, if BDS does not connect NVMe devices for you,
your application will not see them out of the box.

Your application may call ConnectController(). You can use whatever
methods to locate the suitable handles (you can collect PciIo interfaces
and check them for various signs, or you can use LocateDevicePath()
etc). Once you have some candidate handles, you could call
ConnectController().

When you enter the UEFI shell, there's usually a "connect all devices to
all drivers" step. That may be expensive, so it's usually not done for a
normal boot.

Do you know why?
And how can I Notify to gEfiSimpleFileSystemProtocolGuid?
I don't understand this.

Please describe the symptoms better, and also what you're trying to achieve.

Thanks
Laszlo


Immediately after booting,
GetHandleListByProtocol(&gEfiSimpleFileSystemProtocolGuid);
Has a value of 2.

After installing any filesystem driver, its value will be 3.

Thanks.

Join discuss@edk2.groups.io to automatically receive all group messages.