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: Pavankumar Kondeti <pkondeti@codeaurora.org>
This commit is contained in:
Pavankumar Kondeti 2018-05-28 20:32:44 +05:30 committed by Gerrit - the friendly Code Review server
parent 1eb51a0caa
commit be8677d4ff

View File

@ -618,16 +618,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
@ -795,6 +785,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;
@ -841,7 +842,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