From: Russell King <rmk+lkml@arm.linux.org.uk>
To: karl malbrain <karl@petzent.com>
Cc: "Linux-Kernel@Vger. Kernel. Org" <linux-kernel@vger.kernel.org>
Subject: Re: 2.6.9 chrdev_open: serial_core: uart_open
Date: Fri, 15 Jul 2005 21:30:58 +0100 [thread overview]
Message-ID: <20050715213058.B23709@flint.arm.linux.org.uk> (raw)
In-Reply-To: <NDBBKFNEMLJBNHKPPFILIEALCEAA.karl@petzent.com>; from karl@petzent.com on Fri, Jul 15, 2005 at 01:11:33PM -0700
On Fri, Jul 15, 2005 at 01:11:33PM -0700, karl malbrain wrote:
> > -----Original Message-----
> > From: Russell King
> > Sent: Friday, July 15, 2005 12:23 AM
> > To: karl malbrain
> > Cc: Linux-Kernel@Vger. Kernel. Org
> > Subject: Re: 2.6.9 chrdev_open: serial_core: uart_open
> >
> >
> > On Thu, Jul 14, 2005 at 04:50:00PM -0700, karl malbrain wrote:
> > > chrdev_open issues a lock_kernel() before calling uart_open.
> > >
> > > It would appear that servicing the blocking open request
> > uart_open goes to
> > > sleep with the kernel locked. Would this shut down subsequent access to
> > > opening "/dev/tty"???
> >
> > No. lock_kernel() is automatically released when a process sleeps.
>
> Drilling down between the uart_open and chrdev_open into tty_open is a
> semaphore tty_sem that is being held during the sleep cycle in uart_open.
chrdev_open() calls tty_open(), which then calls init_dev(). init_dev()
takes tty_sem, does its stuff, and then releases tty_sem. A little
later on, tty_open() calls the uart driver's uart_open() function.
So it does this with tty_sem unlocked.
> N.b. I don't pretend to understand how uart_change_pm, uart_startup, and
> uart_block_til_ready could ALL be on the call stack. Uart_open calls them
> sequentially. Perhaps you might explain how this works? Thanks, karl m
The stack traces on x86 are very hap-hazard - the code just scans the
stack for anything which looks like it may be in kernel text and dumps
the result. This means that stale words on the stack which may have
been return addresses at one time may still look like return addresses.
Don't believe everything you see in an x86 stacktrace!
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core
next prev parent reply other threads:[~2005-07-15 20:31 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Pine.LNX.4.61.0507130850110.18969@chaos.analogic.com>
2005-07-13 17:53 ` 2.6.9: serial_core: uart_open karl malbrain
2005-07-14 8:26 ` Russell King
2005-07-14 17:16 ` karl malbrain
2005-07-14 18:57 ` Russell King
2005-07-14 19:30 ` karl malbrain
2005-07-14 22:35 ` karl malbrain
2005-07-15 7:28 ` Russell King
2005-07-15 16:02 ` karl malbrain
2005-07-15 20:32 ` Russell King
2005-07-15 20:48 ` karl malbrain
2005-07-15 16:20 ` karl malbrain
2005-07-14 23:50 ` 2.6.9 chrdev_open: " karl malbrain
2005-07-15 7:22 ` Russell King
2005-07-15 20:11 ` karl malbrain
2005-07-15 20:30 ` Russell King [this message]
2005-07-15 20:52 ` karl malbrain
2005-07-15 20:58 ` Russell King
2005-07-15 21:17 ` karl malbrain
2005-07-15 21:54 ` Russell King
2005-07-15 22:02 ` karl malbrain
2005-07-16 0:18 ` Alan Cox
2005-07-26 20:45 ` karl malbrain
2005-07-16 0:12 ` Alan Cox
2005-07-16 22:27 ` Matthias Urlichs
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=20050715213058.B23709@flint.arm.linux.org.uk \
--to=rmk+lkml@arm.linux.org.uk \
--cc=karl@petzent.com \
--cc=linux-kernel@vger.kernel.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