fn create_devices(
cfg: &Config,
vm: &mut impl VmArch,
resources: &mut SystemAllocator,
vm_evt_wrtube: &SendTube,
iommu_attached_endpoints: &mut BTreeMap<u32, Arc<Mutex<Box<dyn MemoryMapperTrait>>>>,
irq_control_tubes: &mut Vec<Tube>,
vm_memory_control_tubes: &mut Vec<VmMemoryTube>,
control_tubes: &mut Vec<TaggedControlTube>,
balloon_device_tube: Option<Tube>,
init_balloon_size: u64,
disk_device_tubes: &mut Vec<Tube>,
pmem_device_tubes: &mut Vec<Tube>,
pmem_ext2_mem_clients: &mut Vec<VmMemoryClient>,
fs_device_tubes: &mut Vec<Tube>,
usb_provider: DeviceProvider,
gpu_control_tube: Tube,
render_server_fd: Option<SafeDescriptor>,
iova_max_addr: &mut Option<u64>,
registered_evt_q: &SendTube,
pvclock_device_tube: Option<Tube>,
vfio_container_manager: &mut VfioContainerManager,
worker_process_pids: &mut BTreeSet<Pid>
) -> Result<Vec<(Box<dyn BusDeviceObj>, Option<Minijail>)>>