aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/ia64/Makefile2
-rw-r--r--arch/ia64/hp/sim/boot/Makefile2
-rw-r--r--arch/ia64/hp/sim/boot/bootloader.lds3
-rw-r--r--arch/ia64/kernel/acpi.c2
-rw-r--r--arch/ia64/kernel/efi.c10
-rw-r--r--arch/ia64/kernel/gate.lds.S2
-rw-r--r--arch/ia64/kernel/ia64_ksyms.c3
-rw-r--r--arch/ia64/kernel/iosapic.c21
-rw-r--r--arch/ia64/kernel/kprobes.c29
-rw-r--r--arch/ia64/kernel/setup.c3
-rw-r--r--arch/ia64/kernel/signal.c8
-rw-r--r--arch/ia64/kernel/vmlinux.lds.S3
-rw-r--r--arch/ia64/lib/Makefile4
-rw-r--r--arch/ia64/mm/tlb.c2
-rw-r--r--[-rwxr-xr-x]arch/ia64/scripts/unwcheck.py0
-rw-r--r--arch/ia64/sn/kernel/io_common.c13
-rw-r--r--arch/mips/au1000/Kconfig9
-rw-r--r--arch/mips/au1000/common/pci.c8
-rw-r--r--arch/mips/au1000/common/setup.c9
-rw-r--r--arch/mips/cobalt/time.c21
-rw-r--r--arch/mips/configs/bigsur_defconfig9
-rw-r--r--arch/mips/configs/malta_defconfig8
-rw-r--r--arch/mips/kernel/process.c3
-rw-r--r--arch/mips/kernel/time.c4
-rw-r--r--arch/mips/kernel/traps.c6
-rw-r--r--arch/mips/mips-boards/generic/display.c4
-rw-r--r--arch/mips/mips-boards/generic/memory.c2
-rw-r--r--arch/mips/pci/pci.c2
-rw-r--r--arch/mips/qemu/q-irq.c2
-rw-r--r--arch/powerpc/configs/mpc8272_ads_defconfig6
-rw-r--r--arch/powerpc/configs/pq2fads_defconfig6
-rw-r--r--arch/powerpc/configs/ps3_defconfig2
-rw-r--r--arch/powerpc/kernel/ppc_ksyms.c12
-rw-r--r--arch/powerpc/math-emu/op-2.h3
-rw-r--r--arch/powerpc/platforms/chrp/pci.c21
-rw-r--r--arch/powerpc/platforms/iseries/lpevents.c17
-rw-r--r--arch/powerpc/platforms/powermac/pci.c11
-rw-r--r--arch/powerpc/platforms/ps3/Kconfig2
-rw-r--r--arch/powerpc/sysdev/cpm2_common.c3
-rw-r--r--arch/sparc64/kernel/entry.S12
-rw-r--r--arch/sparc64/kernel/smp.c19
-rw-r--r--arch/sparc64/mm/init.c29
-rw-r--r--arch/um/drivers/net_kern.c2
-rw-r--r--arch/x86/xen/enlighten.c2
-rw-r--r--arch/xtensa/platform-iss/network.c4
45 files changed, 211 insertions, 134 deletions
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile
index 34951aa2370b..b916ccfdef84 100644
--- a/arch/ia64/Makefile
+++ b/arch/ia64/Makefile
@@ -77,7 +77,7 @@ vmlinux.gz: vmlinux
77 $(Q)$(MAKE) $(build)=$(boot) $@ 77 $(Q)$(MAKE) $(build)=$(boot) $@
78 78
79unwcheck: vmlinux 79unwcheck: vmlinux
80 -$(Q)READELF=$(READELF) $(srctree)/arch/ia64/scripts/unwcheck.py $< 80 -$(Q)READELF=$(READELF) python $(srctree)/arch/ia64/scripts/unwcheck.py $<
81 81
82archclean: 82archclean:
83 $(Q)$(MAKE) $(clean)=$(boot) 83 $(Q)$(MAKE) $(clean)=$(boot)
diff --git a/arch/ia64/hp/sim/boot/Makefile b/arch/ia64/hp/sim/boot/Makefile
index df6e9968c845..2e805e0cc560 100644
--- a/arch/ia64/hp/sim/boot/Makefile
+++ b/arch/ia64/hp/sim/boot/Makefile
@@ -33,5 +33,5 @@ $(obj)/vmlinux.bin: vmlinux FORCE
33LDFLAGS_bootloader = -static -T 33LDFLAGS_bootloader = -static -T
34 34
35$(obj)/bootloader: $(src)/bootloader.lds $(obj)/bootloader.o $(obj)/boot_head.o $(obj)/fw-emu.o \ 35$(obj)/bootloader: $(src)/bootloader.lds $(obj)/bootloader.o $(obj)/boot_head.o $(obj)/fw-emu.o \
36 lib/lib.a arch/ia64/lib/lib.a FORCE 36 lib/lib.a arch/ia64/lib/built-in.o arch/ia64/lib/lib.a FORCE
37 $(call if_changed,ld) 37 $(call if_changed,ld)
diff --git a/arch/ia64/hp/sim/boot/bootloader.lds b/arch/ia64/hp/sim/boot/bootloader.lds
index 69ae58531033..3977f25a1265 100644
--- a/arch/ia64/hp/sim/boot/bootloader.lds
+++ b/arch/ia64/hp/sim/boot/bootloader.lds
@@ -22,10 +22,11 @@ SECTIONS
22 .sdata : { *(.sdata) } 22 .sdata : { *(.sdata) }
23 _edata = .; 23 _edata = .;
24 24
25 _bss = .; 25 __bss_start = .;
26 .sbss : { *(.sbss) *(.scommon) } 26 .sbss : { *(.sbss) *(.scommon) }
27 .bss : { *(.bss) *(COMMON) } 27 .bss : { *(.bss) *(COMMON) }
28 . = ALIGN(64 / 8); 28 . = ALIGN(64 / 8);
29 __bss_stop = .;
29 _end = . ; 30 _end = . ;
30 31
31 /* Stabs debugging sections. */ 32 /* Stabs debugging sections. */
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index 897e2083a3b1..00b5d08f6da8 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -860,7 +860,7 @@ int acpi_map_lsapic(acpi_handle handle, int *pcpu)
860 lsapic = (struct acpi_madt_local_sapic *)obj->buffer.pointer; 860 lsapic = (struct acpi_madt_local_sapic *)obj->buffer.pointer;
861 861
862 if ((lsapic->header.type != ACPI_MADT_TYPE_LOCAL_SAPIC) || 862 if ((lsapic->header.type != ACPI_MADT_TYPE_LOCAL_SAPIC) ||
863 (!lsapic->lapic_flags & ACPI_MADT_ENABLED)) { 863 (!(lsapic->lapic_flags & ACPI_MADT_ENABLED))) {
864 kfree(buffer.pointer); 864 kfree(buffer.pointer);
865 return -EINVAL; 865 return -EINVAL;
866 } 866 }
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index 8e8f8b6193ee..242d79341120 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -370,7 +370,7 @@ efi_get_pal_addr (void)
370 continue; 370 continue;
371 } 371 }
372 372
373 if (md->num_pages << EFI_PAGE_SHIFT > IA64_GRANULE_SIZE) 373 if (efi_md_size(md) > IA64_GRANULE_SIZE)
374 panic("Woah! PAL code size bigger than a granule!"); 374 panic("Woah! PAL code size bigger than a granule!");
375 375
376#if EFI_DEBUG 376#if EFI_DEBUG
@@ -378,7 +378,7 @@ efi_get_pal_addr (void)
378 378
379 printk(KERN_INFO "CPU %d: mapping PAL code [0x%lx-0x%lx) into [0x%lx-0x%lx)\n", 379 printk(KERN_INFO "CPU %d: mapping PAL code [0x%lx-0x%lx) into [0x%lx-0x%lx)\n",
380 smp_processor_id(), md->phys_addr, 380 smp_processor_id(), md->phys_addr,
381 md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT), 381 md->phys_addr + efi_md_size(md),
382 vaddr & mask, (vaddr & mask) + IA64_GRANULE_SIZE); 382 vaddr & mask, (vaddr & mask) + IA64_GRANULE_SIZE);
383#endif 383#endif
384 return __va(md->phys_addr); 384 return __va(md->phys_addr);
@@ -523,7 +523,7 @@ efi_init (void)
523 md = p; 523 md = p;
524 printk("mem%02u: type=%u, attr=0x%lx, range=[0x%016lx-0x%016lx) (%luMB)\n", 524 printk("mem%02u: type=%u, attr=0x%lx, range=[0x%016lx-0x%016lx) (%luMB)\n",
525 i, md->type, md->attribute, md->phys_addr, 525 i, md->type, md->attribute, md->phys_addr,
526 md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT), 526 md->phys_addr + efi_md_size(md),
527 md->num_pages >> (20 - EFI_PAGE_SHIFT)); 527 md->num_pages >> (20 - EFI_PAGE_SHIFT));
528 } 528 }
529 } 529 }
@@ -656,7 +656,7 @@ efi_memory_descriptor (unsigned long phys_addr)
656 for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) { 656 for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) {
657 md = p; 657 md = p;
658 658
659 if (phys_addr - md->phys_addr < (md->num_pages << EFI_PAGE_SHIFT)) 659 if (phys_addr - md->phys_addr < efi_md_size(md))
660 return md; 660 return md;
661 } 661 }
662 return NULL; 662 return NULL;
@@ -1158,7 +1158,7 @@ efi_initialize_iomem_resources(struct resource *code_resource,
1158 1158
1159 res->name = name; 1159 res->name = name;
1160 res->start = md->phys_addr; 1160 res->start = md->phys_addr;
1161 res->end = md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) - 1; 1161 res->end = md->phys_addr + efi_md_size(md) - 1;
1162 res->flags = flags; 1162 res->flags = flags;
1163 1163
1164 if (insert_resource(&iomem_resource, res) < 0) 1164 if (insert_resource(&iomem_resource, res) < 0)
diff --git a/arch/ia64/kernel/gate.lds.S b/arch/ia64/kernel/gate.lds.S
index 454d7a7dfa9d..3cb1abc00e24 100644
--- a/arch/ia64/kernel/gate.lds.S
+++ b/arch/ia64/kernel/gate.lds.S
@@ -30,7 +30,7 @@ SECTIONS
30 * the dynamic symbol table et al. If this amount is insufficient, 30 * the dynamic symbol table et al. If this amount is insufficient,
31 * ld -shared will barf. Just increase it here. 31 * ld -shared will barf. Just increase it here.
32 */ 32 */
33 . = GATE_ADDR + 0x500; 33 . = GATE_ADDR + 0x600;
34 34
35 .data.patch : { 35 .data.patch : {
36 __start_gate_mckinley_e9_patchlist = .; 36 __start_gate_mckinley_e9_patchlist = .;
diff --git a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c
index bd17190bebb6..c3b4412ccc67 100644
--- a/arch/ia64/kernel/ia64_ksyms.c
+++ b/arch/ia64/kernel/ia64_ksyms.c
@@ -63,6 +63,9 @@ EXPORT_SYMBOL(__udivdi3);
63EXPORT_SYMBOL(__moddi3); 63EXPORT_SYMBOL(__moddi3);
64EXPORT_SYMBOL(__umoddi3); 64EXPORT_SYMBOL(__umoddi3);
65 65
66#include <asm/page.h>
67EXPORT_SYMBOL(copy_page);
68
66#if defined(CONFIG_MD_RAID456) || defined(CONFIG_MD_RAID456_MODULE) 69#if defined(CONFIG_MD_RAID456) || defined(CONFIG_MD_RAID456_MODULE)
67extern void xor_ia64_2(void); 70extern void xor_ia64_2(void);
68extern void xor_ia64_3(void); 71extern void xor_ia64_3(void);
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c
index 274a59383043..398e2fd1cd25 100644
--- a/arch/ia64/kernel/iosapic.c
+++ b/arch/ia64/kernel/iosapic.c
@@ -199,19 +199,6 @@ static inline int __gsi_to_irq(unsigned int gsi)
199 return -1; 199 return -1;
200} 200}
201 201
202/*
203 * Translate GSI number to the corresponding IA-64 interrupt vector. If no
204 * entry exists, return -1.
205 */
206inline int
207gsi_to_vector (unsigned int gsi)
208{
209 int irq = __gsi_to_irq(gsi);
210 if (check_irq_used(irq) < 0)
211 return -1;
212 return irq_to_vector(irq);
213}
214
215int 202int
216gsi_to_irq (unsigned int gsi) 203gsi_to_irq (unsigned int gsi)
217{ 204{
@@ -429,7 +416,7 @@ iosapic_end_level_irq (unsigned int irq)
429#define iosapic_disable_level_irq mask_irq 416#define iosapic_disable_level_irq mask_irq
430#define iosapic_ack_level_irq nop 417#define iosapic_ack_level_irq nop
431 418
432struct irq_chip irq_type_iosapic_level = { 419static struct irq_chip irq_type_iosapic_level = {
433 .name = "IO-SAPIC-level", 420 .name = "IO-SAPIC-level",
434 .startup = iosapic_startup_level_irq, 421 .startup = iosapic_startup_level_irq,
435 .shutdown = iosapic_shutdown_level_irq, 422 .shutdown = iosapic_shutdown_level_irq,
@@ -478,7 +465,7 @@ iosapic_ack_edge_irq (unsigned int irq)
478#define iosapic_disable_edge_irq nop 465#define iosapic_disable_edge_irq nop
479#define iosapic_end_edge_irq nop 466#define iosapic_end_edge_irq nop
480 467
481struct irq_chip irq_type_iosapic_edge = { 468static struct irq_chip irq_type_iosapic_edge = {
482 .name = "IO-SAPIC-edge", 469 .name = "IO-SAPIC-edge",
483 .startup = iosapic_startup_edge_irq, 470 .startup = iosapic_startup_edge_irq,
484 .shutdown = iosapic_disable_edge_irq, 471 .shutdown = iosapic_disable_edge_irq,
@@ -491,7 +478,7 @@ struct irq_chip irq_type_iosapic_edge = {
491 .set_affinity = iosapic_set_affinity 478 .set_affinity = iosapic_set_affinity
492}; 479};
493 480
494unsigned int 481static unsigned int
495iosapic_version (char __iomem *addr) 482iosapic_version (char __iomem *addr)
496{ 483{
497 /* 484 /*
@@ -938,7 +925,7 @@ iosapic_register_platform_intr (u32 int_type, unsigned int gsi,
938 case ACPI_INTERRUPT_CPEI: 925 case ACPI_INTERRUPT_CPEI:
939 irq = vector = IA64_CPE_VECTOR; 926 irq = vector = IA64_CPE_VECTOR;
940 BUG_ON(bind_irq_vector(irq, vector, CPU_MASK_ALL)); 927 BUG_ON(bind_irq_vector(irq, vector, CPU_MASK_ALL));
941 delivery = IOSAPIC_LOWEST_PRIORITY; 928 delivery = IOSAPIC_FIXED;
942 mask = 1; 929 mask = 1;
943 break; 930 break;
944 default: 931 default:
diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c
index 5fd65d8302c8..fc4d2676264f 100644
--- a/arch/ia64/kernel/kprobes.c
+++ b/arch/ia64/kernel/kprobes.c
@@ -182,8 +182,8 @@ static int __kprobes unsupported_inst(uint template, uint slot,
182 qp = kprobe_inst & 0x3f; 182 qp = kprobe_inst & 0x3f;
183 if (is_cmp_ctype_unc_inst(template, slot, major_opcode, kprobe_inst)) { 183 if (is_cmp_ctype_unc_inst(template, slot, major_opcode, kprobe_inst)) {
184 if (slot == 1 && qp) { 184 if (slot == 1 && qp) {
185 printk(KERN_WARNING "Kprobes on cmp unc" 185 printk(KERN_WARNING "Kprobes on cmp unc "
186 "instruction on slot 1 at <0x%lx>" 186 "instruction on slot 1 at <0x%lx> "
187 "is not supported\n", addr); 187 "is not supported\n", addr);
188 return -EINVAL; 188 return -EINVAL;
189 189
@@ -221,8 +221,8 @@ static int __kprobes unsupported_inst(uint template, uint slot,
221 * bit 12 to be equal to 1 221 * bit 12 to be equal to 1
222 */ 222 */
223 if (slot == 1 && qp) { 223 if (slot == 1 && qp) {
224 printk(KERN_WARNING "Kprobes on test bit" 224 printk(KERN_WARNING "Kprobes on test bit "
225 "instruction on slot at <0x%lx>" 225 "instruction on slot at <0x%lx> "
226 "is not supported\n", addr); 226 "is not supported\n", addr);
227 return -EINVAL; 227 return -EINVAL;
228 } 228 }
@@ -242,7 +242,7 @@ static int __kprobes unsupported_inst(uint template, uint slot,
242 */ 242 */
243 int x6=(kprobe_inst >> 27) & 0x3F; 243 int x6=(kprobe_inst >> 27) & 0x3F;
244 if ((x6 == 0x10) || (x6 == 0x11)) { 244 if ((x6 == 0x10) || (x6 == 0x11)) {
245 printk(KERN_WARNING "Kprobes on" 245 printk(KERN_WARNING "Kprobes on "
246 "Indirect Predict is not supported\n"); 246 "Indirect Predict is not supported\n");
247 return -EINVAL; 247 return -EINVAL;
248 } 248 }
@@ -435,6 +435,23 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
435 /* another task is sharing our hash bucket */ 435 /* another task is sharing our hash bucket */
436 continue; 436 continue;
437 437
438 orig_ret_address = (unsigned long)ri->ret_addr;
439 if (orig_ret_address != trampoline_address)
440 /*
441 * This is the real return address. Any other
442 * instances associated with this task are for
443 * other calls deeper on the call stack
444 */
445 break;
446 }
447
448 regs->cr_iip = orig_ret_address;
449
450 hlist_for_each_entry_safe(ri, node, tmp, head, hlist) {
451 if (ri->task != current)
452 /* another task is sharing our hash bucket */
453 continue;
454
438 if (ri->rp && ri->rp->handler) 455 if (ri->rp && ri->rp->handler)
439 ri->rp->handler(ri, regs); 456 ri->rp->handler(ri, regs);
440 457
@@ -452,8 +469,6 @@ int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
452 469
453 kretprobe_assert(ri, orig_ret_address, trampoline_address); 470 kretprobe_assert(ri, orig_ret_address, trampoline_address);
454 471
455 regs->cr_iip = orig_ret_address;
456
457 reset_current_kprobe(); 472 reset_current_kprobe();
458 spin_unlock_irqrestore(&kretprobe_lock, flags); 473 spin_unlock_irqrestore(&kretprobe_lock, flags);
459 preempt_enable_no_resched(); 474 preempt_enable_no_resched();
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index 2b3751eef5ce..4ac2b1f1bd3b 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -95,7 +95,6 @@ static struct resource bss_resource = {
95 .name = "Kernel bss", 95 .name = "Kernel bss",
96 .flags = IORESOURCE_BUSY | IORESOURCE_MEM 96 .flags = IORESOURCE_BUSY | IORESOURCE_MEM
97}; 97};
98extern char _text[], _end[], _etext[], _edata[], _bss[];
99 98
100unsigned long ia64_max_cacheline_size; 99unsigned long ia64_max_cacheline_size;
101 100
@@ -206,7 +205,7 @@ static int __init register_memory(void)
206 code_resource.end = ia64_tpa(_etext) - 1; 205 code_resource.end = ia64_tpa(_etext) - 1;
207 data_resource.start = ia64_tpa(_etext); 206 data_resource.start = ia64_tpa(_etext);
208 data_resource.end = ia64_tpa(_edata) - 1; 207 data_resource.end = ia64_tpa(_edata) - 1;
209 bss_resource.start = ia64_tpa(_bss); 208 bss_resource.start = ia64_tpa(__bss_start);
210 bss_resource.end = ia64_tpa(_end) - 1; 209 bss_resource.end = ia64_tpa(_end) - 1;
211 efi_initialize_iomem_resources(&code_resource, &data_resource, 210 efi_initialize_iomem_resources(&code_resource, &data_resource,
212 &bss_resource); 211 &bss_resource);
diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c
index cdb64cc4d9c8..4c730099d58f 100644
--- a/arch/ia64/kernel/signal.c
+++ b/arch/ia64/kernel/signal.c
@@ -98,7 +98,7 @@ restore_sigcontext (struct sigcontext __user *sc, struct sigscratch *scr)
98 if ((flags & IA64_SC_FLAG_FPH_VALID) != 0) { 98 if ((flags & IA64_SC_FLAG_FPH_VALID) != 0) {
99 struct ia64_psr *psr = ia64_psr(&scr->pt); 99 struct ia64_psr *psr = ia64_psr(&scr->pt);
100 100
101 __copy_from_user(current->thread.fph, &sc->sc_fr[32], 96*16); 101 err |= __copy_from_user(current->thread.fph, &sc->sc_fr[32], 96*16);
102 psr->mfh = 0; /* drop signal handler's fph contents... */ 102 psr->mfh = 0; /* drop signal handler's fph contents... */
103 preempt_disable(); 103 preempt_disable();
104 if (psr->dfh) 104 if (psr->dfh)
@@ -244,7 +244,7 @@ static long
244setup_sigcontext (struct sigcontext __user *sc, sigset_t *mask, struct sigscratch *scr) 244setup_sigcontext (struct sigcontext __user *sc, sigset_t *mask, struct sigscratch *scr)
245{ 245{
246 unsigned long flags = 0, ifs, cfm, nat; 246 unsigned long flags = 0, ifs, cfm, nat;
247 long err; 247 long err = 0;
248 248
249 ifs = scr->pt.cr_ifs; 249 ifs = scr->pt.cr_ifs;
250 250
@@ -257,12 +257,12 @@ setup_sigcontext (struct sigcontext __user *sc, sigset_t *mask, struct sigscratc
257 ia64_flush_fph(current); 257 ia64_flush_fph(current);
258 if ((current->thread.flags & IA64_THREAD_FPH_VALID)) { 258 if ((current->thread.flags & IA64_THREAD_FPH_VALID)) {
259 flags |= IA64_SC_FLAG_FPH_VALID; 259 flags |= IA64_SC_FLAG_FPH_VALID;
260 __copy_to_user(&sc->sc_fr[32], current->thread.fph, 96*16); 260 err = __copy_to_user(&sc->sc_fr[32], current->thread.fph, 96*16);
261 } 261 }
262 262
263 nat = ia64_get_scratch_nat_bits(&scr->pt, scr->scratch_unat); 263 nat = ia64_get_scratch_nat_bits(&scr->pt, scr->scratch_unat);
264 264
265 err = __put_user(flags, &sc->sc_flags); 265 err |= __put_user(flags, &sc->sc_flags);
266 err |= __put_user(nat, &sc->sc_nat); 266 err |= __put_user(nat, &sc->sc_nat);
267 err |= PUT_SIGSET(mask, &sc->sc_mask); 267 err |= PUT_SIGSET(mask, &sc->sc_mask);
268 err |= __put_user(cfm, &sc->sc_cfm); 268 err |= __put_user(cfm, &sc->sc_cfm);
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S
index 00232b4357ba..757e419ebcf8 100644
--- a/arch/ia64/kernel/vmlinux.lds.S
+++ b/arch/ia64/kernel/vmlinux.lds.S
@@ -240,11 +240,12 @@ SECTIONS
240 .sdata : AT(ADDR(.sdata) - LOAD_OFFSET) 240 .sdata : AT(ADDR(.sdata) - LOAD_OFFSET)
241 { *(.sdata) *(.sdata1) *(.srdata) } 241 { *(.sdata) *(.sdata1) *(.srdata) }
242 _edata = .; 242 _edata = .;
243 _bss = .; 243 __bss_start = .;
244 .sbss : AT(ADDR(.sbss) - LOAD_OFFSET) 244 .sbss : AT(ADDR(.sbss) - LOAD_OFFSET)
245 { *(.sbss) *(.scommon) } 245 { *(.sbss) *(.scommon) }
246 .bss : AT(ADDR(.bss) - LOAD_OFFSET) 246 .bss : AT(ADDR(.bss) - LOAD_OFFSET)
247 { *(.bss) *(COMMON) } 247 { *(.bss) *(COMMON) }
248 __bss_stop = .;
248 249
249 _end = .; 250 _end = .;
250 251
diff --git a/arch/ia64/lib/Makefile b/arch/ia64/lib/Makefile
index 46edf8444c7e..98771e2a78af 100644
--- a/arch/ia64/lib/Makefile
+++ b/arch/ia64/lib/Makefile
@@ -11,8 +11,8 @@ lib-y := __divsi3.o __udivsi3.o __modsi3.o __umodsi3.o \
11 flush.o ip_fast_csum.o do_csum.o \ 11 flush.o ip_fast_csum.o do_csum.o \
12 memset.o strlen.o xor.o 12 memset.o strlen.o xor.o
13 13
14lib-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o 14obj-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o
15lib-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o 15obj-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o
16lib-$(CONFIG_PERFMON) += carta_random.o 16lib-$(CONFIG_PERFMON) += carta_random.o
17 17
18AFLAGS___divdi3.o = 18AFLAGS___divdi3.o =
diff --git a/arch/ia64/mm/tlb.c b/arch/ia64/mm/tlb.c
index 1682fc639038..cef164729db7 100644
--- a/arch/ia64/mm/tlb.c
+++ b/arch/ia64/mm/tlb.c
@@ -180,7 +180,7 @@ ia64_tlb_init (void)
180 long status; 180 long status;
181 181
182 if ((status = ia64_pal_vm_page_size(&tr_pgbits, &purge.mask)) != 0) { 182 if ((status = ia64_pal_vm_page_size(&tr_pgbits, &purge.mask)) != 0) {
183 printk(KERN_ERR "PAL_VM_PAGE_SIZE failed with status=%ld;" 183 printk(KERN_ERR "PAL_VM_PAGE_SIZE failed with status=%ld; "
184 "defaulting to architected purge page-sizes.\n", status); 184 "defaulting to architected purge page-sizes.\n", status);
185 purge.mask = 0x115557000UL; 185 purge.mask = 0x115557000UL;
186 } 186 }
diff --git a/arch/ia64/scripts/unwcheck.py b/arch/ia64/scripts/unwcheck.py
index c27849889e19..c27849889e19 100755..100644
--- a/arch/ia64/scripts/unwcheck.py
+++ b/arch/ia64/scripts/unwcheck.py
diff --git a/arch/ia64/sn/kernel/io_common.c b/arch/ia64/sn/kernel/io_common.c
index 4594770e685a..c4eb84f9e781 100644
--- a/arch/ia64/sn/kernel/io_common.c
+++ b/arch/ia64/sn/kernel/io_common.c
@@ -347,7 +347,7 @@ sn_common_bus_fixup(struct pci_bus *bus,
347 if (controller->node >= num_online_nodes()) { 347 if (controller->node >= num_online_nodes()) {
348 struct pcibus_bussoft *b = SN_PCIBUS_BUSSOFT(bus); 348 struct pcibus_bussoft *b = SN_PCIBUS_BUSSOFT(bus);
349 349
350 printk(KERN_WARNING "Device ASIC=%u XID=%u PBUSNUM=%u" 350 printk(KERN_WARNING "Device ASIC=%u XID=%u PBUSNUM=%u "
351 "L_IO=%lx L_MEM=%lx BASE=%lx\n", 351 "L_IO=%lx L_MEM=%lx BASE=%lx\n",
352 b->bs_asic_type, b->bs_xid, b->bs_persist_busnum, 352 b->bs_asic_type, b->bs_xid, b->bs_persist_busnum,
353 b->bs_legacy_io, b->bs_legacy_mem, b->bs_base); 353 b->bs_legacy_io, b->bs_legacy_mem, b->bs_base);
@@ -545,19 +545,18 @@ sn_io_late_init(void)
545 nasid = NASID_GET(bussoft->bs_base); 545 nasid = NASID_GET(bussoft->bs_base);
546 cnode = nasid_to_cnodeid(nasid); 546 cnode = nasid_to_cnodeid(nasid);
547 if ((bussoft->bs_asic_type == PCIIO_ASIC_TYPE_TIOCP) || 547 if ((bussoft->bs_asic_type == PCIIO_ASIC_TYPE_TIOCP) ||
548 (bussoft->bs_asic_type == PCIIO_ASIC_TYPE_TIOCE)) { 548 (bussoft->bs_asic_type == PCIIO_ASIC_TYPE_TIOCE) ||
549 /* TIO PCI Bridge: find nearest node with CPUs */ 549 (bussoft->bs_asic_type == PCIIO_ASIC_TYPE_PIC)) {
550 /* PCI Bridge: find nearest node with CPUs */
550 int e = sn_hwperf_get_nearest_node(cnode, NULL, 551 int e = sn_hwperf_get_nearest_node(cnode, NULL,
551 &near_cnode); 552 &near_cnode);
552 if (e < 0) { 553 if (e < 0) {
553 near_cnode = (cnodeid_t)-1; /* use any node */ 554 near_cnode = (cnodeid_t)-1; /* use any node */
554 printk(KERN_WARNING "pcibr_bus_fixup: failed " 555 printk(KERN_WARNING "sn_io_late_init: failed "
555 "to find near node with CPUs to TIO " 556 "to find near node with CPUs for "
556 "node %d, err=%d\n", cnode, e); 557 "node %d, err=%d\n", cnode, e);
557 } 558 }
558 PCI_CONTROLLER(bus)->node = near_cnode; 559 PCI_CONTROLLER(bus)->node = near_cnode;
559 } else if (bussoft->bs_asic_type == PCIIO_ASIC_TYPE_PIC) {
560 PCI_CONTROLLER(bus)->node = cnode;
561 } 560 }
562 } 561 }
563 562
diff --git a/arch/mips/au1000/Kconfig b/arch/mips/au1000/Kconfig
index 05d1354aad3a..1fe97cccead1 100644
--- a/arch/mips/au1000/Kconfig
+++ b/arch/mips/au1000/Kconfig
@@ -7,7 +7,6 @@ config MIPS_MTX1
7 bool "4G Systems MTX-1 board" 7 bool "4G Systems MTX-1 board"
8 select DMA_NONCOHERENT 8 select DMA_NONCOHERENT
9 select HW_HAS_PCI 9 select HW_HAS_PCI
10 select RESOURCES_64BIT if PCI
11 select SOC_AU1500 10 select SOC_AU1500
12 select SYS_SUPPORTS_LITTLE_ENDIAN 11 select SYS_SUPPORTS_LITTLE_ENDIAN
13 12
@@ -22,7 +21,6 @@ config MIPS_DB1000
22 select SOC_AU1000 21 select SOC_AU1000
23 select DMA_NONCOHERENT 22 select DMA_NONCOHERENT
24 select HW_HAS_PCI 23 select HW_HAS_PCI
25 select RESOURCES_64BIT if PCI
26 select SYS_SUPPORTS_LITTLE_ENDIAN 24 select SYS_SUPPORTS_LITTLE_ENDIAN
27 25
28config MIPS_DB1100 26config MIPS_DB1100
@@ -44,7 +42,6 @@ config MIPS_DB1500
44 select DMA_NONCOHERENT 42 select DMA_NONCOHERENT
45 select HW_HAS_PCI 43 select HW_HAS_PCI
46 select MIPS_DISABLE_OBSOLETE_IDE 44 select MIPS_DISABLE_OBSOLETE_IDE
47 select RESOURCES_64BIT if PCI
48 select SYS_SUPPORTS_BIG_ENDIAN 45 select SYS_SUPPORTS_BIG_ENDIAN
49 select SYS_SUPPORTS_LITTLE_ENDIAN 46 select SYS_SUPPORTS_LITTLE_ENDIAN
50 47
@@ -54,7 +51,6 @@ config MIPS_DB1550
54 select HW_HAS_PCI 51 select HW_HAS_PCI
55 select DMA_NONCOHERENT 52 select DMA_NONCOHERENT
56 select MIPS_DISABLE_OBSOLETE_IDE 53 select MIPS_DISABLE_OBSOLETE_IDE
57 select RESOURCES_64BIT if PCI
58 select SYS_SUPPORTS_LITTLE_ENDIAN 54 select SYS_SUPPORTS_LITTLE_ENDIAN
59 55
60config MIPS_MIRAGE 56config MIPS_MIRAGE
@@ -68,7 +64,6 @@ config MIPS_PB1000
68 select SOC_AU1000 64 select SOC_AU1000
69 select DMA_NONCOHERENT 65 select DMA_NONCOHERENT
70 select HW_HAS_PCI 66 select HW_HAS_PCI
71 select RESOURCES_64BIT if PCI
72 select SWAP_IO_SPACE 67 select SWAP_IO_SPACE
73 select SYS_SUPPORTS_LITTLE_ENDIAN 68 select SYS_SUPPORTS_LITTLE_ENDIAN
74 69
@@ -77,7 +72,6 @@ config MIPS_PB1100
77 select SOC_AU1100 72 select SOC_AU1100
78 select DMA_NONCOHERENT 73 select DMA_NONCOHERENT
79 select HW_HAS_PCI 74 select HW_HAS_PCI
80 select RESOURCES_64BIT if PCI
81 select SWAP_IO_SPACE 75 select SWAP_IO_SPACE
82 select SYS_SUPPORTS_LITTLE_ENDIAN 76 select SYS_SUPPORTS_LITTLE_ENDIAN
83 77
@@ -86,7 +80,6 @@ config MIPS_PB1200
86 select SOC_AU1200 80 select SOC_AU1200
87 select DMA_NONCOHERENT 81 select DMA_NONCOHERENT
88 select MIPS_DISABLE_OBSOLETE_IDE 82 select MIPS_DISABLE_OBSOLETE_IDE
89 select RESOURCES_64BIT if PCI
90 select SYS_SUPPORTS_LITTLE_ENDIAN 83 select SYS_SUPPORTS_LITTLE_ENDIAN
91 84
92config MIPS_PB1500 85config MIPS_PB1500
@@ -94,7 +87,6 @@ config MIPS_PB1500
94 select SOC_AU1500 87 select SOC_AU1500
95 select DMA_NONCOHERENT 88 select DMA_NONCOHERENT
96 select HW_HAS_PCI 89 select HW_HAS_PCI
97 select RESOURCES_64BIT if PCI
98 select SYS_SUPPORTS_LITTLE_ENDIAN 90 select SYS_SUPPORTS_LITTLE_ENDIAN
99 91
100config MIPS_PB1550 92config MIPS_PB1550
@@ -103,7 +95,6 @@ config MIPS_PB1550
103 select DMA_NONCOHERENT 95 select DMA_NONCOHERENT
104 select HW_HAS_PCI 96 select HW_HAS_PCI
105 select MIPS_DISABLE_OBSOLETE_IDE 97 select MIPS_DISABLE_OBSOLETE_IDE
106 select RESOURCES_64BIT if PCI
107 select SYS_SUPPORTS_LITTLE_ENDIAN 98 select SYS_SUPPORTS_LITTLE_ENDIAN
108 99
109config MIPS_XXS1500 100config MIPS_XXS1500
diff --git a/arch/mips/au1000/common/pci.c b/arch/mips/au1000/common/pci.c
index 9be99a68932a..6fa70a36a250 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 */
41static struct resource pci_io_resource = { 41static struct resource pci_io_resource = {
42 .start = (resource_size_t)PCI_IO_START, 42 .start = PCI_IO_START,
43 .end = (resource_size_t)PCI_IO_END, 43 .end = 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
48static struct resource pci_mem_resource = { 48static struct resource pci_mem_resource = {
49 .start = (resource_size_t)PCI_MEM_START, 49 .start = PCI_MEM_START,
50 .end = (resource_size_t)PCI_MEM_END, 50 .end = 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/au1000/common/setup.c b/arch/mips/au1000/common/setup.c
index a90d425d4651..d885e3848ec6 100644
--- a/arch/mips/au1000/common/setup.c
+++ b/arch/mips/au1000/common/setup.c
@@ -137,12 +137,11 @@ phys_t __fixup_bigphys_addr(phys_t phys_addr, phys_t size)
137 137
138#ifdef CONFIG_PCI 138#ifdef CONFIG_PCI
139 { 139 {
140 u32 start, end; 140 u32 start = (u32)Au1500_PCI_MEM_START;
141 u32 end = (u32)Au1500_PCI_MEM_END;
141 142
142 start = (u32)Au1500_PCI_MEM_START; 143 /* Check for PCI memory window */
143 end = (u32)Au1500_PCI_MEM_END; 144 if (phys_addr >= start && (phys_addr + size - 1) <= end)
144 /* check for pci memory window */
145 if ((phys_addr >= start) && ((phys_addr + size) < end))
146 return (phys_t) 145 return (phys_t)
147 ((phys_addr - start) + Au1500_PCI_MEM_START); 146 ((phys_addr - start) + Au1500_PCI_MEM_START);
148 } 147 }
diff --git a/arch/mips/cobalt/time.c b/arch/mips/cobalt/time.c
index fa819fccd5db..4a570e7145fe 100644
--- a/arch/mips/cobalt/time.c
+++ b/arch/mips/cobalt/time.c
@@ -27,9 +27,28 @@
27 27
28void __init plat_time_init(void) 28void __init plat_time_init(void)
29{ 29{
30 u32 start, end;
31 int i = HZ / 10;
32
30 setup_pit_timer(); 33 setup_pit_timer();
31 34
32 gt641xx_set_base_clock(GT641XX_BASE_CLOCK); 35 gt641xx_set_base_clock(GT641XX_BASE_CLOCK);
33 36
34 mips_timer_state = gt641xx_timer0_state; 37 /*
38 * MIPS counter frequency is measured during a 100msec interval
39 * using GT64111 timer0.
40 */
41 while (!gt641xx_timer0_state())
42 ;
43
44 start = read_c0_count();
45
46 while (i--)
47 while (!gt641xx_timer0_state())
48 ;
49
50 end = read_c0_count();
51
52 mips_hpt_frequency = (end - start) * 10;
53 printk(KERN_INFO "MIPS counter frequency %dHz\n", mips_hpt_frequency);
35} 54}
diff --git a/arch/mips/configs/bigsur_defconfig b/arch/mips/configs/bigsur_defconfig
index 80b0c99c2cfb..3c70c9d16d01 100644
--- a/arch/mips/configs/bigsur_defconfig
+++ b/arch/mips/configs/bigsur_defconfig
@@ -76,9 +76,13 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
76CONFIG_GENERIC_FIND_NEXT_BIT=y 76CONFIG_GENERIC_FIND_NEXT_BIT=y
77CONFIG_GENERIC_HWEIGHT=y 77CONFIG_GENERIC_HWEIGHT=y
78CONFIG_GENERIC_CALIBRATE_DELAY=y 78CONFIG_GENERIC_CALIBRATE_DELAY=y
79CONFIG_GENERIC_CLOCKEVENTS=y
79CONFIG_GENERIC_TIME=y 80CONFIG_GENERIC_TIME=y
81CONFIG_GENERIC_CMOS_UPDATE=y
80CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 82CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
81# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set 83# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
84CONFIG_CEVT_BCM1480=y
85CONFIG_CSRC_BCM1480=y
82CONFIG_DMA_COHERENT=y 86CONFIG_DMA_COHERENT=y
83CONFIG_CPU_BIG_ENDIAN=y 87CONFIG_CPU_BIG_ENDIAN=y
84# CONFIG_CPU_LITTLE_ENDIAN is not set 88# CONFIG_CPU_LITTLE_ENDIAN is not set
@@ -91,6 +95,11 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
91# 95#
92# CPU selection 96# CPU selection
93# 97#
98CONFIG_TICK_ONESHOT=y
99CONFIG_NO_HZ=y
100CONFIG_HIGH_RES_TIMERS=y
101CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
102# CONFIG_CPU_LOONGSON2 is not set
94# CONFIG_CPU_MIPS32_R1 is not set 103# CONFIG_CPU_MIPS32_R1 is not set
95# CONFIG_CPU_MIPS32_R2 is not set 104# CONFIG_CPU_MIPS32_R2 is not set
96# CONFIG_CPU_MIPS64_R1 is not set 105# CONFIG_CPU_MIPS64_R1 is not set
diff --git a/arch/mips/configs/malta_defconfig b/arch/mips/configs/malta_defconfig
index fbd2d802fdfd..4b7e43c9f69a 100644
--- a/arch/mips/configs/malta_defconfig
+++ b/arch/mips/configs/malta_defconfig
@@ -49,10 +49,13 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
49CONFIG_GENERIC_FIND_NEXT_BIT=y 49CONFIG_GENERIC_FIND_NEXT_BIT=y
50CONFIG_GENERIC_HWEIGHT=y 50CONFIG_GENERIC_HWEIGHT=y
51CONFIG_GENERIC_CALIBRATE_DELAY=y 51CONFIG_GENERIC_CALIBRATE_DELAY=y
52CONFIG_GENERIC_CLOCKEVENTS=y
52CONFIG_GENERIC_TIME=y 53CONFIG_GENERIC_TIME=y
54CONFIG_GENERIC_CMOS_UPDATE=y
53CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 55CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
54# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set 56# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
55CONFIG_ARCH_MAY_HAVE_PC_FDC=y 57CONFIG_ARCH_MAY_HAVE_PC_FDC=y
58CONFIG_CEVT_R4K=y
56CONFIG_DMA_NONCOHERENT=y 59CONFIG_DMA_NONCOHERENT=y
57CONFIG_DMA_NEED_PCI_MAP_STATE=y 60CONFIG_DMA_NEED_PCI_MAP_STATE=y
58CONFIG_EARLY_PRINTK=y 61CONFIG_EARLY_PRINTK=y
@@ -76,6 +79,10 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
76# 79#
77# CPU selection 80# CPU selection
78# 81#
82CONFIG_TICK_ONESHOT=y
83CONFIG_NO_HZ=y
84CONFIG_HIGH_RES_TIMERS=y
85CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
79# CONFIG_CPU_LOONGSON2 is not set 86# CONFIG_CPU_LOONGSON2 is not set
80# CONFIG_CPU_MIPS32_R1 is not set 87# CONFIG_CPU_MIPS32_R1 is not set
81CONFIG_CPU_MIPS32_R2=y 88CONFIG_CPU_MIPS32_R2=y
@@ -253,6 +260,7 @@ CONFIG_HW_HAS_PCI=y
253CONFIG_PCI=y 260CONFIG_PCI=y
254# CONFIG_ARCH_SUPPORTS_MSI is not set 261# CONFIG_ARCH_SUPPORTS_MSI is not set
255CONFIG_MMU=y 262CONFIG_MMU=y
263CONFIG_I8253=y
256 264
257# 265#
258# PCCARD (PCMCIA/CardBus) support 266# PCCARD (PCMCIA/CardBus) support
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 11cb264f59ce..2c09a442e5e5 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -77,9 +77,8 @@ void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long sp)
77 unsigned long status; 77 unsigned long status;
78 78
79 /* New thread loses kernel privileges. */ 79 /* New thread loses kernel privileges. */
80 status = regs->cp0_status & ~(ST0_CU0|ST0_CU1|KU_MASK); 80 status = regs->cp0_status & ~(ST0_CU0|ST0_CU1|ST0_FR|KU_MASK);
81#ifdef CONFIG_64BIT 81#ifdef CONFIG_64BIT
82 status &= ~ST0_FR;
83 status |= test_thread_flag(TIF_32BIT_REGS) ? 0 : ST0_FR; 82 status |= test_thread_flag(TIF_32BIT_REGS) ? 0 : ST0_FR;
84#endif 83#endif
85 status |= KU_USER; 84 status |= KU_USER;
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c
index 52075426c373..1ecfbb7eba6c 100644
--- a/arch/mips/kernel/time.c
+++ b/arch/mips/kernel/time.c
@@ -109,10 +109,6 @@ void __cpuinit clockevent_set_clock(struct clock_event_device *cd,
109 cd->mult = (u32) temp; 109 cd->mult = (u32) temp;
110} 110}
111 111
112void __init __weak plat_time_init(void)
113{
114}
115
116/* 112/*
117 * This function exists in order to cause an error due to a duplicate 113 * This function exists in order to cause an error due to a duplicate
118 * definition if platform code should have its own implementation. The hook 114 * definition if platform code should have its own implementation. The hook
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 23e73d0650a3..fcae66752972 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -1317,12 +1317,12 @@ void __init per_cpu_trap_init(void)
1317#endif 1317#endif
1318 if (current_cpu_data.isa_level == MIPS_CPU_ISA_IV) 1318 if (current_cpu_data.isa_level == MIPS_CPU_ISA_IV)
1319 status_set |= ST0_XX; 1319 status_set |= ST0_XX;
1320 if (cpu_has_dsp)
1321 status_set |= ST0_MX;
1322
1320 change_c0_status(ST0_CU|ST0_MX|ST0_RE|ST0_FR|ST0_BEV|ST0_TS|ST0_KX|ST0_SX|ST0_UX, 1323 change_c0_status(ST0_CU|ST0_MX|ST0_RE|ST0_FR|ST0_BEV|ST0_TS|ST0_KX|ST0_SX|ST0_UX,
1321 status_set); 1324 status_set);
1322 1325
1323 if (cpu_has_dsp)
1324 set_c0_status(ST0_MX);
1325
1326#ifdef CONFIG_CPU_MIPSR2 1326#ifdef CONFIG_CPU_MIPSR2
1327 if (cpu_has_mips_r2) { 1327 if (cpu_has_mips_r2) {
1328 unsigned int enable = 0x0000000f; 1328 unsigned int enable = 0x0000000f;
diff --git a/arch/mips/mips-boards/generic/display.c b/arch/mips/mips-boards/generic/display.c
index 5d600054090a..2a0057cfc30d 100644
--- a/arch/mips/mips-boards/generic/display.c
+++ b/arch/mips/mips-boards/generic/display.c
@@ -37,9 +37,9 @@ void mips_display_message(const char *str)
37 37
38 for (i = 0; i <= 14; i=i+2) { 38 for (i = 0; i <= 14; i=i+2) {
39 if (*str) 39 if (*str)
40 writel(*str++, display + i); 40 __raw_writel(*str++, display + i);
41 else 41 else
42 writel(' ', display + i); 42 __raw_writel(' ', display + i);
43 } 43 }
44} 44}
45 45
diff --git a/arch/mips/mips-boards/generic/memory.c b/arch/mips/mips-boards/generic/memory.c
index dc272c188233..2c5c27c8e86d 100644
--- a/arch/mips/mips-boards/generic/memory.c
+++ b/arch/mips/mips-boards/generic/memory.c
@@ -169,6 +169,7 @@ void __init prom_meminit(void)
169 169
170void __init prom_free_prom_memory(void) 170void __init prom_free_prom_memory(void)
171{ 171{
172#if 0 /* for now ... */
172 unsigned long addr; 173 unsigned long addr;
173 int i; 174 int i;
174 175
@@ -180,4 +181,5 @@ void __init prom_free_prom_memory(void)
180 free_init_pages("prom memory", 181 free_init_pages("prom memory",
181 addr, addr + boot_mem_map.map[i].size); 182 addr, addr + boot_mem_map.map[i].size);
182 } 183 }
184#endif
183} 185}
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c
index 589b745d822a..6e6981fd7934 100644
--- a/arch/mips/pci/pci.c
+++ b/arch/mips/pci/pci.c
@@ -242,6 +242,8 @@ static void pcibios_fixup_device_resources(struct pci_dev *dev,
242 for (i = 0; i < PCI_NUM_RESOURCES; i++) { 242 for (i = 0; i < PCI_NUM_RESOURCES; i++) {
243 if (!dev->resource[i].start) 243 if (!dev->resource[i].start)
244 continue; 244 continue;
245 if (dev->resource[i].flags & IORESOURCE_PCI_FIXED)
246 continue;
245 if (dev->resource[i].flags & IORESOURCE_IO) 247 if (dev->resource[i].flags & IORESOURCE_IO)
246 offset = hose->io_offset; 248 offset = hose->io_offset;
247 else if (dev->resource[i].flags & IORESOURCE_MEM) 249 else if (dev->resource[i].flags & IORESOURCE_MEM)
diff --git a/arch/mips/qemu/q-irq.c b/arch/mips/qemu/q-irq.c
index 11f984767880..7df36dbe65c7 100644
--- a/arch/mips/qemu/q-irq.c
+++ b/arch/mips/qemu/q-irq.c
@@ -33,5 +33,5 @@ void __init arch_init_irq(void)
33 33
34 mips_cpu_irq_init(); 34 mips_cpu_irq_init();
35 init_i8259_irqs(); 35 init_i8259_irqs();
36 set_c0_status(0x8400); 36 set_c0_status(0x400);
37} 37}
diff --git a/arch/powerpc/configs/mpc8272_ads_defconfig b/arch/powerpc/configs/mpc8272_ads_defconfig
index a31b7a030a6b..5eae305215dc 100644
--- a/arch/powerpc/configs/mpc8272_ads_defconfig
+++ b/arch/powerpc/configs/mpc8272_ads_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.24-rc4 3# Linux kernel version: 2.6.24-rc5
4# Thu Dec 6 16:48:30 2007 4# Thu Dec 13 22:40:57 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -491,7 +491,7 @@ CONFIG_MII=y
491CONFIG_FS_ENET=y 491CONFIG_FS_ENET=y
492# CONFIG_FS_ENET_HAS_SCC is not set 492# CONFIG_FS_ENET_HAS_SCC is not set
493CONFIG_FS_ENET_HAS_FCC=y 493CONFIG_FS_ENET_HAS_FCC=y
494# CONFIG_FS_ENET_MDIO_FCC is not set 494CONFIG_FS_ENET_MDIO_FCC=y
495CONFIG_NETDEV_1000=y 495CONFIG_NETDEV_1000=y
496# CONFIG_ACENIC is not set 496# CONFIG_ACENIC is not set
497# CONFIG_DL2K is not set 497# CONFIG_DL2K is not set
diff --git a/arch/powerpc/configs/pq2fads_defconfig b/arch/powerpc/configs/pq2fads_defconfig
index 142d206d6870..a3bfbb65a933 100644
--- a/arch/powerpc/configs/pq2fads_defconfig
+++ b/arch/powerpc/configs/pq2fads_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.24-rc4 3# Linux kernel version: 2.6.24-rc5
4# Thu Dec 6 16:49:09 2007 4# Thu Dec 13 22:39:18 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -548,7 +548,7 @@ CONFIG_MII=y
548CONFIG_FS_ENET=y 548CONFIG_FS_ENET=y
549# CONFIG_FS_ENET_HAS_SCC is not set 549# CONFIG_FS_ENET_HAS_SCC is not set
550CONFIG_FS_ENET_HAS_FCC=y 550CONFIG_FS_ENET_HAS_FCC=y
551# CONFIG_FS_ENET_MDIO_FCC is not set 551CONFIG_FS_ENET_MDIO_FCC=y
552CONFIG_NETDEV_1000=y 552CONFIG_NETDEV_1000=y
553# CONFIG_ACENIC is not set 553# CONFIG_ACENIC is not set
554# CONFIG_DL2K is not set 554# CONFIG_DL2K is not set
diff --git a/arch/powerpc/configs/ps3_defconfig b/arch/powerpc/configs/ps3_defconfig
index 5bd547ecd60a..0b5469fb6e0f 100644
--- a/arch/powerpc/configs/ps3_defconfig
+++ b/arch/powerpc/configs/ps3_defconfig
@@ -157,7 +157,7 @@ CONFIG_PS3_HTAB_SIZE=20
157CONFIG_PS3_USE_LPAR_ADDR=y 157CONFIG_PS3_USE_LPAR_ADDR=y
158CONFIG_PS3_VUART=y 158CONFIG_PS3_VUART=y
159CONFIG_PS3_PS3AV=y 159CONFIG_PS3_PS3AV=y
160CONFIG_PS3_SYS_MANAGER=m 160CONFIG_PS3_SYS_MANAGER=y
161CONFIG_PS3_STORAGE=y 161CONFIG_PS3_STORAGE=y
162CONFIG_PS3_DISK=y 162CONFIG_PS3_DISK=y
163CONFIG_PS3_ROM=y 163CONFIG_PS3_ROM=y
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
index c6b1aa3efbb9..13ebeb2d71e6 100644
--- a/arch/powerpc/kernel/ppc_ksyms.c
+++ b/arch/powerpc/kernel/ppc_ksyms.c
@@ -45,10 +45,6 @@
45#include <asm/signal.h> 45#include <asm/signal.h>
46#include <asm/dcr.h> 46#include <asm/dcr.h>
47 47
48#ifdef CONFIG_8xx
49#include <asm/commproc.h>
50#endif
51
52#ifdef CONFIG_PPC64 48#ifdef CONFIG_PPC64
53EXPORT_SYMBOL(local_irq_restore); 49EXPORT_SYMBOL(local_irq_restore);
54#endif 50#endif
@@ -172,14 +168,6 @@ EXPORT_SYMBOL(console_drivers);
172EXPORT_SYMBOL(cacheable_memcpy); 168EXPORT_SYMBOL(cacheable_memcpy);
173#endif 169#endif
174 170
175#ifdef CONFIG_8xx
176EXPORT_SYMBOL(cpm_install_handler);
177EXPORT_SYMBOL(cpm_free_handler);
178#endif /* CONFIG_8xx */
179#if defined(CONFIG_8xx)
180EXPORT_SYMBOL(__res);
181#endif
182
183#ifdef CONFIG_PPC32 171#ifdef CONFIG_PPC32
184EXPORT_SYMBOL(next_mmu_context); 172EXPORT_SYMBOL(next_mmu_context);
185EXPORT_SYMBOL(set_context); 173EXPORT_SYMBOL(set_context);
diff --git a/arch/powerpc/math-emu/op-2.h b/arch/powerpc/math-emu/op-2.h
index b9b06b4c6ea1..7d6f17cc2929 100644
--- a/arch/powerpc/math-emu/op-2.h
+++ b/arch/powerpc/math-emu/op-2.h
@@ -59,7 +59,8 @@
59 else \ 59 else \
60 { \ 60 { \
61 X##_f0 = (X##_f1 >> ((N) - _FP_W_TYPE_SIZE) | \ 61 X##_f0 = (X##_f1 >> ((N) - _FP_W_TYPE_SIZE) | \
62 (((X##_f1 << (sz - (N))) | X##_f0) != 0)); \ 62 (((X##_f1 << (2 * _FP_W_TYPE_SIZE - (N))) | \
63 X##_f0) != 0)); \
63 X##_f1 = 0; \ 64 X##_f1 = 0; \
64 } \ 65 } \
65 } while (0) 66 } while (0)
diff --git a/arch/powerpc/platforms/chrp/pci.c b/arch/powerpc/platforms/chrp/pci.c
index e43465d34d29..0340a342f772 100644
--- a/arch/powerpc/platforms/chrp/pci.c
+++ b/arch/powerpc/platforms/chrp/pci.c
@@ -317,8 +317,12 @@ chrp_find_bridges(void)
317/* SL82C105 IDE Control/Status Register */ 317/* SL82C105 IDE Control/Status Register */
318#define SL82C105_IDECSR 0x40 318#define SL82C105_IDECSR 0x40
319 319
320/* Fixup for Winbond ATA quirk, required for briq */ 320/* Fixup for Winbond ATA quirk, required for briq mostly because the
321void chrp_pci_fixup_winbond_ata(struct pci_dev *sl82c105) 321 * 8259 is configured for level sensitive IRQ 14 and so wants the
322 * ATA controller to be set to fully native mode or bad things
323 * will happen.
324 */
325static void __devinit chrp_pci_fixup_winbond_ata(struct pci_dev *sl82c105)
322{ 326{
323 u8 progif; 327 u8 progif;
324 328
@@ -334,10 +338,15 @@ void chrp_pci_fixup_winbond_ata(struct pci_dev *sl82c105)
334 sl82c105->class |= 0x05; 338 sl82c105->class |= 0x05;
335 /* Disable SL82C105 second port */ 339 /* Disable SL82C105 second port */
336 pci_write_config_word(sl82c105, SL82C105_IDECSR, 0x0003); 340 pci_write_config_word(sl82c105, SL82C105_IDECSR, 0x0003);
341 /* Clear IO BARs, they will be reassigned */
342 pci_write_config_dword(sl82c105, PCI_BASE_ADDRESS_0, 0);
343 pci_write_config_dword(sl82c105, PCI_BASE_ADDRESS_1, 0);
344 pci_write_config_dword(sl82c105, PCI_BASE_ADDRESS_2, 0);
345 pci_write_config_dword(sl82c105, PCI_BASE_ADDRESS_3, 0);
337 } 346 }
338} 347}
339DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105, 348DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105,
340 chrp_pci_fixup_winbond_ata); 349 chrp_pci_fixup_winbond_ata);
341 350
342/* Pegasos2 firmware version 20040810 configures the built-in IDE controller 351/* Pegasos2 firmware version 20040810 configures the built-in IDE controller
343 * in legacy mode, but sets the PCI registers to PCI native mode. 352 * in legacy mode, but sets the PCI registers to PCI native mode.
@@ -345,7 +354,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105,
345 * mode as well. The same fixup must be done to the class-code property in 354 * mode as well. The same fixup must be done to the class-code property in
346 * the IDE node /pci@80000000/ide@C,1 355 * the IDE node /pci@80000000/ide@C,1
347 */ 356 */
348static void chrp_pci_fixup_vt8231_ata(struct pci_dev *viaide) 357static void __devinit chrp_pci_fixup_vt8231_ata(struct pci_dev *viaide)
349{ 358{
350 u8 progif; 359 u8 progif;
351 struct pci_dev *viaisa; 360 struct pci_dev *viaisa;
@@ -366,4 +375,4 @@ static void chrp_pci_fixup_vt8231_ata(struct pci_dev *viaide)
366 375
367 pci_dev_put(viaisa); 376 pci_dev_put(viaisa);
368} 377}
369DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, chrp_pci_fixup_vt8231_ata); 378DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, chrp_pci_fixup_vt8231_ata);
diff --git a/arch/powerpc/platforms/iseries/lpevents.c b/arch/powerpc/platforms/iseries/lpevents.c
index 34bdbbe3ce59..275f49449839 100644
--- a/arch/powerpc/platforms/iseries/lpevents.c
+++ b/arch/powerpc/platforms/iseries/lpevents.c
@@ -121,6 +121,7 @@ void process_hvlpevents(void)
121{ 121{
122 struct HvLpEvent * event; 122 struct HvLpEvent * event;
123 123
124 restart:
124 /* If we have recursed, just return */ 125 /* If we have recursed, just return */
125 if (!spin_trylock(&hvlpevent_queue.hq_lock)) 126 if (!spin_trylock(&hvlpevent_queue.hq_lock))
126 return; 127 return;
@@ -146,8 +147,20 @@ void process_hvlpevents(void)
146 if (event->xType < HvLpEvent_Type_NumTypes && 147 if (event->xType < HvLpEvent_Type_NumTypes &&
147 lpEventHandler[event->xType]) 148 lpEventHandler[event->xType])
148 lpEventHandler[event->xType](event); 149 lpEventHandler[event->xType](event);
149 else 150 else {
150 printk(KERN_INFO "Unexpected Lp Event type=%d\n", event->xType ); 151 u8 type = event->xType;
152
153 /*
154 * Don't printk in the spinlock as printk
155 * may require ack events form the HV to send
156 * any characters there.
157 */
158 hvlpevent_clear_valid(event);
159 spin_unlock(&hvlpevent_queue.hq_lock);
160 printk(KERN_INFO
161 "Unexpected Lp Event type=%d\n", type);
162 goto restart;
163 }
151 164
152 hvlpevent_clear_valid(event); 165 hvlpevent_clear_valid(event);
153 } else if (hvlpevent_queue.hq_overflow_pending) 166 } else if (hvlpevent_queue.hq_overflow_pending)
diff --git a/arch/powerpc/platforms/powermac/pci.c b/arch/powerpc/platforms/powermac/pci.c
index ec49099830d5..f852ae3e0ee4 100644
--- a/arch/powerpc/platforms/powermac/pci.c
+++ b/arch/powerpc/platforms/powermac/pci.c
@@ -1243,15 +1243,22 @@ void pmac_pci_fixup_pciata(struct pci_dev* dev)
1243 good: 1243 good:
1244 pci_read_config_byte(dev, PCI_CLASS_PROG, &progif); 1244 pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
1245 if ((progif & 5) != 5) { 1245 if ((progif & 5) != 5) {
1246 printk(KERN_INFO "Forcing PCI IDE into native mode: %s\n", 1246 printk(KERN_INFO "PCI: %s Forcing PCI IDE into native mode\n",
1247 pci_name(dev)); 1247 pci_name(dev));
1248 (void) pci_write_config_byte(dev, PCI_CLASS_PROG, progif|5); 1248 (void) pci_write_config_byte(dev, PCI_CLASS_PROG, progif|5);
1249 if (pci_read_config_byte(dev, PCI_CLASS_PROG, &progif) || 1249 if (pci_read_config_byte(dev, PCI_CLASS_PROG, &progif) ||
1250 (progif & 5) != 5) 1250 (progif & 5) != 5)
1251 printk(KERN_ERR "Rewrite of PROGIF failed !\n"); 1251 printk(KERN_ERR "Rewrite of PROGIF failed !\n");
1252 else {
1253 /* Clear IO BARs, they will be reassigned */
1254 pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, 0);
1255 pci_write_config_dword(dev, PCI_BASE_ADDRESS_1, 0);
1256 pci_write_config_dword(dev, PCI_BASE_ADDRESS_2, 0);
1257 pci_write_config_dword(dev, PCI_BASE_ADDRESS_3, 0);
1258 }
1252 } 1259 }
1253} 1260}
1254DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, pmac_pci_fixup_pciata); 1261DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, pmac_pci_fixup_pciata);
1255#endif 1262#endif
1256 1263
1257/* 1264/*
diff --git a/arch/powerpc/platforms/ps3/Kconfig b/arch/powerpc/platforms/ps3/Kconfig
index 67144d1d1405..298f1c9679fb 100644
--- a/arch/powerpc/platforms/ps3/Kconfig
+++ b/arch/powerpc/platforms/ps3/Kconfig
@@ -91,7 +91,7 @@ config PS3_SYS_MANAGER
91 depends on PPC_PS3 91 depends on PPC_PS3
92 tristate "PS3 System Manager driver" if PS3_ADVANCED 92 tristate "PS3 System Manager driver" if PS3_ADVANCED
93 select PS3_VUART 93 select PS3_VUART
94 default m 94 default y
95 help 95 help
96 Include support for the PS3 System Manager. 96 Include support for the PS3 System Manager.
97 97
diff --git a/arch/powerpc/sysdev/cpm2_common.c b/arch/powerpc/sysdev/cpm2_common.c
index 859362fecb7c..c1d824032020 100644
--- a/arch/powerpc/sysdev/cpm2_common.c
+++ b/arch/powerpc/sysdev/cpm2_common.c
@@ -61,8 +61,7 @@ cpm2_map_t __iomem *cpm2_immr;
61 of space for CPM as it is larger 61 of space for CPM as it is larger
62 than on PQ2 */ 62 than on PQ2 */
63 63
64void 64void __init cpm2_reset(void)
65cpm2_reset(void)
66{ 65{
67#ifdef CONFIG_PPC_85xx 66#ifdef CONFIG_PPC_85xx
68 cpm2_immr = ioremap(CPM_MAP_ADDR, CPM_MAP_SIZE); 67 cpm2_immr = ioremap(CPM_MAP_ADDR, CPM_MAP_SIZE);
diff --git a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S
index c9b0d7af64ae..ea257e828364 100644
--- a/arch/sparc64/kernel/entry.S
+++ b/arch/sparc64/kernel/entry.S
@@ -2593,3 +2593,15 @@ sun4v_mmustat_info:
2593 retl 2593 retl
2594 nop 2594 nop
2595 .size sun4v_mmustat_info, .-sun4v_mmustat_info 2595 .size sun4v_mmustat_info, .-sun4v_mmustat_info
2596
2597 .globl sun4v_mmu_demap_all
2598 .type sun4v_mmu_demap_all,#function
2599sun4v_mmu_demap_all:
2600 clr %o0
2601 clr %o1
2602 mov HV_MMU_ALL, %o2
2603 mov HV_FAST_MMU_DEMAP_ALL, %o5
2604 ta HV_FAST_TRAP
2605 retl
2606 nop
2607 .size sun4v_mmu_demap_all, .-sun4v_mmu_demap_all
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c
index 894b506f9636..c39944927f1a 100644
--- a/arch/sparc64/kernel/smp.c
+++ b/arch/sparc64/kernel/smp.c
@@ -476,7 +476,7 @@ static inline void spitfire_xcall_deliver(u64 data0, u64 data1, u64 data2, cpuma
476 */ 476 */
477static void cheetah_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t mask) 477static void cheetah_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t mask)
478{ 478{
479 u64 pstate, ver; 479 u64 pstate, ver, busy_mask;
480 int nack_busy_id, is_jbus, need_more; 480 int nack_busy_id, is_jbus, need_more;
481 481
482 if (cpus_empty(mask)) 482 if (cpus_empty(mask))
@@ -508,14 +508,20 @@ retry:
508 "i" (ASI_INTR_W)); 508 "i" (ASI_INTR_W));
509 509
510 nack_busy_id = 0; 510 nack_busy_id = 0;
511 busy_mask = 0;
511 { 512 {
512 int i; 513 int i;
513 514
514 for_each_cpu_mask(i, mask) { 515 for_each_cpu_mask(i, mask) {
515 u64 target = (i << 14) | 0x70; 516 u64 target = (i << 14) | 0x70;
516 517
517 if (!is_jbus) 518 if (is_jbus) {
519 busy_mask |= (0x1UL << (i * 2));
520 } else {
518 target |= (nack_busy_id << 24); 521 target |= (nack_busy_id << 24);
522 busy_mask |= (0x1UL <<
523 (nack_busy_id * 2));
524 }
519 __asm__ __volatile__( 525 __asm__ __volatile__(
520 "stxa %%g0, [%0] %1\n\t" 526 "stxa %%g0, [%0] %1\n\t"
521 "membar #Sync\n\t" 527 "membar #Sync\n\t"
@@ -531,15 +537,16 @@ retry:
531 537
532 /* Now, poll for completion. */ 538 /* Now, poll for completion. */
533 { 539 {
534 u64 dispatch_stat; 540 u64 dispatch_stat, nack_mask;
535 long stuck; 541 long stuck;
536 542
537 stuck = 100000 * nack_busy_id; 543 stuck = 100000 * nack_busy_id;
544 nack_mask = busy_mask << 1;
538 do { 545 do {
539 __asm__ __volatile__("ldxa [%%g0] %1, %0" 546 __asm__ __volatile__("ldxa [%%g0] %1, %0"
540 : "=r" (dispatch_stat) 547 : "=r" (dispatch_stat)
541 : "i" (ASI_INTR_DISPATCH_STAT)); 548 : "i" (ASI_INTR_DISPATCH_STAT));
542 if (dispatch_stat == 0UL) { 549 if (!(dispatch_stat & (busy_mask | nack_mask))) {
543 __asm__ __volatile__("wrpr %0, 0x0, %%pstate" 550 __asm__ __volatile__("wrpr %0, 0x0, %%pstate"
544 : : "r" (pstate)); 551 : : "r" (pstate));
545 if (unlikely(need_more)) { 552 if (unlikely(need_more)) {
@@ -556,12 +563,12 @@ retry:
556 } 563 }
557 if (!--stuck) 564 if (!--stuck)
558 break; 565 break;
559 } while (dispatch_stat & 0x5555555555555555UL); 566 } while (dispatch_stat & busy_mask);
560 567
561 __asm__ __volatile__("wrpr %0, 0x0, %%pstate" 568 __asm__ __volatile__("wrpr %0, 0x0, %%pstate"
562 : : "r" (pstate)); 569 : : "r" (pstate));
563 570
564 if ((dispatch_stat & ~(0x5555555555555555UL)) == 0) { 571 if (dispatch_stat & busy_mask) {
565 /* Busy bits will not clear, continue instead 572 /* Busy bits will not clear, continue instead
566 * of freezing up on this cpu. 573 * of freezing up on this cpu.
567 */ 574 */
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c
index e18ccf85224f..fbeb55d71e76 100644
--- a/arch/sparc64/mm/init.c
+++ b/arch/sparc64/mm/init.c
@@ -1133,14 +1133,9 @@ static void __init mark_kpte_bitmap(unsigned long start, unsigned long end)
1133 } 1133 }
1134} 1134}
1135 1135
1136static void __init kernel_physical_mapping_init(void) 1136static void __init init_kpte_bitmap(void)
1137{ 1137{
1138 unsigned long i; 1138 unsigned long i;
1139#ifdef CONFIG_DEBUG_PAGEALLOC
1140 unsigned long mem_alloced = 0UL;
1141#endif
1142
1143 read_obp_memory("reg", &pall[0], &pall_ents);
1144 1139
1145 for (i = 0; i < pall_ents; i++) { 1140 for (i = 0; i < pall_ents; i++) {
1146 unsigned long phys_start, phys_end; 1141 unsigned long phys_start, phys_end;
@@ -1149,14 +1144,24 @@ static void __init kernel_physical_mapping_init(void)
1149 phys_end = phys_start + pall[i].reg_size; 1144 phys_end = phys_start + pall[i].reg_size;
1150 1145
1151 mark_kpte_bitmap(phys_start, phys_end); 1146 mark_kpte_bitmap(phys_start, phys_end);
1147 }
1148}
1152 1149
1150static void __init kernel_physical_mapping_init(void)
1151{
1153#ifdef CONFIG_DEBUG_PAGEALLOC 1152#ifdef CONFIG_DEBUG_PAGEALLOC
1153 unsigned long i, mem_alloced = 0UL;
1154
1155 for (i = 0; i < pall_ents; i++) {
1156 unsigned long phys_start, phys_end;
1157
1158 phys_start = pall[i].phys_addr;
1159 phys_end = phys_start + pall[i].reg_size;
1160
1154 mem_alloced += kernel_map_range(phys_start, phys_end, 1161 mem_alloced += kernel_map_range(phys_start, phys_end,
1155 PAGE_KERNEL); 1162 PAGE_KERNEL);
1156#endif
1157 } 1163 }
1158 1164
1159#ifdef CONFIG_DEBUG_PAGEALLOC
1160 printk("Allocated %ld bytes for kernel page tables.\n", 1165 printk("Allocated %ld bytes for kernel page tables.\n",
1161 mem_alloced); 1166 mem_alloced);
1162 1167
@@ -1398,6 +1403,10 @@ void __init paging_init(void)
1398 1403
1399 inherit_prom_mappings(); 1404 inherit_prom_mappings();
1400 1405
1406 read_obp_memory("reg", &pall[0], &pall_ents);
1407
1408 init_kpte_bitmap();
1409
1401 /* Ok, we can use our TLB miss and window trap handlers safely. */ 1410 /* Ok, we can use our TLB miss and window trap handlers safely. */
1402 setup_tba(); 1411 setup_tba();
1403 1412
@@ -1904,7 +1913,9 @@ void __flush_tlb_all(void)
1904 "wrpr %0, %1, %%pstate" 1913 "wrpr %0, %1, %%pstate"
1905 : "=r" (pstate) 1914 : "=r" (pstate)
1906 : "i" (PSTATE_IE)); 1915 : "i" (PSTATE_IE));
1907 if (tlb_type == spitfire) { 1916 if (tlb_type == hypervisor) {
1917 sun4v_mmu_demap_all();
1918 } else if (tlb_type == spitfire) {
1908 for (i = 0; i < 64; i++) { 1919 for (i = 0; i < 64; i++) {
1909 /* Spitfire Errata #32 workaround */ 1920 /* Spitfire Errata #32 workaround */
1910 /* NOTE: Always runs on spitfire, so no 1921 /* NOTE: Always runs on spitfire, so no
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c
index 73681f14f9fc..3c6c44ca1ffa 100644
--- a/arch/um/drivers/net_kern.c
+++ b/arch/um/drivers/net_kern.c
@@ -98,10 +98,10 @@ static int uml_net_rx(struct net_device *dev)
98 if (pkt_len > 0) { 98 if (pkt_len > 0) {
99 skb_trim(skb, pkt_len); 99 skb_trim(skb, pkt_len);
100 skb->protocol = (*lp->protocol)(skb); 100 skb->protocol = (*lp->protocol)(skb);
101 netif_rx(skb);
102 101
103 lp->stats.rx_bytes += skb->len; 102 lp->stats.rx_bytes += skb->len;
104 lp->stats.rx_packets++; 103 lp->stats.rx_packets++;
104 netif_rx(skb);
105 return pkt_len; 105 return pkt_len;
106 } 106 }
107 107
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 94c39aaf695f..b6af3ea43c73 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1131,7 +1131,7 @@ asmlinkage void __init xen_start_kernel(void)
1131 if (!xen_start_info) 1131 if (!xen_start_info)
1132 return; 1132 return;
1133 1133
1134 BUG_ON(memcmp(xen_start_info->magic, "xen-3.0", 7) != 0); 1134 BUG_ON(memcmp(xen_start_info->magic, "xen-3", 5) != 0);
1135 1135
1136 /* Install Xen paravirt ops */ 1136 /* Install Xen paravirt ops */
1137 pv_info = xen_info; 1137 pv_info = xen_info;
diff --git a/arch/xtensa/platform-iss/network.c b/arch/xtensa/platform-iss/network.c
index b61fb36674e7..f21b9b0899a8 100644
--- a/arch/xtensa/platform-iss/network.c
+++ b/arch/xtensa/platform-iss/network.c
@@ -393,11 +393,11 @@ static int iss_net_rx(struct net_device *dev)
393 if (pkt_len > 0) { 393 if (pkt_len > 0) {
394 skb_trim(skb, pkt_len); 394 skb_trim(skb, pkt_len);
395 skb->protocol = lp->tp.protocol(skb); 395 skb->protocol = lp->tp.protocol(skb);
396 // netif_rx(skb);
397 netif_rx_ni(skb);
398 396
399 lp->stats.rx_bytes += skb->len; 397 lp->stats.rx_bytes += skb->len;
400 lp->stats.rx_packets++; 398 lp->stats.rx_packets++;
399 // netif_rx(skb);
400 netif_rx_ni(skb);
401 return pkt_len; 401 return pkt_len;
402 } 402 }
403 kfree_skb(skb); 403 kfree_skb(skb);