[Skiboot] [PATCH v4 2/6] hdata: Define SPIRA-H and SPIRA-S structure

Vasant Hegde hegdevasant at linux.vnet.ibm.com
Tue Mar 22 16:48:54 AEDT 2016


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 at linux.vnet.ibm.com>
---
 hdata/spira.h | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)

diff --git a/hdata/spira.h b/hdata/spira.h
index 1047a0d..3c6261f 100644
--- a/hdata/spira.h
+++ b/hdata/spira.h
@@ -80,6 +80,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
-- 
2.5.0



More information about the Skiboot mailing list