[PATCH 2/4] powerpc/xive: fix hcall H_INT_RESET to support long busy delays
Cédric Le Goater
clg at kaod.org
Fri May 4 21:27:01 AEST 2018
On 05/04/2018 12:41 PM, Michael Ellerman wrote:
> Cédric Le Goater <clg at kaod.org> writes:
>
>> diff --git a/arch/powerpc/sysdev/xive/spapr.c b/arch/powerpc/sysdev/xive/spapr.c
>> index 091f1d0d0af1..7113f5d87952 100644
>> --- a/arch/powerpc/sysdev/xive/spapr.c
>> +++ b/arch/powerpc/sysdev/xive/spapr.c
>> @@ -108,6 +109,52 @@ static void xive_irq_bitmap_free(int irq)
>> }
>> }
>>
>> +
>> +/* Based on the similar routines in RTAS */
>> +static unsigned int plpar_busy_delay_time(long rc)
>> +{
>> + unsigned int ms = 0;
>> +
>> + if (H_IS_LONG_BUSY(rc)) {
>> + ms = get_longbusy_msecs(rc);
>> + } else if (rc == H_BUSY) {
>> + ms = 10; /* seems appropriate for XIVE hcalls */
>> + }
>> +
>> + return ms;
>> +}
>> +
>> +static unsigned int plpar_busy_delay(int rc)
>> +{
>> + unsigned int ms;
>> +
>> + might_sleep();
>> + ms = plpar_busy_delay_time(rc);
>> + if (ms && need_resched())
>> + msleep(ms);
>
> This is called from kexec shutdown isn't it?
>
> In which case I don't think msleep() is a great idea.>> We could be crashing for example.
yes.
> An mdelay would be safer I think?
I agree but we would mdelay be OK ? The hcall can take up to 160ms.
Thanks,
C.
More information about the Linuxppc-dev
mailing list