pvmfw: Issue MMIO_GUARD_UNMAP for UART
Ensure that the platform has been put back in its initial state by
unmapping the MMIO page that pvmfw used for logging.
Test: atest MicrodroidTestApp # currently broken without aosp/2238683
Change-Id: I65a4804efb739d1f5fe64c8f55dae758933471a6
diff --git a/pvmfw/src/entry.rs b/pvmfw/src/entry.rs
index a606462..99c67fb 100644
--- a/pvmfw/src/entry.rs
+++ b/pvmfw/src/entry.rs
@@ -18,7 +18,7 @@
use crate::mmio_guard;
use core::arch::asm;
use core::slice;
-use log::{debug, LevelFilter};
+use log::{debug, error, LevelFilter};
use vmbase::{console, logger, main, power::reboot};
#[derive(Debug, Clone)]
@@ -77,6 +77,11 @@
// This wrapper allows main() to be blissfully ignorant of platform details.
crate::main(fdt, payload);
+ mmio_guard::unmap(console::BASE_ADDRESS).map_err(|e| {
+ error!("Failed to unshare the UART: {e}");
+ RebootReason::InternalError
+ })?;
+
Ok(())
}