On 10/08/16 17:11, Matt Redfearn wrote: > Commit 7eb8c99db26c ("MIPS: Delete smp-gic.c") removed the file from the > Makefile and the option to build it from KConfig, but left the file > itself floating in the tree. > > Remove the unused source file. > > Signed-off-by: Matt Redfearn <matt.redfearn@xxxxxxxxxx> > --- > arch/mips/kernel/smp-gic.c | 66 ---------------------------------------------- > 1 file changed, 66 deletions(-) > delete mode 100644 arch/mips/kernel/smp-gic.c > > diff --git a/arch/mips/kernel/smp-gic.c b/arch/mips/kernel/smp-gic.c > deleted file mode 100644 > index 9b63829cf929..000000000000 > --- a/arch/mips/kernel/smp-gic.c > +++ /dev/null > @@ -1,66 +0,0 @@ > -/* > - * Copyright (C) 2013 Imagination Technologies > - * Author: Paul Burton <paul.burton@xxxxxxxxxx> > - * > - * Based on smp-cmp.c: > - * Copyright (C) 2007 MIPS Technologies, Inc. > - * Author: Chris Dearman (chris@xxxxxxxx) > - * > - * This program is free software; you can redistribute it and/or modify it > - * under the terms of the GNU General Public License as published by the > - * Free Software Foundation; either version 2 of the License, or (at your > - * option) any later version. > - */ > - > -#include <linux/irqchip/mips-gic.h> > -#include <linux/printk.h> > - > -#include <asm/mips-cpc.h> > -#include <asm/smp-ops.h> > - > -void gic_send_ipi_single(int cpu, unsigned int action) > -{ > - unsigned long flags; > - unsigned int intr; > - unsigned int core = cpu_data[cpu].core; > - > - pr_debug("CPU%d: %s cpu %d action %u status %08x\n", > - smp_processor_id(), __func__, cpu, action, read_c0_status()); > - > - local_irq_save(flags); > - > - switch (action) { > - case SMP_CALL_FUNCTION: > - intr = plat_ipi_call_int_xlate(cpu); > - break; > - > - case SMP_RESCHEDULE_YOURSELF: > - intr = plat_ipi_resched_int_xlate(cpu); > - break; > - > - default: > - BUG(); > - } > - > - gic_send_ipi(intr); > - > - if (mips_cpc_present() && (core != current_cpu_data.core)) { > - while (!cpumask_test_cpu(cpu, &cpu_coherent_mask)) { > - mips_cm_lock_other(core, 0); > - mips_cpc_lock_other(core); > - write_cpc_co_cmd(CPC_Cx_CMD_PWRUP); > - mips_cpc_unlock_other(); > - mips_cm_unlock_other(); > - } > - } Hi Matt, This patch itself makes sense, but it does bring to light that the IPI IRQ domain stuff will have broken cpuidle. When a core goes into one of the deeper power saving states (becoming clock gated or power gated) it won't automatically wake back up upon interrupts, which is why the bit of code above exists to bring it back out of the power saving state via the CPC. Thanks, Paul > - > - local_irq_restore(flags); > -} > - > -void gic_send_ipi_mask(const struct cpumask *mask, unsigned int action) > -{ > - unsigned int i; > - > - for_each_cpu(i, mask) > - gic_send_ipi_single(i, action); > -} >