From d06ade297d748035f16ad0baeca2ae69082a4906 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 28 Mar 2026 22:02:34 +0100 Subject: [PATCH] rmm: Remove fallback impl of invalidate_all It doesn't work on all non-x86 architectures. --- rmm/src/arch/mod.rs | 10 +--------- rmm/src/arch/x86.rs | 5 +++++ rmm/src/arch/x86_64.rs | 5 +++++ 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/rmm/src/arch/mod.rs b/rmm/src/arch/mod.rs index a5f92a80bc..cf5c4f4a76 100644 --- a/rmm/src/arch/mod.rs +++ b/rmm/src/arch/mod.rs @@ -79,17 +79,9 @@ pub trait Arch: Clone + Copy { } unsafe fn invalidate(address: VirtualAddress); - - #[inline(always)] - unsafe fn invalidate_all() { - unsafe { - //TODO: this stub only works on x86_64, maybe make the arch implement this? - Self::set_table(TableKind::User, Self::table(TableKind::User)); - } - } + unsafe fn invalidate_all(); unsafe fn table(table_kind: TableKind) -> PhysicalAddress; - unsafe fn set_table(table_kind: TableKind, address: PhysicalAddress); #[inline(always)] diff --git a/rmm/src/arch/x86.rs b/rmm/src/arch/x86.rs index 85d6c736df..91d73c3be0 100644 --- a/rmm/src/arch/x86.rs +++ b/rmm/src/arch/x86.rs @@ -36,6 +36,11 @@ impl Arch for X86Arch { unsafe { asm!("invlpg [{0}]", in(reg) address.data()) }; } + #[inline(always)] + unsafe fn invalidate_all() { + unsafe { Self::set_table(TableKind::User, Self::table(TableKind::User)) }; + } + #[inline(always)] unsafe fn table(_table_kind: TableKind) -> PhysicalAddress { let address: usize; diff --git a/rmm/src/arch/x86_64.rs b/rmm/src/arch/x86_64.rs index 7b3d8ad95c..10b6dbd8ee 100644 --- a/rmm/src/arch/x86_64.rs +++ b/rmm/src/arch/x86_64.rs @@ -35,6 +35,11 @@ impl Arch for X8664Arch { unsafe { asm!("invlpg [{0}]", in(reg) address.data()) }; } + #[inline(always)] + unsafe fn invalidate_all() { + unsafe { Self::set_table(TableKind::User, Self::table(TableKind::User)) }; + } + #[inline(always)] unsafe fn table(_table_kind: TableKind) -> PhysicalAddress { let address: usize;