From: Russell King <rmk+lkml@arm.linux.org.uk>
To: "Luiz Fernando N. Capitulino" <lcapitulino@mandriva.com.br>
Cc: Pete Zaitcev <zaitcev@redhat.com>,
gregkh@suse.de, alan@lxorguk.ukuu.org.uk,
linux-kernel@vger.kernel.org,
linux-usb-devel@lists.sourceforge.net
Subject: Re: Serial-Core: USB-Serial port current issues.
Date: Thu, 22 Jun 2006 09:29:40 +0100 [thread overview]
Message-ID: <20060622082939.GA25212@flint.arm.linux.org.uk> (raw)
In-Reply-To: <20060621181513.235fc23c@doriath.conectiva>
On Wed, Jun 21, 2006 at 06:15:13PM -0300, Luiz Fernando N. Capitulino wrote:
> On Wed, 21 Jun 2006 17:43:36 +0100
> Russell King <rmk+lkml@arm.linux.org.uk> wrote:
>
> | In the uart_update_mctrl() case, the purpose of the locking is to
> | prevent two concurrent changes to the modem control state resulting
> | in an inconsistency between the hardware and the software state. If
> | it's provable that it is always called from process context (and
> | it isn't called from a lock_kernel()-section or the lock_kernel()
> | section doesn't mind a rescheduling point being introduced there),
> | there's no problem converting that to a mutex.
>
> Ok, then I can submit my debug patch to answer these questions.
>
> might_sleep() can catch the lock_kernel()-section case right?
>
> | With get_mctrl(), the situation is slightly more complicated, because
> | we need to atomically update tty->hw_stopped in some circumstances
> | (that may also be modified from irq context.) Therefore, to give
> | the driver a consistent locking picture, the spinlock is _always_
> | held.
>
> Is it too bad (wrong?) to only protect the tty->hw_stopped update
> by the spinlock? Then the call to get_mctrl() could be protected by
> a mutex, or is it messy?
Consider this scenario with what you're proposing:
thread irq
take mutex
get_mctrl
cts changes state
take port lock
mctrl state read
tty->hw_stopped changed state
release port lock
releaes mutex
take port lock
update tty->hw_stopped
release port lock
Now, tty->hw_stopped does not reflect the hardware state, which will be
buggy and can cause a loss of transmission.
I'm not sure what to suggest on this one since for USB drivers you do
need to be able to sleep in this method... but for UARTs you must not.
--
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:[~2006-06-22 8:29 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-13 22:28 Serial-Core: USB-Serial port current issues Luiz Fernando N. Capitulino
2006-06-14 15:28 ` Russell King
2006-06-14 20:38 ` Luiz Fernando N. Capitulino
2006-06-15 0:53 ` Pete Zaitcev
2006-06-15 13:29 ` Luiz Fernando N. Capitulino
2006-06-15 16:07 ` Greg KH
2006-06-15 16:21 ` Luiz Fernando N. Capitulino
2006-06-20 19:11 ` Luiz Fernando N. Capitulino
2006-06-21 2:32 ` Pete Zaitcev
2006-06-21 16:35 ` Luiz Fernando N. Capitulino
2006-06-21 16:43 ` Russell King
2006-06-21 21:15 ` Luiz Fernando N. Capitulino
2006-06-22 8:29 ` Russell King [this message]
2006-06-23 17:28 ` Luiz Fernando N. Capitulino
2006-06-26 22:26 ` Greg KH
2006-06-27 0:49 ` Paul Fulghum
2006-07-04 19:42 ` Luiz Fernando N. Capitulino
2006-07-04 19:50 ` Pete Zaitcev
2006-07-04 20:36 ` Luiz Fernando N. Capitulino
2006-07-05 13:40 ` [linux-usb-devel] " Paul Fulghum
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=20060622082939.GA25212@flint.arm.linux.org.uk \
--to=rmk+lkml@arm.linux.org.uk \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=gregkh@suse.de \
--cc=lcapitulino@mandriva.com.br \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb-devel@lists.sourceforge.net \
--cc=zaitcev@redhat.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