* [PATCH RT 1/2] fix printk flush of messages
@ 2012-05-17 1:05 Frank Rowand
2012-05-17 1:09 ` [PATCH RT 2/2] " Frank Rowand
0 siblings, 1 reply; 11+ messages in thread
From: Frank Rowand @ 2012-05-17 1:05 UTC (permalink / raw)
To: tglx, linux-kernel, linux-rt-users@vger.kernel.org
Reverse preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch
The problem addressed by that patch does not exist after applying
console-make-rt-friendly-update.patch
Signed-off-by: Frank Rowand <frank.rowand@am.sony.com>
---
drivers/tty/serial/cpm_uart/cpm_uart_core.c | 2 1 + 1 - 0 !
drivers/tty/sysrq.c | 23 0 + 23 - 0 !
include/linux/sysrq.h | 5 0 + 5 - 0 !
kernel/printk.c | 5 2 + 3 - 0 !
lib/Kconfig.debug | 22 0 + 22 - 0 !
5 files changed, 3 insertions(+), 54 deletions(-)
Index: b/drivers/tty/serial/cpm_uart/cpm_uart_core.c
===================================================================
--- a/drivers/tty/serial/cpm_uart/cpm_uart_core.c
+++ b/drivers/tty/serial/cpm_uart/cpm_uart_core.c
@@ -1226,7 +1226,7 @@ static void cpm_uart_console_write(struc
{
struct uart_cpm_port *pinfo = &cpm_uart_ports[co->index];
unsigned long flags;
- int nolock = oops_in_progress || sysrq_in_progress;
+ int nolock = oops_in_progress;
if (unlikely(nolock)) {
local_irq_save(flags);
Index: b/drivers/tty/sysrq.c
===================================================================
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
@@ -495,23 +495,6 @@ static void __sysrq_put_key_op(int key,
sysrq_key_table[i] = op_p;
}
-#ifdef CONFIG_MAGIC_SYSRQ_FORCE_PRINTK
-
-int sysrq_in_progress;
-
-static void set_sysrq_in_progress(int value)
-{
- sysrq_in_progress = value;
-}
-
-#else
-
-static void set_sysrq_in_progress(int value)
-{
-}
-
-#endif
-
void __handle_sysrq(int key, bool check_mask)
{
struct sysrq_key_op *op_p;
@@ -520,9 +503,6 @@ void __handle_sysrq(int key, bool check_
unsigned long flags;
spin_lock_irqsave(&sysrq_key_table_lock, flags);
-
- set_sysrq_in_progress(1);
-
/*
* Raise the apparent loglevel to maximum so that the sysrq header
* is shown to provide the user with positive feedback. We do not
@@ -564,9 +544,6 @@ void __handle_sysrq(int key, bool check_
printk("\n");
console_loglevel = orig_log_level;
}
-
- set_sysrq_in_progress(0);
-
spin_unlock_irqrestore(&sysrq_key_table_lock, flags);
}
Index: b/include/linux/sysrq.h
===================================================================
--- a/include/linux/sysrq.h
+++ b/include/linux/sysrq.h
@@ -38,11 +38,6 @@ struct sysrq_key_op {
int enable_mask;
};
-#ifdef CONFIG_MAGIC_SYSRQ_FORCE_PRINTK
-extern int sysrq_in_progress;
-#else
-#define sysrq_in_progress 0
-#endif
#ifdef CONFIG_MAGIC_SYSRQ
/* Generic SysRq interface -- you may call it from any device driver, supplying
Index: b/kernel/printk.c
===================================================================
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -21,7 +21,6 @@
#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/console.h>
-#include <linux/sysrq.h>
#include <linux/init.h>
#include <linux/jiffies.h>
#include <linux/nmi.h>
@@ -847,8 +846,8 @@ static int console_trylock_for_printk(un
{
int retval = 0, wake = 0;
#ifdef CONFIG_PREEMPT_RT_FULL
- int lock = (!early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
- !preempt_count()) || sysrq_in_progress;
+ int lock = !early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
+ !preempt_count();
#else
int lock = 1;
#endif
Index: b/lib/Kconfig.debug
===================================================================
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -62,28 +62,6 @@ config MAGIC_SYSRQ
keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
unless you really know what this hack does.
-config MAGIC_SYSRQ_FORCE_PRINTK
- bool "Force printk from Magic SysRq"
- depends on MAGIC_SYSRQ && PREEMPT_RT_FULL
- default n
- help
- Allow the output from Magic SysRq to be output immediately, even if
- this causes large latencies. This can cause performance problems
- for real-time processes.
-
- If PREEMPT_RT_FULL, printk() will not try to acquire the console lock
- when interrupts or preemption are disabled. If the console lock is
- not acquired the printk() output will be buffered, but will not be
- output immediately. Some drivers call into the Magic SysRq code
- with interrupts or preemption disabled, so the output of Magic SysRq
- will be buffered instead of printing immediately if this option is
- not selected.
-
- Even with this option selected, Magic SysRq output will be delayed
- if the attempt to acquire the console lock fails.
-
- Don't say Y unless you really know what this hack does.
-
config STRIP_ASM_SYMS
bool "Strip assembler-generated symbols during link"
default n
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH RT 2/2] fix printk flush of messages
2012-05-17 1:05 [PATCH RT 1/2] fix printk flush of messages Frank Rowand
@ 2012-05-17 1:09 ` Frank Rowand
2012-05-17 1:17 ` Frank Rowand
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Frank Rowand @ 2012-05-17 1:09 UTC (permalink / raw)
To: Rowand, Frank
Cc: tglx@linutronix.de, linux-kernel@vger.kernel.org,
linux-rt-users@vger.kernel.org
Updates console-make-rt-friendly.patch
#ifdef CONFIG_PREEMPT_RT_FULL, printk() output is never flushed by
printk() because:
# some liberties taken in this pseudo-code to make it easier to follow
printk()
vprintk()
raw_spin_lock(&logbuf_lock)
# increment preempt_count():
preempt_disable()
result = console_trylock_for_printk()
retval = 0
# lock will always be false, because preempt_count() will be >= 1
lock = ... && !preempt_count()
if (lock)
retval = 1
return retval
# result will always be false since lock will always be false
if (result)
console_unlock()
# this is where the printk() output would be flushed
On system boot some printk() output is flushed because register_console()
and tty_open() call console_unlock().
This change also fixes the problem that was previously fixed by
preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch
Signed-off-by: Frank Rowand <frank.rowand@am.sony.com>
---
kernel/printk.c | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)
Index: b/kernel/printk.c
===================================================================
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -847,7 +847,7 @@ static int console_trylock_for_printk(un
int retval = 0, wake = 0;
#ifdef CONFIG_PREEMPT_RT_FULL
int lock = !early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
- !preempt_count();
+ (preempt_count() <= 1);
#else
int lock = 1;
#endif
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH RT 2/2] fix printk flush of messages
2012-05-17 1:09 ` [PATCH RT 2/2] " Frank Rowand
@ 2012-05-17 1:17 ` Frank Rowand
2012-05-21 20:10 ` Venkat Subbiah
2012-08-21 14:30 ` Michael Thalmeier
2 siblings, 0 replies; 11+ messages in thread
From: Frank Rowand @ 2012-05-17 1:17 UTC (permalink / raw)
To: tglx@linutronix.de, linux-kernel@vger.kernel.org,
linux-rt-users@vger.kernel.org
The patches were tested on an ARM panda board for linux-3.4-rc5-rt6.
The panda board has a compile error in linux-3.4-rc5, which is fixed
by commit 13176a89e1c4a0011bd9f576730b0338ecb619ff in linux-3.4-rc6.
Without the patch, the printk() output from the following commands
does not appear on the console, until flushed by 'echo >/dev/console'
echo h >/proc/sysrq-trigger
echo p >/proc/sysrq-trigger
echo m >/proc/sysrq-trigger
With the patch, the output flushes to the console immediately.
-Frank
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH RT 2/2] fix printk flush of messages
2012-05-17 1:09 ` [PATCH RT 2/2] " Frank Rowand
2012-05-17 1:17 ` Frank Rowand
@ 2012-05-21 20:10 ` Venkat Subbiah
2012-05-21 20:59 ` Frank Rowand
2012-08-21 14:30 ` Michael Thalmeier
2 siblings, 1 reply; 11+ messages in thread
From: Venkat Subbiah @ 2012-05-21 20:10 UTC (permalink / raw)
To: frank.rowand@am.sony.com
Cc: Rowand, Frank, tglx@linutronix.de, linux-kernel@vger.kernel.org,
linux-rt-users@vger.kernel.org
On 05/16/2012 06:09 PM, Frank Rowand wrote:
> Updates console-make-rt-friendly.patch
>
> #ifdef CONFIG_PREEMPT_RT_FULL, printk() output is never flushed by
> printk() because:
So this is an issue for printk() itself and is not just for early_printk()?
# some liberties taken in this pseudo-code to make it easier to follow
printk()
vprintk()
raw_spin_lock(&logbuf_lock)
# increment preempt_count():
preempt_disable()
result = console_trylock_for_printk()
As I read it console_trylock_for_printk() is called from printk() but in
code it is called from vprintk()
> retval = 0
> # lock will always be false, because preempt_count() will be>= 1
> lock = ...&& !preempt_count()
> if (lock)
> retval = 1
> return retval
> # result will always be false since lock will always be false
> if (result)
> console_unlock()
> # this is where the printk() output would be flushed
>
>
> On system boot some printk() output is flushed because register_console()
> and tty_open() call console_unlock().
>
>
> This change also fixes the problem that was previously fixed by
> preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch
>
> Signed-off-by: Frank Rowand<frank.rowand@am.sony.com>
>
> ---
> kernel/printk.c | 2 1 + 1 - 0 !
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> Index: b/kernel/printk.c
> ===================================================================
> --- a/kernel/printk.c
> +++ b/kernel/printk.c
> @@ -847,7 +847,7 @@ static int console_trylock_for_printk(un
> int retval = 0, wake = 0;
> #ifdef CONFIG_PREEMPT_RT_FULL
> int lock = !early_boot_irqs_disabled&& !irqs_disabled_flags(flags)&&
> - !preempt_count();
> + (preempt_count()<= 1);
> #else
> int lock = 1;
> #endif
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH RT 2/2] fix printk flush of messages
2012-05-21 20:10 ` Venkat Subbiah
@ 2012-05-21 20:59 ` Frank Rowand
0 siblings, 0 replies; 11+ messages in thread
From: Frank Rowand @ 2012-05-21 20:59 UTC (permalink / raw)
To: Venkat Subbiah
Cc: Rowand, Frank, tglx@linutronix.de, linux-kernel@vger.kernel.org,
linux-rt-users@vger.kernel.org
On 05/21/12 13:10, Venkat Subbiah wrote:
> On 05/16/2012 06:09 PM, Frank Rowand wrote:
>> Updates console-make-rt-friendly.patch
>>
>> #ifdef CONFIG_PREEMPT_RT_FULL, printk() output is never flushed by
>> printk() because:
> So this is an issue for printk() itself and is not just for early_printk()?
>
>
> # some liberties taken in this pseudo-code to make it easier to follow
> printk()
> vprintk()
> raw_spin_lock(&logbuf_lock)
> # increment preempt_count():
> preempt_disable()
> result = console_trylock_for_printk()
>
> As I read it console_trylock_for_printk() is called from printk() but in
> code it is called from vprintk()
Yes, I goofed on the indentation, starting at console_trylock_for_printk().
It should have been:
# some liberties taken in this pseudo-code to make it easier to follow
printk()
vprintk()
raw_spin_lock(&logbuf_lock)
# increment preempt_count():
preempt_disable()
result = console_trylock_for_printk()
retval = 0
# lock will always be false, because preempt_count() will be >= 1
lock = ... && !preempt_count()
if (lock)
retval = 1
return retval
# result will always be false since lock will always be false
if (result)
console_unlock()
# this is where the printk() output would be flushed
Thanks,
Frank
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH RT 2/2] fix printk flush of messages
2012-05-17 1:09 ` [PATCH RT 2/2] " Frank Rowand
2012-05-17 1:17 ` Frank Rowand
2012-05-21 20:10 ` Venkat Subbiah
@ 2012-08-21 14:30 ` Michael Thalmeier
2012-08-21 22:56 ` Frank Rowand
2 siblings, 1 reply; 11+ messages in thread
From: Michael Thalmeier @ 2012-08-21 14:30 UTC (permalink / raw)
To: linux-kernel
Frank Rowand <frank.rowand <at> am.sony.com> writes:
>
>
> Updates console-make-rt-friendly.patch
>
> #ifdef CONFIG_PREEMPT_RT_FULL, printk() output is never flushed by
> printk() because:
> ...
>
> On system boot some printk() output is flushed because register_console()
> and tty_open() call console_unlock().
>
> This change also fixes the problem that was previously fixed by
> preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch
>
> Signed-off-by: Frank Rowand <frank.rowand <at> am.sony.com>
>
> ---
> kernel/printk.c | 2 1 + 1 - 0 !
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> Index: b/kernel/printk.c
> ===================================================================
> --- a/kernel/printk.c
> +++ b/kernel/printk.c
> @@ -847,7 +847,7 @@ static int console_trylock_for_printk(un
> int retval = 0, wake = 0;
> #ifdef CONFIG_PREEMPT_RT_FULL
> int lock = !early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
> - !preempt_count();
> + (preempt_count() <= 1);
> #else
> int lock = 1;
> #endif
>
>
I have seen that this patch is applied in the 3.4 stable rt series.
As we are using the 3.0 stable rt kernel I have tested this patch on this
kernel series (on a Freescale i.MX31 based board) and have not found any
problems so far.
Is there something I have missed why this patch has not found its way
in the 3.0 series ?
Thanks in advance,
Michael
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH RT 2/2] fix printk flush of messages
2012-08-21 14:30 ` Michael Thalmeier
@ 2012-08-21 22:56 ` Frank Rowand
0 siblings, 0 replies; 11+ messages in thread
From: Frank Rowand @ 2012-08-21 22:56 UTC (permalink / raw)
To: Michael Thalmeier; +Cc: linux-kernel@vger.kernel.org, rostedt, stable-rt
added recipients...
On 08/21/12 07:30, Michael Thalmeier wrote:
> Frank Rowand <frank.rowand <at> am.sony.com> writes:
>
>>
>>
>> Updates console-make-rt-friendly.patch
>>
>> #ifdef CONFIG_PREEMPT_RT_FULL, printk() output is never flushed by
>> printk() because:
>> ...
>>
>> On system boot some printk() output is flushed because register_console()
>> and tty_open() call console_unlock().
>>
>> This change also fixes the problem that was previously fixed by
>> preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch
>>
>> Signed-off-by: Frank Rowand <frank.rowand <at> am.sony.com>
>>
>> ---
>> kernel/printk.c | 2 1 + 1 - 0 !
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> Index: b/kernel/printk.c
>> ===================================================================
>> --- a/kernel/printk.c
>> +++ b/kernel/printk.c
>> @@ -847,7 +847,7 @@ static int console_trylock_for_printk(un
>> int retval = 0, wake = 0;
>> #ifdef CONFIG_PREEMPT_RT_FULL
>> int lock = !early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
>> - !preempt_count();
>> + (preempt_count() <= 1);
>> #else
>> int lock = 1;
>> #endif
>>
>>
>
> I have seen that this patch is applied in the 3.4 stable rt series.
> As we are using the 3.0 stable rt kernel I have tested this patch on this
> kernel series (on a Freescale i.MX31 based board) and have not found any
> problems so far.
> Is there something I have missed why this patch has not found its way
> in the 3.0 series ?
>
> Thanks in advance,
> Michael
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH RT 0/2] [ANNOUNCE] 3.2.28-rt42-rc1 stable review
@ 2012-08-25 3:12 Steven Rostedt
2012-08-25 3:12 ` [PATCH RT 1/2] fix printk flush of messages Steven Rostedt
0 siblings, 1 reply; 11+ messages in thread
From: Steven Rostedt @ 2012-08-25 3:12 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.28-rt42-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 8/29/2012 (The late Michael Jackson's B-Day, and also one of
my friends from high school, who hated Michael Jackson, and also
hated to be reminded that he shared the same B-Day).
Enjoy,
-- Steve
To build 3.2.28-rt42-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.28.xz
http://www.kernel.org/pub/linux/kernel/projects/rt/3.2/patch-3.2.28-rt42-rc1.patch.xz
You can also build from 3.2.28-rt41 by applying the incremental patch:
http://www.kernel.org/pub/linux/kernel/projects/rt/3.2/incr/patch-3.2.28-rt41-rt42-rc1.patch.xz
Changes from 3.2.28-rt41:
---
Frank Rowand (1):
fix printk flush of messages
Steven Rostedt (1):
Linux 3.2.27-rt41-rc1
----
kernel/printk.c | 2 +-
localversion-rt | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH RT 1/2] fix printk flush of messages
2012-08-25 3:12 [PATCH RT 0/2] [ANNOUNCE] 3.2.28-rt42-rc1 stable review Steven Rostedt
@ 2012-08-25 3:12 ` Steven Rostedt
0 siblings, 0 replies; 11+ messages in thread
From: Steven Rostedt @ 2012-08-25 3:12 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, John Kacur, Frank Rowand, Frank
[-- Attachment #1: 0001-fix-printk-flush-of-messages.patch --]
[-- Type: text/plain, Size: 1778 bytes --]
Updates console-make-rt-friendly.patch
#ifdef CONFIG_PREEMPT_RT_FULL, printk() output is never flushed by
printk() because:
# some liberties taken in this pseudo-code to make it easier to follow
printk()
vprintk()
raw_spin_lock(&logbuf_lock)
# increment preempt_count():
preempt_disable()
result = console_trylock_for_printk()
retval = 0
# lock will always be false, because preempt_count() will be >= 1
lock = ... && !preempt_count()
if (lock)
retval = 1
return retval
# result will always be false since lock will always be false
if (result)
console_unlock()
# this is where the printk() output would be flushed
On system boot some printk() output is flushed because register_console()
and tty_open() call console_unlock().
This change also fixes the problem that was previously fixed by
preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch
Signed-off-by: Frank Rowand <frank.rowand@am.sony.com>
Cc: Frank <Frank_Rowand@sonyusa.com>
Link: http://lkml.kernel.org/r/4FB44FD0.4090800@am.sony.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/printk.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/printk.c b/kernel/printk.c
index 9eabbbb..66e83e5 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -836,7 +836,7 @@ static int console_trylock_for_printk(unsigned int cpu, unsigned long flags)
int retval = 0, wake = 0;
#ifdef CONFIG_PREEMPT_RT_FULL
int lock = (!early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
- !preempt_count()) || sysrq_in_progress;
+ (preempt_count() <= 1)) || sysrq_in_progress;
#else
int lock = 1;
#endif
--
1.7.10.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH RT 0/2] [ANNOUNCE] 3.0.41-rt62-rc1 stable review
@ 2012-08-25 3:49 Steven Rostedt
2012-08-25 3:49 ` [PATCH RT 1/2] fix printk flush of messages Steven Rostedt
0 siblings, 1 reply; 11+ messages in thread
From: Steven Rostedt @ 2012-08-25 3:49 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.0.41-rt62-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 8/29/2012 (again on the late Michael Jackson's B-day, and my
buddy Derek's)
Enjoy,
-- Steve
To build 3.0.41-rt62-rc1 directly, the following patches should be applied:
http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.tar.xz
http://www.kernel.org/pub/linux/kernel/v3.0/patch-3.0.41.xz
http://www.kernel.org/pub/linux/kernel/projects/rt/3.0/patch-3.0.41-rt62-rc1.patch.xz
You can also build from 3.0.41-rt61 by applying the incremental patch:
http://www.kernel.org/pub/linux/kernel/projects/rt/3.0/incr/patch-3.0.41-rt61-rt62-rc1.patch.xz
Changes from 3.0.41-rt61:
---
Frank Rowand (1):
fix printk flush of messages
Steven Rostedt (1):
Linux 3.0.41-rt62-rc1
----
kernel/printk.c | 2 +-
localversion-rt | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH RT 1/2] fix printk flush of messages
2012-08-25 3:49 [PATCH RT 0/2] [ANNOUNCE] 3.0.41-rt62-rc1 stable review Steven Rostedt
@ 2012-08-25 3:49 ` Steven Rostedt
0 siblings, 0 replies; 11+ messages in thread
From: Steven Rostedt @ 2012-08-25 3:49 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, John Kacur, Frank Rowand, Frank
[-- Attachment #1: 0001-fix-printk-flush-of-messages.patch --]
[-- Type: text/plain, Size: 1755 bytes --]
Updates console-make-rt-friendly.patch
#ifdef CONFIG_PREEMPT_RT_FULL, printk() output is never flushed by
printk() because:
# some liberties taken in this pseudo-code to make it easier to follow
printk()
vprintk()
raw_spin_lock(&logbuf_lock)
# increment preempt_count():
preempt_disable()
result = console_trylock_for_printk()
retval = 0
# lock will always be false, because preempt_count() will be >= 1
lock = ... && !preempt_count()
if (lock)
retval = 1
return retval
# result will always be false since lock will always be false
if (result)
console_unlock()
# this is where the printk() output would be flushed
On system boot some printk() output is flushed because register_console()
and tty_open() call console_unlock().
This change also fixes the problem that was previously fixed by
preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch
Signed-off-by: Frank Rowand <frank.rowand@am.sony.com>
Cc: Frank <Frank_Rowand@sonyusa.com>
Link: http://lkml.kernel.org/r/4FB44FD0.4090800@am.sony.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/printk.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/printk.c b/kernel/printk.c
index 60f4290..f2c459f 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -835,7 +835,7 @@ static int console_trylock_for_printk(unsigned int cpu, unsigned long flags)
{
#ifdef CONFIG_PREEMPT_RT_FULL
int lock = (!early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
- !preempt_count()) || sysrq_in_progress;
+ (preempt_count() <= 1)) || sysrq_in_progress;
#else
int lock = 1;
#endif
--
1.7.10.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH RT 0/2] [ANNOUNCE] 3.0.42-rt64-rc1 stable review
@ 2012-09-13 18:52 Steven Rostedt
2012-09-13 18:52 ` [PATCH RT 1/2] fix printk flush of messages Steven Rostedt
0 siblings, 1 reply; 11+ messages in thread
From: Steven Rostedt @ 2012-09-13 18:52 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.0.42-rt64-rc1.
----
Note: The patches have not been uploaded to kernel.org yet. I've
recently changed the subkey that I use to sign the patches as the
old subkey is about to expire. But unfortunately, kernel.org has
not updated its key ring, and is refusing my current subkey.
I have a ticket open with kernel.org to resolve the issue. But until
then, this mailing is the only place the patches exist.
----
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 9/17/2012.
Enjoy,
-- Steve
To build 3.0.42-rt64-rc1 directly, the following patches should be applied:
http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.tar.xz
http://www.kernel.org/pub/linux/kernel/v3.0/patch-3.0.42.xz
http://www.kernel.org/pub/linux/kernel/projects/rt/3.0/patch-3.0.42-rt64-rc1.patch.xz
You can also build from 3.0.42-rt63 by applying the incremental patch:
http://www.kernel.org/pub/linux/kernel/projects/rt/3.0/incr/patch-3.0.42-rt63-rt64-rc1.patch.xz
Changes from 3.0.42-rt63:
---
Frank Rowand (1):
fix printk flush of messages
Steven Rostedt (1):
Linux 3.0.42-rt64-rc1
----
drivers/tty/serial/cpm_uart/cpm_uart_core.c | 2 +-
drivers/tty/sysrq.c | 23 -----------------------
include/linux/sysrq.h | 5 -----
kernel/printk.c | 5 ++---
lib/Kconfig.debug | 22 ----------------------
localversion-rt | 2 +-
6 files changed, 4 insertions(+), 55 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH RT 1/2] fix printk flush of messages
2012-09-13 18:52 [PATCH RT 0/2] [ANNOUNCE] 3.0.42-rt64-rc1 stable review Steven Rostedt
@ 2012-09-13 18:52 ` Steven Rostedt
0 siblings, 0 replies; 11+ messages in thread
From: Steven Rostedt @ 2012-09-13 18:52 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, John Kacur, Frank Rowand
[-- Attachment #1: 0001-fix-printk-flush-of-messages.patch --]
[-- Type: text/plain, Size: 4953 bytes --]
From: Frank Rowand <frank.rowand@am.sony.com>
Reverse preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch
The problem addressed by that patch does not exist after applying
console-make-rt-friendly-update.patch
Signed-off-by: Frank Rowand <frank.rowand@am.sony.com>
Link: http://lkml.kernel.org/r/4FB44EF1.9050809@am.sony.com
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
drivers/tty/serial/cpm_uart/cpm_uart_core.c | 2 +-
drivers/tty/sysrq.c | 23 -----------------------
include/linux/sysrq.h | 5 -----
kernel/printk.c | 5 ++---
lib/Kconfig.debug | 22 ----------------------
5 files changed, 3 insertions(+), 54 deletions(-)
diff --git a/drivers/tty/serial/cpm_uart/cpm_uart_core.c b/drivers/tty/serial/cpm_uart/cpm_uart_core.c
index 2a75c84..9488da7 100644
--- a/drivers/tty/serial/cpm_uart/cpm_uart_core.c
+++ b/drivers/tty/serial/cpm_uart/cpm_uart_core.c
@@ -1225,7 +1225,7 @@ static void cpm_uart_console_write(struct console *co, const char *s,
{
struct uart_cpm_port *pinfo = &cpm_uart_ports[co->index];
unsigned long flags;
- int nolock = oops_in_progress || sysrq_in_progress;
+ int nolock = oops_in_progress;
if (unlikely(nolock)) {
local_irq_save(flags);
diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
index 5219738..43db715 100644
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
@@ -492,23 +492,6 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
sysrq_key_table[i] = op_p;
}
-#ifdef CONFIG_MAGIC_SYSRQ_FORCE_PRINTK
-
-int sysrq_in_progress;
-
-static void set_sysrq_in_progress(int value)
-{
- sysrq_in_progress = value;
-}
-
-#else
-
-static void set_sysrq_in_progress(int value)
-{
-}
-
-#endif
-
void __handle_sysrq(int key, bool check_mask)
{
struct sysrq_key_op *op_p;
@@ -517,9 +500,6 @@ void __handle_sysrq(int key, bool check_mask)
unsigned long flags;
spin_lock_irqsave(&sysrq_key_table_lock, flags);
-
- set_sysrq_in_progress(1);
-
/*
* Raise the apparent loglevel to maximum so that the sysrq header
* is shown to provide the user with positive feedback. We do not
@@ -561,9 +541,6 @@ void __handle_sysrq(int key, bool check_mask)
printk("\n");
console_loglevel = orig_log_level;
}
-
- set_sysrq_in_progress(0);
-
spin_unlock_irqrestore(&sysrq_key_table_lock, flags);
}
diff --git a/include/linux/sysrq.h b/include/linux/sysrq.h
index d224c0b..7faf933 100644
--- a/include/linux/sysrq.h
+++ b/include/linux/sysrq.h
@@ -38,11 +38,6 @@ struct sysrq_key_op {
int enable_mask;
};
-#ifdef CONFIG_MAGIC_SYSRQ_FORCE_PRINTK
-extern int sysrq_in_progress;
-#else
-#define sysrq_in_progress 0
-#endif
#ifdef CONFIG_MAGIC_SYSRQ
/* Generic SysRq interface -- you may call it from any device driver, supplying
diff --git a/kernel/printk.c b/kernel/printk.c
index f2c459f..ea71fae 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -21,7 +21,6 @@
#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/console.h>
-#include <linux/sysrq.h>
#include <linux/init.h>
#include <linux/jiffies.h>
#include <linux/nmi.h>
@@ -834,8 +833,8 @@ static int console_trylock_for_printk(unsigned int cpu, unsigned long flags)
__releases(&logbuf_lock)
{
#ifdef CONFIG_PREEMPT_RT_FULL
- int lock = (!early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
- (preempt_count() <= 1)) || sysrq_in_progress;
+ int lock = !early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
+ (preempt_count() <= 1);
#else
int lock = 1;
#endif
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 383b565..1685473 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -62,28 +62,6 @@ config MAGIC_SYSRQ
keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
unless you really know what this hack does.
-config MAGIC_SYSRQ_FORCE_PRINTK
- bool "Force printk from Magic SysRq"
- depends on MAGIC_SYSRQ && PREEMPT_RT_FULL
- default n
- help
- Allow the output from Magic SysRq to be output immediately, even if
- this causes large latencies. This can cause performance problems
- for real-time processes.
-
- If PREEMPT_RT_FULL, printk() will not try to acquire the console lock
- when interrupts or preemption are disabled. If the console lock is
- not acquired the printk() output will be buffered, but will not be
- output immediately. Some drivers call into the Magic SysRq code
- with interrupts or preemption disabled, so the output of Magic SysRq
- will be buffered instead of printing immediately if this option is
- not selected.
-
- Even with this option selected, Magic SysRq output will be delayed
- if the attempt to acquire the console lock fails.
-
- Don't say Y unless you really know what this hack does.
-
config STRIP_ASM_SYMS
bool "Strip assembler-generated symbols during link"
default n
--
1.7.10.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH RT 0/2] [ANNOUNCE] 3.2.28-rt43-rc1 stable review
@ 2012-09-13 18:57 Steven Rostedt
2012-09-13 18:57 ` [PATCH RT 1/2] fix printk flush of messages Steven Rostedt
0 siblings, 1 reply; 11+ messages in thread
From: Steven Rostedt @ 2012-09-13 18:57 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.28-rt43-rc1.
Please scream at me if I messed something up. Please test the patches too.
----
Note: The patches have not been uploaded to kernel.org yet. I've
recently changed the subkey that I use to sign the patches as the
old subkey is about to expire. But unfortunately, kernel.org has
not updated its key ring, and is refusing my current subkey.
I have a ticket open with kernel.org to resolve the issue. But until
then, this mailing is the only place the patches exist.
----
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 9/17/2012.
Enjoy,
-- Steve
To build 3.2.28-rt43-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.28.xz
http://www.kernel.org/pub/linux/kernel/projects/rt/3.2/patch-3.2.28-rt43-rc1.patch.xz
You can also build from 3.2.28-rt42 by applying the incremental patch:
http://www.kernel.org/pub/linux/kernel/projects/rt/3.2/incr/patch-3.2.28-rt42-rt43-rc1.patch.xz
Changes from 3.2.28-rt42:
---
Frank Rowand (1):
fix printk flush of messages
Steven Rostedt (1):
Linux 3.2.28-rt43-rc1
----
drivers/tty/serial/cpm_uart/cpm_uart_core.c | 2 +-
drivers/tty/sysrq.c | 23 -----------------------
include/linux/sysrq.h | 5 -----
kernel/printk.c | 5 ++---
lib/Kconfig.debug | 22 ----------------------
localversion-rt | 2 +-
6 files changed, 4 insertions(+), 55 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH RT 1/2] fix printk flush of messages
2012-09-13 18:57 [PATCH RT 0/2] [ANNOUNCE] 3.2.28-rt43-rc1 stable review Steven Rostedt
@ 2012-09-13 18:57 ` Steven Rostedt
0 siblings, 0 replies; 11+ messages in thread
From: Steven Rostedt @ 2012-09-13 18:57 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, John Kacur, Frank Rowand
[-- Attachment #1: 0001-fix-printk-flush-of-messages.patch --]
[-- Type: text/plain, Size: 4954 bytes --]
From: Frank Rowand <frank.rowand@am.sony.com>
Reverse preempt-rt-allow-immediate-magic-sysrq-output-for-preempt_rt_full.patch
The problem addressed by that patch does not exist after applying
console-make-rt-friendly-update.patch
Signed-off-by: Frank Rowand <frank.rowand@am.sony.com>
Link: http://lkml.kernel.org/r/4FB44EF1.9050809@am.sony.com
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
drivers/tty/serial/cpm_uart/cpm_uart_core.c | 2 +-
drivers/tty/sysrq.c | 23 -----------------------
include/linux/sysrq.h | 5 -----
kernel/printk.c | 5 ++---
lib/Kconfig.debug | 22 ----------------------
5 files changed, 3 insertions(+), 54 deletions(-)
diff --git a/drivers/tty/serial/cpm_uart/cpm_uart_core.c b/drivers/tty/serial/cpm_uart/cpm_uart_core.c
index a8b0559..b418947 100644
--- a/drivers/tty/serial/cpm_uart/cpm_uart_core.c
+++ b/drivers/tty/serial/cpm_uart/cpm_uart_core.c
@@ -1226,7 +1226,7 @@ static void cpm_uart_console_write(struct console *co, const char *s,
{
struct uart_cpm_port *pinfo = &cpm_uart_ports[co->index];
unsigned long flags;
- int nolock = oops_in_progress || sysrq_in_progress;
+ int nolock = oops_in_progress;
if (unlikely(nolock)) {
local_irq_save(flags);
diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
index 5219738..43db715 100644
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
@@ -492,23 +492,6 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
sysrq_key_table[i] = op_p;
}
-#ifdef CONFIG_MAGIC_SYSRQ_FORCE_PRINTK
-
-int sysrq_in_progress;
-
-static void set_sysrq_in_progress(int value)
-{
- sysrq_in_progress = value;
-}
-
-#else
-
-static void set_sysrq_in_progress(int value)
-{
-}
-
-#endif
-
void __handle_sysrq(int key, bool check_mask)
{
struct sysrq_key_op *op_p;
@@ -517,9 +500,6 @@ void __handle_sysrq(int key, bool check_mask)
unsigned long flags;
spin_lock_irqsave(&sysrq_key_table_lock, flags);
-
- set_sysrq_in_progress(1);
-
/*
* Raise the apparent loglevel to maximum so that the sysrq header
* is shown to provide the user with positive feedback. We do not
@@ -561,9 +541,6 @@ void __handle_sysrq(int key, bool check_mask)
printk("\n");
console_loglevel = orig_log_level;
}
-
- set_sysrq_in_progress(0);
-
spin_unlock_irqrestore(&sysrq_key_table_lock, flags);
}
diff --git a/include/linux/sysrq.h b/include/linux/sysrq.h
index d224c0b..7faf933 100644
--- a/include/linux/sysrq.h
+++ b/include/linux/sysrq.h
@@ -38,11 +38,6 @@ struct sysrq_key_op {
int enable_mask;
};
-#ifdef CONFIG_MAGIC_SYSRQ_FORCE_PRINTK
-extern int sysrq_in_progress;
-#else
-#define sysrq_in_progress 0
-#endif
#ifdef CONFIG_MAGIC_SYSRQ
/* Generic SysRq interface -- you may call it from any device driver, supplying
diff --git a/kernel/printk.c b/kernel/printk.c
index 66e83e5..85d8795 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -21,7 +21,6 @@
#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/console.h>
-#include <linux/sysrq.h>
#include <linux/init.h>
#include <linux/jiffies.h>
#include <linux/nmi.h>
@@ -835,8 +834,8 @@ static int console_trylock_for_printk(unsigned int cpu, unsigned long flags)
{
int retval = 0, wake = 0;
#ifdef CONFIG_PREEMPT_RT_FULL
- int lock = (!early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
- (preempt_count() <= 1)) || sysrq_in_progress;
+ int lock = !early_boot_irqs_disabled && !irqs_disabled_flags(flags) &&
+ (preempt_count() <= 1);
#else
int lock = 1;
#endif
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 13a937b..c347db3 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -62,28 +62,6 @@ config MAGIC_SYSRQ
keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
unless you really know what this hack does.
-config MAGIC_SYSRQ_FORCE_PRINTK
- bool "Force printk from Magic SysRq"
- depends on MAGIC_SYSRQ && PREEMPT_RT_FULL
- default n
- help
- Allow the output from Magic SysRq to be output immediately, even if
- this causes large latencies. This can cause performance problems
- for real-time processes.
-
- If PREEMPT_RT_FULL, printk() will not try to acquire the console lock
- when interrupts or preemption are disabled. If the console lock is
- not acquired the printk() output will be buffered, but will not be
- output immediately. Some drivers call into the Magic SysRq code
- with interrupts or preemption disabled, so the output of Magic SysRq
- will be buffered instead of printing immediately if this option is
- not selected.
-
- Even with this option selected, Magic SysRq output will be delayed
- if the attempt to acquire the console lock fails.
-
- Don't say Y unless you really know what this hack does.
-
config STRIP_ASM_SYMS
bool "Strip assembler-generated symbols during link"
default n
--
1.7.10.4
^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2012-09-13 18:57 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-17 1:05 [PATCH RT 1/2] fix printk flush of messages Frank Rowand
2012-05-17 1:09 ` [PATCH RT 2/2] " Frank Rowand
2012-05-17 1:17 ` Frank Rowand
2012-05-21 20:10 ` Venkat Subbiah
2012-05-21 20:59 ` Frank Rowand
2012-08-21 14:30 ` Michael Thalmeier
2012-08-21 22:56 ` Frank Rowand
-- strict thread matches above, loose matches on Subject: below --
2012-08-25 3:12 [PATCH RT 0/2] [ANNOUNCE] 3.2.28-rt42-rc1 stable review Steven Rostedt
2012-08-25 3:12 ` [PATCH RT 1/2] fix printk flush of messages Steven Rostedt
2012-08-25 3:49 [PATCH RT 0/2] [ANNOUNCE] 3.0.41-rt62-rc1 stable review Steven Rostedt
2012-08-25 3:49 ` [PATCH RT 1/2] fix printk flush of messages Steven Rostedt
2012-09-13 18:52 [PATCH RT 0/2] [ANNOUNCE] 3.0.42-rt64-rc1 stable review Steven Rostedt
2012-09-13 18:52 ` [PATCH RT 1/2] fix printk flush of messages Steven Rostedt
2012-09-13 18:57 [PATCH RT 0/2] [ANNOUNCE] 3.2.28-rt43-rc1 stable review Steven Rostedt
2012-09-13 18:57 ` [PATCH RT 1/2] fix printk flush of messages 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.