On 12/11/2019 13:44, Michael Ellerman wrote:
> Cédric Le Goater <c...@kaod.org> writes:
>> When the machine crash handler is invoked, all interrupts are masked
>> but interrupts which have not been started yet do not have an ESB page
>> mapped in the Linux address space. This crashes the 'crash kexec'
>> sequence on sPAPR guests.
> 
> This sounds like it needs a Fixes/stable tag?

yes.

> I used these:
> 
>   Fixes: 243e25112d06 ("powerpc/xive: Native exploitation of the XIVE 
> interrupt controller")
>   Cc: sta...@vger.kernel.org # v4.12+
>
> Please tell me if you think that's wrong.

Looks OK to me. 

Thanks,

C. 


 
> cheers
> 
> 
>> diff --git a/arch/powerpc/sysdev/xive/common.c 
>> b/arch/powerpc/sysdev/xive/common.c
>> index df832b09e3e9..f5fadbd2533a 100644
>> --- a/arch/powerpc/sysdev/xive/common.c
>> +++ b/arch/powerpc/sysdev/xive/common.c
>> @@ -1035,6 +1035,15 @@ static int xive_irq_alloc_data(unsigned int virq, 
>> irq_hw_number_t hw)
>>      xd->target = XIVE_INVALID_TARGET;
>>      irq_set_handler_data(virq, xd);
>>  
>> +    /*
>> +     * Turn OFF by default the interrupt being mapped. A side
>> +     * effect of this check is the mapping the ESB page of the
>> +     * interrupt in the Linux address space. This prevents page
>> +     * fault issues in the crash handler which masks all
>> +     * interrupts.
>> +     */
>> +    xive_esb_read(xd, XIVE_ESB_SET_PQ_01);
>> +
>>      return 0;
>>  }
>>  
>> -- 
>> 2.21.0

Reply via email to