git: dab8138e13de - main - g_part,mkimg: Add additional GPT partition types
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 12 May 2026 14:00:44 UTC
The branch main has been updated by mhorne:
URL: https://cgit.FreeBSD.org/src/commit/?id=dab8138e13dea539a387c458979403980a137bf2
commit dab8138e13dea539a387c458979403980a137bf2
Author: Brian Scott <bscott@bunyatech.com.au>
AuthorDate: 2026-05-11 16:24:46 +0000
Commit: Mitchell Horne <mhorne@FreeBSD.org>
CommitDate: 2026-05-12 14:00:10 +0000
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
---
sys/geom/part/g_part.c | 1 +
sys/geom/part/g_part.h | 2 ++
sys/geom/part/g_part_gpt.c | 2 ++
sys/sys/disk/gpt.h | 2 ++
usr.bin/mkimg/gpt.c | 6 ++++++
usr.bin/mkimg/scheme.c | 3 +++
usr.bin/mkimg/scheme.h | 3 +++
7 files changed, 19 insertions(+)
diff --git a/sys/geom/part/g_part.c b/sys/geom/part/g_part.c
index 1e4236507fa4..6c4c37d9bfce 100644
--- a/sys/geom/part/g_part.c
+++ b/sys/geom/part/g_part.c
@@ -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);
diff --git a/sys/geom/part/g_part.h b/sys/geom/part/g_part.h
index 575d97623e9b..1355cfec66a0 100644
--- a/sys/geom/part/g_part.h
+++ b/sys/geom/part/g_part.h
@@ -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
};
diff --git a/sys/geom/part/g_part_gpt.c b/sys/geom/part/g_part_gpt.c
index 4733631c4b20..eeca5fbfae17 100644
--- a/sys/geom/part/g_part_gpt.c
+++ b/sys/geom/part/g_part_gpt.c
@@ -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 }
};
diff --git a/sys/sys/disk/gpt.h b/sys/sys/disk/gpt.h
index 426ae835c0c1..65b00f5de733 100644
--- a/sys/sys/disk/gpt.h
+++ b/sys/sys/disk/gpt.h
@@ -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.
diff --git a/usr.bin/mkimg/gpt.c b/usr.bin/mkimg/gpt.c
index ce817ea10ed2..4471cfa1d4b4 100644
--- a/usr.bin/mkimg/gpt.c
+++ b/usr.bin/mkimg/gpt.c
@@ -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! */
};
diff --git a/usr.bin/mkimg/scheme.c b/usr.bin/mkimg/scheme.c
index 80ff456a709f..b64cfe8bd007 100644
--- a/usr.bin/mkimg/scheme.c
+++ b/usr.bin/mkimg/scheme.c
@@ -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! */
};
diff --git a/usr.bin/mkimg/scheme.h b/usr.bin/mkimg/scheme.h
index 1c234b86d66c..7a5e09036ee3 100644
--- a/usr.bin/mkimg/scheme.h
+++ b/usr.bin/mkimg/scheme.h
@@ -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! */
};