Re: [Linux-fbdev-devel] [PATCH] i810fb: Fix console switch regression

From: Geert Uytterhoeven
Date: Sun Mar 16 2008 - 15:48:18 EST


On Sun, 16 Mar 2008, Stefan Bauer wrote:
> From: Stefan Bauer <stefan.bauer@xxxxxxxxxxxxxxxxx>
>
> Commit eaa0ff15c30dc9799eb4d12660edb73aeb6d32c5 ("fix ! versus & precedence in
> various places") introduced a regression in console switching when using
> i810fb. Every 5th to 10th console switch causes 'pixel waste' - the same line
> of multi-colored pixels repeated over the whole screen.
> This reverts eaa0ff1 for i810_main.c.
>
> Signed-off-by: Stefan Bauer <stefan.bauer@xxxxxxxxxxxxxxxxx>
> Cc: Antonino Daplas <adaplas@xxxxxxx>
>
> ---
> As I'm not subscribed to the LKML, please CC me, thanks.
>
> --- linux-2.6/drivers/video/i810/i810_main.c.orig
> +++ linux-2.6/drivers/video/i810/i810_main.c
> @@ -1476,7 +1476,7 @@ static int i810fb_cursor(struct fb_info
> struct i810fb_par *par = info->par;
> u8 __iomem *mmio = par->mmio_start_virtual;
>
> - if (!(par->dev_flags & LOCKUP))
> + if (!par->dev_flags & LOCKUP)
> return -ENXIO;

However, the original expression didn't make sense, as LOCKUP is 8 and
!par->dev_flags is either 0 or 1, so `!par->dev_flags & LOCKUP' is
always 0.

I took a quick look at the usage of the LOCKUP flag. Apparently when a
lock-up is detected, this flag is set, and the driver will fall back to
software operations instead of hardware accelerated operations.

Is it possible the intended code was

if (par->dev_flags & LOCKUP)
return -ENXIO;

?

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/