Messages in this thread Patch in this message | | | Date | Wed, 1 Jul 2015 16:57:43 +0200 (CEST) | From | Thomas Gleixner <> | Subject | Re: clockevents_shutdown vs pending interrupt |
| |
Andriy,
On Wed, 1 Jul 2015, Andriy Gapon wrote: > I've caught a couple of boot logs with different stack traces from unsuccessful > boot attempts and one from a successful attempt with exactly the same VM > configuration. > The logs are here: > https://people.freebsd.org/~avg/linux-boot-hang/
I have to admit, that I'm thoroughly confused about that broadcast check in the install path. Can you apply the debug patch below and provide the output?
Thanks,
tglx --- diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index d39f32cdd1b5..f1f921a49da9 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c @@ -100,6 +100,7 @@ void tick_install_broadcast_device(struct clock_event_device *dev) if (cur) cur->event_handler = clockevents_handle_noop; tick_broadcast_device.evtdev = dev; + pr_err("Install broadcast device %p %s\n", dev, dev->name); if (!cpumask_empty(tick_broadcast_mask)) tick_broadcast_start_periodic(dev); /* @@ -301,6 +302,13 @@ static void tick_handle_periodic_broadcast(struct clock_event_device *dev) bool bc_local; raw_spin_lock(&tick_broadcast_lock); + /* Handle spurious interrupt */ + if (clockevent_state_shutdown(dev)) { + pr_err("Spurious broadcast event %p %s\n", dev, dev->name); + raw_spin_unlock(&tick_broadcast_lock); + return; + } + bc_local = tick_do_periodic_broadcast(); if (clockevent_state_oneshot(dev)) { diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c index 76446cb5dfe1..ecd439b2de7e 100644 --- a/kernel/time/tick-common.c +++ b/kernel/time/tick-common.c @@ -321,6 +321,7 @@ void tick_check_new_device(struct clock_event_device *newdev) if (!try_module_get(newdev->owner)) return; + pr_err("Install per cpu tick device %p %s\n", newdev, newdev->name); /* * Replace the eventually existing device by the new * device. If the current device is the broadcast device, do
| |