Re: Diamond Monster 3D PCI problems

Martin Mares (mj@ucw.cz)
Mon, 5 Oct 1998 00:04:20 +0200


Hello,

> I have recently purchased a Diamond Monster 3D PCI video card. The Linux
> kernel detects the card and identifies it properly, but incorrectly
> detects the Prefetchable 32-bit memory at 0x0, accord to /proc/pci. I
> have been in contact with the maintainer of LinuxGlide (the driver for the
> card) and we have reached the conclusion that it is a problem with the
> kernel's PCI detection routine. I have tried both 2.0.35 (which I use
> normally) and 2.1.122. Both gave me the same results for the memory
> address. I can get LinuxGlide to see the card if I boot Windows 95 first,
> then go to Linux, but the kernel itself sees no PCI devices at all, which
> is odd since my 2D graphics still works fine (and is usually detected). I
> haven't found any patches for this kind of problem. Neither of the
> kernels I tried had any patches on them.

> 00:05.0 Multimedia video controller: 3Dfx Interactive, Inc. Voodoo (rev 02)
> Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
> Status: 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
> 00: 1a 12 01 00 00 00 80 00 02 00 00 04 00 00 00 00
> 10: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

This means that your BIOS has not assigned any address to the card nor
enabled its address decoders (I/O-, Mem-). The detection routine in the
kernel is OK, it should use what BIOS assigned. If /proc/pci lists it as
memory at address 0, it's definitely broken, but it's an obsolete interface
anyway and lspci lists it right.

Unfortunately, it's too late to try to work-around these problem in the
kernel before 2.2 comes out. I already know I'll have to make the new PCI
code I plan for 2.3 support assigning of addresses to devices where BIOS
scamped his job. If LinuxGlide doesn't use the new 2.1 PCI functions yet,
there is a simple solution: use setpci to set the address to some sensible
value manually. In other cases, the best solution would be to tell the
LinuxGlide maintainers they should contact me.

Have a nice fortnight

-- 
Martin `MJ' Mares   <mj@ucw.cz>   http://atrey.karlin.mff.cuni.cz/~mj/
Faculty of Math and Physics, Charles University, Prague, Czech Rep., Earth
"Error: Compiler unable to abort!"

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