All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/5] Unmarking Mellanox devices with broken INTx masking
@ 2016-11-17 23:29 Bjorn Helgaas
  2016-11-17 23:30 ` [PATCH v3 1/5] PCI: Add Mellanox device IDs Bjorn Helgaas
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Bjorn Helgaas @ 2016-11-17 23:29 UTC (permalink / raw)
  To: Noa Osherovich; +Cc: linux-pci, majd, gwshan

Maybe the third time is the charm.  This is basically the v1 you posted,
but I added an mlx4 update to use the new device ID definitions.  That way
grep and cscope will find the ID both places, so we can match the quirk
with the related driver.

This is on the pci/virtualization branch.  And I did build it this time.

v2 -> v3
- Add device ID definitions to pci_ids.h (from original patch of Nov 1)
- Use new definitions in mlx4 driver (new patch)
- Use new definitions in quirks (as in v1 patches)

v1 -> v2 (pushed to pci/virtualization branch but not posted on list)
- Bjorn removed device ID definitions (which broke build)
- Bjorn reordered so Mellanox wasn't in the middle of other quirk list
- Bjorn moved pci_disable_device() to end of quirk

v0 -> v1
Fixes according to Gavin Shan's comments:
- Patch numbering was wrong
- Fixed logic of mellanox_check_broken_intx_masking

---

Bjorn Helgaas (1):
      net/mlx4_core: Use device ID defines

Noa Osherovich (4):
      PCI: Add Mellanox device IDs
      PCI: Convert broken INTx masking quirks from HEADER to FINAL
      PCI: Convert Mellanox broken INTx quirks to be for listed devices only
      PCI: Support INTx masking on ConnectX-4 with firmware x.14.1100+


 drivers/net/ethernet/mellanox/mlx4/main.c |   78 +++++++-------
 drivers/pci/quirks.c                      |  159 ++++++++++++++++++++++-------
 include/linux/pci_ids.h                   |   27 ++++-
 3 files changed, 181 insertions(+), 83 deletions(-)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v3 1/5] PCI: Add Mellanox device IDs
  2016-11-17 23:29 [PATCH v3 0/5] Unmarking Mellanox devices with broken INTx masking Bjorn Helgaas
@ 2016-11-17 23:30 ` Bjorn Helgaas
  2016-11-17 23:30 ` [PATCH v3 2/5] net/mlx4_core: Use device ID defines Bjorn Helgaas
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: Bjorn Helgaas @ 2016-11-17 23:30 UTC (permalink / raw)
  To: Noa Osherovich; +Cc: linux-pci, majd, gwshan

From: Noa Osherovich <noaos@mellanox.com>

Add Mellanox device IDs for use by the mlx4 driver and INTx quirks.

[bhelgaas: sorted and adapted from
http://lkml.kernel.org/r/1478011644-12080-1-git-send-email-noaos@mellanox.com]
Signed-off-by: Noa Osherovich <noaos@mellanox.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 include/linux/pci_ids.h |   27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index c58752f..f020ab4 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -2256,12 +2256,29 @@
 #define PCI_DEVICE_ID_ZOLTRIX_2BD0	0x2bd0
 
 #define PCI_VENDOR_ID_MELLANOX		0x15b3
-#define PCI_DEVICE_ID_MELLANOX_TAVOR	0x5a44
+#define PCI_DEVICE_ID_MELLANOX_CONNECTX3	0x1003
+#define PCI_DEVICE_ID_MELLANOX_CONNECTX3_PRO	0x1007
+#define PCI_DEVICE_ID_MELLANOX_CONNECTIB	0x1011
+#define PCI_DEVICE_ID_MELLANOX_CONNECTX4	0x1013
+#define PCI_DEVICE_ID_MELLANOX_CONNECTX4_LX	0x1015
+#define PCI_DEVICE_ID_MELLANOX_TAVOR		0x5a44
 #define PCI_DEVICE_ID_MELLANOX_TAVOR_BRIDGE	0x5a46
-#define PCI_DEVICE_ID_MELLANOX_ARBEL_COMPAT 0x6278
-#define PCI_DEVICE_ID_MELLANOX_ARBEL	0x6282
-#define PCI_DEVICE_ID_MELLANOX_SINAI_OLD 0x5e8c
-#define PCI_DEVICE_ID_MELLANOX_SINAI	0x6274
+#define PCI_DEVICE_ID_MELLANOX_SINAI_OLD	0x5e8c
+#define PCI_DEVICE_ID_MELLANOX_SINAI		0x6274
+#define PCI_DEVICE_ID_MELLANOX_ARBEL_COMPAT	0x6278
+#define PCI_DEVICE_ID_MELLANOX_ARBEL		0x6282
+#define PCI_DEVICE_ID_MELLANOX_HERMON_SDR	0x6340
+#define PCI_DEVICE_ID_MELLANOX_HERMON_DDR	0x634a
+#define PCI_DEVICE_ID_MELLANOX_HERMON_QDR	0x6354
+#define PCI_DEVICE_ID_MELLANOX_HERMON_EN	0x6368
+#define PCI_DEVICE_ID_MELLANOX_CONNECTX_EN	0x6372
+#define PCI_DEVICE_ID_MELLANOX_HERMON_DDR_GEN2	0x6732
+#define PCI_DEVICE_ID_MELLANOX_HERMON_QDR_GEN2	0x673c
+#define PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_5_GEN2 0x6746
+#define PCI_DEVICE_ID_MELLANOX_HERMON_EN_GEN2	0x6750
+#define PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_T_GEN2 0x675a
+#define PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_GEN2	0x6764
+#define PCI_DEVICE_ID_MELLANOX_CONNECTX2	0x676e
 
 #define PCI_VENDOR_ID_DFI		0x15bd
 


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v3 2/5] net/mlx4_core: Use device ID defines
  2016-11-17 23:29 [PATCH v3 0/5] Unmarking Mellanox devices with broken INTx masking Bjorn Helgaas
  2016-11-17 23:30 ` [PATCH v3 1/5] PCI: Add Mellanox device IDs Bjorn Helgaas
