On Nov 4, 2022, at 6:20 AM, d.meneses via groups.io <d.meneses=softi9.pt@groups.io> wrote:

Using DebugLib instead to print a message, I was able to confirm that my driver is now running properly:
cat debug.log | grep Hello
This works both when adding it in the OVMF build and also when inserted by UEFITool.

The drivers is not being listed by the EFI Shell drivers command.
This is expected to me as Dxe Drivers are unloaded after they return.
Nonetheless, the same is happening when I package it as a DXE_RUNTIME_DRIVER.
What is it that I'm missing?


The UEFI Shell drivers command is managing UEFI Driver Model Drivers [1]. A UEFI Driver Model Driver has no depex and publishes an EFI Driver Binding protocol [2]. The idea is the BDS (platform) can now have the policy of what driver gets connected to what device. This is all managed by gBS->ConnectController()/gBS->DisconnectController(). 

A DXE Driver just publishes an arbitrary protocol. 

[1] https://uefi.org/specs/UEFI/2.10/11_Protocols_UEFI_Driver_Model.html
[2] https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Protocol/DriverBinding.h


PS I seem to remember a question about launching an App….

It is possible to customize a generic UEFIs system boot policy via NVRAM variable. You can read up on that here [3]. 

If you want to change the platform policy in a secure way to do something you likely need to modify the BDS (Boot Device Selection). The design idea around BDS is you could make a system an ATM or a PC just by changing the policy in the BDS, thus the BDS is a place to centralize the platform policy. The easiest way to customize the edk2 BDS is via a custom PlatformBootManagerLib. You can look at the OVMF instance here [4]. You can use this library to add extra policy on top of the NVRAM variables in the UEFI Spec [3]. If you look at the OVMF example this is how the OVMF platform makes the UEFI Shell a default boot option [5].

[3] https://uefi.org/specs/UEFI/2.10/03_Boot_Manager.html#globally-defined-variables
[4] https://github.com/tianocore/edk2/tree/master/OvmfPkg/Library/PlatformBootManagerLib
[5] https://github.com/tianocore/edk2/blob/master/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c#L1717

Sorry if I’m mixing up threads. So much email, and so little time….

Thank you for your attention,
Diogo