diff options
Diffstat (limited to 'arch')
40 files changed, 161 insertions, 84 deletions
diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c index 45fdf4a51a2a..396efba9bacd 100644 --- a/arch/arm/kernel/asm-offsets.c +++ b/arch/arm/kernel/asm-offsets.c | |||
@@ -99,6 +99,8 @@ int main(void) | |||
99 | DEFINE(MACHINFO_NAME, offsetof(struct machine_desc, name)); | 99 | DEFINE(MACHINFO_NAME, offsetof(struct machine_desc, name)); |
100 | DEFINE(MACHINFO_PHYSIO, offsetof(struct machine_desc, phys_io)); | 100 | DEFINE(MACHINFO_PHYSIO, offsetof(struct machine_desc, phys_io)); |
101 | DEFINE(MACHINFO_PGOFFIO, offsetof(struct machine_desc, io_pg_offst)); | 101 | DEFINE(MACHINFO_PGOFFIO, offsetof(struct machine_desc, io_pg_offst)); |
102 | BLANK(); | ||
103 | DEFINE(PROC_INFO_SZ, sizeof(struct proc_info_list)); | ||
102 | DEFINE(PROCINFO_INITFUNC, offsetof(struct proc_info_list, __cpu_flush)); | 104 | DEFINE(PROCINFO_INITFUNC, offsetof(struct proc_info_list, __cpu_flush)); |
103 | DEFINE(PROCINFO_MMUFLAGS, offsetof(struct proc_info_list, __cpu_mmu_flags)); | 105 | DEFINE(PROCINFO_MMUFLAGS, offsetof(struct proc_info_list, __cpu_mmu_flags)); |
104 | return 0; | 106 | return 0; |
diff --git a/arch/arm/kernel/dma-isa.c b/arch/arm/kernel/dma-isa.c index 03532769a97f..0a3e9ad297d8 100644 --- a/arch/arm/kernel/dma-isa.c +++ b/arch/arm/kernel/dma-isa.c | |||
@@ -143,12 +143,23 @@ static struct dma_ops isa_dma_ops = { | |||
143 | .residue = isa_get_dma_residue, | 143 | .residue = isa_get_dma_residue, |
144 | }; | 144 | }; |
145 | 145 | ||
146 | static struct resource dma_resources[] = { | 146 | static struct resource dma_resources[] = { { |
147 | { "dma1", 0x0000, 0x000f }, | 147 | .name = "dma1", |
148 | { "dma low page", 0x0080, 0x008f }, | 148 | .start = 0x0000, |
149 | { "dma2", 0x00c0, 0x00df }, | 149 | .end = 0x000f |
150 | { "dma high page", 0x0480, 0x048f } | 150 | }, { |
151 | }; | 151 | .name = "dma low page", |
152 | .start = 0x0080, | ||
153 | .end = 0x008f | ||
154 | }, { | ||
155 | .name = "dma2", | ||
156 | .start = 0x00c0, | ||
157 | .end = 0x00df | ||
158 | }, { | ||
159 | .name = "dma high page", | ||
160 | .start = 0x0480, | ||
161 | .end = 0x048f | ||
162 | } }; | ||
152 | 163 | ||
153 | void __init isa_init_dma(dma_t *dma) | 164 | void __init isa_init_dma(dma_t *dma) |
154 | { | 165 | { |
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 1a1539e3a946..7df6e1aaa323 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -311,7 +311,7 @@ void free_thread_info(struct thread_info *thread) | |||
311 | struct thread_info_list *th = &get_cpu_var(thread_info_list); | 311 | struct thread_info_list *th = &get_cpu_var(thread_info_list); |
312 | if (th->nr < EXTRA_TASK_STRUCT) { | 312 | if (th->nr < EXTRA_TASK_STRUCT) { |
313 | unsigned long *p = (unsigned long *)thread; | 313 | unsigned long *p = (unsigned long *)thread; |
314 | p[0] = th->head; | 314 | p[0] = (unsigned long)th->head; |
315 | th->head = p; | 315 | th->head = p; |
316 | th->nr += 1; | 316 | th->nr += 1; |
317 | put_cpu_var(thread_info_list); | 317 | put_cpu_var(thread_info_list); |
diff --git a/arch/arm/lib/backtrace.S b/arch/arm/lib/backtrace.S index 3bdc8c6949c5..16153c86c3f8 100644 --- a/arch/arm/lib/backtrace.S +++ b/arch/arm/lib/backtrace.S | |||
@@ -122,7 +122,7 @@ ENTRY(c_backtrace) | |||
122 | #define reg r5 | 122 | #define reg r5 |
123 | #define stack r6 | 123 | #define stack r6 |
124 | 124 | ||
125 | .Ldumpstm: stmfd sp!, {instr, reg, stack, r7, lr} | 125 | .Ldumpstm: stmfd sp!, {instr, reg, stack, r7, r8, lr} |
126 | mov stack, r0 | 126 | mov stack, r0 |
127 | mov instr, r1 | 127 | mov instr, r1 |
128 | mov reg, #9 | 128 | mov reg, #9 |
@@ -145,7 +145,7 @@ ENTRY(c_backtrace) | |||
145 | adrne r0, .Lcr | 145 | adrne r0, .Lcr |
146 | blne printk | 146 | blne printk |
147 | mov r0, stack | 147 | mov r0, stack |
148 | LOADREGS(fd, sp!, {instr, reg, stack, r7, pc}) | 148 | LOADREGS(fd, sp!, {instr, reg, stack, r7, r8, pc}) |
149 | 149 | ||
150 | .Lfp: .asciz " r%d = %08X%c" | 150 | .Lfp: .asciz " r%d = %08X%c" |
151 | .Lcr: .asciz "\n" | 151 | .Lcr: .asciz "\n" |
diff --git a/arch/arm/lib/div64.S b/arch/arm/lib/div64.S index ec9a1cd6176f..58eef6607629 100644 --- a/arch/arm/lib/div64.S +++ b/arch/arm/lib/div64.S | |||
@@ -189,12 +189,12 @@ ENTRY(__do_div64) | |||
189 | moveq pc, lr | 189 | moveq pc, lr |
190 | 190 | ||
191 | @ Division by 0: | 191 | @ Division by 0: |
192 | str lr, [sp, #-4]! | 192 | str lr, [sp, #-8]! |
193 | bl __div0 | 193 | bl __div0 |
194 | 194 | ||
195 | @ as wrong as it could be... | 195 | @ as wrong as it could be... |
196 | mov yl, #0 | 196 | mov yl, #0 |
197 | mov yh, #0 | 197 | mov yh, #0 |
198 | mov xh, #0 | 198 | mov xh, #0 |
199 | ldr pc, [sp], #4 | 199 | ldr pc, [sp], #8 |
200 | 200 | ||
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index 98356f810007..02e188d98e7d 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
@@ -95,7 +95,10 @@ static void __init mainstone_init_irq(void) | |||
95 | for(irq = MAINSTONE_IRQ(0); irq <= MAINSTONE_IRQ(15); irq++) { | 95 | for(irq = MAINSTONE_IRQ(0); irq <= MAINSTONE_IRQ(15); irq++) { |
96 | set_irq_chip(irq, &mainstone_irq_chip); | 96 | set_irq_chip(irq, &mainstone_irq_chip); |
97 | set_irq_handler(irq, do_level_IRQ); | 97 | set_irq_handler(irq, do_level_IRQ); |
98 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); | 98 | if (irq == MAINSTONE_IRQ(10) || irq == MAINSTONE_IRQ(14)) |
99 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE | IRQF_NOAUTOEN); | ||
100 | else | ||
101 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); | ||
99 | } | 102 | } |
100 | set_irq_flags(MAINSTONE_IRQ(8), 0); | 103 | set_irq_flags(MAINSTONE_IRQ(8), 0); |
101 | set_irq_flags(MAINSTONE_IRQ(12), 0); | 104 | set_irq_flags(MAINSTONE_IRQ(12), 0); |
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c index d4a586e38d5b..693fb1e396e0 100644 --- a/arch/arm/mach-realview/realview_eb.c +++ b/arch/arm/mach-realview/realview_eb.c | |||
@@ -137,8 +137,11 @@ static struct amba_device *amba_devs[] __initdata = { | |||
137 | static void __init gic_init_irq(void) | 137 | static void __init gic_init_irq(void) |
138 | { | 138 | { |
139 | #ifdef CONFIG_REALVIEW_MPCORE | 139 | #ifdef CONFIG_REALVIEW_MPCORE |
140 | unsigned int pldctrl; | ||
140 | writel(0x0000a05f, __io_address(REALVIEW_SYS_LOCK)); | 141 | writel(0x0000a05f, __io_address(REALVIEW_SYS_LOCK)); |
141 | writel(0x008003c0, __io_address(REALVIEW_SYS_BASE) + 0xd8); | 142 | pldctrl = readl(__io_address(REALVIEW_SYS_BASE) + 0xd8); |
143 | pldctrl |= 0x00800000; /* New irq mode */ | ||
144 | writel(pldctrl, __io_address(REALVIEW_SYS_BASE) + 0xd8); | ||
142 | writel(0x00000000, __io_address(REALVIEW_SYS_LOCK)); | 145 | writel(0x00000000, __io_address(REALVIEW_SYS_LOCK)); |
143 | #endif | 146 | #endif |
144 | gic_dist_init(__io_address(REALVIEW_GIC_DIST_BASE)); | 147 | gic_dist_init(__io_address(REALVIEW_GIC_DIST_BASE)); |
diff --git a/arch/arm/mach-s3c2410/sleep.S b/arch/arm/mach-s3c2410/sleep.S index 832fb86a03b4..73de2eaca22a 100644 --- a/arch/arm/mach-s3c2410/sleep.S +++ b/arch/arm/mach-s3c2410/sleep.S | |||
@@ -59,8 +59,7 @@ ENTRY(s3c2410_cpu_suspend) | |||
59 | mrc p15, 0, r5, c13, c0, 0 @ PID | 59 | mrc p15, 0, r5, c13, c0, 0 @ PID |
60 | mrc p15, 0, r6, c3, c0, 0 @ Domain ID | 60 | mrc p15, 0, r6, c3, c0, 0 @ Domain ID |
61 | mrc p15, 0, r7, c2, c0, 0 @ translation table base address | 61 | mrc p15, 0, r7, c2, c0, 0 @ translation table base address |
62 | mrc p15, 0, r8, c2, c0, 0 @ auxiliary control register | 62 | mrc p15, 0, r8, c1, c0, 0 @ control register |
63 | mrc p15, 0, r9, c1, c0, 0 @ control register | ||
64 | 63 | ||
65 | stmia r0, { r4 - r13 } | 64 | stmia r0, { r4 - r13 } |
66 | 65 | ||
@@ -165,7 +164,6 @@ ENTRY(s3c2410_cpu_resume) | |||
165 | mcr p15, 0, r5, c13, c0, 0 @ PID | 164 | mcr p15, 0, r5, c13, c0, 0 @ PID |
166 | mcr p15, 0, r6, c3, c0, 0 @ Domain ID | 165 | mcr p15, 0, r6, c3, c0, 0 @ Domain ID |
167 | mcr p15, 0, r7, c2, c0, 0 @ translation table base | 166 | mcr p15, 0, r7, c2, c0, 0 @ translation table base |
168 | mcr p15, 0, r8, c1, c1, 0 @ auxilliary control | ||
169 | 167 | ||
170 | #ifdef CONFIG_DEBUG_RESUME | 168 | #ifdef CONFIG_DEBUG_RESUME |
171 | mov r3, #'R' | 169 | mov r3, #'R' |
@@ -173,7 +171,7 @@ ENTRY(s3c2410_cpu_resume) | |||
173 | #endif | 171 | #endif |
174 | 172 | ||
175 | ldr r2, =resume_with_mmu | 173 | ldr r2, =resume_with_mmu |
176 | mcr p15, 0, r9, c1, c0, 0 @ turn on MMU, etc | 174 | mcr p15, 0, r8, c1, c0, 0 @ turn on MMU, etc |
177 | nop @ second-to-last before mmu | 175 | nop @ second-to-last before mmu |
178 | mov pc, r2 @ go back to virtual address | 176 | mov pc, r2 @ go back to virtual address |
179 | 177 | ||
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 25e0ca3e598c..c1f7180c7bed 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -141,7 +141,7 @@ __ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size, | |||
141 | return NULL; | 141 | return NULL; |
142 | addr = (unsigned long)area->addr; | 142 | addr = (unsigned long)area->addr; |
143 | if (remap_area_pages(addr, pfn, size, flags)) { | 143 | if (remap_area_pages(addr, pfn, size, flags)) { |
144 | vfree((void *)addr); | 144 | vunmap((void *)addr); |
145 | return NULL; | 145 | return NULL; |
146 | } | 146 | } |
147 | return (void __iomem *) (offset + (char *)addr); | 147 | return (void __iomem *) (offset + (char *)addr); |
@@ -173,7 +173,7 @@ EXPORT_SYMBOL(__ioremap); | |||
173 | 173 | ||
174 | void __iounmap(void __iomem *addr) | 174 | void __iounmap(void __iomem *addr) |
175 | { | 175 | { |
176 | vfree((void *) (PAGE_MASK & (unsigned long) addr)); | 176 | vunmap((void *)(PAGE_MASK & (unsigned long)addr)); |
177 | } | 177 | } |
178 | EXPORT_SYMBOL(__iounmap); | 178 | EXPORT_SYMBOL(__iounmap); |
179 | 179 | ||
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig index c6fe99e57a05..8dfa3054f10f 100644 --- a/arch/i386/Kconfig +++ b/arch/i386/Kconfig | |||
@@ -758,10 +758,10 @@ config HOTPLUG_CPU | |||
758 | bool "Support for hot-pluggable CPUs (EXPERIMENTAL)" | 758 | bool "Support for hot-pluggable CPUs (EXPERIMENTAL)" |
759 | depends on SMP && HOTPLUG && EXPERIMENTAL && !X86_VOYAGER | 759 | depends on SMP && HOTPLUG && EXPERIMENTAL && !X86_VOYAGER |
760 | ---help--- | 760 | ---help--- |
761 | Say Y here to experiment with turning CPUs off and on. CPUs | 761 | Say Y here to experiment with turning CPUs off and on, and to |
762 | can be controlled through /sys/devices/system/cpu. | 762 | enable suspend on SMP systems. CPUs can be controlled through |
763 | /sys/devices/system/cpu. | ||
763 | 764 | ||
764 | Say N. | ||
765 | 765 | ||
766 | endmenu | 766 | endmenu |
767 | 767 | ||
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c index 40e5aba3ad3d..daee69579b1c 100644 --- a/arch/i386/kernel/acpi/boot.c +++ b/arch/i386/kernel/acpi/boot.c | |||
@@ -1066,6 +1066,14 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = { | |||
1066 | DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), | 1066 | DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), |
1067 | }, | 1067 | }, |
1068 | }, | 1068 | }, |
1069 | { | ||
1070 | .callback = disable_acpi_pci, | ||
1071 | .ident = "HP xw9300", | ||
1072 | .matches = { | ||
1073 | DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), | ||
1074 | DMI_MATCH(DMI_PRODUCT_NAME, "HP xw9300 Workstation"), | ||
1075 | }, | ||
1076 | }, | ||
1069 | {} | 1077 | {} |
1070 | }; | 1078 | }; |
1071 | 1079 | ||
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c index 013b85df18c6..3d4b2f3d116a 100644 --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c | |||
@@ -1341,6 +1341,14 @@ int __init APIC_init_uniprocessor (void) | |||
1341 | 1341 | ||
1342 | connect_bsp_APIC(); | 1342 | connect_bsp_APIC(); |
1343 | 1343 | ||
1344 | /* | ||
1345 | * Hack: In case of kdump, after a crash, kernel might be booting | ||
1346 | * on a cpu with non-zero lapic id. But boot_cpu_physical_apicid | ||
1347 | * might be zero if read from MP tables. Get it from LAPIC. | ||
1348 | */ | ||
1349 | #ifdef CONFIG_CRASH_DUMP | ||
1350 | boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); | ||
1351 | #endif | ||
1344 | phys_cpu_present_map = physid_mask_of_physid(boot_cpu_physical_apicid); | 1352 | phys_cpu_present_map = physid_mask_of_physid(boot_cpu_physical_apicid); |
1345 | 1353 | ||
1346 | setup_local_APIC(); | 1354 | setup_local_APIC(); |
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c index d77e89ac0d54..846e1639ef7c 100644 --- a/arch/i386/kernel/setup.c +++ b/arch/i386/kernel/setup.c | |||
@@ -1320,6 +1320,8 @@ legacy_init_iomem_resources(struct resource *code_resource, struct resource *dat | |||
1320 | probe_roms(); | 1320 | probe_roms(); |
1321 | for (i = 0; i < e820.nr_map; i++) { | 1321 | for (i = 0; i < e820.nr_map; i++) { |
1322 | struct resource *res; | 1322 | struct resource *res; |
1323 | if (e820.map[i].addr + e820.map[i].size > 0x100000000ULL) | ||
1324 | continue; | ||
1323 | res = kzalloc(sizeof(struct resource), GFP_ATOMIC); | 1325 | res = kzalloc(sizeof(struct resource), GFP_ATOMIC); |
1324 | switch (e820.map[i].type) { | 1326 | switch (e820.map[i].type) { |
1325 | case E820_RAM: res->name = "System RAM"; break; | 1327 | case E820_RAM: res->name = "System RAM"; break; |
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c index 2d22f5761b1d..0e498369f35e 100644 --- a/arch/i386/kernel/traps.c +++ b/arch/i386/kernel/traps.c | |||
@@ -130,9 +130,8 @@ static inline int print_addr_and_symbol(unsigned long addr, char *log_lvl, | |||
130 | print_symbol("%s", addr); | 130 | print_symbol("%s", addr); |
131 | 131 | ||
132 | printed = (printed + 1) % CONFIG_STACK_BACKTRACE_COLS; | 132 | printed = (printed + 1) % CONFIG_STACK_BACKTRACE_COLS; |
133 | |||
134 | if (printed) | 133 | if (printed) |
135 | printk(" "); | 134 | printk(" "); |
136 | else | 135 | else |
137 | printk("\n"); | 136 | printk("\n"); |
138 | 137 | ||
@@ -212,7 +211,6 @@ static void show_stack_log_lvl(struct task_struct *task, unsigned long *esp, | |||
212 | } | 211 | } |
213 | 212 | ||
214 | stack = esp; | 213 | stack = esp; |
215 | printk(log_lvl); | ||
216 | for(i = 0; i < kstack_depth_to_print; i++) { | 214 | for(i = 0; i < kstack_depth_to_print; i++) { |
217 | if (kstack_end(stack)) | 215 | if (kstack_end(stack)) |
218 | break; | 216 | break; |
diff --git a/arch/i386/mm/init.c b/arch/i386/mm/init.c index ae6534ad8161..3df1371d4520 100644 --- a/arch/i386/mm/init.c +++ b/arch/i386/mm/init.c | |||
@@ -651,7 +651,7 @@ void __init mem_init(void) | |||
651 | * Specifically, in the case of x86, we will always add | 651 | * Specifically, in the case of x86, we will always add |
652 | * memory to the highmem for now. | 652 | * memory to the highmem for now. |
653 | */ | 653 | */ |
654 | #ifdef CONFIG_HOTPLUG_MEMORY | 654 | #ifdef CONFIG_MEMORY_HOTPLUG |
655 | #ifndef CONFIG_NEED_MULTIPLE_NODES | 655 | #ifndef CONFIG_NEED_MULTIPLE_NODES |
656 | int add_memory(u64 start, u64 size) | 656 | int add_memory(u64 start, u64 size) |
657 | { | 657 | { |
diff --git a/arch/i386/oprofile/nmi_int.c b/arch/i386/oprofile/nmi_int.c index 1a2076ce6f6a..ec0fd3cfa774 100644 --- a/arch/i386/oprofile/nmi_int.c +++ b/arch/i386/oprofile/nmi_int.c | |||
@@ -332,10 +332,11 @@ static int __init ppro_init(char ** cpu_type) | |||
332 | { | 332 | { |
333 | __u8 cpu_model = boot_cpu_data.x86_model; | 333 | __u8 cpu_model = boot_cpu_data.x86_model; |
334 | 334 | ||
335 | if (cpu_model > 0xd) | 335 | if (cpu_model == 14) |
336 | *cpu_type = "i386/core"; | ||
337 | else if (cpu_model > 0xd) | ||
336 | return 0; | 338 | return 0; |
337 | 339 | else if (cpu_model == 9) { | |
338 | if (cpu_model == 9) { | ||
339 | *cpu_type = "i386/p6_mobile"; | 340 | *cpu_type = "i386/p6_mobile"; |
340 | } else if (cpu_model > 5) { | 341 | } else if (cpu_model > 5) { |
341 | *cpu_type = "i386/piii"; | 342 | *cpu_type = "i386/piii"; |
diff --git a/arch/i386/power/cpu.c b/arch/i386/power/cpu.c index 50a0bef8c85f..79b2370c7fac 100644 --- a/arch/i386/power/cpu.c +++ b/arch/i386/power/cpu.c | |||
@@ -92,7 +92,7 @@ void __restore_processor_state(struct saved_context *ctxt) | |||
92 | write_cr4(ctxt->cr4); | 92 | write_cr4(ctxt->cr4); |
93 | write_cr3(ctxt->cr3); | 93 | write_cr3(ctxt->cr3); |
94 | write_cr2(ctxt->cr2); | 94 | write_cr2(ctxt->cr2); |
95 | write_cr2(ctxt->cr0); | 95 | write_cr0(ctxt->cr0); |
96 | 96 | ||
97 | /* | 97 | /* |
98 | * now restore the descriptor tables to their proper values | 98 | * now restore the descriptor tables to their proper values |
diff --git a/arch/ia64/configs/sn2_defconfig b/arch/ia64/configs/sn2_defconfig index f6a8853cd1b4..9ea35398e10d 100644 --- a/arch/ia64/configs/sn2_defconfig +++ b/arch/ia64/configs/sn2_defconfig | |||
@@ -134,7 +134,7 @@ CONFIG_ARCH_FLATMEM_ENABLE=y | |||
134 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | 134 | CONFIG_ARCH_SPARSEMEM_ENABLE=y |
135 | CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y | 135 | CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y |
136 | CONFIG_NUMA=y | 136 | CONFIG_NUMA=y |
137 | CONFIG_NODES_SHIFT=8 | 137 | CONFIG_NODES_SHIFT=10 |
138 | CONFIG_VIRTUAL_MEM_MAP=y | 138 | CONFIG_VIRTUAL_MEM_MAP=y |
139 | CONFIG_HOLES_IN_ZONE=y | 139 | CONFIG_HOLES_IN_ZONE=y |
140 | CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y | 140 | CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y |
@@ -1159,7 +1159,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1159 | # CONFIG_SCHEDSTATS is not set | 1159 | # CONFIG_SCHEDSTATS is not set |
1160 | # CONFIG_DEBUG_SLAB is not set | 1160 | # CONFIG_DEBUG_SLAB is not set |
1161 | CONFIG_DEBUG_PREEMPT=y | 1161 | CONFIG_DEBUG_PREEMPT=y |
1162 | CONFIG_DEBUG_MUTEXES=y | 1162 | # CONFIG_DEBUG_MUTEXES is not set |
1163 | # CONFIG_DEBUG_SPINLOCK is not set | 1163 | # CONFIG_DEBUG_SPINLOCK is not set |
1164 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1164 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1165 | # CONFIG_DEBUG_KOBJECT is not set | 1165 | # CONFIG_DEBUG_KOBJECT is not set |
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c index 7956eb9058fc..d58c1c5c903a 100644 --- a/arch/ia64/kernel/iosapic.c +++ b/arch/ia64/kernel/iosapic.c | |||
@@ -416,7 +416,7 @@ iosapic_end_level_irq (unsigned int irq) | |||
416 | ia64_vector vec = irq_to_vector(irq); | 416 | ia64_vector vec = irq_to_vector(irq); |
417 | struct iosapic_rte_info *rte; | 417 | struct iosapic_rte_info *rte; |
418 | 418 | ||
419 | move_irq(irq); | 419 | move_native_irq(irq); |
420 | list_for_each_entry(rte, &iosapic_intr_info[vec].rtes, rte_list) | 420 | list_for_each_entry(rte, &iosapic_intr_info[vec].rtes, rte_list) |
421 | iosapic_eoi(rte->addr, vec); | 421 | iosapic_eoi(rte->addr, vec); |
422 | } | 422 | } |
@@ -458,7 +458,7 @@ iosapic_ack_edge_irq (unsigned int irq) | |||
458 | { | 458 | { |
459 | irq_desc_t *idesc = irq_descp(irq); | 459 | irq_desc_t *idesc = irq_descp(irq); |
460 | 460 | ||
461 | move_irq(irq); | 461 | move_native_irq(irq); |
462 | /* | 462 | /* |
463 | * Once we have recorded IRQ_PENDING already, we can mask the | 463 | * Once we have recorded IRQ_PENDING already, we can mask the |
464 | * interrupt for real. This prevents IRQ storms from unhandled | 464 | * interrupt for real. This prevents IRQ storms from unhandled |
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c index 5ce908ef9c95..9c72ea3f6432 100644 --- a/arch/ia64/kernel/irq.c +++ b/arch/ia64/kernel/irq.c | |||
@@ -101,7 +101,6 @@ void set_irq_affinity_info (unsigned int irq, int hwid, int redir) | |||
101 | 101 | ||
102 | if (irq < NR_IRQS) { | 102 | if (irq < NR_IRQS) { |
103 | irq_affinity[irq] = mask; | 103 | irq_affinity[irq] = mask; |
104 | set_irq_info(irq, mask); | ||
105 | irq_redir[irq] = (char) (redir & 0xff); | 104 | irq_redir[irq] = (char) (redir & 0xff); |
106 | } | 105 | } |
107 | } | 106 | } |
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 078fb5533541..2d80653aa2af 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c | |||
@@ -1636,7 +1636,7 @@ static int __init prom_find_machine_type(void) | |||
1636 | compat, sizeof(compat)-1); | 1636 | compat, sizeof(compat)-1); |
1637 | if (len <= 0) | 1637 | if (len <= 0) |
1638 | return PLATFORM_GENERIC; | 1638 | return PLATFORM_GENERIC; |
1639 | if (strncmp(compat, RELOC("chrp"), 4)) | 1639 | if (strcmp(compat, RELOC("chrp"))) |
1640 | return PLATFORM_GENERIC; | 1640 | return PLATFORM_GENERIC; |
1641 | 1641 | ||
1642 | /* Default to pSeries. We need to know if we are running LPAR */ | 1642 | /* Default to pSeries. We need to know if we are running LPAR */ |
diff --git a/arch/powerpc/kernel/systbl.S b/arch/powerpc/kernel/systbl.S index cf56a1d499ff..26ed1f5ef16e 100644 --- a/arch/powerpc/kernel/systbl.S +++ b/arch/powerpc/kernel/systbl.S | |||
@@ -338,6 +338,8 @@ SYSCALL(symlinkat) | |||
338 | SYSCALL(readlinkat) | 338 | SYSCALL(readlinkat) |
339 | SYSCALL(fchmodat) | 339 | SYSCALL(fchmodat) |
340 | SYSCALL(faccessat) | 340 | SYSCALL(faccessat) |
341 | COMPAT_SYS(get_robust_list) | ||
342 | COMPAT_SYS(set_robust_list) | ||
341 | 343 | ||
342 | /* | 344 | /* |
343 | * please add new calls to arch/powerpc/platforms/cell/spu_callbacks.c | 345 | * please add new calls to arch/powerpc/platforms/cell/spu_callbacks.c |
diff --git a/arch/powerpc/platforms/cell/spu_callbacks.c b/arch/powerpc/platforms/cell/spu_callbacks.c index 95b36430aa0f..b47fcc5ddb78 100644 --- a/arch/powerpc/platforms/cell/spu_callbacks.c +++ b/arch/powerpc/platforms/cell/spu_callbacks.c | |||
@@ -258,6 +258,7 @@ void *spu_syscall_table[] = { | |||
258 | [__NR_futex] sys_futex, | 258 | [__NR_futex] sys_futex, |
259 | [__NR_sched_setaffinity] sys_sched_setaffinity, | 259 | [__NR_sched_setaffinity] sys_sched_setaffinity, |
260 | [__NR_sched_getaffinity] sys_sched_getaffinity, | 260 | [__NR_sched_getaffinity] sys_sched_getaffinity, |
261 | [224] sys_ni_syscall, | ||
261 | [__NR_tuxcall] sys_ni_syscall, | 262 | [__NR_tuxcall] sys_ni_syscall, |
262 | [226] sys_ni_syscall, | 263 | [226] sys_ni_syscall, |
263 | [__NR_io_setup] sys_io_setup, | 264 | [__NR_io_setup] sys_io_setup, |
@@ -332,19 +333,21 @@ void *spu_syscall_table[] = { | |||
332 | [__NR_readlinkat] sys_readlinkat, | 333 | [__NR_readlinkat] sys_readlinkat, |
333 | [__NR_fchmodat] sys_fchmodat, | 334 | [__NR_fchmodat] sys_fchmodat, |
334 | [__NR_faccessat] sys_faccessat, | 335 | [__NR_faccessat] sys_faccessat, |
336 | [__NR_get_robust_list] sys_get_robust_list, | ||
337 | [__NR_set_robust_list] sys_set_robust_list, | ||
335 | }; | 338 | }; |
336 | 339 | ||
337 | long spu_sys_callback(struct spu_syscall_block *s) | 340 | long spu_sys_callback(struct spu_syscall_block *s) |
338 | { | 341 | { |
339 | long (*syscall)(u64 a1, u64 a2, u64 a3, u64 a4, u64 a5, u64 a6); | 342 | long (*syscall)(u64 a1, u64 a2, u64 a3, u64 a4, u64 a5, u64 a6); |
340 | 343 | ||
341 | syscall = spu_syscall_table[s->nr_ret]; | ||
342 | |||
343 | if (s->nr_ret >= ARRAY_SIZE(spu_syscall_table)) { | 344 | if (s->nr_ret >= ARRAY_SIZE(spu_syscall_table)) { |
344 | pr_debug("%s: invalid syscall #%ld", __FUNCTION__, s->nr_ret); | 345 | pr_debug("%s: invalid syscall #%ld", __FUNCTION__, s->nr_ret); |
345 | return -ENOSYS; | 346 | return -ENOSYS; |
346 | } | 347 | } |
347 | 348 | ||
349 | syscall = spu_syscall_table[s->nr_ret]; | ||
350 | |||
348 | #ifdef DEBUG | 351 | #ifdef DEBUG |
349 | print_symbol(KERN_DEBUG "SPU-syscall %s:", (unsigned long)syscall); | 352 | print_symbol(KERN_DEBUG "SPU-syscall %s:", (unsigned long)syscall); |
350 | printk("syscall%ld(%lx, %lx, %lx, %lx, %lx, %lx)\n", | 353 | printk("syscall%ld(%lx, %lx, %lx, %lx, %lx, %lx)\n", |
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c index 5eb55ef1c91c..5f79f01c44f2 100644 --- a/arch/powerpc/platforms/pseries/setup.c +++ b/arch/powerpc/platforms/pseries/setup.c | |||
@@ -255,7 +255,7 @@ static int __init pSeries_init_panel(void) | |||
255 | { | 255 | { |
256 | /* Manually leave the kernel version on the panel. */ | 256 | /* Manually leave the kernel version on the panel. */ |
257 | ppc_md.progress("Linux ppc64\n", 0); | 257 | ppc_md.progress("Linux ppc64\n", 0); |
258 | ppc_md.progress(system_utsname.version, 0); | 258 | ppc_md.progress(system_utsname.release, 0); |
259 | 259 | ||
260 | return 0; | 260 | return 0; |
261 | } | 261 | } |
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index ef5b9c44b86b..4d53b2739357 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S | |||
@@ -1650,3 +1650,11 @@ sys_tee_wrapper: | |||
1650 | llgfr %r4,%r4 # size_t | 1650 | llgfr %r4,%r4 # size_t |
1651 | llgfr %r5,%r5 # unsigned int | 1651 | llgfr %r5,%r5 # unsigned int |
1652 | jg sys_tee | 1652 | jg sys_tee |
1653 | |||
1654 | .globl compat_sys_vmsplice_wrapper | ||
1655 | compat_sys_vmsplice_wrapper: | ||
1656 | lgfr %r2,%r2 # int | ||
1657 | llgtr %r3,%r3 # compat_iovec * | ||
1658 | llgfr %r4,%r4 # unsigned int | ||
1659 | llgfr %r5,%r5 # unsigned int | ||
1660 | jg compat_sys_vmsplice | ||
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S index fc2c0767202b..93be1d56c036 100644 --- a/arch/s390/kernel/syscalls.S +++ b/arch/s390/kernel/syscalls.S | |||
@@ -317,3 +317,4 @@ SYSCALL(sys_get_robust_list,sys_get_robust_list,compat_sys_get_robust_list_wrapp | |||
317 | SYSCALL(sys_splice,sys_splice,sys_splice_wrapper) | 317 | SYSCALL(sys_splice,sys_splice,sys_splice_wrapper) |
318 | SYSCALL(sys_sync_file_range,sys_sync_file_range,sys_sync_file_range_wrapper) | 318 | SYSCALL(sys_sync_file_range,sys_sync_file_range,sys_sync_file_range_wrapper) |
319 | SYSCALL(sys_tee,sys_tee,sys_tee_wrapper) | 319 | SYSCALL(sys_tee,sys_tee,sys_tee_wrapper) |
320 | SYSCALL(sys_vmsplice,sys_vmsplice,compat_sys_vmsplice_wrapper) | ||
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c index fea043b69b91..ce19ad4e92ec 100644 --- a/arch/s390/kernel/time.c +++ b/arch/s390/kernel/time.c | |||
@@ -249,18 +249,19 @@ static inline void stop_hz_timer(void) | |||
249 | unsigned long flags; | 249 | unsigned long flags; |
250 | unsigned long seq, next; | 250 | unsigned long seq, next; |
251 | __u64 timer, todval; | 251 | __u64 timer, todval; |
252 | int cpu = smp_processor_id(); | ||
252 | 253 | ||
253 | if (sysctl_hz_timer != 0) | 254 | if (sysctl_hz_timer != 0) |
254 | return; | 255 | return; |
255 | 256 | ||
256 | cpu_set(smp_processor_id(), nohz_cpu_mask); | 257 | cpu_set(cpu, nohz_cpu_mask); |
257 | 258 | ||
258 | /* | 259 | /* |
259 | * Leave the clock comparator set up for the next timer | 260 | * Leave the clock comparator set up for the next timer |
260 | * tick if either rcu or a softirq is pending. | 261 | * tick if either rcu or a softirq is pending. |
261 | */ | 262 | */ |
262 | if (rcu_pending(smp_processor_id()) || local_softirq_pending()) { | 263 | if (rcu_needs_cpu(cpu) || local_softirq_pending()) { |
263 | cpu_clear(smp_processor_id(), nohz_cpu_mask); | 264 | cpu_clear(cpu, nohz_cpu_mask); |
264 | return; | 265 | return; |
265 | } | 266 | } |
266 | 267 | ||
@@ -271,7 +272,7 @@ static inline void stop_hz_timer(void) | |||
271 | next = next_timer_interrupt(); | 272 | next = next_timer_interrupt(); |
272 | do { | 273 | do { |
273 | seq = read_seqbegin_irqsave(&xtime_lock, flags); | 274 | seq = read_seqbegin_irqsave(&xtime_lock, flags); |
274 | timer = (__u64)(next - jiffies) + jiffies_64; | 275 | timer = (__u64 next) - (__u64 jiffies) + jiffies_64; |
275 | } while (read_seqretry_irqrestore(&xtime_lock, seq, flags)); | 276 | } while (read_seqretry_irqrestore(&xtime_lock, seq, flags)); |
276 | todval = -1ULL; | 277 | todval = -1ULL; |
277 | /* Be careful about overflows. */ | 278 | /* Be careful about overflows. */ |
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c index 460f72e640e6..f9ff29734848 100644 --- a/arch/sparc/kernel/ioport.c +++ b/arch/sparc/kernel/ioport.c | |||
@@ -274,6 +274,11 @@ void *sbus_alloc_consistent(struct sbus_dev *sdev, long len, u32 *dma_addrp) | |||
274 | if (mmu_map_dma_area(dma_addrp, va, res->start, len_total) != 0) | 274 | if (mmu_map_dma_area(dma_addrp, va, res->start, len_total) != 0) |
275 | goto err_noiommu; | 275 | goto err_noiommu; |
276 | 276 | ||
277 | /* Set the resource name, if known. */ | ||
278 | if (sdev) { | ||
279 | res->name = sdev->prom_name; | ||
280 | } | ||
281 | |||
277 | return (void *)res->start; | 282 | return (void *)res->start; |
278 | 283 | ||
279 | err_noiommu: | 284 | err_noiommu: |
diff --git a/arch/sparc/kernel/module.c b/arch/sparc/kernel/module.c index 787d5f1347ec..598682f31ebf 100644 --- a/arch/sparc/kernel/module.c +++ b/arch/sparc/kernel/module.c | |||
@@ -113,6 +113,7 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, | |||
113 | 113 | ||
114 | switch (ELF32_R_TYPE(rel[i].r_info)) { | 114 | switch (ELF32_R_TYPE(rel[i].r_info)) { |
115 | case R_SPARC_32: | 115 | case R_SPARC_32: |
116 | case R_SPARC_UA32: | ||
116 | location[0] = v >> 24; | 117 | location[0] = v >> 24; |
117 | location[1] = v >> 16; | 118 | location[1] = v >> 16; |
118 | location[2] = v >> 8; | 119 | location[2] = v >> 8; |
diff --git a/arch/sparc/kernel/sparc_ksyms.c b/arch/sparc/kernel/sparc_ksyms.c index ec1c9687d679..4b376fae752c 100644 --- a/arch/sparc/kernel/sparc_ksyms.c +++ b/arch/sparc/kernel/sparc_ksyms.c | |||
@@ -251,19 +251,9 @@ EXPORT_SYMBOL(__prom_getchild); | |||
251 | EXPORT_SYMBOL(__prom_getsibling); | 251 | EXPORT_SYMBOL(__prom_getsibling); |
252 | 252 | ||
253 | /* sparc library symbols */ | 253 | /* sparc library symbols */ |
254 | EXPORT_SYMBOL(memchr); | ||
255 | EXPORT_SYMBOL(memscan); | 254 | EXPORT_SYMBOL(memscan); |
256 | EXPORT_SYMBOL(strlen); | 255 | EXPORT_SYMBOL(strlen); |
257 | EXPORT_SYMBOL(strnlen); | ||
258 | EXPORT_SYMBOL(strcpy); | ||
259 | EXPORT_SYMBOL(strncpy); | ||
260 | EXPORT_SYMBOL(strcat); | ||
261 | EXPORT_SYMBOL(strncat); | ||
262 | EXPORT_SYMBOL(strcmp); | ||
263 | EXPORT_SYMBOL(strncmp); | 256 | EXPORT_SYMBOL(strncmp); |
264 | EXPORT_SYMBOL(strchr); | ||
265 | EXPORT_SYMBOL(strrchr); | ||
266 | EXPORT_SYMBOL(strstr); | ||
267 | EXPORT_SYMBOL(page_kernel); | 257 | EXPORT_SYMBOL(page_kernel); |
268 | 258 | ||
269 | /* Special internal versions of library functions. */ | 259 | /* Special internal versions of library functions. */ |
@@ -317,6 +307,3 @@ EXPORT_SYMBOL(do_BUG); | |||
317 | 307 | ||
318 | /* Sun Power Management Idle Handler */ | 308 | /* Sun Power Management Idle Handler */ |
319 | EXPORT_SYMBOL(pm_idle); | 309 | EXPORT_SYMBOL(pm_idle); |
320 | |||
321 | /* Binfmt_misc needs this */ | ||
322 | EXPORT_SYMBOL(sys_close); | ||
diff --git a/arch/sparc/kernel/systbls.S b/arch/sparc/kernel/systbls.S index 6e1135cc03b0..2856551bddf1 100644 --- a/arch/sparc/kernel/systbls.S +++ b/arch/sparc/kernel/systbls.S | |||
@@ -79,6 +79,7 @@ sys_call_table: | |||
79 | /*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 | 79 | /*285*/ .long sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 |
80 | /*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | 80 | /*290*/ .long sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat |
81 | /*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare | 81 | /*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare |
82 | /*300*/ .long sys_set_robust_list, sys_get_robust_list | ||
82 | 83 | ||
83 | #ifdef CONFIG_SUNOS_EMUL | 84 | #ifdef CONFIG_SUNOS_EMUL |
84 | /* Now the SunOS syscall table. */ | 85 | /* Now the SunOS syscall table. */ |
@@ -190,6 +191,6 @@ sunos_sys_table: | |||
190 | /*290*/ .long sunos_nosys, sunos_nosys, sunos_nosys | 191 | /*290*/ .long sunos_nosys, sunos_nosys, sunos_nosys |
191 | .long sunos_nosys, sunos_nosys, sunos_nosys | 192 | .long sunos_nosys, sunos_nosys, sunos_nosys |
192 | .long sunos_nosys, sunos_nosys, sunos_nosys | 193 | .long sunos_nosys, sunos_nosys, sunos_nosys |
193 | .long sunos_nosys | 194 | .long sunos_nosys, sunos_nosys, sunos_nosys |
194 | 195 | ||
195 | #endif | 196 | #endif |
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig index 1317380fa937..f09a70b8aabd 100644 --- a/arch/sparc64/defconfig +++ b/arch/sparc64/defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.16 | 3 | # Linux kernel version: 2.6.17-rc3 |
4 | # Sun Apr 2 19:31:04 2006 | 4 | # Fri May 12 12:43:49 2006 |
5 | # | 5 | # |
6 | CONFIG_SPARC=y | 6 | CONFIG_SPARC=y |
7 | CONFIG_SPARC64=y | 7 | CONFIG_SPARC64=y |
@@ -114,6 +114,7 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y | |||
114 | CONFIG_HUGETLB_PAGE_SIZE_4MB=y | 114 | CONFIG_HUGETLB_PAGE_SIZE_4MB=y |
115 | # CONFIG_HUGETLB_PAGE_SIZE_512K is not set | 115 | # CONFIG_HUGETLB_PAGE_SIZE_512K is not set |
116 | # CONFIG_HUGETLB_PAGE_SIZE_64K is not set | 116 | # CONFIG_HUGETLB_PAGE_SIZE_64K is not set |
117 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
117 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | 118 | CONFIG_ARCH_SPARSEMEM_ENABLE=y |
118 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y | 119 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y |
119 | CONFIG_LARGE_ALLOCS=y | 120 | CONFIG_LARGE_ALLOCS=y |
@@ -430,7 +431,6 @@ CONFIG_ISCSI_TCP=m | |||
430 | # CONFIG_SCSI_INIA100 is not set | 431 | # CONFIG_SCSI_INIA100 is not set |
431 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 432 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
432 | # CONFIG_SCSI_IPR is not set | 433 | # CONFIG_SCSI_IPR is not set |
433 | # CONFIG_SCSI_QLOGIC_FC is not set | ||
434 | # CONFIG_SCSI_QLOGIC_1280 is not set | 434 | # CONFIG_SCSI_QLOGIC_1280 is not set |
435 | # CONFIG_SCSI_QLOGICPTI is not set | 435 | # CONFIG_SCSI_QLOGICPTI is not set |
436 | # CONFIG_SCSI_QLA_FC is not set | 436 | # CONFIG_SCSI_QLA_FC is not set |
@@ -1042,9 +1042,7 @@ CONFIG_USB_HIDDEV=y | |||
1042 | # CONFIG_USB_ACECAD is not set | 1042 | # CONFIG_USB_ACECAD is not set |
1043 | # CONFIG_USB_KBTAB is not set | 1043 | # CONFIG_USB_KBTAB is not set |
1044 | # CONFIG_USB_POWERMATE is not set | 1044 | # CONFIG_USB_POWERMATE is not set |
1045 | # CONFIG_USB_MTOUCH is not set | 1045 | # CONFIG_USB_TOUCHSCREEN is not set |
1046 | # CONFIG_USB_ITMTOUCH is not set | ||
1047 | # CONFIG_USB_EGALAX is not set | ||
1048 | # CONFIG_USB_YEALINK is not set | 1046 | # CONFIG_USB_YEALINK is not set |
1049 | # CONFIG_USB_XPAD is not set | 1047 | # CONFIG_USB_XPAD is not set |
1050 | # CONFIG_USB_ATI_REMOTE is not set | 1048 | # CONFIG_USB_ATI_REMOTE is not set |
@@ -1115,6 +1113,14 @@ CONFIG_USB_HIDDEV=y | |||
1115 | # CONFIG_NEW_LEDS is not set | 1113 | # CONFIG_NEW_LEDS is not set |
1116 | 1114 | ||
1117 | # | 1115 | # |
1116 | # LED drivers | ||
1117 | # | ||
1118 | |||
1119 | # | ||
1120 | # LED Triggers | ||
1121 | # | ||
1122 | |||
1123 | # | ||
1118 | # InfiniBand support | 1124 | # InfiniBand support |
1119 | # | 1125 | # |
1120 | # CONFIG_INFINIBAND is not set | 1126 | # CONFIG_INFINIBAND is not set |
@@ -1303,6 +1309,7 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1303 | # CONFIG_DEBUG_INFO is not set | 1309 | # CONFIG_DEBUG_INFO is not set |
1304 | CONFIG_DEBUG_FS=y | 1310 | CONFIG_DEBUG_FS=y |
1305 | # CONFIG_DEBUG_VM is not set | 1311 | # CONFIG_DEBUG_VM is not set |
1312 | # CONFIG_UNWIND_INFO is not set | ||
1306 | CONFIG_FORCED_INLINING=y | 1313 | CONFIG_FORCED_INLINING=y |
1307 | # CONFIG_RCU_TORTURE_TEST is not set | 1314 | # CONFIG_RCU_TORTURE_TEST is not set |
1308 | # CONFIG_DEBUG_STACK_USAGE is not set | 1315 | # CONFIG_DEBUG_STACK_USAGE is not set |
diff --git a/arch/sparc64/kernel/module.c b/arch/sparc64/kernel/module.c index 6c83e372f75d..579871527699 100644 --- a/arch/sparc64/kernel/module.c +++ b/arch/sparc64/kernel/module.c | |||
@@ -143,6 +143,11 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, | |||
143 | location[3] = v >> 0; | 143 | location[3] = v >> 0; |
144 | break; | 144 | break; |
145 | 145 | ||
146 | case R_SPARC_DISP32: | ||
147 | v -= (Elf64_Addr) location; | ||
148 | *loc32 = v; | ||
149 | break; | ||
150 | |||
146 | case R_SPARC_WDISP30: | 151 | case R_SPARC_WDISP30: |
147 | v -= (Elf64_Addr) location; | 152 | v -= (Elf64_Addr) location; |
148 | *loc32 = (*loc32 & ~0x3fffffff) | | 153 | *loc32 = (*loc32 & ~0x3fffffff) | |
diff --git a/arch/sparc64/kernel/pci_iommu.c b/arch/sparc64/kernel/pci_iommu.c index 8efbc139769d..82e5455134c6 100644 --- a/arch/sparc64/kernel/pci_iommu.c +++ b/arch/sparc64/kernel/pci_iommu.c | |||
@@ -218,7 +218,7 @@ static inline void iommu_free_ctx(struct pci_iommu *iommu, int ctx) | |||
218 | * DMA for PCI device PDEV. Return non-NULL cpu-side address if | 218 | * DMA for PCI device PDEV. Return non-NULL cpu-side address if |
219 | * successful and set *DMA_ADDRP to the PCI side dma address. | 219 | * successful and set *DMA_ADDRP to the PCI side dma address. |
220 | */ | 220 | */ |
221 | static void *pci_4u_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp) | 221 | static void *pci_4u_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp, gfp_t gfp) |
222 | { | 222 | { |
223 | struct pcidev_cookie *pcp; | 223 | struct pcidev_cookie *pcp; |
224 | struct pci_iommu *iommu; | 224 | struct pci_iommu *iommu; |
@@ -232,7 +232,7 @@ static void *pci_4u_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr | |||
232 | if (order >= 10) | 232 | if (order >= 10) |
233 | return NULL; | 233 | return NULL; |
234 | 234 | ||
235 | first_page = __get_free_pages(GFP_ATOMIC, order); | 235 | first_page = __get_free_pages(gfp, order); |
236 | if (first_page == 0UL) | 236 | if (first_page == 0UL) |
237 | return NULL; | 237 | return NULL; |
238 | memset((char *)first_page, 0, PAGE_SIZE << order); | 238 | memset((char *)first_page, 0, PAGE_SIZE << order); |
diff --git a/arch/sparc64/kernel/pci_sun4v.c b/arch/sparc64/kernel/pci_sun4v.c index 9e94db2573a2..2b7a1f316a93 100644 --- a/arch/sparc64/kernel/pci_sun4v.c +++ b/arch/sparc64/kernel/pci_sun4v.c | |||
@@ -154,7 +154,7 @@ static void pci_arena_free(struct pci_iommu_arena *arena, unsigned long base, un | |||
154 | __clear_bit(i, arena->map); | 154 | __clear_bit(i, arena->map); |
155 | } | 155 | } |
156 | 156 | ||
157 | static void *pci_4v_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp) | 157 | static void *pci_4v_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp, gfp_t gfp) |
158 | { | 158 | { |
159 | struct pcidev_cookie *pcp; | 159 | struct pcidev_cookie *pcp; |
160 | struct pci_iommu *iommu; | 160 | struct pci_iommu *iommu; |
@@ -169,7 +169,7 @@ static void *pci_4v_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr | |||
169 | 169 | ||
170 | npages = size >> IO_PAGE_SHIFT; | 170 | npages = size >> IO_PAGE_SHIFT; |
171 | 171 | ||
172 | first_page = __get_free_pages(GFP_ATOMIC, order); | 172 | first_page = __get_free_pages(gfp, order); |
173 | if (unlikely(first_page == 0UL)) | 173 | if (unlikely(first_page == 0UL)) |
174 | return NULL; | 174 | return NULL; |
175 | 175 | ||
diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S index d4b39cd30310..1136fc465e37 100644 --- a/arch/sparc64/kernel/systbls.S +++ b/arch/sparc64/kernel/systbls.S | |||
@@ -78,8 +78,9 @@ sys_call_table32: | |||
78 | .word compat_sys_mq_timedsend, compat_sys_mq_timedreceive, compat_sys_mq_notify, compat_sys_mq_getsetattr, compat_sys_waitid | 78 | .word compat_sys_mq_timedsend, compat_sys_mq_timedreceive, compat_sys_mq_notify, compat_sys_mq_getsetattr, compat_sys_waitid |
79 | /*280*/ .word sys32_tee, sys_add_key, sys_request_key, sys_keyctl, compat_sys_openat | 79 | /*280*/ .word sys32_tee, sys_add_key, sys_request_key, sys_keyctl, compat_sys_openat |
80 | .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64 | 80 | .word sys_mkdirat, sys_mknodat, sys_fchownat, compat_sys_futimesat, compat_sys_fstatat64 |
81 | /*285*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | 81 | /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat |
82 | .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare | 82 | .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare |
83 | /*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list | ||
83 | 84 | ||
84 | #endif /* CONFIG_COMPAT */ | 85 | #endif /* CONFIG_COMPAT */ |
85 | 86 | ||
@@ -147,8 +148,9 @@ sys_call_table: | |||
147 | .word sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid | 148 | .word sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid |
148 | /*280*/ .word sys_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat | 149 | /*280*/ .word sys_tee, sys_add_key, sys_request_key, sys_keyctl, sys_openat |
149 | .word sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 | 150 | .word sys_mkdirat, sys_mknodat, sys_fchownat, sys_futimesat, sys_fstatat64 |
150 | /*285*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat | 151 | /*290*/ .word sys_unlinkat, sys_renameat, sys_linkat, sys_symlinkat, sys_readlinkat |
151 | .word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare | 152 | .word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare |
153 | /*300*/ .word sys_set_robust_list, sys_get_robust_list | ||
152 | 154 | ||
153 | #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \ | 155 | #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \ |
154 | defined(CONFIG_SOLARIS_EMUL_MODULE) | 156 | defined(CONFIG_SOLARIS_EMUL_MODULE) |
@@ -261,5 +263,5 @@ sunos_sys_table: | |||
261 | /*290*/ .word sunos_nosys, sunos_nosys, sunos_nosys | 263 | /*290*/ .word sunos_nosys, sunos_nosys, sunos_nosys |
262 | .word sunos_nosys, sunos_nosys, sunos_nosys | 264 | .word sunos_nosys, sunos_nosys, sunos_nosys |
263 | .word sunos_nosys, sunos_nosys, sunos_nosys | 265 | .word sunos_nosys, sunos_nosys, sunos_nosys |
264 | .word sunos_nosys | 266 | .word sunos_nosys, sunos_nosys, sunos_nosys |
265 | #endif | 267 | #endif |
diff --git a/arch/x86_64/kernel/kprobes.c b/arch/x86_64/kernel/kprobes.c index 1eaa5dae6174..fa1d19ca700a 100644 --- a/arch/x86_64/kernel/kprobes.c +++ b/arch/x86_64/kernel/kprobes.c | |||
@@ -514,13 +514,13 @@ static void __kprobes resume_execution(struct kprobe *p, | |||
514 | *tos = orig_rip + (*tos - copy_rip); | 514 | *tos = orig_rip + (*tos - copy_rip); |
515 | break; | 515 | break; |
516 | case 0xff: | 516 | case 0xff: |
517 | if ((*insn & 0x30) == 0x10) { | 517 | if ((insn[1] & 0x30) == 0x10) { |
518 | /* call absolute, indirect */ | 518 | /* call absolute, indirect */ |
519 | /* Fix return addr; rip is correct. */ | 519 | /* Fix return addr; rip is correct. */ |
520 | next_rip = regs->rip; | 520 | next_rip = regs->rip; |
521 | *tos = orig_rip + (*tos - copy_rip); | 521 | *tos = orig_rip + (*tos - copy_rip); |
522 | } else if (((*insn & 0x31) == 0x20) || /* jmp near, absolute indirect */ | 522 | } else if (((insn[1] & 0x31) == 0x20) || /* jmp near, absolute indirect */ |
523 | ((*insn & 0x31) == 0x21)) { /* jmp far, absolute indirect */ | 523 | ((insn[1] & 0x31) == 0x21)) { /* jmp far, absolute indirect */ |
524 | /* rip is correct. */ | 524 | /* rip is correct. */ |
525 | next_rip = regs->rip; | 525 | next_rip = regs->rip; |
526 | } | 526 | } |
diff --git a/arch/x86_64/kernel/pci-nommu.c b/arch/x86_64/kernel/pci-nommu.c index 44adcc2d5e5b..1f6ecc62061d 100644 --- a/arch/x86_64/kernel/pci-nommu.c +++ b/arch/x86_64/kernel/pci-nommu.c | |||
@@ -12,9 +12,10 @@ static int | |||
12 | check_addr(char *name, struct device *hwdev, dma_addr_t bus, size_t size) | 12 | check_addr(char *name, struct device *hwdev, dma_addr_t bus, size_t size) |
13 | { | 13 | { |
14 | if (hwdev && bus + size > *hwdev->dma_mask) { | 14 | if (hwdev && bus + size > *hwdev->dma_mask) { |
15 | printk(KERN_ERR | 15 | if (*hwdev->dma_mask >= 0xffffffffULL) |
16 | "nommu_%s: overflow %Lx+%lu of device mask %Lx\n", | 16 | printk(KERN_ERR |
17 | name, (long long)bus, size, (long long)*hwdev->dma_mask); | 17 | "nommu_%s: overflow %Lx+%lu of device mask %Lx\n", |
18 | name, (long long)bus, size, (long long)*hwdev->dma_mask); | ||
18 | return 0; | 19 | return 0; |
19 | } | 20 | } |
20 | return 1; | 21 | return 1; |
diff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.c index 6b87268c5c2e..cea335e8746c 100644 --- a/arch/x86_64/kernel/traps.c +++ b/arch/x86_64/kernel/traps.c | |||
@@ -102,6 +102,8 @@ static inline void preempt_conditional_cli(struct pt_regs *regs) | |||
102 | { | 102 | { |
103 | if (regs->eflags & X86_EFLAGS_IF) | 103 | if (regs->eflags & X86_EFLAGS_IF) |
104 | local_irq_disable(); | 104 | local_irq_disable(); |
105 | /* Make sure to not schedule here because we could be running | ||
106 | on an exception stack. */ | ||
105 | preempt_enable_no_resched(); | 107 | preempt_enable_no_resched(); |
106 | } | 108 | } |
107 | 109 | ||
@@ -483,8 +485,6 @@ static void __kprobes do_trap(int trapnr, int signr, char *str, | |||
483 | { | 485 | { |
484 | struct task_struct *tsk = current; | 486 | struct task_struct *tsk = current; |
485 | 487 | ||
486 | conditional_sti(regs); | ||
487 | |||
488 | tsk->thread.error_code = error_code; | 488 | tsk->thread.error_code = error_code; |
489 | tsk->thread.trap_no = trapnr; | 489 | tsk->thread.trap_no = trapnr; |
490 | 490 | ||
@@ -521,6 +521,7 @@ asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ | |||
521 | if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \ | 521 | if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \ |
522 | == NOTIFY_STOP) \ | 522 | == NOTIFY_STOP) \ |
523 | return; \ | 523 | return; \ |
524 | conditional_sti(regs); \ | ||
524 | do_trap(trapnr, signr, str, regs, error_code, NULL); \ | 525 | do_trap(trapnr, signr, str, regs, error_code, NULL); \ |
525 | } | 526 | } |
526 | 527 | ||
@@ -535,6 +536,7 @@ asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ | |||
535 | if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \ | 536 | if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) \ |
536 | == NOTIFY_STOP) \ | 537 | == NOTIFY_STOP) \ |
537 | return; \ | 538 | return; \ |
539 | conditional_sti(regs); \ | ||
538 | do_trap(trapnr, signr, str, regs, error_code, &info); \ | 540 | do_trap(trapnr, signr, str, regs, error_code, &info); \ |
539 | } | 541 | } |
540 | 542 | ||
@@ -548,7 +550,17 @@ DO_ERROR(10, SIGSEGV, "invalid TSS", invalid_TSS) | |||
548 | DO_ERROR(11, SIGBUS, "segment not present", segment_not_present) | 550 | DO_ERROR(11, SIGBUS, "segment not present", segment_not_present) |
549 | DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0) | 551 | DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0) |
550 | DO_ERROR(18, SIGSEGV, "reserved", reserved) | 552 | DO_ERROR(18, SIGSEGV, "reserved", reserved) |
551 | DO_ERROR(12, SIGBUS, "stack segment", stack_segment) | 553 | |
554 | /* Runs on IST stack */ | ||
555 | asmlinkage void do_stack_segment(struct pt_regs *regs, long error_code) | ||
556 | { | ||
557 | if (notify_die(DIE_TRAP, "stack segment", regs, error_code, | ||
558 | 12, SIGBUS) == NOTIFY_STOP) | ||
559 | return; | ||
560 | preempt_conditional_sti(regs); | ||
561 | do_trap(12, SIGBUS, "stack segment", regs, error_code, NULL); | ||
562 | preempt_conditional_cli(regs); | ||
563 | } | ||
552 | 564 | ||
553 | asmlinkage void do_double_fault(struct pt_regs * regs, long error_code) | 565 | asmlinkage void do_double_fault(struct pt_regs * regs, long error_code) |
554 | { | 566 | { |
@@ -682,8 +694,9 @@ asmlinkage void __kprobes do_int3(struct pt_regs * regs, long error_code) | |||
682 | if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP) == NOTIFY_STOP) { | 694 | if (notify_die(DIE_INT3, "int3", regs, error_code, 3, SIGTRAP) == NOTIFY_STOP) { |
683 | return; | 695 | return; |
684 | } | 696 | } |
697 | preempt_conditional_sti(regs); | ||
685 | do_trap(3, SIGTRAP, "int3", regs, error_code, NULL); | 698 | do_trap(3, SIGTRAP, "int3", regs, error_code, NULL); |
686 | return; | 699 | preempt_conditional_cli(regs); |
687 | } | 700 | } |
688 | 701 | ||
689 | /* Help handler running on IST stack to switch back to user stack | 702 | /* Help handler running on IST stack to switch back to user stack |
diff --git a/arch/x86_64/mm/srat.c b/arch/x86_64/mm/srat.c index 15ae9fcd65a7..e1513532df29 100644 --- a/arch/x86_64/mm/srat.c +++ b/arch/x86_64/mm/srat.c | |||
@@ -34,7 +34,10 @@ static nodemask_t nodes_found __initdata; | |||
34 | static struct bootnode nodes[MAX_NUMNODES] __initdata; | 34 | static struct bootnode nodes[MAX_NUMNODES] __initdata; |
35 | static struct bootnode nodes_add[MAX_NUMNODES] __initdata; | 35 | static struct bootnode nodes_add[MAX_NUMNODES] __initdata; |
36 | static int found_add_area __initdata; | 36 | static int found_add_area __initdata; |
37 | int hotadd_percent __initdata = 10; | 37 | int hotadd_percent __initdata = 0; |
38 | #ifndef RESERVE_HOTADD | ||
39 | #define hotadd_percent 0 /* Ignore all settings */ | ||
40 | #endif | ||
38 | static u8 pxm2node[256] = { [0 ... 255] = 0xff }; | 41 | static u8 pxm2node[256] = { [0 ... 255] = 0xff }; |
39 | 42 | ||
40 | /* Too small nodes confuse the VM badly. Usually they result | 43 | /* Too small nodes confuse the VM badly. Usually they result |
@@ -103,6 +106,7 @@ static __init void bad_srat(void) | |||
103 | int i; | 106 | int i; |
104 | printk(KERN_ERR "SRAT: SRAT not used.\n"); | 107 | printk(KERN_ERR "SRAT: SRAT not used.\n"); |
105 | acpi_numa = -1; | 108 | acpi_numa = -1; |
109 | found_add_area = 0; | ||
106 | for (i = 0; i < MAX_LOCAL_APIC; i++) | 110 | for (i = 0; i < MAX_LOCAL_APIC; i++) |
107 | apicid_to_node[i] = NUMA_NO_NODE; | 111 | apicid_to_node[i] = NUMA_NO_NODE; |
108 | for (i = 0; i < MAX_NUMNODES; i++) | 112 | for (i = 0; i < MAX_NUMNODES; i++) |
@@ -154,7 +158,8 @@ acpi_numa_processor_affinity_init(struct acpi_table_processor_affinity *pa) | |||
154 | int pxm, node; | 158 | int pxm, node; |
155 | if (srat_disabled()) | 159 | if (srat_disabled()) |
156 | return; | 160 | return; |
157 | if (pa->header.length != sizeof(struct acpi_table_processor_affinity)) { bad_srat(); | 161 | if (pa->header.length != sizeof(struct acpi_table_processor_affinity)) { |
162 | bad_srat(); | ||
158 | return; | 163 | return; |
159 | } | 164 | } |
160 | if (pa->flags.enabled == 0) | 165 | if (pa->flags.enabled == 0) |
@@ -191,15 +196,17 @@ static int hotadd_enough_memory(struct bootnode *nd) | |||
191 | allowed = (end_pfn - e820_hole_size(0, end_pfn)) * PAGE_SIZE; | 196 | allowed = (end_pfn - e820_hole_size(0, end_pfn)) * PAGE_SIZE; |
192 | allowed = (allowed / 100) * hotadd_percent; | 197 | allowed = (allowed / 100) * hotadd_percent; |
193 | if (allocated + mem > allowed) { | 198 | if (allocated + mem > allowed) { |
199 | unsigned long range; | ||
194 | /* Give them at least part of their hotadd memory upto hotadd_percent | 200 | /* Give them at least part of their hotadd memory upto hotadd_percent |
195 | It would be better to spread the limit out | 201 | It would be better to spread the limit out |
196 | over multiple hotplug areas, but that is too complicated | 202 | over multiple hotplug areas, but that is too complicated |
197 | right now */ | 203 | right now */ |
198 | if (allocated >= allowed) | 204 | if (allocated >= allowed) |
199 | return 0; | 205 | return 0; |
200 | pages = (allowed - allocated + mem) / sizeof(struct page); | 206 | range = allowed - allocated; |
207 | pages = (range / PAGE_SIZE); | ||
201 | mem = pages * sizeof(struct page); | 208 | mem = pages * sizeof(struct page); |
202 | nd->end = nd->start + pages*PAGE_SIZE; | 209 | nd->end = nd->start + range; |
203 | } | 210 | } |
204 | /* Not completely fool proof, but a good sanity check */ | 211 | /* Not completely fool proof, but a good sanity check */ |
205 | addr = find_e820_area(last_area_end, end_pfn<<PAGE_SHIFT, mem); | 212 | addr = find_e820_area(last_area_end, end_pfn<<PAGE_SHIFT, mem); |