PCI subsystem

API Reference

struct PCIIOMMUOps

callbacks structure for specific IOMMU handlers of a PCIBus

Definition

struct PCIIOMMUOps {
  AddressSpace * (*get_address_space)(PCIBus *bus, void *opaque, int devfn);
  bool (*set_iommu_device)(PCIBus *bus, void *opaque, int devfn, HostIOMMUDevice *dev, Error **errp);
  void (*unset_iommu_device)(PCIBus *bus, void *opaque, int devfn);
};

Members

get_address_space

get the address space for a set of devices on a PCI bus.

Mandatory callback which returns a pointer to an AddressSpace

bus: the PCIBus being accessed.

opaque: the data passed to pci_setup_iommu().

devfn: device and function number

set_iommu_device

attach a HostIOMMUDevice to a vIOMMU

Optional callback, if not implemented in vIOMMU, then vIOMMU can’t retrieve host information from the associated HostIOMMUDevice.

bus: the PCIBus of the PCI device.

opaque: the data passed to pci_setup_iommu().

devfn: device and function number of the PCI device.

dev: the HostIOMMUDevice to attach.

errp: pass an Error out only when return false

Returns: true if HostIOMMUDevice is attached or else false with errp set.

unset_iommu_device

detach a HostIOMMUDevice from a vIOMMU

Optional callback.

bus: the PCIBus of the PCI device.

opaque: the data passed to pci_setup_iommu().

devfn: device and function number of the PCI device.

Description

Allows to modify the behavior of some IOMMU operations of the PCI framework for a set of devices on a PCI bus.

void pci_setup_iommu(PCIBus *bus, const PCIIOMMUOps *ops, void *opaque)

Initialize specific IOMMU handlers for a PCIBus

Parameters

PCIBus *bus

the PCIBus being updated.

const PCIIOMMUOps *ops

the PCIIOMMUOps

void *opaque

passed to callbacks of the ops structure.

Description

Let PCI host bridges define specific operations.