lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100812201601.GC27749@pengutronix.de>
Date:	Thu, 12 Aug 2010 22:16:01 +0200
From:	Sascha Hauer <s.hauer@...gutronix.de>
To:	Dan Williams <dan.j.williams@...el.com>
Cc:	linux-kernel@...r.kernel.org,
	Linus Walleij <linus.ml.walleij@...il.com>
Subject: Re: dmaengine questions

On Thu, Aug 12, 2010 at 12:14:20PM -0700, Dan Williams wrote:
> On Thu, Aug 12, 2010 at 8:00 AM, Sascha Hauer <s.hauer@...gutronix.de> wrote:
> > Hi,
> >
> > I am currently looking into implementing the Freescale i.MX SDMA engine
> > into the dmaengine API. The SDMA engine can handle sg transfers from/to
> > devices. During implementation some questions came up.
> >
> > On the i.MX we already have a DMA engine which can do slave dma
> > transfers, the IPU (drivers/dma/ipu/), which is exclusively used for
> > image operations. My problem is that I found no way for the clients
> > to select which DMA engine to use as both have the same capabilities
> > (DMA_SLAVE).
> 
> Yes, if you need finer grained matching of channels, beyond simple
> capability matching, this is the intended purpose of the
> 'dma_filter_fn' and 'filter_param' arguments to dma_request_channel.
> Dmaengine will pass all available channels that match the base
> capability to the filter function for further, usually architecture
> specific, discrimination.

Ok, so I could do a strcmp(dev_name(chan->device->dev), "imx-sdma") in
the filter function.

> 
> > For the SDMA engine the clients have to pass some platform specific data
> > to the SDMA engine (dma request line, word width and the like). The
> > current mechanism is to pass this data through the dma_chan->private
> > field, which seems more like tunneling instead of passing the data as we
> > lose type safety. Are there any ideas to improve this?
> 
> Hopefully dma_chan->private can eventually be phased out in favor of
> Linus' dma_slave_config scheme [1].

This looks promising. Two things are missing here for the SDMA engine.
First is the DMA request line which is probably needed for other dma
engines aswell, so this could be added to dma_slave_config. The other
one is really specific to the SDMA engine, it's the following enum. The
SDMA engine is a programmable controller in the i.MX and each peripheral
has its own copy function in this controller. This enum is used to
determine their start addresses.

typedef enum {
        IMX_DMATYPE_SSI,        /* MCU domain SSI */
        IMX_DMATYPE_SSI_SP,     /* Shared SSI */
        IMX_DMATYPE_MMC,        /* MMC */
        IMX_DMATYPE_SDHC,       /* SDHC */
        IMX_DMATYPE_UART,       /* MCU domain UART */
        IMX_DMATYPE_UART_SP,    /* Shared UART */
        IMX_DMATYPE_FIRI,       /* FIRI */
        IMX_DMATYPE_CSPI,       /* MCU domain CSPI */
        IMX_DMATYPE_CSPI_SP,    /* Shared CSPI */
        IMX_DMATYPE_SIM,        /* SIM */
        IMX_DMATYPE_ATA,        /* ATA */
        IMX_DMATYPE_CCM,        /* CCM */
        IMX_DMATYPE_EXT,        /* External peripheral */
        IMX_DMATYPE_MSHC,       /* Memory Stick Host Controller */
        IMX_DMATYPE_MSHC_SP,    /* Shared Memory Stick Host Controller */
        IMX_DMATYPE_DSP,        /* DSP */
        IMX_DMATYPE_MEMORY,     /* Memory */
        IMX_DMATYPE_FIFO_MEMORY,/* FIFO type Memory */
        IMX_DMATYPE_SPDIF,      /* SPDIF */
        IMX_DMATYPE_IPU_MEMORY, /* IPU Memory */
        IMX_DMATYPE_ASRC,       /* ASRC */
        IMX_DMATYPE_ESAI,       /* ESAI */
} sdma_peripheral_type;

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