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 myTC = cpu_data[smp_processor_id()].tc_id;
if (cpu_data[cpu].vpe_id == vpe &&
cpu_data[cpu].tc_id != myTC)
smtc_send_ipi(cpu, SMTC_CLOCK_TICK, 0);
----- Original Message -----
Sent: Friday, July 27, 2007 8:38 PM
Subject: [MIPS] SMTC: smtc_timer_broadcast ignores its arguments, make it void.
> Author: Ralf Baechle <firstname.lastname@example.org> Fri Jul 27 18:39:19 2007 +0100
> Commit: c58f4590261e0ad5f7c3e189652a61186403c35c
> Gitweb: http://www.linux-mips.org/g/linux/c58f4590
> Branch: master
> Signed-off-by: Ralf Baechle <email@example.com>
> arch/mips/kernel/smtc.c | 2 +-
> arch/mips/mips-boards/generic/time.c | 4 ++--
> 2 files changed, 3 insertions(+), 3 deletions(-)