efi_loader: Pass file path to payload

The payload gets information on where it got loaded from. This includes
the device as well as file path.

So far we've treated both as the same thing and always gave it the device
name. However, in some situations grub2 actually wants to find its loading
path to find its configuration file.

So let's split the two semantically separte bits into separate structs and
pass the loaded file name into our payload when we load it using "load".

Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
Alexander Graf 2016-04-11 16:16:19 +02:00 committed by Tom Rini
parent 8c3df0bf2e
commit c07ad7c035
3 changed files with 30 additions and 10 deletions

View file

@ -112,7 +112,7 @@ efi_status_t efi_exit_func(efi_status_t ret);
/* Call this to relocate the runtime section to an address space */
void efi_runtime_relocate(ulong offset, struct efi_mem_desc *map);
/* Call this to set the current device name */
void efi_set_bootdev(const char *dev, const char *devnr);
void efi_set_bootdev(const char *dev, const char *devnr, const char *path);
/* Generic EFI memory allocator, call this to get memory */
void *efi_alloc(uint64_t len, int memory_type);
@ -155,6 +155,7 @@ static inline void ascii2unicode(u16 *unicode, char *ascii)
/* No loader configured, stub out EFI_ENTRY */
static inline void efi_restore_gd(void) { }
static inline void efi_set_bootdev(const char *dev, const char *devnr) { }
static inline void efi_set_bootdev(const char *dev, const char *devnr,
const char *path) { }
#endif