Re: Buggy PCI drivers - do not mark pci_device_id as discardable data

Russell King
2003-09-09T20:59:35Z

On Tue, Sep 09, 2003 at 04:02:58PM -0400, Zwane Mwaikambo wrote:
> On Tue, 9 Sep 2003, Russell King wrote:
>
> > --- orig/drivers/char/watchdog/amd7xx_tco.c Sat Jun 14 22:33:48 2003
> > +++ linux/drivers/char/watchdog/amd7xx_tco.c Tue Sep 9 20:45:16 2003
> > @@ -294,7 +294,7 @@
> > .fops = &amdtco_fops
> > };
> >
> > -static struct pci_device_id amdtco_pci_tbl[] __initdata = {
> > +static struct pci_device_id amdtco_pci_tbl[] = {
> > /* AMD 766 PCI_IDs here */
> > { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_OPUS_7443, PCI_ANY_ID, PCI_ANY_ID, },
> > { 0, }
>
> That's not a bug.
>
> > --- orig/drivers/char/watchdog/i810-tco.c Sun Aug 3 11:21:11 2003
> > +++ linux/drivers/char/watchdog/i810-tco.c Tue Sep 9 20:45:16 2003
> > @@ -301,7 +301,7 @@
> > * register a pci_driver, because someone else might one day
> > * want to register another driver on the same PCI id.
> > */
> > -static struct pci_device_id i810tco_pci_tbl[] __initdata = {
> > +static struct pci_device_id i810tco_pci_tbl[] = {
> > { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AA_0, PCI_ANY_ID, PCI_ANY_ID, },
> > { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AB_0, PCI_ANY_ID, PCI_ANY_ID, },
> > { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801BA_0, PCI_ANY_ID, PCI_ANY_ID, },
>
> Neither is that.
>
> > --- orig/drivers/char/hw_random.c Sat Jun 14 22:33:46 2003
> > +++ linux/drivers/char/hw_random.c Tue Sep 9 20:45:16 2003
> > @@ -149,7 +149,7 @@
> > * register a pci_driver, because someone else might one day
> > * want to register another driver on the same PCI id.
> > */
> > -static struct pci_device_id rng_pci_tbl[] __initdata = {
> > +static struct pci_device_id rng_pci_tbl[] = {
> > { 0x1022, 0x7443, PCI_ANY_ID, PCI_ANY_ID, 0, 0, rng_hw_amd },
> > { 0x1022, 0x746b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, rng_hw_amd },
>
> This too

They're all bugs, plain and simple. The pci device id tables are scanned
*whenever* a new pci device is inserted into the system, or the appropriate
numbers are echoed to the "new_id" driver model entry for the driver.

It doesn't matter if the driver doesn't care or not.

--
Russell King (rmk@arm.linux.org.uk) http://www.arm.linux.org.uk/personal/
Linux kernel maintainer of:
2.6 ARM Linux - http://www.arm.linux.org.uk/
2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core