Merge "pvmfw: Unpack FDT before applying overlay" into main am: a422a6a8b9
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Virtualization/+/2854488
Change-Id: I3653956cfc3e41edaea8d5c72e46cfe41dea8621
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/pvmfw/src/fdt.rs b/pvmfw/src/fdt.rs
index 5fbc767..7a89b75 100644
--- a/pvmfw/src/fdt.rs
+++ b/pvmfw/src/fdt.rs
@@ -644,6 +644,11 @@
RebootReason::InvalidFdt
})?;
+ fdt.unpack().map_err(|e| {
+ error!("Failed to unpack DT for patching: {e}");
+ RebootReason::InvalidFdt
+ })?;
+
if let Some(device_assignment_info) = &info.device_assignment {
let vm_dtbo = vm_dtbo.unwrap();
device_assignment_info.filter(vm_dtbo).map_err(|e| {
@@ -663,6 +668,11 @@
patch_device_tree(fdt, &info)?;
+ fdt.pack().map_err(|e| {
+ error!("Failed to unpack DT after patching: {e}");
+ RebootReason::InvalidFdt
+ })?;
+
Ok(info)
}
@@ -745,11 +755,6 @@
}
fn patch_device_tree(fdt: &mut Fdt, info: &DeviceTreeInfo) -> Result<(), RebootReason> {
- fdt.unpack().map_err(|e| {
- error!("Failed to unpack DT for patching: {e}");
- RebootReason::InvalidFdt
- })?;
-
if let Some(initrd_range) = &info.initrd_range {
patch_initrd_range(fdt, initrd_range).map_err(|e| {
error!("Failed to patch initrd range to DT: {e}");
@@ -805,11 +810,6 @@
})?;
}
- fdt.pack().map_err(|e| {
- error!("Failed to pack DT after patching: {e}");
- RebootReason::InvalidFdt
- })?;
-
Ok(())
}