Skip to content

Commit

Permalink
hdat: Grab system model name from HDAT when available
Browse files Browse the repository at this point in the history
Latest spec added system model information to IPL PARAMS 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@linux.vnet.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
  • Loading branch information
Vasant Hegde authored and stewartsmith committed Jan 16, 2017
1 parent 5b5dc42 commit 7f4730d
Showing 1 changed file with 34 additions and 8 deletions.
42 changes: 34 additions & 8 deletions hdata/vpd.c
Expand Up @@ -599,6 +599,38 @@ struct dt_node *dt_add_vpd_node(const struct HDIF_common_hdr *hdr,
return node;
}

static void dt_add_model_name(char *model)
{
const char *model_name = NULL;
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 def_model;

p = HDIF_get_idata(iplp, IPLPARAMS_SYSPARAMS, NULL);
if (!CHECK_SPPTR(p))
goto def_model;

if (be16_to_cpu(iplp->version) >= 0x60)
model_name = p->sys_type_str;

def_model:
if (!model_name || model_name[0] == '\0') {
mi = machine_info_lookup(model);
if (mi) {
model_name = mi->name;
} else {
model_name = "Unknown";
prlog(PR_WARNING, "VPD: Model name %s not known\n", model);
}
}

dt_add_property_string(dt_root, "model-name", model_name);
}

static void sysvpd_parse(void)
{
const char *model;
Expand All @@ -612,7 +644,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)
Expand Down Expand Up @@ -641,13 +672,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);

Expand Down

0 comments on commit 7f4730d

Please sign in to comment.