Commit 94b1661d authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6:
  [PATCH] PCI quirk: VIA IRQ fixup should only run for VIA southbridges
  [PATCH] PCI: fix potential resource leak in drivers/pci/msi.c
  [PATCH] PCI: Documentation: no more device ids
  [PATCH] PCI: fix via irq SATA patch
parents 4e9a4b71 75cf7456
...@@ -259,7 +259,17 @@ on the bus need to be capable of doing it, so this is something which needs ...@@ -259,7 +259,17 @@ on the bus need to be capable of doing it, so this is something which needs
to be handled by platform and generic code, not individual drivers. to be handled by platform and generic code, not individual drivers.
8. Obsolete functions 8. Vendor and device identifications
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For the future, let's avoid adding device ids to include/linux/pci_ids.h.
PCI_VENDOR_ID_xxx for vendors, and a hex constant for device ids.
Rationale: PCI_VENDOR_ID_xxx constants are re-used, but device ids are not.
Further, device ids are arbitrary hex numbers, normally used only in a
single location, the pci_device_id table.
9. Obsolete functions
~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
There are several functions which you might come across when trying to There are several functions which you might come across when trying to
port an old driver to the new PCI interface. They are no longer present port an old driver to the new PCI interface. They are no longer present
......
...@@ -591,7 +591,6 @@ static __init int via_router_probe(struct irq_router *r, ...@@ -591,7 +591,6 @@ static __init int via_router_probe(struct irq_router *r,
case PCI_DEVICE_ID_VIA_8233A: case PCI_DEVICE_ID_VIA_8233A:
case PCI_DEVICE_ID_VIA_8235: case PCI_DEVICE_ID_VIA_8235:
case PCI_DEVICE_ID_VIA_8237: case PCI_DEVICE_ID_VIA_8237:
case PCI_DEVICE_ID_VIA_8237_SATA:
/* FIXME: add new ones for 8233/5 */ /* FIXME: add new ones for 8233/5 */
r->name = "VIA"; r->name = "VIA";
r->get = pirq_via_get; r->get = pirq_via_get;
......
...@@ -793,8 +793,10 @@ static int msix_capability_init(struct pci_dev *dev, ...@@ -793,8 +793,10 @@ static int msix_capability_init(struct pci_dev *dev,
if (!entry) if (!entry)
break; break;
vector = get_msi_vector(dev); vector = get_msi_vector(dev);
if (vector < 0) if (vector < 0) {
kmem_cache_free(msi_cachep, entry);
break; break;
}
j = entries[i].entry; j = entries[i].entry;
entries[i].vector = vector; entries[i].vector = vector;
......
...@@ -642,13 +642,15 @@ static void quirk_via_irq(struct pci_dev *dev) ...@@ -642,13 +642,15 @@ static void quirk_via_irq(struct pci_dev *dev)
new_irq = dev->irq & 0xf; new_irq = dev->irq & 0xf;
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
if (new_irq != irq) { if (new_irq != irq) {
printk(KERN_INFO "PCI: Via IRQ fixup for %s, from %d to %d\n", printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n",
pci_name(dev), irq, new_irq); pci_name(dev), irq, new_irq);
udelay(15); /* unknown if delay really needed */ udelay(15); /* unknown if delay really needed */
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq);
} }
} }
DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_ANY_ID, quirk_via_irq); DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_irq);
DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_irq);
DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irq);
/* /*
* VIA VT82C598 has its device ID settable and many BIOSes * VIA VT82C598 has its device ID settable and many BIOSes
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment