All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@linaro.org>
To: Caesar Wang <wxt@rock-chips.com>
Cc: heiko@sntech.de, ulf.hansson@linaro.org,
	devicetree@vger.kernel.org, linux@arm.linux.org.uk,
	arnd@arndb.de, ijc+devicetree@hellion.org.uk,
	linux-kernel@vger.kernel.org, linus.walleij@linaro.org,
	dmitry.torokhov@gmail.com, dianders@chromium.org,
	tomasz.figa@gmail.com, linux-rockchip@lists.infradead.org,
	robh+dt@kernel.org, galak@codeaurora.org,
	linux-arm-kernel@lists.infradead.org, mturquette@baylibre.com,
	"jinkun.hong" <jinkun.hong@rock-chips.com>
Subject: Re: [PATCH v17 3/4] soc: rockchip: power-domain: Add power domain driver
Date: Wed, 02 Sep 2015 11:28:13 -0700	[thread overview]
Message-ID: <7hbndkptfm.fsf@linaro.org> (raw)
In-Reply-To: <1441184380-13827-4-git-send-email-wxt@rock-chips.com> (Caesar Wang's message of "Wed, 2 Sep 2015 16:59:39 +0800")

Caesar Wang <wxt@rock-chips.com> writes:

> This driver is found on RK3288 SoCs.
>
> In order to meet high performance and low power requirements, a power
> management unit is designed or saving power when RK3288 in low power
> mode.
> The RK3288 PMU is dedicated for managing the power of the whole chip.
>
> PMU can work in the Low Power Mode by setting bit[0] of PMU_PWRMODE_CON
> register. After setting the register, PMU would enter the Low Power mode.
> In the low power mode, pmu will auto power on/off the specified power
> domain, send idle req to specified power domain, shut down/up pll and
> so on. All of above are configurable by setting corresponding registers.
>
> Signed-off-by: jinkun.hong <jinkun.hong@rock-chips.com>
> Signed-off-by: Caesar Wang <wxt@rock-chips.com>

[...]

> +static void rockchip_pm_remove_one_domain(struct rockchip_pm_domain *pd)
> +{
> +	int i;
> +
> +	for (i = 0; i < pd->num_clks; i++) {
> +		clk_unprepare(pd->clks[i]);
> +		clk_put(pd->clks[i]);
> +	}


You don't set pd->num_clks = 0 here, which means other places that
iterate over the clocks might race with this and try to use clocks that
have been unprepared/put.

This might be over-paranoid, but in particular, this could race with
rockchip_pd_power().

Also not setting the pd->num_clks to zero would be a problem for a
power-controller that is configured as a module which could be unloaded
and reloaded (I know that doesn't really work now, but it will
eventually, I hope.)

Maybe use the mutex here?  It should at least protect the zeroing of
pm->num_clks.

Kevin

WARNING: multiple messages have this Message-ID (diff)
From: khilman@linaro.org (Kevin Hilman)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v17 3/4] soc: rockchip: power-domain: Add power domain driver
Date: Wed, 02 Sep 2015 11:28:13 -0700	[thread overview]
Message-ID: <7hbndkptfm.fsf@linaro.org> (raw)
In-Reply-To: <1441184380-13827-4-git-send-email-wxt@rock-chips.com> (Caesar Wang's message of "Wed, 2 Sep 2015 16:59:39 +0800")

Caesar Wang <wxt@rock-chips.com> writes:

> This driver is found on RK3288 SoCs.
>
> In order to meet high performance and low power requirements, a power
> management unit is designed or saving power when RK3288 in low power
> mode.
> The RK3288 PMU is dedicated for managing the power of the whole chip.
>
> PMU can work in the Low Power Mode by setting bit[0] of PMU_PWRMODE_CON
> register. After setting the register, PMU would enter the Low Power mode.
> In the low power mode, pmu will auto power on/off the specified power
> domain, send idle req to specified power domain, shut down/up pll and
> so on. All of above are configurable by setting corresponding registers.
>
> Signed-off-by: jinkun.hong <jinkun.hong@rock-chips.com>
> Signed-off-by: Caesar Wang <wxt@rock-chips.com>

[...]

> +static void rockchip_pm_remove_one_domain(struct rockchip_pm_domain *pd)
> +{
> +	int i;
> +
> +	for (i = 0; i < pd->num_clks; i++) {
> +		clk_unprepare(pd->clks[i]);
> +		clk_put(pd->clks[i]);
> +	}


You don't set pd->num_clks = 0 here, which means other places that
iterate over the clocks might race with this and try to use clocks that
have been unprepared/put.

This might be over-paranoid, but in particular, this could race with
rockchip_pd_power().

Also not setting the pd->num_clks to zero would be a problem for a
power-controller that is configured as a module which could be unloaded
and reloaded (I know that doesn't really work now, but it will
eventually, I hope.)

Maybe use the mutex here?  It should at least protect the zeroing of
pm->num_clks.

Kevin

  reply	other threads:[~2015-09-02 18:28 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-02  8:59 [PATCH v17 0/4] ARM: rk3288: Add PM Domain support Caesar Wang
2015-09-02  8:59 ` Caesar Wang
2015-09-02  8:59 ` Caesar Wang
2015-09-02  8:59 ` [PATCH v17 1/4] dt-bindings: add document of Rockchip power domains Caesar Wang
2015-09-02  8:59   ` Caesar Wang
     [not found]   ` <1441184380-13827-2-git-send-email-wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2015-09-02 18:12     ` Kevin Hilman
2015-09-02 18:12       ` Kevin Hilman
2015-09-02 18:12       ` Kevin Hilman
2015-09-06 10:10       ` Caesar Wang
2015-09-06 10:10         ` Caesar Wang
2015-09-02  8:59 ` [PATCH v17 2/4] ARM: power-domain: rockchip: add all the domain type on RK3288 SoCs Caesar Wang
2015-09-02  8:59   ` Caesar Wang
     [not found] ` <1441184380-13827-1-git-send-email-wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2015-09-02  8:59   ` [PATCH v17 3/4] soc: rockchip: power-domain: Add power domain driver Caesar Wang
2015-09-02  8:59     ` Caesar Wang
2015-09-02  8:59     ` Caesar Wang
2015-09-02 18:28     ` Kevin Hilman [this message]
2015-09-02 18:28       ` Kevin Hilman
     [not found]       ` <7hbndkptfm.fsf-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-09-06  3:04         ` Caesar Wang
2015-09-06  3:04           ` Caesar Wang
2015-09-06  3:04           ` Caesar Wang
2015-09-02  8:59 ` [PATCH v17 4/4] ARM: dts: add the support power-domain node on RK3288 SoCs Caesar Wang
2015-09-02  8:59   ` Caesar Wang

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=7hbndkptfm.fsf@linaro.org \
    --to=khilman@linaro.org \
    --cc=arnd@arndb.de \
    --cc=devicetree@vger.kernel.org \
    --cc=dianders@chromium.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=galak@codeaurora.org \
    --cc=heiko@sntech.de \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=jinkun.hong@rock-chips.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mturquette@baylibre.com \
    --cc=robh+dt@kernel.org \
    --cc=tomasz.figa@gmail.com \
    --cc=ulf.hansson@linaro.org \
    --cc=wxt@rock-chips.com \
    /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 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.