[Skiboot] [PATCH 05/11] hdat: Grab system model name from HDAT when available

Vasant Hegde hegdevasant at linux.vnet.ibm.com
Wed Sep 28 22:05:27 AEST 2016


Latest spec added system model information to IPL PARMS ntuple.
Grab this information when available instead of using hardcoded
table (machine_table).

Its better to parse all IPL params in one place. But on P8 we depend
on model information ..which we get from sysvpd_parse(). Hence for now
I've added code inside sysvpd_parse().

Signed-off-by: Vasant Hegde <hegdevasant at linux.vnet.ibm.com>
---
 hdata/vpd.c | 40 ++++++++++++++++++++++++++++++++--------
 1 file changed, 32 insertions(+), 8 deletions(-)

diff --git a/hdata/vpd.c b/hdata/vpd.c
index a463170..dd3b1bd 100644
--- a/hdata/vpd.c
+++ b/hdata/vpd.c
@@ -598,6 +598,36 @@ struct dt_node *dt_add_vpd_node(const struct HDIF_common_hdr *hdr,
 	return node;
 }
 
+static void dt_add_model_name(char *model)
+{
+	const struct machine_info *mi;
+	const struct iplparams_sysparams *p;
+	const struct HDIF_common_hdr *iplp;
+
+	iplp = get_hdif(&spira.ntuples.ipl_parms, "IPLPMS");
+	if (!iplp)
+		goto out;
+
+	p = HDIF_get_idata(iplp, IPLPARAMS_SYSPARAMS, NULL);
+	if (!CHECK_SPPTR(p))
+		goto out;
+
+	if (proc_gen >= proc_gen_p9) {
+		dt_add_property_string(dt_root,
+				       "model-name", p->sys_type_desc);
+		return;
+	}
+
+out:
+	mi = machine_info_lookup(model);
+	if (mi) {
+		dt_add_property_string(dt_root, "model-name", mi->name);
+	} else {
+		dt_add_property_string(dt_root, "model-name", "Unknown");
+		prlog(PR_WARNING, "VPD: Model name %s not known\n", model);
+	}
+}
+
 static void sysvpd_parse(void)
 {
 	const char *model;
@@ -611,7 +641,6 @@ static void sysvpd_parse(void)
 	struct dt_node *dt_vpd;
 	const struct spira_fru_id *fru_id;
 	struct HDIF_common_hdr *sysvpd_hdr;
-	const struct machine_info *mi;
 
 	sysvpd_hdr = get_hdif(&spira.ntuples.system_vpd, SYSVPD_HDIF_SIG);
 	if (!sysvpd_hdr)
@@ -640,13 +669,8 @@ static void sysvpd_parse(void)
 		goto no_sysvpd;
 	memcpy(str, model, sz);
 	dt_add_property_string(dt_root, "model", str);
-	mi = machine_info_lookup(str);
-	if (mi) {
-		dt_add_property_string(dt_root, "model-name", mi->name);
-	} else {
-		dt_add_property_string(dt_root, "model-name", "Unknown");
-		prlog(PR_WARNING, "VPD: Model name %s not known\n", str);
-	}
+
+	dt_add_model_name(str);
 
 	free(str);
 
-- 
2.5.5



More information about the Skiboot mailing list