All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Sudeep Holla <sudeep.holla@arm.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Preeti U Murthy <preeti@linux.vnet.ibm.com>,
	Suzuki Poulose <Suzuki.Poulose@arm.com>,
	Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com>,
	Catalin Marinas <Catalin.Marinas@arm.com>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Subject: Re: [patch 1/2] tick/broadcast: Prevent deep idle states if no broadcast device available
Date: Mon, 6 Jul 2015 17:35:26 +0200 (CEST)	[thread overview]
Message-ID: <alpine.DEB.2.11.1507061712590.3916@nanos> (raw)
In-Reply-To: <559A9A2B.2030705@arm.com>

On Mon, 6 Jul 2015, Sudeep Holla wrote:
> On 05/07/15 21:53, Thomas Gleixner wrote:
> > If no broadcast device is installed and the cpu local timers stop in
> > deeper idle states, then there is currently nothing telling the idle
> > code that it should not go into deep idle states, so the timers stop
> > and nothing wakes up the cpus.
> > 
> > Make the broadcast_enter/exit() functions independent of the
> > configuration options and always check on enter:
> > 
> > - whether the cpu local device is affected by idle states
> > - whether a broadcast device is available
> > 
> > This covers all possible config combinations including
> > CONFIG_BROADCAST=n.
> > 
> > Reported-by: Sudeep Holla <sudeep.holla@arm.com>
> 
> Sorry for the delay, took a while testing few configuration:
> 
> +--------------+--------+--------------+--------------------+
> |   Configs    | PERIOD | HRTimers+NOHz|Cmdline(HR+NoHZ=off)|
> +--------------+--------+--------------+--------------------+
> | UP w/o H/W BC|   OK   |      OK      |        OK          |
> +--------------+--------+--------------+--------------------+
> | UP w/ H/W BC |   OK   |      OK      |        OK          |
> +--------------+--------+--------------+--------------------+
> |SMP w/o H/W BC|   OK*  |      OK      |        Not OK(**)  |
> +--------------+--------+--------------+--------------------+
> |SMP w/ H/W BC |   OK   |      OK      |        OK          |
> +--------------+--------+--------------+--------------------+
> 
> H/W BC - Hardware Broadcast Timer source
> 
> (*) None of the CPUs enters deeper idle states losing local timers
> 
> (**)SMP build without Hardware Broadcast Timer source(i.e. one cpu is
> the broadcast source) with HRTimers+NOHz configs but disabled in cmdline
> fails to boot. 

That's using the hrtimer broadcast mechanism, right?

> On connecting debugger, I found all the cpus are in
> shallow idle state(i.e. WFI in ARM) but with interrupts disabled.

And that means?
 
> I am not really keen on the failing configuration. We have never tested
> that before, though I found it working with CPUIdle disabled.

Well, we should figure out what happens while we are at it before
everything gets paged out again.

In the case of CONFIG_NOHZ=n and CONFIG_HIGHRES=n the broadcast
hrtimer is not compiled as it depends on CONFIG_TICK_ONESHOT, so it
works via the bc.evtdev == NULL check.

With either option enabled CONFIG_TICK_ONESHOT gets set, so the
broadcast timer gets installed but somehow does not work proper if
nohz and highres are disabled on the kernel command line.

Thanks,

	tglx



  reply	other threads:[~2015-07-06 15:35 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-05 20:53 [patch 0/2] tic/broadcast: Plug a few corner cases which cause malfunction Thomas Gleixner
2015-07-05 20:53 ` [patch 1/2] tick/broadcast: Prevent deep idle states if no broadcast device available Thomas Gleixner
2015-07-06 15:09   ` Sudeep Holla
2015-07-06 15:35     ` Thomas Gleixner [this message]
2015-07-06 15:44       ` Sudeep Holla
2015-07-06 16:06         ` Thomas Gleixner
2015-07-06 16:27           ` Sudeep Holla
2015-07-06 16:53             ` Thomas Gleixner
2015-07-06 17:57               ` Sudeep Holla
2015-07-06 19:56                 ` Thomas Gleixner
2015-07-07  7:31                   ` Thomas Gleixner
2015-07-07 11:25                     ` Sudeep Holla
2015-07-07 11:55                       ` Thomas Gleixner
2015-07-07 17:12                     ` [tip:timers/urgent] tick/broadcast: Prevent hrtimer recursion tip-bot for Thomas Gleixner
2015-07-07 17:12                     ` [tip:timers/urgent] tick/broadcast: Sanity check the shutdown of the local clock_event tip-bot for Thomas Gleixner
2015-07-07 17:13                     ` [tip:timers/urgent] tick/broadcast: Make idle check independent from mode and config tip-bot for Thomas Gleixner
2015-07-07 17:13                     ` [tip:timers/urgent] tick/broadcast: Prevent deep idle if no broadcast device available tip-bot for Thomas Gleixner
2015-07-07 17:13                     ` [tip:timers/urgent] tick/broadcast: Move the check for periodic mode inside state handling tip-bot for Thomas Gleixner
2015-07-07 17:14                     ` [tip:timers/urgent] tick/broadcast: Return busy if periodic mode and hrtimer broadcast tip-bot for Thomas Gleixner
2015-07-07 17:14                     ` [tip:timers/urgent] tick/broadcast: Return busy when IPI is pending tip-bot for Thomas Gleixner
2015-07-07 17:14                     ` [tip:timers/urgent] tick/broadcast: Check for hrtimer broadcast active early tip-bot for Thomas Gleixner
2015-07-05 20:53 ` [patch 2/2] tick/broadcast: Handle spurious interrupts gracefully Thomas Gleixner
2015-07-06 15:17   ` Sudeep Holla
2015-07-06 15:36     ` Thomas Gleixner
2015-07-07 17:15   ` [tip:timers/urgent] " tip-bot for Thomas Gleixner

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=alpine.DEB.2.11.1507061712590.3916@nanos \
    --to=tglx@linutronix.de \
    --cc=Catalin.Marinas@arm.com \
    --cc=Lorenzo.Pieralisi@arm.com \
    --cc=Suzuki.Poulose@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=preeti@linux.vnet.ibm.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=sudeep.holla@arm.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.