@ 2016-11-17 23:30 ` Bjorn Helgaas
  2016-11-20  7:08   ` Noa Osherovich
  2016-11-17 23:30 ` [PATCH v3 3/5] PCI: Convert broken INTx masking quirks from HEADER to FINAL Bjorn Helgaas
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Bjorn Helgaas @ 2016-11-17 23:30 UTC (permalink / raw)
  To: Noa Osherovich; +Cc: linux-pci, majd, gwshan

We added a bunch of new Mellanox device ID definitions because they'll be
used by INTx quirks.  Use them in the mlx4 ID table also so grep can find
both places.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 drivers/net/ethernet/mellanox/mlx4/main.c |   78 ++++++++++++++---------------
 1 file changed, 37 insertions(+), 41 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
index 7183ac4..672e0a2e 100644
--- a/drivers/net/ethernet/mellanox/mlx4/main.c
+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
@@ -4012,49 +4012,45 @@ int mlx4_restart_one(struct pci_dev *pdev)
 	return err;
 }
 
+#define MLX_SP(id) { PCI_VDEVICE(MELLANOX, id), MLX4_PCI_DEV_FORCE_SENSE_PORT }
+#define MLX_VF(id) { PCI_VDEVICE(MELLANOX, id), MLX4_PCI_DEV_IS_VF }
+#define MLX_GN(id) { PCI_VDEVICE(MELLANOX, id), 0 }
+
 static const struct pci_device_id mlx4_pci_table[] = {
-	/* MT25408 "Hermon" SDR */
-	{ PCI_VDEVICE(MELLANOX, 0x6340), MLX4_PCI_DEV_FORCE_SENSE_PORT },
-	/* MT25408 "Hermon" DDR */
-	{ PCI_VDEVICE(MELLANOX, 0x634a), MLX4_PCI_DEV_FORCE_SENSE_PORT },
-	/* MT25408 "Hermon" QDR */
-	{ PCI_VDEVICE(MELLANOX, 0x6354), MLX4_PCI_DEV_FORCE_SENSE_PORT },
-	/* MT25408 "Hermon" DDR PCIe gen2 */
-	{ PCI_VDEVICE(MELLANOX, 0x6732), MLX4_PCI_DEV_FORCE_SENSE_PORT },
-	/* MT25408 "Hermon" QDR PCIe gen2 */
-	{ PCI_VDEVICE(MELLANOX, 0x673c), MLX4_PCI_DEV_FORCE_SENSE_PORT },
-	/* MT25408 "Hermon" EN 10GigE */
-	{ PCI_VDEVICE(MELLANOX, 0x6368), MLX4_PCI_DEV_FORCE_SENSE_PORT },
-	/* MT25408 "Hermon" EN 10GigE PCIe gen2 */
-	{ PCI_VDEVICE(MELLANOX, 0x6750), MLX4_PCI_DEV_FORCE_SENSE_PORT },
-	/* MT25458 ConnectX EN 10GBASE-T 10GigE */
-	{ PCI_VDEVICE(MELLANOX, 0x6372), MLX4_PCI_DEV_FORCE_SENSE_PORT },
-	/* MT25458 ConnectX EN 10GBASE-T+Gen2 10GigE */
-	{ PCI_VDEVICE(MELLANOX, 0x675a), MLX4_PCI_DEV_FORCE_SENSE_PORT },
-	/* MT26468 ConnectX EN 10GigE PCIe gen2*/
-	{ PCI_VDEVICE(MELLANOX, 0x6764), MLX4_PCI_DEV_FORCE_SENSE_PORT },
-	/* MT26438 ConnectX EN 40GigE PCIe gen2 5GT/s */
-	{ PCI_VDEVICE(MELLANOX, 0x6746), MLX4_PCI_DEV_FORCE_SENSE_PORT },
-	/* MT26478 ConnectX2 40GigE PCIe gen2 */
-	{ PCI_VDEVICE(MELLANOX, 0x676e), MLX4_PCI_DEV_FORCE_SENSE_PORT },
-	/* MT25400 Family [ConnectX-2 Virtual Function] */
-	{ PCI_VDEVICE(MELLANOX, 0x1002), MLX4_PCI_DEV_IS_VF },
+	/* MT25408 "Hermon" */
+	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_SDR),	/* SDR */
+	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_DDR),	/* DDR */
+	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_QDR),	/* QDR */
+	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_DDR_GEN2), /* DDR Gen2 */
+	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_QDR_GEN2),	/* QDR Gen2 */
+	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_EN),	/* EN 10GigE */
+	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_EN_GEN2),  /* EN 10GigE Gen2 */
+	/* MT25458 ConnectX EN 10GBASE-T */
+	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN),
+	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_T_GEN2),	/* Gen2 */
+	/* MT26468 ConnectX EN 10GigE PCIe Gen2*/
+	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_GEN2),
+	/* MT26438 ConnectX EN 40GigE PCIe Gen2 5GT/s */
+	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_5_GEN2),
+	/* MT26478 ConnectX2 40GigE PCIe Gen2 */
+	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX2),
+	/* MT25400 Family [ConnectX-2] */
+	MLX_VF(0x1002),					/* Virtual Function */
 	/* MT27500 Family [ConnectX-3] */
-	{ PCI_VDEVICE(MELLANOX, 0x1003), 0 },
-	/* MT27500 Family [ConnectX-3 Virtual Function] */
-	{ PCI_VDEVICE(MELLANOX, 0x1004), MLX4_PCI_DEV_IS_VF },
-	{ PCI_VDEVICE(MELLANOX, 0x1005), 0 }, /* MT27510 Family */
-	{ PCI_VDEVICE(MELLANOX, 0x1006), 0 }, /* MT27511 Family */
-	{ PCI_VDEVICE(MELLANOX, 0x1007), 0 }, /* MT27520 Family */
-	{ PCI_VDEVICE(MELLANOX, 0x1008), 0 }, /* MT27521 Family */
-	{ PCI_VDEVICE(MELLANOX, 0x1009), 0 }, /* MT27530 Family */
-	{ PCI_VDEVICE(MELLANOX, 0x100a), 0 }, /* MT27531 Family */
-	{ PCI_VDEVICE(MELLANOX, 0x100b), 0 }, /* MT27540 Family */
-	{ PCI_VDEVICE(MELLANOX, 0x100c), 0 }, /* MT27541 Family */
-	{ PCI_VDEVICE(MELLANOX, 0x100d), 0 }, /* MT27550 Family */
-	{ PCI_VDEVICE(MELLANOX, 0x100e), 0 }, /* MT27551 Family */
-	{ PCI_VDEVICE(MELLANOX, 0x100f), 0 }, /* MT27560 Family */
-	{ PCI_VDEVICE(MELLANOX, 0x1010), 0 }, /* MT27561 Family */
+	MLX_GN(PCI_DEVICE_ID_MELLANOX_CONNECTX3),
+	MLX_VF(0x1004),					/* Virtual Function */
+	MLX_GN(0x1005),					/* MT27510 Family */
+	MLX_GN(0x1006),					/* MT27511 Family */
+	MLX_GN(PCI_DEVICE_ID_MELLANOX_CONNECTX3_PRO),	/* MT27520 Family */
+	MLX_GN(0x1008),					/* MT27521 Family */
+	MLX_GN(0x1009),					/* MT27530 Family */
+	MLX_GN(0x100a),					/* MT27531 Family */
+	MLX_GN(0x100b),					/* MT27540 Family */
+	MLX_GN(0x100c),					/* MT27541 Family */
+	MLX_GN(0x100d),					/* MT27550 Family */
+	MLX_GN(0x100e),					/* MT27551 Family */
+	MLX_GN(0x100f),					/* MT27560 Family */
+	MLX_GN(0x1010),					/* MT27561 Family */
 	{ 0, }
 };
 


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v3 3/5] PCI: Convert broken INTx masking quirks from HEADER to FINAL
  2016-11-17 23:29 [PATCH v3 0/5] Unmarking Mellanox devices with broken INTx masking Bjorn Helgaas
  2016-11-17 23:30 ` [PATCH v3 1/5] PCI: Add Mellanox device IDs Bjorn Helgaas
  2016-11-17 23:30 ` [PATCH v3 2/5] net/mlx4_core: Use device ID defines Bjorn Helgaas
@ 2016-11-17 23:30 ` Bjorn Helgaas
  2016-11-17 23:30 ` [PATCH v3 4/5] PCI: Convert Mellanox broken INTx quirks to be for listed devices only Bjorn Helgaas
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: Bjorn Helgaas @ 2016-11-17 23:30 UTC (permalink / raw)
  To: Noa Osherovich; +Cc: linux-pci, majd, gwshan

From: Noa Osherovich <noaos@mellanox.com>

Convert all quirk_broken_intx_masking() quirks from HEADER to FINAL.

The quirk sets dev->broken_intx_masking, which is only used by
pci_intx_mask_supported(), which is not needed until after FINAL
quirks have been run.

[bhelgaas: changelog]
Signed-off-by: Noa Osherovich <noaos@mellanox.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
 drivers/pci/quirks.c |   72 +++++++++++++++++++++++++-------------------------
 1 file changed, 36 insertions(+), 36 deletions(-)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index c232729..85048fd 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3146,53 +3146,53 @@ static void quirk_broken_intx_masking(struct pci_dev *dev)
 {
 	dev->broken_intx_masking = 1;
 }
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_CHELSIO, 0x0030,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(0x1814, 0x0601, /* Ralink RT2800 802.11n PCI */
-			 quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x0030,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(0x1814, 0x0601, /* Ralink RT2800 802.11n PCI */
+			quirk_broken_intx_masking);
 /*
  * Realtek RTL8169 PCI Gigabit Ethernet Controller (rev 10)
  * Subsystem: Realtek RTL8169/8110 Family PCI Gigabit Ethernet NIC
  *
  * RTL8110SC - Fails under PCI device assignment using DisINTx masking.
  */
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_REALTEK, 0x8169,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MELLANOX, PCI_ANY_ID,
-			 quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_REALTEK, 0x8169,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX, PCI_ANY_ID,
+			quirk_broken_intx_masking);
 
 /*
  * Intel i40e (XL710/X710) 10/20/40GbE NICs all have broken INTx masking,
  * DisINTx can be set but the interrupt status bit is non-functional.
  */
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1572,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1574,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1580,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1581,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1583,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1584,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1585,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1586,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1587,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1588,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1589,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x37d0,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x37d1,
-			 quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x37d2,
-			 quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1572,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1574,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1580,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1581,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1583,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1584,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1585,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1586,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1587,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1588,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x1589,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x37d0,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x37d1,
+			quirk_broken_intx_masking);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x37d2,
+			quirk_broken_intx_masking);
 
 static void quirk_no_bus_reset(struct pci_dev *dev)
 {


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v3 4/5] PCI: Convert Mellanox broken INTx quirks to be for listed devices only
  2016-11-17 23:29 [PATCH v3 0/5] Unmarking Mellanox devices with broken INTx masking Bjorn Helgaas
                   ` (2 preceding siblings ...)
  2016-11-17 23:30 ` [PATCH v3 3/5] PCI: Convert broken INTx masking quirks from HEADER to FINAL Bjorn Helgaas
@ 2016-11-17 23:30 ` Bjorn Helgaas
  2016-11-17 23:30 ` [PATCH v3 5/5] PCI: Support INTx masking on ConnectX-4 with firmware x.14.1100+ Bjorn Helgaas
  2016-11-23 17:39 ` [PATCH v3 0/5] Unmarking Mellanox devices with broken INTx masking Bjorn Helgaas
  5 siblings, 0 replies; 12+ messages in thread
