summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2026-02-15 13:28:32 -0600
committerTom Rini <[email protected]>2026-02-15 13:28:32 -0600
commited6e970569b45c02a354f443502ed7616e0b0adf (patch)
treedef3e781dc1ef06f641997f3adbf3eaa000ccde7 /include
parent136faf7b0cc92af1d38b0db1bfaa5405e884ee2d (diff)
parente54fbb2f901e897b2a2fb2a718a1ef1607b20ce5 (diff)
Merge tag 'efi-next-2026-02-15' of https://source.denx.de/u-boot/custodians/u-boot-efi into next
Pull request efi-next-2026-02-15 CI: https://source.denx.de/u-boot/custodians/u-boot-efi/-/jobs/1380382 UEFI: * Add MBR support to EFI_PARTITION_INFO_PROTOCOL * disk: part_dos: Move header to the main include directory * disk: part_dos: Align dos_partition_t with struct partition * disk: part_efi: Remove redundant struct partition definition * disk: part_dos: Document part_get_info_extended() helper function * disk: part_dos: Refactor to allow retrieving raw MBR partition data * efi_loader: disk: Extend EFI_PARTITION_INFO_PROTOCOL to support MBR * efi_selftest: Enhance MBR test for PARTITION_INFO_PROTOCOL * Prepare for supporting more stores (e.g. SPI-flash) for EFI variables. * efi_var: Unify read/write access helper function * efi_loader: Setup default location for UEFI Variables storing * efi_var_file: refactor to move buffer functions
Diffstat (limited to 'include')
-rw-r--r--include/efi_variable.h18
-rw-r--r--include/part.h14
-rw-r--r--include/part_dos.h37
-rw-r--r--include/part_efi.h19
4 files changed, 63 insertions, 25 deletions
diff --git a/include/efi_variable.h b/include/efi_variable.h
index 4065cf45eca..fc1184e5ca1 100644
--- a/include/efi_variable.h
+++ b/include/efi_variable.h
@@ -137,13 +137,11 @@ struct efi_var_file {
};
/**
- * efi_var_to_file() - save non-volatile variables as file
- *
- * File ubootefi.var is created on the EFI system partion.
+ * efi_var_to_storage() - save non-volatile variables
*
* Return: status code
*/
-efi_status_t efi_var_to_file(void);
+efi_status_t efi_var_to_storage(void);
/**
* efi_var_collect() - collect variables in buffer
@@ -161,6 +159,11 @@ efi_status_t efi_var_to_file(void);
efi_status_t __maybe_unused efi_var_collect(struct efi_var_file **bufp, loff_t *lenp,
u32 check_attr_mask);
+/* GUID used by Shim to store the MOK database */
+#define SHIM_LOCK_GUID \
+ EFI_GUID(0x605dab50, 0xe046, 0x4300, \
+ 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23)
+
/**
* efi_var_restore() - restore EFI variables from buffer
*
@@ -173,17 +176,14 @@ efi_status_t __maybe_unused efi_var_collect(struct efi_var_file **bufp, loff_t *
efi_status_t efi_var_restore(struct efi_var_file *buf, bool safe);
/**
- * efi_var_from_file() - read variables from file
- *
- * File ubootefi.var is read from the EFI system partitions and the variables
- * stored in the file are created.
+ * efi_var_from_storage() - read variables
*
* In case the file does not exist yet or a variable cannot be set EFI_SUCCESS
* is returned.
*
* Return: status code
*/
-efi_status_t efi_var_from_file(void);
+efi_status_t efi_var_from_storage(void);
/**
* efi_var_mem_init() - set-up variable list
diff --git a/include/part.h b/include/part.h
index daebbbc2e68..aed089d00f6 100644
--- a/include/part.h
+++ b/include/part.h
@@ -704,6 +704,20 @@ int write_mbr_partitions(struct blk_desc *dev,
int layout_mbr_partitions(struct disk_partition *p, int count,
lbaint_t total_sectors);
+/**
+ * part_get_mbr() - get the MBR partition record of a partition
+ *
+ * This function reads the MBR partition record for a given block
+ * device and partition number.
+ *
+ * @desc: block device descriptor
+ * @part: partition number for which to return the partition record
+ * @mbr: MBR partition record
+ *
+ * Return: 0 on success, otherwise error
+ */
+int part_get_mbr(struct blk_desc *desc, int part, dos_partition_t *mbr);
+
#endif
#if CONFIG_IS_ENABLED(PARTITIONS)
diff --git a/include/part_dos.h b/include/part_dos.h
new file mode 100644
index 00000000000..92956d53063
--- /dev/null
+++ b/include/part_dos.h
@@ -0,0 +1,37 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, [email protected].
+ */
+
+#ifndef _DISK_PART_DOS_H
+#define _DISK_PART_DOS_H
+
+#define DOS_PART_DISKSIG_OFFSET 0x1b8
+#define DOS_PART_TBL_OFFSET 0x1be
+#define DOS_PART_MAGIC_OFFSET 0x1fe
+#define DOS_PBR_FSTYPE_OFFSET 0x36
+#define DOS_PBR32_FSTYPE_OFFSET 0x52
+#define DOS_PBR_MEDIA_TYPE_OFFSET 0x15
+#define DOS_MBR 0
+#define DOS_PBR 1
+#define DOS_PART_TYPE_EXTENDED 0x05
+#define DOS_PART_TYPE_EXTENDED_LBA 0x0F
+#define DOS_PART_TYPE_EXTENDED_LINUX 0x85
+
+#define DOS_PART_DEFAULT_GAP 2048
+
+typedef struct dos_partition {
+ unsigned char boot_ind; /* 0x80 - active */
+ unsigned char head; /* starting head */
+ unsigned char sector; /* starting sector */
+ unsigned char cyl; /* starting cylinder */
+ unsigned char sys_ind; /* What partition type */
+ unsigned char end_head; /* end head */
+ unsigned char end_sector; /* end sector */
+ unsigned char end_cyl; /* end cylinder */
+ __le32 start_sect; /* starting sector counting from 0 */
+ __le32 nr_sects; /* nr of sectors in partition */
+} __packed dos_partition_t;
+
+#endif /* _DISK_PART_DOS_H */
diff --git a/include/part_efi.h b/include/part_efi.h
index fb402df6f13..2cea5088046 100644
--- a/include/part_efi.h
+++ b/include/part_efi.h
@@ -18,6 +18,7 @@
#define _DISK_PART_EFI_H
#include <efi.h>
+#include <part_dos.h>
#define MSDOS_MBR_SIGNATURE 0xAA55
#define MSDOS_MBR_BOOT_CODE_SIZE 440
@@ -77,20 +78,6 @@
/* linux/include/efi.h */
typedef u16 efi_char16_t;
-/* based on linux/include/genhd.h */
-struct partition {
- u8 boot_ind; /* 0x80 - active */
- u8 head; /* starting head */
- u8 sector; /* starting sector */
- u8 cyl; /* starting cylinder */
- u8 sys_ind; /* What partition type */
- u8 end_head; /* end head */
- u8 end_sector; /* end sector */
- u8 end_cyl; /* end cylinder */
- __le32 start_sect; /* starting sector counting from 0 */
- __le32 nr_sects; /* nr of sectors in partition */
-} __packed;
-
/* based on linux/fs/partitions/efi.h */
typedef struct _gpt_header {
__le64 signature;
@@ -134,7 +121,7 @@ typedef struct _legacy_mbr {
u8 boot_code[MSDOS_MBR_BOOT_CODE_SIZE];
__le32 unique_mbr_signature;
__le16 unknown;
- struct partition partition_record[4];
+ dos_partition_t partition_record[4];
__le16 signature;
} __packed legacy_mbr;
@@ -153,7 +140,7 @@ struct efi_partition_info {
u8 system;
u8 reserved[7];
union {
- struct partition mbr;
+ dos_partition_t mbr;
gpt_entry gpt;
} info;
} __packed;