# Kernel options for Matrox G550 multihead support

## new_gentoo

I'm new to gentoo, but have used other distributions for years. I'm having trouble getting the second head of my matrox G550 to operate. The system doesn't event recognize it.

I've had this system working properly on Fedora Core 3 and Debian Sarge. Fedora was an Xorg setup, so I know it isn't xorgs problem. In fact, I have the xorg.conf file set up correctly. Everything works, but the second monitor isn't recognized - you can just move things over into the blackness of the other monitor.

I'm quite sure it's a kernel options that I need to set, but I don't have very much experience compiling Kernels. I've tried various combinations of things with different results:

Device Drivers ---->

     Graphics Support ---->

          <*> Matrox acceleration

          [*] G100/G200/G400/G450/G550 support

          [*] Multihead support

This is where all the action happens. The configuration shown above does NOT work. When booting up, both monitors are activated and display a crude rendering of some graphic in perhaps 16 colours at a low resolution. This is the display once the system boots up. All terminals are this display (ctrl-alt-F1, ctrl-alt-F2, etc...). You can still type, but you can't see what your're typing (I type 'root' followed by '<password>' followed by 'reboot', none of which I see but in a few seconds the machine does reboot). I then boot my backuped up working kernel and try something else.

Removing the G100/G200/G400/G450/G550 support option fixes this. The display remains readable, and everything works - except with startx there is still only 1 monitor. Everything acts as if there should be two monitors, but the second monitor is not being driven.

Possibly related are the options for charater devices. I read some stuff about this and corrected various dmesg errors with this setup, but it seems to related so I'll put it here.

Device Drivers ---->

     Character devices ---->

          <*> /dev/agpgart (AGP Support)

               <*> AMD Opteron/Athlon64 on-CPU GART support

          <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)

               <*> Matrox g200/g400

So, my question is: What other kernel options do I need? I've read about others that have successfully set up a G550, so perhaps they could enlighten me as to how they compiled their kernel?

Install was from stage 3 (because I needed to be up and running fairly quickly - fat chance   :Smile:  ) with Gentoo 2005.1, kernel is 2.6.12-r10. Matrox G550 on an ASUS A8V Delux motherboard, cpu is an AMD64

----------

## new_gentoo

It turns out I had no idea what I was talking about before, and it wasn't a kernel compile problem. Things were ready to go, they just needed a kick-start. I stopped dealing with this problem for a while, changed my xorg.conf file to use a single monitor (Xinerama option off and modify the server layout section as appropriate). This produced the exact same screen on both monitors, so the second head was in fact working. When I switched the xorg.conf file back to the way I had it, everything started to work perfect - one big screen spread across 2 monitors. It's almost as if the second head needs a bit of a kick-start. This is obviously not the answer, but for now that's what I have to do.

The pain in the ass is that this proceedure must be done each time you reboot. Thankfully, I don't reboot very often. If anyone has any tips for fixing this, let me know. I remember on my last setup (Fedore Core 3 on this same machine) I had to use some crazy file swap on startup and shutdown. On shutdown, I swap the xorg.conf for a dual head out to xorg.dualhead, and put a single head configuration in. Then, on startup, the last thing I did was swap them back. Everything worked fine then. I was using a display manager, however, and I'm not doing that here.

This still doesn't explain the non-intuitive kernel options I had to de-select either. Why are things messed up when I compile in support for the Matrox G550? That's what my card is, but putting support for it in causes display problems.

----------

## rasmussen

Could you try posting your xorg.conf file?

----------

## zeek

 *new_gentoo wrote:*   

> The pain in the ass is that this proceedure must be done each time you reboot.

 

I have a G550 and found this out the hard way.  It is a new bug introduced sometime after 2.6.6 and/or xorg.  I didn't have to do this ~6 months ago running early 2.6 kernels and XFree.

----------

## abngentoo

 *new_gentoo wrote:*   

> 
> 
> I'm quite sure it's a kernel options that I need to set, but I don't have very much experience compiling Kernels. I've tried various combinations of things with different results:
> 
> Device Drivers ---->
> ...

 

I have the same display problems using a G100 and booting with a 2.6.13-gentoo-r2 kernel using the options <*> Matrox acceleration and [*] G100/G200/G400/G450/G550.

I have tried several combinations of kernel options, but only disabling these two options have worked! I suspect that all kernels after 2.6.11 have this major problem for Matrox users. 

I have not been able to find any bug report regarding this problem, nor am I quite sure whether it is a bug or whether I am missing something.

----------

## new_gentoo

I haven't been checking this forum for a few weeks - my apologies if anyone was waiting for this. There was a request to post my xorg.conf file, so here it is. You'll notice that there are many lines commented out - I don't really know what I'm doing, and through various bits of reading I decided to comment these lines out, or I took them out to remove errors on xorg startup.

# 2005.09.27

#There are still error messages when starting X, something about DRI not being enabled

#on the second head. Perhaps worth further research later.

Section "ServerFlags"

	Option "Xinerama" "on"

	Option "off time"	"10"

