No description
  • C 97%
  • Assembly 1%
  • Shell 0.6%
  • Rust 0.5%
  • Python 0.4%
  • Other 0.3%
Find a file
Breno Leitao 7a3cedafcc lockdep: Speed up lockdep_unregister_key() with expedited RCU synchronization
lockdep_unregister_key() is called from critical code paths, including
sections where rtnl_lock() is held. For example, when replacing a qdisc
in a network device, network egress traffic is disabled while
__qdisc_destroy() is called for every network queue.

If lockdep is enabled, __qdisc_destroy() calls lockdep_unregister_key(),
which gets blocked waiting for synchronize_rcu() to complete.

For example, a simple tc command to replace a qdisc could take 13
seconds:

  # time /usr/sbin/tc qdisc replace dev eth0 root handle 0x1: mq
    real    0m13.195s
    user    0m0.001s
    sys     0m2.746s

During this time, network egress is completely frozen while waiting for
RCU synchronization.

Use synchronize_rcu_expedited() instead to minimize the impact on
critical operations like network connectivity changes.

This improves 10x the function call to tc, when replacing the qdisc for
a network card.

   # time /usr/sbin/tc qdisc replace dev eth0 root handle 0x1: mq
     real     0m1.789s
     user     0m0.000s
     sys      0m1.613s

[boqun: Fixed the comment and add more information for the temporary
workaround, and add TODO information for hazptr]

Reported-by: Erik Lundgren <elundgren@meta.com>
Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Paul E. McKenney <paulmck@kernel.org>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Link: https://lore.kernel.org/r/20250321-lockdep-v1-1-78b732d195fb@debian.org
2025-07-14 21:57:29 -07:00
arch The delayed from_timer() API cleanup: 2025-06-08 11:33:00 -07:00
block
certs
crypto
Documentation fourteen smb3 client fixes, most smbdirect related 2025-06-08 10:20:21 -07:00
drivers leds: lp8860: Check return value of devm_mutex_init() 2025-07-11 15:11:19 -07:00
fs The delayed from_timer() API cleanup: 2025-06-08 11:33:00 -07:00
include locking/lockdep: Avoid struct return in lock_stats() 2025-07-14 21:57:20 -07:00
init
io_uring
ipc
kernel lockdep: Speed up lockdep_unregister_key() with expedited RCU synchronization 2025-07-14 21:57:29 -07:00
lib
LICENSES
mm
net
rust rust: sync: Add #[must_use] to Lock::try_lock() 2025-07-11 15:11:54 -07:00
samples
scripts
security
sound
tools turbostat v2025.06.08 2025-06-08 11:44:41 -07:00
usr
virt
.clang-format
.clippy.toml
.cocciconfig
.editorconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap fourteen smb3 client fixes, most smbdirect related 2025-06-08 10:20:21 -07:00
.pylintrc
.rustfmt.toml
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS fourteen smb3 client fixes, most smbdirect related 2025-06-08 10:20:21 -07:00
Makefile Linux 6.16-rc1 2025-06-08 13:44:43 -07:00
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 reStructuredText 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.