lkml.org 
[lkml]   [2019]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH/RFC] dmaengine: Create symlinks from DMA channels to slaves
Date
Currently it is not easy to find out which DMA channels are in use, and
by which slave devices.

Fix this by creating in sysfs a "slave" symlink from the DMA channel to
the actual slave device when a channel is requested, and removing it
again when the channel is released.

For now this is limited to DT and ACPI.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
Questions:
1. Do you think this is useful?
2. Should backlinks (e.g. "dma:<name>") be created from the slave
device to the DMA channel?
This requires storing the name in struct dma_chan, for later
symlink removal.
3. Should this be extended to other ways of requesting channels?
In many cases, no device pointer is available, so a device pointer
parameter has to be added to all DMA channel request APIs that
don't have it yet.
---
drivers/dma/dmaengine.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
index 03ac4b96117cd8db..c11476f76fc96bcf 100644
--- a/drivers/dma/dmaengine.c
+++ b/drivers/dma/dmaengine.c
@@ -706,6 +706,10 @@ struct dma_chan *dma_request_chan(struct device *dev, const char *name)

if (chan) {
/* Valid channel found or requester needs to be deferred */
+ if (!IS_ERR(chan) &&
+ sysfs_create_link(&chan->dev->device.kobj, &dev->kobj,
+ "slave"))
+ dev_err(dev, "Cannot create DMA slave symlink\n");
if (!IS_ERR(chan) || PTR_ERR(chan) == -EPROBE_DEFER)
return chan;
}
@@ -786,6 +790,7 @@ void dma_release_channel(struct dma_chan *chan)
/* drop PRIVATE cap enabled by __dma_request_channel() */
if (--chan->device->privatecnt == 0)
dma_cap_clear(DMA_PRIVATE, chan->device->cap_mask);
+ sysfs_remove_link(&chan->dev->device.kobj, "slave");
mutex_unlock(&dma_list_mutex);
}
EXPORT_SYMBOL_GPL(dma_release_channel);
--
2.17.1
\
 
 \ /
  Last update: 2019-06-07 13:39    [W:0.051 / U:0.112 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site