From: Philipp Zabel <p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
To: "Heiko Stübner" <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
Cc: Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
Greg Kroah-Hartman
<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Grant Likely
<grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [PATCH v2 1/6] misc: sram: fix error path in sram_probe
Date: Thu, 04 Jul 2013 17:41:51 +0200 [thread overview]
Message-ID: <1372952511.3974.38.camel@pizza.hi.pengutronix.de> (raw)
In-Reply-To: <201307041634.11248.heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
Hi Heiko,
Am Donnerstag, den 04.07.2013, 16:34 +0200 schrieb Heiko Stübner:
> Hi Philipp,
>
> Am Dienstag, 25. Juni 2013, 11:04:34 schrieb Philipp Zabel:
> > Hi Heiko,
> >
> > Am Dienstag, den 25.06.2013, 10:46 +0200 schrieb Heiko Stübner:
> > > The pool is created thru devm_gen_pool_create, so the call to
> > > gen_pool_destroy is not necessary.
> > > Instead the sram-clock must be turned off again if it exists.
> > >
> > > Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> > > ---
> > >
> > > drivers/misc/sram.c | 3 ++-
> > > 1 file changed, 2 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/misc/sram.c b/drivers/misc/sram.c
> > > index d87cc91..afe66571 100644
> > > --- a/drivers/misc/sram.c
> > > +++ b/drivers/misc/sram.c
> > > @@ -68,7 +68,8 @@ static int sram_probe(struct platform_device *pdev)
> > >
> > > ret = gen_pool_add_virt(sram->pool, (unsigned long)virt_base,
> > >
> > > res->start, size, -1);
> > >
> > > if (ret < 0) {
> > >
> > > - gen_pool_destroy(sram->pool);
> >
> > Right, thanks.
> >
> > > + if (sram->clk)
> > > + clk_disable_unprepare(sram->clk);
> > >
> > > return ret;
> > >
> > > }
> >
> > In light of the following patch, I'd rather move the
> > clk_prepare_enable() call after gen_pool_add_virt() and its error path.
>
> I'm not sure, but isn't moving the clock enablement below the pool allocation
> producing a race condition?
since this is a platform device, and the driver is not allowed to be
compiled as a module, it is probed at the time platform_driver_register
is called from postcore_initcall.
You'd have to go to quite some lengths to make this race by probing your
driver before mmio-sram and then asynchronously trying to allocate
memory from the pool some time later, without having made sure that the
pool exists during probe.
It would be nice to have callbacks from gen_pool_alloc/free to
enable/disable the clock.
For the time being, maybe it's the safest bet to just enable the clock
before, especially if you reorder the loop so there is only one
gen_pool_add_virt and corresponding error path.
> I.e. can the case happen that some other part wants to allocate part of the
> newly generated pool already, while the subsequent gen_pool_add_virt calls
> from the following patch are still running? ... And what will happen in this
> case, when the sram clock is still disabled?
On i.MX6, the system will hang.
regards
Philipp
_______________________________________________
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss
next prev parent reply other threads:[~2013-07-04 15:41 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-25 8:46 [PATCH v2 0/6] ARM: rockchip: add smp functionality Heiko Stübner
2013-06-25 8:46 ` [PATCH v2 1/6] misc: sram: fix error path in sram_probe Heiko Stübner
[not found] ` <201306251046.38993.heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
2013-06-25 9:04 ` Philipp Zabel
[not found] ` <1372151074.3981.21.camel-/rZezPiN1rtR6QfukMTsflXZhhPuCNm+@public.gmane.org>
2013-07-04 14:34 ` Heiko Stübner
[not found] ` <201307041634.11248.heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
2013-07-04 15:41 ` Philipp Zabel [this message]
2013-06-25 8:47 ` [PATCH v2 3/6] ARM: rockchip: add snoop-control-unit Heiko Stübner
[not found] ` <201306251046.04873.heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
2013-06-25 8:47 ` [PATCH v2 2/6] misc: sram: add ability to mark sram sections as reserved Heiko Stübner
2013-06-25 10:17 ` Philipp Zabel
[not found] ` <1372155425.3981.67.camel-/rZezPiN1rtR6QfukMTsflXZhhPuCNm+@public.gmane.org>
2013-06-26 9:18 ` Heiko Stübner
[not found] ` <201306261118.44637.heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
2013-06-26 10:09 ` Philipp Zabel
2013-06-25 8:48 ` [PATCH v2 4/6] ARM: rockchip: add sram dt nodes and documentation Heiko Stübner
2013-06-25 8:48 ` [PATCH v2 5/6] ARM: rockchip: add power-management-unit dt node Heiko Stübner
2013-06-25 8:49 ` [PATCH v2 6/6] ARM: rockchip: add smp bringup code Heiko Stübner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1372952511.3974.38.camel@pizza.hi.pengutronix.de \
--to=p.zabel-bicnvbalz9megne8c9+irq@public.gmane.org \
--cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).