Matrox mga driver on Xorg 7.3

Warren Block wblock at wonkity.com
Tue Oct 2 14:38:42 PDT 2007


There's a problem that seems to be FreeBSD-specific (6.2-STABLE) with 
the mga driver, version 1.4.7 (and also with 1.9.99, which I've been 
testing):

(II) Module vgahw: vendor="X.Org Foundation"
         compiled for 1.4.0, module version = 0.1.0
         ABI class: X.Org Video Driver, version 2.0
(--) MGA(0): Chipset: "mgag400" (G450)
(==) MGA(0): Depth 24, (==) framebuffer bpp 32
(==) MGA(0): RGB weight 888
(==) MGA(0): Using AGP 1x mode
(==) MGA(0): Using XAA acceleration
(--) MGA(0): Linear framebuffer at 0xDC000000
(==) MGA(0): MMIO registers at 0xDFEFC000
(--) MGA(0): Pseudo-DMA transfer window at 0xDF000000
(--) MGA(0): BIOS at 0xDFEC0000

At this point, it has a problem:

Requesting insufficient memory window!: start: 0xdee00000 end: 0xdfefffff size 0x2000000
(EE) Cannot find empty range to map base to
(WW) MGA(0): Video BIOS info block not detected!

The driver still works, but without being able to get to the BIOS, it 
can't determine BIOS version and card features.  That's relevant to the 
experimental mga 1.9.99, which supports the new xrandr features.  In 
turn, that means 1.9.99 can't see or enable the second output on the 
G450 card.

The newest version of Xorg I could find on a Linux liveCD (Xorg 7.2) 
can find the BIOS:

(--) MGA(0): Pseudo-DMA transfer window at 0xDF000000
(--) MGA(0): BIOS at 0xDFEC0000
(II) Attempted to read BIOS 64KB from /sys/bus/pci/devices/0000:01:00.0/rom: got 34KB
(--) MGA(0): Video BIOS info block at offset 0x07D00

pciconf entries that may be relevant:

agp0 at pci0:0:0:	class=0x060000 card=0x00001106 chip=0x31891106 rev=0x80 hdr=0x00
     vendor     = 'VIA Technologies Inc'
     device     = 'VT8377 Apollo KT400/A/600 CPU to PCI Bridge'
     class      = bridge
     subclass   = HOST-PCI
pcib1 at pci0:1:0:	class=0x060400 card=0x00000000 chip=0xb1981106 rev=0x00 hdr=0x01
     vendor     = 'VIA Technologies Inc'
     device     = 'ProSavageDDR P4X600 CPU to AGP Bridge'
     class      = bridge
     subclass   = PCI-PCI
drm0 at pci1:0:0:	class=0x030000 card=0x0641102b chip=0x0525102b rev=0x82 hdr=0x00
     vendor     = 'Matrox Electronic Systems Ltd.'
     device     = 'MGA G450 Dual Head Chip of G450 graphics card'
     class      = display
     subclass   = VGA

My crude attempts at tracking the problem down seem to point to 
freebsdPci.c in xorg-server-1.4/hw/xfree86/os-support/bus/.

It would be nice to fix this and get back the second VGA output.

(Note: the mga-1.9.99 code just drops into a copy of the xf86-video-mga 
port, and acts just like the 1.4.7 version.)

-Warren Block * Rapid City, South Dakota USA


More information about the freebsd-x11 mailing list