diff options
-rw-r--r-- | hdata/spira.c | 63 | ||||
-rw-r--r-- | hdata/spira.h | 28 | ||||
-rw-r--r-- | hdata/test/p8-840-spira.dt | 1 | ||||
-rw-r--r-- | hdata/test/p81-811.spira.dt | 1 |
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 |