I'm including patch which I'm posting separate to Linus - it defaults
to noinit, so there should not be more problems with SGRAM/SDRAM detection.
It is probably best solution as I'm not aware how to distinguish between
SDRAM and SGRAM - except reading BIOS info - if someone is aware, please
share this with me, I know nothing about this topic except diagrams and
tables from MGA1064SG manual.
In short:
1600x1200x8bpp, G200 + PII/350
XF86_SVGA XF86_FBDEV
without | matroxfb | matroxfb | matroxfb
matroxfb | -noinit | +noinit | -noinit
Dot 3810000 + 7% + 7% + 24% (fbdev is 24% faster :-) )
Rect1x1 1090000 0 0 +124%
Rect500x500 10100 - 82% * + 1% - 95%
500x500opaque stippled rectangle
1800 + 1% + 1% - 88%
500x500tiled rectangle, 161x145 tile
129 +126% +126% +126% **
500x500tiled rectangle, 216x208 tile
143 +217% +214% +193% **
* speed for this operation (1800/s) is same as for (unaccelerated) 'opaque
stippled rectangle'. It is possible that there is some misdetection in
XFree code caused by clearing 'SGRAM' flag in capabilities of device (could
someone with 'true' SDRAM G200 test difference between 500x500 rectangle
and 500x500 opaque stippled rectangle (without matroxfb))
** this is probably caused by MTRR settings
Also, DO NOT enable both vesafb and matroxfb unless you have VESA2.0
non-matrox device in computer together with matroxfb. It cannot do anything
good except that you can have black or corrupted screen because of both
vesafb and matroxfb competes over one hardware (possibly together with
vgacon; but you should not use switch `video=vc:X-Y' if matroxfb is
your primary display - matroxfb is able to take over vgacon, but is
not able to share device with matroxfb. It is impossible with current API
and I think that there is no reason for it. (there is call to switch to
console, but there is no call that VT is releasing console; so it is not
possible to return hardware to vgacon acceptable state on modeswitch;
and, eventualy, this fast switching from (for example) 1024x768x32bpp ->
-> 640x400xText -> 1048x480xText (set by SVGATextMode) can destroy monitor)).
And, as general rule, if you have matroxfb and you have problems with it,
try 'video=matrox:noinit'. I hope that it solves most of problems. You
can specify 'noinit' in multihead configuration too, first 'head' will
not be initialized, other will be initialized from scratch, so no
problem should occur (it should work on non-intel too).
So, sorry for this long letter, ... Also sorry if there are not so easy
understandable sentences, I'm not so good in English and I'm writting
this letter for two hours now, together with hacking PPC, ncpfs and
'real' work. But I hope that this can clear some problems which are
occuring with matroxfb.
Best regards,
Petr Vandrovec
vandrove@vc.cvut.cz
Last minute: linux-kernel #3099, Jan 3, 23:22, just arrived...
I have to thank to Gerd Knorr for his accelerated fbcon server for
matrox. I did not test it yet (could you send me a patch... thanks),
but I hope that it will help me in my work...
I think that your problem with S3 is that S3 decodes whole 64MB,
thus using 0xF8000000 - 0xFFFFFFFF. Could you try to set S3 base to
(for example) 0xE0000000 (insert some code into PCI initialization,
basically pciwritelong(pcifinddevice(...), 0x10, 0xE0000000) - or
pcibioswritelong(bus,dev,fn,0x10,0xE0000000)).
P.S.: I also found that XF86_SVGA disables 'no_pci_retry' on my device
(with or without matroxfb) without any such command in XF86Config. Is
it feature or bug? It is SMP board based on 440BX and neither Video BIOS
nor Win95 driver disables it.
P.P.S.: Here is a promised patch; you can revert to old behavior by
'video=matrox:init', it is for 2.2.0-pre4, but should also work for
vger and anything after 2.1.132-pre3.
--- linux/drivers/video/matroxfb.c.old Mon Dec 21 23:48:04 1998
+++ linux/drivers/video/matroxfb.c Mon Jan 4 20:13:26 1999
@@ -2,9 +2,9 @@
*
* Hardware accelerated Matrox Millennium I, II, Mystique and G200
*
- * (c) 1998 Petr Vandrovec <vandrove@vc.cvut.cz>
+ * (c) 1998,1999 Petr Vandrovec <vandrove@vc.cvut.cz>
*
- * Version: 1.8 1998/12/11
+ * Version: 1.9 1999/01/04
*
* MTRR stuff: 1998 Tom Rini <tmrini@ntplx.net>
*
@@ -4841,7 +4841,7 @@
static int no_pci_retry = 0; /* "matrox:nopciretry" */
static int novga = 0; /* "matrox:novga" */
static int nobios = 0; /* "matrox:nobios" */
-static int noinit = 0; /* "matrox:noinit" */
+static int noinit = 1; /* "matrox:init" */
static int inverse = 0; /* "matrox:inverse" */
static int hwcursor = 1; /* "matrox:nohwcursor" */
static int blink = 1; /* "matrox:noblink" */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/