summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2016-03-09 12:13:29 +0100
committerSebastian Andrzej Siewior <bigeasy@linutronix.de>2016-03-09 12:13:29 +0100
commitee504eaedb9779b0e95b5925f3bbc9e0ead0282a (patch)
tree20f881487dfd58ad61fe7c8cec8e71602c8ae250
parent02d11b73d8133f94f5384bcf80d82bb7df6eff95 (diff)
download4.9-rt-patches-ee504eaedb9779b0e95b5925f3bbc9e0ead0282a.tar.gz
[ANNOUNCE] 4.4.4-rt10
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-rw-r--r--patches/btrfs-initialize-the-seq-counter-in-struct-btrfs_dev.patch36
-rw-r--r--patches/cgroups-use-simple-wait-in-css_release.patch8
-rw-r--r--patches/clocksource-tclib-allow-higher-clockrates.patch14
-rw-r--r--patches/completion-use-simple-wait-queues.patch4
-rw-r--r--patches/cond-resched-softirq-rt.patch6
-rw-r--r--patches/cpu-rt-rework-cpu-down.patch4
-rw-r--r--patches/cpumask-disable-offstack-on-rt.patch2
-rw-r--r--patches/dm-make-rt-aware.patch2
-rw-r--r--patches/drmradeoni915_Use_preempt_disableenable_rt()_where_recommended.patch4
-rw-r--r--patches/introduce_migrate_disable_cpu_light.patch8
-rw-r--r--patches/kernel-migrate_disable-do-fastpath-in-atomic-irqs-of.patch4
-rw-r--r--patches/kernel-sched-fix-preempt_disable_ip-recodring-for-pr.patch10
-rw-r--r--patches/latency-hist.patch2
-rw-r--r--patches/localversion.patch4
-rw-r--r--patches/mm-memcontrol-do_not_disable_irq.patch10
-rw-r--r--patches/mm-rt-kmap-atomic-scheduling.patch2
-rw-r--r--patches/net-another-local-irq-disable-alloc-atomic-headache.patch6
-rw-r--r--patches/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch2
-rw-r--r--patches/net-core-protect-users-of-napi_alloc_cache-against-r.patch10
-rw-r--r--patches/net-move-xmit_recursion-to-per-task-variable-on-RT.patch2
-rw-r--r--patches/net-provide-a-way-to-delegate-processing-a-softirq-t.patch2
-rw-r--r--patches/net__Make_synchronize-rcu_expedited_conditional-on-non-rt2
-rw-r--r--patches/oleg-signal-rt-fix.patch2
-rw-r--r--patches/posix-timers-thread-posix-cpu-timers-on-rt.patch2
-rw-r--r--patches/preempt-lazy-support.patch12
-rw-r--r--patches/ptrace-fix-ptrace-vs-tasklist_lock-race.patch4
-rw-r--r--patches/random-make-it-work-on-rt.patch4
-rw-r--r--patches/rt-add-rt-locks.patch4
-rw-r--r--patches/sched-delay-put-task.patch6
-rw-r--r--patches/sched-might-sleep-do-not-account-rcu-depth.patch2
-rw-r--r--patches/sched-mmdrop-delayed.patch8
-rw-r--r--patches/sched-rt-mutex-wakeup.patch4
-rw-r--r--patches/sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch2
-rw-r--r--patches/series1
-rw-r--r--patches/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch2
-rw-r--r--patches/skbufhead-raw-lock.patch6
-rw-r--r--patches/snd-pcm-fix-snd_pcm_stream_lock-irqs_disabled-splats.patch8
-rw-r--r--patches/softirq-preempt-fix-3-re.patch8
-rw-r--r--patches/softirq-split-locks.patch4
-rw-r--r--patches/timekeeping-split-jiffies-lock.patch2
-rw-r--r--patches/tracing-account-for-preempt-off-in-preempt_schedule.patch2
-rw-r--r--patches/vtime-split-lock-and-seqcount.patch2
-rw-r--r--patches/work-queue-work-around-irqsafe-timer-optimization.patch2
-rw-r--r--patches/workqueue-distangle-from-rq-lock.patch14
-rw-r--r--patches/workqueue-prevent-deadlock-stall.patch16
-rw-r--r--patches/workqueue-use-locallock.patch20
-rw-r--r--patches/workqueue-use-rcu.patch42
-rw-r--r--patches/x86-kvm-require-const-tsc-for-rt.patch2
48 files changed, 144 insertions, 181 deletions
diff --git a/patches/btrfs-initialize-the-seq-counter-in-struct-btrfs_dev.patch b/patches/btrfs-initialize-the-seq-counter-in-struct-btrfs_dev.patch
deleted file mode 100644
index 0d86e259c45734..00000000000000
--- a/patches/btrfs-initialize-the-seq-counter-in-struct-btrfs_dev.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-Date: Fri, 15 Jan 2016 14:28:39 +0100
-Subject: btrfs: initialize the seq counter in struct btrfs_device
-
-I managed to trigger this:
-| INFO: trying to register non-static key.
-| the code is fine but needs lockdep annotation.
-| turning off the locking correctness validator.
-| CPU: 1 PID: 781 Comm: systemd-gpt-aut Not tainted 4.4.0-rt2+ #14
-| Hardware name: ARM-Versatile Express
-| [<80307cec>] (dump_stack)
-| [<80070e98>] (__lock_acquire)
-| [<8007184c>] (lock_acquire)
-| [<80287800>] (btrfs_ioctl)
-| [<8012a8d4>] (do_vfs_ioctl)
-| [<8012ac14>] (SyS_ioctl)
-
-so I think that btrfs_device_data_ordered_init() is not invoked behind
-a macro somewhere.
-
-Fixes: 7cc8e58d53cd ("Btrfs: fix unprotected device's variants on 32bits machine")
-Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
----
- fs/btrfs/volumes.c | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/fs/btrfs/volumes.c
-+++ b/fs/btrfs/volumes.c
-@@ -232,6 +232,7 @@ static struct btrfs_device *__alloc_devi
- spin_lock_init(&dev->reada_lock);
- atomic_set(&dev->reada_in_flight, 0);
- atomic_set(&dev->dev_stats_ccnt, 0);
-+ btrfs_device_data_ordered_init(dev);
- INIT_RADIX_TREE(&dev->reada_zones, GFP_NOFS & ~__GFP_DIRECT_RECLAIM);
- INIT_RADIX_TREE(&dev->reada_extents, GFP_NOFS & ~__GFP_DIRECT_RECLAIM);
-
diff --git a/patches/cgroups-use-simple-wait-in-css_release.patch b/patches/cgroups-use-simple-wait-in-css_release.patch
index cdadf87874b329..22e5cd41497a24 100644
--- a/patches/cgroups-use-simple-wait-in-css_release.patch
+++ b/patches/cgroups-use-simple-wait-in-css_release.patch
@@ -42,7 +42,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#ifdef CONFIG_CGROUPS
-@@ -136,6 +137,7 @@ struct cgroup_subsys_state {
+@@ -142,6 +143,7 @@ struct cgroup_subsys_state {
/* percpu_ref killing and RCU release */
struct rcu_head rcu_head;
struct work_struct destroy_work;
@@ -52,7 +52,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
-@@ -4724,10 +4724,10 @@ static void css_free_rcu_fn(struct rcu_h
+@@ -4725,10 +4725,10 @@ static void css_free_rcu_fn(struct rcu_h
queue_work(cgroup_destroy_wq, &css->destroy_work);
}
@@ -65,7 +65,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
struct cgroup_subsys *ss = css->ss;
struct cgroup *cgrp = css->cgroup;
-@@ -4766,8 +4766,8 @@ static void css_release(struct percpu_re
+@@ -4767,8 +4767,8 @@ static void css_release(struct percpu_re
struct cgroup_subsys_state *css =
container_of(ref, struct cgroup_subsys_state, refcnt);
@@ -76,7 +76,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
static void init_and_link_css(struct cgroup_subsys_state *css,
-@@ -5363,6 +5363,7 @@ static int __init cgroup_wq_init(void)
+@@ -5376,6 +5376,7 @@ static int __init cgroup_wq_init(void)
*/
cgroup_destroy_wq = alloc_workqueue("cgroup_destroy", 0, 1);
BUG_ON(!cgroup_destroy_wq);
diff --git a/patches/clocksource-tclib-allow-higher-clockrates.patch b/patches/clocksource-tclib-allow-higher-clockrates.patch
index 38d7ee4ae32b16..cb833190e016dc 100644
--- a/patches/clocksource-tclib-allow-higher-clockrates.patch
+++ b/patches/clocksource-tclib-allow-higher-clockrates.patch
@@ -48,7 +48,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
static u32 timer_clock;
static int tc_shutdown(struct clock_event_device *d)
-@@ -113,7 +106,7 @@ static int tc_set_oneshot(struct clock_e
+@@ -114,7 +107,7 @@ static int tc_set_oneshot(struct clock_e
clk_enable(tcd->clk);
@@ -57,7 +57,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
__raw_writel(timer_clock | ATMEL_TC_CPCSTOP | ATMEL_TC_WAVE |
ATMEL_TC_WAVESEL_UP_AUTO, regs + ATMEL_TC_REG(2, CMR));
__raw_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER));
-@@ -135,10 +128,10 @@ static int tc_set_periodic(struct clock_
+@@ -136,10 +129,10 @@ static int tc_set_periodic(struct clock_
*/
clk_enable(tcd->clk);
@@ -70,7 +70,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/* Enable clock and interrupts on RC compare */
__raw_writel(ATMEL_TC_CPCS, regs + ATMEL_TC_REG(2, IER));
-@@ -165,7 +158,11 @@ static struct tc_clkevt_device clkevt =
+@@ -166,7 +159,11 @@ static struct tc_clkevt_device clkevt =
.features = CLOCK_EVT_FEAT_PERIODIC |
CLOCK_EVT_FEAT_ONESHOT,
/* Should be lower than at91rm9200's system timer */
@@ -82,7 +82,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
.set_next_event = tc_next_event,
.set_state_shutdown = tc_shutdown,
.set_state_periodic = tc_set_periodic,
-@@ -187,8 +184,9 @@ static irqreturn_t ch2_irq(int irq, void
+@@ -188,8 +185,9 @@ static irqreturn_t ch2_irq(int irq, void
return IRQ_NONE;
}
@@ -93,7 +93,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
int ret;
struct clk *t2_clk = tc->clk[2];
int irq = tc->irq[2];
-@@ -209,7 +207,11 @@ static int __init setup_clkevents(struct
+@@ -210,7 +208,11 @@ static int __init setup_clkevents(struct
clkevt.regs = tc->regs;
clkevt.clk = t2_clk;
@@ -106,7 +106,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
clkevt.clkevt.cpumask = cpumask_of(0);
-@@ -220,7 +222,7 @@ static int __init setup_clkevents(struct
+@@ -221,7 +223,7 @@ static int __init setup_clkevents(struct
return ret;
}
@@ -115,7 +115,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
return ret;
}
-@@ -357,7 +359,11 @@ static int __init tcb_clksrc_init(void)
+@@ -358,7 +360,11 @@ static int __init tcb_clksrc_init(void)
goto err_disable_t1;
/* channel 2: periodic and oneshot timer support */
diff --git a/patches/completion-use-simple-wait-queues.patch b/patches/completion-use-simple-wait-queues.patch
index 6c7a61724989ae..b67e24d4afd450 100644
--- a/patches/completion-use-simple-wait-queues.patch
+++ b/patches/completion-use-simple-wait-queues.patch
@@ -198,7 +198,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
EXPORT_SYMBOL(completion_done);
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -3102,7 +3102,10 @@ void migrate_disable(void)
+@@ -3092,7 +3092,10 @@ void migrate_disable(void)
}
#ifdef CONFIG_SCHED_DEBUG
@@ -210,7 +210,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#endif
if (p->migrate_disable) {
-@@ -3129,7 +3132,10 @@ void migrate_enable(void)
+@@ -3119,7 +3122,10 @@ void migrate_enable(void)
}
#ifdef CONFIG_SCHED_DEBUG
diff --git a/patches/cond-resched-softirq-rt.patch b/patches/cond-resched-softirq-rt.patch
index 469e9794fac8a5..60805ba7c7c588 100644
--- a/patches/cond-resched-softirq-rt.patch
+++ b/patches/cond-resched-softirq-rt.patch
@@ -15,7 +15,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -2987,12 +2987,16 @@ extern int __cond_resched_lock(spinlock_
+@@ -2985,12 +2985,16 @@ extern int __cond_resched_lock(spinlock_
__cond_resched_lock(lock); \
})
@@ -34,7 +34,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
{
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -4770,6 +4770,7 @@ int __cond_resched_lock(spinlock_t *lock
+@@ -4760,6 +4760,7 @@ int __cond_resched_lock(spinlock_t *lock
}
EXPORT_SYMBOL(__cond_resched_lock);
@@ -42,7 +42,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
int __sched __cond_resched_softirq(void)
{
BUG_ON(!in_softirq());
-@@ -4783,6 +4784,7 @@ int __sched __cond_resched_softirq(void)
+@@ -4773,6 +4774,7 @@ int __sched __cond_resched_softirq(void)
return 0;
}
EXPORT_SYMBOL(__cond_resched_softirq);
diff --git a/patches/cpu-rt-rework-cpu-down.patch b/patches/cpu-rt-rework-cpu-down.patch
index 7d3cca283425ad..213252995707ca 100644
--- a/patches/cpu-rt-rework-cpu-down.patch
+++ b/patches/cpu-rt-rework-cpu-down.patch
@@ -56,7 +56,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -2288,6 +2288,10 @@ extern void do_set_cpus_allowed(struct t
+@@ -2286,6 +2286,10 @@ extern void do_set_cpus_allowed(struct t
extern int set_cpus_allowed_ptr(struct task_struct *p,
const struct cpumask *new_mask);
@@ -67,7 +67,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#else
static inline void do_set_cpus_allowed(struct task_struct *p,
const struct cpumask *new_mask)
-@@ -2300,6 +2304,9 @@ static inline int set_cpus_allowed_ptr(s
+@@ -2298,6 +2302,9 @@ static inline int set_cpus_allowed_ptr(s
return -EINVAL;
return 0;
}
diff --git a/patches/cpumask-disable-offstack-on-rt.patch b/patches/cpumask-disable-offstack-on-rt.patch
index 1f6bea8e0f77ea..bf7781364cd18a 100644
--- a/patches/cpumask-disable-offstack-on-rt.patch
+++ b/patches/cpumask-disable-offstack-on-rt.patch
@@ -24,7 +24,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
If unsure, say N.
--- a/lib/Kconfig
+++ b/lib/Kconfig
-@@ -395,6 +395,7 @@ config CHECK_SIGNATURE
+@@ -397,6 +397,7 @@ config CHECK_SIGNATURE
config CPUMASK_OFFSTACK
bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS
diff --git a/patches/dm-make-rt-aware.patch b/patches/dm-make-rt-aware.patch
index 21b28ce1d26736..f0b0a890aee1bb 100644
--- a/patches/dm-make-rt-aware.patch
+++ b/patches/dm-make-rt-aware.patch
@@ -15,7 +15,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
-@@ -2126,7 +2126,7 @@ static void dm_request_fn(struct request
+@@ -2128,7 +2128,7 @@ static void dm_request_fn(struct request
/* Establish tio->ti before queuing work (map_tio_request) */
tio->ti = ti;
queue_kthread_work(&md->kworker, &tio->work);
diff --git a/patches/drmradeoni915_Use_preempt_disableenable_rt()_where_recommended.patch b/patches/drmradeoni915_Use_preempt_disableenable_rt()_where_recommended.patch
index 89fa033e879a90..983f346b8e2800 100644
--- a/patches/drmradeoni915_Use_preempt_disableenable_rt()_where_recommended.patch
+++ b/patches/drmradeoni915_Use_preempt_disableenable_rt()_where_recommended.patch
@@ -33,7 +33,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/drivers/gpu/drm/radeon/radeon_display.c
+++ b/drivers/gpu/drm/radeon/radeon_display.c
-@@ -1849,6 +1849,7 @@ int radeon_get_crtc_scanoutpos(struct dr
+@@ -1862,6 +1862,7 @@ int radeon_get_crtc_scanoutpos(struct dr
struct radeon_device *rdev = dev->dev_private;
/* preempt_disable_rt() should go right here in PREEMPT_RT patchset. */
@@ -41,7 +41,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/* Get optional system timestamp before query. */
if (stime)
-@@ -1941,6 +1942,7 @@ int radeon_get_crtc_scanoutpos(struct dr
+@@ -1954,6 +1955,7 @@ int radeon_get_crtc_scanoutpos(struct dr
*etime = ktime_get();
/* preempt_enable_rt() should go right here in PREEMPT_RT patchset. */
diff --git a/patches/introduce_migrate_disable_cpu_light.patch b/patches/introduce_migrate_disable_cpu_light.patch
index d80c1e713c54b8..5dada63a008b54 100644
--- a/patches/introduce_migrate_disable_cpu_light.patch
+++ b/patches/introduce_migrate_disable_cpu_light.patch
@@ -76,7 +76,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#ifdef CONFIG_PREEMPT_NOTIFIERS
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -1414,6 +1414,12 @@ struct task_struct {
+@@ -1412,6 +1412,12 @@ struct task_struct {
#endif
unsigned int policy;
@@ -89,7 +89,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
int nr_cpus_allowed;
cpumask_t cpus_allowed;
-@@ -1838,14 +1844,6 @@ extern int arch_task_struct_size __read_
+@@ -1836,14 +1842,6 @@ extern int arch_task_struct_size __read_
# define arch_task_struct_size (sizeof(struct task_struct))
#endif
@@ -104,7 +104,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#define TNF_MIGRATED 0x01
#define TNF_NO_GROUP 0x02
#define TNF_SHARED 0x04
-@@ -3122,6 +3120,31 @@ static inline void set_task_cpu(struct t
+@@ -3120,6 +3118,31 @@ static inline void set_task_cpu(struct t
#endif /* CONFIG_SMP */
@@ -171,7 +171,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
goto out;
dest_cpu = cpumask_any_and(cpu_active_mask, new_mask);
-@@ -3022,6 +3027,69 @@ static inline void schedule_debug(struct
+@@ -3012,6 +3017,69 @@ static inline void schedule_debug(struct
schedstat_inc(this_rq(), sched_count);
}
diff --git a/patches/kernel-migrate_disable-do-fastpath-in-atomic-irqs-of.patch b/patches/kernel-migrate_disable-do-fastpath-in-atomic-irqs-of.patch
index 8aa639f9ea89f3..f18c3e980d9508 100644
--- a/patches/kernel-migrate_disable-do-fastpath-in-atomic-irqs-of.patch
+++ b/patches/kernel-migrate_disable-do-fastpath-in-atomic-irqs-of.patch
@@ -13,7 +13,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -3078,7 +3078,7 @@ void migrate_disable(void)
+@@ -3068,7 +3068,7 @@ void migrate_disable(void)
{
struct task_struct *p = current;
@@ -22,7 +22,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#ifdef CONFIG_SCHED_DEBUG
p->migrate_disable_atomic++;
#endif
-@@ -3105,7 +3105,7 @@ void migrate_enable(void)
+@@ -3095,7 +3095,7 @@ void migrate_enable(void)
{
struct task_struct *p = current;
diff --git a/patches/kernel-sched-fix-preempt_disable_ip-recodring-for-pr.patch b/patches/kernel-sched-fix-preempt_disable_ip-recodring-for-pr.patch
index 1729d528df3d20..6201723cc7afd7 100644
--- a/patches/kernel-sched-fix-preempt_disable_ip-recodring-for-pr.patch
+++ b/patches/kernel-sched-fix-preempt_disable_ip-recodring-for-pr.patch
@@ -44,7 +44,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
extern void time_hardirqs_off(unsigned long a0, unsigned long a1);
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -183,8 +183,6 @@ extern void update_cpu_load_nohz(void);
+@@ -182,8 +182,6 @@ extern void update_cpu_load_nohz(void);
static inline void update_cpu_load_nohz(void) { }
#endif
@@ -55,7 +55,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
struct seq_file;
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -3039,16 +3039,6 @@ u64 scheduler_tick_max_deferment(void)
+@@ -2910,16 +2910,6 @@ u64 scheduler_tick_max_deferment(void)
}
#endif
@@ -72,7 +72,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#if defined(CONFIG_PREEMPT) && (defined(CONFIG_DEBUG_PREEMPT) || \
defined(CONFIG_PREEMPT_TRACER))
-@@ -3070,7 +3060,7 @@ void preempt_count_add(int val)
+@@ -2941,7 +2931,7 @@ void preempt_count_add(int val)
PREEMPT_MASK - 10);
#endif
if (preempt_count() == val) {
@@ -81,7 +81,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#ifdef CONFIG_DEBUG_PREEMPT
current->preempt_disable_ip = ip;
#endif
-@@ -3097,7 +3087,7 @@ void preempt_count_sub(int val)
+@@ -2968,7 +2958,7 @@ void preempt_count_sub(int val)
#endif
if (preempt_count() == val)
@@ -92,7 +92,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
EXPORT_SYMBOL(preempt_count_sub);
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
-@@ -287,9 +287,9 @@ void __local_bh_disable_ip(unsigned long
+@@ -116,9 +116,9 @@ void __local_bh_disable_ip(unsigned long
if (preempt_count() == cnt) {
#ifdef CONFIG_DEBUG_PREEMPT
diff --git a/patches/latency-hist.patch b/patches/latency-hist.patch
index a5541e8d482f2b..6d7948a7c4719e 100644
--- a/patches/latency-hist.patch
+++ b/patches/latency-hist.patch
@@ -236,7 +236,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
int start_pid;
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -1796,6 +1796,12 @@ struct task_struct {
+@@ -1794,6 +1794,12 @@ struct task_struct {
unsigned long trace;
/* bitmask and counter of trace recursion */
unsigned long trace_recursion;
diff --git a/patches/localversion.patch b/patches/localversion.patch
index cc6efb1dc58564..0484a008be4628 100644
--- a/patches/localversion.patch
+++ b/patches/localversion.patch
@@ -1,4 +1,4 @@
-Subject: v4.4.3-rt9
+Subject: v4.4.4-rt10
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 08 Jul 2011 20:25:16 +0200
@@ -10,4 +10,4 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- /dev/null
+++ b/localversion-rt
@@ -0,0 +1 @@
-+-rt9
++-rt10
diff --git a/patches/mm-memcontrol-do_not_disable_irq.patch b/patches/mm-memcontrol-do_not_disable_irq.patch
index 316c252fa81a64..7a0075d69fbfe0 100644
--- a/patches/mm-memcontrol-do_not_disable_irq.patch
+++ b/patches/mm-memcontrol-do_not_disable_irq.patch
@@ -59,7 +59,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
static const char * const mem_cgroup_stat_names[] = {
"cache",
"rss",
-@@ -4615,12 +4618,12 @@ static int mem_cgroup_move_account(struc
+@@ -4616,12 +4619,12 @@ static int mem_cgroup_move_account(struc
ret = 0;
@@ -74,7 +74,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
out_unlock:
unlock_page(page);
out:
-@@ -5373,10 +5376,10 @@ void mem_cgroup_commit_charge(struct pag
+@@ -5374,10 +5377,10 @@ void mem_cgroup_commit_charge(struct pag
VM_BUG_ON_PAGE(!PageTransHuge(page), page);
}
@@ -87,7 +87,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (do_swap_account && PageSwapCache(page)) {
swp_entry_t entry = { .val = page_private(page) };
-@@ -5432,14 +5435,14 @@ static void uncharge_batch(struct mem_cg
+@@ -5433,14 +5436,14 @@ static void uncharge_batch(struct mem_cg
memcg_oom_recover(memcg);
}
@@ -104,7 +104,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (!mem_cgroup_is_root(memcg))
css_put_many(&memcg->css, nr_pages);
-@@ -5631,6 +5634,7 @@ void mem_cgroup_swapout(struct page *pag
+@@ -5632,6 +5635,7 @@ void mem_cgroup_swapout(struct page *pag
{
struct mem_cgroup *memcg;
unsigned short oldid;
@@ -112,7 +112,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
VM_BUG_ON_PAGE(PageLRU(page), page);
VM_BUG_ON_PAGE(page_count(page), page);
-@@ -5659,9 +5663,13 @@ void mem_cgroup_swapout(struct page *pag
+@@ -5660,9 +5664,13 @@ void mem_cgroup_swapout(struct page *pag
* important here to have the interrupts disabled because it is the
* only synchronisation we have for udpating the per-CPU variables.
*/
diff --git a/patches/mm-rt-kmap-atomic-scheduling.patch b/patches/mm-rt-kmap-atomic-scheduling.patch
index 9dbd83c51dff75..43fa53f1d2e809 100644
--- a/patches/mm-rt-kmap-atomic-scheduling.patch
+++ b/patches/mm-rt-kmap-atomic-scheduling.patch
@@ -229,7 +229,7 @@ Link: http://lkml.kernel.org/r/1311842631.5890.208.camel@twins
#include <asm/page.h>
#include <asm/ptrace.h>
-@@ -1849,6 +1850,12 @@ struct task_struct {
+@@ -1847,6 +1848,12 @@ struct task_struct {
int softirq_nestcnt;
unsigned int softirqs_raised;
#endif
diff --git a/patches/net-another-local-irq-disable-alloc-atomic-headache.patch b/patches/net-another-local-irq-disable-alloc-atomic-headache.patch
index 6180444570e50d..d6f4cc4a37837d 100644
--- a/patches/net-another-local-irq-disable-alloc-atomic-headache.patch
+++ b/patches/net-another-local-irq-disable-alloc-atomic-headache.patch
@@ -19,7 +19,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#include <net/protocol.h>
#include <net/dst.h>
-@@ -349,6 +350,7 @@ EXPORT_SYMBOL(build_skb);
+@@ -351,6 +352,7 @@ EXPORT_SYMBOL(build_skb);
static DEFINE_PER_CPU(struct page_frag_cache, netdev_alloc_cache);
static DEFINE_PER_CPU(struct page_frag_cache, napi_alloc_cache);
@@ -27,7 +27,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
static void *__netdev_alloc_frag(unsigned int fragsz, gfp_t gfp_mask)
{
-@@ -356,10 +358,10 @@ static void *__netdev_alloc_frag(unsigne
+@@ -358,10 +360,10 @@ static void *__netdev_alloc_frag(unsigne
unsigned long flags;
void *data;
@@ -40,7 +40,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
return data;
}
-@@ -427,13 +429,13 @@ struct sk_buff *__netdev_alloc_skb(struc
+@@ -429,13 +431,13 @@ struct sk_buff *__netdev_alloc_skb(struc
if (sk_memalloc_socks())
gfp_mask |= __GFP_MEMALLOC;
diff --git a/patches/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch b/patches/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch
index 83f39e991af9d1..fa0d1c05441a8a 100644
--- a/patches/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch
+++ b/patches/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch
@@ -35,7 +35,7 @@ Cc: stable-rt@vger.kernel.org
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -7468,7 +7468,7 @@ static int dev_cpu_callback(struct notif
+@@ -7473,7 +7473,7 @@ static int dev_cpu_callback(struct notif
netif_rx_ni(skb);
input_queue_head_incr(oldsd);
}
diff --git a/patches/net-core-protect-users-of-napi_alloc_cache-against-r.patch b/patches/net-core-protect-users-of-napi_alloc_cache-against-r.patch
index 299ea20cf070de..4446e34d3b6a79 100644
--- a/patches/net-core-protect-users-of-napi_alloc_cache-against-r.patch
+++ b/patches/net-core-protect-users-of-napi_alloc_cache-against-r.patch
@@ -17,7 +17,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
-@@ -351,6 +351,7 @@ EXPORT_SYMBOL(build_skb);
+@@ -353,6 +353,7 @@ EXPORT_SYMBOL(build_skb);
static DEFINE_PER_CPU(struct page_frag_cache, netdev_alloc_cache);
static DEFINE_PER_CPU(struct page_frag_cache, napi_alloc_cache);
static DEFINE_LOCAL_IRQ_LOCK(netdev_alloc_lock);
@@ -25,7 +25,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
static void *__netdev_alloc_frag(unsigned int fragsz, gfp_t gfp_mask)
{
-@@ -380,9 +381,13 @@ EXPORT_SYMBOL(netdev_alloc_frag);
+@@ -382,9 +383,13 @@ EXPORT_SYMBOL(netdev_alloc_frag);
static void *__napi_alloc_frag(unsigned int fragsz, gfp_t gfp_mask)
{
@@ -41,7 +41,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
void *napi_alloc_frag(unsigned int fragsz)
-@@ -476,9 +481,10 @@ EXPORT_SYMBOL(__netdev_alloc_skb);
+@@ -478,9 +483,10 @@ EXPORT_SYMBOL(__netdev_alloc_skb);
struct sk_buff *__napi_alloc_skb(struct napi_struct *napi, unsigned int len,
gfp_t gfp_mask)
{
@@ -53,7 +53,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
len += NET_SKB_PAD + NET_IP_ALIGN;
-@@ -496,7 +502,11 @@ struct sk_buff *__napi_alloc_skb(struct
+@@ -498,7 +504,11 @@ struct sk_buff *__napi_alloc_skb(struct
if (sk_memalloc_socks())
gfp_mask |= __GFP_MEMALLOC;
@@ -65,7 +65,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (unlikely(!data))
return NULL;
-@@ -507,7 +517,7 @@ struct sk_buff *__napi_alloc_skb(struct
+@@ -509,7 +519,7 @@ struct sk_buff *__napi_alloc_skb(struct
}
/* use OR instead of assignment to avoid clearing of bits in mask */
diff --git a/patches/net-move-xmit_recursion-to-per-task-variable-on-RT.patch b/patches/net-move-xmit_recursion-to-per-task-variable-on-RT.patch
index 208c29c1fc9c20..383fa8c6622d1f 100644
--- a/patches/net-move-xmit_recursion-to-per-task-variable-on-RT.patch
+++ b/patches/net-move-xmit_recursion-to-per-task-variable-on-RT.patch
@@ -45,7 +45,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
struct net_device *__dev_get_by_index(struct net *net, int ifindex);
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -1852,6 +1852,9 @@ struct task_struct {
+@@ -1850,6 +1850,9 @@ struct task_struct {
#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
unsigned long task_state_change;
#endif
diff --git a/patches/net-provide-a-way-to-delegate-processing-a-softirq-t.patch b/patches/net-provide-a-way-to-delegate-processing-a-softirq-t.patch
index 4fdad34ddfe2dc..319dd904109c7e 100644
--- a/patches/net-provide-a-way-to-delegate-processing-a-softirq-t.patch
+++ b/patches/net-provide-a-way-to-delegate-processing-a-softirq-t.patch
@@ -67,7 +67,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
void raise_softirq_irqoff(unsigned int nr)
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4924,7 +4924,7 @@ static void net_rx_action(struct softirq
+@@ -4927,7 +4927,7 @@ static void net_rx_action(struct softirq
list_splice_tail(&repoll, &list);
list_splice(&list, &sd->poll_list);
if (!list_empty(&sd->poll_list))
diff --git a/patches/net__Make_synchronize-rcu_expedited_conditional-on-non-rt b/patches/net__Make_synchronize-rcu_expedited_conditional-on-non-rt
index 1168ae61caa5c4..d454b642c4ba33 100644
--- a/patches/net__Make_synchronize-rcu_expedited_conditional-on-non-rt
+++ b/patches/net__Make_synchronize-rcu_expedited_conditional-on-non-rt
@@ -24,7 +24,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -7217,7 +7217,7 @@ EXPORT_SYMBOL(free_netdev);
+@@ -7222,7 +7222,7 @@ EXPORT_SYMBOL(free_netdev);
void synchronize_net(void)
{
might_sleep();
diff --git a/patches/oleg-signal-rt-fix.patch b/patches/oleg-signal-rt-fix.patch
index 6367819f96b47a..7222dd3ca80d33 100644
--- a/patches/oleg-signal-rt-fix.patch
+++ b/patches/oleg-signal-rt-fix.patch
@@ -76,7 +76,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#endif
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -1579,6 +1579,10 @@ struct task_struct {
+@@ -1577,6 +1577,10 @@ struct task_struct {
sigset_t blocked, real_blocked;
sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */
struct sigpending pending;
diff --git a/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch b/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch
index bfa4cba3ba6877..b150e65775d6cd 100644
--- a/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch
+++ b/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch
@@ -42,7 +42,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
[PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), \
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -1544,6 +1544,9 @@ struct task_struct {
+@@ -1542,6 +1542,9 @@ struct task_struct {
struct task_cputime cputime_expires;
struct list_head cpu_timers[3];
diff --git a/patches/preempt-lazy-support.patch b/patches/preempt-lazy-support.patch
index fff441a11e2c62..67ae12bd9d3dd9 100644
--- a/patches/preempt-lazy-support.patch
+++ b/patches/preempt-lazy-support.patch
@@ -165,7 +165,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -2967,6 +2967,43 @@ static inline int test_tsk_need_resched(
+@@ -2965,6 +2965,43 @@ static inline int test_tsk_need_resched(
return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED));
}
@@ -306,7 +306,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#ifdef CONFIG_SMP
plist_node_init(&p->pushable_tasks, MAX_PRIO);
RB_CLEAR_NODE(&p->pushable_dl_tasks);
-@@ -3142,6 +3177,7 @@ void migrate_disable(void)
+@@ -3132,6 +3167,7 @@ void migrate_disable(void)
}
preempt_disable();
@@ -314,7 +314,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
pin_current_cpu();
p->migrate_disable = 1;
preempt_enable();
-@@ -3181,6 +3217,7 @@ void migrate_enable(void)
+@@ -3171,6 +3207,7 @@ void migrate_enable(void)
unpin_current_cpu();
preempt_enable();
@@ -322,7 +322,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
EXPORT_SYMBOL(migrate_enable);
#endif
-@@ -3318,6 +3355,7 @@ static void __sched notrace __schedule(b
+@@ -3308,6 +3345,7 @@ static void __sched notrace __schedule(b
next = pick_next_task(rq, prev);
clear_tsk_need_resched(prev);
@@ -330,7 +330,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
clear_preempt_need_resched();
rq->clock_skip_update = 0;
-@@ -3463,6 +3501,14 @@ asmlinkage __visible void __sched notrac
+@@ -3453,6 +3491,14 @@ asmlinkage __visible void __sched notrac
if (likely(!preemptible()))
return;
@@ -345,7 +345,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
do {
preempt_disable_notrace();
/*
-@@ -5203,7 +5249,9 @@ void init_idle(struct task_struct *idle,
+@@ -5193,7 +5239,9 @@ void init_idle(struct task_struct *idle,
/* Set the preempt count _outside_ the spinlocks! */
init_idle_preempt_count(idle, cpu);
diff --git a/patches/ptrace-fix-ptrace-vs-tasklist_lock-race.patch b/patches/ptrace-fix-ptrace-vs-tasklist_lock-race.patch
index 9abf7fcef2ac77..608fb0e9c7ec00 100644
--- a/patches/ptrace-fix-ptrace-vs-tasklist_lock-race.patch
+++ b/patches/ptrace-fix-ptrace-vs-tasklist_lock-race.patch
@@ -30,7 +30,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -242,10 +242,7 @@ extern char ___assert_task_state[1 - 2*!
+@@ -240,10 +240,7 @@ extern char ___assert_task_state[1 - 2*!
TASK_UNINTERRUPTIBLE | __TASK_STOPPED | \
__TASK_TRACED | EXIT_ZOMBIE | EXIT_DEAD)
@@ -41,7 +41,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#define task_contributes_to_load(task) \
((task->state & TASK_UNINTERRUPTIBLE) != 0 && \
(task->flags & PF_FROZEN) == 0 && \
-@@ -2984,6 +2981,51 @@ static inline int signal_pending_state(l
+@@ -2982,6 +2979,51 @@ static inline int signal_pending_state(l
return (state & TASK_INTERRUPTIBLE) || __fatal_signal_pending(p);
}
diff --git a/patches/random-make-it-work-on-rt.patch b/patches/random-make-it-work-on-rt.patch
index 4acd883f210f9a..7432a44be326fd 100644
--- a/patches/random-make-it-work-on-rt.patch
+++ b/patches/random-make-it-work-on-rt.patch
@@ -85,9 +85,9 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
irqreturn_t retval = IRQ_NONE;
unsigned int flags = 0, irq = desc->irq_data.irq;
struct irqaction *action = desc->action;
-@@ -175,7 +177,11 @@ irqreturn_t handle_irq_event_percpu(stru
+@@ -176,7 +178,11 @@ irqreturn_t handle_irq_event_percpu(stru
action = action->next;
- } while (action);
+ }
- add_interrupt_randomness(irq, flags);
+#ifdef CONFIG_PREEMPT_RT_FULL
diff --git a/patches/rt-add-rt-locks.patch b/patches/rt-add-rt-locks.patch
index 2d61aa2ac70841..6d76a2329563e5 100644
--- a/patches/rt-add-rt-locks.patch
+++ b/patches/rt-add-rt-locks.patch
@@ -585,7 +585,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+#endif
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -311,6 +311,11 @@ extern char ___assert_task_state[1 - 2*!
+@@ -309,6 +309,11 @@ extern char ___assert_task_state[1 - 2*!
#endif
@@ -597,7 +597,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/* Task command name length */
#define TASK_COMM_LEN 16
-@@ -969,8 +974,18 @@ struct wake_q_head {
+@@ -967,8 +972,18 @@ struct wake_q_head {
struct wake_q_head name = { WAKE_Q_TAIL, &name.first }
extern void wake_q_add(struct wake_q_head *head,
diff --git a/patches/sched-delay-put-task.patch b/patches/sched-delay-put-task.patch
index c175ef65b72106..c7dd83a8ea4287 100644
--- a/patches/sched-delay-put-task.patch
+++ b/patches/sched-delay-put-task.patch
@@ -13,7 +13,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -1831,6 +1831,9 @@ struct task_struct {
+@@ -1829,6 +1829,9 @@ struct task_struct {
unsigned int sequential_io;
unsigned int sequential_io_avg;
#endif
@@ -23,7 +23,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
unsigned long task_state_change;
#endif
-@@ -2040,6 +2043,15 @@ extern struct pid *cad_pid;
+@@ -2038,6 +2041,15 @@ extern struct pid *cad_pid;
extern void free_task(struct task_struct *tsk);
#define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0)
@@ -39,7 +39,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
extern void __put_task_struct(struct task_struct *t);
static inline void put_task_struct(struct task_struct *t)
-@@ -2047,6 +2059,7 @@ static inline void put_task_struct(struc
+@@ -2045,6 +2057,7 @@ static inline void put_task_struct(struc
if (atomic_dec_and_test(&t->usage))
__put_task_struct(t);
}
diff --git a/patches/sched-might-sleep-do-not-account-rcu-depth.patch b/patches/sched-might-sleep-do-not-account-rcu-depth.patch
index 0cb168055d1d39..4995a02f55c586 100644
--- a/patches/sched-might-sleep-do-not-account-rcu-depth.patch
+++ b/patches/sched-might-sleep-do-not-account-rcu-depth.patch
@@ -36,7 +36,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/* Internal to kernel */
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -7667,7 +7667,7 @@ void __init sched_init(void)
+@@ -7657,7 +7657,7 @@ void __init sched_init(void)
#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
static inline int preempt_count_equals(int preempt_offset)
{
diff --git a/patches/sched-mmdrop-delayed.patch b/patches/sched-mmdrop-delayed.patch
index 57e895a6321d16..0744a6b1a12bb4 100644
--- a/patches/sched-mmdrop-delayed.patch
+++ b/patches/sched-mmdrop-delayed.patch
@@ -35,7 +35,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
void __user *bd_addr;
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -2606,12 +2606,24 @@ extern struct mm_struct * mm_alloc(void)
+@@ -2604,12 +2604,24 @@ extern struct mm_struct * mm_alloc(void)
/* mmdrop drops the mm and the page tables */
extern void __mmdrop(struct mm_struct *);
@@ -98,7 +98,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
if (unlikely(prev_state == TASK_DEAD)) {
if (prev->sched_class->task_dead)
prev->sched_class->task_dead(prev);
-@@ -5255,6 +5259,8 @@ void sched_setnuma(struct task_struct *p
+@@ -5245,6 +5249,8 @@ void sched_setnuma(struct task_struct *p
#endif /* CONFIG_NUMA_BALANCING */
#ifdef CONFIG_HOTPLUG_CPU
@@ -107,7 +107,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/*
* Ensures that the idle task is using init_mm right before its cpu goes
* offline.
-@@ -5269,7 +5275,11 @@ void idle_task_exit(void)
+@@ -5259,7 +5265,11 @@ void idle_task_exit(void)
switch_mm(mm, &init_mm, current);
finish_arch_post_lock_switch();
}
@@ -120,7 +120,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
/*
-@@ -5641,6 +5651,10 @@ migration_call(struct notifier_block *nf
+@@ -5631,6 +5641,10 @@ migration_call(struct notifier_block *nf
case CPU_DEAD:
calc_load_migrate(rq);
diff --git a/patches/sched-rt-mutex-wakeup.patch b/patches/sched-rt-mutex-wakeup.patch
index 380b0b5d455643..8fad3e5de336eb 100644
--- a/patches/sched-rt-mutex-wakeup.patch
+++ b/patches/sched-rt-mutex-wakeup.patch
@@ -17,7 +17,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -1378,6 +1378,7 @@ struct tlbflush_unmap_batch {
+@@ -1376,6 +1376,7 @@ struct tlbflush_unmap_batch {
struct task_struct {
volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
@@ -25,7 +25,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
void *stack;
atomic_t usage;
unsigned int flags; /* per process flags, defined below */
-@@ -2483,6 +2484,7 @@ extern void xtime_update(unsigned long t
+@@ -2481,6 +2482,7 @@ extern void xtime_update(unsigned long t
extern int wake_up_state(struct task_struct *tsk, unsigned int state);
extern int wake_up_process(struct task_struct *tsk);
diff --git a/patches/sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch b/patches/sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch
index 39553775c30678..fbf094715990eb 100644
--- a/patches/sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch
+++ b/patches/sched-workqueue-Only-wake-up-idle-workers-if-not-blo.patch
@@ -23,7 +23,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -3264,8 +3264,10 @@ static void __sched notrace __schedule(b
+@@ -3254,8 +3254,10 @@ static void __sched notrace __schedule(b
* If a worker went to sleep, notify and ask workqueue
* whether it wants to wake up a task to maintain
* concurrency.
diff --git a/patches/series b/patches/series
index 1f378249fdc441..2e8d0bca9d4233 100644
--- a/patches/series
+++ b/patches/series
@@ -15,7 +15,6 @@ arm64-replace-read_lock-to-rcu-lock-in-call_step_hoo.patch
############################################################
# Stuff broken upstream, patches submitted
############################################################
-btrfs-initialize-the-seq-counter-in-struct-btrfs_dev.patch
sched-use-tsk_cpus_allowed-instead-of-accessing-cpus.patch
sched-provide-a-tsk_nr_cpus_allowed-helper.patch
drivers-cpuidle-coupled-fix-warning-cpuidle_coupled_.patch
diff --git a/patches/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch b/patches/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch
index bf6bc953dd4259..96e8c4719d24c6 100644
--- a/patches/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch
+++ b/patches/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch
@@ -17,7 +17,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -1568,6 +1568,7 @@ struct task_struct {
+@@ -1566,6 +1566,7 @@ struct task_struct {
/* signal handlers */
struct signal_struct *signal;
struct sighand_struct *sighand;
diff --git a/patches/skbufhead-raw-lock.patch b/patches/skbufhead-raw-lock.patch
index 14c8c0d0c89dde..983b721b674a6c 100644
--- a/patches/skbufhead-raw-lock.patch
+++ b/patches/skbufhead-raw-lock.patch
@@ -33,7 +33,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
};
struct sk_buff;
-@@ -1463,6 +1464,12 @@ static inline void skb_queue_head_init(s
+@@ -1464,6 +1465,12 @@ static inline void skb_queue_head_init(s
__skb_queue_head_init(list);
}
@@ -89,7 +89,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
static int napi_gro_complete(struct sk_buff *skb)
-@@ -7469,6 +7472,9 @@ static int dev_cpu_callback(struct notif
+@@ -7474,6 +7477,9 @@ static int dev_cpu_callback(struct notif
netif_rx_ni(skb);
input_queue_head_incr(oldsd);
}
@@ -99,7 +99,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
return NOTIFY_OK;
}
-@@ -7770,8 +7776,9 @@ static int __init net_dev_init(void)
+@@ -7775,8 +7781,9 @@ static int __init net_dev_init(void)
for_each_possible_cpu(i) {
struct softnet_data *sd = &per_cpu(softnet_data, i);
diff --git a/patches/snd-pcm-fix-snd_pcm_stream_lock-irqs_disabled-splats.patch b/patches/snd-pcm-fix-snd_pcm_stream_lock-irqs_disabled-splats.patch
index 23992cb73413da..bd96fad33758b3 100644
--- a/patches/snd-pcm-fix-snd_pcm_stream_lock-irqs_disabled-splats.patch
+++ b/patches/snd-pcm-fix-snd_pcm_stream_lock-irqs_disabled-splats.patch
@@ -31,7 +31,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
-@@ -123,7 +123,7 @@ EXPORT_SYMBOL_GPL(snd_pcm_stream_unlock)
+@@ -135,7 +135,7 @@ EXPORT_SYMBOL_GPL(snd_pcm_stream_unlock)
void snd_pcm_stream_lock_irq(struct snd_pcm_substream *substream)
{
if (!substream->pcm->nonatomic)
@@ -40,7 +40,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
snd_pcm_stream_lock(substream);
}
EXPORT_SYMBOL_GPL(snd_pcm_stream_lock_irq);
-@@ -138,7 +138,7 @@ void snd_pcm_stream_unlock_irq(struct sn
+@@ -150,7 +150,7 @@ void snd_pcm_stream_unlock_irq(struct sn
{
snd_pcm_stream_unlock(substream);
if (!substream->pcm->nonatomic)
@@ -49,7 +49,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
EXPORT_SYMBOL_GPL(snd_pcm_stream_unlock_irq);
-@@ -146,7 +146,7 @@ unsigned long _snd_pcm_stream_lock_irqsa
+@@ -158,7 +158,7 @@ unsigned long _snd_pcm_stream_lock_irqsa
{
unsigned long flags = 0;
if (!substream->pcm->nonatomic)
@@ -58,7 +58,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
snd_pcm_stream_lock(substream);
return flags;
}
-@@ -164,7 +164,7 @@ void snd_pcm_stream_unlock_irqrestore(st
+@@ -176,7 +176,7 @@ void snd_pcm_stream_unlock_irqrestore(st
{
snd_pcm_stream_unlock(substream);
if (!substream->pcm->nonatomic)
diff --git a/patches/softirq-preempt-fix-3-re.patch b/patches/softirq-preempt-fix-3-re.patch
index c831674bba3841..56cd596b5567b9 100644
--- a/patches/softirq-preempt-fix-3-re.patch
+++ b/patches/softirq-preempt-fix-3-re.patch
@@ -119,7 +119,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
atomic_long_inc(&skb->dev->rx_dropped);
kfree_skb(skb);
-@@ -4512,6 +4515,7 @@ static void net_rps_action_and_irq_enabl
+@@ -4515,6 +4518,7 @@ static void net_rps_action_and_irq_enabl
sd->rps_ipi_list = NULL;
local_irq_enable();
@@ -127,7 +127,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/* Send pending IPI's to kick RPS processing on remote cpus. */
while (remsd) {
-@@ -4525,6 +4529,7 @@ static void net_rps_action_and_irq_enabl
+@@ -4528,6 +4532,7 @@ static void net_rps_action_and_irq_enabl
} else
#endif
local_irq_enable();
@@ -135,7 +135,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
static bool sd_has_rps_ipi_waiting(struct softnet_data *sd)
-@@ -4606,6 +4611,7 @@ void __napi_schedule(struct napi_struct
+@@ -4609,6 +4614,7 @@ void __napi_schedule(struct napi_struct
local_irq_save(flags);
____napi_schedule(this_cpu_ptr(&softnet_data), n);
local_irq_restore(flags);
@@ -143,7 +143,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
EXPORT_SYMBOL(__napi_schedule);
-@@ -7454,6 +7460,7 @@ static int dev_cpu_callback(struct notif
+@@ -7459,6 +7465,7 @@ static int dev_cpu_callback(struct notif
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_enable();
diff --git a/patches/softirq-split-locks.patch b/patches/softirq-split-locks.patch
index e76ddde39ead9a..b2410346f7c9ce 100644
--- a/patches/softirq-split-locks.patch
+++ b/patches/softirq-split-locks.patch
@@ -172,7 +172,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
* Are we in NMI context?
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -1834,6 +1834,8 @@ struct task_struct {
+@@ -1832,6 +1832,8 @@ struct task_struct {
#endif
#ifdef CONFIG_PREEMPT_RT_BASE
struct rcu_head put_rcu;
@@ -181,7 +181,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#endif
#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
unsigned long task_state_change;
-@@ -2099,6 +2101,7 @@ extern void thread_group_cputime_adjuste
+@@ -2097,6 +2099,7 @@ extern void thread_group_cputime_adjuste
/*
* Per process flags
*/
diff --git a/patches/timekeeping-split-jiffies-lock.patch b/patches/timekeeping-split-jiffies-lock.patch
index 418bb9fa38aaf5..279d97e0e10187 100644
--- a/patches/timekeeping-split-jiffies-lock.patch
+++ b/patches/timekeeping-split-jiffies-lock.patch
@@ -129,7 +129,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
if (rcu_needs_cpu(basemono, &next_rcu) ||
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
-@@ -2048,8 +2048,10 @@ EXPORT_SYMBOL(hardpps);
+@@ -2047,8 +2047,10 @@ EXPORT_SYMBOL(hardpps);
*/
void xtime_update(unsigned long ticks)
{
diff --git a/patches/tracing-account-for-preempt-off-in-preempt_schedule.patch b/patches/tracing-account-for-preempt-off-in-preempt_schedule.patch
index 344544eb989966..6ab92fbe31f143 100644
--- a/patches/tracing-account-for-preempt-off-in-preempt_schedule.patch
+++ b/patches/tracing-account-for-preempt-off-in-preempt_schedule.patch
@@ -27,7 +27,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -3306,7 +3306,16 @@ asmlinkage __visible void __sched notrac
+@@ -3296,7 +3296,16 @@ asmlinkage __visible void __sched notrac
* an infinite recursion.
*/
prev_ctx = exception_enter();
diff --git a/patches/vtime-split-lock-and-seqcount.patch b/patches/vtime-split-lock-and-seqcount.patch
index 3d74cf73e0e1c6..1b792f26a42d92 100644
--- a/patches/vtime-split-lock-and-seqcount.patch
+++ b/patches/vtime-split-lock-and-seqcount.patch
@@ -26,7 +26,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#else
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -1521,7 +1521,8 @@ struct task_struct {
+@@ -1519,7 +1519,8 @@ struct task_struct {
cputime_t gtime;
struct prev_cputime prev_cputime;
#ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
diff --git a/patches/work-queue-work-around-irqsafe-timer-optimization.patch b/patches/work-queue-work-around-irqsafe-timer-optimization.patch
index 290127556f05e3..1a2df1275485c0 100644
--- a/patches/work-queue-work-around-irqsafe-timer-optimization.patch
+++ b/patches/work-queue-work-around-irqsafe-timer-optimization.patch
@@ -121,7 +121,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#include "workqueue_internal.h"
-@@ -1246,7 +1247,7 @@ static int try_to_grab_pending(struct wo
+@@ -1256,7 +1257,7 @@ static int try_to_grab_pending(struct wo
local_unlock_irqrestore(pendingb_lock, *flags);
if (work_is_canceling(work))
return -ENOENT;
diff --git a/patches/workqueue-distangle-from-rq-lock.patch b/patches/workqueue-distangle-from-rq-lock.patch
index 8ceae86231e51e..b243acb8abdfc6 100644
--- a/patches/workqueue-distangle-from-rq-lock.patch
+++ b/patches/workqueue-distangle-from-rq-lock.patch
@@ -95,7 +95,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
* wake_up_process - Wake up a specific process
* @p: The process to be woken up.
*
-@@ -3281,21 +3231,6 @@ static void __sched notrace __schedule(b
+@@ -3271,21 +3221,6 @@ static void __sched notrace __schedule(b
} else {
deactivate_task(rq, prev, DEQUEUE_SLEEP);
prev->on_rq = 0;
@@ -117,7 +117,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
switch_count = &prev->nvcsw;
}
-@@ -3328,6 +3263,14 @@ static inline void sched_submit_work(str
+@@ -3318,6 +3253,14 @@ static inline void sched_submit_work(str
{
if (!tsk->state || tsk_is_pi_blocked(tsk))
return;
@@ -132,7 +132,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/*
* If we are going to sleep and we have plugged IO queued,
* make sure to submit it to avoid deadlocks.
-@@ -3336,6 +3279,12 @@ static inline void sched_submit_work(str
+@@ -3326,6 +3269,12 @@ static inline void sched_submit_work(str
blk_schedule_flush_plug(tsk);
}
@@ -145,7 +145,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
asmlinkage __visible void __sched schedule(void)
{
struct task_struct *tsk = current;
-@@ -3346,6 +3295,7 @@ asmlinkage __visible void __sched schedu
+@@ -3336,6 +3285,7 @@ asmlinkage __visible void __sched schedu
__schedule(false);
sched_preempt_enable_no_resched();
} while (need_resched());
@@ -155,7 +155,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
-@@ -811,44 +811,31 @@ static void wake_up_worker(struct worker
+@@ -821,44 +821,31 @@ static void wake_up_worker(struct worker
}
/**
@@ -212,7 +212,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
struct worker_pool *pool;
/*
-@@ -857,14 +844,15 @@ struct task_struct *wq_worker_sleeping(s
+@@ -867,14 +854,15 @@ struct task_struct *wq_worker_sleeping(s
* checking NOT_RUNNING.
*/
if (worker->flags & WORKER_NOT_RUNNING)
@@ -232,7 +232,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/*
* The counterpart of the following dec_and_test, implied mb,
* worklist not empty test sequence is in insert_work().
-@@ -877,9 +865,12 @@ struct task_struct *wq_worker_sleeping(s
+@@ -887,9 +875,12 @@ struct task_struct *wq_worker_sleeping(s
* lock is safe.
*/
if (atomic_dec_and_test(&pool->nr_running) &&
diff --git a/patches/workqueue-prevent-deadlock-stall.patch b/patches/workqueue-prevent-deadlock-stall.patch
index 26765f6e834a77..4254cf6239f6a8 100644
--- a/patches/workqueue-prevent-deadlock-stall.patch
+++ b/patches/workqueue-prevent-deadlock-stall.patch
@@ -43,7 +43,7 @@ Cc: Steven Rostedt <rostedt@goodmis.org>
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -3377,9 +3377,8 @@ static void __sched notrace __schedule(b
+@@ -3367,9 +3367,8 @@ static void __sched notrace __schedule(b
static inline void sched_submit_work(struct task_struct *tsk)
{
@@ -54,7 +54,7 @@ Cc: Steven Rostedt <rostedt@goodmis.org>
/*
* If a worker went to sleep, notify and ask workqueue whether
* it wants to wake up a task to maintain concurrency.
-@@ -3387,6 +3386,10 @@ static inline void sched_submit_work(str
+@@ -3377,6 +3376,10 @@ static inline void sched_submit_work(str
if (tsk->flags & PF_WQ_WORKER)
wq_worker_sleeping(tsk);
@@ -111,7 +111,7 @@ Cc: Steven Rostedt <rostedt@goodmis.org>
#ifdef CONFIG_DEBUG_OBJECTS_WORK
static struct debug_obj_descr work_debug_descr;
-@@ -804,10 +834,16 @@ static struct worker *first_idle_worker(
+@@ -814,10 +844,16 @@ static struct worker *first_idle_worker(
*/
static void wake_up_worker(struct worker_pool *pool)
{
@@ -129,7 +129,7 @@ Cc: Steven Rostedt <rostedt@goodmis.org>
}
/**
-@@ -835,7 +871,7 @@ void wq_worker_running(struct task_struc
+@@ -845,7 +881,7 @@ void wq_worker_running(struct task_struc
*/
void wq_worker_sleeping(struct task_struct *task)
{
@@ -138,7 +138,7 @@ Cc: Steven Rostedt <rostedt@goodmis.org>
struct worker_pool *pool;
/*
-@@ -852,25 +888,18 @@ void wq_worker_sleeping(struct task_stru
+@@ -862,25 +898,18 @@ void wq_worker_sleeping(struct task_stru
return;
worker->sleeping = 1;
@@ -168,7 +168,7 @@ Cc: Steven Rostedt <rostedt@goodmis.org>
}
/**
-@@ -1561,7 +1590,9 @@ static void worker_enter_idle(struct wor
+@@ -1571,7 +1600,9 @@ static void worker_enter_idle(struct wor
worker->last_active = jiffies;
/* idle_list is LIFO */
@@ -178,7 +178,7 @@ Cc: Steven Rostedt <rostedt@goodmis.org>
if (too_many_workers(pool) && !timer_pending(&pool->idle_timer))
mod_timer(&pool->idle_timer, jiffies + IDLE_WORKER_TIMEOUT);
-@@ -1594,7 +1625,9 @@ static void worker_leave_idle(struct wor
+@@ -1604,7 +1635,9 @@ static void worker_leave_idle(struct wor
return;
worker_clr_flags(worker, WORKER_IDLE);
pool->nr_idle--;
@@ -188,7 +188,7 @@ Cc: Steven Rostedt <rostedt@goodmis.org>
}
static struct worker *alloc_worker(int node)
-@@ -1760,7 +1793,9 @@ static void destroy_worker(struct worker
+@@ -1770,7 +1803,9 @@ static void destroy_worker(struct worker
pool->nr_workers--;
pool->nr_idle--;
diff --git a/patches/workqueue-use-locallock.patch b/patches/workqueue-use-locallock.patch
index ac5b32721ba57b..44df5c5dedda3d 100644
--- a/patches/workqueue-use-locallock.patch
+++ b/patches/workqueue-use-locallock.patch
@@ -29,7 +29,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
static int worker_thread(void *__worker);
static void workqueue_sysfs_unregister(struct workqueue_struct *wq);
-@@ -1072,9 +1075,9 @@ static void put_pwq_unlocked(struct pool
+@@ -1082,9 +1085,9 @@ static void put_pwq_unlocked(struct pool
* As both pwqs and pools are RCU protected, the
* following lock operations are safe.
*/
@@ -41,7 +41,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
}
-@@ -1176,7 +1179,7 @@ static int try_to_grab_pending(struct wo
+@@ -1186,7 +1189,7 @@ static int try_to_grab_pending(struct wo
struct worker_pool *pool;
struct pool_workqueue *pwq;
@@ -50,7 +50,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/* try to steal the timer if it exists */
if (is_dwork) {
-@@ -1240,7 +1243,7 @@ static int try_to_grab_pending(struct wo
+@@ -1250,7 +1253,7 @@ static int try_to_grab_pending(struct wo
spin_unlock(&pool->lock);
fail:
rcu_read_unlock();
@@ -59,7 +59,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
if (work_is_canceling(work))
return -ENOENT;
cpu_relax();
-@@ -1312,7 +1315,7 @@ static void __queue_work(int cpu, struct
+@@ -1322,7 +1325,7 @@ static void __queue_work(int cpu, struct
* queued or lose PENDING. Grabbing PENDING and queueing should
* happen with IRQ disabled.
*/
@@ -68,7 +68,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
debug_work_activate(work);
-@@ -1417,14 +1420,14 @@ bool queue_work_on(int cpu, struct workq
+@@ -1427,14 +1430,14 @@ bool queue_work_on(int cpu, struct workq
bool ret = false;
unsigned long flags;
@@ -85,7 +85,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
return ret;
}
EXPORT_SYMBOL(queue_work_on);
-@@ -1491,14 +1494,14 @@ bool queue_delayed_work_on(int cpu, stru
+@@ -1501,14 +1504,14 @@ bool queue_delayed_work_on(int cpu, stru
unsigned long flags;
/* read the comment in __queue_work() */
@@ -102,7 +102,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
return ret;
}
EXPORT_SYMBOL(queue_delayed_work_on);
-@@ -1533,7 +1536,7 @@ bool mod_delayed_work_on(int cpu, struct
+@@ -1543,7 +1546,7 @@ bool mod_delayed_work_on(int cpu, struct
if (likely(ret >= 0)) {
__queue_delayed_work(cpu, wq, dwork, delay);
@@ -111,7 +111,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
/* -ENOENT from try_to_grab_pending() becomes %true */
-@@ -2807,7 +2810,7 @@ static bool __cancel_work_timer(struct w
+@@ -2817,7 +2820,7 @@ static bool __cancel_work_timer(struct w
/* tell other tasks trying to grab @work to back off */
mark_work_canceling(work);
@@ -120,7 +120,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
flush_work(work);
clear_work_data(work);
-@@ -2862,10 +2865,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync);
+@@ -2872,10 +2875,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync);
*/
bool flush_delayed_work(struct delayed_work *dwork)
{
@@ -133,7 +133,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
return flush_work(&dwork->work);
}
EXPORT_SYMBOL(flush_delayed_work);
-@@ -2900,7 +2903,7 @@ bool cancel_delayed_work(struct delayed_
+@@ -2910,7 +2913,7 @@ bool cancel_delayed_work(struct delayed_
set_work_pool_and_clear_pending(&dwork->work,
get_work_pool_id(&dwork->work));
diff --git a/patches/workqueue-use-rcu.patch b/patches/workqueue-use-rcu.patch
index 42ae05d752f554..3a156db3d78380 100644
--- a/patches/workqueue-use-rcu.patch
+++ b/patches/workqueue-use-rcu.patch
@@ -104,7 +104,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
* read locked.
* If the pwq needs to be used beyond the locking in effect, the caller is
* responsible for guaranteeing that the pwq stays online.
-@@ -662,8 +662,8 @@ static struct pool_workqueue *get_work_p
+@@ -672,8 +672,8 @@ static struct pool_workqueue *get_work_p
* @work: the work item of interest
*
* Pools are created and destroyed under wq_pool_mutex, and allows read
@@ -115,7 +115,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
*
* All fields of the returned pool are accessible as long as the above
* mentioned locking is in effect. If the returned pool needs to be used
-@@ -1069,7 +1069,7 @@ static void put_pwq_unlocked(struct pool
+@@ -1079,7 +1079,7 @@ static void put_pwq_unlocked(struct pool
{
if (pwq) {
/*
@@ -124,7 +124,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
* following lock operations are safe.
*/
spin_lock_irq(&pwq->pool->lock);
-@@ -1195,6 +1195,7 @@ static int try_to_grab_pending(struct wo
+@@ -1205,6 +1205,7 @@ static int try_to_grab_pending(struct wo
if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work)))
return 0;
@@ -132,7 +132,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/*
* The queueing is in progress, or it is already queued. Try to
* steal it from ->worklist without clearing WORK_STRUCT_PENDING.
-@@ -1233,10 +1234,12 @@ static int try_to_grab_pending(struct wo
+@@ -1243,10 +1244,12 @@ static int try_to_grab_pending(struct wo
set_work_pool_and_keep_pending(work, pool->id);
spin_unlock(&pool->lock);
@@ -145,7 +145,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
local_irq_restore(*flags);
if (work_is_canceling(work))
return -ENOENT;
-@@ -1317,6 +1320,8 @@ static void __queue_work(int cpu, struct
+@@ -1327,6 +1330,8 @@ static void __queue_work(int cpu, struct
if (unlikely(wq->flags & __WQ_DRAINING) &&
WARN_ON_ONCE(!is_chained_work(wq)))
return;
@@ -154,7 +154,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
retry:
if (req_cpu == WORK_CPU_UNBOUND)
cpu = raw_smp_processor_id();
-@@ -1373,10 +1378,8 @@ static void __queue_work(int cpu, struct
+@@ -1383,10 +1388,8 @@ static void __queue_work(int cpu, struct
/* pwq determined, queue */
trace_workqueue_queue_work(req_cpu, pwq, work);
@@ -167,7 +167,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
pwq->nr_in_flight[pwq->work_color]++;
work_flags = work_color_to_flags(pwq->work_color);
-@@ -1392,7 +1395,9 @@ static void __queue_work(int cpu, struct
+@@ -1402,7 +1405,9 @@ static void __queue_work(int cpu, struct
insert_work(pwq, work, worklist, work_flags);
@@ -177,7 +177,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
/**
-@@ -2677,14 +2682,14 @@ static bool start_flush_work(struct work
+@@ -2687,14 +2692,14 @@ static bool start_flush_work(struct work
might_sleep();
@@ -195,7 +195,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/* see the comment in try_to_grab_pending() with the same code */
pwq = get_work_pwq(work);
if (pwq) {
-@@ -2711,10 +2716,11 @@ static bool start_flush_work(struct work
+@@ -2721,10 +2726,11 @@ static bool start_flush_work(struct work
else
lock_map_acquire_read(&pwq->wq->lockdep_map);
lock_map_release(&pwq->wq->lockdep_map);
@@ -208,7 +208,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
return false;
}
-@@ -3122,7 +3128,7 @@ static void rcu_free_pool(struct rcu_hea
+@@ -3132,7 +3138,7 @@ static void rcu_free_pool(struct rcu_hea
* put_unbound_pool - put a worker_pool
* @pool: worker_pool to put
*
@@ -217,7 +217,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
* safe manner. get_unbound_pool() calls this function on its failure path
* and this function should be able to release pools which went through,
* successfully or not, init_worker_pool().
-@@ -3176,8 +3182,8 @@ static void put_unbound_pool(struct work
+@@ -3186,8 +3192,8 @@ static void put_unbound_pool(struct work
del_timer_sync(&pool->idle_timer);
del_timer_sync(&pool->mayday_timer);
@@ -228,7 +228,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
/**
-@@ -3284,14 +3290,14 @@ static void pwq_unbound_release_workfn(s
+@@ -3294,14 +3300,14 @@ static void pwq_unbound_release_workfn(s
put_unbound_pool(pool);
mutex_unlock(&wq_pool_mutex);
@@ -245,7 +245,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
/**
-@@ -3944,7 +3950,7 @@ void destroy_workqueue(struct workqueue_
+@@ -3954,7 +3960,7 @@ void destroy_workqueue(struct workqueue_
* The base ref is never dropped on per-cpu pwqs. Directly
* schedule RCU free.
*/
@@ -254,7 +254,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
} else {
/*
* We're the sole accessor of @wq at this point. Directly
-@@ -4037,7 +4043,8 @@ bool workqueue_congested(int cpu, struct
+@@ -4047,7 +4053,8 @@ bool workqueue_congested(int cpu, struct
struct pool_workqueue *pwq;
bool ret;
@@ -264,7 +264,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
if (cpu == WORK_CPU_UNBOUND)
cpu = smp_processor_id();
-@@ -4048,7 +4055,8 @@ bool workqueue_congested(int cpu, struct
+@@ -4058,7 +4065,8 @@ bool workqueue_congested(int cpu, struct
pwq = unbound_pwq_by_node(wq, cpu_to_node(cpu));
ret = !list_empty(&pwq->delayed_works);
@@ -274,7 +274,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
return ret;
}
-@@ -4074,15 +4082,15 @@ unsigned int work_busy(struct work_struc
+@@ -4084,15 +4092,15 @@ unsigned int work_busy(struct work_struc
if (work_pending(work))
ret |= WORK_BUSY_PENDING;
@@ -294,7 +294,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
return ret;
}
-@@ -4271,7 +4279,7 @@ void show_workqueue_state(void)
+@@ -4281,7 +4289,7 @@ void show_workqueue_state(void)
unsigned long flags;
int pi;
@@ -303,7 +303,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
pr_info("Showing busy workqueues and worker pools:\n");
-@@ -4322,7 +4330,7 @@ void show_workqueue_state(void)
+@@ -4332,7 +4340,7 @@ void show_workqueue_state(void)
spin_unlock_irqrestore(&pool->lock, flags);
}
@@ -312,7 +312,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
/*
-@@ -4672,16 +4680,16 @@ bool freeze_workqueues_busy(void)
+@@ -4682,16 +4690,16 @@ bool freeze_workqueues_busy(void)
* nr_active is monotonically decreasing. It's safe
* to peek without lock.
*/
@@ -332,7 +332,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
out_unlock:
mutex_unlock(&wq_pool_mutex);
-@@ -4871,7 +4879,8 @@ static ssize_t wq_pool_ids_show(struct d
+@@ -4881,7 +4889,8 @@ static ssize_t wq_pool_ids_show(struct d
const char *delim = "";
int node, written = 0;
@@ -342,7 +342,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
for_each_node(node) {
written += scnprintf(buf + written, PAGE_SIZE - written,
"%s%d:%d", delim, node,
-@@ -4879,7 +4888,8 @@ static ssize_t wq_pool_ids_show(struct d
+@@ -4889,7 +4898,8 @@ static ssize_t wq_pool_ids_show(struct d
delim = " ";
}
written += scnprintf(buf + written, PAGE_SIZE - written, "\n");
diff --git a/patches/x86-kvm-require-const-tsc-for-rt.patch b/patches/x86-kvm-require-const-tsc-for-rt.patch
index 5fa84b0893b128..0df27e3f7e2a7e 100644
--- a/patches/x86-kvm-require-const-tsc-for-rt.patch
+++ b/patches/x86-kvm-require-const-tsc-for-rt.patch
@@ -14,7 +14,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
-@@ -5788,6 +5788,13 @@ int kvm_arch_init(void *opaque)
+@@ -5789,6 +5789,13 @@ int kvm_arch_init(void *opaque)
goto out;
}