[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20090425.014850.93020801.anemo@mba.ocn.ne.jp>
Date: Sat, 25 Apr 2009 01:48:50 +0900 (JST)
From: Atsushi Nemoto <anemo@....ocn.ne.jp>
To: alessandro.zummo@...ertech.it
Cc: rtc-linux@...glegroups.com, david-b@...bell.net,
akpm@...ux-foundation.org, linux-kernel@...r.kernel.org,
hcegtvedt@...el.com, vapier@...too.org, rongkai.zhan@...driver.com,
balajirrao@...nmoko.org, broonie@...nsource.wolfsonmicro.com
Subject: Re: [rtc-linux] Re: [PATCH] rtc: Make rtc_update_irq callable with
irqs enabled
On Fri, 24 Apr 2009 13:13:34 +0200, Alessandro Zummo <alessandro.zummo@...ertech.it> wrote:
> > > use spin_lock() in the IRQ handler and spin_lock_irq/irq_save
> > > in the setup functions.
> >
> > I think you're describing how the *current* scheme is supposed
> > to work ... except that some IRQ handlers aren't calling the
> > rtc_update_irq() routine with IRQs blocked.
> >
> > Yes, that current scheme works ... modulo those buggy handlers.
>
> ok, but why it's necessary to disable the interrupts? Only because
> the specs says so or because there's a locking issue I'm missing?
Here is a possible example:
1. RTC alarm interrupt handler takes rtc->irq_lock by spin_lock()
2. A timer interrupt handler calls rtc_uie_timer() for UIE emulation
3. rtc_uie_timer() waits on rtc->irq_lock .... deadlock!
This sort of deadlock can happen if a spin lock was used by multple
interrupt handlers.
---
Atsushi Nemoto
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists