[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250702172433.1738947-4-dtatulea@nvidia.com>
Date: Wed, 2 Jul 2025 20:24:25 +0300
From: Dragos Tatulea <dtatulea@...dia.com>
To: <almasrymina@...gle.com>, <asml.silence@...il.com>, "David S. Miller"
<davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>, Jakub Kicinski
<kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>, Simon Horman
<horms@...nel.org>
CC: Dragos Tatulea <dtatulea@...dia.com>, Saeed Mahameed <saeedm@...dia.com>,
<tariqt@...dia.com>, <cratiu@...dia.com>, <netdev@...r.kernel.org>,
<linux-kernel@...r.kernel.org>
Subject: [RFC net-next 3/4] net: devmem: Use the new netdev_get_dma_dev() API
Using the new DMA dev helper API, there will be an error on
buffer binding if the device does not support DMA.
Previously this went through and was returning success event if the
mappings were not done. Only a warning was printed.
Signed-off-by: Dragos Tatulea <dtatulea@...dia.com>
---
net/core/devmem.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/net/core/devmem.c b/net/core/devmem.c
index b3a62ca0df65..c6354b47257f 100644
--- a/net/core/devmem.c
+++ b/net/core/devmem.c
@@ -183,6 +183,7 @@ net_devmem_bind_dmabuf(struct net_device *dev,
{
struct net_devmem_dmabuf_binding *binding;
static u32 id_alloc_next;
+ struct device *dma_dev;
struct scatterlist *sg;
struct dma_buf *dmabuf;
unsigned int sg_idx, i;
@@ -193,6 +194,13 @@ net_devmem_bind_dmabuf(struct net_device *dev,
if (IS_ERR(dmabuf))
return ERR_CAST(dmabuf);
+ dma_dev = netdev_get_dma_dev(dev);
+ if (!dma_dev) {
+ err = -EOPNOTSUPP;
+ NL_SET_ERR_MSG(extack, "Parent device can't do dma");
+ goto err_put_dmabuf;
+ }
+
binding = kzalloc_node(sizeof(*binding), GFP_KERNEL,
dev_to_node(&dev->dev));
if (!binding) {
@@ -209,7 +217,7 @@ net_devmem_bind_dmabuf(struct net_device *dev,
binding->dmabuf = dmabuf;
- binding->attachment = dma_buf_attach(binding->dmabuf, dev->dev.parent);
+ binding->attachment = dma_buf_attach(binding->dmabuf, dma_dev);
if (IS_ERR(binding->attachment)) {
err = PTR_ERR(binding->attachment);
NL_SET_ERR_MSG(extack, "Failed to bind dmabuf to device");
--
2.50.0
Powered by blists - more mailing lists