mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
d40cb57d0b91c633829206e142da553a227bf9f3
Under some circumstances on BCM283x processors data loss can be observed - a single byte missing from the TX output stream. These bytes are always the last byte of a batch of 8 written from pl011_tx_chars when from_irq is true, meaning that the FIFO full flag is not checked before writing. The transmit optimisation relies on the FIFO being half-empty when the TX interrupt is raised. Instrumenting the driver further showed that the failure case correlated with the TX FIFO full flag being set at the point where the last byte was written to the data register, which explains the data loss but not how the FIFO appeared to be prematurely full. A possible explanation is that a FIFO write was in flight at the time the interrupt was raised, but as yet there is no hypothesis as to how this might occur. In the absence of a clear understanding of the failure mechanism, avoid the problem by checking the FIFO levels before writing the last byte of the group, which will have minimal performance impact. Signed-off-by: Phil Elwell <phil@raspberrypi.org>
Linux kernel
There are several guides for kernel developers and users. These guides can be rendered in a number of formats, like HTML and PDF. Please read Documentation/admin-guide/README.rst first.
In order to build the documentation, use make htmldocs or
make pdfdocs. The formatted documentation can also be read online at:
https://www.kernel.org/doc/html/latest/
There are various text files in the Documentation/ subdirectory, several of them using the Restructured Text markup notation.
Please read the Documentation/process/changes.rst file, as it contains the requirements for building and running the kernel, and information about the problems which may result by upgrading your kernel.
Description
Languages
C
97.7%
Assembly
1.3%
Shell
0.3%
Makefile
0.3%
Python
0.2%
Other
0.1%