pvmfw: Clean pre-populated pvIOMMUs when unused

platform.dts has pre-populated pvIOMMU nodes for device assignment.
The nodes needs to be cleaned even when nothing is assigned.

Bug: 277993056
Test: atest libpvmfw.device_assignment.test, TH
Change-Id: Iac5af3609bcce5bdedcf1abd45c4d07c06415700
diff --git a/pvmfw/src/fdt.rs b/pvmfw/src/fdt.rs
index 51ba112..d847ca2 100644
--- a/pvmfw/src/fdt.rs
+++ b/pvmfw/src/fdt.rs
@@ -15,7 +15,7 @@
 //! High-level FDT functions.
 
 use crate::bootargs::BootArgsIterator;
-use crate::device_assignment::{DeviceAssignmentInfo, VmDtbo};
+use crate::device_assignment::{self, DeviceAssignmentInfo, VmDtbo};
 use crate::helpers::GUEST_PAGE_SIZE;
 use crate::Box;
 use crate::RebootReason;
@@ -1158,6 +1158,11 @@
             error!("Failed to patch device assignment info to DT: {e}");
             RebootReason::InvalidFdt
         })?;
+    } else {
+        device_assignment::clean(fdt).map_err(|e| {
+            error!("Failed to clean pre-polulated DT nodes for device assignment: {e}");
+            RebootReason::InvalidFdt
+        })?;
     }
     patch_untrusted_props(fdt, &info.untrusted_props).map_err(|e| {
         error!("Failed to patch untrusted properties: {e}");