On Thu, 28 Apr 2011, john stultz wrote: > On Thu, 2011-04-28 at 23:04 +0200, Thomas Gleixner wrote: > > /me suspects hrtimer changes to be the real culprit. > > I'm not seeing anything on right off, but it does smell like > e06383db9ec591696a06654257474b85bac1f8cb would be where such an issue > would crop up. > > Bruno, could you try checking out e06383db9ec, confirming it still > occurs (and then maybe seeing if it goes away at e06383db9ec^1)? > > I'll keep digging in the meantime. I found the bug already. The problem is that sched_init() calls init_rt_bandwidth() which calls hrtimer_init() _BEFORE_ hrtimers_init() is called. That was unnoticed so far as the CLOCK id to hrtimer base conversion was hardcoded. Now we use a table which is set up at hrtimers_init(), so the bandwith hrtimer ends up on CLOCK_REALTIME because the table is in the bss. The patch below fixes this, by providing the table statically rather than runtime initialized. Though that whole ordering wants to be revisited. Thanks, tglx --- linux-2.6.orig/kernel/hrtimer.c +++ linux-2.6/kernel/hrtimer.c @@ -81,7 +81,11 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base, } }; -static int hrtimer_clock_to_base_table[MAX_CLOCKS]; +static int hrtimer_clock_to_base_table[MAX_CLOCKS] = { + [CLOCK_REALTIME] = HRTIMER_BASE_REALTIME, + [CLOCK_MONOTONIC] = HRTIMER_BASE_MONOTONIC, + [CLOCK_BOOTTIME] = HRTIMER_BASE_BOOTTIME, +}; static inline int hrtimer_clockid_to_base(clockid_t clock_id) { @@ -1722,10 +1726,6 @@ static struct notifier_block __cpuinitda void __init hrtimers_init(void) { - hrtimer_clock_to_base_table[CLOCK_REALTIME] = HRTIMER_BASE_REALTIME; - hrtimer_clock_to_base_table[CLOCK_MONOTONIC] = HRTIMER_BASE_MONOTONIC; - hrtimer_clock_to_base_table[CLOCK_BOOTTIME] = HRTIMER_BASE_BOOTTIME; - hrtimer_cpu_notify(&hrtimers_nb, (unsigned long)CPU_UP_PREPARE, (void *)(long)smp_processor_id()); register_cpu_notifier(&hrtimers_nb); -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>