EndSection

Section "Files"

	RgbPath		"/usr/lib/X11/rgb"

	#FontPath	"unix/:7100"			# local font server

	# if the local font server has problems, we can fall back on these

#	FontPath	"/usr/share/fonts/local/"

	FontPath	"/usr/share/fonts/misc/"

	FontPath	"/usr/share/fonts/100dpi/:unscaled"

	FontPath	"/usr/share/fonts/75dpi/:unscaled"

	FontPath	"/usr/share/fonts/Type1/"

	FontPath	"/usr/share/fonts/TTF/"

#	FontPath	"/usr/share/fonts/CID/"

#	FontPath	"/usr/share/fonts/Speedo/"

	FontPath	"/usr/share/fonts/100dpi/"

	FontPath	"/usr/share/fonts/75dpi/"

EndSection

Section "Module"

# Commented out modules to get the config to match what I had on the Fedora Core 3 system.

# I don't really understand what these modules do, if anything.

#	Load	"drm"

#	Load	"GLcore"

#	Load	"bitmap"

	Load	"dbe"

#	Load	"ddc"

#	Load	"dri"

	Load	"extmod"

	Load	"fbdevhw"

	Load	"freetype"

	Load	"glx"

#	Load	"int10"

	Load	"record"

#	Load	"speedo"

	Load	"type1"

#	Load	"vbe"

#	SubSection	"extmod"

#		Option	"omit xfree86-dga"

#	EndSubSection

EndSection

Section "InputDevice"

	Identifier	"Generic Keyboard"

	Driver		"keyboard"

	Option		"CoreKeyboard"

#	Option		"XkbRules"	"xfree86"

	Option		"XkbModel"	"pc104"

	Option		"XkbLayout"	"us"

	#Next option may not be supported

	#Option		"AutoRepeat"	"500 5"

EndSection

Section "InputDevice"

	Identifier	"Configured Mouse"

	Driver		"mouse"

	Option		"CorePointer"

	Option		"Device"		"/dev/input/mice"

	Option		"Protocol"		"PS/2"

	Option		"Emulate3Buttons"	"on"

	Option		"ZAxisMapping"		"4 5"

EndSection

Section "Device"

	Identifier	"MatroxG550_head0"

	Driver		"mga"

	BusID		"PCI:1:0:0"

	Screen		0

EndSection

Section "Device"

	Identifier	"MatroxG550_head1"

	Driver		"mga"

	BusID		"PCI:1:0:0"

	Screen		1

EndSection

Section "Monitor"

	Identifier	"benq757_0"

	HorizSync	31.5 - 83.0

	VertRefresh	56.0 - 76.0

	Option		"DPMS"

EndSection

Section "Monitor"

	Identifier	"benq757_1"

	HorizSync	31.5 - 83.0

	VertRefresh	56.0 - 76.0

	Option		"DPMS"

EndSection

Section "Screen"

	Identifier	"screen0"

	Device		"MatroxG550_head0"

	Monitor		"benq757_0"

	DefaultDepth	24

	SubSection "Display"

		Depth		8

		Modes		"1280x1024" "1024x768" "800x600" "640x480"

	EndSubSection

	SubSection "Display"

		Depth		16

		Modes		"1280x1024" "1024x768" "800x600" "640x480"

	EndSubSection

	SubSection "Display"

		Depth		24

		Modes		"1280x1024" "1024x768" "800x600" "640x480"

	EndSubSection

EndSection

Section "Screen"

	Identifier	"screen1"

	Device		"MatroxG550_head1"

	Monitor		"benq757_1"

	DefaultDepth	24

	SubSection "Display"

		Depth		8

		Modes		"1280x1024" "1024x768" "800x600" "640x480"

	EndSubSection

	SubSection "Display"

		Depth		16

		Modes		"1280x1024" "1024x768" "800x600" "640x480"

	EndSubSection

	SubSection "Display"

		Depth		24

		Modes		"1280x1024" "1024x768" "800x600" "640x480"

	EndSubSection

EndSection

Section "ServerLayout"

	Identifier	"Default Layout"

#	Screen 		"screen0"

	Screen 0	"screen0"

	Screen 1	"screen1" LeftOf "screen0"

	InputDevice	"Generic Keyboard"

	InputDevice	"Configured Mouse"

EndSection

Section "DRI"

	Mode	0666

EndSection

----------

## rasmussen

I'm running a G450 AGP without any problems, using the drivers supplied by Matrox.

