diff options
Diffstat (limited to 'arch')
40 files changed, 121 insertions, 61 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 15dc1a0dffbb..9f80fa502f8f 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -78,7 +78,7 @@ menu "System Type" | |||
78 | 78 | ||
79 | choice | 79 | choice |
80 | prompt "ARM system type" | 80 | prompt "ARM system type" |
81 | default ARCH_RPC | 81 | default ARCH_VERSATILE |
82 | 82 | ||
83 | config ARCH_CLPS7500 | 83 | config ARCH_CLPS7500 |
84 | bool "Cirrus-CL-PS7500FE" | 84 | bool "Cirrus-CL-PS7500FE" |
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index d7d932c02866..d6bd435a6857 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c | |||
@@ -422,12 +422,14 @@ static int timer_dyn_tick_disable(void) | |||
422 | void timer_dyn_reprogram(void) | 422 | void timer_dyn_reprogram(void) |
423 | { | 423 | { |
424 | struct dyn_tick_timer *dyn_tick = system_timer->dyn_tick; | 424 | struct dyn_tick_timer *dyn_tick = system_timer->dyn_tick; |
425 | unsigned long next, seq; | ||
425 | 426 | ||
426 | if (dyn_tick) { | 427 | if (dyn_tick && (dyn_tick->state & DYN_TICK_ENABLED)) { |
427 | write_seqlock(&xtime_lock); | 428 | next = next_timer_interrupt(); |
428 | if (dyn_tick->state & DYN_TICK_ENABLED) | 429 | do { |
430 | seq = read_seqbegin(&xtime_lock); | ||
429 | dyn_tick->reprogram(next_timer_interrupt() - jiffies); | 431 | dyn_tick->reprogram(next_timer_interrupt() - jiffies); |
430 | write_sequnlock(&xtime_lock); | 432 | } while (read_seqretry(&xtime_lock, seq)); |
431 | } | 433 | } |
432 | } | 434 | } |
433 | 435 | ||
diff --git a/arch/arm/mach-ixp4xx/nas100d-power.c b/arch/arm/mach-ixp4xx/nas100d-power.c index 2bec69bfa715..99d333d7ebdd 100644 --- a/arch/arm/mach-ixp4xx/nas100d-power.c +++ b/arch/arm/mach-ixp4xx/nas100d-power.c | |||
@@ -56,6 +56,9 @@ static int __init nas100d_power_init(void) | |||
56 | 56 | ||
57 | static void __exit nas100d_power_exit(void) | 57 | static void __exit nas100d_power_exit(void) |
58 | { | 58 | { |
59 | if (!(machine_is_nas100d())) | ||
60 | return; | ||
61 | |||
59 | free_irq(NAS100D_RB_IRQ, NULL); | 62 | free_irq(NAS100D_RB_IRQ, NULL); |
60 | } | 63 | } |
61 | 64 | ||
diff --git a/arch/arm/mm/tlb-v6.S b/arch/arm/mm/tlb-v6.S index 6f76b89ef46e..fd6adde39091 100644 --- a/arch/arm/mm/tlb-v6.S +++ b/arch/arm/mm/tlb-v6.S | |||
@@ -80,6 +80,7 @@ ENTRY(v6wbi_flush_kern_tlb_range) | |||
80 | add r0, r0, #PAGE_SZ | 80 | add r0, r0, #PAGE_SZ |
81 | cmp r0, r1 | 81 | cmp r0, r1 |
82 | blo 1b | 82 | blo 1b |
83 | mcr p15, 0, r2, c7, c10, 4 @ data synchronization barrier | ||
83 | mov pc, lr | 84 | mov pc, lr |
84 | 85 | ||
85 | .section ".text.init", #alloc, #execinstr | 86 | .section ".text.init", #alloc, #execinstr |
diff --git a/arch/h8300/kernel/process.c b/arch/h8300/kernel/process.c index ed79ae20e88d..dd344f112cfe 100644 --- a/arch/h8300/kernel/process.c +++ b/arch/h8300/kernel/process.c | |||
@@ -45,6 +45,9 @@ | |||
45 | #include <asm/setup.h> | 45 | #include <asm/setup.h> |
46 | #include <asm/pgtable.h> | 46 | #include <asm/pgtable.h> |
47 | 47 | ||
48 | void (*pm_power_off)(void) = NULL; | ||
49 | EXPORT_SYMBOL(pm_power_off); | ||
50 | |||
48 | asmlinkage void ret_from_fork(void); | 51 | asmlinkage void ret_from_fork(void); |
49 | 52 | ||
50 | /* | 53 | /* |
diff --git a/arch/i386/kernel/Makefile b/arch/i386/kernel/Makefile index 53bb9a79e274..65656c033d70 100644 --- a/arch/i386/kernel/Makefile +++ b/arch/i386/kernel/Makefile | |||
@@ -11,7 +11,7 @@ obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \ | |||
11 | 11 | ||
12 | obj-y += cpu/ | 12 | obj-y += cpu/ |
13 | obj-y += timers/ | 13 | obj-y += timers/ |
14 | obj-$(CONFIG_ACPI) += acpi/ | 14 | obj-y += acpi/ |
15 | obj-$(CONFIG_X86_BIOS_REBOOT) += reboot.o | 15 | obj-$(CONFIG_X86_BIOS_REBOOT) += reboot.o |
16 | obj-$(CONFIG_MCA) += mca.o | 16 | obj-$(CONFIG_MCA) += mca.o |
17 | obj-$(CONFIG_X86_MSR) += msr.o | 17 | obj-$(CONFIG_X86_MSR) += msr.o |
diff --git a/arch/i386/kernel/acpi/Makefile b/arch/i386/kernel/acpi/Makefile index d51c7313cae8..7e9ac99354f4 100644 --- a/arch/i386/kernel/acpi/Makefile +++ b/arch/i386/kernel/acpi/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | obj-y := boot.o | 1 | obj-$(CONFIG_ACPI) += boot.o |
2 | obj-$(CONFIG_X86_IO_APIC) += earlyquirk.o | 2 | obj-$(CONFIG_X86_IO_APIC) += earlyquirk.o |
3 | obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup.o | 3 | obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup.o |
4 | 4 | ||
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c index 79577f0ace98..f1a21945963d 100644 --- a/arch/i386/kernel/acpi/boot.c +++ b/arch/i386/kernel/acpi/boot.c | |||
@@ -1111,9 +1111,6 @@ int __init acpi_boot_table_init(void) | |||
1111 | disable_acpi(); | 1111 | disable_acpi(); |
1112 | return error; | 1112 | return error; |
1113 | } | 1113 | } |
1114 | #ifdef __i386__ | ||
1115 | check_acpi_pci(); | ||
1116 | #endif | ||
1117 | 1114 | ||
1118 | acpi_table_parse(ACPI_BOOT, acpi_parse_sbf); | 1115 | acpi_table_parse(ACPI_BOOT, acpi_parse_sbf); |
1119 | 1116 | ||
diff --git a/arch/i386/kernel/acpi/earlyquirk.c b/arch/i386/kernel/acpi/earlyquirk.c index f1b9d2a46dab..2e3b643a4dc4 100644 --- a/arch/i386/kernel/acpi/earlyquirk.c +++ b/arch/i386/kernel/acpi/earlyquirk.c | |||
@@ -7,14 +7,22 @@ | |||
7 | #include <linux/pci.h> | 7 | #include <linux/pci.h> |
8 | #include <asm/pci-direct.h> | 8 | #include <asm/pci-direct.h> |
9 | #include <asm/acpi.h> | 9 | #include <asm/acpi.h> |
10 | #include <asm/apic.h> | ||
10 | 11 | ||
11 | static int __init check_bridge(int vendor, int device) | 12 | static int __init check_bridge(int vendor, int device) |
12 | { | 13 | { |
14 | #ifdef CONFIG_ACPI | ||
13 | /* According to Nvidia all timer overrides are bogus. Just ignore | 15 | /* According to Nvidia all timer overrides are bogus. Just ignore |
14 | them all. */ | 16 | them all. */ |
15 | if (vendor == PCI_VENDOR_ID_NVIDIA) { | 17 | if (vendor == PCI_VENDOR_ID_NVIDIA) { |
16 | acpi_skip_timer_override = 1; | 18 | acpi_skip_timer_override = 1; |
17 | } | 19 | } |
20 | #endif | ||
21 | if (vendor == PCI_VENDOR_ID_ATI && timer_over_8254 == 1) { | ||
22 | timer_over_8254 = 0; | ||
23 | printk(KERN_INFO "ATI board detected. Disabling timer routing " | ||
24 | "over 8254.\n"); | ||
25 | } | ||
18 | return 0; | 26 | return 0; |
19 | } | 27 | } |
20 | 28 | ||
diff --git a/arch/i386/kernel/cpu/common.c b/arch/i386/kernel/cpu/common.c index 4ecd4b326ded..e6bd095ae108 100644 --- a/arch/i386/kernel/cpu/common.c +++ b/arch/i386/kernel/cpu/common.c | |||
@@ -278,10 +278,10 @@ void __devinit generic_identify(struct cpuinfo_x86 * c) | |||
278 | c->x86_capability[4] = excap; | 278 | c->x86_capability[4] = excap; |
279 | c->x86 = (tfms >> 8) & 15; | 279 | c->x86 = (tfms >> 8) & 15; |
280 | c->x86_model = (tfms >> 4) & 15; | 280 | c->x86_model = (tfms >> 4) & 15; |
281 | if (c->x86 == 0xf) { | 281 | if (c->x86 == 0xf) |
282 | c->x86 += (tfms >> 20) & 0xff; | 282 | c->x86 += (tfms >> 20) & 0xff; |
283 | if (c->x86 >= 0x6) | ||
283 | c->x86_model += ((tfms >> 16) & 0xF) << 4; | 284 | c->x86_model += ((tfms >> 16) & 0xF) << 4; |
284 | } | ||
285 | c->x86_mask = tfms & 15; | 285 | c->x86_mask = tfms & 15; |
286 | } else { | 286 | } else { |
287 | /* Have CPUID level 0 only - unheard of */ | 287 | /* Have CPUID level 0 only - unheard of */ |
diff --git a/arch/i386/kernel/efi.c b/arch/i386/kernel/efi.c index e3e42fd62401..c9cad7ba0d2d 100644 --- a/arch/i386/kernel/efi.c +++ b/arch/i386/kernel/efi.c | |||
@@ -70,10 +70,13 @@ static void efi_call_phys_prelog(void) | |||
70 | { | 70 | { |
71 | unsigned long cr4; | 71 | unsigned long cr4; |
72 | unsigned long temp; | 72 | unsigned long temp; |
73 | struct Xgt_desc_struct *cpu_gdt_descr; | ||
73 | 74 | ||
74 | spin_lock(&efi_rt_lock); | 75 | spin_lock(&efi_rt_lock); |
75 | local_irq_save(efi_rt_eflags); | 76 | local_irq_save(efi_rt_eflags); |
76 | 77 | ||
78 | cpu_gdt_descr = &per_cpu(cpu_gdt_descr, 0); | ||
79 | |||
77 | /* | 80 | /* |
78 | * If I don't have PSE, I should just duplicate two entries in page | 81 | * If I don't have PSE, I should just duplicate two entries in page |
79 | * directory. If I have PSE, I just need to duplicate one entry in | 82 | * directory. If I have PSE, I just need to duplicate one entry in |
@@ -103,18 +106,17 @@ static void efi_call_phys_prelog(void) | |||
103 | */ | 106 | */ |
104 | local_flush_tlb(); | 107 | local_flush_tlb(); |
105 | 108 | ||
106 | per_cpu(cpu_gdt_descr, 0).address = | 109 | cpu_gdt_descr->address = __pa(cpu_gdt_descr->address); |
107 | __pa(per_cpu(cpu_gdt_descr, 0).address); | 110 | load_gdt(cpu_gdt_descr); |
108 | load_gdt((struct Xgt_desc_struct *)__pa(&per_cpu(cpu_gdt_descr, 0))); | ||
109 | } | 111 | } |
110 | 112 | ||
111 | static void efi_call_phys_epilog(void) | 113 | static void efi_call_phys_epilog(void) |
112 | { | 114 | { |
113 | unsigned long cr4; | 115 | unsigned long cr4; |
116 | struct Xgt_desc_struct *cpu_gdt_descr = &per_cpu(cpu_gdt_descr, 0); | ||
114 | 117 | ||
115 | per_cpu(cpu_gdt_descr, 0).address = | 118 | cpu_gdt_descr->address = __va(cpu_gdt_descr->address); |
116 | (unsigned long)__va(per_cpu(cpu_gdt_descr, 0).address); | 119 | load_gdt(cpu_gdt_descr); |
117 | load_gdt((struct Xgt_desc_struct *)__va(&per_cpu(cpu_gdt_descr, 0))); | ||
118 | 120 | ||
119 | cr4 = read_cr4(); | 121 | cr4 = read_cr4(); |
120 | 122 | ||
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c index 235822b3f41b..39d9a5fa907e 100644 --- a/arch/i386/kernel/io_apic.c +++ b/arch/i386/kernel/io_apic.c | |||
@@ -51,6 +51,8 @@ static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; | |||
51 | 51 | ||
52 | static DEFINE_SPINLOCK(ioapic_lock); | 52 | static DEFINE_SPINLOCK(ioapic_lock); |
53 | 53 | ||
54 | int timer_over_8254 __initdata = 1; | ||
55 | |||
54 | /* | 56 | /* |
55 | * Is the SiS APIC rmw bug present ? | 57 | * Is the SiS APIC rmw bug present ? |
56 | * -1 = don't know, 0 = no, 1 = yes | 58 | * -1 = don't know, 0 = no, 1 = yes |
@@ -2267,7 +2269,8 @@ static inline void check_timer(void) | |||
2267 | apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); | 2269 | apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); |
2268 | init_8259A(1); | 2270 | init_8259A(1); |
2269 | timer_ack = 1; | 2271 | timer_ack = 1; |
2270 | enable_8259A_irq(0); | 2272 | if (timer_over_8254 > 0) |
2273 | enable_8259A_irq(0); | ||
2271 | 2274 | ||
2272 | pin1 = find_isa_irq_pin(0, mp_INT); | 2275 | pin1 = find_isa_irq_pin(0, mp_INT); |
2273 | apic1 = find_isa_irq_apic(0, mp_INT); | 2276 | apic1 = find_isa_irq_apic(0, mp_INT); |
@@ -2392,6 +2395,20 @@ void __init setup_IO_APIC(void) | |||
2392 | print_IO_APIC(); | 2395 | print_IO_APIC(); |
2393 | } | 2396 | } |
2394 | 2397 | ||
2398 | static int __init setup_disable_8254_timer(char *s) | ||
2399 | { | ||
2400 | timer_over_8254 = -1; | ||
2401 | return 1; | ||
2402 | } | ||
2403 | static int __init setup_enable_8254_timer(char *s) | ||
2404 | { | ||
2405 | timer_over_8254 = 2; | ||
2406 | return 1; | ||
2407 | } | ||
2408 | |||
2409 | __setup("disable_8254_timer", setup_disable_8254_timer); | ||
2410 | __setup("enable_8254_timer", setup_enable_8254_timer); | ||
2411 | |||
2395 | /* | 2412 | /* |
2396 | * Called after all the initialization is done. If we didnt find any | 2413 | * Called after all the initialization is done. If we didnt find any |
2397 | * APIC bugs then we can allow the modify fast path | 2414 | * APIC bugs then we can allow the modify fast path |
diff --git a/arch/i386/kernel/machine_kexec.c b/arch/i386/kernel/machine_kexec.c index a912fed48482..f73d7374a2ba 100644 --- a/arch/i386/kernel/machine_kexec.c +++ b/arch/i386/kernel/machine_kexec.c | |||
@@ -116,13 +116,13 @@ static void load_segments(void) | |||
116 | __asm__ __volatile__ ( | 116 | __asm__ __volatile__ ( |
117 | "\tljmp $"STR(__KERNEL_CS)",$1f\n" | 117 | "\tljmp $"STR(__KERNEL_CS)",$1f\n" |
118 | "\t1:\n" | 118 | "\t1:\n" |
119 | "\tmovl $"STR(__KERNEL_DS)",%eax\n" | 119 | "\tmovl $"STR(__KERNEL_DS)",%%eax\n" |
120 | "\tmovl %eax,%ds\n" | 120 | "\tmovl %%eax,%%ds\n" |
121 | "\tmovl %eax,%es\n" | 121 | "\tmovl %%eax,%%es\n" |
122 | "\tmovl %eax,%fs\n" | 122 | "\tmovl %%eax,%%fs\n" |
123 | "\tmovl %eax,%gs\n" | 123 | "\tmovl %%eax,%%gs\n" |
124 | "\tmovl %eax,%ss\n" | 124 | "\tmovl %%eax,%%ss\n" |
125 | ); | 125 | ::: "eax", "memory"); |
126 | #undef STR | 126 | #undef STR |
127 | #undef __STR | 127 | #undef __STR |
128 | } | 128 | } |
diff --git a/arch/i386/kernel/nmi.c b/arch/i386/kernel/nmi.c index 63f39a7e2c96..be87c5e2ee95 100644 --- a/arch/i386/kernel/nmi.c +++ b/arch/i386/kernel/nmi.c | |||
@@ -357,7 +357,7 @@ static void clear_msr_range(unsigned int base, unsigned int n) | |||
357 | wrmsr(base+i, 0, 0); | 357 | wrmsr(base+i, 0, 0); |
358 | } | 358 | } |
359 | 359 | ||
360 | static inline void write_watchdog_counter(const char *descr) | 360 | static void write_watchdog_counter(const char *descr) |
361 | { | 361 | { |
362 | u64 count = (u64)cpu_khz * 1000; | 362 | u64 count = (u64)cpu_khz * 1000; |
363 | 363 | ||
@@ -544,7 +544,7 @@ void nmi_watchdog_tick (struct pt_regs * regs) | |||
544 | * die_nmi will return ONLY if NOTIFY_STOP happens.. | 544 | * die_nmi will return ONLY if NOTIFY_STOP happens.. |
545 | */ | 545 | */ |
546 | die_nmi(regs, "NMI Watchdog detected LOCKUP"); | 546 | die_nmi(regs, "NMI Watchdog detected LOCKUP"); |
547 | 547 | } else { | |
548 | last_irq_sums[cpu] = sum; | 548 | last_irq_sums[cpu] = sum; |
549 | alert_counter[cpu] = 0; | 549 | alert_counter[cpu] = 0; |
550 | } | 550 | } |
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c index 51e513b4f72d..ab62a9f4701e 100644 --- a/arch/i386/kernel/setup.c +++ b/arch/i386/kernel/setup.c | |||
@@ -1599,6 +1599,10 @@ void __init setup_arch(char **cmdline_p) | |||
1599 | if (efi_enabled) | 1599 | if (efi_enabled) |
1600 | efi_map_memmap(); | 1600 | efi_map_memmap(); |
1601 | 1601 | ||
1602 | #ifdef CONFIG_X86_IO_APIC | ||
1603 | check_acpi_pci(); /* Checks more than just ACPI actually */ | ||
1604 | #endif | ||
1605 | |||
1602 | #ifdef CONFIG_ACPI | 1606 | #ifdef CONFIG_ACPI |
1603 | /* | 1607 | /* |
1604 | * Parse the ACPI tables for possible boot-time SMP configuration. | 1608 | * Parse the ACPI tables for possible boot-time SMP configuration. |
diff --git a/arch/i386/kernel/time.c b/arch/i386/kernel/time.c index a14d594bfbeb..9d3074759856 100644 --- a/arch/i386/kernel/time.c +++ b/arch/i386/kernel/time.c | |||
@@ -412,9 +412,9 @@ static int timer_resume(struct sys_device *dev) | |||
412 | write_seqlock_irqsave(&xtime_lock, flags); | 412 | write_seqlock_irqsave(&xtime_lock, flags); |
413 | xtime.tv_sec = sec; | 413 | xtime.tv_sec = sec; |
414 | xtime.tv_nsec = 0; | 414 | xtime.tv_nsec = 0; |
415 | write_sequnlock_irqrestore(&xtime_lock, flags); | 415 | jiffies_64 += sleep_length; |
416 | jiffies += sleep_length; | ||
417 | wall_jiffies += sleep_length; | 416 | wall_jiffies += sleep_length; |
417 | write_sequnlock_irqrestore(&xtime_lock, flags); | ||
418 | if (last_timer->resume) | 418 | if (last_timer->resume) |
419 | last_timer->resume(); | 419 | last_timer->resume(); |
420 | cur_timer = last_timer; | 420 | cur_timer = last_timer; |
diff --git a/arch/ia64/configs/gensparse_defconfig b/arch/ia64/configs/gensparse_defconfig index 184678fe7832..744fd2f79f61 100644 --- a/arch/ia64/configs/gensparse_defconfig +++ b/arch/ia64/configs/gensparse_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.16-rc5 | 3 | # Linux kernel version: 2.6.16-rc5 |
4 | # Mon Feb 27 16:15:43 2006 | 4 | # Thu Mar 2 16:39:10 2006 |
5 | # | 5 | # |
6 | 6 | ||
7 | # | 7 | # |
@@ -312,7 +312,13 @@ CONFIG_FW_LOADER=m | |||
312 | # | 312 | # |
313 | # Plug and Play support | 313 | # Plug and Play support |
314 | # | 314 | # |
315 | # CONFIG_PNP is not set | 315 | CONFIG_PNP=y |
316 | # CONFIG_PNP_DEBUG is not set | ||
317 | |||
318 | # | ||
319 | # Protocols | ||
320 | # | ||
321 | CONFIG_PNPACPI=y | ||
316 | 322 | ||
317 | # | 323 | # |
318 | # Block devices | 324 | # Block devices |
@@ -357,6 +363,7 @@ CONFIG_BLK_DEV_IDESCSI=m | |||
357 | # IDE chipset support/bugfixes | 363 | # IDE chipset support/bugfixes |
358 | # | 364 | # |
359 | CONFIG_IDE_GENERIC=y | 365 | CONFIG_IDE_GENERIC=y |
366 | # CONFIG_BLK_DEV_IDEPNP is not set | ||
360 | CONFIG_BLK_DEV_IDEPCI=y | 367 | CONFIG_BLK_DEV_IDEPCI=y |
361 | # CONFIG_IDEPCI_SHARE_IRQ is not set | 368 | # CONFIG_IDEPCI_SHARE_IRQ is not set |
362 | # CONFIG_BLK_DEV_OFFBOARD is not set | 369 | # CONFIG_BLK_DEV_OFFBOARD is not set |
@@ -525,6 +532,7 @@ CONFIG_DUMMY=m | |||
525 | # CONFIG_BONDING is not set | 532 | # CONFIG_BONDING is not set |
526 | # CONFIG_EQUALIZER is not set | 533 | # CONFIG_EQUALIZER is not set |
527 | # CONFIG_TUN is not set | 534 | # CONFIG_TUN is not set |
535 | # CONFIG_NET_SB1000 is not set | ||
528 | 536 | ||
529 | # | 537 | # |
530 | # ARCnet devices | 538 | # ARCnet devices |
diff --git a/arch/ia64/kernel/cyclone.c b/arch/ia64/kernel/cyclone.c index 6ade3790ce07..e00b21514f7c 100644 --- a/arch/ia64/kernel/cyclone.c +++ b/arch/ia64/kernel/cyclone.c | |||
@@ -36,7 +36,7 @@ int __init init_cyclone_clock(void) | |||
36 | u32* volatile cyclone_timer; /* Cyclone MPMC0 register */ | 36 | u32* volatile cyclone_timer; /* Cyclone MPMC0 register */ |
37 | 37 | ||
38 | if (!use_cyclone) | 38 | if (!use_cyclone) |
39 | return -ENODEV; | 39 | return 0; |
40 | 40 | ||
41 | printk(KERN_INFO "Summit chipset: Starting Cyclone Counter.\n"); | 41 | printk(KERN_INFO "Summit chipset: Starting Cyclone Counter.\n"); |
42 | 42 | ||
diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c index 8fd93afa75a7..e883d85906db 100644 --- a/arch/ia64/kernel/mca_drv.c +++ b/arch/ia64/kernel/mca_drv.c | |||
@@ -123,8 +123,9 @@ mca_page_isolate(unsigned long paddr) | |||
123 | void | 123 | void |
124 | mca_handler_bh(unsigned long paddr) | 124 | mca_handler_bh(unsigned long paddr) |
125 | { | 125 | { |
126 | printk(KERN_DEBUG "OS_MCA: process [pid: %d](%s) encounters MCA.\n", | 126 | printk(KERN_ERR |
127 | current->pid, current->comm); | 127 | "OS_MCA: process [pid: %d](%s) encounters MCA (paddr=%lx)\n", |
128 | current->pid, current->comm, paddr); | ||
128 | 129 | ||
129 | spin_lock(&mca_bh_lock); | 130 | spin_lock(&mca_bh_lock); |
130 | switch (mca_page_isolate(paddr)) { | 131 | switch (mca_page_isolate(paddr)) { |
@@ -132,7 +133,7 @@ mca_handler_bh(unsigned long paddr) | |||
132 | printk(KERN_DEBUG "Page isolation: ( %lx ) success.\n", paddr); | 133 | printk(KERN_DEBUG "Page isolation: ( %lx ) success.\n", paddr); |
133 | break; | 134 | break; |
134 | case ISOLATE_NG: | 135 | case ISOLATE_NG: |
135 | printk(KERN_DEBUG "Page isolation: ( %lx ) failure.\n", paddr); | 136 | printk(KERN_CRIT "Page isolation: ( %lx ) failure.\n", paddr); |
136 | break; | 137 | break; |
137 | default: | 138 | default: |
138 | break; | 139 | break; |
@@ -567,10 +568,15 @@ recover_from_processor_error(int platform, slidx_table_t *slidx, | |||
567 | return 0; | 568 | return 0; |
568 | 569 | ||
569 | /* | 570 | /* |
570 | * If there is no bus error, record is weird but we need not to recover. | 571 | * The cache check and bus check bits have four possible states |
572 | * cc bc | ||
573 | * 0 0 Weird record, not recovered | ||
574 | * 1 0 Cache error, not recovered | ||
575 | * 0 1 I/O error, attempt recovery | ||
576 | * 1 1 Memory error, attempt recovery | ||
571 | */ | 577 | */ |
572 | if (psp->bc == 0 || pbci == NULL) | 578 | if (psp->bc == 0 || pbci == NULL) |
573 | return 1; | 579 | return 0; |
574 | 580 | ||
575 | /* | 581 | /* |
576 | * Sorry, we cannot handle so many. | 582 | * Sorry, we cannot handle so many. |
diff --git a/arch/ia64/sn/kernel/sn2/sn2_smp.c b/arch/ia64/sn/kernel/sn2/sn2_smp.c index 24eefb2fc55f..b2e1e746b47f 100644 --- a/arch/ia64/sn/kernel/sn2/sn2_smp.c +++ b/arch/ia64/sn/kernel/sn2/sn2_smp.c | |||
@@ -446,7 +446,7 @@ static struct proc_dir_entry *proc_sn2_ptc; | |||
446 | static int __init sn2_ptc_init(void) | 446 | static int __init sn2_ptc_init(void) |
447 | { | 447 | { |
448 | if (!ia64_platform_is("sn2")) | 448 | if (!ia64_platform_is("sn2")) |
449 | return -ENOSYS; | 449 | return 0; |
450 | 450 | ||
451 | if (!(proc_sn2_ptc = create_proc_entry(PTC_BASENAME, 0444, NULL))) { | 451 | if (!(proc_sn2_ptc = create_proc_entry(PTC_BASENAME, 0444, NULL))) { |
452 | printk(KERN_ERR "unable to create %s proc entry", PTC_BASENAME); | 452 | printk(KERN_ERR "unable to create %s proc entry", PTC_BASENAME); |
diff --git a/arch/ia64/sn/kernel/tiocx.c b/arch/ia64/sn/kernel/tiocx.c index 8a56f8b5ffa2..99cb28e74295 100644 --- a/arch/ia64/sn/kernel/tiocx.c +++ b/arch/ia64/sn/kernel/tiocx.c | |||
@@ -484,7 +484,7 @@ static int __init tiocx_init(void) | |||
484 | int found_tiocx_device = 0; | 484 | int found_tiocx_device = 0; |
485 | 485 | ||
486 | if (!ia64_platform_is("sn2")) | 486 | if (!ia64_platform_is("sn2")) |
487 | return -ENODEV; | 487 | return 0; |
488 | 488 | ||
489 | bus_register(&tiocx_bus_type); | 489 | bus_register(&tiocx_bus_type); |
490 | 490 | ||
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S index 11f2cd5af7dc..9b65029dd2a3 100644 --- a/arch/powerpc/kernel/head_64.S +++ b/arch/powerpc/kernel/head_64.S | |||
@@ -1537,6 +1537,9 @@ _STATIC(__boot_from_prom) | |||
1537 | mr r28,r6 | 1537 | mr r28,r6 |
1538 | mr r27,r7 | 1538 | mr r27,r7 |
1539 | 1539 | ||
1540 | /* Align the stack to 16-byte boundary for broken yaboot */ | ||
1541 | rldicr r1,r1,0,59 | ||
1542 | |||
1540 | /* Make sure we are running in 64 bits mode */ | 1543 | /* Make sure we are running in 64 bits mode */ |
1541 | bl .enable_64b_mode | 1544 | bl .enable_64b_mode |
1542 | 1545 | ||
diff --git a/arch/s390/lib/uaccess.S b/arch/s390/lib/uaccess.S index 88fc94fe6488..5d59e2625048 100644 --- a/arch/s390/lib/uaccess.S +++ b/arch/s390/lib/uaccess.S | |||
@@ -198,12 +198,12 @@ __strnlen_user_asm: | |||
198 | 0: srst %r2,%r1 | 198 | 0: srst %r2,%r1 |
199 | jo 0b | 199 | jo 0b |
200 | sacf 0 | 200 | sacf 0 |
201 | jh 1f # \0 found in string ? | ||
202 | ahi %r2,1 # strnlen_user result includes the \0 | 201 | ahi %r2,1 # strnlen_user result includes the \0 |
203 | 1: slr %r2,%r3 | 202 | # or return count+1 if \0 not found |
203 | slr %r2,%r3 | ||
204 | br %r14 | 204 | br %r14 |
205 | 2: sacf 0 | 205 | 2: sacf 0 |
206 | lhi %r2,-EFAULT | 206 | slr %r2,%r2 # return 0 on exception |
207 | br %r14 | 207 | br %r14 |
208 | .section __ex_table,"a" | 208 | .section __ex_table,"a" |
209 | .long 0b,2b | 209 | .long 0b,2b |
diff --git a/arch/s390/lib/uaccess64.S b/arch/s390/lib/uaccess64.S index 50219786fc7a..19b41a33c230 100644 --- a/arch/s390/lib/uaccess64.S +++ b/arch/s390/lib/uaccess64.S | |||
@@ -194,12 +194,12 @@ __strnlen_user_asm: | |||
194 | 0: srst %r2,%r1 | 194 | 0: srst %r2,%r1 |
195 | jo 0b | 195 | jo 0b |
196 | sacf 0 | 196 | sacf 0 |
197 | jh 1f # \0 found in string ? | ||
198 | aghi %r2,1 # strnlen_user result includes the \0 | 197 | aghi %r2,1 # strnlen_user result includes the \0 |
199 | 1: slgr %r2,%r3 | 198 | # or return count+1 if \0 not found |
199 | slgr %r2,%r3 | ||
200 | br %r14 | 200 | br %r14 |
201 | 2: sacf 0 | 201 | 2: sacf 0 |
202 | lghi %r2,-EFAULT | 202 | slgr %r2,%r2 # return 0 on exception |
203 | br %r14 | 203 | br %r14 |
204 | .section __ex_table,"a" | 204 | .section __ex_table,"a" |
205 | .quad 0b,2b | 205 | .quad 0b,2b |
diff --git a/arch/sparc64/kernel/sys32.S b/arch/sparc64/kernel/sys32.S index 60b59375aa78..c4a1cef4b1e5 100644 --- a/arch/sparc64/kernel/sys32.S +++ b/arch/sparc64/kernel/sys32.S | |||
@@ -318,7 +318,7 @@ do_sys_recvmsg: /* compat_sys_recvmsg(int, struct compat_msghdr *, unsigned int) | |||
318 | nop | 318 | nop |
319 | nop | 319 | nop |
320 | 320 | ||
321 | .section __ex_table | 321 | .section __ex_table,"a" |
322 | .align 4 | 322 | .align 4 |
323 | .word 1b, __retl_efault, 2b, __retl_efault | 323 | .word 1b, __retl_efault, 2b, __retl_efault |
324 | .word 3b, __retl_efault, 4b, __retl_efault | 324 | .word 3b, __retl_efault, 4b, __retl_efault |
diff --git a/arch/sparc64/kernel/una_asm.S b/arch/sparc64/kernel/una_asm.S index 1f5b5b708ce7..be183fe41443 100644 --- a/arch/sparc64/kernel/una_asm.S +++ b/arch/sparc64/kernel/una_asm.S | |||
@@ -47,7 +47,7 @@ __do_int_store: | |||
47 | mov 0, %o0 | 47 | mov 0, %o0 |
48 | .size __do_int_store, .-__do_int_store | 48 | .size __do_int_store, .-__do_int_store |
49 | 49 | ||
50 | .section __ex_table | 50 | .section __ex_table,"a" |
51 | .word 4b, __retl_efault | 51 | .word 4b, __retl_efault |
52 | .word 5b, __retl_efault | 52 | .word 5b, __retl_efault |
53 | .word 6b, __retl_efault | 53 | .word 6b, __retl_efault |
@@ -129,7 +129,7 @@ do_int_load: | |||
129 | mov 0, %o0 | 129 | mov 0, %o0 |
130 | .size __do_int_load, .-__do_int_load | 130 | .size __do_int_load, .-__do_int_load |
131 | 131 | ||
132 | .section __ex_table | 132 | .section __ex_table,"a" |
133 | .word 4b, __retl_efault | 133 | .word 4b, __retl_efault |
134 | .word 5b, __retl_efault | 134 | .word 5b, __retl_efault |
135 | .word 6b, __retl_efault | 135 | .word 6b, __retl_efault |
diff --git a/arch/sparc64/lib/U1copy_from_user.S b/arch/sparc64/lib/U1copy_from_user.S index 93146a81e2d3..3192b0bf4fab 100644 --- a/arch/sparc64/lib/U1copy_from_user.S +++ b/arch/sparc64/lib/U1copy_from_user.S | |||
@@ -9,7 +9,7 @@ | |||
9 | .align 4; \ | 9 | .align 4; \ |
10 | 99: retl; \ | 10 | 99: retl; \ |
11 | mov 1, %o0; \ | 11 | mov 1, %o0; \ |
12 | .section __ex_table; \ | 12 | .section __ex_table,"a";\ |
13 | .align 4; \ | 13 | .align 4; \ |
14 | .word 98b, 99b; \ | 14 | .word 98b, 99b; \ |
15 | .text; \ | 15 | .text; \ |
diff --git a/arch/sparc64/lib/U1copy_to_user.S b/arch/sparc64/lib/U1copy_to_user.S index 1fccc521e2bd..d1210ffb0b82 100644 --- a/arch/sparc64/lib/U1copy_to_user.S +++ b/arch/sparc64/lib/U1copy_to_user.S | |||
@@ -9,7 +9,7 @@ | |||
9 | .align 4; \ | 9 | .align 4; \ |
10 | 99: retl; \ | 10 | 99: retl; \ |
11 | mov 1, %o0; \ | 11 | mov 1, %o0; \ |
12 | .section __ex_table; \ | 12 | .section __ex_table,"a";\ |
13 | .align 4; \ | 13 | .align 4; \ |
14 | .word 98b, 99b; \ | 14 | .word 98b, 99b; \ |
15 | .text; \ | 15 | .text; \ |
diff --git a/arch/sparc64/lib/U3copy_from_user.S b/arch/sparc64/lib/U3copy_from_user.S index df600b667e48..f5bfc8d9d216 100644 --- a/arch/sparc64/lib/U3copy_from_user.S +++ b/arch/sparc64/lib/U3copy_from_user.S | |||
@@ -9,7 +9,7 @@ | |||
9 | .align 4; \ | 9 | .align 4; \ |
10 | 99: retl; \ | 10 | 99: retl; \ |
11 | mov 1, %o0; \ | 11 | mov 1, %o0; \ |
12 | .section __ex_table; \ | 12 | .section __ex_table,"a";\ |
13 | .align 4; \ | 13 | .align 4; \ |
14 | .word 98b, 99b; \ | 14 | .word 98b, 99b; \ |
15 | .text; \ | 15 | .text; \ |
diff --git a/arch/sparc64/lib/U3copy_to_user.S b/arch/sparc64/lib/U3copy_to_user.S index f337f22ed82e..2334f111bb0c 100644 --- a/arch/sparc64/lib/U3copy_to_user.S +++ b/arch/sparc64/lib/U3copy_to_user.S | |||
@@ -9,7 +9,7 @@ | |||
9 | .align 4; \ | 9 | .align 4; \ |
10 | 99: retl; \ | 10 | 99: retl; \ |
11 | mov 1, %o0; \ | 11 | mov 1, %o0; \ |
12 | .section __ex_table; \ | 12 | .section __ex_table,"a";\ |
13 | .align 4; \ | 13 | .align 4; \ |
14 | .word 98b, 99b; \ | 14 | .word 98b, 99b; \ |
15 | .text; \ | 15 | .text; \ |
diff --git a/arch/sparc64/lib/bzero.S b/arch/sparc64/lib/bzero.S index 21a933ffb7c2..1d2abcfa4e52 100644 --- a/arch/sparc64/lib/bzero.S +++ b/arch/sparc64/lib/bzero.S | |||
@@ -92,7 +92,7 @@ __bzero_done: | |||
92 | .align 4; \ | 92 | .align 4; \ |
93 | 99: retl; \ | 93 | 99: retl; \ |
94 | mov %o1, %o0; \ | 94 | mov %o1, %o0; \ |
95 | .section __ex_table; \ | 95 | .section __ex_table,"a";\ |
96 | .align 4; \ | 96 | .align 4; \ |
97 | .word 98b, 99b; \ | 97 | .word 98b, 99b; \ |
98 | .text; \ | 98 | .text; \ |
diff --git a/arch/sparc64/lib/copy_in_user.S b/arch/sparc64/lib/copy_in_user.S index 816076c0bc06..650af3f21f78 100644 --- a/arch/sparc64/lib/copy_in_user.S +++ b/arch/sparc64/lib/copy_in_user.S | |||
@@ -13,7 +13,7 @@ | |||
13 | .align 4; \ | 13 | .align 4; \ |
14 | 99: retl; \ | 14 | 99: retl; \ |
15 | mov 1, %o0; \ | 15 | mov 1, %o0; \ |
16 | .section __ex_table; \ | 16 | .section __ex_table,"a";\ |
17 | .align 4; \ | 17 | .align 4; \ |
18 | .word 98b, 99b; \ | 18 | .word 98b, 99b; \ |
19 | .text; \ | 19 | .text; \ |
diff --git a/arch/sparc64/lib/csum_copy_from_user.S b/arch/sparc64/lib/csum_copy_from_user.S index 817ebdae39f8..a22eddbe5dba 100644 --- a/arch/sparc64/lib/csum_copy_from_user.S +++ b/arch/sparc64/lib/csum_copy_from_user.S | |||
@@ -9,7 +9,7 @@ | |||
9 | .align 4; \ | 9 | .align 4; \ |
10 | 99: retl; \ | 10 | 99: retl; \ |
11 | mov -1, %o0; \ | 11 | mov -1, %o0; \ |
12 | .section __ex_table; \ | 12 | .section __ex_table,"a";\ |
13 | .align 4; \ | 13 | .align 4; \ |
14 | .word 98b, 99b; \ | 14 | .word 98b, 99b; \ |
15 | .text; \ | 15 | .text; \ |
diff --git a/arch/sparc64/lib/csum_copy_to_user.S b/arch/sparc64/lib/csum_copy_to_user.S index c2f9463ea1e2..d5b12f441f02 100644 --- a/arch/sparc64/lib/csum_copy_to_user.S +++ b/arch/sparc64/lib/csum_copy_to_user.S | |||
@@ -9,7 +9,7 @@ | |||
9 | .align 4; \ | 9 | .align 4; \ |
10 | 99: retl; \ | 10 | 99: retl; \ |
11 | mov -1, %o0; \ | 11 | mov -1, %o0; \ |
12 | .section __ex_table; \ | 12 | .section __ex_table,"a";\ |
13 | .align 4; \ | 13 | .align 4; \ |
14 | .word 98b, 99b; \ | 14 | .word 98b, 99b; \ |
15 | .text; \ | 15 | .text; \ |
diff --git a/arch/sparc64/lib/strlen_user.S b/arch/sparc64/lib/strlen_user.S index 9ed54ba14fc6..114ed111e251 100644 --- a/arch/sparc64/lib/strlen_user.S +++ b/arch/sparc64/lib/strlen_user.S | |||
@@ -85,7 +85,7 @@ __strnlen_user: | |||
85 | retl | 85 | retl |
86 | clr %o0 | 86 | clr %o0 |
87 | 87 | ||
88 | .section __ex_table,#alloc | 88 | .section __ex_table,"a" |
89 | .align 4 | 89 | .align 4 |
90 | 90 | ||
91 | .word 10b, 30b | 91 | .word 10b, 30b |
diff --git a/arch/sparc64/lib/strncpy_from_user.S b/arch/sparc64/lib/strncpy_from_user.S index e1264650ca7a..b2f499f79427 100644 --- a/arch/sparc64/lib/strncpy_from_user.S +++ b/arch/sparc64/lib/strncpy_from_user.S | |||
@@ -125,7 +125,7 @@ __strncpy_from_user: | |||
125 | add %o2, %o3, %o0 | 125 | add %o2, %o3, %o0 |
126 | .size __strncpy_from_user, .-__strncpy_from_user | 126 | .size __strncpy_from_user, .-__strncpy_from_user |
127 | 127 | ||
128 | .section __ex_table,#alloc | 128 | .section __ex_table,"a" |
129 | .align 4 | 129 | .align 4 |
130 | .word 60b, __retl_efault | 130 | .word 60b, __retl_efault |
131 | .word 61b, __retl_efault | 131 | .word 61b, __retl_efault |
diff --git a/arch/sparc64/solaris/entry64.S b/arch/sparc64/solaris/entry64.S index eb314ed23cdb..f170324e8bf2 100644 --- a/arch/sparc64/solaris/entry64.S +++ b/arch/sparc64/solaris/entry64.S | |||
@@ -217,7 +217,7 @@ solaris_unimplemented: | |||
217 | ba,pt %xcc, ret_from_solaris | 217 | ba,pt %xcc, ret_from_solaris |
218 | nop | 218 | nop |
219 | 219 | ||
220 | .section __ex_table,#alloc | 220 | .section __ex_table,"a" |
221 | .align 4 | 221 | .align 4 |
222 | .word exen, exenf | 222 | .word exen, exenf |
223 | 223 | ||
diff --git a/arch/v850/kernel/process.c b/arch/v850/kernel/process.c index eb909937958b..621111ddf907 100644 --- a/arch/v850/kernel/process.c +++ b/arch/v850/kernel/process.c | |||
@@ -30,6 +30,9 @@ | |||
30 | #include <asm/system.h> | 30 | #include <asm/system.h> |
31 | #include <asm/pgtable.h> | 31 | #include <asm/pgtable.h> |
32 | 32 | ||
33 | void (*pm_power_off)(void) = NULL; | ||
34 | EXPORT_SYMBOL(pm_power_off); | ||
35 | |||
33 | extern void ret_from_fork (void); | 36 | extern void ret_from_fork (void); |
34 | 37 | ||
35 | 38 | ||
diff --git a/arch/x86_64/kernel/machine_kexec.c b/arch/x86_64/kernel/machine_kexec.c index 89fab51e20f4..25ac8a3faae6 100644 --- a/arch/x86_64/kernel/machine_kexec.c +++ b/arch/x86_64/kernel/machine_kexec.c | |||
@@ -140,7 +140,7 @@ static void load_segments(void) | |||
140 | "\tmovl %0,%%ss\n" | 140 | "\tmovl %0,%%ss\n" |
141 | "\tmovl %0,%%fs\n" | 141 | "\tmovl %0,%%fs\n" |
142 | "\tmovl %0,%%gs\n" | 142 | "\tmovl %0,%%gs\n" |
143 | : : "a" (__KERNEL_DS) | 143 | : : "a" (__KERNEL_DS) : "memory" |
144 | ); | 144 | ); |
145 | } | 145 | } |
146 | 146 | ||
diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c index f1f596644bfc..64a649eb883f 100644 --- a/arch/xtensa/kernel/process.c +++ b/arch/xtensa/kernel/process.c | |||
@@ -64,6 +64,9 @@ EXPORT_SYMBOL(init_task); | |||
64 | 64 | ||
65 | struct task_struct *current_set[NR_CPUS] = {&init_task, }; | 65 | struct task_struct *current_set[NR_CPUS] = {&init_task, }; |
66 | 66 | ||
67 | void (*pm_power_off)(void) = NULL; | ||
68 | EXPORT_SYMBOL(pm_power_off); | ||
69 | |||
67 | 70 | ||
68 | #if XCHAL_CP_NUM > 0 | 71 | #if XCHAL_CP_NUM > 0 |
69 | 72 | ||