1. 20 Dec, 2006 1 commit
    • Russell King's avatar
      PCI: use /sys/bus/pci/drivers/<driver>/new_id first · 7461b60a
      Russell King authored
      Unfortunately, the .../new_id feature does not work with the 8250_pci
      driver.
      
      The reason for this comes down to the way .../new_id is implemented.
      When PCI tries to match a driver to a device, it checks the modules
      static device ID tables _before_ checking the dynamic new_id tables.
      
      When a driver is capable of matching by ID, and falls back to matching
      by class (as 8250_pci does), this makes it absolutely impossible to
      specify a board by ID, and as such the correct driver_data value to
      use with it.
      
      Let's say you have a serial board with vendor 0x1234 and device 0x5678.
      It's class is set to PCI_CLASS_COMMUNICATION_SERIAL.
      
      On boot, this card is matched to the 8250_pci driver, which tries to
      probe it because it matched using the class entry.  The driver finds
      that it is unable to automatically detect the correct settings to use,
      so it returns -ENODEV.
      
      You know that the information the driver needs is to match this card
      using a device_data value of '7'.  So you echo 1234 5678 0 0 0 0 7
      into new_id.
      
      The kernel attempts to re-bind 8250_pci to this device.  However,
      because it scans the PCI driver tables, it _again_ matches the class
      entry which has the wrong device_data.  It fails.
      
      End of story.  You can't support the card without rebuilding the
      kernel (or writing a specific PCI probe module to support it.)
      
      So, can we make new_id override the driver-internal PCI ID tables?
      IOW, like this:
      
      
      From: Russell King <rmk@arm.linux.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      7461b60a
  2. 19 Dec, 2006 1 commit
  3. 18 Dec, 2006 26 commits
  4. 17 Dec, 2006 10 commits
  5. 16 Dec, 2006 2 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband · c7ef259b
      Linus Torvalds authored
      * 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband:
        IB/mthca: Use DEFINE_MUTEX() instead of mutex_init()
        IB/mthca: Add HCA profile module parameters
        IB/srp: Fix FMR mapping for 32-bit kernels and addresses above 4G
        IB: Fix ib_dma_alloc_coherent() wrapper
      c7ef259b
    • Linus Torvalds's avatar
      Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev · 99f5e971
      Linus Torvalds authored
      * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev:
        [PATCH] pata_via: Cable detect error
        [PATCH] Fix help text for CONFIG_ATA_PIIX
        [PATCH] initializer entry defined twice in pata_rz1000
        [PATCH] ata: fix platform_device_register_simple() error check
        [PATCH] ahci: do not mangle saved HOST_CAP while resetting controller
        [PATCH] libata: don't initialize sg in ata_exec_internal() if DMA_NONE (take #2)
        [libata] sata_svw: Disable ATAPI DMA on current boards (errata workaround)
        [libata] use kmap_atomic(KM_IRQ0) in SCSI simulator
        [PATCH] ata_piix: use piix_host_stop() in ich_pata_ops
        [PATCH] ata_piix: IDE mode SATA patch for Intel ICH9
      99f5e971