lkml.org 
[lkml]   [2017]   [May]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 5/5] mmc: cavium: Fix probing race with regulator
    On Tue, May 16, 2017 at 08:07:50AM -0500, Rob Herring wrote:
    > On Tue, May 16, 2017 at 4:36 AM, Jan Glauber <jglauber@cavium.com> wrote:
    > > If the regulator probing is not yet finished this driver
    > > might catch a -EPROBE_DEFER. Returning after this condition
    > > did not remove the created platform device. On a repeated
    > > call to the probe function the of_platform_device_create
    > > fails.
    > >
    > > Calling of_platform_device_destroy after EPROBE_DEFER resolves
    > > this bug.
    > >
    > > Signed-off-by: Jan Glauber <jglauber@cavium.com>
    > > ---
    > > drivers/mmc/host/cavium-thunderx.c | 4 +++-
    > > 1 file changed, 3 insertions(+), 1 deletion(-)
    > >
    > > diff --git a/drivers/mmc/host/cavium-thunderx.c b/drivers/mmc/host/cavium-thunderx.c
    > > index fe3d772..257535e 100644
    > > --- a/drivers/mmc/host/cavium-thunderx.c
    > > +++ b/drivers/mmc/host/cavium-thunderx.c
    > > @@ -137,8 +137,10 @@ static int thunder_mmc_probe(struct pci_dev *pdev,
    > > continue;
    > >
    > > ret = cvm_mmc_of_slot_probe(&host->slot_pdev[i]->dev, host);
    > > - if (ret)
    > > + if (ret) {
    > > + of_platform_device_destroy(&host->slot_pdev[i]->dev, NULL);
    >
    > What if this fails after the 1st iteration of the loop. It's only
    > cleaning up the current device.

    The platform device is just a dummy device created directly before
    cvm_mmc_of_slot_probe(). So there is no need to cleanup anything else.

    As far as I've seen it the platform code 'tags' the nodes it already
    used, but I need the same node to be parsed again on -EPROBE_DEFER.

    > Use devm_of_platform_populate or
    > of_platform_populate/of_platform_depopulate instead.

    I'm not sure one of these will work here.

    --Jan

    > Rob

    \
     
     \ /
      Last update: 2017-05-16 15:39    [W:4.112 / U:0.228 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site