2.6.0-ben3: Badness in redraw_screen

Michael Schmitz schmitz at opal.biophys.uni-duesseldorf.de
Thu Jan 1 01:15:34 EST 2004


[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;
 }


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-dev mailing list