From: Bjorn Helgaas @ 2016-11-17 23:30 UTC (permalink / raw)
  To: Noa Osherovich; +Cc: linux-pci, majd, gwshan

From: Noa Osherovich <noaos@mellanox.com>

Change Mellanox's broken_intx_masking() quirk from an "all Mellanox
devices" to a quirk for listed devices only.

[bhelgaas: remove #defines, reorder to keep other quirks together]
Signed-off-by: Noa Osherovich <noaos@mellanox.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
 drivers/pci/quirks.c |   40 +++++++++++++++++++++++++++++++++++++---
 1 file changed, 37 insertions(+), 3 deletions(-)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 85048fd..f0515b7 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3137,8 +3137,9 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x22b5, quirk_remove_d3_delay);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x22b7, quirk_remove_d3_delay);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x2298, quirk_remove_d3_delay);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x229c, quirk_remove_d3_delay);
+
 /*
- * Some devices may pass our check in pci_intx_mask_supported if
+ * Some devices may pass our check in pci_intx_mask_supported() if
  * PCI_COMMAND_INTX_DISABLE works though they actually do not properly
  * support this feature.
  */
@@ -3150,6 +3151,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x0030,
 			quirk_broken_intx_masking);
 DECLARE_PCI_FIXUP_FINAL(0x1814, 0x0601, /* Ralink RT2800 802.11n PCI */
 			quirk_broken_intx_masking);
+
 /*
  * Realtek RTL8169 PCI Gigabit Ethernet Controller (rev 10)
  * Subsystem: Realtek RTL8169/8110 Family PCI Gigabit Ethernet NIC
@@ -3158,8 +3160,6 @@ DECLARE_PCI_FIXUP_FINAL(0x1814, 0x0601, /* Ralink RT2800 802.11n PCI */
  */
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_REALTEK, 0x8169,
 			quirk_broken_intx_masking);
-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX, PCI_ANY_ID,
-			quirk_broken_intx_masking);
 
 /*
  * Intel i40e (XL710/X710) 10/20/40GbE NICs all have broken INTx masking,
@@ -3194,6 +3194,40 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x37d1,
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x37d2,
 			quirk_broken_intx_masking);
 
+static u16 mellanox_broken_intx_devs[] = {
+	PCI_DEVICE_ID_MELLANOX_HERMON_SDR,
+	PCI_DEVICE_ID_MELLANOX_HERMON_DDR,
+	PCI_DEVICE_ID_MELLANOX_HERMON_QDR,
+	PCI_DEVICE_ID_MELLANOX_HERMON_DDR_GEN2,
+	PCI_DEVICE_ID_MELLANOX_HERMON_QDR_GEN2,
+	PCI_DEVICE_ID_MELLANOX_HERMON_EN,
+	PCI_DEVICE_ID_MELLANOX_HERMON_EN_GEN2,
+	PCI_DEVICE_ID_MELLANOX_CONNECTX_EN,
+	PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_T_GEN2,
+	PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_GEN2,
+	PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_5_GEN2,
+	PCI_DEVICE_ID_MELLANOX_CONNECTX2,
+	PCI_DEVICE_ID_MELLANOX_CONNECTX3,
+	PCI_DEVICE_ID_MELLANOX_CONNECTX3_PRO,
+	PCI_DEVICE_ID_MELLANOX_CONNECTIB,
+	PCI_DEVICE_ID_MELLANOX_CONNECTX4,
+	PCI_DEVICE_ID_MELLANOX_CONNECTX4_LX,
+};
+
+static void mellanox_check_broken_intx_masking(struct pci_dev *pdev)
+{
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(mellanox_broken_intx_devs); i++) {
+		if (pdev->device == mellanox_broken_intx_devs[i]) {
+			pdev->broken_intx_masking = 1;
+			return;
+		}
+	}
+}
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX, PCI_ANY_ID,
+			mellanox_check_broken_intx_masking);
+
 static void quirk_no_bus_reset(struct pci_dev *dev)
 {
 	dev->dev_flags |= PCI_DEV_FLAGS_NO_BUS_RESET;


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v3 5/5] PCI: Support INTx masking on ConnectX-4 with firmware x.14.1100+
  2016-11-17 23:29 [PATCH v3 0/5] Unmarking Mellanox devices with broken INTx masking Bjorn Helgaas
                   ` (3 preceding siblings ...)
  2016-11-17 23:30 ` [PATCH v3 4/5] PCI: Convert Mellanox broken INTx quirks to be for listed devices only Bjorn Helgaas
@ 2016-11-17 23:30 ` Bjorn Helgaas
  2016-11-18  3:38   ` Gavin Shan
  2016-11-23 17:39 ` [PATCH v3 0/5] Unmarking Mellanox devices with broken INTx masking Bjorn Helgaas
  5 siblings, 1 reply; 12+ messages in thread
From: Bjorn Helgaas @ 2016-11-17 23:30 UTC (permalink / raw)
  To: Noa Osherovich; +Cc: linux-pci, majd, gwshan

From: Noa Osherovich <noaos@mellanox.com>

Mellanox devices were marked as having INTx masking ability broken.  As a
result, the VFIO driver fails to start when more than one device function
is passed-through to a VM if both have the same INTx pin.

Prior to Connect-IB, Mellanox devices exposed to the operating system one
PCI function per all ports.  Starting from Connect-IB, the devices are
function-per-port.  When passing the second function to a VM, VFIO will
fail to start.

Exclude ConnectX-4, ConnectX4-Lx and Connect-IB from the list of Mellanox
devices marked as having broken INTx masking:

- ConnectX-4 and ConnectX4-LX firmware version is checked. If INTx
  masking is supported, we unmark the broken INTx masking.
- Connect-IB does not support INTx currently so will not cause any
  problem.

[bhelgaas: call pci_disable_device() always, after iounmap()]
Fixes: 11e42532ada3 ("PCI: Assume all Mellanox devices have broken INTx masking")
Signed-off-by: Noa Osherovich <noaos@mellanox.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
 drivers/pci/quirks.c |   57 +++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 54 insertions(+), 3 deletions(-)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index f0515b7..496ca13 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3209,13 +3209,25 @@ static u16 mellanox_broken_intx_devs[] = {
 	PCI_DEVICE_ID_MELLANOX_CONNECTX2,
 	PCI_DEVICE_ID_MELLANOX_CONNECTX3,
 	PCI_DEVICE_ID_MELLANOX_CONNECTX3_PRO,
-	PCI_DEVICE_ID_MELLANOX_CONNECTIB,
-	PCI_DEVICE_ID_MELLANOX_CONNECTX4,
-	PCI_DEVICE_ID_MELLANOX_CONNECTX4_LX,
 };
 
+#define CONNECTX_4_CURR_MAX_MINOR 99
+#define CONNECTX_4_INTX_SUPPORT_MINOR 14
+
+/*
+ * Check ConnectX-4/LX FW version to see if it supports legacy interrupts.
+ * If so, don't mark it as broken.
+ * FW minor > 99 means older FW version format and no INTx masking support.
+ * FW minor < 14 means new FW version format and no INTx masking support.
+ */
 static void mellanox_check_broken_intx_masking(struct pci_dev *pdev)
 {
+	__be32 __iomem *fw_ver;
+	u16 fw_major;
+	u16 fw_minor;
+	u16 fw_subminor;
+	u32 fw_maj_min;
+	u32 fw_sub_min;
 	int i;
 
 	for (i = 0; i < ARRAY_SIZE(mellanox_broken_intx_devs); i++) {
@@ -3224,6 +3236,45 @@ static void mellanox_check_broken_intx_masking(struct pci_dev *pdev)
 			return;
 		}
 	}
