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 781bcb10b8bd..d94b878577b7 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; | |||
852 | extern unsigned long xcall_flush_tlb_pending; | 852 | extern unsigned long xcall_flush_tlb_pending; |
853 | extern unsigned long xcall_flush_tlb_kernel_range; | 853 | extern unsigned long xcall_flush_tlb_kernel_range; |
854 | extern unsigned long xcall_fetch_glob_regs; | 854 | extern unsigned long xcall_fetch_glob_regs; |
855 | extern unsigned long xcall_fetch_glob_pmu; | ||
856 | extern unsigned long xcall_fetch_glob_pmu_n4; | ||
855 | extern unsigned long xcall_receive_signal; | 857 | extern unsigned long xcall_receive_signal; |
856 | extern unsigned long xcall_new_mmu_context_version; | 858 | extern unsigned long xcall_new_mmu_context_version; |
857 | #ifdef CONFIG_KGDB | 859 | #ifdef CONFIG_KGDB |
@@ -1000,6 +1002,15 @@ void smp_fetch_global_regs(void) | |||
1000 | smp_cross_call(&xcall_fetch_glob_regs, 0, 0, 0); | 1002 | smp_cross_call(&xcall_fetch_glob_regs, 0, 0, 0); |
1001 | } | 1003 | } |
1002 | 1004 | ||
1005 | void smp_fetch_global_pmu(void) | ||
1006 | { | ||
1007 | if (tlb_type == hypervisor && | ||
1008 | sun4v_chip_type >= SUN4V_CHIP_NIAGARA4) | ||
1009 | smp_cross_call(&xcall_fetch_glob_pmu_n4, 0, 0, 0); | ||
1010 | else | ||
1011 | smp_cross_call(&xcall_fetch_glob_pmu, 0, 0, 0); | ||
1012 | } | ||
1013 | |||
1003 | /* We know that the window frames of the user have been flushed | 1014 | /* We know that the window frames of the user have been flushed |
1004 | * to the stack before we get here because all callers of us | 1015 | * to the stack before we get here because all callers of us |
1005 | * are flush_tlb_*() routines, and these run after flush_cache_*() | 1016 | * are flush_tlb_*() routines, and these run after flush_cache_*() |