mbox series

[0/2] efi_loader: efi_setup: Add efi_start_obj_list() and use it to set PXE IP address

Message ID 20241206173033.2403998-1-adriano.cordova@canonical.com
Headers show
Series efi_loader: efi_setup: Add efi_start_obj_list() and use it to set PXE IP address | expand

Message

Adriano Cordova Dec. 6, 2024, 5:30 p.m. UTC
The command bootefi calls efi_init_obj_list to do the efi set up
before launching an .efi payload, but efi_init_obj_list is called
only once. There are some initializations which depend on the
environment and should be done each time a payload gets launched and
not only once and can now be done in efi_start_obj_list(). A motivation
for this change is the following order of events:

1. Launch an EFI application (e.g. bootefi hello)
2. Change the ip address
3. Launch another application which uses the pxe protocol

As the EFI pxe protocol was initialized when the handles
for efi net were created in 1., the ip was hardcoded there.

In this example, another possibility would be to make a callback for ip
address changes to go all the way up to efi_net.

Adriano Cordova (2):
  efi_loader: efi_setup: Add efi_start_obj_list() to efi_setup.c
  efi_loader: efi_net: Add efi_net_start() to efi_net.c

 include/efi_loader.h       |  1 +
 lib/efi_loader/efi_net.c   | 31 ++++++++++++++++++++++++-------
 lib/efi_loader/efi_setup.c | 24 +++++++++++++++++++++++-
 3 files changed, 48 insertions(+), 8 deletions(-)

Comments

Tom Rini Dec. 6, 2024, 7:50 p.m. UTC | #1
On Fri, Dec 06, 2024 at 02:30:31PM -0300, Adriano Cordova wrote:

> The command bootefi calls efi_init_obj_list to do the efi set up
> before launching an .efi payload, but efi_init_obj_list is called
> only once. There are some initializations which depend on the
> environment and should be done each time a payload gets launched and
> not only once and can now be done in efi_start_obj_list(). A motivation
> for this change is the following order of events:
> 
> 1. Launch an EFI application (e.g. bootefi hello)
> 2. Change the ip address
> 3. Launch another application which uses the pxe protocol
> 
> As the EFI pxe protocol was initialized when the handles
> for efi net were created in 1., the ip was hardcoded there.
> 
> In this example, another possibility would be to make a callback for ip
> address changes to go all the way up to efi_net.
> 
> Adriano Cordova (2):
>   efi_loader: efi_setup: Add efi_start_obj_list() to efi_setup.c
>   efi_loader: efi_net: Add efi_net_start() to efi_net.c
> 
>  include/efi_loader.h       |  1 +
>  lib/efi_loader/efi_net.c   | 31 ++++++++++++++++++++++++-------
>  lib/efi_loader/efi_setup.c | 24 +++++++++++++++++++++++-
>  3 files changed, 48 insertions(+), 8 deletions(-)

On top of the previous series that fixed my other issue:

Tested-by: Tom Rini <trini@konsulko.com>