time.c (6fae9c25134baffbeeb20031479e7ff6f6d8eec0) time.c (f611f2da99420abc973c32cdbddbf5c365d0a20c)
1/*
2 * Xen time implementation.
3 *
4 * This is implemented in terms of a clocksource driver which uses
5 * the hypervisor clock as a nanosecond timebase, and a clockevent
6 * driver which uses the hypervisor's timer mechanism.
7 *
8 * Jeremy Fitzhardinge <jeremy@xensource.com>, XenSource Inc, 2007

--- 383 unchanged lines hidden (view full) ---

392
393 printk(KERN_INFO "installing Xen timer for CPU %d\n", cpu);
394
395 name = kasprintf(GFP_KERNEL, "timer%d", cpu);
396 if (!name)
397 name = "<timer kasprintf failed>";
398
399 irq = bind_virq_to_irqhandler(VIRQ_TIMER, cpu, xen_timer_interrupt,
1/*
2 * Xen time implementation.
3 *
4 * This is implemented in terms of a clocksource driver which uses
5 * the hypervisor clock as a nanosecond timebase, and a clockevent
6 * driver which uses the hypervisor's timer mechanism.
7 *
8 * Jeremy Fitzhardinge <jeremy@xensource.com>, XenSource Inc, 2007

--- 383 unchanged lines hidden (view full) ---

392
393 printk(KERN_INFO "installing Xen timer for CPU %d\n", cpu);
394
395 name = kasprintf(GFP_KERNEL, "timer%d", cpu);
396 if (!name)
397 name = "<timer kasprintf failed>";
398
399 irq = bind_virq_to_irqhandler(VIRQ_TIMER, cpu, xen_timer_interrupt,
400 IRQF_DISABLED|IRQF_PERCPU|IRQF_NOBALANCING|IRQF_TIMER,
400 IRQF_DISABLED|IRQF_PERCPU|
401 IRQF_NOBALANCING|IRQF_TIMER|
402 IRQF_FORCE_RESUME,
401 name, NULL);
402
403 evt = &per_cpu(xen_clock_events, cpu);
404 memcpy(evt, xen_clockevent, sizeof(*evt));
405
406 evt->cpumask = cpumask_of(cpu);
407 evt->irq = irq;
408}

--- 104 unchanged lines hidden ---
403 name, NULL);
404
405 evt = &per_cpu(xen_clock_events, cpu);
406 memcpy(evt, xen_clockevent, sizeof(*evt));
407
408 evt->cpumask = cpumask_of(cpu);
409 evt->irq = irq;
410}

--- 104 unchanged lines hidden ---