Commit ff1f06b6 authored by Peter Colberg's avatar Peter Colberg Committed by Xu Yilun
Browse files

fpga: dfl: drop unneeded get_device() and put_device() of feature device



The feature device data was originally stored as platform data, hence
the memory allocation was tied to the lifetime of the feature device.
Now that the feature device data is tied to the lifetime of the DFL PCIe
FPGA device instead, get_device() and put_device() are no longer needed.

Signed-off-by: default avatarPeter Colberg <peter.colberg@intel.com>
Reviewed-by: default avatarMatthew Gerlach <matthew.gerlach@linux.intel.com>
Reviewed-by: default avatarBasheer Ahmed Muddebihal <basheer.ahmed.muddebihal@linux.intel.com>
Acked-by: default avatarXu Yilun <yilun.xu@intel.com>
Link: https://lore.kernel.org/r/20241120011035.230574-18-peter.colberg@intel.com


Signed-off-by: default avatarXu Yilun <yilun.xu@linux.intel.com>
parent 57146d94
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -85,8 +85,6 @@ static void fme_br_remove(struct platform_device *pdev)

	fpga_bridge_unregister(br);

	if (priv->port_fdata)
		put_device(&priv->port_fdata->dev->dev);
	if (priv->port_ops)
		dfl_fpga_port_ops_put(priv->port_ops);
}
+5 −11
Original line number Diff line number Diff line
@@ -734,7 +734,6 @@ static void dfl_fpga_cdev_add_port_data(struct dfl_fpga_cdev *cdev,
{
	mutex_lock(&cdev->lock);
	list_add(&fdata->node, &cdev->port_dev_list);
	get_device(&fdata->dev->dev);
	mutex_unlock(&cdev->lock);
}

@@ -1645,7 +1644,6 @@ void dfl_fpga_feature_devs_remove(struct dfl_fpga_cdev *cdev)
			platform_device_put(port_dev);

		list_del(&fdata->node);
		put_device(&port_dev->dev);
	}
	mutex_unlock(&cdev->lock);

@@ -1677,7 +1675,7 @@ __dfl_fpga_cdev_find_port_data(struct dfl_fpga_cdev *cdev, void *data,
	struct dfl_feature_dev_data *fdata;

	list_for_each_entry(fdata, &cdev->port_dev_list, node) {
		if (match(fdata, data) && get_device(&fdata->dev->dev))
		if (match(fdata, data))
			return fdata;
	}

@@ -1728,19 +1726,17 @@ int dfl_fpga_cdev_release_port(struct dfl_fpga_cdev *cdev, int port_id)

	if (!device_is_registered(&fdata->dev->dev)) {
		ret = -EBUSY;
		goto put_dev_exit;
		goto unlock_exit;
	}

	mutex_lock(&fdata->lock);
	ret = dfl_feature_dev_use_begin(fdata, true);
	mutex_unlock(&fdata->lock);
	if (ret)
		goto put_dev_exit;
		goto unlock_exit;

	platform_device_del(fdata->dev);
	cdev->released_port_num++;
put_dev_exit:
	put_device(&fdata->dev->dev);
unlock_exit:
	mutex_unlock(&cdev->lock);
	return ret;
@@ -1771,20 +1767,18 @@ int dfl_fpga_cdev_assign_port(struct dfl_fpga_cdev *cdev, int port_id)

	if (device_is_registered(&fdata->dev->dev)) {
		ret = -EBUSY;
		goto put_dev_exit;
		goto unlock_exit;
	}

	ret = platform_device_add(fdata->dev);
	if (ret)
		goto put_dev_exit;
		goto unlock_exit;

	mutex_lock(&fdata->lock);
	dfl_feature_dev_use_end(fdata);
	mutex_unlock(&fdata->lock);

	cdev->released_port_num--;
put_dev_exit:
	put_device(&fdata->dev->dev);
unlock_exit:
	mutex_unlock(&cdev->lock);
	return ret;
+0 −5
Original line number Diff line number Diff line
@@ -551,11 +551,6 @@ struct dfl_fpga_cdev *
dfl_fpga_feature_devs_enumerate(struct dfl_fpga_enum_info *info);
void dfl_fpga_feature_devs_remove(struct dfl_fpga_cdev *cdev);

/*
 * need to drop the device reference with put_device() after use port platform
 * device returned by __dfl_fpga_cdev_find_port and dfl_fpga_cdev_find_port
 * functions.
 */
struct dfl_feature_dev_data *
__dfl_fpga_cdev_find_port_data(struct dfl_fpga_cdev *cdev, void *data,
			       int (*match)(struct dfl_feature_dev_data *, void *));