LiveCD rebuild help requested

Alexander E. Patrakov patrakov at ums.usu.ru
Mon Jun 11 06:24:13 PDT 2007


Roger Young wrote:
> One small point concerning the automatic graphics configuration:
> the earlier 6.2-5 iso selected "nv" for my graphics driver which is
> correct, whereas the 6.3-pre2-r1904 iso chose the "vesa" option 

With the attached patch to xorg-udev-rules generator, the CD will select the 
"nv" driver for all chips which the driver tries to support, including 
unknown ones. However, I am in doubt: there may be an unknown chipset for 
which the "nv" driver opportunistically tries to work but fails (and "vesa" 
would be the correct choice then). Should I commit this, or leave the 
situation as it is plus a quirk specifically for 10de:0295?

BTW, this is the first time I see that "vesa" doesn't work.

-- 
Alexander E. Patrakov
-------------- next part --------------
Index: extract_pci_ids.c
===================================================================
--- extract_pci_ids.c	(revision 1902)
+++ extract_pci_ids.c	(working copy)
@@ -164,11 +164,35 @@
 void xf86PrintChipsets(const char *drvname, const char *drvmsg,
                        SymTabPtr chips)
 {
+	/* NVidia detection special cases, see the switch(token & 0xfff0)
+	   in NVProbe(), xf86-video-nv/src/nv_driver.c.
+	   Risky - the driver may try to support more than it actually can */
+	unsigned short wildcards[] = {
+	    0x0170, 0x0180, 0x0250, 0x0280, 0x0300, 0x0310, 0x0320, 0x0330,
+	    0x0340, 0x0040, 0x00C0, 0x0120, 0x0140, 0x0160, 0x01D0, 0x0090,
+	    0x0210, 0x0220, 0x0240, 0x0290, 0x0390, 0x03D0, 0x0000 };
+
+	int i;
+
 	while(chips->token != -1) {
-		WriteUdevRule(chips->name,
-		    chips->token >> 16, chips->token & 0xffff);
+		i = 0;
+		/* Filter out cases when the last digit doesn't matter.
+		   They will be caught by wildcard rules below. */
+		while (wildcards[i] && ((chips->token & 0xfff0) != wildcards[i]))
+			i++;
+		if ((chips->token >> 16) != 0x10de || !wildcards[i])
+			WriteUdevRule(chips->name,
+			    chips->token >> 16, chips->token & 0xffff);
 		chips++;
 	}
+	/* Write out wildcard rules */
+	printf("# Generic NVidia families\n");
+	for (i = 0; wildcards[i]; i++)
+		printf("ATTR{vendor}==\"0x10de\", "
+                "ATTR{device}==\"0x%03x?\", "
+                "RUN+=\"/bin/sed -i s/vesa/nv/ /etc/X11/xorg.conf\"\n",
+		wildcards[i] >> 4);
+	printf("\n");
 }
 
 int xf86MatchIsaInstances(const char *driverName, SymTabPtr chipsets,


More information about the livecd mailing list