* [PATCH RT 5/6] mm: swap: Initialize local locks early
2013-02-06 21:58 [PATCH RT 0/6] [ANNOUNCE] 3.4.29-rt42-rc1 stable review Steven Rostedt
@ 2013-02-06 21:58 ` Steven Rostedt
0 siblings, 0 replies; 10+ messages in thread
From: Steven Rostedt @ 2013-02-06 21:58 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, John Kacur, stable-rt
[-- Attachment #1: 0005-mm-swap-Initialize-local-locks-early.patch --]
[-- Type: text/plain, Size: 1029 bytes --]
From: Thomas Gleixner <tglx@linutronix.de>
Cc: stable-rt@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
mm/swap.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/mm/swap.c b/mm/swap.c
index 2051da9..62dc70c 100644
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -767,6 +767,15 @@ unsigned pagevec_lookup_tag(struct pagevec *pvec, struct address_space *mapping,
}
EXPORT_SYMBOL(pagevec_lookup_tag);
+/* Early setup for the local locks */
+static int __init swap_init_locks(void)
+{
+ local_irq_lock_init(rotate_lock);
+ local_irq_lock_init(swap_lock);
+ return 1;
+}
+early_initcall(swap_init_locks);
+
/*
* Perform any setup for the swap system
*/
@@ -774,9 +783,6 @@ void __init swap_setup(void)
{
unsigned long megs = totalram_pages >> (20 - PAGE_SHIFT);
- local_irq_lock_init(rotate_lock);
- local_irq_lock_init(swap_lock);
-
#ifdef CONFIG_SWAP
bdi_init(swapper_space.backing_dev_info);
#endif
--
1.7.10.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH RT 0/6] [ANNOUNCE] 3.2.38-rt57-rc1 stable review
@ 2013-02-06 22:02 Steven Rostedt
2013-02-06 22:02 ` [PATCH RT 1/6] drivers-tty-pl011-irq-disable-madness.patch Steven Rostedt
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: Steven Rostedt @ 2013-02-06 22:02 UTC (permalink / raw)
To: linux-kernel, linux-rt-users; +Cc: Thomas Gleixner, Carsten Emde, John Kacur
Dear RT Folks,
This is the RT stable review cycle of patch 3.2.38-rt57-rc1.
Please scream at me if I messed something up. Please test the patches too.
The -rc release will be uploaded to kernel.org and will be deleted when
the final release is out. This is just a review release (or release candidate).
The pre-releases will not be pushed to the git repository, only the
final release is.
If all goes well, this patch will be converted to the next main release
on 2/8/2013.
Enjoy,
-- Steve
To build 3.2.38-rt57-rc1 directly, the following patches should be applied:
http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.2.tar.xz
http://www.kernel.org/pub/linux/kernel/v3.x/patch-3.2.38.xz
http://www.kernel.org/pub/linux/kernel/projects/rt/3.2/patch-3.2.38-rt57-rc1.patch.xz
You can also build from 3.2.38-rt56 by applying the incremental patch:
http://www.kernel.org/pub/linux/kernel/projects/rt/3.2/incr/patch-3.2.38-rt56-rt57-rc1.patch.xz
Changes from 3.2.38-rt56:
---
Steven Rostedt (1):
Linux 3.2.38-rt57-rc1
Thomas Gleixner (5):
drivers-tty-pl011-irq-disable-madness.patch
mmci: Remove bogus local_irq_save()
sched: Init idle->on_rq in init_idle()
sched: Check for idle task in might_sleep()
mm: swap: Initialize local locks early
----
drivers/mmc/host/mmci.c | 5 -----
drivers/tty/serial/amba-pl011.c | 15 ++++++++++-----
kernel/sched.c | 4 +++-
localversion-rt | 2 +-
mm/swap.c | 12 +++++++++---
5 files changed, 23 insertions(+), 15 deletions(-)
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH RT 1/6] drivers-tty-pl011-irq-disable-madness.patch
2013-02-06 22:02 [PATCH RT 0/6] [ANNOUNCE] 3.2.38-rt57-rc1 stable review Steven Rostedt
@ 2013-02-06 22:02 ` Steven Rostedt
2013-02-06 22:02 ` Steven Rostedt
` (4 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Steven Rostedt @ 2013-02-06 22:02 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, John Kacur, stable-rt
[-- Attachment #1: 0001-drivers-tty-pl011-irq-disable-madness.patch.patch --]
[-- Type: text/plain, Size: 1480 bytes --]
From: Thomas Gleixner <tglx@linutronix.de>
Cc: stable-rt@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
drivers/tty/serial/amba-pl011.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
index fe9f111..1fbaf66 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
@@ -1761,13 +1761,19 @@ pl011_console_write(struct console *co, const char *s, unsigned int count)
clk_enable(uap->clk);
- local_irq_save(flags);
+ /*
+ * local_irq_save(flags);
+ *
+ * This local_irq_save() is nonsense. If we come in via sysrq
+ * handling then interrupts are already disabled. Aside of
+ * that the port.sysrq check is racy on SMP regardless.
+ */
if (uap->port.sysrq)
locked = 0;
else if (oops_in_progress)
- locked = spin_trylock(&uap->port.lock);
+ locked = spin_trylock_irqsave(&uap->port.lock, flags);
else
- spin_lock(&uap->port.lock);
+ spin_lock_irqsave(&uap->port.lock, flags);
/*
* First save the CR then disable the interrupts
@@ -1789,8 +1795,7 @@ pl011_console_write(struct console *co, const char *s, unsigned int count)
writew(old_cr, uap->port.membase + UART011_CR);
if (locked)
- spin_unlock(&uap->port.lock);
- local_irq_restore(flags);
+ spin_unlock_irqrestore(&uap->port.lock, flags);
clk_disable(uap->clk);
}
--
1.7.10.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH RT 2/6] mmci: Remove bogus local_irq_save()
2013-02-06 22:02 [PATCH RT 0/6] [ANNOUNCE] 3.2.38-rt57-rc1 stable review Steven Rostedt
@ 2013-02-06 22:02 ` Steven Rostedt
2013-02-06 22:02 ` Steven Rostedt
` (4 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Steven Rostedt @ 2013-02-06 22:02 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, John Kacur, stable-rt
[-- Attachment #1: 0002-mmci-Remove-bogus-local_irq_save.patch --]
[-- Type: text/plain, Size: 1088 bytes --]
From: Thomas Gleixner <tglx@linutronix.de>
On !RT interrupt runs with interrupts disabled. On RT it's in a
thread, so no need to disable interrupts at all.
Cc: stable-rt@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
drivers/mmc/host/mmci.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index 0726e59..5d7bf83 100644
--- a/drivers/mmc/host/mmci.c
+++ b/drivers/mmc/host/mmci.c
@@ -859,15 +859,12 @@ static irqreturn_t mmci_pio_irq(int irq, void *dev_id)
struct sg_mapping_iter *sg_miter = &host->sg_miter;
struct variant_data *variant = host->variant;
void __iomem *base = host->base;
- unsigned long flags;
u32 status;
status = readl(base + MMCISTATUS);
dev_dbg(mmc_dev(host->mmc), "irq1 (pio) %08x\n", status);
- local_irq_save(flags);
-
do {
unsigned int remain, len;
char *buffer;
@@ -907,8 +904,6 @@ static irqreturn_t mmci_pio_irq(int irq, void *dev_id)
sg_miter_stop(sg_miter);
- local_irq_restore(flags);
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH RT 2/6] mmci: Remove bogus local_irq_save()
@ 2013-02-06 22:02 ` Steven Rostedt
0 siblings, 0 replies; 10+ messages in thread
From: Steven Rostedt @ 2013-02-06 22:02 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, John Kacur, stable-rt
[-- Attachment #1: 0002-mmci-Remove-bogus-local_irq_save.patch --]
[-- Type: text/plain, Size: 1243 bytes --]
From: Thomas Gleixner <tglx@linutronix.de>
On !RT interrupt runs with interrupts disabled. On RT it's in a
thread, so no need to disable interrupts at all.
Cc: stable-rt@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
drivers/mmc/host/mmci.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index 0726e59..5d7bf83 100644
--- a/drivers/mmc/host/mmci.c
+++ b/drivers/mmc/host/mmci.c
@@ -859,15 +859,12 @@ static irqreturn_t mmci_pio_irq(int irq, void *dev_id)
struct sg_mapping_iter *sg_miter = &host->sg_miter;
struct variant_data *variant = host->variant;
void __iomem *base = host->base;
- unsigned long flags;
u32 status;
status = readl(base + MMCISTATUS);
dev_dbg(mmc_dev(host->mmc), "irq1 (pio) %08x\n", status);
- local_irq_save(flags);
-
do {
unsigned int remain, len;
char *buffer;
@@ -907,8 +904,6 @@ static irqreturn_t mmci_pio_irq(int irq, void *dev_id)
sg_miter_stop(sg_miter);
- local_irq_restore(flags);
-
/*
* If we have less than the fifo 'half-full' threshold to transfer,
* trigger a PIO interrupt as soon as any data is available.
--
1.7.10.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH RT 3/6] sched: Init idle->on_rq in init_idle()
2013-02-06 22:02 [PATCH RT 0/6] [ANNOUNCE] 3.2.38-rt57-rc1 stable review Steven Rostedt
2013-02-06 22:02 ` [PATCH RT 1/6] drivers-tty-pl011-irq-disable-madness.patch Steven Rostedt
2013-02-06 22:02 ` Steven Rostedt
@ 2013-02-06 22:02 ` Steven Rostedt
2013-02-06 22:02 ` [PATCH RT 4/6] sched: Check for idle task in might_sleep() Steven Rostedt
` (2 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Steven Rostedt @ 2013-02-06 22:02 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, John Kacur, stable-rt
[-- Attachment #1: 0003-sched-Init-idle-on_rq-in-init_idle.patch --]
[-- Type: text/plain, Size: 577 bytes --]
From: Thomas Gleixner <tglx@linutronix.de>
Cc: stable-rt@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
kernel/sched.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/kernel/sched.c b/kernel/sched.c
index b318b4a..20b228f 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -6519,6 +6519,7 @@ void __cpuinit init_idle(struct task_struct *idle, int cpu)
rcu_read_unlock();
rq->curr = rq->idle = idle;
+ idle->on_rq = 1;
#if defined(CONFIG_SMP)
idle->on_cpu = 1;
#endif
--
1.7.10.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH RT 4/6] sched: Check for idle task in might_sleep()
2013-02-06 22:02 [PATCH RT 0/6] [ANNOUNCE] 3.2.38-rt57-rc1 stable review Steven Rostedt
` (2 preceding siblings ...)
2013-02-06 22:02 ` [PATCH RT 3/6] sched: Init idle->on_rq in init_idle() Steven Rostedt
@ 2013-02-06 22:02 ` Steven Rostedt
2013-02-06 22:02 ` Steven Rostedt
2013-02-06 22:02 ` [PATCH RT 6/6] Linux 3.2.38-rt57-rc1 Steven Rostedt
5 siblings, 0 replies; 10+ messages in thread
From: Steven Rostedt @ 2013-02-06 22:02 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, John Kacur, stable-rt
[-- Attachment #1: 0004-sched-Check-for-idle-task-in-might_sleep.patch --]
[-- Type: text/plain, Size: 958 bytes --]
From: Thomas Gleixner <tglx@linutronix.de>
Idle is not allowed to call sleeping functions ever!
Cc: stable-rt@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
kernel/sched.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/sched.c b/kernel/sched.c
index 20b228f..14219ed 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -8937,7 +8937,8 @@ void __might_sleep(const char *file, int line, int preempt_offset)
static unsigned long prev_jiffy; /* ratelimiting */
rcu_sleep_check(); /* WARN_ON_ONCE() by default, no rate limit reqd. */
- if ((preempt_count_equals(preempt_offset) && !irqs_disabled()) ||
+ if ((preempt_count_equals(preempt_offset) && !irqs_disabled() &&
+ !is_idle_task(current)) ||
system_state != SYSTEM_RUNNING || oops_in_progress)
return;
if (time_before(jiffies, prev_jiffy + HZ) && prev_jiffy)
--
1.7.10.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH RT 5/6] mm: swap: Initialize local locks early
2013-02-06 22:02 [PATCH RT 0/6] [ANNOUNCE] 3.2.38-rt57-rc1 stable review Steven Rostedt
@ 2013-02-06 22:02 ` Steven Rostedt
2013-02-06 22:02 ` Steven Rostedt
` (4 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Steven Rostedt @ 2013-02-06 22:02 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, John Kacur, stable-rt
[-- Attachment #1: 0005-mm-swap-Initialize-local-locks-early.patch --]
[-- Type: text/plain, Size: 1014 bytes --]
From: Thomas Gleixner <tglx@linutronix.de>
Cc: stable-rt@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
mm/swap.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/mm/swap.c b/mm/swap.c
index e3f7d6f..c428897 100644
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -772,6 +772,15 @@ unsigned pagevec_lookup(struct pagevec *pvec, struct address_space *mapping,
EXPORT_SYMBOL(pagevec_lookup);
+/* Early setup for the local locks */
+static int __init swap_init_locks(void)
+{
+ local_irq_lock_init(rotate_lock);
+ local_irq_lock_init(swap_lock);
+ return 1;
+}
+early_initcall(swap_init_locks);
+
unsigned pagevec_lookup_tag(struct pagevec *pvec, struct address_space *mapping,
pgoff_t *index, int tag, unsigned nr_pages)
{
@@ -789,9 +798,6 @@ void __init swap_setup(void)
{
unsigned long megs = totalram_pages >> (20 - PAGE_SHIFT);
- local_irq_lock_init(rotate_lock);
- local_irq_lock_init(swap_lock);
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH RT 5/6] mm: swap: Initialize local locks early
@ 2013-02-06 22:02 ` Steven Rostedt
0 siblings, 0 replies; 10+ messages in thread
From: Steven Rostedt @ 2013-02-06 22:02 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, John Kacur, stable-rt
[-- Attachment #1: 0005-mm-swap-Initialize-local-locks-early.patch --]
[-- Type: text/plain, Size: 1103 bytes --]
From: Thomas Gleixner <tglx@linutronix.de>
Cc: stable-rt@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
mm/swap.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/mm/swap.c b/mm/swap.c
index e3f7d6f..c428897 100644
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -772,6 +772,15 @@ unsigned pagevec_lookup(struct pagevec *pvec, struct address_space *mapping,
EXPORT_SYMBOL(pagevec_lookup);
+/* Early setup for the local locks */
+static int __init swap_init_locks(void)
+{
+ local_irq_lock_init(rotate_lock);
+ local_irq_lock_init(swap_lock);
+ return 1;
+}
+early_initcall(swap_init_locks);
+
unsigned pagevec_lookup_tag(struct pagevec *pvec, struct address_space *mapping,
pgoff_t *index, int tag, unsigned nr_pages)
{
@@ -789,9 +798,6 @@ void __init swap_setup(void)
{
unsigned long megs = totalram_pages >> (20 - PAGE_SHIFT);
- local_irq_lock_init(rotate_lock);
- local_irq_lock_init(swap_lock);
-
#ifdef CONFIG_SWAP
bdi_init(swapper_space.backing_dev_info);
#endif
--
1.7.10.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH RT 6/6] Linux 3.2.38-rt57-rc1
2013-02-06 22:02 [PATCH RT 0/6] [ANNOUNCE] 3.2.38-rt57-rc1 stable review Steven Rostedt
` (4 preceding siblings ...)
2013-02-06 22:02 ` Steven Rostedt
@ 2013-02-06 22:02 ` Steven Rostedt
5 siblings, 0 replies; 10+ messages in thread
From: Steven Rostedt @ 2013-02-06 22:02 UTC (permalink / raw)
To: linux-kernel, linux-rt-users; +Cc: Thomas Gleixner, Carsten Emde, John Kacur
[-- Attachment #1: 0006-Linux-3.2.38-rt57-rc1.patch --]
[-- Type: text/plain, Size: 287 bytes --]
From: Steven Rostedt <srostedt@redhat.com>
---
localversion-rt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/localversion-rt b/localversion-rt
index fdb0f88..c12fc9d 100644
--- a/localversion-rt
+++ b/localversion-rt
@@ -1 +1 @@
--rt56
+-rt57-rc1
--
1.7.10.4
^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-02-06 22:04 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-06 22:02 [PATCH RT 0/6] [ANNOUNCE] 3.2.38-rt57-rc1 stable review Steven Rostedt
2013-02-06 22:02 ` [PATCH RT 1/6] drivers-tty-pl011-irq-disable-madness.patch Steven Rostedt
2013-02-06 22:02 ` [PATCH RT 2/6] mmci: Remove bogus local_irq_save() Steven Rostedt
2013-02-06 22:02 ` Steven Rostedt
2013-02-06 22:02 ` [PATCH RT 3/6] sched: Init idle->on_rq in init_idle() Steven Rostedt
2013-02-06 22:02 ` [PATCH RT 4/6] sched: Check for idle task in might_sleep() Steven Rostedt
2013-02-06 22:02 ` [PATCH RT 5/6] mm: swap: Initialize local locks early Steven Rostedt
2013-02-06 22:02 ` Steven Rostedt
2013-02-06 22:02 ` [PATCH RT 6/6] Linux 3.2.38-rt57-rc1 Steven Rostedt
-- strict thread matches above, loose matches on Subject: below --
2013-02-06 21:58 [PATCH RT 0/6] [ANNOUNCE] 3.4.29-rt42-rc1 stable review Steven Rostedt
2013-02-06 21:58 ` [PATCH RT 5/6] mm: swap: Initialize local locks early Steven Rostedt
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.