aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hdata/spira.c63
-rw-r--r--hdata/spira.h28
-rw-r--r--hdata/test/p8-840-spira.dt1
-rw-r--r--hdata/test/p81-811.spira.dt1
4 files changed, 69 insertions, 24 deletions
diff --git a/hdata/spira.c b/hdata/spira.c
index f87aa27..a19b4db 100644
--- a/hdata/spira.c
+++ b/hdata/spira.c
@@ -756,8 +756,6 @@ static void add_nx(void)
static void add_iplparams_sys_params(const void *iplp, struct dt_node *node)
{
const struct iplparams_sysparams *p;
- u32 sys_type;
- const char *sys_family;
const struct HDIF_common_hdr *hdif = iplp;
u16 version = be16_to_cpu(hdif->version);
@@ -776,29 +774,48 @@ static void add_iplparams_sys_params(const void *iplp, struct dt_node *node)
dt_add_property_nstr(node, "ibm,sys-model", p->sys_model, 4);
- /* Compatible is 2 entries: ibm,powernv and ibm,<platform>
+ /*
+ * Compatible has up to three entries:
+ * "ibm,powernv", the system family and system type.
+ *
+ * On P9 and above the family and type strings come from the HDAT
+ * directly. On P8 we find it from the system ID numbers.
*/
- sys_type = be32_to_cpu(p->system_type);
- switch(sys_type >> 28) {
- case 0:
- sys_family = "ibm,squadrons";
- break;
- case 1:
- sys_family = "ibm,eclipz";
- break;
- case 2:
- sys_family = "ibm,apollo";
- break;
- case 3:
- sys_family = "ibm,firenze";
- break;
- default:
- sys_family = NULL;
- prerror("IPLPARAMS: Unknown system family\n");
- break;
+ if (proc_gen >= proc_gen_p9) {
+ dt_add_property_strings(dt_root, "compatible", "ibm,powernv",
+ p->sys_family_str, p->sys_type_str);
+
+ prlog(PR_INFO, "IPLPARAMS: v0x70 Platform family/type: %s/%s\n",
+ p->sys_family_str, p->sys_type_str);
+ } else {
+ u32 sys_type = be32_to_cpu(p->system_type);
+ const char *sys_family;
+
+ switch (sys_type >> 28) {
+ case 0:
+ sys_family = "ibm,squadrons";
+ break;
+ case 1:
+ sys_family = "ibm,eclipz";
+ break;
+ case 2:
+ sys_family = "ibm,apollo";
+ break;
+ case 3:
+ sys_family = "ibm,firenze";
+ break;
+ default:
+ sys_family = NULL;
+ prerror("IPLPARAMS: Unknown system family\n");
+ break;
+ }
+
+ dt_add_property_strings(dt_root, "compatible", "ibm,powernv",
+ sys_family);
+ prlog(PR_INFO,
+ "IPLPARAMS: Legacy platform family: %s"
+ " (sys_type=0x%08x)\n", sys_family, sys_type);
}
- dt_add_property_strings(dt_root, "compatible", "ibm,powernv",
- sys_family);
/* Grab nest frequency when available */
if (version >= 0x005b) {
diff --git a/hdata/spira.h b/hdata/spira.h
index eae7ac9..b04a3df 100644
--- a/hdata/spira.h
+++ b/hdata/spira.h
@@ -323,6 +323,17 @@ struct iplparams_sysparams {
uint8_t hw_page_table_size; /* >= 0x59 */
__be16 hv_disp_wheel; /* >= 0x58 */
__be32 nest_freq_mhz; /* >= 0x5b */
+ uint8_t split_core_mode; /* >= 0x5c */
+ uint8_t reserved[3];
+ uint8_t sys_vendor[64]; /* >= 0x5f */
+ /* >= 0x60 */
+ __be16 sys_sec_setting;
+ __be16 tpm_config_bit;
+ __be16 tpm_drawer;
+ __be16 reserved2;
+ uint8_t hw_key_hash[64];
+ uint8_t sys_family_str[64]; /* vendor,name */
+ uint8_t sys_type_str[64]; /* vendor,type */
} __packed;
/* Idata index 1: IPL parameters */
@@ -351,7 +362,11 @@ struct iplparams_iplparams {
uint8_t huge_page_size;
#define IPLPARAMS_HUGE_PG_SIZE_16G 0
uint8_t num_vlan_switches;
- __be64 reserved2;
+ __be32 reserved2;
+ __be32 enlarge_io; /* >= 0x5a */
+ uint8_t core_config;
+#define IPLPARAMS_CORE_NORMAL 0x00
+#define IPLPARAMS_CORE_FUSE 0x01
};
/* Idata index 4: Platform Dump Descriptor */
@@ -461,6 +476,17 @@ struct msvpd_pmover_bsr_synchro {
/* Idata index 4: UE Address Array */
+/* Idata index 5: Hostboot reserved memory address range */
+#define MSVPD_IDATA_HB_RESERVED_MEM 5
+struct msvpd_hb_reserved_mem {
+ __be32 node_instance;
+ __be64 start_addr;
+ __be64 end_addr;
+ __be32 label_size;
+ uint8_t label[64];
+ __be64 reserved;
+};
+
/* Child index 0: MS area child structure */
#define MSVPD_CHILD_MS_AREAS 0
diff --git a/hdata/test/p8-840-spira.dt b/hdata/test/p8-840-spira.dt
index f538d22..e34b190 100644
--- a/hdata/test/p8-840-spira.dt
+++ b/hdata/test/p8-840-spira.dt
@@ -18,6 +18,7 @@ CORE[4]: PIR=-402653184 RES=-402653184 OK (8 threads)
CORE[5]: HW_PROC_ID=11 PROC_CHIP_ID=1 EC=0x21 OK
CORE[5]: PIR=-268435456 RES=-268435456 OK (8 threads)
Cache: I=32 D=64/512/8192/0
+IPLPARAMS: Legacy platform family: ibm,firenze (sys_type=0x30110000)
IPLPARAMS: 1 serial ports in array
IPLPARAMS: Serial 0 rsrc: 2a00 loc: U78C9.001.WZS0CWX-P1-C1-T1
MS VPD: Total MB of RAM: 0x8000
diff --git a/hdata/test/p81-811.spira.dt b/hdata/test/p81-811.spira.dt
index 2286915..9ed10c9 100644
--- a/hdata/test/p81-811.spira.dt
+++ b/hdata/test/p81-811.spira.dt
@@ -59,6 +59,7 @@ CORE[18]: PIR=-402128896 RES=-402128896 OK (8 threads)
CORE[19]: HW_PROC_ID=23 PROC_CHIP_ID=3 EC=0x21 OK
CORE[19]: PIR=-267911168 RES=-267911168 OK (8 threads)
Cache: I=32 D=64/512/8192/0
+IPLPARAMS: Legacy platform family: ibm,firenze (sys_type=0x30110000)
IPLPARAMS: 1 serial ports in array
IPLPARAMS: Serial 0 rsrc: 2a00 loc: U78CB.001.WZS00AL-P1-C1-T1
MS VPD: Total MB of RAM: 0x20000