pvmfw: Extract pvmfw-specific code out of mmu.rs
Prepare the file to be moved to vmbase for re-use by
- Extracting pvmfw-specific functions dealing with the appended data
and setting up the initial dynamic PTs to memory.rs
- Renaming PageTable::map_data to map_data_dbm and re-introducing
map_data for PTEs that don't set the DBM bit
- Documenting public functions
- Implementing From<IdMap> for PageTable
- Introducing a Result wrapping type
Bug: 282928116
Test: m pvmfw_img
Change-Id: Ibec97c31fa7a86e3843b6e2167c39273be68aba9
diff --git a/pvmfw/src/entry.rs b/pvmfw/src/entry.rs
index 7655f40..08f076b 100644
--- a/pvmfw/src/entry.rs
+++ b/pvmfw/src/entry.rs
@@ -20,8 +20,7 @@
use crate::heap;
use crate::helpers;
use crate::helpers::RangeExt as _;
-use crate::memory::{MemoryTracker, MEMORY};
-use crate::mmu;
+use crate::memory::{self, MemoryTracker, MEMORY};
use crate::rand;
use core::arch::asm;
use core::mem::{drop, size_of};
@@ -208,7 +207,7 @@
// script prevents it from overlapping with other objects.
let appended_data = unsafe { get_appended_data_slice() };
- let mut page_table = mmu::PageTable::from_static_layout().map_err(|e| {
+ let mut page_table = memory::init_page_table().map_err(|e| {
error!("Failed to set up the dynamic page tables: {e}");
RebootReason::InternalError
})?;
@@ -285,7 +284,7 @@
assert_eq!(bcc.start % ASM_STP_ALIGN, 0, "Misaligned guest BCC.");
assert_eq!(bcc.end % ASM_STP_ALIGN, 0, "Misaligned guest BCC.");
- let stack = mmu::stack_range();
+ let stack = memory::stack_range();
assert_ne!(stack.len(), 0, "stack region is empty.");
assert_eq!(stack.start % ASM_STP_ALIGN, 0, "Misaligned stack region.");
@@ -388,7 +387,7 @@
}
unsafe fn get_appended_data_slice() -> &'static mut [u8] {
- let range = mmu::PageTable::appended_payload_range();
+ let range = memory::appended_payload_range();
// SAFETY: This region is mapped and the linker script prevents it from overlapping with other
// objects.
unsafe { slice::from_raw_parts_mut(range.start as *mut u8, range.len()) }