matroxfb console oops in 2.4.2x

David Woodhouse (dwmw2@infradead.org)
Thu, 19 Jun 2003 11:06:28 +0100


If you have matroxfb with acceleration enabled but no other console, and
set console=tty0 on the command line, it dies because its putcs
functions are called before matroxfb_init_putc() is called.

Below is a workaround which lets the machine boot. It's obviously not a
fix.

--- drivers/video/matrox/matroxfb_accel.c~ Wed Jun 18 17:16:40 2003
+++ drivers/video/matrox/matroxfb_accel.c Thu Jun 19 10:57:54 2003
@@ -487,6 +487,9 @@

DBG_HEAVY("matroxfb_cfb8_putc");

+ if (!ACCESS_FBINFO(curr.putc))
+ return;
+
fgx = attr_fgcol(p, c);
bgx = attr_bgcol(p, c);
fgx |= (fgx << 8);
@@ -504,6 +507,9 @@

DBG_HEAVY("matroxfb_cfb16_putc");

+ if (!ACCESS_FBINFO(curr.putc))
+ return;
+
fgx = ((u_int16_t*)p->dispsw_data)[attr_fgcol(p, c)];
bgx = ((u_int16_t*)p->dispsw_data)[attr_bgcol(p, c)];
fgx |= (fgx << 16);
@@ -519,6 +525,9 @@

DBG_HEAVY("matroxfb_cfb32_putc");

+ if (!ACCESS_FBINFO(curr.putc))
+ return;
+
fgx = ((u_int32_t*)p->dispsw_data)[attr_fgcol(p, c)];
bgx = ((u_int32_t*)p->dispsw_data)[attr_bgcol(p, c)];
ACCESS_FBINFO(curr.putc)(fgx, bgx, p, c, yy, xx);
@@ -662,6 +671,9 @@

DBG_HEAVY("matroxfb_cfb8_putcs");

+ if (!ACCESS_FBINFO(curr.putcs))
+ return;
+
c = scr_readw(s);
fgx = attr_fgcol(p, c);
bgx = attr_bgcol(p, c);
@@ -681,6 +693,9 @@

DBG_HEAVY("matroxfb_cfb16_putcs");

+ if (!ACCESS_FBINFO(curr.putcs))
+ return;
+
c = scr_readw(s);
fgx = ((u_int16_t*)p->dispsw_data)[attr_fgcol(p, c)];
bgx = ((u_int16_t*)p->dispsw_data)[attr_bgcol(p, c)];
@@ -697,6 +712,9 @@
MINFO_FROM_DISP(p);

DBG_HEAVY("matroxfb_cfb32_putcs");
+
+ if (!ACCESS_FBINFO(curr.putcs))
+ return;

c = scr_readw(s);
fgx = ((u_int32_t*)p->dispsw_data)[attr_fgcol(p, c)];

-- 
dwmw2

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/