• Ioana Ciornei's avatar
    soc: fsl: dpio: use a cpumask to identify which cpus are unused · 991e8732
    Ioana Ciornei authored
    The current implementation of the dpio driver uses a static next_cpu
    variable to keep track of the index of the next cpu available. This
    approach does not handle well unbinding and binding dpio devices in a
    random order. For example, unbinding a dpio and then binding it again
    with the driver, will generate the below error:
    
    $ echo dpio.5 > /sys/bus/fsl-mc/drivers/fsl_mc_dpio/unbind
    $ echo dpio.5 > /sys/bus/fsl-mc/drivers/fsl_mc_dpio/bind
    [  103.946380] fsl_mc_dpio dpio.5: probe failed. Number of DPIOs exceeds
    NR_CPUS.
    [  103.955157] fsl_mc_dpio dpio.5: fsl_mc_driver_probe failed: -34
    -bash: echo: write error: No such device
    
    Fix this error by keeping a global cpumask of unused cpus that will be
    updated at every dpaa2_dpio_[probe,remove].
    Signed-off-by: default avatarIoana Ciornei <ioana.ciornei@nxp.com>
    Signed-off-by: default avatarLi Yang <leoyang.li@nxp.com>
    991e8732
dpio-driver.c 6.67 KB