All of lore.kernel.org
 help / color / mirror / Atom feed
From: vinod.koul@intel.com (Vinod Koul)
To: linux-arm-kernel@lists.infradead.org
Subject: Tearing down DMA transfer setup after DMA client has finished
Date: Fri, 9 Dec 2016 23:26:06 +0530	[thread overview]
Message-ID: <20161209175606.GM6408@localhost> (raw)
In-Reply-To: <ec33d3f0-6474-2b13-8a26-077ce3785d31@free.fr>

On Fri, Dec 09, 2016 at 06:34:15PM +0100, Mason wrote:
> On 09/12/2016 18:17, Vinod Koul wrote:
> 
> > On Fri, Dec 09, 2016 at 11:25:57AM +0100, Sebastian Frias wrote:
> >>
> >> What concrete solution do you propose?
> > 
> > I have already proposed two solutions.
> > 
> > A) Request a channel only when you need it. Obviously we can't do virtual
> > channels with this (though we should still use virt-channels framework).
> > The sbox setup and teardown can be done as part of channel request and
> > freeup. PL08x already does this.
> > 
> > Downside is that we can only have as many consumers at a time as channels.
> > 
> > I have not heard any technical reason for not doing this apart from drivers
> > grab the channel at probe, which is incorrect and needs to be fixed
> > irrespective of the problem at hand.
> > 
> > This is my preferred option.
> 
> There is one important drawback with this solution. If a driver calls
> dma_request_chan() when no channels are currently available, it will
> get -EBUSY. If there were a flag in dma_request_chan to be put to
> sleep (with timeout) until a channel is available, then it would
> work. But busy waiting in the client driver is a waste of power.

Right, but in that case the fallback would be PIO mode, and if that is
not availble (IIRC some f your devices don't) then reject the usage with
EAGAIN.


-- 
~Vinod

WARNING: multiple messages have this Message-ID (diff)
From: Vinod Koul <vinod.koul@intel.com>
To: Mason <slash.tmp@free.fr>
Cc: Sebastian Frias <sf84@laposte.net>,
	Mans Rullgard <mans@mansr.com>,
	Russell King <linux@arm.linux.org.uk>,
	dmaengine@vger.kernel.org,
	Linus Walleij <linus.walleij@linaro.org>,
	Dan Williams <dan.j.williams@intel.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	Jon Mason <jdmason@kudzu.us>, Mark Brown <broonie@kernel.org>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Lee Jones <lee.jones@linaro.org>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Maxime Ripard <maxime.ripard@free-electrons.com>,
	Dave Jiang <dave.jiang@intel.com>,
	Peter Ujfalusi <peter.ujfalusi@ti.com>,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	Thibaud Cornic <thibaud_cornic@sigmadesigns.com>
Subject: Re: Tearing down DMA transfer setup after DMA client has finished
Date: Fri, 9 Dec 2016 23:26:06 +0530	[thread overview]
Message-ID: <20161209175606.GM6408@localhost> (raw)
In-Reply-To: <ec33d3f0-6474-2b13-8a26-077ce3785d31@free.fr>

On Fri, Dec 09, 2016 at 06:34:15PM +0100, Mason wrote:
> On 09/12/2016 18:17, Vinod Koul wrote:
> 
> > On Fri, Dec 09, 2016 at 11:25:57AM +0100, Sebastian Frias wrote:
> >>
> >> What concrete solution do you propose?
> > 
> > I have already proposed two solutions.
> > 
> > A) Request a channel only when you need it. Obviously we can't do virtual
> > channels with this (though we should still use virt-channels framework).
> > The sbox setup and teardown can be done as part of channel request and
> > freeup. PL08x already does this.
> > 
> > Downside is that we can only have as many consumers at a time as channels.
> > 
> > I have not heard any technical reason for not doing this apart from drivers
> > grab the channel at probe, which is incorrect and needs to be fixed
> > irrespective of the problem at hand.
> > 
> > This is my preferred option.
> 
> There is one important drawback with this solution. If a driver calls
> dma_request_chan() when no channels are currently available, it will
> get -EBUSY. If there were a flag in dma_request_chan to be put to
> sleep (with timeout) until a channel is available, then it would
> work. But busy waiting in the client driver is a waste of power.

