From: Jon Hunter <jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
To: Ulf Hansson <ulf.hansson-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Cc: Krzysztof Kozlowski
<k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
Kevin Hilman <khilman-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
"linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"Rafael J. Wysocki" <rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org>,
Alexander Aring
<alex.aring-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Eric Anholt <eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org>,
Thierry Reding
<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Kukjin Kim <kgene-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
"linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [RFC PATCH 6/8] PM / Domains: Remove a provider by referencing the data pointer
Date: Mon, 11 Jul 2016 14:14:39 +0100 [thread overview]
Message-ID: <57839BBF.30102@nvidia.com> (raw)
In-Reply-To: <5769455C.9010809-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Hi Ulf,
On 21/06/16 14:47, Jon Hunter wrote:
>
> On 15/06/16 15:38, Ulf Hansson wrote:
>> On 4 March 2016 at 12:23, Jon Hunter <jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> wrote:
>>> To remove a PM domain from the system, it is necessary to ensure
>>> that any PM domain providers associated with the PM domain have
>>> been removed. Otherwise it could be possible to obtain a pointer
>>> to a PM domain structure that has been removed.
>>>
>>> PM domains now have a reference to the pointer for the PM domain
>>> provider's data variable. Add a function so that a PM domain can
>>> remove a PM domain provider by referencing the data pointer.
>>>
>>> Signed-off-by: Jon Hunter <jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
>>> ---
>>> drivers/base/power/domain.c | 24 ++++++++++++++++++++++++
>>> include/linux/pm_domain.h | 2 ++
>>> 2 files changed, 26 insertions(+)
>>>
>>> diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
>>> index 72055fef6256..438885f2455f 100644
>>> --- a/drivers/base/power/domain.c
>>> +++ b/drivers/base/power/domain.c
>>> @@ -1738,6 +1738,30 @@ void of_genpd_del_provider(struct device_node *np)
>>> EXPORT_SYMBOL_GPL(of_genpd_del_provider);
>>>
>>> /**
>>> + * of_genpd_del_provider_by_data() - Remove a registered PM domain provider
>>> + * @data: Pointer to the data associated with the PM domain provider
>>> + *
>>> + * Look up a PM domain provider based upon a pointer to it's data and
>>> + * remove the PM domain provider from the list of providers.
>>> + */
>>> +void of_genpd_del_provider_by_data(void *data)
>>> +{
>>> + struct of_genpd_provider *c, *cp;
>>> +
>>> + mutex_lock(&of_genpd_mutex);
>>> + list_for_each_entry_safe(cp, c, &of_genpd_providers, link) {
>>> + if (cp->data == data) {
>>> + list_del(&cp->link);
>>> + of_node_put(cp->node);
>>> + kfree(cp);
>>> + break;
>>> + }
>>> + }
>>> + mutex_unlock(&of_genpd_mutex);
>>> +}
>>> +EXPORT_SYMBOL_GPL(of_genpd_del_provider_by_data);
>>> +
>>> +/**
>>> * of_genpd_get_from_provider() - Look-up PM domain
>>> * @genpdspec: OF phandle args to use for look-up
>>> *
>>> diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
>>> index bed84413546f..7b7921a65cb0 100644
>>> --- a/include/linux/pm_domain.h
>>> +++ b/include/linux/pm_domain.h
>>> @@ -199,6 +199,7 @@ int of_genpd_add_provider_simple(struct device_node *np,
>>> int of_genpd_add_provider_onecell(struct device_node *np,
>>> struct genpd_onecell_data *data);
>>> void of_genpd_del_provider(struct device_node *np);
>>
>> There's currently only one user of of_genpd_del_provider().
>>
>> Could this patch just convert that user to the new API, so we don't
>> need to keep both the legacy and new one?
>>
>> I guess we could then just stick to the name "of_genpd_del_provider()".
>
> I had a look at this and to do that we would end up with
> of_genpd_del_provider(struct device_node *np, void *data) where the user
> should only pass one of the arguments. It seems a bit odd. However,
> unless I have forgotten something, I wonder if we should just make
> of_genpd_del_provider_by_name() a local function and not export this at
> all? It seems more natural for users to delete a provider by the
> device_node than by name rather than the data argument.
>
> The only problem I see with making of_genpd_del_provider_by_name() local
> is that I need to add a prototype for the function at the top of the
> domain.c source file so that it builds because __pm_genpd_remove() is
> defined above it. Yes I could move __pm_genpd_remove() to the bottom of
> the file but then it is not located next to pm_genpd_init() which seems odd.
>
> Let me know what you think.
Any response on this? This is the last item that we need to sort out?
Cheers
Jon
--
nvpublic
WARNING: multiple messages have this Message-ID (diff)
From: jonathanh@nvidia.com (Jon Hunter)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 6/8] PM / Domains: Remove a provider by referencing the data pointer
Date: Mon, 11 Jul 2016 14:14:39 +0100 [thread overview]
Message-ID: <57839BBF.30102@nvidia.com> (raw)
In-Reply-To: <5769455C.9010809@nvidia.com>
Hi Ulf,
On 21/06/16 14:47, Jon Hunter wrote:
>
> On 15/06/16 15:38, Ulf Hansson wrote:
>> On 4 March 2016 at 12:23, Jon Hunter <jonathanh@nvidia.com> wrote:
>>> To remove a PM domain from the system, it is necessary to ensure
>>> that any PM domain providers associated with the PM domain have
>>> been removed. Otherwise it could be possible to obtain a pointer
>>> to a PM domain structure that has been removed.
>>>
>>> PM domains now have a reference to the pointer for the PM domain
>>> provider's data variable. Add a function so that a PM domain can
>>> remove a PM domain provider by referencing the data pointer.
>>>
>>> Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
>>> ---
>>> drivers/base/power/domain.c | 24 ++++++++++++++++++++++++
>>> include/linux/pm_domain.h | 2 ++
>>> 2 files changed, 26 insertions(+)
>>>
>>> diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
>>> index 72055fef6256..438885f2455f 100644
>>> --- a/drivers/base/power/domain.c
>>> +++ b/drivers/base/power/domain.c
>>> @@ -1738,6 +1738,30 @@ void of_genpd_del_provider(struct device_node *np)
>>> EXPORT_SYMBOL_GPL(of_genpd_del_provider);
>>>
>>> /**
>>> + * of_genpd_del_provider_by_data() - Remove a registered PM domain provider
>>> + * @data: Pointer to the data associated with the PM domain provider
>>> + *
>>> + * Look up a PM domain provider based upon a pointer to it's data and
>>> + * remove the PM domain provider from the list of providers.
>>> + */
>>> +void of_genpd_del_provider_by_data(void *data)
>>> +{
>>> + struct of_genpd_provider *c, *cp;
>>> +
>>> + mutex_lock(&of_genpd_mutex);
>>> + list_for_each_entry_safe(cp, c, &of_genpd_providers, link) {
>>> + if (cp->data == data) {
>>> + list_del(&cp->link);
>>> + of_node_put(cp->node);
>>> + kfree(cp);
>>> + break;
>>> + }
>>> + }
>>> + mutex_unlock(&of_genpd_mutex);
>>> +}
>>> +EXPORT_SYMBOL_GPL(of_genpd_del_provider_by_data);
>>> +
>>> +/**
>>> * of_genpd_get_from_provider() - Look-up PM domain
>>> * @genpdspec: OF phandle args to use for look-up
>>> *
>>> diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h
>>> index bed84413546f..7b7921a65cb0 100644
>>> --- a/include/linux/pm_domain.h
>>> +++ b/include/linux/pm_domain.h
>>> @@ -199,6 +199,7 @@ int of_genpd_add_provider_simple(struct device_node *np,
>>> int of_genpd_add_provider_onecell(struct device_node *np,
>>> struct genpd_onecell_data *data);
>>> void of_genpd_del_provider(struct device_node *np);
>>
>> There's currently only one user of of_genpd_del_provider().
>>
>> Could this patch just convert that user to the new API, so we don't
>> need to keep both the legacy and new one?
>>
>> I guess we could then just stick to the name "of_genpd_del_provider()".
>
> I had a look at this and to do that we would end up with
> of_genpd_del_provider(struct device_node *np, void *data) where the user
> should only pass one of the arguments. It seems a bit odd. However,
> unless I have forgotten something, I wonder if we should just make
> of_genpd_del_provider_by_name() a local function and not export this at
> all? It seems more natural for users to delete a provider by the
> device_node than by name rather than the data argument.
>
> The only problem I see with making of_genpd_del_provider_by_name() local
> is that I need to add a prototype for the function at the top of the
> domain.c source file so that it builds because __pm_genpd_remove() is
> defined above it. Yes I could move __pm_genpd_remove() to the bottom of
> the file but then it is not located next to pm_genpd_init() which seems odd.
>
> Let me know what you think.
Any response on this? This is the last item that we need to sort out?
Cheers
Jon
--
nvpublic
next prev parent reply other threads:[~2016-07-11 13:14 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-04 11:23 [RFC PATCH 0/8] PM / Domains: Add support for removing PM domains Jon Hunter
2016-03-04 11:23 ` Jon Hunter
2016-03-04 11:23 ` [RFC PATCH 3/8] staging: board: Remove calls to of_genpd_get_from_provider() Jon Hunter
2016-03-04 11:23 ` Jon Hunter
2016-03-04 11:23 ` [RFC PATCH 4/8] PM / Domains: Don't expose generic_pm_domain structure Jon Hunter
2016-03-04 11:23 ` Jon Hunter
2016-08-05 11:55 ` Ulf Hansson
2016-08-05 11:55 ` Ulf Hansson
2016-03-04 11:23 ` [RFC PATCH 6/8] PM / Domains: Remove a provider by referencing the data pointer Jon Hunter
2016-03-04 11:23 ` Jon Hunter
[not found] ` <1457090634-14785-7-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-06-15 14:38 ` Ulf Hansson
2016-06-15 14:38 ` Ulf Hansson
2016-06-21 13:47 ` Jon Hunter
2016-06-21 13:47 ` Jon Hunter
[not found] ` <5769455C.9010809-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-07-11 13:14 ` Jon Hunter [this message]
2016-07-11 13:14 ` Jon Hunter
2016-08-05 11:55 ` Ulf Hansson
2016-08-05 11:55 ` Ulf Hansson
[not found] ` <CAPDyKFovC07Z9y-4RQ4MKGtjJx5w1D8er3Fv-8HF2qyTKgVViQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-08-11 16:39 ` Jon Hunter
2016-08-11 16:39 ` Jon Hunter
[not found] ` <18ad702c-83fe-fd6d-89ae-57e6f2715860-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-08-12 0:24 ` Rafael J. Wysocki
2016-08-12 0:24 ` Rafael J. Wysocki
2016-06-21 14:45 ` Jon Hunter
2016-06-21 14:45 ` Jon Hunter
2016-03-04 11:23 ` [RFC PATCH 8/8] PM / Domains: Add support for removing PM domains Jon Hunter
2016-03-04 11:23 ` Jon Hunter
[not found] ` <1457090634-14785-9-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-06-15 14:33 ` Ulf Hansson
2016-06-15 14:33 ` Ulf Hansson
2016-06-21 14:08 ` Jon Hunter
2016-06-21 14:08 ` Jon Hunter
[not found] ` <1457090634-14785-1-git-send-email-jonathanh-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-03-04 11:23 ` [RFC PATCH 1/8] PM / Domains: Add new helper functions for device-tree Jon Hunter
2016-03-04 11:23 ` Jon Hunter
2016-06-22 11:00 ` Jon Hunter
2016-06-22 11:00 ` Jon Hunter
2016-06-22 14:58 ` Jon Hunter
2016-06-22 14:58 ` Jon Hunter
2016-06-22 15:08 ` Ulf Hansson
2016-06-22 15:08 ` Ulf Hansson
2016-06-22 15:22 ` Jon Hunter
2016-06-22 15:22 ` Jon Hunter
2016-06-22 15:36 ` Ulf Hansson
2016-06-22 15:36 ` Ulf Hansson
2016-03-04 11:23 ` [RFC PATCH 2/8] ARM: EXYNOS: Remove calls to of_genpd_get_from_provider() Jon Hunter
2016-03-04 11:23 ` Jon Hunter
2016-03-04 11:23 ` [RFC PATCH 5/8] PM / Domains: Verify the PM domain is present when adding a provider Jon Hunter
2016-03-04 11:23 ` Jon Hunter
2016-08-05 11:57 ` Ulf Hansson
2016-08-05 11:57 ` Ulf Hansson
2016-03-04 11:23 ` [RFC PATCH 7/8] PM / Domains: Prepare for adding support to remove PM domains Jon Hunter
2016-03-04 11:23 ` Jon Hunter
2016-03-04 12:33 ` [RFC PATCH 0/8] PM / Domains: Add support for removing " Ulf Hansson
2016-03-04 12:33 ` Ulf Hansson
[not found] ` <CAPDyKFq3hNARzjSOoP+-NmcgfSWzG6GDmh7qVX6yx6QPgN9Arw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-03-28 12:38 ` Jon Hunter
2016-03-28 12:38 ` Jon Hunter
[not found] ` <56F925D9.3080703-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2016-06-06 13:19 ` Jon Hunter
2016-06-06 13:19 ` Jon Hunter
2016-06-15 14:46 ` Ulf Hansson
2016-06-15 14:46 ` 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=57839BBF.30102@nvidia.com \
--to=jonathanh-ddmlm1+adcrqt0dzr+alfa@public.gmane.org \
--cc=alex.aring-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org \
--cc=k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=kgene-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=khilman-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org \
--cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=ulf.hansson-QSEj5FYQhm4dnm+yROfE0A@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 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.