aboutsummaryrefslogtreecommitdiff
path: root/hdata
diff options
context:
space:
mode:
authorVasant Hegde <hegdevasant@linux.vnet.ibm.com>2017-01-12 14:54:00 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2017-01-15 12:32:23 +1100
commit2a71fe7410253fd99b1651e15f4402267f004ed0 (patch)
treecf7cba39bd8df1f80219dab6ac11436bde5f5c74 /hdata
parent293ca03683bfcd2c787b7e6f7c760238ba8eeae3 (diff)
downloadskiboot-2a71fe7410253fd99b1651e15f4402267f004ed0.zip
skiboot-2a71fe7410253fd99b1651e15f4402267f004ed0.tar.gz
skiboot-2a71fe7410253fd99b1651e15f4402267f004ed0.tar.bz2
hdat: Add new fields to IPL params structure
Add new fields to sys params structure and update sys family for p9. In P9 the compatible string is supplied by hostboot through the HDAT. This patch add support for using these strings to set the compatible property in the device tree rather than using the machine ID number scheme traditionally used in the HDAT. [removed ibm,firenze from, add some prints - Oliver] Signed-off-by: Oliver O'Halloran <oohall@gmail.com> [Folded Oliver's changes to original patch - Vasant] Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> [stewart@linux.vnet.ibm.com: fixup test case] Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hdata')
-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