Re: BUG - "scheduling while atomic" on a irq handler (s3c-mci)

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

 



On Thu, 2012-05-10 at 15:17 +0200, Christophe Huriaux wrote:

> 
> From: Christophe Huriaux <c.huriaux@xxxxxxxxx>
> Subject: [PATCH] Fix scheduling while atomic bug in pio_tasklet
> Signed-off-by: Christophe Huriaux <c.huriaux@xxxxxxxxx>
> ---
>  drivers/mmc/host/s3cmci.c |    8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c
> index 720f993..9978ad6 100644
> --- a/drivers/mmc/host/s3cmci.c
> +++ b/drivers/mmc/host/s3cmci.c
> @@ -329,7 +329,11 @@ static void s3cmci_enable_irq(struct s3cmci_host
> *host, bool more)
>                 if (enable)
>                         enable_irq(host->irq);
>                 else
> +#ifdef CONFIG_PREEMPT_RT_BASE
> +                       disable_irq_nosync(host->irq);
> +#else
>                         disable_irq(host->irq);
> +#endif
>         }
> 
>         local_irq_restore(flags);
> @@ -350,7 +354,11 @@ static void s3cmci_disable_irq(struct s3cmci_host
> *host, bool transfer)
> 
>         if (transfer && host->irq_state) {
>                 host->irq_state = false;
> +#ifdef CONFIG_PREEMPT_RT_BASE
> +               disable_irq_nosync(host->irq);
> +#else
>                 disable_irq(host->irq);
> +#endif
>         }
> 
>         local_irq_restore(flags);

What happens if you instead convert the local_irq_save/restore() to
local_irq_save_nort/restore_nort()?

Does that work too?

-- Steve


--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux