Merge "vmbase: Re-expose fdtpci as vmbase::fdt::pci" into main am: 836b4fe615 am: ac6c4fbb02

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Virtualization/+/3299357

Change-Id: Ie51c4f0593b81d4c7ad276200f658b56c48dda5f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/guest/pvmfw/Android.bp b/guest/pvmfw/Android.bp
index bcd3e42..4586cca 100644
--- a/guest/pvmfw/Android.bp
+++ b/guest/pvmfw/Android.bp
@@ -18,7 +18,6 @@
         "libciborium_io_nostd",
         "libcstr",
         "libdiced_open_dice_nostd",
-        "libfdtpci",
         "liblibfdt_nostd",
         "liblog_rust_nostd",
         "libpvmfw_avb_nostd",
diff --git a/guest/pvmfw/src/fdt.rs b/guest/pvmfw/src/fdt.rs
index 953fdae..0d934a6 100644
--- a/guest/pvmfw/src/fdt.rs
+++ b/guest/pvmfw/src/fdt.rs
@@ -30,8 +30,6 @@
 use core::mem::size_of;
 use core::ops::Range;
 use cstr::cstr;
-use fdtpci::PciMemoryFlags;
-use fdtpci::PciRangeType;
 use libfdt::AddressRange;
 use libfdt::CellIterator;
 use libfdt::Fdt;
@@ -45,6 +43,8 @@
 use log::warn;
 use static_assertions::const_assert;
 use tinyvec::ArrayVec;
+use vmbase::fdt::pci::PciMemoryFlags;
+use vmbase::fdt::pci::PciRangeType;
 use vmbase::fdt::SwiotlbInfo;
 use vmbase::hyp;
 use vmbase::layout::{crosvm::MEM_START, MAX_VIRT_ADDR};
diff --git a/guest/pvmfw/src/main.rs b/guest/pvmfw/src/main.rs
index 10f8549..1e88c4b 100644
--- a/guest/pvmfw/src/main.rs
+++ b/guest/pvmfw/src/main.rs
@@ -46,13 +46,13 @@
 use core::ops::Range;
 use cstr::cstr;
 use diced_open_dice::{bcc_handover_parse, DiceArtifacts, Hidden};
-use fdtpci::{PciError, PciInfo};
 use libfdt::{Fdt, FdtNode};
 use log::{debug, error, info, trace, warn};
 use pvmfw_avb::verify_payload;
 use pvmfw_avb::Capability;
 use pvmfw_avb::DebugLevel;
 use pvmfw_embedded_key::PUBLIC_KEY;
+use vmbase::fdt::pci::{PciError, PciInfo};
 use vmbase::heap;
 use vmbase::memory::flush;
 use vmbase::memory::MEMORY;
diff --git a/guest/rialto/Android.bp b/guest/rialto/Android.bp
index eeb5b2d..7bcfd54 100644
--- a/guest/rialto/Android.bp
+++ b/guest/rialto/Android.bp
@@ -14,7 +14,6 @@
         "libciborium_nostd",
         "libcstr",
         "libdiced_open_dice_nostd",
-        "libfdtpci",
         "liblibfdt_nostd",
         "liblog_rust_nostd",
         "libservice_vm_comm_nostd",
diff --git a/guest/rialto/src/error.rs b/guest/rialto/src/error.rs
index 033159b..ba5f4b0 100644
--- a/guest/rialto/src/error.rs
+++ b/guest/rialto/src/error.rs
@@ -17,10 +17,11 @@
 use aarch64_paging::MapError;
 use core::{fmt, result};
 use diced_open_dice::DiceError;
-use fdtpci::PciError;
 use libfdt::FdtError;
 use service_vm_comm::RequestProcessingError;
-use vmbase::{hyp::Error as HypervisorError, memory::MemoryTrackerError, virtio::pci};
+use vmbase::{
+    fdt::pci::PciError, hyp::Error as HypervisorError, memory::MemoryTrackerError, virtio::pci,
+};
 
 pub type Result<T> = result::Result<T, Error>;
 
diff --git a/guest/rialto/src/main.rs b/guest/rialto/src/main.rs
index 9265775..f09cbd2 100644
--- a/guest/rialto/src/main.rs
+++ b/guest/rialto/src/main.rs
@@ -32,7 +32,6 @@
 use core::num::NonZeroUsize;
 use core::slice;
 use diced_open_dice::{bcc_handover_parse, DiceArtifacts};
-use fdtpci::PciInfo;
 use libfdt::FdtError;
 use log::{debug, error, info};
 use service_vm_comm::{ServiceVmRequest, VmType};
@@ -45,6 +44,7 @@
 };
 use vmbase::{
     configure_heap,
+    fdt::pci::PciInfo,
     fdt::SwiotlbInfo,
     generate_image_header,
     hyp::{get_mem_sharer, get_mmio_guard},
diff --git a/guest/vmbase_example/Android.bp b/guest/vmbase_example/Android.bp
index 49a6d69..09bd77c 100644
--- a/guest/vmbase_example/Android.bp
+++ b/guest/vmbase_example/Android.bp
@@ -11,7 +11,6 @@
         "libaarch64_paging",
         "libcstr",
         "libdiced_open_dice_nostd",
-        "libfdtpci",
         "liblibfdt_nostd",
         "liblog_rust_nostd",
         "libvirtio_drivers",
diff --git a/guest/vmbase_example/src/main.rs b/guest/vmbase_example/src/main.rs
index 7a3f427..1466d1e 100644
--- a/guest/vmbase_example/src/main.rs
+++ b/guest/vmbase_example/src/main.rs
@@ -31,11 +31,12 @@
 use core::mem;
 use core::ptr::addr_of_mut;
 use cstr::cstr;
-use fdtpci::PciInfo;
 use libfdt::Fdt;
 use log::{debug, error, info, trace, warn, LevelFilter};
 use vmbase::{
-    bionic, configure_heap, generate_image_header,
+    bionic, configure_heap,
+    fdt::pci::PciInfo,
+    generate_image_header,
     layout::{crosvm::FDT_MAX_SIZE, rodata_range, scratch_range, text_range},
     linker, logger, main,
     memory::{PageTable, SIZE_64KB},
diff --git a/guest/vmbase_example/src/pci.rs b/guest/vmbase_example/src/pci.rs
index b838539..563f24a 100644
--- a/guest/vmbase_example/src/pci.rs
+++ b/guest/vmbase_example/src/pci.rs
@@ -17,7 +17,6 @@
 use aarch64_paging::paging::MemoryRegion;
 use alloc::alloc::{alloc_zeroed, dealloc, handle_alloc_error, Layout};
 use core::{mem::size_of, ptr::NonNull};
-use fdtpci::PciInfo;
 use log::{debug, info};
 use virtio_drivers::{
     device::console::VirtIOConsole,
@@ -27,7 +26,10 @@
     },
     BufferDirection, Error, Hal, PhysAddr, PAGE_SIZE,
 };
-use vmbase::virtio::pci::{self, PciTransportIterator};
+use vmbase::{
+    fdt::pci::PciInfo,
+    virtio::pci::{self, PciTransportIterator},
+};
 
 /// The standard sector size of a VirtIO block device, in bytes.
 const SECTOR_SIZE_BYTES: usize = 512;
diff --git a/libs/libvmbase/src/fdt.rs b/libs/libvmbase/src/fdt.rs
index 4101f7e..8618acd 100644
--- a/libs/libvmbase/src/fdt.rs
+++ b/libs/libvmbase/src/fdt.rs
@@ -52,3 +52,8 @@
         self.addr.map(|addr| addr..addr + self.size)
     }
 }
+
+/// Library for working with (VirtIO) PCI devices discovered from a device tree.
+pub mod pci {
+    pub use fdtpci::*;
+}
diff --git a/libs/libvmbase/src/virtio/pci.rs b/libs/libvmbase/src/virtio/pci.rs
index 1d05c18..72e648b 100644
--- a/libs/libvmbase/src/virtio/pci.rs
+++ b/libs/libvmbase/src/virtio/pci.rs
@@ -14,11 +14,13 @@
 
 //! Functions to scan the PCI bus for VirtIO devices.
 
-use crate::memory::{MemoryTracker, MemoryTrackerError};
+use crate::{
+    fdt::pci::PciInfo,
+    memory::{MemoryTracker, MemoryTrackerError},
+};
 use alloc::boxed::Box;
 use core::fmt;
 use core::marker::PhantomData;
-use fdtpci::PciInfo;
 use log::debug;
 use once_cell::race::OnceBox;
 use virtio_drivers::{