Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Dec 2018 13:47:10 +0000 (UTC)
From:      Slava Shwartsman <slavash@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r341567 - in head/sys: compat/linuxkpi/common/src dev/mlx5/mlx5_core dev/mlx5/mlx5_en dev/mlx5/mlx5_ib
Message-ID:  <201812051347.wB5DlA2g081926@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: slavash
Date: Wed Dec  5 13:47:10 2018
New Revision: 341567
URL: https://svnweb.freebsd.org/changeset/base/341567

Log:
  mlx5: Fix driver version location
  
  Driver description should be set by core and not by the Ethernet driver.
  
  Approved by:    hselasky (mentor)
  MFC after:      1 week
  Sponsored by:   Mellanox Technologies

Modified:
  head/sys/compat/linuxkpi/common/src/linux_pci.c
  head/sys/dev/mlx5/mlx5_core/mlx5_main.c
  head/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
  head/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c

Modified: head/sys/compat/linuxkpi/common/src/linux_pci.c
==============================================================================
--- head/sys/compat/linuxkpi/common/src/linux_pci.c	Wed Dec  5 13:46:39 2018	(r341566)
+++ head/sys/compat/linuxkpi/common/src/linux_pci.c	Wed Dec  5 13:47:10 2018	(r341567)
@@ -199,6 +199,7 @@ linux_pci_detach(device_t dev)
 	spin_lock(&pci_lock);
 	list_del(&pdev->links);
 	spin_unlock(&pci_lock);
+	device_set_desc(dev, NULL);
 	put_device(&pdev->dev);
 
 	return (0);

Modified: head/sys/dev/mlx5/mlx5_core/mlx5_main.c
==============================================================================
--- head/sys/dev/mlx5/mlx5_core/mlx5_main.c	Wed Dec  5 13:46:39 2018	(r341566)
+++ head/sys/dev/mlx5/mlx5_core/mlx5_main.c	Wed Dec  5 13:47:10 2018	(r341567)
@@ -44,6 +44,8 @@
 #include "mlx5_core.h"
 #include "fs_core.h"
 
+static const char mlx5_version[] = "Mellanox Core driver "
+	DRIVER_VERSION " (" DRIVER_RELDATE ")";
 MODULE_AUTHOR("Eli Cohen <eli@mellanox.com>");
 MODULE_DESCRIPTION("Mellanox Connect-IB, ConnectX-4 core driver");
 MODULE_LICENSE("Dual BSD/GPL");
@@ -1219,6 +1221,9 @@ static int init_one(struct pci_dev *pdev,
 	dev->profile = &profiles[prof_sel];
 	dev->pdev = pdev;
 	dev->event = mlx5_core_event;
+
+	/* Set desc */
+	device_set_desc(bsddev, mlx5_version);
 
 	sysctl_ctx_init(&dev->sysctl_ctx);
 	SYSCTL_ADD_INT(&dev->sysctl_ctx,

Modified: head/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
==============================================================================
--- head/sys/dev/mlx5/mlx5_en/mlx5_en_main.c	Wed Dec  5 13:46:39 2018	(r341566)
+++ head/sys/dev/mlx5/mlx5_en/mlx5_en_main.c	Wed Dec  5 13:47:10 2018	(r341567)
@@ -34,8 +34,8 @@
 #define	ETH_DRIVER_VERSION	"3.4.2"
 #endif
 
-char mlx5e_version[] = "Mellanox Ethernet driver"
-    " (" ETH_DRIVER_VERSION ")";
+static const char mlx5e_version[] = "mlx5en: Mellanox Ethernet driver "
+	ETH_DRIVER_VERSION " (" DRIVER_RELDATE ")\n";
 
 static int mlx5e_get_wqe_sz(struct mlx5e_priv *priv, u32 *wqe_sz, u32 *nsegs);
 
@@ -3687,9 +3687,6 @@ mlx5e_create_ifp(struct mlx5_core_dev *mdev)
 	/* set default MTU */
 	mlx5e_set_dev_port_mtu(ifp, ifp->if_mtu);
 
-	/* Set desc */
-	device_set_desc(mdev->pdev->dev.bsddev, mlx5e_version);
-
 	/* Set default media status */
 	priv->media_status_last = IFM_AVALID;
 	priv->media_active_last = IFM_ETHER | IFM_AUTO |
@@ -3805,13 +3802,6 @@ mlx5e_destroy_ifp(struct mlx5_core_dev *mdev, void *vp
 	/* don't allow more IOCTLs */
 	priv->gone = 1;
 
-	/*
-	 * Clear the device description to avoid use after free,
-	 * because the bsddev is not destroyed when this module is
-	 * unloaded:
-	 */
-	device_set_desc(mdev->pdev->dev.bsddev, NULL);
-
 	/* XXX wait a bit to allow IOCTL handlers to complete */
 	pause("W", hz);
 
@@ -3896,6 +3886,14 @@ mlx5e_cleanup(void)
 {
 	mlx5_unregister_interface(&mlx5e_interface);
 }
+
+static void
+mlx5e_show_version(void __unused *arg)
+{
+
+	printf("%s", mlx5e_version);
+}
+SYSINIT(mlx5e_show_version, SI_SUB_DRIVERS, SI_ORDER_ANY, mlx5e_show_version, NULL);
 
 module_init_order(mlx5e_init, SI_ORDER_THIRD);
 module_exit_order(mlx5e_cleanup, SI_ORDER_THIRD);

Modified: head/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c
==============================================================================
--- head/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c	Wed Dec  5 13:46:39 2018	(r341566)
+++ head/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c	Wed Dec  5 13:47:10 2018	(r341567)
@@ -50,7 +50,7 @@
 #include <dev/mlx5/fs.h>
 #include "mlx5_ib.h"
 
-#define DRIVER_NAME "mlx5_ib"
+#define DRIVER_NAME "mlx5ib"
 #ifndef DRIVER_VERSION
 #define DRIVER_VERSION "3.4.2"
 #endif
@@ -2963,8 +2963,6 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
 	if ((ll == IB_LINK_LAYER_ETHERNET) && !MLX5_CAP_GEN(mdev, roce))
 		return NULL;
 
-	printk_once(KERN_INFO "%s", mlx5_version);
-
 	dev = (struct mlx5_ib_dev *)ib_alloc_device(sizeof(*dev));
 	if (!dev)
 		return NULL;
@@ -3258,6 +3256,14 @@ static void __exit mlx5_ib_cleanup(void)
 	mlx5_unregister_interface(&mlx5_ib_interface);
 	mlx5_ib_odp_cleanup();
 }
+
+static void
+mlx5_ib_show_version(void __unused *arg)
+{
+
+	printf("%s", mlx5_version);
+}
+SYSINIT(mlx5_ib_show_version, SI_SUB_DRIVERS, SI_ORDER_ANY, mlx5_ib_show_version, NULL);
 
 module_init_order(mlx5_ib_init, SI_ORDER_THIRD);
 module_exit_order(mlx5_ib_cleanup, SI_ORDER_THIRD);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201812051347.wB5DlA2g081926>