+
+	/* Getting here means Connect-IB cards and up. Connect-IB has no INTx
+	 * support so shouldn't be checked further
+	 */
+	if (pdev->device == PCI_DEVICE_ID_MELLANOX_CONNECTIB)
+		return;
+
+	if (pdev->device != PCI_DEVICE_ID_MELLANOX_CONNECTX4 &&
+	    pdev->device != PCI_DEVICE_ID_MELLANOX_CONNECTX4_LX)
+		return;
+
+	/* For ConnectX-4 and ConnectX-4LX, need to check FW support */
+	if (pci_enable_device_mem(pdev)) {
+		dev_warn(&pdev->dev, "Can't enable device memory\n");
+		return;
+	}
+
+	fw_ver = ioremap(pci_resource_start(pdev, 0), 4);
+	if (!fw_ver) {
+		dev_warn(&pdev->dev, "Can't map ConnectX-4 initialization segment\n");
+		return;
+	}
+
+	/* Reading from resource space should be 32b aligned */
+	fw_maj_min = ioread32be(fw_ver);
+	fw_sub_min = ioread32be(fw_ver + 1);
+	fw_major = fw_maj_min & 0xffff;
+	fw_minor = fw_maj_min >> 16;
+	fw_subminor = fw_sub_min & 0xffff;
+	if (fw_minor > CONNECTX_4_CURR_MAX_MINOR ||
+	    fw_minor < CONNECTX_4_INTX_SUPPORT_MINOR) {
+		dev_warn(&pdev->dev, "ConnectX-4: FW %u.%u.%u doesn't support INTx masking, disabling. Please upgrade FW to %d.14.1100 and up for INTx support\n",
+			 fw_major, fw_minor, fw_subminor, pdev->device ==
+			 PCI_DEVICE_ID_MELLANOX_CONNECTX4 ? 12 : 14);
+		pdev->broken_intx_masking = 1;
+	}
+
+	iounmap(fw_ver);
+	pci_disable_device(pdev);
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX, PCI_ANY_ID,
 			mellanox_check_broken_intx_masking);


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v3 5/5] PCI: Support INTx masking on ConnectX-4 with firmware x.14.1100+
  2016-11-17 23:30 ` [PATCH v3 5/5] PCI: Support INTx masking on ConnectX-4 with firmware x.14.1100+ Bjorn Helgaas
@ 2016-11-18  3:38   ` Gavin Shan
  2016-11-18 14:31     ` Bjorn Helgaas
  0 siblings, 1 reply; 12+ messages in thread
From: Gavin Shan @ 2016-11-18  3:38 UTC (permalink / raw)
  To: Bjorn Helgaas; +Cc: Noa Osherovich, linux-pci, majd, gwshan

On Thu, Nov 17, 2016 at 05:30:31PM -0600, Bjorn Helgaas wrote:
>From: Noa Osherovich <noaos@mellanox.com>
>
>Mellanox devices were marked as having INTx masking ability broken.  As a
>result, the VFIO driver fails to start when more than one device function
>is passed-through to a VM if both have the same INTx pin.
>
>Prior to Connect-IB, Mellanox devices exposed to the operating system one
>PCI function per all ports.  Starting from Connect-IB, the devices are
>function-per-port.  When passing the second function to a VM, VFIO will
>fail to start.
>
>Exclude ConnectX-4, ConnectX4-Lx and Connect-IB from the list of Mellanox
>devices marked as having broken INTx masking:
>
>- ConnectX-4 and ConnectX4-LX firmware version is checked. If INTx
>  masking is supported, we unmark the broken INTx masking.
>- Connect-IB does not support INTx currently so will not cause any
>  problem.
>
>[bhelgaas: call pci_disable_device() always, after iounmap()]
>Fixes: 11e42532ada3 ("PCI: Assume all Mellanox devices have broken INTx masking")
>Signed-off-by: Noa Osherovich <noaos@mellanox.com>
>Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
>Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
>Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
>---
> drivers/pci/quirks.c |   57 +++++++++++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 54 insertions(+), 3 deletions(-)
>
>diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
>index f0515b7..496ca13 100644
>--- a/drivers/pci/quirks.c
>+++ b/drivers/pci/quirks.c
>@@ -3209,13 +3209,25 @@ static u16 mellanox_broken_intx_devs[] = {
> 	PCI_DEVICE_ID_MELLANOX_CONNECTX2,
> 	PCI_DEVICE_ID_MELLANOX_CONNECTX3,
> 	PCI_DEVICE_ID_MELLANOX_CONNECTX3_PRO,
>-	PCI_DEVICE_ID_MELLANOX_CONNECTIB,
>-	PCI_DEVICE_ID_MELLANOX_CONNECTX4,
>-	PCI_DEVICE_ID_MELLANOX_CONNECTX4_LX,
> };
>
>+#define CONNECTX_4_CURR_MAX_MINOR 99
>+#define CONNECTX_4_INTX_SUPPORT_MINOR 14
>+
>+/*
>+ * Check ConnectX-4/LX FW version to see if it supports legacy interrupts.
>+ * If so, don't mark it as broken.
>+ * FW minor > 99 means older FW version format and no INTx masking support.
>+ * FW minor < 14 means new FW version format and no INTx masking support.
>+ */
> static void mellanox_check_broken_intx_masking(struct pci_dev *pdev)
> {
>+	__be32 __iomem *fw_ver;
>+	u16 fw_major;
>+	u16 fw_minor;
>+	u16 fw_subminor;
>+	u32 fw_maj_min;
>+	u32 fw_sub_min;
> 	int i;
>
> 	for (i = 0; i < ARRAY_SIZE(mellanox_broken_intx_devs); i++) {
>@@ -3224,6 +3236,45 @@ static void mellanox_check_broken_intx_masking(struct pci_dev *pdev)
> 			return;
> 		}
> 	}
>+
>+	/* Getting here means Connect-IB cards and up. Connect-IB has no INTx
>+	 * support so shouldn't be checked further
>+	 */
>+	if (pdev->device == PCI_DEVICE_ID_MELLANOX_CONNECTIB)
>+		return;
>+
>+	if (pdev->device != PCI_DEVICE_ID_MELLANOX_CONNECTX4 &&
>+	    pdev->device != PCI_DEVICE_ID_MELLANOX_CONNECTX4_LX)
>+		return;
>+
>+	/* For ConnectX-4 and ConnectX-4LX, need to check FW support */
>+	if (pci_enable_device_mem(pdev)) {
>+		dev_warn(&pdev->dev, "Can't enable device memory\n");
>+		return;
>+	}
>+
>+	fw_ver = ioremap(pci_resource_start(pdev, 0), 4);
>+	if (!fw_ver) {
>+		dev_warn(&pdev->dev, "Can't map ConnectX-4 initialization segment\n");

Bjorn, pci_disable_device() is still missed here. Could you please
amend it?

>+		return;
>+	}
>+
>+	/* Reading from resource space should be 32b aligned */
>+	fw_maj_min = ioread32be(fw_ver);
>+	fw_sub_min = ioread32be(fw_ver + 1);
>+	fw_major = fw_maj_min & 0xffff;
>+	fw_minor = fw_maj_min >> 16;
>+	fw_subminor = fw_sub_min & 0xffff;
>+	if (fw_minor > CONNECTX_4_CURR_MAX_MINOR ||
>+	    fw_minor < CONNECTX_4_INTX_SUPPORT_MINOR) {
>+		dev_warn(&pdev->dev, "ConnectX-4: FW %u.%u.%u doesn't support INTx masking, disabling. Please upgrade FW to %d.14.1100 and up for INTx support\n",
>+			 fw_major, fw_minor, fw_subminor, pdev->device ==
>+			 PCI_DEVICE_ID_MELLANOX_CONNECTX4 ? 12 : 14);
>+		pdev->broken_intx_masking = 1;
>+	}
>+
>+	iounmap(fw_ver);
>+	pci_disable_device(pdev);
> }
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX, PCI_ANY_ID,
> 			mellanox_check_broken_intx_masking);
>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v3 5/5] PCI: Support INTx masking on ConnectX-4 with firmware x.14.1100+
  2016-11-18  3:38   ` Gavin Shan
