netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next v2 0/2] dpaa2-eth: defer probe on object allocate
@ 2018-11-09 15:26 Ioana Ciornei
  2018-11-09 15:26 ` [PATCH net-next v2 1/2] " Ioana Ciornei
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Ioana Ciornei @ 2018-11-09 15:26 UTC (permalink / raw)
  To: netdev@vger.kernel.org, davem@davemloft.net, andrew@lunn.ch
  Cc: Ioana Ciocoi Radulescu, Ioana Ciornei

Allocatable objects on the fsl-mc bus may be probed by the fsl_mc_allocator
after the first attempts of other drivers to use them. Defer the probe when
this situation happens.

Changes in v2:
  - proper handling of IS_ERR_OR_NULL

Ioana Ciornei (2):
  dpaa2-eth: defer probe on object allocate
  dpaa2-ptp: defer probe when portal allocation failed

 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 32 ++++++++++++++++--------
 drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp.c |  5 +++-
 2 files changed, 26 insertions(+), 11 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH net-next v2 1/2] dpaa2-eth: defer probe on object allocate
  2018-11-09 15:26 [PATCH net-next v2 0/2] dpaa2-eth: defer probe on object allocate Ioana Ciornei
@ 2018-11-09 15:26 ` Ioana Ciornei
  2018-11-09 20:39   ` Andrew Lunn
  2018-11-09 15:26 ` [PATCH net-next v2 2/2] dpaa2-ptp: defer probe when portal allocation failed Ioana Ciornei
  2018-11-10  4:09 ` [PATCH net-next v2 0/2] dpaa2-eth: defer probe on object allocate David Miller
  2 siblings, 1 reply; 5+ messages in thread
From: Ioana Ciornei @ 2018-11-09 15:26 UTC (permalink / raw)
  To: netdev@vger.kernel.org, davem@davemloft.net, andrew@lunn.ch
  Cc: Ioana Ciocoi Radulescu, Ioana Ciornei

The fsl_mc_object_allocate function can fail because not all allocatable
objects are probed by the fsl_mc_allocator at the call time. Defer the
dpaa2-eth probe when this happens.

Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
---
Changes in v2:
  - proper handling of IS_ERR_OR_NULL


 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 32 ++++++++++++++++--------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
index 88f7acc..bdfb13b 100644
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
@@ -1434,8 +1434,11 @@ static struct fsl_mc_device *setup_dpcon(struct dpaa2_eth_priv *priv)
 	err = fsl_mc_object_allocate(to_fsl_mc_device(dev),
 				     FSL_MC_POOL_DPCON, &dpcon);
 	if (err) {
-		dev_info(dev, "Not enough DPCONs, will go on as-is\n");
-		return NULL;
+		if (err == -ENXIO)
+			err = -EPROBE_DEFER;
+		else
+			dev_info(dev, "Not enough DPCONs, will go on as-is\n");
+		return ERR_PTR(err);
 	}
 
 	err = dpcon_open(priv->mc_io, 0, dpcon->obj_desc.id, &dpcon->mc_handle);
@@ -1493,8 +1496,10 @@ static void free_dpcon(struct dpaa2_eth_priv *priv,
 		return NULL;
 
 	channel->dpcon = setup_dpcon(priv);
-	if (!channel->dpcon)
+	if (IS_ERR_OR_NULL(channel->dpcon)) {
+		err = PTR_ERR(channel->dpcon);
 		goto err_setup;
+	}
 
 	err = dpcon_get_attributes(priv->mc_io, 0, channel->dpcon->mc_handle,
 				   &attr);
@@ -1513,7 +1518,7 @@ static void free_dpcon(struct dpaa2_eth_priv *priv,
 	free_dpcon(priv, channel->dpcon);
 err_setup:
 	kfree(channel);
-	return NULL;
+	return ERR_PTR(err);
 }
 
 static void free_channel(struct dpaa2_eth_priv *priv,
@@ -1547,10 +1552,11 @@ static int setup_dpio(struct dpaa2_eth_priv *priv)
 	for_each_online_cpu(i) {
 		/* Try to allocate a channel */
 		channel = alloc_channel(priv);
-		if (!channel) {
-			dev_info(dev,
-				 "No affine channel for cpu %d and above\n", i);
-			err = -ENODEV;
+		if (IS_ERR_OR_NULL(channel)) {
+			err = PTR_ERR(channel);
+			if (err != -EPROBE_DEFER)
+				dev_info(dev,
+					 "No affine channel for cpu %d and above\n", i);
 			goto err_alloc_ch;
 		}
 
@@ -1608,9 +1614,12 @@ static int setup_dpio(struct dpaa2_eth_priv *priv)
 err_service_reg:
 	free_channel(priv, channel);
 err_alloc_ch:
+	if (err == -EPROBE_DEFER)
+		return err;
+
 	if (cpumask_empty(&priv->dpio_cpumask)) {
 		dev_err(dev, "No cpu with an affine DPIO/DPCON\n");
-		return err;
+		return -ENODEV;
 	}
 
 	dev_info(dev, "Cores %*pbl available for processing ingress traffic\n",
@@ -1732,7 +1741,10 @@ static int setup_dpbp(struct dpaa2_eth_priv *priv)
 	err = fsl_mc_object_allocate(to_fsl_mc_device(dev), FSL_MC_POOL_DPBP,
 				     &dpbp_dev);
 	if (err) {
-		dev_err(dev, "DPBP device allocation failed\n");
+		if (err == -ENXIO)
+			err = -EPROBE_DEFER;
+		else
+			dev_err(dev, "DPBP device allocation failed\n");
 		return err;
 	}
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH net-next v2 2/2] dpaa2-ptp: defer probe when portal allocation failed
  2018-11-09 15:26 [PATCH net-next v2 0/2] dpaa2-eth: defer probe on object allocate Ioana Ciornei
  2018-11-09 15:26 ` [PATCH net-next v2 1/2] " Ioana Ciornei
