pmdomain: tegra: Add support for multi-socket platforms
Subsystems (2)
Jon Hunter
maintainerPATCH 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
@@ -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
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.
Signed-off-by Jon Hunter <[email protected]>--- drivers/pmdomain/tegra/powergate-bpmp.c | 5 +++++ 1 file changed, 5 insertions(+)drivers/pmdomain/tegra/powergate-bpmp.c +0
-0
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