[Skiboot] [PATCH v2 08/17] xive/p9: obsolete OPAL_XIVE_IRQ_*_VIA_FW flags

Cédric Le Goater clg at kaod.org
Tue Sep 24 16:26:30 AEST 2019


On 24/09/2019 07:43, Oliver O'Halloran wrote:
> On Thu, 2019-09-12 at 19:22 +0200, Cédric Le Goater wrote:
>> These were needed to workaround HW bugs in PHB4 LSIs of POWER9 DD1.0
>> processors.
>>
>> Signed-off-by: Cédric Le Goater <clg at kaod.org>
>> ---
>>  include/opal-api.h |  4 ++--
>>  hw/xive.c          | 12 ------------
>>  2 files changed, 2 insertions(+), 14 deletions(-)
>>
>> diff --git a/include/opal-api.h b/include/opal-api.h
>> index ad913bfa382d..e7156f36a756 100644
>> --- a/include/opal-api.h
>> +++ b/include/opal-api.h
>> @@ -1149,8 +1149,8 @@ enum {
>>  	OPAL_XIVE_IRQ_STORE_EOI		= 0x00000002,
>>  	OPAL_XIVE_IRQ_LSI		= 0x00000004,
>>  	OPAL_XIVE_IRQ_SHIFT_BUG		= 0x00000008,
>> -	OPAL_XIVE_IRQ_MASK_VIA_FW	= 0x00000010,
>> -	OPAL_XIVE_IRQ_EOI_VIA_FW	= 0x00000020,
>> +	OPAL_XIVE_IRQ_MASK_VIA_FW	= 0x00000010, /* DD1.0 workaround */
>> +	OPAL_XIVE_IRQ_EOI_VIA_FW	= 0x00000020, /* DD1.0 workaround */
> 
> This should probably specify that it's a P9 DD1.0 workaround.
> 
> Does the kernel still respect these flags? 

The Linux code still handles this DD1.0 case. Which adds quite a lot
of noise and does not help understanding. 

> If so we might want to keep
> them supported in case we need them as a workaround for future bugs.

Yes. I hope not. 

We can keep the flags but there is no reason to keep the code in 
the OPAL XIVE P9 driver.

C.


>>  };
>>  
>>  /* Flags for OPAL_XIVE_GET/SET_QUEUE_INFO */
>> diff --git a/hw/xive.c b/hw/xive.c
>> index 2f184dcee5d2..6f7d36ad4ca0 100644
>> --- a/hw/xive.c
>> +++ b/hw/xive.c
>> @@ -3630,18 +3630,6 @@ static int64_t opal_xive_get_irq_info(uint32_t girq,
>>  	if (out_flags)
>>  		*out_flags = xive_convert_irq_flags(s->flags);
>>  
>> -	/*
>> -	 * If the orig source has a set_xive callback, then set
>> -	 * OPAL_XIVE_IRQ_MASK_VIA_FW as masking/unmasking requires
>> -	 * source specific workarounds. Same with EOI.
>> -	 */
>> -	if (out_flags && s->orig_ops) {
>> -		if (s->orig_ops->set_xive)
>> -			*out_flags |= OPAL_XIVE_IRQ_MASK_VIA_FW;
>> -		if (s->orig_ops->eoi)
>> -			*out_flags |= OPAL_XIVE_IRQ_EOI_VIA_FW;
>> -	}
>> -
>>  	idx = girq - s->esb_base;
>>  
>>  	if (out_esb_shift)
> 



More information about the Skiboot mailing list