I haven't seen this problem, but it appears to be order related and 
that's probably why I missed it.

I think the right answer is to move the call to uart_register_ldrv() out 
of uart_configure_port() and move it into uart_add_one_port() after the 
mutex->state is  unlocked.  However, I haven't tested it.  If that 
works, could you send a patch?

I'm currently completely reworking this, as the kernel developers didn't 
like the approach.

Thanks,

-corey

David Jenkins wrote:
> Hi,
>
> I am setting up IPMI for an ATCA board with a pigeon point MMC on it.  
> This requires the serial driver.  I have downloaded the 2.6.18 serial 
> patches and applied them.  There seems to be a problem with some 
> mutex_lock(&state->mutex) code in the layered driver interface added 
> to serial_core.c
>
> In particular in the uart_register_ldrv() function there are two 
> places where the mutex's don't jive
> a) a mutex_lock(&state->mutex) is done when a lock of this mutex is 
> still in effect from two layers up (mutex locked in 
> uart_add_one_port() that calls uart_configure_port() that calls 
> uart_register_ldrv().
>
> b) the call to uart_ldrv_open() assumes that the state->mutex is 
> unlocked - but again it has been locked two layers up in 
> uart_add_one_port().
>
> I went back and checked that my 2.6.18 serial_core.c is valid - 
> certainly appears to be.  I did notice that between 2.6.16 and 2.6.17 
> locking/unlocking state->mutex was added to uart_add_one_port().  
> Taking the lock/unlock out at this level does remove the contention 
> but doesn't seem advisable.
>
> Problem a) can be fixed easily as the lock/unlock isn't needed locally 
> in uart_register_ldrv() when it is already locked.  Problem b) isn't 
> as easy to resolve.  I noticed that elsewhere a unlock is done before 
> a call to uart_ldrv_open().  My current solution is to also wrap the 
> call of uart_ldrv_open() in uart_register_ldrv() with unlock/lock.
>
> Has the issue been resolved elsewhere already?  I browsed the CVS 
> repository and didn't see any updates.
>
> Thanks
>
> David Jenkins
>
> ------------------------------------------------------------------------
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys-and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> ------------------------------------------------------------------------
>
> _______________________________________________
> Openipmi-developer mailing list
> Openipmi-developer@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openipmi-developer
>   


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Openipmi-developer mailing list
Openipmi-developer@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openipmi-developer

Reply via email to