diff options
Diffstat (limited to 'arch')
69 files changed, 1085 insertions, 277 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 2db42b18f53f..8517c3c3eb33 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -436,7 +436,7 @@ __und_usr: | |||
436 | usr_entry | 436 | usr_entry |
437 | 437 | ||
438 | tst r3, #PSR_T_BIT @ Thumb mode? | 438 | tst r3, #PSR_T_BIT @ Thumb mode? |
439 | bne fpundefinstr @ ignore FP | 439 | bne __und_usr_unknown @ ignore FP |
440 | sub r4, r2, #4 | 440 | sub r4, r2, #4 |
441 | 441 | ||
442 | @ | 442 | @ |
@@ -448,7 +448,7 @@ __und_usr: | |||
448 | @ | 448 | @ |
449 | 1: ldrt r0, [r4] | 449 | 1: ldrt r0, [r4] |
450 | adr r9, ret_from_exception | 450 | adr r9, ret_from_exception |
451 | adr lr, fpundefinstr | 451 | adr lr, __und_usr_unknown |
452 | @ | 452 | @ |
453 | @ fallthrough to call_fpe | 453 | @ fallthrough to call_fpe |
454 | @ | 454 | @ |
@@ -476,7 +476,9 @@ __und_usr: | |||
476 | * Emulators may wish to make use of the following registers: | 476 | * Emulators may wish to make use of the following registers: |
477 | * r0 = instruction opcode. | 477 | * r0 = instruction opcode. |
478 | * r2 = PC+4 | 478 | * r2 = PC+4 |
479 | * r9 = normal "successful" return address | ||
479 | * r10 = this threads thread_info structure. | 480 | * r10 = this threads thread_info structure. |
481 | * lr = unrecognised instruction return address | ||
480 | */ | 482 | */ |
481 | call_fpe: | 483 | call_fpe: |
482 | tst r0, #0x08000000 @ only CDP/CPRT/LDC/STC have bit 27 | 484 | tst r0, #0x08000000 @ only CDP/CPRT/LDC/STC have bit 27 |
@@ -545,10 +547,12 @@ do_fpe: | |||
545 | 547 | ||
546 | .data | 548 | .data |
547 | ENTRY(fp_enter) | 549 | ENTRY(fp_enter) |
548 | .word fpundefinstr | 550 | .word no_fp |
549 | .text | 551 | .text |
550 | 552 | ||
551 | fpundefinstr: | 553 | no_fp: mov pc, lr |
554 | |||
555 | __und_usr_unknown: | ||
552 | mov r0, sp | 556 | mov r0, sp |
553 | adr lr, ret_from_exception | 557 | adr lr, ret_from_exception |
554 | b do_undefinstr | 558 | b do_undefinstr |
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index 6ff5e3ff6cb5..3c8cdcfe8d4a 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c | |||
@@ -29,6 +29,8 @@ | |||
29 | #include <linux/timer.h> | 29 | #include <linux/timer.h> |
30 | #include <linux/irq.h> | 30 | #include <linux/irq.h> |
31 | 31 | ||
32 | #include <linux/mc146818rtc.h> | ||
33 | |||
32 | #include <asm/leds.h> | 34 | #include <asm/leds.h> |
33 | #include <asm/thread_info.h> | 35 | #include <asm/thread_info.h> |
34 | #include <asm/mach/time.h> | 36 | #include <asm/mach/time.h> |
@@ -85,6 +87,17 @@ unsigned long long __attribute__((weak)) sched_clock(void) | |||
85 | return (unsigned long long)jiffies * (1000000000 / HZ); | 87 | return (unsigned long long)jiffies * (1000000000 / HZ); |
86 | } | 88 | } |
87 | 89 | ||
90 | /* | ||
91 | * An implementation of printk_clock() independent from | ||
92 | * sched_clock(). This avoids non-bootable kernels when | ||
93 | * printk_clock is enabled. | ||
94 | */ | ||
95 | unsigned long long printk_clock(void) | ||
96 | { | ||
97 | return (unsigned long long)(jiffies - INITIAL_JIFFIES) * | ||
98 | (1000000000 / HZ); | ||
99 | } | ||
100 | |||
88 | static unsigned long next_rtc_update; | 101 | static unsigned long next_rtc_update; |
89 | 102 | ||
90 | /* | 103 | /* |
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 042a12982e98..908915675edc 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/uaccess.h> | 27 | #include <asm/uaccess.h> |
28 | #include <asm/unistd.h> | 28 | #include <asm/unistd.h> |
29 | #include <asm/traps.h> | 29 | #include <asm/traps.h> |
30 | #include <asm/io.h> | ||
30 | 31 | ||
31 | #include "ptrace.h" | 32 | #include "ptrace.h" |
32 | #include "signal.h" | 33 | #include "signal.h" |
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c index 628348c9f6c5..9df507d36e0b 100644 --- a/arch/arm/mm/flush.c +++ b/arch/arm/mm/flush.c | |||
@@ -202,3 +202,42 @@ void flush_dcache_page(struct page *page) | |||
202 | } | 202 | } |
203 | } | 203 | } |
204 | EXPORT_SYMBOL(flush_dcache_page); | 204 | EXPORT_SYMBOL(flush_dcache_page); |
205 | |||
206 | /* | ||
207 | * Flush an anonymous page so that users of get_user_pages() | ||
208 | * can safely access the data. The expected sequence is: | ||
209 | * | ||
210 | * get_user_pages() | ||
211 | * -> flush_anon_page | ||
212 | * memcpy() to/from page | ||
213 | * if written to page, flush_dcache_page() | ||
214 | */ | ||
215 | void __flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr) | ||
216 | { | ||
217 | unsigned long pfn; | ||
218 | |||
219 | /* VIPT non-aliasing caches need do nothing */ | ||
220 | if (cache_is_vipt_nonaliasing()) | ||
221 | return; | ||
222 | |||
223 | /* | ||
224 | * Write back and invalidate userspace mapping. | ||
225 | */ | ||
226 | pfn = page_to_pfn(page); | ||
227 | if (cache_is_vivt()) { | ||
228 | flush_cache_page(vma, vmaddr, pfn); | ||
229 | } else { | ||
230 | /* | ||
231 | * For aliasing VIPT, we can flush an alias of the | ||
232 | * userspace address only. | ||
233 | */ | ||
234 | flush_pfn_alias(pfn, vmaddr); | ||
235 | } | ||
236 | |||
237 | /* | ||
238 | * Invalidate kernel mapping. No data should be contained | ||
239 | * in this mapping of the page. FIXME: this is overkill | ||
240 | * since we actually ask for a write-back and invalidate. | ||
241 | */ | ||
242 | __cpuc_flush_dcache_page(page_address(page)); | ||
243 | } | ||
diff --git a/arch/cris/arch-v32/kernel/smp.c b/arch/cris/arch-v32/kernel/smp.c index 2d0023f2d49b..77e655f26560 100644 --- a/arch/cris/arch-v32/kernel/smp.c +++ b/arch/cris/arch-v32/kernel/smp.c | |||
@@ -195,7 +195,7 @@ int setup_profiling_timer(unsigned int multiplier) | |||
195 | */ | 195 | */ |
196 | unsigned long cache_decay_ticks = 1; | 196 | unsigned long cache_decay_ticks = 1; |
197 | 197 | ||
198 | int __devinit __cpu_up(unsigned int cpu) | 198 | int __cpuinit __cpu_up(unsigned int cpu) |
199 | { | 199 | { |
200 | smp_boot_one_cpu(cpu); | 200 | smp_boot_one_cpu(cpu); |
201 | return cpu_online(cpu) ? 0 : -ENOSYS; | 201 | return cpu_online(cpu) ? 0 : -ENOSYS; |
diff --git a/arch/i386/defconfig b/arch/i386/defconfig index 88b7c1cf65a2..5d80edfc61b7 100644 --- a/arch/i386/defconfig +++ b/arch/i386/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.19-git14 | 3 | # Linux kernel version: 2.6.20-rc3 |
4 | # Sat Dec 9 21:23:14 2006 | 4 | # Fri Jan 5 11:54:46 2007 |
5 | # | 5 | # |
6 | CONFIG_X86_32=y | 6 | CONFIG_X86_32=y |
7 | CONFIG_GENERIC_TIME=y | 7 | CONFIG_GENERIC_TIME=y |
@@ -1287,6 +1287,11 @@ CONFIG_USB_MON=y | |||
1287 | # | 1287 | # |
1288 | 1288 | ||
1289 | # | 1289 | # |
1290 | # Virtualization | ||
1291 | # | ||
1292 | # CONFIG_KVM is not set | ||
1293 | |||
1294 | # | ||
1290 | # File systems | 1295 | # File systems |
1291 | # | 1296 | # |
1292 | CONFIG_EXT2_FS=y | 1297 | CONFIG_EXT2_FS=y |
@@ -1471,6 +1476,8 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y | |||
1471 | # CONFIG_ENABLE_MUST_CHECK is not set | 1476 | # CONFIG_ENABLE_MUST_CHECK is not set |
1472 | CONFIG_MAGIC_SYSRQ=y | 1477 | CONFIG_MAGIC_SYSRQ=y |
1473 | CONFIG_UNUSED_SYMBOLS=y | 1478 | CONFIG_UNUSED_SYMBOLS=y |
1479 | # CONFIG_DEBUG_FS is not set | ||
1480 | # CONFIG_HEADERS_CHECK is not set | ||
1474 | CONFIG_DEBUG_KERNEL=y | 1481 | CONFIG_DEBUG_KERNEL=y |
1475 | CONFIG_LOG_BUF_SHIFT=18 | 1482 | CONFIG_LOG_BUF_SHIFT=18 |
1476 | CONFIG_DETECT_SOFTLOCKUP=y | 1483 | CONFIG_DETECT_SOFTLOCKUP=y |
@@ -1489,12 +1496,10 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1489 | # CONFIG_DEBUG_HIGHMEM is not set | 1496 | # CONFIG_DEBUG_HIGHMEM is not set |
1490 | CONFIG_DEBUG_BUGVERBOSE=y | 1497 | CONFIG_DEBUG_BUGVERBOSE=y |
1491 | # CONFIG_DEBUG_INFO is not set | 1498 | # CONFIG_DEBUG_INFO is not set |
1492 | # CONFIG_DEBUG_FS is not set | ||
1493 | # CONFIG_DEBUG_VM is not set | 1499 | # CONFIG_DEBUG_VM is not set |
1494 | # CONFIG_DEBUG_LIST is not set | 1500 | # CONFIG_DEBUG_LIST is not set |
1495 | # CONFIG_FRAME_POINTER is not set | 1501 | # CONFIG_FRAME_POINTER is not set |
1496 | # CONFIG_FORCED_INLINING is not set | 1502 | # CONFIG_FORCED_INLINING is not set |
1497 | # CONFIG_HEADERS_CHECK is not set | ||
1498 | # CONFIG_RCU_TORTURE_TEST is not set | 1503 | # CONFIG_RCU_TORTURE_TEST is not set |
1499 | # CONFIG_LKDTM is not set | 1504 | # CONFIG_LKDTM is not set |
1500 | CONFIG_EARLY_PRINTK=y | 1505 | CONFIG_EARLY_PRINTK=y |
@@ -1527,6 +1532,7 @@ CONFIG_CRC32=y | |||
1527 | # CONFIG_LIBCRC32C is not set | 1532 | # CONFIG_LIBCRC32C is not set |
1528 | CONFIG_ZLIB_INFLATE=y | 1533 | CONFIG_ZLIB_INFLATE=y |
1529 | CONFIG_PLIST=y | 1534 | CONFIG_PLIST=y |
1535 | CONFIG_IOMAP_COPY=y | ||
1530 | CONFIG_GENERIC_HARDIRQS=y | 1536 | CONFIG_GENERIC_HARDIRQS=y |
1531 | CONFIG_GENERIC_IRQ_PROBE=y | 1537 | CONFIG_GENERIC_IRQ_PROBE=y |
1532 | CONFIG_GENERIC_PENDING_IRQ=y | 1538 | CONFIG_GENERIC_PENDING_IRQ=y |
diff --git a/arch/i386/kernel/cpu/cyrix.c b/arch/i386/kernel/cpu/cyrix.c index c0c3b59de32c..abcff92f994c 100644 --- a/arch/i386/kernel/cpu/cyrix.c +++ b/arch/i386/kernel/cpu/cyrix.c | |||
@@ -173,7 +173,7 @@ static void __cpuinit geode_configure(void) | |||
173 | ccr4 = getCx86(CX86_CCR4); | 173 | ccr4 = getCx86(CX86_CCR4); |
174 | ccr4 |= 0x38; /* FPU fast, DTE cache, Mem bypass */ | 174 | ccr4 |= 0x38; /* FPU fast, DTE cache, Mem bypass */ |
175 | 175 | ||
176 | setCx86(CX86_CCR3, ccr3); | 176 | setCx86(CX86_CCR4, ccr4); |
177 | 177 | ||
178 | set_cx86_memwb(); | 178 | set_cx86_memwb(); |
179 | set_cx86_reorder(); | 179 | set_cx86_reorder(); |
diff --git a/arch/i386/kernel/mpparse.c b/arch/i386/kernel/mpparse.c index 2ce67228dff8..49bff3596bff 100644 --- a/arch/i386/kernel/mpparse.c +++ b/arch/i386/kernel/mpparse.c | |||
@@ -36,7 +36,7 @@ | |||
36 | 36 | ||
37 | /* Have we found an MP table */ | 37 | /* Have we found an MP table */ |
38 | int smp_found_config; | 38 | int smp_found_config; |
39 | unsigned int __initdata maxcpus = NR_CPUS; | 39 | unsigned int __cpuinitdata maxcpus = NR_CPUS; |
40 | 40 | ||
41 | /* | 41 | /* |
42 | * Various Linux-internal data structures created from the | 42 | * Various Linux-internal data structures created from the |
@@ -102,9 +102,9 @@ static int __init mpf_checksum(unsigned char *mp, int len) | |||
102 | */ | 102 | */ |
103 | 103 | ||
104 | static int mpc_record; | 104 | static int mpc_record; |
105 | static struct mpc_config_translation *translation_table[MAX_MPC_ENTRY] __initdata; | 105 | static struct mpc_config_translation *translation_table[MAX_MPC_ENTRY] __cpuinitdata; |
106 | 106 | ||
107 | static void __devinit MP_processor_info (struct mpc_config_processor *m) | 107 | static void __cpuinit MP_processor_info (struct mpc_config_processor *m) |
108 | { | 108 | { |
109 | int ver, apicid; | 109 | int ver, apicid; |
110 | physid_mask_t phys_cpu; | 110 | physid_mask_t phys_cpu; |
@@ -822,7 +822,7 @@ void __init mp_register_lapic_address(u64 address) | |||
822 | Dprintk("Boot CPU = %d\n", boot_cpu_physical_apicid); | 822 | Dprintk("Boot CPU = %d\n", boot_cpu_physical_apicid); |
823 | } | 823 | } |
824 | 824 | ||
825 | void __devinit mp_register_lapic (u8 id, u8 enabled) | 825 | void __cpuinit mp_register_lapic (u8 id, u8 enabled) |
826 | { | 826 | { |
827 | struct mpc_config_processor processor; | 827 | struct mpc_config_processor processor; |
828 | int boot_cpu = 0; | 828 | int boot_cpu = 0; |
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c index 6f6cb7b31d18..4b31ad70c1ac 100644 --- a/arch/i386/kernel/setup.c +++ b/arch/i386/kernel/setup.c | |||
@@ -77,7 +77,7 @@ extern struct resource code_resource; | |||
77 | extern struct resource data_resource; | 77 | extern struct resource data_resource; |
78 | 78 | ||
79 | /* cpu data as detected by the assembly code in head.S */ | 79 | /* cpu data as detected by the assembly code in head.S */ |
80 | struct cpuinfo_x86 new_cpu_data __initdata = { 0, 0, 0, 0, -1, 1, 0, 0, -1 }; | 80 | struct cpuinfo_x86 new_cpu_data __cpuinitdata = { 0, 0, 0, 0, -1, 1, 0, 0, -1 }; |
81 | /* common cpu data for all cpus */ | 81 | /* common cpu data for all cpus */ |
82 | struct cpuinfo_x86 boot_cpu_data __read_mostly = { 0, 0, 0, 0, -1, 1, 0, 0, -1 }; | 82 | struct cpuinfo_x86 boot_cpu_data __read_mostly = { 0, 0, 0, 0, -1, 1, 0, 0, -1 }; |
83 | EXPORT_SYMBOL(boot_cpu_data); | 83 | EXPORT_SYMBOL(boot_cpu_data); |
@@ -495,7 +495,7 @@ static void set_mca_bus(int x) { } | |||
495 | #endif | 495 | #endif |
496 | 496 | ||
497 | /* Overridden in paravirt.c if CONFIG_PARAVIRT */ | 497 | /* Overridden in paravirt.c if CONFIG_PARAVIRT */ |
498 | char * __attribute__((weak)) memory_setup(void) | 498 | char * __init __attribute__((weak)) memory_setup(void) |
499 | { | 499 | { |
500 | return machine_specific_memory_setup(); | 500 | return machine_specific_memory_setup(); |
501 | } | 501 | } |
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c index 300d9b38d02e..dea7ef9d3e82 100644 --- a/arch/i386/kernel/smpboot.c +++ b/arch/i386/kernel/smpboot.c | |||
@@ -159,7 +159,7 @@ void __init smp_alloc_memory(void) | |||
159 | * a given CPU | 159 | * a given CPU |
160 | */ | 160 | */ |
161 | 161 | ||
162 | static void __devinit smp_store_cpu_info(int id) | 162 | static void __cpuinit smp_store_cpu_info(int id) |
163 | { | 163 | { |
164 | struct cpuinfo_x86 *c = cpu_data + id; | 164 | struct cpuinfo_x86 *c = cpu_data + id; |
165 | 165 | ||
@@ -364,7 +364,7 @@ extern void calibrate_delay(void); | |||
364 | 364 | ||
365 | static atomic_t init_deasserted; | 365 | static atomic_t init_deasserted; |
366 | 366 | ||
367 | static void __devinit smp_callin(void) | 367 | static void __cpuinit smp_callin(void) |
368 | { | 368 | { |
369 | int cpuid, phys_id; | 369 | int cpuid, phys_id; |
370 | unsigned long timeout; | 370 | unsigned long timeout; |
@@ -538,7 +538,7 @@ set_cpu_sibling_map(int cpu) | |||
538 | /* | 538 | /* |
539 | * Activate a secondary processor. | 539 | * Activate a secondary processor. |
540 | */ | 540 | */ |
541 | static void __devinit start_secondary(void *unused) | 541 | static void __cpuinit start_secondary(void *unused) |
542 | { | 542 | { |
543 | /* | 543 | /* |
544 | * Don't put *anything* before secondary_cpu_init(), SMP | 544 | * Don't put *anything* before secondary_cpu_init(), SMP |
@@ -931,7 +931,7 @@ static inline struct task_struct * alloc_idle_task(int cpu) | |||
931 | #define alloc_idle_task(cpu) fork_idle(cpu) | 931 | #define alloc_idle_task(cpu) fork_idle(cpu) |
932 | #endif | 932 | #endif |
933 | 933 | ||
934 | static int __devinit do_boot_cpu(int apicid, int cpu) | 934 | static int __cpuinit do_boot_cpu(int apicid, int cpu) |
935 | /* | 935 | /* |
936 | * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad | 936 | * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad |
937 | * (ie clustered apic addressing mode), this is a LOGICAL apic ID. | 937 | * (ie clustered apic addressing mode), this is a LOGICAL apic ID. |
@@ -1432,7 +1432,7 @@ void __cpu_die(unsigned int cpu) | |||
1432 | } | 1432 | } |
1433 | #endif /* CONFIG_HOTPLUG_CPU */ | 1433 | #endif /* CONFIG_HOTPLUG_CPU */ |
1434 | 1434 | ||
1435 | int __devinit __cpu_up(unsigned int cpu) | 1435 | int __cpuinit __cpu_up(unsigned int cpu) |
1436 | { | 1436 | { |
1437 | #ifdef CONFIG_HOTPLUG_CPU | 1437 | #ifdef CONFIG_HOTPLUG_CPU |
1438 | int ret=0; | 1438 | int ret=0; |
diff --git a/arch/i386/kernel/tsc.c b/arch/i386/kernel/tsc.c index 1bbe45dca7a0..2cfc7b09b925 100644 --- a/arch/i386/kernel/tsc.c +++ b/arch/i386/kernel/tsc.c | |||
@@ -24,7 +24,7 @@ | |||
24 | */ | 24 | */ |
25 | unsigned int tsc_khz; | 25 | unsigned int tsc_khz; |
26 | 26 | ||
27 | int tsc_disable __cpuinitdata = 0; | 27 | int tsc_disable; |
28 | 28 | ||
29 | #ifdef CONFIG_X86_TSC | 29 | #ifdef CONFIG_X86_TSC |
30 | static int __init tsc_setup(char *str) | 30 | static int __init tsc_setup(char *str) |
diff --git a/arch/i386/mach-generic/bigsmp.c b/arch/i386/mach-generic/bigsmp.c index 33d9f93557ba..8a210fa915b5 100644 --- a/arch/i386/mach-generic/bigsmp.c +++ b/arch/i386/mach-generic/bigsmp.c | |||
@@ -45,7 +45,7 @@ static struct dmi_system_id __initdata bigsmp_dmi_table[] = { | |||
45 | }; | 45 | }; |
46 | 46 | ||
47 | 47 | ||
48 | static __init int probe_bigsmp(void) | 48 | static int probe_bigsmp(void) |
49 | { | 49 | { |
50 | if (def_to_bigsmp) | 50 | if (def_to_bigsmp) |
51 | dmi_bigsmp = 1; | 51 | dmi_bigsmp = 1; |
diff --git a/arch/i386/mach-generic/default.c b/arch/i386/mach-generic/default.c index 96c19821e47d..8685208d8512 100644 --- a/arch/i386/mach-generic/default.c +++ b/arch/i386/mach-generic/default.c | |||
@@ -18,7 +18,7 @@ | |||
18 | #include <asm/mach-default/mach_mpparse.h> | 18 | #include <asm/mach-default/mach_mpparse.h> |
19 | 19 | ||
20 | /* should be called last. */ | 20 | /* should be called last. */ |
21 | static __init int probe_default(void) | 21 | static int probe_default(void) |
22 | { | 22 | { |
23 | return 1; | 23 | return 1; |
24 | } | 24 | } |
diff --git a/arch/i386/mach-generic/es7000.c b/arch/i386/mach-generic/es7000.c index aa144d82334d..b8963a5a3b25 100644 --- a/arch/i386/mach-generic/es7000.c +++ b/arch/i386/mach-generic/es7000.c | |||
@@ -19,7 +19,7 @@ | |||
19 | #include <asm/mach-es7000/mach_mpparse.h> | 19 | #include <asm/mach-es7000/mach_mpparse.h> |
20 | #include <asm/mach-es7000/mach_wakecpu.h> | 20 | #include <asm/mach-es7000/mach_wakecpu.h> |
21 | 21 | ||
22 | static __init int probe_es7000(void) | 22 | static int probe_es7000(void) |
23 | { | 23 | { |
24 | /* probed later in mptable/ACPI hooks */ | 24 | /* probed later in mptable/ACPI hooks */ |
25 | return 0; | 25 | return 0; |
diff --git a/arch/i386/mach-generic/summit.c b/arch/i386/mach-generic/summit.c index f7e5d66648dc..74883ccb8f73 100644 --- a/arch/i386/mach-generic/summit.c +++ b/arch/i386/mach-generic/summit.c | |||
@@ -18,7 +18,7 @@ | |||
18 | #include <asm/mach-summit/mach_ipi.h> | 18 | #include <asm/mach-summit/mach_ipi.h> |
19 | #include <asm/mach-summit/mach_mpparse.h> | 19 | #include <asm/mach-summit/mach_mpparse.h> |
20 | 20 | ||
21 | static __init int probe_summit(void) | 21 | static int probe_summit(void) |
22 | { | 22 | { |
23 | /* probed later in mptable/ACPI hooks */ | 23 | /* probed later in mptable/ACPI hooks */ |
24 | return 0; | 24 | return 0; |
diff --git a/arch/i386/mm/init.c b/arch/i386/mm/init.c index 60a7e57af197..c5c5ea700cc7 100644 --- a/arch/i386/mm/init.c +++ b/arch/i386/mm/init.c | |||
@@ -283,7 +283,7 @@ void __init add_one_highpage_init(struct page *page, int pfn, int bad_ppro) | |||
283 | SetPageReserved(page); | 283 | SetPageReserved(page); |
284 | } | 284 | } |
285 | 285 | ||
286 | static int add_one_highpage_hotplug(struct page *page, unsigned long pfn) | 286 | static int __meminit add_one_highpage_hotplug(struct page *page, unsigned long pfn) |
287 | { | 287 | { |
288 | free_new_highpage(page); | 288 | free_new_highpage(page); |
289 | totalram_pages++; | 289 | totalram_pages++; |
@@ -300,7 +300,7 @@ static int add_one_highpage_hotplug(struct page *page, unsigned long pfn) | |||
300 | * has been added dynamically that would be | 300 | * has been added dynamically that would be |
301 | * onlined here is in HIGHMEM | 301 | * onlined here is in HIGHMEM |
302 | */ | 302 | */ |
303 | void online_page(struct page *page) | 303 | void __meminit online_page(struct page *page) |
304 | { | 304 | { |
305 | ClearPageReserved(page); | 305 | ClearPageReserved(page); |
306 | add_one_highpage_hotplug(page, page_to_pfn(page)); | 306 | add_one_highpage_hotplug(page, page_to_pfn(page)); |
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index 1a3d8a2feb94..1373fae7657f 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
@@ -543,7 +543,8 @@ virtual_memmap_init (u64 start, u64 end, void *arg) | |||
543 | 543 | ||
544 | if (map_start < map_end) | 544 | if (map_start < map_end) |
545 | memmap_init_zone((unsigned long)(map_end - map_start), | 545 | memmap_init_zone((unsigned long)(map_end - map_start), |
546 | args->nid, args->zone, page_to_pfn(map_start)); | 546 | args->nid, args->zone, page_to_pfn(map_start), |
547 | MEMMAP_EARLY); | ||
547 | return 0; | 548 | return 0; |
548 | } | 549 | } |
549 | 550 | ||
@@ -552,7 +553,7 @@ memmap_init (unsigned long size, int nid, unsigned long zone, | |||
552 | unsigned long start_pfn) | 553 | unsigned long start_pfn) |
553 | { | 554 | { |
554 | if (!vmem_map) | 555 | if (!vmem_map) |
555 | memmap_init_zone(size, nid, zone, start_pfn); | 556 | memmap_init_zone(size, nid, zone, start_pfn, MEMMAP_EARLY); |
556 | else { | 557 | else { |
557 | struct page *start; | 558 | struct page *start; |
558 | struct memmap_init_callback_data args; | 559 | struct memmap_init_callback_data args; |
diff --git a/arch/m32r/kernel/smpboot.c b/arch/m32r/kernel/smpboot.c index fa7865609495..48d376f47e1a 100644 --- a/arch/m32r/kernel/smpboot.c +++ b/arch/m32r/kernel/smpboot.c | |||
@@ -351,7 +351,7 @@ static void __init do_boot_cpu(int phys_id) | |||
351 | } | 351 | } |
352 | } | 352 | } |
353 | 353 | ||
354 | int __devinit __cpu_up(unsigned int cpu_id) | 354 | int __cpuinit __cpu_up(unsigned int cpu_id) |
355 | { | 355 | { |
356 | int timeout; | 356 | int timeout; |
357 | 357 | ||
diff --git a/arch/mips/au1000/common/pci.c b/arch/mips/au1000/common/pci.c index da591f674893..9f8ce08e173b 100644 --- a/arch/mips/au1000/common/pci.c +++ b/arch/mips/au1000/common/pci.c | |||
@@ -39,15 +39,15 @@ | |||
39 | 39 | ||
40 | /* TBD */ | 40 | /* TBD */ |
41 | static struct resource pci_io_resource = { | 41 | static struct resource pci_io_resource = { |
42 | .start = PCI_IO_START, | 42 | .start = (resource_size_t)PCI_IO_START, |
43 | .end = PCI_IO_END, | 43 | .end = (resource_size_t)PCI_IO_END, |
44 | .name = "PCI IO space", | 44 | .name = "PCI IO space", |
45 | .flags = IORESOURCE_IO | 45 | .flags = IORESOURCE_IO |
46 | }; | 46 | }; |
47 | 47 | ||
48 | static struct resource pci_mem_resource = { | 48 | static struct resource pci_mem_resource = { |
49 | .start = PCI_MEM_START, | 49 | .start = (resource_size_t)PCI_MEM_START, |
50 | .end = PCI_MEM_END, | 50 | .end = (resource_size_t)PCI_MEM_END, |
51 | .name = "PCI memory space", | 51 | .name = "PCI memory space", |
52 | .flags = IORESOURCE_MEM | 52 | .flags = IORESOURCE_MEM |
53 | }; | 53 | }; |
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c index b061c9aa6302..de3fae260ff8 100644 --- a/arch/mips/kernel/linux32.c +++ b/arch/mips/kernel/linux32.c | |||
@@ -440,14 +440,26 @@ sys32_ipc (u32 call, int first, int second, int third, u32 ptr, u32 fifth) | |||
440 | } | 440 | } |
441 | 441 | ||
442 | #ifdef CONFIG_MIPS32_N32 | 442 | #ifdef CONFIG_MIPS32_N32 |
443 | asmlinkage long sysn32_semctl(int semid, int semnum, int cmd, union semun arg) | 443 | asmlinkage long sysn32_semctl(int semid, int semnum, int cmd, u32 arg) |
444 | { | 444 | { |
445 | /* compat_sys_semctl expects a pointer to union semun */ | 445 | /* compat_sys_semctl expects a pointer to union semun */ |
446 | u32 __user *uptr = compat_alloc_user_space(sizeof(u32)); | 446 | u32 __user *uptr = compat_alloc_user_space(sizeof(u32)); |
447 | if (put_user(ptr_to_compat(arg.__pad), uptr)) | 447 | if (put_user(arg, uptr)) |
448 | return -EFAULT; | 448 | return -EFAULT; |
449 | return compat_sys_semctl(semid, semnum, cmd, uptr); | 449 | return compat_sys_semctl(semid, semnum, cmd, uptr); |
450 | } | 450 | } |
451 | |||
452 | asmlinkage long sysn32_msgsnd(int msqid, u32 msgp, unsigned msgsz, int msgflg) | ||
453 | { | ||
454 | return compat_sys_msgsnd(msqid, msgsz, msgflg, compat_ptr(msgp)); | ||
455 | } | ||
456 | |||
457 | asmlinkage long sysn32_msgrcv(int msqid, u32 msgp, size_t msgsz, int msgtyp, | ||
458 | int msgflg) | ||
459 | { | ||
460 | return compat_sys_msgrcv(msqid, msgsz, msgtyp, msgflg, IPC_64, | ||
461 | compat_ptr(msgp)); | ||
462 | } | ||
451 | #endif | 463 | #endif |
452 | 464 | ||
453 | struct sysctl_args32 | 465 | struct sysctl_args32 |
diff --git a/arch/mips/kernel/mips_ksyms.c b/arch/mips/kernel/mips_ksyms.c index f44a01357ada..2ef857c3ee53 100644 --- a/arch/mips/kernel/mips_ksyms.c +++ b/arch/mips/kernel/mips_ksyms.c | |||
@@ -46,5 +46,7 @@ EXPORT_SYMBOL(__strnlen_user_nocheck_asm); | |||
46 | EXPORT_SYMBOL(__strnlen_user_asm); | 46 | EXPORT_SYMBOL(__strnlen_user_asm); |
47 | 47 | ||
48 | EXPORT_SYMBOL(csum_partial); | 48 | EXPORT_SYMBOL(csum_partial); |
49 | EXPORT_SYMBOL(csum_partial_copy_nocheck); | ||
50 | EXPORT_SYMBOL(__csum_partial_copy_user); | ||
49 | 51 | ||
50 | EXPORT_SYMBOL(invalid_pte_table); | 52 | EXPORT_SYMBOL(invalid_pte_table); |
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S index 34567d81f940..a7bff2a54723 100644 --- a/arch/mips/kernel/scall64-n32.S +++ b/arch/mips/kernel/scall64-n32.S | |||
@@ -187,8 +187,8 @@ EXPORT(sysn32_call_table) | |||
187 | PTR sysn32_semctl | 187 | PTR sysn32_semctl |
188 | PTR sys_shmdt /* 6065 */ | 188 | PTR sys_shmdt /* 6065 */ |
189 | PTR sys_msgget | 189 | PTR sys_msgget |
190 | PTR compat_sys_msgsnd | 190 | PTR sysn32_msgsnd |
191 | PTR compat_sys_msgrcv | 191 | PTR sysn32_msgrcv |
192 | PTR compat_sys_msgctl | 192 | PTR compat_sys_msgctl |
193 | PTR compat_sys_fcntl /* 6070 */ | 193 | PTR compat_sys_fcntl /* 6070 */ |
194 | PTR sys_flock | 194 | PTR sys_flock |
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index f2a8701e414d..0555fc554f65 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c | |||
@@ -271,7 +271,7 @@ void __devinit smp_prepare_boot_cpu(void) | |||
271 | * and keep control until "cpu_online(cpu)" is set. Note: cpu is | 271 | * and keep control until "cpu_online(cpu)" is set. Note: cpu is |
272 | * physical, not logical. | 272 | * physical, not logical. |
273 | */ | 273 | */ |
274 | int __devinit __cpu_up(unsigned int cpu) | 274 | int __cpuinit __cpu_up(unsigned int cpu) |
275 | { | 275 | { |
276 | struct task_struct *idle; | 276 | struct task_struct *idle; |
277 | 277 | ||
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c index 11aab6d6bfe5..8aa544f73a5e 100644 --- a/arch/mips/kernel/time.c +++ b/arch/mips/kernel/time.c | |||
@@ -94,10 +94,8 @@ static void c0_timer_ack(void) | |||
94 | { | 94 | { |
95 | unsigned int count; | 95 | unsigned int count; |
96 | 96 | ||
97 | #ifndef CONFIG_SOC_PNX8550 /* pnx8550 resets to zero */ | ||
98 | /* Ack this timer interrupt and set the next one. */ | 97 | /* Ack this timer interrupt and set the next one. */ |
99 | expirelo += cycles_per_jiffy; | 98 | expirelo += cycles_per_jiffy; |
100 | #endif | ||
101 | write_c0_compare(expirelo); | 99 | write_c0_compare(expirelo); |
102 | 100 | ||
103 | /* Check to see if we have missed any timer interrupts. */ | 101 | /* Check to see if we have missed any timer interrupts. */ |
diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile index 888b61ea12fe..989c900b8b14 100644 --- a/arch/mips/lib/Makefile +++ b/arch/mips/lib/Makefile | |||
@@ -2,7 +2,7 @@ | |||
2 | # Makefile for MIPS-specific library files.. | 2 | # Makefile for MIPS-specific library files.. |
3 | # | 3 | # |
4 | 4 | ||
5 | lib-y += csum_partial.o csum_partial_copy.o memcpy.o promlib.o \ | 5 | lib-y += csum_partial.o memcpy.o promlib.o \ |
6 | strlen_user.o strncpy_user.o strnlen_user.o uncached.o | 6 | strlen_user.o strncpy_user.o strnlen_user.o uncached.o |
7 | 7 | ||
8 | obj-y += iomap.o | 8 | obj-y += iomap.o |
diff --git a/arch/mips/lib/csum_partial.S b/arch/mips/lib/csum_partial.S index 9db357294be1..c0a77fe038be 100644 --- a/arch/mips/lib/csum_partial.S +++ b/arch/mips/lib/csum_partial.S | |||
@@ -8,7 +8,9 @@ | |||
8 | * Copyright (C) 1998, 1999 Ralf Baechle | 8 | * Copyright (C) 1998, 1999 Ralf Baechle |
9 | * Copyright (C) 1999 Silicon Graphics, Inc. | 9 | * Copyright (C) 1999 Silicon Graphics, Inc. |
10 | */ | 10 | */ |
11 | #include <linux/errno.h> | ||
11 | #include <asm/asm.h> | 12 | #include <asm/asm.h> |
13 | #include <asm/asm-offsets.h> | ||
12 | #include <asm/regdef.h> | 14 | #include <asm/regdef.h> |
13 | 15 | ||
14 | #ifdef CONFIG_64BIT | 16 | #ifdef CONFIG_64BIT |
@@ -271,3 +273,443 @@ small_csumcpy: | |||
271 | jr ra | 273 | jr ra |
272 | .set noreorder | 274 | .set noreorder |
273 | END(csum_partial) | 275 | END(csum_partial) |
276 | |||
277 | |||
278 | /* | ||
279 | * checksum and copy routines based on memcpy.S | ||
280 | * | ||
281 | * csum_partial_copy_nocheck(src, dst, len, sum) | ||
282 | * __csum_partial_copy_user(src, dst, len, sum, errp) | ||
283 | * | ||
284 | * See "Spec" in memcpy.S for details. Unlike __copy_user, all | ||
285 | * function in this file use the standard calling convention. | ||
286 | */ | ||
287 | |||
288 | #define src a0 | ||
289 | #define dst a1 | ||
290 | #define len a2 | ||
291 | #define psum a3 | ||
292 | #define sum v0 | ||
293 | #define odd t8 | ||
294 | #define errptr t9 | ||
295 | |||
296 | /* | ||
297 | * The exception handler for loads requires that: | ||
298 | * 1- AT contain the address of the byte just past the end of the source | ||
299 | * of the copy, | ||
300 | * 2- src_entry <= src < AT, and | ||
301 | * 3- (dst - src) == (dst_entry - src_entry), | ||
302 | * The _entry suffix denotes values when __copy_user was called. | ||
303 | * | ||
304 | * (1) is set up up by __csum_partial_copy_from_user and maintained by | ||
305 | * not writing AT in __csum_partial_copy | ||
306 | * (2) is met by incrementing src by the number of bytes copied | ||
307 | * (3) is met by not doing loads between a pair of increments of dst and src | ||
308 | * | ||
309 | * The exception handlers for stores stores -EFAULT to errptr and return. | ||
310 | * These handlers do not need to overwrite any data. | ||
311 | */ | ||
312 | |||
313 | #define EXC(inst_reg,addr,handler) \ | ||
314 | 9: inst_reg, addr; \ | ||
315 | .section __ex_table,"a"; \ | ||
316 | PTR 9b, handler; \ | ||
317 | .previous | ||
318 | |||
319 | #ifdef USE_DOUBLE | ||
320 | |||
321 | #define LOAD ld | ||
322 | #define LOADL ldl | ||
323 | #define LOADR ldr | ||
324 | #define STOREL sdl | ||
325 | #define STORER sdr | ||
326 | #define STORE sd | ||
327 | #define ADD daddu | ||
328 | #define SUB dsubu | ||
329 | #define SRL dsrl | ||
330 | #define SLL dsll | ||
331 | #define SLLV dsllv | ||
332 | #define SRLV dsrlv | ||
333 | #define NBYTES 8 | ||
334 | #define LOG_NBYTES 3 | ||
335 | |||
336 | #else | ||
337 | |||
338 | #define LOAD lw | ||
339 | #define LOADL lwl | ||
340 | #define LOADR lwr | ||
341 | #define STOREL swl | ||
342 | #define STORER swr | ||
343 | #define STORE sw | ||
344 | #define ADD addu | ||
345 | #define SUB subu | ||
346 | #define SRL srl | ||
347 | #define SLL sll | ||
348 | #define SLLV sllv | ||
349 | #define SRLV srlv | ||
350 | #define NBYTES 4 | ||
351 | #define LOG_NBYTES 2 | ||
352 | |||
353 | #endif /* USE_DOUBLE */ | ||
354 | |||
355 | #ifdef CONFIG_CPU_LITTLE_ENDIAN | ||
356 | #define LDFIRST LOADR | ||
357 | #define LDREST LOADL | ||
358 | #define STFIRST STORER | ||
359 | #define STREST STOREL | ||
360 | #define SHIFT_DISCARD SLLV | ||
361 | #define SHIFT_DISCARD_REVERT SRLV | ||
362 | #else | ||
363 | #define LDFIRST LOADL | ||
364 | #define LDREST LOADR | ||
365 | #define STFIRST STOREL | ||
366 | #define STREST STORER | ||
367 | #define SHIFT_DISCARD SRLV | ||
368 | #define SHIFT_DISCARD_REVERT SLLV | ||
369 | #endif | ||
370 | |||
371 | #define FIRST(unit) ((unit)*NBYTES) | ||
372 | #define REST(unit) (FIRST(unit)+NBYTES-1) | ||
373 | |||
374 | #define ADDRMASK (NBYTES-1) | ||
375 | |||
376 | .set noat | ||
377 | |||
378 | LEAF(__csum_partial_copy_user) | ||
379 | PTR_ADDU AT, src, len /* See (1) above. */ | ||
380 | #ifdef CONFIG_64BIT | ||
381 | move errptr, a4 | ||
382 | #else | ||
383 | lw errptr, 16(sp) | ||
384 | #endif | ||
385 | FEXPORT(csum_partial_copy_nocheck) | ||
386 | move sum, zero | ||
387 | move odd, zero | ||
388 | /* | ||
389 | * Note: dst & src may be unaligned, len may be 0 | ||
390 | * Temps | ||
391 | */ | ||
392 | /* | ||
393 | * The "issue break"s below are very approximate. | ||
394 | * Issue delays for dcache fills will perturb the schedule, as will | ||
395 | * load queue full replay traps, etc. | ||
396 | * | ||
397 | * If len < NBYTES use byte operations. | ||
398 | */ | ||
399 | sltu t2, len, NBYTES | ||
400 | and t1, dst, ADDRMASK | ||
401 | bnez t2, copy_bytes_checklen | ||
402 | and t0, src, ADDRMASK | ||
403 | andi odd, dst, 0x1 /* odd buffer? */ | ||
404 | bnez t1, dst_unaligned | ||
405 | nop | ||
406 | bnez t0, src_unaligned_dst_aligned | ||
407 | /* | ||
408 | * use delay slot for fall-through | ||
409 | * src and dst are aligned; need to compute rem | ||
410 | */ | ||
411 | both_aligned: | ||
412 | SRL t0, len, LOG_NBYTES+3 # +3 for 8 units/iter | ||
413 | beqz t0, cleanup_both_aligned # len < 8*NBYTES | ||
414 | nop | ||
415 | SUB len, 8*NBYTES # subtract here for bgez loop | ||
416 | .align 4 | ||
417 | 1: | ||
418 | EXC( LOAD t0, UNIT(0)(src), l_exc) | ||
419 | EXC( LOAD t1, UNIT(1)(src), l_exc_copy) | ||
420 | EXC( LOAD t2, UNIT(2)(src), l_exc_copy) | ||
421 | EXC( LOAD t3, UNIT(3)(src), l_exc_copy) | ||
422 | EXC( LOAD t4, UNIT(4)(src), l_exc_copy) | ||
423 | EXC( LOAD t5, UNIT(5)(src), l_exc_copy) | ||
424 | EXC( LOAD t6, UNIT(6)(src), l_exc_copy) | ||
425 | EXC( LOAD t7, UNIT(7)(src), l_exc_copy) | ||
426 | SUB len, len, 8*NBYTES | ||
427 | ADD src, src, 8*NBYTES | ||
428 | EXC( STORE t0, UNIT(0)(dst), s_exc) | ||
429 | ADDC(sum, t0) | ||
430 | EXC( STORE t1, UNIT(1)(dst), s_exc) | ||
431 | ADDC(sum, t1) | ||
432 | EXC( STORE t2, UNIT(2)(dst), s_exc) | ||
433 | ADDC(sum, t2) | ||
434 | EXC( STORE t3, UNIT(3)(dst), s_exc) | ||
435 | ADDC(sum, t3) | ||
436 | EXC( STORE t4, UNIT(4)(dst), s_exc) | ||
437 | ADDC(sum, t4) | ||
438 | EXC( STORE t5, UNIT(5)(dst), s_exc) | ||
439 | ADDC(sum, t5) | ||
440 | EXC( STORE t6, UNIT(6)(dst), s_exc) | ||
441 | ADDC(sum, t6) | ||
442 | EXC( STORE t7, UNIT(7)(dst), s_exc) | ||
443 | ADDC(sum, t7) | ||
444 | bgez len, 1b | ||
445 | ADD dst, dst, 8*NBYTES | ||
446 | ADD len, 8*NBYTES # revert len (see above) | ||
447 | |||
448 | /* | ||
449 | * len == the number of bytes left to copy < 8*NBYTES | ||
450 | */ | ||
451 | cleanup_both_aligned: | ||
452 | #define rem t7 | ||
453 | beqz len, done | ||
454 | sltu t0, len, 4*NBYTES | ||
455 | bnez t0, less_than_4units | ||
456 | and rem, len, (NBYTES-1) # rem = len % NBYTES | ||
457 | /* | ||
458 | * len >= 4*NBYTES | ||
459 | */ | ||
460 | EXC( LOAD t0, UNIT(0)(src), l_exc) | ||
461 | EXC( LOAD t1, UNIT(1)(src), l_exc_copy) | ||
462 | EXC( LOAD t2, UNIT(2)(src), l_exc_copy) | ||
463 | EXC( LOAD t3, UNIT(3)(src), l_exc_copy) | ||
464 | SUB len, len, 4*NBYTES | ||
465 | ADD src, src, 4*NBYTES | ||
466 | EXC( STORE t0, UNIT(0)(dst), s_exc) | ||
467 | ADDC(sum, t0) | ||
468 | EXC( STORE t1, UNIT(1)(dst), s_exc) | ||
469 | ADDC(sum, t1) | ||
470 | EXC( STORE t2, UNIT(2)(dst), s_exc) | ||
471 | ADDC(sum, t2) | ||
472 | EXC( STORE t3, UNIT(3)(dst), s_exc) | ||
473 | ADDC(sum, t3) | ||
474 | beqz len, done | ||
475 | ADD dst, dst, 4*NBYTES | ||
476 | less_than_4units: | ||
477 | /* | ||
478 | * rem = len % NBYTES | ||
479 | */ | ||
480 | beq rem, len, copy_bytes | ||
481 | nop | ||
482 | 1: | ||
483 | EXC( LOAD t0, 0(src), l_exc) | ||
484 | ADD src, src, NBYTES | ||
485 | SUB len, len, NBYTES | ||
486 | EXC( STORE t0, 0(dst), s_exc) | ||
487 | ADDC(sum, t0) | ||
488 | bne rem, len, 1b | ||
489 | ADD dst, dst, NBYTES | ||
490 | |||
491 | /* | ||
492 | * src and dst are aligned, need to copy rem bytes (rem < NBYTES) | ||
493 | * A loop would do only a byte at a time with possible branch | ||
494 | * mispredicts. Can't do an explicit LOAD dst,mask,or,STORE | ||
495 | * because can't assume read-access to dst. Instead, use | ||
496 | * STREST dst, which doesn't require read access to dst. | ||
497 | * | ||
498 | * This code should perform better than a simple loop on modern, | ||
499 | * wide-issue mips processors because the code has fewer branches and | ||
500 | * more instruction-level parallelism. | ||
501 | */ | ||
502 | #define bits t2 | ||
503 | beqz len, done | ||
504 | ADD t1, dst, len # t1 is just past last byte of dst | ||
505 | li bits, 8*NBYTES | ||
506 | SLL rem, len, 3 # rem = number of bits to keep | ||
507 | EXC( LOAD t0, 0(src), l_exc) | ||
508 | SUB bits, bits, rem # bits = number of bits to discard | ||
509 | SHIFT_DISCARD t0, t0, bits | ||
510 | EXC( STREST t0, -1(t1), s_exc) | ||
511 | SHIFT_DISCARD_REVERT t0, t0, bits | ||
512 | .set reorder | ||
513 | ADDC(sum, t0) | ||
514 | b done | ||
515 | .set noreorder | ||
516 | dst_unaligned: | ||
517 | /* | ||
518 | * dst is unaligned | ||
519 | * t0 = src & ADDRMASK | ||
520 | * t1 = dst & ADDRMASK; T1 > 0 | ||
521 | * len >= NBYTES | ||
522 | * | ||
523 | * Copy enough bytes to align dst | ||
524 | * Set match = (src and dst have same alignment) | ||
525 | */ | ||
526 | #define match rem | ||
527 | EXC( LDFIRST t3, FIRST(0)(src), l_exc) | ||
528 | ADD t2, zero, NBYTES | ||
529 | EXC( LDREST t3, REST(0)(src), l_exc_copy) | ||
530 | SUB t2, t2, t1 # t2 = number of bytes copied | ||
531 | xor match, t0, t1 | ||
532 | EXC( STFIRST t3, FIRST(0)(dst), s_exc) | ||
533 | SLL t4, t1, 3 # t4 = number of bits to discard | ||
534 | SHIFT_DISCARD t3, t3, t4 | ||
535 | /* no SHIFT_DISCARD_REVERT to handle odd buffer properly */ | ||
536 | ADDC(sum, t3) | ||
537 | beq len, t2, done | ||
538 | SUB len, len, t2 | ||
539 | ADD dst, dst, t2 | ||
540 | beqz match, both_aligned | ||
541 | ADD src, src, t2 | ||
542 | |||
543 | src_unaligned_dst_aligned: | ||
544 | SRL t0, len, LOG_NBYTES+2 # +2 for 4 units/iter | ||
545 | beqz t0, cleanup_src_unaligned | ||
546 | and rem, len, (4*NBYTES-1) # rem = len % 4*NBYTES | ||
547 | 1: | ||
548 | /* | ||
549 | * Avoid consecutive LD*'s to the same register since some mips | ||
550 | * implementations can't issue them in the same cycle. | ||
551 | * It's OK to load FIRST(N+1) before REST(N) because the two addresses | ||
552 | * are to the same unit (unless src is aligned, but it's not). | ||
553 | */ | ||
554 | EXC( LDFIRST t0, FIRST(0)(src), l_exc) | ||
555 | EXC( LDFIRST t1, FIRST(1)(src), l_exc_copy) | ||
556 | SUB len, len, 4*NBYTES | ||
557 | EXC( LDREST t0, REST(0)(src), l_exc_copy) | ||
558 | EXC( LDREST t1, REST(1)(src), l_exc_copy) | ||
559 | EXC( LDFIRST t2, FIRST(2)(src), l_exc_copy) | ||
560 | EXC( LDFIRST t3, FIRST(3)(src), l_exc_copy) | ||
561 | EXC( LDREST t2, REST(2)(src), l_exc_copy) | ||
562 | EXC( LDREST t3, REST(3)(src), l_exc_copy) | ||
563 | ADD src, src, 4*NBYTES | ||
564 | #ifdef CONFIG_CPU_SB1 | ||
565 | nop # improves slotting | ||
566 | #endif | ||
567 | EXC( STORE t0, UNIT(0)(dst), s_exc) | ||
568 | ADDC(sum, t0) | ||
569 | EXC( STORE t1, UNIT(1)(dst), s_exc) | ||
570 | ADDC(sum, t1) | ||
571 | EXC( STORE t2, UNIT(2)(dst), s_exc) | ||
572 | ADDC(sum, t2) | ||
573 | EXC( STORE t3, UNIT(3)(dst), s_exc) | ||
574 | ADDC(sum, t3) | ||
575 | bne len, rem, 1b | ||
576 | ADD dst, dst, 4*NBYTES | ||
577 | |||
578 | cleanup_src_unaligned: | ||
579 | beqz len, done | ||
580 | and rem, len, NBYTES-1 # rem = len % NBYTES | ||
581 | beq rem, len, copy_bytes | ||
582 | nop | ||
583 | 1: | ||
584 | EXC( LDFIRST t0, FIRST(0)(src), l_exc) | ||
585 | EXC( LDREST t0, REST(0)(src), l_exc_copy) | ||
586 | ADD src, src, NBYTES | ||
587 | SUB len, len, NBYTES | ||
588 | EXC( STORE t0, 0(dst), s_exc) | ||
589 | ADDC(sum, t0) | ||
590 | bne len, rem, 1b | ||
591 | ADD dst, dst, NBYTES | ||
592 | |||
593 | copy_bytes_checklen: | ||
594 | beqz len, done | ||
595 | nop | ||
596 | copy_bytes: | ||
597 | /* 0 < len < NBYTES */ | ||
598 | #ifdef CONFIG_CPU_LITTLE_ENDIAN | ||
599 | #define SHIFT_START 0 | ||
600 | #define SHIFT_INC 8 | ||
601 | #else | ||
602 | #define SHIFT_START 8*(NBYTES-1) | ||
603 | #define SHIFT_INC -8 | ||
604 | #endif | ||
605 | move t2, zero # partial word | ||
606 | li t3, SHIFT_START # shift | ||
607 | /* use l_exc_copy here to return correct sum on fault */ | ||
608 | #define COPY_BYTE(N) \ | ||
609 | EXC( lbu t0, N(src), l_exc_copy); \ | ||
610 | SUB len, len, 1; \ | ||
611 | EXC( sb t0, N(dst), s_exc); \ | ||
612 | SLLV t0, t0, t3; \ | ||
613 | addu t3, SHIFT_INC; \ | ||
614 | beqz len, copy_bytes_done; \ | ||
615 | or t2, t0 | ||
616 | |||
617 | COPY_BYTE(0) | ||
618 | COPY_BYTE(1) | ||
619 | #ifdef USE_DOUBLE | ||
620 | COPY_BYTE(2) | ||
621 | COPY_BYTE(3) | ||
622 | COPY_BYTE(4) | ||
623 | COPY_BYTE(5) | ||
624 | #endif | ||
625 | EXC( lbu t0, NBYTES-2(src), l_exc_copy) | ||
626 | SUB len, len, 1 | ||
627 | EXC( sb t0, NBYTES-2(dst), s_exc) | ||
628 | SLLV t0, t0, t3 | ||
629 | or t2, t0 | ||
630 | copy_bytes_done: | ||
631 | ADDC(sum, t2) | ||
632 | done: | ||
633 | /* fold checksum */ | ||
634 | #ifdef USE_DOUBLE | ||
635 | dsll32 v1, sum, 0 | ||
636 | daddu sum, v1 | ||
637 | sltu v1, sum, v1 | ||
638 | dsra32 sum, sum, 0 | ||
639 | addu sum, v1 | ||
640 | #endif | ||
641 | sll v1, sum, 16 | ||
642 | addu sum, v1 | ||
643 | sltu v1, sum, v1 | ||
644 | srl sum, sum, 16 | ||
645 | addu sum, v1 | ||
646 | |||
647 | /* odd buffer alignment? */ | ||
648 | beqz odd, 1f | ||
649 | nop | ||
650 | sll v1, sum, 8 | ||
651 | srl sum, sum, 8 | ||
652 | or sum, v1 | ||
653 | andi sum, 0xffff | ||
654 | 1: | ||
655 | .set reorder | ||
656 | ADDC(sum, psum) | ||
657 | jr ra | ||
658 | .set noreorder | ||
659 | |||
660 | l_exc_copy: | ||
661 | /* | ||
662 | * Copy bytes from src until faulting load address (or until a | ||
663 | * lb faults) | ||
664 | * | ||
665 | * When reached by a faulting LDFIRST/LDREST, THREAD_BUADDR($28) | ||
666 | * may be more than a byte beyond the last address. | ||
667 | * Hence, the lb below may get an exception. | ||
668 | * | ||
669 | * Assumes src < THREAD_BUADDR($28) | ||
670 | */ | ||
671 | LOAD t0, TI_TASK($28) | ||
672 | li t2, SHIFT_START | ||
673 | LOAD t0, THREAD_BUADDR(t0) | ||
674 | 1: | ||
675 | EXC( lbu t1, 0(src), l_exc) | ||
676 | ADD src, src, 1 | ||
677 | sb t1, 0(dst) # can't fault -- we're copy_from_user | ||
678 | SLLV t1, t1, t2 | ||
679 | addu t2, SHIFT_INC | ||
680 | ADDC(sum, t1) | ||
681 | bne src, t0, 1b | ||
682 | ADD dst, dst, 1 | ||
683 | l_exc: | ||
684 | LOAD t0, TI_TASK($28) | ||
685 | nop | ||
686 | LOAD t0, THREAD_BUADDR(t0) # t0 is just past last good address | ||
687 | nop | ||
688 | SUB len, AT, t0 # len number of uncopied bytes | ||
689 | /* | ||
690 | * Here's where we rely on src and dst being incremented in tandem, | ||
691 | * See (3) above. | ||
692 | * dst += (fault addr - src) to put dst at first byte to clear | ||
693 | */ | ||
694 | ADD dst, t0 # compute start address in a1 | ||
695 | SUB dst, src | ||
696 | /* | ||
697 | * Clear len bytes starting at dst. Can't call __bzero because it | ||
698 | * might modify len. An inefficient loop for these rare times... | ||
699 | */ | ||
700 | beqz len, done | ||
701 | SUB src, len, 1 | ||
702 | 1: sb zero, 0(dst) | ||
703 | ADD dst, dst, 1 | ||
704 | bnez src, 1b | ||
705 | SUB src, src, 1 | ||
706 | li v1, -EFAULT | ||
707 | b done | ||
708 | sw v1, (errptr) | ||
709 | |||
710 | s_exc: | ||
711 | li v0, -1 /* invalid checksum */ | ||
712 | li v1, -EFAULT | ||
713 | jr ra | ||
714 | sw v1, (errptr) | ||
715 | END(__csum_partial_copy_user) | ||
diff --git a/arch/mips/lib/csum_partial_copy.c b/arch/mips/lib/csum_partial_copy.c deleted file mode 100644 index 06771040a267..000000000000 --- a/arch/mips/lib/csum_partial_copy.c +++ /dev/null | |||
@@ -1,52 +0,0 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 1994, 1995 Waldorf Electronics GmbH | ||
7 | * Copyright (C) 1998, 1999 Ralf Baechle | ||
8 | */ | ||
9 | #include <linux/kernel.h> | ||
10 | #include <linux/module.h> | ||
11 | #include <linux/types.h> | ||
12 | #include <asm/byteorder.h> | ||
13 | #include <asm/string.h> | ||
14 | #include <asm/uaccess.h> | ||
15 | #include <net/checksum.h> | ||
16 | |||
17 | /* | ||
18 | * copy while checksumming, otherwise like csum_partial | ||
19 | */ | ||
20 | __wsum csum_partial_copy_nocheck(const void *src, | ||
21 | void *dst, int len, __wsum sum) | ||
22 | { | ||
23 | /* | ||
24 | * It's 2:30 am and I don't feel like doing it real ... | ||
25 | * This is lots slower than the real thing (tm) | ||
26 | */ | ||
27 | sum = csum_partial(src, len, sum); | ||
28 | memcpy(dst, src, len); | ||
29 | |||
30 | return sum; | ||
31 | } | ||
32 | |||
33 | EXPORT_SYMBOL(csum_partial_copy_nocheck); | ||
34 | |||
35 | /* | ||
36 | * Copy from userspace and compute checksum. If we catch an exception | ||
37 | * then zero the rest of the buffer. | ||
38 | */ | ||
39 | __wsum csum_partial_copy_from_user (const void __user *src, | ||
40 | void *dst, int len, __wsum sum, int *err_ptr) | ||
41 | { | ||
42 | int missing; | ||
43 | |||
44 | might_sleep(); | ||
45 | missing = copy_from_user(dst, src, len); | ||
46 | if (missing) { | ||
47 | memset(dst + len - missing, 0, missing); | ||
48 | *err_ptr = -EFAULT; | ||
49 | } | ||
50 | |||
51 | return csum_partial(dst, len, sum); | ||
52 | } | ||
diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c index e4604c73f02e..a3c3a1d462b2 100644 --- a/arch/mips/mips-boards/generic/time.c +++ b/arch/mips/mips-boards/generic/time.c | |||
@@ -47,6 +47,9 @@ | |||
47 | #ifdef CONFIG_MIPS_MALTA | 47 | #ifdef CONFIG_MIPS_MALTA |
48 | #include <asm/mips-boards/maltaint.h> | 48 | #include <asm/mips-boards/maltaint.h> |
49 | #endif | 49 | #endif |
50 | #ifdef CONFIG_MIPS_SEAD | ||
51 | #include <asm/mips-boards/seadint.h> | ||
52 | #endif | ||
50 | 53 | ||
51 | unsigned long cpu_khz; | 54 | unsigned long cpu_khz; |
52 | 55 | ||
@@ -263,11 +266,13 @@ void __init mips_time_init(void) | |||
263 | 266 | ||
264 | void __init plat_timer_setup(struct irqaction *irq) | 267 | void __init plat_timer_setup(struct irqaction *irq) |
265 | { | 268 | { |
269 | #ifdef MSC01E_INT_BASE | ||
266 | if (cpu_has_veic) { | 270 | if (cpu_has_veic) { |
267 | set_vi_handler (MSC01E_INT_CPUCTR, mips_timer_dispatch); | 271 | set_vi_handler (MSC01E_INT_CPUCTR, mips_timer_dispatch); |
268 | mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR; | 272 | mips_cpu_timer_irq = MSC01E_INT_BASE + MSC01E_INT_CPUCTR; |
269 | } | 273 | } else |
270 | else { | 274 | #endif |
275 | { | ||
271 | if (cpu_has_vint) | 276 | if (cpu_has_vint) |
272 | set_vi_handler (MIPSCPU_INT_CPUCTR, mips_timer_dispatch); | 277 | set_vi_handler (MIPSCPU_INT_CPUCTR, mips_timer_dispatch); |
273 | mips_cpu_timer_irq = MIPSCPU_INT_BASE + MIPSCPU_INT_CPUCTR; | 278 | mips_cpu_timer_irq = MIPSCPU_INT_BASE + MIPSCPU_INT_CPUCTR; |
diff --git a/arch/mips/mips-boards/malta/malta_mtd.c b/arch/mips/mips-boards/malta/malta_mtd.c new file mode 100644 index 000000000000..8ad9bdf25dce --- /dev/null +++ b/arch/mips/mips-boards/malta/malta_mtd.c | |||
@@ -0,0 +1,63 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2006 MIPS Technologies, Inc. | ||
7 | * written by Ralf Baechle <ralf@linux-mips.org> | ||
8 | */ | ||
9 | |||
10 | #include <linux/init.h> | ||
11 | #include <linux/platform_device.h> | ||
12 | #include <linux/mtd/partitions.h> | ||
13 | #include <linux/mtd/physmap.h> | ||
14 | #include <mtd/mtd-abi.h> | ||
15 | |||
16 | static struct mtd_partition malta_mtd_partitions[] = { | ||
17 | { | ||
18 | .name = "YAMON", | ||
19 | .offset = 0x0, | ||
20 | .size = 0x100000, | ||
21 | .mask_flags = MTD_WRITEABLE | ||
22 | }, { | ||
23 | .name = "User FS", | ||
24 | .offset = 0x100000, | ||
25 | .size = 0x2e0000 | ||
26 | }, { | ||
27 | .name = "Board Config", | ||
28 | .offset = 0x3e0000, | ||
29 | .size = 0x020000, | ||
30 | .mask_flags = MTD_WRITEABLE | ||
31 | } | ||
32 | }; | ||
33 | |||
34 | static struct physmap_flash_data malta_flash_data = { | ||
35 | .width = 4, | ||
36 | .nr_parts = ARRAY_SIZE(malta_mtd_partitions), | ||
37 | .parts = malta_mtd_partitions | ||
38 | }; | ||
39 | |||
40 | static struct resource malta_flash_resource = { | ||
41 | .start = 0x1e000000, | ||
42 | .end = 0x1e3fffff, | ||
43 | .flags = IORESOURCE_MEM | ||
44 | }; | ||
45 | |||
46 | static struct platform_device malta_flash = { | ||
47 | .name = "physmap-flash", | ||
48 | .id = 0, | ||
49 | .dev = { | ||
50 | .platform_data = &malta_flash_data, | ||
51 | }, | ||
52 | .num_resources = 1, | ||
53 | .resource = &malta_flash_resource, | ||
54 | }; | ||
55 | |||
56 | static int __init malta_mtd_init(void) | ||
57 | { | ||
58 | platform_device_register(&malta_flash); | ||
59 | |||
60 | return 0; | ||
61 | } | ||
62 | |||
63 | module_init(malta_mtd_init) | ||
diff --git a/arch/mips/mips-boards/sead/sead_int.c b/arch/mips/mips-boards/sead/sead_int.c index f445fcddfdfd..874ccb0066b8 100644 --- a/arch/mips/mips-boards/sead/sead_int.c +++ b/arch/mips/mips-boards/sead/sead_int.c | |||
@@ -21,7 +21,7 @@ | |||
21 | * Sead board. | 21 | * Sead board. |
22 | */ | 22 | */ |
23 | #include <linux/init.h> | 23 | #include <linux/init.h> |
24 | #include <linux/irq.h> | 24 | #include <linux/interrupt.h> |
25 | 25 | ||
26 | #include <asm/irq_cpu.h> | 26 | #include <asm/irq_cpu.h> |
27 | #include <asm/mipsregs.h> | 27 | #include <asm/mipsregs.h> |
@@ -108,7 +108,7 @@ asmlinkage void plat_irq_dispatch(void) | |||
108 | if (irq >= 0) | 108 | if (irq >= 0) |
109 | do_IRQ(MIPSCPU_INT_BASE + irq); | 109 | do_IRQ(MIPSCPU_INT_BASE + irq); |
110 | else | 110 | else |
111 | spurious_interrupt(regs); | 111 | spurious_interrupt(); |
112 | } | 112 | } |
113 | 113 | ||
114 | void __init arch_init_irq(void) | 114 | void __init arch_init_irq(void) |
diff --git a/arch/mips/mm/pg-r4k.c b/arch/mips/mm/pg-r4k.c index d41fc5885e87..dc795be62807 100644 --- a/arch/mips/mm/pg-r4k.c +++ b/arch/mips/mm/pg-r4k.c | |||
@@ -243,11 +243,10 @@ static void __init __build_store_reg(int reg) | |||
243 | 243 | ||
244 | static inline void build_store_reg(int reg) | 244 | static inline void build_store_reg(int reg) |
245 | { | 245 | { |
246 | if (cpu_has_prefetch) | 246 | int pref_off = cpu_has_prefetch ? |
247 | if (reg) | 247 | (reg ? pref_offset_copy : pref_offset_clear) : 0; |
248 | build_dst_pref(pref_offset_copy); | 248 | if (pref_off) |
249 | else | 249 | build_dst_pref(pref_off); |
250 | build_dst_pref(pref_offset_clear); | ||
251 | else if (cpu_has_cache_cdex_s) | 250 | else if (cpu_has_cache_cdex_s) |
252 | build_cdex_s(); | 251 | build_cdex_s(); |
253 | else if (cpu_has_cache_cdex_p) | 252 | else if (cpu_has_cache_cdex_p) |
diff --git a/arch/mips/pci/ops-pnx8550.c b/arch/mips/pci/ops-pnx8550.c index 454b65cc3354..f556b7a8dccd 100644 --- a/arch/mips/pci/ops-pnx8550.c +++ b/arch/mips/pci/ops-pnx8550.c | |||
@@ -202,7 +202,7 @@ write_config_byte(struct pci_bus *bus, unsigned int devfn, int where, u8 val) | |||
202 | break; | 202 | break; |
203 | } | 203 | } |
204 | 204 | ||
205 | err = config_access(PCI_CMD_CONFIG_READ, bus, devfn, where, ~(1 << (where & 3)), &data); | 205 | err = config_access(PCI_CMD_CONFIG_WRITE, bus, devfn, where, ~(1 << (where & 3)), &data); |
206 | 206 | ||
207 | return err; | 207 | return err; |
208 | } | 208 | } |
diff --git a/arch/mips/philips/pnx8550/common/time.c b/arch/mips/philips/pnx8550/common/time.c index 65c440e8480b..68def3880a1c 100644 --- a/arch/mips/philips/pnx8550/common/time.c +++ b/arch/mips/philips/pnx8550/common/time.c | |||
@@ -33,7 +33,17 @@ | |||
33 | #include <int.h> | 33 | #include <int.h> |
34 | #include <cm.h> | 34 | #include <cm.h> |
35 | 35 | ||
36 | extern unsigned int mips_hpt_frequency; | 36 | static unsigned long cpj; |
37 | |||
38 | static cycle_t hpt_read(void) | ||
39 | { | ||
40 | return read_c0_count2(); | ||
41 | } | ||
42 | |||
43 | static void timer_ack(void) | ||
44 | { | ||
45 | write_c0_compare(cpj); | ||
46 | } | ||
37 | 47 | ||
38 | /* | 48 | /* |
39 | * pnx8550_time_init() - it does the following things: | 49 | * pnx8550_time_init() - it does the following things: |
@@ -68,27 +78,48 @@ void pnx8550_time_init(void) | |||
68 | * HZ timer interrupts per second. | 78 | * HZ timer interrupts per second. |
69 | */ | 79 | */ |
70 | mips_hpt_frequency = 27UL * ((1000000UL * n)/(m * pow2p)); | 80 | mips_hpt_frequency = 27UL * ((1000000UL * n)/(m * pow2p)); |
81 | cpj = (mips_hpt_frequency + HZ / 2) / HZ; | ||
82 | write_c0_count(0); | ||
83 | timer_ack(); | ||
84 | |||
85 | /* Setup Timer 2 */ | ||
86 | write_c0_count2(0); | ||
87 | write_c0_compare2(0xffffffff); | ||
88 | |||
89 | clocksource_mips.read = hpt_read; | ||
90 | mips_timer_ack = timer_ack; | ||
91 | } | ||
92 | |||
93 | static irqreturn_t monotonic_interrupt(int irq, void *dev_id) | ||
94 | { | ||
95 | /* Timer 2 clear interrupt */ | ||
96 | write_c0_compare2(-1); | ||
97 | return IRQ_HANDLED; | ||
71 | } | 98 | } |
72 | 99 | ||
100 | static struct irqaction monotonic_irqaction = { | ||
101 | .handler = monotonic_interrupt, | ||
102 | .flags = IRQF_DISABLED, | ||
103 | .name = "Monotonic timer", | ||
104 | }; | ||
105 | |||
73 | void __init plat_timer_setup(struct irqaction *irq) | 106 | void __init plat_timer_setup(struct irqaction *irq) |
74 | { | 107 | { |
75 | int configPR; | 108 | int configPR; |
76 | 109 | ||
77 | setup_irq(PNX8550_INT_TIMER1, irq); | 110 | setup_irq(PNX8550_INT_TIMER1, irq); |
111 | setup_irq(PNX8550_INT_TIMER2, &monotonic_irqaction); | ||
78 | 112 | ||
79 | /* Start timer1 */ | 113 | /* Timer 1 start */ |
80 | configPR = read_c0_config7(); | 114 | configPR = read_c0_config7(); |
81 | configPR &= ~0x00000008; | 115 | configPR &= ~0x00000008; |
82 | write_c0_config7(configPR); | 116 | write_c0_config7(configPR); |
83 | 117 | ||
84 | /* Timer 2 stop */ | 118 | /* Timer 2 start */ |
85 | configPR = read_c0_config7(); | 119 | configPR = read_c0_config7(); |
86 | configPR |= 0x00000010; | 120 | configPR &= ~0x00000010; |
87 | write_c0_config7(configPR); | 121 | write_c0_config7(configPR); |
88 | 122 | ||
89 | write_c0_count2(0); | ||
90 | write_c0_compare2(0xffffffff); | ||
91 | |||
92 | /* Timer 3 stop */ | 123 | /* Timer 3 stop */ |
93 | configPR = read_c0_config7(); | 124 | configPR = read_c0_config7(); |
94 | configPR |= 0x00000020; | 125 | configPR |= 0x00000020; |
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index 4a23a97b06cd..12cc019307ad 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c | |||
@@ -608,7 +608,7 @@ void smp_cpus_done(unsigned int cpu_max) | |||
608 | } | 608 | } |
609 | 609 | ||
610 | 610 | ||
611 | int __devinit __cpu_up(unsigned int cpu) | 611 | int __cpuinit __cpu_up(unsigned int cpu) |
612 | { | 612 | { |
613 | if (cpu != 0 && cpu < parisc_max_cpus) | 613 | if (cpu != 0 && cpu < parisc_max_cpus) |
614 | smp_boot_one_cpu(cpu); | 614 | smp_boot_one_cpu(cpu); |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 8699dadcd096..0855d55c194d 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -436,7 +436,7 @@ config PPC_EFIKA | |||
436 | select RTAS_PROC | 436 | select RTAS_PROC |
437 | select PPC_MPC52xx | 437 | select PPC_MPC52xx |
438 | select PPC_NATIVE | 438 | select PPC_NATIVE |
439 | default y | 439 | default n |
440 | 440 | ||
441 | config PPC_LITE5200 | 441 | config PPC_LITE5200 |
442 | bool "Freescale Lite5200 Eval Board" | 442 | bool "Freescale Lite5200 Eval Board" |
@@ -471,7 +471,7 @@ config PPC_PREP | |||
471 | select PPC_INDIRECT_PCI | 471 | select PPC_INDIRECT_PCI |
472 | select PPC_UDBG_16550 | 472 | select PPC_UDBG_16550 |
473 | select PPC_NATIVE | 473 | select PPC_NATIVE |
474 | default y | 474 | default n |
475 | 475 | ||
476 | config PPC_MAPLE | 476 | config PPC_MAPLE |
477 | depends on PPC_MULTIPLATFORM && PPC64 | 477 | depends on PPC_MULTIPLATFORM && PPC64 |
diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts index 8bc0d259796d..a8efb59f5dd7 100644 --- a/arch/powerpc/boot/dts/lite5200.dts +++ b/arch/powerpc/boot/dts/lite5200.dts | |||
@@ -238,7 +238,7 @@ | |||
238 | 238 | ||
239 | // PSC3 in CODEC mode example | 239 | // PSC3 in CODEC mode example |
240 | i2s@2400 { // PSC3 | 240 | i2s@2400 { // PSC3 |
241 | device_type = "i2s"; | 241 | device_type = "sound"; |
242 | compatible = "mpc5200-psc-i2s\0mpc52xx-psc-i2s"; | 242 | compatible = "mpc5200-psc-i2s\0mpc52xx-psc-i2s"; |
243 | reg = <2400 100>; | 243 | reg = <2400 100>; |
244 | interrupts = <2 3 0>; | 244 | interrupts = <2 3 0>; |
@@ -265,7 +265,7 @@ | |||
265 | 265 | ||
266 | // PSC6 in AC97 mode example | 266 | // PSC6 in AC97 mode example |
267 | ac97@2c00 { // PSC6 | 267 | ac97@2c00 { // PSC6 |
268 | device_type = "ac97"; | 268 | device_type = "sound"; |
269 | compatible = "mpc5200-psc-ac97\0mpc52xx-psc-ac97"; | 269 | compatible = "mpc5200-psc-ac97\0mpc52xx-psc-ac97"; |
270 | reg = <2c00 100>; | 270 | reg = <2c00 100>; |
271 | interrupts = <2 4 0>; | 271 | interrupts = <2 4 0>; |
diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts index 81cb76418a78..1aabee432d86 100644 --- a/arch/powerpc/boot/dts/lite5200b.dts +++ b/arch/powerpc/boot/dts/lite5200b.dts | |||
@@ -243,7 +243,7 @@ | |||
243 | 243 | ||
244 | // PSC3 in CODEC mode example | 244 | // PSC3 in CODEC mode example |
245 | i2s@2400 { // PSC3 | 245 | i2s@2400 { // PSC3 |
246 | device_type = "i2s"; | 246 | device_type = "sound"; |
247 | compatible = "mpc5200b-psc-i2s\0mpc52xx-psc-i2s"; | 247 | compatible = "mpc5200b-psc-i2s\0mpc52xx-psc-i2s"; |
248 | reg = <2400 100>; | 248 | reg = <2400 100>; |
249 | interrupts = <2 3 0>; | 249 | interrupts = <2 3 0>; |
@@ -270,7 +270,7 @@ | |||
270 | 270 | ||
271 | // PSC6 in AC97 mode example | 271 | // PSC6 in AC97 mode example |
272 | ac97@2c00 { // PSC6 | 272 | ac97@2c00 { // PSC6 |
273 | device_type = "ac97"; | 273 | device_type = "sound"; |
274 | compatible = "mpc5200b-psc-ac97\0mpc52xx-psc-ac97"; | 274 | compatible = "mpc5200b-psc-ac97\0mpc52xx-psc-ac97"; |
275 | reg = <2c00 100>; | 275 | reg = <2c00 100>; |
276 | interrupts = <2 4 0>; | 276 | interrupts = <2 4 0>; |
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig index 1c009651f925..340376a47001 100644 --- a/arch/powerpc/configs/ppc64_defconfig +++ b/arch/powerpc/configs/ppc64_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.18-rc6 | 3 | # Linux kernel version: 2.6.20-rc3 |
4 | # Sun Sep 10 10:45:11 2006 | 4 | # Tue Jan 2 15:32:44 2007 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | CONFIG_64BIT=y | 7 | CONFIG_64BIT=y |
@@ -10,6 +10,8 @@ CONFIG_MMU=y | |||
10 | CONFIG_GENERIC_HARDIRQS=y | 10 | CONFIG_GENERIC_HARDIRQS=y |
11 | CONFIG_IRQ_PER_CPU=y | 11 | CONFIG_IRQ_PER_CPU=y |
12 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 12 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
13 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
14 | CONFIG_ARCH_HAS_ILOG2_U64=y | ||
13 | CONFIG_GENERIC_HWEIGHT=y | 15 | CONFIG_GENERIC_HWEIGHT=y |
14 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 16 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
15 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 17 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
@@ -22,6 +24,8 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y | |||
22 | CONFIG_PPC_OF=y | 24 | CONFIG_PPC_OF=y |
23 | CONFIG_PPC_UDBG_16550=y | 25 | CONFIG_PPC_UDBG_16550=y |
24 | CONFIG_GENERIC_TBSYNC=y | 26 | CONFIG_GENERIC_TBSYNC=y |
27 | CONFIG_AUDIT_ARCH=y | ||
28 | CONFIG_GENERIC_BUG=y | ||
25 | # CONFIG_DEFAULT_UIMAGE is not set | 29 | # CONFIG_DEFAULT_UIMAGE is not set |
26 | 30 | ||
27 | # | 31 | # |
@@ -31,6 +35,10 @@ CONFIG_GENERIC_TBSYNC=y | |||
31 | CONFIG_POWER3=y | 35 | CONFIG_POWER3=y |
32 | CONFIG_POWER4=y | 36 | CONFIG_POWER4=y |
33 | CONFIG_PPC_FPU=y | 37 | CONFIG_PPC_FPU=y |
38 | # CONFIG_PPC_DCR_NATIVE is not set | ||
39 | CONFIG_PPC_DCR_MMIO=y | ||
40 | CONFIG_PPC_DCR=y | ||
41 | CONFIG_PPC_OF_PLATFORM_PCI=y | ||
34 | CONFIG_ALTIVEC=y | 42 | CONFIG_ALTIVEC=y |
35 | CONFIG_PPC_STD_MMU=y | 43 | CONFIG_PPC_STD_MMU=y |
36 | CONFIG_VIRT_CPU_ACCOUNTING=y | 44 | CONFIG_VIRT_CPU_ACCOUNTING=y |
@@ -52,19 +60,24 @@ CONFIG_LOCALVERSION="" | |||
52 | CONFIG_LOCALVERSION_AUTO=y | 60 | CONFIG_LOCALVERSION_AUTO=y |
53 | CONFIG_SWAP=y | 61 | CONFIG_SWAP=y |
54 | CONFIG_SYSVIPC=y | 62 | CONFIG_SYSVIPC=y |
63 | # CONFIG_IPC_NS is not set | ||
55 | CONFIG_POSIX_MQUEUE=y | 64 | CONFIG_POSIX_MQUEUE=y |
56 | # CONFIG_BSD_PROCESS_ACCT is not set | 65 | # CONFIG_BSD_PROCESS_ACCT is not set |
57 | CONFIG_TASKSTATS=y | 66 | CONFIG_TASKSTATS=y |
58 | CONFIG_TASK_DELAY_ACCT=y | 67 | CONFIG_TASK_DELAY_ACCT=y |
59 | CONFIG_SYSCTL=y | 68 | # CONFIG_UTS_NS is not set |
60 | # CONFIG_AUDIT is not set | 69 | # CONFIG_AUDIT is not set |
61 | CONFIG_IKCONFIG=y | 70 | CONFIG_IKCONFIG=y |
62 | CONFIG_IKCONFIG_PROC=y | 71 | CONFIG_IKCONFIG_PROC=y |
63 | CONFIG_CPUSETS=y | 72 | CONFIG_CPUSETS=y |
73 | CONFIG_SYSFS_DEPRECATED=y | ||
64 | CONFIG_RELAY=y | 74 | CONFIG_RELAY=y |
65 | CONFIG_INITRAMFS_SOURCE="" | 75 | CONFIG_INITRAMFS_SOURCE="" |
66 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 76 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
77 | # CONFIG_TASK_XACCT is not set | ||
78 | CONFIG_SYSCTL=y | ||
67 | # CONFIG_EMBEDDED is not set | 79 | # CONFIG_EMBEDDED is not set |
80 | CONFIG_SYSCTL_SYSCALL=y | ||
68 | CONFIG_KALLSYMS=y | 81 | CONFIG_KALLSYMS=y |
69 | CONFIG_KALLSYMS_ALL=y | 82 | CONFIG_KALLSYMS_ALL=y |
70 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 83 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -73,12 +86,12 @@ CONFIG_PRINTK=y | |||
73 | CONFIG_BUG=y | 86 | CONFIG_BUG=y |
74 | CONFIG_ELF_CORE=y | 87 | CONFIG_ELF_CORE=y |
75 | CONFIG_BASE_FULL=y | 88 | CONFIG_BASE_FULL=y |
76 | CONFIG_RT_MUTEXES=y | ||
77 | CONFIG_FUTEX=y | 89 | CONFIG_FUTEX=y |
78 | CONFIG_EPOLL=y | 90 | CONFIG_EPOLL=y |
79 | CONFIG_SHMEM=y | 91 | CONFIG_SHMEM=y |
80 | CONFIG_SLAB=y | 92 | CONFIG_SLAB=y |
81 | CONFIG_VM_EVENT_COUNTERS=y | 93 | CONFIG_VM_EVENT_COUNTERS=y |
94 | CONFIG_RT_MUTEXES=y | ||
82 | # CONFIG_TINY_SHMEM is not set | 95 | # CONFIG_TINY_SHMEM is not set |
83 | CONFIG_BASE_SMALL=0 | 96 | CONFIG_BASE_SMALL=0 |
84 | # CONFIG_SLOB is not set | 97 | # CONFIG_SLOB is not set |
@@ -97,6 +110,7 @@ CONFIG_STOP_MACHINE=y | |||
97 | # | 110 | # |
98 | # Block layer | 111 | # Block layer |
99 | # | 112 | # |
113 | CONFIG_BLOCK=y | ||
100 | CONFIG_BLK_DEV_IO_TRACE=y | 114 | CONFIG_BLK_DEV_IO_TRACE=y |
101 | 115 | ||
102 | # | 116 | # |
@@ -116,16 +130,20 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
116 | # Platform support | 130 | # Platform support |
117 | # | 131 | # |
118 | CONFIG_PPC_MULTIPLATFORM=y | 132 | CONFIG_PPC_MULTIPLATFORM=y |
119 | # CONFIG_PPC_ISERIES is not set | ||
120 | # CONFIG_EMBEDDED6xx is not set | 133 | # CONFIG_EMBEDDED6xx is not set |
121 | # CONFIG_APUS is not set | 134 | # CONFIG_APUS is not set |
122 | CONFIG_PPC_PSERIES=y | 135 | CONFIG_PPC_PSERIES=y |
136 | CONFIG_PPC_ISERIES=y | ||
137 | # CONFIG_PPC_MPC52xx is not set | ||
123 | CONFIG_PPC_PMAC=y | 138 | CONFIG_PPC_PMAC=y |
124 | CONFIG_PPC_PMAC64=y | 139 | CONFIG_PPC_PMAC64=y |
125 | CONFIG_PPC_MAPLE=y | 140 | CONFIG_PPC_MAPLE=y |
141 | # CONFIG_PPC_PASEMI is not set | ||
126 | CONFIG_PPC_CELL=y | 142 | CONFIG_PPC_CELL=y |
127 | CONFIG_PPC_CELL_NATIVE=y | 143 | CONFIG_PPC_CELL_NATIVE=y |
128 | CONFIG_PPC_IBM_CELL_BLADE=y | 144 | CONFIG_PPC_IBM_CELL_BLADE=y |
145 | # CONFIG_PPC_PS3 is not set | ||
146 | CONFIG_PPC_NATIVE=y | ||
129 | CONFIG_UDBG_RTAS_CONSOLE=y | 147 | CONFIG_UDBG_RTAS_CONSOLE=y |
130 | CONFIG_XICS=y | 148 | CONFIG_XICS=y |
131 | CONFIG_U3_DART=y | 149 | CONFIG_U3_DART=y |
@@ -139,6 +157,8 @@ CONFIG_IBMVIO=y | |||
139 | # CONFIG_IBMEBUS is not set | 157 | # CONFIG_IBMEBUS is not set |
140 | # CONFIG_PPC_MPC106 is not set | 158 | # CONFIG_PPC_MPC106 is not set |
141 | CONFIG_PPC_970_NAP=y | 159 | CONFIG_PPC_970_NAP=y |
160 | CONFIG_PPC_INDIRECT_IO=y | ||
161 | CONFIG_GENERIC_IOMAP=y | ||
142 | CONFIG_CPU_FREQ=y | 162 | CONFIG_CPU_FREQ=y |
143 | CONFIG_CPU_FREQ_TABLE=y | 163 | CONFIG_CPU_FREQ_TABLE=y |
144 | # CONFIG_CPU_FREQ_DEBUG is not set | 164 | # CONFIG_CPU_FREQ_DEBUG is not set |
@@ -160,14 +180,16 @@ CONFIG_MPIC=y | |||
160 | # | 180 | # |
161 | CONFIG_SPU_FS=m | 181 | CONFIG_SPU_FS=m |
162 | CONFIG_SPU_BASE=y | 182 | CONFIG_SPU_BASE=y |
163 | CONFIG_SPUFS_MMAP=y | ||
164 | CONFIG_CBE_RAS=y | 183 | CONFIG_CBE_RAS=y |
184 | CONFIG_CBE_THERM=m | ||
185 | CONFIG_CBE_CPUFREQ=m | ||
165 | 186 | ||
166 | # | 187 | # |
167 | # Kernel options | 188 | # Kernel options |
168 | # | 189 | # |
169 | # CONFIG_HZ_100 is not set | 190 | # CONFIG_HZ_100 is not set |
170 | CONFIG_HZ_250=y | 191 | CONFIG_HZ_250=y |
192 | # CONFIG_HZ_300 is not set | ||
171 | # CONFIG_HZ_1000 is not set | 193 | # CONFIG_HZ_1000 is not set |
172 | CONFIG_HZ=250 | 194 | CONFIG_HZ=250 |
173 | CONFIG_PREEMPT_NONE=y | 195 | CONFIG_PREEMPT_NONE=y |
@@ -192,6 +214,7 @@ CONFIG_ARCH_SELECT_MEMORY_MODEL=y | |||
192 | CONFIG_ARCH_FLATMEM_ENABLE=y | 214 | CONFIG_ARCH_FLATMEM_ENABLE=y |
193 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | 215 | CONFIG_ARCH_SPARSEMEM_ENABLE=y |
194 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y | 216 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y |
217 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
195 | CONFIG_SELECT_MEMORY_MODEL=y | 218 | CONFIG_SELECT_MEMORY_MODEL=y |
196 | # CONFIG_FLATMEM_MANUAL is not set | 219 | # CONFIG_FLATMEM_MANUAL is not set |
197 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 220 | # CONFIG_DISCONTIGMEM_MANUAL is not set |
@@ -201,6 +224,7 @@ CONFIG_HAVE_MEMORY_PRESENT=y | |||
201 | # CONFIG_SPARSEMEM_STATIC is not set | 224 | # CONFIG_SPARSEMEM_STATIC is not set |
202 | CONFIG_SPARSEMEM_EXTREME=y | 225 | CONFIG_SPARSEMEM_EXTREME=y |
203 | CONFIG_MEMORY_HOTPLUG=y | 226 | CONFIG_MEMORY_HOTPLUG=y |
227 | CONFIG_MEMORY_HOTPLUG_SPARSE=y | ||
204 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 228 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
205 | CONFIG_RESOURCES_64BIT=y | 229 | CONFIG_RESOURCES_64BIT=y |
206 | CONFIG_ARCH_MEMORY_PROBE=y | 230 | CONFIG_ARCH_MEMORY_PROBE=y |
@@ -222,6 +246,7 @@ CONFIG_PPC_I8259=y | |||
222 | CONFIG_PCI=y | 246 | CONFIG_PCI=y |
223 | CONFIG_PCI_DOMAINS=y | 247 | CONFIG_PCI_DOMAINS=y |
224 | # CONFIG_PCIEPORTBUS is not set | 248 | # CONFIG_PCIEPORTBUS is not set |
249 | # CONFIG_PCI_MULTITHREAD_PROBE is not set | ||
225 | # CONFIG_PCI_DEBUG is not set | 250 | # CONFIG_PCI_DEBUG is not set |
226 | 251 | ||
227 | # | 252 | # |
@@ -254,6 +279,7 @@ CONFIG_PACKET=y | |||
254 | CONFIG_UNIX=y | 279 | CONFIG_UNIX=y |
255 | CONFIG_XFRM=y | 280 | CONFIG_XFRM=y |
256 | CONFIG_XFRM_USER=m | 281 | CONFIG_XFRM_USER=m |
282 | # CONFIG_XFRM_SUB_POLICY is not set | ||
257 | CONFIG_NET_KEY=m | 283 | CONFIG_NET_KEY=m |
258 | CONFIG_INET=y | 284 | CONFIG_INET=y |
259 | CONFIG_IP_MULTICAST=y | 285 | CONFIG_IP_MULTICAST=y |
@@ -272,10 +298,13 @@ CONFIG_INET_XFRM_TUNNEL=m | |||
272 | CONFIG_INET_TUNNEL=y | 298 | CONFIG_INET_TUNNEL=y |
273 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 299 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
274 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 300 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
301 | CONFIG_INET_XFRM_MODE_BEET=y | ||
275 | CONFIG_INET_DIAG=y | 302 | CONFIG_INET_DIAG=y |
276 | CONFIG_INET_TCP_DIAG=y | 303 | CONFIG_INET_TCP_DIAG=y |
277 | # CONFIG_TCP_CONG_ADVANCED is not set | 304 | # CONFIG_TCP_CONG_ADVANCED is not set |
278 | CONFIG_TCP_CONG_BIC=y | 305 | CONFIG_TCP_CONG_CUBIC=y |
306 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
307 | # CONFIG_TCP_MD5SIG is not set | ||
279 | 308 | ||
280 | # | 309 | # |
281 | # IP: Virtual Server Configuration | 310 | # IP: Virtual Server Configuration |
@@ -294,25 +323,31 @@ CONFIG_NETFILTER=y | |||
294 | CONFIG_NETFILTER_NETLINK=y | 323 | CONFIG_NETFILTER_NETLINK=y |
295 | CONFIG_NETFILTER_NETLINK_QUEUE=m | 324 | CONFIG_NETFILTER_NETLINK_QUEUE=m |
296 | CONFIG_NETFILTER_NETLINK_LOG=m | 325 | CONFIG_NETFILTER_NETLINK_LOG=m |
326 | CONFIG_NF_CONNTRACK_ENABLED=m | ||
327 | CONFIG_NF_CONNTRACK_SUPPORT=y | ||
328 | # CONFIG_IP_NF_CONNTRACK_SUPPORT is not set | ||
329 | CONFIG_NF_CONNTRACK=m | ||
330 | CONFIG_NF_CT_ACCT=y | ||
331 | CONFIG_NF_CONNTRACK_MARK=y | ||
332 | CONFIG_NF_CONNTRACK_EVENTS=y | ||
333 | CONFIG_NF_CT_PROTO_GRE=m | ||
334 | CONFIG_NF_CT_PROTO_SCTP=m | ||
335 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
336 | CONFIG_NF_CONNTRACK_FTP=m | ||
337 | CONFIG_NF_CONNTRACK_H323=m | ||
338 | CONFIG_NF_CONNTRACK_IRC=m | ||
339 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
340 | CONFIG_NF_CONNTRACK_PPTP=m | ||
341 | CONFIG_NF_CONNTRACK_SIP=m | ||
342 | CONFIG_NF_CONNTRACK_TFTP=m | ||
343 | CONFIG_NF_CT_NETLINK=m | ||
297 | # CONFIG_NETFILTER_XTABLES is not set | 344 | # CONFIG_NETFILTER_XTABLES is not set |
298 | 345 | ||
299 | # | 346 | # |
300 | # IP: Netfilter Configuration | 347 | # IP: Netfilter Configuration |
301 | # | 348 | # |
302 | CONFIG_IP_NF_CONNTRACK=m | 349 | CONFIG_NF_CONNTRACK_IPV4=m |
303 | CONFIG_IP_NF_CT_ACCT=y | 350 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
304 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
305 | CONFIG_IP_NF_CONNTRACK_EVENTS=y | ||
306 | CONFIG_IP_NF_CONNTRACK_NETLINK=m | ||
307 | CONFIG_IP_NF_CT_PROTO_SCTP=m | ||
308 | CONFIG_IP_NF_FTP=m | ||
309 | CONFIG_IP_NF_IRC=m | ||
310 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
311 | CONFIG_IP_NF_TFTP=m | ||
312 | CONFIG_IP_NF_AMANDA=m | ||
313 | # CONFIG_IP_NF_PPTP is not set | ||
314 | # CONFIG_IP_NF_H323 is not set | ||
315 | CONFIG_IP_NF_SIP=m | ||
316 | CONFIG_IP_NF_QUEUE=m | 351 | CONFIG_IP_NF_QUEUE=m |
317 | 352 | ||
318 | # | 353 | # |
@@ -339,7 +374,6 @@ CONFIG_LLC=y | |||
339 | # CONFIG_ATALK is not set | 374 | # CONFIG_ATALK is not set |
340 | # CONFIG_X25 is not set | 375 | # CONFIG_X25 is not set |
341 | # CONFIG_LAPB is not set | 376 | # CONFIG_LAPB is not set |
342 | # CONFIG_NET_DIVERT is not set | ||
343 | # CONFIG_ECONET is not set | 377 | # CONFIG_ECONET is not set |
344 | # CONFIG_WAN_ROUTER is not set | 378 | # CONFIG_WAN_ROUTER is not set |
345 | 379 | ||
@@ -412,6 +446,12 @@ CONFIG_BLK_DEV_INITRD=y | |||
412 | # CONFIG_ATA_OVER_ETH is not set | 446 | # CONFIG_ATA_OVER_ETH is not set |
413 | 447 | ||
414 | # | 448 | # |
449 | # Misc devices | ||
450 | # | ||
451 | # CONFIG_SGI_IOC4 is not set | ||
452 | # CONFIG_TIFM_CORE is not set | ||
453 | |||
454 | # | ||
415 | # ATA/ATAPI/MFM/RLL support | 455 | # ATA/ATAPI/MFM/RLL support |
416 | # | 456 | # |
417 | CONFIG_IDE=y | 457 | CONFIG_IDE=y |
@@ -438,7 +478,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y | |||
438 | # CONFIG_BLK_DEV_OFFBOARD is not set | 478 | # CONFIG_BLK_DEV_OFFBOARD is not set |
439 | CONFIG_BLK_DEV_GENERIC=y | 479 | CONFIG_BLK_DEV_GENERIC=y |
440 | # CONFIG_BLK_DEV_OPTI621 is not set | 480 | # CONFIG_BLK_DEV_OPTI621 is not set |
441 | CONFIG_BLK_DEV_SL82C105=y | ||
442 | CONFIG_BLK_DEV_IDEDMA_PCI=y | 481 | CONFIG_BLK_DEV_IDEDMA_PCI=y |
443 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | 482 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set |
444 | CONFIG_IDEDMA_PCI_AUTO=y | 483 | CONFIG_IDEDMA_PCI_AUTO=y |
@@ -453,6 +492,7 @@ CONFIG_BLK_DEV_AMD74XX=y | |||
453 | # CONFIG_BLK_DEV_CS5530 is not set | 492 | # CONFIG_BLK_DEV_CS5530 is not set |
454 | # CONFIG_BLK_DEV_HPT34X is not set | 493 | # CONFIG_BLK_DEV_HPT34X is not set |
455 | # CONFIG_BLK_DEV_HPT366 is not set | 494 | # CONFIG_BLK_DEV_HPT366 is not set |
495 | # CONFIG_BLK_DEV_JMICRON is not set | ||
456 | # CONFIG_BLK_DEV_SC1200 is not set | 496 | # CONFIG_BLK_DEV_SC1200 is not set |
457 | # CONFIG_BLK_DEV_PIIX is not set | 497 | # CONFIG_BLK_DEV_PIIX is not set |
458 | # CONFIG_BLK_DEV_IT821X is not set | 498 | # CONFIG_BLK_DEV_IT821X is not set |
@@ -461,6 +501,7 @@ CONFIG_BLK_DEV_AMD74XX=y | |||
461 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | 501 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set |
462 | # CONFIG_BLK_DEV_SVWKS is not set | 502 | # CONFIG_BLK_DEV_SVWKS is not set |
463 | # CONFIG_BLK_DEV_SIIMAGE is not set | 503 | # CONFIG_BLK_DEV_SIIMAGE is not set |
504 | CONFIG_BLK_DEV_SL82C105=y | ||
464 | # CONFIG_BLK_DEV_SLC90E66 is not set | 505 | # CONFIG_BLK_DEV_SLC90E66 is not set |
465 | # CONFIG_BLK_DEV_TRM290 is not set | 506 | # CONFIG_BLK_DEV_TRM290 is not set |
466 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 507 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
@@ -478,6 +519,8 @@ CONFIG_IDEDMA_AUTO=y | |||
478 | # | 519 | # |
479 | # CONFIG_RAID_ATTRS is not set | 520 | # CONFIG_RAID_ATTRS is not set |
480 | CONFIG_SCSI=y | 521 | CONFIG_SCSI=y |
522 | # CONFIG_SCSI_TGT is not set | ||
523 | CONFIG_SCSI_NETLINK=y | ||
481 | CONFIG_SCSI_PROC_FS=y | 524 | CONFIG_SCSI_PROC_FS=y |
482 | 525 | ||
483 | # | 526 | # |
@@ -497,14 +540,16 @@ CONFIG_CHR_DEV_SG=y | |||
497 | CONFIG_SCSI_MULTI_LUN=y | 540 | CONFIG_SCSI_MULTI_LUN=y |
498 | CONFIG_SCSI_CONSTANTS=y | 541 | CONFIG_SCSI_CONSTANTS=y |
499 | # CONFIG_SCSI_LOGGING is not set | 542 | # CONFIG_SCSI_LOGGING is not set |
543 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
500 | 544 | ||
501 | # | 545 | # |
502 | # SCSI Transport Attributes | 546 | # SCSI Transports |
503 | # | 547 | # |
504 | CONFIG_SCSI_SPI_ATTRS=y | 548 | CONFIG_SCSI_SPI_ATTRS=y |
505 | CONFIG_SCSI_FC_ATTRS=y | 549 | CONFIG_SCSI_FC_ATTRS=y |
506 | CONFIG_SCSI_ISCSI_ATTRS=m | 550 | CONFIG_SCSI_ISCSI_ATTRS=m |
507 | # CONFIG_SCSI_SAS_ATTRS is not set | 551 | # CONFIG_SCSI_SAS_ATTRS is not set |
552 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
508 | 553 | ||
509 | # | 554 | # |
510 | # SCSI low-level drivers | 555 | # SCSI low-level drivers |
@@ -517,26 +562,12 @@ CONFIG_SCSI_ISCSI_ATTRS=m | |||
517 | # CONFIG_SCSI_AIC7XXX is not set | 562 | # CONFIG_SCSI_AIC7XXX is not set |
518 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 563 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
519 | # CONFIG_SCSI_AIC79XX is not set | 564 | # CONFIG_SCSI_AIC79XX is not set |
565 | # CONFIG_SCSI_AIC94XX is not set | ||
566 | # CONFIG_SCSI_ARCMSR is not set | ||
520 | # CONFIG_MEGARAID_NEWGEN is not set | 567 | # CONFIG_MEGARAID_NEWGEN is not set |
521 | # CONFIG_MEGARAID_LEGACY is not set | 568 | # CONFIG_MEGARAID_LEGACY is not set |
522 | # CONFIG_MEGARAID_SAS is not set | 569 | # CONFIG_MEGARAID_SAS is not set |
523 | CONFIG_ATA=y | ||
524 | # CONFIG_SATA_AHCI is not set | ||
525 | CONFIG_SATA_SVW=y | ||
526 | # CONFIG_SCSI_ATA_PIIX is not set | ||
527 | # CONFIG_SATA_MV is not set | ||
528 | # CONFIG_SATA_NV is not set | ||
529 | # CONFIG_SCSI_PDC_ADMA is not set | ||
530 | # CONFIG_SCSI_HPTIOP is not set | 570 | # CONFIG_SCSI_HPTIOP is not set |
531 | # CONFIG_SATA_QSTOR is not set | ||
532 | # CONFIG_SATA_PROMISE is not set | ||
533 | # CONFIG_SATA_SX4 is not set | ||
534 | # CONFIG_SATA_SIL is not set | ||
535 | # CONFIG_SATA_SIL24 is not set | ||
536 | # CONFIG_SATA_SIS is not set | ||
537 | # CONFIG_SATA_ULI is not set | ||
538 | # CONFIG_SATA_VIA is not set | ||
539 | # CONFIG_SATA_VITESSE is not set | ||
540 | # CONFIG_SCSI_BUSLOGIC is not set | 571 | # CONFIG_SCSI_BUSLOGIC is not set |
541 | # CONFIG_SCSI_DMX3191D is not set | 572 | # CONFIG_SCSI_DMX3191D is not set |
542 | # CONFIG_SCSI_EATA is not set | 573 | # CONFIG_SCSI_EATA is not set |
@@ -546,6 +577,7 @@ CONFIG_SATA_SVW=y | |||
546 | CONFIG_SCSI_IBMVSCSI=y | 577 | CONFIG_SCSI_IBMVSCSI=y |
547 | # CONFIG_SCSI_INITIO is not set | 578 | # CONFIG_SCSI_INITIO is not set |
548 | # CONFIG_SCSI_INIA100 is not set | 579 | # CONFIG_SCSI_INIA100 is not set |
580 | # CONFIG_SCSI_STEX is not set | ||
549 | CONFIG_SCSI_SYM53C8XX_2=y | 581 | CONFIG_SCSI_SYM53C8XX_2=y |
550 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 | 582 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 |
551 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 583 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
@@ -556,10 +588,66 @@ CONFIG_SCSI_IPR_TRACE=y | |||
556 | CONFIG_SCSI_IPR_DUMP=y | 588 | CONFIG_SCSI_IPR_DUMP=y |
557 | # CONFIG_SCSI_QLOGIC_1280 is not set | 589 | # CONFIG_SCSI_QLOGIC_1280 is not set |
558 | # CONFIG_SCSI_QLA_FC is not set | 590 | # CONFIG_SCSI_QLA_FC is not set |
591 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
559 | CONFIG_SCSI_LPFC=m | 592 | CONFIG_SCSI_LPFC=m |
560 | # CONFIG_SCSI_DC395x is not set | 593 | # CONFIG_SCSI_DC395x is not set |
561 | # CONFIG_SCSI_DC390T is not set | 594 | # CONFIG_SCSI_DC390T is not set |
562 | CONFIG_SCSI_DEBUG=m | 595 | CONFIG_SCSI_DEBUG=m |
596 | # CONFIG_SCSI_SRP is not set | ||
597 | |||
598 | # | ||
599 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
600 | # | ||
601 | CONFIG_ATA=y | ||
602 | # CONFIG_SATA_AHCI is not set | ||
603 | CONFIG_SATA_SVW=y | ||
604 | # CONFIG_ATA_PIIX is not set | ||
605 | # CONFIG_SATA_MV is not set | ||
606 | # CONFIG_SATA_NV is not set | ||
607 | # CONFIG_PDC_ADMA is not set | ||
608 | # CONFIG_SATA_QSTOR is not set | ||
609 | # CONFIG_SATA_PROMISE is not set | ||
610 | # CONFIG_SATA_SX4 is not set | ||
611 | # CONFIG_SATA_SIL is not set | ||
612 | # CONFIG_SATA_SIL24 is not set | ||
613 | # CONFIG_SATA_SIS is not set | ||
614 | # CONFIG_SATA_ULI is not set | ||
615 | # CONFIG_SATA_VIA is not set | ||
616 | # CONFIG_SATA_VITESSE is not set | ||
617 | # CONFIG_PATA_ALI is not set | ||
618 | # CONFIG_PATA_AMD is not set | ||
619 | # CONFIG_PATA_ARTOP is not set | ||
620 | # CONFIG_PATA_ATIIXP is not set | ||
621 | # CONFIG_PATA_CMD64X is not set | ||
622 | # CONFIG_PATA_CS5520 is not set | ||
623 | # CONFIG_PATA_CS5530 is not set | ||
624 | # CONFIG_PATA_CYPRESS is not set | ||
625 | # CONFIG_PATA_EFAR is not set | ||
626 | # CONFIG_ATA_GENERIC is not set | ||
627 | # CONFIG_PATA_HPT366 is not set | ||
628 | # CONFIG_PATA_HPT37X is not set | ||
629 | # CONFIG_PATA_HPT3X2N is not set | ||
630 | # CONFIG_PATA_HPT3X3 is not set | ||
631 | # CONFIG_PATA_IT821X is not set | ||
632 | # CONFIG_PATA_JMICRON is not set | ||
633 | # CONFIG_PATA_TRIFLEX is not set | ||
634 | # CONFIG_PATA_MARVELL is not set | ||
635 | # CONFIG_PATA_MPIIX is not set | ||
636 | # CONFIG_PATA_OLDPIIX is not set | ||
637 | # CONFIG_PATA_NETCELL is not set | ||
638 | # CONFIG_PATA_NS87410 is not set | ||
639 | # CONFIG_PATA_OPTI is not set | ||
640 | # CONFIG_PATA_OPTIDMA is not set | ||
641 | # CONFIG_PATA_PDC_OLD is not set | ||
642 | # CONFIG_PATA_RADISYS is not set | ||
643 | # CONFIG_PATA_RZ1000 is not set | ||
644 | # CONFIG_PATA_SC1200 is not set | ||
645 | # CONFIG_PATA_SERVERWORKS is not set | ||
646 | # CONFIG_PATA_PDC2027X is not set | ||
647 | # CONFIG_PATA_SIL680 is not set | ||
648 | # CONFIG_PATA_SIS is not set | ||
649 | # CONFIG_PATA_VIA is not set | ||
650 | # CONFIG_PATA_WINBOND is not set | ||
563 | 651 | ||
564 | # | 652 | # |
565 | # Multi-device support (RAID and LVM) | 653 | # Multi-device support (RAID and LVM) |
@@ -575,6 +663,7 @@ CONFIG_MD_RAID5_RESHAPE=y | |||
575 | CONFIG_MD_MULTIPATH=m | 663 | CONFIG_MD_MULTIPATH=m |
576 | CONFIG_MD_FAULTY=m | 664 | CONFIG_MD_FAULTY=m |
577 | CONFIG_BLK_DEV_DM=y | 665 | CONFIG_BLK_DEV_DM=y |
666 | # CONFIG_DM_DEBUG is not set | ||
578 | CONFIG_DM_CRYPT=m | 667 | CONFIG_DM_CRYPT=m |
579 | CONFIG_DM_SNAPSHOT=m | 668 | CONFIG_DM_SNAPSHOT=m |
580 | CONFIG_DM_MIRROR=m | 669 | CONFIG_DM_MIRROR=m |
@@ -630,11 +719,13 @@ CONFIG_IEEE1394_RAWIO=y | |||
630 | CONFIG_ADB_PMU=y | 719 | CONFIG_ADB_PMU=y |
631 | # CONFIG_ADB_PMU_LED is not set | 720 | # CONFIG_ADB_PMU_LED is not set |
632 | CONFIG_PMAC_SMU=y | 721 | CONFIG_PMAC_SMU=y |
722 | # CONFIG_MAC_EMUMOUSEBTN is not set | ||
633 | CONFIG_THERM_PM72=y | 723 | CONFIG_THERM_PM72=y |
634 | CONFIG_WINDFARM=y | 724 | CONFIG_WINDFARM=y |
635 | CONFIG_WINDFARM_PM81=y | 725 | CONFIG_WINDFARM_PM81=y |
636 | CONFIG_WINDFARM_PM91=y | 726 | CONFIG_WINDFARM_PM91=y |
637 | CONFIG_WINDFARM_PM112=y | 727 | CONFIG_WINDFARM_PM112=y |
728 | # CONFIG_PMAC_RACKMETER is not set | ||
638 | 729 | ||
639 | # | 730 | # |
640 | # Network device support | 731 | # Network device support |
@@ -675,6 +766,7 @@ CONFIG_VORTEX=y | |||
675 | CONFIG_IBMVETH=m | 766 | CONFIG_IBMVETH=m |
676 | CONFIG_NET_PCI=y | 767 | CONFIG_NET_PCI=y |
677 | CONFIG_PCNET32=y | 768 | CONFIG_PCNET32=y |
769 | # CONFIG_PCNET32_NAPI is not set | ||
678 | # CONFIG_AMD8111_ETH is not set | 770 | # CONFIG_AMD8111_ETH is not set |
679 | # CONFIG_ADAPTEC_STARFIRE is not set | 771 | # CONFIG_ADAPTEC_STARFIRE is not set |
680 | # CONFIG_B44 is not set | 772 | # CONFIG_B44 is not set |
@@ -713,7 +805,7 @@ CONFIG_E1000=y | |||
713 | CONFIG_TIGON3=y | 805 | CONFIG_TIGON3=y |
714 | # CONFIG_BNX2 is not set | 806 | # CONFIG_BNX2 is not set |
715 | CONFIG_SPIDER_NET=m | 807 | CONFIG_SPIDER_NET=m |
716 | # CONFIG_MV643XX_ETH is not set | 808 | # CONFIG_QLA3XXX is not set |
717 | 809 | ||
718 | # | 810 | # |
719 | # Ethernet (10000 Mbit) | 811 | # Ethernet (10000 Mbit) |
@@ -723,6 +815,7 @@ CONFIG_IXGB=m | |||
723 | # CONFIG_IXGB_NAPI is not set | 815 | # CONFIG_IXGB_NAPI is not set |
724 | # CONFIG_S2IO is not set | 816 | # CONFIG_S2IO is not set |
725 | # CONFIG_MYRI10GE is not set | 817 | # CONFIG_MYRI10GE is not set |
818 | # CONFIG_NETXEN_NIC is not set | ||
726 | 819 | ||
727 | # | 820 | # |
728 | # Token Ring devices | 821 | # Token Ring devices |
@@ -741,6 +834,7 @@ CONFIG_IBMOL=y | |||
741 | # Wan interfaces | 834 | # Wan interfaces |
742 | # | 835 | # |
743 | # CONFIG_WAN is not set | 836 | # CONFIG_WAN is not set |
837 | CONFIG_ISERIES_VETH=m | ||
744 | # CONFIG_FDDI is not set | 838 | # CONFIG_FDDI is not set |
745 | # CONFIG_HIPPI is not set | 839 | # CONFIG_HIPPI is not set |
746 | CONFIG_PPP=m | 840 | CONFIG_PPP=m |
@@ -753,6 +847,7 @@ CONFIG_PPP_BSDCOMP=m | |||
753 | # CONFIG_PPP_MPPE is not set | 847 | # CONFIG_PPP_MPPE is not set |
754 | CONFIG_PPPOE=m | 848 | CONFIG_PPPOE=m |
755 | # CONFIG_SLIP is not set | 849 | # CONFIG_SLIP is not set |
850 | CONFIG_SLHC=m | ||
756 | # CONFIG_NET_FC is not set | 851 | # CONFIG_NET_FC is not set |
757 | # CONFIG_SHAPER is not set | 852 | # CONFIG_SHAPER is not set |
758 | CONFIG_NETCONSOLE=y | 853 | CONFIG_NETCONSOLE=y |
@@ -775,6 +870,7 @@ CONFIG_NET_POLL_CONTROLLER=y | |||
775 | # Input device support | 870 | # Input device support |
776 | # | 871 | # |
777 | CONFIG_INPUT=y | 872 | CONFIG_INPUT=y |
873 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
778 | 874 | ||
779 | # | 875 | # |
780 | # Userland interfaces | 876 | # Userland interfaces |
@@ -797,6 +893,7 @@ CONFIG_KEYBOARD_ATKBD=y | |||
797 | # CONFIG_KEYBOARD_LKKBD is not set | 893 | # CONFIG_KEYBOARD_LKKBD is not set |
798 | # CONFIG_KEYBOARD_XTKBD is not set | 894 | # CONFIG_KEYBOARD_XTKBD is not set |
799 | # CONFIG_KEYBOARD_NEWTON is not set | 895 | # CONFIG_KEYBOARD_NEWTON is not set |
896 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
800 | CONFIG_INPUT_MOUSE=y | 897 | CONFIG_INPUT_MOUSE=y |
801 | CONFIG_MOUSE_PS2=y | 898 | CONFIG_MOUSE_PS2=y |
802 | # CONFIG_MOUSE_SERIAL is not set | 899 | # CONFIG_MOUSE_SERIAL is not set |
@@ -850,6 +947,7 @@ CONFIG_LEGACY_PTYS=y | |||
850 | CONFIG_LEGACY_PTY_COUNT=256 | 947 | CONFIG_LEGACY_PTY_COUNT=256 |
851 | CONFIG_HVC_DRIVER=y | 948 | CONFIG_HVC_DRIVER=y |
852 | CONFIG_HVC_CONSOLE=y | 949 | CONFIG_HVC_CONSOLE=y |
950 | CONFIG_HVC_ISERIES=y | ||
853 | CONFIG_HVC_RTAS=y | 951 | CONFIG_HVC_RTAS=y |
854 | CONFIG_HVCS=m | 952 | CONFIG_HVCS=m |
855 | 953 | ||
@@ -868,10 +966,6 @@ CONFIG_GEN_RTC=y | |||
868 | # CONFIG_DTLK is not set | 966 | # CONFIG_DTLK is not set |
869 | # CONFIG_R3964 is not set | 967 | # CONFIG_R3964 is not set |
870 | # CONFIG_APPLICOM is not set | 968 | # CONFIG_APPLICOM is not set |
871 | |||
872 | # | ||
873 | # Ftape, the floppy tape device driver | ||
874 | # | ||
875 | # CONFIG_AGP is not set | 969 | # CONFIG_AGP is not set |
876 | # CONFIG_DRM is not set | 970 | # CONFIG_DRM is not set |
877 | CONFIG_RAW_DRIVER=y | 971 | CONFIG_RAW_DRIVER=y |
@@ -882,7 +976,6 @@ CONFIG_MAX_RAW_DEVS=256 | |||
882 | # TPM devices | 976 | # TPM devices |
883 | # | 977 | # |
884 | # CONFIG_TCG_TPM is not set | 978 | # CONFIG_TCG_TPM is not set |
885 | # CONFIG_TELCLOCK is not set | ||
886 | 979 | ||
887 | # | 980 | # |
888 | # I2C support | 981 | # I2C support |
@@ -947,6 +1040,7 @@ CONFIG_I2C_POWERMAC=y | |||
947 | # | 1040 | # |
948 | # Dallas's 1-wire bus | 1041 | # Dallas's 1-wire bus |
949 | # | 1042 | # |
1043 | # CONFIG_W1 is not set | ||
950 | 1044 | ||
951 | # | 1045 | # |
952 | # Hardware Monitoring support | 1046 | # Hardware Monitoring support |
@@ -955,14 +1049,9 @@ CONFIG_I2C_POWERMAC=y | |||
955 | # CONFIG_HWMON_VID is not set | 1049 | # CONFIG_HWMON_VID is not set |
956 | 1050 | ||
957 | # | 1051 | # |
958 | # Misc devices | ||
959 | # | ||
960 | |||
961 | # | ||
962 | # Multimedia devices | 1052 | # Multimedia devices |
963 | # | 1053 | # |
964 | # CONFIG_VIDEO_DEV is not set | 1054 | # CONFIG_VIDEO_DEV is not set |
965 | CONFIG_VIDEO_V4L2=y | ||
966 | 1055 | ||
967 | # | 1056 | # |
968 | # Digital Video Broadcasting Devices | 1057 | # Digital Video Broadcasting Devices |
@@ -975,6 +1064,7 @@ CONFIG_VIDEO_V4L2=y | |||
975 | # | 1064 | # |
976 | CONFIG_FIRMWARE_EDID=y | 1065 | CONFIG_FIRMWARE_EDID=y |
977 | CONFIG_FB=y | 1066 | CONFIG_FB=y |
1067 | CONFIG_FB_DDC=y | ||
978 | CONFIG_FB_CFB_FILLRECT=y | 1068 | CONFIG_FB_CFB_FILLRECT=y |
979 | CONFIG_FB_CFB_COPYAREA=y | 1069 | CONFIG_FB_CFB_COPYAREA=y |
980 | CONFIG_FB_CFB_IMAGEBLIT=y | 1070 | CONFIG_FB_CFB_IMAGEBLIT=y |
@@ -1011,6 +1101,7 @@ CONFIG_FB_RADEON_I2C=y | |||
1011 | # CONFIG_FB_3DFX is not set | 1101 | # CONFIG_FB_3DFX is not set |
1012 | # CONFIG_FB_VOODOO1 is not set | 1102 | # CONFIG_FB_VOODOO1 is not set |
1013 | # CONFIG_FB_TRIDENT is not set | 1103 | # CONFIG_FB_TRIDENT is not set |
1104 | CONFIG_FB_IBM_GXT4500=y | ||
1014 | # CONFIG_FB_VIRTUAL is not set | 1105 | # CONFIG_FB_VIRTUAL is not set |
1015 | 1106 | ||
1016 | # | 1107 | # |
@@ -1159,6 +1250,11 @@ CONFIG_SND_AOA_SOUNDBUS_I2S=m | |||
1159 | # CONFIG_SOUND_PRIME is not set | 1250 | # CONFIG_SOUND_PRIME is not set |
1160 | 1251 | ||
1161 | # | 1252 | # |
1253 | # HID Devices | ||
1254 | # | ||
1255 | CONFIG_HID=y | ||
1256 | |||
1257 | # | ||
1162 | # USB support | 1258 | # USB support |
1163 | # | 1259 | # |
1164 | CONFIG_USB_ARCH_HAS_HCD=y | 1260 | CONFIG_USB_ARCH_HAS_HCD=y |
@@ -1173,6 +1269,7 @@ CONFIG_USB=y | |||
1173 | CONFIG_USB_DEVICEFS=y | 1269 | CONFIG_USB_DEVICEFS=y |
1174 | # CONFIG_USB_BANDWIDTH is not set | 1270 | # CONFIG_USB_BANDWIDTH is not set |
1175 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1271 | # CONFIG_USB_DYNAMIC_MINORS is not set |
1272 | # CONFIG_USB_MULTITHREAD_PROBE is not set | ||
1176 | # CONFIG_USB_OTG is not set | 1273 | # CONFIG_USB_OTG is not set |
1177 | 1274 | ||
1178 | # | 1275 | # |
@@ -1214,13 +1311,13 @@ CONFIG_USB_STORAGE=m | |||
1214 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 1311 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
1215 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1312 | # CONFIG_USB_STORAGE_ALAUDA is not set |
1216 | # CONFIG_USB_STORAGE_ONETOUCH is not set | 1313 | # CONFIG_USB_STORAGE_ONETOUCH is not set |
1314 | # CONFIG_USB_STORAGE_KARMA is not set | ||
1217 | # CONFIG_USB_LIBUSUAL is not set | 1315 | # CONFIG_USB_LIBUSUAL is not set |
1218 | 1316 | ||
1219 | # | 1317 | # |
1220 | # USB Input Devices | 1318 | # USB Input Devices |
1221 | # | 1319 | # |
1222 | CONFIG_USB_HID=y | 1320 | CONFIG_USB_HID=y |
1223 | CONFIG_USB_HIDINPUT=y | ||
1224 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | 1321 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set |
1225 | # CONFIG_HID_FF is not set | 1322 | # CONFIG_HID_FF is not set |
1226 | CONFIG_USB_HIDDEV=y | 1323 | CONFIG_USB_HIDDEV=y |
@@ -1250,6 +1347,7 @@ CONFIG_USB_HIDDEV=y | |||
1250 | # CONFIG_USB_KAWETH is not set | 1347 | # CONFIG_USB_KAWETH is not set |
1251 | # CONFIG_USB_PEGASUS is not set | 1348 | # CONFIG_USB_PEGASUS is not set |
1252 | # CONFIG_USB_RTL8150 is not set | 1349 | # CONFIG_USB_RTL8150 is not set |
1350 | # CONFIG_USB_USBNET_MII is not set | ||
1253 | # CONFIG_USB_USBNET is not set | 1351 | # CONFIG_USB_USBNET is not set |
1254 | # CONFIG_USB_MON is not set | 1352 | # CONFIG_USB_MON is not set |
1255 | 1353 | ||
@@ -1267,6 +1365,7 @@ CONFIG_USB_HIDDEV=y | |||
1267 | # | 1365 | # |
1268 | # CONFIG_USB_EMI62 is not set | 1366 | # CONFIG_USB_EMI62 is not set |
1269 | # CONFIG_USB_EMI26 is not set | 1367 | # CONFIG_USB_EMI26 is not set |
1368 | # CONFIG_USB_ADUTUX is not set | ||
1270 | # CONFIG_USB_AUERSWALD is not set | 1369 | # CONFIG_USB_AUERSWALD is not set |
1271 | # CONFIG_USB_RIO500 is not set | 1370 | # CONFIG_USB_RIO500 is not set |
1272 | # CONFIG_USB_LEGOTOWER is not set | 1371 | # CONFIG_USB_LEGOTOWER is not set |
@@ -1274,12 +1373,13 @@ CONFIG_USB_HIDDEV=y | |||
1274 | # CONFIG_USB_LED is not set | 1373 | # CONFIG_USB_LED is not set |
1275 | # CONFIG_USB_CYPRESS_CY7C63 is not set | 1374 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
1276 | # CONFIG_USB_CYTHERM is not set | 1375 | # CONFIG_USB_CYTHERM is not set |
1277 | # CONFIG_USB_PHIDGETKIT is not set | 1376 | # CONFIG_USB_PHIDGET is not set |
1278 | # CONFIG_USB_PHIDGETSERVO is not set | ||
1279 | # CONFIG_USB_IDMOUSE is not set | 1377 | # CONFIG_USB_IDMOUSE is not set |
1378 | # CONFIG_USB_FTDI_ELAN is not set | ||
1280 | CONFIG_USB_APPLEDISPLAY=m | 1379 | CONFIG_USB_APPLEDISPLAY=m |
1281 | # CONFIG_USB_SISUSBVGA is not set | 1380 | # CONFIG_USB_SISUSBVGA is not set |
1282 | # CONFIG_USB_LD is not set | 1381 | # CONFIG_USB_LD is not set |
1382 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1283 | # CONFIG_USB_TEST is not set | 1383 | # CONFIG_USB_TEST is not set |
1284 | 1384 | ||
1285 | # | 1385 | # |
@@ -1318,6 +1418,7 @@ CONFIG_INFINIBAND=m | |||
1318 | CONFIG_INFINIBAND_ADDR_TRANS=y | 1418 | CONFIG_INFINIBAND_ADDR_TRANS=y |
1319 | CONFIG_INFINIBAND_MTHCA=m | 1419 | CONFIG_INFINIBAND_MTHCA=m |
1320 | CONFIG_INFINIBAND_MTHCA_DEBUG=y | 1420 | CONFIG_INFINIBAND_MTHCA_DEBUG=y |
1421 | # CONFIG_INFINIBAND_AMSO1100 is not set | ||
1321 | CONFIG_INFINIBAND_IPOIB=m | 1422 | CONFIG_INFINIBAND_IPOIB=m |
1322 | CONFIG_INFINIBAND_IPOIB_DEBUG=y | 1423 | CONFIG_INFINIBAND_IPOIB_DEBUG=y |
1323 | # CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set | 1424 | # CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set |
@@ -1347,6 +1448,10 @@ CONFIG_INFINIBAND_ISER=m | |||
1347 | # | 1448 | # |
1348 | 1449 | ||
1349 | # | 1450 | # |
1451 | # Virtualization | ||
1452 | # | ||
1453 | |||
1454 | # | ||
1350 | # File systems | 1455 | # File systems |
1351 | # | 1456 | # |
1352 | CONFIG_EXT2_FS=y | 1457 | CONFIG_EXT2_FS=y |
@@ -1359,6 +1464,7 @@ CONFIG_EXT3_FS=y | |||
1359 | CONFIG_EXT3_FS_XATTR=y | 1464 | CONFIG_EXT3_FS_XATTR=y |
1360 | CONFIG_EXT3_FS_POSIX_ACL=y | 1465 | CONFIG_EXT3_FS_POSIX_ACL=y |
1361 | CONFIG_EXT3_FS_SECURITY=y | 1466 | CONFIG_EXT3_FS_SECURITY=y |
1467 | # CONFIG_EXT4DEV_FS is not set | ||
1362 | CONFIG_JBD=y | 1468 | CONFIG_JBD=y |
1363 | # CONFIG_JBD_DEBUG is not set | 1469 | # CONFIG_JBD_DEBUG is not set |
1364 | CONFIG_FS_MBCACHE=y | 1470 | CONFIG_FS_MBCACHE=y |
@@ -1379,6 +1485,7 @@ CONFIG_XFS_FS=m | |||
1379 | CONFIG_XFS_SECURITY=y | 1485 | CONFIG_XFS_SECURITY=y |
1380 | CONFIG_XFS_POSIX_ACL=y | 1486 | CONFIG_XFS_POSIX_ACL=y |
1381 | # CONFIG_XFS_RT is not set | 1487 | # CONFIG_XFS_RT is not set |
1488 | # CONFIG_GFS2_FS is not set | ||
1382 | # CONFIG_OCFS2_FS is not set | 1489 | # CONFIG_OCFS2_FS is not set |
1383 | # CONFIG_MINIX_FS is not set | 1490 | # CONFIG_MINIX_FS is not set |
1384 | # CONFIG_ROMFS_FS is not set | 1491 | # CONFIG_ROMFS_FS is not set |
@@ -1414,8 +1521,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
1414 | # | 1521 | # |
1415 | CONFIG_PROC_FS=y | 1522 | CONFIG_PROC_FS=y |
1416 | CONFIG_PROC_KCORE=y | 1523 | CONFIG_PROC_KCORE=y |
1524 | CONFIG_PROC_SYSCTL=y | ||
1417 | CONFIG_SYSFS=y | 1525 | CONFIG_SYSFS=y |
1418 | CONFIG_TMPFS=y | 1526 | CONFIG_TMPFS=y |
1527 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1419 | CONFIG_HUGETLBFS=y | 1528 | CONFIG_HUGETLBFS=y |
1420 | CONFIG_HUGETLB_PAGE=y | 1529 | CONFIG_HUGETLB_PAGE=y |
1421 | CONFIG_RAMFS=y | 1530 | CONFIG_RAMFS=y |
@@ -1540,8 +1649,23 @@ CONFIG_NLS_KOI8_U=m | |||
1540 | CONFIG_NLS_UTF8=m | 1649 | CONFIG_NLS_UTF8=m |
1541 | 1650 | ||
1542 | # | 1651 | # |
1652 | # Distributed Lock Manager | ||
1653 | # | ||
1654 | # CONFIG_DLM is not set | ||
1655 | |||
1656 | # | ||
1657 | # iSeries device drivers | ||
1658 | # | ||
1659 | # CONFIG_VIOCONS is not set | ||
1660 | CONFIG_VIODASD=y | ||
1661 | CONFIG_VIOCD=m | ||
1662 | CONFIG_VIOTAPE=m | ||
1663 | CONFIG_VIOPATH=y | ||
1664 | |||
1665 | # | ||
1543 | # Library routines | 1666 | # Library routines |
1544 | # | 1667 | # |
1668 | CONFIG_BITREVERSE=y | ||
1545 | CONFIG_CRC_CCITT=m | 1669 | CONFIG_CRC_CCITT=m |
1546 | # CONFIG_CRC16 is not set | 1670 | # CONFIG_CRC16 is not set |
1547 | CONFIG_CRC32=y | 1671 | CONFIG_CRC32=y |
@@ -1551,6 +1675,7 @@ CONFIG_ZLIB_DEFLATE=m | |||
1551 | CONFIG_TEXTSEARCH=y | 1675 | CONFIG_TEXTSEARCH=y |
1552 | CONFIG_TEXTSEARCH_KMP=m | 1676 | CONFIG_TEXTSEARCH_KMP=m |
1553 | CONFIG_PLIST=y | 1677 | CONFIG_PLIST=y |
1678 | CONFIG_IOMAP_COPY=y | ||
1554 | 1679 | ||
1555 | # | 1680 | # |
1556 | # Instrumentation Support | 1681 | # Instrumentation Support |
@@ -1563,8 +1688,11 @@ CONFIG_OPROFILE=y | |||
1563 | # Kernel hacking | 1688 | # Kernel hacking |
1564 | # | 1689 | # |
1565 | # CONFIG_PRINTK_TIME is not set | 1690 | # CONFIG_PRINTK_TIME is not set |
1691 | CONFIG_ENABLE_MUST_CHECK=y | ||
1566 | CONFIG_MAGIC_SYSRQ=y | 1692 | CONFIG_MAGIC_SYSRQ=y |
1567 | # CONFIG_UNUSED_SYMBOLS is not set | 1693 | # CONFIG_UNUSED_SYMBOLS is not set |
1694 | CONFIG_DEBUG_FS=y | ||
1695 | # CONFIG_HEADERS_CHECK is not set | ||
1568 | CONFIG_DEBUG_KERNEL=y | 1696 | CONFIG_DEBUG_KERNEL=y |
1569 | CONFIG_LOG_BUF_SHIFT=17 | 1697 | CONFIG_LOG_BUF_SHIFT=17 |
1570 | CONFIG_DETECT_SOFTLOCKUP=y | 1698 | CONFIG_DETECT_SOFTLOCKUP=y |
@@ -1578,16 +1706,19 @@ CONFIG_DEBUG_MUTEXES=y | |||
1578 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1706 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1579 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 1707 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
1580 | # CONFIG_DEBUG_KOBJECT is not set | 1708 | # CONFIG_DEBUG_KOBJECT is not set |
1709 | CONFIG_DEBUG_BUGVERBOSE=y | ||
1581 | # CONFIG_DEBUG_INFO is not set | 1710 | # CONFIG_DEBUG_INFO is not set |
1582 | CONFIG_DEBUG_FS=y | ||
1583 | # CONFIG_DEBUG_VM is not set | 1711 | # CONFIG_DEBUG_VM is not set |
1712 | # CONFIG_DEBUG_LIST is not set | ||
1584 | CONFIG_FORCED_INLINING=y | 1713 | CONFIG_FORCED_INLINING=y |
1585 | # CONFIG_RCU_TORTURE_TEST is not set | 1714 | # CONFIG_RCU_TORTURE_TEST is not set |
1586 | CONFIG_DEBUG_STACKOVERFLOW=y | 1715 | CONFIG_DEBUG_STACKOVERFLOW=y |
1587 | CONFIG_DEBUG_STACK_USAGE=y | 1716 | CONFIG_DEBUG_STACK_USAGE=y |
1717 | # CONFIG_HCALL_STATS is not set | ||
1588 | CONFIG_DEBUGGER=y | 1718 | CONFIG_DEBUGGER=y |
1589 | CONFIG_XMON=y | 1719 | CONFIG_XMON=y |
1590 | # CONFIG_XMON_DEFAULT is not set | 1720 | # CONFIG_XMON_DEFAULT is not set |
1721 | CONFIG_XMON_DISASSEMBLY=y | ||
1591 | CONFIG_IRQSTACKS=y | 1722 | CONFIG_IRQSTACKS=y |
1592 | CONFIG_BOOTX_TEXT=y | 1723 | CONFIG_BOOTX_TEXT=y |
1593 | # CONFIG_PPC_EARLY_DEBUG is not set | 1724 | # CONFIG_PPC_EARLY_DEBUG is not set |
@@ -1602,7 +1733,12 @@ CONFIG_BOOTX_TEXT=y | |||
1602 | # Cryptographic options | 1733 | # Cryptographic options |
1603 | # | 1734 | # |
1604 | CONFIG_CRYPTO=y | 1735 | CONFIG_CRYPTO=y |
1736 | CONFIG_CRYPTO_ALGAPI=y | ||
1737 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1738 | CONFIG_CRYPTO_HASH=y | ||
1739 | CONFIG_CRYPTO_MANAGER=y | ||
1605 | CONFIG_CRYPTO_HMAC=y | 1740 | CONFIG_CRYPTO_HMAC=y |
1741 | # CONFIG_CRYPTO_XCBC is not set | ||
1606 | CONFIG_CRYPTO_NULL=m | 1742 | CONFIG_CRYPTO_NULL=m |
1607 | CONFIG_CRYPTO_MD4=m | 1743 | CONFIG_CRYPTO_MD4=m |
1608 | CONFIG_CRYPTO_MD5=y | 1744 | CONFIG_CRYPTO_MD5=y |
@@ -1611,9 +1747,14 @@ CONFIG_CRYPTO_SHA256=m | |||
1611 | CONFIG_CRYPTO_SHA512=m | 1747 | CONFIG_CRYPTO_SHA512=m |
1612 | CONFIG_CRYPTO_WP512=m | 1748 | CONFIG_CRYPTO_WP512=m |
1613 | CONFIG_CRYPTO_TGR192=m | 1749 | CONFIG_CRYPTO_TGR192=m |
1750 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1751 | CONFIG_CRYPTO_ECB=m | ||
1752 | CONFIG_CRYPTO_CBC=y | ||
1753 | # CONFIG_CRYPTO_LRW is not set | ||
1614 | CONFIG_CRYPTO_DES=y | 1754 | CONFIG_CRYPTO_DES=y |
1615 | CONFIG_CRYPTO_BLOWFISH=m | 1755 | CONFIG_CRYPTO_BLOWFISH=m |
1616 | CONFIG_CRYPTO_TWOFISH=m | 1756 | CONFIG_CRYPTO_TWOFISH=m |
1757 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1617 | CONFIG_CRYPTO_SERPENT=m | 1758 | CONFIG_CRYPTO_SERPENT=m |
1618 | CONFIG_CRYPTO_AES=m | 1759 | CONFIG_CRYPTO_AES=m |
1619 | CONFIG_CRYPTO_CAST5=m | 1760 | CONFIG_CRYPTO_CAST5=m |
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c index e96521530d21..030d300cd71c 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c | |||
@@ -303,5 +303,8 @@ int main(void) | |||
303 | DEFINE(NSEC_PER_SEC, NSEC_PER_SEC); | 303 | DEFINE(NSEC_PER_SEC, NSEC_PER_SEC); |
304 | DEFINE(CLOCK_REALTIME_RES, TICK_NSEC); | 304 | DEFINE(CLOCK_REALTIME_RES, TICK_NSEC); |
305 | 305 | ||
306 | #ifdef CONFIG_BUG | ||
307 | DEFINE(BUG_ENTRY_SIZE, sizeof(struct bug_entry)); | ||
308 | #endif | ||
306 | return 0; | 309 | return 0; |
307 | } | 310 | } |
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 1a3d4de197d2..2551c0884afc 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <asm/asm-offsets.h> | 28 | #include <asm/asm-offsets.h> |
29 | #include <asm/cputable.h> | 29 | #include <asm/cputable.h> |
30 | #include <asm/firmware.h> | 30 | #include <asm/firmware.h> |
31 | #include <asm/bug.h> | ||
31 | 32 | ||
32 | /* | 33 | /* |
33 | * System calls. | 34 | * System calls. |
@@ -634,19 +635,15 @@ _GLOBAL(enter_rtas) | |||
634 | li r0,0 | 635 | li r0,0 |
635 | mtcr r0 | 636 | mtcr r0 |
636 | 637 | ||
638 | #ifdef CONFIG_BUG | ||
637 | /* There is no way it is acceptable to get here with interrupts enabled, | 639 | /* There is no way it is acceptable to get here with interrupts enabled, |
638 | * check it with the asm equivalent of WARN_ON | 640 | * check it with the asm equivalent of WARN_ON |
639 | */ | 641 | */ |
640 | lbz r0,PACASOFTIRQEN(r13) | 642 | lbz r0,PACASOFTIRQEN(r13) |
641 | 1: tdnei r0,0 | 643 | 1: tdnei r0,0 |
642 | .section __bug_table,"a" | 644 | EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,BUGFLAG_WARNING |
643 | .llong 1b,__LINE__ + 0x1000000, 1f, 2f | 645 | #endif |
644 | .previous | 646 | |
645 | .section .rodata,"a" | ||
646 | 1: .asciz __FILE__ | ||
647 | 2: .asciz "enter_rtas" | ||
648 | .previous | ||
649 | |||
650 | /* Hard-disable interrupts */ | 647 | /* Hard-disable interrupts */ |
651 | mfmsr r6 | 648 | mfmsr r6 |
652 | rldicl r7,r6,48,1 | 649 | rldicl r7,r6,48,1 |
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index 9b28c238b6c0..0e8beca460af 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c | |||
@@ -468,7 +468,7 @@ static int __devinit cpu_enable(unsigned int cpu) | |||
468 | return -ENOSYS; | 468 | return -ENOSYS; |
469 | } | 469 | } |
470 | 470 | ||
471 | int __devinit __cpu_up(unsigned int cpu) | 471 | int __cpuinit __cpu_up(unsigned int cpu) |
472 | { | 472 | { |
473 | int c; | 473 | int c; |
474 | 474 | ||
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c index 89c836d54809..1bb20d841080 100644 --- a/arch/powerpc/mm/hugetlbpage.c +++ b/arch/powerpc/mm/hugetlbpage.c | |||
@@ -744,7 +744,8 @@ static int htlb_check_hinted_area(unsigned long addr, unsigned long len) | |||
744 | struct vm_area_struct *vma; | 744 | struct vm_area_struct *vma; |
745 | 745 | ||
746 | vma = find_vma(current->mm, addr); | 746 | vma = find_vma(current->mm, addr); |
747 | if (!vma || ((addr + len) <= vma->vm_start)) | 747 | if (TASK_SIZE - len >= addr && |
748 | (!vma || ((addr + len) <= vma->vm_start))) | ||
748 | return 0; | 749 | return 0; |
749 | 750 | ||
750 | return -ENOMEM; | 751 | return -ENOMEM; |
@@ -815,6 +816,8 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr, | |||
815 | return -EINVAL; | 816 | return -EINVAL; |
816 | if (len & ~HPAGE_MASK) | 817 | if (len & ~HPAGE_MASK) |
817 | return -EINVAL; | 818 | return -EINVAL; |
819 | if (len > TASK_SIZE) | ||
820 | return -ENOMEM; | ||
818 | 821 | ||
819 | if (!cpu_has_feature(CPU_FTR_16M_PAGE)) | 822 | if (!cpu_has_feature(CPU_FTR_16M_PAGE)) |
820 | return -EINVAL; | 823 | return -EINVAL; |
@@ -823,9 +826,6 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr, | |||
823 | BUG_ON((addr + len) < addr); | 826 | BUG_ON((addr + len) < addr); |
824 | 827 | ||
825 | if (test_thread_flag(TIF_32BIT)) { | 828 | if (test_thread_flag(TIF_32BIT)) { |
826 | /* Paranoia, caller should have dealt with this */ | ||
827 | BUG_ON((addr + len) > 0x100000000UL); | ||
828 | |||
829 | curareas = current->mm->context.low_htlb_areas; | 829 | curareas = current->mm->context.low_htlb_areas; |
830 | 830 | ||
831 | /* First see if we can use the hint address */ | 831 | /* First see if we can use the hint address */ |
diff --git a/arch/powerpc/platforms/52xx/lite5200.c b/arch/powerpc/platforms/52xx/lite5200.c index eaff71e74fb0..0f21bab33f6c 100644 --- a/arch/powerpc/platforms/52xx/lite5200.c +++ b/arch/powerpc/platforms/52xx/lite5200.c | |||
@@ -153,6 +153,7 @@ define_machine(lite52xx) { | |||
153 | .name = "lite52xx", | 153 | .name = "lite52xx", |
154 | .probe = lite52xx_probe, | 154 | .probe = lite52xx_probe, |
155 | .setup_arch = lite52xx_setup_arch, | 155 | .setup_arch = lite52xx_setup_arch, |
156 | .init = mpc52xx_declare_of_platform_devices, | ||
156 | .init_IRQ = mpc52xx_init_irq, | 157 | .init_IRQ = mpc52xx_init_irq, |
157 | .get_irq = mpc52xx_get_irq, | 158 | .get_irq = mpc52xx_get_irq, |
158 | .show_cpuinfo = lite52xx_show_cpuinfo, | 159 | .show_cpuinfo = lite52xx_show_cpuinfo, |
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c index 8331ff457770..cc40889074bd 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_common.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c | |||
@@ -116,11 +116,12 @@ unmap_regs: | |||
116 | if (xlb) iounmap(xlb); | 116 | if (xlb) iounmap(xlb); |
117 | } | 117 | } |
118 | 118 | ||
119 | static int __init | 119 | void __init |
120 | mpc52xx_declare_of_platform_devices(void) | 120 | mpc52xx_declare_of_platform_devices(void) |
121 | { | 121 | { |
122 | /* Find every child of the SOC node and add it to of_platform */ | 122 | /* Find every child of the SOC node and add it to of_platform */ |
123 | return of_platform_bus_probe(NULL, NULL, NULL); | 123 | if (of_platform_bus_probe(NULL, NULL, NULL)) |
124 | printk(KERN_ERR __FILE__ ": " | ||
125 | "Error while probing of_platform bus\n"); | ||
124 | } | 126 | } |
125 | 127 | ||
126 | device_initcall(mpc52xx_declare_of_platform_devices); | ||
diff --git a/arch/powerpc/platforms/iseries/lpevents.c b/arch/powerpc/platforms/iseries/lpevents.c index e3e929e1b460..c1f4502a3c6a 100644 --- a/arch/powerpc/platforms/iseries/lpevents.c +++ b/arch/powerpc/platforms/iseries/lpevents.c | |||
@@ -17,6 +17,7 @@ | |||
17 | 17 | ||
18 | #include <asm/system.h> | 18 | #include <asm/system.h> |
19 | #include <asm/paca.h> | 19 | #include <asm/paca.h> |
20 | #include <asm/firmware.h> | ||
20 | #include <asm/iseries/it_lp_queue.h> | 21 | #include <asm/iseries/it_lp_queue.h> |
21 | #include <asm/iseries/hv_lp_event.h> | 22 | #include <asm/iseries/hv_lp_event.h> |
22 | #include <asm/iseries/hv_call_event.h> | 23 | #include <asm/iseries/hv_call_event.h> |
@@ -318,6 +319,9 @@ static int __init proc_lpevents_init(void) | |||
318 | { | 319 | { |
319 | struct proc_dir_entry *e; | 320 | struct proc_dir_entry *e; |
320 | 321 | ||
322 | if (!firmware_has_feature(FW_FEATURE_ISERIES)) | ||
323 | return 0; | ||
324 | |||
321 | e = create_proc_entry("iSeries/lpevents", S_IFREG|S_IRUGO, NULL); | 325 | e = create_proc_entry("iSeries/lpevents", S_IFREG|S_IRUGO, NULL); |
322 | if (e) | 326 | if (e) |
323 | e->proc_fops = &proc_lpevents_operations; | 327 | e->proc_fops = &proc_lpevents_operations; |
diff --git a/arch/powerpc/platforms/iseries/mf.c b/arch/powerpc/platforms/iseries/mf.c index cff15ae24f6b..1ad0e4aaad1a 100644 --- a/arch/powerpc/platforms/iseries/mf.c +++ b/arch/powerpc/platforms/iseries/mf.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include <asm/uaccess.h> | 38 | #include <asm/uaccess.h> |
39 | #include <asm/paca.h> | 39 | #include <asm/paca.h> |
40 | #include <asm/abs_addr.h> | 40 | #include <asm/abs_addr.h> |
41 | #include <asm/firmware.h> | ||
41 | #include <asm/iseries/vio.h> | 42 | #include <asm/iseries/vio.h> |
42 | #include <asm/iseries/mf.h> | 43 | #include <asm/iseries/mf.h> |
43 | #include <asm/iseries/hv_lp_config.h> | 44 | #include <asm/iseries/hv_lp_config.h> |
@@ -1235,6 +1236,9 @@ static int __init mf_proc_init(void) | |||
1235 | char name[2]; | 1236 | char name[2]; |
1236 | int i; | 1237 | int i; |
1237 | 1238 | ||
1239 | if (!firmware_has_feature(FW_FEATURE_ISERIES)) | ||
1240 | return 0; | ||
1241 | |||
1238 | mf_proc_root = proc_mkdir("iSeries/mf", NULL); | 1242 | mf_proc_root = proc_mkdir("iSeries/mf", NULL); |
1239 | if (!mf_proc_root) | 1243 | if (!mf_proc_root) |
1240 | return 1; | 1244 | return 1; |
diff --git a/arch/powerpc/platforms/iseries/proc.c b/arch/powerpc/platforms/iseries/proc.c index c241413629ac..b54e37101e69 100644 --- a/arch/powerpc/platforms/iseries/proc.c +++ b/arch/powerpc/platforms/iseries/proc.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <asm/processor.h> | 24 | #include <asm/processor.h> |
25 | #include <asm/time.h> | 25 | #include <asm/time.h> |
26 | #include <asm/lppaca.h> | 26 | #include <asm/lppaca.h> |
27 | #include <asm/firmware.h> | ||
27 | #include <asm/iseries/hv_call_xm.h> | 28 | #include <asm/iseries/hv_call_xm.h> |
28 | 29 | ||
29 | #include "processor_vpd.h" | 30 | #include "processor_vpd.h" |
@@ -31,7 +32,12 @@ | |||
31 | 32 | ||
32 | static int __init iseries_proc_create(void) | 33 | static int __init iseries_proc_create(void) |
33 | { | 34 | { |
34 | struct proc_dir_entry *e = proc_mkdir("iSeries", 0); | 35 | struct proc_dir_entry *e; |
36 | |||
37 | if (!firmware_has_feature(FW_FEATURE_ISERIES)) | ||
38 | return 0; | ||
39 | |||
40 | e = proc_mkdir("iSeries", 0); | ||
35 | if (!e) | 41 | if (!e) |
36 | return 1; | 42 | return 1; |
37 | 43 | ||
@@ -106,6 +112,9 @@ static int __init iseries_proc_init(void) | |||
106 | { | 112 | { |
107 | struct proc_dir_entry *e; | 113 | struct proc_dir_entry *e; |
108 | 114 | ||
115 | if (!firmware_has_feature(FW_FEATURE_ISERIES)) | ||
116 | return 0; | ||
117 | |||
109 | e = create_proc_entry("iSeries/titanTod", S_IFREG|S_IRUGO, NULL); | 118 | e = create_proc_entry("iSeries/titanTod", S_IFREG|S_IRUGO, NULL); |
110 | if (e) | 119 | if (e) |
111 | e->proc_fops = &proc_titantod_operations; | 120 | e->proc_fops = &proc_titantod_operations; |
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c index bdf2afbb60c1..cce7e309340c 100644 --- a/arch/powerpc/platforms/iseries/setup.c +++ b/arch/powerpc/platforms/iseries/setup.c | |||
@@ -527,7 +527,8 @@ static void __init iSeries_fixup_klimit(void) | |||
527 | static int __init iSeries_src_init(void) | 527 | static int __init iSeries_src_init(void) |
528 | { | 528 | { |
529 | /* clear the progress line */ | 529 | /* clear the progress line */ |
530 | ppc_md.progress(" ", 0xffff); | 530 | if (firmware_has_feature(FW_FEATURE_ISERIES)) |
531 | ppc_md.progress(" ", 0xffff); | ||
531 | return 0; | 532 | return 0; |
532 | } | 533 | } |
533 | 534 | ||
diff --git a/arch/powerpc/platforms/iseries/viopath.c b/arch/powerpc/platforms/iseries/viopath.c index 84e7ee2c086f..a6799ed34a66 100644 --- a/arch/powerpc/platforms/iseries/viopath.c +++ b/arch/powerpc/platforms/iseries/viopath.c | |||
@@ -42,6 +42,7 @@ | |||
42 | #include <asm/system.h> | 42 | #include <asm/system.h> |
43 | #include <asm/uaccess.h> | 43 | #include <asm/uaccess.h> |
44 | #include <asm/prom.h> | 44 | #include <asm/prom.h> |
45 | #include <asm/firmware.h> | ||
45 | #include <asm/iseries/hv_types.h> | 46 | #include <asm/iseries/hv_types.h> |
46 | #include <asm/iseries/hv_lp_event.h> | 47 | #include <asm/iseries/hv_lp_event.h> |
47 | #include <asm/iseries/hv_lp_config.h> | 48 | #include <asm/iseries/hv_lp_config.h> |
@@ -183,6 +184,9 @@ static int __init vio_proc_init(void) | |||
183 | { | 184 | { |
184 | struct proc_dir_entry *e; | 185 | struct proc_dir_entry *e; |
185 | 186 | ||
187 | if (!firmware_has_feature(FW_FEATURE_ISERIES)) | ||
188 | return 0; | ||
189 | |||
186 | e = create_proc_entry("iSeries/config", 0, NULL); | 190 | e = create_proc_entry("iSeries/config", 0, NULL); |
187 | if (e) | 191 | if (e) |
188 | e->proc_fops = &proc_viopath_operations; | 192 | e->proc_fops = &proc_viopath_operations; |
diff --git a/arch/powerpc/platforms/maple/setup.c b/arch/powerpc/platforms/maple/setup.c index f12d5c69e74d..50855d4fd5a0 100644 --- a/arch/powerpc/platforms/maple/setup.c +++ b/arch/powerpc/platforms/maple/setup.c | |||
@@ -254,7 +254,6 @@ static void __init maple_init_IRQ(void) | |||
254 | printk(KERN_DEBUG "OpenPIC addr: %lx, has ISUs: %d\n", | 254 | printk(KERN_DEBUG "OpenPIC addr: %lx, has ISUs: %d\n", |
255 | openpic_addr, has_isus); | 255 | openpic_addr, has_isus); |
256 | } | 256 | } |
257 | of_node_put(root); | ||
258 | 257 | ||
259 | BUG_ON(openpic_addr == 0); | 258 | BUG_ON(openpic_addr == 0); |
260 | 259 | ||
diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c index 89d6e295dbf7..bea7d1bb1a3b 100644 --- a/arch/powerpc/platforms/pasemi/setup.c +++ b/arch/powerpc/platforms/pasemi/setup.c | |||
@@ -129,7 +129,6 @@ static __init void pas_init_IRQ(void) | |||
129 | } | 129 | } |
130 | openpic_addr = of_read_number(opprop, naddr); | 130 | openpic_addr = of_read_number(opprop, naddr); |
131 | printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr); | 131 | printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr); |
132 | of_node_put(root); | ||
133 | 132 | ||
134 | mpic = mpic_alloc(mpic_node, openpic_addr, MPIC_PRIMARY, 0, 0, | 133 | mpic = mpic_alloc(mpic_node, openpic_addr, MPIC_PRIMARY, 0, 0, |
135 | " PAS-OPIC "); | 134 | " PAS-OPIC "); |
diff --git a/arch/powerpc/platforms/pseries/hvCall.S b/arch/powerpc/platforms/pseries/hvCall.S index c00cfed7af2c..5c7e38789897 100644 --- a/arch/powerpc/platforms/pseries/hvCall.S +++ b/arch/powerpc/platforms/pseries/hvCall.S | |||
@@ -26,7 +26,7 @@ | |||
26 | BEGIN_FTR_SECTION; \ | 26 | BEGIN_FTR_SECTION; \ |
27 | mfspr r0,SPRN_PURR; /* get PURR and */ \ | 27 | mfspr r0,SPRN_PURR; /* get PURR and */ \ |
28 | std r0,STK_PARM(r6)(r1); /* save for later */ \ | 28 | std r0,STK_PARM(r6)(r1); /* save for later */ \ |
29 | END_FTR_SECTION_IFCLR(CPU_FTR_PURR); | 29 | END_FTR_SECTION_IFSET(CPU_FTR_PURR); |
30 | 30 | ||
31 | /* | 31 | /* |
32 | * postcall is performed immediately before function return which | 32 | * postcall is performed immediately before function return which |
@@ -43,7 +43,7 @@ BEGIN_FTR_SECTION; \ | |||
43 | mfspr r8,SPRN_PURR; /* PURR after */ \ | 43 | mfspr r8,SPRN_PURR; /* PURR after */ \ |
44 | ld r6,STK_PARM(r6)(r1); /* PURR before */ \ | 44 | ld r6,STK_PARM(r6)(r1); /* PURR before */ \ |
45 | subf r6,r6,r8; /* delta */ \ | 45 | subf r6,r6,r8; /* delta */ \ |
46 | END_FTR_SECTION_IFCLR(CPU_FTR_PURR); \ | 46 | END_FTR_SECTION_IFSET(CPU_FTR_PURR); \ |
47 | ld r5,STK_PARM(r5)(r1); /* timebase before */ \ | 47 | ld r5,STK_PARM(r5)(r1); /* timebase before */ \ |
48 | subf r5,r5,r7; /* time delta */ \ | 48 | subf r5,r5,r7; /* time delta */ \ |
49 | \ | 49 | \ |
@@ -66,7 +66,7 @@ BEGIN_FTR_SECTION; \ | |||
66 | ld r7,HCALL_STAT_PURR(r4); /* PURR */ \ | 66 | ld r7,HCALL_STAT_PURR(r4); /* PURR */ \ |
67 | add r7,r7,r6; \ | 67 | add r7,r7,r6; \ |
68 | std r7,HCALL_STAT_PURR(r4); \ | 68 | std r7,HCALL_STAT_PURR(r4); \ |
69 | END_FTR_SECTION_IFCLR(CPU_FTR_PURR); \ | 69 | END_FTR_SECTION_IFSET(CPU_FTR_PURR); \ |
70 | 1: | 70 | 1: |
71 | #else | 71 | #else |
72 | #define HCALL_INST_PRECALL | 72 | #define HCALL_INST_PRECALL |
@@ -145,6 +145,7 @@ _GLOBAL(plpar_hcall9) | |||
145 | 145 | ||
146 | HVSC /* invoke the hypervisor */ | 146 | HVSC /* invoke the hypervisor */ |
147 | 147 | ||
148 | mr r0,r12 | ||
148 | ld r12,STK_PARM(r4)(r1) | 149 | ld r12,STK_PARM(r4)(r1) |
149 | std r4, 0(r12) | 150 | std r4, 0(r12) |
150 | std r5, 8(r12) | 151 | std r5, 8(r12) |
@@ -154,7 +155,7 @@ _GLOBAL(plpar_hcall9) | |||
154 | std r9, 40(r12) | 155 | std r9, 40(r12) |
155 | std r10,48(r12) | 156 | std r10,48(r12) |
156 | std r11,56(r12) | 157 | std r11,56(r12) |
157 | std r12,64(r12) | 158 | std r0, 64(r12) |
158 | 159 | ||
159 | HCALL_INST_POSTCALL | 160 | HCALL_INST_POSTCALL |
160 | 161 | ||
diff --git a/arch/powerpc/platforms/pseries/hvCall_inst.c b/arch/powerpc/platforms/pseries/hvCall_inst.c index 80181c4c49eb..3ddc04925d50 100644 --- a/arch/powerpc/platforms/pseries/hvCall_inst.c +++ b/arch/powerpc/platforms/pseries/hvCall_inst.c | |||
@@ -34,7 +34,7 @@ DEFINE_PER_CPU(struct hcall_stats[HCALL_STAT_ARRAY_SIZE], hcall_stats); | |||
34 | */ | 34 | */ |
35 | static void *hc_start(struct seq_file *m, loff_t *pos) | 35 | static void *hc_start(struct seq_file *m, loff_t *pos) |
36 | { | 36 | { |
37 | if ((int)*pos < HCALL_STAT_ARRAY_SIZE) | 37 | if ((int)*pos < (HCALL_STAT_ARRAY_SIZE-1)) |
38 | return (void *)(unsigned long)(*pos + 1); | 38 | return (void *)(unsigned long)(*pos + 1); |
39 | 39 | ||
40 | return NULL; | 40 | return NULL; |
@@ -57,7 +57,7 @@ static int hc_show(struct seq_file *m, void *p) | |||
57 | struct hcall_stats *hs = (struct hcall_stats *)m->private; | 57 | struct hcall_stats *hs = (struct hcall_stats *)m->private; |
58 | 58 | ||
59 | if (hs[h_num].num_calls) { | 59 | if (hs[h_num].num_calls) { |
60 | if (!cpu_has_feature(CPU_FTR_PURR)) | 60 | if (cpu_has_feature(CPU_FTR_PURR)) |
61 | seq_printf(m, "%lu %lu %lu %lu\n", h_num<<2, | 61 | seq_printf(m, "%lu %lu %lu %lu\n", h_num<<2, |
62 | hs[h_num].num_calls, | 62 | hs[h_num].num_calls, |
63 | hs[h_num].tb_total, | 63 | hs[h_num].tb_total, |
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c index b5b2b1103de8..81d172d65038 100644 --- a/arch/powerpc/platforms/pseries/xics.c +++ b/arch/powerpc/platforms/pseries/xics.c | |||
@@ -224,7 +224,6 @@ static void xics_unmask_irq(unsigned int virq) | |||
224 | static void xics_mask_real_irq(unsigned int irq) | 224 | static void xics_mask_real_irq(unsigned int irq) |
225 | { | 225 | { |
226 | int call_status; | 226 | int call_status; |
227 | unsigned int server; | ||
228 | 227 | ||
229 | if (irq == XICS_IPI) | 228 | if (irq == XICS_IPI) |
230 | return; | 229 | return; |
@@ -236,9 +235,9 @@ static void xics_mask_real_irq(unsigned int irq) | |||
236 | return; | 235 | return; |
237 | } | 236 | } |
238 | 237 | ||
239 | server = get_irq_server(irq); | ||
240 | /* Have to set XIVE to 0xff to be able to remove a slot */ | 238 | /* Have to set XIVE to 0xff to be able to remove a slot */ |
241 | call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq, server, 0xff); | 239 | call_status = rtas_call(ibm_set_xive, 3, 1, NULL, irq, |
240 | default_server, 0xff); | ||
242 | if (call_status != 0) { | 241 | if (call_status != 0) { |
243 | printk(KERN_ERR "xics_disable_irq: irq=%u: ibm_set_xive(0xff)" | 242 | printk(KERN_ERR "xics_disable_irq: irq=%u: ibm_set_xive(0xff)" |
244 | " returned %d\n", irq, call_status); | 243 | " returned %d\n", irq, call_status); |
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile index 04d4917eb303..2621a7e72d2d 100644 --- a/arch/powerpc/sysdev/Makefile +++ b/arch/powerpc/sysdev/Makefile | |||
@@ -12,7 +12,6 @@ obj-$(CONFIG_MMIO_NVRAM) += mmio_nvram.o | |||
12 | obj-$(CONFIG_FSL_SOC) += fsl_soc.o | 12 | obj-$(CONFIG_FSL_SOC) += fsl_soc.o |
13 | obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o | 13 | obj-$(CONFIG_TSI108_BRIDGE) += tsi108_pci.o tsi108_dev.o |
14 | obj-$(CONFIG_QUICC_ENGINE) += qe_lib/ | 14 | obj-$(CONFIG_QUICC_ENGINE) += qe_lib/ |
15 | obj-$(CONFIG_MTD) += rom.o | ||
16 | 15 | ||
17 | ifeq ($(CONFIG_PPC_MERGE),y) | 16 | ifeq ($(CONFIG_PPC_MERGE),y) |
18 | obj-$(CONFIG_PPC_I8259) += i8259.o | 17 | obj-$(CONFIG_PPC_I8259) += i8259.o |
@@ -21,5 +20,6 @@ endif | |||
21 | 20 | ||
22 | # Temporary hack until we have migrated to asm-powerpc | 21 | # Temporary hack until we have migrated to asm-powerpc |
23 | ifeq ($(ARCH),powerpc) | 22 | ifeq ($(ARCH),powerpc) |
23 | obj-$(CONFIG_MTD) += rom.o | ||
24 | obj-$(CONFIG_CPM2) += cpm2_common.o cpm2_pic.o | 24 | obj-$(CONFIG_CPM2) += cpm2_common.o cpm2_pic.o |
25 | endif | 25 | endif |
diff --git a/arch/s390/kernel/head31.S b/arch/s390/kernel/head31.S index 4388b3309e0c..eca507050e47 100644 --- a/arch/s390/kernel/head31.S +++ b/arch/s390/kernel/head31.S | |||
@@ -164,11 +164,14 @@ startup_continue: | |||
164 | srl %r7,28 | 164 | srl %r7,28 |
165 | clr %r6,%r7 # compare cc with last access code | 165 | clr %r6,%r7 # compare cc with last access code |
166 | be .Lsame-.LPG1(%r13) | 166 | be .Lsame-.LPG1(%r13) |
167 | b .Lchkmem-.LPG1(%r13) | 167 | lhi %r8,0 # no program checks |
168 | b .Lsavchk-.LPG1(%r13) | ||
168 | .Lsame: | 169 | .Lsame: |
169 | ar %r5,%r1 # add 128KB to end of chunk | 170 | ar %r5,%r1 # add 128KB to end of chunk |
170 | bno .Lloop-.LPG1(%r13) # r1 < 0x80000000 -> loop | 171 | bno .Lloop-.LPG1(%r13) # r1 < 0x80000000 -> loop |
171 | .Lchkmem: # > 2GB or tprot got a program check | 172 | .Lchkmem: # > 2GB or tprot got a program check |
173 | lhi %r8,1 # set program check flag | ||
174 | .Lsavchk: | ||
172 | clr %r4,%r5 # chunk size > 0? | 175 | clr %r4,%r5 # chunk size > 0? |
173 | be .Lchkloop-.LPG1(%r13) | 176 | be .Lchkloop-.LPG1(%r13) |
174 | st %r4,0(%r3) # store start address of chunk | 177 | st %r4,0(%r3) # store start address of chunk |
@@ -190,8 +193,15 @@ startup_continue: | |||
190 | je .Ldonemem # if not, leave | 193 | je .Ldonemem # if not, leave |
191 | chi %r10,0 # do we have chunks left? | 194 | chi %r10,0 # do we have chunks left? |
192 | je .Ldonemem | 195 | je .Ldonemem |
196 | chi %r8,1 # program check ? | ||
197 | je .Lpgmchk | ||
198 | lr %r4,%r5 # potential new chunk | ||
199 | alr %r5,%r1 # add 128KB to end of chunk | ||
200 | j .Llpcnt | ||
201 | .Lpgmchk: | ||
193 | alr %r5,%r1 # add 128KB to end of chunk | 202 | alr %r5,%r1 # add 128KB to end of chunk |
194 | lr %r4,%r5 # potential new chunk | 203 | lr %r4,%r5 # potential new chunk |
204 | .Llpcnt: | ||
195 | clr %r5,%r9 # should we go on? | 205 | clr %r5,%r9 # should we go on? |
196 | jl .Lloop | 206 | jl .Lloop |
197 | .Ldonemem: | 207 | .Ldonemem: |
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S index c526279e1123..6ba3f4512dd1 100644 --- a/arch/s390/kernel/head64.S +++ b/arch/s390/kernel/head64.S | |||
@@ -172,12 +172,15 @@ startup_continue: | |||
172 | srl %r7,28 | 172 | srl %r7,28 |
173 | clr %r6,%r7 # compare cc with last access code | 173 | clr %r6,%r7 # compare cc with last access code |
174 | je .Lsame | 174 | je .Lsame |
175 | j .Lchkmem | 175 | lghi %r8,0 # no program checks |
176 | j .Lsavchk | ||
176 | .Lsame: | 177 | .Lsame: |
177 | algr %r5,%r1 # add 128KB to end of chunk | 178 | algr %r5,%r1 # add 128KB to end of chunk |
178 | # no need to check here, | 179 | # no need to check here, |
179 | brc 12,.Lloop # this is the same chunk | 180 | brc 12,.Lloop # this is the same chunk |
180 | .Lchkmem: # > 16EB or tprot got a program check | 181 | .Lchkmem: # > 16EB or tprot got a program check |
182 | lghi %r8,1 # set program check flag | ||
183 | .Lsavchk: | ||
181 | clgr %r4,%r5 # chunk size > 0? | 184 | clgr %r4,%r5 # chunk size > 0? |
182 | je .Lchkloop | 185 | je .Lchkloop |
183 | stg %r4,0(%r3) # store start address of chunk | 186 | stg %r4,0(%r3) # store start address of chunk |
@@ -204,8 +207,15 @@ startup_continue: | |||
204 | chi %r10, 0 # do we have chunks left? | 207 | chi %r10, 0 # do we have chunks left? |
205 | je .Ldonemem | 208 | je .Ldonemem |
206 | .Lhsaskip: | 209 | .Lhsaskip: |
210 | chi %r8,1 # program check ? | ||
211 | je .Lpgmchk | ||
212 | lgr %r4,%r5 # potential new chunk | ||
213 | algr %r5,%r1 # add 128KB to end of chunk | ||
214 | j .Llpcnt | ||
215 | .Lpgmchk: | ||
207 | algr %r5,%r1 # add 128KB to end of chunk | 216 | algr %r5,%r1 # add 128KB to end of chunk |
208 | lgr %r4,%r5 # potential new chunk | 217 | lgr %r4,%r5 # potential new chunk |
218 | .Llpcnt: | ||
209 | clgr %r5,%r9 # should we go on? | 219 | clgr %r5,%r9 # should we go on? |
210 | jl .Lloop | 220 | jl .Lloop |
211 | .Ldonemem: | 221 | .Ldonemem: |
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index 49ef206ec880..5d8ee3baac14 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c | |||
@@ -476,7 +476,7 @@ static void __init setup_memory_end(void) | |||
476 | int i; | 476 | int i; |
477 | 477 | ||
478 | memory_size = real_size = 0; | 478 | memory_size = real_size = 0; |
479 | max_phys = VMALLOC_END - VMALLOC_MIN_SIZE; | 479 | max_phys = VMALLOC_END_INIT - VMALLOC_MIN_SIZE; |
480 | memory_end &= PAGE_MASK; | 480 | memory_end &= PAGE_MASK; |
481 | 481 | ||
482 | max_mem = memory_end ? min(max_phys, memory_end) : max_phys; | 482 | max_mem = memory_end ? min(max_phys, memory_end) : max_phys; |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 19090f7d4f51..c0cd255fddbd 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -794,7 +794,10 @@ static int __init topology_init(void) | |||
794 | int ret; | 794 | int ret; |
795 | 795 | ||
796 | for_each_possible_cpu(cpu) { | 796 | for_each_possible_cpu(cpu) { |
797 | ret = register_cpu(&per_cpu(cpu_devices, cpu), cpu); | 797 | struct cpu *c = &per_cpu(cpu_devices, cpu); |
798 | |||
799 | c->hotpluggable = 1; | ||
800 | ret = register_cpu(c, cpu); | ||
798 | if (ret) | 801 | if (ret) |
799 | printk(KERN_WARNING "topology_init: register_cpu %d " | 802 | printk(KERN_WARNING "topology_init: register_cpu %d " |
800 | "failed (%d)\n", cpu, ret); | 803 | "failed (%d)\n", cpu, ret); |
diff --git a/arch/s390/lib/uaccess_pt.c b/arch/s390/lib/uaccess_pt.c index 633249c3ba91..49c3e46b4065 100644 --- a/arch/s390/lib/uaccess_pt.c +++ b/arch/s390/lib/uaccess_pt.c | |||
@@ -8,6 +8,7 @@ | |||
8 | */ | 8 | */ |
9 | 9 | ||
10 | #include <linux/errno.h> | 10 | #include <linux/errno.h> |
11 | #include <linux/hardirq.h> | ||
11 | #include <linux/mm.h> | 12 | #include <linux/mm.h> |
12 | #include <asm/uaccess.h> | 13 | #include <asm/uaccess.h> |
13 | #include <asm/futex.h> | 14 | #include <asm/futex.h> |
@@ -18,6 +19,8 @@ static inline int __handle_fault(struct mm_struct *mm, unsigned long address, | |||
18 | struct vm_area_struct *vma; | 19 | struct vm_area_struct *vma; |
19 | int ret = -EFAULT; | 20 | int ret = -EFAULT; |
20 | 21 | ||
22 | if (in_atomic()) | ||
23 | return ret; | ||
21 | down_read(&mm->mmap_sem); | 24 | down_read(&mm->mmap_sem); |
22 | vma = find_vma(mm, address); | 25 | vma = find_vma(mm, address); |
23 | if (unlikely(!vma)) | 26 | if (unlikely(!vma)) |
diff --git a/arch/s390/lib/uaccess_std.c b/arch/s390/lib/uaccess_std.c index bbaca66fa293..56a0214e9928 100644 --- a/arch/s390/lib/uaccess_std.c +++ b/arch/s390/lib/uaccess_std.c | |||
@@ -258,8 +258,6 @@ int futex_atomic_op(int op, int __user *uaddr, int oparg, int *old) | |||
258 | { | 258 | { |
259 | int oldval = 0, newval, ret; | 259 | int oldval = 0, newval, ret; |
260 | 260 | ||
261 | pagefault_disable(); | ||
262 | |||
263 | switch (op) { | 261 | switch (op) { |
264 | case FUTEX_OP_SET: | 262 | case FUTEX_OP_SET: |
265 | __futex_atomic_op("lr %2,%5\n", | 263 | __futex_atomic_op("lr %2,%5\n", |
@@ -284,7 +282,6 @@ int futex_atomic_op(int op, int __user *uaddr, int oparg, int *old) | |||
284 | default: | 282 | default: |
285 | ret = -ENOSYS; | 283 | ret = -ENOSYS; |
286 | } | 284 | } |
287 | pagefault_enable(); | ||
288 | *old = oldval; | 285 | *old = oldval; |
289 | return ret; | 286 | return ret; |
290 | } | 287 | } |
diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c index 7f2944d3ec2a..cd3d93e8c211 100644 --- a/arch/s390/mm/vmem.c +++ b/arch/s390/mm/vmem.c | |||
@@ -61,7 +61,8 @@ void memmap_init(unsigned long size, int nid, unsigned long zone, | |||
61 | 61 | ||
62 | if (map_start < map_end) | 62 | if (map_start < map_end) |
63 | memmap_init_zone((unsigned long)(map_end - map_start), | 63 | memmap_init_zone((unsigned long)(map_end - map_start), |
64 | nid, zone, page_to_pfn(map_start)); | 64 | nid, zone, page_to_pfn(map_start), |
65 | MEMMAP_EARLY); | ||
65 | } | 66 | } |
66 | } | 67 | } |
67 | 68 | ||
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index 0a4958536bcd..fc99f7b8012f 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
@@ -1388,7 +1388,7 @@ void __devinit smp_prepare_boot_cpu(void) | |||
1388 | { | 1388 | { |
1389 | } | 1389 | } |
1390 | 1390 | ||
1391 | int __devinit __cpu_up(unsigned int cpu) | 1391 | int __cpuinit __cpu_up(unsigned int cpu) |
1392 | { | 1392 | { |
1393 | int ret = smp_boot_one_cpu(cpu); | 1393 | int ret = smp_boot_one_cpu(cpu); |
1394 | 1394 | ||
diff --git a/arch/x86_64/defconfig b/arch/x86_64/defconfig index 9cc7c21547a2..69584c295305 100644 --- a/arch/x86_64/defconfig +++ b/arch/x86_64/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.19-git14 | 3 | # Linux kernel version: 2.6.20-rc3 |
4 | # Sat Dec 9 21:23:09 2006 | 4 | # Fri Jan 5 11:54:41 2007 |
5 | # | 5 | # |
6 | CONFIG_X86_64=y | 6 | CONFIG_X86_64=y |
7 | CONFIG_64BIT=y | 7 | CONFIG_64BIT=y |
@@ -1056,6 +1056,7 @@ CONFIG_HWMON=y | |||
1056 | # CONFIG_SENSORS_LM92 is not set | 1056 | # CONFIG_SENSORS_LM92 is not set |
1057 | # CONFIG_SENSORS_MAX1619 is not set | 1057 | # CONFIG_SENSORS_MAX1619 is not set |
1058 | # CONFIG_SENSORS_PC87360 is not set | 1058 | # CONFIG_SENSORS_PC87360 is not set |
1059 | # CONFIG_SENSORS_PC87427 is not set | ||
1059 | # CONFIG_SENSORS_SIS5595 is not set | 1060 | # CONFIG_SENSORS_SIS5595 is not set |
1060 | # CONFIG_SENSORS_SMSC47M1 is not set | 1061 | # CONFIG_SENSORS_SMSC47M1 is not set |
1061 | # CONFIG_SENSORS_SMSC47M192 is not set | 1062 | # CONFIG_SENSORS_SMSC47M192 is not set |
@@ -1066,6 +1067,7 @@ CONFIG_SENSORS_SMSC47B397=m | |||
1066 | # CONFIG_SENSORS_W83781D is not set | 1067 | # CONFIG_SENSORS_W83781D is not set |
1067 | # CONFIG_SENSORS_W83791D is not set | 1068 | # CONFIG_SENSORS_W83791D is not set |
1068 | # CONFIG_SENSORS_W83792D is not set | 1069 | # CONFIG_SENSORS_W83792D is not set |
1070 | # CONFIG_SENSORS_W83793 is not set | ||
1069 | # CONFIG_SENSORS_W83L785TS is not set | 1071 | # CONFIG_SENSORS_W83L785TS is not set |
1070 | # CONFIG_SENSORS_W83627HF is not set | 1072 | # CONFIG_SENSORS_W83627HF is not set |
1071 | # CONFIG_SENSORS_W83627EHF is not set | 1073 | # CONFIG_SENSORS_W83627EHF is not set |
@@ -1311,6 +1313,11 @@ CONFIG_USB_MON=y | |||
1311 | # | 1313 | # |
1312 | 1314 | ||
1313 | # | 1315 | # |
1316 | # Virtualization | ||
1317 | # | ||
1318 | # CONFIG_KVM is not set | ||
1319 | |||
1320 | # | ||
1314 | # Firmware Drivers | 1321 | # Firmware Drivers |
1315 | # | 1322 | # |
1316 | # CONFIG_EDD is not set | 1323 | # CONFIG_EDD is not set |
@@ -1502,6 +1509,8 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y | |||
1502 | # CONFIG_ENABLE_MUST_CHECK is not set | 1509 | # CONFIG_ENABLE_MUST_CHECK is not set |
1503 | CONFIG_MAGIC_SYSRQ=y | 1510 | CONFIG_MAGIC_SYSRQ=y |
1504 | CONFIG_UNUSED_SYMBOLS=y | 1511 | CONFIG_UNUSED_SYMBOLS=y |
1512 | CONFIG_DEBUG_FS=y | ||
1513 | # CONFIG_HEADERS_CHECK is not set | ||
1505 | CONFIG_DEBUG_KERNEL=y | 1514 | CONFIG_DEBUG_KERNEL=y |
1506 | CONFIG_LOG_BUF_SHIFT=18 | 1515 | CONFIG_LOG_BUF_SHIFT=18 |
1507 | CONFIG_DETECT_SOFTLOCKUP=y | 1516 | CONFIG_DETECT_SOFTLOCKUP=y |
@@ -1519,12 +1528,10 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1519 | # CONFIG_DEBUG_KOBJECT is not set | 1528 | # CONFIG_DEBUG_KOBJECT is not set |
1520 | CONFIG_DEBUG_BUGVERBOSE=y | 1529 | CONFIG_DEBUG_BUGVERBOSE=y |
1521 | # CONFIG_DEBUG_INFO is not set | 1530 | # CONFIG_DEBUG_INFO is not set |
1522 | CONFIG_DEBUG_FS=y | ||
1523 | # CONFIG_DEBUG_VM is not set | 1531 | # CONFIG_DEBUG_VM is not set |
1524 | # CONFIG_DEBUG_LIST is not set | 1532 | # CONFIG_DEBUG_LIST is not set |
1525 | # CONFIG_FRAME_POINTER is not set | 1533 | # CONFIG_FRAME_POINTER is not set |
1526 | # CONFIG_FORCED_INLINING is not set | 1534 | # CONFIG_FORCED_INLINING is not set |
1527 | # CONFIG_HEADERS_CHECK is not set | ||
1528 | # CONFIG_RCU_TORTURE_TEST is not set | 1535 | # CONFIG_RCU_TORTURE_TEST is not set |
1529 | # CONFIG_LKDTM is not set | 1536 | # CONFIG_LKDTM is not set |
1530 | # CONFIG_DEBUG_RODATA is not set | 1537 | # CONFIG_DEBUG_RODATA is not set |
@@ -1553,3 +1560,4 @@ CONFIG_CRC32=y | |||
1553 | # CONFIG_LIBCRC32C is not set | 1560 | # CONFIG_LIBCRC32C is not set |
1554 | CONFIG_ZLIB_INFLATE=y | 1561 | CONFIG_ZLIB_INFLATE=y |
1555 | CONFIG_PLIST=y | 1562 | CONFIG_PLIST=y |
1563 | CONFIG_IOMAP_COPY=y | ||
diff --git a/arch/x86_64/ia32/ia32_aout.c b/arch/x86_64/ia32/ia32_aout.c index be87df506f39..fe83edb93c10 100644 --- a/arch/x86_64/ia32/ia32_aout.c +++ b/arch/x86_64/ia32/ia32_aout.c | |||
@@ -241,7 +241,7 @@ static u32 __user *create_aout_tables(char __user *p, struct linux_binprm *bprm) | |||
241 | get_user(c,p++); | 241 | get_user(c,p++); |
242 | } while (c); | 242 | } while (c); |
243 | } | 243 | } |
244 | put_user(NULL,argv); | 244 | put_user(0, argv); |
245 | current->mm->arg_end = current->mm->env_start = (unsigned long) p; | 245 | current->mm->arg_end = current->mm->env_start = (unsigned long) p; |
246 | while (envc-->0) { | 246 | while (envc-->0) { |
247 | char c; | 247 | char c; |
@@ -250,7 +250,7 @@ static u32 __user *create_aout_tables(char __user *p, struct linux_binprm *bprm) | |||
250 | get_user(c,p++); | 250 | get_user(c,p++); |
251 | } while (c); | 251 | } while (c); |
252 | } | 252 | } |
253 | put_user(NULL,envp); | 253 | put_user(0, envp); |
254 | current->mm->env_end = (unsigned long) p; | 254 | current->mm->env_end = (unsigned long) p; |
255 | return sp; | 255 | return sp; |
256 | } | 256 | } |
diff --git a/arch/x86_64/kernel/early-quirks.c b/arch/x86_64/kernel/early-quirks.c index 829698f6d049..49802f1bee94 100644 --- a/arch/x86_64/kernel/early-quirks.c +++ b/arch/x86_64/kernel/early-quirks.c | |||
@@ -69,6 +69,11 @@ static void nvidia_bugs(void) | |||
69 | 69 | ||
70 | static void ati_bugs(void) | 70 | static void ati_bugs(void) |
71 | { | 71 | { |
72 | if (timer_over_8254 == 1) { | ||
73 | timer_over_8254 = 0; | ||
74 | printk(KERN_INFO | ||
75 | "ATI board detected. Disabling timer routing over 8254.\n"); | ||
76 | } | ||
72 | } | 77 | } |
73 | 78 | ||
74 | static void intel_bugs(void) | 79 | static void intel_bugs(void) |
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c index 2a1dcd5f69c2..d7bad90a5ad8 100644 --- a/arch/x86_64/kernel/io_apic.c +++ b/arch/x86_64/kernel/io_apic.c | |||
@@ -55,6 +55,10 @@ int sis_apic_bug; /* not actually supported, dummy for compile */ | |||
55 | 55 | ||
56 | static int no_timer_check; | 56 | static int no_timer_check; |
57 | 57 | ||
58 | static int disable_timer_pin_1 __initdata; | ||
59 | |||
60 | int timer_over_8254 __initdata = 1; | ||
61 | |||
58 | /* Where if anywhere is the i8259 connect in external int mode */ | 62 | /* Where if anywhere is the i8259 connect in external int mode */ |
59 | static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; | 63 | static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; |
60 | 64 | ||
@@ -350,6 +354,29 @@ static int __init disable_ioapic_setup(char *str) | |||
350 | } | 354 | } |
351 | early_param("noapic", disable_ioapic_setup); | 355 | early_param("noapic", disable_ioapic_setup); |
352 | 356 | ||
357 | /* Actually the next is obsolete, but keep it for paranoid reasons -AK */ | ||
358 | static int __init disable_timer_pin_setup(char *arg) | ||
359 | { | ||
360 | disable_timer_pin_1 = 1; | ||
361 | return 1; | ||
362 | } | ||
363 | __setup("disable_timer_pin_1", disable_timer_pin_setup); | ||
364 | |||
365 | static int __init setup_disable_8254_timer(char *s) | ||
366 | { | ||
367 | timer_over_8254 = -1; | ||
368 | return 1; | ||
369 | } | ||
370 | static int __init setup_enable_8254_timer(char *s) | ||
371 | { | ||
372 | timer_over_8254 = 2; | ||
373 | return 1; | ||
374 | } | ||
375 | |||
376 | __setup("disable_8254_timer", setup_disable_8254_timer); | ||
377 | __setup("enable_8254_timer", setup_enable_8254_timer); | ||
378 | |||
379 | |||
353 | /* | 380 | /* |
354 | * Find the IRQ entry number of a certain pin. | 381 | * Find the IRQ entry number of a certain pin. |
355 | */ | 382 | */ |
@@ -1568,33 +1595,10 @@ static inline void unlock_ExtINT_logic(void) | |||
1568 | * a wide range of boards and BIOS bugs. Fortunately only the timer IRQ | 1595 | * a wide range of boards and BIOS bugs. Fortunately only the timer IRQ |
1569 | * is so screwy. Thanks to Brian Perkins for testing/hacking this beast | 1596 | * is so screwy. Thanks to Brian Perkins for testing/hacking this beast |
1570 | * fanatically on his truly buggy board. | 1597 | * fanatically on his truly buggy board. |
1598 | * | ||
1599 | * FIXME: really need to revamp this for modern platforms only. | ||
1571 | */ | 1600 | */ |
1572 | 1601 | static inline void check_timer(void) | |
1573 | static int try_apic_pin(int apic, int pin, char *msg) | ||
1574 | { | ||
1575 | apic_printk(APIC_VERBOSE, KERN_INFO | ||
1576 | "..TIMER: trying IO-APIC=%d PIN=%d %s", | ||
1577 | apic, pin, msg); | ||
1578 | |||
1579 | /* | ||
1580 | * Ok, does IRQ0 through the IOAPIC work? | ||
1581 | */ | ||
1582 | if (!no_timer_check && timer_irq_works()) { | ||
1583 | nmi_watchdog_default(); | ||
1584 | if (nmi_watchdog == NMI_IO_APIC) { | ||
1585 | disable_8259A_irq(0); | ||
1586 | setup_nmi(); | ||
1587 | enable_8259A_irq(0); | ||
1588 | } | ||
1589 | return 1; | ||
1590 | } | ||
1591 | clear_IO_APIC_pin(apic, pin); | ||
1592 | apic_printk(APIC_QUIET, KERN_ERR " .. failed\n"); | ||
1593 | return 0; | ||
1594 | } | ||
1595 | |||
1596 | /* The function from hell */ | ||
1597 | static void check_timer(void) | ||
1598 | { | 1602 | { |
1599 | int apic1, pin1, apic2, pin2; | 1603 | int apic1, pin1, apic2, pin2; |
1600 | int vector; | 1604 | int vector; |
@@ -1615,43 +1619,61 @@ static void check_timer(void) | |||
1615 | */ | 1619 | */ |
1616 | apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); | 1620 | apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); |
1617 | init_8259A(1); | 1621 | init_8259A(1); |
1622 | if (timer_over_8254 > 0) | ||
1623 | enable_8259A_irq(0); | ||
1618 | 1624 | ||
1619 | pin1 = find_isa_irq_pin(0, mp_INT); | 1625 | pin1 = find_isa_irq_pin(0, mp_INT); |
1620 | apic1 = find_isa_irq_apic(0, mp_INT); | 1626 | apic1 = find_isa_irq_apic(0, mp_INT); |
1621 | pin2 = ioapic_i8259.pin; | 1627 | pin2 = ioapic_i8259.pin; |
1622 | apic2 = ioapic_i8259.apic; | 1628 | apic2 = ioapic_i8259.apic; |
1623 | 1629 | ||
1624 | /* Do this first, otherwise we get double interrupts on ATI boards */ | 1630 | apic_printk(APIC_VERBOSE,KERN_INFO "..TIMER: vector=0x%02X apic1=%d pin1=%d apic2=%d pin2=%d\n", |
1625 | if ((pin1 != -1) && try_apic_pin(apic1, pin1,"with 8259 IRQ0 disabled")) | 1631 | vector, apic1, pin1, apic2, pin2); |
1626 | return; | ||
1627 | 1632 | ||
1628 | /* Now try again with IRQ0 8259A enabled. | 1633 | if (pin1 != -1) { |
1629 | Assumes timer is on IO-APIC 0 ?!? */ | 1634 | /* |
1630 | enable_8259A_irq(0); | 1635 | * Ok, does IRQ0 through the IOAPIC work? |
1631 | unmask_IO_APIC_irq(0); | 1636 | */ |
1632 | if (try_apic_pin(apic1, pin1, "with 8259 IRQ0 enabled")) | 1637 | unmask_IO_APIC_irq(0); |
1633 | return; | 1638 | if (!no_timer_check && timer_irq_works()) { |
1634 | disable_8259A_irq(0); | 1639 | nmi_watchdog_default(); |
1635 | 1640 | if (nmi_watchdog == NMI_IO_APIC) { | |
1636 | /* Always try pin0 and pin2 on APIC 0 to handle buggy timer overrides | 1641 | disable_8259A_irq(0); |
1637 | on Nvidia boards */ | 1642 | setup_nmi(); |
1638 | if (!(apic1 == 0 && pin1 == 0) && | 1643 | enable_8259A_irq(0); |
1639 | try_apic_pin(0, 0, "fallback with 8259 IRQ0 disabled")) | 1644 | } |
1640 | return; | 1645 | if (disable_timer_pin_1 > 0) |
1641 | if (!(apic1 == 0 && pin1 == 2) && | 1646 | clear_IO_APIC_pin(0, pin1); |
1642 | try_apic_pin(0, 2, "fallback with 8259 IRQ0 disabled")) | 1647 | return; |
1643 | return; | 1648 | } |
1649 | clear_IO_APIC_pin(apic1, pin1); | ||
1650 | apic_printk(APIC_QUIET,KERN_ERR "..MP-BIOS bug: 8254 timer not " | ||
1651 | "connected to IO-APIC\n"); | ||
1652 | } | ||
1644 | 1653 | ||
1645 | /* Then try pure 8259A routing on the 8259 as reported by BIOS*/ | 1654 | apic_printk(APIC_VERBOSE,KERN_INFO "...trying to set up timer (IRQ0) " |
1646 | enable_8259A_irq(0); | 1655 | "through the 8259A ... "); |
1647 | if (pin2 != -1) { | 1656 | if (pin2 != -1) { |
1657 | apic_printk(APIC_VERBOSE,"\n..... (found apic %d pin %d) ...", | ||
1658 | apic2, pin2); | ||
1659 | /* | ||
1660 | * legacy devices should be connected to IO APIC #0 | ||
1661 | */ | ||
1648 | setup_ExtINT_IRQ0_pin(apic2, pin2, vector); | 1662 | setup_ExtINT_IRQ0_pin(apic2, pin2, vector); |
1649 | if (try_apic_pin(apic2,pin2,"8259A broadcast ExtINT from BIOS")) | 1663 | if (timer_irq_works()) { |
1664 | apic_printk(APIC_VERBOSE," works.\n"); | ||
1665 | nmi_watchdog_default(); | ||
1666 | if (nmi_watchdog == NMI_IO_APIC) { | ||
1667 | setup_nmi(); | ||
1668 | } | ||
1650 | return; | 1669 | return; |
1670 | } | ||
1671 | /* | ||
1672 | * Cleanup, just in case ... | ||
1673 | */ | ||
1674 | clear_IO_APIC_pin(apic2, pin2); | ||
1651 | } | 1675 | } |
1652 | 1676 | apic_printk(APIC_VERBOSE," failed.\n"); | |
1653 | /* Tried all possibilities to go through the IO-APIC. Now come the | ||
1654 | really cheesy fallbacks. */ | ||
1655 | 1677 | ||
1656 | if (nmi_watchdog == NMI_IO_APIC) { | 1678 | if (nmi_watchdog == NMI_IO_APIC) { |
1657 | printk(KERN_WARNING "timer doesn't work through the IO-APIC - disabling NMI Watchdog!\n"); | 1679 | printk(KERN_WARNING "timer doesn't work through the IO-APIC - disabling NMI Watchdog!\n"); |
diff --git a/arch/x86_64/kernel/pci-calgary.c b/arch/x86_64/kernel/pci-calgary.c index 87d90cb68a74..3d65b1d4c2b3 100644 --- a/arch/x86_64/kernel/pci-calgary.c +++ b/arch/x86_64/kernel/pci-calgary.c | |||
@@ -1068,6 +1068,8 @@ void __init detect_calgary(void) | |||
1068 | if (!early_pci_allowed()) | 1068 | if (!early_pci_allowed()) |
1069 | return; | 1069 | return; |
1070 | 1070 | ||
1071 | printk(KERN_DEBUG "Calgary: detecting Calgary via BIOS EBDA area\n"); | ||
1072 | |||
1071 | ptr = (unsigned long)phys_to_virt(get_bios_ebda()); | 1073 | ptr = (unsigned long)phys_to_virt(get_bios_ebda()); |
1072 | 1074 | ||
1073 | rio_table_hdr = NULL; | 1075 | rio_table_hdr = NULL; |
@@ -1088,14 +1090,14 @@ void __init detect_calgary(void) | |||
1088 | offset = *((unsigned short *)(ptr + offset)); | 1090 | offset = *((unsigned short *)(ptr + offset)); |
1089 | } | 1091 | } |
1090 | if (!rio_table_hdr) { | 1092 | if (!rio_table_hdr) { |
1091 | printk(KERN_ERR "Calgary: Unable to locate " | 1093 | printk(KERN_DEBUG "Calgary: Unable to locate Rio Grande table " |
1092 | "Rio Grande Table in EBDA - bailing!\n"); | 1094 | "in EBDA - bailing!\n"); |
1093 | return; | 1095 | return; |
1094 | } | 1096 | } |
1095 | 1097 | ||
1096 | ret = build_detail_arrays(); | 1098 | ret = build_detail_arrays(); |
1097 | if (ret) { | 1099 | if (ret) { |
1098 | printk(KERN_ERR "Calgary: build_detail_arrays ret %d\n", ret); | 1100 | printk(KERN_DEBUG "Calgary: build_detail_arrays ret %d\n", ret); |
1099 | return; | 1101 | return; |
1100 | } | 1102 | } |
1101 | 1103 | ||
@@ -1128,6 +1130,9 @@ void __init detect_calgary(void) | |||
1128 | } | 1130 | } |
1129 | } | 1131 | } |
1130 | 1132 | ||
1133 | printk(KERN_DEBUG "Calgary: finished detection, Calgary %s\n", | ||
1134 | calgary_found ? "found" : "not found"); | ||
1135 | |||
1131 | if (calgary_found) { | 1136 | if (calgary_found) { |
1132 | iommu_detected = 1; | 1137 | iommu_detected = 1; |
1133 | calgary_detected = 1; | 1138 | calgary_detected = 1; |
diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c index 9f05bc9b2dad..5cc76d0d331f 100644 --- a/arch/x86_64/kernel/time.c +++ b/arch/x86_64/kernel/time.c | |||
@@ -656,6 +656,25 @@ core_initcall(cpufreq_tsc); | |||
656 | */ | 656 | */ |
657 | 657 | ||
658 | #define TICK_COUNT 100000000 | 658 | #define TICK_COUNT 100000000 |
659 | #define TICK_MIN 5000 | ||
660 | |||
661 | /* | ||
662 | * Some platforms take periodic SMI interrupts with 5ms duration. Make sure none | ||
663 | * occurs between the reads of the hpet & TSC. | ||
664 | */ | ||
665 | static void __init read_hpet_tsc(int *hpet, int *tsc) | ||
666 | { | ||
667 | int tsc1, tsc2, hpet1; | ||
668 | |||
669 | do { | ||
670 | tsc1 = get_cycles_sync(); | ||
671 | hpet1 = hpet_readl(HPET_COUNTER); | ||
672 | tsc2 = get_cycles_sync(); | ||
673 | } while (tsc2 - tsc1 > TICK_MIN); | ||
674 | *hpet = hpet1; | ||
675 | *tsc = tsc2; | ||
676 | } | ||
677 | |||
659 | 678 | ||
660 | static unsigned int __init hpet_calibrate_tsc(void) | 679 | static unsigned int __init hpet_calibrate_tsc(void) |
661 | { | 680 | { |
@@ -666,13 +685,11 @@ static unsigned int __init hpet_calibrate_tsc(void) | |||
666 | local_irq_save(flags); | 685 | local_irq_save(flags); |
667 | local_irq_disable(); | 686 | local_irq_disable(); |
668 | 687 | ||
669 | hpet_start = hpet_readl(HPET_COUNTER); | 688 | read_hpet_tsc(&hpet_start, &tsc_start); |
670 | rdtscl(tsc_start); | ||
671 | 689 | ||
672 | do { | 690 | do { |
673 | local_irq_disable(); | 691 | local_irq_disable(); |
674 | hpet_now = hpet_readl(HPET_COUNTER); | 692 | read_hpet_tsc(&hpet_now, &tsc_now); |
675 | tsc_now = get_cycles_sync(); | ||
676 | local_irq_restore(flags); | 693 | local_irq_restore(flags); |
677 | } while ((tsc_now - tsc_start) < TICK_COUNT && | 694 | } while ((tsc_now - tsc_start) < TICK_COUNT && |
678 | (hpet_now - hpet_start) < TICK_COUNT); | 695 | (hpet_now - hpet_start) < TICK_COUNT); |