[U-Boot] Uboot as x86_64 EFI payload

Javier Santos Romo jsantos at gmv.com
Mon Feb 5 08:07:15 UTC 2018


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.

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