|
From: Antonino D. <ad...@po...> - 2002-12-11 09:55:50
|
On Wed, 2002-12-11 at 04:11, Benjamin Herrenschmidt wrote: > > I don't know if happened with earlier fbdev versions for you, but one > possibility is that X reconfigures the display base, and possibly more > bits of the card's internal memory map. Either fbdev should restore > that, or adapt to what X set. On R128's and radeon's, this is things > like DISPLAY_BASE_ADDR. > Although this is in the faqs for a long time, (behavior is undefined if fbdev is used with software that touches the video card) this is an issue that needs to be taken into consideration. Without the set_var() hook, fbcon will depend on the contents of info->var if there is a need to touch the hardware or not. And switching from X to the console will not change the var, but since X actually did touch the hardware, you just messed up your screen or worse, crashed the hardware. Before, most drivers just unconditionally refresh the hardware at every switch during set_var(). I've been pointing this out for a long time now, do we unconditionally do a check_var()/set_par() after every console switch, or do we rely on fbdev and X cooperating with each other? Or better, maybe fbcon has a way of knowing if the switch came from Xfree86. Tony |