lkml.org 
[lkml]   [2018]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/5] soc: fsl: dpio: keep a per dpio device MC portal
    Date
    At the moment, the dpio-driver allocates an MC portal at probe time and
    frees it right after usage. The same thing happens on the remove path.
    This behavior could lead to scenarios where an MC portal is available
    for use at probing but not longer free on the remove path which could
    lead to unproper unbind of resources.

    Change the driver's behavior in such a way that an MC portal is
    allocated at probe and kept until the DPIO device is removed. This will
    ensure that at any time after a DPIO device was successfully probed, all
    its dependencies will be met.

    Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
    ---
    drivers/soc/fsl/dpio/dpio-driver.c | 9 +--------
    1 file changed, 1 insertion(+), 8 deletions(-)

    diff --git a/drivers/soc/fsl/dpio/dpio-driver.c b/drivers/soc/fsl/dpio/dpio-driver.c
    index 38ee9db..5286723 100644
    --- a/drivers/soc/fsl/dpio/dpio-driver.c
    +++ b/drivers/soc/fsl/dpio/dpio-driver.c
    @@ -187,7 +187,6 @@ static int dpaa2_dpio_probe(struct fsl_mc_device *dpio_dev)
    dev_dbg(dev, " receives_notifications = %d\n",
    desc.receives_notifications);
    dpio_close(dpio_dev->mc_io, 0, dpio_dev->mc_handle);
    - fsl_mc_portal_free(dpio_dev->mc_io);

    return 0;

    @@ -229,12 +228,6 @@ static int dpaa2_dpio_remove(struct fsl_mc_device *dpio_dev)
    cpu = dpaa2_io_get_cpu(priv->io);
    cpumask_set_cpu(cpu, cpus_unused_mask);

    - err = fsl_mc_portal_allocate(dpio_dev, 0, &dpio_dev->mc_io);
    - if (err) {
    - dev_err(dev, "MC portal allocation failed\n");
    - goto err_mcportal;
    - }
    -
    err = dpio_open(dpio_dev->mc_io, 0, dpio_dev->obj_desc.id,
    &dpio_dev->mc_handle);
    if (err) {
    @@ -252,7 +245,7 @@ static int dpaa2_dpio_remove(struct fsl_mc_device *dpio_dev)

    err_open:
    fsl_mc_portal_free(dpio_dev->mc_io);
    -err_mcportal:
    +
    return err;
    }

    --
    1.9.1
    \
     
     \ /
      Last update: 2018-12-10 17:50    [W:2.331 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site