patch to fix early printks with PREMPT_RT_FULL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

With PREMPT_RT_FULL I notice couple of issues when early printk is turned on

1)  printks show up only after the full console is enabled
2) There are double prints for each of the prinkts before the full console was enabled.

The attached patch seem to fix the issue, but I am not sure whether this is completely with
the lock being acquired in console_trylock_for_printk().

Thanks,
Venkat

>From 876c0653e4482357823d1d36858aed7b5cd8d1fa Mon Sep 17 00:00:00 2001
From: Venkat Subbiah <venkat.subbiah@xxxxxxxxxx>
Date: Fri, 4 May 2012 17:53:16 -0700
Subject: [PATCH] printk: Allow early console prints with PREEMPT_RT_FULL

Signed-off-by: Venkat Subbiah <venkat.subbiah@xxxxxxxxxx>
---
 kernel/printk.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/kernel/printk.c b/kernel/printk.c
index d3f22ec..d2dda2f 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -832,6 +832,8 @@ static inline int can_use_console(unsigned int cpu)
 	return cpu_online(cpu) || have_callable_console();
 }
 
+static int boot_console_active = 1;
+
 /*
  * Try to get console ownership to actually show the kernel
  * messages from a 'printk'. Return true (and with the
@@ -848,7 +850,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()) || sysrq_in_progress || boot_console_active;
 #else
 	int lock = 1;
 #endif
@@ -1653,6 +1655,7 @@ void register_console(struct console *newcon)
 		 */
 		printk(KERN_INFO "console [%s%d] enabled, bootconsole disabled\n",
 			newcon->name, newcon->index);
+		boot_console_active = 0;
 		for_each_console(bcon)
 			if (bcon->flags & CON_BOOT)
 				unregister_console(bcon);
-- 
1.7.7.6


[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux