forked from Minki/linux
10034aabca
When a CPU is hot unplugged, the generic tick code cleans up the clock event device, but fails to call down to the device's set_mode function to actually shut the device down. To work around this, we've historically had a local_timer_stop() callback out of the hotplug code. However, this adds needless complexity when we have the clock event device itself available. Explicitly call the clock event device's set_mode function with CLOCK_EVT_MODE_UNUSED, so that the hardware can be cleanly shutdown without any special external callbacks. When/if the generic code is fixed, percpu_timer_stop() can be killed off. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
52 lines
1008 B
C
52 lines
1008 B
C
/*
|
|
* arch/arm/include/asm/localtimer.h
|
|
*
|
|
* Copyright (C) 2004-2005 ARM Ltd.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
#ifndef __ASM_ARM_LOCALTIMER_H
|
|
#define __ASM_ARM_LOCALTIMER_H
|
|
|
|
struct clock_event_device;
|
|
|
|
/*
|
|
* Setup a per-cpu timer, whether it be a local timer or dummy broadcast
|
|
*/
|
|
void percpu_timer_setup(void);
|
|
|
|
/*
|
|
* Called from assembly, this is the local timer IRQ handler
|
|
*/
|
|
asmlinkage void do_local_timer(struct pt_regs *);
|
|
|
|
|
|
#ifdef CONFIG_LOCAL_TIMERS
|
|
|
|
#ifdef CONFIG_HAVE_ARM_TWD
|
|
|
|
#include "smp_twd.h"
|
|
|
|
#define local_timer_ack() twd_timer_ack()
|
|
|
|
#else
|
|
|
|
/*
|
|
* Platform provides this to acknowledge a local timer IRQ.
|
|
* Returns true if the local timer IRQ is to be processed.
|
|
*/
|
|
int local_timer_ack(void);
|
|
|
|
#endif
|
|
|
|
/*
|
|
* Setup a local timer interrupt for a CPU.
|
|
*/
|
|
void local_timer_setup(struct clock_event_device *);
|
|
|
|
#endif
|
|
|
|
#endif
|