summaryrefslogtreecommitdiffstats
path: root/include/linux/iommu.h
diff options
context:
space:
mode:
authorLu Baolu <baolu.lu@linux.intel.com>2024-02-12 09:22:26 +0800
committerJoerg Roedel <jroedel@suse.de>2024-02-16 15:19:36 +0100
commitb554e396e51ce3d378a560666f85c6836a8323fd (patch)
treec3fb5ce903c7ece43461c3b898803af3b6569554 /include/linux/iommu.h
parent19911232713573a2ebea84a25bd4d71d024ed86b (diff)
downloadlinux-stable-b554e396e51ce3d378a560666f85c6836a8323fd.tar.gz
linux-stable-b554e396e51ce3d378a560666f85c6836a8323fd.tar.bz2
linux-stable-b554e396e51ce3d378a560666f85c6836a8323fd.zip
iommu: Make iopf_group_response() return void
The iopf_group_response() should return void, as nothing can do anything with the failure. This implies that ops->page_response() must also return void; this is consistent with what the drivers do. The failure paths, which are all integrity validations of the fault, should be WARN_ON'd, not return codes. If the iommu core fails to enqueue the fault, it should respond the fault directly by calling ops->page_response() instead of returning an error number and relying on the iommu drivers to do so. Consolidate the error fault handling code in the core. Co-developed-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> Link: https://lore.kernel.org/r/20240212012227.119381-16-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'include/linux/iommu.h')
-rw-r--r--include/linux/iommu.h14
1 files changed, 6 insertions, 8 deletions
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index f8ed1cc7212e..f632775414a5 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -574,9 +574,8 @@ struct iommu_ops {
int (*dev_enable_feat)(struct device *dev, enum iommu_dev_features f);
int (*dev_disable_feat)(struct device *dev, enum iommu_dev_features f);
- int (*page_response)(struct device *dev,
- struct iopf_fault *evt,
- struct iommu_page_response *msg);
+ void (*page_response)(struct device *dev, struct iopf_fault *evt,
+ struct iommu_page_response *msg);
int (*def_domain_type)(struct device *dev);
void (*remove_dev_pasid)(struct device *dev, ioasid_t pasid);
@@ -1547,8 +1546,8 @@ void iopf_queue_free(struct iopf_queue *queue);
int iopf_queue_discard_partial(struct iopf_queue *queue);
void iopf_free_group(struct iopf_group *group);
int iommu_report_device_fault(struct device *dev, struct iopf_fault *evt);
-int iopf_group_response(struct iopf_group *group,
- enum iommu_page_response_code status);
+void iopf_group_response(struct iopf_group *group,
+ enum iommu_page_response_code status);
#else
static inline int
iopf_queue_add_device(struct iopf_queue *queue, struct device *dev)
@@ -1590,10 +1589,9 @@ iommu_report_device_fault(struct device *dev, struct iopf_fault *evt)
return -ENODEV;
}
-static inline int iopf_group_response(struct iopf_group *group,
- enum iommu_page_response_code status)
+static inline void iopf_group_response(struct iopf_group *group,
+ enum iommu_page_response_code status)
{
- return -ENODEV;
}
#endif /* CONFIG_IOMMU_IOPF */
#endif /* __LINUX_IOMMU_H */