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>] [day] [month] [year] [list]
Date:	Tue, 1 Jul 2008 14:50:51 +0100
From:	"Sosnowski, Maciej" <maciej.sosnowski@...el.com>
To:	<haavard.skinnemoen@...el.com>
Cc:	"Williams, Dan J" <dan.j.williams@...el.com>,
	<drzeus-list@...eus.cx>, "lkml" <linux-kernel@...r.kernel.org>,
	<linux-embedded@...r.kernel.org>, <kernel@...32linux.org>,
	"Nelson, Shannon" <shannon.nelson@...el.com>, <david-b@...bell.net>
Subject: RE: [PATCH v4 1/6] dmaengine: Add dma_client parameter to device_alloc_chan_resources

> ---------- Original message ----------
> From: Haavard Skinnemoen <haavard.skinnemoen@...el.com>
> Date: Jun 26, 2008 3:23 PM
> Subject: [PATCH v4 1/6] dmaengine: Add dma_client parameter to
> device_alloc_chan_resources
> To: Dan Williams <dan.j.williams@...el.com>, Pierre Ossman
> <drzeus-list@...eus.cx>
> Cc: linux-kernel@...r.kernel.org, linux-embedded@...r.kernel.org,
> kernel@...32linux.org, shannon.nelson@...el.com, David Brownell
> <david-b@...bell.net>, Haavard Skinnemoen
> <haavard.skinnemoen@...el.com>
> 
> 
> A DMA controller capable of doing slave transfers may need to know a
> few things about the slave when preparing the channel. We don't want
> to add this information to struct dma_channel since the channel hasn't
> yet been bound to a client at this point.
> 
> Instead, pass a reference to the client requesting the channel to the
> driver's device_alloc_chan_resources hook so that it can pick the
> necessary information from the dma_client struct by itself.
> 
> Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@...el.com>
> ---
>  drivers/dma/dmaengine.c   |    3 ++-
>  drivers/dma/ioat_dma.c    |    5 +++--
>  drivers/dma/iop-adma.c    |    7 ++++---
>  include/linux/dmaengine.h |    3 ++-
>  4 files changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
> index 99c22b4..a57c337 100644
> --- a/drivers/dma/dmaengine.c
> +++ b/drivers/dma/dmaengine.c
> @@ -174,7 +174,8 @@ static void dma_client_chan_alloc(struct
dma_client
>                        *client) if (!dma_chan_satisfies_mask(chan,
>                                client->cap_mask)) continue;
> 
> -                       desc =
> chan->device->device_alloc_chan_resources(chan); +
desc
> = chan->device->device_alloc_chan_resources( +

>                        chan, client); if (desc >= 0) {
>                                ack = client->event_callback(client,
>                                                chan,
> diff --git a/drivers/dma/ioat_dma.c b/drivers/dma/ioat_dma.c
> index 318e8a2..90e5b0a 100644
> --- a/drivers/dma/ioat_dma.c
> +++ b/drivers/dma/ioat_dma.c
> @@ -452,7 +452,8 @@ static void ioat2_dma_massage_chan_desc(struct
> ioat_dma_chan *ioat_chan)
>  * ioat_dma_alloc_chan_resources - returns the number of allocated
descriptors
>  * @chan: the channel to be filled out
>  */
> -static int ioat_dma_alloc_chan_resources(struct dma_chan *chan)
> +static int ioat_dma_alloc_chan_resources(struct dma_chan *chan,
> +                                        struct dma_client *client)
>  {
>        struct ioat_dma_chan *ioat_chan = to_ioat_chan(chan);
>        struct ioat_desc_sw *desc;
> @@ -1049,7 +1050,7 @@ static int ioat_dma_self_test(struct
> ioatdma_device *device)
>        dma_chan = container_of(device->common.channels.next,
>                                struct dma_chan,
>                                device_node);
> -       if (device->common.device_alloc_chan_resources(dma_chan) < 1)
{
> +       if (device->common.device_alloc_chan_resources(dma_chan, NULL)
< 1) {
>                dev_err(&device->pdev->dev,
>                        "selftest cannot allocate chan resource\n");
>                err = -ENODEV;
> diff --git a/drivers/dma/iop-adma.c b/drivers/dma/iop-adma.c
> index 0ec0f43..2664ea5 100644
> --- a/drivers/dma/iop-adma.c
> +++ b/drivers/dma/iop-adma.c
> @@ -444,7 +444,8 @@ static void iop_chan_start_null_memcpy(struct
> iop_adma_chan *iop_chan);
>  static void iop_chan_start_null_xor(struct iop_adma_chan *iop_chan);
> 
>  /* returns the number of allocated descriptors */
> -static int iop_adma_alloc_chan_resources(struct dma_chan *chan)
> +static int iop_adma_alloc_chan_resources(struct dma_chan *chan,
> +                                        struct dma_client *client)
>  {
>        char *hw_desc;
>        int idx;
> @@ -838,7 +839,7 @@ static int __devinit
> iop_adma_memcpy_self_test(struct iop_adma_device *device)
>        dma_chan = container_of(device->common.channels.next,
>                                struct dma_chan,
>                                device_node);
> -       if (iop_adma_alloc_chan_resources(dma_chan) < 1) {
> +       if (iop_adma_alloc_chan_resources(dma_chan, NULL) < 1) {
>                err = -ENODEV;
>                goto out;
>        }
> @@ -936,7 +937,7 @@ iop_adma_xor_zero_sum_self_test(struct
> iop_adma_device *device)
>        dma_chan = container_of(device->common.channels.next,
>                                struct dma_chan,
>                                device_node);
> -       if (iop_adma_alloc_chan_resources(dma_chan) < 1) {
> +       if (iop_adma_alloc_chan_resources(dma_chan, NULL) < 1) {
>                err = -ENODEV;
>                goto out;
>        }
> diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
> index d08a5c5..cffb95f 100644
> --- a/include/linux/dmaengine.h
> +++ b/include/linux/dmaengine.h
> @@ -279,7 +279,8 @@ struct dma_device {
>        int dev_id;
>        struct device *dev;
> 
> -       int (*device_alloc_chan_resources)(struct dma_chan *chan);
> +       int (*device_alloc_chan_resources)(struct dma_chan *chan,
> +                       struct dma_client *client);
>        void (*device_free_chan_resources)(struct dma_chan *chan);
> 
>        struct dma_async_tx_descriptor *(*device_prep_dma_memcpy)(
> --
> 1.5.5.4

Acked-by: Maciej Sosnowski <maciej.sosnowski@...el.com>

Regards,
Maciej
--
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