* [U-Boot] [PATCH] WIP: Example changes to build EFI stub for x86
@ 2016-04-06 15:06 Simon Glass
2016-04-06 15:50 ` Nicolae Rosia
0 siblings, 1 reply; 3+ messages in thread
From: Simon Glass @ 2016-04-06 15:06 UTC (permalink / raw)
To: u-boot
Currently it is not possible to build the 64-bit EFI stub due to changes in
the build. To prevent future bit rot, we should add target for building
qemu-x86 as an EFI stub (with U-Boot as a 32-bit payload).
This patch provides some hints.
Reported-by: Nicolae Rosia <nicolae.rosia@gmail.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
---
arch/x86/include/asm/types.h | 12 ++++++++----
configs/qemu-x86_defconfig | 3 +++
include/efi.h | 2 +-
lib/efi/efi_stub.c | 6 +++---
4 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/arch/x86/include/asm/types.h b/arch/x86/include/asm/types.h
index 766617f..998d70a 100644
--- a/arch/x86/include/asm/types.h
+++ b/arch/x86/include/asm/types.h
@@ -44,11 +44,15 @@ typedef __INT64_TYPE__ s64;
typedef __UINT64_TYPE__ u64;
#endif
-#ifdef CONFIG_EFI_STUB_64BIT
-#define BITS_PER_LONG 64
-#else
+/*
+ * This should be defined only when compiling the stub - see the
+ * ecmd_u-boot_payload build rule
+ */
+// #ifdef CONFIG_EFI_STUB_64BIT
+// #define BITS_PER_LONG 64
+// #else
#define BITS_PER_LONG 32
-#endif
+// #endif
/* Dma addresses are 32-bits wide. */
typedef u32 dma_addr_t;
diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
index bb9c6cd..2a7087f 100644
--- a/configs/qemu-x86_defconfig
+++ b/configs/qemu-x86_defconfig
@@ -32,3 +32,6 @@ CONFIG_VIDEO_VESA=y
CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_111=y
CONFIG_USE_PRIVATE_LIBGCC=y
+CONFIG_EFI=y
+CONFIG_EFI_STUB=y
+CONFIG_EFI_STUB_64BIT=y
diff --git a/include/efi.h b/include/efi.h
index 1dbc3b7..21921f1 100644
--- a/include/efi.h
+++ b/include/efi.h
@@ -278,7 +278,7 @@ struct efi_priv {
extern char image_base[];
/* Start and end of U-Boot image (for payload) */
-extern char _binary_u_boot_dtb_bin_start[], _binary_u_boot_dtb_bin_end[];
+extern char _binary_u_boot_bin_start[], _binary_u_boot_bin_end[];
/**
* efi_get_sys_table() - Get access to the main EFI system table
diff --git a/lib/efi/efi_stub.c b/lib/efi/efi_stub.c
index 8b4bb4e..1814960 100644
--- a/lib/efi/efi_stub.c
+++ b/lib/efi/efi_stub.c
@@ -354,9 +354,9 @@ efi_status_t efi_main(efi_handle_t image, struct efi_system_table *sys_table)
/* The EFI UART won't work now, switch to a debug one */
use_uart = true;
- memcpy((void *)CONFIG_SYS_TEXT_BASE, _binary_u_boot_dtb_bin_start,
- (ulong)_binary_u_boot_dtb_bin_end -
- (ulong)_binary_u_boot_dtb_bin_start);
+ memcpy((void *)CONFIG_SYS_TEXT_BASE, _binary_u_boot_bin_start,
+ (ulong)_binary_u_boot_bin_end -
+ (ulong)_binary_u_boot_bin_start);
#ifdef DEBUG
puts("EFI table at ");
--
2.8.0.rc3.226.g39d4020
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [U-Boot] [PATCH] WIP: Example changes to build EFI stub for x86
2016-04-06 15:06 [U-Boot] [PATCH] WIP: Example changes to build EFI stub for x86 Simon Glass
@ 2016-04-06 15:50 ` Nicolae Rosia
2016-04-06 18:32 ` Simon Glass
0 siblings, 1 reply; 3+ messages in thread
From: Nicolae Rosia @ 2016-04-06 15:50 UTC (permalink / raw)
To: u-boot
Hi,
On Wed, Apr 6, 2016 at 6:06 PM, Simon Glass <sjg@chromium.org> wrote:
> Currently it is not possible to build the 64-bit EFI stub due to changes in
> the build. To prevent future bit rot, we should add target for building
> qemu-x86 as an EFI stub (with U-Boot as a 32-bit payload).
>
> This patch provides some hints.
>
> Reported-by: Nicolae Rosia <nicolae.rosia@gmail.com>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
> arch/x86/include/asm/types.h | 12 ++++++++----
> configs/qemu-x86_defconfig | 3 +++
> include/efi.h | 2 +-
> lib/efi/efi_stub.c | 6 +++---
> 4 files changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/arch/x86/include/asm/types.h b/arch/x86/include/asm/types.h
> index 766617f..998d70a 100644
> --- a/arch/x86/include/asm/types.h
> +++ b/arch/x86/include/asm/types.h
> @@ -44,11 +44,15 @@ typedef __INT64_TYPE__ s64;
> typedef __UINT64_TYPE__ u64;
> #endif
>
> -#ifdef CONFIG_EFI_STUB_64BIT
> -#define BITS_PER_LONG 64
> -#else
> +/*
> + * This should be defined only when compiling the stub - see the
> + * ecmd_u-boot_payload build rule
> + */
Are you saying that I should take a look at cmd_u-boot_payload in Makefile?
I've looked over it and I don't figure out what I should see.
> +// #ifdef CONFIG_EFI_STUB_64BIT
> +// #define BITS_PER_LONG 64
> +// #else
> #define BITS_PER_LONG 32
> -#endif
> +// #endif
This fixes the compilation warnings
> /* Dma addresses are 32-bits wide. */
>
> typedef u32 dma_addr_t;
> diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
> index bb9c6cd..2a7087f 100644
> --- a/configs/qemu-x86_defconfig
> +++ b/configs/qemu-x86_defconfig
> @@ -32,3 +32,6 @@ CONFIG_VIDEO_VESA=y
> CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
> CONFIG_FRAMEBUFFER_VESA_MODE_111=y
> CONFIG_USE_PRIVATE_LIBGCC=y
> +CONFIG_EFI=y
> +CONFIG_EFI_STUB=y
> +CONFIG_EFI_STUB_64BIT=y
Should we create an example defconfig for efi stub and not modify the
qemu defconfig?
> diff --git a/include/efi.h b/include/efi.h
> index 1dbc3b7..21921f1 100644
> --- a/include/efi.h
> +++ b/include/efi.h
> @@ -278,7 +278,7 @@ struct efi_priv {
> extern char image_base[];
>
> /* Start and end of U-Boot image (for payload) */
> -extern char _binary_u_boot_dtb_bin_start[], _binary_u_boot_dtb_bin_end[];
> +extern char _binary_u_boot_bin_start[], _binary_u_boot_bin_end[];
>
> /**
> * efi_get_sys_table() - Get access to the main EFI system table
> diff --git a/lib/efi/efi_stub.c b/lib/efi/efi_stub.c
> index 8b4bb4e..1814960 100644
> --- a/lib/efi/efi_stub.c
> +++ b/lib/efi/efi_stub.c
> @@ -354,9 +354,9 @@ efi_status_t efi_main(efi_handle_t image, struct efi_system_table *sys_table)
> /* The EFI UART won't work now, switch to a debug one */
> use_uart = true;
>
> - memcpy((void *)CONFIG_SYS_TEXT_BASE, _binary_u_boot_dtb_bin_start,
> - (ulong)_binary_u_boot_dtb_bin_end -
> - (ulong)_binary_u_boot_dtb_bin_start);
> + memcpy((void *)CONFIG_SYS_TEXT_BASE, _binary_u_boot_bin_start,
> + (ulong)_binary_u_boot_bin_end -
> + (ulong)_binary_u_boot_bin_start);
>
Thanks, these fixes the compilation errors.
> #ifdef DEBUG
> puts("EFI table at ");
> --
> 2.8.0.rc3.226.g39d4020
>
I'll try to boot test.
Best regards,
Nicolae
^ permalink raw reply [flat|nested] 3+ messages in thread
* [U-Boot] [PATCH] WIP: Example changes to build EFI stub for x86
2016-04-06 15:50 ` Nicolae Rosia
@ 2016-04-06 18:32 ` Simon Glass
0 siblings, 0 replies; 3+ messages in thread
From: Simon Glass @ 2016-04-06 18:32 UTC (permalink / raw)
To: u-boot
Hi Nicolae,
On 6 April 2016 at 09:50, Nicolae Rosia <nicolae.rosia@gmail.com> wrote:
> Hi,
>
> On Wed, Apr 6, 2016 at 6:06 PM, Simon Glass <sjg@chromium.org> wrote:
>> Currently it is not possible to build the 64-bit EFI stub due to changes in
>> the build. To prevent future bit rot, we should add target for building
>> qemu-x86 as an EFI stub (with U-Boot as a 32-bit payload).
>>
>> This patch provides some hints.
>>
>> Reported-by: Nicolae Rosia <nicolae.rosia@gmail.com>
>> Signed-off-by: Simon Glass <sjg@chromium.org>
>> ---
>>
>> arch/x86/include/asm/types.h | 12 ++++++++----
>> configs/qemu-x86_defconfig | 3 +++
>> include/efi.h | 2 +-
>> lib/efi/efi_stub.c | 6 +++---
>> 4 files changed, 15 insertions(+), 8 deletions(-)
>>
>> diff --git a/arch/x86/include/asm/types.h b/arch/x86/include/asm/types.h
>> index 766617f..998d70a 100644
>> --- a/arch/x86/include/asm/types.h
>> +++ b/arch/x86/include/asm/types.h
>> @@ -44,11 +44,15 @@ typedef __INT64_TYPE__ s64;
>> typedef __UINT64_TYPE__ u64;
>> #endif
>>
>> -#ifdef CONFIG_EFI_STUB_64BIT
>> -#define BITS_PER_LONG 64
>> -#else
>> +/*
>> + * This should be defined only when compiling the stub - see the
>> + * ecmd_u-boot_payload build rule
>> + */
> Are you saying that I should take a look at cmd_u-boot_payload in Makefile?
> I've looked over it and I don't figure out what I should see.
Just the list of files that it builds there (efi.c and efi_stub.c).
>
>> +// #ifdef CONFIG_EFI_STUB_64BIT
>> +// #define BITS_PER_LONG 64
>> +// #else
>> #define BITS_PER_LONG 32
>> -#endif
>> +// #endif
> This fixes the compilation warnings
Right, but a correct patch will obey the comment immediately above.
>
>> /* Dma addresses are 32-bits wide. */
>>
>> typedef u32 dma_addr_t;
>> diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
>> index bb9c6cd..2a7087f 100644
>> --- a/configs/qemu-x86_defconfig
>> +++ b/configs/qemu-x86_defconfig
>> @@ -32,3 +32,6 @@ CONFIG_VIDEO_VESA=y
>> CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
>> CONFIG_FRAMEBUFFER_VESA_MODE_111=y
>> CONFIG_USE_PRIVATE_LIBGCC=y
>> +CONFIG_EFI=y
>> +CONFIG_EFI_STUB=y
>> +CONFIG_EFI_STUB_64BIT=y
> Should we create an example defconfig for efi stub and not modify the
> qemu defconfig?
I suggest a new board config called qemu-x86-efi. It can copy qemu,
with the addition of the above three options.
>
>> diff --git a/include/efi.h b/include/efi.h
>> index 1dbc3b7..21921f1 100644
>> --- a/include/efi.h
>> +++ b/include/efi.h
>> @@ -278,7 +278,7 @@ struct efi_priv {
>> extern char image_base[];
>>
>> /* Start and end of U-Boot image (for payload) */
>> -extern char _binary_u_boot_dtb_bin_start[], _binary_u_boot_dtb_bin_end[];
>> +extern char _binary_u_boot_bin_start[], _binary_u_boot_bin_end[];
>>
>> /**
>> * efi_get_sys_table() - Get access to the main EFI system table
>> diff --git a/lib/efi/efi_stub.c b/lib/efi/efi_stub.c
>> index 8b4bb4e..1814960 100644
>> --- a/lib/efi/efi_stub.c
>> +++ b/lib/efi/efi_stub.c
>> @@ -354,9 +354,9 @@ efi_status_t efi_main(efi_handle_t image, struct efi_system_table *sys_table)
>> /* The EFI UART won't work now, switch to a debug one */
>> use_uart = true;
>>
>> - memcpy((void *)CONFIG_SYS_TEXT_BASE, _binary_u_boot_dtb_bin_start,
>> - (ulong)_binary_u_boot_dtb_bin_end -
>> - (ulong)_binary_u_boot_dtb_bin_start);
>> + memcpy((void *)CONFIG_SYS_TEXT_BASE, _binary_u_boot_bin_start,
>> + (ulong)_binary_u_boot_bin_end -
>> + (ulong)_binary_u_boot_bin_start);
>>
> Thanks, these fixes the compilation errors.
>
>> #ifdef DEBUG
>> puts("EFI table at ");
>> --
>> 2.8.0.rc3.226.g39d4020
>>
>
> I'll try to boot test.
OK, but it is still broken without the fix mentioned above.
>
> Best regards,
> Nicolae
Regards,
Simon
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-04-06 18:32 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-06 15:06 [U-Boot] [PATCH] WIP: Example changes to build EFI stub for x86 Simon Glass
2016-04-06 15:50 ` Nicolae Rosia
2016-04-06 18:32 ` Simon Glass
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.