Hi James, On Mon, Jan 19, 2015 at 7:38 AM, James Hogan <james.hogan@xxxxxxxxxx> wrote: > Commit e9de688dac65 ("irqchip: mips-gic: Support local interrupts") > changed the GIC irqchip driver so that all local interrupts were routed > to the same CPU pin used for external interrupts. Unfortunately this > causes a regression when smp-cmp is used. The CPUs are started by the > bootloader and put in a timer based waiting poll loop, but when their > timer interrupts are rerouted to a different IRQ pin which is not > unmasked they never wake up. > > Since smp-cmp support is deprecated and everybody who was using it > should be switching to smp-cps which brings up the secondary CPUs > without bootloader assistance, I've gone for the simple fix which can be > easily removed once smp-cmp is removed, rather than a fully generic fix. > > In __gic_init() the local GIC_VPE_TIMER_MAP register is read to find the > boot-time routing of the local timer interrupt, and a chained handler is > added to that CPU pin as well as the normal one. > > Fixes: e9de688dac65 ("irqchip: mips-gic: Support local interrupts") > Signed-off-by: James Hogan <james.hogan@xxxxxxxxxx> > Cc: Andrew Bresticker <abrestic@xxxxxxxxxxxx> > Cc: Qais Yousef <qais.yousef@xxxxxxxxxx> > Cc: Paul Burton <paul.burton@xxxxxxxxxx> > Cc: Jason Cooper <jason@xxxxxxxxxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: linux-mips@xxxxxxxxxxxxxx Looks good to me. Reviewed-by: Andrew Bresticker <abrestic@xxxxxxxxxxxx>