PCI: modify SB700 SATA MSI quirk
PATCH 1/1 PCI: modify SB700 SATA MSI quirk
SB700 SATA MSI bug will be fixed in SB700 revision A21 at hardware level,
but the SB700 revision older than A21 will also be found in the market. This patch modify the original quirk commit bc38b411fe696fad32b261f492cb4afbf1835256 instead of withdrawing it. The patch also removes quirk to 0x4395 because 0x4395 is SB800 device ID.
diff -ruN linux-2.6.24-rc7_org/drivers/pci/quirks.c linux-2.6.24-rc7_new/drivers/pci/quirks.c
--- linux-2.6.24-rc7_org/drivers/pci/quirks.c 2008-01-23
14:44:53.000000000 +0800
+++ linux-2.6.24-rc7_new/drivers/pci/quirks.c 2008-01-25
12:55:05.000000000 +0800
@@ -1709,6 +1709,23 @@
{
dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
}
+static void __devinit quirk_msi_intx_disable_ati_bug(struct pci_dev *dev)
+{
+ struct pci_dev *p;
+
+ /* SB700 MSI issue will be fixed at HW level from revision A21,
+ * we need check PCI REVISION ID of SMBus controller to get
SB700
+ * revision.
+ */
+ p = pci_get_device(PCI_VENDOR_ID_ATI,PCI_DEVICE_ID_ATI_SBX00_SMBUS,
+ NULL);
+ if (!p)
+ return;
+
+ if ((p->revision < 0x3B) && (p->revision >= 0x30))
+ dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
+ pci_dev_put(p);
+}
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM,
PCI_DEVICE_ID_TIGON3_5780, quirk_msi_intx_disable_bug);
@@ -1729,17 +1746,15 @@
quirk_msi_intx_disable_bug);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4390,
- quirk_msi_intx_disable_bug);
+ quirk_msi_intx_disable_ati_bug);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4391,
- quirk_msi_intx_disable_bug);
+ quirk_msi_intx_disable_ati_bug);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4392,
- quirk_msi_intx_disable_bug);
+ quirk_msi_intx_disable_ati_bug);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4393,
- quirk_msi_intx_disable_bug);
+ quirk_msi_intx_disable_ati_bug);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4394,
- quirk_msi_intx_disable_bug);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4395,
- quirk_msi_intx_disable_bug);
+ quirk_msi_intx_disable_ati_bug);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4373,
quirk_msi_intx_disable_bug);
Thanks
Shane
drivers/pci/quirks.c +22 -7
@@ -1709,6 +1709,23 @@ { dev->dev_flags |=PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG ; } +static void __devinit quirk_msi_intx_disable_ati_bug (struct pci_dev *dev) +{ +struct pci_dev *p; + +/* SB700 MSI issue will be fixed at HW level from revision A21, +* we need check PCI REVISION ID of SMBus controller to get SB700 +* revision. +*/ + p =pci_get_device (PCI_VENDOR_ID_ATI ,PCI_DEVICE_ID_ATI_SBX00_SMBUS , +NULL ); +if (!p) +return ; + +if ((p->revision <0x3B ) && (p->revision >=0x30 )) + dev->dev_flags |=PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG ; +pci_dev_put (p); +}DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_BROADCOM ,PCI_DEVICE_ID_TIGON3_5780 , quirk_msi_intx_disable_bug);
@@ -1729,17 +1746,15 @@ quirk_msi_intx_disable_bug);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4390 , - quirk_msi_intx_disable_bug); + quirk_msi_intx_disable_ati_bug);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4391 , - quirk_msi_intx_disable_bug); + quirk_msi_intx_disable_ati_bug);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4392 , - quirk_msi_intx_disable_bug); + quirk_msi_intx_disable_ati_bug);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4393 , - quirk_msi_intx_disable_bug); + quirk_msi_intx_disable_ati_bug);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4394 , - quirk_msi_intx_disable_bug); -DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4395 , - quirk_msi_intx_disable_bug); + quirk_msi_intx_disable_ati_bug);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4373 , quirk_msi_intx_disable_bug);
PATCH 1/1 PCI: modify SB700 SATA MSI quirk
From: Shane Huang <[email protected]>
SB700 SATA MSI bug will be fixed in SB700 revision A21 at hardware level, but the SB700 revision older than A21 will also be found in the market. This patch modify the original quirk commit bc38b411fe696fad32b261f492cb4afbf1835256 instead of withdrawing it. The patch also removes quirk to 0x4395 because 0x4395 is SB800 device ID.
---
Okay, here's reformatted in-line version. Shane, please invest some time into setting up email environment. Sending patches via email is an important part of the linux kernel development process and if you're gonna submit patches, you're just gonna have to do it.
drivers/pci/quirks.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-)
drivers/pci/quirks.c +22 -7
@@ -1715,6 +1715,23 @@ static void __devinit quirk_msi_intx_disable_bug(struct pci_dev *dev) { dev->dev_flags |=PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG ; } +static void __devinit quirk_msi_intx_disable_ati_bug (struct pci_dev *dev) +{ +struct pci_dev *p; + +/* SB700 MSI issue will be fixed at HW level from revision A21, +* we need check PCI REVISION ID of SMBus controller to get SB700 +* revision. +*/ + p =pci_get_device (PCI_VENDOR_ID_ATI ,PCI_DEVICE_ID_ATI_SBX00_SMBUS , +NULL ); +if (!p) +return ; + +if ((p->revision <0x3B ) && (p->revision >=0x30 )) + dev->dev_flags |=PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG ; +pci_dev_put (p); +}DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_BROADCOM ,PCI_DEVICE_ID_TIGON3_5780 , quirk_msi_intx_disable_bug);
@@ -1735,17 +1752,15 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_BROADCOM, quirk_msi_intx_disable_bug);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4390 , - quirk_msi_intx_disable_bug); + quirk_msi_intx_disable_ati_bug);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4391 , - quirk_msi_intx_disable_bug); + quirk_msi_intx_disable_ati_bug);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4392 , - quirk_msi_intx_disable_bug); + quirk_msi_intx_disable_ati_bug);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4393 , - quirk_msi_intx_disable_bug); + quirk_msi_intx_disable_ati_bug);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4394 , - quirk_msi_intx_disable_bug); -DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4395 , - quirk_msi_intx_disable_bug); + quirk_msi_intx_disable_ati_bug);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI ,0x4373 , quirk_msi_intx_disable_bug);
Hi Tejun:
Quoted 4 lines
Okay, here's reformatted in-line version. Shane, please invest some time into setting up email environment. Sending patches via email is an important part of the linux kernel development process and if you're gonna submit patches, you're just gonna have to do it.
Right. In fact, I tried to modify some settings before I sent my mail, but it seems that it does not take effect. I will check it again. Sorry for that
and thank you for your help~~
Thanks
Shane
Quoted 11 lines · Tejun Heo
From: Shane Huang <[email protected]>
SB700 SATA MSI bug will be fixed in SB700 revision A21 at hardware level, but the SB700 revision older than A21 will also be found in the market. This patch modify the original quirk commit
bc38b411fe696fad32b261f492cb4afbf1835256instead of withdrawing it. The patch also removes quirk to0x4395because0x4395is SB800 device ID.Signed-off-by Shane Huang <[email protected]>Signed-off-by Tejun Heo <[email protected]>
Quoted 8 lines
---
Okay, here's reformatted in-line version. Shane, please invest some time into setting up email environment. Sending patches via email is an important part of the linux kernel development process and if you're gonna submit patches, you're just gonna have to do it.drivers/pci/quirks.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-)
FWIW, I'm happy with whatever this thread results in... it sounds like Tejun and Shane are iterating towards a satisfactory final result.
Just let me know if I need to merge something, since I'm assuming that GregKH will push this through the PCI tree.