From: Paul Fulghum <paulkf@microgate.com>
To: Hollis Blanchard <hollisb@us.ibm.com>
Cc: Jiri Slaby <jirislaby@gmail.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
p.hardwick@option.com
Subject: Re: tty->low_latency + irq context
Date: Tue, 02 Jan 2007 12:12:11 -0600 [thread overview]
Message-ID: <1167761531.3837.13.camel@amdx2.microgate.com> (raw)
In-Reply-To: <1167758231.5616.22.camel@basalt>
On Tue, 2007-01-02 at 11:17 -0600, Hollis Blanchard wrote:
> On Tue, 2006-12-26 at 01:08 +0059, Jiri Slaby wrote:
> > * Queue a push of the terminal flip buffers to the line discipline. This
> > * function must not be called from IRQ context if tty->low_latency is set.
> >
> > But some drivers (mxser, nozomi, hvsi...) sets low_latency to 1 in _open and
> > calls tty_flip_buffer_push in isr or in functions, which are called from isr.
> > Is the comment correct or the drivers?
>
> The comment would be true if tty_flip_buffer_push() attempted to block
> with tty->low_latency set, but it doesn't AFAICS. One possibility for
> deadlock is if the tty->buf.lock spinlock is taken on behalf of a user
> process...
There is no deadlock on tty->buf.lock,
which is always acquired with spin_lock_irqsave()
and is only used by the tty buffering code.
The only deadlock I know of with the current tty buffering code
is calling tty_flip_buffer_push() with low_latency
set and from the ISR of a driver that has a problem
with the line discipline calling back into the driver.
The standard serial core has (or at least had the last time
I looked) this problem with the N_TTY ldisc:
driver gets internal spinlock in ISR
driver calls tty_flip_buffer_push with low_latency = 1
flush_to_ldisc() immediately passes data to line discipline
line discipline calls back into driver
driver tries again to get internal spinlock
With low_latency == 1, flush_to_ldisc() is deferred
until the ISR is complete and the internal spinlock is released.
I forget the exact driver callback that caused this.
--
Paul Fulghum
Microgate Systems, Ltd
next prev parent reply other threads:[~2007-01-02 18:58 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-26 0:09 tty->low_latency + irq context Jiri Slaby
2007-01-02 17:17 ` Hollis Blanchard
2007-01-02 18:12 ` Paul Fulghum [this message]
2007-01-02 18:29 ` Paul Fulghum
2007-01-02 18:38 ` Alan
2007-01-02 19:36 ` Hollis Blanchard
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=1167761531.3837.13.camel@amdx2.microgate.com \
--to=paulkf@microgate.com \
--cc=hollisb@us.ibm.com \
--cc=jirislaby@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=p.hardwick@option.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