All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: "mingo@elte.hu" <mingo@elte.hu>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"chris@frostnet.net" <chris@frostnet.net>,
	"debian00@aliceadsl.fr" <debian00@aliceadsl.fr>,
	"hpa@zytor.com" <hpa@zytor.com>,
	"jonathan.protzenko@gmail.com" <jonathan.protzenko@gmail.com>,
	"mans@mansr.com" <mans@mansr.com>,
	"psastudio@mail.ru" <psastudio@mail.ru>,
	"rjw@sisk.pl" <rjw@sisk.pl>,
	"stephan.eicher@web.de" <stephan.eicher@web.de>,
	"sxxe@gmx.de" <sxxe@gmx.de>,
	"thomas@archlinux.org" <thomas@archlinux.org>,
	"venki@google.com" <venki@google.com>,
	"wonghow@gmail.com" <wonghow@gmail.com>,
	"stable@kernel.org" <stable@kernel.org>,
	tglx <tglx@linutronix.de>
Subject: Re: [patch 1/3] sched: init rt_avg stat whenever rq comes online
Date: Thu, 19 Aug 2010 10:53:26 +0200	[thread overview]
Message-ID: <1282208006.1926.4517.camel@laptop> (raw)
In-Reply-To: <1282177213.7801.17.camel@sbsiddha-MOBL3.sc.intel.com>

On Wed, 2010-08-18 at 17:20 -0700, Suresh Siddha wrote:
> On Tue, 2010-08-17 at 01:51 -0700, Peter Zijlstra wrote:
> > On Mon, 2010-08-16 at 21:25 +0200, Peter Zijlstra wrote:
> > > You can use something like:
> > > 
> > > suspend:
> > >  __get_cpu_var(cyc2ns_suspend) = sched_clock();
> > > 
> > > resume:
> > >  for_each_possible_cpu(i)
> > >    per_cpu(cyc2ns_offset, i) += per_cpu(cyc2ns_suspend);
> > > 
> > > or something like that to keep sched_clock() stable, which is exactly
> > > what most (all?) its users expect when we report the TSC is usable. 
> > 
> > That's actually broken, you only want a single offset, otherwise we
> > de-sync the TSC, which is bad.
> > 
> > So simply store the sched_clock() value at suspend time on the single
> > CPU that is still running, then on resume make sure sched_clock()
> > continues there by adding that stamp to all CPU offsets.
> 
> 
> Peter, That might not be enough. I should add that in my Lenovo T410
> (having 2 core wsm cpu), TSC's are somehow set to a strange big value
> (for example 0xfffffffebc22f02e) after resume from S3. It looks like
> bios might be writing TSC during resume. I am not sure if this is the
> case for other OEM laptops aswell. I am checking.

ARGH, please kill all SMM support for future CPUs ;-)

Are the TSCs still sync'ed though? If so, we can still compute a offset
and continue with things, albeit it requires something like:

  local_irq_save(flags);
  __get_cpu_var(cyc2ns_offset) = 0;
  offset = cyc2ns_suspend - sched_clock();
  local_irq_restore(flags);

  for_each_possible_cpu(i)
    per_cpu(cyc2ns_offset, i) = offset;

Which would take the funny offset into account and make it resume at
where we left off.

If they got out of sync, we need to flip sched_clock_stable and work on
getting the sched_clock.c code to be monotonic over such a flip.

> So such large values of TSC (leading to a very big difference between
> rq->clock and rq->age_stamp) wont be correctly handled by
> scale_rt_power() either.

Still, we need to fix the clock, not fudge the users.

  reply	other threads:[~2010-08-19  8:54 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-13 19:45 [patch 0/3] sched: fixes related to scaling down cpu power with RT tasks Suresh Siddha
2010-08-13 19:45 ` [patch 1/3] sched: init rt_avg stat whenever rq comes online Suresh Siddha
2010-08-16  7:47   ` Peter Zijlstra
2010-08-16 17:36     ` Suresh Siddha
2010-08-16 19:25       ` Peter Zijlstra
2010-08-17  8:51         ` Peter Zijlstra
2010-08-19  0:20           ` Suresh Siddha
2010-08-19  8:53             ` Peter Zijlstra [this message]
2010-08-20  0:03               ` Suresh Siddha
2010-08-20  8:54                 ` Peter Zijlstra
2010-08-20 14:16                 ` [tip:sched/urgent] x86, tsc, sched: Recompute cyc2ns_offset's during resume from sleep states tip-bot for Suresh Siddha
2010-08-13 19:45 ` [patch 2/3] sched: fix minimum power returned by update_cpu_power() Suresh Siddha
2010-08-16  7:50   ` Peter Zijlstra
2010-08-16 17:37     ` Suresh Siddha
2010-08-13 19:45 ` [patch 3/3] sched: move sched_avg_update() to update_cpu_load() Suresh Siddha
2010-08-16  8:00   ` Peter Zijlstra
2010-08-16 17:46     ` Suresh Siddha
2010-08-16 19:31       ` Peter Zijlstra
2010-08-20  0:51         ` Suresh Siddha
2010-08-20  9:25           ` Peter Zijlstra
2010-08-20 13:47           ` Peter Zijlstra
2010-08-23 20:42             ` Suresh Siddha
2010-09-09 19:45               ` [tip:sched/urgent] sched: Move " tip-bot for Suresh Siddha

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=1282208006.1926.4517.camel@laptop \
    --to=peterz@infradead.org \
    --cc=chris@frostnet.net \
    --cc=debian00@aliceadsl.fr \
    --cc=hpa@zytor.com \
    --cc=jonathan.protzenko@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mans@mansr.com \
    --cc=mingo@elte.hu \
    --cc=psastudio@mail.ru \
    --cc=rjw@sisk.pl \
    --cc=stable@kernel.org \
    --cc=stephan.eicher@web.de \
    --cc=suresh.b.siddha@intel.com \
    --cc=sxxe@gmx.de \
    --cc=tglx@linutronix.de \
    --cc=thomas@archlinux.org \
    --cc=venki@google.com \
    --cc=wonghow@gmail.com \
    /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.