Hi,

On Sat, Jan 05 2013, Kevin Liu wrote:
> Current code missed disabling interrupts before free irq which is shared.
>
> Notice below comments for function free_irq (kernel/irq/manage.c):
> On a shared IRQ the caller must ensure the interrupt is disabled
> on the card it drives before calling this function.
>
> Original code has below issue during suspend/resume when multiple SD hosts
> share the same IRQ:
> 1. Assume there are two hosts (host1 for emmc while host2 for sd) share
> the same mmc irq.
> 2. When system suspend, host2 will be suspended before host1.
> So the sequence is below:
>       step1: irq handler for host2 removed ->
>       step2: irq handler for host1 removed and irq disabled ->
>       ... system suspended ...
>       ... system resumed ...
>       step3: irq enabled and the irq handler for host1 restored ->
>       step4: irq handler for host2 restored
> 3. So there is the buggy time slot that the irq is enabled but the irq handler
> for host2 is removed. Then host2 interrupt can be triggered but can't be 
> handled
> at that moment.
>
> Signed-off-by: Jialing Fu <[email protected]>
> Signed-off-by: Kevin Liu <[email protected]>

Thanks, pushed to mmc-next for 3.9.

- Chris.
-- 
Chris Ball   <[email protected]>   <http://printf.net/>
One Laptop Per Child
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to