Skip to contentSkip to conversation

pmdomain: tegra: Add support for multi-socket platforms

PATCH Superseded Jon Hunter 2 participants 2 messages May 22 – May 29

Subsystems (2)

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore

Jon Hunter

author maintainer
#0 lore raw

PATCH 1/1 pmdomain: tegra: Add support for multi-socket platforms

On multi-socket platforms each socket has its own BPMP that is registered with the kernel. For such platforms append 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 append the NUMA ID for powergates that return a valid name because an invalid name indicates that the powergate ID is not supported.

---
 drivers/pmdomain/tegra/powergate-bpmp.c | 5 +++++
 1 file changed, 5 insertions(+)
drivers/pmdomain/tegra/powergate-bpmp.c +5 -0
index 8cde4f384846..1faaa92a5b02 100644
@@ -137,6 +137,11 @@ 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' &&
+	    dev_to_node(bpmp->dev) != NUMA_NO_NODE)
+		return kasprintf(GFP_KERNEL, "%s.%d", response.get_name.name,
+				 dev_to_node(bpmp->dev));
+
 	return kstrdup(response.get_name.name, GFP_KERNEL);
 }
 
Signature · 1 line
2.43.0
#1 lore raw
Quoted 17 lines · Jon Hunter

On multi-socket platforms each socket has its own BPMP that is registered with the kernel. For such platforms append 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 append the NUMA ID for powergates that return a valid name because an invalid name indicates that the powergate ID is not supported.

---
 drivers/pmdomain/tegra/powergate-bpmp.c | 5 +++++
 1 file changed, 5 insertions(+)
drivers/pmdomain/tegra/powergate-bpmp.c +0 -0
index 8cde4f384846..1faaa92a5b02 100644

drivers/pmdomain/tegra/powergate-bpmp.c static char *tegra_bpmp_powergate_get_name(struct tegra_bpmp *bpmp, · line 143

Quoted 7 lines
drivers/pmdomain/tegra/powergate-bpmp.c +4 -0
@@ -137,6 +137,11 @@ 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' &&
+	    dev_to_node(bpmp->dev) != NUMA_NO_NODE)
+		return kasprintf(GFP_KERNEL, "%s.%d", response.get_name.name,
+				 dev_to_node(bpmp->dev));

I just remembered that for GPIO we decided to use %d- with the node ID as a prefix, rather than .%d as a suffix. Maybe we should unify on that naming scheme? I remember we were going back and forth over it and ultimately decided on this because it was more distinct from other naming schemes.

For GPIO in particular we have <port>.<pin> already for the pin names, so adding another .%d for the NUMA ID would've made for really confusing names. This doesn't apply for clocks, but it might still be good to stick to that naming.

I admit that I haven't been paying very close attention to this, so we might need to revisit any patches in flux that are adding multi-socket support.

Thierry