Re: [PATCH] clockevents/drivers/cs5535: improve resilience to spurious interrupts

From: David Kozub
Date: Fri Oct 20 2017 - 03:49:12 EST


On Fri, 20 Oct 2017, Daniel Lezcano wrote:

On 20/10/2017 00:25, Thomas Gleixner wrote:
On Fri, 20 Oct 2017, Daniel Lezcano wrote:

On 19/10/2017 22:57, David Kozub wrote:
This solves a BUG on ALIX 2c3 where mfgpt_tick is called before
clockevents_config_and_register returns. This caused mfgpt_tick to call a
null function pointer.

Thanks to Daniel Lezcano and Thomas Gleixner for helping me analyze this
and suggesting a solution.

Suggested-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Signed-off-by: David Kozub <zub@xxxxxxxxxxxxxxxxxx>
---

Thank for sending this fix.

Can you check if the commit 8f9327cbb is the one introducing the
regression ? So we can add the proper tags and propagate the fix to stable.

No it's not.

- if (cs5535_tick_mode == CLOCK_EVT_MODE_SHUTDOWN)
+ if (clockevent_state_shutdown(&cs5535_clockevent))

This particular problem of the missing detached state check has been there
forever and went unnoticed for whatever reason.

The detached condition was artificially caught by the initialized variable:

-static unsigned int cs5535_tick_mode = CLOCK_EVT_MODE_SHUTDOWN;

The patch 8f9327cbb removes the variable, so very likely this is where
the problem appeared.

I will try to test that. But I won't have access to the device till Sunday evening. I've had big trouble trying to run kernels > 4.1-rc5 on the device and if I'm looking correctly the commit was introduced in 4.3-rc1. But I'll try to figure something out.

Best regards,
David