From: Russell King <rmk+kernel@arm.linux.org.uk> To: Andrew Lunn <andrew@lunn.ch>, Jason Cooper <jason@lakedaemon.net>, "Rafael J. Wysocki" <rjw@rjwysocki.net>, Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>, linux-arm-kernel@lists.infradead.org Cc: Len Brown <len.brown@intel.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, linux-pm@vger.kernel.org Subject: [PATCH 02/10] pm: domains: factor out code to get the generic PM domain from a struct device Date: Fri, 13 Mar 2015 16:23:25 +0000 [thread overview] Message-ID: <E1YWSMv-0006Fx-E6@rmk-PC.arm.linux.org.uk> (raw) In-Reply-To: <20150312183020.GU8656@n2100.arm.linux.org.uk> The PM domain code contains two methods to get the generic PM domain for a struct device. One is dev_to_genpd() which is only safe when we know for certain that the device has a generic PM domain attached. The other is coded into genpd_dev_pm_detach() which ensures that the PM domain in the struct device is a generic PM domain (and so is safer). This commit factors out the safer version and documents it. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> --- drivers/base/power/domain.c | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index b3fbc21da2dc..b9000b245e62 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -68,6 +68,31 @@ static struct generic_pm_domain *pm_genpd_lookup_name(const char *domain_name) return genpd; } +/* + * Get the generic PM domain for a particular struct device. + * This validates the struct device pointer, the PM domain pointer, + * and checks that the PM domain pointer is a real generic PM domain. + * Any failure results in NULL being returned. + */ +static struct generic_pm_domain *pm_genpd_lookup_dev(struct device *dev) +{ + struct generic_pm_domain *genpd = NULL, *gpd; + + if (IS_ERR_OR_NULL(dev) || IS_ERR_OR_NULL(dev->pm_domain)) + return NULL; + + mutex_lock(&gpd_list_lock); + list_for_each_entry(gpd, &gpd_list, gpd_list_node) { + if (&gpd->domain == dev->pm_domain) { + genpd = gpd; + break; + } + } + mutex_unlock(&gpd_list_lock); + + return genpd; +} + struct generic_pm_domain *dev_to_genpd(struct device *dev) { if (IS_ERR_OR_NULL(dev->pm_domain)) @@ -2120,21 +2145,10 @@ EXPORT_SYMBOL_GPL(of_genpd_get_from_provider); */ static void genpd_dev_pm_detach(struct device *dev, bool power_off) { - struct generic_pm_domain *pd = NULL, *gpd; + struct generic_pm_domain *pd; int ret = 0; - if (!dev->pm_domain) - return; - - mutex_lock(&gpd_list_lock); - list_for_each_entry(gpd, &gpd_list, gpd_list_node) { - if (&gpd->domain == dev->pm_domain) { - pd = gpd; - break; - } - } - mutex_unlock(&gpd_list_lock); - + pd = pm_genpd_lookup_dev(dev); if (!pd) return; -- 1.8.3.1
WARNING: multiple messages have this Message-ID (diff)
From: rmk+kernel@arm.linux.org.uk (Russell King) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 02/10] pm: domains: factor out code to get the generic PM domain from a struct device Date: Fri, 13 Mar 2015 16:23:25 +0000 [thread overview] Message-ID: <E1YWSMv-0006Fx-E6@rmk-PC.arm.linux.org.uk> (raw) In-Reply-To: <20150312183020.GU8656@n2100.arm.linux.org.uk> The PM domain code contains two methods to get the generic PM domain for a struct device. One is dev_to_genpd() which is only safe when we know for certain that the device has a generic PM domain attached. The other is coded into genpd_dev_pm_detach() which ensures that the PM domain in the struct device is a generic PM domain (and so is safer). This commit factors out the safer version and documents it. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> --- drivers/base/power/domain.c | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index b3fbc21da2dc..b9000b245e62 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -68,6 +68,31 @@ static struct generic_pm_domain *pm_genpd_lookup_name(const char *domain_name) return genpd; } +/* + * Get the generic PM domain for a particular struct device. + * This validates the struct device pointer, the PM domain pointer, + * and checks that the PM domain pointer is a real generic PM domain. + * Any failure results in NULL being returned. + */ +static struct generic_pm_domain *pm_genpd_lookup_dev(struct device *dev) +{ + struct generic_pm_domain *genpd = NULL, *gpd; + + if (IS_ERR_OR_NULL(dev) || IS_ERR_OR_NULL(dev->pm_domain)) + return NULL; + + mutex_lock(&gpd_list_lock); + list_for_each_entry(gpd, &gpd_list, gpd_list_node) { + if (&gpd->domain == dev->pm_domain) { + genpd = gpd; + break; + } + } + mutex_unlock(&gpd_list_lock); + + return genpd; +} + struct generic_pm_domain *dev_to_genpd(struct device *dev) { if (IS_ERR_OR_NULL(dev->pm_domain)) @@ -2120,21 +2145,10 @@ EXPORT_SYMBOL_GPL(of_genpd_get_from_provider); */ static void genpd_dev_pm_detach(struct device *dev, bool power_off) { - struct generic_pm_domain *pd = NULL, *gpd; + struct generic_pm_domain *pd; int ret = 0; - if (!dev->pm_domain) - return; - - mutex_lock(&gpd_list_lock); - list_for_each_entry(gpd, &gpd_list, gpd_list_node) { - if (&gpd->domain == dev->pm_domain) { - pd = gpd; - break; - } - } - mutex_unlock(&gpd_list_lock); - + pd = pm_genpd_lookup_dev(dev); if (!pd) return; -- 1.8.3.1
next prev parent reply other threads:[~2015-03-13 16:23 UTC|newest] Thread overview: 125+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-03-12 18:30 [FOR DISCUSSION 0/9] Dove PMU support Russell King - ARM Linux 2015-03-12 18:30 ` Russell King - ARM Linux 2015-03-12 18:30 ` [PATCH 1/9] pm: domains: quieten down generic pm domains Russell King 2015-03-13 8:46 ` Ulf Hansson 2015-03-13 15:57 ` Kevin Hilman 2015-03-12 18:31 ` [PATCH 2/9] pm: domains: avoid potential oops in pm_genpd_remove_device() Russell King 2015-03-13 8:56 ` Ulf Hansson 2015-03-13 9:20 ` Russell King - ARM Linux 2015-03-13 12:45 ` Geert Uytterhoeven 2015-03-14 1:27 ` Rafael J. Wysocki 2015-03-13 13:23 ` Russell King - ARM Linux 2015-03-13 16:33 ` Kevin Hilman 2015-03-13 16:58 ` Russell King - ARM Linux 2015-03-12 18:31 ` [PATCH 3/9] pm: domains: sync runtime PM status with PM domains after probe Russell King 2015-03-12 23:25 ` Rafael J. Wysocki 2015-03-13 9:30 ` Ulf Hansson 2015-03-13 10:14 ` Russell King - ARM Linux 2015-03-13 10:42 ` Ulf Hansson 2015-03-13 13:39 ` Russell King - ARM Linux 2015-03-13 16:45 ` Kevin Hilman 2015-03-12 18:31 ` [PATCH 5/9] ARM: dove: create a proper PMU driver for power domains, PMU IRQs and resets Russell King 2015-03-13 12:07 ` Arnd Bergmann 2015-03-13 12:29 ` Russell King - ARM Linux 2015-03-13 12:42 ` Arnd Bergmann 2015-03-13 12:47 ` Russell King - ARM Linux 2015-03-13 15:08 ` Arnd Bergmann 2015-03-13 15:28 ` Russell King - ARM Linux 2015-03-13 15:36 ` Arnd Bergmann 2015-03-13 12:59 ` Russell King - ARM Linux 2015-03-13 16:22 ` [FOR DISCUSSION 0/10] Dove PMU support Russell King - ARM Linux 2015-03-13 16:23 ` [PATCH 01/10] pm: domains: quieten down generic pm domains Russell King 2015-03-13 16:23 ` Russell King 2015-03-13 17:10 ` Kevin Hilman 2015-03-13 17:10 ` Kevin Hilman 2015-03-13 16:23 ` Russell King [this message] 2015-03-13 16:23 ` [PATCH 02/10] pm: domains: factor out code to get the generic PM domain from a struct device Russell King 2015-03-13 17:20 ` Kevin Hilman 2015-03-13 17:20 ` Kevin Hilman 2015-03-13 17:35 ` Russell King - ARM Linux 2015-03-13 17:35 ` Russell King - ARM Linux 2015-03-13 16:23 ` [PATCH 03/10] pm: domains: avoid potential oops in pm_genpd_remove_device() Russell King 2015-03-13 16:23 ` Russell King 2015-03-13 17:28 ` Kevin Hilman 2015-03-13 17:28 ` Kevin Hilman 2015-03-13 16:23 ` [PATCH 06/10] ARM: dove: create a proper PMU driver for power domains, PMU IRQs and resets Russell King [not found] ` <20150312183020.GU8656-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> 2015-03-12 18:31 ` [PATCH 4/9] dt-bindings: add Marvell PMU documentation Russell King [not found] ` <E1YW7t0-0003mE-My-eh5Bv4kxaXIANfyc6IWni62ZND6+EDdj@public.gmane.org> 2015-03-12 21:32 ` Rob Herring [not found] ` <CAL_Jsq+R70GVsuig7Ebo49_MeneD_RZ=E0haTVsb_xFhTR7-pw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2015-03-12 21:42 ` Russell King - ARM Linux 2015-03-13 12:02 ` Arnd Bergmann 2015-03-12 18:31 ` [PATCH 6/9] ARM: dt: dove: add Dove PMU DT entry to dove.dtsi Russell King 2015-03-12 18:31 ` Russell King [not found] ` <E1YW7tB-0003mM-1L-eh5Bv4kxaXIANfyc6IWni62ZND6+EDdj@public.gmane.org> 2015-03-13 12:30 ` Thomas Petazzoni 2015-03-13 12:30 ` Thomas Petazzoni [not found] ` <20150313133038.0a3ae8d1-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> 2015-03-13 12:33 ` Russell King - ARM Linux 2015-03-13 12:33 ` Russell King - ARM Linux 2015-03-16 18:27 ` Gregory CLEMENT 2015-03-16 18:27 ` Gregory CLEMENT [not found] ` <55072092.9040207-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> 2015-03-17 13:43 ` Russell King - ARM Linux 2015-03-17 13:43 ` Russell King - ARM Linux [not found] ` <20150317134335.GV8656-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org> 2015-03-17 15:09 ` Sebastian Hesselbarth 2015-03-17 15:09 ` Sebastian Hesselbarth [not found] ` <5508439F.4000507-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 2015-03-17 15:15 ` Russell King - ARM Linux 2015-03-17 15:15 ` Russell King - ARM Linux 2015-03-25 8:25 ` Linus Walleij 2015-03-25 8:25 ` Linus Walleij 2015-03-12 18:31 ` [PATCH 7/9] ARM: dt: dove: wire up RTC interrupt Russell King 2015-03-12 18:31 ` Russell King 2015-03-12 18:31 ` [PATCH 8/9] ARM: dt: dove: add video decoder power domain description Russell King 2015-03-12 18:31 ` Russell King 2015-03-12 18:31 ` [PATCH 9/9] ARM: dt: dove: add GPU " Russell King 2015-03-12 18:31 ` Russell King 2015-03-13 11:57 ` [FOR DISCUSSION 0/9] Dove PMU support Arnd Bergmann 2015-03-13 11:57 ` Arnd Bergmann 2015-03-13 12:11 ` Russell King - ARM Linux 2015-03-13 12:11 ` Russell King - ARM Linux 2015-03-13 12:26 ` Arnd Bergmann 2015-03-13 12:26 ` Arnd Bergmann 2015-03-13 12:32 ` Russell King - ARM Linux 2015-03-13 12:32 ` Russell King - ARM Linux 2015-03-13 12:47 ` Arnd Bergmann 2015-03-13 12:47 ` Arnd Bergmann 2015-03-13 16:23 ` [PATCH 04/10] pm: domains: sync runtime PM status with PM domains after probe Russell King 2015-03-13 16:23 ` Russell King [not found] ` <E1YWSN5-0006G5-Ld-eh5Bv4kxaXIANfyc6IWni62ZND6+EDdj@public.gmane.org> 2015-03-13 17:33 ` Kevin Hilman 2015-03-13 17:33 ` Kevin Hilman 2015-03-13 16:23 ` [PATCH 05/10] dt-bindings: add Marvell PMU documentation Russell King 2015-03-13 16:23 ` Russell King [not found] ` <E1YWSNA-0006G9-Rr-eh5Bv4kxaXIANfyc6IWni62ZND6+EDdj@public.gmane.org> 2015-03-17 0:28 ` Rob Herring 2015-03-17 0:28 ` Rob Herring 2015-03-13 16:23 ` [PATCH 07/10] ARM: dt: dove: add Dove PMU DT entry to dove.dtsi Russell King 2015-03-13 16:23 ` Russell King 2015-03-13 16:23 ` [PATCH 08/10] ARM: dt: dove: wire up RTC interrupt Russell King 2015-03-13 16:23 ` Russell King 2015-03-13 16:24 ` [PATCH 09/10] ARM: dt: dove: add video decoder power domain description Russell King 2015-03-13 16:24 ` Russell King 2015-03-13 16:24 ` [PATCH 10/10] ARM: dt: dove: add GPU " Russell King 2015-03-13 16:24 ` Russell King 2015-03-19 21:59 ` [FOR DISCUSSION 0/9] Dove PMU support Rafael J. Wysocki 2015-03-19 21:59 ` Rafael J. Wysocki 2015-03-19 22:02 ` Rafael J. Wysocki 2015-03-19 22:02 ` Rafael J. Wysocki 2015-03-20 12:16 ` Russell King - ARM Linux 2015-03-20 12:16 ` Russell King - ARM Linux 2015-03-20 12:44 ` Rafael J. Wysocki 2015-03-20 12:44 ` Rafael J. Wysocki 2015-03-20 17:19 ` Russell King - ARM Linux 2015-03-20 17:19 ` Russell King - ARM Linux 2015-03-20 17:20 ` [PATCH 1/3] pm: domains: quieten down generic pm domains Russell King 2015-03-20 17:20 ` Russell King 2015-03-20 17:20 ` [PATCH 2/3] pm: domains: factor out code to get the generic PM domain from a struct device Russell King 2015-03-20 17:20 ` Russell King 2015-03-23 13:28 ` Ulf Hansson 2015-03-23 13:28 ` Ulf Hansson 2015-03-23 15:17 ` Russell King - ARM Linux 2015-03-23 15:17 ` Russell King - ARM Linux 2015-03-24 0:29 ` Rafael J. Wysocki 2015-03-24 0:29 ` Rafael J. Wysocki 2015-03-26 15:20 ` Russell King - ARM Linux 2015-03-26 15:20 ` Russell King - ARM Linux 2015-03-26 16:00 ` Russell King - ARM Linux 2015-03-26 16:00 ` Russell King - ARM Linux 2015-03-20 17:20 ` [PATCH 3/3] pm: domains: avoid potential oops in pm_genpd_remove_device() Russell King 2015-03-20 17:20 ` Russell King 2015-03-23 13:32 ` Ulf Hansson 2015-03-23 13:32 ` Ulf Hansson
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=E1YWSMv-0006Fx-E6@rmk-PC.arm.linux.org.uk \ --to=rmk+kernel@arm.linux.org.uk \ --cc=andrew@lunn.ch \ --cc=gregkh@linuxfoundation.org \ --cc=jason@lakedaemon.net \ --cc=len.brown@intel.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-pm@vger.kernel.org \ --cc=rjw@rjwysocki.net \ --cc=sebastian.hesselbarth@gmail.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: linkBe 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.