Comment 11 for bug 385703

Revision history for this message
Bojan Vitnik (bvitnik) wrote :

Bryce, I took some time to test the Beta version of Karmic Koala Kubuntu, LiveCD only thou. I must say that things are even worse now. Not only does autodetection fails but now -nv doesn't work at all with my card. I also took some time to take a look at new patches introduced in Ubuntu package of -nv 2.1.14, "0001-Move-the-logic-for...patch" and "0002-Run-the-parsing-script...patch". If I understand correctly, NVKnownChipsets[] and NVPciIdMatchList[] tables, this time in separate files - "nvidia_chipset_gen.h" and nvidia_pci_device_match_gen.h, are now generated from a file called "nv_list.cvs", using a Perl script called "parse_pci_ids.pl". I suppose "nv_list.cvs" is maintained manually. The problem is that, once again, PCI-IDs 02E0-02E4 and 00F0-00FF are missing, this time in "nv_list.cvs". That's probably because "nv_list.cvs" was based on NVKnownChipsets[]. As we already confirmed, NVKnownChipsets[] is not a complete table of all *supported* chips. Fixing this problem now is not simple as before (just by editing nv.ids). This time editing of "nv_list.cvs" is required, then you have to generate NVKnownChipsets[] and NVPciIdMatchList[] and then you have to recompile the driver.
As for the problem of -nv failing to work completely, as far as I could tell, it's because of the NVPciIdMatchList[] table. NVPciIdMatchList[] matched any chip with nVidia vendor ID (12D2 and 10DE) in the original source code but after the patches it only matches a selection of PCI-IDs generated from "nv_list.cvs". So the driver reports to the X Server that my card is not supported. In the end -vesa is used instead.
Xorg.0.log will be in attachment. It can be clearly seen that -nv was picked by X Server as candidate (so autodetection did work?) but dropped later in favor of -vesa.

Sollution:
------------
Add PCI-IDs 02E0-02E4 and 00F0-00FF to "nv_list.cvs", use "parse_pci_ids.pl", and recompile the driver.

Note: PCI-IDs 02E0-02E4 and 00F0-00FF are now going to be in NVKnownChipsets[] which is exactly what Sarvatt's patch was trying to avoid so maybe some fixing for "parse_pci_ids.pl" are also needed.