diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2016-12-12 12:35:47 +0100 |
---|---|---|
committer | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2016-12-12 12:35:47 +0100 |
commit | c297bb37b26a1d9f59f5ce2978279e990e1428c5 (patch) | |
tree | 94f13c4d71e20e54d9f35560c0614ae3ccdc206e | |
parent | 02d978ea9304bb96a3c0d5984c0903e4dd6304f6 (diff) | |
download | linux-rt-c297bb37b26a1d9f59f5ce2978279e990e1428c5.tar.gz |
[ANNOUNCE] v4.8.14-rt8v4.8.14-rt8-patches
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
40 files changed, 122 insertions, 132 deletions
diff --git a/patches/arm-kprobe-replace-patch_lock-to-raw-lock.patch b/patches/arm-kprobe-replace-patch_lock-to-raw-lock.patch index e32478755873..fc9a5257bf3d 100644 --- a/patches/arm-kprobe-replace-patch_lock-to-raw-lock.patch +++ b/patches/arm-kprobe-replace-patch_lock-to-raw-lock.patch @@ -36,11 +36,9 @@ to raw lock. Signed-off-by: Yang Shi <yang.shi@linaro.org> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- - arch/arm/kernel/patch.c | 6 +++--- + arch/arm/kernel/patch.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -diff --git a/arch/arm/kernel/patch.c b/arch/arm/kernel/patch.c -index 69bda1a5707e..1f665acaa6a9 100644 --- a/arch/arm/kernel/patch.c +++ b/arch/arm/kernel/patch.c @@ -15,7 +15,7 @@ struct patch { @@ -52,7 +50,7 @@ index 69bda1a5707e..1f665acaa6a9 100644 static void __kprobes *patch_map(void *addr, int fixmap, unsigned long *flags) __acquires(&patch_lock) -@@ -32,7 +32,7 @@ static void __kprobes *patch_map(void *addr, int fixmap, unsigned long *flags) +@@ -32,7 +32,7 @@ static void __kprobes *patch_map(void *a return addr; if (flags) @@ -61,7 +59,7 @@ index 69bda1a5707e..1f665acaa6a9 100644 else __acquire(&patch_lock); -@@ -47,7 +47,7 @@ static void __kprobes patch_unmap(int fixmap, unsigned long *flags) +@@ -47,7 +47,7 @@ static void __kprobes patch_unmap(int fi clear_fixmap(fixmap); if (flags) @@ -70,6 +68,3 @@ index 69bda1a5707e..1f665acaa6a9 100644 else __release(&patch_lock); } --- -2.10.2 - diff --git a/patches/completion-use-simple-wait-queues.patch b/patches/completion-use-simple-wait-queues.patch index 553b844a8b30..2d5eee0c3792 100644 --- a/patches/completion-use-simple-wait-queues.patch +++ b/patches/completion-use-simple-wait-queues.patch @@ -35,7 +35,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> break; --- a/drivers/usb/gadget/function/f_fs.c +++ b/drivers/usb/gadget/function/f_fs.c -@@ -1509,7 +1509,7 @@ static void ffs_data_put(struct ffs_data +@@ -1590,7 +1590,7 @@ static void ffs_data_put(struct ffs_data pr_info("%s(): freeing\n", __func__); ffs_data_clear(ffs); BUG_ON(waitqueue_active(&ffs->ev.waitq) || diff --git a/patches/futex-requeue-pi-fix.patch b/patches/futex-requeue-pi-fix.patch index 3a40911cbc61..8948a2e700b4 100644 --- a/patches/futex-requeue-pi-fix.patch +++ b/patches/futex-requeue-pi-fix.patch @@ -55,7 +55,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c -@@ -71,7 +71,8 @@ static void fixup_rt_mutex_waiters(struc +@@ -135,7 +135,8 @@ static void fixup_rt_mutex_waiters(struc static int rt_mutex_real_waiter(struct rt_mutex_waiter *waiter) { @@ -65,7 +65,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } /* -@@ -1640,6 +1641,35 @@ int rt_mutex_start_proxy_lock(struct rt_ +@@ -1704,6 +1705,35 @@ int rt_mutex_start_proxy_lock(struct rt_ return 1; } diff --git a/patches/i915-bogus-warning-from-i915-when-running-on-PREEMPT.patch b/patches/i915-bogus-warning-from-i915-when-running-on-PREEMPT.patch index 0b798376719d..fc84a9d5ea5b 100644 --- a/patches/i915-bogus-warning-from-i915-when-running-on-PREEMPT.patch +++ b/patches/i915-bogus-warning-from-i915-when-running-on-PREEMPT.patch @@ -18,7 +18,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c -@@ -11647,7 +11647,7 @@ void intel_check_page_flip(struct drm_i9 +@@ -11670,7 +11670,7 @@ void intel_check_page_flip(struct drm_i9 struct intel_crtc *intel_crtc = to_intel_crtc(crtc); struct intel_flip_work *work; diff --git a/patches/infiniband-mellanox-ib-use-nort-irq.patch b/patches/infiniband-mellanox-ib-use-nort-irq.patch index 327f8669e68d..db9e31d3dea3 100644 --- a/patches/infiniband-mellanox-ib-use-nort-irq.patch +++ b/patches/infiniband-mellanox-ib-use-nort-irq.patch @@ -20,7 +20,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c -@@ -897,7 +897,7 @@ void ipoib_mcast_restart_task(struct wor +@@ -899,7 +899,7 @@ void ipoib_mcast_restart_task(struct wor ipoib_dbg_mcast(priv, "restarting multicast task\n"); @@ -29,7 +29,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> netif_addr_lock(dev); spin_lock(&priv->lock); -@@ -979,7 +979,7 @@ void ipoib_mcast_restart_task(struct wor +@@ -981,7 +981,7 @@ void ipoib_mcast_restart_task(struct wor spin_unlock(&priv->lock); netif_addr_unlock(dev); diff --git a/patches/iommu-amd--Use-WARN_ON_NORT.patch b/patches/iommu-amd--Use-WARN_ON_NORT.patch index c813995349cd..25a55c98d3bb 100644 --- a/patches/iommu-amd--Use-WARN_ON_NORT.patch +++ b/patches/iommu-amd--Use-WARN_ON_NORT.patch @@ -16,7 +16,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c -@@ -1832,10 +1832,10 @@ static int __attach_device(struct iommu_ +@@ -1835,10 +1835,10 @@ static int __attach_device(struct iommu_ int ret; /* @@ -30,7 +30,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* lock domain */ spin_lock(&domain->lock); -@@ -2003,10 +2003,10 @@ static void __detach_device(struct iommu +@@ -2006,10 +2006,10 @@ static void __detach_device(struct iommu struct protection_domain *domain; /* diff --git a/patches/iommu-vt-d-don-t-disable-preemption-while-accessing-.patch b/patches/iommu-vt-d-don-t-disable-preemption-while-accessing-.patch index 899d0a382eec..407649f6db27 100644 --- a/patches/iommu-vt-d-don-t-disable-preemption-while-accessing-.patch +++ b/patches/iommu-vt-d-don-t-disable-preemption-while-accessing-.patch @@ -35,7 +35,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /* bitmap for indexing intel_iommus */ static int g_num_of_iommus; -@@ -3626,10 +3626,8 @@ static void add_unmap(struct dmar_domain +@@ -3649,10 +3649,8 @@ static void add_unmap(struct dmar_domain struct intel_iommu *iommu; struct deferred_flush_entry *entry; struct deferred_flush_data *flush_data; @@ -47,7 +47,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /* Flush all CPUs' entries to avoid deferring too much. If * this becomes a bottleneck, can just flush us, and rely on -@@ -3662,8 +3660,6 @@ static void add_unmap(struct dmar_domain +@@ -3685,8 +3683,6 @@ static void add_unmap(struct dmar_domain } flush_data->size++; spin_unlock_irqrestore(&flush_data->lock, flags); diff --git a/patches/irqwork-Move-irq-safe-work-to-irq-context.patch b/patches/irqwork-Move-irq-safe-work-to-irq-context.patch index 931ee1d4d351..f2e9b6f59371 100644 --- a/patches/irqwork-Move-irq-safe-work-to-irq-context.patch +++ b/patches/irqwork-Move-irq-safe-work-to-irq-context.patch @@ -55,7 +55,7 @@ Cc: stable-rt@vger.kernel.org * Synchronize against the irq_work @entry, ensures the entry is not --- a/kernel/time/timer.c +++ b/kernel/time/timer.c -@@ -1630,7 +1630,7 @@ void update_process_times(int user_tick) +@@ -1644,7 +1644,7 @@ void update_process_times(int user_tick) scheduler_tick(); run_local_timers(); rcu_check_callbacks(user_tick); @@ -64,7 +64,7 @@ Cc: stable-rt@vger.kernel.org if (in_irq()) irq_work_tick(); #endif -@@ -1670,9 +1670,7 @@ static void run_timer_softirq(struct sof +@@ -1684,9 +1684,7 @@ static void run_timer_softirq(struct sof { struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]); diff --git a/patches/irqwork-push_most_work_into_softirq_context.patch b/patches/irqwork-push_most_work_into_softirq_context.patch index b49f364d2c5b..5b84fd6e0ee2 100644 --- a/patches/irqwork-push_most_work_into_softirq_context.patch +++ b/patches/irqwork-push_most_work_into_softirq_context.patch @@ -163,7 +163,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /* --- a/kernel/time/timer.c +++ b/kernel/time/timer.c -@@ -1630,7 +1630,7 @@ void update_process_times(int user_tick) +@@ -1644,7 +1644,7 @@ void update_process_times(int user_tick) scheduler_tick(); run_local_timers(); rcu_check_callbacks(user_tick); @@ -172,7 +172,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> if (in_irq()) irq_work_tick(); #endif -@@ -1670,6 +1670,10 @@ static void run_timer_softirq(struct sof +@@ -1684,6 +1684,10 @@ static void run_timer_softirq(struct sof { struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]); diff --git a/patches/kernel-futex-don-t-deboost-too-early.patch b/patches/kernel-futex-don-t-deboost-too-early.patch index 845cacf21baf..33f077248a9c 100644 --- a/patches/kernel-futex-don-t-deboost-too-early.patch +++ b/patches/kernel-futex-don-t-deboost-too-early.patch @@ -69,7 +69,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> if (deboost) --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c -@@ -933,13 +933,14 @@ static inline void rt_spin_lock_fastlock +@@ -997,13 +997,14 @@ static inline void rt_spin_lock_fastlock slowfn(lock); } @@ -89,7 +89,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> } #ifdef CONFIG_SMP /* -@@ -1074,7 +1075,7 @@ static void mark_wakeup_next_waiter(stru +@@ -1138,7 +1139,7 @@ static void mark_wakeup_next_waiter(stru /* * Slow path to release a rt_mutex spin_lock style */ @@ -98,7 +98,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> { unsigned long flags; WAKE_Q(wake_q); -@@ -1089,7 +1090,7 @@ static void noinline __sched rt_spin_lo +@@ -1153,7 +1154,7 @@ static void noinline __sched rt_spin_lo if (!rt_mutex_has_waiters(lock)) { lock->owner = NULL; raw_spin_unlock_irqrestore(&lock->wait_lock, flags); @@ -107,7 +107,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> } mark_wakeup_next_waiter(&wake_q, &wake_sleeper_q, lock); -@@ -1100,6 +1101,33 @@ static void noinline __sched rt_spin_lo +@@ -1164,6 +1165,33 @@ static void noinline __sched rt_spin_lo /* Undo pi boosting.when necessary */ rt_mutex_adjust_prio(current); @@ -141,7 +141,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> } void __lockfunc rt_spin_lock__no_mg(spinlock_t *lock) -@@ -1157,6 +1185,17 @@ void __lockfunc rt_spin_unlock(spinlock_ +@@ -1221,6 +1249,17 @@ void __lockfunc rt_spin_unlock(spinlock_ } EXPORT_SYMBOL(rt_spin_unlock); diff --git a/patches/latency-hist.patch b/patches/latency-hist.patch index d9bd5abd622a..169c81d1f07b 100644 --- a/patches/latency-hist.patch +++ b/patches/latency-hist.patch @@ -538,7 +538,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> depends on !GENERIC_TRACER --- a/kernel/trace/Makefile +++ b/kernel/trace/Makefile -@@ -41,6 +41,10 @@ obj-$(CONFIG_FUNCTION_TRACER) += trace_f +@@ -37,6 +37,10 @@ obj-$(CONFIG_FUNCTION_TRACER) += trace_f obj-$(CONFIG_IRQSOFF_TRACER) += trace_irqsoff.o obj-$(CONFIG_PREEMPT_TRACER) += trace_irqsoff.o obj-$(CONFIG_SCHED_TRACER) += trace_sched_wakeup.o diff --git a/patches/localversion.patch b/patches/localversion.patch index bbb08330835d..68c7b973cc48 100644 --- a/patches/localversion.patch +++ b/patches/localversion.patch @@ -10,4 +10,4 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- /dev/null +++ b/localversion-rt @@ -0,0 +1 @@ -+-rt7 ++-rt8 diff --git a/patches/mm-convert-swap-to-percpu-locked.patch b/patches/mm-convert-swap-to-percpu-locked.patch index 50e81be9f092..899ded4eb95f 100644 --- a/patches/mm-convert-swap-to-percpu-locked.patch +++ b/patches/mm-convert-swap-to-percpu-locked.patch @@ -44,7 +44,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -6590,7 +6590,9 @@ static int page_alloc_cpu_notify(struct +@@ -6600,7 +6600,9 @@ static int page_alloc_cpu_notify(struct int cpu = (unsigned long)hcpu; if (action == CPU_DEAD || action == CPU_DEAD_FROZEN) { diff --git a/patches/mm-memcontrol-do_not_disable_irq.patch b/patches/mm-memcontrol-do_not_disable_irq.patch index 72808f8ad82b..258f8a0694f7 100644 --- a/patches/mm-memcontrol-do_not_disable_irq.patch +++ b/patches/mm-memcontrol-do_not_disable_irq.patch @@ -29,7 +29,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /* Whether legacy memory+swap accounting is active */ static bool do_memsw_account(void) { -@@ -4566,12 +4569,12 @@ static int mem_cgroup_move_account(struc +@@ -4575,12 +4578,12 @@ static int mem_cgroup_move_account(struc ret = 0; @@ -44,7 +44,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> out_unlock: unlock_page(page); out: -@@ -5444,10 +5447,10 @@ void mem_cgroup_commit_charge(struct pag +@@ -5453,10 +5456,10 @@ void mem_cgroup_commit_charge(struct pag commit_charge(page, memcg, lrucare); @@ -57,7 +57,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> if (do_memsw_account() && PageSwapCache(page)) { swp_entry_t entry = { .val = page_private(page) }; -@@ -5503,14 +5506,14 @@ static void uncharge_batch(struct mem_cg +@@ -5512,14 +5515,14 @@ static void uncharge_batch(struct mem_cg memcg_oom_recover(memcg); } @@ -74,7 +74,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> if (!mem_cgroup_is_root(memcg)) css_put_many(&memcg->css, nr_pages); -@@ -5845,6 +5848,7 @@ void mem_cgroup_swapout(struct page *pag +@@ -5854,6 +5857,7 @@ void mem_cgroup_swapout(struct page *pag { struct mem_cgroup *memcg, *swap_memcg; unsigned short oldid; @@ -82,7 +82,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); -@@ -5885,12 +5889,16 @@ void mem_cgroup_swapout(struct page *pag +@@ -5894,12 +5898,16 @@ 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-memcontrol-mem_cgroup_migrate-replace-another-loc.patch b/patches/mm-memcontrol-mem_cgroup_migrate-replace-another-loc.patch index a0dbef2aee64..e18ec7c3e106 100644 --- a/patches/mm-memcontrol-mem_cgroup_migrate-replace-another-loc.patch +++ b/patches/mm-memcontrol-mem_cgroup_migrate-replace-another-loc.patch @@ -14,7 +14,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- a/mm/memcontrol.c +++ b/mm/memcontrol.c -@@ -5668,10 +5668,10 @@ void mem_cgroup_migrate(struct page *old +@@ -5677,10 +5677,10 @@ void mem_cgroup_migrate(struct page *old commit_charge(newpage, memcg, false); diff --git a/patches/mm-page_alloc-rt-friendly-per-cpu-pages.patch b/patches/mm-page_alloc-rt-friendly-per-cpu-pages.patch index d28885b0a030..80cadd26e319 100644 --- a/patches/mm-page_alloc-rt-friendly-per-cpu-pages.patch +++ b/patches/mm-page_alloc-rt-friendly-per-cpu-pages.patch @@ -175,7 +175,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> return NULL; } -@@ -6554,6 +6578,7 @@ static int page_alloc_cpu_notify(struct +@@ -6564,6 +6588,7 @@ static int page_alloc_cpu_notify(struct void __init page_alloc_init(void) { hotcpu_notifier(page_alloc_cpu_notify, 0); @@ -183,7 +183,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } /* -@@ -7370,7 +7395,7 @@ void zone_pcp_reset(struct zone *zone) +@@ -7380,7 +7405,7 @@ void zone_pcp_reset(struct zone *zone) struct per_cpu_pageset *pset; /* avoid races with drain_pages() */ @@ -192,7 +192,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> if (zone->pageset != &boot_pageset) { for_each_online_cpu(cpu) { pset = per_cpu_ptr(zone->pageset, cpu); -@@ -7379,7 +7404,7 @@ void zone_pcp_reset(struct zone *zone) +@@ -7389,7 +7414,7 @@ void zone_pcp_reset(struct zone *zone) free_percpu(zone->pageset); zone->pageset = &boot_pageset; } diff --git a/patches/mm-workingset-do-not-protect-workingset_shadow_nodes.patch b/patches/mm-workingset-do-not-protect-workingset_shadow_nodes.patch index 755fcf546c8d..363450e4fc4d 100644 --- a/patches/mm-workingset-do-not-protect-workingset_shadow_nodes.patch +++ b/patches/mm-workingset-do-not-protect-workingset_shadow_nodes.patch @@ -105,7 +105,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> + shadow_nodes = list_lru_shrink_count(&__workingset_shadow_nodes, sc); + local_unlock_irq(workingset_shadow_lock); - if (memcg_kmem_enabled()) { + if (sc->memcg) { pages = mem_cgroup_node_nr_lru_pages(sc->memcg, sc->nid, @@ -438,9 +439,9 @@ static enum lru_status shadow_lru_isolat spin_unlock(&mapping->tree_lock); 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 36aad344c8b9..3cbcac6afe7d 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 -@@ -7991,7 +7991,7 @@ static int dev_cpu_callback(struct notif +@@ -8003,7 +8003,7 @@ static int dev_cpu_callback(struct notif netif_rx_ni(skb); input_queue_head_incr(oldsd); } diff --git a/patches/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch b/patches/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch index 6658efd1395b..da834f3c5ac1 100644 --- a/patches/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch +++ b/patches/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch @@ -20,7 +20,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3084,7 +3084,11 @@ static inline int __dev_xmit_skb(struct +@@ -3085,7 +3085,11 @@ static inline int __dev_xmit_skb(struct * This permits qdisc->running owner to get the lock more * often and dequeue packets faster. */ 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 f81b8159b190..2af07430def0 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 @@ -23,7 +23,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -2409,14 +2409,53 @@ void netdev_freemem(struct net_device *d +@@ -2446,14 +2446,53 @@ void netdev_freemem(struct net_device *d void synchronize_net(void); int init_dummy_netdev(struct net_device *dev); @@ -92,7 +92,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> struct task_struct *oom_reaper_list; --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3147,8 +3147,10 @@ static void skb_update_prio(struct sk_bu +@@ -3148,8 +3148,10 @@ static void skb_update_prio(struct sk_bu #define skb_update_prio(skb) #endif @@ -103,7 +103,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /** * dev_loopback_xmit - loop back @skb -@@ -3392,8 +3394,7 @@ static int __dev_queue_xmit(struct sk_bu +@@ -3393,8 +3395,7 @@ static int __dev_queue_xmit(struct sk_bu int cpu = smp_processor_id(); /* ok because BHs are off */ if (txq->xmit_lock_owner != cpu) { @@ -113,7 +113,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> goto recursion_alert; skb = validate_xmit_skb(skb, dev); -@@ -3403,9 +3404,9 @@ static int __dev_queue_xmit(struct sk_bu +@@ -3404,9 +3405,9 @@ static int __dev_queue_xmit(struct sk_bu HARD_TX_LOCK(dev, txq, cpu); if (!netif_xmit_stopped(txq)) { diff --git a/patches/net-prevent-abba-deadlock.patch b/patches/net-prevent-abba-deadlock.patch index c15ce7815a14..72c538c3ace8 100644 --- a/patches/net-prevent-abba-deadlock.patch +++ b/patches/net-prevent-abba-deadlock.patch @@ -95,7 +95,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -2508,12 +2508,11 @@ void lock_sock_nested(struct sock *sk, i +@@ -2510,12 +2510,11 @@ void lock_sock_nested(struct sock *sk, i if (sk->sk_lock.owned) __lock_sock(sk); sk->sk_lock.owned = 1; 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 52e61ec5d79f..a6aac7538f7b 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 -@@ -5237,7 +5237,7 @@ static void net_rx_action(struct softirq +@@ -5239,7 +5239,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-use-cpu-chill.patch b/patches/net-use-cpu-chill.patch index 83fbc13cbee2..a5ff10f48b1a 100644 --- a/patches/net-use-cpu-chill.patch +++ b/patches/net-use-cpu-chill.patch @@ -23,7 +23,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #include <linux/kmod.h> #include <linux/slab.h> #include <linux/vmalloc.h> -@@ -695,7 +696,7 @@ static void prb_retire_rx_blk_timer_expi +@@ -694,7 +695,7 @@ static void prb_retire_rx_blk_timer_expi if (BLOCK_NUM_PKTS(pbd)) { while (atomic_read(&pkc->blk_fill_in_prog)) { /* Waiting for skb_copy_bits to finish... */ @@ -32,7 +32,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } } -@@ -957,7 +958,7 @@ static void prb_retire_current_block(str +@@ -956,7 +957,7 @@ static void prb_retire_current_block(str if (!(status & TP_STATUS_BLK_TMO)) { while (atomic_read(&pkc->blk_fill_in_prog)) { /* Waiting for skb_copy_bits to finish... */ diff --git a/patches/net-wireless-warn-nort.patch b/patches/net-wireless-warn-nort.patch index 17026bbe8e41..0a9eb5084c3c 100644 --- a/patches/net-wireless-warn-nort.patch +++ b/patches/net-wireless-warn-nort.patch @@ -12,7 +12,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c -@@ -4064,7 +4064,7 @@ void ieee80211_rx_napi(struct ieee80211_ +@@ -4070,7 +4070,7 @@ void ieee80211_rx_napi(struct ieee80211_ struct ieee80211_supported_band *sband; struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); diff --git a/patches/perf-make-swevent-hrtimer-irqsafe.patch b/patches/perf-make-swevent-hrtimer-irqsafe.patch index b48c5ca12832..8c65a202f2e8 100644 --- a/patches/perf-make-swevent-hrtimer-irqsafe.patch +++ b/patches/perf-make-swevent-hrtimer-irqsafe.patch @@ -58,7 +58,7 @@ Signed-off-by: Steven Rostedt <rostedt@goodmis.org> --- a/kernel/events/core.c +++ b/kernel/events/core.c -@@ -8215,6 +8215,7 @@ static void perf_swevent_init_hrtimer(st +@@ -8217,6 +8217,7 @@ static void perf_swevent_init_hrtimer(st hrtimer_init(&hwc->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); hwc->hrtimer.function = perf_swevent_hrtimer; diff --git a/patches/rt-add-rt-locks.patch b/patches/rt-add-rt-locks.patch index 0b6a6c231fef..44ef1f077daa 100644 --- a/patches/rt-add-rt-locks.patch +++ b/patches/rt-add-rt-locks.patch @@ -1502,7 +1502,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> * * See Documentation/locking/rt-mutex-design.txt for details. */ -@@ -356,6 +361,14 @@ static bool rt_mutex_cond_detect_deadloc +@@ -420,6 +425,14 @@ static bool rt_mutex_cond_detect_deadloc return debug_rt_mutex_detect_deadlock(waiter, chwalk); } @@ -1517,7 +1517,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* * Max number of times we'll walk the boosting chain: */ -@@ -662,13 +675,16 @@ static int rt_mutex_adjust_prio_chain(st +@@ -726,13 +739,16 @@ static int rt_mutex_adjust_prio_chain(st * follow here. This is the end of the chain we are walking. */ if (!rt_mutex_owner(lock)) { @@ -1536,7 +1536,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> raw_spin_unlock_irq(&lock->wait_lock); return 0; } -@@ -761,6 +777,25 @@ static int rt_mutex_adjust_prio_chain(st +@@ -825,6 +841,25 @@ static int rt_mutex_adjust_prio_chain(st return ret; } @@ -1562,7 +1562,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* * Try to take an rt-mutex * -@@ -771,8 +806,9 @@ static int rt_mutex_adjust_prio_chain(st +@@ -835,8 +870,9 @@ static int rt_mutex_adjust_prio_chain(st * @waiter: The waiter that is queued to the lock's wait tree if the * callsite called task_blocked_on_lock(), otherwise NULL */ @@ -1574,7 +1574,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> { /* * Before testing whether we can acquire @lock, we set the -@@ -809,8 +845,10 @@ static int try_to_take_rt_mutex(struct r +@@ -873,8 +909,10 @@ static int try_to_take_rt_mutex(struct r * If waiter is not the highest priority waiter of * @lock, give up. */ @@ -1586,7 +1586,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* * We can acquire the lock. Remove the waiter from the -@@ -828,14 +866,10 @@ static int try_to_take_rt_mutex(struct r +@@ -892,14 +930,10 @@ static int try_to_take_rt_mutex(struct r * not need to be dequeued. */ if (rt_mutex_has_waiters(lock)) { @@ -1604,7 +1604,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* * The current top waiter stays enqueued. We * don't have to change anything in the lock -@@ -884,6 +918,352 @@ static int try_to_take_rt_mutex(struct r +@@ -948,6 +982,352 @@ static int try_to_take_rt_mutex(struct r return 1; } @@ -1957,7 +1957,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* * Task blocks on lock. * -@@ -996,6 +1376,7 @@ static int task_blocks_on_rt_mutex(struc +@@ -1060,6 +1440,7 @@ static int task_blocks_on_rt_mutex(struc * Called with lock->wait_lock held and interrupts disabled. */ static void mark_wakeup_next_waiter(struct wake_q_head *wake_q, @@ -1965,7 +1965,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> struct rt_mutex *lock) { struct rt_mutex_waiter *waiter; -@@ -1024,7 +1405,10 @@ static void mark_wakeup_next_waiter(stru +@@ -1088,7 +1469,10 @@ static void mark_wakeup_next_waiter(stru raw_spin_unlock(¤t->pi_lock); @@ -1977,7 +1977,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } /* -@@ -1105,11 +1489,11 @@ void rt_mutex_adjust_pi(struct task_stru +@@ -1169,11 +1553,11 @@ void rt_mutex_adjust_pi(struct task_stru return; } next_lock = waiter->lock; @@ -1990,7 +1990,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> rt_mutex_adjust_prio_chain(task, RT_MUTEX_MIN_CHAINWALK, NULL, next_lock, NULL, task); } -@@ -1196,9 +1580,7 @@ rt_mutex_slowlock(struct rt_mutex *lock, +@@ -1260,9 +1644,7 @@ rt_mutex_slowlock(struct rt_mutex *lock, unsigned long flags; int ret = 0; @@ -2001,7 +2001,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* * Technically we could use raw_spin_[un]lock_irq() here, but this can -@@ -1292,7 +1674,8 @@ static inline int rt_mutex_slowtrylock(s +@@ -1356,7 +1738,8 @@ static inline int rt_mutex_slowtrylock(s * Return whether the current task needs to undo a potential priority boosting. */ static bool __sched rt_mutex_slowunlock(struct rt_mutex *lock, @@ -2011,7 +2011,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> { unsigned long flags; -@@ -1348,7 +1731,7 @@ static bool __sched rt_mutex_slowunlock( +@@ -1412,7 +1795,7 @@ static bool __sched rt_mutex_slowunlock( * * Queue the next waiter for wakeup once we release the wait_lock. */ @@ -2020,7 +2020,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> raw_spin_unlock_irqrestore(&lock->wait_lock, flags); -@@ -1405,17 +1788,20 @@ rt_mutex_fasttrylock(struct rt_mutex *lo +@@ -1469,17 +1852,20 @@ rt_mutex_fasttrylock(struct rt_mutex *lo static inline void rt_mutex_fastunlock(struct rt_mutex *lock, bool (*slowfn)(struct rt_mutex *lock, @@ -2043,7 +2043,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* Undo pi boosting if necessary: */ if (deboost) -@@ -1552,13 +1938,14 @@ EXPORT_SYMBOL_GPL(rt_mutex_unlock); +@@ -1616,13 +2002,14 @@ EXPORT_SYMBOL_GPL(rt_mutex_unlock); * required or not. */ bool __sched rt_mutex_futex_unlock(struct rt_mutex *lock, @@ -2060,7 +2060,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } /** -@@ -1591,13 +1978,12 @@ EXPORT_SYMBOL_GPL(rt_mutex_destroy); +@@ -1655,13 +2042,12 @@ EXPORT_SYMBOL_GPL(rt_mutex_destroy); void __rt_mutex_init(struct rt_mutex *lock, const char *name) { lock->owner = NULL; @@ -2075,7 +2075,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /** * rt_mutex_init_proxy_locked - initialize and lock a rt_mutex on behalf of a -@@ -1612,7 +1998,7 @@ EXPORT_SYMBOL_GPL(__rt_mutex_init); +@@ -1676,7 +2062,7 @@ EXPORT_SYMBOL_GPL(__rt_mutex_init); void rt_mutex_init_proxy_locked(struct rt_mutex *lock, struct task_struct *proxy_owner) { @@ -2084,7 +2084,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> debug_rt_mutex_proxy_lock(lock, proxy_owner); rt_mutex_set_owner(lock, proxy_owner); rt_mutex_deadlock_account_lock(lock, proxy_owner); -@@ -1774,3 +2160,25 @@ int rt_mutex_finish_proxy_lock(struct rt +@@ -1838,3 +2224,25 @@ int rt_mutex_finish_proxy_lock(struct rt return ret; } diff --git a/patches/rt-locking-Reenable-migration-accross-schedule.patch b/patches/rt-locking-Reenable-migration-accross-schedule.patch index 3180135fe07c..9b386af9fead 100644 --- a/patches/rt-locking-Reenable-migration-accross-schedule.patch +++ b/patches/rt-locking-Reenable-migration-accross-schedule.patch @@ -18,7 +18,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c -@@ -924,14 +924,19 @@ static int __try_to_take_rt_mutex(struct +@@ -988,14 +988,19 @@ static int __try_to_take_rt_mutex(struct * preemptible spin_lock functions: */ static inline void rt_spin_lock_fastlock(struct rt_mutex *lock, @@ -40,7 +40,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> } static inline int rt_spin_lock_fastunlock(struct rt_mutex *lock, -@@ -990,7 +995,8 @@ static int task_blocks_on_rt_mutex(struc +@@ -1054,7 +1059,8 @@ static int task_blocks_on_rt_mutex(struc * We store the current state under p->pi_lock in p->saved_state and * the try_to_wake_up() code handles this accordingly. */ @@ -50,7 +50,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> { struct task_struct *lock_owner, *self = current; struct rt_mutex_waiter waiter, *top_waiter; -@@ -1034,8 +1040,13 @@ static void noinline __sched rt_spin_lo +@@ -1098,8 +1104,13 @@ static void noinline __sched rt_spin_lo debug_rt_mutex_print_deadlock(&waiter); @@ -65,7 +65,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> raw_spin_lock_irqsave(&lock->wait_lock, flags); -@@ -1133,38 +1144,35 @@ static int noinline __sched rt_spin_lock +@@ -1197,38 +1208,35 @@ static int noinline __sched rt_spin_lock void __lockfunc rt_spin_lock__no_mg(spinlock_t *lock) { diff --git a/patches/rtmutex-Prevent-dequeue-vs.-unlock-race.patch b/patches/rtmutex-Prevent-dequeue-vs.-unlock-race.patch index 61cc7ba5f738..3e3631820c9e 100644 --- a/patches/rtmutex-Prevent-dequeue-vs.-unlock-race.patch +++ b/patches/rtmutex-Prevent-dequeue-vs.-unlock-race.patch @@ -85,14 +85,12 @@ Reported-by: David Daney <ddaney@caviumnetworks.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- - kernel/locking/rtmutex.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++-- + kernel/locking/rtmutex.c | 68 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 2 deletions(-) -diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c -index 1ec0f48962b3..2c49d76f96c3 100644 --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c -@@ -65,8 +65,72 @@ static inline void clear_rt_mutex_waiters(struct rt_mutex *lock) +@@ -65,8 +65,72 @@ static inline void clear_rt_mutex_waiter static void fixup_rt_mutex_waiters(struct rt_mutex *lock) { @@ -167,6 +165,3 @@ index 1ec0f48962b3..2c49d76f96c3 100644 } /* --- -2.10.2 - diff --git a/patches/rtmutex-add-a-first-shot-of-ww_mutex.patch b/patches/rtmutex-add-a-first-shot-of-ww_mutex.patch index ce71dfb5aa60..56afc2458734 100644 --- a/patches/rtmutex-add-a-first-shot-of-ww_mutex.patch +++ b/patches/rtmutex-add-a-first-shot-of-ww_mutex.patch @@ -35,7 +35,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> #include "rtmutex_common.h" -@@ -1296,6 +1297,40 @@ EXPORT_SYMBOL(__rt_spin_lock_init); +@@ -1360,6 +1361,40 @@ EXPORT_SYMBOL(__rt_spin_lock_init); #endif /* PREEMPT_RT_FULL */ @@ -76,7 +76,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> static inline int try_to_take_rt_mutex(struct rt_mutex *lock, struct task_struct *task, struct rt_mutex_waiter *waiter) -@@ -1550,7 +1585,8 @@ void rt_mutex_adjust_pi(struct task_stru +@@ -1614,7 +1649,8 @@ void rt_mutex_adjust_pi(struct task_stru static int __sched __rt_mutex_slowlock(struct rt_mutex *lock, int state, struct hrtimer_sleeper *timeout, @@ -86,7 +86,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> { int ret = 0; -@@ -1573,6 +1609,12 @@ static int __sched +@@ -1637,6 +1673,12 @@ static int __sched break; } @@ -99,7 +99,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> raw_spin_unlock_irq(&lock->wait_lock); debug_rt_mutex_print_deadlock(waiter); -@@ -1607,13 +1649,90 @@ static void rt_mutex_handle_deadlock(int +@@ -1671,13 +1713,90 @@ static void rt_mutex_handle_deadlock(int } } @@ -191,7 +191,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> { struct rt_mutex_waiter waiter; unsigned long flags; -@@ -1633,6 +1752,8 @@ rt_mutex_slowlock(struct rt_mutex *lock, +@@ -1697,6 +1816,8 @@ rt_mutex_slowlock(struct rt_mutex *lock, /* Try to acquire the lock again: */ if (try_to_take_rt_mutex(lock, current, NULL)) { @@ -200,7 +200,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> raw_spin_unlock_irqrestore(&lock->wait_lock, flags); return 0; } -@@ -1647,13 +1768,23 @@ rt_mutex_slowlock(struct rt_mutex *lock, +@@ -1711,13 +1832,23 @@ rt_mutex_slowlock(struct rt_mutex *lock, if (likely(!ret)) /* sleep on the mutex */ @@ -226,7 +226,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> } /* -@@ -1786,31 +1917,36 @@ static bool __sched rt_mutex_slowunlock( +@@ -1850,31 +1981,36 @@ static bool __sched rt_mutex_slowunlock( */ static inline int rt_mutex_fastlock(struct rt_mutex *lock, int state, @@ -267,7 +267,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> } static inline int -@@ -1857,7 +1993,7 @@ void __sched rt_mutex_lock(struct rt_mut +@@ -1921,7 +2057,7 @@ void __sched rt_mutex_lock(struct rt_mut { might_sleep(); @@ -276,7 +276,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> } EXPORT_SYMBOL_GPL(rt_mutex_lock); -@@ -1874,7 +2010,7 @@ int __sched rt_mutex_lock_interruptible( +@@ -1938,7 +2074,7 @@ int __sched rt_mutex_lock_interruptible( { might_sleep(); @@ -285,7 +285,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> } EXPORT_SYMBOL_GPL(rt_mutex_lock_interruptible); -@@ -1887,7 +2023,7 @@ int rt_mutex_timed_futex_lock(struct rt_ +@@ -1951,7 +2087,7 @@ int rt_mutex_timed_futex_lock(struct rt_ might_sleep(); return rt_mutex_timed_fastlock(lock, TASK_INTERRUPTIBLE, timeout, @@ -294,7 +294,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> rt_mutex_slowlock); } -@@ -1906,7 +2042,7 @@ int __sched rt_mutex_lock_killable(struc +@@ -1970,7 +2106,7 @@ int __sched rt_mutex_lock_killable(struc { might_sleep(); @@ -303,7 +303,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> } EXPORT_SYMBOL_GPL(rt_mutex_lock_killable); -@@ -1930,6 +2066,7 @@ rt_mutex_timed_lock(struct rt_mutex *loc +@@ -1994,6 +2130,7 @@ rt_mutex_timed_lock(struct rt_mutex *loc return rt_mutex_timed_fastlock(lock, TASK_INTERRUPTIBLE, timeout, RT_MUTEX_MIN_CHAINWALK, @@ -311,7 +311,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> rt_mutex_slowlock); } EXPORT_SYMBOL_GPL(rt_mutex_timed_lock); -@@ -2184,7 +2321,7 @@ int rt_mutex_finish_proxy_lock(struct rt +@@ -2248,7 +2385,7 @@ int rt_mutex_finish_proxy_lock(struct rt set_current_state(TASK_INTERRUPTIBLE); /* sleep on the mutex */ @@ -320,7 +320,7 @@ Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> if (unlikely(ret)) remove_waiter(lock, waiter); -@@ -2200,24 +2337,88 @@ int rt_mutex_finish_proxy_lock(struct rt +@@ -2264,24 +2401,88 @@ int rt_mutex_finish_proxy_lock(struct rt return ret; } diff --git a/patches/rtmutex-lock-killable.patch b/patches/rtmutex-lock-killable.patch index aa9a5956e191..ac46c07b973b 100644 --- a/patches/rtmutex-lock-killable.patch +++ b/patches/rtmutex-lock-killable.patch @@ -23,7 +23,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c -@@ -1467,6 +1467,25 @@ int rt_mutex_timed_futex_lock(struct rt_ +@@ -1531,6 +1531,25 @@ int rt_mutex_timed_futex_lock(struct rt_ } /** diff --git a/patches/rtmutex-trylock-is-okay-on-RT.patch b/patches/rtmutex-trylock-is-okay-on-RT.patch index e7dc522b1140..1aa6206dbc90 100644 --- a/patches/rtmutex-trylock-is-okay-on-RT.patch +++ b/patches/rtmutex-trylock-is-okay-on-RT.patch @@ -13,7 +13,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c -@@ -1478,7 +1478,11 @@ EXPORT_SYMBOL_GPL(rt_mutex_timed_lock); +@@ -1542,7 +1542,11 @@ EXPORT_SYMBOL_GPL(rt_mutex_timed_lock); */ int __sched rt_mutex_trylock(struct rt_mutex *lock) { diff --git a/patches/skbufhead-raw-lock.patch b/patches/skbufhead-raw-lock.patch index 4163d9e2445f..18cc08162b1d 100644 --- a/patches/skbufhead-raw-lock.patch +++ b/patches/skbufhead-raw-lock.patch @@ -15,7 +15,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -2794,6 +2794,7 @@ struct softnet_data { +@@ -2831,6 +2831,7 @@ struct softnet_data { unsigned int dropped; struct sk_buff_head input_pkt_queue; struct napi_struct backlog; @@ -65,7 +65,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #endif } -@@ -4322,7 +4322,7 @@ static void flush_backlog(void *arg) +@@ -4323,7 +4323,7 @@ static void flush_backlog(void *arg) skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) { if (skb->dev == dev) { __skb_unlink(skb, &sd->input_pkt_queue); @@ -74,7 +74,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> input_queue_head_incr(sd); } } -@@ -4331,10 +4331,13 @@ static void flush_backlog(void *arg) +@@ -4332,10 +4332,13 @@ static void flush_backlog(void *arg) skb_queue_walk_safe(&sd->process_queue, skb, tmp) { if (skb->dev == dev) { __skb_unlink(skb, &sd->process_queue); @@ -89,7 +89,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } static int napi_gro_complete(struct sk_buff *skb) -@@ -7992,6 +7995,9 @@ static int dev_cpu_callback(struct notif +@@ -8004,6 +8007,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; } -@@ -8293,8 +8299,9 @@ static int __init net_dev_init(void) +@@ -8305,8 +8311,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/softirq-preempt-fix-3-re.patch b/patches/softirq-preempt-fix-3-re.patch index 888f3d79e9a2..e5f2e99f5a85 100644 --- a/patches/softirq-preempt-fix-3-re.patch +++ b/patches/softirq-preempt-fix-3-re.patch @@ -127,7 +127,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } EXPORT_SYMBOL(__dev_kfree_skb_irq); -@@ -3777,6 +3779,7 @@ static int enqueue_to_backlog(struct sk_ +@@ -3778,6 +3780,7 @@ static int enqueue_to_backlog(struct sk_ rps_unlock(sd); local_irq_restore(flags); @@ -135,7 +135,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> atomic_long_inc(&skb->dev->rx_dropped); kfree_skb(skb); -@@ -4795,6 +4798,7 @@ static void net_rps_action_and_irq_enabl +@@ -4797,6 +4800,7 @@ static void net_rps_action_and_irq_enabl sd->rps_ipi_list = NULL; local_irq_enable(); @@ -143,7 +143,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* Send pending IPI's to kick RPS processing on remote cpus. */ while (remsd) { -@@ -4808,6 +4812,7 @@ static void net_rps_action_and_irq_enabl +@@ -4810,6 +4814,7 @@ static void net_rps_action_and_irq_enabl } else #endif local_irq_enable(); @@ -151,7 +151,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } static bool sd_has_rps_ipi_waiting(struct softnet_data *sd) -@@ -4889,6 +4894,7 @@ void __napi_schedule(struct napi_struct +@@ -4891,6 +4896,7 @@ void __napi_schedule(struct napi_struct local_irq_save(flags); ____napi_schedule(this_cpu_ptr(&softnet_data), n); local_irq_restore(flags); @@ -159,7 +159,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } EXPORT_SYMBOL(__napi_schedule); -@@ -7977,6 +7983,7 @@ static int dev_cpu_callback(struct notif +@@ -7989,6 +7995,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 1fd26eea5e18..5325d64ba01b 100644 --- a/patches/softirq-split-locks.patch +++ b/patches/softirq-split-locks.patch @@ -803,7 +803,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3848,11 +3848,9 @@ int netif_rx_ni(struct sk_buff *skb) +@@ -3849,11 +3849,9 @@ int netif_rx_ni(struct sk_buff *skb) trace_netif_rx_ni_entry(skb); diff --git a/patches/stomp-machine-create-lg_global_trylock_relax-primiti.patch b/patches/stomp-machine-create-lg_global_trylock_relax-primiti.patch index 6d207a440090..ce3ee6fea457 100644 --- a/patches/stomp-machine-create-lg_global_trylock_relax-primiti.patch +++ b/patches/stomp-machine-create-lg_global_trylock_relax-primiti.patch @@ -72,7 +72,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +#endif --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c -@@ -1215,6 +1215,11 @@ void __lockfunc rt_spin_unlock_wait(spin +@@ -1279,6 +1279,11 @@ void __lockfunc rt_spin_unlock_wait(spin } EXPORT_SYMBOL(rt_spin_unlock_wait); diff --git a/patches/timer-delay-waking-softirqs-from-the-jiffy-tick.patch b/patches/timer-delay-waking-softirqs-from-the-jiffy-tick.patch index eb017a0764b4..ff005701de30 100644 --- a/patches/timer-delay-waking-softirqs-from-the-jiffy-tick.patch +++ b/patches/timer-delay-waking-softirqs-from-the-jiffy-tick.patch @@ -58,7 +58,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/kernel/time/timer.c +++ b/kernel/time/timer.c -@@ -1627,13 +1627,13 @@ void update_process_times(int user_tick) +@@ -1641,13 +1641,13 @@ void update_process_times(int user_tick) /* Note: this timer irq context must be accounted for as well. */ account_process_tick(p, user_tick); diff --git a/patches/timer-make-the-base-lock-raw.patch b/patches/timer-make-the-base-lock-raw.patch index d5dd95ab9efc..e1b4d57816dc 100644 --- a/patches/timer-make-the-base-lock-raw.patch +++ b/patches/timer-make-the-base-lock-raw.patch @@ -22,7 +22,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> struct timer_list *running_timer; unsigned long clk; unsigned long next_expiry; -@@ -947,10 +947,10 @@ static struct timer_base *lock_timer_bas +@@ -948,10 +948,10 @@ static struct timer_base *lock_timer_bas if (!(tf & TIMER_MIGRATING)) { base = get_timer_base(tf); @@ -35,7 +35,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> } cpu_relax(); } -@@ -1017,9 +1017,9 @@ static inline int +@@ -1023,9 +1023,9 @@ static inline int /* See the comment in lock_timer_base() */ timer->flags |= TIMER_MIGRATING; @@ -47,7 +47,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> WRITE_ONCE(timer->flags, (timer->flags & ~TIMER_BASEMASK) | base->cpu); } -@@ -1040,7 +1040,7 @@ static inline int +@@ -1050,7 +1050,7 @@ static inline int } out_unlock: @@ -56,7 +56,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> return ret; } -@@ -1134,16 +1134,16 @@ void add_timer_on(struct timer_list *tim +@@ -1144,16 +1144,16 @@ void add_timer_on(struct timer_list *tim if (base != new_base) { timer->flags |= TIMER_MIGRATING; @@ -76,7 +76,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> } EXPORT_SYMBOL_GPL(add_timer_on); -@@ -1170,7 +1170,7 @@ int del_timer(struct timer_list *timer) +@@ -1180,7 +1180,7 @@ int del_timer(struct timer_list *timer) if (timer_pending(timer)) { base = lock_timer_base(timer, &flags); ret = detach_if_pending(timer, base, true); @@ -85,7 +85,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> } return ret; -@@ -1198,7 +1198,7 @@ int try_to_del_timer_sync(struct timer_l +@@ -1208,7 +1208,7 @@ int try_to_del_timer_sync(struct timer_l timer_stats_timer_clear_start_info(timer); ret = detach_if_pending(timer, base, true); } @@ -94,7 +94,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> return ret; } -@@ -1330,13 +1330,13 @@ static void expire_timers(struct timer_b +@@ -1340,13 +1340,13 @@ static void expire_timers(struct timer_b data = timer->data; if (timer->flags & TIMER_IRQSAFE) { @@ -112,7 +112,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> } } } -@@ -1505,7 +1505,7 @@ u64 get_next_timer_interrupt(unsigned lo +@@ -1515,7 +1515,7 @@ u64 get_next_timer_interrupt(unsigned lo if (cpu_is_offline(smp_processor_id())) return expires; @@ -121,7 +121,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> nextevt = __next_timer_interrupt(base); is_max_delta = (nextevt == base->clk + NEXT_TIMER_MAX_DELTA); base->next_expiry = nextevt; -@@ -1529,7 +1529,7 @@ u64 get_next_timer_interrupt(unsigned lo +@@ -1543,7 +1543,7 @@ u64 get_next_timer_interrupt(unsigned lo if ((expires - basem) > TICK_NSEC) base->is_idle = true; } @@ -130,7 +130,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> return cmp_next_hrtimer_event(basem, expires); } -@@ -1616,7 +1616,7 @@ static inline void __run_timers(struct t +@@ -1630,7 +1630,7 @@ static inline void __run_timers(struct t if (!time_after_eq(jiffies, base->clk)) return; @@ -139,7 +139,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> while (time_after_eq(jiffies, base->clk)) { -@@ -1627,7 +1627,7 @@ static inline void __run_timers(struct t +@@ -1641,7 +1641,7 @@ static inline void __run_timers(struct t expire_timers(base, heads + levels); } base->running_timer = NULL; @@ -148,7 +148,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> } /* -@@ -1822,16 +1822,16 @@ int timers_dead_cpu(unsigned int cpu) +@@ -1836,16 +1836,16 @@ int timers_dead_cpu(unsigned int cpu) * The caller is globally serialized and nobody else * takes two locks at once, deadlock is not possible. */ @@ -169,7 +169,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> put_cpu_ptr(&timer_bases); } return 0; -@@ -1847,7 +1847,7 @@ static void __init init_timer_cpu(int cp +@@ -1861,7 +1861,7 @@ static void __init init_timer_cpu(int cp for (i = 0; i < NR_BASES; i++) { base = per_cpu_ptr(&timer_bases[i], cpu); base->cpu = cpu; diff --git a/patches/timers-prepare-for-full-preemption.patch b/patches/timers-prepare-for-full-preemption.patch index e91c8284943b..7d76c6af478f 100644 --- a/patches/timers-prepare-for-full-preemption.patch +++ b/patches/timers-prepare-for-full-preemption.patch @@ -66,7 +66,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> unsigned long clk; unsigned long next_expiry; unsigned int cpu; -@@ -1147,6 +1150,33 @@ void add_timer_on(struct timer_list *tim +@@ -1157,6 +1160,33 @@ void add_timer_on(struct timer_list *tim } EXPORT_SYMBOL_GPL(add_timer_on); @@ -100,7 +100,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /** * del_timer - deactive a timer. * @timer: the timer to be deactivated -@@ -1204,7 +1234,7 @@ int try_to_del_timer_sync(struct timer_l +@@ -1214,7 +1244,7 @@ int try_to_del_timer_sync(struct timer_l } EXPORT_SYMBOL(try_to_del_timer_sync); @@ -109,7 +109,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /** * del_timer_sync - deactivate a timer and wait for the handler to finish. * @timer: the timer to be deactivated -@@ -1264,7 +1294,7 @@ int del_timer_sync(struct timer_list *ti +@@ -1274,7 +1304,7 @@ int del_timer_sync(struct timer_list *ti int ret = try_to_del_timer_sync(timer); if (ret >= 0) return ret; @@ -118,7 +118,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } } EXPORT_SYMBOL(del_timer_sync); -@@ -1329,13 +1359,16 @@ static void expire_timers(struct timer_b +@@ -1339,13 +1369,16 @@ static void expire_timers(struct timer_b fn = timer->function; data = timer->data; @@ -136,7 +136,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> raw_spin_lock_irq(&base->lock); } } -@@ -1626,8 +1659,8 @@ static inline void __run_timers(struct t +@@ -1640,8 +1673,8 @@ static inline void __run_timers(struct t while (levels--) expire_timers(base, heads + levels); } @@ -146,7 +146,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } /* -@@ -1849,6 +1882,9 @@ static void __init init_timer_cpu(int cp +@@ -1863,6 +1896,9 @@ static void __init init_timer_cpu(int cp base->cpu = cpu; raw_spin_lock_init(&base->lock); base->clk = jiffies; diff --git a/patches/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch b/patches/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch index ffe88806eb1d..ae3b3019cb8d 100644 --- a/patches/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch +++ b/patches/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch @@ -37,7 +37,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3803,7 +3803,7 @@ static int netif_rx_internal(struct sk_b +@@ -3804,7 +3804,7 @@ static int netif_rx_internal(struct sk_b struct rps_dev_flow voidflow, *rflow = &voidflow; int cpu; @@ -46,7 +46,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> rcu_read_lock(); cpu = get_rps_cpu(skb->dev, skb, &rflow); -@@ -3813,13 +3813,13 @@ static int netif_rx_internal(struct sk_b +@@ -3814,13 +3814,13 @@ static int netif_rx_internal(struct sk_b ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail); rcu_read_unlock(); diff --git a/patches/x86-kvm-require-const-tsc-for-rt.patch b/patches/x86-kvm-require-const-tsc-for-rt.patch index c00fe97ec00a..0e21bf7cc567 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 -@@ -5865,6 +5865,13 @@ int kvm_arch_init(void *opaque) +@@ -5877,6 +5877,13 @@ int kvm_arch_init(void *opaque) goto out; } |