Kevin, On Fri, Jul 27, 2007 at 09:47:47PM +0200, Kevin D. Kissell wrote: > The argument to smtc_timer_broadcast() is supposed to be a VPE number. > Somewhere between the earliest prototypes and the current linux-mips.org > tree, it got hacked up to ignore the argument and broadcast to all TCs. > There are still configurations out there, some of which I've worked on > pretty recently, where the platform code can be configured to either > do global or VPE-local broadcasting of timer interrupts. While we have > determined that it's pretty important to ensure that, in an SMTC configuration, > having the Count registers of all VPEs in sync is important to avoid timing > glitches, skewing the starting Compare values should help even out the load > and reduce contention for the locks on the scheduler queues. Getting rid > of the argument to smtc_timer_broadcast() makes that impossible. I'd > rather see the platform timer code iterate through the configured VPEs > and keep the argument. > > The most recent smtc_timer_broadcast() I've worked on looks like: > > void smtc_timer_broadcast(int vpe) > { > int cpu; > int myTC = cpu_data[smp_processor_id()].tc_id; > > smtc_cpu_stats[smp_processor_id()].timerints++; > > for_each_online_cpu(cpu) { > if (cpu_data[cpu].vpe_id == vpe && > cpu_data[cpu].tc_id != myTC) > smtc_send_ipi(cpu, SMTC_CLOCK_TICK, 0); > } > } I don't mind adding the deleted bits back. Take the fact that this happened as a life demonstration for unused stuff of any kind being under is under permanent threat of deletion by some maintainer, kernel janitor or whoever else in Linux ;-) Ralf