My xorg.conf is very similar to yours -- the only differences seem to be some of the modules loaded (but that shouldn't matter) and that I'm running the displays at 16bpp where you run at 24bpp.

Have you tried 16bpp ?

For completeness, here's my xorg.conf

```
Section "Files"

    FontPath "/usr/share/fonts/ttf-bitstream-vera/" 

    FontPath "/usr/share/fonts/terminus/" 

    FontPath "/usr/share/fonts/corefonts/"    

    FontPath "/usr/share/fonts/Type1/" 

    FontPath "/usr/share/fonts/freefont/" 

    FontPath "/usr/share/fonts/artwiz/" 

    FontPath "/usr/share/fonts/local/" 

    FontPath "/usr/share/fonts/misc/" 

    FontPath "/usr/share/fonts/75dpi/:unscaled" 

    FontPath "/usr/share/fonts/100dpi/:unscaled" 

    FontPath "/usr/share/fonts/Speedo/" 

    FontPath "/usr/share/fonts/CID/" 

    FontPath "/usr/share/fonts/encodings/" 

    FontPath "/usr/share/fonts/TTF/" 

    FontPath "/usr/share/fonts/util/" 

    FontPath "/usr/share/fonts/sharefont/" 

    FontPath "/usr/share/fonts/lfp-fix/" 

    FontPath "/usr/share/fonts/75dpi/" 

    FontPath "/usr/share/fonts/100dpi/" 

    FontPath "/usr/share/fonts/unifont/"

    ModulePath "/usr/X11R6/lib/modules"

    RgbPath "/usr/X11R6/lib/X11/rgb"

EndSection

Section "Module"

    Load "ddc"

    Load "dbe"

    Load "dri"

    Load "glx"

    Load "extmod"

    SubSection "extmod"

    Option "xfree86-dga"

    EndSubSection

    Load "type1"

    Load "freetype"

    Load "speedo"

EndSection

Section "ServerFlags"

    Option "AllowMouseOpenFail"

    Option "BlankTime" "5"

    Option "StandbyTime" "10"

    Option "SuspendTime" "0"

    Option "OffTime" "20"

    Option "Xinerama"

EndSection

Section "InputDevice"

    Driver "kbd"

    Identifier "Keyboard[0]"

    Option "MapName" "Standard Keyboard [ pc104 ]"

    Option "Protocol" "Standard"

    Option "XkbLayout" "dk"

    Option "XkbModel" "pc105"

EndSection

Section "InputDevice"

    Driver "mouse"

    Identifier "Mouse[1]"

    Option "Device" "/dev/input/mouse0"

    Option "Protocol" "imps/2"

    Option "ButtonNumber" "5"

    Option "ZAxisMapping" "4 5"

    Option "Emulate3Buttons" "no"

EndSection

Section "Monitor"

    Identifier "Monitor[710N-L]"

    ModelName "SyncMaster 710N"

    VendorName "Samsung"

    HorizSync 30-81

    VertRefresh 56-75

    Option "DPMS"

EndSection

Section "Monitor"

    Identifier "Monitor[710N-R]"

    ModelName "SyncMaster 710N"

    VendorName "Samsung"

    HorizSync 30-81

    VertRefresh 56-75

    Option "DPMS"

EndSection

Section "Device"

    Identifier "Device[MGA0]"

    Screen 0

    BoardName "G450"

    VendorName "Matrox"

    BusID "PCI:1:0:0"

    Driver "mga"

    Option "hw cursor" "off"

    Option "AGPMode" "4"

EndSection

Section "Device"

    Identifier "Device[MGA1]"

    Screen 1

    BoardName "G450"

    VendorName "Matrox"

    BusID "PCI:1:0:0"

    Driver "mga"

    Option "hw cursor" "off"

    Option "AGPMode" "4"

EndSection

Section "Screen"

    Identifier "Screen[710N-R]"

    Device "Device[MGA1]"

    Monitor "Monitor[710N-R]"

    DefaultDepth 16

    SubSection "Display"

        Depth 16

        Modes "1280x1024" 

    EndSubSection

EndSection

Section "Screen"

    Identifier "Screen[710N-L]"

    Device "Device[MGA0]"

    Monitor "Monitor[710N-L]"

    DefaultDepth 16

    SubSection "Display"

        Depth 16

        Modes "1280x1024" 

    EndSubSection

EndSection

Section "ServerLayout"

    Identifier "Layout[all]"

    InputDevice "Keyboard[0]" "CoreKeyboard"

    InputDevice "Mouse[1]" "CorePointer"

    Screen 0 "Screen[710N-L]"

    Screen 1 "Screen[710N-R]" RightOf "Screen[710N-L]"

    Option "Xinerama" "on"

    Option "Clone" "off"

EndSection

Section "DRI"

    Group "video"

    Mode 0660

EndSection

```

Btw, my kernel options are:

```
CONFIG_AGP=y

CONFIG_AGP_VIA=y

CONFIG_DRM=y

CONFIG_DRM_MGA=y

```

and this is on a MSI KT3-Ultra2 running

```
Linux alpha 2.6.12.5 #2 Fri Sep 23 23:53:27 CEST 2005 i686 AMD Athlon(tm) XP 2000+ AuthenticAMD GNU/Linux

```

Finally: The errors you mention on DRI not being enabled is because you cannot use DRI and Xinerama simultaneously.

If you want DRI on both heads, you can use "MergedFB" mode with the Matrox drivers. Works great, but as the X server won't know that you have 2 displays, windows are sometimes placed in less favorable positions. Not a big deal though.

----------