@ 2016-11-18 14:31     ` Bjorn Helgaas
  0 siblings, 0 replies; 12+ messages in thread
From: Bjorn Helgaas @ 2016-11-18 14:31 UTC (permalink / raw)
  To: Gavin Shan; +Cc: Bjorn Helgaas, Noa Osherovich, linux-pci, majd

On Fri, Nov 18, 2016 at 02:38:47PM +1100, Gavin Shan wrote:
> On Thu, Nov 17, 2016 at 05:30:31PM -0600, Bjorn Helgaas wrote:
> >From: Noa Osherovich <noaos@mellanox.com>
> >
> >Mellanox devices were marked as having INTx masking ability broken.  As a
> >result, the VFIO driver fails to start when more than one device function
> >is passed-through to a VM if both have the same INTx pin.
> >
> >Prior to Connect-IB, Mellanox devices exposed to the operating system one
> >PCI function per all ports.  Starting from Connect-IB, the devices are
> >function-per-port.  When passing the second function to a VM, VFIO will
> >fail to start.
> >
> >Exclude ConnectX-4, ConnectX4-Lx and Connect-IB from the list of Mellanox
> >devices marked as having broken INTx masking:
> >
> >- ConnectX-4 and ConnectX4-LX firmware version is checked. If INTx
> >  masking is supported, we unmark the broken INTx masking.
> >- Connect-IB does not support INTx currently so will not cause any
> >  problem.
> >
> >[bhelgaas: call pci_disable_device() always, after iounmap()]
> >Fixes: 11e42532ada3 ("PCI: Assume all Mellanox devices have broken INTx masking")
> >Signed-off-by: Noa Osherovich <noaos@mellanox.com>
> >Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
> >Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
> >Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
> >---
> > drivers/pci/quirks.c |   57 +++++++++++++++++++++++++++++++++++++++++++++++---
> > 1 file changed, 54 insertions(+), 3 deletions(-)
> >
> >diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> >index f0515b7..496ca13 100644
> >--- a/drivers/pci/quirks.c
> >+++ b/drivers/pci/quirks.c
> >@@ -3209,13 +3209,25 @@ static u16 mellanox_broken_intx_devs[] = {
> > 	PCI_DEVICE_ID_MELLANOX_CONNECTX2,
> > 	PCI_DEVICE_ID_MELLANOX_CONNECTX3,
> > 	PCI_DEVICE_ID_MELLANOX_CONNECTX3_PRO,
> >-	PCI_DEVICE_ID_MELLANOX_CONNECTIB,
> >-	PCI_DEVICE_ID_MELLANOX_CONNECTX4,
> >-	PCI_DEVICE_ID_MELLANOX_CONNECTX4_LX,
> > };
> >
> >+#define CONNECTX_4_CURR_MAX_MINOR 99
> >+#define CONNECTX_4_INTX_SUPPORT_MINOR 14
> >+
> >+/*
> >+ * Check ConnectX-4/LX FW version to see if it supports legacy interrupts.
> >+ * If so, don't mark it as broken.
> >+ * FW minor > 99 means older FW version format and no INTx masking support.
> >+ * FW minor < 14 means new FW version format and no INTx masking support.
> >+ */
> > static void mellanox_check_broken_intx_masking(struct pci_dev *pdev)
> > {
> >+	__be32 __iomem *fw_ver;
> >+	u16 fw_major;
> >+	u16 fw_minor;
> >+	u16 fw_subminor;
> >+	u32 fw_maj_min;
> >+	u32 fw_sub_min;
> > 	int i;
> >
> > 	for (i = 0; i < ARRAY_SIZE(mellanox_broken_intx_devs); i++) {
> >@@ -3224,6 +3236,45 @@ static void mellanox_check_broken_intx_masking(struct pci_dev *pdev)
> > 			return;
> > 		}
> > 	}
> >+
> >+	/* Getting here means Connect-IB cards and up. Connect-IB has no INTx
> >+	 * support so shouldn't be checked further
> >+	 */
> >+	if (pdev->device == PCI_DEVICE_ID_MELLANOX_CONNECTIB)
> >+		return;
> >+
> >+	if (pdev->device != PCI_DEVICE_ID_MELLANOX_CONNECTX4 &&
> >+	    pdev->device != PCI_DEVICE_ID_MELLANOX_CONNECTX4_LX)
> >+		return;
> >+
> >+	/* For ConnectX-4 and ConnectX-4LX, need to check FW support */
> >+	if (pci_enable_device_mem(pdev)) {
> >+		dev_warn(&pdev->dev, "Can't enable device memory\n");
> >+		return;
> >+	}
> >+
> >+	fw_ver = ioremap(pci_resource_start(pdev, 0), 4);
> >+	if (!fw_ver) {
> >+		dev_warn(&pdev->dev, "Can't map ConnectX-4 initialization segment\n");
> 
> Bjorn, pci_disable_device() is still missed here. Could you please
> amend it?

Fixed and re-pushed, thanks!

> >+		return;
> >+	}
> >+
> >+	/* Reading from resource space should be 32b aligned */
> >+	fw_maj_min = ioread32be(fw_ver);
> >+	fw_sub_min = ioread32be(fw_ver + 1);
> >+	fw_major = fw_maj_min & 0xffff;
> >+	fw_minor = fw_maj_min >> 16;
> >+	fw_subminor = fw_sub_min & 0xffff;
> >+	if (fw_minor > CONNECTX_4_CURR_MAX_MINOR ||
> >+	    fw_minor < CONNECTX_4_INTX_SUPPORT_MINOR) {
> >+		dev_warn(&pdev->dev, "ConnectX-4: FW %u.%u.%u doesn't support INTx masking, disabling. Please upgrade FW to %d.14.1100 and up for INTx support\n",
> >+			 fw_major, fw_minor, fw_subminor, pdev->device ==
> >+			 PCI_DEVICE_ID_MELLANOX_CONNECTX4 ? 12 : 14);
> >+		pdev->broken_intx_masking = 1;
> >+	}
> >+
> >+	iounmap(fw_ver);
> >+	pci_disable_device(pdev);
> > }
> > DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX, PCI_ANY_ID,
> > 			mellanox_check_broken_intx_masking);
> >
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v3 2/5] net/mlx4_core: Use device ID defines
  2016-11-17 23:30 ` [PATCH v3 2/5] net/mlx4_core: Use device ID defines Bjorn Helgaas
@ 2016-11-20  7:08   ` Noa Osherovich
  2016-11-20  7:14     ` Noa Osherovich
  0 siblings, 1 reply; 12+ messages in thread
From: Noa Osherovich @ 2016-11-20  7:08 UTC (permalink / raw)
  To: Bjorn Helgaas; +Cc: linux-pci, majd, gwshan

Adding relevant Mellanox people to take a look.

On 11/18/2016 1:30 AM, Bjorn Helgaas wrote:

