Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5a25f7bb authored by James Hogan's avatar James Hogan
Browse files

metag: smp: don't set irq regs in do_IPI()



Since commit f6b30d32 (metag: kick: add missing irq_enter/exit to
kick_handler()), the main kick_handler() function deals with setting and
restoring the irq registers pointer. Therefore do_IPI() which is called
indirectly from kick_handler() doesn't need to do that itself any
longer. Therefore remove that code and do_IPI()'s pt_regs argument.

Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
Cc: linux-metag@vger.kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>
parent cdf8d758
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -517,11 +517,10 @@ static DEFINE_SPINLOCK(stop_lock);
 *
 *  Bit 0 - Inter-processor function call
 */
static int do_IPI(struct pt_regs *regs)
static int do_IPI(void)
{
	unsigned int cpu = smp_processor_id();
	struct ipi_data *ipi = &per_cpu(ipi_data, cpu);
	struct pt_regs *old_regs = set_irq_regs(regs);
	unsigned long msgs, nextmsg;
	int handled = 0;

@@ -557,8 +556,6 @@ static int do_IPI(struct pt_regs *regs)
		}
	}

	set_irq_regs(old_regs);

	return handled;
}

@@ -624,7 +621,7 @@ static void kick_raise_softirq(cpumask_t callmap, unsigned int irq)
static TBIRES ipi_handler(TBIRES State, int SigNum, int Triggers,
		   int Inst, PTBI pTBI, int *handled)
{
	*handled = do_IPI((struct pt_regs *)State.Sig.pCtx);
	*handled = do_IPI();

	return State;
}