Bug 119788

Summary: [TRACKER] Update pcitable, Cards, and pciids.sf.net
Product: [Fedora] Fedora Reporter: Mike A. Harris <mharris>
Component: hwdataAssignee: X/OpenGL Maintenance List <xgl-maint>
Status: CLOSED RAWHIDE QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: herrold
Target Milestone: ---Keywords: Triaged
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2005-04-11 01:47:18 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 119789, 119790, 119791, 119792, 119793, 119794, 119795, 119796, 119797, 119798, 119799, 119800, 119801, 119802, 119804, 119805, 119806, 119807    
Bug Blocks: 136451    

Description Mike A. Harris 2004-04-02 07:03:09 UTC
This is a personal tracker item for myself.

The pcitable and Cards databases need to be updated to more closely
reflect the actual list of hardware supported by current xorg-x11.
Also, pciids.sf.net needs to be updated and various corrections
made.

This is a rather time consuming ordeal to get all of these updated
to be accurate, so I felt it best to log this tracker, and try to
break it down into smaller tasks that can be prioritized more
easily.

Overview:
All of the video drivers in current X.org X11 need to be eyeballed
one at a time to determine what PCI IDs they support, and that needs
to be compared with our pcitable to see what entries are missing,
and get them added, and then add to the Cards database as well.

That often involves surfing hardware vendor's websites to get Windows
INF files also, as X drivers often have mistakes in their lists,
which uncover mistakes in pcitable, and needs to be merged with
pciids.sf.net, yada yada yada - essentially the biggest nastiest
hairball.  <grin>  Very tedious, which is why the list is often
out of date.

As such, my priority is to focus on the drivers that are the most
commonly used and most frequently change for now.  Right now, in
rough order of priority, this includes:

- radeon
- nv
- i810
- via
- sis
- savage

Other drivers may be out of date, but rarely change, and are much
lower priority, but still need to be accounted for in the long run
for completeness.


Future problems to solve:
Each architecture supports a different set of drivers, however our
pcitable and Cards database are a single database shared between
all architectures.  That means that we either:

1) Have one common database that is shared between all architectures,
   which is accurate for x86, and inaccurate for all other
   architectures.

or

2) We fork the hwdata package and maintain separate instances of it
   for each arch, having to add/remove/change new stuff in multiple
   locations.

or

3) We put per arch files all in one hwdata package, and have it
   generate the lists at build time for the proper architecture.

or

4) We modify the pcitable and Cards file formats to be able to have
   ifarch/ifnarch data.

The problem is more complex than that though, because some hardware
is supported on some architectures only in PCI form factor or only
in AGP form factor.  In other cases, certain driver features need to
be disabled like DRI, or certain extra driver options are needed
on PCI cards but not AGP, or other serious convolutions.  We've
managed to "get by" to date, but that does not mean this is a good
solution, nor that it is "good enough" for the future.  I believe
we need to strive to be "better", and that a new solution is needed
for the future, which needs to be well designed from the beginning,
and not just implemented as a quick ugly hack, or a simple add on
to what we have that is a half solution.

So, for the short term, we can "get by" with what we have now,
and just update these files for current X support.

In the long term though, I want to move video related configuration
metadata into a separate set of database file(s).  I believe it
would be better to move to a metadata file featureset that more
closely resembles Windows .INF files, as that keeps both the
PCI ID data, and the video card data and configuration info in one
place for that hardware.  This is not a small task however, and
while I do have a draft design for this new format, it is something
that I would like to have done upstream on freedesktop.org as a new
X driver metadata standard, and perhaps even a general driver
metadata standard like .INF files.  pcitable works fine for the
kernel, as all kernel drivers are monolithic in one place and
probably always will be, but X drivers, while monolithic now, will
be changing in the future, and when we move to the model where we
have modular drivers upstream, and in the distro, we need to make
driver updates more scaleable.  It makes sense to keep the metadata
_with_ the driver.  That way the metadata can be autogenerated also
during driver building.  The end result is metadata files that are
always up to date with what the driver supports, and lower engineering
maintenance costs.  Users have less "my card isn't detected" bug
reports, and it's more robust all around.

"Short term" above, I define as FC2, FC3, RHEL4 at least.  Long
term I define as FC4 and later, and RHEL5 and later.  It may even
be longer than that because I want to have it done upstream rather
than internally, and I want it to be done right, and not rushed
to get into a particular release, possibly broken, or possibly
missing features, and then have to support the broken setup for
compatibility in the future.  So a lot of this is pie in the sky
rambling right now, but it is nonetheless a problem that needs to
be solved in the OSS X world, if Linux is to be taken seriously
on the mass market of desktop systems out there in the future, which
is one of the goals on our plate for RHEL5 era.

Ok, enough of an essay to myself.  Now back to the job at hand.

Comment 1 Mike A. Harris 2005-04-11 01:47:18 UTC
All of the blockers of this tracker are now resolved.  Closing tracker
as resolved in rawhide.