[pvmfw][rialto] Refactor and reuse console_uart_range()
This cl:
- Extracts console_uart_range() into a function and moves it to vmbase.
There is no behavior change for pvmfw.
- Allocates device memory for UART range in rialto.
Bug: 284462758
Test: m pvmfw_img && atest rialto_test
Change-Id: I7f38e7c91869692ed535d00d62713f5be6b8f8ab
diff --git a/pvmfw/src/entry.rs b/pvmfw/src/entry.rs
index 08f076b..8cdd0f5 100644
--- a/pvmfw/src/entry.rs
+++ b/pvmfw/src/entry.rs
@@ -207,18 +207,10 @@
// script prevents it from overlapping with other objects.
let appended_data = unsafe { get_appended_data_slice() };
- let mut page_table = memory::init_page_table().map_err(|e| {
+ let page_table = memory::init_page_table().map_err(|e| {
error!("Failed to set up the dynamic page tables: {e}");
RebootReason::InternalError
})?;
-
- const CONSOLE_LEN: usize = 1; // vmbase::uart::Uart only uses one u8 register.
- let uart_range = console::BASE_ADDRESS..(console::BASE_ADDRESS + CONSOLE_LEN);
- page_table.map_device(&uart_range).map_err(|e| {
- error!("Failed to remap the UART as a dynamic page table entry: {e}");
- RebootReason::InternalError
- })?;
-
// SAFETY - We only get the appended payload from here, once. It is statically mapped and the
// linker script prevents it from overlapping with other objects.
let mut appended = unsafe { AppendedPayload::new(appended_data) }.ok_or_else(|| {
diff --git a/pvmfw/src/memory.rs b/pvmfw/src/memory.rs
index d4e548b..f4fc3b1 100644
--- a/pvmfw/src/memory.rs
+++ b/pvmfw/src/memory.rs
@@ -640,6 +640,9 @@
page_table.map_code(&layout::text_range())?;
page_table.map_rodata(&layout::rodata_range())?;
page_table.map_data_dbm(&appended_payload_range())?;
-
+ if let Err(e) = page_table.map_device(&layout::console_uart_range()) {
+ error!("Failed to remap the UART as a dynamic page table entry: {e}");
+ return Err(e);
+ }
Ok(page_table)
}