[PATCH] PM: make it possible to disable console suspending

Change suspend_console() so that it waits for all consoles to flush the
remaining messages and make it possible to switch the console suspending off
with the help of a Kconfig option.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Cc: Stefan Seyfried <seife@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Rafael J. Wysocki 2006-09-25 23:32:56 -07:00 committed by Linus Torvalds
parent 940864ddab
commit c8eb8b4025
3 changed files with 19 additions and 0 deletions

View file

@ -120,9 +120,14 @@ extern void console_stop(struct console *);
extern void console_start(struct console *); extern void console_start(struct console *);
extern int is_console_locked(void); extern int is_console_locked(void);
#ifndef CONFIG_DISABLE_CONSOLE_SUSPEND
/* Suspend and resume console messages over PM events */ /* Suspend and resume console messages over PM events */
extern void suspend_console(void); extern void suspend_console(void);
extern void resume_console(void); extern void resume_console(void);
#else
static inline void suspend_console(void) {}
static inline void resume_console(void) {}
#endif /* CONFIG_DISABLE_CONSOLE_SUSPEND */
/* Some debug stub to catch some of the obvious races in the VT code */ /* Some debug stub to catch some of the obvious races in the VT code */
#if 1 #if 1

View file

@ -36,6 +36,17 @@ config PM_DEBUG
code. This is helpful when debugging and reporting various PM bugs, code. This is helpful when debugging and reporting various PM bugs,
like suspend support. like suspend support.
config DISABLE_CONSOLE_SUSPEND
bool "Keep console(s) enabled during suspend/resume (DANGEROUS)"
depends on PM && PM_DEBUG
default n
---help---
This option turns off the console suspend mechanism that prevents
debug messages from reaching the console during the suspend/resume
operations. This may be helpful when debugging device drivers'
suspend/resume routines, but may itself lead to problems, for example
if netconsole is used.
config PM_TRACE config PM_TRACE
bool "Suspend/resume event tracing" bool "Suspend/resume event tracing"
depends on PM && PM_DEBUG && X86_32 && EXPERIMENTAL depends on PM && PM_DEBUG && X86_32 && EXPERIMENTAL

View file

@ -721,6 +721,7 @@ int __init add_preferred_console(char *name, int idx, char *options)
return 0; return 0;
} }
#ifndef CONFIG_DISABLE_CONSOLE_SUSPEND
/** /**
* suspend_console - suspend the console subsystem * suspend_console - suspend the console subsystem
* *
@ -728,6 +729,7 @@ int __init add_preferred_console(char *name, int idx, char *options)
*/ */
void suspend_console(void) void suspend_console(void)
{ {
printk("Suspending console(s)\n");
acquire_console_sem(); acquire_console_sem();
console_suspended = 1; console_suspended = 1;
} }
@ -737,6 +739,7 @@ void resume_console(void)
console_suspended = 0; console_suspended = 0;
release_console_sem(); release_console_sem();
} }
#endif /* CONFIG_DISABLE_CONSOLE_SUSPEND */
/** /**
* acquire_console_sem - lock the console system for exclusive use. * acquire_console_sem - lock the console system for exclusive use.