pvmfw: Warn if discarding unexpected UART DT nodes

Print a warning so that users may figure out why their extra serial
nodes are mysteriously disappearing from the DT before reaching the
guest.

Test: m pvmfw
Change-Id: I7077f0a51249f5beb4c8543f2a2d4db8e1f6b2ce
diff --git a/pvmfw/src/fdt.rs b/pvmfw/src/fdt.rs
index e682ab2..d2aad61 100644
--- a/pvmfw/src/fdt.rs
+++ b/pvmfw/src/fdt.rs
@@ -488,11 +488,17 @@
 }
 
 fn read_serial_info_from(fdt: &Fdt) -> libfdt::Result<SerialInfo> {
-    let mut addrs: ArrayVec<[u64; SerialInfo::MAX_SERIALS]> = Default::default();
-    for node in fdt.compatible_nodes(cstr!("ns16550a"))?.take(SerialInfo::MAX_SERIALS) {
+    let mut addrs = ArrayVec::new();
+
+    let mut serial_nodes = fdt.compatible_nodes(cstr!("ns16550a"))?;
+    for node in serial_nodes.by_ref().take(addrs.capacity()) {
         let reg = node.first_reg()?;
         addrs.push(reg.addr);
     }
+    if serial_nodes.next().is_some() {
+        warn!("DT has more than {} UART nodes: discarding extra nodes.", addrs.capacity());
+    }
+
     Ok(SerialInfo { addrs })
 }