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
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,
-- 
http://linuxfromscratch.org/mailman/listinfo/livecd
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to