aboutsummaryrefslogtreecommitdiff
path: root/hdata
diff options
context:
space:
mode:
authorVasant Hegde <hegdevasant@linux.vnet.ibm.com>2016-03-22 11:18:54 +0530
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-04-01 13:11:25 +1100
commit198aa67cc87a106923c7de435951d0e4a89d327e (patch)
tree3cd57a46bde159fb431cc2a5251e343efc54472a /hdata
parentedb2725bc82717aa32b77373f71030c42b7ac136 (diff)
downloadskiboot-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.h65
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