Right, but in that case the fallback would be PIO mode, and if that is
not availble (IIRC some f your devices don't) then reject the usage with
EAGAIN.


-- 
~Vinod

  reply	other threads:[~2016-12-09 17:56 UTC|newest]

Thread overview: 164+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-23 10:25 Tearing down DMA transfer setup after DMA client has finished Mason
2016-11-23 10:25 ` Mason
2016-11-23 12:13 ` Måns Rullgård
2016-11-23 12:13   ` Måns Rullgård
2016-11-23 12:41   ` Mason
2016-11-23 12:41     ` Mason
2016-11-23 17:21     ` Måns Rullgård
2016-11-23 17:21       ` Måns Rullgård
2016-11-24 10:53       ` Mason
2016-11-24 10:53         ` Mason
2016-11-24 14:17         ` Måns Rullgård
2016-11-24 14:17           ` Måns Rullgård
2016-11-24 15:20           ` Mason
2016-11-24 15:20             ` Mason
2016-11-24 16:37             ` Måns Rullgård
2016-11-24 16:37               ` Måns Rullgård
2016-11-25  4:55 ` Vinod Koul
2016-11-25  4:55   ` Vinod Koul
2016-11-25 11:57   ` Måns Rullgård
2016-11-25 11:57     ` Måns Rullgård
2016-11-25 14:05     ` Mason
2016-11-25 14:05       ` Mason
2016-11-25 14:12       ` Måns Rullgård
2016-11-25 14:12         ` Måns Rullgård
2016-11-25 14:28         ` Mason
2016-11-25 14:28           ` Mason
2016-11-25 14:42           ` Måns Rullgård
2016-11-25 14:42             ` Måns Rullgård
2016-11-25 12:45   ` Russell King - ARM Linux
2016-11-25 12:45     ` Russell King - ARM Linux
2016-11-25 13:07     ` Måns Rullgård
2016-11-25 13:07       ` Måns Rullgård
2016-11-25 13:34       ` Russell King - ARM Linux
2016-11-25 13:34         ` Russell King - ARM Linux
2016-11-25 13:50         ` Måns Rullgård
2016-11-25 13:50           ` Måns Rullgård
2016-11-25 13:58           ` Russell King - ARM Linux
2016-11-25 13:58             ` Russell King - ARM Linux
2016-11-25 14:03             ` Måns Rullgård
2016-11-25 14:03               ` Måns Rullgård
2016-11-25 14:17               ` Russell King - ARM Linux
2016-11-25 14:17                 ` Russell King - ARM Linux
2016-11-25 14:40                 ` Måns Rullgård
2016-11-25 14:40                   ` Måns Rullgård
2016-11-25 14:56                   ` Russell King - ARM Linux
2016-11-25 14:56                     ` Russell King - ARM Linux
2016-11-25 15:08                     ` Måns Rullgård
2016-11-25 15:08                       ` Måns Rullgård
2016-11-25 15:02                 ` Mason
2016-11-25 15:02                   ` Mason
2016-11-25 15:12                   ` Måns Rullgård
2016-11-25 15:12                     ` Måns Rullgård
2016-11-25 15:21                     ` Mason
2016-11-25 15:21                       ` Mason
2016-11-25 15:28                       ` Måns Rullgård
2016-11-25 15:28                         ` Måns Rullgård
2016-11-25 12:46   ` Mason
2016-11-25 12:46     ` Mason
2016-11-25 13:11     ` Måns Rullgård
2016-11-25 13:11       ` Måns Rullgård
2016-11-25 14:21       ` Mason
2016-11-25 14:21         ` Mason
2016-11-25 14:37         ` Måns Rullgård
2016-11-25 14:37           ` Måns Rullgård
2016-11-25 15:35           ` Mason
2016-11-25 15:35             ` Mason
2016-11-29 18:25     ` Mason
2016-11-29 18:25       ` Mason
2016-12-06  5:12       ` Vinod Koul
2016-12-06  5:12         ` Vinod Koul
2016-12-06 12:42         ` Mason
2016-12-06 12:42           ` Mason
2016-12-06 13:14           ` Måns Rullgård
2016-12-06 13:14             ` Måns Rullgård
2016-12-06 15:24             ` Mason
2016-12-06 15:24               ` Mason
2016-12-06 15:34               ` Måns Rullgård
2016-12-06 15:34                 ` Måns Rullgård
2016-12-06 22:55                 ` Mason
2016-12-06 22:55                   ` Mason
2016-12-07 16:43             ` Vinod Koul
2016-12-07 16:43               ` Vinod Koul
2016-12-07 16:45               ` Måns Rullgård
2016-12-07 16:45                 ` Måns Rullgård
2016-12-08 10:39                 ` Vinod Koul
2016-12-08 10:39                   ` Vinod Koul
2016-12-08 10:54                   ` Mason
2016-12-08 10:54                     ` Mason
2016-12-08 11:18                     ` Geert Uytterhoeven
2016-12-08 11:18                       ` Geert Uytterhoeven
2016-12-08 11:47                       ` Måns Rullgård
2016-12-08 11:47                         ` Måns Rullgård
2016-12-08 12:03                         ` Geert Uytterhoeven
2016-12-08 12:03                           ` Geert Uytterhoeven
2016-12-08 12:17                           ` Mason
2016-12-08 12:17                             ` Mason
2016-12-08 12:21                           ` Måns Rullgård
2016-12-08 12:21                             ` Måns Rullgård
2016-12-08 16:37                     ` Vinod Koul
2016-12-08 16:37                       ` Vinod Koul
2016-12-08 16:48                       ` Måns Rullgård
2016-12-08 16:48                         ` Måns Rullgård
2016-12-09  6:59                         ` Vinod Koul
2016-12-09  6:59                           ` Vinod Koul
2016-12-09 10:25                           ` Sebastian Frias
2016-12-09 10:25                             ` Sebastian Frias
2016-12-09 11:34                             ` Måns Rullgård
2016-12-09 11:34                               ` Måns Rullgård
2016-12-09 11:35                             ` 1Måns Rullgård
2016-12-09 11:35                               ` 1Måns Rullgård
2016-12-09 17:17                             ` Vinod Koul
2016-12-09 17:17                               ` Vinod Koul
2016-12-09 17:28                               ` Måns Rullgård
2016-12-09 17:28                                 ` Måns Rullgård
2016-12-09 17:53                                 ` Vinod Koul
2016-12-09 17:53                                   ` Vinod Koul
2016-12-09 17:34                               ` Mason
2016-12-09 17:34                                 ` Mason
2016-12-09 17:56                                 ` Vinod Koul [this message]
2016-12-09 17:56                                   ` Vinod Koul
2016-12-09 18:17                                   ` Vinod Koul
2016-12-09 18:17                                     ` Vinod Koul
2016-12-09 18:23                                   ` Mason
2016-12-09 18:23                                     ` Mason
2016-12-12  5:01                                     ` Vinod Koul
2016-12-12  5:01                                       ` Vinod Koul
2016-12-15 11:17                                     ` Mark Brown
2016-12-15 11:17                                       ` Mark Brown
2016-12-08 11:44                   ` Måns Rullgård
2016-12-08 11:44                     ` Måns Rullgård
2016-12-08 11:59                     ` Geert Uytterhoeven
2016-12-08 11:59                       ` Geert Uytterhoeven
2016-12-08 12:20                       ` Måns Rullgård
2016-12-08 12:20                         ` Måns Rullgård
2016-12-08 12:31                         ` Geert Uytterhoeven
2016-12-08 12:31                           ` Geert Uytterhoeven
2016-12-08 12:41                         ` Mason
2016-12-08 12:41                           ` Mason
2016-12-08 12:44                           ` Måns Rullgård
2016-12-08 12:44                             ` Måns Rullgård
2016-12-08 13:29                             ` Mason
2016-12-08 13:29                               ` Mason
2016-12-08 13:39                               ` Måns Rullgård
2016-12-08 13:39                                 ` Måns Rullgård
2016-12-08 15:50                         ` Vinod Koul
2016-12-08 15:50                           ` Vinod Koul
2016-12-08 16:36                           ` Måns Rullgård
2016-12-08 16:36                             ` Måns Rullgård
2016-12-08 15:40                     ` Vinod Koul
2016-12-08 15:40                       ` Vinod Koul
2016-12-08 15:43                       ` Mason
2016-12-08 15:43                         ` Mason
2016-12-08 16:21                         ` Vinod Koul
2016-12-08 16:21                           ` Vinod Koul
2016-12-08 16:46                       ` Måns Rullgård
2016-12-08 16:46                         ` Måns Rullgård
2016-12-07 16:41           ` Vinod Koul
2016-12-07 16:41             ` Vinod Koul
2016-12-07 16:44             ` Måns Rullgård
2016-12-07 16:44               ` Måns Rullgård
2016-12-08 10:37               ` Vinod Koul
2016-12-08 10:37                 ` Vinod Koul
2016-12-08 11:44                 ` Måns Rullgård
2016-12-08 11:44                   ` Måns Rullgård

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161209175606.GM6408@localhost \
    --to=vinod.koul@intel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.