[CC to debian-powerpc as this was reported there as well ...] > > I'm getting this badness in redraw_screen when my iBook wakes up with > > 2.6.0-ben3: > > > > Badness in redraw_screen at drivers/char/vt.c:596 > > Call trace: > > [c000bd50] dump_stack+0x18/0x28 > > [c0008c44] check_bug_trap+0x84/0xac > > [c0008d34] ProgramCheckException+0xc8/0x180 > > [c00082cc] ret_from_except_full+0x0/0x4c > > [c015a94c] redraw_screen+0x2c/0x1e0 > > [c00376b4] pm_restore_console+0x38/0x48 > > [c039ef14] 0xc039ef14 > > [c039f468] 0xc039f468 > > [c039fdc8] 0xc039fdc8 > > [c00701d0] sys_ioctl+0x278/0x2f4 > > [c0007d0c] ret_from_syscall+0x0/0x4c > > > > Similar badness can be had in set_origin (vt.c:568) and set_palette > (vt.c:2851), on my Lombard. That's called from pm_prepare_console, for a > change. > > > (The three unnamed frames are inside pmac_wakeup_devices, > > powerbook_sleep_Core99 and pmu_ioctl). Does pm_restore_console need > > to acquire the console lock, or is that the duty of the callers? > > None of the other callers does this so I'd guess it needs to be done in > pm_restore_console (and pm_prepare_console).
The following patch works for me... should we submit that to lkml? Michael --- kernel/power/console.c.org 2003-12-31 14:08:04.000000000 +0100 +++ kernel/power/console.c 2003-12-31 14:09:26.000000000 +0100 @@ -20,12 +20,12 @@ #ifdef SUSPEND_CONSOLE orig_fgconsole = fg_console; + acquire_console_sem(); if (vc_allocate(SUSPEND_CONSOLE)) /* we can't have a free VC for now. Too bad, * we don't want to mess the screen for now. */ return 1; - acquire_console_sem(); set_console(SUSPEND_CONSOLE); release_console_sem(); if (vt_waitactive(SUSPEND_CONSOLE)) { @@ -42,12 +42,14 @@ { console_loglevel = orig_loglevel; #ifdef SUSPEND_CONSOLE + acquire_console_sem(); set_console(orig_fgconsole); /* FIXME: * This following part is left over from swsusp. Is it really needed? */ update_screen(fg_console); + release_console_sem(); #endif return; }