From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: Sascha Hauer <s.hauer@pengutronix.de>,
Barebox List <barebox@lists.infradead.org>
Subject: Re: [PATCH 2/4] efi-payload: use handoff data to pass data to barebox proper
Date: Tue, 21 May 2024 14:39:07 +0200 [thread overview]
Message-ID: <562ff15d-1bbd-49f7-84dc-1939b3dd2261@pengutronix.de> (raw)
In-Reply-To: <20240521104913.1983970-3-s.hauer@pengutronix.de>
On 21.05.24 12:49, Sascha Hauer wrote:
> EFI payload uses custom fields in struct boarddata to pass data from PBL
> to barebox proper. handoff data was created for exactly this purpose.
> Now that we have it, switch EFI payload over to use it.
>
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Tested-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Tested with barebox as EFI payload compiled for arm64 with both
Tianocore and barebox as EFI loader.
> ---
> efi/payload/boarddata.c | 12 +++++++-----
> efi/payload/entry-multi.c | 16 +++++++---------
> include/boarddata.h | 4 ----
> include/efi/efi-payload.h | 5 +++++
> include/pbl/handoff-data.h | 1 +
> 5 files changed, 20 insertions(+), 18 deletions(-)
>
> diff --git a/efi/payload/boarddata.c b/efi/payload/boarddata.c
> index 3260e31c7b..d4e4b5ac1d 100644
> --- a/efi/payload/boarddata.c
> +++ b/efi/payload/boarddata.c
> @@ -8,25 +8,27 @@
>
> #include <efi/efi-payload.h>
> #include <efi.h>
> -#include <boarddata.h>
> #include <memory.h>
> #include <linux/kernel.h>
> #include <linux/printk.h>
> #include <debug_ll.h>
> #include <init.h>
> +#include <pbl/handoff-data.h>
>
> static int handle_efi_boarddata(void)
> {
> - const struct barebox_boarddata *bd = barebox_get_boarddata();
> + size_t size;
> + struct barebox_efi_data *efidata;
> efi_status_t efiret;
>
> - if (!barebox_boarddata_is_machine(bd, BAREBOX_MACH_TYPE_EFI))
> + efidata = handoff_data_get_entry(HANDOFF_DATA_EFI, &size);
> + if (!efidata)
> return 0;
>
> barebox_add_memory_bank("ram0", mem_malloc_start(), mem_malloc_size());
>
> - efi_parent_image = bd->image;
> - efi_sys_table = bd->sys_table;
> + efi_parent_image = efidata->image;
> + efi_sys_table = efidata->sys_table;
> BS = efi_sys_table->boottime;
> RT = efi_sys_table->runtime;
>
> diff --git a/efi/payload/entry-multi.c b/efi/payload/entry-multi.c
> index f929ab01ec..26cf2ebfa7 100644
> --- a/efi/payload/entry-multi.c
> +++ b/efi/payload/entry-multi.c
> @@ -3,18 +3,13 @@
> #include <linux/kernel.h>
> #include <linux/linkage.h>
> #include <linux/sizes.h>
> -#include <boarddata.h>
> #include <stdio.h>
> #include <efi.h>
> #include <asm/common.h>
> #include <efi/efi-util.h>
> #include <efi/efi-payload.h>
> #include <pbl.h>
> -
> -static struct barebox_boarddata boarddata = {
> - .magic = BAREBOX_BOARDDATA_MAGIC,
> - .machine = BAREBOX_MACH_TYPE_EFI,
> -};
> +#include <pbl/handoff-data.h>
>
> asmlinkage void __efistub_efi_pe_entry(void *image, struct efi_system_table *sys_table);
>
> @@ -30,16 +25,19 @@ void __efistub_efi_pe_entry(void *image, struct efi_system_table *sys_table)
> {
> size_t memsize;
> efi_physical_addr_t mem;
> + static struct barebox_efi_data efidata;
>
> #ifdef DEBUG
> sys_table->con_out->output_string(sys_table->con_out, L"\nbarebox\n");
> #endif
> pbl_set_putc(efi_putc, sys_table);
>
> - boarddata.image = image;
> - boarddata.sys_table = sys_table;
> + efidata.image = image;
> + efidata.sys_table = sys_table;
> +
> + handoff_data_add(HANDOFF_DATA_EFI, &efidata, sizeof(efidata));
>
> mem = efi_earlymem_alloc(sys_table, &memsize);
>
> - barebox_pbl_entry(mem, memsize, &boarddata);
> + barebox_pbl_entry(mem, memsize, NULL);
> }
> diff --git a/include/boarddata.h b/include/boarddata.h
> index 8c048fd957..6092d5f304 100644
> --- a/include/boarddata.h
> +++ b/include/boarddata.h
> @@ -15,10 +15,6 @@ struct barebox_boarddata {
> * that do not potientially clashes with registered machines,
> * i.e. use a number > 0x10000.
> */
> -#ifdef CONFIG_EFI_STUB
> - void *image;
> - void *sys_table;
> -#endif
> };
>
> /*
> diff --git a/include/efi/efi-payload.h b/include/efi/efi-payload.h
> index 774c069229..73b1b9bd8e 100644
> --- a/include/efi/efi-payload.h
> +++ b/include/efi/efi-payload.h
> @@ -8,6 +8,11 @@
> struct efi_system_table;
> struct efi_loaded_image;
>
> +struct barebox_efi_data {
> + void *image;
> + void *sys_table;
> +};
> +
> extern struct efi_system_table *efi_sys_table;
> extern efi_handle_t efi_parent_image;
> extern struct efi_device_path *efi_device_path;
> diff --git a/include/pbl/handoff-data.h b/include/pbl/handoff-data.h
> index 18ea9e508b..044b4bb884 100644
> --- a/include/pbl/handoff-data.h
> +++ b/include/pbl/handoff-data.h
> @@ -12,6 +12,7 @@ struct handoff_data {
> #define HANDOFF_DATA_INTERNAL_DT_Z HANDOFF_DATA_BAREBOX(1)
> #define HANDOFF_DATA_EXTERNAL_DT HANDOFF_DATA_BAREBOX(2)
> #define HANDOFF_DATA_BOARDDATA HANDOFF_DATA_BAREBOX(3)
> +#define HANDOFF_DATA_EFI HANDOFF_DATA_BAREBOX(4)
>
> #define HANDOFF_DATA_BOARD(n) (0x951726fb + (n))
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2024-05-21 12:39 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-21 10:49 [PATCH 0/4] make more use of handoff data Sascha Hauer
2024-05-21 10:49 ` [PATCH 1/4] handoff-data: put handoff data into data section Sascha Hauer
2024-05-21 10:49 ` [PATCH 2/4] efi-payload: use handoff data to pass data to barebox proper Sascha Hauer
2024-05-21 12:39 ` Ahmad Fatoum [this message]
2024-05-21 10:49 ` [PATCH 3/4] ARM: beagle: setup C environment early Sascha Hauer
2024-05-21 10:49 ` [PATCH 4/4] ARM: replace boarddata with handoff data Sascha Hauer
2024-05-22 5:42 ` [PATCH 0/4] make more use of " Sascha Hauer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=562ff15d-1bbd-49f7-84dc-1939b3dd2261@pengutronix.de \
--to=a.fatoum@pengutronix.de \
--cc=barebox@lists.infradead.org \
--cc=s.hauer@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox