[U-Boot] UEFI on u-boot

Heinrich Schuchardt xypron.glpk at gmx.de
Mon Jan 15 21:25:18 UTC 2018



On 01/15/2018 10:32 AM, Udit Kumar wrote:
> Hi Alex
> 
>> -----Original Message-----
>> From: Alexander Graf [mailto:agraf at suse.de]
>> Sent: Monday, January 15, 2018 2:45 PM
>> To: Udit Kumar <udit.kumar at nxp.com>
>>
>> Hi Udit,
>>
>> On 15.01.18 10:09, Udit Kumar wrote:
>>> Hi Alex,
>>> Hope you are doing great,
>>>
>>> Could you help on UEFI over the u-boot.
>>> 1- I couldn't locate EFI_DXE_SERVICES in u-boot, do you have plan to
>>> add those
>>
>> Right now the model is that all device drivers are implemented by U-Boot
>> and that only exposes their interfaces to EFI applications. Implementing DXE
>> in U-Boot would open quite a big can of worms, as it would really only be
>> useful in compilation with PI which is a terrible interface :).
> 
> Ok,
>   
>>> 2- If I load  a driver (with bootefi) which install few protocols,  is
>>> this ok to do with u-boot

With the command bootefi you can load an executable that adds boottime 
or runtime services.

Unfortunatly there are some missing points:

When loading the image the memory category reserved for the image is not 
chosen in dependence of the image type. This will cause major trouble 
for runtime drivers.

The exit() service does not call the unload function of the 
driver/application.

>>
>> It depends on how much the driver does, but in general yes. Heinrich is
>> currently working on making the iPXE iSCSI driver work, so his EFI payload
>> would expose an EFI block device to yet another payload running after his.
> 
> Thanks for this,
> Heinrich,  in  this driver, are you accessing underneath hardware register
> by UEFI-Driver and managing UEFI protocols
> or you are relying on some h/w access exposed by u-boot driver
>

U-Boot exposes the network interface as EFI simple network protocol.
iPXE provides TCP and iSCSI on top of the SNP.
It creates a handle and install the a block IO protocol on it.
When ConnectController is called the U-Boot EFI block driver creates the 
partitions as children of aforementioned handle and installs the simple 
file protocol on the child handles.

See patch
https://lists.denx.de/pipermail/u-boot/2018-January/316708.html

Regards

Heinrich

> 
>   
>>> 3- if you say, 2 is ok then I hope these protocols are kept in some
>>> data base, and this new protocol can be opened by an application
>>
>> Yes, the protocol database is now global and persistent across bootefi
>> invocations.
> 
> Thanks
>   
>>> 4- if there is some known limitation, like we cannot run DXE_driver
>>> etc
>>
>> What exactly are you trying to do? With the U-Boot UEFI implementation
>> we're trying to find a sweet spot between implementing as much as makes
>> sense, but not the whole UEFI world, as that would just bloat the code
>> needlessly.
> 
> I am trying to add a driver (DXE by definition) which
> a) Access the hardware registers. (I said DXE could due to hardware registers)
> b) Update memory map as well (AddMemorySpace call)
> c) Finally it export a protocol, which could be used by its test application.
> 
> For b) I am not able to find function call,
> For a), if I say driver is UEFI and accessing hardware register, will this be acceptable ?
>   
>>
>> Alex


More information about the U-Boot mailing list