> We added a bunch of new Mellanox device ID definitions because they'll be
> used by INTx quirks.  Use them in the mlx4 ID table also so grep can find
> both places.
>
> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
> ---
>  drivers/net/ethernet/mellanox/mlx4/main.c |   78 ++++++++++++++---------------
>  1 file changed, 37 insertions(+), 41 deletions(-)
>
> diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
> index 7183ac4..672e0a2e 100644
> --- a/drivers/net/ethernet/mellanox/mlx4/main.c
> +++ b/drivers/net/ethernet/mellanox/mlx4/main.c
> @@ -4012,49 +4012,45 @@ int mlx4_restart_one(struct pci_dev *pdev)
>  	return err;
>  }
>  
> +#define MLX_SP(id) { PCI_VDEVICE(MELLANOX, id), MLX4_PCI_DEV_FORCE_SENSE_PORT }
> +#define MLX_VF(id) { PCI_VDEVICE(MELLANOX, id), MLX4_PCI_DEV_IS_VF }
> +#define MLX_GN(id) { PCI_VDEVICE(MELLANOX, id), 0 }
> +
>  static const struct pci_device_id mlx4_pci_table[] = {
> -	/* MT25408 "Hermon" SDR */
> -	{ PCI_VDEVICE(MELLANOX, 0x6340), MLX4_PCI_DEV_FORCE_SENSE_PORT },
> -	/* MT25408 "Hermon" DDR */
> -	{ PCI_VDEVICE(MELLANOX, 0x634a), MLX4_PCI_DEV_FORCE_SENSE_PORT },
> -	/* MT25408 "Hermon" QDR */
> -	{ PCI_VDEVICE(MELLANOX, 0x6354), MLX4_PCI_DEV_FORCE_SENSE_PORT },
> -	/* MT25408 "Hermon" DDR PCIe gen2 */
> -	{ PCI_VDEVICE(MELLANOX, 0x6732), MLX4_PCI_DEV_FORCE_SENSE_PORT },
> -	/* MT25408 "Hermon" QDR PCIe gen2 */
> -	{ PCI_VDEVICE(MELLANOX, 0x673c), MLX4_PCI_DEV_FORCE_SENSE_PORT },
> -	/* MT25408 "Hermon" EN 10GigE */
> -	{ PCI_VDEVICE(MELLANOX, 0x6368), MLX4_PCI_DEV_FORCE_SENSE_PORT },
> -	/* MT25408 "Hermon" EN 10GigE PCIe gen2 */
> -	{ PCI_VDEVICE(MELLANOX, 0x6750), MLX4_PCI_DEV_FORCE_SENSE_PORT },
> -	/* MT25458 ConnectX EN 10GBASE-T 10GigE */
> -	{ PCI_VDEVICE(MELLANOX, 0x6372), MLX4_PCI_DEV_FORCE_SENSE_PORT },
> -	/* MT25458 ConnectX EN 10GBASE-T+Gen2 10GigE */
> -	{ PCI_VDEVICE(MELLANOX, 0x675a), MLX4_PCI_DEV_FORCE_SENSE_PORT },
> -	/* MT26468 ConnectX EN 10GigE PCIe gen2*/
> -	{ PCI_VDEVICE(MELLANOX, 0x6764), MLX4_PCI_DEV_FORCE_SENSE_PORT },
> -	/* MT26438 ConnectX EN 40GigE PCIe gen2 5GT/s */
> -	{ PCI_VDEVICE(MELLANOX, 0x6746), MLX4_PCI_DEV_FORCE_SENSE_PORT },
> -	/* MT26478 ConnectX2 40GigE PCIe gen2 */
> -	{ PCI_VDEVICE(MELLANOX, 0x676e), MLX4_PCI_DEV_FORCE_SENSE_PORT },
> -	/* MT25400 Family [ConnectX-2 Virtual Function] */
> -	{ PCI_VDEVICE(MELLANOX, 0x1002), MLX4_PCI_DEV_IS_VF },
> +	/* MT25408 "Hermon" */
> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_SDR),	/* SDR */
> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_DDR),	/* DDR */
> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_QDR),	/* QDR */
> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_DDR_GEN2), /* DDR Gen2 */
> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_QDR_GEN2),	/* QDR Gen2 */
> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_EN),	/* EN 10GigE */
> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_EN_GEN2),  /* EN 10GigE Gen2 */
> +	/* MT25458 ConnectX EN 10GBASE-T */
> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN),
> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_T_GEN2),	/* Gen2 */
> +	/* MT26468 ConnectX EN 10GigE PCIe Gen2*/
> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_GEN2),
> +	/* MT26438 ConnectX EN 40GigE PCIe Gen2 5GT/s */
> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_5_GEN2),
> +	/* MT26478 ConnectX2 40GigE PCIe Gen2 */
> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX2),
> +	/* MT25400 Family [ConnectX-2] */
> +	MLX_VF(0x1002),					/* Virtual Function */
>  	/* MT27500 Family [ConnectX-3] */
> -	{ PCI_VDEVICE(MELLANOX, 0x1003), 0 },
> -	/* MT27500 Family [ConnectX-3 Virtual Function] */
> -	{ PCI_VDEVICE(MELLANOX, 0x1004), MLX4_PCI_DEV_IS_VF },
> -	{ PCI_VDEVICE(MELLANOX, 0x1005), 0 }, /* MT27510 Family */
> -	{ PCI_VDEVICE(MELLANOX, 0x1006), 0 }, /* MT27511 Family */
> -	{ PCI_VDEVICE(MELLANOX, 0x1007), 0 }, /* MT27520 Family */
> -	{ PCI_VDEVICE(MELLANOX, 0x1008), 0 }, /* MT27521 Family */
> -	{ PCI_VDEVICE(MELLANOX, 0x1009), 0 }, /* MT27530 Family */
> -	{ PCI_VDEVICE(MELLANOX, 0x100a), 0 }, /* MT27531 Family */
> -	{ PCI_VDEVICE(MELLANOX, 0x100b), 0 }, /* MT27540 Family */
> -	{ PCI_VDEVICE(MELLANOX, 0x100c), 0 }, /* MT27541 Family */
> -	{ PCI_VDEVICE(MELLANOX, 0x100d), 0 }, /* MT27550 Family */
> -	{ PCI_VDEVICE(MELLANOX, 0x100e), 0 }, /* MT27551 Family */
> -	{ PCI_VDEVICE(MELLANOX, 0x100f), 0 }, /* MT27560 Family */
> -	{ PCI_VDEVICE(MELLANOX, 0x1010), 0 }, /* MT27561 Family */
> +	MLX_GN(PCI_DEVICE_ID_MELLANOX_CONNECTX3),
> +	MLX_VF(0x1004),					/* Virtual Function */
> +	MLX_GN(0x1005),					/* MT27510 Family */
> +	MLX_GN(0x1006),					/* MT27511 Family */
> +	MLX_GN(PCI_DEVICE_ID_MELLANOX_CONNECTX3_PRO),	/* MT27520 Family */
> +	MLX_GN(0x1008),					/* MT27521 Family */
> +	MLX_GN(0x1009),					/* MT27530 Family */
> +	MLX_GN(0x100a),					/* MT27531 Family */
> +	MLX_GN(0x100b),					/* MT27540 Family */
> +	MLX_GN(0x100c),					/* MT27541 Family */
> +	MLX_GN(0x100d),					/* MT27550 Family */
> +	MLX_GN(0x100e),					/* MT27551 Family */
> +	MLX_GN(0x100f),					/* MT27560 Family */
> +	MLX_GN(0x1010),					/* MT27561 Family */
>  	{ 0, }
>  };
>  
>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v3 2/5] net/mlx4_core: Use device ID defines
  2016-11-20  7:08   ` Noa Osherovich
@ 2016-11-20  7:14     ` Noa Osherovich
  2016-11-23 12:06       ` Tariq Toukan
  0 siblings, 1 reply; 12+ messages in thread
From: Noa Osherovich @ 2016-11-20  7:14 UTC (permalink / raw)
  To: Bjorn Helgaas, Tariq Toukan, Yishai Hadas; +Cc: linux-pci, Majd Dibbiny, gwshan

With the people this time.

On 11/20/2016 9:08 AM, Noa Osherovich wrote:

> Adding relevant Mellanox people to take a look.
>
> On 11/18/2016 1:30 AM, Bjorn Helgaas wrote:
>
>> We added a bunch of new Mellanox device ID definitions because they'll be
>> used by INTx quirks.  Use them in the mlx4 ID table also so grep can find
>> both places.
>>
>> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
>> ---
>>  drivers/net/ethernet/mellanox/mlx4/main.c |   78 ++++++++++++++---------------
>>  1 file changed, 37 insertions(+), 41 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
>> index 7183ac4..672e0a2e 100644
>> --- a/drivers/net/ethernet/mellanox/mlx4/main.c
>> +++ b/drivers/net/ethernet/mellanox/mlx4/main.c
>> @@ -4012,49 +4012,45 @@ int mlx4_restart_one(struct pci_dev *pdev)
>>  	return err;
>>  }
>>  
>> +#define MLX_SP(id) { PCI_VDEVICE(MELLANOX, id), MLX4_PCI_DEV_FORCE_SENSE_PORT }
>> +#define MLX_VF(id) { PCI_VDEVICE(MELLANOX, id), MLX4_PCI_DEV_IS_VF }
>> +#define MLX_GN(id) { PCI_VDEVICE(MELLANOX, id), 0 }
>> +
>>  static const struct pci_device_id mlx4_pci_table[] = {
>> -	/* MT25408 "Hermon" SDR */
>> -	{ PCI_VDEVICE(MELLANOX, 0x6340), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>> -	/* MT25408 "Hermon" DDR */
>> -	{ PCI_VDEVICE(MELLANOX, 0x634a), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>> -	/* MT25408 "Hermon" QDR */
>> -	{ PCI_VDEVICE(MELLANOX, 0x6354), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>> -	/* MT25408 "Hermon" DDR PCIe gen2 */
>> -	{ PCI_VDEVICE(MELLANOX, 0x6732), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>> -	/* MT25408 "Hermon" QDR PCIe gen2 */
>> -	{ PCI_VDEVICE(MELLANOX, 0x673c), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>> -	/* MT25408 "Hermon" EN 10GigE */
>> -	{ PCI_VDEVICE(MELLANOX, 0x6368), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>> -	/* MT25408 "Hermon" EN 10GigE PCIe gen2 */
>> -	{ PCI_VDEVICE(MELLANOX, 0x6750), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>> -	/* MT25458 ConnectX EN 10GBASE-T 10GigE */
>> -	{ PCI_VDEVICE(MELLANOX, 0x6372), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>> -	/* MT25458 ConnectX EN 10GBASE-T+Gen2 10GigE */
>> -	{ PCI_VDEVICE(MELLANOX, 0x675a), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>> -	/* MT26468 ConnectX EN 10GigE PCIe gen2*/
>> -	{ PCI_VDEVICE(MELLANOX, 0x6764), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>> -	/* MT26438 ConnectX EN 40GigE PCIe gen2 5GT/s */
>> -	{ PCI_VDEVICE(MELLANOX, 0x6746), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>> -	/* MT26478 ConnectX2 40GigE PCIe gen2 */
>> -	{ PCI_VDEVICE(MELLANOX, 0x676e), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>> -	/* MT25400 Family [ConnectX-2 Virtual Function] */
>> -	{ PCI_VDEVICE(MELLANOX, 0x1002), MLX4_PCI_DEV_IS_VF },
>> +	/* MT25408 "Hermon" */
>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_SDR),	/* SDR */
>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_DDR),	/* DDR */
>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_QDR),	/* QDR */
>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_DDR_GEN2), /* DDR Gen2 */
>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_QDR_GEN2),	/* QDR Gen2 */
>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_EN),	/* EN 10GigE */
>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_EN_GEN2),  /* EN 10GigE Gen2 */
>> +	/* MT25458 ConnectX EN 10GBASE-T */
>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN),
>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_T_GEN2),	/* Gen2 */
>> +	/* MT26468 ConnectX EN 10GigE PCIe Gen2*/
>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_GEN2),
>> +	/* MT26438 ConnectX EN 40GigE PCIe Gen2 5GT/s */
>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_5_GEN2),
>> +	/* MT26478 ConnectX2 40GigE PCIe Gen2 */
>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX2),
>> +	/* MT25400 Family [ConnectX-2] */
>> +	MLX_VF(0x1002),					/* Virtual Function */
>>  	/* MT27500 Family [ConnectX-3] */
>> -	{ PCI_VDEVICE(MELLANOX, 0x1003), 0 },
>> -	/* MT27500 Family [ConnectX-3 Virtual Function] */
>> -	{ PCI_VDEVICE(MELLANOX, 0x1004), MLX4_PCI_DEV_IS_VF },
>> -	{ PCI_VDEVICE(MELLANOX, 0x1005), 0 }, /* MT27510 Family */
>> -	{ PCI_VDEVICE(MELLANOX, 0x1006), 0 }, /* MT27511 Family */
>> -	{ PCI_VDEVICE(MELLANOX, 0x1007), 0 }, /* MT27520 Family */
>> -	{ PCI_VDEVICE(MELLANOX, 0x1008), 0 }, /* MT27521 Family */
>> -	{ PCI_VDEVICE(MELLANOX, 0x1009), 0 }, /* MT27530 Family */
>> -	{ PCI_VDEVICE(MELLANOX, 0x100a), 0 }, /* MT27531 Family */
>> -	{ PCI_VDEVICE(MELLANOX, 0x100b), 0 }, /* MT27540 Family */
>> -	{ PCI_VDEVICE(MELLANOX, 0x100c), 0 }, /* MT27541 Family */
>> -	{ PCI_VDEVICE(MELLANOX, 0x100d), 0 }, /* MT27550 Family */
>> -	{ PCI_VDEVICE(MELLANOX, 0x100e), 0 }, /* MT27551 Family */
>> -	{ PCI_VDEVICE(MELLANOX, 0x100f), 0 }, /* MT27560 Family */
>> -	{ PCI_VDEVICE(MELLANOX, 0x1010), 0 }, /* MT27561 Family */
>> +	MLX_GN(PCI_DEVICE_ID_MELLANOX_CONNECTX3),
>> +	MLX_VF(0x1004),					/* Virtual Function */
>> +	MLX_GN(0x1005),					/* MT27510 Family */
>> +	MLX_GN(0x1006),					/* MT27511 Family */
>> +	MLX_GN(PCI_DEVICE_ID_MELLANOX_CONNECTX3_PRO),	/* MT27520 Family */
>> +	MLX_GN(0x1008),					/* MT27521 Family */
>> +	MLX_GN(0x1009),					/* MT27530 Family */
>> +	MLX_GN(0x100a),					/* MT27531 Family */
>> +	MLX_GN(0x100b),					/* MT27540 Family */
>> +	MLX_GN(0x100c),					/* MT27541 Family */
>> +	MLX_GN(0x100d),					/* MT27550 Family */
>> +	MLX_GN(0x100e),					/* MT27551 Family */
>> +	MLX_GN(0x100f),					/* MT27560 Family */
>> +	MLX_GN(0x1010),					/* MT27561 Family */
>>  	{ 0, }
>>  };
>>  
>>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v3 2/5] net/mlx4_core: Use device ID defines
  2016-11-20  7:14     ` Noa Osherovich
