clocksource: !keventd_up() && schedule_work() == oops

From: Jiri Slaby
Date: Wed Sep 09 2009 - 04:00:59 EST


Hi,

I started to see oopses on boot in qemu machine because keventd is
created in kernel_init/do_basic_setup, but schedule_work is done earlier
in kernel_init/smp_init[1] when the tsc is unstable during this early phase.

It looks like "clocksource: Resolve cpu hotplug dead lock with TSC
unstable" is the culprit.

Creating its own either singlethread or "multithread" workqueue won't
work either (we do not have singlethread_cpu and cpu_populated_map).
Checking !keventd_up() in the clocksource code looks to me like a hack.
Any ideas, please?

[1]
kernel_init/smp_init/cpu_up/native_cpu_up/check_tsc_sync_source/mark_tsc_unstable/clocksource_mark_unstable/__clocksource_unstable
--
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/