diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-04-27 17:26:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-04-27 17:26:03 -0400 |
commit | 94b1661d08a27a8d2b1b0127c272987b0ab4ad6a (patch) | |
tree | 770f24b91cefd9bb689cf9af0df32fb0e92c34b2 /drivers | |
parent | 4e9a4b71f1eb23f35c394eb2b388dbe0389d316a (diff) | |
parent | 75cf7456dd87335f574dcd53c4ae616a2ad71a11 (diff) |
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
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/pci/msi.c | 4 | ||||
-rw-r--r-- | drivers/pci/quirks.c | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index 2087a397ef16..9855c4c920b8 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c | |||
@@ -793,8 +793,10 @@ static int msix_capability_init(struct pci_dev *dev, | |||
793 | if (!entry) | 793 | if (!entry) |
794 | break; | 794 | break; |
795 | vector = get_msi_vector(dev); | 795 | vector = get_msi_vector(dev); |
796 | if (vector < 0) | 796 | if (vector < 0) { |
797 | kmem_cache_free(msi_cachep, entry); | ||
797 | break; | 798 | break; |
799 | } | ||
798 | 800 | ||
799 | j = entries[i].entry; | 801 | j = entries[i].entry; |
800 | entries[i].vector = vector; | 802 | entries[i].vector = vector; |
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index c42ae2cf8d64..19e2b174d33c 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
@@ -642,13 +642,15 @@ static void quirk_via_irq(struct pci_dev *dev) | |||
642 | new_irq = dev->irq & 0xf; | 642 | new_irq = dev->irq & 0xf; |
643 | pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); | 643 | pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); |
644 | if (new_irq != irq) { | 644 | if (new_irq != irq) { |
645 | printk(KERN_INFO "PCI: Via IRQ fixup for %s, from %d to %d\n", | 645 | printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n", |
646 | pci_name(dev), irq, new_irq); | 646 | pci_name(dev), irq, new_irq); |
647 | udelay(15); /* unknown if delay really needed */ | 647 | udelay(15); /* unknown if delay really needed */ |
648 | pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); | 648 | pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); |
649 | } | 649 | } |
650 | } | 650 | } |
651 | DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_ANY_ID, quirk_via_irq); | 651 | DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_irq); |
652 | DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_irq); | ||
653 | DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irq); | ||
652 | 654 | ||
653 | /* | 655 | /* |
654 | * VIA VT82C598 has its device ID settable and many BIOSes | 656 | * VIA VT82C598 has its device ID settable and many BIOSes |