diff options
| author | Ingo Molnar <mingo@kernel.org> | 2013-12-17 09:27:08 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2013-12-17 09:27:08 -0500 |
| commit | bb799d3b980eb803ca2da4a4eefbd9308f8d988a (patch) | |
| tree | 69fbe0cd6d47b23a50f5e1d87bf7489532fae149 /arch/alpha/kernel/smp.c | |
| parent | 919fc6e34831d1c2b58bfb5ae261dc3facc9b269 (diff) | |
| parent | 319e2e3f63c348a9b66db4667efa73178e18b17d (diff) | |
Merge tag 'v3.13-rc4' into core/locking
Merge Linux 3.13-rc4, to refresh this rather old tree with the latest fixes.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/alpha/kernel/smp.c')
| -rw-r--r-- | arch/alpha/kernel/smp.c | 33 |
1 files changed, 3 insertions, 30 deletions
diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c index 9dbbcb3b9146..99ac36d5de4e 100644 --- a/arch/alpha/kernel/smp.c +++ b/arch/alpha/kernel/smp.c | |||
| @@ -138,9 +138,11 @@ smp_callin(void) | |||
| 138 | 138 | ||
| 139 | /* Get our local ticker going. */ | 139 | /* Get our local ticker going. */ |
| 140 | smp_setup_percpu_timer(cpuid); | 140 | smp_setup_percpu_timer(cpuid); |
| 141 | init_clockevent(); | ||
| 141 | 142 | ||
| 142 | /* Call platform-specific callin, if specified */ | 143 | /* Call platform-specific callin, if specified */ |
| 143 | if (alpha_mv.smp_callin) alpha_mv.smp_callin(); | 144 | if (alpha_mv.smp_callin) |
| 145 | alpha_mv.smp_callin(); | ||
| 144 | 146 | ||
| 145 | /* All kernel threads share the same mm context. */ | 147 | /* All kernel threads share the same mm context. */ |
| 146 | atomic_inc(&init_mm.mm_count); | 148 | atomic_inc(&init_mm.mm_count); |
| @@ -498,35 +500,6 @@ smp_cpus_done(unsigned int max_cpus) | |||
| 498 | ((bogosum + 2500) / (5000/HZ)) % 100); | 500 | ((bogosum + 2500) / (5000/HZ)) % 100); |
| 499 | } | 501 | } |
| 500 | 502 | ||
| 501 | |||
| 502 | void | ||
| 503 | smp_percpu_timer_interrupt(struct pt_regs *regs) | ||
| 504 | { | ||
| 505 | struct pt_regs *old_regs; | ||
| 506 | int cpu = smp_processor_id(); | ||
| 507 | unsigned long user = user_mode(regs); | ||
| 508 | struct cpuinfo_alpha *data = &cpu_data[cpu]; | ||
| 509 | |||
| 510 | old_regs = set_irq_regs(regs); | ||
| 511 | |||
| 512 | /* Record kernel PC. */ | ||
| 513 | profile_tick(CPU_PROFILING); | ||
| 514 | |||
| 515 | if (!--data->prof_counter) { | ||
| 516 | /* We need to make like a normal interrupt -- otherwise | ||
| 517 | timer interrupts ignore the global interrupt lock, | ||
| 518 | which would be a Bad Thing. */ | ||
| 519 | irq_enter(); | ||
| 520 | |||
| 521 | update_process_times(user); | ||
| 522 | |||
| 523 | data->prof_counter = data->prof_multiplier; | ||
| 524 | |||
| 525 | irq_exit(); | ||
| 526 | } | ||
| 527 | set_irq_regs(old_regs); | ||
| 528 | } | ||
| 529 | |||
| 530 | int | 503 | int |
| 531 | setup_profiling_timer(unsigned int multiplier) | 504 | setup_profiling_timer(unsigned int multiplier) |
| 532 | { | 505 | { |
