git: d86bdbbb92ca - main - mlx5/linuxkpi: Add MLX5_PCI_DEV_IS_VF to mlx5_core_pci_table

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Wed, 16 Sep 2026 14:12:53 UTC
The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=d86bdbbb92cae35f37fd33ba163b65f5d50c867c

commit d86bdbbb92cae35f37fd33ba163b65f5d50c867c
Author:     Vag Singh <vag.singh@oneconvergence.com>
AuthorDate: 2025-08-14 05:50:08 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-09-16 14:12:07 +0000

    mlx5/linuxkpi: Add MLX5_PCI_DEV_IS_VF to mlx5_core_pci_table
    
    [PATCH 11/31] FreeBSD OFED support for DPDK MLX5 PMD
    
    The MLX5 core driver recognizes a VF device as a PF device
    in FreeBSD VM, because mlx5_core_pci_table was not having VF
    flag MLX5_PCI_DEV_IS_VF. Added MLX5_PCI_DEV_IS_VF flag in
    mlx5_core_pci_table.
    
    Updated PCI_VDEVICE macro in LinuxKPI for class and class_mask,
    same as linux.
    
    Differential revision:  https://reviews.freebsd.org/D32185
    MFC after:      1 month
---
 sys/compat/linuxkpi/common/include/linux/pci.h |  2 +-
 sys/dev/mlx5/mlx5_core/mlx5_main.c             | 32 +++++++++++++-------------
 2 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/sys/compat/linuxkpi/common/include/linux/pci.h b/sys/compat/linuxkpi/common/include/linux/pci.h
index 8ecc4caaca70..4cdc68412adb 100644
--- a/sys/compat/linuxkpi/common/include/linux/pci.h
+++ b/sys/compat/linuxkpi/common/include/linux/pci.h
@@ -98,7 +98,7 @@ MODULE_PNP_INFO("U32:vendor;U32:device;V32:subvendor;V32:subdevice",	\
 
 #define PCI_VDEVICE(_vendor, _device)					\
 	    .vendor = PCI_VENDOR_ID_##_vendor, .device = (_device),	\
-	    .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID
+	    .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, 0, 0
 #define	PCI_DEVICE(_vendor, _device)					\
 	    .vendor = (_vendor), .device = (_device),			\
 	    .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID
diff --git a/sys/dev/mlx5/mlx5_core/mlx5_main.c b/sys/dev/mlx5/mlx5_core/mlx5_main.c
index 32e6ba9b509d..0b4c4d49ff7d 100644
--- a/sys/dev/mlx5/mlx5_core/mlx5_main.c
+++ b/sys/dev/mlx5/mlx5_core/mlx5_main.c
@@ -2111,21 +2111,21 @@ static void shutdown_one(struct pci_dev *pdev)
  * contrib/ofed/libmlx5/mlx5.c or libibverbs will reject the device.
  */
 static const struct pci_device_id mlx5_core_pci_table[] = {
-	{ PCI_VDEVICE(MELLANOX, 4113) }, /* Connect-IB */
-	{ PCI_VDEVICE(MELLANOX, 4114) }, /* Connect-IB VF */
-	{ PCI_VDEVICE(MELLANOX, 4115) }, /* ConnectX-4 */
-	{ PCI_VDEVICE(MELLANOX, 4116) }, /* ConnectX-4 VF */
-	{ PCI_VDEVICE(MELLANOX, 4117) }, /* ConnectX-4LX */
-	{ PCI_VDEVICE(MELLANOX, 4118) }, /* ConnectX-4LX VF */
-	{ PCI_VDEVICE(MELLANOX, 4119) }, /* ConnectX-5, PCIe 3.0 */
-	{ PCI_VDEVICE(MELLANOX, 4120) }, /* ConnectX-5 VF */
-	{ PCI_VDEVICE(MELLANOX, 4121) }, /* ConnectX-5 Ex */
-	{ PCI_VDEVICE(MELLANOX, 4122) }, /* ConnectX-5 Ex VF */
-	{ PCI_VDEVICE(MELLANOX, 4123) }, /* ConnectX-6 */
-	{ PCI_VDEVICE(MELLANOX, 4124) }, /* ConnectX-6 VF */
-	{ PCI_VDEVICE(MELLANOX, 4125) }, /* ConnectX-6 Dx */
-	{ PCI_VDEVICE(MELLANOX, 4126) }, /* ConnectX Family mlx5Gen Virtual Function */
-	{ PCI_VDEVICE(MELLANOX, 4127) }, /* ConnectX-6 LX */
+	{ PCI_VDEVICE(MELLANOX, 4113) },			/* Connect-IB */
+	{ PCI_VDEVICE(MELLANOX, 4114), MLX5_PCI_DEV_IS_VF},	/* Connect-IB VF */
+	{ PCI_VDEVICE(MELLANOX, 4115) },			/* ConnectX-4 */
+	{ PCI_VDEVICE(MELLANOX, 4116), MLX5_PCI_DEV_IS_VF},	/* ConnectX-4 VF */
+	{ PCI_VDEVICE(MELLANOX, 4117) },			/* ConnectX-4LX */
+	{ PCI_VDEVICE(MELLANOX, 4118), MLX5_PCI_DEV_IS_VF},	/* ConnectX-4LX VF */
+	{ PCI_VDEVICE(MELLANOX, 4119) },			/* ConnectX-5, PCIe 3.0 */
+	{ PCI_VDEVICE(MELLANOX, 4120), MLX5_PCI_DEV_IS_VF},	/* ConnectX-5 VF */
+	{ PCI_VDEVICE(MELLANOX, 4121) },			/* ConnectX-5 Ex */
+	{ PCI_VDEVICE(MELLANOX, 4122), MLX5_PCI_DEV_IS_VF},	/* ConnectX-5 Ex VF */
+	{ PCI_VDEVICE(MELLANOX, 4123) },			/* ConnectX-6 */
+	{ PCI_VDEVICE(MELLANOX, 4124), MLX5_PCI_DEV_IS_VF},	/* ConnectX-6 VF */
+	{ PCI_VDEVICE(MELLANOX, 4125) },			/* ConnectX-6 Dx */
+	{ PCI_VDEVICE(MELLANOX, 4126), MLX5_PCI_DEV_IS_VF},	/* ConnectX Family mlx5Gen Virtual Function */
+	{ PCI_VDEVICE(MELLANOX, 4127) },			/* ConnectX-6 LX */
 	{ PCI_VDEVICE(MELLANOX, 4128) },
 	{ PCI_VDEVICE(MELLANOX, 4129) }, /* ConnectX-7 */
 	{ PCI_VDEVICE(MELLANOX, 4130) },
@@ -2144,7 +2144,7 @@ static const struct pci_device_id mlx5_core_pci_table[] = {
 	{ PCI_VDEVICE(MELLANOX, 4143) },
 	{ PCI_VDEVICE(MELLANOX, 4144) },
 	{ PCI_VDEVICE(MELLANOX, 0xa2d2) }, /* BlueField integrated ConnectX-5 network controller */
-	{ PCI_VDEVICE(MELLANOX, 0xa2d3) }, /* BlueField integrated ConnectX-5 network controller VF */
+	{ PCI_VDEVICE(MELLANOX, 0xa2d3), MLX5_PCI_DEV_IS_VF }, /* BlueField integrated ConnectX-5 network controller VF */
 	{ PCI_VDEVICE(MELLANOX, 0xa2d6) }, /* BlueField-2 integrated ConnectX-6 Dx network controller */
 	{ PCI_VDEVICE(MELLANOX, 0xa2dc) }, /* BlueField-3 integrated ConnectX-7 network controller */
 	{ PCI_VDEVICE(MELLANOX, 0xa2df) }, /* BlueField-4 Family integrated network controller */