On 2 June 2014 23:49, Viresh Kumar viresh.kumar@linaro.org wrote:
diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c index ad362c2..c9bef22 100644 --- a/kernel/time/clockevents.c +++ b/kernel/time/clockevents.c @@ -105,7 +105,12 @@ void clockevents_set_mode(struct clock_event_device *dev, enum clock_event_mode mode) { if (dev->mode != mode) {
dev->set_mode(mode, dev);
/* WARN_ON? Currently available modes shouldn't fail */
if (dev->set_dev_mode)
WARN_ON_ONCE(dev->set_dev_mode(mode, dev));
else
dev->set_mode(mode, dev);
I was looking to do this modification here to add some debugging prints as well. Please see if it makes sense:
diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c index c9bef22..5b85ac8 100644 --- a/kernel/time/clockevents.c +++ b/kernel/time/clockevents.c @@ -105,11 +105,14 @@ void clockevents_set_mode(struct clock_event_device *dev, enum clock_event_mode mode) { if (dev->mode != mode) { - /* WARN_ON? Currently available modes shouldn't fail */ - if (dev->set_dev_mode) - WARN_ON_ONCE(dev->set_dev_mode(mode, dev)); - else + if (dev->set_dev_mode) { + int ret = dev->set_dev_mode(mode, dev); + + /* Currently available modes shouldn't fail */ + WARN_ONCE(ret, "Requested mode: %d, error: %d\n", mode, ret); + } else { dev->set_mode(mode, dev); + }
dev->mode = mode;