[Skiboot] [PATCH v2 03/12] hdat: Add new fields to IPL params structure

Vasant Hegde hegdevasant at linux.vnet.ibm.com
Wed Jan 4 21:15:16 AEDT 2017


On 12/20/2016 09:56 AM, Stewart Smith wrote:
> 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?

I kept it here so that once we define p9 platform we can remove this fix.

>
> Perhaps it's time to add a p9 platform?

If you prefer then we can just copy firenze code and create base p9 platform. 
Then we can redefine based on platform (like ZZ, whitherspoon etc). Let me know.


>
>> +	} else {

.../...

>>   /* 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

Yep. Typo :-( Will fix. Thanks!

-Vasant



More information about the Skiboot mailing list