Re: [PATCH v2] dmaengine: Create symlinks between DMA channels and slaves

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 20, 2020 at 1:06 PM Peter Ujfalusi <peter.ujfalusi@xxxxxx> wrote:
> On 20/01/2020 12.51, Geert Uytterhoeven wrote:
> > On Mon, Jan 20, 2020 at 11:16 AM Peter Ujfalusi <peter.ujfalusi@xxxxxx> wrote:
> >> On 20/01/2020 11.01, Geert Uytterhoeven wrote:
> >>> On Fri, Jan 17, 2020 at 9:08 PM Peter Ujfalusi <peter.ujfalusi@xxxxxx> wrote:
> >>>> On 1/17/20 5:30 PM, Geert Uytterhoeven wrote:
> >>>>> Currently it is not easy to find out which DMA channels are in use, and
> >>>>> which slave devices are using which channels.
> >>>>>
> >>>>> Fix this by creating two symlinks between the DMA channel and the actual
> >>>>> slave device when a channel is requested:
> >>>>>   1. A "slave" symlink from DMA channel to slave device,
> >>>>
> >>>> Have you considered similar link name as on the slave device:
> >>>> slave:<name>
> >>>>
> >>>> That way it would be easier to grasp which channel is used for what
> >>>> purpose by only looking under /sys/class/dma/ and no need to check the
> >>>> slave device.
> >>>
> >>> Would this really provide more information?
> >>> The device name is already provided in the target of the symlink:
> >>>
> >>> root@koelsch:~# readlink
> >>> /sys/devices/platform/soc/e6720000.dma-controller/dma/dma1chan2/slave
> >>> ../../../ee140000.sd
> >>
> >> e6720000.dma-controller/dma/dma1chan2/slave -> ../../../ee140000.sd
> >> e6720000.dma-controller/dma/dma1chan3/slave -> ../../../ee140000.sd
> >>
> >> It is hard to tell which one is the tx and RX channel without looking
> >> under the ee140000.sd:
> >>
> >> ee140000.sd/dma:rx -> ../e6720000.dma-controller/dma/dma1chan3
> >> ee140000.sd/dma:tx -> ../e6720000.dma-controller/dma/dma1chan2
> >
> > Oh, you meant the name of the channel, not the name of the device.
> > My mistake.
> >
> > As this name is a property of the slave device, not of the DMA channel,
> > I don't think it belongs under dma*chan*.
>
> Right, but it gives me only half the information I need to be a link useful.
> I know that device X is using two channels but I need to check the
> device X's directory to know which channel is used for what purpose.
>
> >> Another option would be to not have symlinks, but a debugfs file where
> >> this information can be extracted and would only compiled if debugfs is
> >> enabled.
> >
> > Like /proc/interrupts?
>
> More like /sys/kernel/debug/gpio
>
> > That brings the complexity of traversing all channels etc.
>
> Sure, but only when the file is read.
> You can add
> #ifdef CONFIG_DEBUG_FS
> #endif
>
> around the slave_device and name in struct dma_chan {}
>
> and when user reads the file you print out something like this:
> cat /sys/kernel/debug/dmaengine
>
> e6700000.dma-controller:
> dma0chan0               e6e20000.spi:tx
> dma0chan1               e6e20000.spi:rx
> dma0chan2               ee100000.sd:tx
> dma0chan3               ee100000.sd:rx
> ...
> dma0chan14              non slave
> ...
>
> e6720000.dma-controller:
> dma1chan0               e6b10000.spi:tx
> dma1chan1               e6b10000.spi:rx
> ...
>
> This way we will have all the information in one place, easy to look up
> and you don't need to manage symlinks dynamically, just check all
> channels if they have slave_device/name when they are in_use (in_use w/o
> slave_device is 'non slave')
>
> Some drivers are requesting and releasing the DMA channel per transfer
> or when they are opened/closed or other variations.
>
> > What do other people think?

Vinod: do you have some guidance for your minions? ;-)

Thanks!

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds



[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux