Messages in this thread Patch in this message | | | From | H Hartley Sweeten <> | Date | Tue, 6 Sep 2011 13:26:12 -0500 | Subject | RE: [PATCH] vt_ioctl.c: fix compile error with pm_set_vt_switch() |
| |
On Monday, September 05, 2011 7:54 AM, Arnd Bergmann wrote: > On Saturday 03 September 2011, Alan Cox wrote: >> On Fri, 2 Sep 2011 14:02:42 -0700 >> H Hartley Sweeten <hartleys@visionengravers.com> wrote: >> >>> When CONFIG_PM_SLEEP, CONFIG_VT, and CONFIG_VT_CONSOLE are not enabled >>> the function pm_set_vt_switch() is defined as an inline in linux/suspend.h. This causes >>> a compile error if CONFIG_VT is enabled. >>> >>> drivers/tty/vt/vt_ioctl.c:1794: error: redefinition of 'pm_set_vt_switch' >>> include/linux/suspend.h:17: error: previous definition of 'pm_set_vt_switch' was here >>> >>> Fix this with an #if defined guard around the function in vt_ioctl.c. >> >> Can you put the #if uglies into the buggy suspend.h header instead so the >> code proper is kept clean of ifdefs. > > I had discovered the same problem earlier but did not get to submit a > fix yet. I think the patch below should do it. Hartley, can you confirm that?
Arnd,
Your patch below does appear to fix the problem.
Tested-by: H Hartley Sweeten <hsweeten@visionengravers.com>
There is still a bit of #if ugliness with the pm_{prepare,restore}_console.
The source file kernel/power/console.c is compiled when CONFIG_PM_SLEEP is enabled. But that file ends up empty if CONFIG_VT and CONFIG_VT_CONSOLE are not defined.
I wonder if it would be cleaner to make a new entry in kernel/power/Kconfig:
config PM_SLEEP_CONSOLE def_bool y depends on PM_SLEEP && VT && VT_CONSOLE
Then use that config option in the Makefile and in suspend.h.
Regards, Hartley
Arnd --- vt/suspend: pm_set_vt_switch does not depend on CONFIG_PM_SLEEP
This avoid having multiple conflicting definitions of pm_set_vt_switch when CONFIG_VT is set but CONFIG_PM_SLEEP or CONFIG_VT_CONSOLE are not.
drivers/tty/vt/vt_ioctl.c:1794: error: redefinition of 'pm_set_vt_switch' include/linux/suspend.h:17: error: previous definition of 'pm_set_vt_switch' was here
Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- diff --git a/include/linux/suspend.h b/include/linux/suspend.h index 6bbcef2..69f3b39 100644 --- a/include/linux/suspend.h +++ b/include/linux/suspend.h @@ -8,15 +8,18 @@ #include <linux/mm.h> #include <asm/errno.h> -#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_VT) && defined(CONFIG_VT_CONSOLE) +#if defined(CONFIG_VT) extern void pm_set_vt_switch(int); -extern int pm_prepare_console(void); -extern void pm_restore_console(void); #else static inline void pm_set_vt_switch(int do_switch) { } +#endif +#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_VT) && defined(CONFIG_VT_CONSOLE) +extern int pm_prepare_console(void); +extern void pm_restore_console(void); +#else static inline int pm_prepare_console(void) { return 0;
| |