[PATCH 2/3] skiboot: Update IMC code to use dt_find_by_name_before_addr for checking dt nodes
Athira Rajeev
atrajeev at linux.vnet.ibm.com
Fri Sep 15 02:32:05 AEST 2023
The nest IMC (In Memory Collection) Performance Monitoring
Unit(PMU) node names are saved in nest_pmus[] array in the
"hw/imc.c" IMC code. Not all the IMC PMUs listed in the device
tree may be available. Nest IMC PMU names along with their
bit values is represented in imc availability vector.
The nest_pmus[] array is used to remove the unavailable nodes
by checking this vector.
To check node availability, code was using "dt_find_by_substr".
But since the node names have format like: "name at offset",
dt_find_by_name doesn't return the expected result. Fix this
by using dt_find_by_name_before_addr. Also, update the char array
to use correct node names.
Signed-off-by: Athira Rajeev <atrajeev at linux.vnet.ibm.com>
---
Changelog:
v4 -> v5:
- Addressed review comment from Reza and renamed
dt_find_by_name_substr to dt_find_by_name_before_addr
v3 -> v4:
- Addressed review comment from Mahesh and added his Reviewed-by
for patch 1.
v2 -> v3:
- After review comments from Mahesh, fixed the code
to consider string upto "@" for both input node name
as well as child node name. V2 version was comparing
input node name and child node name upto string length
of child name. But this will return wrong node if input
name is larger than child name. Because it will match
as substring for child name.
https://lists.ozlabs.org/pipermail/skiboot/2023-January/018596.html
v1 -> v2:
- Addressed review comment from Dan to update
the utility funtion to search and compare
upto "@". Renamed it as dt_find_by_name_substr.
hw/imc.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/hw/imc.c b/hw/imc.c
index 97e0809f0..73f25dae8 100644
--- a/hw/imc.c
+++ b/hw/imc.c
@@ -67,14 +67,14 @@ static char const *nest_pmus[] = {
"mba5",
"mba6",
"mba7",
- "cen0",
- "cen1",
- "cen2",
- "cen3",
- "cen4",
- "cen5",
- "cen6",
- "cen7",
+ "centaur0",
+ "centaur1",
+ "centaur2",
+ "centaur3",
+ "centaur4",
+ "centaur5",
+ "centaur6",
+ "centaur7",
"xlink0",
"xlink1",
"xlink2",
@@ -412,7 +412,7 @@ static void disable_unavailable_units(struct dt_node *dev)
for (i = 0; i < ARRAY_SIZE(nest_pmus); i++) {
if (!(PPC_BITMASK(i, i) & avl_vec)) {
/* Check if the device node exists */
- target = dt_find_by_name(dev, nest_pmus[i]);
+ target = dt_find_by_name_before_addr(dev, nest_pmus[i]);
if (!target)
continue;
/* Remove the device node */
--
2.31.1
More information about the Linuxppc-dev
mailing list