Re: [PATCH] pnp & pci structure cleanups

Jeff Garzik (jgarzik@pobox.com)
Mon, 30 Dec 2002 18:14:36 -0500


On Mon, Dec 30, 2002 at 02:51:34PM -0800, Greg KH wrote:
> On Mon, Dec 30, 2002 at 05:50:12PM -0500, Jeff Garzik wrote:
> > On Mon, Dec 30, 2002 at 11:12:40PM +0000, Alan Cox wrote:
> > > On Mon, 2002-12-30 at 22:12, Greg KH wrote:
> > > > Yeah! Thanks for taking these fields out of pci.h, I really appreciate
> > > > it. I'll send this on to Linus in a bit.
> > >
> > > Argh I was using those to implement a test "pci_compatible" driver so
> > > that you could feed new pci idents to old drivers. Oh well
> >
> > Note that we need a way to do field replacement of PCI id tables.
> >
> > I've been harping on that to various ears for years :)
>
> And USB id tables. A number of usb drivers are slowly adding module
> paramater hacks to get around this, but it would be really nice to do
> this "correctly" for all drivers. Somehow...

Surely there is a sysfs path we can devise to do

echo "add <pci_device_id line>" > /sys/pci/driver/tulip

(or replace that with a file-oriented interface that inputs an entire
table)

and internally just refer to, and update, a kmalloc'd copy of the
original driver's pci (or usb) table.

> > <tangent>
> > I also want to add PCI revision id and mask to struct pci_device_id.
> > </tangent>
>
> Do any drivers need that today? It shouldn't be that hard to do it, and
> now is the time :)

Yes. tulip driver could find this useful, but that's currently a small
case worked around in the driver.

The big and annoying case is 8139C+ (8139cp.c), which has the same
PCI id as old 8139 boards, but additionally includes dramatically new
and better functionality. The distinguishing characteristic at the
probe phase is the PCI revision id, as the PCI id is the same as another
driver.

Jeff

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/