Re: [PATCH 6/6] PM/FB/gxfb: add config option that allows disabling of VT switch during suspend
From: Andres Salomon <hidden>
Date: 2008-03-10 21:40:44
Also in:
lkml
On Mon, 10 Mar 2008 14:19:39 -0700 Andrew Morton [off-list ref] wrote:
On Sat, 8 Mar 2008 20:49:27 -0500 Andres Salomon [off-list ref] wrote:quoted
This is purely for suspend/resume time optimization.quoted
From 874aa20022a2501a30704163ed31a7baba7de9e5 Mon Sep 17 00:00:00 2001From: Andres Salomon <redacted> Date: Wed, 5 Mar 2008 16:40:25 -0500 Subject: [PATCH] PM: add config option that allows disabling of VT switch during suspend Prior to suspend, we allocate and switch to a new VT; after suspend, we switch back to the original VT. This can be slow, and is completely unnecessary if the framebuffer we're using can restore video properly. This adds CONFIG_DISABLE_SUSPEND_VT_SWITCH which allows the user to select whether or not to do that switch. This has been tested with the gxfb driver (on a Geode GX dev board and OLPC prototype machines). In order for the user to even see this option, a framebuffer has to declare support for it (via CONFIG_FBDEV_SUPPORTS_NOSWITCH). Signed-off-by: Andres Salomon <redacted> --- drivers/char/Kconfig | 21 +++++++++++++++++++++ drivers/video/geode/Kconfig | 1 + include/linux/suspend.h | 2 +- kernel/power/console.c | 2 +- 4 files changed, 24 insertions(+), 2 deletions(-)diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig index 47c6be8..7fe0e85 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig@@ -58,6 +58,27 @@ config VT_CONSOLE If unsure, say Y. +config FBDEV_SUPPORTS_NOSWITCH + bool + default n + +config DISABLE_SUSPEND_VT_SWITCH + bool "Disable the console switch prior to suspend (EXPERIMENTAL)" + depends on VT_CONSOLE && PM && EXPERIMENTAL && FBDEV_SUPPORTS_NOSWITCH + default n + ---help--- + This option disables the automatic switch to VT console that happens + prior to Linux going into a suspend/sleep. Your + video card/framebuffer must be able to properly restore the + display (even if X is doing something crazy!) in this scenario. + This is useful for saving precious milliseconds during suspend and + resume; however, if your framebuffer lacks support, it could leave + your display in a weird state. If you're even seeing this option, + it means at least one of your selected framebuffer drivers supports + restoring the display. + + If unsure, say N.It would be far preferable to do this via a kernel boot parameter rather than via a kernel rebuild.
Well, it shouldn't be supported at _all_ unless the framebuffer driver
supports it; you're asking for it to be converted to something like the
following?
#ifdef CONFIG_FBDEV_SUPPORTS_NOSWITCH
static int no_vt_switch;
#endif
int pm_prepare_console(void)
{
#ifdef CONFIG_FBDEV_SUPPORTS_NOSWITCH
if (no_vt_switch)
return 0;
#endif
...
}
#ifdef CONFIG_FBDEV_SUPPORTS_NOSWITCH
module_param(no_vt_switch, int, 0);
MODULE_PARM_DESC(no_vt_switch, "...");
#endif
If so, that means extra #ifdef's sprinkled throughout the code. Note
that most framebuffer drivers won't be supporting this, and those that
do will almost certainly always want vt switching turned off..
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/