diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/alpha/kernel/irq.c | 5 | ||||
-rw-r--r-- | arch/arm/kernel/stacktrace.c | 1 | ||||
-rw-r--r-- | arch/avr32/kernel/stacktrace.c | 1 | ||||
-rw-r--r-- | arch/mips/kernel/stacktrace.c | 1 | ||||
-rw-r--r-- | arch/mips/sibyte/swarm/Makefile | 1 | ||||
-rw-r--r-- | arch/mips/sibyte/swarm/swarm-i2c.c | 37 | ||||
-rw-r--r-- | arch/powerpc/kernel/stacktrace.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/stacktrace.c | 2 | ||||
-rw-r--r-- | arch/sh/kernel/stacktrace.c | 1 | ||||
-rw-r--r-- | arch/sparc64/kernel/stacktrace.c | 2 | ||||
-rw-r--r-- | arch/x86/Kconfig | 22 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/sleep.c | 30 | ||||
-rw-r--r-- | arch/x86/kernel/quirks.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/stacktrace.c | 2 |
14 files changed, 87 insertions, 22 deletions
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c index facf82a5499a..c626a821cdcb 100644 --- a/arch/alpha/kernel/irq.c +++ b/arch/alpha/kernel/irq.c | |||
@@ -42,8 +42,7 @@ void ack_bad_irq(unsigned int irq) | |||
42 | #ifdef CONFIG_SMP | 42 | #ifdef CONFIG_SMP |
43 | static char irq_user_affinity[NR_IRQS]; | 43 | static char irq_user_affinity[NR_IRQS]; |
44 | 44 | ||
45 | int | 45 | int irq_select_affinity(unsigned int irq) |
46 | select_smp_affinity(unsigned int irq) | ||
47 | { | 46 | { |
48 | static int last_cpu; | 47 | static int last_cpu; |
49 | int cpu = last_cpu + 1; | 48 | int cpu = last_cpu + 1; |
@@ -51,7 +50,7 @@ select_smp_affinity(unsigned int irq) | |||
51 | if (!irq_desc[irq].chip->set_affinity || irq_user_affinity[irq]) | 50 | if (!irq_desc[irq].chip->set_affinity || irq_user_affinity[irq]) |
52 | return 1; | 51 | return 1; |
53 | 52 | ||
54 | while (!cpu_possible(cpu)) | 53 | while (!cpu_possible(cpu) || !cpu_isset(cpu, irq_default_affinity)) |
55 | cpu = (cpu < (NR_CPUS-1) ? cpu + 1 : 0); | 54 | cpu = (cpu < (NR_CPUS-1) ? cpu + 1 : 0); |
56 | last_cpu = cpu; | 55 | last_cpu = cpu; |
57 | 56 | ||
diff --git a/arch/arm/kernel/stacktrace.c b/arch/arm/kernel/stacktrace.c index 90e0c35ae60d..fc650f64df43 100644 --- a/arch/arm/kernel/stacktrace.c +++ b/arch/arm/kernel/stacktrace.c | |||
@@ -92,4 +92,5 @@ void save_stack_trace(struct stack_trace *trace) | |||
92 | { | 92 | { |
93 | save_stack_trace_tsk(current, trace); | 93 | save_stack_trace_tsk(current, trace); |
94 | } | 94 | } |
95 | EXPORT_SYMBOL_GPL(save_stack_trace); | ||
95 | #endif | 96 | #endif |
diff --git a/arch/avr32/kernel/stacktrace.c b/arch/avr32/kernel/stacktrace.c index 9a68190bbffd..f4bdb448049c 100644 --- a/arch/avr32/kernel/stacktrace.c +++ b/arch/avr32/kernel/stacktrace.c | |||
@@ -51,3 +51,4 @@ void save_stack_trace(struct stack_trace *trace) | |||
51 | fp = frame->fp; | 51 | fp = frame->fp; |
52 | } | 52 | } |
53 | } | 53 | } |
54 | EXPORT_SYMBOL_GPL(save_stack_trace); | ||
diff --git a/arch/mips/kernel/stacktrace.c b/arch/mips/kernel/stacktrace.c index ebd9db8d1ece..5eb4681a73d2 100644 --- a/arch/mips/kernel/stacktrace.c +++ b/arch/mips/kernel/stacktrace.c | |||
@@ -73,3 +73,4 @@ void save_stack_trace(struct stack_trace *trace) | |||
73 | prepare_frametrace(regs); | 73 | prepare_frametrace(regs); |
74 | save_context_stack(trace, regs); | 74 | save_context_stack(trace, regs); |
75 | } | 75 | } |
76 | EXPORT_SYMBOL_GPL(save_stack_trace); | ||
diff --git a/arch/mips/sibyte/swarm/Makefile b/arch/mips/sibyte/swarm/Makefile index 1775755a2619..255d692bfa18 100644 --- a/arch/mips/sibyte/swarm/Makefile +++ b/arch/mips/sibyte/swarm/Makefile | |||
@@ -1,3 +1,4 @@ | |||
1 | obj-y := setup.o rtc_xicor1241.o rtc_m41t81.o | 1 | obj-y := setup.o rtc_xicor1241.o rtc_m41t81.o |
2 | 2 | ||
3 | obj-$(CONFIG_I2C_BOARDINFO) += swarm-i2c.o | ||
3 | obj-$(CONFIG_KGDB) += dbg_io.o | 4 | obj-$(CONFIG_KGDB) += dbg_io.o |
diff --git a/arch/mips/sibyte/swarm/swarm-i2c.c b/arch/mips/sibyte/swarm/swarm-i2c.c new file mode 100644 index 000000000000..4282ac9d01d2 --- /dev/null +++ b/arch/mips/sibyte/swarm/swarm-i2c.c | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * arch/mips/sibyte/swarm/swarm-i2c.c | ||
3 | * | ||
4 | * Broadcom BCM91250A (SWARM), etc. I2C platform setup. | ||
5 | * | ||
6 | * Copyright (c) 2008 Maciej W. Rozycki | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or | ||
9 | * modify it under the terms of the GNU General Public License | ||
10 | * as published by the Free Software Foundation; either version | ||
11 | * 2 of the License, or (at your option) any later version. | ||
12 | */ | ||
13 | |||
14 | #include <linux/i2c.h> | ||
15 | #include <linux/init.h> | ||
16 | #include <linux/kernel.h> | ||
17 | |||
18 | |||
19 | static struct i2c_board_info swarm_i2c_info1[] __initdata = { | ||
20 | { | ||
21 | I2C_BOARD_INFO("m41t81", 0x68), | ||
22 | }, | ||
23 | }; | ||
24 | |||
25 | static int __init swarm_i2c_init(void) | ||
26 | { | ||
27 | int err; | ||
28 | |||
29 | err = i2c_register_board_info(1, swarm_i2c_info1, | ||
30 | ARRAY_SIZE(swarm_i2c_info1)); | ||
31 | if (err < 0) | ||
32 | printk(KERN_ERR | ||
33 | "swarm-i2c: cannot register board I2C devices\n"); | ||
34 | return err; | ||
35 | } | ||
36 | |||
37 | arch_initcall(swarm_i2c_init); | ||
diff --git a/arch/powerpc/kernel/stacktrace.c b/arch/powerpc/kernel/stacktrace.c index 962944038430..3cf0d94ba340 100644 --- a/arch/powerpc/kernel/stacktrace.c +++ b/arch/powerpc/kernel/stacktrace.c | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #include <linux/sched.h> | 13 | #include <linux/sched.h> |
14 | #include <linux/stacktrace.h> | 14 | #include <linux/stacktrace.h> |
15 | #include <linux/module.h> | ||
15 | #include <asm/ptrace.h> | 16 | #include <asm/ptrace.h> |
16 | 17 | ||
17 | /* | 18 | /* |
@@ -44,3 +45,4 @@ void save_stack_trace(struct stack_trace *trace) | |||
44 | sp = newsp; | 45 | sp = newsp; |
45 | } | 46 | } |
46 | } | 47 | } |
48 | EXPORT_SYMBOL_GPL(save_stack_trace); | ||
diff --git a/arch/s390/kernel/stacktrace.c b/arch/s390/kernel/stacktrace.c index 85e46a5d0e08..57571f10270c 100644 --- a/arch/s390/kernel/stacktrace.c +++ b/arch/s390/kernel/stacktrace.c | |||
@@ -81,6 +81,7 @@ void save_stack_trace(struct stack_trace *trace) | |||
81 | S390_lowcore.thread_info, | 81 | S390_lowcore.thread_info, |
82 | S390_lowcore.thread_info + THREAD_SIZE, 1); | 82 | S390_lowcore.thread_info + THREAD_SIZE, 1); |
83 | } | 83 | } |
84 | EXPORT_SYMBOL_GPL(save_stack_trace); | ||
84 | 85 | ||
85 | void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) | 86 | void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) |
86 | { | 87 | { |
@@ -93,3 +94,4 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) | |||
93 | if (trace->nr_entries < trace->max_entries) | 94 | if (trace->nr_entries < trace->max_entries) |
94 | trace->entries[trace->nr_entries++] = ULONG_MAX; | 95 | trace->entries[trace->nr_entries++] = ULONG_MAX; |
95 | } | 96 | } |
97 | EXPORT_SYMBOL_GPL(save_stack_trace_tsk); | ||
diff --git a/arch/sh/kernel/stacktrace.c b/arch/sh/kernel/stacktrace.c index d41e561be20e..1b2ae35c4a76 100644 --- a/arch/sh/kernel/stacktrace.c +++ b/arch/sh/kernel/stacktrace.c | |||
@@ -34,3 +34,4 @@ void save_stack_trace(struct stack_trace *trace) | |||
34 | } | 34 | } |
35 | } | 35 | } |
36 | } | 36 | } |
37 | EXPORT_SYMBOL_GPL(save_stack_trace); | ||
diff --git a/arch/sparc64/kernel/stacktrace.c b/arch/sparc64/kernel/stacktrace.c index c73ce3f4197e..b3e3737750d8 100644 --- a/arch/sparc64/kernel/stacktrace.c +++ b/arch/sparc64/kernel/stacktrace.c | |||
@@ -1,6 +1,7 @@ | |||
1 | #include <linux/sched.h> | 1 | #include <linux/sched.h> |
2 | #include <linux/stacktrace.h> | 2 | #include <linux/stacktrace.h> |
3 | #include <linux/thread_info.h> | 3 | #include <linux/thread_info.h> |
4 | #include <linux/module.h> | ||
4 | #include <asm/ptrace.h> | 5 | #include <asm/ptrace.h> |
5 | #include <asm/stacktrace.h> | 6 | #include <asm/stacktrace.h> |
6 | 7 | ||
@@ -47,3 +48,4 @@ void save_stack_trace(struct stack_trace *trace) | |||
47 | trace->entries[trace->nr_entries++] = pc; | 48 | trace->entries[trace->nr_entries++] = pc; |
48 | } while (trace->nr_entries < trace->max_entries); | 49 | } while (trace->nr_entries < trace->max_entries); |
49 | } | 50 | } |
51 | EXPORT_SYMBOL_GPL(save_stack_trace); | ||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 6958d6bcaf70..2642b4bf41b9 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -447,7 +447,6 @@ config PARAVIRT_DEBUG | |||
447 | config MEMTEST | 447 | config MEMTEST |
448 | bool "Memtest" | 448 | bool "Memtest" |
449 | depends on X86_64 | 449 | depends on X86_64 |
450 | default y | ||
451 | help | 450 | help |
452 | This option adds a kernel parameter 'memtest', which allows memtest | 451 | This option adds a kernel parameter 'memtest', which allows memtest |
453 | to be set. | 452 | to be set. |
@@ -455,7 +454,7 @@ config MEMTEST | |||
455 | memtest=1, mean do 1 test pattern; | 454 | memtest=1, mean do 1 test pattern; |
456 | ... | 455 | ... |
457 | memtest=4, mean do 4 test patterns. | 456 | memtest=4, mean do 4 test patterns. |
458 | If you are unsure how to answer this question, answer Y. | 457 | If you are unsure how to answer this question, answer N. |
459 | 458 | ||
460 | config X86_SUMMIT_NUMA | 459 | config X86_SUMMIT_NUMA |
461 | def_bool y | 460 | def_bool y |
@@ -1135,21 +1134,18 @@ config MTRR | |||
1135 | See <file:Documentation/mtrr.txt> for more information. | 1134 | See <file:Documentation/mtrr.txt> for more information. |
1136 | 1135 | ||
1137 | config MTRR_SANITIZER | 1136 | config MTRR_SANITIZER |
1138 | def_bool y | 1137 | bool |
1139 | prompt "MTRR cleanup support" | 1138 | prompt "MTRR cleanup support" |
1140 | depends on MTRR | 1139 | depends on MTRR |
1141 | help | 1140 | help |
1142 | Convert MTRR layout from continuous to discrete, so some X driver | 1141 | Convert MTRR layout from continuous to discrete, so X drivers can |
1143 | could add WB entries. | 1142 | add writeback entries. |
1144 | 1143 | ||
1145 | Say N here if you see bootup problems (boot crash, boot hang, | 1144 | Can be disabled with disable_mtrr_cleanup on the kernel command line. |
1146 | spontaneous reboots). | 1145 | The largest mtrr entry size for a continous block can be set with |
1146 | mtrr_chunk_size. | ||
1147 | 1147 | ||
1148 | Could be disabled with disable_mtrr_cleanup. Also mtrr_chunk_size | 1148 | If unsure, say N. |
1149 | could be used to send largest mtrr entry size for continuous block | ||
1150 | to hold holes (aka. UC entries) | ||
1151 | |||
1152 | If unsure, say Y. | ||
1153 | 1149 | ||
1154 | config MTRR_SANITIZER_ENABLE_DEFAULT | 1150 | config MTRR_SANITIZER_ENABLE_DEFAULT |
1155 | int "MTRR cleanup enable value (0-1)" | 1151 | int "MTRR cleanup enable value (0-1)" |
@@ -1166,7 +1162,7 @@ config MTRR_SANITIZER_SPARE_REG_NR_DEFAULT | |||
1166 | depends on MTRR_SANITIZER | 1162 | depends on MTRR_SANITIZER |
1167 | help | 1163 | help |
1168 | mtrr cleanup spare entries default, it can be changed via | 1164 | mtrr cleanup spare entries default, it can be changed via |
1169 | mtrr_spare_reg_nr= | 1165 | mtrr_spare_reg_nr=N on the kernel command line. |
1170 | 1166 | ||
1171 | config X86_PAT | 1167 | config X86_PAT |
1172 | bool | 1168 | bool |
diff --git a/arch/x86/kernel/acpi/sleep.c b/arch/x86/kernel/acpi/sleep.c index e6a4b564ccaa..793ad2045f58 100644 --- a/arch/x86/kernel/acpi/sleep.c +++ b/arch/x86/kernel/acpi/sleep.c | |||
@@ -23,6 +23,15 @@ static unsigned long acpi_realmode; | |||
23 | static char temp_stack[10240]; | 23 | static char temp_stack[10240]; |
24 | #endif | 24 | #endif |
25 | 25 | ||
26 | /* XXX: this macro should move to asm-x86/segment.h and be shared with the | ||
27 | boot code... */ | ||
28 | #define GDT_ENTRY(flags, base, limit) \ | ||
29 | (((u64)(base & 0xff000000) << 32) | \ | ||
30 | ((u64)flags << 40) | \ | ||
31 | ((u64)(limit & 0x00ff0000) << 32) | \ | ||
32 | ((u64)(base & 0x00ffffff) << 16) | \ | ||
33 | ((u64)(limit & 0x0000ffff))) | ||
34 | |||
26 | /** | 35 | /** |
27 | * acpi_save_state_mem - save kernel state | 36 | * acpi_save_state_mem - save kernel state |
28 | * | 37 | * |
@@ -51,18 +60,27 @@ int acpi_save_state_mem(void) | |||
51 | header->video_mode = saved_video_mode; | 60 | header->video_mode = saved_video_mode; |
52 | 61 | ||
53 | header->wakeup_jmp_seg = acpi_wakeup_address >> 4; | 62 | header->wakeup_jmp_seg = acpi_wakeup_address >> 4; |
63 | |||
64 | /* | ||
65 | * Set up the wakeup GDT. We set these up as Big Real Mode, | ||
66 | * that is, with limits set to 4 GB. At least the Lenovo | ||
67 | * Thinkpad X61 is known to need this for the video BIOS | ||
68 | * initialization quirk to work; this is likely to also | ||
69 | * be the case for other laptops or integrated video devices. | ||
70 | */ | ||
71 | |||
54 | /* GDT[0]: GDT self-pointer */ | 72 | /* GDT[0]: GDT self-pointer */ |
55 | header->wakeup_gdt[0] = | 73 | header->wakeup_gdt[0] = |
56 | (u64)(sizeof(header->wakeup_gdt) - 1) + | 74 | (u64)(sizeof(header->wakeup_gdt) - 1) + |
57 | ((u64)(acpi_wakeup_address + | 75 | ((u64)(acpi_wakeup_address + |
58 | ((char *)&header->wakeup_gdt - (char *)acpi_realmode)) | 76 | ((char *)&header->wakeup_gdt - (char *)acpi_realmode)) |
59 | << 16); | 77 | << 16); |
60 | /* GDT[1]: real-mode-like code segment */ | 78 | /* GDT[1]: big real mode-like code segment */ |
61 | header->wakeup_gdt[1] = (0x009bULL << 40) + | 79 | header->wakeup_gdt[1] = |
62 | ((u64)acpi_wakeup_address << 16) + 0xffff; | 80 | GDT_ENTRY(0x809b, acpi_wakeup_address, 0xfffff); |
63 | /* GDT[2]: real-mode-like data segment */ | 81 | /* GDT[2]: big real mode-like data segment */ |
64 | header->wakeup_gdt[2] = (0x0093ULL << 40) + | 82 | header->wakeup_gdt[2] = |
65 | ((u64)acpi_wakeup_address << 16) + 0xffff; | 83 | GDT_ENTRY(0x8093, acpi_wakeup_address, 0xfffff); |
66 | 84 | ||
67 | #ifndef CONFIG_64BIT | 85 | #ifndef CONFIG_64BIT |
68 | store_gdt((struct desc_ptr *)&header->pmode_gdt); | 86 | store_gdt((struct desc_ptr *)&header->pmode_gdt); |
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c index 79bdcd11c66e..d13858818100 100644 --- a/arch/x86/kernel/quirks.c +++ b/arch/x86/kernel/quirks.c | |||
@@ -266,6 +266,8 @@ static void old_ich_force_enable_hpet_user(struct pci_dev *dev) | |||
266 | hpet_print_force_info(); | 266 | hpet_print_force_info(); |
267 | } | 267 | } |
268 | 268 | ||
269 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB_1, | ||
270 | old_ich_force_enable_hpet_user); | ||
269 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_0, | 271 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_0, |
270 | old_ich_force_enable_hpet_user); | 272 | old_ich_force_enable_hpet_user); |
271 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_12, | 273 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_12, |
diff --git a/arch/x86/kernel/stacktrace.c b/arch/x86/kernel/stacktrace.c index c28c342c162f..a03e7f6d90c3 100644 --- a/arch/x86/kernel/stacktrace.c +++ b/arch/x86/kernel/stacktrace.c | |||
@@ -74,6 +74,7 @@ void save_stack_trace(struct stack_trace *trace) | |||
74 | if (trace->nr_entries < trace->max_entries) | 74 | if (trace->nr_entries < trace->max_entries) |
75 | trace->entries[trace->nr_entries++] = ULONG_MAX; | 75 | trace->entries[trace->nr_entries++] = ULONG_MAX; |
76 | } | 76 | } |
77 | EXPORT_SYMBOL_GPL(save_stack_trace); | ||
77 | 78 | ||
78 | void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) | 79 | void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) |
79 | { | 80 | { |
@@ -81,3 +82,4 @@ void save_stack_trace_tsk(struct task_struct *tsk, struct stack_trace *trace) | |||
81 | if (trace->nr_entries < trace->max_entries) | 82 | if (trace->nr_entries < trace->max_entries) |
82 | trace->entries[trace->nr_entries++] = ULONG_MAX; | 83 | trace->entries[trace->nr_entries++] = ULONG_MAX; |
83 | } | 84 | } |
85 | EXPORT_SYMBOL_GPL(save_stack_trace_tsk); | ||