From: Peter Colberg <peter.colberg@intel.com>
To: Wu Hao <hao.wu@intel.com>, Tom Rix <trix@redhat.com>,
Moritz Fischer <mdf@kernel.org>, Xu Yilun <yilun.xu@intel.com>,
linux-fpga@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Russ Weight <russ.weight@linux.dev>,
Marco Pagani <marpagan@redhat.com>,
Matthew Gerlach <matthew.gerlach@linux.intel.com>,
Basheer Ahmed Muddebihal
<basheer.ahmed.muddebihal@linux.intel.com>,
Peter Colberg <peter.colberg@intel.com>
Subject: [PATCH v4 18/19] fpga: dfl: drop unneeded get_device() and put_device() of feature device
Date: Fri, 25 Oct 2024 18:37:13 -0400 [thread overview]
Message-ID: <20241025223714.394533-19-peter.colberg@intel.com> (raw)
In-Reply-To: <20241025223714.394533-1-peter.colberg@intel.com>
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: Peter Colberg <peter.colberg@intel.com>
Reviewed-by: Matthew Gerlach <matthew.gerlach@linux.intel.com>
Reviewed-by: Basheer Ahmed Muddebihal <basheer.ahmed.muddebihal@linux.intel.com>
---
Changes since v3:
- New patch extracted from last patch of v3 series.
---
drivers/fpga/dfl-fme-br.c | 2 --
drivers/fpga/dfl.c | 16 +++++-----------
drivers/fpga/dfl.h | 5 -----
3 files changed, 5 insertions(+), 18 deletions(-)
diff --git a/drivers/fpga/dfl-fme-br.c b/drivers/fpga/dfl-fme-br.c
index 5c60a38ec76c..a298a041877b 100644
--- a/drivers/fpga/dfl-fme-br.c
+++ b/drivers/fpga/dfl-fme-br.c
@@ -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);
}
diff --git a/drivers/fpga/dfl.c b/drivers/fpga/dfl.c
index a2459b0cbc68..ed38e5ec84b6 100644
--- a/drivers/fpga/dfl.c
+++ b/drivers/fpga/dfl.c
@@ -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);
}
@@ -1636,7 +1635,6 @@ void dfl_fpga_feature_devs_remove(struct dfl_fpga_cdev *cdev)
}
list_del(&fdata->node);
- put_device(&port_dev->dev);
}
mutex_unlock(&cdev->lock);
@@ -1668,7 +1666,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;
}
@@ -1719,19 +1717,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;
@@ -1762,20 +1758,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;
diff --git a/drivers/fpga/dfl.h b/drivers/fpga/dfl.h
index 2e38c42b3920..95539f1213cb 100644
--- a/drivers/fpga/dfl.h
+++ b/drivers/fpga/dfl.h
@@ -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 *));
--
2.47.0
next prev parent reply other threads:[~2024-10-25 22:37 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-25 22:36 [PATCH v4 00/19] fpga: dfl: fix kernel warning on port release/assign for SRIOV Peter Colberg
2024-10-25 22:36 ` [PATCH v4 01/19] fpga: dfl: omit unneeded argument pdata from dfl_feature_instance_init() Peter Colberg
2024-10-25 22:36 ` [PATCH v4 02/19] fpga: dfl: return platform data from dfl_fpga_inode_to_feature_dev_data() Peter Colberg
2024-10-25 22:36 ` [PATCH v4 03/19] fpga: dfl: afu: use parent device to log errors on port enable/disable Peter Colberg
2024-10-25 22:36 ` [PATCH v4 04/19] fpga: dfl: afu: define local pointer to feature device Peter Colberg
2024-10-25 22:37 ` [PATCH v4 05/19] fpga: dfl: pass feature platform data instead of device as argument Peter Colberg
2024-10-25 22:37 ` [PATCH v4 06/19] fpga: dfl: factor out feature data creation from build_info_commit_dev() Peter Colberg
2024-10-25 22:37 ` [PATCH v4 07/19] fpga: dfl: store FIU type in feature platform data Peter Colberg
2024-10-25 22:37 ` [PATCH v4 08/19] fpga: dfl: refactor internal DFL APIs to take/return feature device data Peter Colberg
2024-10-25 22:37 ` [PATCH v4 09/19] fpga: dfl: factor out feature device registration Peter Colberg
2024-10-25 22:37 ` [PATCH v4 10/19] fpga: dfl: factor out feature device data from platform device data Peter Colberg
2024-10-25 22:37 ` [PATCH v4 11/19] fpga: dfl: convert features from flexible array member to separate array Peter Colberg
2024-10-25 22:37 ` [PATCH v4 12/19] fpga: dfl: store MMIO resources in feature device data Peter Colberg
2024-10-25 22:37 ` [PATCH v4 13/19] fpga: dfl: store platform device name " Peter Colberg
2024-10-25 22:37 ` [PATCH v4 14/19] fpga: dfl: store platform device id " Peter Colberg
2024-11-18 14:34 ` Xu Yilun
2024-11-19 23:34 ` Colberg, Peter
2024-10-25 22:37 ` [PATCH v4 15/19] fpga: dfl: convert is_feature_dev_detected() to use FIU type Peter Colberg
2024-11-18 14:32 ` Xu Yilun
2024-11-18 23:00 ` Colberg, Peter
2024-11-19 1:19 ` Xu Yilun
2024-11-19 23:37 ` Colberg, Peter
2024-10-25 22:37 ` [PATCH v4 16/19] fpga: dfl: allocate platform device after feature device data Peter Colberg
2024-11-18 14:51 ` Xu Yilun
2024-11-18 23:04 ` Colberg, Peter
2024-11-19 23:39 ` Colberg, Peter
2024-10-25 22:37 ` [PATCH v4 17/19] fpga: dfl: remove unneeded function build_info_create_dev() Peter Colberg
2024-11-18 14:58 ` Xu Yilun
2024-11-19 23:40 ` Colberg, Peter
2024-10-25 22:37 ` Peter Colberg [this message]
2024-11-18 15:01 ` [PATCH v4 18/19] fpga: dfl: drop unneeded get_device() and put_device() of feature device Xu Yilun
2024-10-25 22:37 ` [PATCH v4 19/19] fpga: dfl: destroy/recreate feature platform device on port release/assign Peter Colberg
2024-11-18 15:09 ` Xu Yilun
2024-11-19 23:46 ` Colberg, Peter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241025223714.394533-19-peter.colberg@intel.com \
--to=peter.colberg@intel.com \
--cc=basheer.ahmed.muddebihal@linux.intel.com \
--cc=hao.wu@intel.com \
--cc=linux-fpga@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marpagan@redhat.com \
--cc=matthew.gerlach@linux.intel.com \
--cc=mdf@kernel.org \
--cc=russ.weight@linux.dev \
--cc=trix@redhat.com \
--cc=yilun.xu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox