diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-04-17 19:44:05 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-04-17 19:44:05 -0400 |
| commit | 71bfa15142177279ec63c0e400314bb81f3d7122 (patch) | |
| tree | 7b4c1c425a39d4dd70dba603b5db22140ef6db91 | |
| parent | 080dfbe176c8dd87fc8f27e2941f31171b738f60 (diff) | |
| parent | 1714f9bfc92d6ee67e84127332a1fae27772acfe (diff) | |
Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6
* 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6:
[PATCH] x86: Fix potential overflow in perfctr reservation
[PATCH] x86: Fix gcc 4.2 _proxy_pda workaround
| -rw-r--r-- | arch/i386/kernel/nmi.c | 9 | ||||
| -rw-r--r-- | arch/i386/kernel/vmlinux.lds.S | 2 | ||||
| -rw-r--r-- | arch/x86_64/kernel/nmi.c | 10 | ||||
| -rw-r--r-- | arch/x86_64/kernel/vmlinux.lds.S | 2 |
4 files changed, 13 insertions, 10 deletions
diff --git a/arch/i386/kernel/nmi.c b/arch/i386/kernel/nmi.c index a98ba88a8c0c..9f1e8c1afab7 100644 --- a/arch/i386/kernel/nmi.c +++ b/arch/i386/kernel/nmi.c | |||
| @@ -41,16 +41,17 @@ int nmi_watchdog_enabled; | |||
| 41 | * different subsystems this reservation system just tries to coordinate | 41 | * different subsystems this reservation system just tries to coordinate |
| 42 | * things a little | 42 | * things a little |
| 43 | */ | 43 | */ |
| 44 | static DEFINE_PER_CPU(unsigned long, perfctr_nmi_owner); | ||
| 45 | static DEFINE_PER_CPU(unsigned long, evntsel_nmi_owner[3]); | ||
| 46 | |||
| 47 | static cpumask_t backtrace_mask = CPU_MASK_NONE; | ||
| 48 | 44 | ||
| 49 | /* this number is calculated from Intel's MSR_P4_CRU_ESCR5 register and it's | 45 | /* this number is calculated from Intel's MSR_P4_CRU_ESCR5 register and it's |
| 50 | * offset from MSR_P4_BSU_ESCR0. It will be the max for all platforms (for now) | 46 | * offset from MSR_P4_BSU_ESCR0. It will be the max for all platforms (for now) |
| 51 | */ | 47 | */ |
| 52 | #define NMI_MAX_COUNTER_BITS 66 | 48 | #define NMI_MAX_COUNTER_BITS 66 |
| 49 | #define NMI_MAX_COUNTER_LONGS BITS_TO_LONGS(NMI_MAX_COUNTER_BITS) | ||
| 53 | 50 | ||
| 51 | static DEFINE_PER_CPU(unsigned long, perfctr_nmi_owner[NMI_MAX_COUNTER_LONGS]); | ||
| 52 | static DEFINE_PER_CPU(unsigned long, evntsel_nmi_owner[NMI_MAX_COUNTER_LONGS]); | ||
| 53 | |||
| 54 | static cpumask_t backtrace_mask = CPU_MASK_NONE; | ||
| 54 | /* nmi_active: | 55 | /* nmi_active: |
| 55 | * >0: the lapic NMI watchdog is active, but can be disabled | 56 | * >0: the lapic NMI watchdog is active, but can be disabled |
| 56 | * <0: the lapic NMI watchdog has not been set up, and cannot | 57 | * <0: the lapic NMI watchdog has not been set up, and cannot |
diff --git a/arch/i386/kernel/vmlinux.lds.S b/arch/i386/kernel/vmlinux.lds.S index ca51610955df..6f38f818380b 100644 --- a/arch/i386/kernel/vmlinux.lds.S +++ b/arch/i386/kernel/vmlinux.lds.S | |||
| @@ -26,7 +26,7 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") | |||
| 26 | OUTPUT_ARCH(i386) | 26 | OUTPUT_ARCH(i386) |
| 27 | ENTRY(phys_startup_32) | 27 | ENTRY(phys_startup_32) |
| 28 | jiffies = jiffies_64; | 28 | jiffies = jiffies_64; |
| 29 | _proxy_pda = 0; | 29 | _proxy_pda = 1; |
| 30 | 30 | ||
| 31 | PHDRS { | 31 | PHDRS { |
| 32 | text PT_LOAD FLAGS(5); /* R_E */ | 32 | text PT_LOAD FLAGS(5); /* R_E */ |
diff --git a/arch/x86_64/kernel/nmi.c b/arch/x86_64/kernel/nmi.c index a90996c27dc8..dfab9f167366 100644 --- a/arch/x86_64/kernel/nmi.c +++ b/arch/x86_64/kernel/nmi.c | |||
| @@ -39,15 +39,17 @@ int panic_on_unrecovered_nmi; | |||
| 39 | * different subsystems this reservation system just tries to coordinate | 39 | * different subsystems this reservation system just tries to coordinate |
| 40 | * things a little | 40 | * things a little |
| 41 | */ | 41 | */ |
| 42 | static DEFINE_PER_CPU(unsigned, perfctr_nmi_owner); | ||
| 43 | static DEFINE_PER_CPU(unsigned, evntsel_nmi_owner[2]); | ||
| 44 | |||
| 45 | static cpumask_t backtrace_mask = CPU_MASK_NONE; | ||
| 46 | 42 | ||
| 47 | /* this number is calculated from Intel's MSR_P4_CRU_ESCR5 register and it's | 43 | /* this number is calculated from Intel's MSR_P4_CRU_ESCR5 register and it's |
| 48 | * offset from MSR_P4_BSU_ESCR0. It will be the max for all platforms (for now) | 44 | * offset from MSR_P4_BSU_ESCR0. It will be the max for all platforms (for now) |
| 49 | */ | 45 | */ |
| 50 | #define NMI_MAX_COUNTER_BITS 66 | 46 | #define NMI_MAX_COUNTER_BITS 66 |
| 47 | #define NMI_MAX_COUNTER_LONGS BITS_TO_LONGS(NMI_MAX_COUNTER_BITS) | ||
| 48 | |||
| 49 | static DEFINE_PER_CPU(unsigned, perfctr_nmi_owner[NMI_MAX_COUNTER_LONGS]); | ||
| 50 | static DEFINE_PER_CPU(unsigned, evntsel_nmi_owner[NMI_MAX_COUNTER_LONGS]); | ||
| 51 | |||
| 52 | static cpumask_t backtrace_mask = CPU_MASK_NONE; | ||
| 51 | 53 | ||
| 52 | /* nmi_active: | 54 | /* nmi_active: |
| 53 | * >0: the lapic NMI watchdog is active, but can be disabled | 55 | * >0: the lapic NMI watchdog is active, but can be disabled |
diff --git a/arch/x86_64/kernel/vmlinux.lds.S b/arch/x86_64/kernel/vmlinux.lds.S index b73212c0a550..5176ecf006ee 100644 --- a/arch/x86_64/kernel/vmlinux.lds.S +++ b/arch/x86_64/kernel/vmlinux.lds.S | |||
| @@ -13,7 +13,7 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") | |||
| 13 | OUTPUT_ARCH(i386:x86-64) | 13 | OUTPUT_ARCH(i386:x86-64) |
| 14 | ENTRY(phys_startup_64) | 14 | ENTRY(phys_startup_64) |
| 15 | jiffies_64 = jiffies; | 15 | jiffies_64 = jiffies; |
| 16 | _proxy_pda = 0; | 16 | _proxy_pda = 1; |
| 17 | PHDRS { | 17 | PHDRS { |
| 18 | text PT_LOAD FLAGS(5); /* R_E */ | 18 | text PT_LOAD FLAGS(5); /* R_E */ |
| 19 | data PT_LOAD FLAGS(7); /* RWE */ | 19 | data PT_LOAD FLAGS(7); /* RWE */ |
