summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2017-10-10 08:23:06 -0400
committerAlexander Graf <agraf@suse.de>2017-10-12 17:22:58 +0200
commitbf19273e81eb5e23c9bc14c3881f92a120565561 (patch)
tree0d93e3782caf9afc4295d1f8a872ab798bbd0adf /include
parentbcbc4a80462c42c5d5ccac0287b8a7d49df9e179 (diff)
efi_loader: Add mem-mapped for fallback
When we don't have a real device/image path, such as 'bootefi hello', construct a mem-mapped device-path. This fixes 'bootefi hello' after devicepath refactoring. Fixes: 95c5553ea2 ("efi_loader: refactor boot device and loaded_image handling") Signed-off-by: Rob Clark <robdclark@gmail.com> Acked-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'include')
-rw-r--r--include/efi_api.h8
-rw-r--r--include/efi_loader.h3
2 files changed, 11 insertions, 0 deletions
diff --git a/include/efi_api.h b/include/efi_api.h
index a9a6494afe..94c15b279a 100644
--- a/include/efi_api.h
+++ b/include/efi_api.h
@@ -297,8 +297,16 @@ struct efi_mac_addr {
} __packed;
#define DEVICE_PATH_TYPE_HARDWARE_DEVICE 0x01
+# define DEVICE_PATH_SUB_TYPE_MEMORY 0x03
# define DEVICE_PATH_SUB_TYPE_VENDOR 0x04
+struct efi_device_path_memory {
+ struct efi_device_path dp;
+ u32 memory_type;
+ u64 start_address;
+ u64 end_address;
+} __packed;
+
struct efi_device_path_vendor {
struct efi_device_path dp;
efi_guid_t guid;
diff --git a/include/efi_loader.h b/include/efi_loader.h
index e1179b7dcd..1b92edbd77 100644
--- a/include/efi_loader.h
+++ b/include/efi_loader.h
@@ -259,6 +259,9 @@ struct efi_device_path *efi_dp_from_part(struct blk_desc *desc, int part);
struct efi_device_path *efi_dp_from_file(struct blk_desc *desc, int part,
const char *path);
struct efi_device_path *efi_dp_from_eth(void);
+struct efi_device_path *efi_dp_from_mem(uint32_t mem_type,
+ uint64_t start_address,
+ uint64_t end_address);
void efi_dp_split_file_path(struct efi_device_path *full_path,
struct efi_device_path **device_path,
struct efi_device_path **file_path);