Thread (19 messages) 19 messages, 4 authors, 2016-03-17

Re: [PATCH 4.4-rt2] fix arm-at91-pit-remove-irq-handler-when-clock-is-unused.patch

From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: 2016-01-18 20:24:33
Also in: linux-arm-kernel, lkml

On 01/18/2016 07:42 PM, Alexandre Belloni wrote:
On 18/01/2016 at 18:25:22 +0100, Sebastian Andrzej Siewior wrote :
quoted
* Alexandre Belloni | 2016-01-17 03:23:14 [+0100]:
quoted
index 80d74c4adcbe..43b50634d640 100644
--- a/drivers/clocksource/timer-atmel-pit.c
+++ b/drivers/clocksource/timer-atmel-pit.c
@@ -96,11 +96,44 @@ static int pit_clkevt_shutdown(struct clock_event_device *dev)
	/* disable irq, leaving the clocksource active */
	pit_write(data->base, AT91_PIT_MR, (data->cycle - 1) | AT91_PIT_PITEN);
-	free_irq(atmel_pit_irq, data);
+	if (!clockevent_state_detached(dev))
+		free_irq(data->irq, data);
I did it in the meantime without clockevent_state_detached(). From what
it looks, it first sets the state and then invokes
pit_clkevt_shutdown(). Any particular reason for this?
Yeah, I forgot to mention that. Freeing the irq unconditionally
results in:

My understanding is that clockevents_exchange_device() changes the state
from detached to shutdown and so at that point the IRQ has never been
requested.
I see. So we get shutdown called twice while set_periodic was only
called once. In that case I would suggest to have internal bookkeeping
instead of relying on current core's behavior when it is time free the
irq.
Sebastian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help