ARM: SMP: move ipi_count into irq_stat structure
Move the ipi_count into irq_stat, which allows the ipi_data structure to be entirely removed. Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
46c48f222f
commit
cab8c6f305
@ -10,6 +10,9 @@ typedef struct {
|
|||||||
#ifdef CONFIG_LOCAL_TIMERS
|
#ifdef CONFIG_LOCAL_TIMERS
|
||||||
unsigned int local_timer_irqs;
|
unsigned int local_timer_irqs;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
|
unsigned int ipi_irqs;
|
||||||
|
#endif
|
||||||
} ____cacheline_aligned irq_cpustat_t;
|
} ____cacheline_aligned irq_cpustat_t;
|
||||||
|
|
||||||
#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
|
#include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */
|
||||||
|
@ -46,15 +46,6 @@
|
|||||||
*/
|
*/
|
||||||
struct secondary_data secondary_data;
|
struct secondary_data secondary_data;
|
||||||
|
|
||||||
/*
|
|
||||||
* structures for inter-processor calls
|
|
||||||
*/
|
|
||||||
struct ipi_data {
|
|
||||||
unsigned long ipi_count;
|
|
||||||
};
|
|
||||||
|
|
||||||
static DEFINE_PER_CPU(struct ipi_data, ipi_data);
|
|
||||||
|
|
||||||
enum ipi_msg_type {
|
enum ipi_msg_type {
|
||||||
IPI_TIMER = 2,
|
IPI_TIMER = 2,
|
||||||
IPI_RESCHEDULE,
|
IPI_RESCHEDULE,
|
||||||
@ -398,7 +389,7 @@ void show_ipi_list(struct seq_file *p)
|
|||||||
seq_puts(p, "IPI:");
|
seq_puts(p, "IPI:");
|
||||||
|
|
||||||
for_each_present_cpu(cpu)
|
for_each_present_cpu(cpu)
|
||||||
seq_printf(p, " %10lu", per_cpu(ipi_data, cpu).ipi_count);
|
seq_printf(p, " %10u", __get_irq_stat(cpu, ipi_irqs));
|
||||||
|
|
||||||
seq_putc(p, '\n');
|
seq_putc(p, '\n');
|
||||||
}
|
}
|
||||||
@ -513,10 +504,9 @@ static void ipi_cpu_stop(unsigned int cpu)
|
|||||||
asmlinkage void __exception do_IPI(int ipinr, struct pt_regs *regs)
|
asmlinkage void __exception do_IPI(int ipinr, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
unsigned int cpu = smp_processor_id();
|
unsigned int cpu = smp_processor_id();
|
||||||
struct ipi_data *ipi = &per_cpu(ipi_data, cpu);
|
|
||||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||||
|
|
||||||
ipi->ipi_count++;
|
__inc_irq_stat(cpu, ipi_irqs);
|
||||||
|
|
||||||
switch (ipinr) {
|
switch (ipinr) {
|
||||||
case IPI_TIMER:
|
case IPI_TIMER:
|
||||||
|
Loading…
Reference in New Issue
Block a user