On Thu, 22 Jun 2006 09:29:40 +0100 Russell King <[EMAIL PROTECTED]> wrote:
| On Wed, Jun 21, 2006 at 06:15:13PM -0300, Luiz Fernando N. Capitulino wrote: | | > | 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. Neither do I. :(( I thought we could move the 'tty->hw_stopped' update to a workqueue but it has the same problem you explained above... Greg, any suggestions? -- Luiz Fernando N. Capitulino Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel