[U-Boot] Uboot as x86_64 EFI payload

Simon Glass sjg at chromium.org
Mon Feb 5 16:43:57 UTC 2018


Hi Javier,

On 5 February 2018 at 01:07, Javier Santos Romo <jsantos at gmv.com> wrote:
> Hi Simon,
>
> Thanks for your support. We just need a x64 bootloader because we are using a 64-bit EFI. We understood, reading README.efi file from U-boot documentation that we could use u-boot like an 64-bit payload. However, we don´t understand why we get the memory map error. Anyway, we will consider other possibilities.

There is no need to use a 64-bit bootloader with UEFI. In fact the
U-Boot payload is specifically designed to jump from 64-bit to 32-bit
for running U-Boot. It also have native 64-bit kernel support so it
can load a 64-bit kernel.

I suggest you try it in 32-bit mode for now. That is how we use it
here. There is not a lot of benefit to using U-Boot in 64-bit mode,
but if you find something I'm interested to hear it.

If you hit a memory allocation problem in that case, please let us know.

[BTW it is best not to top-post on a mailing list]

Regards,
Simon

>
> Thanks a lot,
> BR
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> -----Mensaje original-----
> De: sjg at google.com [mailto:sjg at google.com] En nombre de Simon Glass
> Enviado el: domingo, 4 de febrero de 2018 14:41
> Para: Javier Santos Romo <jsantos at gmv.com>
> CC: u-boot at lists.denx.de; bmeng.cn at gmail.com; Juan Alfonso Reyes Ajenjo <jareyes at gmv.com>
> Asunto: Re: Uboot as x86_64 EFI payload
>
> Hi Javier,
>
> On 29 January 2018 at 09:36, Javier Santos Romo <jsantos at gmv.com> wrote:
>
>> Hi,
>>
>> I am Juan Alfonso Reyes, a firmware engineer in GMV. Currently we are developing new boards based in Apollo Lake CPU.  We are trying to load uboot from UEFI. Using the default qemu-x86_efi_payload64_defconfig  we are getting “U-Boot EFI Payload 2002 No memory map” error code.
>>
>> As I can see in the code 2002 means (efi_stub.c):
>>
>>
>>
>> ret = boot->get_memory_map(&size, NULL, &key, &desc_size, &version);
>>
>>             if (ret != EFI_BUFFER_TOO_SMALL) {
>>
>>                         printhex2(BITS_PER_LONG);
>>
>>                         printhex2(ret);
>>
>>                         puts(" No memory map\n");
>>
>>                         while(1);
>>
>>                         return ret;
>>
>>             }
>>
>>
>>
>> 0x20   -> BITS_PER_LONG 32bits
>>
>> 0x02 -> EFI_INVALID_PARAMETER
>>
>>
>>
>> 32bits sounds weird for me, so I changed config to use CONFIG_X86_RUN_64BIT instead of CONFIG_X86_RUN_32BIT. I have changed it and I got a compilation error:
>
> Are you using 64-bit EFI or 32-bit?
>
> I think you was CONFIG_EFI_STUB_64BIT
>
> See doc/README.efi for some info about this. Note this this option makes the stub run as a 64-bit EFI app, but U-Boot itself is still only 32-bit.
>
>>
>>
>>
>> In file included from include/common.h:53:0,
>>
>>                  from cmd/efi.c:8:
>>
>> cmd/efi.c: In function ‘do_efi_mem’:
>>
>> ./arch/x86/include/asm/global_data.h:117:12: error: ‘global_data_ptr’
>> undeclared (first use in this function)
>>
>> #define gd global_data_ptr
>>
>>
>>
>>
>>
>> I have surfed in the code and I have found this in
>> ./arch/x86/include/asm/global_data.h
>>
>>
>>
>> # if defined(CONFIG_EFI_APP) || CONFIG_IS_ENABLED(X86_64)
>>
>> /* TODO(sjg at chromium.org): Consider using a fixed register for gd on
>> x86_64 */
>>
>> #define gd global_data_ptr
>>
>>
>>
>> What do you mean with “Consider using a fixed register for gd” ?Can you help us to make this work? Are we in the correct direction?
>
> This is for running U-Boot itself as a 64-bit app. This is not currently supported as an EFI payload, only as a bar-metal U-Boot (not run from EFI).
>
> The meaning of the comment is that on 32-bit x86 we use the FS register to store gd. See:
>
> #define gd      get_fs_gd_ptr()
>
> We could potentially make gd use a fixed x86 register on 64-bit x86 as well. This comment is about considering that.
>
> Regards,
> Simon
>
>
>>
>>
>>
>> Thank you very much,
>>
>>
>>
>> Best regards,
>>
>> ________________________________
>>
>> Juan Alfonso Reyes Ajenjo
>> Ingeniero en Informatica / Computer Systems Engineer
>>
>> Ingeniero en Automática y Electrónica Industrial / Automation and
>> Industrial Electronics Engineer
>>
>> GMV
>> Juan de Herrera nº17
>> Boecillo
>> E-47151 Valladolid
>> Tel. +34 983 54 65 54
>> Fax +34 983 54 65 53
>> www.gmv.com
>>
>>
>>
>>
>>
>>
>>
>>
>> P Please consider the environment before printing this e-mail.
>>
>>
>> P Please consider the environment before printing this e-mail.
>
> What does this mean?
>
>>
>> ________________________________
>> This message including any attachments may contain confidential information, according to our Information Security Management System, and intended solely for a specific individual to whom they are addressed. Any unauthorised copy, disclosure or distribution of this message is strictly forbidden. If you have received this transmission in error, please notify the sender immediately and delete it. Thank you.
>> ________________________________
>> Este mensaje, y en su caso, cualquier fichero anexo al mismo, puede contener información clasificada por su emisor como confidencial en el marco de su Sistema de Gestión de Seguridad de la Información siendo para uso exclusivo del destinatario, quedando prohibida su divulgación copia o distribución a terceros sin la autorización expresa del remitente. Si Vd. ha recibido este mensaje erróneamente, se ruega lo notifique al remitente y proceda a su borrado. Gracias por su colaboración.
>> ________________________________
>> Esta mensagem, incluindo qualquer ficheiro anexo, pode conter informação confidencial, de acordo com nosso Sistema de Gestão de Segurança da Informação, sendo para uso exclusivo do destinatário e estando proibida a sua divulgação, cópia ou distribuição a terceiros sem autorização expressa do remetente da mesma. Se recebeu esta mensagem por engano, por favor avise de imediato o remetente e apague-a. Obrigado pela sua colaboração.
>> ________________________________
>
> Would you mind trimming your signature down for the mailing list?
>
> Regards,
> Simon
>
> P Please consider the environment before printing this e-mail.
>
> ______________________
> This message including any attachments may contain confidential
> information, according to our Information Security Management System,
>  and intended solely for a specific individual to whom they are addressed.
>  Any unauthorised copy, disclosure or distribution of this message
>  is strictly forbidden. If you have received this transmission in error,
>  please notify the sender immediately and delete it.
>
> ______________________
> Este mensaje, y en su caso, cualquier fichero anexo al mismo,
>  puede contener informacion clasificada por su emisor como confidencial
>  en el marco de su Sistema de Gestion de Seguridad de la
> Informacion siendo para uso exclusivo del destinatario, quedando
> prohibida su divulgacion copia o distribucion a terceros sin la
> autorizacion expresa del remitente. Si Vd. ha recibido este mensaje
>  erroneamente, se ruega lo notifique al remitente y proceda a su borrado.
> Gracias por su colaboracion.
>
> ______________________
>


More information about the U-Boot mailing list