← Back to team overview

ubuntu-x-swat team mailing list archive

[Bug 385703] Re: nv, autodetection fails because of missing PCI-IDs, in nv.ids, for a large number of supported cards in Jaunty

 

There's a slight problem with this that I had a discussion with the -nv
maintainer about while attempting to submit the id's upstream.
01_gen_pci_ids.diff which creates the nv.ids only adds the things
explicitly defined in the tables in src/nv_driver.c but the AGP cards
report a pci id of the AGP-PCIe bridge chip initially. The driver then
figures out what chip it actually is behind the bridge (if the nv driver
is actually loaded) via NVGetPCIXpressChip in the code, but when nv.ids
exists that internal detection logic is lost and xserver only loads the
nv driver automatically for cards that exist in nv.ids. In jaunty you
then get a fall back to vesa because of a patch in xserver to make vesa
the default when no driver can load. In karmic currently you get a
failsafe X boot because the fallback to vesa patch was dropped. If nv is
explicitly defined for the device in xorg.conf it will work fine though
in karmic as long as the driver supports your actual card (which it will
for the AGP variants for the above mentioned reason).

The current method being used to add these cards is to add them to the
tables in ubuntu's patches (102_geforce_7300_gt.patch and
104_geforce_6600gt_9100mg.patch). The maintainer suggested that was a
bad idea in this specific case because the cards are already defined
which could cause problems, and the problem instead is the detection
logic brought in from 01_gen_pci_ids.diff.

I've attached a patch that adds support for every AGP-PCIe bridge chip I
could find in a manner that will only permit the id's to be included in
the nv.ids generation and not interfere with any actual card detections
as suggested by the driver maintainer. Adding them behind a #if 0/#endif
makes sure they are never actually used for anything, but will get
included by the nv.ids generation so that the server will pick the -nv
driver and let it do its detection work.

There is still the small problem of the nv.ids generation routine not
accounting for the catchall cases set up so that it will work for newer
chips in series that haven't been explicitly added to the tables
though.. For example, look around lines 713 and 738 here-

http://cgit.freedesktop.org/xorg/driver/xf86-video-
nv/tree/src/nv_driver.c?id=36eb96854b34bee6b65a2b2d4df25f53b47194e4

That will expand each supported chip range from 10DE0390 through
10DE039F for instance to account for unreleased future cards or things
not explicitly defined in the tables..The pci id generation routine
ignores all of that though so it would probably be a good idea to expand
each one hidden behind the #if 0/#endif from my patch so
01_gen_pci_ids.diff will actually create id's for them for better
support on older releases. I've submitted the patch upstream to the
maintainer but since it is a debian/ubuntu specific thing and nv.ids
generation is going the way of the dodo now (debian already dropped it)
I'm not sure its relevant there.

** Attachment added: "101_agp_bridge_pci_id.patch"
   http://launchpadlibrarian.net/27885379/101_agp_bridge_pci_id.patch

-- 
nv, autodetection fails because of missing PCI-IDs, in nv.ids, for a large number of supported cards in Jaunty
https://bugs.launchpad.net/bugs/385703
You received this bug notification because you are a member of Ubuntu-X,
which is subscribed to xserver-xorg-video-nv in ubuntu.



References