linux-serial.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Richard Zhao <rizhao-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
To: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
Cc: "linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	"linux-serial-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-serial-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org"
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>
Subject: Re: [PATCH 6/9] serial: tegra: move to generic dma DT binding
Date: Thu, 1 Aug 2013 11:30:33 +0800	[thread overview]
Message-ID: <20130801033033.GB31469@rizhao-lap> (raw)
In-Reply-To: <51F98275.6020906-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>

On Thu, Aug 01, 2013 at 05:32:37AM +0800, Stephen Warren wrote:
> On 07/30/2013 09:45 PM, Richard Zhao wrote:
> > On Wed, Jul 31, 2013 at 12:46:42AM +0800, Stephen Warren wrote:
> >> On 07/29/2013 09:31 PM, Richard Zhao wrote:
> >>> On Sat, Jul 27, 2013 at 03:39:15AM +0800, Stephen Warren wrote:
> >>>> On 07/23/2013 10:09 PM, Richard Zhao wrote:
> >>>>> - driver: remove use of nvidia,dma-request-selector
> >>>>> 	  use dma_request_slave_channel to request channel
> >>>>> - update binding doc
> >>>>
> >>>> This patch needs to be amended so that the DMA channel is looked up
> >>>> during probe() rather than open(), to guarantee that deferred probe
> >>>> works. It's possible to hold off probe, but not possible AFAIK to hold
> >>>> off opening the port.
> >>>
> >>> How about avoid return -EPROBE_DEFER at open() time? It can be in
> >>> another patch.
> >>
> >> I don't really understand what you mean. -EPROBE_DEFER is something that
> >> only makes sense for probe() to return (or functions used by probe()).
> >> It doesn't make sense to return it anywhere else, since probe deferral
> >> is something that can only happen for probe().
> >
> > What I meant is, it might not worth to move request channel to probe
> > only because we need to check error and return -EPROBE_DEFER.
> 
> If probe() doesn't attempt to validate that the/a DMA channel provider
> exists, then there's no guarantee that the DMA provider has probed
> before the DMA client driver either probes or executes any later code.

I'm not against defer probe, but dma_request_slave_channel might not be
the right function. Ideally dma channels are allocated at open() time
and dma controller loaded checking is at probe() time. So there's
better some function called check_dma_controller_loaded(), or we could
also use initcalls to let dma driver probe earlier.

This patch intend to be simple to only change the binding.

> So, you could quite easily end up with a situation where the serial
> driver's open fails because the DMA provider has not yet probed. This is
> exactly what deferred probe was intended to avoid. This reason alone is
> enough to make it worth fixing this.
> 
> > dma_request_slave_channel is better to be called as late as possible to
> > make better dynamic use of dma channels.
> 
> probe() could validate that the provider exists in a way that doesn't
> permanently hold ownership of the DMA channel. For example, request it
> then immediately release it, in the absence of a dedicated "validate my
> DMA providers exist" API.

It's ugly but may work. The current driver didn't check dma controller
loaded at probe time. Let's leave the task to another patch?

> 
> > Actually, I searched the kernel code, most drivers don't return EPROBE_DEFER
> > when dma_request_slave_channel failed. dma_request_slave_channel can
> > fail in many cases, and dma device not probed is only one case.
> 
> That sounds like a bug. If a DMA channel /is/ specified, it should be
> possible to acquire it. If no DMA channel is specified, and if the
> device can do PIO, then it's reasonable to continue.
Idealy when dma_request_slave_channel failed at open time, it can also
move to PIO.

Thanks
Richard

  parent reply	other threads:[~2013-08-01  3:30 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-24  4:09 [PATCH 0/9] ARM: tegra: move to generic DMA DT binding Richard Zhao
2013-07-24  4:09 ` [PATCH 1/9] ARM: dts: add generic DMA DT binding for tegra apbdma Richard Zhao
2013-07-24  4:09 ` [PATCH 2/9] dma: tegra20-apbdma: move to generic device tree bindings Richard Zhao
2013-07-24  4:09 ` [PATCH 3/9] spi: tegra114: move to generic dma DT binding Richard Zhao
2013-07-26 19:34   ` Stephen Warren
2013-07-30  3:15     ` Richard Zhao
2013-07-30 16:44       ` Stephen Warren
2013-07-24  4:09 ` [PATCH 4/9] spi: tegra20-slink: " Richard Zhao
2013-07-24  4:09 ` [PATCH 5/9] spi: tegra20-sflash: " Richard Zhao
2013-07-24  4:09 ` [PATCH 6/9] serial: tegra: " Richard Zhao
2013-07-26 19:39   ` Stephen Warren
2013-07-26 19:41     ` Stephen Warren
     [not found]     ` <51F2D063.5010505-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-07-30  3:31       ` Richard Zhao
2013-07-30 16:46         ` Stephen Warren
2013-07-31  3:45           ` Richard Zhao
2013-07-31 21:32             ` Stephen Warren
     [not found]               ` <51F98275.6020906-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-08-01  3:30                 ` Richard Zhao [this message]
2013-08-01  3:45                   ` Stephen Warren
2013-07-24  4:10 ` [PATCH 7/9] ASoC: tegra: move to generic DMA " Richard Zhao
2013-07-24  6:58   ` Lars-Peter Clausen
2013-07-24  4:10 ` [PATCH 8/9] ARM: dts: tegra: remove legacy nvidia,dma-request-selector properties Richard Zhao
2013-07-24  4:10 ` [PATCH 9/9] dma: tegra20-apbdma: remove legacy nvidia,dma-request-selector support Richard Zhao
2013-07-26 19:25 ` [PATCH 0/9] ARM: tegra: move to generic DMA DT binding Stephen Warren

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=20130801033033.GB31469@rizhao-lap \
    --to=rizhao-ddmlm1+adcrqt0dzr+alfa@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-serial-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).