Call the DT sanitize routine ealier
... before data from it is used.
Bug: 249054080
Test: TH
Change-Id: I2a416a74c4b85e9662848e1c9389b0109dbe3108
diff --git a/pvmfw/src/fdt.rs b/pvmfw/src/fdt.rs
index f56d6e0..a794b42 100644
--- a/pvmfw/src/fdt.rs
+++ b/pvmfw/src/fdt.rs
@@ -26,6 +26,7 @@
use libfdt::CellIterator;
use libfdt::Fdt;
use libfdt::FdtError;
+use log::debug;
use log::error;
use tinyvec::ArrayVec;
@@ -436,7 +437,7 @@
#[derive(Debug)]
#[allow(dead_code)] // TODO: remove this
-pub struct DeviceTreeInfo {
+struct DeviceTreeInfo {
memory_size: NonZeroUsize,
num_cpu: NonZeroUsize,
pci_info: PciInfo,
@@ -448,7 +449,16 @@
const RAM_BASE_ADDR: u64 = 0x8000_0000;
}
-pub fn parse_device_tree(fdt: &libfdt::Fdt) -> Result<DeviceTreeInfo, RebootReason> {
+pub fn sanitize_device_tree(fdt: &mut libfdt::Fdt) -> Result<(), RebootReason> {
+ let info = parse_device_tree(fdt)?;
+ debug!("Device tree info: {:?}", info);
+
+ // TODO: replace fdt with the template DT
+ // TODO: patch the replaced fdt using info
+ Ok(())
+}
+
+fn parse_device_tree(fdt: &libfdt::Fdt) -> Result<DeviceTreeInfo, RebootReason> {
Ok(DeviceTreeInfo {
memory_size: parse_memory_node(fdt)?,
num_cpu: parse_cpu_nodes(fdt)?,