Merge "[rialto] Shrink the memory range to the memory range in DT" am: 6bb6fe7095 am: abb08e6356

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Virtualization/+/2624329

Change-Id: I1c59f80236688a8d3d537f383ff311e89698c623
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/rialto/src/main.rs b/rialto/src/main.rs
index 45bda1b..578d7a0 100644
--- a/rialto/src/main.rs
+++ b/rialto/src/main.rs
@@ -101,10 +101,16 @@
         .alloc(fdt_addr, NonZeroUsize::new(crosvm::FDT_MAX_SIZE).unwrap())?;
     // SAFETY: The tracker validated the range to be in main memory, mapped, and not overlap.
     let fdt = unsafe { slice::from_raw_parts(fdt_range.start as *mut u8, fdt_range.len()) };
+    // We do not need to validate the DT since it is already validated in pvmfw.
     let fdt = libfdt::Fdt::from_slice(fdt)?;
     let pci_info = PciInfo::from_fdt(fdt)?;
     debug!("PCI: {pci_info:#x?}");
 
+    let memory_range = fdt.first_memory_range()?;
+    MEMORY.lock().as_mut().unwrap().shrink(&memory_range).map_err(|e| {
+        error!("Failed to use memory range value from DT: {memory_range:#x?}");
+        e
+    })?;
     Ok(())
 }