Well, I tested these on the NUMA-Q and they seem to work.
Basically (as discussed previously) they rename the stuff off
the global timer to global_timer_* and the stuff off the
local timer to local_timer_*. Then I tried to clean up the
cross-calling ifdef madness. There are various corner cases,
so it's possible I screwed something up, but I think it's OK.
Original calling graph looked like this, I'll update this for
each patch to show what happens. Feel free to flame me, everyone.
--------------------
Assuming we're SMP with a local apic timer all firing away:
timer_interrupt
do_timer_interrupt
{ack the interrupt}
do_timer_interrupt_hook
do_timer
jiffies_64++;
update_times
{update CMOS clock} (In the interrupt still ??!!)
apic_timer_interrupt
smp_apic_timer_interrupt
{ack the interrupt}
smp_local_timer_interrupt
x86_do_profile
update_process_times
--------------------
On UP with local apic timer:
timer_interrupt
do_timer_interrupt
{ack the interrupt}
do_timer_interrupt_hook
do_timer
jiffies_64++;
update_process_times
update_times
{update CMOS clock} (In the interrupt still ??!!)
apic_timer_interrupt
smp_apic_timer_interrupt
{ack the interrupt}
smp_local_timer_interrupt
x86_do_profile
--------------------
On a UP 386 with stale crusty breadcrumbs, and no local timer:
timer_interrupt
do_timer_interrupt
{ack the interrupt}
do_timer_interrupt_hook
do_timer
jiffies_64++;
update_process_times
update_times
x86_do_profile()
{update CMOS clock} (In the interrupt still ??!!)
--------------------
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Tue Jan 07 2003 - 22:00:30 EST