On Thu, 2009-04-30 at 15:26 -0400, Adam Jackson wrote:
On Thu, 2009-04-30 at 11:06 -0700, Jim Bevier wrote:
Hello all,
I tried the i386 live CD and i386 install DVD. I had a Nvidia Riva TNT card in one system (I was running RedHat 7.1, don't ask), and it could not start X during startup. I tried vga=791 and xdriver=vesa, but X would not work. I removed the card and used the built-in video chip, and it started up without a problem. Anyone know of a work around for this nvidia driver problem?
xdriver= only takes effect for install CDs, not live CDs, since atm only anaconda looks for that option on kcmdline.
I believe we'll try to load nouveau on all nv chips now, but it doesn't support nv3 chips because wow that's ancient, so this is probably a case where we should use nv instead.
Well, we don't quite try and load it on *all*:
http://cvs.fedoraproject.org/viewvc/rpms/xorg-x11-server/devel/xserver-1.5.9...
two series of chips known not to work with nv or nouveau are blacklisted to vesa, and anything with vendor ID 0x12D2 (an old vendor ID used in the Riva era) is blacklisted to use nv.
Also, the Riva TNT is NV04, not NV03.
Now I look at this patch again, though, I don't think the blacklist is quite right. I keep a copy of the Mandriva card database handy. It has these IDs listed as Riva 128s:
[adamw@adam xorg-server-20090110]$ grep "RIVA 128" ~/local2/ldetect-lst/lst/pcitable 0x10b4 0x1b1d "Card:NVIDIA RIVA 128" 0x10de 0x0018 "Card:NVIDIA RIVA 128" 0x10de 0x0019 "Card:NVIDIA RIVA 128" 0x12d2 0x0018 "Card:NVIDIA RIVA 128" 0x12d2 0x0019 "Card:NVIDIA RIVA 128"
so if that's accurate, we should be blacklisting 0x10b4 0x1b1d, 0x10de 0x0018 and 0x10de 0x0019 to use nv as well. This is backed up, by implication, by the NVIDIA ID list here:
http://www.nvidia.com/object/IO_18897.html
which shows 0020 as the RIVA TNT supported by the 71.xx legacy driver, but *doesn't* list the 0018 or 0019, implying that they are indeed pre-TNT chipsets. pciids.sf.net doesn't list them, but pcidatabase.com does:
http://www.pcidatabase.com/pci_c_header.php
{ 0x10DE, 0x0018, "NV3", "Riva 128" } , { 0x10DE, 0x0019, "NV3", "Riva 128ZX" } ,
and Google returns several results identifying these IDs as Riva 128s.
There's also 0x10DE 0x0008, 0x0009 and 0x0010. From what I can find, the 0x0008 and 0x0009 were the original NV1 chips - Diamond Edge 3D, as they were released. lshw claims the 0x0010 is the NV2, which was never released to the public.
The 0x12D2 case is a bit odd. It seems to be an old vendor ID listed as "NVidia / SGS Thomson (Joint Venture)" in some places. Several sources claim essentially the same set of device IDs for early NVIDIA cards being used with the 12D2 vendor ID as well as the 10DE one - so 0x12D2 0x0018 would be a Riva 128 just like 0x10DE 0x0018 is. Here's at least one example illustrating this in an apparently real system:
http://9fans.net/archive/2001/05/231
Here's a patch by Dave Airlie which added this list of 12D2 IDs to drm_pciids.txt:
http://archive.netbsd.se/?ml=dri-patches&a=2006-08&m=2297125
they were subsequently deleted by this commit:
http://cgit.freedesktop.org/mesa/drm/commit/?id=30acb90a6077798b1e0c49272730...
but without any particular context.
Personally I'm sceptical that anything past 0x12D2 0x0019 actually existed - I can't find any kind of reference to a 12D2 0020, 12D2 0028 or anything else later than 0019 in a real system. There are several old apparently independent sources that list them, though:
http://www.disklessworkstations.com/web/downloads/vidlist http://lists.freegeek.org/pipermail/commits/2004-February/001246.html http://www.nvnews.net/vbulletin/showthread.php?t=58491
so we should probably account for them in case they really do exist.
nv claims support from NV3 onwards (but not NV1). nouveau claims support from NV4 onwards.
based on the above, I'd recommend the attached changes to xserver-1.5.99.902-nouveau.patch . Basically, blacklist 0008 and 0009 for 10DE and 12D2 to vesa, blacklist 0018 and 0019 for both to nv, and use nouveau for everything else.
The oddball 0x10b4 0x1b1d is, according to old kudzu and ldetect-lst, the STB Velocity 128 3D, which Google (and my own slightly unreliable memory) agree is a Riva 128-based card. It seems to be the only time this PCI vendor ID was ever used, so we can just send that vendor ID straight to nv.
Any NV4 cards which don't work with nouveau, like the one in this thread, need a bug report, so please file one :) thanks!