Re: [patch 1/2] tick/broadcast: Prevent deep idle states if no broadcast device available

From: Sudeep Holla
Date: Mon Jul 06 2015 - 11:09:48 EST


Hi Thomas,

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@xxxxxxx>

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. On connecting debugger, I found all the cpus are in
shallow idle state(i.e. WFI in ARM) but with interrupts disabled.

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

So please feel free to add:
Tested-by: Sudeep Holla <sudeep.holla@xxxxxxx>

Regards,
Sudeep
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/