summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2020-02-28 15:38:15 +0100
committerSebastian Andrzej Siewior <bigeasy@linutronix.de>2020-02-28 15:38:15 +0100
commit0b108d3e078f03311c28cbcbbc66b6b39ddb6a87 (patch)
treea30c6e03698374b2513af4b7b303afe651c520e1
parente4fd35f5dc378c7bfcc3f0549589b61c6b23b694 (diff)
downloadlinux-rt-0b108d3e078f03311c28cbcbbc66b6b39ddb6a87.tar.gz
[ANNOUNCE] v5.4.22-rt12v5.4.22-rt12-patches
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-rw-r--r--patches/0006-jbd2-Make-state-lock-a-spinlock.patch20
-rw-r--r--patches/0009-printk-remove-exclusive-console-hack.patch10
-rw-r--r--patches/localversion.patch2
-rw-r--r--patches/powerpc-pseries-iommu-Use-a-locallock-instead-local_ir.patch29
4 files changed, 31 insertions, 30 deletions
diff --git a/patches/0006-jbd2-Make-state-lock-a-spinlock.patch b/patches/0006-jbd2-Make-state-lock-a-spinlock.patch
index 7980a2fde7d1..f34e9e906efa 100644
--- a/patches/0006-jbd2-Make-state-lock-a-spinlock.patch
+++ b/patches/0006-jbd2-Make-state-lock-a-spinlock.patch
@@ -72,7 +72,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
J_ASSERT_JH(jh, jh->b_transaction == commit_transaction);
/*
-@@ -1026,7 +1026,7 @@ void jbd2_journal_commit_transaction(jou
+@@ -1030,7 +1030,7 @@ void jbd2_journal_commit_transaction(jou
}
JBUFFER_TRACE(jh, "refile or unfile buffer");
drop_ref = __jbd2_journal_refile_buffer(jh);
@@ -117,7 +117,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return do_escape | (done_copy_out << 1);
}
-@@ -2411,6 +2411,8 @@ static struct journal_head *journal_allo
+@@ -2407,6 +2407,8 @@ static struct journal_head *journal_allo
ret = kmem_cache_zalloc(jbd2_journal_head_cache,
GFP_NOFS | __GFP_NOFAIL);
}
@@ -394,10 +394,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return -EBUSY;
}
/*
-@@ -2297,10 +2295,10 @@ static int journal_unmap_buffer(journal_
- set_buffer_freed(bh);
+@@ -2299,10 +2297,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;
- jbd2_journal_put_journal_head(jh);
spin_unlock(&journal->j_list_lock);
- jbd_unlock_bh_state(bh);
@@ -407,7 +407,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return 0;
} else {
/* Good, the buffer belongs to the running transaction.
-@@ -2324,10 +2322,10 @@ static int journal_unmap_buffer(journal_
+@@ -2326,10 +2324,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));
-@@ -2414,7 +2412,7 @@ void __jbd2_journal_file_buffer(struct j
+@@ -2416,7 +2414,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);
-@@ -2476,11 +2474,11 @@ void __jbd2_journal_file_buffer(struct j
+@@ -2478,11 +2476,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>
}
/*
-@@ -2490,7 +2488,7 @@ void jbd2_journal_file_buffer(struct jou
+@@ -2492,7 +2490,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
-@@ -2501,7 +2499,7 @@ bool __jbd2_journal_refile_buffer(struct
+@@ -2503,7 +2501,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);
-@@ -2547,17 +2545,13 @@ bool __jbd2_journal_refile_buffer(struct
+@@ -2549,17 +2547,13 @@ bool __jbd2_journal_refile_buffer(struct
*/
void jbd2_journal_refile_buffer(journal_t *journal, struct journal_head *jh)
{
diff --git a/patches/0009-printk-remove-exclusive-console-hack.patch b/patches/0009-printk-remove-exclusive-console-hack.patch
index bb7249de8a4c..7369eb3e806f 100644
--- a/patches/0009-printk-remove-exclusive-console-hack.patch
+++ b/patches/0009-printk-remove-exclusive-console-hack.patch
@@ -70,10 +70,10 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
len += msg_print_text(msg,
console_msg_format & MSG_FORMAT_SYSLOG,
printk_time, text + len, sizeof(text) - len);
-@@ -2811,17 +2796,6 @@ void register_console(struct console *ne
+@@ -2809,17 +2794,6 @@ void register_console(struct console *ne
+ * for us.
+ */
logbuf_lock_irqsave(flags);
- console_seq = syslog_seq;
- console_idx = syslog_idx;
- /*
- * We're about to replay the log buffer. Only do this to the
- * just-registered console to avoid excessive message spam to
@@ -85,9 +85,9 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
- */
- exclusive_console = newcon;
- exclusive_console_stop_seq = console_seq;
+ console_seq = syslog_seq;
+ console_idx = syslog_idx;
logbuf_unlock_irqrestore(flags);
- }
- console_unlock();
@@ -2833,6 +2807,10 @@ void register_console(struct console *ne
* boot consoles, real consoles, etc - this is to ensure that end
* users know there might be something in the kernel's log buffer that
diff --git a/patches/localversion.patch b/patches/localversion.patch
index 58842b503a27..12bd473a33f5 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 @@
-+-rt11
++-rt12
diff --git a/patches/powerpc-pseries-iommu-Use-a-locallock-instead-local_ir.patch b/patches/powerpc-pseries-iommu-Use-a-locallock-instead-local_ir.patch
index be6aeb403347..fd3c23b74bc2 100644
--- a/patches/powerpc-pseries-iommu-Use-a-locallock-instead-local_ir.patch
+++ b/patches/powerpc-pseries-iommu-Use-a-locallock-instead-local_ir.patch
@@ -12,8 +12,8 @@ Use local_irq_save() instead of local_irq_disable().
Cc: stable-rt@vger.kernel.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
- arch/powerpc/platforms/pseries/iommu.c | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
+ arch/powerpc/platforms/pseries/iommu.c | 17 ++++++++++-------
+ 1 file changed, 10 insertions(+), 7 deletions(-)
--- a/arch/powerpc/platforms/pseries/iommu.c
+++ b/arch/powerpc/platforms/pseries/iommu.c
@@ -25,7 +25,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
#include <asm/io.h>
#include <asm/prom.h>
#include <asm/rtas.h>
-@@ -178,6 +179,7 @@ static int tce_build_pSeriesLP(struct io
+@@ -177,6 +178,7 @@ static int tce_build_pSeriesLP(unsigned
}
static DEFINE_PER_CPU(__be64 *, tce_page);
@@ -33,26 +33,27 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
static int tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum,
long npages, unsigned long uaddr,
-@@ -198,7 +200,8 @@ static int tce_buildmulti_pSeriesLP(stru
+@@ -198,8 +200,8 @@ static int tce_buildmulti_pSeriesLP(stru
direction, attrs);
}
- local_irq_save(flags); /* to protect tcep and the page behind it */
+-
+ /* to protect tcep and the page behind it */
+ local_lock_irqsave(tcp_page_lock, flags);
-
tcep = __this_cpu_read(tce_page);
-@@ -209,7 +212,7 @@ static int tce_buildmulti_pSeriesLP(stru
+ /* This is safe to do since interrupts are off when we're called
+@@ -209,7 +211,7 @@ static int tce_buildmulti_pSeriesLP(stru
tcep = (__be64 *)__get_free_page(GFP_ATOMIC);
/* If allocation fails, fall back to the loop implementation */
if (!tcep) {
- local_irq_restore(flags);
+ local_unlock_irqrestore(tcp_page_lock, flags);
- return tce_build_pSeriesLP(tbl, tcenum, npages, uaddr,
- direction, attrs);
- }
-@@ -243,7 +246,7 @@ static int tce_buildmulti_pSeriesLP(stru
+ return tce_build_pSeriesLP(tbl->it_index, tcenum,
+ tbl->it_page_shift,
+ npages, uaddr, direction, attrs);
+@@ -244,7 +246,7 @@ static int tce_buildmulti_pSeriesLP(stru
tcenum += limit;
} while (npages > 0 && !rc);
@@ -61,9 +62,9 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
if (unlikely(rc == H_NOT_ENOUGH_RESOURCES)) {
ret = (int)rc;
-@@ -401,13 +404,14 @@ static int tce_setrange_multi_pSeriesLP(
- u64 rc = 0;
- long l, limit;
+@@ -415,13 +417,14 @@ static int tce_setrange_multi_pSeriesLP(
+ DMA_BIDIRECTIONAL, 0);
+ }
- local_irq_disable(); /* to protect tcep and the page behind it */
+ /* to protect tcep and the page behind it */
@@ -78,7 +79,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
return -ENOMEM;
}
__this_cpu_write(tce_page, tcep);
-@@ -453,7 +457,7 @@ static int tce_setrange_multi_pSeriesLP(
+@@ -467,7 +470,7 @@ static int tce_setrange_multi_pSeriesLP(
/* error cleanup: caller will clear whole range */