All of lore.kernel.org
 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, davem, andrew; +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, davem, andrew; +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, davem, andrew; +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, davem, 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.