fix a deadlock
0 up_testset (lock=0x404241c0 <g_uart1priv+32>) at /home/hujun5/下载/vela_sim/nuttx/include/arch/spinlock.h:96 1 spin_lock_wo_note (lock=<optimized out>) at /home/hujun5/下载/vela_sim/nuttx/include/nuttx/spinlock.h:207 2 spin_lock_irqsave_wo_note (lock=0x404241c0 <g_uart1priv+32>) at /home/hujun5/下载/vela_sim/nuttx/include/nuttx/spinlock.h:467 3 spin_lock_irqsave (lock=0x404241c0 <g_uart1priv+32>) at /home/hujun5/下载/vela_sim/nuttx/include/nuttx/spinlock.h:521 4 pl011_txint (dev=0x404240b0 <g_uart1port>, enable=false) at serial/uart_pl011.c:746 5 0x00000000402a3f1c in uart_xmitchars (dev=0x404240b0 <g_uart1port>) at serial/serial_io.c:118 6 0x00000000402a10f8 in pl011_txint (dev=<optimized out>, enable=<optimized out>) at serial/uart_pl011.c:756 7 0x00000000402a2ca0 in uart_write (filep=<optimized out>, buffer=<optimized out>, buflen=0) at serial/serial.c:1493 8 0x000000004028c464 in file_writev_compat (filep=0x4046cda0, uio=<optimized out>) at vfs/fs_write.c:81 9 0x000000004028c588 in file_writev (filep=<optimized out>, uio=uio@entry=0x40470dc0) at vfs/fs_write.c:161 10 0x000000004028c5fc in nx_writev (fd=<optimized out>, iov=iov@entry=0x40470e10, iovcnt=iovcnt@entry=1) at vfs/fs_write.c:257 11 0x000000004028c660 in writev (fd=<optimized out>, iov=iov@entry=0x40470e10, iovcnt=iovcnt@entry=1) at vfs/fs_write.c:356 12 0x000000004028c6dc in write (fd=<optimized out>, buf=buf@entry=0x404090b2 <g_nshgreeting>, nbytes=<optimized out>) at vfs/fs_write.c:421 13 0x00000000402adb10 in nsh_session (pstate=pstate@entry=0x40471080, login=login@entry=1, argc=argc@entry=1, argv=argv@entry=0x4046cf40) at nsh_session.c:108 14 0x00000000402ad94c in nsh_consolemain (argc=argc@entry=1, argv=argv@entry=0x4046cf40) at nsh_consolemain.c:75 15 0x00000000402ad894 in nsh_main (argc=argc@entry=1, argv=argv@entry=0x4046cf40) at nsh_main.c:74 16 0x00000000402a5880 in nxtask_startup (entrypt=0x402ad7fc <nsh_main>, argc=1, argv=0x4046cf40) at sched/task_startup.c:72 17 0x000000004029d444 in nxtask_start () at task/task_start.c:116 18 0x0000000000000000 in ?? () fix regresion from https://github.com/apache/nuttx/pull/15301 Signed-off-by: hujun5 <hujun5@xiaomi.com>
This commit is contained in:
parent
c0c04cf6ba
commit
233e175f28
1 changed files with 2 additions and 6 deletions
|
@ -748,19 +748,15 @@ static void pl011_txint(FAR struct uart_dev_s *dev, bool enable)
|
||||||
if (enable)
|
if (enable)
|
||||||
{
|
{
|
||||||
pl011_irq_tx_enable(sport);
|
pl011_irq_tx_enable(sport);
|
||||||
|
spin_unlock_irqrestore(&sport->lock, flags);
|
||||||
/* Fake a TX interrupt here by just calling uart_xmitchars() with
|
|
||||||
* interrupts disabled (note this may recurse).
|
|
||||||
*/
|
|
||||||
|
|
||||||
uart_xmitchars(dev);
|
uart_xmitchars(dev);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pl011_irq_tx_disable(sport);
|
pl011_irq_tx_disable(sport);
|
||||||
}
|
|
||||||
|
|
||||||
spin_unlock_irqrestore(&sport->lock, flags);
|
spin_unlock_irqrestore(&sport->lock, flags);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
Loading…
Reference in a new issue