qemu/include/hw/pci
Jason Wang 1b2b12376c intel-iommu: PASID support
This patch introduce ECAP_PASID via "x-pasid-mode". Based on the
existing support for scalable mode, we need to implement the following
missing parts:

1) tag VTDAddressSpace with PASID and support IOMMU/DMA translation
   with PASID
2) tag IOTLB with PASID
3) PASID cache and its flush
4) PASID based IOTLB invalidation

For simplicity PASID cache is not implemented so we can simply
implement the PASID cache flush as a no and leave it to be implemented
in the future. For PASID based IOTLB invalidation, since we haven't
had L1 stage support, the PASID based IOTLB invalidation is not
implemented yet. For PASID based device IOTLB invalidation, it
requires the support for vhost so we forbid enabling device IOTLB when
PASID is enabled now. Those work could be done in the future.

Note that though PASID based IOMMU translation is ready but no device
can issue PASID DMA right now. In this case, PCI_NO_PASID is used as
PASID to identify the address without PASID. vtd_find_add_as() has
been extended to provision address space with PASID which could be
utilized by the future extension of PCI core to allow device model to
use PASID based DMA translation.

This feature would be useful for:

1) prototyping PASID support for devices like virtio
2) future vPASID work
3) future PRS and vSVA work

Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20221028061436.30093-5-jasowang@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2022-11-07 14:08:17 -05:00
..
msi.h vfio-user: handle device interrupts 2022-06-15 16:43:42 +01:00
msix.h msix: Assert that specified vector is in range 2022-11-07 14:08:17 -05:00
pci_bridge.h acpi/cxl: Create the CEDT (9.14.1) 2022-05-13 06:13:36 -04:00
pci_bus.h intel-iommu: PASID support 2022-11-07 14:08:17 -05:00
pci_host.h
pci_ids.h hw/pci: PCIe Data Object Exchange emulation 2022-11-07 13:12:19 -05:00
pci_regs.h
pci.h pci: cleanup virtio ids. 2022-10-13 13:55:53 -04:00
pcie_aer.h
pcie_doe.h hw/pci: PCIe Data Object Exchange emulation 2022-11-07 13:12:19 -05:00
pcie_host.h include/hw/pci/pcie_host: Correct PCIE_MMCFG_SIZE_MAX 2022-05-16 16:15:40 -04:00
pcie_port.h pci/pcie_port: Add pci_find_port_by_pn() 2022-05-13 07:57:26 -04:00
pcie_regs.h hw/pci: PCIe Data Object Exchange emulation 2022-11-07 13:12:19 -05:00
pcie_sriov.h
pcie.h hw/pci: PCIe Data Object Exchange emulation 2022-11-07 13:12:19 -05:00
shpc.h
slotid_cap.h