diff options
author | Josh Poimboeuf <jpoimboe@kernel.org> | 2023-02-24 19:50:00 +0300 |
---|---|---|
committer | Peter Zijlstra <peterz@infradead.org> | 2023-03-22 19:09:28 +0300 |
commit | e3ff7c609f39671d1aaff4fb4a8594e14f3e03f8 (patch) | |
tree | 6a531478136effed64ac3f8c738dd8c99615cbe9 /include/linux/livepatch.h | |
parent | 383439d3d400d4c5a7ffb4495124adc6be6a05e2 (diff) | |
download | linux-e3ff7c609f39671d1aaff4fb4a8594e14f3e03f8.tar.xz |
livepatch,sched: Add livepatch task switching to cond_resched()
There have been reports [1][2] of live patches failing to complete
within a reasonable amount of time due to CPU-bound kthreads.
Fix it by patching tasks in cond_resched().
There are four different flavors of cond_resched(), depending on the
kernel configuration. Hook into all of them.
A more elegant solution might be to use a preempt notifier. However,
non-ORC unwinders can't unwind a preempted task reliably.
[1] https://lore.kernel.org/lkml/20220507174628.2086373-1-song@kernel.org/
[2] https://lkml.kernel.org/lkml/20230120-vhost-klp-switching-v1-0-7c2b65519c43@kernel.org
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Tested-by: Seth Forshee (DigitalOcean) <sforshee@kernel.org>
Link: https://lore.kernel.org/r/4ae981466b7814ec221014fc2554b2f86f3fb70b.1677257135.git.jpoimboe@kernel.org
Diffstat (limited to 'include/linux/livepatch.h')
-rw-r--r-- | include/linux/livepatch.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/livepatch.h b/include/linux/livepatch.h index 293e29960c6e..9b9b38e89563 100644 --- a/include/linux/livepatch.h +++ b/include/linux/livepatch.h @@ -13,6 +13,7 @@ #include <linux/ftrace.h> #include <linux/completion.h> #include <linux/list.h> +#include <linux/livepatch_sched.h> #if IS_ENABLED(CONFIG_LIVEPATCH) |