move the PCI MMIO regions on aarch64

Some guest changes were required:

* microdroid: PCI CAM base is hardcoded in the bootconfig. Should be
  migrated to `androidboot.boot_part_uuid` to avoid this.
* libvmbase: `MMIO_END` was incorrect. Shouldn't need to be updated
  again for similar future changes.
* vmbase_example: Assumed all MMIO is in first GiB.
* platform.dts: Possibly working as intended

Bug: 361390145
Bug: 376480819
Test: packages/modules/Virtualization/android/vm/vm_shell.sh start-microdroid --auto-connect -- --enable-earlycon
Test: packages/modules/Virtualization/android/vm/vm_shell.sh start-microdroid --auto-connect -- --enable-earlycon --protected
Test: atest rialto
Change-Id: Ie4d09d4d7504dfc1022d0cf675af77c97750c257
diff --git a/android/virtmgr/src/crosvm.rs b/android/virtmgr/src/crosvm.rs
index b0944fc..46f4e80 100644
--- a/android/virtmgr/src/crosvm.rs
+++ b/android/virtmgr/src/crosvm.rs
@@ -1022,6 +1022,13 @@
         command.arg("--params").arg("console=hvc0");
     }
 
+    // Move the PCI MMIO regions to near the end of the low-MMIO space.
+    // This is done to accommodate a limitation in a partner's hypervisor.
+    #[cfg(target_arch = "aarch64")]
+    command
+        .arg("--pci")
+        .arg("mem=[start=0x70000000,size=0x2000000],cam=[start=0x72000000,size=0x1000000]");
+
     command.arg("--mem").arg(memory_mib.to_string());
 
     if let Some(cpus) = config.cpus {