> -----Original Message----- > From: Russell King > Sent: Friday, July 15, 2005 12:23 AM > To: karl malbrain > Cc: [EMAIL PROTECTED] 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. This would appear to be the problem!! Is this a new semaphore in 2.6? How could this have ever worked with tty blocking mode? It would appear that tty_sem is going to have to be released before sleeping in uart_open. What a mess. 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 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/