lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <201112041629.41466.jackm@dev.mellanox.co.il>
Date:	Sun, 4 Dec 2011 16:29:41 +0200
From:	Jack Morgenstein <jackm@....mellanox.co.il>
To:	Roland Dreier <roland@...estorage.com>
Cc:	Yevgeny Petrilin <yevgenyp@...lanox.co.il>, davem@...emloft.net,
	netdev@...r.kernel.org, linux-rdma@...r.kernel.org,
	liranl@...lanox.co.il
Subject: Re: [PATCH net-next V0 19/21] mlx4_core: Modify driver initialization flow to accommodate SRIOV for Ethernet

On Friday 02 December 2011 19:51, Roland Dreier wrote:
> >  #else /* CONFIG_PCI_IOV */
> > +static int sr_iov;
> > +#define probe_vf 0
> >  int mlx4_log_num_mgm_entry_size = 9;
> >  #endif /* CONFIG_PCI_IOV */
> 
> I don't think it's a good idea to put module parameters inside an
> #ifdef.  Then depending on the
> kernel config someone compiles with, their modprobe.conf may or may not break.
> 
I agree.  I will change this so that the module parameters are always there.

If the kernel is not configured to support IOV, pci_enable_sriov will fail.
Currently, we abort the device startup.  I can change this to simply continue
without sriov enabled:
======================================================

mlx4_core: fix sriov module parameters

Always have the sr_iov module parameters (even if the kernel
is not compiled with sriov support).  Change device startup logic
so that if pci_enable_sriov() fails, the PF-driver continues to bring up
the device, but in non-sriov mode.

Signed-off-by: Jack Morgenstein <jackm@....mellanox.co.il>

---
Roland,
I will roll this change into the original patch set, so that V1 will contain
this code.


Index: net-next/drivers/net/ethernet/mellanox/mlx4/main.c
===================================================================
--- net-next.orig/drivers/net/ethernet/mellanox/mlx4/main.c	2011-12-04 10:38:52.000000000 +0200
+++ net-next/drivers/net/ethernet/mellanox/mlx4/main.c	2011-12-04 16:23:33.000000000 +0200
@@ -76,8 +76,6 @@ MODULE_PARM_DESC(msi_x, "attempt to use 
 
 #endif /* CONFIG_PCI_MSI */
 
-#ifdef CONFIG_PCI_IOV
-
 static int sr_iov;
 module_param(sr_iov, int, 0444);
 MODULE_PARM_DESC(sr_iov, "enable #sr_iov functions if sr_iov > 0");
@@ -94,12 +92,6 @@ MODULE_PARM_DESC(log_num_mgm_entry_size,
 					 " 10 gives 248.range: 9<="
 					 " log_num_mgm_entry_size <= 12");
 
-#else /* CONFIG_PCI_IOV */
-static int sr_iov;
-#define probe_vf 0
-int mlx4_log_num_mgm_entry_size = 9;
-#endif /* CONFIG_PCI_IOV */
-
 #define MLX4_VF					(1 << 0)
 
 #define HCA_GLOBAL_CAP_MASK	0
@@ -1732,13 +1724,19 @@ static int __mlx4_init_one(struct pci_de
 
 		if (sr_iov) {
 			mlx4_warn(dev, "Enabling sriov with:%d vfs\n", sr_iov);
-			if (pci_enable_sriov(pdev, sr_iov)) {
-				mlx4_err(dev, "Failed to enable sriov, aborting.\n");
-				goto err_rel_own;
+			err = pci_enable_sriov(pdev, sr_iov);
+			if (err) {
+				mlx4_err(dev, "Failed to enable sriov,"
+					 "continuing without sriov enabled"
+					 " (err = %d).\n", err);
+				sr_iov = 0;
+				err = 0;
+			} else {
+				mlx4_warn(dev, "Running in master mode\n");
+				dev->flags |= MLX4_FLAG_SRIOV |
+					MLX4_FLAG_MASTER;
+				dev->sr_iov = sr_iov;
 			}
-			mlx4_warn(dev, "Running in master mode\n");
-			dev->flags |= MLX4_FLAG_SRIOV | MLX4_FLAG_MASTER;
-			dev->sr_iov = sr_iov;
 		}
 
 		/*


- Jack
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