[rt] Refresh "timers: Prepare for full preemption" for context changes in 4.19.138
This commit is contained in:
parent
0d4db3fa3f
commit
f5e1f03364
|
@ -311,6 +311,8 @@ linux (4.19.138-1) UNRELEASED; urgency=medium
|
||||||
* [rt] Update to 4.19.135-rt60
|
* [rt] Update to 4.19.135-rt60
|
||||||
* [rt] Refresh "net: Use skbufhead with raw lock" for context changes in
|
* [rt] Refresh "net: Use skbufhead with raw lock" for context changes in
|
||||||
4.19.136
|
4.19.136
|
||||||
|
* [rt] Refresh "timers: Prepare for full preemption" for context changes in
|
||||||
|
4.19.138
|
||||||
|
|
||||||
-- Salvatore Bonaccorso <carnil@debian.org> Tue, 04 Aug 2020 16:33:40 +0200
|
-- Salvatore Bonaccorso <carnil@debian.org> Tue, 04 Aug 2020 16:33:40 +0200
|
||||||
|
|
||||||
|
|
|
@ -19,11 +19,9 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||||
kernel/time/timer.c | 45 +++++++++++++++++++++++++++++++++++++++----
|
kernel/time/timer.c | 45 +++++++++++++++++++++++++++++++++++++++----
|
||||||
3 files changed, 49 insertions(+), 7 deletions(-)
|
3 files changed, 49 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
diff --git a/include/linux/timer.h b/include/linux/timer.h
|
|
||||||
index 7b066fd38248..54627d046b3a 100644
|
|
||||||
--- a/include/linux/timer.h
|
--- a/include/linux/timer.h
|
||||||
+++ b/include/linux/timer.h
|
+++ b/include/linux/timer.h
|
||||||
@@ -172,7 +172,7 @@ extern void add_timer(struct timer_list *timer);
|
@@ -172,7 +172,7 @@
|
||||||
|
|
||||||
extern int try_to_del_timer_sync(struct timer_list *timer);
|
extern int try_to_del_timer_sync(struct timer_list *timer);
|
||||||
|
|
||||||
|
@ -32,11 +30,9 @@ index 7b066fd38248..54627d046b3a 100644
|
||||||
extern int del_timer_sync(struct timer_list *timer);
|
extern int del_timer_sync(struct timer_list *timer);
|
||||||
#else
|
#else
|
||||||
# define del_timer_sync(t) del_timer(t)
|
# define del_timer_sync(t) del_timer(t)
|
||||||
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
|
|
||||||
index 541c7222ffc2..c0058e62a3fc 100644
|
|
||||||
--- a/kernel/sched/core.c
|
--- a/kernel/sched/core.c
|
||||||
+++ b/kernel/sched/core.c
|
+++ b/kernel/sched/core.c
|
||||||
@@ -498,11 +498,14 @@ void resched_cpu(int cpu)
|
@@ -498,11 +498,14 @@
|
||||||
*/
|
*/
|
||||||
int get_nohz_timer_target(void)
|
int get_nohz_timer_target(void)
|
||||||
{
|
{
|
||||||
|
@ -53,7 +49,7 @@ index 541c7222ffc2..c0058e62a3fc 100644
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
for_each_domain(cpu, sd) {
|
for_each_domain(cpu, sd) {
|
||||||
@@ -521,6 +524,8 @@ int get_nohz_timer_target(void)
|
@@ -521,6 +524,8 @@
|
||||||
cpu = housekeeping_any_cpu(HK_FLAG_TIMER);
|
cpu = housekeeping_any_cpu(HK_FLAG_TIMER);
|
||||||
unlock:
|
unlock:
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
@ -62,19 +58,17 @@ index 541c7222ffc2..c0058e62a3fc 100644
|
||||||
return cpu;
|
return cpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
|
|
||||||
index 6c54cf481fde..458fa0189514 100644
|
|
||||||
--- a/kernel/time/timer.c
|
--- a/kernel/time/timer.c
|
||||||
+++ b/kernel/time/timer.c
|
+++ b/kernel/time/timer.c
|
||||||
@@ -44,6 +44,7 @@
|
@@ -45,6 +45,7 @@
|
||||||
#include <linux/sched/debug.h>
|
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/compat.h>
|
#include <linux/compat.h>
|
||||||
|
#include <linux/random.h>
|
||||||
+#include <linux/swait.h>
|
+#include <linux/swait.h>
|
||||||
|
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd.h>
|
||||||
@@ -197,6 +198,9 @@ EXPORT_SYMBOL(jiffies_64);
|
@@ -198,6 +199,9 @@
|
||||||
struct timer_base {
|
struct timer_base {
|
||||||
raw_spinlock_t lock;
|
raw_spinlock_t lock;
|
||||||
struct timer_list *running_timer;
|
struct timer_list *running_timer;
|
||||||
|
@ -84,7 +78,7 @@ index 6c54cf481fde..458fa0189514 100644
|
||||||
unsigned long clk;
|
unsigned long clk;
|
||||||
unsigned long next_expiry;
|
unsigned long next_expiry;
|
||||||
unsigned int cpu;
|
unsigned int cpu;
|
||||||
@@ -1189,6 +1193,33 @@ void add_timer_on(struct timer_list *timer, int cpu)
|
@@ -1190,6 +1194,33 @@
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(add_timer_on);
|
EXPORT_SYMBOL_GPL(add_timer_on);
|
||||||
|
|
||||||
|
@ -118,7 +112,7 @@ index 6c54cf481fde..458fa0189514 100644
|
||||||
/**
|
/**
|
||||||
* del_timer - deactivate a timer.
|
* del_timer - deactivate a timer.
|
||||||
* @timer: the timer to be deactivated
|
* @timer: the timer to be deactivated
|
||||||
@@ -1244,7 +1275,7 @@ int try_to_del_timer_sync(struct timer_list *timer)
|
@@ -1245,7 +1276,7 @@
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(try_to_del_timer_sync);
|
EXPORT_SYMBOL(try_to_del_timer_sync);
|
||||||
|
|
||||||
|
@ -127,7 +121,7 @@ index 6c54cf481fde..458fa0189514 100644
|
||||||
/**
|
/**
|
||||||
* del_timer_sync - deactivate a timer and wait for the handler to finish.
|
* del_timer_sync - deactivate a timer and wait for the handler to finish.
|
||||||
* @timer: the timer to be deactivated
|
* @timer: the timer to be deactivated
|
||||||
@@ -1304,7 +1335,7 @@ int del_timer_sync(struct timer_list *timer)
|
@@ -1305,7 +1336,7 @@
|
||||||
int ret = try_to_del_timer_sync(timer);
|
int ret = try_to_del_timer_sync(timer);
|
||||||
if (ret >= 0)
|
if (ret >= 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -136,7 +130,7 @@ index 6c54cf481fde..458fa0189514 100644
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(del_timer_sync);
|
EXPORT_SYMBOL(del_timer_sync);
|
||||||
@@ -1365,13 +1396,16 @@ static void expire_timers(struct timer_base *base, struct hlist_head *head)
|
@@ -1366,13 +1397,16 @@
|
||||||
|
|
||||||
fn = timer->function;
|
fn = timer->function;
|
||||||
|
|
||||||
|
@ -154,7 +148,7 @@ index 6c54cf481fde..458fa0189514 100644
|
||||||
raw_spin_lock_irq(&base->lock);
|
raw_spin_lock_irq(&base->lock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1694,8 +1728,8 @@ static inline void __run_timers(struct timer_base *base)
|
@@ -1702,8 +1736,8 @@
|
||||||
while (levels--)
|
while (levels--)
|
||||||
expire_timers(base, heads + levels);
|
expire_timers(base, heads + levels);
|
||||||
}
|
}
|
||||||
|
@ -164,7 +158,7 @@ index 6c54cf481fde..458fa0189514 100644
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1940,6 +1974,9 @@ static void __init init_timer_cpu(int cpu)
|
@@ -1948,6 +1982,9 @@
|
||||||
base->cpu = cpu;
|
base->cpu = cpu;
|
||||||
raw_spin_lock_init(&base->lock);
|
raw_spin_lock_init(&base->lock);
|
||||||
base->clk = jiffies;
|
base->clk = jiffies;
|
||||||
|
@ -174,6 +168,3 @@ index 6c54cf481fde..458fa0189514 100644
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue