Compare commits

..

2 Commits
c10s ... a10s

2 changed files with 87 additions and 0 deletions

View File

@ -0,0 +1,84 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Andrew Lukoshko <alukoshko@almalinux.org>
Date: Thu, 20 Feb 2026 00:00:00 +0000
Subject: [PATCH] Add riscv64 architecture support
Add RISC-V 64-bit (riscv64) to EfiArch enum with native() support.
There is no DBX data for riscv64 yet, so get_dbx() will panic if
called for the riscv64 variant.
Signed-off-by: Andrew Lukoshko <alukoshko@almalinux.org>
---
libefi/src/arch.rs | 14 +++++++++++++-
libefi/src/sb/dbx/mod.rs | 1 +
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/libefi/src/arch.rs b/libefi/src/arch.rs
index e823a5c..ff98e8a 100644
--- a/libefi/src/arch.rs
+++ b/libefi/src/arch.rs
@@ -9,6 +9,7 @@ use clap::{builder::PossibleValue, ValueEnum};
pub enum EfiArch {
X64,
Aa64,
+ Riscv64,
}
impl EfiArch {
@@ -16,6 +17,7 @@ impl EfiArch {
match self {
EfiArch::X64 => "x64",
EfiArch::Aa64 => "aa64",
+ EfiArch::Riscv64 => "riscv64",
}
}
@@ -23,6 +25,7 @@ impl EfiArch {
match self {
EfiArch::X64 => "X64",
EfiArch::Aa64 => "AA64",
+ EfiArch::Riscv64 => "RISCV64",
}
}
@@ -35,12 +38,17 @@ impl EfiArch {
pub fn native() -> Self {
EfiArch::X64
}
+
+ #[cfg(target_arch = "riscv64")]
+ pub fn native() -> Self {
+ EfiArch::Riscv64
+ }
}
#[cfg(feature = "std")]
impl ValueEnum for EfiArch {
fn value_variants<'a>() -> &'a [Self] {
- static VARIANTS: [EfiArch; 2] = [EfiArch::Aa64, EfiArch::X64];
+ static VARIANTS: [EfiArch; 3] = [EfiArch::Aa64, EfiArch::X64, EfiArch::Riscv64];
&VARIANTS
}
@@ -48,6 +56,7 @@ impl ValueEnum for EfiArch {
let pv = match self {
EfiArch::Aa64 => PossibleValue::new("aa64").aliases(["AA64", "aarch64", "arm64"]),
EfiArch::X64 => PossibleValue::new("x64").aliases(["X64", "x86_64", "amd64"]),
+ EfiArch::Riscv64 => PossibleValue::new("riscv64").aliases(["RISCV64", "riscv64gc"]),
};
Some(pv)
}
diff --git a/libefi/src/sb/dbx/mod.rs b/libefi/src/sb/dbx/mod.rs
index 91d47b7..b519ecf 100644
--- a/libefi/src/sb/dbx/mod.rs
+++ b/libefi/src/sb/dbx/mod.rs
@@ -14,6 +14,7 @@ pub fn get_dbx(arch: EfiArch) -> &'static [u8] {
match arch {
EfiArch::X64 => DBX_X86_64,
EfiArch::Aa64 => DBX_AARCH64,
+ EfiArch::Riscv64 => panic!("no DBX data available for riscv64"),
}
}
--
2.43.0

View File

@ -9,6 +9,9 @@ Source0: https://gitlab.com/kraxel/%{name}/-/archive/v%{version}/%{name}-
Source1: %{name}-vendor-v%{version}.tar.gz
Source2: config-vendor.toml
# AlmaLinux Patch
Patch1001: 0001-Add-riscv64-architecture-support.patch
ExclusiveArch: x86_64 aarch64 riscv64
BuildRequires: cargo rustc
BuildRequires: pkgconfig(libudev)