From: Ingo Molnar Date: Thu, 11 Jun 2009 15:55:42 +0000 (+0200) Subject: Merge branch 'linus' into perfcounters/core X-Git-Url: http://git.mmlx.us/?a=commitdiff_plain;h=940010c5a314a7bd9b498593bc6ba1718ac5aec5;p=linux-edison.git Merge branch 'linus' into perfcounters/core Conflicts: arch/x86/kernel/irqinit.c arch/x86/kernel/irqinit_64.c arch/x86/kernel/traps.c arch/x86/mm/fault.c include/linux/sched.h kernel/exit.c --- 940010c5a314a7bd9b498593bc6ba1718ac5aec5 diff --cc arch/x86/kernel/irqinit.c index 205bdd880d3,2e08b10ad51..267c6624c77 --- a/arch/x86/kernel/irqinit.c +++ b/arch/x86/kernel/irqinit.c @@@ -154,7 -181,12 +181,17 @@@ static void __init apic_intr_init(void { smp_intr_init(); - #ifdef CONFIG_X86_LOCAL_APIC -#ifdef CONFIG_X86_64 ++#ifdef CONFIG_X86_THERMAL_VECTOR + alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt); ++#endif ++#ifdef CONFIG_X86_THRESHOLD + alloc_intr_gate(THRESHOLD_APIC_VECTOR, threshold_interrupt); + #endif ++#if defined(CONFIG_X86_NEW_MCE) && defined(CONFIG_X86_LOCAL_APIC) ++ alloc_intr_gate(MCE_SELF_VECTOR, mce_self_interrupt); ++#endif + + #if defined(CONFIG_X86_64) || defined(CONFIG_X86_LOCAL_APIC) /* self generated IPI for local APIC timer */ alloc_intr_gate(LOCAL_TIMER_VECTOR, apic_timer_interrupt); @@@ -164,19 -196,42 +201,34 @@@ /* IPI vectors for APIC spurious and error interrupts */ alloc_intr_gate(SPURIOUS_APIC_VECTOR, spurious_interrupt); alloc_intr_gate(ERROR_APIC_VECTOR, error_interrupt); + + /* Performance monitoring interrupts: */ # ifdef CONFIG_PERF_COUNTERS - alloc_intr_gate(LOCAL_PERF_VECTOR, perf_counter_interrupt); alloc_intr_gate(LOCAL_PENDING_VECTOR, perf_pending_interrupt); # endif - # ifdef CONFIG_X86_MCE_P4THERMAL - /* thermal monitor LVT interrupt */ - alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt); - # endif #endif - -#ifdef CONFIG_X86_32 -#if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86_MCE_P4THERMAL) - /* thermal monitor LVT interrupt */ - alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt); -#endif -#endif } - /* Overridden in paravirt.c */ - void init_IRQ(void) __attribute__((weak, alias("native_init_IRQ"))); + /** + * x86_quirk_pre_intr_init - initialisation prior to setting up interrupt vectors + * + * Description: + * Perform any necessary interrupt initialisation prior to setting up + * the "ordinary" interrupt call gates. For legacy reasons, the ISA + * interrupts should be initialised here if the machine emulates a PC + * in any way. + **/ + static void __init x86_quirk_pre_intr_init(void) + { + #ifdef CONFIG_X86_32 + if (x86_quirks->arch_pre_intr_init) { + if (x86_quirks->arch_pre_intr_init()) + return; + } + #endif + init_ISA_irqs(); + } void __init native_init_IRQ(void) { diff --cc arch/x86/mm/fault.c index 5c6d816f30b,5ec7ae36661..c6acc632637 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@@ -3,41 -3,16 +3,17 @@@ * Copyright (C) 2001, 2002 Andi Kleen, SuSE Labs. * Copyright (C) 2008-2009, Red Hat Inc., Ingo Molnar */ - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - - #include - - #include - #include - #include - #include - #include - #include - #include + #include /* STACK_END_MAGIC */ + #include /* test_thread_flag(), ... */ + #include /* oops_begin/end, ... */ + #include /* search_exception_table */ + #include /* max_low_pfn */ + #include /* __kprobes, ... */ + #include /* kmmio_handler, ... */ ++#include /* perf_swcounter_event */ + + #include /* dotraplinkage, ... */ + #include /* pgd_*(), ... */ /* * Page fault error code bits: diff --cc include/linux/sched.h index bc9326dcdde,d1399660b77..28c774ff3cc --- a/include/linux/sched.h +++ b/include/linux/sched.h @@@ -96,9 -97,8 +97,9 @@@ struct exec_domain struct futex_pi_state; struct robust_list_head; struct bio; - struct bts_tracer; struct fs_struct; + struct bts_context; +struct perf_counter_context; /* * List of flags we want to share for kernel threads, @@@ -136,9 -137,8 +138,9 @@@ DECLARE_PER_CPU(unsigned long, process_ extern int nr_processes(void); extern unsigned long nr_running(void); extern unsigned long nr_uninterruptible(void); - extern unsigned long nr_active(void); extern unsigned long nr_iowait(void); + extern void calc_global_load(void); +extern u64 cpu_nr_migrations(int cpu); extern unsigned long get_parent_ip(unsigned long addr); diff --cc kernel/Makefile index e914ca992d7,a35eee3436d..90b53f6dc22 --- a/kernel/Makefile +++ b/kernel/Makefile @@@ -93,9 -93,9 +93,10 @@@ obj-$(CONFIG_LATENCYTOP) += latencytop. obj-$(CONFIG_HAVE_GENERIC_DMA_COHERENT) += dma-coherent.o obj-$(CONFIG_FUNCTION_TRACER) += trace/ obj-$(CONFIG_TRACING) += trace/ + obj-$(CONFIG_X86_DS) += trace/ obj-$(CONFIG_SMP) += sched_cpupri.o obj-$(CONFIG_SLOW_WORK) += slow-work.o +obj-$(CONFIG_PERF_COUNTERS) += perf_counter.o ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y) # According to Alan Modra , the -fno-omit-frame-pointer is diff --cc kernel/exit.c index 99ad4063ee4,cab535c427b..49cdf6946f3 --- a/kernel/exit.c +++ b/kernel/exit.c @@@ -48,8 -48,7 +48,8 @@@ #include #include #include +#include - #include + #include #include #include diff --cc kernel/fork.c index f4466ca37ec,bb762b4dd21..4430eb1376f --- a/kernel/fork.c +++ b/kernel/fork.c @@@ -61,9 -61,7 +61,8 @@@ #include #include #include - #include #include +#include #include #include