diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2016-03-09 12:13:29 +0100 |
---|---|---|
committer | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2016-03-09 12:13:29 +0100 |
commit | ee504eaedb9779b0e95b5925f3bbc9e0ead0282a (patch) | |
tree | 20f881487dfd58ad61fe7c8cec8e71602c8ae250 | |
parent | 02d11b73d8133f94f5384bcf80d82bb7df6eff95 (diff) | |
download | 4.9-rt-patches-ee504eaedb9779b0e95b5925f3bbc9e0ead0282a.tar.gz |
[ANNOUNCE] 4.4.4-rt10
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
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; } |