+Shubhrajyoti.

On 17. 04. 19 15:20, Jean-Francois Dagenais wrote:
> Hi all,
> 
> In the last year, in xilinx_uartps.c, this loop appeared at the top of 
> cdns_uart_set_termios
> 
>       /* Wait for the transmit FIFO to empty before making changes */
>       if (!(readl(port->membase + CDNS_UART_CR) &
>                               CDNS_UART_CR_TX_DIS)) {
>               while (!(readl(port->membase + CDNS_UART_SR) &
>                               CDNS_UART_SR_TXEMPTY)) {
>                       cpu_relax();
>               }
>       }
> 
> 
> When (and this happens by default for us) ttyPS0 is a console for init or 
> Systemd, it goes into this function, then, if no cable is connected, it will 
> wait forever, essentially looking like the system doesn't boot since Systemd 
> is very early in it's process and doesn't do anything else.
> 
> My current workaround is to add "console=tty0" (a virtual console) to the 
> kernel command line. But this is a hassle when the console is required since 
> I need to hack my boot parameters to switch the console back to ttyPS0. But 
> when I do, then this system absolutely needs this cable sucking the bytes off 
> the tx fifo otherwise the system doesn't reboot or completely boots.
> 
> This loop seems quite odd since it has no out. Would it be reasonable to add 
> a timed out where if some amount of time has passed, the code can assume 
> no-one cares about the bytes in the FIFO and we can proceed anyway? Or 
> better, a way to detect no cable is connected and thus the loop will run 
> forever?
> 
> 
> Thanks!
> 

-- 
_______________________________________________
meta-xilinx mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/meta-xilinx

Reply via email to