[vmbase] Change payload_range in MemoryTracker to Option
As this parameter is needed in pvmfw but not in rialto.
Bug: 284462758
Test: m pvmfw_img
Change-Id: Iaed98a7f4a7d4e98b2fc59e9de8e277608a9a5e2
diff --git a/pvmfw/src/entry.rs b/pvmfw/src/entry.rs
index a4b8a64..fc96e53 100644
--- a/pvmfw/src/entry.rs
+++ b/pvmfw/src/entry.rs
@@ -229,7 +229,7 @@
page_table,
crosvm::MEM_START..memory::MAX_ADDR,
crosvm::MMIO_START..crosvm::MMIO_END,
- memory::appended_payload_range(),
+ Some(memory::appended_payload_range()),
));
let slices = MemorySlices::new(fdt, payload, payload_size)?;
diff --git a/vmbase/src/memory/shared.rs b/vmbase/src/memory/shared.rs
index 1413c60..5d60c85 100644
--- a/vmbase/src/memory/shared.rs
+++ b/vmbase/src/memory/shared.rs
@@ -26,7 +26,6 @@
use alloc::vec::Vec;
use buddy_system_allocator::{FrameAllocator, LockedFrameAllocator};
use core::alloc::Layout;
-use core::iter::once;
use core::num::NonZeroUsize;
use core::ops::Range;
use core::ptr::NonNull;
@@ -67,7 +66,7 @@
regions: ArrayVec<[MemoryRegion; MemoryTracker::CAPACITY]>,
mmio_regions: ArrayVec<[MemoryRange; MemoryTracker::MMIO_CAPACITY]>,
mmio_range: MemoryRange,
- payload_range: MemoryRange,
+ payload_range: Option<MemoryRange>,
}
unsafe impl Send for MemoryTracker {}
@@ -81,7 +80,7 @@
mut page_table: PageTable,
total: MemoryRange,
mmio_range: MemoryRange,
- payload_range: MemoryRange,
+ payload_range: Option<MemoryRange>,
) -> Self {
assert!(
!total.overlaps(&mmio_range),
@@ -284,7 +283,7 @@
// observed before reading PTE flags to determine dirty state.
dsb!("ish");
// Now flush writable-dirty pages in those regions.
- for range in writable_regions.chain(once(&self.payload_range)) {
+ for range in writable_regions.chain(self.payload_range.as_ref().into_iter()) {
self.page_table
.modify_range(range, &flush_dirty_range)
.map_err(|_| MemoryTrackerError::FlushRegionFailed)?;