* [PATCH 1/1 2.6.15-rc4-git1] Fixing switch to KD_TEXT, enhanced version
@ 2005-12-10 7:20 Knut Petersen
2005-12-10 14:32 ` Antonino A. Daplas
0 siblings, 1 reply; 2+ messages in thread
From: Knut Petersen @ 2005-12-10 7:20 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel, linux-fbdev-devel, Antonino A. Daplas
Every framebuffer driver relies on the assumption that the
set_par() function of the driver is called before drawing
functions and other functions dependent on the hardware
state are executed.
Whenever you switch from X to a framebuffer console for the
very first time, there is a chance that a broken X system has
_not_ set the mode to KD_GRAPHICS, thus the vt and framebuffer
code executes a screen redraw and several other functions
before a set_par() is executed. This is believed to be not a
bug of linux but a bug of X/xdm. At least some X releases
used by SuSE and Debian show this behaviour.
There was a 2nd case, but that has been fixed by Antonino
Daplas on 10-dec-2005.
This patch allows drivers to set a flag to inform fbcon_switch()
that they prefer a set_par() call on every console switch,
working around the problems caused by the broken X releases.
The flag will be used by the next release of cyblafb and might
help other drivers that assume a hardware state different to
the one used by X.
As the default behaviour does not change, this patch should
be acceptable to everybody.
Signed-off-by: Knut Petersen <Knut_Petersen@t-online.de>
diff -uprN -X linux/Documentation/dontdiff -x '*.bak' -x '*.ctx' linuxorig/drivers/video/console/fbcon.c linux/drivers/video/console/fbcon.c
--- linuxorig/drivers/video/console/fbcon.c 2005-12-02 12:18:04.000000000 +0100
+++ linux/drivers/video/console/fbcon.c 2005-12-10 06:51:30.000000000 +0100
@@ -2103,7 +2103,8 @@ static int fbcon_switch(struct vc_data *
fb_set_var(info, &var);
ops->var = info->var;
- if (old_info != NULL && old_info != info) {
+ if (old_info != NULL && (old_info != info ||
+ info->flags & FBINFO_MISC_ALLWAYS_SETPAR)) {
if (info->fbops->fb_set_par)
info->fbops->fb_set_par(info);
fbcon_del_cursor_timer(old_info);
diff -uprN -X linux/Documentation/dontdiff -x '*.bak' -x '*.ctx' linuxorig/include/linux/fb.h linux/include/linux/fb.h
--- linuxorig/include/linux/fb.h 2005-12-02 12:18:22.000000000 +0100
+++ linux/include/linux/fb.h 2005-12-10 06:55:24.000000000 +0100
@@ -725,6 +725,18 @@ struct fb_tile_ops {
#define FBINFO_MISC_USEREVENT 0x10000 /* event request
from userspace */
#define FBINFO_MISC_TILEBLITTING 0x20000 /* use tile blitting */
+/* A driver may set this flag to indicate that it does want a set_par to be
+ * called every time when fbcon_switch is executed. The advantage is that with
+ * this flag set you can really be shure that set_par is always called before
+ * any of the functions dependant on the correct hardware state or altering
+ * that state, even if you are using some broken X releases. The disadvantage
+ * is that it introduces unwanted delays to every console switch if set_par
+ * is slow. It is a good idea to try this flag in the drivers initialization
+ * code whenever there is a bug report related to switching between X and the
+ * framebuffer console.
+ */
+#define FBINFO_MISC_ALLWAYS_SETPAR 0x40000
+
struct fb_info {
int node;
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH 1/1 2.6.15-rc4-git1] Fixing switch to KD_TEXT, enhanced version
2005-12-10 7:20 [PATCH 1/1 2.6.15-rc4-git1] Fixing switch to KD_TEXT, enhanced version Knut Petersen
@ 2005-12-10 14:32 ` Antonino A. Daplas
0 siblings, 0 replies; 2+ messages in thread
From: Antonino A. Daplas @ 2005-12-10 14:32 UTC (permalink / raw)
To: Knut Petersen; +Cc: Andrew Morton, linux-kernel, linux-fbdev-devel
Knut Petersen wrote:
> Every framebuffer driver relies on the assumption that the
> set_par() function of the driver is called before drawing
> functions and other functions dependent on the hardware
> state are executed.
>
> Whenever you switch from X to a framebuffer console for the
> very first time, there is a chance that a broken X system has
> _not_ set the mode to KD_GRAPHICS, thus the vt and framebuffer
> code executes a screen redraw and several other functions
> before a set_par() is executed. This is believed to be not a
> bug of linux but a bug of X/xdm. At least some X releases
> used by SuSE and Debian show this behaviour.
>
> There was a 2nd case, but that has been fixed by Antonino
> Daplas on 10-dec-2005.
>
> This patch allows drivers to set a flag to inform fbcon_switch()
> that they prefer a set_par() call on every console switch,
> working around the problems caused by the broken X releases.
>
> The flag will be used by the next release of cyblafb and might
> help other drivers that assume a hardware state different to
> the one used by X.
>
> As the default behaviour does not change, this patch should
> be acceptable to everybody.
>
> Signed-off-by: Knut Petersen <Knut_Petersen@t-online.de>
Acked-by: Antonino Daplas <adaplas@pol.net>
> +#define FBINFO_MISC_ALLWAYS_SETPAR 0x40000
^^^^^^^
Please post a follow up patch to fix the spelling.
Tony
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2005-12-10 14:32 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-12-10 7:20 [PATCH 1/1 2.6.15-rc4-git1] Fixing switch to KD_TEXT, enhanced version Knut Petersen
2005-12-10 14:32 ` Antonino A. Daplas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox