From 255a47333cc3e430d544fadf419b290213c5b11b Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Tue, 19 May 2020 07:20:46 +0200 Subject: efi_loader: add EFI_MEMORY_SP to memory attributes The UEFI 2.8 specification has introduced the EFI_MEMORY_SP memory attribute. Add it to the 'efidebug memmap' and 'efi mem' commands. Signed-off-by: Heinrich Schuchardt --- include/efi.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/efi.h b/include/efi.h index e12697a5d5..f986aad877 100644 --- a/include/efi.h +++ b/include/efi.h @@ -196,6 +196,7 @@ enum efi_mem_type { #define EFI_MEMORY_MORE_RELIABLE \ ((u64)0x0000000000010000ULL) /* higher reliability */ #define EFI_MEMORY_RO ((u64)0x0000000000020000ULL) /* read-only */ +#define EFI_MEMORY_SP ((u64)0x0000000000040000ULL) /* specific-purpose memory (SPM) */ #define EFI_MEMORY_RUNTIME ((u64)0x8000000000000000ULL) /* range requires runtime mapping */ #define EFI_MEM_DESC_VERSION 1 -- cgit From 19ecced71cfb92519e8ef7dddbc4138d871fe97c Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Wed, 20 May 2020 22:39:35 +0200 Subject: efi_loader: device path for virtio block devices The UEFI specification does not define a device sub-type for virtio. Let's use a vendor hardware node here. This avoids creation of two handles with the same device path indicating our root node. Reported-by: Ard Biesheuvel Signed-off-by: Heinrich Schuchardt --- include/efi_loader.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'include') diff --git a/include/efi_loader.h b/include/efi_loader.h index 4b48f99773..9533df26dc 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -45,6 +45,10 @@ static inline void *guidcpy(void *dst, const void *src) #define U_BOOT_HOST_DEV_GUID \ EFI_GUID(0xbbe4e671, 0x5773, 0x4ea1, \ 0x9a, 0xab, 0x3a, 0x7d, 0xbf, 0x40, 0xc4, 0x82) +/* GUID used as root for virtio devices */ +#define U_BOOT_VIRTIO_DEV_GUID \ + EFI_GUID(0x63293792, 0xadf5, 0x9325, \ + 0xb9, 0x9f, 0x4e, 0x0e, 0x45, 0x5c, 0x1b, 0x1e) /* Use internal device tree when starting UEFI application */ #define EFI_FDT_USE_INTERNAL NULL -- cgit From bf3bcef7fb8ef4b0bb56d00304a934a5a5eb187e Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Wed, 20 May 2020 23:12:02 +0200 Subject: efi_loader: device path for SATA devices Provide device path nodes for SATA devices. This avoids creation of two handles with the same device path indicating our root node. This is what the device paths for a SATA drive with four partitions could like: /VenHw(..)/Sata(0x0,0xffff,0x0) /VenHw(..)/Sata(0x0,0xffff,0x0)/HD(1,MBR,0x81ea591f,0x800,0x63ff830) /VenHw(..)/Sata(0x0,0xffff,0x0)/HD(2,MBR,0x81ea591f,0x6400800,0x9ff830) /VenHw(..)/Sata(0x0,0xffff,0x0)/HD(3,MBR,0x81ea591f,0x6e00800,0x16ef2ab0) /VenHw(..)/Sata(0x0,0xffff,0x0)/HD(4,MBR,0x81ea591f,0x1dcf3800,0x1dcedab0) Signed-off-by: Heinrich Schuchardt --- include/efi_api.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'include') diff --git a/include/efi_api.h b/include/efi_api.h index 77d6bf2660..759d911875 100644 --- a/include/efi_api.h +++ b/include/efi_api.h @@ -457,6 +457,7 @@ struct efi_device_path_acpi_path { # define DEVICE_PATH_SUB_TYPE_MSG_USB 0x05 # define DEVICE_PATH_SUB_TYPE_MSG_MAC_ADDR 0x0b # define DEVICE_PATH_SUB_TYPE_MSG_USB_CLASS 0x0f +# define DEVICE_PATH_SUB_TYPE_MSG_SATA 0x12 # define DEVICE_PATH_SUB_TYPE_MSG_NVME 0x17 # define DEVICE_PATH_SUB_TYPE_MSG_SD 0x1a # define DEVICE_PATH_SUB_TYPE_MSG_MMC 0x1d @@ -480,6 +481,13 @@ struct efi_device_path_usb { u8 usb_interface; } __packed; +struct efi_device_path_sata { + struct efi_device_path dp; + u16 hba_port; + u16 port_multiplier_port; + u16 logical_unit_number; +} __packed; + struct efi_device_path_mac_addr { struct efi_device_path dp; struct efi_mac_addr mac; -- cgit