Subject: [BK PATCH] PCI fixes for 2.6.0-test2
From: Greg KH <[email-masked]>
To: [email-masked]
Cc: [email-masked]

Hi,

I turns out the we can not mark pci_device_id variables as __initdata or
__devinitdata due to the way the pci probe functions work (the .id
pointer can be looked at after init runs if a pci module is loaded by
the user.)  We had the same issue come up with USB device ids a while
ago and we had to make this same fix.  I think 2.4 might also have this
problem, but haven't had the time to look into it yet or not.

So these patches fix up all the pci_device_id references that I could
find in the kernel tree that are wrong.  I might have missed a few due
to the different merges happening, so there might be more patches coming
later to catch the stragglers.

Thanks to Andrew Morton and Jeff Garzik for talking it over about this
problem and notifying me of it.

The pnp_id variables also have the same problem, and Adam is fixing them
all up right now.  Any other subsystem that uses the driver core for
probing needs to be checked to make sure this problem isn't there too.

I've also added a documentation and pci_ids.h patch to this tree, as
they had been floating around for a while.

Please pull from:
	bk://kernel.bkbits.net/gregkh/linux/pci-2.6

thanks,

greg k-h

p.s. I'll send these as patches in response to this email to lkml for
those who want to see them.

 Documentation/DMA-mapping.txt           |    2 
 arch/mips/vr41xx/common/vrc4173.c       |    2 
 drivers/atm/eni.c                       |    2 
 drivers/atm/firestream.c                |    5 
 drivers/atm/he.c                        |    2 
 drivers/atm/idt77252.c                  |    2 
 drivers/atm/iphase.c                    |    2 
 drivers/block/umem.c                    |    2 
 drivers/char/agp/ali-agp.c              |    2 
 drivers/char/agp/amd-k7-agp.c           |    2 
 drivers/char/agp/amd-k8-agp.c           |    2 
 drivers/char/agp/i460-agp.c             |    2 
 drivers/char/agp/intel-agp.c            |    2 
 drivers/char/agp/nvidia-agp.c           |    2 
 drivers/char/agp/sworks-agp.c           |    2 
 drivers/char/epca.c                     |    2 
 drivers/char/synclink.c                 |    4 
 drivers/char/synclinkmp.c               |    4 
 drivers/char/watchdog/wdt_pci.c         |   10 
 drivers/i2c/busses/i2c-ali1535.c        |    2 
 drivers/i2c/busses/i2c-ali15x3.c        |    2 
 drivers/i2c/busses/i2c-amd756.c         |    2 
 drivers/i2c/busses/i2c-amd8111.c        |    2 
 drivers/i2c/busses/i2c-i801.c           |    2 
 drivers/i2c/busses/i2c-piix4.c          |    2 
 drivers/i2c/busses/i2c-sis96x.c         |    2 
 drivers/i2c/busses/i2c-viapro.c         |    2 
 drivers/i2c/chips/via686a.c             |    2 
 drivers/i2c/i2c-prosavage.c             |    2 
 drivers/ide/pci/aec62xx.c               |    2 
 drivers/ide/pci/alim15x3.c              |    2 
 drivers/ide/pci/amd74xx.c               |    2 
 drivers/ide/pci/cmd64x.c                |    2 
 drivers/ide/pci/cs5520.c                |    2 
 drivers/ide/pci/cs5530.c                |    2 
 drivers/ide/pci/cy82c693.c              |    2 
 drivers/ide/pci/generic.c               |    2 
 drivers/ide/pci/hpt34x.c                |    2 
 drivers/ide/pci/hpt366.c                |    2 
 drivers/ide/pci/it8172.c                |    2 
 drivers/ide/pci/ns87415.c               |    2 
 drivers/ide/pci/opti621.c               |    2 
 drivers/ide/pci/pdc202xx_new.c          |    2 
 drivers/ide/pci/pdc202xx_old.c          |    2 
 drivers/ide/pci/pdcadma.c               |    2 
 drivers/ide/pci/piix.c                  |    2 
 drivers/ide/pci/rz1000.c                |    2 
 drivers/ide/pci/sc1200.c                |    2 
 drivers/ide/pci/serverworks.c           |    2 
 drivers/ide/pci/siimage.c               |    2 
 drivers/ide/pci/sis5513.c               |    2 
 drivers/ide/pci/sl82c105.c              |    2 
 drivers/ide/pci/slc90e66.c              |    2 
 drivers/ide/pci/triflex.h               |    2 
 drivers/ide/pci/trm290.c                |    2 
 drivers/ide/pci/via82cxxx.c             |    2 
 drivers/ieee1394/ohci1394.c             |    2 
 drivers/ieee1394/pcilynx.c              |    2 
 drivers/input/gameport/cs461x.c         |    2 
 drivers/input/gameport/emu10k1-gp.c     |    2 
 drivers/input/gameport/fm801-gp.c       |    2 
 drivers/input/gameport/vortex.c         |    2 
 drivers/isdn/hardware/avm/b1pci.c       |    2 
 drivers/isdn/hardware/avm/c4.c          |    2 
 drivers/isdn/hardware/avm/t1pci.c       |    2 
 drivers/isdn/hardware/eicon/divasmain.c |    2 
 drivers/isdn/hisax/hisax_fcpcipnp.c     |    2 
 drivers/isdn/hisax/hisax_hfcpci.c       |    2 
 drivers/isdn/tpam/tpam_main.c           |    2 
 drivers/media/radio/radio-maxiradio.c   |    2 
 drivers/media/video/bttv-driver.c       |    2 
 drivers/media/video/meye.c              |    2 
 drivers/mtd/maps/amd76xrom.c            |    2 
 drivers/mtd/maps/ich2rom.c              |    2 
 drivers/mtd/maps/pci.c                  |    2 
 drivers/mtd/maps/scb2_flash.c           |    4 
 drivers/net/3c59x.c                     |    4 
 drivers/net/8139cp.c                    |    2 
 drivers/net/8139too.c                   |    2 
 drivers/net/acenic.c                    |    2 
 drivers/net/amd8111e.c                  |    2 
 drivers/net/arcnet/com20020-pci.c       |    2 
 drivers/net/b44.c                       |    2 
 drivers/net/defxx.c                     |    2 
 drivers/net/dl2k.h                      |    2 
 drivers/net/e100/e100_main.c            |    2 
 drivers/net/e1000/e1000_main.c          |    2 
 drivers/net/eepro100.c                  |    2 
 drivers/net/epic100.c                   |    2 
 drivers/net/fealnx.c                    |    2 
 drivers/net/hamachi.c                   |    2 
 drivers/net/ioc3-eth.c                  |    2 
 drivers/net/irda/donauboe.c             |    2 
 drivers/net/irda/toshoboe.c             |    2 
 drivers/net/irda/vlsi_ir.c              |    2 
 drivers/net/ixgb/ixgb_main.c            |    2 
 drivers/net/natsemi.c                   |    2 
 drivers/net/ne2k-pci.c                  |    2 
 drivers/net/ns83820.c                   |    2 
 drivers/net/pci-skeleton.c              |    2 
 drivers/net/pcnet32.c                   |    2 
 drivers/net/r8169.c                     |    2 
 drivers/net/rcpci45.c                   |    2 
 drivers/net/rrunner.c                   |    2 
 drivers/net/sis900.c                    |    2 
 drivers/net/sk98lin/skge.c              |    2 
 drivers/net/starfire.c                  |    2 
 drivers/net/sundance.c                  |    2 
 drivers/net/sungem.c                    |    2 
 drivers/net/sunhme.c                    |    2 
 drivers/net/tc35815.c                   |    2 
 drivers/net/tg3.c                       |    3 
 drivers/net/tlan.c                      |    2 
 drivers/net/tokenring/3c359.c           |    4 
 drivers/net/tokenring/abyss.c           |    2 
 drivers/net/tokenring/lanstreamer.c     |    2 
 drivers/net/tokenring/olympic.c         |    2 
 drivers/net/tokenring/tmspci.c          |    2 
 drivers/net/tulip/de2104x.c             |    2 
 drivers/net/tulip/dmfe.c                |    2 
 drivers/net/tulip/tulip_core.c          |    2 
 drivers/net/tulip/winbond-840.c         |    2 
 drivers/net/tulip/xircom_cb.c           |    2 
 drivers/net/tulip/xircom_tulip_cb.c     |    2 
 drivers/net/typhoon.c                   |    2 
 drivers/net/via-rhine.c                 |    2 
 drivers/net/wan/dscc4.c                 |    4 
 drivers/net/wan/farsync.c               |    2 
 drivers/net/wan/lmc/lmc_main.c          |    2 
 drivers/net/wan/pc300_drv.c             |    4 
 drivers/net/wireless/airo.c             |    2 
 drivers/net/wireless/orinoco_pci.c      |    2 
 drivers/net/wireless/orinoco_plx.c      |    2 
 drivers/net/wireless/orinoco_tmd.c      |    2 
 drivers/net/yellowfin.c                 |    2 
 drivers/parisc/eisa.c                   |    2 
 drivers/parisc/superio.c                |    2 
 drivers/parport/parport_pc.c            |    2 
 drivers/parport/parport_serial.c        |    2 
 drivers/pci/hotplug/cpcihp_zt5550.c     |    5 
 drivers/pci/hotplug/cpqphp_core.c       |    2 
 drivers/pci/hotplug/ibmphp_ebda.c       |    2 
 drivers/pcmcia/yenta_socket.c           |    2 
 drivers/scsi/dc395x.c                   |    4 
 drivers/scsi/gdth.c                     |    4 
 drivers/scsi/ips.c                      |    2 
 drivers/scsi/nsp32.c                    |    2 
 drivers/scsi/tmscsim.c                  |    4 
 drivers/serial/8250_pci.c               |    2 
 drivers/video/aty/aty128fb.c            |    2 
 drivers/video/chipsfb.c                 |    2 
 drivers/video/console/sticore.c         |    2 
 drivers/video/cyber2000fb.c             |    2 
 drivers/video/i810/i810_main.h          |   34 +-
 drivers/video/imsttfb.c                 |    2 
 drivers/video/matrox/matroxfb_base.c    |    2 
 drivers/video/neofb.c                   |    2 
 drivers/video/radeonfb.c                |    2 
 drivers/video/riva/fbdev.c              |    2 
 drivers/video/sstfb.c                   |    2 
 drivers/video/tdfxfb.c                  |    4 
 drivers/video/tridentfb.c               |    2 
 include/linux/pci_ids.h                 |    2 
 sound/oss/ad1889.c                      |    2 
 sound/oss/ali5455.c                     |    2 
 sound/oss/btaudio.c                     |    2 
 sound/oss/cs4281/cs4281m.c              |    2 
 sound/oss/cs46xx.c                      |    2 
 sound/oss/es1370.c                      |    2 
 sound/oss/es1371.c                      |    2 
 sound/oss/esssolo1.c                    |    2 
 sound/oss/forte.c                       |    2 
 sound/oss/i810_audio.c                  |    2 
 sound/oss/ite8172.c                     |    2 
 sound/oss/kahlua.c                      |    2 
 sound/oss/maestro.c                     |    4 
 sound/oss/maestro3.c                    |    2 
 sound/oss/nec_vrc5477.c                 |    2 
 sound/oss/nm256_audio.c                 |    2 
 sound/oss/rme96xx.c                     |    2 
 sound/oss/sonicvibes.c                  |    4 
 sound/oss/trident.c                     |    2 
 sound/oss/via82cxxx_audio.c             |    2 
 sound/oss/ymfpci.c                      |    2 
 sound/pci/ali5451/ali5451.c             |   54 +---
 sound/pci/als4000.c                     |    2 
 sound/pci/azt3328.c                     |    2 
 sound/pci/cmipci.c                      |    6 
 sound/pci/cs4281.c                      |   76 ++---
 sound/pci/cs46xx/cs46xx.c               |   15 -
 sound/pci/emu10k1/emu10k1.c             |   12 
 sound/pci/ens1370.c                     |   12 
 sound/pci/es1938.c                      |    8 
 sound/pci/es1968.c                      |   50 +--
 sound/pci/fm801.c                       |    2 
 sound/pci/ice1712/ice1712.c             |    2 
 sound/pci/ice1712/ice1724.c             |    6 
 sound/pci/intel8x0.c                    |  360 ++++++++++++++++-----------
 sound/pci/korg1212/korg1212.c           |    2 
 sound/pci/maestro3.c                    |  102 ++++---
 sound/pci/nm256/nm256.c                 |   15 -
 sound/pci/rme32.c                       |    2 
 sound/pci/rme96.c                       |   20 -
 sound/pci/rme9652/hdsp.c                |  419 +++++++++++++++++++-------------
 sound/pci/rme9652/rme9652.c             |   80 +++---
 sound/pci/sonicvibes.c                  |    8 
 sound/pci/trident/trident.c             |   17 -
 sound/pci/via82xx.c                     |    8 
 sound/pci/vx222/vx222.c                 |    2 
 sound/pci/ymfpci/ymfpci.c               |   17 -
 210 files changed, 913 insertions(+), 827 deletions(-)
-----

Greg Kroah-Hartman:
  o PCI: merge fixups
  o PCI: pci_device_id can not be marked __devinitdata
  o PCI: pci_device_id can not be marked __devinitdata
  o PCI: pci_device_id can not be marked __devinitdata
  o PCI: pci_device_id can not be marked __devinitdata
  o PCI: pci_device_id can not be marked __devinitdata
  o PCI: pci_device_id can not be marked __devinitdata.  Fixes up sound/*

Mitchell Blank Jr.:
  o PCI: add 2 entries to pci_ids.h
  o PCI: Trivial DMA-mapping.txt fix