diff options
Diffstat (limited to 'arch/sparc/kernel/smp_64.c')
| -rw-r--r-- | arch/sparc/kernel/smp_64.c | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c index 781bcb10b8b..d94b878577b 100644 --- a/arch/sparc/kernel/smp_64.c +++ b/arch/sparc/kernel/smp_64.c @@ -852,6 +852,8 @@ extern unsigned long xcall_flush_tlb_mm;  extern unsigned long xcall_flush_tlb_pending;  extern unsigned long xcall_flush_tlb_kernel_range;  extern unsigned long xcall_fetch_glob_regs; +extern unsigned long xcall_fetch_glob_pmu; +extern unsigned long xcall_fetch_glob_pmu_n4;  extern unsigned long xcall_receive_signal;  extern unsigned long xcall_new_mmu_context_version;  #ifdef CONFIG_KGDB @@ -1000,6 +1002,15 @@ void smp_fetch_global_regs(void)  	smp_cross_call(&xcall_fetch_glob_regs, 0, 0, 0);  } +void smp_fetch_global_pmu(void) +{ +	if (tlb_type == hypervisor && +	    sun4v_chip_type >= SUN4V_CHIP_NIAGARA4) +		smp_cross_call(&xcall_fetch_glob_pmu_n4, 0, 0, 0); +	else +		smp_cross_call(&xcall_fetch_glob_pmu, 0, 0, 0); +} +  /* We know that the window frames of the user have been flushed   * to the stack before we get here because all callers of us   * are flush_tlb_*() routines, and these run after flush_cache_*()  |