Cadence UART cleanups and Tx path fixes
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v2 Latest11 patches 1 replyIn review
- v111 patches 2 repliesSuperseded
Changes in v2 from the cover letter
Fixed /*< private >*/ spacing (AF review)
Patches in v2 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/11 | char/cadence_uart: Mark struct fields as public/privatehw/ | +2 | 0 replies | |
| 2/11 | char/cadence_uart: Add missing uart_update_statehw/ | +1 | 0 replies | |
| 3/11 | char/cadence_uart: Fix reset.hw/ | +4 | 0 replies | |
| 4/11 | char/cadence_uart: s/r_fifo/rx_fifohw/ | +4 | 0 replies | |
| 5/11 | char/cadence_uart: Simplify status generationhw/ | +8 | 0 replies | |
| 6/11 | char/cadence_uart: Define Missing SR/ISR fieldshw/ | +4 | 0 replies | |
| 7/11 | char/cadence_uart: Remove TX timer & add TX FIFO statehw/ | +13 | 0 replies | |
| 8/11 | char/cadence_uart: Fix can_receive logichw/ | +9 | 0 replies | |
| 9/11 | char/cadence_uart: Use the TX fifo for transmissionhw/ | +16 | 0 replies | |
| 10/11 | char/cadence_uart: Delete redundant rx rst logichw/ | +0 | 0 replies | |
| 11/11 | char/cadence_uart: Implement Tx flow controlhw/ | +29 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.
Cover letter [Qemu-devel] [PATCH target-arm v2 00/11] Cadence UART cleanups and Tx path fixes
When using QEMU in some terminal environments, char back-ends for serial devices can return EAGAIN for non trivial periods. This coupled with use of qemu_chr_fe_write_all() is a leading cause of:
main-loop: WARNING: I/O thread spun for 1000 iterations
This series fixes this for cadence_uart by replacing the open loop tx-write logic with a proper closed-loop that is responsive to the back-end short return.
Various trivial cleanups are at the front of the series. Last patch is the main event.
There is also a major performance increase with removal of the tx timer logic (P7).
As a test, I've been using QEMU in a terminal over trans-pacific SSH. Before this series:
$ time ./qemu-build/arm-softmmu/qemu-system-arm -M xilinx-zynq-a9 ... main-loop: WARNING: I/O thread spun for 1000 iterations Booting Linux on physical CPU 0x0 ... PetaLinux v2013.04 (Yocto 1.3) zynq ttyPS0
zynq login: QEMU: Terminated
real 2m26.908s user 1m41.430s sys 1m7.116s
And after:
$ time ./qemu-build/arm-softmmu/qemu-system-arm -M xilinx-zynq-a9 ... Booting Linux on physical CPU 0x0 ... PetaLinux v2013.04 (Yocto 1.3) zynq ttyPS0
zynq login: QEMU: Terminated
real 0m16.149s user 0m10.357s sys 0m0.164s
Changed since v1:
Fixed /*< private >*/ spacing (AF review)
Peter Crosthwaite (11):
char/cadence_uart: Mark struct fields as public/private char/cadence_uart: Add missing uart_update_state char/cadence_uart: Fix reset. char/cadence_uart: s/r_fifo/rx_fifo char/cadence_uart: Simplify status generation char/cadence_uart: Define Missing SR/ISR fields char/cadence_uart: Remove TX timer & add TX FIFO state char/cadence_uart: Fix can_receive logic char/cadence_uart: Use the TX fifo for transmission char/cadence_uart: Delete redundant rx rst logic char/cadence_uart: Implement Tx flow control
hw/char/cadence_uart.c | 153 ++++++++++++++++++++++++++++--------------------- 1 file changed, 87 insertions(+), 66 deletions(-)
Signature · 1 line
1.8.5.2