summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2016-12-12 12:35:47 +0100
committerSebastian Andrzej Siewior <bigeasy@linutronix.de>2016-12-12 12:35:47 +0100
commitc297bb37b26a1d9f59f5ce2978279e990e1428c5 (patch)
tree94f13c4d71e20e54d9f35560c0614ae3ccdc206e
parent02d978ea9304bb96a3c0d5984c0903e4dd6304f6 (diff)
download4.9-rt-patches-c297bb37b26a1d9f59f5ce2978279e990e1428c5.tar.gz
[ANNOUNCE] v4.8.14-rt8
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-rw-r--r--patches/arm-kprobe-replace-patch_lock-to-raw-lock.patch11
-rw-r--r--patches/completion-use-simple-wait-queues.patch2
-rw-r--r--patches/futex-requeue-pi-fix.patch4
-rw-r--r--patches/i915-bogus-warning-from-i915-when-running-on-PREEMPT.patch2
-rw-r--r--patches/infiniband-mellanox-ib-use-nort-irq.patch4
-rw-r--r--patches/iommu-amd--Use-WARN_ON_NORT.patch4
-rw-r--r--patches/iommu-vt-d-don-t-disable-preemption-while-accessing-.patch4
-rw-r--r--patches/irqwork-Move-irq-safe-work-to-irq-context.patch4
-rw-r--r--patches/irqwork-push_most_work_into_softirq_context.patch4
-rw-r--r--patches/kernel-futex-don-t-deboost-too-early.patch10
-rw-r--r--patches/latency-hist.patch2
-rw-r--r--patches/localversion.patch2
-rw-r--r--patches/mm-convert-swap-to-percpu-locked.patch2
-rw-r--r--patches/mm-memcontrol-do_not_disable_irq.patch10
-rw-r--r--patches/mm-memcontrol-mem_cgroup_migrate-replace-another-loc.patch2
-rw-r--r--patches/mm-page_alloc-rt-friendly-per-cpu-pages.patch6
-rw-r--r--patches/mm-workingset-do-not-protect-workingset_shadow_nodes.patch2
-rw-r--r--patches/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch2
-rw-r--r--patches/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch2
-rw-r--r--patches/net-move-xmit_recursion-to-per-task-variable-on-RT.patch8
-rw-r--r--patches/net-prevent-abba-deadlock.patch2
-rw-r--r--patches/net-provide-a-way-to-delegate-processing-a-softirq-t.patch2
-rw-r--r--patches/net-use-cpu-chill.patch4
-rw-r--r--patches/net-wireless-warn-nort.patch2
-rw-r--r--patches/perf-make-swevent-hrtimer-irqsafe.patch2
-rw-r--r--patches/rt-add-rt-locks.patch36
-rw-r--r--patches/rt-locking-Reenable-migration-accross-schedule.patch8
-rw-r--r--patches/rtmutex-Prevent-dequeue-vs.-unlock-race.patch9
-rw-r--r--patches/rtmutex-add-a-first-shot-of-ww_mutex.patch28
-rw-r--r--patches/rtmutex-lock-killable.patch2
-rw-r--r--patches/rtmutex-trylock-is-okay-on-RT.patch2
-rw-r--r--patches/skbufhead-raw-lock.patch10
-rw-r--r--patches/softirq-preempt-fix-3-re.patch10
-rw-r--r--patches/softirq-split-locks.patch2
-rw-r--r--patches/stomp-machine-create-lg_global_trylock_relax-primiti.patch2
-rw-r--r--patches/timer-delay-waking-softirqs-from-the-jiffy-tick.patch2
-rw-r--r--patches/timer-make-the-base-lock-raw.patch26
-rw-r--r--patches/timers-prepare-for-full-preemption.patch12
-rw-r--r--patches/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch4
-rw-r--r--patches/x86-kvm-require-const-tsc-for-rt.patch2
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 e324787558738..fc9a5257bf3d6 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 553b844a8b30c..2d5eee0c37920 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 3a40911cbc617..8948a2e700b40 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 0b798376719d6..fc84a9d5ea5ba 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 327f8669e68d6..db9e31d3dea33 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 c813995349cdc..25a55c98d3bb6 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 899d0a382eec7..407649f6db273 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 931ee1d4d3517..f2e9b6f593712 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 b49f364d2c5b0..5b84fd6e0ee28 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 845cacf21bafe..33f077248a9c8 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 d9bd5abd622a0..169c81d1f07b2 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 bbb08330835de..68c7b973cc487 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 50e81be9f092e..899ded4eb95f7 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 72808f8ad82b3..258f8a0694f7d 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 a0dbef2aee64e..e18ec7c3e1067 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 d28885b0a0307..80cadd26e3191 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 755fcf546c8db..363450e4fc4da 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 36aad344c8b95..3cbcac6afe7d1 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 6658efd1395b3..da834f3c5ac14 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 f81b8159b1909..2af07430def0e 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 c15ce7815a141..72c538c3ace84 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 52e61ec5d79f0..a6aac7538f7be 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 83fbc13cbee23..a5ff10f48b1a4 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 17026bbe8e419..0a9eb5084c3ce 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 b48c5ca128320..8c65a202f2e81 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 0b6a6c231fef3..44ef1f077daab 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(&current->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 3180135fe07c5..9b386af9fead5 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 61cc7ba5f738c..3e3631820c9ed 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 ce71dfb5aa602..56afc24587345 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 aa9a5956e1917..ac46c07b973b5 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 e7dc522b1140d..1aa6206dbc900 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 4163d9e2445f3..18cc08162b1d2 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 888f3d79e9a23..e5f2e99f5a857 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 1fd26eea5e189..5325d64ba01b0 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 6d207a4400902..ce3ee6fea457b 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 eb017a0764b40..ff005701de30a 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 d5dd95ab9efca..e1b4d57816dca 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 e91c8284943b8..7d76c6af478ff 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 ffe88806eb1d4..ae3b3019cb8d9 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 c00fe97ec00a4..0e21bf7cc5677 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;
}