MCPcopy Create free account
hub / github.com/cloud-hypervisor/cloud-hypervisor / add_device

Method add_device

vmm/src/device_manager.rs:4626–4647  ·  view source on GitHub ↗
(
        &mut self,
        device_cfg: &mut DeviceConfig,
    )

Source from the content-addressed store, hash-verified

4624 }
4625
4626 pub fn add_device(
4627 &mut self,
4628 device_cfg: &mut DeviceConfig,
4629 ) -> DeviceManagerResult<PciDeviceInfo> {
4630 self.validate_identifier(&device_cfg.pci_common.id)?;
4631
4632 if device_cfg.pci_common.iommu && !self.is_iommu_segment(device_cfg.pci_common.pci_segment)
4633 {
4634 return Err(DeviceManagerError::InvalidIommuHotplug);
4635 }
4636
4637 let (bdf, device_name) = self.add_passthrough_device(device_cfg)?;
4638
4639 // Update the PCIU bitmap
4640 self.pci_segments[device_cfg.pci_common.pci_segment as usize].pci_devices_up |=
4641 1 << bdf.device();
4642
4643 Ok(PciDeviceInfo {
4644 id: device_name,
4645 bdf,
4646 })
4647 }
4648
4649 pub fn add_user_device(
4650 &mut self,

Callers 1

add_pci_deviceMethod · 0.45

Calls 4

is_iommu_segmentMethod · 0.80
deviceMethod · 0.80
validate_identifierMethod · 0.45

Tested by

no test coverage detected