There's a part of the Linux boot sequence I don't understand and an overview would be immensely helpful. Specifically the WARN_ON_ONCE(!irqs_disabled())
in sched_clock.c::sched_clock_tick()
is triggering and I'd like to trace back to where the interrupts are disabled.
Knowing the call tree is one thing (as seen below), but since there are a bunch of interrupts going on here, I'd appreciate a higher-level view. Thanks.
kernel/sched_clock.c:sched_clock_tick()
kernel/sched_clock.c:scheduler_tick()
kernel/timer.c: update_process_times()
kernel/time/tick-common.c: tick_periodic()
kernel/time/tick-common.c: tick_handle_periodic()
arch/x86/kernel/time_32.c:timer_interrupt()
kernel/irq/handle.c: handle_IRQ_event()
kernel/irq/chip.c: handle_level_irq()
kernel/irq/handle.c:do_IRQ
arch/x86/kernel/entry_32.S:common_interrupt()
include/linux/spinlock_api_up.h:_spin_unlock_irqrestore
kernel/irq/manage.c:setup_irq()
arch/x86/mach-default/setup.c:time_init_hook()
arch/x86/kernel/time_32.c:hpet_time_init()
init/main.c:start_kernel()