Fork of alistair23 Linux kernel for reMarkable from https://github.com/alistair23/linux
a1a73e42a4
This reworks the broken locking of the TX queue from ground up. The locking was broken in many ways. It didn't protect the critical state in ivshm_net_queue consistently, leaving phases from cleanup was reading intermediate states while xmit was running. ivshm_net_tx_ok also has to be covered by the lock because it tests both num_free and tail against head. The new locking is reusing the TX queue lock of the device because this is already held across ivshm_net_xmit. Furthermore, there were many races between the sender and the receiver around enabling and evaluating TX interrupts. One was about turning on the TX completion interrupt only after signaling the submission of packets. That could potentially cause the peer to miss the need for signaling completion. The other race that led to stalled senders was around not properly re-checking for updates and not posting own updates while processing freed TX descriptors in ivshm_net_tx_clean. Doing so could cause the sender to miss that there are more free entries or cause the receiver to stop signaling further free ones after kicking the sender for the first. Acked-by: Ye Li <ye.li@nxp.com> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> |
||
---|---|---|
Documentation | ||
LICENSES | ||
arch | ||
block | ||
certs | ||
crypto | ||
drivers | ||
fs | ||
include | ||
init | ||
ipc | ||
kernel | ||
lib | ||
mm | ||
net | ||
samples | ||
scripts | ||
security | ||
sound | ||
tools | ||
usr | ||
virt | ||
.clang-format | ||
.cocciconfig | ||
.get_maintainer.ignore | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
COPYING | ||
CREDITS | ||
Kbuild | ||
Kconfig | ||
MAINTAINERS | ||
Makefile | ||
README |
README
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.