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

Commit b3cdbfa5 authored by Pavankumar Kondeti's avatar Pavankumar Kondeti Committed by Lina Iyer
Browse files

arm64: smp: Get ipi_raise tracepoint working again



'commit 741a8ec5bb22 ("ARM64: smp: Prevent cluster LPM modes when
pending IPIs on cluster CPUs")' broke ipi_raise trace point. Get
it working again by replacing __smp_cross_call() with smp_cross_call(),
which has a call to ipi_raise() tracepoint.

While at it, add missing update to pending_ipi flag for IPI_IRQ_WORK.

Change-Id: I4a847e833bf3b21abc58be88dfdc45da9bcfc676
Signed-off-by: default avatarPavankumar Kondeti <pkondeti@codeaurora.org>
parent 4b490f2e
Loading
Loading
Loading
Loading
+13 −11
Original line number Diff line number Diff line
@@ -597,16 +597,6 @@ static void __init acpi_parse_and_init_cpus(void)
void (*__smp_cross_call)(const struct cpumask *, unsigned int);
DEFINE_PER_CPU(bool, pending_ipi);

void smp_cross_call_common(const struct cpumask *cpumask, unsigned int func)
{
	unsigned int cpu;

	for_each_cpu(cpu, cpumask)
		per_cpu(pending_ipi, cpu) = true;

	__smp_cross_call(cpumask, func);
}

/*
 * Enumerate the possible CPU set from the device tree and build the
 * cpu logical map array containing MPIDR values related to logical
@@ -769,6 +759,17 @@ static void smp_cross_call(const struct cpumask *target, unsigned int ipinr)
	__smp_cross_call(target, ipinr);
}

static void smp_cross_call_common(const struct cpumask *cpumask,
				  unsigned int func)
{
	unsigned int cpu;

	for_each_cpu(cpu, cpumask)
		per_cpu(pending_ipi, cpu) = true;

	smp_cross_call(cpumask, func);
}

void show_ipi_list(struct seq_file *p, int prec)
{
	unsigned int cpu, i;
@@ -815,7 +816,8 @@ void arch_send_wakeup_ipi_mask(const struct cpumask *mask)
void arch_irq_work_raise(void)
{
	if (__smp_cross_call)
		smp_cross_call(cpumask_of(smp_processor_id()), IPI_IRQ_WORK);
		smp_cross_call_common(cpumask_of(smp_processor_id()),
				      IPI_IRQ_WORK);
}
#endif