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

Commit 82e90fb3 authored by Pavankumar Kondeti's avatar Pavankumar Kondeti Committed by Gerrit - the friendly Code Review server
Browse files

arm64: smp: Get ipi_raise tracepoint working again



'commit 741a8ec5 ("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 e5929710
Loading
Loading
Loading
Loading
+13 −11
Original line number Diff line number Diff line
@@ -602,16 +602,6 @@ acpi_parse_gic_cpu_interface(struct acpi_subtable_header *header,
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
@@ -779,6 +769,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;
@@ -825,7 +826,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