From mboxrd@z Thu Jan 1 00:00:00 1970 From: Caesar Wang Subject: Re: [PATCH v17 3/4] soc: rockchip: power-domain: Add power domain driver Date: Sun, 06 Sep 2015 11:04:58 +0800 Message-ID: <55EBAD5A.9060107@rock-chips.com> References: <1441184380-13827-1-git-send-email-wxt@rock-chips.com> <1441184380-13827-4-git-send-email-wxt@rock-chips.com> <7hbndkptfm.fsf@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <7hbndkptfm.fsf-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+glpar-linux-rockchip=m.gmane.org-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Kevin Hilman Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, ulf.hansson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org, heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org, arnd-r2nGTMty4D4@public.gmane.org, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org, "jinkun.hong" , linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, tomasz.figa-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, mturquette-rdvid1DuHRBWk0Htik3J/w@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Caesar Wang List-Id: linux-rockchip.vger.kernel.org S2V2aW4sCgpUaGFua3MgZm9yIGhhdmluZyBhIGxvb2sgaW50byBpdC4KCgrlnKggMjAxNeW5tDA5 5pyIMDPml6UgMDI6MjgsIEtldmluIEhpbG1hbiDlhpnpgZM6Cj4gQ2Flc2FyIFdhbmcgPHd4dEBy b2NrLWNoaXBzLmNvbT4gd3JpdGVzOgo+Cj4+IFRoaXMgZHJpdmVyIGlzIGZvdW5kIG9uIFJLMzI4 OCBTb0NzLgo+Pgo+PiBJbiBvcmRlciB0byBtZWV0IGhpZ2ggcGVyZm9ybWFuY2UgYW5kIGxvdyBw b3dlciByZXF1aXJlbWVudHMsIGEgcG93ZXIKPj4gbWFuYWdlbWVudCB1bml0IGlzIGRlc2lnbmVk IG9yIHNhdmluZyBwb3dlciB3aGVuIFJLMzI4OCBpbiBsb3cgcG93ZXIKPj4gbW9kZS4KPj4gVGhl IFJLMzI4OCBQTVUgaXMgZGVkaWNhdGVkIGZvciBtYW5hZ2luZyB0aGUgcG93ZXIgb2YgdGhlIHdo b2xlIGNoaXAuCj4+Cj4+IFBNVSBjYW4gd29yayBpbiB0aGUgTG93IFBvd2VyIE1vZGUgYnkgc2V0 dGluZyBiaXRbMF0gb2YgUE1VX1BXUk1PREVfQ09OCj4+IHJlZ2lzdGVyLiBBZnRlciBzZXR0aW5n IHRoZSByZWdpc3RlciwgUE1VIHdvdWxkIGVudGVyIHRoZSBMb3cgUG93ZXIgbW9kZS4KPj4gSW4g dGhlIGxvdyBwb3dlciBtb2RlLCBwbXUgd2lsbCBhdXRvIHBvd2VyIG9uL29mZiB0aGUgc3BlY2lm aWVkIHBvd2VyCj4+IGRvbWFpbiwgc2VuZCBpZGxlIHJlcSB0byBzcGVjaWZpZWQgcG93ZXIgZG9t YWluLCBzaHV0IGRvd24vdXAgcGxsIGFuZAo+PiBzbyBvbi4gQWxsIG9mIGFib3ZlIGFyZSBjb25m aWd1cmFibGUgYnkgc2V0dGluZyBjb3JyZXNwb25kaW5nIHJlZ2lzdGVycy4KPj4KPj4gU2lnbmVk LW9mZi1ieTogamlua3VuLmhvbmcgPGppbmt1bi5ob25nQHJvY2stY2hpcHMuY29tPgo+PiBTaWdu ZWQtb2ZmLWJ5OiBDYWVzYXIgV2FuZyA8d3h0QHJvY2stY2hpcHMuY29tPgo+IFsuLi5dCj4KPj4g K3N0YXRpYyB2b2lkIHJvY2tjaGlwX3BtX3JlbW92ZV9vbmVfZG9tYWluKHN0cnVjdCByb2NrY2hp cF9wbV9kb21haW4gKnBkKQo+PiArewo+PiArCWludCBpOwo+PiArCj4+ICsJZm9yIChpID0gMDsg aSA8IHBkLT5udW1fY2xrczsgaSsrKSB7Cj4+ICsJCWNsa191bnByZXBhcmUocGQtPmNsa3NbaV0p Owo+PiArCQljbGtfcHV0KHBkLT5jbGtzW2ldKTsKPj4gKwl9Cj4KPiBZb3UgZG9uJ3Qgc2V0IHBk LT5udW1fY2xrcyA9IDAgaGVyZSwgd2hpY2ggbWVhbnMgb3RoZXIgcGxhY2VzIHRoYXQKPiBpdGVy YXRlIG92ZXIgdGhlIGNsb2NrcyBtaWdodCByYWNlIHdpdGggdGhpcyBhbmQgdHJ5IHRvIHVzZSBj bG9ja3MgdGhhdAo+IGhhdmUgYmVlbiB1bnByZXBhcmVkL3B1dC4KCkFncmVlLCB3ZSBzaG91bGQg c2V0IHRoZSAicGQtPm51bV9jbG9rcz0wJyBpbiBoZXJlLgo+IFRoaXMgbWlnaHQgYmUgb3Zlci1w YXJhbm9pZCwgYnV0IGluIHBhcnRpY3VsYXIsIHRoaXMgY291bGQgcmFjZSB3aXRoCj4gcm9ja2No aXBfcGRfcG93ZXIoKS4KPgo+IEFsc28gbm90IHNldHRpbmcgdGhlIHBkLT5udW1fY2xrcyB0byB6 ZXJvIHdvdWxkIGJlIGEgcHJvYmxlbSBmb3IgYQo+IHBvd2VyLWNvbnRyb2xsZXIgdGhhdCBpcyBj b25maWd1cmVkIGFzIGEgbW9kdWxlIHdoaWNoIGNvdWxkIGJlIHVubG9hZGVkCj4gYW5kIHJlbG9h ZGVkIChJIGtub3cgdGhhdCBkb2Vzbid0IHJlYWxseSB3b3JrIG5vdywgYnV0IGl0IHdpbGwKPiBl dmVudHVhbGx5LCBJIGhvcGUuKQoKWWVwLgo+Cj4gTWF5YmUgdXNlIHRoZSBtdXRleCBoZXJlPyAg SXQgc2hvdWxkIGF0IGxlYXN0IHByb3RlY3QgdGhlIHplcm9pbmcgb2YKPiBwbS0+bnVtX2Nsa3Mu CgpTb3VuZCByZXNvbmFibGUuCkRvbmUuCgotLS0KVGhhbmtzLApDYWVzYXIKPgo+IEtldmluCj4K PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IExpbnV4 LXJvY2tjaGlwIG1haWxpbmcgbGlzdAo+IExpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5v cmcKPiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJv Y2tjaGlwCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K TGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVh ZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1y b2NrY2hpcAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: wxt@rock-chips.com (Caesar Wang) Date: Sun, 06 Sep 2015 11:04:58 +0800 Subject: [PATCH v17 3/4] soc: rockchip: power-domain: Add power domain driver In-Reply-To: <7hbndkptfm.fsf@linaro.org> References: <1441184380-13827-1-git-send-email-wxt@rock-chips.com> <1441184380-13827-4-git-send-email-wxt@rock-chips.com> <7hbndkptfm.fsf@linaro.org> Message-ID: <55EBAD5A.9060107@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Kevin, Thanks for having a look into it. ? 2015?09?03? 02:28, Kevin Hilman ??: > Caesar Wang 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 >> Signed-off-by: Caesar Wang > [...] > >> +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. Agree, we should set the "pd->num_cloks=0' in here. > 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.) Yep. > > Maybe use the mutex here? It should at least protect the zeroing of > pm->num_clks. Sound resonable. Done. --- Thanks, Caesar > > Kevin > > _______________________________________________ > Linux-rockchip mailing list > Linux-rockchip at lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-rockchip From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751266AbbIFDFQ (ORCPT ); Sat, 5 Sep 2015 23:05:16 -0400 Received: from regular1.263xmail.com ([211.150.99.139]:58157 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750878AbbIFDFJ (ORCPT ); Sat, 5 Sep 2015 23:05:09 -0400 X-263anti-spam: KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 4 X-ADDR-CHECKED: 0 X-RL-SENDER: wxt@rock-chips.com X-FST-TO: linux-arm-kernel@lists.infradead.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: wxt@rock-chips.com X-UNIQUE-TAG: <3feca9a0988f8e6f8f464d1a4c1baaeb> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Message-ID: <55EBAD5A.9060107@rock-chips.com> Date: Sun, 06 Sep 2015 11:04:58 +0800 From: Caesar Wang User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Kevin Hilman CC: Caesar Wang , devicetree@vger.kernel.org, ulf.hansson@linaro.org, linux@arm.linux.org.uk, heiko@sntech.de, arnd@arndb.de, ijc+devicetree@hellion.org.uk, "jinkun.hong" , linus.walleij@linaro.org, dmitry.torokhov@gmail.com, linux-kernel@vger.kernel.org, dianders@chromium.org, linux-rockchip@lists.infradead.org, robh+dt@kernel.org, galak@codeaurora.org, tomasz.figa@gmail.com, mturquette@baylibre.com, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v17 3/4] soc: rockchip: power-domain: Add power domain driver References: <1441184380-13827-1-git-send-email-wxt@rock-chips.com> <1441184380-13827-4-git-send-email-wxt@rock-chips.com> <7hbndkptfm.fsf@linaro.org> In-Reply-To: <7hbndkptfm.fsf@linaro.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Kevin, Thanks for having a look into it. 在 2015年09月03日 02:28, Kevin Hilman 写道: > Caesar Wang 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 >> Signed-off-by: Caesar Wang > [...] > >> +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. Agree, we should set the "pd->num_cloks=0' in here. > 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.) Yep. > > Maybe use the mutex here? It should at least protect the zeroing of > pm->num_clks. Sound resonable. Done. --- Thanks, Caesar > > Kevin > > _______________________________________________ > Linux-rockchip mailing list > Linux-rockchip@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-rockchip