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 <jlfu@xxxxxxxxxxx> > Signed-off-by: Kevin Liu <kliu5@xxxxxxxxxxx> Thanks, pushed to mmc-next for 3.9. - Chris. -- Chris Ball <cjb@xxxxxxxxxx> <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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html