static const struct clock_event_device *xen_clockevent =
        &xen_timerop_clockevent;
-static DEFINE_PER_CPU(struct clock_event_device, xen_clock_events);
+static DEFINE_PER_CPU(struct clock_event_device, xen_clock_events) = { .irq = -1 };
 
 static irqreturn_t xen_timer_interrupt(int irq, void *dev_id)
 {
        struct clock_event_device *evt;
        int irq;
 
+       evt = &per_cpu(xen_clock_events, cpu);
+       WARN(evt->irq >= 0, "IRQ%d for CPU%d is already allocated\n", evt->irq, cpu);
+
        printk(KERN_INFO "installing Xen timer for CPU %d\n", cpu);
 
        name = kasprintf(GFP_KERNEL, "timer%d", cpu);
                                      IRQF_FORCE_RESUME,
                                      name, NULL);
 
-       evt = &per_cpu(xen_clock_events, cpu);
        memcpy(evt, xen_clockevent, sizeof(*evt));
 
        evt->cpumask = cpumask_of(cpu);
        BUG_ON(cpu == 0);
        evt = &per_cpu(xen_clock_events, cpu);
        unbind_from_irqhandler(evt->irq, NULL);
+       evt->irq = -1;
 }
 
 void xen_setup_cpu_clockevents(void)