From: mkl@pengutronix.de (Marc Kleine-Budde)
To: linux-arm-kernel@lists.infradead.org
Subject: RFC: [PATCH] clocksource: tcb: fix min_delta calculation
Date: Tue, 23 Apr 2013 15:50:37 +0200 [thread overview]
Message-ID: <517691AD.304@pengutronix.de> (raw)
In-Reply-To: <20130423134448.GG27475@S2101-09.ap.freescale.net>
On 04/23/2013 03:44 PM, Shawn Guo wrote:
> On Tue, Apr 23, 2013 at 03:11:33PM +0200, Marc Kleine-Budde wrote:
>> On 04/23/2013 03:08 PM, Marc Kleine-Budde wrote:
>>> The commit
>>>
>>> 77cc982 clocksource: use clockevents_config_and_register() where possible
>>>
>>> switches from manually calculating min_delta_ns (and others) and
>>> clockevents_register_device() to automatic calculation via
>>> clockevents_config_and_register(). During this conversation the "+ 1" in
>>>
>>> min_delta_ns = clockevent_delta2ns(1, &clkevt.clkevt) + 1;
>>>
>>> was lost. This leads to problems with schedule_delayed_work() with a delay of
>>> "1". Resulting in the work not scheduled in time.
>>>
>>> This patch fixes the problem by increasing the min_delta to "2" ticks.
>>>
>>> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
>>
>> The problem appears on at91sam9263. This patch successfully fixes the
>> problem and applies to current linus/master (post v3.9-rc8).
>
> Thanks for the fixing, Marc.
>
> Acked-by: Shawn Guo <shawn.guo@linaro.org>
Thanks. The downside of my RFC Patch is, that min_delta_ns is increased
from 30518 to 61035:
good: setup_clkevents: shift=32 mult=140737 min=30518 max=1999976422
bad: setup_clkevents: shift=32 mult=140737 min=30517 max=1999976422
RFC: setup_clkevents: shift=32 mult=140737 min=61035 max=1999976422
To keep the original min_delta_ns value of 30518, a rather hackish
option would be this:
diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c
index 8a61872..30e0a68 100644
--- a/drivers/clocksource/tcb_clksrc.c
+++ b/drivers/clocksource/tcb_clksrc.c
@@ -198,6 +198,7 @@ static void __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx)
clkevt.clkevt.cpumask = cpumask_of(0);
clockevents_config_and_register(&clkevt.clkevt, 32768, 1, 0xffff);
+ clkevt.clkevt.min_delta_ns = clockevent_delta2ns(1, &clkevt.clkevt) + 1;
setup_irq(irq, &tc_irqaction);
}
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 263 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130423/111540f3/attachment-0001.sig>
WARNING: multiple messages have this Message-ID (diff)
From: Marc Kleine-Budde <mkl@pengutronix.de>
To: Shawn Guo <shawn.guo@linaro.org>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Andres Salomon <dilinger@queued.net>,
arm@kernel.org, John Stultz <john.stultz@linaro.org>,
Nicolas Ferre <nicolas.ferre@atmel.com>,
"kernel@pengutronix.de" <kernel@pengutronix.de>
Subject: Re: RFC: [PATCH] clocksource: tcb: fix min_delta calculation
Date: Tue, 23 Apr 2013 15:50:37 +0200 [thread overview]
Message-ID: <517691AD.304@pengutronix.de> (raw)
In-Reply-To: <20130423134448.GG27475@S2101-09.ap.freescale.net>
[-- Attachment #1: Type: text/plain, Size: 2313 bytes --]
On 04/23/2013 03:44 PM, Shawn Guo wrote:
> On Tue, Apr 23, 2013 at 03:11:33PM +0200, Marc Kleine-Budde wrote:
>> On 04/23/2013 03:08 PM, Marc Kleine-Budde wrote:
>>> The commit
>>>
>>> 77cc982 clocksource: use clockevents_config_and_register() where possible
>>>
>>> switches from manually calculating min_delta_ns (and others) and
>>> clockevents_register_device() to automatic calculation via
>>> clockevents_config_and_register(). During this conversation the "+ 1" in
>>>
>>> min_delta_ns = clockevent_delta2ns(1, &clkevt.clkevt) + 1;
>>>
>>> was lost. This leads to problems with schedule_delayed_work() with a delay of
>>> "1". Resulting in the work not scheduled in time.
>>>
>>> This patch fixes the problem by increasing the min_delta to "2" ticks.
>>>
>>> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
>>
>> The problem appears on at91sam9263. This patch successfully fixes the
>> problem and applies to current linus/master (post v3.9-rc8).
>
> Thanks for the fixing, Marc.
>
> Acked-by: Shawn Guo <shawn.guo@linaro.org>
Thanks. The downside of my RFC Patch is, that min_delta_ns is increased
from 30518 to 61035:
good: setup_clkevents: shift=32 mult=140737 min=30518 max=1999976422
bad: setup_clkevents: shift=32 mult=140737 min=30517 max=1999976422
RFC: setup_clkevents: shift=32 mult=140737 min=61035 max=1999976422
To keep the original min_delta_ns value of 30518, a rather hackish
option would be this:
diff --git a/drivers/clocksource/tcb_clksrc.c b/drivers/clocksource/tcb_clksrc.c
index 8a61872..30e0a68 100644
--- a/drivers/clocksource/tcb_clksrc.c
+++ b/drivers/clocksource/tcb_clksrc.c
@@ -198,6 +198,7 @@ static void __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx)
clkevt.clkevt.cpumask = cpumask_of(0);
clockevents_config_and_register(&clkevt.clkevt, 32768, 1, 0xffff);
+ clkevt.clkevt.min_delta_ns = clockevent_delta2ns(1, &clkevt.clkevt) + 1;
setup_irq(irq, &tc_irqaction);
}
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]
next prev parent reply other threads:[~2013-04-23 13:50 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-12 11:50 [PATCH v2 0/3] Use helper clockevents_config_and_register() Shawn Guo
2013-01-12 11:50 ` Shawn Guo
2013-01-12 11:50 ` [PATCH v2 1/3] clockevents: export clockevents_config_and_register for module use Shawn Guo
2013-01-12 11:50 ` Shawn Guo
2013-01-12 11:50 ` [PATCH v2 2/3] ARM: use clockevents_config_and_register() where possible Shawn Guo
2013-01-12 11:50 ` Shawn Guo
2013-01-12 21:25 ` Jason Cooper
2013-01-12 21:25 ` Jason Cooper
2013-01-12 11:50 ` [PATCH v2 3/3] clocksource: " Shawn Guo
2013-01-12 11:50 ` Shawn Guo
2013-04-23 13:07 ` BUG: " Marc Kleine-Budde
2013-04-23 13:07 ` Marc Kleine-Budde
2013-04-23 13:08 ` RFC: [PATCH] clocksource: tcb: fix min_delta calculation Marc Kleine-Budde
2013-04-23 13:08 ` Marc Kleine-Budde
2013-04-23 13:11 ` Marc Kleine-Budde
2013-04-23 13:11 ` Marc Kleine-Budde
2013-04-23 13:44 ` Shawn Guo
2013-04-23 13:44 ` Shawn Guo
2013-04-23 13:50 ` Marc Kleine-Budde [this message]
2013-04-23 13:50 ` Marc Kleine-Budde
2013-04-25 13:36 ` Marc Kleine-Budde
2013-04-25 13:36 ` Marc Kleine-Budde
2013-04-25 14:18 ` Thomas Gleixner
2013-04-25 14:18 ` Thomas Gleixner
2013-04-25 14:21 ` Thomas Gleixner
2013-04-25 14:21 ` Thomas Gleixner
2013-04-25 14:53 ` Marc Kleine-Budde
2013-04-25 14:53 ` Marc Kleine-Budde
2013-06-20 15:00 ` Marc Kleine-Budde
2013-06-20 15:00 ` Marc Kleine-Budde
2013-09-09 8:18 ` Ronald Wahl
2013-09-09 13:56 ` Marc Kleine-Budde
2013-01-12 21:14 ` [PATCH v2 0/3] Use helper clockevents_config_and_register() Arnd Bergmann
2013-01-12 21:14 ` Arnd Bergmann
2013-01-14 11:23 ` Thomas Gleixner
2013-01-14 11:23 ` Thomas Gleixner
2013-01-14 18:16 ` Olof Johansson
2013-01-14 18:16 ` Olof Johansson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=517691AD.304@pengutronix.de \
--to=mkl@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.