diff options
| author | Mark Brown <broonie@kernel.org> | 2020-08-25 11:01:46 +0100 | 
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2020-08-25 11:01:46 +0100 | 
| commit | 3bec5b6aae830355e786e204b20a7cea38c3a8ed (patch) | |
| tree | fd597b87faf55ceb2a207ee94f4feca6276696db /include/linux/intel-iommu.h | |
| parent | a577f3456c0a2fac3dee037c483753e6e68f3e49 (diff) | |
| parent | d012a7190fc1fd72ed48911e77ca97ba4521bccd (diff) | |
Merge tag 'v5.9-rc2' into regulator-5.9
Linux 5.9-rc2
Diffstat (limited to 'include/linux/intel-iommu.h')
| -rw-r--r-- | include/linux/intel-iommu.h | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h index 4100bd224f5c..b1ed2f25f7c0 100644 --- a/include/linux/intel-iommu.h +++ b/include/linux/intel-iommu.h @@ -41,6 +41,7 @@  #define DMA_PTE_SNP		BIT_ULL(11)  #define DMA_FL_PTE_PRESENT	BIT_ULL(0) +#define DMA_FL_PTE_US		BIT_ULL(2)  #define DMA_FL_PTE_XD		BIT_ULL(63)  #define ADDR_WIDTH_5LEVEL	(57) @@ -380,8 +381,7 @@ enum {  #define QI_DEV_EIOTLB_ADDR(a)	((u64)(a) & VTD_PAGE_MASK)  #define QI_DEV_EIOTLB_SIZE	(((u64)1) << 11) -#define QI_DEV_EIOTLB_GLOB(g)	((u64)g) -#define QI_DEV_EIOTLB_PASID(p)	(((u64)p) << 32) +#define QI_DEV_EIOTLB_PASID(p)	((u64)((p) & 0xfffff) << 32)  #define QI_DEV_EIOTLB_SID(sid)	((u64)((sid) & 0xffff) << 16)  #define QI_DEV_EIOTLB_QDEP(qd)	((u64)((qd) & 0x1f) << 4)  #define QI_DEV_EIOTLB_PFSID(pfsid) (((u64)(pfsid & 0xf) << 12) | \ @@ -599,6 +599,8 @@ struct intel_iommu {  	struct iommu_device iommu;  /* IOMMU core code handle */  	int		node;  	u32		flags;      /* Software defined flags */ + +	struct dmar_drhd_unit *drhd;  };  /* PCI domain-device relationship */ @@ -704,7 +706,7 @@ void qi_flush_piotlb(struct intel_iommu *iommu, u16 did, u32 pasid, u64 addr,  void qi_flush_dev_iotlb_pasid(struct intel_iommu *iommu, u16 sid, u16 pfsid,  			      u32 pasid, u16 qdep, u64 addr, -			      unsigned int size_order, u64 granu); +			      unsigned int size_order);  void qi_flush_pasid_cache(struct intel_iommu *iommu, u16 did, u64 granu,  			  int pasid); @@ -727,6 +729,7 @@ void iommu_flush_write_buffer(struct intel_iommu *iommu);  int intel_iommu_enable_pasid(struct intel_iommu *iommu, struct device *dev);  struct dmar_domain *find_domain(struct device *dev);  struct device_domain_info *get_domain_info(struct device *dev); +struct intel_iommu *device_to_iommu(struct device *dev, u8 *bus, u8 *devfn);  #ifdef CONFIG_INTEL_IOMMU_SVM  extern void intel_svm_check(struct intel_iommu *iommu); @@ -739,6 +742,9 @@ struct iommu_sva *intel_svm_bind(struct device *dev, struct mm_struct *mm,  				 void *drvdata);  void intel_svm_unbind(struct iommu_sva *handle);  int intel_svm_get_pasid(struct iommu_sva *handle); +int intel_svm_page_response(struct device *dev, struct iommu_fault_event *evt, +			    struct iommu_page_response *msg); +  struct svm_dev_ops;  struct intel_svm_dev { @@ -765,8 +771,6 @@ struct intel_svm {  	struct list_head devs;  	struct list_head list;  }; - -extern struct intel_iommu *intel_svm_device_to_iommu(struct device *dev);  #else  static inline void intel_svm_check(struct intel_iommu *iommu) {}  #endif  | 
