From: "Fabio Comolli" <fabio.comolli@gmail.com>
To: "Thomas Gleixner" <tglx@linutronix.de>
Cc: "Ingo Molnar" <mingo@elte.hu>, "Rafael J. Wysocki" <rjw@sisk.pl>,
"Peter Zijlstra" <peterz@infradead.org>,
"Steven Rostedt" <srostedt@redhat.com>,
dsaxena@plexity.net, LKML <linux-kernel@vger.kernel.org>,
"Dave Kleikamp" <shaggy@linux.vnet.ibm.com>,
toralf.foerster@gmx.de
Subject: Re: TSC not updating after resume: Bug or Feature?
Date: Mon, 22 Dec 2008 21:39:32 +0100 [thread overview]
Message-ID: <b637ec0b0812221239p169967aemf14b2e591779f5cd@mail.gmail.com> (raw)
In-Reply-To: <alpine.LFD.2.00.0812222056190.3723@localhost.localdomain>
Hi Thomas.
On Mon, Dec 22, 2008 at 9:36 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
> On Mon, 22 Dec 2008, Thomas Gleixner wrote:
>> On Mon, 22 Dec 2008, Ingo Molnar wrote:
>> > * Thomas Gleixner <tglx@linutronix.de> wrote:
>> >
>> > > > By the way, I don't know if it matters but the problema happened with
>> > > > in-kernel hibernation and also in out-of-tree TuxOnIce hibernation.
>> > > > Maybe this can help debugging the issue, I don't know.
>> > >
>> > > Hmm, does not ring a bell here. Can you please apply the patch below to
>> > > mainline and retest ?
>> >
>> > ... and he should send a dmesg after a suspend cycle, right?
>>
>> Yes :)
>>
>> I digged more in the bugzillas. Toralf added some debug to
>> __update_sched_clock():
>>
>> - max_clock = wrap_max(scd->clock, scd->tick_gtod + TICK_NSEC);
>> + max_clock = scd->tick_gtod + TICK_NSEC;
>> + if (scd->clock > max_clock)
>> + printk(KERN_INFO "%d %d\n", scd->clock, max_clock);
>>
>> The interesting output is:
>>
>> Dec 14 21:55:55 n22 Back to C!
>> Dec 14 21:55:55 n22 Extended CMOS year: 2000
>> Dec 14 21:55:55 n22 Force enabled HPET at resume
>> Dec 14 21:55:55 n22 212611283 77
>>
>> The 77 is totaly bogus and it's likely not just a truncation of the
>> 64bit value because (scd->clock > max_clock) evaluates to true. This
>> output is _AFTER_ timekeeping resume because the HPET force enable
>> message comes from timekeeping resume.
>
> Seems I'm talking to myself, but I think I finally decoded the
> mystery:
>
> resume()
> cpufreq_resume()
> tsc:time_cpufreq_notifier()
> set_cyc2ns_scale()
> sched_clock_idle_sleep_event()
> sched_clock_tick()
> ktime_get()
> hpet_read()
>
> This happens _BEFORE_ timekeeping has resumed, so hpet_read() returns
> nonsense and the timekeeping code uses the stale pre suspend
> xtime/clocksource reference values to calculate the time. So the gtod
> reference in sched_clock can result in total crap depending on the
> time when the suspend happened.
>
> Shaggys patch clamps sched_clock to the stale scd->clock value which
> might explain the further wreckage.
>
> The above sequence happens only for CPUs with a CPU frequency coupled
> TSC, so on newer machines with CPU frequency invariant TSC this does
> not happen.
>
> /me stomps off to find a box to confirm that.
>
Ok, just for reference here is my
fcomolli@hawking:~> cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 13
model name : Intel(R) Pentium(R) M processor 1.73GHz
stepping : 8
cpu MHz : 800.000
cache size : 2048 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe nx up bts est tm2
bogomips : 1596.95
clflush size : 64
power management:
Regards,
Fabio
> Thanks,
>
> tglx
>
next prev parent reply other threads:[~2008-12-22 20:39 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-17 17:27 Deepak Saxena
2008-12-17 17:50 ` Steven Rostedt
2008-12-18 9:24 ` Peter Zijlstra
2008-12-18 12:39 ` Ingo Molnar
2008-12-18 22:19 ` Rafael J. Wysocki
2008-12-18 22:25 ` Dave Kleikamp
2008-12-18 23:39 ` Rafael J. Wysocki
2008-12-21 16:26 ` Thomas Gleixner
2008-12-21 19:43 ` Thomas Gleixner
2008-12-21 22:43 ` Fabio Comolli
2008-12-22 14:48 ` Thomas Gleixner
2008-12-22 15:00 ` Ingo Molnar
2008-12-22 18:47 ` Thomas Gleixner
2008-12-22 20:36 ` Thomas Gleixner
2008-12-22 20:39 ` Fabio Comolli [this message]
2008-12-22 21:13 ` Thomas Gleixner
2008-12-22 21:35 ` Fabio Comolli
2008-12-22 22:05 ` Thomas Gleixner
2008-12-22 22:12 ` Fabio Comolli
2008-12-22 22:16 ` Thomas Gleixner
2008-12-22 22:29 ` Fabio Comolli
2008-12-22 22:33 ` Thomas Gleixner
2008-12-23 0:28 ` Rafael J. Wysocki
2008-12-23 19:42 ` Fabio Comolli
2008-12-24 14:09 ` Pavel Machek
2008-12-26 8:47 ` Peter Zijlstra
2008-12-22 20:19 ` Fabio Comolli
2008-12-21 20:54 ` Thomas Gleixner
2008-12-23 0:47 ` Rafael J. Wysocki
2008-12-23 7:03 ` Thomas Gleixner
2008-12-23 14:15 ` Rafael J. Wysocki
2008-12-21 21:19 ` Thomas Gleixner
2008-12-23 22:03 ` Deepak Saxena
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=b637ec0b0812221239p169967aemf14b2e591779f5cd@mail.gmail.com \
--to=fabio.comolli@gmail.com \
--cc=dsaxena@plexity.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=rjw@sisk.pl \
--cc=shaggy@linux.vnet.ibm.com \
--cc=srostedt@redhat.com \
--cc=tglx@linutronix.de \
--cc=toralf.foerster@gmx.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®