Use pci_find_ht_capability() in drivers/pci/quirks.c.

I'm pretty sure the logic is unchanged here, but someone please eye-ball it
for me. I've changed the message to be a little shorter, it's now:

PCI: Found (enabled|disabled) HT MSI mapping on xxxx:xx:xx.x

Signed-off-by: Michael Ellerman <[EMAIL PROTECTED]>
---

 drivers/pci/quirks.c |   27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

Index: msi/drivers/pci/quirks.c
===================================================================
--- msi.orig/drivers/pci/quirks.c
+++ msi/drivers/pci/quirks.c
@@ -1724,19 +1724,22 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AM
  * return 1 if a HT MSI capability is found and enabled */
 static int __devinit msi_ht_cap_enabled(struct pci_dev *dev)
 {
-       u8 pos;
-       int ttl;
-       for (pos = pci_find_capability(dev, PCI_CAP_ID_HT), ttl = 48;
-            pos && ttl;
-            pos = pci_find_next_capability(dev, pos, PCI_CAP_ID_HT), ttl--) {
-               u32 cap_hdr;
-               /* MSI mapping section according to Hypertransport spec */
-               if (pci_read_config_dword(dev, pos, &cap_hdr) == 0
-                   && (cap_hdr & 0xf8000000) == 0xa8000000 /* MSI mapping */) {
-                       printk(KERN_INFO "PCI: Found HT MSI mapping on %s with 
capability %s\n",
-                              pci_name(dev), cap_hdr & 0x10000 ? "enabled" : 
"disabled");
-                       return (cap_hdr & 0x10000) != 0; /* MSI mapping cap 
enabled */
+       int pos;
+
+       pos = pci_find_ht_capability(dev, HT_CAPTYPE_MSI_MAPPING);
+       while (pos) {
+               u8 flags;
+
+               if (pci_read_config_byte(dev,
+                               pos + HT_MSI_FLAGS, &flags) == 0) {
+                       printk(KERN_INFO "PCI: Found %s HT MSI Mapping on %s\n",
+                               flags & HT_MSI_FLAGS_ENABLE ?
+                               "enabled" : "disabled", pci_name(dev));
+                       return (flags & HT_MSI_FLAGS_ENABLE) != 0;
                }
+
+               pos = pci_find_next_ht_capability(dev, pos,
+                               HT_CAPTYPE_MSI_MAPPING);
        }
        return 0;
 }

_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to