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
|