Re: [PATCH v2] serial: amba-pl011: don't wait for BUSY after every earlycon character
Greg Kroah-Hartman <[email protected]>
| Newsgroups | org.kernel.vger.linux-serial,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <2026071036-unworn-bunny-fec5@gregkh> |
On Fri, Jul 03, 2026 at 07:38:04PM +0000, Eric Curtin wrote: > pl011_putc(), used exclusively by the pl011 earlycon (pl011_early_write() > -> uart_console_write()), waits for UART01x_FR_TXFF to clear before > writing a character (correct: don't overrun the TX FIFO) and then *also* > busy-waited for UART01x_FR_BUSY to clear before returning, i.e. it waited > for the character to be fully shifted out on the wire before the next > character in the string could even be considered. > > Waiting for BUSY per character defeats the TX FIFO: instead of letting > the UART buffer several queued bytes and transmit them back to back, > every single character printed through earlycon was forced to wait for > that character's own complete transmission (a full UART bit-time at the > configured baud rate) before the driver would even look at writing the > next one. This is wasted time on real hardware, and it is much worse > under virtualization: each read of UARTFR and each write to UARTDR is > an MMIO access that traps to the hypervisor, so every extra poll is a > full VM-exit/entry round trip. > > git blame on this function is unhelpful (this tree's history stops at a > shallow-clone boundary), but the equivalent history is available from > the upstream patch that added the QDF2400 erratum 44 workaround: So this was generated by a LLM, right? Otherwise why can't you find where this changed by NOT doing a shallow clone? When using a LLM, you must document that. thanks, greg k-h