[pvmfw] Update faulting address register value type to VirtualAddress
This cl changes the type of the faulting address register value in
far_el1 from usize to VirtualAddress. This change makes it explicit
that the value stored in far_el1 is a virtual address.
Test: m pvmfw_img
Bug: 284462758
Change-Id: Iaae7a7371ce64187091f0353dc2f0db325ac10ae
diff --git a/vmbase/src/memory/shared.rs b/vmbase/src/memory/shared.rs
index c8b7d35..3faee5b 100644
--- a/vmbase/src/memory/shared.rs
+++ b/vmbase/src/memory/shared.rs
@@ -270,8 +270,8 @@
/// Handles translation fault for blocks flagged for lazy MMIO mapping by enabling the page
/// table entry and MMIO guard mapping the block. Breaks apart a block entry if required.
- pub fn handle_mmio_fault(&mut self, addr: usize) -> Result<()> {
- let page_start = VirtualAddress(page_4kb_of(addr));
+ pub fn handle_mmio_fault(&mut self, addr: VirtualAddress) -> Result<()> {
+ let page_start = VirtualAddress(page_4kb_of(addr.0));
let page_range: VaRange = (page_start..page_start + MMIO_GUARD_GRANULE_SIZE).into();
self.page_table
.modify_range(&page_range, &verify_lazy_mapped_block)
@@ -301,8 +301,7 @@
/// Handles permission fault for read-only blocks by setting writable-dirty state.
/// In general, this should be called from the exception handler when hardware dirty
/// state management is disabled or unavailable.
- pub fn handle_permission_fault(&mut self, addr: usize) -> Result<()> {
- let addr = VirtualAddress(addr);
+ pub fn handle_permission_fault(&mut self, addr: VirtualAddress) -> Result<()> {
self.page_table
.modify_range(&(addr..addr + 1).into(), &mark_dirty_block)
.map_err(|_| MemoryTrackerError::SetPteDirtyFailed)