Go to file
Frederic Weisbecker 0e07c0c84a tick: Move got_idle_tick away from common flags
[ Upstream commit 3ce74f1a85 ]

tick_nohz_idle_got_tick() is called by cpuidle_reflect() within the idle
loop with interrupts enabled. This function modifies the struct
tick_sched's bitfield "got_idle_tick". However this bitfield is stored
within the same mask as other bitfields that can be modified from
interrupts.

Fortunately so far it looks like the only race that can happen is while
writing ->got_idle_tick to 0, an interrupt fires and writes the
->idle_active field to 0. It's then possible that the interrupted write
to ->got_idle_tick writes back the old value of ->idle_active back to 1.

However if that happens, the worst possible outcome is that the time
spent between that interrupt and the upcoming call to
tick_nohz_idle_exit() is accounted as idle, which is negligible quantity.

Still all the bitfield writes within this struct tick_sched's shadow
mask should be IRQ-safe. Therefore move this bitfield out to its own
storage to avoid further suprises.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20240225225508.11587-12-frederic@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-08-29 17:33:35 +02:00
arch riscv: blacklist assembly symbols for kprobe 2024-08-29 17:33:33 +02:00
block block: Fix lockdep warning in blk_mq_mark_tag_wait 2024-08-29 17:33:30 +02:00
certs
crypto crypto: aead,cipher - zeroize key buffer after use 2024-07-11 12:49:04 +02:00
Documentation cpu/SMT: Enable SMT only if a core is online 2024-08-29 17:33:30 +02:00
drivers clocksource/drivers/arm_global_timer: Guard against division by zero 2024-08-29 17:33:35 +02:00
fs virtiofs: forbid newlines in tags 2024-08-29 17:33:35 +02:00
include evm: don't copy up 'security.evm' xattr 2024-08-29 17:33:31 +02:00
init rust: fix the default format for CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT 2024-08-29 17:33:29 +02:00
io_uring io_uring: fix io_match_task must_hold 2024-08-03 08:54:41 +02:00
ipc sysctl: treewide: drop unused argument ctl_table_root::set_ownership(table) 2024-08-11 12:47:13 +02:00
kernel tick: Move got_idle_tick away from common flags 2024-08-29 17:33:35 +02:00
lib sched/topology: Handle NUMA_NO_NODE in sched_numa_find_nth_cpu() 2024-08-29 17:33:24 +02:00
LICENSES
mm mm: Remove kmem_valid_obj() 2024-08-29 17:33:23 +02:00
net Bluetooth: hci_conn: Check non NULL function before calling for HFP offload 2024-08-29 17:33:32 +02:00
rust
samples bpf: Replace bpf_lpm_trie_key 0-length array with flexible array 2024-08-19 06:04:27 +02:00
scripts rust: work around bindgen 0.69.0 issue 2024-08-29 17:33:29 +02:00
security evm: don't copy up 'security.evm' xattr 2024-08-29 17:33:31 +02:00
sound ASoC: SOF: ipc4: check return value of snd_sof_ipc_msg_data 2024-08-29 17:33:31 +02:00
tools selftests: net: lib: kill PIDs before del netns 2024-08-29 17:33:21 +02:00
usr
virt KVM: Fix a data race on last_boosted_vcpu in kvm_vcpu_on_spin() 2024-06-27 13:49:11 +02:00
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore kbuild: rpm-pkg: rename binkernel.spec to kernel.spec 2023-07-25 00:59:33 +09:00
.mailmap
.rustfmt.toml
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS pwm: Rename pwm_apply_state() to pwm_apply_might_sleep() 2024-06-12 11:12:24 +02:00
Makefile Linux 6.6.47 2024-08-19 06:04:32 +02: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 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.