Re: [PATCH] fbdev: Fix crash if fb_set_var() called before register_framebuffer()

From: Antonino A. Daplas
Date: Fri Nov 26 2004 - 15:30:33 EST


On Friday 26 November 2004 08:20, Mario Gaucher wrote:
> > The field info->modelist is initialized during register_framebuffer.
> > This field is also referred to in fb_set_var(). Thus a call to
> > fb_set_var() before register_framebuffer() will cause a crash. A few
> > drivers do this, notably controlfb. (This might fix reports of controlfb
> > crashing in powermacs).
>
> this patch works well... I can now boot my PowerMac 7300 using
> 2.6.10-rc2-bk8 (that I got on kernel.org) with this patch...

That's good.

>
> but I still has some problem with my Matrox Millenium PCI card using
> matroxfb driver... the kernel boot... but I get corrupted characters on
> the console... X load ok and display ok...

Try this first.

1. Open drivers/video/matrox/matrofb_accel.c
2. At the end of the file is this function:

static void matroxfb_imageblit(struct fb_info* info, const struct fb_image* image) {
MINFO_FROM_INFO(info);

DBG_HEAVY(__FUNCTION__);

if (image->depth == 1) {
u_int32_t fgx, bgx;

fgx = ((u_int32_t*)info->pseudo_palette)[image->fg_color];
bgx = ((u_int32_t*)info->pseudo_palette)[image->bg_color];
matroxfb_1bpp_imageblit(PMINFO fgx, bgx, image->data, image->width, image->height, image->dy, image->dx);
} else {
/* Danger! image->depth is useless: logo painting code always
passes framebuffer color depth here, although logo data are
always 8bpp and info->pseudo_palette is changed to contain
logo palette to be used (but only for true/direct-color... sic...).
So do it completely in software... */
cfb_imageblit(info, image);
}
}

3. Replace the above function to use software drawing so it becomes like this:

static void matroxfb_imageblit(struct fb_info* info, const struct fb_image* image) {
cfb_imageblit(info, image);
}

Tony


-
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/