[U-Boot] Uboot as x86_64 EFI payload

Simon Glass sjg at chromium.org
Sun Feb 4 13:40:37 UTC 2018


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


More information about the U-Boot mailing list