All of lore.kernel.org
 help / color / mirror / Atom feed
From: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
To: skiboot@lists.ozlabs.org, mpe@ellerman.id.au, maddy@linux.ibm.com
Cc: kjain@linux.ibm.com, disgoel@linux.ibm.com,
	linuxppc-dev@lists.ozlabs.org, mahesh@linux.ibm.com
Subject: [PATCH 2/3] skiboot: Update IMC code to use dt_find_by_name_len for checking dt nodes
Date: Mon,  2 Jan 2023 08:45:23 +0530	[thread overview]
Message-ID: <20230102031524.73249-2-atrajeev@linux.vnet.ibm.com> (raw)
In-Reply-To: <20230102031524.73249-1-atrajeev@linux.vnet.ibm.com>

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_name".
But since the node names have format like: "name@offset",
dt_find_by_name doesn't return the expected result. Fix this
by using dt_find_by_name_len. Also, instead of using char array,
use a new "struct nest_pmus_struct" which saves the name as well
as length parameter for dt_find_by_name_len.

Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
---
 hw/imc.c | 112 +++++++++++++++++++++++++++++--------------------------
 1 file changed, 59 insertions(+), 53 deletions(-)

diff --git a/hw/imc.c b/hw/imc.c
index 97e0809f..779e9634 100644
--- a/hw/imc.c
+++ b/hw/imc.c
@@ -37,6 +37,12 @@
 static uint64_t TRACE_IMC_ADDR;
 static uint64_t CORE_IMC_EVENT_MASK_ADDR;
 static uint64_t trace_scom_val;
+
+struct nest_pmus_struct {
+	const char *name;
+	int len;
+};
+
 /*
  * Initialise these with the pdbar and htm scom port address array
  * at run time, based on the processor version.
@@ -49,58 +55,58 @@ static unsigned int *htm_scom_index;
  * imc_chip_avl_vector(in struct imc_chip_cb, look at include/imc.h).
  * nest_pmus[] is an array containing all the possible nest IMC PMU node names.
  */
-static char const *nest_pmus[] = {
-	"powerbus0",
-	"mcs0",
-	"mcs1",
-	"mcs2",
-	"mcs3",
-	"mcs4",
-	"mcs5",
-	"mcs6",
-	"mcs7",
-	"mba0",
-	"mba1",
-	"mba2",
-	"mba3",
-	"mba4",
-	"mba5",
-	"mba6",
-	"mba7",
-	"cen0",
-	"cen1",
-	"cen2",
-	"cen3",
-	"cen4",
-	"cen5",
-	"cen6",
-	"cen7",
-	"xlink0",
-	"xlink1",
-	"xlink2",
-	"mcd0",
-	"mcd1",
-	"phb0",
-	"phb1",
-	"phb2",
-	"phb3",
-	"phb4",
-	"phb5",
-	"nx",
-	"capp0",
-	"capp1",
-	"vas",
-	"int",
-	"alink0",
-	"alink1",
-	"alink2",
-	"alink3",
-	"nvlink0",
-	"nvlink1",
-	"nvlink2",
-	"nvlink3",
-	"nvlink4",
-	"nvlink5",
+static struct nest_pmus_struct nest_pmus[] = {
+	{ .name = "powerbus0@", .len = 10 },
+	{ .name = "mcs0@", .len = 5},
+	{ .name = "mcs1@", .len = 5},
+	{ .name = "mcs2@", .len = 5},
+	{ .name = "mcs3@", .len = 5},
+	{ .name = "mcs4@", .len = 5},
+	{ .name = "mcs5@", .len = 5},
+	{ .name = "mcs6@", .len = 5},
+	{ .name = "mcs7@", .len = 5},
+	{ .name = "mba0@", .len = 5},
+	{ .name = "mba1@", .len = 5},
+	{ .name = "mba2@", .len = 5},
+	{ .name = "mba3@", .len = 5},
+	{ .name = "mba4@", .len = 5},
+	{ .name = "mba5@", .len = 5},
+	{ .name = "mba6@", .len = 5},
+	{ .name = "mba7@", .len = 5},
+	{ .name = "centaur0@", .len = 9},
+	{ .name = "centaur1@", .len = 9},
+	{ .name = "centaur2@", .len = 9},
+	{ .name = "centaur3@", .len = 9},
+	{ .name = "centaur4@", .len = 9},
+	{ .name = "centaur5@", .len = 9},
+	{ .name = "centaur6@", .len = 9},
+	{ .name = "centaur7@", .len = 9},
+	{ .name = "xlink0@", .len = 7},
+	{ .name = "xlink1@", .len = 7},
+	{ .name = "xlink2@", .len = 7},
+	{ .name = "mcd0@", .len = 5},
+	{ .name = "mcd1@", .len = 5},
+	{ .name = "phb0@", .len = 5},
+	{ .name = "phb1@", .len = 5},
+	{ .name = "phb2@", .len = 5},
+	{ .name = "phb3@", .len = 5},
+	{ .name = "phb4@", .len = 5},
+	{ .name = "phb5@", .len = 5},
+	{ .name = "nx@", .len = 3},
+	{ .name = "capp0@", .len = 6},
+	{ .name = "capp1@", .len = 6},
+	{ .name = "vas@", .len = 4},
+	{ .name = "int@", .len = 4},
+	{ .name = "alink0@", .len = 7},
+	{ .name = "alink1@", .len = 7},
+	{ .name = "alink2@", .len = 7},
+	{ .name = "alink3@", .len = 7},
+	{ .name = "nvlink0@", .len = 8},
+	{ .name = "nvlink1@", .len = 8},
+	{ .name = "nvlink2@", .len = 8},
+	{ .name = "nvlink3@", .len = 8},
+	{ .name = "nvlink4@", .len = 8},
+	{ .name = "nvlink5@", .len = 8},
 	/* reserved bits : 51 - 63 */
 };
 
@@ -412,7 +418,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_len(dev, nest_pmus[i].name, nest_pmus[i].len);
 			if (!target)
 				continue;
 			/* Remove the device node */
-- 
2.27.0


  reply	other threads:[~2023-01-02  3:16 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-02  3:15 [PATCH 1/3] core/device: Add function to return child node using name and length Athira Rajeev
2023-01-02  3:15 ` Athira Rajeev [this message]
2023-01-02  3:15 ` [PATCH 3/3] skiboot: Update IMC PMU node names for power10 Athira Rajeev

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=20230102031524.73249-2-atrajeev@linux.vnet.ibm.com \
    --to=atrajeev@linux.vnet.ibm.com \
    --cc=disgoel@linux.ibm.com \
    --cc=kjain@linux.ibm.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=maddy@linux.ibm.com \
    --cc=mahesh@linux.ibm.com \
    --cc=mpe@ellerman.id.au \
    --cc=skiboot@lists.ozlabs.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.