On Thu, Aug 10, 2023 at 03:20:07PM -0300, Jason Gunthorpe wrote:
On Thu, Jul 27, 2023 at 01:48:31PM +0800, Lu Baolu wrote:For instance allocate the fault_param in iopf_queue_add_device() which
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.cThis allocation seems pointless?
index 4ba3bb692993..3e4ff984aa85 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -302,7 +302,15 @@ static int dev_iommu_get(struct device *dev)
return -ENOMEM;
mutex_init(¶m->lock);
+ param->fault_param = kzalloc(sizeof(*param->fault_param), GFP_KERNEL);
+ if (!param->fault_param) {
+ kfree(param);
+ return -ENOMEM;
+ }
+ mutex_init(¶m->fault_param->lock);
+ INIT_LIST_HEAD(¶m->fault_param->faults);
dev->iommu = param;
If we always allocate the fault param then just don't make it a
pointer in the first place.
The appeal of allocation would be to save a few bytes in the common
case that the driver doesn't support faulting.
Which means the driver needs to make some call to enable faulting for
a device. In this case I'd continue to lazy free on release like this
patch does.
is the only thing that needs it.
Actually probably just merge struct iopf_device_param and
iommu_fault_param ?
When you call iopf_queue_add_device() it enables page faulting mode,
does 1 additional allocation for all additional required per-device
memory and thats it.