From 08b74a000942a380fe028845f92cd3a0dee827d5 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 6 May 2024 03:02:38 +0200 Subject: Adding debian version 4.19.249-2. Signed-off-by: Daniel Baumann --- ...r-avoid-schedule_work-with-interrupts-dis.patch | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 debian/patches-rt/0097-time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch (limited to 'debian/patches-rt/0097-time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch') diff --git a/debian/patches-rt/0097-time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch b/debian/patches-rt/0097-time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch new file mode 100644 index 000000000..c3dd3b73e --- /dev/null +++ b/debian/patches-rt/0097-time-hrtimer-avoid-schedule_work-with-interrupts-dis.patch @@ -0,0 +1,60 @@ +From 97abf968e205dd81621ca60a59060f3eda0c7081 Mon Sep 17 00:00:00 2001 +From: Sebastian Andrzej Siewior +Date: Wed, 15 Nov 2017 17:29:51 +0100 +Subject: [PATCH 097/347] time/hrtimer: avoid schedule_work() with interrupts + disabled +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.246-rt110.tar.xz + +The NOHZ code tries to schedule a workqueue with interrupts disabled. +Since this does not work -RT I am switching it to swork instead. + +Signed-off-by: Sebastian Andrzej Siewior +--- + kernel/time/timer.c | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +diff --git a/kernel/time/timer.c b/kernel/time/timer.c +index 0043bf8e2c90..3cb79167852f 100644 +--- a/kernel/time/timer.c ++++ b/kernel/time/timer.c +@@ -218,8 +218,7 @@ static DEFINE_PER_CPU(struct timer_base, timer_bases[NR_BASES]); + static DEFINE_STATIC_KEY_FALSE(timers_nohz_active); + static DEFINE_MUTEX(timer_keys_mutex); + +-static void timer_update_keys(struct work_struct *work); +-static DECLARE_WORK(timer_update_work, timer_update_keys); ++static struct swork_event timer_update_swork; + + #ifdef CONFIG_SMP + unsigned int sysctl_timer_migration = 1; +@@ -237,7 +236,7 @@ static void timers_update_migration(void) + static inline void timers_update_migration(void) { } + #endif /* !CONFIG_SMP */ + +-static void timer_update_keys(struct work_struct *work) ++static void timer_update_keys(struct swork_event *event) + { + mutex_lock(&timer_keys_mutex); + timers_update_migration(); +@@ -247,9 +246,17 @@ static void timer_update_keys(struct work_struct *work) + + void timers_update_nohz(void) + { +- schedule_work(&timer_update_work); ++ swork_queue(&timer_update_swork); + } + ++static __init int hrtimer_init_thread(void) ++{ ++ WARN_ON(swork_get()); ++ INIT_SWORK(&timer_update_swork, timer_update_keys); ++ return 0; ++} ++early_initcall(hrtimer_init_thread); ++ + int timer_migration_handler(struct ctl_table *table, int write, + void __user *buffer, size_t *lenp, + loff_t *ppos) +-- +2.36.1 + -- cgit v1.2.3