[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: F11 Preview problems



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.99.902-nouveau.patch?revision=1.1&view=markup

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=30acb90a6077798b1e0c4927273067500905d6d1

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!
-- 
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Fedora Talk: adamwill AT fedoraproject DOT org
http://www.happyassassin.net
--- xorg-server-1.6.1/hw/xfree86/common/xf86AutoConfig.c	2009-04-14 10:14:57.000000000 -0700
+++ xorg-server-1.6.1/hw/xfree86/common/xf86AutoConfig.c.new	2009-04-30 15:10:55.733939521 -0700
@@ -179,7 +179,44 @@
 	case 0x102b:		    driverList[0] = "mga";	break;
 	case 0x10c8:		    driverList[0] = "neomagic"; break;
 	case 0x105d:		    driverList[0] = "i128";	break;
-	case 0x10de: case 0x12d2:   driverList[0] = "nv";	break;
+	case 0x10de:
+	    switch (dev->device_id & 0xfff0) {
+	    /* NV1 chips never will be supported by nv/nouveau */
+	    case 0x0008:
+	    case 0x0009:
+	    /* Currently non-functional with both nouveau and nv */
+	    case 0x0840:
+	    case 0x0860:
+		driverList[0] = "vesa";
+		break;
+	    /* NV3 chips never will be supported by nouveau */
+	    case 0x0018:
+	    case 0x0019:
+		driverList[0] = "nv";
+		break;
+	    default:
+		driverList[0] = "nouveau";
+		break;
+	    }
+	    break;
+	case 0x12d2:
+	    switch (dev->device_id & 0xfff0) {
+	    /* NV1 chips never will be supported by nv/nouveau */
+	    case 0x0008:
+	    case 0x0009:
+		driverList[0] = "vesa";
+		break;
+	    /* NV3 chips never will be supported by nouveau */
+	    case 0x0018:
+	    case 0x0019:
+		driverList[0] = "nv";
+		break;
+	    default:
+		driverList[0] = "nouveau";
+		break;
+	    }
+	    break;
+	case 0x10b4:		    driverList[0] = "nv";	break;
 	case 0x1163:		    driverList[0] = "rendition"; break;
 	case 0x5333:
 	    switch (dev->device_id)

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]