[Skiboot] [RFC PATCH] Remove POWER9 DD1 support

Cédric Le Goater clg at kaod.org
Tue Jan 15 19:47:51 AEDT 2019


On 1/15/19 8:07 AM, Nicholas Piggin wrote:
> Cédric Le Goater's on January 9, 2019 3:28 am:
>> Hello Nicholas,
>>
>> On 1/7/19 3:09 PM, Nicholas Piggin wrote:
>>> There's a couple of cases I'm not sure if they're still needed (marked
>>> with XXX).
>>>
>>> Hostboot and Linux have removed DD1 support so there's not much point
>>> keeping it around.
>>
>> Some comments on XIVE below. 
> 
> Thanks!
> 
>>> diff --git a/hw/xive.c b/hw/xive.c
>>> index 515f154d7..810538725 100644
>>> --- a/hw/xive.c
>>> +++ b/hw/xive.c
>>> @@ -487,8 +487,7 @@ struct xive {
>>>  	void		*q_ovf;
>>>  };
>>>  
>>> -#define XIVE_CAN_STORE_EOI(x) \
>>> -	(XIVE_STORE_EOI_ENABLED && ((x)->rev >= XIVE_REV_2))
>>> +#define XIVE_CAN_STORE_EOI(x) XIVE_STORE_EOI_ENABLED
>>
>> OK. Let's keep the macro. P10 should have Store EOI.
> 
> Sounds good.
> 
>>>  /* Global DT node */
>>>  static struct dt_node *xive_dt_node;
>>> @@ -1521,7 +1520,7 @@ static bool xive_set_vsd(struct xive *x, uint32_t tbl, uint32_t idx, uint64_t v)
>>>  		  SETFIELD(VST_TABLE_OFFSET, 0ull, idx));
>>>  	if (x->last_reg_error)
>>>  		return false;
>>> -	/* Hack to workaround DD1 issue with NVT in VC in DD1 */
>>> +	/* Hack to workaround DD1 issue with NVT in VC in DD1 XXX still needed? */
>>>  	if (tbl == VST_TSEL_VPDT)
>>>  		xive_regw(x, VC_VSD_TABLE_DATA, v | VSD_TSIZE);
>>
>> Yes. I will check. It has been a pain to model in QEMU.
> 
> Yes, you mean it is still needed? Comment can just be updated to remove
> DD1 reference.

the comment and the code :

	/* Hack to workaround DD1 issue with NVT in VC in DD1 */
 	if (tbl == VST_TSEL_VPDT)
  		xive_regw(x, VC_VSD_TABLE_DATA, v | VSD_TSIZE);

can be removed. 

What it does is to set the NVT table size to all ones. Which is the 
maximum size (2^43) if I am correct.

This is clearly a HW workaround.

Thanks,

C.

> 
>>>  	else
>>> @@ -1743,10 +1742,6 @@ static bool xive_config_init(struct xive *x)
>>
>>
>> There is a check on XIVE_REV_2 that we could clean up :
>>
>> 	if (x->rev >= XIVE_REV_2) {
>> 		val = SETFIELD(PC_TCTXT_INIT_AGE, val, 0x2);
>> 		val |= PC_TCTXT_CFG_LGS_EN;
>> 		/* Disable pressure relief as we hijack the field in the VPs */
>> 		val &= ~PC_TCTXT_CFG_STORE_ACK;
>> 	}
>>
>> I think.
> 
> I will do that.
> 
>>> @@ -2840,10 +2834,8 @@ static struct xive *init_one_xive(struct dt_node *np)
>>>  
>>>  	x->rev = XIVE_REV_UNKNOWN;
>>>  	if (chip->type == PROC_CHIP_P9_NIMBUS) {
>>> -		if ((chip->ec_level & 0xf0) == 0x10)
>>> -			x->rev = XIVE_REV_1;
>>> -		else if ((chip->ec_level & 0xf0) == 0x20)
>>> -			x->rev = XIVE_REV_2;
>>> +		assert((chip->ec_level & 0xf0) != 0x10);
>>> +		x->rev = XIVE_REV_2;
>>>  	} else if (chip->type == PROC_CHIP_P9_CUMULUS)
>>>  		x->rev = XIVE_REV_2;
>>
>> So all P9s are XIVE_REV_2 now ? 
> 
> Yes with dropping P9N DD1 it seems so.
> 
> Thanks,
> Nick
> 



More information about the Skiboot mailing list