diff mbox

[rdma-rc] IB/ipoib: print only once when doesn't support IB_QP_CREATE_USE_GFP_NOIO

Message ID 1478003653-16248-1-git-send-email-leon@kernel.org (mailing list archive)
State Superseded
Headers show

Commit Message

Leon Romanovsky Nov. 1, 2016, 12:34 p.m. UTC
From: Erez Shitrit <erezsh@mellanox.com>

Currently when the card doesn't support IB_QP_CREATE_USE_GFP_NOIO it warns
on every QP creation, It becomes worse when driver works in connected mode
we will see one print on each new connection, instead do it once.

Fixes: 09b93088d7 ('Add a QP creation flag to use GFP_NOIO allocations')
Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
---
 drivers/infiniband/ulp/ipoib/ipoib_cm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Yuval Shaia Nov. 1, 2016, 1:48 p.m. UTC | #1
On Tue, Nov 01, 2016 at 02:34:13PM +0200, Leon Romanovsky wrote:
> From: Erez Shitrit <erezsh@mellanox.com>
> 
> Currently when the card doesn't support IB_QP_CREATE_USE_GFP_NOIO it warns
> on every QP creation, It becomes worse when driver works in connected mode
> we will see one print on each new connection, instead do it once.
> 
> Fixes: 09b93088d7 ('Add a QP creation flag to use GFP_NOIO allocations')
> Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
> Signed-off-by: Leon Romanovsky <leon@kernel.org>
> ---
>  drivers/infiniband/ulp/ipoib/ipoib_cm.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
> index 4ad297d..917393b 100644
> --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
> +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
> @@ -1053,8 +1053,8 @@ static struct ib_qp *ipoib_cm_create_tx_qp(struct net_device *dev, struct ipoib_
>  
>  	tx_qp = ib_create_qp(priv->pd, &attr);
>  	if (PTR_ERR(tx_qp) == -EINVAL) {
> -		ipoib_warn(priv, "can't use GFP_NOIO for QPs on device %s, using GFP_KERNEL\n",
> -			   priv->ca->name);
> +		pr_warn_once("can't use GFP_NOIO for QPs on device %s, using GFP_KERNEL\n",
> +			     priv->ca->name);

But it will still re-print it for different device, right?

>  		attr.create_flags &= ~IB_QP_CREATE_USE_GFP_NOIO;
>  		tx_qp = ib_create_qp(priv->pd, &attr);
>  	}
> -- 
> 2.7.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Leon Romanovsky Nov. 1, 2016, 2:14 p.m. UTC | #2
On Tue, Nov 01, 2016 at 03:48:24PM +0200, Yuval Shaia wrote:
> On Tue, Nov 01, 2016 at 02:34:13PM +0200, Leon Romanovsky wrote:
> > From: Erez Shitrit <erezsh@mellanox.com>
> >
> > Currently when the card doesn't support IB_QP_CREATE_USE_GFP_NOIO it warns
> > on every QP creation, It becomes worse when driver works in connected mode
> > we will see one print on each new connection, instead do it once.
> >
> > Fixes: 09b93088d7 ('Add a QP creation flag to use GFP_NOIO allocations')
> > Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
> > Signed-off-by: Leon Romanovsky <leon@kernel.org>
> > ---
> >  drivers/infiniband/ulp/ipoib/ipoib_cm.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
> > index 4ad297d..917393b 100644
> > --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
> > +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
> > @@ -1053,8 +1053,8 @@ static struct ib_qp *ipoib_cm_create_tx_qp(struct net_device *dev, struct ipoib_
> >
> >  	tx_qp = ib_create_qp(priv->pd, &attr);
> >  	if (PTR_ERR(tx_qp) == -EINVAL) {
> > -		ipoib_warn(priv, "can't use GFP_NOIO for QPs on device %s, using GFP_KERNEL\n",
> > -			   priv->ca->name);
> > +		pr_warn_once("can't use GFP_NOIO for QPs on device %s, using GFP_KERNEL\n",
> > +			     priv->ca->name);
>
> But it will still re-print it for different device, right?

Good question,

pr_warn_once is defined as alias to printk_once [1]. That printk_once is
macro too [2] which will define local static read_once variable.

[1] http://lxr.free-electrons.com/source/include/linux/printk.h#L359
[2] http://lxr.free-electrons.com/source/include/linux/printk.h#L322

>
> >  		attr.create_flags &= ~IB_QP_CREATE_USE_GFP_NOIO;
> >  		tx_qp = ib_create_qp(priv->pd, &attr);
> >  	}
> > --
> > 2.7.4
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
Yuval Shaia Nov. 1, 2016, 2:34 p.m. UTC | #3
On Tue, Nov 01, 2016 at 04:14:54PM +0200, Leon Romanovsky wrote:
> On Tue, Nov 01, 2016 at 03:48:24PM +0200, Yuval Shaia wrote:
> > On Tue, Nov 01, 2016 at 02:34:13PM +0200, Leon Romanovsky wrote:
> > > From: Erez Shitrit <erezsh@mellanox.com>
> > >
> > > Currently when the card doesn't support IB_QP_CREATE_USE_GFP_NOIO it warns
> > > on every QP creation, It becomes worse when driver works in connected mode
> > > we will see one print on each new connection, instead do it once.
> > >
> > > Fixes: 09b93088d7 ('Add a QP creation flag to use GFP_NOIO allocations')
> > > Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
> > > Signed-off-by: Leon Romanovsky <leon@kernel.org>
> > > ---
> > >  drivers/infiniband/ulp/ipoib/ipoib_cm.c | 4 ++--
> > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
> > > index 4ad297d..917393b 100644
> > > --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
> > > +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
> > > @@ -1053,8 +1053,8 @@ static struct ib_qp *ipoib_cm_create_tx_qp(struct net_device *dev, struct ipoib_
> > >
> > >  	tx_qp = ib_create_qp(priv->pd, &attr);
> > >  	if (PTR_ERR(tx_qp) == -EINVAL) {
> > > -		ipoib_warn(priv, "can't use GFP_NOIO for QPs on device %s, using GFP_KERNEL\n",
> > > -			   priv->ca->name);
> > > +		pr_warn_once("can't use GFP_NOIO for QPs on device %s, using GFP_KERNEL\n",
> > > +			     priv->ca->name);
> >
> > But it will still re-print it for different device, right?
> 
> Good question,
> 
> pr_warn_once is defined as alias to printk_once [1]. That printk_once is
> macro too [2] which will define local static read_once variable.
> 
> [1] http://lxr.free-electrons.com/source/include/linux/printk.h#L359
> [2] http://lxr.free-electrons.com/source/include/linux/printk.h#L322

If only one HCA model is installed on the system then it should be fine,
but wonder if more then one, would we like to see the warning again? i think
yes.

> 
> >
> > >  		attr.create_flags &= ~IB_QP_CREATE_USE_GFP_NOIO;
> > >  		tx_qp = ib_create_qp(priv->pd, &attr);
> > >  	}
> > > --
> > > 2.7.4
> > >
> > > --
> > > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> > > the body of a message to majordomo@vger.kernel.org
> > > More majordomo info at  http://vger.kernel.org/majordomo-info.html


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Leon Romanovsky Nov. 2, 2016, 12:44 a.m. UTC | #4
On Tue, Nov 01, 2016 at 04:34:31PM +0200, Yuval Shaia wrote:
> On Tue, Nov 01, 2016 at 04:14:54PM +0200, Leon Romanovsky wrote:
> > On Tue, Nov 01, 2016 at 03:48:24PM +0200, Yuval Shaia wrote:
> > > On Tue, Nov 01, 2016 at 02:34:13PM +0200, Leon Romanovsky wrote:
> > > > From: Erez Shitrit <erezsh@mellanox.com>
> > > >
> > > > Currently when the card doesn't support IB_QP_CREATE_USE_GFP_NOIO it warns
> > > > on every QP creation, It becomes worse when driver works in connected mode
> > > > we will see one print on each new connection, instead do it once.
> > > >
> > > > Fixes: 09b93088d7 ('Add a QP creation flag to use GFP_NOIO allocations')
> > > > Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
> > > > Signed-off-by: Leon Romanovsky <leon@kernel.org>
> > > > ---
> > > >  drivers/infiniband/ulp/ipoib/ipoib_cm.c | 4 ++--
> > > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
> > > > index 4ad297d..917393b 100644
> > > > --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
> > > > +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
> > > > @@ -1053,8 +1053,8 @@ static struct ib_qp *ipoib_cm_create_tx_qp(struct net_device *dev, struct ipoib_
> > > >
> > > >  	tx_qp = ib_create_qp(priv->pd, &attr);
> > > >  	if (PTR_ERR(tx_qp) == -EINVAL) {
> > > > -		ipoib_warn(priv, "can't use GFP_NOIO for QPs on device %s, using GFP_KERNEL\n",
> > > > -			   priv->ca->name);
> > > > +		pr_warn_once("can't use GFP_NOIO for QPs on device %s, using GFP_KERNEL\n",
> > > > +			     priv->ca->name);
> > >
> > > But it will still re-print it for different device, right?
> >
> > Good question,
> >
> > pr_warn_once is defined as alias to printk_once [1]. That printk_once is
> > macro too [2] which will define local static read_once variable.
> >
> > [1] http://lxr.free-electrons.com/source/include/linux/printk.h#L359
> > [2] http://lxr.free-electrons.com/source/include/linux/printk.h#L322
>
> If only one HCA model is installed on the system then it should be fine,
> but wonder if more then one, would we like to see the warning again? i think
> yes.

It is correct and valid question and not for the multiple devices only.
Additional thing which was missed in such a trivial patch is the lost of
context which is printed by ipoib_warn and doesn't print in the case of
pr_warn.

Thanks for pointing and investing time in the review.

Doug,
Please drop it. We will respin it.


>
> >
> > >
> > > >  		attr.create_flags &= ~IB_QP_CREATE_USE_GFP_NOIO;
> > > >  		tx_qp = ib_create_qp(priv->pd, &attr);
> > > >  	}
> > > > --
> > > > 2.7.4
> > > >
> > > > --
> > > > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> > > > the body of a message to majordomo@vger.kernel.org
> > > > More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>
diff mbox

Patch

diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index 4ad297d..917393b 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -1053,8 +1053,8 @@  static struct ib_qp *ipoib_cm_create_tx_qp(struct net_device *dev, struct ipoib_
 
 	tx_qp = ib_create_qp(priv->pd, &attr);
 	if (PTR_ERR(tx_qp) == -EINVAL) {
-		ipoib_warn(priv, "can't use GFP_NOIO for QPs on device %s, using GFP_KERNEL\n",
-			   priv->ca->name);
+		pr_warn_once("can't use GFP_NOIO for QPs on device %s, using GFP_KERNEL\n",
+			     priv->ca->name);
 		attr.create_flags &= ~IB_QP_CREATE_USE_GFP_NOIO;
 		tx_qp = ib_create_qp(priv->pd, &attr);
 	}