Re: [PATCH] MIPS: BMIPS: Do not mask IPIs during suspend

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/27/2017 05:15 PM, justinpopo6@xxxxxxxxx wrote:
> From: Justin Chen <justinpopo6@xxxxxxxxx>
> 
> Commit a3e6c1eff548 ("MIPS: IRQ: Fix disabled_irq on CPU IRQs") fixes
> an issue where disable_irq did not actually disable the irq. The
> bug caused our IPIs to not be disabled, which actually is the correct
> behavior.
> 
> With the addition of Commit a3e6c1eff548 ("MIPS: IRQ: Fix disabled_irq
> on CPU IRQs"), the IPIs were getting disabled going into suspend,
> thus schedule_ipi() was not being called. This caused deadlocks where
> schedulable task were not being scheduled and other cpus were waiting
> for them to do something.
> 
> Add the IRQF_NO_SUSPEND flag so an irq_disable will not be called
> on the IPIs during suspend.
> 
> Signed-off-by: Justin Chen <justinpopo6@xxxxxxxxx>
> Fixes: a3e6c1eff548 ("MIPS: IRQ: Fix disabled_irq on CPU IRQs")

This looks good to me, not sure if this is the recommended way to solve
this bug, but this definitively works.

> ---
>  arch/mips/kernel/smp-bmips.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/mips/kernel/smp-bmips.c b/arch/mips/kernel/smp-bmips.c
> index 1b070a76fcdd..3b900a04d724 100644
> --- a/arch/mips/kernel/smp-bmips.c
> +++ b/arch/mips/kernel/smp-bmips.c
> @@ -168,10 +168,10 @@ static void bmips_prepare_cpus(unsigned int max_cpus)
>  		return;
>  	}
>  
> -	if (request_irq(IPI0_IRQ, bmips_ipi_interrupt, IRQF_PERCPU,
> +	if (request_irq(IPI0_IRQ, bmips_ipi_interrupt, IRQF_PERCPU | IRQF_NO_SUSPEND,
>  			"smp_ipi0", NULL))
>  		panic("Can't request IPI0 interrupt");
> -	if (request_irq(IPI1_IRQ, bmips_ipi_interrupt, IRQF_PERCPU,
> +	if (request_irq(IPI1_IRQ, bmips_ipi_interrupt, IRQF_PERCPU | IRQF_NO_SUSPEND,
>  			"smp_ipi1", NULL))
>  		panic("Can't request IPI1 interrupt");
>  }
> 


-- 
Florian


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux