[Skiboot] [PATCH v2 03/12] hdat: Add new fields to IPL params structure
Stewart Smith
stewart at linux.vnet.ibm.com
Tue Dec 20 15:26:15 AEDT 2016
Vasant Hegde <hegdevasant at linux.vnet.ibm.com> writes:
> 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.
>
> Signed-off-by: Oliver O'Halloran <oohall at gmail.com>
> [Folded Oliver's changes to original patch - Vasant]
> Signed-off-by: Vasant Hegde <hegdevasant at linux.vnet.ibm.com>
> ---
> hdata/spira.c | 63 +++++++++++++++++++++++++++++++++++++----------------------
> hdata/spira.h | 17 +++++++++++++++-
> 2 files changed, 56 insertions(+), 24 deletions(-)
>
> diff --git a/hdata/spira.c b/hdata/spira.c
> index 59ffc1d..fa08824 100644
> --- a/hdata/spira.c
> +++ b/hdata/spira.c
> @@ -752,8 +752,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);
>
> @@ -772,29 +770,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) {
> + /*
> + * FIXME: We haven't defined P9 system model. Hence append
> + * "ibm,firenze" so that we can boot the system. Remove
> + * this once we define P9 system model.
> + */
> + dt_add_property_strings(dt_root, "compatible",
> + "ibm,powernv", "ibm,firenze",
> + p->sys_family_str,
> p->sys_type_str);
Is this for elsewhere in skiboot so we can boot?
Perhaps it's time to add a p9 platform?
> + } 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);
> }
> - 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 b4facb5..dee9902 100644
> --- a/hdata/spira.h
> +++ b/hdata/spira.h
> @@ -325,6 +325,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 */
> @@ -353,7 +364,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 0x01
> +#define IPLPARAMS_CORE_FUSE 0x01
v10.3g says normal is 0x00
--
Stewart Smith
OPAL Architect, IBM.
More information about the Skiboot
mailing list