From 212aa2adf154ea7bc0f2e2c936b615d55fa322b7 Mon Sep 17 00:00:00 2001 From: Andy Gospodarek Date: Tue, 8 Apr 2008 17:32:25 -0400 Subject: [PATCH] Revert "PCI: Add quirk for devices which disable MSI when INTX_DISABLE is set." This reverts commit 5e8784363bad1a38e88caab5eced9700f5d51672. --- drivers/net/tg3.c | 9 +++++++++ drivers/pci/msi.c | 11 ++--------- drivers/pci/quirks.c | 24 ------------------------ include/linux/pci.h | 9 --------- 4 files changed, 11 insertions(+), 42 deletions(-) diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 38977cf..c23fb64 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c @@ -7492,6 +7492,10 @@ static int tg3_open(struct net_device *dev) } else if (pci_enable_msi(tp->pdev) == 0) { u32 msi_mode; + /* Hardware bug - MSI won't work if INTX disabled. */ + if (tp->tg3_flags2 & TG3_FLG2_5780_CLASS) + pci_intx(tp->pdev, 1); + msi_mode = tr32(MSGINT_MODE); tw32(MSGINT_MODE, msi_mode | MSGINT_MODE_ENABLE); tp->tg3_flags2 |= TG3_FLG2_USING_MSI; @@ -12930,6 +12934,11 @@ static int tg3_resume(struct pci_dev *pdev) if (err) return err; + /* Hardware bug - MSI won't work if INTX disabled. */ + if ((tp->tg3_flags2 & TG3_FLG2_5780_CLASS) && + (tp->tg3_flags2 & TG3_FLG2_USING_MSI)) + pci_intx(tp->pdev, 1); + netif_device_attach(dev); tg3_full_lock(tp, 0); diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index d18966d..2a63a74 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c @@ -433,13 +433,6 @@ static void irq_handler_init(int cap_id, int pos, int mask) spin_unlock_irqrestore(&irq_desc[pos].lock, flags); } - -static void pci_intx_for_msi(struct pci_dev *dev, int enable) -{ - if (!(dev->dev_flags & PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG)) - pci_intx(dev, enable); -} - static void enable_msi_mode(struct pci_dev *dev, int pos, int type) { u16 control; @@ -457,7 +450,7 @@ static void enable_msi_mode(struct pci_dev *dev, int pos, int type) } if (pci_find_capability(dev, PCI_CAP_ID_EXP)) { /* PCI Express Endpoint device detected */ - pci_intx_for_msi(dev, 0); /* disable intx */ + pci_intx(dev, 0); /* disable intx */ } } @@ -478,7 +471,7 @@ void disable_msi_mode(struct pci_dev *dev, int pos, int type) } if (pci_find_capability(dev, PCI_CAP_ID_EXP)) { /* PCI Express Endpoint device detected */ - pci_intx_for_msi(dev, 1); /* enable intx */ + pci_intx(dev, 1); /* enable intx */ } } diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index ad0dd11..ca70481 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -1866,28 +1866,4 @@ static void __devinit quirk_nvidia_ck804_msi_ht_cap(struct pci_dev *dev) } DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE, quirk_nvidia_ck804_msi_ht_cap); - -static void __devinit quirk_msi_intx_disable_bug(struct pci_dev *dev) -{ - dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG; -} -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, - PCI_DEVICE_ID_TIGON3_5780, - quirk_msi_intx_disable_bug); -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, - PCI_DEVICE_ID_TIGON3_5780S, - quirk_msi_intx_disable_bug); -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, - PCI_DEVICE_ID_TIGON3_5714, - quirk_msi_intx_disable_bug); -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, - PCI_DEVICE_ID_TIGON3_5714S, - quirk_msi_intx_disable_bug); -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, - PCI_DEVICE_ID_TIGON3_5715, - quirk_msi_intx_disable_bug); -DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, - PCI_DEVICE_ID_TIGON3_5715S, - quirk_msi_intx_disable_bug); - #endif /* CONFIG_PCI_MSI */ diff --git a/include/linux/pci.h b/include/linux/pci.h index 2b6bf79..3b2bcb1 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -107,14 +107,6 @@ enum pcie_reset_state { pci_reset_pcie_hot_reset = (__force pcie_reset_state_t) 3 }; -typedef unsigned short __bitwise pci_dev_flags_t; -enum pci_dev_flags { - /* INTX_DISABLE in PCI_COMMAND register disables MSI - * generation too. - */ - PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = (__force pci_dev_flags_t) 1, -}; - typedef unsigned short __bitwise pci_bus_flags_t; enum pci_bus_flags { PCI_BUS_FLAGS_NO_MSI = (__force pci_bus_flags_t) 1, @@ -190,7 +182,6 @@ struct pci_dev { unsigned int msix_enabled:1; #ifndef __GENKSYMS__ unsigned int is_managed:1; - pci_dev_flags_t dev_flags; #endif u32 saved_config_space[16]; /* config space saved at suspend time */ -- 1.5.2.1