From: Mason <slash.tmp@free.fr> To: Viresh Kumar <viresh.kumar@linaro.org> Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>, Daniel Lezcano <daniel.lezcano@linaro.org>, "Rafael J. Wysocki" <rjw@rjwysocki.net>, Mans Rullgard <mans@mansr.com>, Linux ARM <linux-arm-kernel@lists.infradead.org>, Linux PM <linux-pm@vger.kernel.org>, cpufreq <cpufreq@vger.kernel.org> Subject: Re: schedule_timeout sleeps too long after dividing CPU frequency Date: Thu, 14 May 2015 15:06:54 +0200 [thread overview] Message-ID: <55549DEE.6010202@free.fr> (raw) In-Reply-To: <20150514115456.GB23999@linux> On 14/05/2015 13:54, Viresh Kumar wrote: > Mason wrote: > >> I'm using a 27 MHz crystal as clocksource. This is independent >> of the CPU frequency. However, I'm using the ARM TWD as the >> system's clockevent source, and the TWD's clock is tied to >> the CPU clock (PERIPHCLK = CPUCLK / 2 on this SoC). > > The only (very straight forward) problem is that we aren't propagating > the freq update to clockevents core and you need to debug a bit there. I had the same thought, which is why I added the "NEW RATE" trace. > Also I wanted to see the source of your print message: > [ 19.650454] NEW RATE=9250000 > [ 19.653644] NEW RATE=9250000 > > What's this rate ? Old/new ? Because you are at least printing the old > rate here, and the function by default gets the new rate. I added a printk inside twd_update_frequency(). http://lxr.free-electrons.com/source/arch/arm/kernel/smp_twd.c?v=3.14#L107 I inserted printk("NEW RATE=%lu\n", twd_timer_rate); right before the call to clockevents_update_freq(). When I execute "echo 18500 > scaling_max_freq" the system is supposed to change the CPU frequency to 18.5 MHz (I might have a bug lurking there) and PERIPHCLK is 1/2 of that, i.e 9.25 MHz. twd_update_frequency() is called twice: once for each CPU. (The timers are local to each CPU.) >> I'm wondering if there's another standard clockevent source >> I could try (it would be great if it supported high-resolution >> timers). > > I hope you have some platform general-purpose-timers. Yes, I do, but I was trying to use as much generic code as possible to limit the chances of introducing bugs. I'll take a fresh look at the ARM GLOBAL TIMER, but last I checked, it didn't seem to handle frequency scaling. Regards.
WARNING: multiple messages have this Message-ID (diff)
From: slash.tmp@free.fr (Mason) To: linux-arm-kernel@lists.infradead.org Subject: schedule_timeout sleeps too long after dividing CPU frequency Date: Thu, 14 May 2015 15:06:54 +0200 [thread overview] Message-ID: <55549DEE.6010202@free.fr> (raw) In-Reply-To: <20150514115456.GB23999@linux> On 14/05/2015 13:54, Viresh Kumar wrote: > Mason wrote: > >> I'm using a 27 MHz crystal as clocksource. This is independent >> of the CPU frequency. However, I'm using the ARM TWD as the >> system's clockevent source, and the TWD's clock is tied to >> the CPU clock (PERIPHCLK = CPUCLK / 2 on this SoC). > > The only (very straight forward) problem is that we aren't propagating > the freq update to clockevents core and you need to debug a bit there. I had the same thought, which is why I added the "NEW RATE" trace. > Also I wanted to see the source of your print message: > [ 19.650454] NEW RATE=9250000 > [ 19.653644] NEW RATE=9250000 > > What's this rate ? Old/new ? Because you are at least printing the old > rate here, and the function by default gets the new rate. I added a printk inside twd_update_frequency(). http://lxr.free-electrons.com/source/arch/arm/kernel/smp_twd.c?v=3.14#L107 I inserted printk("NEW RATE=%lu\n", twd_timer_rate); right before the call to clockevents_update_freq(). When I execute "echo 18500 > scaling_max_freq" the system is supposed to change the CPU frequency to 18.5 MHz (I might have a bug lurking there) and PERIPHCLK is 1/2 of that, i.e 9.25 MHz. twd_update_frequency() is called twice: once for each CPU. (The timers are local to each CPU.) >> I'm wondering if there's another standard clockevent source >> I could try (it would be great if it supported high-resolution >> timers). > > I hope you have some platform general-purpose-timers. Yes, I do, but I was trying to use as much generic code as possible to limit the chances of introducing bugs. I'll take a fresh look at the ARM GLOBAL TIMER, but last I checked, it didn't seem to handle frequency scaling. Regards.
next prev parent reply other threads:[~2015-05-14 13:06 UTC|newest] Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-05-12 14:32 schedule_timeout sleeps too long after dividing CPU frequency Mason 2015-05-12 14:32 ` Mason 2015-05-12 14:46 ` Viresh Kumar 2015-05-12 14:46 ` Viresh Kumar 2015-05-12 15:14 ` Mason 2015-05-12 15:14 ` Mason 2015-05-12 15:50 ` Russell King - ARM Linux 2015-05-12 15:50 ` Russell King - ARM Linux 2015-05-12 16:14 ` Mason 2015-05-12 16:14 ` Mason 2015-05-13 16:51 ` Mason 2015-05-13 16:51 ` Mason 2015-05-14 2:13 ` Viresh Kumar 2015-05-14 2:13 ` Viresh Kumar 2015-05-14 11:22 ` Mason 2015-05-14 11:22 ` Mason 2015-05-14 11:54 ` Viresh Kumar 2015-05-14 11:54 ` Viresh Kumar 2015-05-14 13:06 ` Mason [this message] 2015-05-14 13:06 ` Mason 2015-05-14 13:53 ` Russell King - ARM Linux 2015-05-14 13:53 ` Russell King - ARM Linux 2015-05-14 14:51 ` Mason 2015-05-14 14:51 ` Mason 2015-05-14 13:59 ` Viresh Kumar 2015-05-14 13:59 ` Viresh Kumar 2015-05-14 13:59 ` Viresh Kumar 2015-05-14 14:38 ` Viresh Kumar 2015-05-14 14:38 ` Viresh Kumar 2015-05-14 14:42 ` Russell King - ARM Linux 2015-05-14 14:42 ` Russell King - ARM Linux 2015-05-15 9:29 ` Mason 2015-05-15 9:29 ` Mason 2015-05-15 9:51 ` Russell King - ARM Linux 2015-05-15 9:51 ` Russell King - ARM Linux 2015-05-15 10:01 ` Viresh Kumar 2015-05-15 10:01 ` Viresh Kumar 2015-05-15 10:36 ` Mason 2015-05-15 10:36 ` Mason 2015-05-15 11:58 ` Russell King - ARM Linux 2015-05-15 11:58 ` Russell King - ARM Linux 2015-05-15 12:45 ` Mason 2015-05-15 12:45 ` Mason 2015-05-15 13:15 ` Russell King - ARM Linux 2015-05-15 13:15 ` Russell King - ARM Linux 2015-05-15 13:58 ` Mason 2015-05-15 18:35 ` Mason 2015-05-18 11:24 ` Mason 2015-05-18 11:54 ` Russell King - ARM Linux 2015-05-20 16:21 ` Mason 2015-05-20 18:50 ` Arnd Bergmann 2015-05-20 19:34 ` Mason 2015-05-20 20:14 ` Russell King - ARM Linux 2015-05-20 20:41 ` Mason 2015-05-20 20:52 ` Arnd Bergmann 2015-05-20 21:56 ` Mason 2015-05-20 22:18 ` Arnd Bergmann 2015-05-21 12:35 ` Mason 2015-05-20 23:14 ` Russell King - ARM Linux 2015-05-21 9:56 ` Mason 2015-05-21 10:20 ` Russell King - ARM Linux 2015-05-14 14:48 ` Mason 2015-05-14 14:48 ` Mason 2015-05-15 4:16 ` Viresh Kumar 2015-05-15 4:16 ` Viresh Kumar 2015-05-15 5:07 ` Viresh Kumar 2015-05-15 5:07 ` Viresh Kumar 2015-05-15 9:00 ` Russell King - ARM Linux 2015-05-15 9:00 ` Russell King - ARM Linux 2015-05-15 9:21 ` Mason 2015-05-15 9:21 ` Mason 2015-05-15 10:11 ` Mason 2015-05-15 10:11 ` Mason 2015-05-12 15:23 ` Russell King - ARM Linux 2015-05-12 15:23 ` Russell King - ARM Linux 2015-05-12 16:03 ` Mason 2015-05-12 16:03 ` Mason
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=55549DEE.6010202@free.fr \ --to=slash.tmp@free.fr \ --cc=cpufreq@vger.kernel.org \ --cc=daniel.lezcano@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-pm@vger.kernel.org \ --cc=linux@arm.linux.org.uk \ --cc=mans@mansr.com \ --cc=rjw@rjwysocki.net \ --cc=viresh.kumar@linaro.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: linkBe 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.