summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--patches/0001-jbd2-Simplify-journal_unmap_buffer.patch6
-rw-r--r--patches/0003-jbd2-Move-dropping-of-jh-reference-out-of-un-re-fili.patch16
-rw-r--r--patches/0003-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch24
-rw-r--r--patches/0004-jbd2-Drop-unnecessary-branch-from-jbd2_journal_forge.patch2
-rw-r--r--patches/0004-mm-SLUB-delay-giving-back-empty-slubs-to-IRQ-enabled.patch12
-rw-r--r--patches/0005-jbd2-Don-t-call-__bforget-unnecessarily.patch8
-rw-r--r--patches/0006-jbd2-Make-state-lock-a-spinlock.patch60
-rw-r--r--patches/0011-printk_safe-remove-printk-safe-code.patch4
-rw-r--r--patches/0020-serial-8250-implement-write_atomic.patch30
-rw-r--r--patches/Use-CONFIG_PREEMPTION.patch10
-rw-r--r--patches/add_migrate_disable.patch8
-rw-r--r--patches/drm-i915-Don-t-disable-interrupts-for-intel_engine_b.patch2
-rw-r--r--patches/ftrace-migrate-disable-tracing.patch4
-rw-r--r--patches/genirq-update-irq_set_irqchip_state-documentation.patch2
-rw-r--r--patches/localversion.patch2
-rw-r--r--patches/lockdep-disable-self-test.patch2
-rw-r--r--patches/mm-Warn-on-memory-allocation-in-non-preemptible-cont.patch42
-rw-r--r--patches/mm-disable-sloub-rt.patch4
-rw-r--r--patches/mm-enable-slub.patch4
-rw-r--r--patches/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch4
-rw-r--r--patches/mm-memcontrol-Move-misplaced-local_unlock_irqrestore.patch2
-rw-r--r--patches/mm-memcontrol-do_not_disable_irq.patch14
-rw-r--r--patches/net-core-use-local_bh_disable-in-netif_rx_ni.patch2
-rw-r--r--patches/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch2
-rw-r--r--patches/net-make-devnet_rename_seq-a-mutex.patch12
-rw-r--r--patches/preempt-lazy-support.patch28
-rw-r--r--patches/random-make-it-work-on-rt.patch2
-rw-r--r--patches/rtmutex-wire-up-RT-s-locking.patch3
-rw-r--r--patches/sched-core-migrate_enable-must-access-takedown_cpu_t.patch2
-rw-r--r--patches/sched-disable-rt-group-sched-on-rt.patch2
-rw-r--r--patches/sched-might-sleep-do-not-account-rcu-depth.patch2
-rw-r--r--patches/sched-migrate_enable-Remove-__schedule-call.patch2
-rw-r--r--patches/sched-migrate_enable-Use-per-cpu-cpu_stop_work.patch4
-rw-r--r--patches/sched-migrate_enable-Use-stop_one_cpu_nowait.patch4
-rw-r--r--patches/sched-mmdrop-delayed.patch6
-rw-r--r--patches/serial-8250-only-atomic-lock-for-console.patch18
-rw-r--r--patches/serial-8250-remove-that-trylock-in-serial8250_consol.patch4
-rw-r--r--patches/series2
-rw-r--r--patches/skbufhead-raw-lock.patch18
-rw-r--r--patches/slub-disable-SLUB_CPU_PARTIAL.patch2
-rw-r--r--patches/softirq-preempt-fix-3-re.patch12
-rw-r--r--patches/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch4
42 files changed, 218 insertions, 175 deletions
diff --git a/patches/0001-jbd2-Simplify-journal_unmap_buffer.patch b/patches/0001-jbd2-Simplify-journal_unmap_buffer.patch
index 617056834f88..b4c4a38bbcf1 100644
--- a/patches/0001-jbd2-Simplify-journal_unmap_buffer.patch
+++ b/patches/0001-jbd2-Simplify-journal_unmap_buffer.patch
@@ -26,7 +26,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/fs/jbd2/transaction.c
+++ b/fs/jbd2/transaction.c
-@@ -2199,7 +2199,8 @@ static int journal_unmap_buffer(journal_
+@@ -2203,7 +2203,8 @@ static int journal_unmap_buffer(journal_
* holding the page lock. --sct
*/
@@ -36,7 +36,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
goto zap_buffer_unlocked;
/* OK, we have data buffer in journaled mode */
-@@ -2207,10 +2208,6 @@ static int journal_unmap_buffer(journal_
+@@ -2211,10 +2212,6 @@ static int journal_unmap_buffer(journal_
jbd_lock_bh_state(bh);
spin_lock(&journal->j_list_lock);
@@ -47,7 +47,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* We cannot remove the buffer from checkpoint lists until the
* transaction adding inode to orphan list (let's call it T)
-@@ -2334,7 +2331,6 @@ static int journal_unmap_buffer(journal_
+@@ -2338,7 +2335,6 @@ static int journal_unmap_buffer(journal_
*/
jh->b_modified = 0;
jbd2_journal_put_journal_head(jh);
diff --git a/patches/0003-jbd2-Move-dropping-of-jh-reference-out-of-un-re-fili.patch b/patches/0003-jbd2-Move-dropping-of-jh-reference-out-of-un-re-fili.patch
index 5eebfdb1a0b2..6464bbb1170d 100644
--- a/patches/0003-jbd2-Move-dropping-of-jh-reference-out-of-un-re-fili.patch
+++ b/patches/0003-jbd2-Move-dropping-of-jh-reference-out-of-un-re-fili.patch
@@ -42,7 +42,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
else
--- a/fs/jbd2/transaction.c
+++ b/fs/jbd2/transaction.c
-@@ -1598,6 +1598,7 @@ int jbd2_journal_forget (handle_t *handl
+@@ -1602,6 +1602,7 @@ int jbd2_journal_forget (handle_t *handl
__jbd2_journal_file_buffer(jh, transaction, BJ_Forget);
} else {
__jbd2_journal_unfile_buffer(jh);
@@ -50,7 +50,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (!buffer_jbd(bh)) {
spin_unlock(&journal->j_list_lock);
goto not_jbd;
-@@ -1971,17 +1972,15 @@ static void __jbd2_journal_temp_unlink_b
+@@ -1975,17 +1976,15 @@ static void __jbd2_journal_temp_unlink_b
}
/*
@@ -70,7 +70,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
void jbd2_journal_unfile_buffer(journal_t *journal, struct journal_head *jh)
-@@ -1995,6 +1994,7 @@ void jbd2_journal_unfile_buffer(journal_
+@@ -1999,6 +1998,7 @@ void jbd2_journal_unfile_buffer(journal_
__jbd2_journal_unfile_buffer(jh);
spin_unlock(&journal->j_list_lock);
jbd_unlock_bh_state(bh);
@@ -78,7 +78,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
__brelse(bh);
}
-@@ -2133,6 +2133,7 @@ static int __dispose_buffer(struct journ
+@@ -2137,6 +2137,7 @@ static int __dispose_buffer(struct journ
} else {
JBUFFER_TRACE(jh, "on running transaction");
__jbd2_journal_unfile_buffer(jh);
@@ -86,7 +86,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
return may_free;
}
-@@ -2498,9 +2499,11 @@ void jbd2_journal_file_buffer(struct jou
+@@ -2502,9 +2503,11 @@ void jbd2_journal_file_buffer(struct jou
* Called under j_list_lock
* Called under jbd_lock_bh_state(jh2bh(jh))
*
@@ -100,7 +100,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
{
int was_dirty, jlist;
struct buffer_head *bh = jh2bh(jh);
-@@ -2512,7 +2515,7 @@ void __jbd2_journal_refile_buffer(struct
+@@ -2516,7 +2519,7 @@ void __jbd2_journal_refile_buffer(struct
/* If the buffer is now unused, just drop it. */
if (jh->b_next_transaction == NULL) {
__jbd2_journal_unfile_buffer(jh);
@@ -109,7 +109,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
/*
-@@ -2540,6 +2543,7 @@ void __jbd2_journal_refile_buffer(struct
+@@ -2544,6 +2547,7 @@ void __jbd2_journal_refile_buffer(struct
if (was_dirty)
set_buffer_jbddirty(bh);
@@ -117,7 +117,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
/*
-@@ -2551,15 +2555,18 @@ void __jbd2_journal_refile_buffer(struct
+@@ -2555,15 +2559,18 @@ void __jbd2_journal_refile_buffer(struct
void jbd2_journal_refile_buffer(journal_t *journal, struct journal_head *jh)
{
struct buffer_head *bh = jh2bh(jh);
diff --git a/patches/0003-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch b/patches/0003-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch
index aa5ae3a17236..74a8ba60bbae 100644
--- a/patches/0003-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch
+++ b/patches/0003-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch
@@ -476,7 +476,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return x;
}
#endif /* CONFIG_SLUB_DEBUG || CONFIG_SYSFS */
-@@ -2845,7 +2845,7 @@ static void __slab_free(struct kmem_cach
+@@ -2848,7 +2848,7 @@ static void __slab_free(struct kmem_cach
do {
if (unlikely(n)) {
@@ -485,7 +485,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
n = NULL;
}
prior = page->freelist;
-@@ -2877,7 +2877,7 @@ static void __slab_free(struct kmem_cach
+@@ -2880,7 +2880,7 @@ static void __slab_free(struct kmem_cach
* Otherwise the list_lock will synchronize with
* other processors updating the list of slabs.
*/
@@ -494,7 +494,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
}
-@@ -2918,7 +2918,7 @@ static void __slab_free(struct kmem_cach
+@@ -2921,7 +2921,7 @@ static void __slab_free(struct kmem_cach
add_partial(n, page, DEACTIVATE_TO_TAIL);
stat(s, FREE_ADD_PARTIAL);
}
@@ -503,7 +503,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return;
slab_empty:
-@@ -2933,7 +2933,7 @@ static void __slab_free(struct kmem_cach
+@@ -2936,7 +2936,7 @@ static void __slab_free(struct kmem_cach
remove_full(s, n, page);
}
@@ -512,7 +512,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
stat(s, FREE_SLAB);
discard_slab(s, page);
}
-@@ -3323,7 +3323,7 @@ static void
+@@ -3329,7 +3329,7 @@ static void
init_kmem_cache_node(struct kmem_cache_node *n)
{
n->nr_partial = 0;
@@ -521,7 +521,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
INIT_LIST_HEAD(&n->partial);
#ifdef CONFIG_SLUB_DEBUG
atomic_long_set(&n->nr_slabs, 0);
-@@ -3704,7 +3704,7 @@ static void free_partial(struct kmem_cac
+@@ -3710,7 +3710,7 @@ static void free_partial(struct kmem_cac
struct page *page, *h;
BUG_ON(irqs_disabled());
@@ -530,7 +530,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
list_for_each_entry_safe(page, h, &n->partial, slab_list) {
if (!page->inuse) {
remove_partial(n, page);
-@@ -3714,7 +3714,7 @@ static void free_partial(struct kmem_cac
+@@ -3720,7 +3720,7 @@ static void free_partial(struct kmem_cac
"Objects remaining in %s on __kmem_cache_shutdown()");
}
}
@@ -539,7 +539,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
list_for_each_entry_safe(page, h, &discard, slab_list)
discard_slab(s, page);
-@@ -3986,7 +3986,7 @@ int __kmem_cache_shrink(struct kmem_cach
+@@ -3992,7 +3992,7 @@ int __kmem_cache_shrink(struct kmem_cach
for (i = 0; i < SHRINK_PROMOTE_MAX; i++)
INIT_LIST_HEAD(promote + i);
@@ -548,7 +548,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* Build lists of slabs to discard or promote.
-@@ -4017,7 +4017,7 @@ int __kmem_cache_shrink(struct kmem_cach
+@@ -4023,7 +4023,7 @@ int __kmem_cache_shrink(struct kmem_cach
for (i = SHRINK_PROMOTE_MAX - 1; i >= 0; i--)
list_splice(promote + i, &n->partial);
@@ -557,7 +557,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/* Release empty slabs */
list_for_each_entry_safe(page, t, &discard, slab_list)
-@@ -4425,7 +4425,7 @@ static int validate_slab_node(struct kme
+@@ -4431,7 +4431,7 @@ static int validate_slab_node(struct kme
struct page *page;
unsigned long flags;
@@ -566,7 +566,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
list_for_each_entry(page, &n->partial, slab_list) {
validate_slab_slab(s, page, map);
-@@ -4447,7 +4447,7 @@ static int validate_slab_node(struct kme
+@@ -4453,7 +4453,7 @@ static int validate_slab_node(struct kme
s->name, count, atomic_long_read(&n->nr_slabs));
out:
@@ -575,7 +575,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return count;
}
-@@ -4633,12 +4633,12 @@ static int list_locations(struct kmem_ca
+@@ -4639,12 +4639,12 @@ static int list_locations(struct kmem_ca
if (!atomic_long_read(&n->nr_slabs))
continue;
diff --git a/patches/0004-jbd2-Drop-unnecessary-branch-from-jbd2_journal_forge.patch b/patches/0004-jbd2-Drop-unnecessary-branch-from-jbd2_journal_forge.patch
index 4238849af1cf..07e46014bc1a 100644
--- a/patches/0004-jbd2-Drop-unnecessary-branch-from-jbd2_journal_forge.patch
+++ b/patches/0004-jbd2-Drop-unnecessary-branch-from-jbd2_journal_forge.patch
@@ -14,7 +14,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/fs/jbd2/transaction.c
+++ b/fs/jbd2/transaction.c
-@@ -1599,10 +1599,6 @@ int jbd2_journal_forget (handle_t *handl
+@@ -1603,10 +1603,6 @@ int jbd2_journal_forget (handle_t *handl
} else {
__jbd2_journal_unfile_buffer(jh);
jbd2_journal_put_journal_head(jh);
diff --git a/patches/0004-mm-SLUB-delay-giving-back-empty-slubs-to-IRQ-enabled.patch b/patches/0004-mm-SLUB-delay-giving-back-empty-slubs-to-IRQ-enabled.patch
index 8524e8f20d4a..f66226b06382 100644
--- a/patches/0004-mm-SLUB-delay-giving-back-empty-slubs-to-IRQ-enabled.patch
+++ b/patches/0004-mm-SLUB-delay-giving-back-empty-slubs-to-IRQ-enabled.patch
@@ -168,15 +168,15 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return p;
}
-@@ -3136,6 +3191,7 @@ int kmem_cache_alloc_bulk(struct kmem_ca
+@@ -3139,6 +3194,7 @@ int kmem_cache_alloc_bulk(struct kmem_ca
void **p)
{
struct kmem_cache_cpu *c;
+ LIST_HEAD(to_free);
int i;
- /* memcg and kmem_cache debug support */
-@@ -3159,7 +3215,7 @@ int kmem_cache_alloc_bulk(struct kmem_ca
+ if (IS_ENABLED(CONFIG_PREEMPT_RT) && IS_ENABLED(CONFIG_DEBUG_ATOMIC_SLEEP))
+@@ -3165,7 +3221,7 @@ int kmem_cache_alloc_bulk(struct kmem_ca
* of re-populating per CPU c->freelist
*/
p[i] = ___slab_alloc(s, flags, NUMA_NO_NODE,
@@ -185,7 +185,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (unlikely(!p[i]))
goto error;
-@@ -3174,6 +3230,7 @@ int kmem_cache_alloc_bulk(struct kmem_ca
+@@ -3180,6 +3236,7 @@ int kmem_cache_alloc_bulk(struct kmem_ca
}
c->tid = next_tid(c->tid);
local_irq_enable();
@@ -193,7 +193,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/* Clear memory outside IRQ disabled fastpath loop */
if (unlikely(slab_want_init_on_alloc(flags, s))) {
-@@ -3188,6 +3245,7 @@ int kmem_cache_alloc_bulk(struct kmem_ca
+@@ -3194,6 +3251,7 @@ int kmem_cache_alloc_bulk(struct kmem_ca
return i;
error:
local_irq_enable();
@@ -201,7 +201,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
slab_post_alloc_hook(s, flags, i, p);
__kmem_cache_free_bulk(s, i, p);
return 0;
-@@ -4224,6 +4282,12 @@ void __init kmem_cache_init(void)
+@@ -4230,6 +4288,12 @@ void __init kmem_cache_init(void)
{
static __initdata struct kmem_cache boot_kmem_cache,
boot_kmem_cache_node;
diff --git a/patches/0005-jbd2-Don-t-call-__bforget-unnecessarily.patch b/patches/0005-jbd2-Don-t-call-__bforget-unnecessarily.patch
index fe92c3b6d922..13b61b7f7951 100644
--- a/patches/0005-jbd2-Don-t-call-__bforget-unnecessarily.patch
+++ b/patches/0005-jbd2-Don-t-call-__bforget-unnecessarily.patch
@@ -17,7 +17,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/fs/jbd2/transaction.c
+++ b/fs/jbd2/transaction.c
-@@ -1550,7 +1550,7 @@ int jbd2_journal_forget (handle_t *handl
+@@ -1554,7 +1554,7 @@ int jbd2_journal_forget (handle_t *handl
if (!J_EXPECT_JH(jh, !jh->b_committed_data,
"inconsistent data on disk")) {
err = -EIO;
@@ -26,7 +26,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
/* keep track of whether or not this transaction modified us */
-@@ -1640,7 +1640,7 @@ int jbd2_journal_forget (handle_t *handl
+@@ -1644,7 +1644,7 @@ int jbd2_journal_forget (handle_t *handl
if (!jh->b_cp_transaction) {
JBUFFER_TRACE(jh, "belongs to none transaction");
spin_unlock(&journal->j_list_lock);
@@ -35,7 +35,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
/*
-@@ -1650,7 +1650,7 @@ int jbd2_journal_forget (handle_t *handl
+@@ -1654,7 +1654,7 @@ int jbd2_journal_forget (handle_t *handl
if (!buffer_dirty(bh)) {
__jbd2_journal_remove_checkpoint(jh);
spin_unlock(&journal->j_list_lock);
@@ -44,7 +44,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
/*
-@@ -1663,10 +1663,9 @@ int jbd2_journal_forget (handle_t *handl
+@@ -1667,10 +1667,9 @@ int jbd2_journal_forget (handle_t *handl
__jbd2_journal_file_buffer(jh, transaction, BJ_Forget);
spin_unlock(&journal->j_list_lock);
}
diff --git a/patches/0006-jbd2-Make-state-lock-a-spinlock.patch b/patches/0006-jbd2-Make-state-lock-a-spinlock.patch
index f34e9e906efa..41415b3735ee 100644
--- a/patches/0006-jbd2-Make-state-lock-a-spinlock.patch
+++ b/patches/0006-jbd2-Make-state-lock-a-spinlock.patch
@@ -128,7 +128,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/fs/jbd2/transaction.c
+++ b/fs/jbd2/transaction.c
-@@ -879,7 +879,7 @@ do_get_write_access(handle_t *handle, st
+@@ -877,7 +877,7 @@ do_get_write_access(handle_t *handle, st
start_lock = jiffies;
lock_buffer(bh);
@@ -137,7 +137,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/* If it takes too long to lock the buffer, trace it */
time_lock = jbd2_time_diff(start_lock, jiffies);
-@@ -929,7 +929,7 @@ do_get_write_access(handle_t *handle, st
+@@ -927,7 +927,7 @@ do_get_write_access(handle_t *handle, st
error = -EROFS;
if (is_handle_aborted(handle)) {
@@ -146,7 +146,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
goto out;
}
error = 0;
-@@ -993,7 +993,7 @@ do_get_write_access(handle_t *handle, st
+@@ -991,7 +991,7 @@ do_get_write_access(handle_t *handle, st
*/
if (buffer_shadow(bh)) {
JBUFFER_TRACE(jh, "on shadow: sleep");
@@ -155,7 +155,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
wait_on_bit_io(&bh->b_state, BH_Shadow, TASK_UNINTERRUPTIBLE);
goto repeat;
}
-@@ -1014,7 +1014,7 @@ do_get_write_access(handle_t *handle, st
+@@ -1012,7 +1012,7 @@ do_get_write_access(handle_t *handle, st
JBUFFER_TRACE(jh, "generate frozen data");
if (!frozen_buffer) {
JBUFFER_TRACE(jh, "allocate memory for buffer");
@@ -164,7 +164,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
frozen_buffer = jbd2_alloc(jh2bh(jh)->b_size,
GFP_NOFS | __GFP_NOFAIL);
goto repeat;
-@@ -1033,7 +1033,7 @@ do_get_write_access(handle_t *handle, st
+@@ -1031,7 +1031,7 @@ do_get_write_access(handle_t *handle, st
jh->b_next_transaction = transaction;
done:
@@ -173,7 +173,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* If we are about to journal a buffer, then any revoke pending on it is
-@@ -1172,7 +1172,7 @@ int jbd2_journal_get_create_access(handl
+@@ -1173,7 +1173,7 @@ int jbd2_journal_get_create_access(handl
* that case: the transaction must have deleted the buffer for it to be
* reused here.
*/
@@ -182,7 +182,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
J_ASSERT_JH(jh, (jh->b_transaction == transaction ||
jh->b_transaction == NULL ||
(jh->b_transaction == journal->j_committing_transaction &&
-@@ -1207,7 +1207,7 @@ int jbd2_journal_get_create_access(handl
+@@ -1208,7 +1208,7 @@ int jbd2_journal_get_create_access(handl
jh->b_next_transaction = transaction;
spin_unlock(&journal->j_list_lock);
}
@@ -191,7 +191,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* akpm: I added this. ext3_alloc_branch can pick up new indirect
-@@ -1275,13 +1275,13 @@ int jbd2_journal_get_undo_access(handle_
+@@ -1279,13 +1279,13 @@ int jbd2_journal_get_undo_access(handle_
committed_data = jbd2_alloc(jh2bh(jh)->b_size,
GFP_NOFS|__GFP_NOFAIL);
@@ -207,7 +207,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
goto repeat;
}
-@@ -1289,7 +1289,7 @@ int jbd2_journal_get_undo_access(handle_
+@@ -1293,7 +1293,7 @@ int jbd2_journal_get_undo_access(handle_
committed_data = NULL;
memcpy(jh->b_committed_data, bh->b_data, bh->b_size);
}
@@ -216,7 +216,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
out:
jbd2_journal_put_journal_head(jh);
if (unlikely(committed_data))
-@@ -1390,16 +1390,16 @@ int jbd2_journal_dirty_metadata(handle_t
+@@ -1394,16 +1394,16 @@ int jbd2_journal_dirty_metadata(handle_t
*/
if (jh->b_transaction != transaction &&
jh->b_next_transaction != transaction) {
@@ -236,7 +236,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (jh->b_transaction == transaction &&
jh->b_jlist != BJ_Metadata)
pr_err("JBD2: assertion failure: h_type=%u "
-@@ -1409,13 +1409,13 @@ int jbd2_journal_dirty_metadata(handle_t
+@@ -1413,13 +1413,13 @@ int jbd2_journal_dirty_metadata(handle_t
jh->b_jlist);
J_ASSERT_JH(jh, jh->b_transaction != transaction ||
jh->b_jlist == BJ_Metadata);
@@ -252,7 +252,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (jh->b_modified == 0) {
/*
-@@ -1501,7 +1501,7 @@ int jbd2_journal_dirty_metadata(handle_t
+@@ -1505,7 +1505,7 @@ int jbd2_journal_dirty_metadata(handle_t
__jbd2_journal_file_buffer(jh, transaction, BJ_Metadata);
spin_unlock(&journal->j_list_lock);
out_unlock_bh:
@@ -261,7 +261,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
out:
JBUFFER_TRACE(jh, "exit");
return ret;
-@@ -1539,11 +1539,13 @@ int jbd2_journal_forget (handle_t *handl
+@@ -1543,11 +1543,13 @@ int jbd2_journal_forget (handle_t *handl
BUFFER_TRACE(bh, "entry");
@@ -279,7 +279,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/* Critical error: attempting to delete a bitmap buffer, maybe?
* Don't do any jbd operations, and return an error. */
-@@ -1664,18 +1666,14 @@ int jbd2_journal_forget (handle_t *handl
+@@ -1668,18 +1670,14 @@ int jbd2_journal_forget (handle_t *handl
spin_unlock(&journal->j_list_lock);
}
drop:
@@ -300,7 +300,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
/**
-@@ -1874,7 +1872,7 @@ int jbd2_journal_stop(handle_t *handle)
+@@ -1878,7 +1876,7 @@ int jbd2_journal_stop(handle_t *handle)
*
* j_list_lock is held.
*
@@ -309,7 +309,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
*/
static inline void
-@@ -1898,7 +1896,7 @@ static inline void
+@@ -1902,7 +1900,7 @@ static inline void
*
* Called with j_list_lock held, and the journal may not be locked.
*
@@ -318,7 +318,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
*/
static inline void
-@@ -1930,7 +1928,7 @@ static void __jbd2_journal_temp_unlink_b
+@@ -1934,7 +1932,7 @@ static void __jbd2_journal_temp_unlink_b
transaction_t *transaction;
struct buffer_head *bh = jh2bh(jh);
@@ -327,7 +327,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
transaction = jh->b_transaction;
if (transaction)
assert_spin_locked(&transaction->t_journal->j_list_lock);
-@@ -1984,11 +1982,11 @@ void jbd2_journal_unfile_buffer(journal_
+@@ -1988,11 +1986,11 @@ void jbd2_journal_unfile_buffer(journal_
/* Get reference so that buffer cannot be freed before we unlock it */
get_bh(bh);
@@ -341,7 +341,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
jbd2_journal_put_journal_head(jh);
__brelse(bh);
}
-@@ -1996,7 +1994,7 @@ void jbd2_journal_unfile_buffer(journal_
+@@ -2000,7 +1998,7 @@ void jbd2_journal_unfile_buffer(journal_
/*
* Called from jbd2_journal_try_to_free_buffers().
*
@@ -350,7 +350,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
*/
static void
__journal_try_to_free_buffer(journal_t *journal, struct buffer_head *bh)
-@@ -2083,10 +2081,10 @@ int jbd2_journal_try_to_free_buffers(jou
+@@ -2087,10 +2085,10 @@ int jbd2_journal_try_to_free_buffers(jou
if (!jh)
continue;
@@ -363,7 +363,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (buffer_jbd(bh))
goto busy;
} while ((bh = bh->b_this_page) != head);
-@@ -2107,7 +2105,7 @@ int jbd2_journal_try_to_free_buffers(jou
+@@ -2111,7 +2109,7 @@ int jbd2_journal_try_to_free_buffers(jou
*
* Called under j_list_lock.
*
@@ -372,7 +372,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
*/
static int __dispose_buffer(struct journal_head *jh, transaction_t *transaction)
{
-@@ -2201,7 +2199,7 @@ static int journal_unmap_buffer(journal_
+@@ -2205,7 +2203,7 @@ static int journal_unmap_buffer(journal_
/* OK, we have data buffer in journaled mode */
write_lock(&journal->j_state_lock);
@@ -381,7 +381,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
spin_lock(&journal->j_list_lock);
/*
-@@ -2282,10 +2280,10 @@ static int journal_unmap_buffer(journal_
+@@ -2286,10 +2284,10 @@ static int journal_unmap_buffer(journal_
* for commit and try again.
*/
if (partial_page) {
@@ -394,7 +394,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return -EBUSY;
}
/*
-@@ -2299,10 +2297,10 @@ static int journal_unmap_buffer(journal_
+@@ -2303,10 +2301,10 @@ static int journal_unmap_buffer(journal_
if (journal->j_running_transaction && buffer_jbddirty(bh))
jh->b_next_transaction = journal->j_running_transaction;
jh->b_modified = 0;
@@ -407,7 +407,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return 0;
} else {
/* Good, the buffer belongs to the running transaction.
-@@ -2326,10 +2324,10 @@ static int journal_unmap_buffer(journal_
+@@ -2330,10 +2328,10 @@ static int journal_unmap_buffer(journal_
* here.
*/
jh->b_modified = 0;
@@ -420,7 +420,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
zap_buffer_unlocked:
clear_buffer_dirty(bh);
J_ASSERT_BH(bh, !buffer_jbddirty(bh));
-@@ -2416,7 +2414,7 @@ void __jbd2_journal_file_buffer(struct j
+@@ -2420,7 +2418,7 @@ void __jbd2_journal_file_buffer(struct j
int was_dirty = 0;
struct buffer_head *bh = jh2bh(jh);
@@ -429,7 +429,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
assert_spin_locked(&transaction->t_journal->j_list_lock);
J_ASSERT_JH(jh, jh->b_jlist < BJ_Types);
-@@ -2478,11 +2476,11 @@ void __jbd2_journal_file_buffer(struct j
+@@ -2482,11 +2480,11 @@ void __jbd2_journal_file_buffer(struct j
void jbd2_journal_file_buffer(struct journal_head *jh,
transaction_t *transaction, int jlist)
{
@@ -443,7 +443,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
/*
-@@ -2492,7 +2490,7 @@ void jbd2_journal_file_buffer(struct jou
+@@ -2496,7 +2494,7 @@ void jbd2_journal_file_buffer(struct jou
* buffer on that transaction's metadata list.
*
* Called under j_list_lock
@@ -452,7 +452,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
*
* When this function returns true, there's no next transaction to refile to
* and the caller has to drop jh reference through
-@@ -2503,7 +2501,7 @@ bool __jbd2_journal_refile_buffer(struct
+@@ -2507,7 +2505,7 @@ bool __jbd2_journal_refile_buffer(struct
int was_dirty, jlist;
struct buffer_head *bh = jh2bh(jh);
@@ -461,7 +461,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (jh->b_transaction)
assert_spin_locked(&jh->b_transaction->t_journal->j_list_lock);
-@@ -2549,17 +2547,13 @@ bool __jbd2_journal_refile_buffer(struct
+@@ -2553,17 +2551,13 @@ bool __jbd2_journal_refile_buffer(struct
*/
void jbd2_journal_refile_buffer(journal_t *journal, struct journal_head *jh)
{
diff --git a/patches/0011-printk_safe-remove-printk-safe-code.patch b/patches/0011-printk_safe-remove-printk-safe-code.patch
index 943a2d551959..aa8be9a69bac 100644
--- a/patches/0011-printk_safe-remove-printk-safe-code.patch
+++ b/patches/0011-printk_safe-remove-printk-safe-code.patch
@@ -666,7 +666,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-}
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
-@@ -8927,7 +8927,6 @@ void ftrace_dump(enum ftrace_dump_mode o
+@@ -8929,7 +8929,6 @@ void ftrace_dump(enum ftrace_dump_mode o
tracing_off();
local_irq_save(flags);
@@ -674,7 +674,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/* Simulate the iterator */
trace_init_global_iter(&iter);
-@@ -9004,7 +9003,6 @@ void ftrace_dump(enum ftrace_dump_mode o
+@@ -9006,7 +9005,6 @@ void ftrace_dump(enum ftrace_dump_mode o
atomic_dec(&per_cpu_ptr(iter.trace_buffer->data, cpu)->disabled);
}
atomic_dec(&dump_running);
diff --git a/patches/0020-serial-8250-implement-write_atomic.patch b/patches/0020-serial-8250-implement-write_atomic.patch
index 4445ea7cdec2..ea7e56c1a757 100644
--- a/patches/0020-serial-8250-implement-write_atomic.patch
+++ b/patches/0020-serial-8250-implement-write_atomic.patch
@@ -69,7 +69,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
void serial8250_rpm_get(struct uart_8250_port *p);
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
-@@ -266,7 +266,7 @@ static void serial8250_timeout(struct ti
+@@ -265,7 +265,7 @@ static void serial8250_timeout(struct ti
static void serial8250_backup_timeout(struct timer_list *t)
{
struct uart_8250_port *up = from_timer(up, t, timer);
@@ -78,7 +78,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
unsigned long flags;
spin_lock_irqsave(&up->port.lock, flags);
-@@ -275,10 +275,8 @@ static void serial8250_backup_timeout(st
+@@ -274,10 +274,8 @@ static void serial8250_backup_timeout(st
* Must disable interrupts or else we risk racing with the interrupt
* based handler.
*/
@@ -91,7 +91,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
iir = serial_in(up, UART_IIR);
-@@ -301,7 +299,7 @@ static void serial8250_backup_timeout(st
+@@ -300,7 +298,7 @@ static void serial8250_backup_timeout(st
serial8250_tx_chars(up);
if (up->port.irq)
@@ -100,7 +100,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
spin_unlock_irqrestore(&up->port.lock, flags);
-@@ -579,6 +577,14 @@ serial8250_register_ports(struct uart_dr
+@@ -578,6 +576,14 @@ serial8250_register_ports(struct uart_dr
#ifdef CONFIG_SERIAL_8250_CONSOLE
@@ -115,7 +115,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
static void univ8250_console_write(struct console *co, const char *s,
unsigned int count)
{
-@@ -664,6 +670,7 @@ static int univ8250_console_match(struct
+@@ -663,6 +669,7 @@ static int univ8250_console_match(struct
static struct console univ8250_console = {
.name = "ttyS",
@@ -290,7 +290,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
serial8250_rpm_put(up);
}
-@@ -2354,7 +2392,7 @@ void serial8250_do_shutdown(struct uart_
+@@ -2358,7 +2396,7 @@ void serial8250_do_shutdown(struct uart_
*/
spin_lock_irqsave(&port->lock, flags);
up->ier = 0;
@@ -299,7 +299,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
spin_unlock_irqrestore(&port->lock, flags);
synchronize_irq(port->irq);
-@@ -2639,7 +2677,7 @@ serial8250_do_set_termios(struct uart_po
+@@ -2643,7 +2681,7 @@ serial8250_do_set_termios(struct uart_po
if (up->capabilities & UART_CAP_RTOIE)
up->ier |= UART_IER_RTOIE;
@@ -308,7 +308,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (up->capabilities & UART_CAP_EFR) {
unsigned char efr = 0;
-@@ -3103,7 +3141,7 @@ EXPORT_SYMBOL_GPL(serial8250_set_default
+@@ -3107,7 +3145,7 @@ EXPORT_SYMBOL_GPL(serial8250_set_default
#ifdef CONFIG_SERIAL_8250_CONSOLE
@@ -317,7 +317,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
{
struct uart_8250_port *up = up_to_u8250p(port);
-@@ -3111,6 +3149,18 @@ static void serial8250_console_putchar(s
+@@ -3115,6 +3153,18 @@ static void serial8250_console_putchar(s
serial_port_out(port, UART_TX, ch);
}
@@ -336,7 +336,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* Restore serial console when h/w power-off detected
*/
-@@ -3132,6 +3182,42 @@ static void serial8250_console_restore(s
+@@ -3136,6 +3186,42 @@ static void serial8250_console_restore(s
serial8250_out_MCR(up, UART_MCR_DTR | UART_MCR_RTS);
}
@@ -379,7 +379,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* Print a string to the serial port trying not to disturb
* any possible real use of the port...
-@@ -3143,27 +3229,13 @@ void serial8250_console_write(struct uar
+@@ -3147,27 +3233,13 @@ void serial8250_console_write(struct uar
{
struct uart_port *port = &up->port;
unsigned long flags;
@@ -409,7 +409,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/* check scratch reg to see if port powered off during system sleep */
if (up->canary && (up->canary != serial_port_in(port, UART_SCR))) {
-@@ -3171,14 +3243,16 @@ void serial8250_console_write(struct uar
+@@ -3175,14 +3247,16 @@ void serial8250_console_write(struct uar
up->canary = 0;
}
@@ -427,7 +427,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* The receive handling will happen properly because the
-@@ -3190,8 +3264,7 @@ void serial8250_console_write(struct uar
+@@ -3194,8 +3268,7 @@ void serial8250_console_write(struct uar
if (up->msr_saved_flags)
serial8250_modem_status(up);
@@ -437,7 +437,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
serial8250_rpm_put(up);
}
-@@ -3212,6 +3285,7 @@ static unsigned int probe_baud(struct ua
+@@ -3216,6 +3289,7 @@ static unsigned int probe_baud(struct ua
int serial8250_console_setup(struct uart_port *port, char *options, bool probe)
{
@@ -445,7 +445,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
int baud = 9600;
int bits = 8;
int parity = 'n';
-@@ -3220,6 +3294,8 @@ int serial8250_console_setup(struct uart
+@@ -3224,6 +3298,8 @@ int serial8250_console_setup(struct uart
if (!port->iobase && !port->membase)
return -ENODEV;
diff --git a/patches/Use-CONFIG_PREEMPTION.patch b/patches/Use-CONFIG_PREEMPTION.patch
index 2e75ae6c3b20..0a1f2725cd16 100644
--- a/patches/Use-CONFIG_PREEMPTION.patch
+++ b/patches/Use-CONFIG_PREEMPTION.patch
@@ -1141,7 +1141,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* Some hypercalls issued by the toolstack can take many 10s of
-@@ -37,4 +37,4 @@ asmlinkage __visible void xen_maybe_pree
+@@ -39,4 +39,4 @@ asmlinkage __visible void xen_maybe_pree
__this_cpu_write(xen_in_preemptible_hcall, true);
}
}
@@ -1381,7 +1381,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
* either synchronize_rcu() or synchronize_rcu_expedited(). It is OK to
--- a/kernel/rcu/tree_exp.h
+++ b/kernel/rcu/tree_exp.h
-@@ -669,7 +669,7 @@ static void rcu_exp_handler(void *unused
+@@ -668,7 +668,7 @@ static void rcu_exp_handler(void *unused
}
}
@@ -1412,7 +1412,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
{
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
-@@ -3660,6 +3660,8 @@ print_trace_header(struct seq_file *m, s
+@@ -3662,6 +3662,8 @@ print_trace_header(struct seq_file *m, s
"desktop",
#elif defined(CONFIG_PREEMPT)
"preempt",
@@ -1434,7 +1434,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
* indefinitely requeue itself while all other CPUs are trapped in
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
-@@ -1070,7 +1070,7 @@ config DEBUG_TIMEKEEPING
+@@ -1059,7 +1059,7 @@ config DEBUG_TIMEKEEPING
config DEBUG_PREEMPT
bool "Debug preemptible kernel"
@@ -1510,7 +1510,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/* Same with comment on barrier() in slab_alloc_node() */
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -820,7 +820,7 @@ EXPORT_SYMBOL(dev_get_by_napi_id);
+@@ -819,7 +819,7 @@ EXPORT_SYMBOL(dev_get_by_napi_id);
*
* The use of raw_seqcount_begin() and cond_resched() before
* retrying is required as we want to give the writers a chance
diff --git a/patches/add_migrate_disable.patch b/patches/add_migrate_disable.patch
index ea51560d6e9d..afd8f38a26c2 100644
--- a/patches/add_migrate_disable.patch
+++ b/patches/add_migrate_disable.patch
@@ -426,7 +426,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
goto out;
if (task_running(rq, p) || p->state == TASK_WAKING) {
-@@ -4028,6 +4038,8 @@ pick_next_task(struct rq *rq, struct tas
+@@ -4032,6 +4042,8 @@ pick_next_task(struct rq *rq, struct tas
BUG();
}
@@ -435,7 +435,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* __schedule() is the main scheduler function.
*
-@@ -4098,6 +4110,9 @@ static void __sched notrace __schedule(b
+@@ -4102,6 +4114,9 @@ static void __sched notrace __schedule(b
rq_lock(rq, &rf);
smp_mb__after_spinlock();
@@ -445,7 +445,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/* Promote REQ to ACT */
rq->clock_update_flags <<= 1;
update_rq_clock(rq);
-@@ -6340,6 +6355,7 @@ static void migrate_tasks(struct rq *dea
+@@ -6344,6 +6359,7 @@ static void migrate_tasks(struct rq *dea
break;
next = __pick_migrate_task(rq);
@@ -453,7 +453,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
* Rules for changing task_struct::cpus_mask are holding
-@@ -8035,3 +8051,162 @@ const u32 sched_prio_to_wmult[40] = {
+@@ -8046,3 +8062,162 @@ const u32 sched_prio_to_wmult[40] = {
};
#undef CREATE_TRACE_POINTS
diff --git a/patches/drm-i915-Don-t-disable-interrupts-for-intel_engine_b.patch b/patches/drm-i915-Don-t-disable-interrupts-for-intel_engine_b.patch
index 26a7fa43d732..cbf9db14fea6 100644
--- a/patches/drm-i915-Don-t-disable-interrupts-for-intel_engine_b.patch
+++ b/patches/drm-i915-Don-t-disable-interrupts-for-intel_engine_b.patch
@@ -84,7 +84,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
struct intel_engine_cs *engine =
--- a/drivers/gpu/drm/i915/gt/intel_engine.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine.h
-@@ -349,7 +349,6 @@ void intel_engine_init_execlists(struct
+@@ -357,7 +357,6 @@ void intel_engine_init_execlists(struct
void intel_engine_init_breadcrumbs(struct intel_engine_cs *engine);
void intel_engine_fini_breadcrumbs(struct intel_engine_cs *engine);
diff --git a/patches/ftrace-migrate-disable-tracing.patch b/patches/ftrace-migrate-disable-tracing.patch
index 6f4347b259e9..b2baaddee0dc 100644
--- a/patches/ftrace-migrate-disable-tracing.patch
+++ b/patches/ftrace-migrate-disable-tracing.patch
@@ -23,7 +23,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#define TRACE_EVENT_TYPE_MAX \
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
-@@ -2354,6 +2354,8 @@ tracing_generic_entry_update(struct trac
+@@ -2356,6 +2356,8 @@ tracing_generic_entry_update(struct trac
((pc & SOFTIRQ_OFFSET) ? TRACE_FLAG_SOFTIRQ : 0) |
(tif_need_resched() ? TRACE_FLAG_NEED_RESCHED : 0) |
(test_preempt_need_resched() ? TRACE_FLAG_PREEMPT_RESCHED : 0);
@@ -32,7 +32,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
EXPORT_SYMBOL_GPL(tracing_generic_entry_update);
-@@ -3584,9 +3586,10 @@ static void print_lat_help_header(struct
+@@ -3586,9 +3588,10 @@ static void print_lat_help_header(struct
"# | / _----=> need-resched \n"
"# || / _---=> hardirq/softirq \n"
"# ||| / _--=> preempt-depth \n"
diff --git a/patches/genirq-update-irq_set_irqchip_state-documentation.patch b/patches/genirq-update-irq_set_irqchip_state-documentation.patch
index fac4fd1fe69c..160b84c8c7f3 100644
--- a/patches/genirq-update-irq_set_irqchip_state-documentation.patch
+++ b/patches/genirq-update-irq_set_irqchip_state-documentation.patch
@@ -14,7 +14,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
-@@ -2687,7 +2687,7 @@ EXPORT_SYMBOL_GPL(irq_get_irqchip_state)
+@@ -2673,7 +2673,7 @@ EXPORT_SYMBOL_GPL(irq_get_irqchip_state)
* This call sets the internal irqchip state of an interrupt,
* depending on the value of @which.
*
diff --git a/patches/localversion.patch b/patches/localversion.patch
index e1f3b8d87864..340816c8febc 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 @@
-+-rt14
++-rt15
diff --git a/patches/lockdep-disable-self-test.patch b/patches/lockdep-disable-self-test.patch
index 181104eb0a79..d86b021f25fe 100644
--- a/patches/lockdep-disable-self-test.patch
+++ b/patches/lockdep-disable-self-test.patch
@@ -17,7 +17,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
-@@ -1248,7 +1248,7 @@ config DEBUG_ATOMIC_SLEEP
+@@ -1237,7 +1237,7 @@ config DEBUG_ATOMIC_SLEEP
config DEBUG_LOCKING_API_SELFTESTS
bool "Locking API boot-time self-tests"
diff --git a/patches/mm-Warn-on-memory-allocation-in-non-preemptible-cont.patch b/patches/mm-Warn-on-memory-allocation-in-non-preemptible-cont.patch
new file mode 100644
index 000000000000..93cf8c31e73a
--- /dev/null
+++ b/patches/mm-Warn-on-memory-allocation-in-non-preemptible-cont.patch
@@ -0,0 +1,42 @@
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Fri, 6 Mar 2020 15:59:06 +0100
+Subject: [PATCH] mm: Warn on memory allocation in non-preemptible context on
+ RT
+
+The memory allocation via kmalloc(, GFP_ATOMIC) in atomic context
+(disabled preemption or interrupts) is not allowed on RT because the
+buddy allocator is using sleeping locks which can't be acquired in this
+context.
+Such an an allocation may not trigger a warning in the buddy allocator
+if it is always satisfied in the SLUB allocator.
+
+Add a warning on RT if a memory allocation was attempted in not
+preemptible region.
+
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ mm/slub.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/mm/slub.c
++++ b/mm/slub.c
+@@ -2679,6 +2679,9 @@ static __always_inline void *slab_alloc_
+ struct page *page;
+ unsigned long tid;
+
++ if (IS_ENABLED(CONFIG_PREEMPT_RT) && IS_ENABLED(CONFIG_DEBUG_ATOMIC_SLEEP))
++ WARN_ON_ONCE(!preemptible() && system_state >= SYSTEM_SCHEDULING);
++
+ s = slab_pre_alloc_hook(s, gfpflags);
+ if (!s)
+ return NULL;
+@@ -3138,6 +3141,9 @@ int kmem_cache_alloc_bulk(struct kmem_ca
+ struct kmem_cache_cpu *c;
+ int i;
+
++ if (IS_ENABLED(CONFIG_PREEMPT_RT) && IS_ENABLED(CONFIG_DEBUG_ATOMIC_SLEEP))
++ WARN_ON_ONCE(!preemptible() && system_state >= SYSTEM_SCHEDULING);
++
+ /* memcg and kmem_cache debug support */
+ s = slab_pre_alloc_hook(s, flags);
+ if (unlikely(!s))
diff --git a/patches/mm-disable-sloub-rt.patch b/patches/mm-disable-sloub-rt.patch
index 038e4edcebf7..9f898aeeef5b 100644
--- a/patches/mm-disable-sloub-rt.patch
+++ b/patches/mm-disable-sloub-rt.patch
@@ -22,7 +22,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -1805,6 +1805,7 @@ choice
+@@ -1785,6 +1785,7 @@ choice
config SLAB
bool "SLAB"
@@ -30,7 +30,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
select HAVE_HARDENED_USERCOPY_ALLOCATOR
help
The regular slab allocator that is established and known to work
-@@ -1825,6 +1826,7 @@ config SLUB
+@@ -1805,6 +1806,7 @@ config SLUB
config SLOB
depends on EXPERT
bool "SLOB (Simple Allocator)"
diff --git a/patches/mm-enable-slub.patch b/patches/mm-enable-slub.patch
index 79fde96f6c50..67f9fa659498 100644
--- a/patches/mm-enable-slub.patch
+++ b/patches/mm-enable-slub.patch
@@ -13,7 +13,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/mm/slub.c
+++ b/mm/slub.c
-@@ -3730,6 +3730,11 @@ static void list_slab_objects(struct kme
+@@ -3736,6 +3736,11 @@ static void list_slab_objects(struct kme
const char *text)
{
#ifdef CONFIG_SLUB_DEBUG
@@ -25,7 +25,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
void *addr = page_address(page);
void *p;
unsigned long *map = bitmap_zalloc(page->objects, GFP_ATOMIC);
-@@ -3749,8 +3754,10 @@ static void list_slab_objects(struct kme
+@@ -3755,8 +3760,10 @@ static void list_slab_objects(struct kme
slab_unlock(page);
bitmap_free(map);
#endif
diff --git a/patches/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch b/patches/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch
index 8146fbaf1780..6b2492ffb5e4 100644
--- a/patches/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch
+++ b/patches/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch
@@ -48,7 +48,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
-@@ -2265,7 +2265,7 @@ static void drain_all_stock(struct mem_c
+@@ -2267,7 +2267,7 @@ static void drain_all_stock(struct mem_c
* as well as workers from this path always operate on the local
* per-cpu data. CPU up doesn't touch memcg_stock at all.
*/
@@ -57,7 +57,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
for_each_online_cpu(cpu) {
struct memcg_stock_pcp *stock = &per_cpu(memcg_stock, cpu);
struct mem_cgroup *memcg;
-@@ -2286,7 +2286,7 @@ static void drain_all_stock(struct mem_c
+@@ -2288,7 +2288,7 @@ static void drain_all_stock(struct mem_c
schedule_work_on(cpu, &stock->work);
}
}
diff --git a/patches/mm-memcontrol-Move-misplaced-local_unlock_irqrestore.patch b/patches/mm-memcontrol-Move-misplaced-local_unlock_irqrestore.patch
index 43cd289faf17..3f64e1197d1b 100644
--- a/patches/mm-memcontrol-Move-misplaced-local_unlock_irqrestore.patch
+++ b/patches/mm-memcontrol-Move-misplaced-local_unlock_irqrestore.patch
@@ -17,7 +17,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
-@@ -7025,10 +7025,10 @@ void mem_cgroup_swapout(struct page *pag
+@@ -7027,10 +7027,10 @@ void mem_cgroup_swapout(struct page *pag
mem_cgroup_charge_statistics(memcg, page, PageTransHuge(page),
-nr_entries);
memcg_check_events(memcg, page);
diff --git a/patches/mm-memcontrol-do_not_disable_irq.patch b/patches/mm-memcontrol-do_not_disable_irq.patch
index a9685dd1fa50..16e762228089 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)
{
-@@ -5478,12 +5481,12 @@ static int mem_cgroup_move_account(struc
+@@ -5480,12 +5483,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:
-@@ -6531,10 +6534,10 @@ void mem_cgroup_commit_charge(struct pag
+@@ -6533,10 +6536,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) };
-@@ -6603,7 +6606,7 @@ static void uncharge_batch(const struct
+@@ -6605,7 +6608,7 @@ static void uncharge_batch(const struct
memcg_oom_recover(ug->memcg);
}
@@ -66,7 +66,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
__mod_memcg_state(ug->memcg, MEMCG_RSS, -ug->nr_anon);
__mod_memcg_state(ug->memcg, MEMCG_CACHE, -ug->nr_file);
__mod_memcg_state(ug->memcg, MEMCG_RSS_HUGE, -ug->nr_huge);
-@@ -6611,7 +6614,7 @@ static void uncharge_batch(const struct
+@@ -6613,7 +6616,7 @@ static void uncharge_batch(const struct
__count_memcg_events(ug->memcg, PGPGOUT, ug->pgpgout);
__this_cpu_add(ug->memcg->vmstats_percpu->nr_page_events, nr_pages);
memcg_check_events(ug->memcg, ug->dummy_page);
@@ -75,7 +75,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (!mem_cgroup_is_root(ug->memcg))
css_put_many(&ug->memcg->css, nr_pages);
-@@ -6774,10 +6777,10 @@ void mem_cgroup_migrate(struct page *old
+@@ -6776,10 +6779,10 @@ void mem_cgroup_migrate(struct page *old
commit_charge(newpage, memcg, false);
@@ -88,7 +88,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
DEFINE_STATIC_KEY_FALSE(memcg_sockets_enabled_key);
-@@ -6969,6 +6972,7 @@ void mem_cgroup_swapout(struct page *pag
+@@ -6971,6 +6974,7 @@ void mem_cgroup_swapout(struct page *pag
struct mem_cgroup *memcg, *swap_memcg;
unsigned int nr_entries;
unsigned short oldid;
@@ -96,7 +96,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);
-@@ -7014,13 +7018,17 @@ void mem_cgroup_swapout(struct page *pag
+@@ -7016,13 +7020,17 @@ void mem_cgroup_swapout(struct page *pag
* important here to have the interrupts disabled because it is the
* only synchronisation we have for updating the per-CPU variables.
*/
diff --git a/patches/net-core-use-local_bh_disable-in-netif_rx_ni.patch b/patches/net-core-use-local_bh_disable-in-netif_rx_ni.patch
index b69937ceb8ba..f1c9d303cfde 100644
--- a/patches/net-core-use-local_bh_disable-in-netif_rx_ni.patch
+++ b/patches/net-core-use-local_bh_disable-in-netif_rx_ni.patch
@@ -18,7 +18,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4490,11 +4490,9 @@ int netif_rx_ni(struct sk_buff *skb)
+@@ -4471,11 +4471,9 @@ int netif_rx_ni(struct sk_buff *skb)
trace_netif_rx_ni_entry(skb);
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 8fb2c15c4946..30d6d3edfd6f 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
-@@ -3426,7 +3426,11 @@ static inline int __dev_xmit_skb(struct
+@@ -3407,7 +3407,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-make-devnet_rename_seq-a-mutex.patch b/patches/net-make-devnet_rename_seq-a-mutex.patch
index 8afc1d3c3f85..b7bd87289bf4 100644
--- a/patches/net-make-devnet_rename_seq-a-mutex.patch
+++ b/patches/net-make-devnet_rename_seq-a-mutex.patch
@@ -21,7 +21,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -196,6 +196,7 @@ static unsigned int napi_gen_id = NR_CPU
+@@ -195,6 +195,7 @@ static unsigned int napi_gen_id = NR_CPU
static DEFINE_READ_MOSTLY_HASHTABLE(napi_hash, 8);
static seqcount_t devnet_rename_seq;
@@ -29,7 +29,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
static inline void dev_base_seq_inc(struct net *net)
{
-@@ -839,7 +840,8 @@ int netdev_get_name(struct net *net, cha
+@@ -838,7 +839,8 @@ int netdev_get_name(struct net *net, cha
strcpy(name, dev->name);
rcu_read_unlock();
if (read_seqcount_retry(&devnet_rename_seq, seq)) {
@@ -39,7 +39,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
goto retry;
}
-@@ -1116,20 +1118,17 @@ int dev_change_name(struct net_device *d
+@@ -1115,20 +1117,17 @@ int dev_change_name(struct net_device *d
likely(!(dev->priv_flags & IFF_LIVE_RENAME_OK)))
return -EBUSY;
@@ -66,7 +66,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
if (oldname[0] && !strchr(oldname, '%'))
netdev_info(dev, "renamed from %s\n", oldname);
-@@ -1142,11 +1141,12 @@ int dev_change_name(struct net_device *d
+@@ -1141,11 +1140,12 @@ int dev_change_name(struct net_device *d
if (ret) {
memcpy(dev->name, oldname, IFNAMSIZ);
dev->name_assign_type = old_assign_type;
@@ -82,7 +82,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
netdev_adjacent_rename_links(dev, oldname);
-@@ -1167,7 +1167,8 @@ int dev_change_name(struct net_device *d
+@@ -1166,7 +1166,8 @@ int dev_change_name(struct net_device *d
/* err >= 0 after dev_alloc_name() or stores the first errno */
if (err >= 0) {
err = ret;
@@ -92,7 +92,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
memcpy(dev->name, oldname, IFNAMSIZ);
memcpy(oldname, newname, IFNAMSIZ);
dev->name_assign_type = old_assign_type;
-@@ -1180,6 +1181,11 @@ int dev_change_name(struct net_device *d
+@@ -1179,6 +1180,11 @@ int dev_change_name(struct net_device *d
}
return err;
diff --git a/patches/preempt-lazy-support.patch b/patches/preempt-lazy-support.patch
index c80603cdb801..4db1c299402f 100644
--- a/patches/preempt-lazy-support.patch
+++ b/patches/preempt-lazy-support.patch
@@ -291,7 +291,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#ifdef CONFIG_SMP
plist_node_init(&p->pushable_tasks, MAX_PRIO);
RB_CLEAR_NODE(&p->pushable_dl_tasks);
-@@ -4140,6 +4185,7 @@ static void __sched notrace __schedule(b
+@@ -4144,6 +4189,7 @@ static void __sched notrace __schedule(b
next = pick_next_task(rq, prev, &rf);
clear_tsk_need_resched(prev);
@@ -299,7 +299,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
clear_preempt_need_resched();
if (likely(prev != next)) {
-@@ -4327,6 +4373,30 @@ static void __sched notrace preempt_sche
+@@ -4331,6 +4377,30 @@ static void __sched notrace preempt_sche
} while (need_resched());
}
@@ -330,7 +330,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#ifdef CONFIG_PREEMPTION
/*
* This is the entry point to schedule() from in-kernel preemption
-@@ -4340,7 +4410,8 @@ asmlinkage __visible void __sched notrac
+@@ -4344,7 +4414,8 @@ asmlinkage __visible void __sched notrac
*/
if (likely(!preemptible()))
return;
@@ -340,7 +340,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
preempt_schedule_common();
}
NOKPROBE_SYMBOL(preempt_schedule);
-@@ -4367,6 +4438,9 @@ asmlinkage __visible void __sched notrac
+@@ -4371,6 +4442,9 @@ asmlinkage __visible void __sched notrac
if (likely(!preemptible()))
return;
@@ -350,7 +350,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
do {
/*
* Because the function tracer can trace preempt_count_sub()
-@@ -6157,7 +6231,9 @@ void init_idle(struct task_struct *idle,
+@@ -6161,7 +6235,9 @@ void init_idle(struct task_struct *idle,
/* Set the preempt count _outside_ the spinlocks! */
init_idle_preempt_count(idle, cpu);
@@ -361,7 +361,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/*
* The idle tasks have their own, simple scheduling class:
*/
-@@ -8100,6 +8176,7 @@ void migrate_disable(void)
+@@ -8111,6 +8187,7 @@ void migrate_disable(void)
if (++current->migrate_disable == 1) {
this_rq()->nr_pinned++;
@@ -369,7 +369,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#ifdef CONFIG_SCHED_DEBUG
WARN_ON_ONCE(current->pinned_on_cpu >= 0);
current->pinned_on_cpu = smp_processor_id();
-@@ -8181,6 +8258,7 @@ void migrate_enable(void)
+@@ -8192,6 +8269,7 @@ void migrate_enable(void)
}
out:
@@ -424,7 +424,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
return;
}
hrtick_start(rq, delta);
-@@ -6730,7 +6730,7 @@ static void check_preempt_wakeup(struct
+@@ -6731,7 +6731,7 @@ static void check_preempt_wakeup(struct
return;
preempt:
@@ -433,7 +433,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/*
* Only set the backward buddy when the current task is still
* on the rq. This can happen when a wakeup gets interleaved
-@@ -9997,7 +9997,7 @@ static void task_fork_fair(struct task_s
+@@ -9998,7 +9998,7 @@ static void task_fork_fair(struct task_s
* 'current' within the tree based on its new key value.
*/
swap(curr->vruntime, se->vruntime);
@@ -442,7 +442,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
se->vruntime -= cfs_rq->min_vruntime;
-@@ -10021,7 +10021,7 @@ prio_changed_fair(struct rq *rq, struct
+@@ -10022,7 +10022,7 @@ prio_changed_fair(struct rq *rq, struct
*/
if (rq->curr == p) {
if (p->prio > oldprio)
@@ -483,7 +483,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
-@@ -2341,6 +2341,7 @@ tracing_generic_entry_update(struct trac
+@@ -2343,6 +2343,7 @@ tracing_generic_entry_update(struct trac
struct task_struct *tsk = current;
entry->preempt_count = pc & 0xff;
@@ -491,7 +491,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
entry->pid = (tsk) ? tsk->pid : 0;
entry->type = type;
entry->flags =
-@@ -2352,7 +2353,8 @@ tracing_generic_entry_update(struct trac
+@@ -2354,7 +2355,8 @@ tracing_generic_entry_update(struct trac
((pc & NMI_MASK ) ? TRACE_FLAG_NMI : 0) |
((pc & HARDIRQ_MASK) ? TRACE_FLAG_HARDIRQ : 0) |
((pc & SOFTIRQ_OFFSET) ? TRACE_FLAG_SOFTIRQ : 0) |
@@ -501,7 +501,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
(test_preempt_need_resched() ? TRACE_FLAG_PREEMPT_RESCHED : 0);
entry->migrate_disable = (tsk) ? __migrate_disabled(tsk) & 0xFF : 0;
-@@ -3581,15 +3583,17 @@ unsigned long trace_total_entries(struct
+@@ -3583,15 +3585,17 @@ unsigned long trace_total_entries(struct
static void print_lat_help_header(struct seq_file *m)
{
@@ -528,7 +528,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
static void print_event_info(struct trace_buffer *buf, struct seq_file *m)
-@@ -3625,11 +3629,12 @@ static void print_func_help_header_irq(s
+@@ -3627,11 +3631,12 @@ static void print_func_help_header_irq(s
seq_printf(m, "# %.*s _-----=> irqs-off\n", prec, space);
seq_printf(m, "# %.*s / _----=> need-resched\n", prec, space);
diff --git a/patches/random-make-it-work-on-rt.patch b/patches/random-make-it-work-on-rt.patch
index 00e4840620e9..0984d750212b 100644
--- a/patches/random-make-it-work-on-rt.patch
+++ b/patches/random-make-it-work-on-rt.patch
@@ -154,7 +154,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
note_interrupt(desc, retval);
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
-@@ -1099,6 +1099,12 @@ static int irq_thread(void *data)
+@@ -1085,6 +1085,12 @@ static int irq_thread(void *data)
if (action_ret == IRQ_WAKE_THREAD)
irq_wake_secondary(desc, action);
diff --git a/patches/rtmutex-wire-up-RT-s-locking.patch b/patches/rtmutex-wire-up-RT-s-locking.patch
index 3f08bfa4a4fe..dc1637113264 100644
--- a/patches/rtmutex-wire-up-RT-s-locking.patch
+++ b/patches/rtmutex-wire-up-RT-s-locking.patch
@@ -5,7 +5,6 @@ Subject: rtmutex: wire up RT's locking
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
- include/Kbuild | 7 +++++++
include/linux/mutex.h | 20 +++++++++++++-------
include/linux/rwsem.h | 12 ++++++++++++
include/linux/spinlock.h | 12 +++++++++++-
@@ -15,7 +14,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
kernel/locking/rwsem.c | 7 +++++++
kernel/locking/spinlock.c | 7 +++++++
kernel/locking/spinlock_debug.c | 5 +++++
- 10 files changed, 80 insertions(+), 15 deletions(-)
+ 9 files changed, 73 insertions(+), 15 deletions(-)
--- a/include/linux/mutex.h
+++ b/include/linux/mutex.h
diff --git a/patches/sched-core-migrate_enable-must-access-takedown_cpu_t.patch b/patches/sched-core-migrate_enable-must-access-takedown_cpu_t.patch
index d67f881d5d69..684fd568a28f 100644
--- a/patches/sched-core-migrate_enable-must-access-takedown_cpu_t.patch
+++ b/patches/sched-core-migrate_enable-must-access-takedown_cpu_t.patch
@@ -29,7 +29,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
{
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -8136,9 +8136,11 @@ void migrate_enable(void)
+@@ -8147,9 +8147,11 @@ void migrate_enable(void)
p->migrate_disable = 0;
rq->nr_pinned--;
diff --git a/patches/sched-disable-rt-group-sched-on-rt.patch b/patches/sched-disable-rt-group-sched-on-rt.patch
index c6499b19e31b..3d3762448ea5 100644
--- a/patches/sched-disable-rt-group-sched-on-rt.patch
+++ b/patches/sched-disable-rt-group-sched-on-rt.patch
@@ -18,7 +18,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -924,6 +924,7 @@ config CFS_BANDWIDTH
+@@ -904,6 +904,7 @@ config CFS_BANDWIDTH
config RT_GROUP_SCHED
bool "Group scheduling for SCHED_RR/FIFO"
depends on CGROUP_SCHED
diff --git a/patches/sched-might-sleep-do-not-account-rcu-depth.patch b/patches/sched-might-sleep-do-not-account-rcu-depth.patch
index dc3f0d2a9ddd..fd8836978986 100644
--- a/patches/sched-might-sleep-do-not-account-rcu-depth.patch
+++ b/patches/sched-might-sleep-do-not-account-rcu-depth.patch
@@ -36,7 +36,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/* Internal to kernel */
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -6767,7 +6767,7 @@ void __init sched_init(void)
+@@ -6771,7 +6771,7 @@ void __init sched_init(void)
#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
static inline int preempt_count_equals(int preempt_offset)
{
diff --git a/patches/sched-migrate_enable-Remove-__schedule-call.patch b/patches/sched-migrate_enable-Remove-__schedule-call.patch
index d42ca0a2db26..8de39216798f 100644
--- a/patches/sched-migrate_enable-Remove-__schedule-call.patch
+++ b/patches/sched-migrate_enable-Remove-__schedule-call.patch
@@ -21,7 +21,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -8178,7 +8178,6 @@ void migrate_enable(void)
+@@ -8189,7 +8189,6 @@ void migrate_enable(void)
stop_one_cpu_nowait(task_cpu(p), migration_cpu_stop,
arg, work);
diff --git a/patches/sched-migrate_enable-Use-per-cpu-cpu_stop_work.patch b/patches/sched-migrate_enable-Use-per-cpu-cpu_stop_work.patch
index 8c14450fc6a6..dbd2a2a24e14 100644
--- a/patches/sched-migrate_enable-Use-per-cpu-cpu_stop_work.patch
+++ b/patches/sched-migrate_enable-Use-per-cpu-cpu_stop_work.patch
@@ -26,7 +26,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
-@@ -8119,6 +8119,9 @@ static void migrate_disabled_sched(struc
+@@ -8130,6 +8130,9 @@ static void migrate_disabled_sched(struc
p->migrate_disable_scheduled = 1;
}
@@ -36,7 +36,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
void migrate_enable(void)
{
struct task_struct *p = current;
-@@ -8157,22 +8160,25 @@ void migrate_enable(void)
+@@ -8168,22 +8171,25 @@ void migrate_enable(void)
WARN_ON(smp_processor_id() != cpu);
if (!is_cpu_allowed(p, cpu)) {
diff --git a/patches/sched-migrate_enable-Use-stop_one_cpu_nowait.patch b/patches/sched-migrate_enable-Use-stop_one_cpu_nowait.patch
index db6346011d43..2967fe4e8db0 100644
--- a/patches/sched-migrate_enable-Use-stop_one_cpu_nowait.patch
+++ b/patches/sched-migrate_enable-Use-stop_one_cpu_nowait.patch
@@ -62,7 +62,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
}
rq_unlock(rq, &rf);
raw_spin_unlock(&p->pi_lock);
-@@ -8151,7 +8157,8 @@ void migrate_enable(void)
+@@ -8162,7 +8168,8 @@ void migrate_enable(void)
WARN_ON(smp_processor_id() != cpu);
if (!is_cpu_allowed(p, cpu)) {
@@ -72,7 +72,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
struct rq_flags rf;
rq = task_rq_lock(p, &rf);
-@@ -8159,13 +8166,13 @@ void migrate_enable(void)
+@@ -8170,13 +8177,13 @@ void migrate_enable(void)
arg.dest_cpu = select_fallback_rq(cpu, p);
task_rq_unlock(rq, p, &rf);
diff --git a/patches/sched-mmdrop-delayed.patch b/patches/sched-mmdrop-delayed.patch
index dc7d47d98a77..3614fc61714c 100644
--- a/patches/sched-mmdrop-delayed.patch
+++ b/patches/sched-mmdrop-delayed.patch
@@ -92,7 +92,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
if (unlikely(prev_state == TASK_DEAD)) {
if (prev->sched_class->task_dead)
-@@ -6174,6 +6178,8 @@ void sched_setnuma(struct task_struct *p
+@@ -6178,6 +6182,8 @@ void sched_setnuma(struct task_struct *p
#endif /* CONFIG_NUMA_BALANCING */
#ifdef CONFIG_HOTPLUG_CPU
@@ -101,7 +101,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
/*
* Ensure that the idle task is using init_mm right before its CPU goes
* offline.
-@@ -6189,7 +6195,11 @@ void idle_task_exit(void)
+@@ -6193,7 +6199,11 @@ void idle_task_exit(void)
current->active_mm = &init_mm;
finish_arch_post_lock_switch();
}
@@ -114,7 +114,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
/*
-@@ -6495,6 +6505,10 @@ int sched_cpu_dying(unsigned int cpu)
+@@ -6499,6 +6509,10 @@ int sched_cpu_dying(unsigned int cpu)
update_max_interval();
nohz_balance_exit_idle(rq);
hrtick_clear(rq);
diff --git a/patches/serial-8250-only-atomic-lock-for-console.patch b/patches/serial-8250-only-atomic-lock-for-console.patch
index f149afaa5fbe..9abc5c608c3d 100644
--- a/patches/serial-8250-only-atomic-lock-for-console.patch
+++ b/patches/serial-8250-only-atomic-lock-for-console.patch
@@ -126,7 +126,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
-@@ -266,7 +266,7 @@ static void serial8250_timeout(struct ti
+@@ -265,7 +265,7 @@ static void serial8250_timeout(struct ti
static void serial8250_backup_timeout(struct timer_list *t)
{
struct uart_8250_port *up = from_timer(up, t, timer);
@@ -135,7 +135,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
unsigned long flags;
spin_lock_irqsave(&up->port.lock, flags);
-@@ -276,7 +276,7 @@ static void serial8250_backup_timeout(st
+@@ -275,7 +275,7 @@ static void serial8250_backup_timeout(st
* based handler.
*/
if (up->port.irq)
@@ -144,7 +144,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
iir = serial_in(up, UART_IIR);
-@@ -299,7 +299,7 @@ static void serial8250_backup_timeout(st
+@@ -298,7 +298,7 @@ static void serial8250_backup_timeout(st
serial8250_tx_chars(up);
if (up->port.irq)
@@ -315,7 +315,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
serial8250_rpm_put(up);
}
-@@ -2394,7 +2347,7 @@ void serial8250_do_shutdown(struct uart_
+@@ -2398,7 +2351,7 @@ void serial8250_do_shutdown(struct uart_
*/
spin_lock_irqsave(&port->lock, flags);
up->ier = 0;
@@ -324,7 +324,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
spin_unlock_irqrestore(&port->lock, flags);
synchronize_irq(port->irq);
-@@ -2679,7 +2632,7 @@ serial8250_do_set_termios(struct uart_po
+@@ -2683,7 +2636,7 @@ serial8250_do_set_termios(struct uart_po
if (up->capabilities & UART_CAP_RTOIE)
up->ier |= UART_IER_RTOIE;
@@ -333,7 +333,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (up->capabilities & UART_CAP_EFR) {
unsigned char efr = 0;
-@@ -3189,12 +3142,13 @@ void serial8250_console_write_atomic(str
+@@ -3193,12 +3146,13 @@ void serial8250_console_write_atomic(str
{
struct uart_port *port = &up->port;
unsigned int flags;
@@ -348,7 +348,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (atomic_fetch_inc(&up->console_printing)) {
uart_console_write(port, "\n", 1,
-@@ -3204,7 +3158,7 @@ void serial8250_console_write_atomic(str
+@@ -3208,7 +3162,7 @@ void serial8250_console_write_atomic(str
atomic_dec(&up->console_printing);
wait_for_xmitr(up, BOTH_EMPTY);
@@ -357,7 +357,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
console_atomic_unlock(flags);
}
-@@ -3220,13 +3174,14 @@ void serial8250_console_write(struct uar
+@@ -3224,13 +3178,14 @@ void serial8250_console_write(struct uar
{
struct uart_port *port = &up->port;
unsigned long flags;
@@ -373,7 +373,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/* check scratch reg to see if port powered off during system sleep */
if (up->canary && (up->canary != serial_port_in(port, UART_SCR))) {
-@@ -3243,7 +3198,7 @@ void serial8250_console_write(struct uar
+@@ -3247,7 +3202,7 @@ void serial8250_console_write(struct uar
* and restore the IER
*/
wait_for_xmitr(up, BOTH_EMPTY);
diff --git a/patches/serial-8250-remove-that-trylock-in-serial8250_consol.patch b/patches/serial-8250-remove-that-trylock-in-serial8250_consol.patch
index 064bc546b867..e84ce5a21893 100644
--- a/patches/serial-8250-remove-that-trylock-in-serial8250_consol.patch
+++ b/patches/serial-8250-remove-that-trylock-in-serial8250_consol.patch
@@ -13,7 +13,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
-@@ -3187,17 +3187,9 @@ void serial8250_console_write_atomic(str
+@@ -3191,17 +3191,9 @@ void serial8250_console_write_atomic(str
{
struct uart_port *port = &up->port;
unsigned int flags;
@@ -31,7 +31,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
touch_nmi_watchdog();
clear_ier(up);
-@@ -3212,9 +3204,6 @@ void serial8250_console_write_atomic(str
+@@ -3216,9 +3208,6 @@ void serial8250_console_write_atomic(str
wait_for_xmitr(up, BOTH_EMPTY);
restore_ier(up);
diff --git a/patches/series b/patches/series
index deda8e741909..58ea97ab810a 100644
--- a/patches/series
+++ b/patches/series
@@ -169,6 +169,8 @@ tpm-remove-tpm_dev_wq_lock.patch
# 20191211232345.24810-1-robh@kernel.org
of-Rework-and-simplify-phandle-cache-to-use-a-fixed-.patch
+mm-Warn-on-memory-allocation-in-non-preemptible-cont.patch
+
###############################################################
# Stuff broken upstream and upstream wants something different
###############################################################
diff --git a/patches/skbufhead-raw-lock.patch b/patches/skbufhead-raw-lock.patch
index 1a5a2ac99372..aab2b93bc9d7 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
-@@ -3016,6 +3016,7 @@ struct softnet_data {
+@@ -3018,6 +3018,7 @@ struct softnet_data {
unsigned int dropped;
struct sk_buff_head input_pkt_queue;
struct napi_struct backlog;
@@ -48,7 +48,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
{
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -219,14 +219,14 @@ static inline struct hlist_head *dev_ind
+@@ -218,14 +218,14 @@ static inline struct hlist_head *dev_ind
static inline void rps_lock(struct softnet_data *sd)
{
#ifdef CONFIG_RPS
@@ -65,7 +65,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
#endif
}
-@@ -5244,7 +5244,7 @@ static void flush_backlog(struct work_st
+@@ -5225,7 +5225,7 @@ static void flush_backlog(struct work_st
skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) {
if (skb->dev->reg_state == NETREG_UNREGISTERING) {
__skb_unlink(skb, &sd->input_pkt_queue);
@@ -74,7 +74,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
input_queue_head_incr(sd);
}
}
-@@ -5254,11 +5254,14 @@ static void flush_backlog(struct work_st
+@@ -5235,11 +5235,14 @@ static void flush_backlog(struct work_st
skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
if (skb->dev->reg_state == NETREG_UNREGISTERING) {
__skb_unlink(skb, &sd->process_queue);
@@ -90,7 +90,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
static void flush_all_backlogs(void)
-@@ -5879,7 +5882,9 @@ static int process_backlog(struct napi_s
+@@ -5860,7 +5863,9 @@ static int process_backlog(struct napi_s
while (again) {
struct sk_buff *skb;
@@ -100,7 +100,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
rcu_read_lock();
__netif_receive_skb(skb);
rcu_read_unlock();
-@@ -5887,9 +5892,9 @@ static int process_backlog(struct napi_s
+@@ -5868,9 +5873,9 @@ static int process_backlog(struct napi_s
if (++work >= quota)
return work;
@@ -111,7 +111,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
rps_lock(sd);
if (skb_queue_empty(&sd->input_pkt_queue)) {
/*
-@@ -6371,13 +6376,21 @@ static __latent_entropy void net_rx_acti
+@@ -6352,13 +6357,21 @@ static __latent_entropy void net_rx_acti
unsigned long time_limit = jiffies +
usecs_to_jiffies(netdev_budget_usecs);
int budget = netdev_budget;
@@ -133,7 +133,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
for (;;) {
struct napi_struct *n;
-@@ -9893,10 +9906,13 @@ static int dev_cpu_dead(unsigned int old
+@@ -9875,10 +9888,13 @@ static int dev_cpu_dead(unsigned int old
netif_rx_ni(skb);
input_queue_head_incr(oldsd);
}
@@ -148,7 +148,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
return 0;
}
-@@ -10207,8 +10223,9 @@ static int __init net_dev_init(void)
+@@ -10189,8 +10205,9 @@ static int __init net_dev_init(void)
INIT_WORK(flush, flush_backlog);
diff --git a/patches/slub-disable-SLUB_CPU_PARTIAL.patch b/patches/slub-disable-SLUB_CPU_PARTIAL.patch
index b066af953dfc..734f41a65fbf 100644
--- a/patches/slub-disable-SLUB_CPU_PARTIAL.patch
+++ b/patches/slub-disable-SLUB_CPU_PARTIAL.patch
@@ -36,7 +36,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -1893,7 +1893,7 @@ config SHUFFLE_PAGE_ALLOCATOR
+@@ -1873,7 +1873,7 @@ config SHUFFLE_PAGE_ALLOCATOR
config SLUB_CPU_PARTIAL
default y
diff --git a/patches/softirq-preempt-fix-3-re.patch b/patches/softirq-preempt-fix-3-re.patch
index 949d0a324742..a688e57b7f78 100644
--- a/patches/softirq-preempt-fix-3-re.patch
+++ b/patches/softirq-preempt-fix-3-re.patch
@@ -103,7 +103,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -2675,6 +2675,7 @@ static void __netif_reschedule(struct Qd
+@@ -2674,6 +2674,7 @@ static void __netif_reschedule(struct Qd
sd->output_queue_tailp = &q->next_sched;
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_restore(flags);
@@ -111,7 +111,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
void __netif_schedule(struct Qdisc *q)
-@@ -2737,6 +2738,7 @@ void __dev_kfree_skb_irq(struct sk_buff
+@@ -2736,6 +2737,7 @@ void __dev_kfree_skb_irq(struct sk_buff
__this_cpu_write(softnet_data.completion_queue, skb);
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_restore(flags);
@@ -119,7 +119,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
EXPORT_SYMBOL(__dev_kfree_skb_irq);
-@@ -4217,6 +4219,7 @@ static int enqueue_to_backlog(struct sk_
+@@ -4198,6 +4200,7 @@ static int enqueue_to_backlog(struct sk_
rps_unlock(sd);
local_irq_restore(flags);
@@ -127,7 +127,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
atomic_long_inc(&skb->dev->rx_dropped);
kfree_skb(skb);
-@@ -5841,12 +5844,14 @@ static void net_rps_action_and_irq_enabl
+@@ -5822,12 +5825,14 @@ static void net_rps_action_and_irq_enabl
sd->rps_ipi_list = NULL;
local_irq_enable();
@@ -142,7 +142,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
static bool sd_has_rps_ipi_waiting(struct softnet_data *sd)
-@@ -5924,6 +5929,7 @@ void __napi_schedule(struct napi_struct
+@@ -5905,6 +5910,7 @@ void __napi_schedule(struct napi_struct
local_irq_save(flags);
____napi_schedule(this_cpu_ptr(&softnet_data), n);
local_irq_restore(flags);
@@ -150,7 +150,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
}
EXPORT_SYMBOL(__napi_schedule);
-@@ -9875,6 +9881,7 @@ static int dev_cpu_dead(unsigned int old
+@@ -9857,6 +9863,7 @@ static int dev_cpu_dead(unsigned int old
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_enable();
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 79000c70415a..59dadde7f6cc 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
-@@ -4438,7 +4438,7 @@ static int netif_rx_internal(struct sk_b
+@@ -4419,7 +4419,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);
-@@ -4448,14 +4448,14 @@ static int netif_rx_internal(struct sk_b
+@@ -4429,14 +4429,14 @@ static int netif_rx_internal(struct sk_b
ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail);
rcu_read_unlock();