Commit 25874a29 authored by Henrik Kretzschmar's avatar Henrik Kretzschmar Committed by Ingo Molnar

x86: Clean up apic.c and apic.h

This patch moves some functions and variables into init
sections, makes a function static and removes some lines of
cruft.
Signed-off-by: default avatarHenrik Kretzschmar <henne@nachtwindheim.de>
Acked-by: default avatarCyrill Gorcunov <gorcunov@openvz.org>
LKML-Reference: <1299826956-8607-2-git-send-email-henne@nachtwindheim.de>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent ec8df88f
...@@ -220,7 +220,6 @@ extern void enable_IR_x2apic(void); ...@@ -220,7 +220,6 @@ extern void enable_IR_x2apic(void);
extern int get_physical_broadcast(void); extern int get_physical_broadcast(void);
extern void apic_disable(void);
extern int lapic_get_maxlvt(void); extern int lapic_get_maxlvt(void);
extern void clear_local_APIC(void); extern void clear_local_APIC(void);
extern void connect_bsp_APIC(void); extern void connect_bsp_APIC(void);
...@@ -228,7 +227,6 @@ extern void disconnect_bsp_APIC(int virt_wire_setup); ...@@ -228,7 +227,6 @@ extern void disconnect_bsp_APIC(int virt_wire_setup);
extern void disable_local_APIC(void); extern void disable_local_APIC(void);
extern void lapic_shutdown(void); extern void lapic_shutdown(void);
extern int verify_local_APIC(void); extern int verify_local_APIC(void);
extern void cache_APIC_registers(void);
extern void sync_Arb_IDs(void); extern void sync_Arb_IDs(void);
extern void init_bsp_APIC(void); extern void init_bsp_APIC(void);
extern void setup_local_APIC(void); extern void setup_local_APIC(void);
...@@ -239,7 +237,6 @@ void register_lapic_address(unsigned long address); ...@@ -239,7 +237,6 @@ void register_lapic_address(unsigned long address);
extern void setup_boot_APIC_clock(void); extern void setup_boot_APIC_clock(void);
extern void setup_secondary_APIC_clock(void); extern void setup_secondary_APIC_clock(void);
extern int APIC_init_uniprocessor(void); extern int APIC_init_uniprocessor(void);
extern void enable_NMI_through_LVT0(void);
extern int apic_force_enable(unsigned long addr); extern int apic_force_enable(unsigned long addr);
/* /*
...@@ -261,7 +258,6 @@ static inline void lapic_shutdown(void) { } ...@@ -261,7 +258,6 @@ static inline void lapic_shutdown(void) { }
#define local_apic_timer_c2_ok 1 #define local_apic_timer_c2_ok 1
static inline void init_apic_mappings(void) { } static inline void init_apic_mappings(void) { }
static inline void disable_local_APIC(void) { } static inline void disable_local_APIC(void) { }
static inline void apic_disable(void) { }
# define setup_boot_APIC_clock x86_init_noop # define setup_boot_APIC_clock x86_init_noop
# define setup_secondary_APIC_clock x86_init_noop # define setup_secondary_APIC_clock x86_init_noop
#endif /* !CONFIG_X86_LOCAL_APIC */ #endif /* !CONFIG_X86_LOCAL_APIC */
......
...@@ -84,7 +84,7 @@ EXPORT_EARLY_PER_CPU_SYMBOL(x86_bios_cpu_apicid); ...@@ -84,7 +84,7 @@ EXPORT_EARLY_PER_CPU_SYMBOL(x86_bios_cpu_apicid);
* *
* +1=force-enable * +1=force-enable
*/ */
static int force_enable_local_apic; static int force_enable_local_apic __initdata;
/* /*
* APIC command line parameters * APIC command line parameters
*/ */
...@@ -154,7 +154,7 @@ early_param("nox2apic", setup_nox2apic); ...@@ -154,7 +154,7 @@ early_param("nox2apic", setup_nox2apic);
unsigned long mp_lapic_addr; unsigned long mp_lapic_addr;
int disable_apic; int disable_apic;
/* Disable local APIC timer from the kernel commandline or via dmi quirk */ /* Disable local APIC timer from the kernel commandline or via dmi quirk */
static int disable_apic_timer __cpuinitdata; static int disable_apic_timer __initdata;
/* Local APIC timer works in C2 */ /* Local APIC timer works in C2 */
int local_apic_timer_c2_ok; int local_apic_timer_c2_ok;
EXPORT_SYMBOL_GPL(local_apic_timer_c2_ok); EXPORT_SYMBOL_GPL(local_apic_timer_c2_ok);
...@@ -178,29 +178,8 @@ static struct resource lapic_resource = { ...@@ -178,29 +178,8 @@ static struct resource lapic_resource = {
static unsigned int calibration_result; static unsigned int calibration_result;
static int lapic_next_event(unsigned long delta,
struct clock_event_device *evt);
static void lapic_timer_setup(enum clock_event_mode mode,
struct clock_event_device *evt);
static void lapic_timer_broadcast(const struct cpumask *mask);
static void apic_pm_activate(void); static void apic_pm_activate(void);
/*
* The local apic timer can be used for any function which is CPU local.
*/
static struct clock_event_device lapic_clockevent = {
.name = "lapic",
.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT
| CLOCK_EVT_FEAT_C3STOP | CLOCK_EVT_FEAT_DUMMY,
.shift = 32,
.set_mode = lapic_timer_setup,
.set_next_event = lapic_next_event,
.broadcast = lapic_timer_broadcast,
.rating = 100,
.irq = -1,
};
static DEFINE_PER_CPU(struct clock_event_device, lapic_events);
static unsigned long apic_phys; static unsigned long apic_phys;
/* /*
...@@ -239,7 +218,7 @@ static int modern_apic(void) ...@@ -239,7 +218,7 @@ static int modern_apic(void)
* right after this call apic become NOOP driven * right after this call apic become NOOP driven
* so apic->write/read doesn't do anything * so apic->write/read doesn't do anything
*/ */
void apic_disable(void) static void __init apic_disable(void)
{ {
pr_info("APIC: switched to apic NOOP\n"); pr_info("APIC: switched to apic NOOP\n");
apic = &apic_noop; apic = &apic_noop;
...@@ -283,23 +262,6 @@ u64 native_apic_icr_read(void) ...@@ -283,23 +262,6 @@ u64 native_apic_icr_read(void)
return icr1 | ((u64)icr2 << 32); return icr1 | ((u64)icr2 << 32);
} }
/**
* enable_NMI_through_LVT0 - enable NMI through local vector table 0
*/
void __cpuinit enable_NMI_through_LVT0(void)
{
unsigned int v;
/* unmask and set to NMI */
v = APIC_DM_NMI;
/* Level triggered for 82489DX (32bit mode) */
if (!lapic_is_integrated())
v |= APIC_LVT_LEVEL_TRIGGER;
apic_write(APIC_LVT0, v);
}
#ifdef CONFIG_X86_32 #ifdef CONFIG_X86_32
/** /**
* get_physical_broadcast - Get number of physical broadcast IDs * get_physical_broadcast - Get number of physical broadcast IDs
...@@ -509,6 +471,23 @@ static void lapic_timer_broadcast(const struct cpumask *mask) ...@@ -509,6 +471,23 @@ static void lapic_timer_broadcast(const struct cpumask *mask)
#endif #endif
} }
/*
* The local apic timer can be used for any function which is CPU local.
*/
static struct clock_event_device lapic_clockevent = {
.name = "lapic",
.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT
| CLOCK_EVT_FEAT_C3STOP | CLOCK_EVT_FEAT_DUMMY,
.shift = 32,
.set_mode = lapic_timer_setup,
.set_next_event = lapic_next_event,
.broadcast = lapic_timer_broadcast,
.rating = 100,
.irq = -1,
};
static DEFINE_PER_CPU(struct clock_event_device, lapic_events);
/* /*
* Setup the local APIC timer for this CPU. Copy the initialized values * Setup the local APIC timer for this CPU. Copy the initialized values
* of the boot CPU and register the clock event in the framework. * of the boot CPU and register the clock event in the framework.
...@@ -1538,7 +1517,7 @@ static int __init detect_init_APIC(void) ...@@ -1538,7 +1517,7 @@ static int __init detect_init_APIC(void)
} }
#else #else
static int apic_verify(void) static int __init apic_verify(void)
{ {
u32 features, h, l; u32 features, h, l;
...@@ -1563,7 +1542,7 @@ static int apic_verify(void) ...@@ -1563,7 +1542,7 @@ static int apic_verify(void)
return 0; return 0;
} }
int apic_force_enable(unsigned long addr) int __init apic_force_enable(unsigned long addr)
{ {
u32 h, l; u32 h, l;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment