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

From: Sudeep Holla
Date: Mon Jul 06 2015 - 12:27:40 EST




On 06/07/15 17:06, Thomas Gleixner wrote:
On Mon, 6 Jul 2015, Sudeep Holla wrote:
On 06/07/15 16:35, Thomas Gleixner wrote:
Well, we should figure out what happens while we are at it before
everything gets paged out again.


True. I just wanted to mention that this patch works for all the
practical purposes.

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.


Let me know if you want to test something to help debug this configuration.

Can you try the following delta patch?


I just tried the failing configuration. Yes I am able to boot now, however made below 2 observations:

1. As in the case of CONFIG_HZ_PERIODIC, none of the CPUs enters deeper
idle states losing local timers. So the behaviour is same in both
versions of periodic mode of timer operation.
2. After boot I am seeing the below warning:

------------[ cut here ]------------
WARNING: CPU: 1 PID: 0 at kernel/time/hrtimer.c:1247 __hrtimer_run_queues+0x148/0x150()
Modules linked in:
CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.2.0-rc1 #573
Hardware name: ARM Juno development board (r0) (DT)
Call trace:
[<ffffffc000089954>] dump_backtrace+0x0/0x124
[<ffffffc000089a88>] show_stack+0x10/0x1c
[<ffffffc0005d100c>] dump_stack+0x84/0xc8
[<ffffffc0000b3f34>] warn_slowpath_common+0x98/0xd0
[<ffffffc0000b402c>] warn_slowpath_null+0x14/0x20
[<ffffffc000101eec>] __hrtimer_run_queues+0x144/0x150
[<ffffffc0001028b4>] hrtimer_run_queues+0xb8/0xe8
[<ffffffc000101714>] update_process_times+0x28/0x6c
[<ffffffc00010d978>] tick_periodic+0x3c/0xb8
[<ffffffc00010da1c>] tick_handle_periodic+0x28/0x94
[<ffffffc0004d6154>] arch_timer_handler_phys+0x28/0x38
[<ffffffc0000f5964>] handle_percpu_devid_irq+0x74/0x9c
[<ffffffc0000f1668>] generic_handle_irq+0x30/0x4c
[<ffffffc0000f1984>] __handle_domain_irq+0x5c/0xac
[<ffffffc0000824a8>] gic_handle_irq+0x30/0x80
Exception stack(0xffffffc9768ffdb0 to 0xffffffc9768ffed0)
fda0: 8c1625f8 00000008 75da4800 ffffffc9
fdc0: 768ffef0 ffffffc9 004b3448 ffffffc0 00000000 00000000 768fc000 ffffffc9
fde0: 00000000 00000000 00000001 00000000 00000002 00000000 00000000 00000000
fe00: da98d76d 001e70a3 000005dc 00000000 00000003 00000000 00000001 00000000
fe20: 00000004 00000000 00000040 00000000 ffffffff ffffffff 00000000 00000000
fe40: 008a3dd8 ffffffc0 ffffffff ffffffff 001a65a0 ffffffc0 004e2488 00000000
fe60: f7ea3080 0000007f 8c1625f8 00000008 75da4800 ffffffc9 00000000 00000000
fe80: 008da840 ffffffc0 8b7dc4e5 00000008 768fff70 ffffffc9 00884e20 ffffffc0
fea0: 005e8770 ffffffc0 00896000 ffffffc0 768fc000 ffffffc9 768ffef0 ffffffc9
fec0: 004b3408 ffffffc0 768ffef0 ffffffc9
[<ffffffc0000855a4>] el1_irq+0x64/0xd8
[<ffffffc0004b354c>] cpuidle_enter+0x14/0x20
[<ffffffc0000e80f8>] call_cpuidle+0x24/0x50
[<ffffffc0000e8268>] cpu_startup_entry+0x144/0x224
[<ffffffc00009010c>] secondary_start_kernel+0x124/0x14c
---[ end trace 87fd96b94f030e33 ]---
--
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/