Module coiommu

Source
Expand description

This is the CoIOMMU backend implementation. CoIOMMU is a virtual device which provide fine-grained pinning for the VFIO pci-passthrough device so that hypervisor doesn’t need to pin the enter VM’s memory to improve the memory utilization. CoIOMMU doesn’t provide the intra-guest protection so it can only be used for the TRUSTED passthrough devices.

CoIOMMU is presented at KVM forum 2020: https://kvmforum2020.sched.com/event/eE2z/a-virtual-iommu-with-cooperative-dma-buffer-tracking-yu-zhang-intel

Also presented at usenix ATC20: https://www.usenix.org/conference/atc20/presentation/tian

Structs§

CoIommuDev
CoIommuParameters
Holds the parameters for a coiommu device
CoIommuPinState 🔒
CoIommuReg 🔒
DTTIter 🔒
PinPageInfo 🔒
PinWorker 🔒
PinnedPageInfo 🔒
UnpinWorker 🔒

Enums§

CoIommuUnpinPolicy
Holds the coiommu unpin policy
Error 🔒
UnpinResult 🔒
UnpinThreadState 🔒

Constants§

COIOMMU_CMD_ACTIVATE 🔒
COIOMMU_CMD_DEACTIVATE 🔒
COIOMMU_CMD_PARK_UNPIN 🔒
COIOMMU_CMD_UNPARK_UNPIN 🔒
COIOMMU_MMIO_BAR 🔒
COIOMMU_MMIO_BAR_SIZE 🔒
COIOMMU_NOTIFYMAP_BAR 🔒
COIOMMU_NOTIFYMAP_SIZE 🔒
COIOMMU_PT_LEVEL_MASK 🔒
COIOMMU_PT_LEVEL_STRIDE 🔒
COIOMMU_REVISION_ID 🔒
COIOMMU_TOPOLOGYMAP_BAR 🔒
COIOMMU_TOPOLOGYMAP_SIZE 🔒
COIOMMU_UPPER_LEVEL_MASK 🔒
COIOMMU_UPPER_LEVEL_STRIDE 🔒
DTTE_ACCESSED_FLAG 🔒
DTTE_PINNED_FLAG 🔒
DTT_ENTRY_PFN_SHIFT 🔒
DTT_ENTRY_PRESENT 🔒
PAGE_SHIFT_4K 🔒
PAGE_SIZE_4K 🔒
PCI_DEVICE_ID_COIOMMU 🔒
PCI_VENDOR_ID_COIOMMU 🔒
PIN_PAGES_IN_BATCH 🔒
UNPIN_DEFAULT_INTERVAL 🔒
UNPIN_GEN_DEFAULT_THRES 🔒

Functions§

deserialize_unpin_interval 🔒
deserialize_unpin_limit 🔒
gfn_to_dtt_pte 🔒
level_to_offset 🔒
pin_page 🔒
unpin_gen_threshold_default 🔒
unpin_interval_default 🔒
unpin_page 🔒
vfio_map 🔒
vfio_unmap 🔒