summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLu Baolu <baolu.lu@linux.intel.com>2018-07-14 15:46:59 +0800
committerJoerg Roedel <jroedel@suse.de>2018-07-20 14:44:24 +0200
commitcc580e41260dbf1a46269235f1f2b572137d9d03 (patch)
tree059b05cf142c60158f0e70a78d59eed717d13561 /include
parent85319dcc8955f8f31828dc8bafff29f6aa011d93 (diff)
downloadlinux-stable-cc580e41260dbf1a46269235f1f2b572137d9d03.tar.gz
linux-stable-cc580e41260dbf1a46269235f1f2b572137d9d03.tar.bz2
linux-stable-cc580e41260dbf1a46269235f1f2b572137d9d03.zip
iommu/vt-d: Per PCI device pasid table interfaces
This patch adds the interfaces for per PCI device pasid table management. Currently we allocate one pasid table for all PCI devices under the scope of an IOMMU. It's insecure in some cases where multiple devices under one single IOMMU unit support PASID features. With per PCI device pasid table, we can achieve finer protection and isolation granularity. Cc: Ashok Raj <ashok.raj@intel.com> Cc: Jacob Pan <jacob.jun.pan@linux.intel.com> Cc: Kevin Tian <kevin.tian@intel.com> Cc: Liu Yi L <yi.l.liu@intel.com> Suggested-by: Ashok Raj <ashok.raj@intel.com> Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> Reviewed-by: Liu Yi L <yi.l.liu@intel.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'include')
-rw-r--r--include/linux/intel-iommu.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h
index 4fd4c6fee93e..e7901d402337 100644
--- a/include/linux/intel-iommu.h
+++ b/include/linux/intel-iommu.h
@@ -476,6 +476,7 @@ struct intel_iommu {
struct device_domain_info {
struct list_head link; /* link to domain siblings */
struct list_head global; /* link to global list */
+ struct list_head table; /* link to pasid table */
u8 bus; /* PCI bus number */
u8 devfn; /* PCI devfn number */
u16 pfsid; /* SRIOV physical function source ID */
@@ -489,6 +490,7 @@ struct device_domain_info {
struct device *dev; /* it's NULL for PCIe-to-PCI bridge */
struct intel_iommu *iommu; /* IOMMU used by this device */
struct dmar_domain *domain; /* pointer to domain */
+ struct pasid_table *pasid_table; /* pasid table */
};
static inline void __iommu_flush_cache(