@ 2016-11-23 12:06       ` Tariq Toukan
  0 siblings, 0 replies; 12+ messages in thread
From: Tariq Toukan @ 2016-11-23 12:06 UTC (permalink / raw)
  To: Noa Osherovich, Bjorn Helgaas, Yishai Hadas
  Cc: linux-pci, Majd Dibbiny, gwshan

Hi Bjorn,
Thanks for the patch.

On 20/11/2016 9:14 AM, Noa Osherovich wrote:
> With the people this time.
>
> On 11/20/2016 9:08 AM, Noa Osherovich wrote:
>
>> Adding relevant Mellanox people to take a look.
>>
>> On 11/18/2016 1:30 AM, Bjorn Helgaas wrote:
>>
>>> We added a bunch of new Mellanox device ID definitions because they'll be
>>> used by INTx quirks.  Use them in the mlx4 ID table also so grep can find
>>> both places.
>>>
>>> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
>>> ---
>>>   drivers/net/ethernet/mellanox/mlx4/main.c |   78 ++++++++++++++---------------
>>>   1 file changed, 37 insertions(+), 41 deletions(-)
>>>
>>> diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
>>> index 7183ac4..672e0a2e 100644
>>> --- a/drivers/net/ethernet/mellanox/mlx4/main.c
>>> +++ b/drivers/net/ethernet/mellanox/mlx4/main.c
>>> @@ -4012,49 +4012,45 @@ int mlx4_restart_one(struct pci_dev *pdev)
>>>   	return err;
>>>   }
>>>   
>>> +#define MLX_SP(id) { PCI_VDEVICE(MELLANOX, id), MLX4_PCI_DEV_FORCE_SENSE_PORT }
>>> +#define MLX_VF(id) { PCI_VDEVICE(MELLANOX, id), MLX4_PCI_DEV_IS_VF }
>>> +#define MLX_GN(id) { PCI_VDEVICE(MELLANOX, id), 0 }
>>> +
>>>   static const struct pci_device_id mlx4_pci_table[] = {
>>> -	/* MT25408 "Hermon" SDR */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x6340), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>>> -	/* MT25408 "Hermon" DDR */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x634a), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>>> -	/* MT25408 "Hermon" QDR */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x6354), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>>> -	/* MT25408 "Hermon" DDR PCIe gen2 */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x6732), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>>> -	/* MT25408 "Hermon" QDR PCIe gen2 */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x673c), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>>> -	/* MT25408 "Hermon" EN 10GigE */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x6368), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>>> -	/* MT25408 "Hermon" EN 10GigE PCIe gen2 */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x6750), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>>> -	/* MT25458 ConnectX EN 10GBASE-T 10GigE */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x6372), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>>> -	/* MT25458 ConnectX EN 10GBASE-T+Gen2 10GigE */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x675a), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>>> -	/* MT26468 ConnectX EN 10GigE PCIe gen2*/
>>> -	{ PCI_VDEVICE(MELLANOX, 0x6764), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>>> -	/* MT26438 ConnectX EN 40GigE PCIe gen2 5GT/s */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x6746), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>>> -	/* MT26478 ConnectX2 40GigE PCIe gen2 */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x676e), MLX4_PCI_DEV_FORCE_SENSE_PORT },
>>> -	/* MT25400 Family [ConnectX-2 Virtual Function] */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x1002), MLX4_PCI_DEV_IS_VF },
>>> +	/* MT25408 "Hermon" */
>>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_SDR),	/* SDR */
>>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_DDR),	/* DDR */
>>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_QDR),	/* QDR */
>>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_DDR_GEN2), /* DDR Gen2 */
>>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_QDR_GEN2),	/* QDR Gen2 */
>>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_EN),	/* EN 10GigE */
>>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_HERMON_EN_GEN2),  /* EN 10GigE Gen2 */
>>> +	/* MT25458 ConnectX EN 10GBASE-T */
>>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN),
>>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_T_GEN2),	/* Gen2 */
>>> +	/* MT26468 ConnectX EN 10GigE PCIe Gen2*/
>>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_GEN2),
>>> +	/* MT26438 ConnectX EN 40GigE PCIe Gen2 5GT/s */
>>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX_EN_5_GEN2),
>>> +	/* MT26478 ConnectX2 40GigE PCIe Gen2 */
>>> +	MLX_SP(PCI_DEVICE_ID_MELLANOX_CONNECTX2),
>>> +	/* MT25400 Family [ConnectX-2] */
>>> +	MLX_VF(0x1002),					/* Virtual Function */
>>>   	/* MT27500 Family [ConnectX-3] */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x1003), 0 },
>>> -	/* MT27500 Family [ConnectX-3 Virtual Function] */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x1004), MLX4_PCI_DEV_IS_VF },
>>> -	{ PCI_VDEVICE(MELLANOX, 0x1005), 0 }, /* MT27510 Family */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x1006), 0 }, /* MT27511 Family */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x1007), 0 }, /* MT27520 Family */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x1008), 0 }, /* MT27521 Family */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x1009), 0 }, /* MT27530 Family */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x100a), 0 }, /* MT27531 Family */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x100b), 0 }, /* MT27540 Family */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x100c), 0 }, /* MT27541 Family */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x100d), 0 }, /* MT27550 Family */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x100e), 0 }, /* MT27551 Family */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x100f), 0 }, /* MT27560 Family */
>>> -	{ PCI_VDEVICE(MELLANOX, 0x1010), 0 }, /* MT27561 Family */
>>> +	MLX_GN(PCI_DEVICE_ID_MELLANOX_CONNECTX3),
>>> +	MLX_VF(0x1004),					/* Virtual Function */
>>> +	MLX_GN(0x1005),					/* MT27510 Family */
>>> +	MLX_GN(0x1006),					/* MT27511 Family */
>>> +	MLX_GN(PCI_DEVICE_ID_MELLANOX_CONNECTX3_PRO),	/* MT27520 Family */
>>> +	MLX_GN(0x1008),					/* MT27521 Family */
>>> +	MLX_GN(0x1009),					/* MT27530 Family */
>>> +	MLX_GN(0x100a),					/* MT27531 Family */
>>> +	MLX_GN(0x100b),					/* MT27540 Family */
>>> +	MLX_GN(0x100c),					/* MT27541 Family */
>>> +	MLX_GN(0x100d),					/* MT27550 Family */
>>> +	MLX_GN(0x100e),					/* MT27551 Family */
>>> +	MLX_GN(0x100f),					/* MT27560 Family */
>>> +	MLX_GN(0x1010),					/* MT27561 Family */
>>>   	{ 0, }
>>>   };
>>>   
>>>
Acked-by: Tariq Toukan <tariqt@mellanox.com>

Regards,
Tariq

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v3 0/5] Unmarking Mellanox devices with broken INTx masking
  2016-11-17 23:29 [PATCH v3 0/5] Unmarking Mellanox devices with broken INTx masking Bjorn Helgaas
                   ` (4 preceding siblings ...)
  2016-11-17 23:30 ` [PATCH v3 5/5] PCI: Support INTx masking on ConnectX-4 with firmware x.14.1100+ Bjorn Helgaas
@ 2016-11-23 17:39 ` Bjorn Helgaas
  5 siblings, 0 replies; 12+ messages in thread
