public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Alan Cox <alan@linux.intel.com>
To: "Tomoya MORINAGA" <tomoya-linux@dsn.okisemi.com>
Cc: "Greg Kroah-Hartman" <gregkh@suse.de>,
	"Ben Dooks" <ben-linux@fluff.org>,
	"Kukjin Kim" <kgene.kim@samsung.com>,
	"Mike Frysinger" <vapier@gentoo.org>,
	"Feng Tang" <feng.tang@intel.com>,
	"Tobias Klauser" <tklauser@distanz.ch>,
	"LKML" <linux-kernel@vger.kernel.org>, <yong.y.wang@intel.com>,
	<qi.wang@intel.com>, <kok.howg.ewe@intel.com>,
	<andrew.chih.howe.khor@intel.com>
Subject: Re: [PATCH] EG20T: Update PCH_UART driver to 2.6.36
Date: Thu, 11 Nov 2010 11:42:44 +0000	[thread overview]
Message-ID: <20101111114244.6250ab48@linux.intel.com> (raw)
In-Reply-To: <000901cb816e$22528490$66f8800a@maildom.okisemi.com>

> > > +#ifdef CONFIG_PCH_DMA
> > > + #include <linux/dmaengine.h>
> > > + #include <linux/pch_dma.h>
> > > +#endif
> > 
> > The PCH DMA will have been included in the kernel anyway before this
> > merge so you can remove the ifdefs and include it regardless
> 
> No.
> PCH DMA have been already included at 2.6.36.
> You can see "pch_dma.c" in drivers/dma.

So that means pch_dma is always in the kernel source tree as of 2.6.36
- so the ifdef can go away ?

> > tty = tty_port_tty_get(...)
> > 
> > and when finished tty_kref_put(tty);
> > 
> > Also tty may be NULL, if the port closed as you were doing this, so
> > check the return from tty_port_tty_get and act accordingly.
> 
> I have a question.
> Though I can't find any accepted UART driver uses these
> functions(tty_port.../tty_kref...), What's for ?

We are gradually going through converting them all and I'm trying to
make sure no new ones creep in that don't use tty_port_tty_get.

Basically it does this

	tty_port_tty_get()

will return either a tty pointer with a reference (ie the tty will not
be deleted while you hold it), or will return NULL if the physical port
is no longer connected to a tty through close/hangup. It does all the
locking internally to ensure this is done safely.

	tty_kref_put()

drops the reference it obtained and after that point if the tty
reference count hits zero it may be deleted.

It ensures this cannot occur

		CPU1			CPU2

interrupt:
	tty = port->port.tty
					close
					port->port.tty = NULL
					kfree tty
	write to tty



> Many UART drivers accepted by upstream use the above macro, right ?

As far as possible the selection should be done at runtime, especially
for PC class devices. Linux distributors want to build a single kernel
for everything so having it runtime configured helps a lot.


> > If you don't support CPARMRK then you should clear that bit in
> > termios->c_flag so the caller knows it couldn't be set.
> 
> Sorry, I don't know CPARMRK.
> What's CPARMRK ?

Sorry my fault. I mean CMSPAR

CMSPAR if set selects mark/space parity. If your hardware doesn't
support this then do

	termios->c_cflag &= ~CMSPAR;


> I will use dma_alloc_coherent.
> 
> > 
> > I assume the correct device in this case would be the DMA
> > controller ?
> 
> Sorry, I can't understand your saying "correct device".
> What does "correct device" mean ?

dma_alloc_coherent takes a device pointer which should be the device
which is doing the DMA.

> Do you mean UART Rx/Tx interrupt Enable/Disable ?
> If yes, the control hava been already implemented.
> For example, in handle_tx (called from IRQ handler),
> you can see pch_uart_hal_disable_interrupt().

I will take another look next time the patch is submitted. However if
you are relying on disabling an IRQ source to avoid the interrupt
running in parallel with another routine remember on a multithreaded
CPU and on some hardware that it is possible for this to occur


		CPU1			CPU2
	Interrupt arrives
					Disable interrupt
	Interrupt routine runs		Other code runs


Alan

  reply	other threads:[~2010-11-11 12:03 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-09  5:01 [PATCH] EG20T: Update PCH_UART driver to 2.6.36 Tomoya MORINAGA
2010-11-09 10:37 ` Alan Cox
2010-11-11  7:00   ` Tomoya MORINAGA
2010-11-11 11:42     ` Alan Cox [this message]
2010-11-12  2:50       ` Tomoya MORINAGA

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=20101111114244.6250ab48@linux.intel.com \
    --to=alan@linux.intel.com \
    --cc=andrew.chih.howe.khor@intel.com \
    --cc=ben-linux@fluff.org \
    --cc=feng.tang@intel.com \
    --cc=gregkh@suse.de \
    --cc=kgene.kim@samsung.com \
    --cc=kok.howg.ewe@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=qi.wang@intel.com \
    --cc=tklauser@distanz.ch \
    --cc=tomoya-linux@dsn.okisemi.com \
    --cc=vapier@gentoo.org \
    --cc=yong.y.wang@intel.com \
    /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