g_part,mkimg: Add additional GPT partition types

Add the hifive-fsbl, hifive-bbl, and xbootldr aliases to mkimg(1).
Add the xbootldr alias to geom(4), and thus gpart(8).

The "hifive" partition types are defined and used by various RISC-V SBCs
for locating firmware.

"xbootldr", or the Extended Boot Loader Partition is defined here:
https://uapi-group.org/specifications/specs/boot_loader_specification/

Reviewed by:	emaste, markj, mhorne
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D56784
This commit is contained in:
Brian Scott
2026-05-11 13:24:46 -03:00
committed by Mitchell Horne
parent 351fad05e0
commit dab8138e13
7 changed files with 19 additions and 0 deletions
+1
View File
@@ -135,6 +135,7 @@ struct g_part_alias_list {
{ "vmware-vmfs", G_PART_ALIAS_VMFS },
{ "vmware-vmkdiag", G_PART_ALIAS_VMKDIAG },
{ "vmware-vsanhdr", G_PART_ALIAS_VMVSANHDR },
{ "xbootldr", G_PART_ALIAS_XBOOTLDR },
};
SYSCTL_DECL(_kern_geom);
+2
View File
@@ -108,6 +108,8 @@ enum g_part_alias {
G_PART_ALIAS_VMKDIAG, /* A VMware vmkDiagnostic partition entry */
G_PART_ALIAS_VMRESERVED, /* A VMware reserved partition entry */
G_PART_ALIAS_VMVSANHDR, /* A VMware vSAN header partition entry */
G_PART_ALIAS_XBOOTLDR, /* A Systemd/Linux extended boot partition
Also used by visionfive2 as part of the boot sequence */
/* Keep the following last */
G_PART_ALIAS_COUNT
};
+2
View File
@@ -230,6 +230,7 @@ static struct uuid gpt_uuid_vmfs = GPT_ENT_TYPE_VMFS;
static struct uuid gpt_uuid_vmkdiag = GPT_ENT_TYPE_VMKDIAG;
static struct uuid gpt_uuid_vmreserved = GPT_ENT_TYPE_VMRESERVED;
static struct uuid gpt_uuid_vmvsanhdr = GPT_ENT_TYPE_VMVSANHDR;
static struct uuid gpt_uuid_xbootldr = GPT_ENT_TYPE_XBOOTLDR;
static struct g_part_uuid_alias {
struct uuid *uuid;
@@ -302,6 +303,7 @@ static struct g_part_uuid_alias {
{ &gpt_uuid_vmkdiag, G_PART_ALIAS_VMKDIAG, 0 },
{ &gpt_uuid_vmreserved, G_PART_ALIAS_VMRESERVED, 0 },
{ &gpt_uuid_vmvsanhdr, G_PART_ALIAS_VMVSANHDR, 0 },
{ &gpt_uuid_xbootldr, G_PART_ALIAS_XBOOTLDR, 0 },
{ NULL, 0, 0 }
};
+2
View File
@@ -261,6 +261,8 @@ CTASSERT(sizeof(struct gpt_ent) == 128);
#define GPT_ENT_TYPE_U_BOOT_ENV \
{0x3de21764,0x95bd,0x54bd,0xa5,0xc3,{0x4a,0xbe,0x78,0x6f,0x38,0xa8}}
#define GPT_ENT_TYPE_XBOOTLDR \
{0xbc13c2ff,0x59e6,0x4262,0xa3,0x52,{0xb2,0x75,0xfd,0x6f,0x71,0x72}}
/*
* Boot partition used by GRUB 2.
+6
View File
@@ -52,6 +52,9 @@ static mkimg_uuid_t gpt_uuid_freebsd_zfs = GPT_ENT_TYPE_FREEBSD_ZFS;
static mkimg_uuid_t gpt_uuid_mbr = GPT_ENT_TYPE_MBR;
static mkimg_uuid_t gpt_uuid_ms_basic_data = GPT_ENT_TYPE_MS_BASIC_DATA;
static mkimg_uuid_t gpt_uuid_prep_boot = GPT_ENT_TYPE_PREP_BOOT;
static mkimg_uuid_t gpt_uuid_hifive_bbl = GPT_ENT_TYPE_HIFIVE_BBL;
static mkimg_uuid_t gpt_uuid_xbootldr = GPT_ENT_TYPE_XBOOTLDR;
static mkimg_uuid_t gpt_uuid_hifive_fsbl = GPT_ENT_TYPE_HIFIVE_FSBL;
static struct mkimg_alias gpt_aliases[] = {
{ ALIAS_EFI, ALIAS_PTR2TYPE(&gpt_uuid_efi) },
@@ -65,6 +68,9 @@ static struct mkimg_alias gpt_aliases[] = {
{ ALIAS_MBR, ALIAS_PTR2TYPE(&gpt_uuid_mbr) },
{ ALIAS_NTFS, ALIAS_PTR2TYPE(&gpt_uuid_ms_basic_data) },
{ ALIAS_PPCBOOT, ALIAS_PTR2TYPE(&gpt_uuid_prep_boot) },
{ ALIAS_HIFIVE_BBL, ALIAS_PTR2TYPE(&gpt_uuid_hifive_bbl) },
{ ALIAS_XBOOTLDR, ALIAS_PTR2TYPE(&gpt_uuid_xbootldr) },
{ ALIAS_HIFIVE_FSBL, ALIAS_PTR2TYPE(&gpt_uuid_hifive_fsbl) },
{ ALIAS_NONE, 0 } /* Keep last! */
};
+3
View File
@@ -58,6 +58,9 @@ static struct {
{ "mbr", ALIAS_MBR },
{ "ntfs", ALIAS_NTFS },
{ "prepboot", ALIAS_PPCBOOT },
{ "hifive-bbl", ALIAS_HIFIVE_BBL },
{ "xbootldr", ALIAS_XBOOTLDR },
{ "hifive-fsbl", ALIAS_HIFIVE_FSBL },
{ NULL, ALIAS_NONE } /* Keep last! */
};
+3
View File
@@ -47,6 +47,9 @@ enum alias {
ALIAS_MBR,
ALIAS_NTFS,
ALIAS_PPCBOOT,
ALIAS_HIFIVE_BBL,
ALIAS_XBOOTLDR,
ALIAS_HIFIVE_FSBL,
/* end */
ALIAS_COUNT /* Keep last! */
};