From: Bjorn Helgaas @ 2016-11-23 17:39 UTC (permalink / raw)
  To: Bjorn Helgaas; +Cc: Noa Osherovich, linux-pci, majd, gwshan

On Thu, Nov 17, 2016 at 05:29:54PM -0600, Bjorn Helgaas wrote:
> Maybe the third time is the charm.  This is basically the v1 you posted,
> but I added an mlx4 update to use the new device ID definitions.  That way
> grep and cscope will find the ID both places, so we can match the quirk
> with the related driver.
> 
> This is on the pci/virtualization branch.  And I did build it this time.
> 
> v2 -> v3
> - Add device ID definitions to pci_ids.h (from original patch of Nov 1)
> - Use new definitions in mlx4 driver (new patch)
> - Use new definitions in quirks (as in v1 patches)
> 
> v1 -> v2 (pushed to pci/virtualization branch but not posted on list)
> - Bjorn removed device ID definitions (which broke build)
> - Bjorn reordered so Mellanox wasn't in the middle of other quirk list
> - Bjorn moved pci_disable_device() to end of quirk
> 
> v0 -> v1
> Fixes according to Gavin Shan's comments:
> - Patch numbering was wrong
> - Fixed logic of mellanox_check_broken_intx_masking
> 
> ---
> 
> Bjorn Helgaas (1):
>       net/mlx4_core: Use device ID defines
> 
> Noa Osherovich (4):
>       PCI: Add Mellanox device IDs
>       PCI: Convert broken INTx masking quirks from HEADER to FINAL
>       PCI: Convert Mellanox broken INTx quirks to be for listed devices only
>       PCI: Support INTx masking on ConnectX-4 with firmware x.14.1100+
> 
> 
>  drivers/net/ethernet/mellanox/mlx4/main.c |   78 +++++++-------
>  drivers/pci/quirks.c                      |  159 ++++++++++++++++++++++-------
>  include/linux/pci_ids.h                   |   27 ++++-
>  3 files changed, 181 insertions(+), 83 deletions(-)

I added Tariq's ack on "net/mlx4_core: Use device ID defines" and applied
these on pci/virtualization for v4.10.

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2016-11-23 17:39 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-17 23:29 [PATCH v3 0/5] Unmarking Mellanox devices with broken INTx masking Bjorn Helgaas
2016-11-17 23:30 ` [PATCH v3 1/5] PCI: Add Mellanox device IDs Bjorn Helgaas
2016-11-17 23:30 ` [PATCH v3 2/5] net/mlx4_core: Use device ID defines Bjorn Helgaas
2016-11-20  7:08   ` Noa Osherovich
2016-11-20  7:14     ` Noa Osherovich
2016-11-23 12:06       ` Tariq Toukan
2016-11-17 23:30 ` [PATCH v3 3/5] PCI: Convert broken INTx masking quirks from HEADER to FINAL Bjorn Helgaas
2016-11-17 23:30 ` [PATCH v3 4/5] PCI: Convert Mellanox broken INTx quirks to be for listed devices only Bjorn Helgaas
2016-11-17 23:30 ` [PATCH v3 5/5] PCI: Support INTx masking on ConnectX-4 with firmware x.14.1100+ Bjorn Helgaas
2016-11-18  3:38   ` Gavin Shan
2016-11-18 14:31     ` Bjorn Helgaas
2016-11-23 17:39 ` [PATCH v3 0/5] Unmarking Mellanox devices with broken INTx masking Bjorn Helgaas

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.