[vmbase] Change payload_range in MemoryTracker to Option am: 5bb795076b
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Virtualization/+/2619459
Change-Id: If2f7b50a4d05e42af1568317cf62741b8eb5af7d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
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)?;