vmbase: Move dbm to aarch64

Moving management of Dirty pages to aarch64 director as a preparation for adding new CPU Architecture.

Bug: 362733888
Test: m libvmbase

Change-Id: Id8660e8d42229970785d4374b6f55819489961ec
diff --git a/libs/libvmbase/src/arch.rs b/libs/libvmbase/src/arch.rs
index 10e5e37..c60c651 100644
--- a/libs/libvmbase/src/arch.rs
+++ b/libs/libvmbase/src/arch.rs
@@ -26,6 +26,9 @@
 #[cfg(target_arch = "aarch64")]
 pub use aarch64::linker;
 
+#[cfg(target_arch = "aarch64")]
+pub use aarch64::dbm;
+
 /// Write with well-defined compiled behavior.
 ///
 /// See https://github.com/rust-lang/rust/issues/131894
diff --git a/libs/libvmbase/src/arch/aarch64.rs b/libs/libvmbase/src/arch/aarch64.rs
index 2933386..a3f1dd5 100644
--- a/libs/libvmbase/src/arch/aarch64.rs
+++ b/libs/libvmbase/src/arch/aarch64.rs
@@ -14,6 +14,7 @@
 
 //! Wrappers of assembly calls.
 
+pub mod dbm;
 pub mod layout;
 pub mod linker;
 pub mod page_table;
diff --git a/libs/libvmbase/src/memory/dbm.rs b/libs/libvmbase/src/arch/aarch64/dbm.rs
similarity index 94%
rename from libs/libvmbase/src/memory/dbm.rs
rename to libs/libvmbase/src/arch/aarch64/dbm.rs
index b68b840..1c2190c 100644
--- a/libs/libvmbase/src/memory/dbm.rs
+++ b/libs/libvmbase/src/arch/aarch64/dbm.rs
@@ -21,7 +21,7 @@
 
 /// Sets whether the hardware management of access and dirty state is enabled with
 /// the given boolean.
-pub(super) fn set_dbm_enabled(enabled: bool) {
+pub fn set_dbm_enabled(enabled: bool) {
     if !dbm_available() {
         return;
     }
@@ -49,8 +49,9 @@
     read_sysreg!("id_aa64mmfr1_el1") & DBM_AVAILABLE != 0
 }
 
+#[allow(clippy::result_unit_err)]
 /// Flushes a memory range the descriptor refers to, if the descriptor is in writable-dirty state.
-pub(super) fn flush_dirty_range(
+pub fn flush_dirty_range(
     va_range: &MemoryRegion,
     desc: &Descriptor,
     _level: usize,
@@ -62,9 +63,10 @@
     Ok(())
 }
 
+#[allow(clippy::result_unit_err)]
 /// Clears read-only flag on a PTE, making it writable-dirty. Used when dirty state is managed
 /// in software to handle permission faults on read-only descriptors.
-pub(super) fn mark_dirty_block(
+pub fn mark_dirty_block(
     va_range: &MemoryRegion,
     desc: &mut Descriptor,
     _level: usize,
diff --git a/libs/libvmbase/src/memory.rs b/libs/libvmbase/src/memory.rs
index 6058639..afd70aa 100644
--- a/libs/libvmbase/src/memory.rs
+++ b/libs/libvmbase/src/memory.rs
@@ -14,7 +14,6 @@
 
 //! Memory management.
 
-mod dbm;
 mod error;
 mod shared;
 mod stack;
diff --git a/libs/libvmbase/src/memory/tracker.rs b/libs/libvmbase/src/memory/tracker.rs
index a1caced..880e4da 100644
--- a/libs/libvmbase/src/memory/tracker.rs
+++ b/libs/libvmbase/src/memory/tracker.rs
@@ -14,10 +14,10 @@
 
 //! Memory management.
 
-use super::dbm::{flush_dirty_range, mark_dirty_block, set_dbm_enabled};
 use super::error::MemoryTrackerError;
 use super::shared::{SHARED_MEMORY, SHARED_POOL};
 use crate::arch::aarch64::page_table::{PageTable, MMIO_LAZY_MAP_FLAG};
+use crate::arch::dbm::{flush_dirty_range, mark_dirty_block, set_dbm_enabled};
 use crate::dsb;
 use crate::layout;
 use crate::memory::shared::{MemoryRange, MemorySharer, MmioSharer};