diff options
author | Vasant Hegde <hegdevasant@linux.vnet.ibm.com> | 2016-03-22 11:18:54 +0530 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2016-04-01 13:11:25 +1100 |
commit | 198aa67cc87a106923c7de435951d0e4a89d327e (patch) | |
tree | 3cd57a46bde159fb431cc2a5251e343efc54472a /hdata | |
parent | edb2725bc82717aa32b77373f71030c42b7ac136 (diff) | |
download | skiboot-198aa67cc87a106923c7de435951d0e4a89d327e.zip skiboot-198aa67cc87a106923c7de435951d0e4a89d327e.tar.gz skiboot-198aa67cc87a106923c7de435951d0e4a89d327e.tar.bz2 |
hdata: Define SPIRA-H and SPIRA-S structure
In latest firwmare the SPIRA is split into two portions, a hypervisor
initialized and managed portion and a service processor (FSP) built portion,
to accommodate secure boot. The hypervisor portion will be referred to as
the SPIRA-H and the FSP portion referred to as the SPIRA-S.
The legacy N-tuples that are no longer being used have been removed. N-tuples
that are initialized by the hypervisor at compile/build time but not modified
by the FSP reside in the SPIRA-H. All other N-tuples reside in the SPIRA-S that
is built dynamically by the FSP at the beginning of that HDAT memory pointed to
by the “Host Data Area” N-tuple in SPIRA-H.
This patch defines new SPIRA-H and SPIRA-S structures.
No functionality change.
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hdata')
-rw-r--r-- | hdata/spira.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/hdata/spira.h b/hdata/spira.h index 7190ba4..a912fe4 100644 --- a/hdata/spira.h +++ b/hdata/spira.h @@ -86,6 +86,71 @@ struct spira { extern struct spira spira; +/* SPIRA-H signature */ +#define SPIRAH_HDIF_SIG "SPIRAH" + +/* First version of the secure boot compliant design. */ +#define SPIRAH_VERSION 0x50 + +/* N-tuples in SPIRAH */ +#define SPIRAH_NTUPLES_COUNT 0x6 + +struct spirah_ntuples { + struct HDIF_array_hdr array_hdr; /* 0x030 */ + struct spira_ntuple hs_data_area; /* 0x040 */ + struct spira_ntuple proc_init; /* 0x060 */ + struct spira_ntuple cpu_ctrl; /* 0x080 */ + struct spira_ntuple mdump_src; /* 0x0a0 */ + struct spira_ntuple mdump_dst; /* 0x0c0 */ + struct spira_ntuple mdump_res; /* 0x0e0 */ +}; + +struct spirah { + struct HDIF_common_hdr hdr; + struct HDIF_idata_ptr ntuples_ptr; + __be64 pad; + struct spirah_ntuples ntuples; + u8 reserved[0x100]; +} __packed __align(0x100); + +/* SPIRA-S signature */ +#define SPIRAS_HDIF_SIG "SPIRAS" + +/* First version on 810 release */ +#define SPIRAS_VERSION 0x40 + +/* N-tuples in SPIRAS */ +#define SPIRAS_NTUPLES_COUNT 0x10 + +struct spiras_ntuples { + struct HDIF_array_hdr array_hdr; /* 0x030 */ + struct spira_ntuple sp_subsys; /* 0x040 */ + struct spira_ntuple ipl_parms; /* 0x060 */ + struct spira_ntuple nt_enclosure_vpd; /* 0x080 */ + struct spira_ntuple slca; /* 0x0a0 */ + struct spira_ntuple backplane_vpd; /* 0x0c0 */ + struct spira_ntuple system_vpd; /* 0x0e0 */ + struct spira_ntuple clock_vpd; /* 0x100 */ + struct spira_ntuple anchor_vpd; /* 0x120 */ + struct spira_ntuple op_panel_vpd; /* 0x140 */ + struct spira_ntuple misc_cec_fru_vpd; /* 0x160 */ + struct spira_ntuple ms_vpd; /* 0x180 */ + struct spira_ntuple cec_iohub_fru; /* 0x1a0 */ + struct spira_ntuple pcia; /* 0x1c0 */ + struct spira_ntuple proc_chip; /* 0x1e0 */ + struct spira_ntuple hs_data; /* 0x200 */ + struct spira_ntuple ipmi_sensor; /* 0x220 */ +} __packed __align(0x100); + +struct spiras { + struct HDIF_common_hdr hdr; + struct HDIF_idata_ptr ntuples_ptr; + __be64 pad; + struct spiras_ntuples ntuples; + u8 reserved[0x1c0]; +} __packed __align(0x100); + + /* This macro can be used to check the validity of a pointer returned * by one of the HDIF API functions. It returns true if the pointer * appears valid. If it's not valid and not NULL, it will print some |