Summary: - I thought this cs is needed to avoid data corruption - For example, while executing uart_xmitchar() in the interrupt handler on CPU0, an application running on CPU1 can call uart_putxmitchar() via write()->uart_write(). - In this case, taking xmit.sem in uart_write() will wait for CPU0 to finish uart_xmitchar() because CPU0 has already taken a cs in uart_xmitchar() then nxsem_wait() on CPU0 takes a new cs inside (and release the cs when returning but it's OK) - Then uart_write() on CPU1 disables UART TX, so uart_xmitchar() on CPU0 will not be called while executing uart_write() on CPU1. - So this critical section in uart_putxmitchar() can be removed. Impact: - None Testing: - Tested with spresense:wifi_smp, esp32-devkitc:smp Reported-by: Xiang Xiao <xiaoxiang@xiaomi.com> Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com> |
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Kconfig-16550 | ||
| Kconfig-lpuart | ||
| Kconfig-sci | ||
| Kconfig-uart | ||
| Kconfig-usart | ||
| Make.defs | ||
| ptmx.c | ||
| pty.c | ||
| pty.h | ||
| serial.c | ||
| serial_dma.c | ||
| serial_io.c | ||
| tcdrain.c | ||
| uart_16550.c | ||
| uart_bth4.c | ||
| uart_rpmsg.c | ||