Signed-off-by: Cyrill Gorcunov --- arch/x86/kernel/irqinit_32.c | 8 +++++++- arch/x86/kernel/irqinit_64.c | 18 ++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) Index: linux-2.6.git/arch/x86/kernel/irqinit_32.c =================================================================== --- linux-2.6.git.orig/arch/x86/kernel/irqinit_32.c +++ linux-2.6.git/arch/x86/kernel/irqinit_32.c @@ -183,13 +183,19 @@ static void __init apic_intr_init(void) alloc_intr_gate(SPURIOUS_APIC_VECTOR, spurious_interrupt); alloc_intr_gate(ERROR_APIC_VECTOR, error_interrupt); # ifdef CONFIG_PERF_COUNTERS + /* Performance monitoring interrupt */ alloc_intr_gate(LOCAL_PERF_VECTOR, perf_counter_interrupt); # endif -# ifdef CONFIG_X86_MCE_P4THERMAL +#if defined(CONFIG_X86_MCE_P4THERMAL) || defined(CONFIG_X86_64) /* thermal monitor LVT interrupt */ alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt); # endif + +# ifdef CONFIG_X86_64 + alloc_intr_gate(THRESHOLD_APIC_VECTOR, threshold_interrupt); +# endif + #endif } Index: linux-2.6.git/arch/x86/kernel/irqinit_64.c =================================================================== --- linux-2.6.git.orig/arch/x86/kernel/irqinit_64.c +++ linux-2.6.git/arch/x86/kernel/irqinit_64.c @@ -141,8 +141,7 @@ static void __init apic_intr_init(void) { smp_intr_init(); - alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt); - alloc_intr_gate(THRESHOLD_APIC_VECTOR, threshold_interrupt); +#ifdef CONFIG_X86_LOCAL_APIC /* self generated IPI for local APIC timer */ alloc_intr_gate(LOCAL_TIMER_VECTOR, apic_timer_interrupt); @@ -154,9 +153,20 @@ static void __init apic_intr_init(void) alloc_intr_gate(SPURIOUS_APIC_VECTOR, spurious_interrupt); alloc_intr_gate(ERROR_APIC_VECTOR, error_interrupt); - /* Performance monitoring interrupt: */ -#ifdef CONFIG_PERF_COUNTERS +# ifdef CONFIG_PERF_COUNTERS + /* Performance monitoring interrupt */ alloc_intr_gate(LOCAL_PERF_VECTOR, perf_counter_interrupt); +# endif + +#if defined(CONFIG_X86_MCE_P4THERMAL) || defined(CONFIG_X86_64) + /* thermal monitor LVT interrupt */ + alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt); +# endif + +# ifdef CONFIG_X86_64 + alloc_intr_gate(THRESHOLD_APIC_VECTOR, threshold_interrupt); +# endif + #endif }