* [PATCH V3] pmdomain: tegra: Add support for multi-socket platforms
@ 2026-06-02 19:32 Jon Hunter
2026-07-07 6:26 ` Jon Hunter
2026-07-13 11:06 ` Ulf Hansson
0 siblings, 2 replies; 3+ messages in thread
From: Jon Hunter @ 2026-06-02 19:32 UTC (permalink / raw)
To: Ulf Hansson, Thierry Reding; +Cc: linux-pm, linux-tegra, Jon Hunter
On multi-socket platforms each socket has its own BPMP that is
registered with the kernel. For such platforms prefix the NUMA ID for
each socket to the BPMP powergate name to ensure there is a unique name
for each power-domain. Note that we only add the NUMA ID for powergates
that return a valid name because an invalid name indicates that the
powergate ID is not supported.
Note the check for the NULL string is moved into the function
tegra_bpmp_powergate_get_name(), because in the multi-socket case we
must only add the prefix if we receive a valid name. A NULL string
indicates that there is no valid powergate associated with the ID that
is being queried.
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
---
Changes since V2:
- Moved the test for a NULL string to a common location that can be
used for both single and multi-socket platforms.
Changes since V1:
- Use NUMA ID as a prefix and not a suffix for the powergate name.
drivers/pmdomain/tegra/powergate-bpmp.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/pmdomain/tegra/powergate-bpmp.c b/drivers/pmdomain/tegra/powergate-bpmp.c
index 8cde4f384846..e6a7e025b012 100644
--- a/drivers/pmdomain/tegra/powergate-bpmp.c
+++ b/drivers/pmdomain/tegra/powergate-bpmp.c
@@ -137,6 +137,13 @@ static char *tegra_bpmp_powergate_get_name(struct tegra_bpmp *bpmp,
if (err < 0 || msg.rx.ret < 0)
return NULL;
+ if (response.get_name.name[0] == '\0')
+ return NULL;
+
+ if (dev_to_node(bpmp->dev) != NUMA_NO_NODE)
+ return kasprintf(GFP_KERNEL, "%d-%s", dev_to_node(bpmp->dev),
+ response.get_name.name);
+
return kstrdup(response.get_name.name, GFP_KERNEL);
}
@@ -234,7 +241,7 @@ tegra_bpmp_probe_powergates(struct tegra_bpmp *bpmp,
struct tegra_powergate_info *info = &powergates[count];
info->name = tegra_bpmp_powergate_get_name(bpmp, id);
- if (!info->name || info->name[0] == '\0') {
+ if (!info->name) {
num_holes++;
continue;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH V3] pmdomain: tegra: Add support for multi-socket platforms
2026-06-02 19:32 [PATCH V3] pmdomain: tegra: Add support for multi-socket platforms Jon Hunter
@ 2026-07-07 6:26 ` Jon Hunter
2026-07-13 11:06 ` Ulf Hansson
1 sibling, 0 replies; 3+ messages in thread
From: Jon Hunter @ 2026-07-07 6:26 UTC (permalink / raw)
To: Ulf Hansson, Thierry Reding; +Cc: linux-pm, linux-tegra
Hi Ulf,
On 02/06/2026 20:32, Jon Hunter wrote:
> On multi-socket platforms each socket has its own BPMP that is
> registered with the kernel. For such platforms prefix the NUMA ID for
> each socket to the BPMP powergate name to ensure there is a unique name
> for each power-domain. Note that we only add the NUMA ID for powergates
> that return a valid name because an invalid name indicates that the
> powergate ID is not supported.
>
> Note the check for the NULL string is moved into the function
> tegra_bpmp_powergate_get_name(), because in the multi-socket case we
> must only add the prefix if we receive a valid name. A NULL string
> indicates that there is no valid powergate associated with the ID that
> is being queried.
>
> Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
> ---
> Changes since V2:
> - Moved the test for a NULL string to a common location that can be
> used for both single and multi-socket platforms.
> Changes since V1:
> - Use NUMA ID as a prefix and not a suffix for the powergate name.
>
> drivers/pmdomain/tegra/powergate-bpmp.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pmdomain/tegra/powergate-bpmp.c b/drivers/pmdomain/tegra/powergate-bpmp.c
> index 8cde4f384846..e6a7e025b012 100644
> --- a/drivers/pmdomain/tegra/powergate-bpmp.c
> +++ b/drivers/pmdomain/tegra/powergate-bpmp.c
> @@ -137,6 +137,13 @@ static char *tegra_bpmp_powergate_get_name(struct tegra_bpmp *bpmp,
> if (err < 0 || msg.rx.ret < 0)
> return NULL;
>
> + if (response.get_name.name[0] == '\0')
> + return NULL;
> +
> + if (dev_to_node(bpmp->dev) != NUMA_NO_NODE)
> + return kasprintf(GFP_KERNEL, "%d-%s", dev_to_node(bpmp->dev),
> + response.get_name.name);
> +
> return kstrdup(response.get_name.name, GFP_KERNEL);
> }
>
> @@ -234,7 +241,7 @@ tegra_bpmp_probe_powergates(struct tegra_bpmp *bpmp,
> struct tegra_powergate_info *info = &powergates[count];
>
> info->name = tegra_bpmp_powergate_get_name(bpmp, id);
> - if (!info->name || info->name[0] == '\0') {
> + if (!info->name) {
> num_holes++;
> continue;
> }
Please let me know if you have any comments on this or if this is OK to
be picked up now?
Thanks
Jon
--
nvpublic
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH V3] pmdomain: tegra: Add support for multi-socket platforms
2026-06-02 19:32 [PATCH V3] pmdomain: tegra: Add support for multi-socket platforms Jon Hunter
2026-07-07 6:26 ` Jon Hunter
@ 2026-07-13 11:06 ` Ulf Hansson
1 sibling, 0 replies; 3+ messages in thread
From: Ulf Hansson @ 2026-07-13 11:06 UTC (permalink / raw)
To: Jon Hunter; +Cc: Ulf Hansson, Thierry Reding, linux-pm, linux-tegra
On Tue, Jun 2, 2026 at 9:33 PM Jon Hunter <jonathanh@nvidia.com> wrote:
>
> On multi-socket platforms each socket has its own BPMP that is
> registered with the kernel. For such platforms prefix the NUMA ID for
> each socket to the BPMP powergate name to ensure there is a unique name
> for each power-domain. Note that we only add the NUMA ID for powergates
> that return a valid name because an invalid name indicates that the
> powergate ID is not supported.
>
> Note the check for the NULL string is moved into the function
> tegra_bpmp_powergate_get_name(), because in the multi-socket case we
> must only add the prefix if we receive a valid name. A NULL string
> indicates that there is no valid powergate associated with the ID that
> is being queried.
>
> Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Applied for next, thanks!
Kind regards
Uffe
> ---
> Changes since V2:
> - Moved the test for a NULL string to a common location that can be
> used for both single and multi-socket platforms.
> Changes since V1:
> - Use NUMA ID as a prefix and not a suffix for the powergate name.
>
> drivers/pmdomain/tegra/powergate-bpmp.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pmdomain/tegra/powergate-bpmp.c b/drivers/pmdomain/tegra/powergate-bpmp.c
> index 8cde4f384846..e6a7e025b012 100644
> --- a/drivers/pmdomain/tegra/powergate-bpmp.c
> +++ b/drivers/pmdomain/tegra/powergate-bpmp.c
> @@ -137,6 +137,13 @@ static char *tegra_bpmp_powergate_get_name(struct tegra_bpmp *bpmp,
> if (err < 0 || msg.rx.ret < 0)
> return NULL;
>
> + if (response.get_name.name[0] == '\0')
> + return NULL;
> +
> + if (dev_to_node(bpmp->dev) != NUMA_NO_NODE)
> + return kasprintf(GFP_KERNEL, "%d-%s", dev_to_node(bpmp->dev),
> + response.get_name.name);
> +
> return kstrdup(response.get_name.name, GFP_KERNEL);
> }
>
> @@ -234,7 +241,7 @@ tegra_bpmp_probe_powergates(struct tegra_bpmp *bpmp,
> struct tegra_powergate_info *info = &powergates[count];
>
> info->name = tegra_bpmp_powergate_get_name(bpmp, id);
> - if (!info->name || info->name[0] == '\0') {
> + if (!info->name) {
> num_holes++;
> continue;
> }
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-13 11:06 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-02 19:32 [PATCH V3] pmdomain: tegra: Add support for multi-socket platforms Jon Hunter
2026-07-07 6:26 ` Jon Hunter
2026-07-13 11:06 ` Ulf Hansson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox