* [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
* 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@vger.kernel.org, Majd Dibbiny,
gwshan@linux.vnet.ibm.com
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@vger.kernel.org, Majd Dibbiny,
gwshan@linux.vnet.ibm.com
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
* [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 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