![]() The spinlock clocks_lock can be held during ISR, hence it is not safe to hold that lock with disabling interrupts. It fixes following potential deadlock. ========================================================= [ INFO: possible irq lock inversion dependency detected ] 3.6.0-rc4+ #2 Not tainted --------------------------------------------------------- swapper/0/1 just changed the state of lock: (&(&host->lock)->rlock){-.....}, at: [<c027fb0d>] sdhci_irq+0x15/0x564 but this lock took another, HARDIRQ-unsafe lock in the past: (clocks_lock){+.+...} and interrupts could create inverse lock ordering between them. other info that might help us debug this: Possible interrupt unsafe locking scenario: CPU0 CPU1 ---- ---- lock(clocks_lock); local_irq_disable(); lock(&(&host->lock)->rlock); lock(clocks_lock); <Interrupt> lock(&(&host->lock)->rlock); *** DEADLOCK *** Signed-off-by: Tushar Behera <tushar.behera@linaro.org> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com> |
||
---|---|---|
.. | ||
include/plat | ||
adc.c | ||
clock-clksrc.c | ||
clock.c | ||
cpu.c | ||
dev-backlight.c | ||
dev-uart.c | ||
devs.c | ||
dma-ops.c | ||
dma.c | ||
init.c | ||
irq-vic-timer.c | ||
Kconfig | ||
Makefile | ||
platformdata.c | ||
pm-check.c | ||
pm-gpio.c | ||
pm.c | ||
pwm-clock.c | ||
s3c-dma-ops.c | ||
s5p-clock.c | ||
s5p-dev-mfc.c | ||
s5p-dev-uart.c | ||
s5p-irq-eint.c | ||
s5p-irq-gpioint.c | ||
s5p-irq-pm.c | ||
s5p-irq.c | ||
s5p-pm.c | ||
s5p-sleep.S | ||
s5p-time.c | ||
setup-mipiphy.c | ||
time.c | ||
wakeup-mask.c |