@ 2018-11-09 15:26 ` Ioana Ciornei
  2018-11-10  4:09 ` [PATCH net-next v2 0/2] dpaa2-eth: defer probe on object allocate David Miller
  2 siblings, 0 replies; 5+ messages in thread
From: Ioana Ciornei @ 2018-11-09 15:26 UTC (permalink / raw)
  To: netdev@vger.kernel.org, davem@davemloft.net, andrew@lunn.ch
  Cc: Ioana Ciocoi Radulescu, Ioana Ciornei

The fsl_mc_portal_allocate can fail when the requested MC portals are
not yet probed by the fsl_mc_allocator. In this situation, the driver
should defer the probe.

Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
---
Changes in v2:
  - none

 drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp.c
index 84b942b..9b150db 100644
--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp.c
+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ptp.c
@@ -140,7 +140,10 @@ static int dpaa2_ptp_probe(struct fsl_mc_device *mc_dev)
 
 	err = fsl_mc_portal_allocate(mc_dev, 0, &mc_dev->mc_io);
 	if (err) {
-		dev_err(dev, "fsl_mc_portal_allocate err %d\n", err);
+		if (err == -ENXIO)
+			err = -EPROBE_DEFER;
+		else
+			dev_err(dev, "fsl_mc_portal_allocate err %d\n", err);
 		goto err_exit;
 	}
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next v2 1/2] dpaa2-eth: defer probe on object allocate
  2018-11-09 15:26 ` [PATCH net-next v2 1/2] " Ioana Ciornei
@ 2018-11-09 20:39   ` Andrew Lunn
  0 siblings, 0 replies; 5+ messages in thread
From: Andrew Lunn @ 2018-11-09 20:39 UTC (permalink / raw)
  To: Ioana Ciornei
  Cc: netdev@vger.kernel.org, davem@davemloft.net,
	Ioana Ciocoi Radulescu

On Fri, Nov 09, 2018 at 03:26:45PM +0000, Ioana Ciornei wrote:
> The fsl_mc_object_allocate function can fail because not all allocatable
> objects are probed by the fsl_mc_allocator at the call time. Defer the
> dpaa2-eth probe when this happens.
> 
> Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
> ---
> Changes in v2:
>   - proper handling of IS_ERR_OR_NULL

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next v2 0/2] dpaa2-eth: defer probe on object allocate
  2018-11-09 15:26 [PATCH net-next v2 0/2] dpaa2-eth: defer probe on object allocate Ioana Ciornei
  2018-11-09 15:26 ` [PATCH net-next v2 1/2] " Ioana Ciornei
  2018-11-09 15:26 ` [PATCH net-next v2 2/2] dpaa2-ptp: defer probe when portal allocation failed Ioana Ciornei
@ 2018-11-10  4:09 ` David Miller
  2 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2018-11-10  4:09 UTC (permalink / raw)
  To: ioana.ciornei; +Cc: netdev, andrew, ruxandra.radulescu

From: Ioana Ciornei <ioana.ciornei@nxp.com>
Date: Fri, 9 Nov 2018 15:26:45 +0000

> Allocatable objects on the fsl-mc bus may be probed by the fsl_mc_allocator
> after the first attempts of other drivers to use them. Defer the probe when
> this situation happens.
> 
> Changes in v2:
>   - proper handling of IS_ERR_OR_NULL

Series applied.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-11-10 16:19 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-09 15:26 [PATCH net-next v2 0/2] dpaa2-eth: defer probe on object allocate Ioana Ciornei
2018-11-09 15:26 ` [PATCH net-next v2 1/2] " Ioana Ciornei
2018-11-09 20:39   ` Andrew Lunn
2018-11-09 15:26 ` [PATCH net-next v2 2/2] dpaa2-ptp: defer probe when portal allocation failed Ioana Ciornei
2018-11-10  4:09 ` [PATCH net-next v2 0/2] dpaa2-eth: defer probe on object allocate David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).