aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2008-03-13 00:26:33 -0400
committerPaul Mackerras <paulus@samba.org>2008-03-13 00:26:33 -0400
commitbed04a4413376265746053be2a9cfbfc80c98ec9 (patch)
tree8f582294a655f70496cd08aedeb86de31dbad140 /arch
parente37c772e36a7943b2e0bd8f48312e78474c0df15 (diff)
parentc463be3520065ef8c05e3cbdf946c69604e91ceb (diff)
Merge branch 'linux-2.6'
Diffstat (limited to 'arch')
-rw-r--r--arch/Kconfig7
-rw-r--r--arch/alpha/kernel/pci_iommu.c72
-rw-r--r--arch/arm/Kconfig4
-rw-r--r--arch/arm/mach-pxa/cpu-pxa.c2
-rw-r--r--arch/arm/mach-pxa/pxa3xx.c8
-rw-r--r--arch/arm/mach-pxa/zylonite.c2
-rw-r--r--arch/arm/mm/mmap.c2
-rw-r--r--arch/arm/mm/pgd.c6
-rw-r--r--arch/avr32/boards/atstk1000/atstk1004.c2
-rw-r--r--arch/avr32/kernel/process.c4
-rw-r--r--arch/avr32/mm/fault.c2
-rw-r--r--arch/blackfin/Makefile5
-rw-r--r--arch/blackfin/configs/BF527-EZKIT_defconfig18
-rw-r--r--arch/blackfin/configs/BF533-EZKIT_defconfig6
-rw-r--r--arch/blackfin/configs/BF533-STAMP_defconfig6
-rw-r--r--arch/blackfin/configs/BF537-STAMP_defconfig6
-rw-r--r--arch/blackfin/configs/BF548-EZKIT_defconfig2
-rw-r--r--arch/blackfin/configs/BF561-EZKIT_defconfig1
-rw-r--r--arch/blackfin/kernel/bfin_dma_5xx.c15
-rw-r--r--arch/blackfin/kernel/fixed_code.S12
-rw-r--r--arch/blackfin/kernel/gptimers.c8
-rw-r--r--arch/blackfin/kernel/setup.c5
-rw-r--r--arch/blackfin/kernel/vmlinux.lds.S34
-rw-r--r--arch/blackfin/mach-bf527/boards/ezkit.c60
-rw-r--r--arch/blackfin/mach-bf533/boards/ezkit.c21
-rw-r--r--arch/blackfin/mach-bf533/boards/stamp.c43
-rw-r--r--arch/blackfin/mach-bf537/boards/generic_board.c18
-rw-r--r--arch/blackfin/mach-bf537/boards/stamp.c45
-rw-r--r--arch/blackfin/mach-bf548/boards/ezkit.c29
-rw-r--r--arch/blackfin/mach-bf548/dma.c2
-rw-r--r--arch/blackfin/mach-bf548/head.S9
-rw-r--r--arch/blackfin/mach-bf561/boards/ezkit.c16
-rw-r--r--arch/blackfin/mach-common/dpmc.S137
-rw-r--r--arch/blackfin/mach-common/entry.S5
-rw-r--r--arch/blackfin/mach-common/ints-priority.c174
-rw-r--r--arch/blackfin/mm/init.c4
-rw-r--r--arch/cris/arch-v10/kernel/time.c2
-rw-r--r--arch/cris/arch-v10/lib/string.c337
-rw-r--r--arch/cris/arch-v10/lib/usercopy.c2
-rw-r--r--arch/cris/arch-v32/lib/string.c325
-rw-r--r--arch/cris/arch-v32/lib/usercopy.c2
-rw-r--r--arch/ia64/Kconfig3
-rw-r--r--arch/ia64/Makefile2
-rw-r--r--arch/ia64/configs/generic_defconfig (renamed from arch/ia64/defconfig)0
-rw-r--r--arch/ia64/hp/common/hwsw_iommu.c2
-rw-r--r--arch/ia64/hp/common/sba_iommu.c36
-rw-r--r--arch/ia64/hp/sim/simeth.c2
-rw-r--r--arch/ia64/hp/sim/simserial.c2
-rw-r--r--arch/ia64/ia32/ia32_signal.c13
-rw-r--r--arch/ia64/ia32/sys_ia32.c7
-rw-r--r--arch/ia64/kernel/crash.c2
-rw-r--r--arch/ia64/kernel/efi.c32
-rw-r--r--arch/ia64/kernel/iosapic.c28
-rw-r--r--arch/ia64/kernel/irq_ia64.c142
-rw-r--r--arch/ia64/kernel/kprobes.c7
-rw-r--r--arch/ia64/kernel/mca.c73
-rw-r--r--arch/ia64/kernel/module.c22
-rw-r--r--arch/ia64/kernel/msi_ia64.c3
-rw-r--r--arch/ia64/kernel/perfmon.c4
-rw-r--r--arch/ia64/kernel/perfmon_default_smpl.c4
-rw-r--r--arch/ia64/kernel/ptrace.c327
-rw-r--r--arch/ia64/kernel/sal.c7
-rw-r--r--arch/ia64/kernel/setup.c8
-rw-r--r--arch/ia64/kernel/signal.c36
-rw-r--r--arch/ia64/kernel/unaligned.c6
-rw-r--r--arch/ia64/kernel/unwind.c102
-rw-r--r--arch/ia64/mm/fault.c2
-rw-r--r--arch/ia64/mm/init.c2
-rw-r--r--arch/ia64/pci/fixup.c2
-rw-r--r--arch/ia64/pci/pci.c4
-rw-r--r--arch/ia64/sn/kernel/huberror.c4
-rw-r--r--arch/ia64/sn/kernel/io_acpi_init.c36
-rw-r--r--arch/ia64/sn/kernel/io_common.c2
-rw-r--r--arch/ia64/sn/kernel/io_init.c4
-rw-r--r--arch/ia64/sn/kernel/mca.c2
-rw-r--r--arch/ia64/sn/pci/pci_dma.c6
-rw-r--r--arch/ia64/sn/pci/tioca_provider.c12
-rw-r--r--arch/ia64/sn/pci/tioce_provider.c4
-rw-r--r--arch/m68k/kernel/entry.S4
-rw-r--r--arch/m68knommu/defconfig112
-rw-r--r--arch/m68knommu/kernel/syscalltable.S4
-rw-r--r--arch/m68knommu/platform/68328/timers.c10
-rw-r--r--arch/mips/Kconfig2
-rw-r--r--arch/mips/Makefile2
-rw-r--r--arch/mips/au1000/common/dbdma.c34
-rw-r--r--arch/mips/defconfig1158
-rw-r--r--arch/mips/kernel/Makefile1
-rw-r--r--arch/mips/kernel/cpu-bugs64.c4
-rw-r--r--arch/mips/kernel/cpu-probe.c10
-rw-r--r--arch/mips/kernel/csrc-r4k.c7
-rw-r--r--arch/mips/kernel/head.S2
-rw-r--r--arch/mips/kernel/traps.c38
-rw-r--r--arch/mips/lib/ucmpdi2.c2
-rw-r--r--arch/mips/lib/uncached.c2
-rw-r--r--arch/mips/mips-boards/generic/time.c2
-rw-r--r--arch/mips/mipssim/sim_time.c2
-rw-r--r--arch/mips/mm/c-r3k.c2
-rw-r--r--arch/mips/mm/c-r4k.c30
-rw-r--r--arch/mips/mm/c-tx39.c2
-rw-r--r--arch/mips/mm/cache.c5
-rw-r--r--arch/mips/mm/cex-sb1.S4
-rw-r--r--arch/mips/mm/pg-r4k.c22
-rw-r--r--arch/mips/mm/pg-sb1.c4
-rw-r--r--arch/mips/mm/sc-ip22.c2
-rw-r--r--arch/mips/mm/sc-mips.c3
-rw-r--r--arch/mips/mm/sc-r5k.c2
-rw-r--r--arch/mips/mm/sc-rm7k.c2
-rw-r--r--arch/mips/mm/tlb-r3k.c2
-rw-r--r--arch/mips/mm/tlb-r4k.c10
-rw-r--r--arch/mips/mm/tlb-r8k.c4
-rw-r--r--arch/mips/mm/tlbex.c70
-rw-r--r--arch/mips/mm/uasm.c68
-rw-r--r--arch/mips/mm/uasm.h76
-rw-r--r--arch/mips/pci/pci-bcm1480.c5
-rw-r--r--arch/mips/pci/pci-ip27.c2
-rw-r--r--arch/mips/pci/pci.c2
-rw-r--r--arch/mips/pmc-sierra/yosemite/smp.c6
-rw-r--r--arch/mips/sgi-ip27/ip27-init.c2
-rw-r--r--arch/mips/sgi-ip27/ip27-timer.c2
-rw-r--r--arch/mips/sgi-ip27/ip27-xtalk.c6
-rw-r--r--arch/powerpc/Kconfig1
-rw-r--r--arch/powerpc/Makefile2
-rw-r--r--arch/powerpc/boot/Makefile18
-rw-r--r--arch/powerpc/boot/cuboot-bamboo.c1
-rw-r--r--arch/powerpc/boot/cuboot-ebony.c1
-rw-r--r--arch/powerpc/boot/cuboot-katmai.c1
-rw-r--r--arch/powerpc/boot/cuboot-taishan.c2
-rw-r--r--arch/powerpc/boot/cuboot-warp.c1
-rw-r--r--arch/powerpc/boot/dts/haleakala.dts2
-rw-r--r--arch/powerpc/boot/dts/katmai.dts58
-rw-r--r--arch/powerpc/boot/dts/mpc8377_mds.dts70
-rw-r--r--arch/powerpc/boot/dts/mpc8378_mds.dts70
-rw-r--r--arch/powerpc/boot/dts/mpc8379_mds.dts70
-rw-r--r--arch/powerpc/boot/dts/sbc8548.dts16
-rwxr-xr-xarch/powerpc/boot/wrapper6
-rw-r--r--arch/powerpc/configs/adder875-uboot_defconfig798
-rw-r--r--arch/powerpc/configs/adder875_defconfig (renamed from arch/powerpc/configs/adder875-redboot_defconfig)61
-rw-r--r--arch/powerpc/kernel/head_8xx.S30
-rw-r--r--arch/powerpc/kernel/misc_32.S15
-rw-r--r--arch/powerpc/kernel/pci-common.c8
-rw-r--r--arch/powerpc/kernel/ppc_ksyms.c3
-rw-r--r--arch/powerpc/mm/hash_utils_64.c4
-rw-r--r--arch/powerpc/oprofile/op_model_cell.c2
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_common.c1
-rw-r--r--arch/powerpc/platforms/83xx/mpc837x_mds.c8
-rw-r--r--arch/powerpc/platforms/Kconfig1
-rw-r--r--arch/powerpc/platforms/Kconfig.cputype7
-rw-r--r--arch/powerpc/platforms/cell/iommu.c151
-rw-r--r--arch/powerpc/platforms/cell/setup.c7
-rw-r--r--arch/powerpc/platforms/cell/spu_base.c16
-rw-r--r--arch/powerpc/platforms/cell/spufs/context.c10
-rw-r--r--arch/powerpc/platforms/cell/spufs/file.c12
-rw-r--r--arch/powerpc/platforms/cell/spufs/run.c3
-rw-r--r--arch/powerpc/platforms/cell/spufs/sched.c6
-rw-r--r--arch/powerpc/platforms/cell/spufs/spufs.h1
-rw-r--r--arch/powerpc/platforms/cell/spufs/sputrace.c7
-rw-r--r--arch/powerpc/platforms/cell/spufs/switch.c6
-rw-r--r--arch/powerpc/platforms/celleb/beat.h3
-rw-r--r--arch/powerpc/platforms/powermac/pic.c2
-rw-r--r--arch/powerpc/sysdev/qe_lib/qe.c7
-rw-r--r--arch/ppc/kernel/head_8xx.S30
-rw-r--r--arch/s390/Kconfig5
-rw-r--r--arch/s390/defconfig18
-rw-r--r--arch/s390/kernel/Makefile5
-rw-r--r--arch/s390/kernel/early.c8
-rw-r--r--arch/s390/kernel/ipl.c1
-rw-r--r--arch/s390/kernel/process.c4
-rw-r--r--arch/s390/kernel/smp.c10
-rw-r--r--arch/s390/kernel/time.c2
-rw-r--r--arch/sh/Kconfig8
-rw-r--r--arch/sh/Makefile1
-rw-r--r--arch/sh/boards/hp6xx/hp6xx_apm.c22
-rw-r--r--arch/sh/boards/renesas/sh7710voipgw/Makefile1
-rw-r--r--arch/sh/boards/renesas/sh7710voipgw/setup.c94
-rw-r--r--arch/sh/boards/renesas/x3proto/ilsel.c2
-rw-r--r--arch/sh/boards/superh/microdev/io.c2
-rw-r--r--arch/sh/configs/r7780mp_defconfig91
-rw-r--r--arch/sh/configs/se7780_defconfig646
-rw-r--r--arch/sh/configs/sh7710voipgw_defconfig595
-rw-r--r--arch/sh/drivers/dma/dma-sh.c2
-rw-r--r--arch/sh/drivers/heartbeat.c2
-rw-r--r--arch/sh/drivers/pci/ops-dreamcast.c44
-rw-r--r--arch/sh/kernel/cpu/init.c2
-rw-r--r--arch/sh/kernel/cpu/sh2/setup-sh7619.c2
-rw-r--r--arch/sh/kernel/cpu/sh2a/clock-sh7203.c4
-rw-r--r--arch/sh/kernel/cpu/sh2a/setup-sh7203.c2
-rw-r--r--arch/sh/kernel/cpu/sh2a/setup-sh7206.c2
-rw-r--r--arch/sh/kernel/cpu/sh3/probe.c4
-rw-r--r--arch/sh/kernel/cpu/sh3/setup-sh7705.c2
-rw-r--r--arch/sh/kernel/cpu/sh3/setup-sh770x.c8
-rw-r--r--arch/sh/kernel/cpu/sh3/setup-sh7710.c2
-rw-r--r--arch/sh/kernel/cpu/sh3/setup-sh7720.c2
-rw-r--r--arch/sh/kernel/cpu/sh4/setup-sh4-202.c2
-rw-r--r--arch/sh/kernel/cpu/sh4/setup-sh7750.c2
-rw-r--r--arch/sh/kernel/cpu/sh4/setup-sh7760.c2
-rw-r--r--arch/sh/kernel/cpu/sh4/sq.c4
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7343.c2
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7366.c2
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7722.c2
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7763.c2
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7770.c2
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7780.c2
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-sh7785.c2
-rw-r--r--arch/sh/kernel/cpu/sh4a/setup-shx3.c2
-rw-r--r--arch/sh/kernel/cpu/sh5/unwind.c2
-rw-r--r--arch/sh/kernel/io_trapped.c2
-rw-r--r--arch/sh/kernel/sh_ksyms_32.c5
-rw-r--r--arch/sh/kernel/sh_ksyms_64.c1
-rw-r--r--arch/sh/kernel/timers/timer-cmt.c2
-rw-r--r--arch/sh/kernel/timers/timer-mtu2.c2
-rw-r--r--arch/sh/kernel/topology.c2
-rw-r--r--arch/sh/kernel/traps_64.c2
-rw-r--r--arch/sh/lib64/c-checksum.c2
-rw-r--r--arch/sh/lib64/udelay.c21
-rw-r--r--arch/sh/mm/Kconfig2
-rw-r--r--arch/sh/mm/init.c2
-rw-r--r--arch/sh/mm/ioremap_32.c2
-rw-r--r--arch/sh/mm/ioremap_64.c4
-rw-r--r--arch/sh/mm/pg-sh7705.c1
-rw-r--r--arch/sh/mm/tlbflush_64.c6
-rw-r--r--arch/sh/tools/mach-types1
-rw-r--r--arch/sparc/kernel/Makefile5
-rw-r--r--arch/sparc/kernel/cpu.c4
-rw-r--r--arch/sparc/kernel/ebus.c6
-rw-r--r--arch/sparc/kernel/led.c3
-rw-r--r--arch/sparc/kernel/process.c2
-rw-r--r--arch/sparc/kernel/una_asm.S153
-rw-r--r--arch/sparc/kernel/unaligned.c252
-rw-r--r--arch/sparc64/Kconfig1
-rw-r--r--arch/sparc64/kernel/cpu.c4
-rw-r--r--arch/sparc64/kernel/ds.c14
-rw-r--r--arch/sparc64/kernel/mdesc.c2
-rw-r--r--arch/sparc64/kernel/process.c2
-rw-r--r--arch/sparc64/mm/fault.c14
-rw-r--r--arch/sparc64/mm/init.c3
-rw-r--r--arch/sparc64/solaris/conv.h2
-rw-r--r--arch/sparc64/solaris/timod.c2
-rw-r--r--arch/um/kernel/process.c2
-rw-r--r--arch/x86/Kconfig6
-rw-r--r--arch/x86/Kconfig.cpu14
-rw-r--r--arch/x86/boot/memory.c9
-rw-r--r--arch/x86/boot/vesa.h9
-rw-r--r--arch/x86/boot/video-vesa.c2
-rw-r--r--arch/x86/ia32/ia32_signal.c4
-rw-r--r--arch/x86/kernel/asm-offsets_32.c4
-rw-r--r--arch/x86/kernel/cpu/common.c2
-rw-r--r--arch/x86/kernel/cpu/cpufreq/e_powersaver.c8
-rw-r--r--arch/x86/kernel/cpu/mtrr/main.c9
-rw-r--r--arch/x86/kernel/cpu/transmeta.c7
-rw-r--r--arch/x86/kernel/entry_64.S6
-rw-r--r--arch/x86/kernel/head_32.S2
-rw-r--r--arch/x86/kernel/head_64.S22
-rw-r--r--arch/x86/kernel/hpet.c4
-rw-r--r--arch/x86/kernel/i387.c10
-rw-r--r--arch/x86/kernel/init_task.c1
-rw-r--r--arch/x86/kernel/process_32.c2
-rw-r--r--arch/x86/kernel/process_64.c8
-rw-r--r--arch/x86/kernel/ptrace.c31
-rw-r--r--arch/x86/kernel/reboot.c6
-rw-r--r--arch/x86/kernel/setup_64.c2
-rw-r--r--arch/x86/kernel/signal_32.c4
-rw-r--r--arch/x86/kernel/signal_64.c40
-rw-r--r--arch/x86/kernel/smpboot_64.c2
-rw-r--r--arch/x86/kernel/stacktrace.c4
-rw-r--r--arch/x86/kernel/step.c4
-rw-r--r--arch/x86/kernel/tls.c8
-rw-r--r--arch/x86/kernel/tsc_32.c3
-rw-r--r--arch/x86/kernel/vsyscall_64.c49
-rw-r--r--arch/x86/kvm/lapic.c4
-rw-r--r--arch/x86/kvm/mmu.c38
-rw-r--r--arch/x86/kvm/paging_tmpl.h20
-rw-r--r--arch/x86/kvm/svm.c26
-rw-r--r--arch/x86/kvm/vmx.c14
-rw-r--r--arch/x86/kvm/x86.c114
-rw-r--r--arch/x86/lguest/boot.c63
-rw-r--r--arch/x86/mm/init_64.c13
-rw-r--r--arch/x86/mm/ioremap.c4
-rw-r--r--arch/x86/mm/numa_64.c8
-rw-r--r--arch/x86/mm/pageattr.c84
-rw-r--r--arch/x86/mm/pgtable_32.c18
-rw-r--r--arch/x86/pci/pcbios.c10
-rw-r--r--arch/x86/vdso/Makefile4
-rw-r--r--arch/x86/xen/enlighten.c1
-rw-r--r--arch/x86/xen/setup.c3
284 files changed, 3337 insertions, 5175 deletions
diff --git a/arch/Kconfig b/arch/Kconfig
index 3d72dc3fc8f5..694c9af520bb 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -27,5 +27,12 @@ config KPROBES
27 for kernel debugging, non-intrusive instrumentation and testing. 27 for kernel debugging, non-intrusive instrumentation and testing.
28 If in doubt, say "N". 28 If in doubt, say "N".
29 29
30config KRETPROBES
31 def_bool y
32 depends on KPROBES && HAVE_KRETPROBES
33
30config HAVE_KPROBES 34config HAVE_KPROBES
31 def_bool n 35 def_bool n
36
37config HAVE_KRETPROBES
38 def_bool n
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c
index 26d3789dfdd0..e07a23fc5b74 100644
--- a/arch/alpha/kernel/pci_iommu.c
+++ b/arch/alpha/kernel/pci_iommu.c
@@ -31,7 +31,6 @@
31#endif 31#endif
32 32
33#define DEBUG_NODIRECT 0 33#define DEBUG_NODIRECT 0
34#define DEBUG_FORCEDAC 0
35 34
36#define ISA_DMA_MASK 0x00ffffff 35#define ISA_DMA_MASK 0x00ffffff
37 36
@@ -126,39 +125,66 @@ iommu_arena_new(struct pci_controller *hose, dma_addr_t base,
126 return iommu_arena_new_node(0, hose, base, window_size, align); 125 return iommu_arena_new_node(0, hose, base, window_size, align);
127} 126}
128 127
128static inline int is_span_boundary(unsigned int index, unsigned int nr,
129 unsigned long shift,
130 unsigned long boundary_size)
131{
132 shift = (shift + index) & (boundary_size - 1);
133 return shift + nr > boundary_size;
134}
135
129/* Must be called with the arena lock held */ 136/* Must be called with the arena lock held */
130static long 137static long
131iommu_arena_find_pages(struct pci_iommu_arena *arena, long n, long mask) 138iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena,
139 long n, long mask)
132{ 140{
133 unsigned long *ptes; 141 unsigned long *ptes;
134 long i, p, nent; 142 long i, p, nent;
143 int pass = 0;
144 unsigned long base;
145 unsigned long boundary_size;
146
147 base = arena->dma_base >> PAGE_SHIFT;
148 if (dev) {
149 boundary_size = dma_get_seg_boundary(dev) + 1;
150 BUG_ON(!is_power_of_2(boundary_size));
151 boundary_size >>= PAGE_SHIFT;
152 } else {
153 boundary_size = 1UL << (32 - PAGE_SHIFT);
154 }
135 155
136 /* Search forward for the first mask-aligned sequence of N free ptes */ 156 /* Search forward for the first mask-aligned sequence of N free ptes */
137 ptes = arena->ptes; 157 ptes = arena->ptes;
138 nent = arena->size >> PAGE_SHIFT; 158 nent = arena->size >> PAGE_SHIFT;
139 p = (arena->next_entry + mask) & ~mask; 159 p = ALIGN(arena->next_entry, mask + 1);
140 i = 0; 160 i = 0;
161
162again:
141 while (i < n && p+i < nent) { 163 while (i < n && p+i < nent) {
164 if (!i && is_span_boundary(p, n, base, boundary_size)) {
165 p = ALIGN(p + 1, mask + 1);
166 goto again;
167 }
168
142 if (ptes[p+i]) 169 if (ptes[p+i])
143 p = (p + i + 1 + mask) & ~mask, i = 0; 170 p = ALIGN(p + i + 1, mask + 1), i = 0;
144 else 171 else
145 i = i + 1; 172 i = i + 1;
146 } 173 }
147 174
148 if (i < n) { 175 if (i < n) {
149 /* Reached the end. Flush the TLB and restart the 176 if (pass < 1) {
150 search from the beginning. */ 177 /*
151 alpha_mv.mv_pci_tbi(arena->hose, 0, -1); 178 * Reached the end. Flush the TLB and restart
152 179 * the search from the beginning.
153 p = 0, i = 0; 180 */
154 while (i < n && p+i < nent) { 181 alpha_mv.mv_pci_tbi(arena->hose, 0, -1);
155 if (ptes[p+i]) 182
156 p = (p + i + 1 + mask) & ~mask, i = 0; 183 pass++;
157 else 184 p = 0;
158 i = i + 1; 185 i = 0;
159 } 186 goto again;
160 187 } else
161 if (i < n)
162 return -1; 188 return -1;
163 } 189 }
164 190
@@ -168,7 +194,8 @@ iommu_arena_find_pages(struct pci_iommu_arena *arena, long n, long mask)
168} 194}
169 195
170static long 196static long
171iommu_arena_alloc(struct pci_iommu_arena *arena, long n, unsigned int align) 197iommu_arena_alloc(struct device *dev, struct pci_iommu_arena *arena, long n,
198 unsigned int align)
172{ 199{
173 unsigned long flags; 200 unsigned long flags;
174 unsigned long *ptes; 201 unsigned long *ptes;
@@ -179,7 +206,7 @@ iommu_arena_alloc(struct pci_iommu_arena *arena, long n, unsigned int align)
179 /* Search for N empty ptes */ 206 /* Search for N empty ptes */
180 ptes = arena->ptes; 207 ptes = arena->ptes;
181 mask = max(align, arena->align_entry) - 1; 208 mask = max(align, arena->align_entry) - 1;
182 p = iommu_arena_find_pages(arena, n, mask); 209 p = iommu_arena_find_pages(dev, arena, n, mask);
183 if (p < 0) { 210 if (p < 0) {
184 spin_unlock_irqrestore(&arena->lock, flags); 211 spin_unlock_irqrestore(&arena->lock, flags);
185 return -1; 212 return -1;
@@ -229,6 +256,7 @@ pci_map_single_1(struct pci_dev *pdev, void *cpu_addr, size_t size,
229 unsigned long paddr; 256 unsigned long paddr;
230 dma_addr_t ret; 257 dma_addr_t ret;
231 unsigned int align = 0; 258 unsigned int align = 0;
259 struct device *dev = pdev ? &pdev->dev : NULL;
232 260
233 paddr = __pa(cpu_addr); 261 paddr = __pa(cpu_addr);
234 262
@@ -276,7 +304,7 @@ pci_map_single_1(struct pci_dev *pdev, void *cpu_addr, size_t size,
276 /* Force allocation to 64KB boundary for ISA bridges. */ 304 /* Force allocation to 64KB boundary for ISA bridges. */
277 if (pdev && pdev == isa_bridge) 305 if (pdev && pdev == isa_bridge)
278 align = 8; 306 align = 8;
279 dma_ofs = iommu_arena_alloc(arena, npages, align); 307 dma_ofs = iommu_arena_alloc(dev, arena, npages, align);
280 if (dma_ofs < 0) { 308 if (dma_ofs < 0) {
281 printk(KERN_WARNING "pci_map_single failed: " 309 printk(KERN_WARNING "pci_map_single failed: "
282 "could not allocate dma page tables\n"); 310 "could not allocate dma page tables\n");
@@ -563,7 +591,7 @@ sg_fill(struct device *dev, struct scatterlist *leader, struct scatterlist *end,
563 591
564 paddr &= ~PAGE_MASK; 592 paddr &= ~PAGE_MASK;
565 npages = calc_npages(paddr + size); 593 npages = calc_npages(paddr + size);
566 dma_ofs = iommu_arena_alloc(arena, npages, 0); 594 dma_ofs = iommu_arena_alloc(dev, arena, npages, 0);
567 if (dma_ofs < 0) { 595 if (dma_ofs < 0) {
568 /* If we attempted a direct map above but failed, die. */ 596 /* If we attempted a direct map above but failed, die. */
569 if (leader->dma_address == 0) 597 if (leader->dma_address == 0)
@@ -830,7 +858,7 @@ iommu_reserve(struct pci_iommu_arena *arena, long pg_count, long align_mask)
830 858
831 /* Search for N empty ptes. */ 859 /* Search for N empty ptes. */
832 ptes = arena->ptes; 860 ptes = arena->ptes;
833 p = iommu_arena_find_pages(arena, pg_count, align_mask); 861 p = iommu_arena_find_pages(NULL, arena, pg_count, align_mask);
834 if (p < 0) { 862 if (p < 0) {
835 spin_unlock_irqrestore(&arena->lock, flags); 863 spin_unlock_irqrestore(&arena->lock, flags);
836 return -1; 864 return -1;
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 9619c43783ff..955fc53c1c01 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -12,6 +12,7 @@ config ARM
12 select SYS_SUPPORTS_APM_EMULATION 12 select SYS_SUPPORTS_APM_EMULATION
13 select HAVE_OPROFILE 13 select HAVE_OPROFILE
14 select HAVE_KPROBES if (!XIP_KERNEL) 14 select HAVE_KPROBES if (!XIP_KERNEL)
15 select HAVE_KRETPROBES if (HAVE_KPROBES)
15 help 16 help
16 The ARM series is a line of low-power-consumption RISC chip designs 17 The ARM series is a line of low-power-consumption RISC chip designs
17 licensed by ARM Ltd and targeted at embedded applications and 18 licensed by ARM Ltd and targeted at embedded applications and
@@ -939,7 +940,8 @@ config KEXEC
939 940
940config ATAGS_PROC 941config ATAGS_PROC
941 bool "Export atags in procfs" 942 bool "Export atags in procfs"
942 default n 943 depends on KEXEC
944 default y
943 help 945 help
944 Should the atags used to boot the kernel be exported in an "atags" 946 Should the atags used to boot the kernel be exported in an "atags"
945 file in procfs. Useful with kexec. 947 file in procfs. Useful with kexec.
diff --git a/arch/arm/mach-pxa/cpu-pxa.c b/arch/arm/mach-pxa/cpu-pxa.c
index 939a3867f77c..4b21479332ae 100644
--- a/arch/arm/mach-pxa/cpu-pxa.c
+++ b/arch/arm/mach-pxa/cpu-pxa.c
@@ -43,7 +43,7 @@
43 43
44#ifdef DEBUG 44#ifdef DEBUG
45static unsigned int freq_debug; 45static unsigned int freq_debug;
46MODULE_PARM(freq_debug, "i"); 46module_param(freq_debug, uint, 0);
47MODULE_PARM_DESC(freq_debug, "Set the debug messages to on=1/off=0"); 47MODULE_PARM_DESC(freq_debug, "Set the debug messages to on=1/off=0");
48#else 48#else
49#define freq_debug 0 49#define freq_debug 0
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
index 7cd9ef8deb02..35f25fdaeba3 100644
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@ -129,28 +129,20 @@ static void clk_pxa3xx_cken_enable(struct clk *clk)
129{ 129{
130 unsigned long mask = 1ul << (clk->cken & 0x1f); 130 unsigned long mask = 1ul << (clk->cken & 0x1f);
131 131
132 local_irq_disable();
133
134 if (clk->cken < 32) 132 if (clk->cken < 32)
135 CKENA |= mask; 133 CKENA |= mask;
136 else 134 else
137 CKENB |= mask; 135 CKENB |= mask;
138
139 local_irq_enable();
140} 136}
141 137
142static void clk_pxa3xx_cken_disable(struct clk *clk) 138static void clk_pxa3xx_cken_disable(struct clk *clk)
143{ 139{
144 unsigned long mask = 1ul << (clk->cken & 0x1f); 140 unsigned long mask = 1ul << (clk->cken & 0x1f);
145 141
146 local_irq_disable();
147
148 if (clk->cken < 32) 142 if (clk->cken < 32)
149 CKENA &= ~mask; 143 CKENA &= ~mask;
150 else 144 else
151 CKENB &= ~mask; 145 CKENB &= ~mask;
152
153 local_irq_enable();
154} 146}
155 147
156static const struct clkops clk_pxa3xx_cken_ops = { 148static const struct clkops clk_pxa3xx_cken_ops = {
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
index 7731d50dd86c..afd2cbfca0d9 100644
--- a/arch/arm/mach-pxa/zylonite.c
+++ b/arch/arm/mach-pxa/zylonite.c
@@ -58,7 +58,7 @@ static struct platform_device smc91x_device = {
58 .resource = smc91x_resources, 58 .resource = smc91x_resources,
59}; 59};
60 60
61#if defined(CONFIG_FB_PXA) || (CONFIG_FB_PXA_MODULES) 61#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE)
62static void zylonite_backlight_power(int on) 62static void zylonite_backlight_power(int on)
63{ 63{
64 gpio_set_value(gpio_backlight, on); 64 gpio_set_value(gpio_backlight, on);
diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c
index 2728b0e7d2bb..3f6dc40b8353 100644
--- a/arch/arm/mm/mmap.c
+++ b/arch/arm/mm/mmap.c
@@ -120,6 +120,8 @@ full_search:
120 */ 120 */
121int valid_phys_addr_range(unsigned long addr, size_t size) 121int valid_phys_addr_range(unsigned long addr, size_t size)
122{ 122{
123 if (addr < PHYS_OFFSET)
124 return 0;
123 if (addr + size > __pa(high_memory)) 125 if (addr + size > __pa(high_memory))
124 return 0; 126 return 0;
125 127
diff --git a/arch/arm/mm/pgd.c b/arch/arm/mm/pgd.c
index 500c9610ab30..e0f19ab91163 100644
--- a/arch/arm/mm/pgd.c
+++ b/arch/arm/mm/pgd.c
@@ -75,7 +75,7 @@ no_pgd:
75void free_pgd_slow(struct mm_struct *mm, pgd_t *pgd) 75void free_pgd_slow(struct mm_struct *mm, pgd_t *pgd)
76{ 76{
77 pmd_t *pmd; 77 pmd_t *pmd;
78 struct page *pte; 78 pgtable_t pte;
79 79
80 if (!pgd) 80 if (!pgd)
81 return; 81 return;
@@ -90,10 +90,8 @@ void free_pgd_slow(struct mm_struct *mm, pgd_t *pgd)
90 goto free; 90 goto free;
91 } 91 }
92 92
93 pte = pmd_page(*pmd); 93 pte = pmd_pgtable(*pmd);
94 pmd_clear(pmd); 94 pmd_clear(pmd);
95 dec_zone_page_state(virt_to_page((unsigned long *)pgd), NR_PAGETABLE);
96 pte_lock_deinit(pte);
97 pte_free(mm, pte); 95 pte_free(mm, pte);
98 pmd_free(mm, pmd); 96 pmd_free(mm, pmd);
99free: 97free:
diff --git a/arch/avr32/boards/atstk1000/atstk1004.c b/arch/avr32/boards/atstk1000/atstk1004.c
index 5a77030e07a0..e765a8652b3e 100644
--- a/arch/avr32/boards/atstk1000/atstk1004.c
+++ b/arch/avr32/boards/atstk1000/atstk1004.c
@@ -129,7 +129,7 @@ static int __init atstk1004_init(void)
129#ifdef CONFIG_BOARD_ATSTK100X_SPI1 129#ifdef CONFIG_BOARD_ATSTK100X_SPI1
130 at32_add_device_spi(1, spi1_board_info, ARRAY_SIZE(spi1_board_info)); 130 at32_add_device_spi(1, spi1_board_info, ARRAY_SIZE(spi1_board_info));
131#endif 131#endif
132#ifndef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM 132#ifndef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM
133 at32_add_device_mci(0); 133 at32_add_device_mci(0);
134#endif 134#endif
135 at32_add_device_lcdc(0, &atstk1000_lcdc_data, 135 at32_add_device_lcdc(0, &atstk1000_lcdc_data,
diff --git a/arch/avr32/kernel/process.c b/arch/avr32/kernel/process.c
index eaaa69bbdc38..7f4af0b1e111 100644
--- a/arch/avr32/kernel/process.c
+++ b/arch/avr32/kernel/process.c
@@ -11,6 +11,7 @@
11#include <linux/fs.h> 11#include <linux/fs.h>
12#include <linux/ptrace.h> 12#include <linux/ptrace.h>
13#include <linux/reboot.h> 13#include <linux/reboot.h>
14#include <linux/tick.h>
14#include <linux/uaccess.h> 15#include <linux/uaccess.h>
15#include <linux/unistd.h> 16#include <linux/unistd.h>
16 17
@@ -30,8 +31,10 @@ void cpu_idle(void)
30{ 31{
31 /* endless idle loop with no priority at all */ 32 /* endless idle loop with no priority at all */
32 while (1) { 33 while (1) {
34 tick_nohz_stop_sched_tick();
33 while (!need_resched()) 35 while (!need_resched())
34 cpu_idle_sleep(); 36 cpu_idle_sleep();
37 tick_nohz_restart_sched_tick();
35 preempt_enable_no_resched(); 38 preempt_enable_no_resched();
36 schedule(); 39 schedule();
37 preempt_disable(); 40 preempt_disable();
@@ -345,6 +348,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
345 p->thread.cpu_context.ksp = (unsigned long)childregs; 348 p->thread.cpu_context.ksp = (unsigned long)childregs;
346 p->thread.cpu_context.pc = (unsigned long)ret_from_fork; 349 p->thread.cpu_context.pc = (unsigned long)ret_from_fork;
347 350
351 clear_tsk_thread_flag(p, TIF_DEBUG);
348 if ((clone_flags & CLONE_PTRACE) && test_thread_flag(TIF_DEBUG)) 352 if ((clone_flags & CLONE_PTRACE) && test_thread_flag(TIF_DEBUG))
349 ocd_enable(p); 353 ocd_enable(p);
350 354
diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
index 6560cb18b4e3..ce4e4296b954 100644
--- a/arch/avr32/mm/fault.c
+++ b/arch/avr32/mm/fault.c
@@ -189,6 +189,8 @@ no_context:
189 189
190 page = sysreg_read(PTBR); 190 page = sysreg_read(PTBR);
191 printk(KERN_ALERT "ptbr = %08lx", page); 191 printk(KERN_ALERT "ptbr = %08lx", page);
192 if (address >= TASK_SIZE)
193 page = (unsigned long)swapper_pg_dir;
192 if (page) { 194 if (page) {
193 page = ((unsigned long *)page)[address >> 22]; 195 page = ((unsigned long *)page)[address >> 22];
194 printk(" pgd = %08lx", page); 196 printk(" pgd = %08lx", page);
diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile
index fe254f886a6e..75eba2ca7881 100644
--- a/arch/blackfin/Makefile
+++ b/arch/blackfin/Makefile
@@ -98,8 +98,11 @@ drivers-$(CONFIG_OPROFILE) += arch/$(ARCH)/oprofile/
98# them changed. We use .mach to indicate when they were updated 98# them changed. We use .mach to indicate when they were updated
99# last, otherwise make uses the target directory mtime. 99# last, otherwise make uses the target directory mtime.
100 100
101 show_mach_symlink = :
102 quiet_show_mach_symlink = echo ' SYMLINK include/asm-$(ARCH)/mach-$(MACHINE) -> include/asm-$(ARCH)/mach'
103silent_show_mach_symlink = :
101include/asm-blackfin/.mach: $(wildcard include/config/arch/*.h) include/config/auto.conf 104include/asm-blackfin/.mach: $(wildcard include/config/arch/*.h) include/config/auto.conf
102 @echo ' SYMLINK include/asm-$(ARCH)/mach-$(MACHINE) -> include/asm-$(ARCH)/mach' 105 @$($(quiet)show_mach_symlink)
103ifneq ($(KBUILD_SRC),) 106ifneq ($(KBUILD_SRC),)
104 $(Q)mkdir -p include/asm-$(ARCH) 107 $(Q)mkdir -p include/asm-$(ARCH)
105 $(Q)ln -fsn $(srctree)/include/asm-$(ARCH)/mach-$(MACHINE) include/asm-$(ARCH)/mach 108 $(Q)ln -fsn $(srctree)/include/asm-$(ARCH)/mach-$(MACHINE) include/asm-$(ARCH)/mach
diff --git a/arch/blackfin/configs/BF527-EZKIT_defconfig b/arch/blackfin/configs/BF527-EZKIT_defconfig
index d59ee1530bd4..ae320dcfedef 100644
--- a/arch/blackfin/configs/BF527-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF527-EZKIT_defconfig
@@ -1,7 +1,6 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22.14 3# Linux kernel version: 2.6.22.16
4# Thu Nov 29 17:32:47 2007
5# 4#
6# CONFIG_MMU is not set 5# CONFIG_MMU is not set
7# CONFIG_FPU is not set 6# CONFIG_FPU is not set
@@ -116,7 +115,10 @@ CONFIG_PREEMPT_VOLUNTARY=y
116# Processor and Board Settings 115# Processor and Board Settings
117# 116#
118# CONFIG_BF522 is not set 117# CONFIG_BF522 is not set
118# CONFIG_BF523 is not set
119# CONFIG_BF524 is not set
119# CONFIG_BF525 is not set 120# CONFIG_BF525 is not set
121# CONFIG_BF526 is not set
120CONFIG_BF527=y 122CONFIG_BF527=y
121# CONFIG_BF531 is not set 123# CONFIG_BF531 is not set
122# CONFIG_BF532 is not set 124# CONFIG_BF532 is not set
@@ -306,6 +308,7 @@ CONFIG_BFIN_DCACHE=y
306# CONFIG_BFIN_WB is not set 308# CONFIG_BFIN_WB is not set
307CONFIG_BFIN_WT=y 309CONFIG_BFIN_WT=y
308CONFIG_L1_MAX_PIECE=16 310CONFIG_L1_MAX_PIECE=16
311# CONFIG_MPU is not set
309 312
310# 313#
311# Asynchonous Memory Configuration 314# Asynchonous Memory Configuration
@@ -354,6 +357,7 @@ CONFIG_BINFMT_ZFLAT=y
354# Power management options 357# Power management options
355# 358#
356# CONFIG_PM is not set 359# CONFIG_PM is not set
360# CONFIG_PM_WAKEUP_BY_GPIO is not set
357 361
358# 362#
359# Networking 363# Networking
@@ -496,7 +500,6 @@ CONFIG_MTD_CFI_I2=y
496# CONFIG_MTD_CFI_INTELEXT is not set 500# CONFIG_MTD_CFI_INTELEXT is not set
497# CONFIG_MTD_CFI_AMDSTD is not set 501# CONFIG_MTD_CFI_AMDSTD is not set
498# CONFIG_MTD_CFI_STAA is not set 502# CONFIG_MTD_CFI_STAA is not set
499CONFIG_MTD_MW320D=m
500CONFIG_MTD_RAM=y 503CONFIG_MTD_RAM=y
501CONFIG_MTD_ROM=m 504CONFIG_MTD_ROM=m
502# CONFIG_MTD_ABSENT is not set 505# CONFIG_MTD_ABSENT is not set
@@ -506,9 +509,6 @@ CONFIG_MTD_ROM=m
506# 509#
507CONFIG_MTD_COMPLEX_MAPPINGS=y 510CONFIG_MTD_COMPLEX_MAPPINGS=y
508# CONFIG_MTD_PHYSMAP is not set 511# CONFIG_MTD_PHYSMAP is not set
509CONFIG_MTD_BF5xx=m
510CONFIG_BFIN_FLASH_SIZE=0x400000
511CONFIG_EBIU_FLASH_BASE=0x20000000
512# CONFIG_MTD_UCLINUX is not set 512# CONFIG_MTD_UCLINUX is not set
513# CONFIG_MTD_PLATRAM is not set 513# CONFIG_MTD_PLATRAM is not set
514 514
@@ -684,7 +684,6 @@ CONFIG_INPUT_MISC=y
684# CONFIG_INPUT_POWERMATE is not set 684# CONFIG_INPUT_POWERMATE is not set
685# CONFIG_INPUT_YEALINK is not set 685# CONFIG_INPUT_YEALINK is not set
686# CONFIG_INPUT_UINPUT is not set 686# CONFIG_INPUT_UINPUT is not set
687# CONFIG_BF53X_PFBUTTONS is not set
688# CONFIG_TWI_KEYPAD is not set 687# CONFIG_TWI_KEYPAD is not set
689 688
690# 689#
@@ -702,12 +701,12 @@ CONFIG_INPUT_MISC=y
702# CONFIG_BF5xx_PPIFCD is not set 701# CONFIG_BF5xx_PPIFCD is not set
703# CONFIG_BFIN_SIMPLE_TIMER is not set 702# CONFIG_BFIN_SIMPLE_TIMER is not set
704# CONFIG_BF5xx_PPI is not set 703# CONFIG_BF5xx_PPI is not set
704CONFIG_BFIN_OTP=y
705# CONFIG_BFIN_OTP_WRITE_ENABLE is not set
705# CONFIG_BFIN_SPORT is not set 706# CONFIG_BFIN_SPORT is not set
706# CONFIG_BFIN_TIMER_LATENCY is not set 707# CONFIG_BFIN_TIMER_LATENCY is not set
707# CONFIG_TWI_LCD is not set 708# CONFIG_TWI_LCD is not set
708# CONFIG_AD5304 is not set 709# CONFIG_AD5304 is not set
709# CONFIG_BF5xx_TEA5764 is not set
710# CONFIG_BF5xx_FBDMA is not set
711# CONFIG_VT is not set 710# CONFIG_VT is not set
712# CONFIG_SERIAL_NONSTANDARD is not set 711# CONFIG_SERIAL_NONSTANDARD is not set
713 712
@@ -772,7 +771,6 @@ CONFIG_I2C_CHARDEV=m
772# 771#
773# I2C Hardware Bus support 772# I2C Hardware Bus support
774# 773#
775# CONFIG_I2C_BLACKFIN_GPIO is not set
776CONFIG_I2C_BLACKFIN_TWI=m 774CONFIG_I2C_BLACKFIN_TWI=m
777CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50 775CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50
778# CONFIG_I2C_GPIO is not set 776# CONFIG_I2C_GPIO is not set
diff --git a/arch/blackfin/configs/BF533-EZKIT_defconfig b/arch/blackfin/configs/BF533-EZKIT_defconfig
index 811711f59a25..9621caa60b5f 100644
--- a/arch/blackfin/configs/BF533-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF533-EZKIT_defconfig
@@ -322,10 +322,9 @@ CONFIG_PM=y
322# CONFIG_PM_LEGACY is not set 322# CONFIG_PM_LEGACY is not set
323# CONFIG_PM_DEBUG is not set 323# CONFIG_PM_DEBUG is not set
324# CONFIG_PM_SYSFS_DEPRECATED is not set 324# CONFIG_PM_SYSFS_DEPRECATED is not set
325CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y 325CONFIG_PM_BFIN_SLEEP_DEEPER=y
326# CONFIG_PM_BFIN_SLEEP is not set
326# CONFIG_PM_WAKEUP_BY_GPIO is not set 327# CONFIG_PM_WAKEUP_BY_GPIO is not set
327# CONFIG_PM_WAKEUP_GPIO_API is not set
328CONFIG_PM_WAKEUP_SIC_IWR=0x80
329 328
330# 329#
331# CPU Frequency scaling 330# CPU Frequency scaling
@@ -697,7 +696,6 @@ CONFIG_SERIAL_BFIN_DMA=y
697# CONFIG_SERIAL_BFIN_PIO is not set 696# CONFIG_SERIAL_BFIN_PIO is not set
698CONFIG_SERIAL_BFIN_UART0=y 697CONFIG_SERIAL_BFIN_UART0=y
699# CONFIG_BFIN_UART0_CTSRTS is not set 698# CONFIG_BFIN_UART0_CTSRTS is not set
700# CONFIG_SERIAL_BFIN_UART1 is not set
701CONFIG_SERIAL_CORE=y 699CONFIG_SERIAL_CORE=y
702CONFIG_SERIAL_CORE_CONSOLE=y 700CONFIG_SERIAL_CORE_CONSOLE=y
703# CONFIG_SERIAL_BFIN_SPORT is not set 701# CONFIG_SERIAL_BFIN_SPORT is not set
diff --git a/arch/blackfin/configs/BF533-STAMP_defconfig b/arch/blackfin/configs/BF533-STAMP_defconfig
index 198f4123af4b..b51e76ce7f4f 100644
--- a/arch/blackfin/configs/BF533-STAMP_defconfig
+++ b/arch/blackfin/configs/BF533-STAMP_defconfig
@@ -323,10 +323,9 @@ CONFIG_PM=y
323# CONFIG_PM_LEGACY is not set 323# CONFIG_PM_LEGACY is not set
324# CONFIG_PM_DEBUG is not set 324# CONFIG_PM_DEBUG is not set
325# CONFIG_PM_SYSFS_DEPRECATED is not set 325# CONFIG_PM_SYSFS_DEPRECATED is not set
326CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y 326CONFIG_PM_BFIN_SLEEP_DEEPER=y
327# CONFIG_PM_BFIN_SLEEP is not set
327# CONFIG_PM_WAKEUP_BY_GPIO is not set 328# CONFIG_PM_WAKEUP_BY_GPIO is not set
328# CONFIG_PM_WAKEUP_GPIO_API is not set
329CONFIG_PM_WAKEUP_SIC_IWR=0x80
330 329
331# 330#
332# CPU Frequency scaling 331# CPU Frequency scaling
@@ -714,7 +713,6 @@ CONFIG_SERIAL_BFIN_DMA=y
714# CONFIG_SERIAL_BFIN_PIO is not set 713# CONFIG_SERIAL_BFIN_PIO is not set
715CONFIG_SERIAL_BFIN_UART0=y 714CONFIG_SERIAL_BFIN_UART0=y
716# CONFIG_BFIN_UART0_CTSRTS is not set 715# CONFIG_BFIN_UART0_CTSRTS is not set
717# CONFIG_SERIAL_BFIN_UART1 is not set
718CONFIG_SERIAL_CORE=y 716CONFIG_SERIAL_CORE=y
719CONFIG_SERIAL_CORE_CONSOLE=y 717CONFIG_SERIAL_CORE_CONSOLE=y
720# CONFIG_SERIAL_BFIN_SPORT is not set 718# CONFIG_SERIAL_BFIN_SPORT is not set
diff --git a/arch/blackfin/configs/BF537-STAMP_defconfig b/arch/blackfin/configs/BF537-STAMP_defconfig
index b37ccc681e7a..d45fa535dad7 100644
--- a/arch/blackfin/configs/BF537-STAMP_defconfig
+++ b/arch/blackfin/configs/BF537-STAMP_defconfig
@@ -330,10 +330,9 @@ CONFIG_PM=y
330# CONFIG_PM_LEGACY is not set 330# CONFIG_PM_LEGACY is not set
331# CONFIG_PM_DEBUG is not set 331# CONFIG_PM_DEBUG is not set
332# CONFIG_PM_SYSFS_DEPRECATED is not set 332# CONFIG_PM_SYSFS_DEPRECATED is not set
333CONFIG_PM_WAKEUP_GPIO_BY_SIC_IWR=y 333CONFIG_PM_BFIN_SLEEP_DEEPER=y
334# CONFIG_PM_BFIN_SLEEP is not set
334# CONFIG_PM_WAKEUP_BY_GPIO is not set 335# CONFIG_PM_WAKEUP_BY_GPIO is not set
335# CONFIG_PM_WAKEUP_GPIO_API is not set
336CONFIG_PM_WAKEUP_SIC_IWR=0x8
337 336
338# 337#
339# CPU Frequency scaling 338# CPU Frequency scaling
@@ -1013,6 +1012,7 @@ CONFIG_SND_BFIN_AD73311_SE=4
1013CONFIG_SND_SOC_AC97_BUS=y 1012CONFIG_SND_SOC_AC97_BUS=y
1014CONFIG_SND_SOC=m 1013CONFIG_SND_SOC=m
1015CONFIG_SND_BF5XX_SOC=m 1014CONFIG_SND_BF5XX_SOC=m
1015CONFIG_SND_MMAP_SUPPORT=y
1016CONFIG_SND_BF5XX_SOC_AC97=m 1016CONFIG_SND_BF5XX_SOC_AC97=m
1017# CONFIG_SND_BF5XX_SOC_WM8750 is not set 1017# CONFIG_SND_BF5XX_SOC_WM8750 is not set
1018# CONFIG_SND_BF5XX_SOC_WM8731 is not set 1018# CONFIG_SND_BF5XX_SOC_WM8731 is not set
diff --git a/arch/blackfin/configs/BF548-EZKIT_defconfig b/arch/blackfin/configs/BF548-EZKIT_defconfig
index fd702161ef59..c9707f7665ad 100644
--- a/arch/blackfin/configs/BF548-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF548-EZKIT_defconfig
@@ -396,6 +396,7 @@ CONFIG_BINFMT_ZFLAT=y
396# Power management options 396# Power management options
397# 397#
398# CONFIG_PM is not set 398# CONFIG_PM is not set
399# CONFIG_PM_WAKEUP_BY_GPIO is not set
399 400
400# 401#
401# CPU Frequency scaling 402# CPU Frequency scaling
@@ -1075,6 +1076,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
1075CONFIG_SND_SOC_AC97_BUS=y 1076CONFIG_SND_SOC_AC97_BUS=y
1076CONFIG_SND_SOC=y 1077CONFIG_SND_SOC=y
1077CONFIG_SND_BF5XX_SOC=y 1078CONFIG_SND_BF5XX_SOC=y
1079CONFIG_SND_MMAP_SUPPORT=y
1078CONFIG_SND_BF5XX_SOC_AC97=y 1080CONFIG_SND_BF5XX_SOC_AC97=y
1079CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y 1081CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y
1080# CONFIG_SND_BF5XX_SOC_WM8750 is not set 1082# CONFIG_SND_BF5XX_SOC_WM8750 is not set
diff --git a/arch/blackfin/configs/BF561-EZKIT_defconfig b/arch/blackfin/configs/BF561-EZKIT_defconfig
index 8546994939fb..4d8a63331309 100644
--- a/arch/blackfin/configs/BF561-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF561-EZKIT_defconfig
@@ -367,6 +367,7 @@ CONFIG_BINFMT_ZFLAT=y
367# Power management options 367# Power management options
368# 368#
369# CONFIG_PM is not set 369# CONFIG_PM is not set
370# CONFIG_PM_WAKEUP_BY_GPIO is not set
370 371
371# 372#
372# Networking 373# Networking
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c
index 5453bc3664fc..8fd5d22cec34 100644
--- a/arch/blackfin/kernel/bfin_dma_5xx.c
+++ b/arch/blackfin/kernel/bfin_dma_5xx.c
@@ -105,13 +105,14 @@ int request_dma(unsigned int channel, char *device_id)
105 mutex_unlock(&(dma_ch[channel].dmalock)); 105 mutex_unlock(&(dma_ch[channel].dmalock));
106 106
107#ifdef CONFIG_BF54x 107#ifdef CONFIG_BF54x
108 if (channel >= CH_UART2_RX && channel <= CH_UART3_TX && 108 if (channel >= CH_UART2_RX && channel <= CH_UART3_TX) {
109 strncmp(device_id, "BFIN_UART", 9) == 0) 109 if (strncmp(device_id, "BFIN_UART", 9) == 0)
110 dma_ch[channel].regs->peripheral_map |= 110 dma_ch[channel].regs->peripheral_map |=
111 (channel - CH_UART2_RX + 0xC); 111 (channel - CH_UART2_RX + 0xC);
112 else 112 else
113 dma_ch[channel].regs->peripheral_map |= 113 dma_ch[channel].regs->peripheral_map |=
114 (channel - CH_UART2_RX + 0x6); 114 (channel - CH_UART2_RX + 0x6);
115 }
115#endif 116#endif
116 117
117 dma_ch[channel].device_id = device_id; 118 dma_ch[channel].device_id = device_id;
diff --git a/arch/blackfin/kernel/fixed_code.S b/arch/blackfin/kernel/fixed_code.S
index 90262691b11a..5ed47228a390 100644
--- a/arch/blackfin/kernel/fixed_code.S
+++ b/arch/blackfin/kernel/fixed_code.S
@@ -101,9 +101,9 @@ ENDPROC (_atomic_ior32)
101 101
102.align 16 102.align 16
103 /* 103 /*
104 * Atomic ior, 32 bit. 104 * Atomic and, 32 bit.
105 * Inputs: P0: memory address to use 105 * Inputs: P0: memory address to use
106 * R0: value to ior 106 * R0: value to and
107 * Outputs: R0: new contents of the memory address. 107 * Outputs: R0: new contents of the memory address.
108 * R1: previous contents of the memory address. 108 * R1: previous contents of the memory address.
109 */ 109 */
@@ -112,13 +112,13 @@ ENTRY(_atomic_and32)
112 R0 = R1 & R0; 112 R0 = R1 & R0;
113 [P0] = R0; 113 [P0] = R0;
114 rts; 114 rts;
115ENDPROC (_atomic_ior32) 115ENDPROC (_atomic_and32)
116 116
117.align 16 117.align 16
118 /* 118 /*
119 * Atomic ior, 32 bit. 119 * Atomic xor, 32 bit.
120 * Inputs: P0: memory address to use 120 * Inputs: P0: memory address to use
121 * R0: value to ior 121 * R0: value to xor
122 * Outputs: R0: new contents of the memory address. 122 * Outputs: R0: new contents of the memory address.
123 * R1: previous contents of the memory address. 123 * R1: previous contents of the memory address.
124 */ 124 */
@@ -127,7 +127,7 @@ ENTRY(_atomic_xor32)
127 R0 = R1 ^ R0; 127 R0 = R1 ^ R0;
128 [P0] = R0; 128 [P0] = R0;
129 rts; 129 rts;
130ENDPROC (_atomic_ior32) 130ENDPROC (_atomic_xor32)
131 131
132.align 16 132.align 16
133 /* 133 /*
diff --git a/arch/blackfin/kernel/gptimers.c b/arch/blackfin/kernel/gptimers.c
index 5cf4bdb1df3b..1904d8b53328 100644
--- a/arch/blackfin/kernel/gptimers.c
+++ b/arch/blackfin/kernel/gptimers.c
@@ -1,9 +1,9 @@
1/* 1/*
2 * bfin_gptimers.c - derived from bf53x_timers.c 2 * gptimers.c - Blackfin General Purpose Timer core API
3 * Driver for General Purpose Timer functions on the Blackfin processor
4 * 3 *
5 * Copyright (C) 2005 John DeHority 4 * Copyright (c) 2005-2008 Analog Devices Inc.
6 * Copyright (C) 2006 Hella Aglaia GmbH (awe@aglaia-gmbh.de) 5 * Copyright (C) 2005 John DeHority
6 * Copyright (C) 2006 Hella Aglaia GmbH (awe@aglaia-gmbh.de)
7 * 7 *
8 * Licensed under the GPLv2. 8 * Licensed under the GPLv2.
9 */ 9 */
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c
index 8229b1090eb9..2255c289a714 100644
--- a/arch/blackfin/kernel/setup.c
+++ b/arch/blackfin/kernel/setup.c
@@ -32,6 +32,7 @@
32static DEFINE_PER_CPU(struct cpu, cpu_devices); 32static DEFINE_PER_CPU(struct cpu, cpu_devices);
33 33
34u16 _bfin_swrst; 34u16 _bfin_swrst;
35EXPORT_SYMBOL(_bfin_swrst);
35 36
36unsigned long memory_start, memory_end, physical_mem_end; 37unsigned long memory_start, memory_end, physical_mem_end;
37unsigned long reserved_mem_dcache_on; 38unsigned long reserved_mem_dcache_on;
@@ -514,6 +515,7 @@ static __init void memory_setup(void)
514 printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", _ramend >> 20); 515 printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", _ramend >> 20);
515 516
516 printk(KERN_INFO "Memory map:\n" 517 printk(KERN_INFO "Memory map:\n"
518 KERN_INFO " fixedcode = 0x%p-0x%p\n"
517 KERN_INFO " text = 0x%p-0x%p\n" 519 KERN_INFO " text = 0x%p-0x%p\n"
518 KERN_INFO " rodata = 0x%p-0x%p\n" 520 KERN_INFO " rodata = 0x%p-0x%p\n"
519 KERN_INFO " bss = 0x%p-0x%p\n" 521 KERN_INFO " bss = 0x%p-0x%p\n"
@@ -527,7 +529,8 @@ static __init void memory_setup(void)
527#if DMA_UNCACHED_REGION > 0 529#if DMA_UNCACHED_REGION > 0
528 KERN_INFO " DMA Zone = 0x%p-0x%p\n" 530 KERN_INFO " DMA Zone = 0x%p-0x%p\n"
529#endif 531#endif
530 , _stext, _etext, 532 , (void *)FIXED_CODE_START, (void *)FIXED_CODE_END,
533 _stext, _etext,
531 __start_rodata, __end_rodata, 534 __start_rodata, __end_rodata,
532 __bss_start, __bss_stop, 535 __bss_start, __bss_stop,
533 _sdata, _edata, 536 _sdata, _edata,
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S
index aed832540b3b..cb01a9de2680 100644
--- a/arch/blackfin/kernel/vmlinux.lds.S
+++ b/arch/blackfin/kernel/vmlinux.lds.S
@@ -147,44 +147,64 @@ SECTIONS
147 147
148 __l1_lma_start = .; 148 __l1_lma_start = .;
149 149
150#if L1_CODE_LENGTH
151# define LDS_L1_CODE *(.l1.text)
152#else
153# define LDS_L1_CODE
154#endif
150 .text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs)) 155 .text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs))
151 { 156 {
152 . = ALIGN(4); 157 . = ALIGN(4);
153 __stext_l1 = .; 158 __stext_l1 = .;
154 *(.l1.text) 159 LDS_L1_CODE
155
156 . = ALIGN(4); 160 . = ALIGN(4);
157 __etext_l1 = .; 161 __etext_l1 = .;
158 } 162 }
159 163
164#if L1_DATA_A_LENGTH
165# define LDS_L1_A_DATA *(.l1.data)
166# define LDS_L1_A_BSS *(.l1.bss)
167# define LDS_L1_A_CACHE *(.data_l1.cacheline_aligned)
168#else
169# define LDS_L1_A_DATA
170# define LDS_L1_A_BSS
171# define LDS_L1_A_CACHE
172#endif
160 .data_l1 L1_DATA_A_START : AT(LOADADDR(.text_l1) + SIZEOF(.text_l1)) 173 .data_l1 L1_DATA_A_START : AT(LOADADDR(.text_l1) + SIZEOF(.text_l1))
161 { 174 {
162 . = ALIGN(4); 175 . = ALIGN(4);
163 __sdata_l1 = .; 176 __sdata_l1 = .;
164 *(.l1.data) 177 LDS_L1_A_DATA
165 __edata_l1 = .; 178 __edata_l1 = .;
166 179
167 . = ALIGN(4); 180 . = ALIGN(4);
168 __sbss_l1 = .; 181 __sbss_l1 = .;
169 *(.l1.bss) 182 LDS_L1_A_BSS
170 183
171 . = ALIGN(32); 184 . = ALIGN(32);
172 *(.data_l1.cacheline_aligned) 185 LDS_L1_A_CACHE
173 186
174 . = ALIGN(4); 187 . = ALIGN(4);
175 __ebss_l1 = .; 188 __ebss_l1 = .;
176 } 189 }
177 190
191#if L1_DATA_B_LENGTH
192# define LDS_L1_B_DATA *(.l1.data.B)
193# define LDS_L1_B_BSS *(.l1.bss.B)
194#else
195# define LDS_L1_B_DATA
196# define LDS_L1_B_BSS
197#endif
178 .data_b_l1 L1_DATA_B_START : AT(LOADADDR(.data_l1) + SIZEOF(.data_l1)) 198 .data_b_l1 L1_DATA_B_START : AT(LOADADDR(.data_l1) + SIZEOF(.data_l1))
179 { 199 {
180 . = ALIGN(4); 200 . = ALIGN(4);
181 __sdata_b_l1 = .; 201 __sdata_b_l1 = .;
182 *(.l1.data.B) 202 LDS_L1_B_DATA
183 __edata_b_l1 = .; 203 __edata_b_l1 = .;
184 204
185 . = ALIGN(4); 205 . = ALIGN(4);
186 __sbss_b_l1 = .; 206 __sbss_b_l1 = .;
187 *(.l1.bss.B) 207 LDS_L1_B_BSS
188 208
189 . = ALIGN(4); 209 . = ALIGN(4);
190 __ebss_b_l1 = .; 210 __ebss_b_l1 = .;
diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c
index 337515fba612..cf4bc0d83355 100644
--- a/arch/blackfin/mach-bf527/boards/ezkit.c
+++ b/arch/blackfin/mach-bf527/boards/ezkit.c
@@ -180,8 +180,8 @@ static struct mtd_partition partition_info[] = {
180 }, 180 },
181 { 181 {
182 .name = "File System", 182 .name = "File System",
183 .offset = 4 * SIZE_1M, 183 .offset = MTDPART_OFS_APPEND,
184 .size = (256 - 4) * SIZE_1M, 184 .size = MTDPART_SIZ_FULL,
185 }, 185 },
186}; 186};
187 187
@@ -422,11 +422,11 @@ static struct mtd_partition bfin_spi_flash_partitions[] = {
422 }, { 422 }, {
423 .name = "kernel", 423 .name = "kernel",
424 .size = 0xe0000, 424 .size = 0xe0000,
425 .offset = 0x20000 425 .offset = MTDPART_OFS_APPEND,
426 }, { 426 }, {
427 .name = "file system", 427 .name = "file system",
428 .size = 0x700000, 428 .size = MTDPART_SIZ_FULL,
429 .offset = 0x00100000, 429 .offset = MTDPART_OFS_APPEND,
430 } 430 }
431}; 431};
432 432
@@ -484,13 +484,6 @@ static struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
484}; 484};
485#endif 485#endif
486 486
487#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
488static struct bfin5xx_spi_chip ad5304_chip_info = {
489 .enable_dma = 0,
490 .bits_per_word = 16,
491};
492#endif
493
494#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) 487#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
495static struct bfin5xx_spi_chip spi_ad7877_chip_info = { 488static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
496 .enable_dma = 0, 489 .enable_dma = 0,
@@ -611,17 +604,6 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
611 .mode = SPI_MODE_3, 604 .mode = SPI_MODE_3,
612 }, 605 },
613#endif 606#endif
614#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
615 {
616 .modalias = "ad5304_spi",
617 .max_speed_hz = 1250000, /* max spi clock (SCK) speed in HZ */
618 .bus_num = 0,
619 .chip_select = 2,
620 .platform_data = NULL,
621 .controller_data = &ad5304_chip_info,
622 .mode = SPI_MODE_2,
623 },
624#endif
625#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) 607#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
626 { 608 {
627 .modalias = "ad7877", 609 .modalias = "ad7877",
@@ -818,6 +800,19 @@ static struct platform_device bfin_device_gpiokeys = {
818}; 800};
819#endif 801#endif
820 802
803static struct resource bfin_gpios_resources = {
804 .start = 0,
805 .end = MAX_BLACKFIN_GPIOS - 1,
806 .flags = IORESOURCE_IRQ,
807};
808
809static struct platform_device bfin_gpios_device = {
810 .name = "simple-gpio",
811 .id = -1,
812 .num_resources = 1,
813 .resource = &bfin_gpios_resources,
814};
815
821static struct platform_device *stamp_devices[] __initdata = { 816static struct platform_device *stamp_devices[] __initdata = {
822#if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE) 817#if defined(CONFIG_MTD_NAND_BF5XX) || defined(CONFIG_MTD_NAND_BF5XX_MODULE)
823 &bf5xx_nand_device, 818 &bf5xx_nand_device,
@@ -895,6 +890,8 @@ static struct platform_device *stamp_devices[] __initdata = {
895#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 890#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
896 &bfin_device_gpiokeys, 891 &bfin_device_gpiokeys,
897#endif 892#endif
893
894 &bfin_gpios_device,
898}; 895};
899 896
900static int __init stamp_init(void) 897static int __init stamp_init(void)
@@ -921,13 +918,18 @@ void native_machine_restart(char *cmd)
921 bfin_gpio_reset_spi0_ssel1(); 918 bfin_gpio_reset_spi0_ssel1();
922} 919}
923 920
924/*
925 * Currently the MAC address is saved in Flash by U-Boot
926 */
927#define FLASH_MAC 0x203f0000
928void bfin_get_ether_addr(char *addr) 921void bfin_get_ether_addr(char *addr)
929{ 922{
930 *(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC); 923 /* the MAC is stored in OTP memory page 0xDF */
931 *(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4); 924 u32 ret;
925 u64 otp_mac;
926 u32 (*otp_read)(u32 page, u32 flags, u64 *page_content) = (void *)0xEF00001A;
927
928 ret = otp_read(0xDF, 0x00, &otp_mac);
929 if (!(ret & 0x1)) {
930 char *otp_mac_p = (char *)&otp_mac;
931 for (ret = 0; ret < 6; ++ret)
932 addr[ret] = otp_mac_p[5 - ret];
933 }
932} 934}
933EXPORT_SYMBOL(bfin_get_ether_addr); 935EXPORT_SYMBOL(bfin_get_ether_addr);
diff --git a/arch/blackfin/mach-bf533/boards/ezkit.c b/arch/blackfin/mach-bf533/boards/ezkit.c
index 2b09aa39f565..241b5a20a36a 100644
--- a/arch/blackfin/mach-bf533/boards/ezkit.c
+++ b/arch/blackfin/mach-bf533/boards/ezkit.c
@@ -99,11 +99,11 @@ static struct mtd_partition bfin_spi_flash_partitions[] = {
99 }, { 99 }, {
100 .name = "kernel", 100 .name = "kernel",
101 .size = 0xe0000, 101 .size = 0xe0000,
102 .offset = 0x20000 102 .offset = MTDPART_OFS_APPEND,
103 }, { 103 }, {
104 .name = "file system", 104 .name = "file system",
105 .size = 0x700000, 105 .size = MTDPART_SIZ_FULL,
106 .offset = 0x00100000, 106 .offset = MTDPART_OFS_APPEND,
107 } 107 }
108}; 108};
109 109
@@ -298,6 +298,19 @@ static struct platform_device bfin_device_gpiokeys = {
298}; 298};
299#endif 299#endif
300 300
301static struct resource bfin_gpios_resources = {
302 .start = 0,
303 .end = MAX_BLACKFIN_GPIOS - 1,
304 .flags = IORESOURCE_IRQ,
305};
306
307static struct platform_device bfin_gpios_device = {
308 .name = "simple-gpio",
309 .id = -1,
310 .num_resources = 1,
311 .resource = &bfin_gpios_resources,
312};
313
301#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) 314#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
302#include <linux/i2c-gpio.h> 315#include <linux/i2c-gpio.h>
303 316
@@ -350,6 +363,8 @@ static struct platform_device *ezkit_devices[] __initdata = {
350#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) 363#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
351 &i2c_gpio_device, 364 &i2c_gpio_device,
352#endif 365#endif
366
367 &bfin_gpios_device,
353}; 368};
354 369
355static int __init ezkit_init(void) 370static int __init ezkit_init(void)
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c
index a645f6fd091b..b2ac4816ae62 100644
--- a/arch/blackfin/mach-bf533/boards/stamp.c
+++ b/arch/blackfin/mach-bf533/boards/stamp.c
@@ -112,7 +112,7 @@ static struct platform_device net2272_bfin_device = {
112static struct mtd_partition stamp_partitions[] = { 112static struct mtd_partition stamp_partitions[] = {
113 { 113 {
114 .name = "Bootloader", 114 .name = "Bootloader",
115 .size = 0x20000, 115 .size = 0x40000,
116 .offset = 0, 116 .offset = 0,
117 }, { 117 }, {
118 .name = "Kernel", 118 .name = "Kernel",
@@ -160,17 +160,17 @@ static struct platform_device stamp_flash_device = {
160static struct mtd_partition bfin_spi_flash_partitions[] = { 160static struct mtd_partition bfin_spi_flash_partitions[] = {
161 { 161 {
162 .name = "bootloader", 162 .name = "bootloader",
163 .size = 0x00020000, 163 .size = 0x00040000,
164 .offset = 0, 164 .offset = 0,
165 .mask_flags = MTD_CAP_ROM 165 .mask_flags = MTD_CAP_ROM
166 }, { 166 }, {
167 .name = "kernel", 167 .name = "kernel",
168 .size = 0xe0000, 168 .size = 0xe0000,
169 .offset = 0x20000 169 .offset = MTDPART_OFS_APPEND,
170 }, { 170 }, {
171 .name = "file system", 171 .name = "file system",
172 .size = 0x700000, 172 .size = MTDPART_SIZ_FULL,
173 .offset = 0x00100000, 173 .offset = MTDPART_OFS_APPEND,
174 } 174 }
175}; 175};
176 176
@@ -212,13 +212,6 @@ static struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
212}; 212};
213#endif 213#endif
214 214
215#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
216static struct bfin5xx_spi_chip ad5304_chip_info = {
217 .enable_dma = 0,
218 .bits_per_word = 16,
219};
220#endif
221
222#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE) 215#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
223static struct bfin5xx_spi_chip spi_mmc_chip_info = { 216static struct bfin5xx_spi_chip spi_mmc_chip_info = {
224 .enable_dma = 1, 217 .enable_dma = 1,
@@ -308,17 +301,6 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
308 }, 301 },
309#endif 302#endif
310 303
311#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
312 {
313 .modalias = "ad5304_spi",
314 .max_speed_hz = 1000000, /* max spi clock (SCK) speed in HZ */
315 .bus_num = 0,
316 .chip_select = 2,
317 .platform_data = NULL,
318 .controller_data = &ad5304_chip_info,
319 .mode = SPI_MODE_2,
320 },
321#endif
322#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE) 304#if defined(CONFIG_SPI_SPIDEV) || defined(CONFIG_SPI_SPIDEV_MODULE)
323 { 305 {
324 .modalias = "spidev", 306 .modalias = "spidev",
@@ -457,6 +439,19 @@ static struct platform_device bfin_device_gpiokeys = {
457}; 439};
458#endif 440#endif
459 441
442static struct resource bfin_gpios_resources = {
443 .start = 0,
444 .end = MAX_BLACKFIN_GPIOS - 1,
445 .flags = IORESOURCE_IRQ,
446};
447
448static struct platform_device bfin_gpios_device = {
449 .name = "simple-gpio",
450 .id = -1,
451 .num_resources = 1,
452 .resource = &bfin_gpios_resources,
453};
454
460#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) 455#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
461#include <linux/i2c-gpio.h> 456#include <linux/i2c-gpio.h>
462 457
@@ -518,6 +513,8 @@ static struct platform_device *stamp_devices[] __initdata = {
518#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) 513#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
519 &i2c_gpio_device, 514 &i2c_gpio_device,
520#endif 515#endif
516
517 &bfin_gpios_device,
521 &stamp_flash_device, 518 &stamp_flash_device,
522}; 519};
523 520
diff --git a/arch/blackfin/mach-bf537/boards/generic_board.c b/arch/blackfin/mach-bf537/boards/generic_board.c
index 8a3397db1d21..c95395ba7bfa 100644
--- a/arch/blackfin/mach-bf537/boards/generic_board.c
+++ b/arch/blackfin/mach-bf537/boards/generic_board.c
@@ -371,13 +371,6 @@ static struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
371}; 371};
372#endif 372#endif
373 373
374#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
375static struct bfin5xx_spi_chip ad5304_chip_info = {
376 .enable_dma = 0,
377 .bits_per_word = 16,
378};
379#endif
380
381#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) 374#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
382static struct bfin5xx_spi_chip spi_ad7877_chip_info = { 375static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
383 .enable_dma = 0, 376 .enable_dma = 0,
@@ -483,17 +476,6 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
483 .mode = SPI_MODE_3, 476 .mode = SPI_MODE_3,
484 }, 477 },
485#endif 478#endif
486#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
487 {
488 .modalias = "ad5304_spi",
489 .max_speed_hz = 1250000, /* max spi clock (SCK) speed in HZ */
490 .bus_num = 0,
491 .chip_select = 2,
492 .platform_data = NULL,
493 .controller_data = &ad5304_chip_info,
494 .mode = SPI_MODE_2,
495 },
496#endif
497#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) 479#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
498 { 480 {
499 .modalias = "ad7877", 481 .modalias = "ad7877",
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c
index 9e2277e0d25c..ea83148993da 100644
--- a/arch/blackfin/mach-bf537/boards/stamp.c
+++ b/arch/blackfin/mach-bf537/boards/stamp.c
@@ -128,6 +128,19 @@ static struct platform_device bfin_device_gpiokeys = {
128}; 128};
129#endif 129#endif
130 130
131static struct resource bfin_gpios_resources = {
132 .start = 0,
133 .end = MAX_BLACKFIN_GPIOS - 1,
134 .flags = IORESOURCE_IRQ,
135};
136
137static struct platform_device bfin_gpios_device = {
138 .name = "simple-gpio",
139 .id = -1,
140 .num_resources = 1,
141 .resource = &bfin_gpios_resources,
142};
143
131#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE) 144#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
132static struct resource bfin_pcmcia_cf_resources[] = { 145static struct resource bfin_pcmcia_cf_resources[] = {
133 { 146 {
@@ -343,7 +356,7 @@ static struct platform_device net2272_bfin_device = {
343static struct mtd_partition stamp_partitions[] = { 356static struct mtd_partition stamp_partitions[] = {
344 { 357 {
345 .name = "Bootloader", 358 .name = "Bootloader",
346 .size = 0x20000, 359 .size = 0x40000,
347 .offset = 0, 360 .offset = 0,
348 }, { 361 }, {
349 .name = "Kernel", 362 .name = "Kernel",
@@ -351,7 +364,7 @@ static struct mtd_partition stamp_partitions[] = {
351 .offset = MTDPART_OFS_APPEND, 364 .offset = MTDPART_OFS_APPEND,
352 }, { 365 }, {
353 .name = "RootFS", 366 .name = "RootFS",
354 .size = 0x400000 - 0x20000 - 0xE0000 - 0x10000, 367 .size = 0x400000 - 0x40000 - 0xE0000 - 0x10000,
355 .offset = MTDPART_OFS_APPEND, 368 .offset = MTDPART_OFS_APPEND,
356 }, { 369 }, {
357 .name = "MAC Address", 370 .name = "MAC Address",
@@ -391,17 +404,17 @@ static struct platform_device stamp_flash_device = {
391static struct mtd_partition bfin_spi_flash_partitions[] = { 404static struct mtd_partition bfin_spi_flash_partitions[] = {
392 { 405 {
393 .name = "bootloader", 406 .name = "bootloader",
394 .size = 0x00020000, 407 .size = 0x00040000,
395 .offset = 0, 408 .offset = 0,
396 .mask_flags = MTD_CAP_ROM 409 .mask_flags = MTD_CAP_ROM
397 }, { 410 }, {
398 .name = "kernel", 411 .name = "kernel",
399 .size = 0xe0000, 412 .size = 0xe0000,
400 .offset = 0x20000 413 .offset = MTDPART_OFS_APPEND,
401 }, { 414 }, {
402 .name = "file system", 415 .name = "file system",
403 .size = 0x700000, 416 .size = MTDPART_SIZ_FULL,
404 .offset = 0x00100000, 417 .offset = MTDPART_OFS_APPEND,
405 } 418 }
406}; 419};
407 420
@@ -459,13 +472,6 @@ static struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
459}; 472};
460#endif 473#endif
461 474
462#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
463static struct bfin5xx_spi_chip ad5304_chip_info = {
464 .enable_dma = 0,
465 .bits_per_word = 16,
466};
467#endif
468
469#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) 475#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
470static struct bfin5xx_spi_chip spi_ad7877_chip_info = { 476static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
471 .enable_dma = 0, 477 .enable_dma = 0,
@@ -578,17 +584,6 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
578 .mode = SPI_MODE_3, 584 .mode = SPI_MODE_3,
579 }, 585 },
580#endif 586#endif
581#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
582 {
583 .modalias = "ad5304_spi",
584 .max_speed_hz = 1250000, /* max spi clock (SCK) speed in HZ */
585 .bus_num = 0,
586 .chip_select = 2,
587 .platform_data = NULL,
588 .controller_data = &ad5304_chip_info,
589 .mode = SPI_MODE_2,
590 },
591#endif
592#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE) 587#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
593 { 588 {
594 .modalias = "ad7877", 589 .modalias = "ad7877",
@@ -821,6 +816,8 @@ static struct platform_device *stamp_devices[] __initdata = {
821#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 816#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
822 &bfin_device_gpiokeys, 817 &bfin_device_gpiokeys,
823#endif 818#endif
819
820 &bfin_gpios_device,
824 &stamp_flash_device, 821 &stamp_flash_device,
825}; 822};
826 823
diff --git a/arch/blackfin/mach-bf548/boards/ezkit.c b/arch/blackfin/mach-bf548/boards/ezkit.c
index 916e963e83ba..40846aa034c4 100644
--- a/arch/blackfin/mach-bf548/boards/ezkit.c
+++ b/arch/blackfin/mach-bf548/boards/ezkit.c
@@ -285,8 +285,8 @@ static struct mtd_partition partition_info[] = {
285 }, 285 },
286 { 286 {
287 .name = "File System", 287 .name = "File System",
288 .offset = 4 * SIZE_1M, 288 .offset = MTDPART_OFS_APPEND,
289 .size = (256 - 4) * SIZE_1M, 289 .size = MTDPART_SIZ_FULL,
290 }, 290 },
291}; 291};
292 292
@@ -323,7 +323,7 @@ static struct platform_device bf5xx_nand_device = {
323}; 323};
324#endif 324#endif
325 325
326#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN) 326#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN_MODULE)
327static struct platform_device bf54x_sdh_device = { 327static struct platform_device bf54x_sdh_device = {
328 .name = "bfin-sdh", 328 .name = "bfin-sdh",
329 .id = 0, 329 .id = 0,
@@ -333,7 +333,7 @@ static struct platform_device bf54x_sdh_device = {
333static struct mtd_partition ezkit_partitions[] = { 333static struct mtd_partition ezkit_partitions[] = {
334 { 334 {
335 .name = "Bootloader", 335 .name = "Bootloader",
336 .size = 0x20000, 336 .size = 0x40000,
337 .offset = 0, 337 .offset = 0,
338 }, { 338 }, {
339 .name = "Kernel", 339 .name = "Kernel",
@@ -381,8 +381,8 @@ static struct mtd_partition bfin_spi_flash_partitions[] = {
381 .mask_flags = MTD_CAP_ROM 381 .mask_flags = MTD_CAP_ROM
382 }, { 382 }, {
383 .name = "linux kernel", 383 .name = "linux kernel",
384 .size = 0x1c0000, 384 .size = MTDPART_SIZ_FULL,
385 .offset = 0x40000 385 .offset = MTDPART_OFS_APPEND,
386 } 386 }
387}; 387};
388 388
@@ -594,6 +594,19 @@ static struct platform_device bfin_device_gpiokeys = {
594}; 594};
595#endif 595#endif
596 596
597static struct resource bfin_gpios_resources = {
598 .start = 0,
599 .end = MAX_BLACKFIN_GPIOS - 1,
600 .flags = IORESOURCE_IRQ,
601};
602
603static struct platform_device bfin_gpios_device = {
604 .name = "simple-gpio",
605 .id = -1,
606 .num_resources = 1,
607 .resource = &bfin_gpios_resources,
608};
609
597static struct platform_device *ezkit_devices[] __initdata = { 610static struct platform_device *ezkit_devices[] __initdata = {
598#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) 611#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
599 &rtc_device, 612 &rtc_device,
@@ -623,7 +636,7 @@ static struct platform_device *ezkit_devices[] __initdata = {
623 &bf5xx_nand_device, 636 &bf5xx_nand_device,
624#endif 637#endif
625 638
626#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN) 639#if defined(CONFIG_SDH_BFIN) || defined(CONFIG_SDH_BFIN_MODULE)
627 &bf54x_sdh_device, 640 &bf54x_sdh_device,
628#endif 641#endif
629 642
@@ -646,6 +659,8 @@ static struct platform_device *ezkit_devices[] __initdata = {
646#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE) 659#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
647 &bfin_device_gpiokeys, 660 &bfin_device_gpiokeys,
648#endif 661#endif
662
663 &bfin_gpios_device,
649 &ezkit_flash_device, 664 &ezkit_flash_device,
650}; 665};
651 666
diff --git a/arch/blackfin/mach-bf548/dma.c b/arch/blackfin/mach-bf548/dma.c
index 374803a8d2e8..f5479298bb79 100644
--- a/arch/blackfin/mach-bf548/dma.c
+++ b/arch/blackfin/mach-bf548/dma.c
@@ -27,6 +27,8 @@
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */ 28 */
29 29
30#include <linux/module.h>
31
30#include <asm/blackfin.h> 32#include <asm/blackfin.h>
31#include <asm/dma.h> 33#include <asm/dma.h>
32 34
diff --git a/arch/blackfin/mach-bf548/head.S b/arch/blackfin/mach-bf548/head.S
index 74fe258421a5..46222a75321a 100644
--- a/arch/blackfin/mach-bf548/head.S
+++ b/arch/blackfin/mach-bf548/head.S
@@ -28,6 +28,7 @@
28 */ 28 */
29 29
30#include <linux/linkage.h> 30#include <linux/linkage.h>
31#include <linux/init.h>
31#include <asm/blackfin.h> 32#include <asm/blackfin.h>
32#include <asm/trace.h> 33#include <asm/trace.h>
33#if CONFIG_BFIN_KERNEL_CLOCK 34#if CONFIG_BFIN_KERNEL_CLOCK
@@ -44,10 +45,9 @@
44 45
45#define INITIAL_STACK 0xFFB01000 46#define INITIAL_STACK 0xFFB01000
46 47
47.text 48__INIT
48 49
49ENTRY(__start) 50ENTRY(__start)
50ENTRY(__stext)
51 /* R0: argument of command line string, passed from uboot, save it */ 51 /* R0: argument of command line string, passed from uboot, save it */
52 R7 = R0; 52 R7 = R0;
53 /* Enable Cycle Counter and Nesting Of Interrupts */ 53 /* Enable Cycle Counter and Nesting Of Interrupts */
@@ -213,6 +213,7 @@ ENTRY(__stext)
213 213
214.LWAIT_HERE: 214.LWAIT_HERE:
215 jump .LWAIT_HERE; 215 jump .LWAIT_HERE;
216ENDPROC(__start)
216 217
217ENTRY(_real_start) 218ENTRY(_real_start)
218 [ -- sp ] = reti; 219 [ -- sp ] = reti;
@@ -285,6 +286,9 @@ ENTRY(_real_start)
285 call _start_kernel; 286 call _start_kernel;
286.L_exit: 287.L_exit:
287 jump.s .L_exit; 288 jump.s .L_exit;
289ENDPROC(_real_start)
290
291__FINIT
288 292
289.section .l1.text 293.section .l1.text
290#if CONFIG_BFIN_KERNEL_CLOCK 294#if CONFIG_BFIN_KERNEL_CLOCK
@@ -450,6 +454,7 @@ ENTRY(_start_dma_code)
450 SSYNC; 454 SSYNC;
451 455
452 RTS; 456 RTS;
457ENDPROC(_start_dma_code)
453#endif /* CONFIG_BFIN_KERNEL_CLOCK */ 458#endif /* CONFIG_BFIN_KERNEL_CLOCK */
454 459
455.data 460.data
diff --git a/arch/blackfin/mach-bf561/boards/ezkit.c b/arch/blackfin/mach-bf561/boards/ezkit.c
index 43c1b0982819..d357f648d963 100644
--- a/arch/blackfin/mach-bf561/boards/ezkit.c
+++ b/arch/blackfin/mach-bf561/boards/ezkit.c
@@ -223,7 +223,7 @@ static struct platform_device bfin_uart_device = {
223static struct mtd_partition ezkit_partitions[] = { 223static struct mtd_partition ezkit_partitions[] = {
224 { 224 {
225 .name = "Bootloader", 225 .name = "Bootloader",
226 .size = 0x20000, 226 .size = 0x40000,
227 .offset = 0, 227 .offset = 0,
228 }, { 228 }, {
229 .name = "Kernel", 229 .name = "Kernel",
@@ -389,6 +389,19 @@ static struct platform_device bfin_device_gpiokeys = {
389}; 389};
390#endif 390#endif
391 391
392static struct resource bfin_gpios_resources = {
393 .start = 0,
394 .end = MAX_BLACKFIN_GPIOS - 1,
395 .flags = IORESOURCE_IRQ,
396};
397
398static struct platform_device bfin_gpios_device = {
399 .name = "simple-gpio",
400 .id = -1,
401 .num_resources = 1,
402 .resource = &bfin_gpios_resources,
403};
404
392#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) 405#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
393#include <linux/i2c-gpio.h> 406#include <linux/i2c-gpio.h>
394 407
@@ -446,6 +459,7 @@ static struct platform_device *ezkit_devices[] __initdata = {
446 &isp1362_hcd_device, 459 &isp1362_hcd_device,
447#endif 460#endif
448 461
462 &bfin_gpios_device,
449 &ezkit_flash_device, 463 &ezkit_flash_device,
450}; 464};
451 465
diff --git a/arch/blackfin/mach-common/dpmc.S b/arch/blackfin/mach-common/dpmc.S
index b80ddd8b232d..9d45aa3265b1 100644
--- a/arch/blackfin/mach-common/dpmc.S
+++ b/arch/blackfin/mach-common/dpmc.S
@@ -31,140 +31,6 @@
31#include <asm/blackfin.h> 31#include <asm/blackfin.h>
32#include <asm/mach/irq.h> 32#include <asm/mach/irq.h>
33 33
34.text
35
36ENTRY(_unmask_wdog_wakeup_evt)
37 [--SP] = ( R7:0, P5:0 );
38#if defined(CONFIG_BF561)
39 P0.H = hi(SICA_IWR1);
40 P0.L = lo(SICA_IWR1);
41#elif defined(CONFIG_BF54x) || defined(CONFIG_BF52x)
42 P0.h = HI(SIC_IWR0);
43 P0.l = LO(SIC_IWR0);
44#else
45 P0.h = HI(SIC_IWR);
46 P0.l = LO(SIC_IWR);
47#endif
48 R7 = [P0];
49#if defined(CONFIG_BF561)
50 BITSET(R7, 27);
51#else
52 BITSET(R7,(IRQ_WATCH - IVG7));
53#endif
54 [P0] = R7;
55 SSYNC;
56
57 ( R7:0, P5:0 ) = [SP++];
58 RTS;
59
60.LWRITE_TO_STAT:
61 /* When watch dog timer is enabled, a write to STAT will load the
62 * contents of CNT to STAT
63 */
64 R7 = 0x0000(z);
65#if defined(CONFIG_BF561)
66 P0.h = HI(WDOGA_STAT);
67 P0.l = LO(WDOGA_STAT);
68#else
69 P0.h = HI(WDOG_STAT);
70 P0.l = LO(WDOG_STAT);
71#endif
72 [P0] = R7;
73 SSYNC;
74 JUMP .LSKIP_WRITE_TO_STAT;
75
76ENTRY(_program_wdog_timer)
77 [--SP] = ( R7:0, P5:0 );
78#if defined(CONFIG_BF561)
79 P0.h = HI(WDOGA_CNT);
80 P0.l = LO(WDOGA_CNT);
81#else
82 P0.h = HI(WDOG_CNT);
83 P0.l = LO(WDOG_CNT);
84#endif
85 [P0] = R0;
86 SSYNC;
87
88#if defined(CONFIG_BF561)
89 P0.h = HI(WDOGA_CTL);
90 P0.l = LO(WDOGA_CTL);
91#else
92 P0.h = HI(WDOG_CTL);
93 P0.l = LO(WDOG_CTL);
94#endif
95 R7 = W[P0](Z);
96 CC = BITTST(R7,1);
97 if !CC JUMP .LWRITE_TO_STAT;
98 CC = BITTST(R7,2);
99 if !CC JUMP .LWRITE_TO_STAT;
100
101.LSKIP_WRITE_TO_STAT:
102#if defined(CONFIG_BF561)
103 P0.h = HI(WDOGA_CTL);
104 P0.l = LO(WDOGA_CTL);
105#else
106 P0.h = HI(WDOG_CTL);
107 P0.l = LO(WDOG_CTL);
108#endif
109 R7 = W[P0](Z);
110 BITCLR(R7,1); /* Enable GP event */
111 BITSET(R7,2);
112 W[P0] = R7.L;
113 SSYNC;
114 NOP;
115
116 R7 = W[P0](Z);
117 BITCLR(R7,4); /* Enable the wdog counter */
118 W[P0] = R7.L;
119 SSYNC;
120
121 ( R7:0, P5:0 ) = [SP++];
122 RTS;
123
124ENTRY(_clear_wdog_wakeup_evt)
125 [--SP] = ( R7:0, P5:0 );
126
127#if defined(CONFIG_BF561)
128 P0.h = HI(WDOGA_CTL);
129 P0.l = LO(WDOGA_CTL);
130#else
131 P0.h = HI(WDOG_CTL);
132 P0.l = LO(WDOG_CTL);
133#endif
134 R7 = 0x0AD6(Z);
135 W[P0] = R7.L;
136 SSYNC;
137
138 R7 = W[P0](Z);
139 BITSET(R7,15);
140 W[P0] = R7.L;
141 SSYNC;
142
143 R7 = W[P0](Z);
144 BITSET(R7,1);
145 BITSET(R7,2);
146 W[P0] = R7.L;
147 SSYNC;
148
149 ( R7:0, P5:0 ) = [SP++];
150 RTS;
151
152ENTRY(_disable_wdog_timer)
153 [--SP] = ( R7:0, P5:0 );
154#if defined(CONFIG_BF561)
155 P0.h = HI(WDOGA_CTL);
156 P0.l = LO(WDOGA_CTL);
157#else
158 P0.h = HI(WDOG_CTL);
159 P0.l = LO(WDOG_CTL);
160#endif
161 R7 = 0xAD6(Z);
162 W[P0] = R7.L;
163 SSYNC;
164 ( R7:0, P5:0 ) = [SP++];
165 RTS;
166
167#if !defined(CONFIG_BF561)
168 34
169.section .l1.text 35.section .l1.text
170 36
@@ -459,10 +325,12 @@ ENTRY(_set_sic_iwr)
459 RTS; 325 RTS;
460 326
461ENTRY(_set_rtc_istat) 327ENTRY(_set_rtc_istat)
328#ifndef CONFIG_BF561
462 P0.H = hi(RTC_ISTAT); 329 P0.H = hi(RTC_ISTAT);
463 P0.L = lo(RTC_ISTAT); 330 P0.L = lo(RTC_ISTAT);
464 w[P0] = R0.L; 331 w[P0] = R0.L;
465 SSYNC; 332 SSYNC;
333#endif
466 RTS; 334 RTS;
467 335
468ENTRY(_test_pll_locked) 336ENTRY(_test_pll_locked)
@@ -473,4 +341,3 @@ ENTRY(_test_pll_locked)
473 CC = BITTST(R0,5); 341 CC = BITTST(R0,5);
474 IF !CC JUMP 1b; 342 IF !CC JUMP 1b;
475 RTS; 343 RTS;
476#endif
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S
index 2cbb7a0bc38e..cee54cebbc65 100644
--- a/arch/blackfin/mach-common/entry.S
+++ b/arch/blackfin/mach-common/entry.S
@@ -1369,7 +1369,7 @@ ENTRY(_sys_call_table)
1369 .long _sys_epoll_pwait 1369 .long _sys_epoll_pwait
1370 .long _sys_utimensat 1370 .long _sys_utimensat
1371 .long _sys_signalfd 1371 .long _sys_signalfd
1372 .long _sys_ni_syscall 1372 .long _sys_timerfd_create
1373 .long _sys_eventfd /* 350 */ 1373 .long _sys_eventfd /* 350 */
1374 .long _sys_pread64 1374 .long _sys_pread64
1375 .long _sys_pwrite64 1375 .long _sys_pwrite64
@@ -1378,6 +1378,9 @@ ENTRY(_sys_call_table)
1378 .long _sys_get_robust_list /* 355 */ 1378 .long _sys_get_robust_list /* 355 */
1379 .long _sys_fallocate 1379 .long _sys_fallocate
1380 .long _sys_semtimedop 1380 .long _sys_semtimedop
1381 .long _sys_timerfd_settime
1382 .long _sys_timerfd_gettime
1383
1381 .rept NR_syscalls-(.-_sys_call_table)/4 1384 .rept NR_syscalls-(.-_sys_call_table)/4
1382 .long _sys_ni_syscall 1385 .long _sys_ni_syscall
1383 .endr 1386 .endr
diff --git a/arch/blackfin/mach-common/ints-priority.c b/arch/blackfin/mach-common/ints-priority.c
index 880595afe98d..225ef14af75e 100644
--- a/arch/blackfin/mach-common/ints-priority.c
+++ b/arch/blackfin/mach-common/ints-priority.c
@@ -74,7 +74,7 @@ unsigned long bfin_sic_iwr[3]; /* Up to 3 SIC_IWRx registers */
74#endif 74#endif
75 75
76struct ivgx { 76struct ivgx {
77 /* irq number for request_irq, available in mach-bf533/irq.h */ 77 /* irq number for request_irq, available in mach-bf5xx/irq.h */
78 unsigned int irqno; 78 unsigned int irqno;
79 /* corresponding bit in the SIC_ISR register */ 79 /* corresponding bit in the SIC_ISR register */
80 unsigned int isrflag; 80 unsigned int isrflag;
@@ -86,7 +86,6 @@ struct ivg_slice {
86 struct ivgx *istop; 86 struct ivgx *istop;
87} ivg7_13[IVG13 - IVG7 + 1]; 87} ivg7_13[IVG13 - IVG7 + 1];
88 88
89static void search_IAR(void);
90 89
91/* 90/*
92 * Search SIC_IAR and fill tables with the irqvalues 91 * Search SIC_IAR and fill tables with the irqvalues
@@ -120,10 +119,10 @@ static void __init search_IAR(void)
120} 119}
121 120
122/* 121/*
123 * This is for BF533 internal IRQs 122 * This is for core internal IRQs
124 */ 123 */
125 124
126static void ack_noop(unsigned int irq) 125static void bfin_ack_noop(unsigned int irq)
127{ 126{
128 /* Dummy function. */ 127 /* Dummy function. */
129} 128}
@@ -156,11 +155,11 @@ static void bfin_internal_mask_irq(unsigned int irq)
156{ 155{
157#ifdef CONFIG_BF53x 156#ifdef CONFIG_BF53x
158 bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() & 157 bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() &
159 ~(1 << (irq - (IRQ_CORETMR + 1)))); 158 ~(1 << SIC_SYSIRQ(irq)));
160#else 159#else
161 unsigned mask_bank, mask_bit; 160 unsigned mask_bank, mask_bit;
162 mask_bank = (irq - (IRQ_CORETMR + 1)) / 32; 161 mask_bank = SIC_SYSIRQ(irq) / 32;
163 mask_bit = (irq - (IRQ_CORETMR + 1)) % 32; 162 mask_bit = SIC_SYSIRQ(irq) % 32;
164 bfin_write_SIC_IMASK(mask_bank, bfin_read_SIC_IMASK(mask_bank) & 163 bfin_write_SIC_IMASK(mask_bank, bfin_read_SIC_IMASK(mask_bank) &
165 ~(1 << mask_bit)); 164 ~(1 << mask_bit));
166#endif 165#endif
@@ -171,11 +170,11 @@ static void bfin_internal_unmask_irq(unsigned int irq)
171{ 170{
172#ifdef CONFIG_BF53x 171#ifdef CONFIG_BF53x
173 bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() | 172 bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() |
174 (1 << (irq - (IRQ_CORETMR + 1)))); 173 (1 << SIC_SYSIRQ(irq)));
175#else 174#else
176 unsigned mask_bank, mask_bit; 175 unsigned mask_bank, mask_bit;
177 mask_bank = (irq - (IRQ_CORETMR + 1)) / 32; 176 mask_bank = SIC_SYSIRQ(irq) / 32;
178 mask_bit = (irq - (IRQ_CORETMR + 1)) % 32; 177 mask_bit = SIC_SYSIRQ(irq) % 32;
179 bfin_write_SIC_IMASK(mask_bank, bfin_read_SIC_IMASK(mask_bank) | 178 bfin_write_SIC_IMASK(mask_bank, bfin_read_SIC_IMASK(mask_bank) |
180 (1 << mask_bit)); 179 (1 << mask_bit));
181#endif 180#endif
@@ -187,8 +186,8 @@ int bfin_internal_set_wake(unsigned int irq, unsigned int state)
187{ 186{
188 unsigned bank, bit; 187 unsigned bank, bit;
189 unsigned long flags; 188 unsigned long flags;
190 bank = (irq - (IRQ_CORETMR + 1)) / 32; 189 bank = SIC_SYSIRQ(irq) / 32;
191 bit = (irq - (IRQ_CORETMR + 1)) % 32; 190 bit = SIC_SYSIRQ(irq) % 32;
192 191
193 local_irq_save(flags); 192 local_irq_save(flags);
194 193
@@ -204,15 +203,18 @@ int bfin_internal_set_wake(unsigned int irq, unsigned int state)
204#endif 203#endif
205 204
206static struct irq_chip bfin_core_irqchip = { 205static struct irq_chip bfin_core_irqchip = {
207 .ack = ack_noop, 206 .ack = bfin_ack_noop,
208 .mask = bfin_core_mask_irq, 207 .mask = bfin_core_mask_irq,
209 .unmask = bfin_core_unmask_irq, 208 .unmask = bfin_core_unmask_irq,
210}; 209};
211 210
212static struct irq_chip bfin_internal_irqchip = { 211static struct irq_chip bfin_internal_irqchip = {
213 .ack = ack_noop, 212 .ack = bfin_ack_noop,
214 .mask = bfin_internal_mask_irq, 213 .mask = bfin_internal_mask_irq,
215 .unmask = bfin_internal_unmask_irq, 214 .unmask = bfin_internal_unmask_irq,
215 .mask_ack = bfin_internal_mask_irq,
216 .disable = bfin_internal_mask_irq,
217 .enable = bfin_internal_unmask_irq,
216#ifdef CONFIG_PM 218#ifdef CONFIG_PM
217 .set_wake = bfin_internal_set_wake, 219 .set_wake = bfin_internal_set_wake,
218#endif 220#endif
@@ -221,38 +223,23 @@ static struct irq_chip bfin_internal_irqchip = {
221#ifdef BF537_GENERIC_ERROR_INT_DEMUX 223#ifdef BF537_GENERIC_ERROR_INT_DEMUX
222static int error_int_mask; 224static int error_int_mask;
223 225
224static void bfin_generic_error_ack_irq(unsigned int irq)
225{
226
227}
228
229static void bfin_generic_error_mask_irq(unsigned int irq) 226static void bfin_generic_error_mask_irq(unsigned int irq)
230{ 227{
231 error_int_mask &= ~(1L << (irq - IRQ_PPI_ERROR)); 228 error_int_mask &= ~(1L << (irq - IRQ_PPI_ERROR));
232 229
233 if (!error_int_mask) { 230 if (!error_int_mask)
234 local_irq_disable(); 231 bfin_internal_mask_irq(IRQ_GENERIC_ERROR);
235 bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() &
236 ~(1 << (IRQ_GENERIC_ERROR -
237 (IRQ_CORETMR + 1))));
238 SSYNC();
239 local_irq_enable();
240 }
241} 232}
242 233
243static void bfin_generic_error_unmask_irq(unsigned int irq) 234static void bfin_generic_error_unmask_irq(unsigned int irq)
244{ 235{
245 local_irq_disable(); 236 bfin_internal_unmask_irq(IRQ_GENERIC_ERROR);
246 bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() | 1 <<
247 (IRQ_GENERIC_ERROR - (IRQ_CORETMR + 1)));
248 SSYNC();
249 local_irq_enable();
250
251 error_int_mask |= 1L << (irq - IRQ_PPI_ERROR); 237 error_int_mask |= 1L << (irq - IRQ_PPI_ERROR);
252} 238}
253 239
254static struct irq_chip bfin_generic_error_irqchip = { 240static struct irq_chip bfin_generic_error_irqchip = {
255 .ack = bfin_generic_error_ack_irq, 241 .ack = bfin_ack_noop,
242 .mask_ack = bfin_generic_error_mask_irq,
256 .mask = bfin_generic_error_mask_irq, 243 .mask = bfin_generic_error_mask_irq,
257 .unmask = bfin_generic_error_unmask_irq, 244 .unmask = bfin_generic_error_unmask_irq,
258}; 245};
@@ -608,7 +595,7 @@ static struct pin_int_t *pint[NR_PINT_SYS_IRQS] = {
608 (struct pin_int_t *)PINT3_MASK_SET, 595 (struct pin_int_t *)PINT3_MASK_SET,
609}; 596};
610 597
611unsigned short get_irq_base(u8 bank, u8 bmap) 598inline unsigned short get_irq_base(u8 bank, u8 bmap)
612{ 599{
613 600
614 u16 irq_base; 601 u16 irq_base;
@@ -969,17 +956,12 @@ int __init init_arch_irq(void)
969#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) 956#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561)
970 bfin_write_SIC_IMASK0(SIC_UNMASK_ALL); 957 bfin_write_SIC_IMASK0(SIC_UNMASK_ALL);
971 bfin_write_SIC_IMASK1(SIC_UNMASK_ALL); 958 bfin_write_SIC_IMASK1(SIC_UNMASK_ALL);
972 bfin_write_SIC_IWR0(IWR_ENABLE_ALL);
973 bfin_write_SIC_IWR1(IWR_ENABLE_ALL);
974# ifdef CONFIG_BF54x 959# ifdef CONFIG_BF54x
975 bfin_write_SIC_IMASK2(SIC_UNMASK_ALL); 960 bfin_write_SIC_IMASK2(SIC_UNMASK_ALL);
976 bfin_write_SIC_IWR2(IWR_ENABLE_ALL);
977# endif 961# endif
978#else 962#else
979 bfin_write_SIC_IMASK(SIC_UNMASK_ALL); 963 bfin_write_SIC_IMASK(SIC_UNMASK_ALL);
980 bfin_write_SIC_IWR(IWR_ENABLE_ALL);
981#endif 964#endif
982 SSYNC();
983 965
984 local_irq_disable(); 966 local_irq_disable();
985 967
@@ -1001,90 +983,53 @@ int __init init_arch_irq(void)
1001 set_irq_chip(irq, &bfin_core_irqchip); 983 set_irq_chip(irq, &bfin_core_irqchip);
1002 else 984 else
1003 set_irq_chip(irq, &bfin_internal_irqchip); 985 set_irq_chip(irq, &bfin_internal_irqchip);
1004#ifdef BF537_GENERIC_ERROR_INT_DEMUX
1005 if (irq != IRQ_GENERIC_ERROR) {
1006#endif
1007 986
1008 switch (irq) { 987 switch (irq) {
1009#if defined(CONFIG_BF53x) 988#if defined(CONFIG_BF53x)
1010 case IRQ_PROG_INTA: 989 case IRQ_PROG_INTA:
1011 set_irq_chained_handler(irq,
1012 bfin_demux_gpio_irq);
1013 break;
1014# if defined(BF537_FAMILY) && !(defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)) 990# if defined(BF537_FAMILY) && !(defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE))
1015 case IRQ_MAC_RX: 991 case IRQ_MAC_RX:
1016 set_irq_chained_handler(irq,
1017 bfin_demux_gpio_irq);
1018 break;
1019# endif 992# endif
1020#elif defined(CONFIG_BF54x) 993#elif defined(CONFIG_BF54x)
1021 case IRQ_PINT0: 994 case IRQ_PINT0:
1022 set_irq_chained_handler(irq, 995 case IRQ_PINT1:
1023 bfin_demux_gpio_irq); 996 case IRQ_PINT2:
1024 break; 997 case IRQ_PINT3:
1025 case IRQ_PINT1:
1026 set_irq_chained_handler(irq,
1027 bfin_demux_gpio_irq);
1028 break;
1029 case IRQ_PINT2:
1030 set_irq_chained_handler(irq,
1031 bfin_demux_gpio_irq);
1032 break;
1033 case IRQ_PINT3:
1034 set_irq_chained_handler(irq,
1035 bfin_demux_gpio_irq);
1036 break;
1037#elif defined(CONFIG_BF52x) 998#elif defined(CONFIG_BF52x)
1038 case IRQ_PORTF_INTA: 999 case IRQ_PORTF_INTA:
1039 set_irq_chained_handler(irq, 1000 case IRQ_PORTG_INTA:
1040 bfin_demux_gpio_irq); 1001 case IRQ_PORTH_INTA:
1041 break;
1042 case IRQ_PORTG_INTA:
1043 set_irq_chained_handler(irq,
1044 bfin_demux_gpio_irq);
1045 break;
1046 case IRQ_PORTH_INTA:
1047 set_irq_chained_handler(irq,
1048 bfin_demux_gpio_irq);
1049 break;
1050#elif defined(CONFIG_BF561) 1002#elif defined(CONFIG_BF561)
1051 case IRQ_PROG0_INTA: 1003 case IRQ_PROG0_INTA:
1052 set_irq_chained_handler(irq, 1004 case IRQ_PROG1_INTA:
1053 bfin_demux_gpio_irq); 1005 case IRQ_PROG2_INTA:
1054 break;
1055 case IRQ_PROG1_INTA:
1056 set_irq_chained_handler(irq,
1057 bfin_demux_gpio_irq);
1058 break;
1059 case IRQ_PROG2_INTA:
1060 set_irq_chained_handler(irq,
1061 bfin_demux_gpio_irq);
1062 break;
1063#endif 1006#endif
1064 default: 1007 set_irq_chained_handler(irq,
1065 set_irq_handler(irq, handle_simple_irq); 1008 bfin_demux_gpio_irq);
1066 break; 1009 break;
1067 }
1068
1069#ifdef BF537_GENERIC_ERROR_INT_DEMUX 1010#ifdef BF537_GENERIC_ERROR_INT_DEMUX
1070 } else { 1011 case IRQ_GENERIC_ERROR:
1071 set_irq_handler(irq, bfin_demux_error_irq); 1012 set_irq_handler(irq, bfin_demux_error_irq);
1072 } 1013
1014 break;
1073#endif 1015#endif
1016 default:
1017 set_irq_handler(irq, handle_simple_irq);
1018 break;
1019 }
1074 } 1020 }
1021
1075#ifdef BF537_GENERIC_ERROR_INT_DEMUX 1022#ifdef BF537_GENERIC_ERROR_INT_DEMUX
1076 for (irq = IRQ_PPI_ERROR; irq <= IRQ_UART1_ERROR; irq++) { 1023 for (irq = IRQ_PPI_ERROR; irq <= IRQ_UART1_ERROR; irq++)
1077 set_irq_chip(irq, &bfin_generic_error_irqchip); 1024 set_irq_chip_and_handler(irq, &bfin_generic_error_irqchip,
1078 set_irq_handler(irq, handle_level_irq); 1025 handle_level_irq);
1079 }
1080#endif 1026#endif
1081 1027
1082 for (irq = GPIO_IRQ_BASE; irq < NR_IRQS; irq++) { 1028 /* if configured as edge, then will be changed to do_edge_IRQ */
1029 for (irq = GPIO_IRQ_BASE; irq < NR_IRQS; irq++)
1030 set_irq_chip_and_handler(irq, &bfin_gpio_irqchip,
1031 handle_level_irq);
1083 1032
1084 set_irq_chip(irq, &bfin_gpio_irqchip);
1085 /* if configured as edge, then will be changed to do_edge_IRQ */
1086 set_irq_handler(irq, handle_level_irq);
1087 }
1088 1033
1089 bfin_write_IMASK(0); 1034 bfin_write_IMASK(0);
1090 CSYNC(); 1035 CSYNC();
@@ -1106,6 +1051,16 @@ int __init init_arch_irq(void)
1106 IMASK_IVG14 | IMASK_IVG13 | IMASK_IVG12 | IMASK_IVG11 | 1051 IMASK_IVG14 | IMASK_IVG13 | IMASK_IVG12 | IMASK_IVG11 |
1107 IMASK_IVG10 | IMASK_IVG9 | IMASK_IVG8 | IMASK_IVG7 | IMASK_IVGHW; 1052 IMASK_IVG10 | IMASK_IVG9 | IMASK_IVG8 | IMASK_IVG7 | IMASK_IVGHW;
1108 1053
1054#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561)
1055 bfin_write_SIC_IWR0(IWR_ENABLE_ALL);
1056 bfin_write_SIC_IWR1(IWR_ENABLE_ALL);
1057# ifdef CONFIG_BF54x
1058 bfin_write_SIC_IWR2(IWR_ENABLE_ALL);
1059# endif
1060#else
1061 bfin_write_SIC_IWR(IWR_ENABLE_ALL);
1062#endif
1063
1109 return 0; 1064 return 0;
1110} 1065}
1111 1066
@@ -1122,7 +1077,6 @@ void do_irq(int vec, struct pt_regs *fp)
1122#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561) 1077#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x) || defined(CONFIG_BF561)
1123 unsigned long sic_status[3]; 1078 unsigned long sic_status[3];
1124 1079
1125 SSYNC();
1126 sic_status[0] = bfin_read_SIC_ISR0() & bfin_read_SIC_IMASK0(); 1080 sic_status[0] = bfin_read_SIC_ISR0() & bfin_read_SIC_IMASK0();
1127 sic_status[1] = bfin_read_SIC_ISR1() & bfin_read_SIC_IMASK1(); 1081 sic_status[1] = bfin_read_SIC_ISR1() & bfin_read_SIC_IMASK1();
1128#ifdef CONFIG_BF54x 1082#ifdef CONFIG_BF54x
@@ -1138,7 +1092,7 @@ void do_irq(int vec, struct pt_regs *fp)
1138 } 1092 }
1139#else 1093#else
1140 unsigned long sic_status; 1094 unsigned long sic_status;
1141 SSYNC(); 1095
1142 sic_status = bfin_read_SIC_IMASK() & bfin_read_SIC_ISR(); 1096 sic_status = bfin_read_SIC_IMASK() & bfin_read_SIC_ISR();
1143 1097
1144 for (;; ivg++) { 1098 for (;; ivg++) {
diff --git a/arch/blackfin/mm/init.c b/arch/blackfin/mm/init.c
index 1f516c55bde6..ec3141fefd20 100644
--- a/arch/blackfin/mm/init.c
+++ b/arch/blackfin/mm/init.c
@@ -181,7 +181,7 @@ void __init mem_init(void)
181 } 181 }
182} 182}
183 183
184static __init void free_init_pages(const char *what, unsigned long begin, unsigned long end) 184static void __init free_init_pages(const char *what, unsigned long begin, unsigned long end)
185{ 185{
186 unsigned long addr; 186 unsigned long addr;
187 /* next to check that the page we free is not a partial page */ 187 /* next to check that the page we free is not a partial page */
@@ -203,7 +203,7 @@ void __init free_initrd_mem(unsigned long start, unsigned long end)
203} 203}
204#endif 204#endif
205 205
206void __init free_initmem(void) 206void __init_refok free_initmem(void)
207{ 207{
208#if defined CONFIG_RAMKERNEL && !defined CONFIG_MPU 208#if defined CONFIG_RAMKERNEL && !defined CONFIG_MPU
209 free_init_pages("unused kernel memory", 209 free_init_pages("unused kernel memory",
diff --git a/arch/cris/arch-v10/kernel/time.c b/arch/cris/arch-v10/kernel/time.c
index 9310a7b476e9..525483f0ddf8 100644
--- a/arch/cris/arch-v10/kernel/time.c
+++ b/arch/cris/arch-v10/kernel/time.c
@@ -13,7 +13,7 @@
13#include <linux/swap.h> 13#include <linux/swap.h>
14#include <linux/sched.h> 14#include <linux/sched.h>
15#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/vmstat.h> 16#include <linux/mm.h>
17#include <asm/arch/svinto.h> 17#include <asm/arch/svinto.h>
18#include <asm/types.h> 18#include <asm/types.h>
19#include <asm/signal.h> 19#include <asm/signal.h>
diff --git a/arch/cris/arch-v10/lib/string.c b/arch/cris/arch-v10/lib/string.c
index 7161a2bef4fe..c7bd6ebdc93c 100644
--- a/arch/cris/arch-v10/lib/string.c
+++ b/arch/cris/arch-v10/lib/string.c
@@ -1,55 +1,59 @@
1/*#************************************************************************#*/ 1/* A memcpy for CRIS.
2/*#-------------------------------------------------------------------------*/ 2 Copyright (C) 1994-2005 Axis Communications.
3/*# */ 3 All rights reserved.
4/*# FUNCTION NAME: memcpy() */ 4
5/*# */ 5 Redistribution and use in source and binary forms, with or without
6/*# PARAMETERS: void* dst; Destination address. */ 6 modification, are permitted provided that the following conditions
7/*# void* src; Source address. */ 7 are met:
8/*# int len; Number of bytes to copy. */ 8
9/*# */ 9 1. Redistributions of source code must retain the above copyright
10/*# RETURNS: dst. */ 10 notice, this list of conditions and the following disclaimer.
11/*# */ 11
12/*# DESCRIPTION: Copies len bytes of memory from src to dst. No guarantees */ 12 2. Neither the name of Axis Communications nor the names of its
13/*# about copying of overlapping memory areas. This routine is */ 13 contributors may be used to endorse or promote products derived
14/*# very sensitive to compiler changes in register allocation. */ 14 from this software without specific prior written permission.
15/*# Should really be rewritten to avoid this problem. */ 15
16/*# */ 16 THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
17/*#-------------------------------------------------------------------------*/ 17 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18/*# */ 18 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19/*# HISTORY */ 19 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
20/*# */ 20 COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
21/*# DATE NAME CHANGES */ 21 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22/*# ---- ---- ------- */ 22 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23/*# 941007 Kenny R Creation */ 23 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24/*# 941011 Kenny R Lots of optimizations and inlining. */ 24 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
25/*# 941129 Ulf A Adapted for use in libc. */ 25 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
26/*# 950216 HP N==0 forgotten if non-aligned src/dst. */ 26 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27/*# Added some optimizations. */ 27 POSSIBILITY OF SUCH DAMAGE. */
28/*# 001025 HP Make src and dst char *. Align dst to */ 28
29/*# dword, not just word-if-both-src-and-dst- */ 29/* FIXME: This file should really only be used for reference, as the
30/*# are-misaligned. */ 30 result is somewhat depending on gcc generating what we expect rather
31/*# */ 31 than what we describe. An assembly file should be used instead. */
32/*#-------------------------------------------------------------------------*/ 32
33 33#include <stddef.h>
34#include <linux/types.h> 34
35 35/* Break even between movem and move16 is really at 38.7 * 2, but
36void *memcpy(void *pdst, 36 modulo 44, so up to the next multiple of 44, we use ordinary code. */
37 const void *psrc, 37#define MEMCPY_BY_BLOCK_THRESHOLD (44 * 2)
38 size_t pn) 38
39/* No name ambiguities in this file. */
40__asm__ (".syntax no_register_prefix");
41
42void *
43memcpy(void *pdst, const void *psrc, size_t pn)
39{ 44{
40 /* Ok. Now we want the parameters put in special registers. 45 /* Now we want the parameters put in special registers.
41 Make sure the compiler is able to make something useful of this. 46 Make sure the compiler is able to make something useful of this.
42 As it is now: r10 -> r13; r11 -> r11 (nop); r12 -> r12 (nop). 47 As it is now: r10 -> r13; r11 -> r11 (nop); r12 -> r12 (nop).
43 48
44 If gcc was alright, it really would need no temporaries, and no 49 If gcc was allright, it really would need no temporaries, and no
45 stack space to save stuff on. */ 50 stack space to save stuff on. */
46 51
47 register void *return_dst __asm__ ("r10") = pdst; 52 register void *return_dst __asm__ ("r10") = pdst;
48 register char *dst __asm__ ("r13") = pdst; 53 register unsigned char *dst __asm__ ("r13") = pdst;
49 register const char *src __asm__ ("r11") = psrc; 54 register unsigned const char *src __asm__ ("r11") = psrc;
50 register int n __asm__ ("r12") = pn; 55 register int n __asm__ ("r12") = pn;
51 56
52
53 /* When src is aligned but not dst, this makes a few extra needless 57 /* When src is aligned but not dst, this makes a few extra needless
54 cycles. I believe it would take as many to check that the 58 cycles. I believe it would take as many to check that the
55 re-alignment was unnecessary. */ 59 re-alignment was unnecessary. */
@@ -59,167 +63,174 @@ void *memcpy(void *pdst,
59 && n >= 3) 63 && n >= 3)
60 { 64 {
61 if ((unsigned long) dst & 1) 65 if ((unsigned long) dst & 1)
62 { 66 {
63 n--; 67 n--;
64 *(char*)dst = *(char*)src; 68 *dst = *src;
65 src++; 69 src++;
66 dst++; 70 dst++;
67 } 71 }
68 72
69 if ((unsigned long) dst & 2) 73 if ((unsigned long) dst & 2)
70 { 74 {
71 n -= 2; 75 n -= 2;
72 *(short*)dst = *(short*)src; 76 *(short *) dst = *(short *) src;
73 src += 2; 77 src += 2;
74 dst += 2; 78 dst += 2;
75 } 79 }
76 } 80 }
77 81
78 /* Decide which copying method to use. */ 82 /* Decide which copying method to use. */
79 if (n >= 44*2) /* Break even between movem and 83 if (n >= MEMCPY_BY_BLOCK_THRESHOLD)
80 move16 is at 38.7*2, but modulo 44. */ 84 {
81 { 85 /* It is not optimal to tell the compiler about clobbering any
82 /* For large copies we use 'movem' */ 86 registers; that will move the saving/restoring of those registers
83 87 to the function prologue/epilogue, and make non-movem sizes
84 /* It is not optimal to tell the compiler about clobbering any 88 suboptimal. */
85 registers; that will move the saving/restoring of those registers 89 __asm__ volatile
86 to the function prologue/epilogue, and make non-movem sizes 90 ("\
87 suboptimal. 91 ;; GCC does promise correct register allocations, but let's \n\
88 92 ;; make sure it keeps its promises. \n\
89 This method is not foolproof; it assumes that the "asm reg" 93 .ifnc %0-%1-%2,$r13-$r11-$r12 \n\
90 declarations at the beginning of the function really are used 94 .error \"GCC reg alloc bug: %0-%1-%4 != $r13-$r12-$r11\" \n\
91 here (beware: they may be moved to temporary registers). 95 .endif \n\
92 This way, we do not have to save/move the registers around into 96 \n\
93 temporaries; we can safely use them straight away. 97 ;; Save the registers we'll use in the movem process \n\
94 98 ;; on the stack. \n\
95 If you want to check that the allocation was right; then 99 subq 11*4,sp \n\
96 check the equalities in the first comment. It should say 100 movem r10,[sp] \n\
97 "r13=r13, r11=r11, r12=r12" */
98 __asm__ volatile ("\n\
99 ;; Check that the following is true (same register names on \n\
100 ;; both sides of equal sign, as in r8=r8): \n\
101 ;; %0=r13, %1=r11, %2=r12 \n\
102 ;; \n\
103 ;; Save the registers we'll use in the movem process \n\
104 ;; on the stack. \n\
105 subq 11*4,$sp \n\
106 movem $r10,[$sp] \n\
107 \n\ 101 \n\
108 ;; Now we've got this: \n\ 102 ;; Now we've got this: \n\
109 ;; r11 - src \n\ 103 ;; r11 - src \n\
110 ;; r13 - dst \n\ 104 ;; r13 - dst \n\
111 ;; r12 - n \n\ 105 ;; r12 - n \n\
112 \n\ 106 \n\
113 ;; Update n for the first loop \n\ 107 ;; Update n for the first loop. \n\
114 subq 44,$r12 \n\ 108 subq 44,r12 \n\
1150: \n\ 1090: \n\
116 movem [$r11+],$r10 \n\ 110"
117 subq 44,$r12 \n\ 111#ifdef __arch_common_v10_v32
118 bge 0b \n\ 112 /* Cater to branch offset difference between v32 and v10. We
119 movem $r10,[$r13+] \n\ 113 assume the branch below has an 8-bit offset. */
114" setf\n"
115#endif
116" movem [r11+],r10 \n\
117 subq 44,r12 \n\
118 bge 0b \n\
119 movem r10,[r13+] \n\
120 \n\ 120 \n\
121 addq 44,$r12 ;; compensate for last loop underflowing n \n\ 121 ;; Compensate for last loop underflowing n. \n\
122 addq 44,r12 \n\
122 \n\ 123 \n\
123 ;; Restore registers from stack \n\ 124 ;; Restore registers from stack. \n\
124 movem [$sp+],$r10" 125 movem [sp+],r10"
125 126
126 /* Outputs */ : "=r" (dst), "=r" (src), "=r" (n) 127 /* Outputs. */
127 /* Inputs */ : "0" (dst), "1" (src), "2" (n)); 128 : "=r" (dst), "=r" (src), "=r" (n)
128
129 }
130 129
131 /* Either we directly starts copying, using dword copying 130 /* Inputs. */
132 in a loop, or we copy as much as possible with 'movem' 131 : "0" (dst), "1" (src), "2" (n));
133 and then the last block (<44 bytes) is copied here. 132 }
134 This will work since 'movem' will have updated src,dst,n. */
135 133
136 while ( n >= 16 ) 134 while (n >= 16)
137 { 135 {
138 *((long*)dst)++ = *((long*)src)++; 136 *(long *) dst = *(long *) src; dst += 4; src += 4;
139 *((long*)dst)++ = *((long*)src)++; 137 *(long *) dst = *(long *) src; dst += 4; src += 4;
140 *((long*)dst)++ = *((long*)src)++; 138 *(long *) dst = *(long *) src; dst += 4; src += 4;
141 *((long*)dst)++ = *((long*)src)++; 139 *(long *) dst = *(long *) src; dst += 4; src += 4;
142 n -= 16; 140
143 } 141 n -= 16;
142 }
144 143
145 /* A switch() is definitely the fastest although it takes a LOT of code.
146 * Particularly if you inline code this.
147 */
148 switch (n) 144 switch (n)
149 { 145 {
150 case 0: 146 case 0:
151 break; 147 break;
148
152 case 1: 149 case 1:
153 *(char*)dst = *(char*)src; 150 *dst = *src;
154 break; 151 break;
152
155 case 2: 153 case 2:
156 *(short*)dst = *(short*)src; 154 *(short *) dst = *(short *) src;
157 break; 155 break;
156
158 case 3: 157 case 3:
159 *((short*)dst)++ = *((short*)src)++; 158 *(short *) dst = *(short *) src; dst += 2; src += 2;
160 *(char*)dst = *(char*)src; 159 *dst = *src;
161 break; 160 break;
161
162 case 4: 162 case 4:
163 *((long*)dst)++ = *((long*)src)++; 163 *(long *) dst = *(long *) src;
164 break; 164 break;
165
165 case 5: 166 case 5:
166 *((long*)dst)++ = *((long*)src)++; 167 *(long *) dst = *(long *) src; dst += 4; src += 4;
167 *(char*)dst = *(char*)src; 168 *dst = *src;
168 break; 169 break;
170
169 case 6: 171 case 6:
170 *((long*)dst)++ = *((long*)src)++; 172 *(long *) dst = *(long *) src; dst += 4; src += 4;
171 *(short*)dst = *(short*)src; 173 *(short *) dst = *(short *) src;
172 break; 174 break;
175
173 case 7: 176 case 7:
174 *((long*)dst)++ = *((long*)src)++; 177 *(long *) dst = *(long *) src; dst += 4; src += 4;
175 *((short*)dst)++ = *((short*)src)++; 178 *(short *) dst = *(short *) src; dst += 2; src += 2;
176 *(char*)dst = *(char*)src; 179 *dst = *src;
177 break; 180 break;
181
178 case 8: 182 case 8:
179 *((long*)dst)++ = *((long*)src)++; 183 *(long *) dst = *(long *) src; dst += 4; src += 4;
180 *((long*)dst)++ = *((long*)src)++; 184 *(long *) dst = *(long *) src;
181 break; 185 break;
186
182 case 9: 187 case 9:
183 *((long*)dst)++ = *((long*)src)++; 188 *(long *) dst = *(long *) src; dst += 4; src += 4;
184 *((long*)dst)++ = *((long*)src)++; 189 *(long *) dst = *(long *) src; dst += 4; src += 4;
185 *(char*)dst = *(char*)src; 190 *dst = *src;
186 break; 191 break;
192
187 case 10: 193 case 10:
188 *((long*)dst)++ = *((long*)src)++; 194 *(long *) dst = *(long *) src; dst += 4; src += 4;
189 *((long*)dst)++ = *((long*)src)++; 195 *(long *) dst = *(long *) src; dst += 4; src += 4;
190 *(short*)dst = *(short*)src; 196 *(short *) dst = *(short *) src;
191 break; 197 break;
198
192 case 11: 199 case 11:
193 *((long*)dst)++ = *((long*)src)++; 200 *(long *) dst = *(long *) src; dst += 4; src += 4;
194 *((long*)dst)++ = *((long*)src)++; 201 *(long *) dst = *(long *) src; dst += 4; src += 4;
195 *((short*)dst)++ = *((short*)src)++; 202 *(short *) dst = *(short *) src; dst += 2; src += 2;
196 *(char*)dst = *(char*)src; 203 *dst = *src;
197 break; 204 break;
205
198 case 12: 206 case 12:
199 *((long*)dst)++ = *((long*)src)++; 207 *(long *) dst = *(long *) src; dst += 4; src += 4;
200 *((long*)dst)++ = *((long*)src)++; 208 *(long *) dst = *(long *) src; dst += 4; src += 4;
201 *((long*)dst)++ = *((long*)src)++; 209 *(long *) dst = *(long *) src;
202 break; 210 break;
211
203 case 13: 212 case 13:
204 *((long*)dst)++ = *((long*)src)++; 213 *(long *) dst = *(long *) src; dst += 4; src += 4;
205 *((long*)dst)++ = *((long*)src)++; 214 *(long *) dst = *(long *) src; dst += 4; src += 4;
206 *((long*)dst)++ = *((long*)src)++; 215 *(long *) dst = *(long *) src; dst += 4; src += 4;
207 *(char*)dst = *(char*)src; 216 *dst = *src;
208 break; 217 break;
218
209 case 14: 219 case 14:
210 *((long*)dst)++ = *((long*)src)++; 220 *(long *) dst = *(long *) src; dst += 4; src += 4;
211 *((long*)dst)++ = *((long*)src)++; 221 *(long *) dst = *(long *) src; dst += 4; src += 4;
212 *((long*)dst)++ = *((long*)src)++; 222 *(long *) dst = *(long *) src; dst += 4; src += 4;
213 *(short*)dst = *(short*)src; 223 *(short *) dst = *(short *) src;
214 break; 224 break;
225
215 case 15: 226 case 15:
216 *((long*)dst)++ = *((long*)src)++; 227 *(long *) dst = *(long *) src; dst += 4; src += 4;
217 *((long*)dst)++ = *((long*)src)++; 228 *(long *) dst = *(long *) src; dst += 4; src += 4;
218 *((long*)dst)++ = *((long*)src)++; 229 *(long *) dst = *(long *) src; dst += 4; src += 4;
219 *((short*)dst)++ = *((short*)src)++; 230 *(short *) dst = *(short *) src; dst += 2; src += 2;
220 *(char*)dst = *(char*)src; 231 *dst = *src;
221 break; 232 break;
222 } 233 }
223 234
224 return return_dst; /* destination pointer. */ 235 return return_dst;
225} /* memcpy() */ 236}
diff --git a/arch/cris/arch-v10/lib/usercopy.c b/arch/cris/arch-v10/lib/usercopy.c
index b8e6c0430e5b..b0a608da7bd1 100644
--- a/arch/cris/arch-v10/lib/usercopy.c
+++ b/arch/cris/arch-v10/lib/usercopy.c
@@ -193,7 +193,7 @@ __copy_user (void __user *pdst, const void *psrc, unsigned long pn)
193 inaccessible. */ 193 inaccessible. */
194 194
195unsigned long 195unsigned long
196__copy_user_zeroing (void __user *pdst, const void *psrc, unsigned long pn) 196__copy_user_zeroing(void *pdst, const void __user *psrc, unsigned long pn)
197{ 197{
198 /* We want the parameters put in special registers. 198 /* We want the parameters put in special registers.
199 Make sure the compiler is able to make something useful of this. 199 Make sure the compiler is able to make something useful of this.
diff --git a/arch/cris/arch-v32/lib/string.c b/arch/cris/arch-v32/lib/string.c
index 6740b2cebae5..c7bd6ebdc93c 100644
--- a/arch/cris/arch-v32/lib/string.c
+++ b/arch/cris/arch-v32/lib/string.c
@@ -1,55 +1,59 @@
1/*#************************************************************************#*/ 1/* A memcpy for CRIS.
2/*#-------------------------------------------------------------------------*/ 2 Copyright (C) 1994-2005 Axis Communications.
3/*# */ 3 All rights reserved.
4/*# FUNCTION NAME: memcpy() */ 4
5/*# */ 5 Redistribution and use in source and binary forms, with or without
6/*# PARAMETERS: void* dst; Destination address. */ 6 modification, are permitted provided that the following conditions
7/*# void* src; Source address. */ 7 are met:
8/*# int len; Number of bytes to copy. */ 8
9/*# */ 9 1. Redistributions of source code must retain the above copyright
10/*# RETURNS: dst. */ 10 notice, this list of conditions and the following disclaimer.
11/*# */ 11
12/*# DESCRIPTION: Copies len bytes of memory from src to dst. No guarantees */ 12 2. Neither the name of Axis Communications nor the names of its
13/*# about copying of overlapping memory areas. This routine is */ 13 contributors may be used to endorse or promote products derived
14/*# very sensitive to compiler changes in register allocation. */ 14 from this software without specific prior written permission.
15/*# Should really be rewritten to avoid this problem. */ 15
16/*# */ 16 THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
17/*#-------------------------------------------------------------------------*/ 17 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18/*# */ 18 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19/*# HISTORY */ 19 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
20/*# */ 20 COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
21/*# DATE NAME CHANGES */ 21 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22/*# ---- ---- ------- */ 22 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23/*# 941007 Kenny R Creation */ 23 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24/*# 941011 Kenny R Lots of optimizations and inlining. */ 24 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
25/*# 941129 Ulf A Adapted for use in libc. */ 25 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
26/*# 950216 HP N==0 forgotten if non-aligned src/dst. */ 26 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27/*# Added some optimizations. */ 27 POSSIBILITY OF SUCH DAMAGE. */
28/*# 001025 HP Make src and dst char *. Align dst to */ 28
29/*# dword, not just word-if-both-src-and-dst- */ 29/* FIXME: This file should really only be used for reference, as the
30/*# are-misaligned. */ 30 result is somewhat depending on gcc generating what we expect rather
31/*# */ 31 than what we describe. An assembly file should be used instead. */
32/*#-------------------------------------------------------------------------*/ 32
33 33#include <stddef.h>
34#include <linux/types.h> 34
35 35/* Break even between movem and move16 is really at 38.7 * 2, but
36void *memcpy(void *pdst, 36 modulo 44, so up to the next multiple of 44, we use ordinary code. */
37 const void *psrc, 37#define MEMCPY_BY_BLOCK_THRESHOLD (44 * 2)
38 size_t pn) 38
39/* No name ambiguities in this file. */
40__asm__ (".syntax no_register_prefix");
41
42void *
43memcpy(void *pdst, const void *psrc, size_t pn)
39{ 44{
40 /* Ok. Now we want the parameters put in special registers. 45 /* Now we want the parameters put in special registers.
41 Make sure the compiler is able to make something useful of this. 46 Make sure the compiler is able to make something useful of this.
42 As it is now: r10 -> r13; r11 -> r11 (nop); r12 -> r12 (nop). 47 As it is now: r10 -> r13; r11 -> r11 (nop); r12 -> r12 (nop).
43 48
44 If gcc was alright, it really would need no temporaries, and no 49 If gcc was allright, it really would need no temporaries, and no
45 stack space to save stuff on. */ 50 stack space to save stuff on. */
46 51
47 register void *return_dst __asm__ ("r10") = pdst; 52 register void *return_dst __asm__ ("r10") = pdst;
48 register char *dst __asm__ ("r13") = pdst; 53 register unsigned char *dst __asm__ ("r13") = pdst;
49 register const char *src __asm__ ("r11") = psrc; 54 register unsigned const char *src __asm__ ("r11") = psrc;
50 register int n __asm__ ("r12") = pn; 55 register int n __asm__ ("r12") = pn;
51 56
52
53 /* When src is aligned but not dst, this makes a few extra needless 57 /* When src is aligned but not dst, this makes a few extra needless
54 cycles. I believe it would take as many to check that the 58 cycles. I believe it would take as many to check that the
55 re-alignment was unnecessary. */ 59 re-alignment was unnecessary. */
@@ -59,161 +63,174 @@ void *memcpy(void *pdst,
59 && n >= 3) 63 && n >= 3)
60 { 64 {
61 if ((unsigned long) dst & 1) 65 if ((unsigned long) dst & 1)
62 { 66 {
63 n--; 67 n--;
64 *(char*)dst = *(char*)src; 68 *dst = *src;
65 src++; 69 src++;
66 dst++; 70 dst++;
67 } 71 }
68 72
69 if ((unsigned long) dst & 2) 73 if ((unsigned long) dst & 2)
70 { 74 {
71 n -= 2; 75 n -= 2;
72 *(short*)dst = *(short*)src; 76 *(short *) dst = *(short *) src;
73 src += 2; 77 src += 2;
74 dst += 2; 78 dst += 2;
75 } 79 }
76 } 80 }
77 81
78 /* Decide which copying method to use. Movem is dirt cheap, so the 82 /* Decide which copying method to use. */
79 overheap is low enough to always use the minimum block size as the 83 if (n >= MEMCPY_BY_BLOCK_THRESHOLD)
80 threshold. */ 84 {
81 if (n >= 44) 85 /* It is not optimal to tell the compiler about clobbering any
82 { 86 registers; that will move the saving/restoring of those registers
83 /* For large copies we use 'movem' */ 87 to the function prologue/epilogue, and make non-movem sizes
84 88 suboptimal. */
85 /* It is not optimal to tell the compiler about clobbering any 89 __asm__ volatile
86 registers; that will move the saving/restoring of those registers 90 ("\
87 to the function prologue/epilogue, and make non-movem sizes 91 ;; GCC does promise correct register allocations, but let's \n\
88 suboptimal. */ 92 ;; make sure it keeps its promises. \n\
89 __asm__ volatile (" \n\ 93 .ifnc %0-%1-%2,$r13-$r11-$r12 \n\
90 ;; Check that the register asm declaration got right. \n\ 94 .error \"GCC reg alloc bug: %0-%1-%4 != $r13-$r12-$r11\" \n\
91 ;; The GCC manual explicitly says TRT will happen. \n\ 95 .endif \n\
92 .ifnc %0-%1-%2,$r13-$r11-$r12 \n\
93 .err \n\
94 .endif \n\
95 \n\
96 ;; Save the registers we'll use in the movem process \n\
97 \n\ 96 \n\
98 ;; on the stack. \n\ 97 ;; Save the registers we'll use in the movem process \n\
99 subq 11*4,$sp \n\ 98 ;; on the stack. \n\
100 movem $r10,[$sp] \n\ 99 subq 11*4,sp \n\
100 movem r10,[sp] \n\
101 \n\ 101 \n\
102 ;; Now we've got this: \n\ 102 ;; Now we've got this: \n\
103 ;; r11 - src \n\ 103 ;; r11 - src \n\
104 ;; r13 - dst \n\ 104 ;; r13 - dst \n\
105 ;; r12 - n \n\ 105 ;; r12 - n \n\
106 \n\ 106 \n\
107 ;; Update n for the first loop \n\ 107 ;; Update n for the first loop. \n\
108 subq 44,$r12 \n\ 108 subq 44,r12 \n\
1090: \n\ 1090: \n\
110 movem [$r11+],$r10 \n\ 110"
111 subq 44,$r12 \n\ 111#ifdef __arch_common_v10_v32
112 bge 0b \n\ 112 /* Cater to branch offset difference between v32 and v10. We
113 movem $r10,[$r13+] \n\ 113 assume the branch below has an 8-bit offset. */
114" setf\n"
115#endif
116" movem [r11+],r10 \n\
117 subq 44,r12 \n\
118 bge 0b \n\
119 movem r10,[r13+] \n\
114 \n\ 120 \n\
115 addq 44,$r12 ;; compensate for last loop underflowing n \n\ 121 ;; Compensate for last loop underflowing n. \n\
122 addq 44,r12 \n\
116 \n\ 123 \n\
117 ;; Restore registers from stack \n\ 124 ;; Restore registers from stack. \n\
118 movem [$sp+],$r10" 125 movem [sp+],r10"
119 126
120 /* Outputs */ : "=r" (dst), "=r" (src), "=r" (n) 127 /* Outputs. */
121 /* Inputs */ : "0" (dst), "1" (src), "2" (n)); 128 : "=r" (dst), "=r" (src), "=r" (n)
122 129
123 } 130 /* Inputs. */
131 : "0" (dst), "1" (src), "2" (n));
132 }
124 133
125 /* Either we directly starts copying, using dword copying 134 while (n >= 16)
126 in a loop, or we copy as much as possible with 'movem' 135 {
127 and then the last block (<44 bytes) is copied here. 136 *(long *) dst = *(long *) src; dst += 4; src += 4;
128 This will work since 'movem' will have updated src,dst,n. */ 137 *(long *) dst = *(long *) src; dst += 4; src += 4;
138 *(long *) dst = *(long *) src; dst += 4; src += 4;
139 *(long *) dst = *(long *) src; dst += 4; src += 4;
129 140
130 while ( n >= 16 ) 141 n -= 16;
131 { 142 }
132 *((long*)dst)++ = *((long*)src)++;
133 *((long*)dst)++ = *((long*)src)++;
134 *((long*)dst)++ = *((long*)src)++;
135 *((long*)dst)++ = *((long*)src)++;
136 n -= 16;
137 }
138 143
139 /* A switch() is definitely the fastest although it takes a LOT of code.
140 * Particularly if you inline code this.
141 */
142 switch (n) 144 switch (n)
143 { 145 {
144 case 0: 146 case 0:
145 break; 147 break;
148
146 case 1: 149 case 1:
147 *(char*)dst = *(char*)src; 150 *dst = *src;
148 break; 151 break;
152
149 case 2: 153 case 2:
150 *(short*)dst = *(short*)src; 154 *(short *) dst = *(short *) src;
151 break; 155 break;
156
152 case 3: 157 case 3:
153 *((short*)dst)++ = *((short*)src)++; 158 *(short *) dst = *(short *) src; dst += 2; src += 2;
154 *(char*)dst = *(char*)src; 159 *dst = *src;
155 break; 160 break;
161
156 case 4: 162 case 4:
157 *((long*)dst)++ = *((long*)src)++; 163 *(long *) dst = *(long *) src;
158 break; 164 break;
165
159 case 5: 166 case 5:
160 *((long*)dst)++ = *((long*)src)++; 167 *(long *) dst = *(long *) src; dst += 4; src += 4;
161 *(char*)dst = *(char*)src; 168 *dst = *src;
162 break; 169 break;
170
163 case 6: 171 case 6:
164 *((long*)dst)++ = *((long*)src)++; 172 *(long *) dst = *(long *) src; dst += 4; src += 4;
165 *(short*)dst = *(short*)src; 173 *(short *) dst = *(short *) src;
166 break; 174 break;
175
167 case 7: 176 case 7:
168 *((long*)dst)++ = *((long*)src)++; 177 *(long *) dst = *(long *) src; dst += 4; src += 4;
169 *((short*)dst)++ = *((short*)src)++; 178 *(short *) dst = *(short *) src; dst += 2; src += 2;
170 *(char*)dst = *(char*)src; 179 *dst = *src;
171 break; 180 break;
181
172 case 8: 182 case 8:
173 *((long*)dst)++ = *((long*)src)++; 183 *(long *) dst = *(long *) src; dst += 4; src += 4;
174 *((long*)dst)++ = *((long*)src)++; 184 *(long *) dst = *(long *) src;
175 break; 185 break;
186
176 case 9: 187 case 9:
177 *((long*)dst)++ = *((long*)src)++; 188 *(long *) dst = *(long *) src; dst += 4; src += 4;
178 *((long*)dst)++ = *((long*)src)++; 189 *(long *) dst = *(long *) src; dst += 4; src += 4;
179 *(char*)dst = *(char*)src; 190 *dst = *src;
180 break; 191 break;
192
181 case 10: 193 case 10:
182 *((long*)dst)++ = *((long*)src)++; 194 *(long *) dst = *(long *) src; dst += 4; src += 4;
183 *((long*)dst)++ = *((long*)src)++; 195 *(long *) dst = *(long *) src; dst += 4; src += 4;
184 *(short*)dst = *(short*)src; 196 *(short *) dst = *(short *) src;
185 break; 197 break;
198
186 case 11: 199 case 11:
187 *((long*)dst)++ = *((long*)src)++; 200 *(long *) dst = *(long *) src; dst += 4; src += 4;
188 *((long*)dst)++ = *((long*)src)++; 201 *(long *) dst = *(long *) src; dst += 4; src += 4;
189 *((short*)dst)++ = *((short*)src)++; 202 *(short *) dst = *(short *) src; dst += 2; src += 2;
190 *(char*)dst = *(char*)src; 203 *dst = *src;
191 break; 204 break;
205
192 case 12: 206 case 12:
193 *((long*)dst)++ = *((long*)src)++; 207 *(long *) dst = *(long *) src; dst += 4; src += 4;
194 *((long*)dst)++ = *((long*)src)++; 208 *(long *) dst = *(long *) src; dst += 4; src += 4;
195 *((long*)dst)++ = *((long*)src)++; 209 *(long *) dst = *(long *) src;
196 break; 210 break;
211
197 case 13: 212 case 13:
198 *((long*)dst)++ = *((long*)src)++; 213 *(long *) dst = *(long *) src; dst += 4; src += 4;
199 *((long*)dst)++ = *((long*)src)++; 214 *(long *) dst = *(long *) src; dst += 4; src += 4;
200 *((long*)dst)++ = *((long*)src)++; 215 *(long *) dst = *(long *) src; dst += 4; src += 4;
201 *(char*)dst = *(char*)src; 216 *dst = *src;
202 break; 217 break;
218
203 case 14: 219 case 14:
204 *((long*)dst)++ = *((long*)src)++; 220 *(long *) dst = *(long *) src; dst += 4; src += 4;
205 *((long*)dst)++ = *((long*)src)++; 221 *(long *) dst = *(long *) src; dst += 4; src += 4;
206 *((long*)dst)++ = *((long*)src)++; 222 *(long *) dst = *(long *) src; dst += 4; src += 4;
207 *(short*)dst = *(short*)src; 223 *(short *) dst = *(short *) src;
208 break; 224 break;
225
209 case 15: 226 case 15:
210 *((long*)dst)++ = *((long*)src)++; 227 *(long *) dst = *(long *) src; dst += 4; src += 4;
211 *((long*)dst)++ = *((long*)src)++; 228 *(long *) dst = *(long *) src; dst += 4; src += 4;
212 *((long*)dst)++ = *((long*)src)++; 229 *(long *) dst = *(long *) src; dst += 4; src += 4;
213 *((short*)dst)++ = *((short*)src)++; 230 *(short *) dst = *(short *) src; dst += 2; src += 2;
214 *(char*)dst = *(char*)src; 231 *dst = *src;
215 break; 232 break;
216 } 233 }
217 234
218 return return_dst; /* destination pointer. */ 235 return return_dst;
219} /* memcpy() */ 236}
diff --git a/arch/cris/arch-v32/lib/usercopy.c b/arch/cris/arch-v32/lib/usercopy.c
index 04d0cf35a276..0b5b70d5f58a 100644
--- a/arch/cris/arch-v32/lib/usercopy.c
+++ b/arch/cris/arch-v32/lib/usercopy.c
@@ -161,7 +161,7 @@ __copy_user (void __user *pdst, const void *psrc, unsigned long pn)
161 inaccessible. */ 161 inaccessible. */
162 162
163unsigned long 163unsigned long
164__copy_user_zeroing (void __user *pdst, const void *psrc, unsigned long pn) 164__copy_user_zeroing(void *pdst, const void __user *psrc, unsigned long pn)
165{ 165{
166 /* We want the parameters put in special registers. 166 /* We want the parameters put in special registers.
167 Make sure the compiler is able to make something useful of this. 167 Make sure the compiler is able to make something useful of this.
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index dff9edfc7465..8fa3faf5ef1b 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -18,6 +18,7 @@ config IA64
18 select HAVE_IDE 18 select HAVE_IDE
19 select HAVE_OPROFILE 19 select HAVE_OPROFILE
20 select HAVE_KPROBES 20 select HAVE_KPROBES
21 select HAVE_KRETPROBES
21 default y 22 default y
22 help 23 help
23 The Itanium Processor Family is Intel's 64-bit successor to 24 The Itanium Processor Family is Intel's 64-bit successor to
@@ -155,6 +156,8 @@ config IA64_HP_ZX1_SWIOTLB
155 156
156config IA64_SGI_SN2 157config IA64_SGI_SN2
157 bool "SGI-SN2" 158 bool "SGI-SN2"
159 select NUMA
160 select ACPI_NUMA
158 help 161 help
159 Selecting this option will optimize the kernel for use on sn2 based 162 Selecting this option will optimize the kernel for use on sn2 based
160 systems, but the resulting kernel binary will not run on other 163 systems, but the resulting kernel binary will not run on other
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile
index b916ccfdef84..f1645c4f7039 100644
--- a/arch/ia64/Makefile
+++ b/arch/ia64/Makefile
@@ -11,6 +11,8 @@
11# Copyright (C) 1998-2004 by David Mosberger-Tang <davidm@hpl.hp.com> 11# Copyright (C) 1998-2004 by David Mosberger-Tang <davidm@hpl.hp.com>
12# 12#
13 13
14KBUILD_DEFCONFIG := generic_defconfig
15
14NM := $(CROSS_COMPILE)nm -B 16NM := $(CROSS_COMPILE)nm -B
15READELF := $(CROSS_COMPILE)readelf 17READELF := $(CROSS_COMPILE)readelf
16 18
diff --git a/arch/ia64/defconfig b/arch/ia64/configs/generic_defconfig
index 0210545e7f61..0210545e7f61 100644
--- a/arch/ia64/defconfig
+++ b/arch/ia64/configs/generic_defconfig
diff --git a/arch/ia64/hp/common/hwsw_iommu.c b/arch/ia64/hp/common/hwsw_iommu.c
index 94e57109fad6..8f6bcfe1dada 100644
--- a/arch/ia64/hp/common/hwsw_iommu.c
+++ b/arch/ia64/hp/common/hwsw_iommu.c
@@ -71,7 +71,7 @@ hwsw_init (void)
71#ifdef CONFIG_IA64_GENERIC 71#ifdef CONFIG_IA64_GENERIC
72 /* Better to have normal DMA than panic */ 72 /* Better to have normal DMA than panic */
73 printk(KERN_WARNING "%s: Failed to initialize software I/O TLB," 73 printk(KERN_WARNING "%s: Failed to initialize software I/O TLB,"
74 " reverting to hpzx1 platform vector\n", __FUNCTION__); 74 " reverting to hpzx1 platform vector\n", __func__);
75 machvec_init("hpzx1"); 75 machvec_init("hpzx1");
76#else 76#else
77 panic("Unable to initialize software I/O TLB services"); 77 panic("Unable to initialize software I/O TLB services");
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c
index a94445422cc6..523eae6d3e49 100644
--- a/arch/ia64/hp/common/sba_iommu.c
+++ b/arch/ia64/hp/common/sba_iommu.c
@@ -529,7 +529,7 @@ sba_search_bitmap(struct ioc *ioc, unsigned long bits_wanted, int use_hint)
529 base_mask = RESMAP_MASK(bits_wanted); 529 base_mask = RESMAP_MASK(bits_wanted);
530 mask = base_mask << bitshiftcnt; 530 mask = base_mask << bitshiftcnt;
531 531
532 DBG_RES("%s() o %ld %p", __FUNCTION__, o, res_ptr); 532 DBG_RES("%s() o %ld %p", __func__, o, res_ptr);
533 for(; res_ptr < res_end ; res_ptr++) 533 for(; res_ptr < res_end ; res_ptr++)
534 { 534 {
535 DBG_RES(" %p %lx %lx\n", res_ptr, mask, *res_ptr); 535 DBG_RES(" %p %lx %lx\n", res_ptr, mask, *res_ptr);
@@ -679,7 +679,7 @@ sba_alloc_range(struct ioc *ioc, size_t size)
679#endif 679#endif
680 680
681 DBG_RES("%s(%x) %d -> %lx hint %x/%x\n", 681 DBG_RES("%s(%x) %d -> %lx hint %x/%x\n",
682 __FUNCTION__, size, pages_needed, pide, 682 __func__, size, pages_needed, pide,
683 (uint) ((unsigned long) ioc->res_hint - (unsigned long) ioc->res_map), 683 (uint) ((unsigned long) ioc->res_hint - (unsigned long) ioc->res_map),
684 ioc->res_bitshift ); 684 ioc->res_bitshift );
685 685
@@ -722,8 +722,8 @@ sba_free_range(struct ioc *ioc, dma_addr_t iova, size_t size)
722 m = RESMAP_MASK(bits_not_wanted) << (pide & (BITS_PER_LONG - 1)); 722 m = RESMAP_MASK(bits_not_wanted) << (pide & (BITS_PER_LONG - 1));
723 bits_not_wanted = 0; 723 bits_not_wanted = 0;
724 724
725 DBG_RES("%s( ,%x,%x) %x/%lx %x %p %lx\n", __FUNCTION__, (uint) iova, size, 725 DBG_RES("%s( ,%x,%x) %x/%lx %x %p %lx\n", __func__, (uint) iova, size,
726 bits_not_wanted, m, pide, res_ptr, *res_ptr); 726 bits_not_wanted, m, pide, res_ptr, *res_ptr);
727 727
728 ASSERT(m != 0); 728 ASSERT(m != 0);
729 ASSERT(bits_not_wanted); 729 ASSERT(bits_not_wanted);
@@ -940,8 +940,7 @@ sba_map_single(struct device *dev, void *addr, size_t size, int dir)
940 940
941 iovp = (dma_addr_t) pide << iovp_shift; 941 iovp = (dma_addr_t) pide << iovp_shift;
942 942
943 DBG_RUN("%s() 0x%p -> 0x%lx\n", 943 DBG_RUN("%s() 0x%p -> 0x%lx\n", __func__, addr, (long) iovp | offset);
944 __FUNCTION__, addr, (long) iovp | offset);
945 944
946 pdir_start = &(ioc->pdir_base[pide]); 945 pdir_start = &(ioc->pdir_base[pide]);
947 946
@@ -1029,8 +1028,7 @@ void sba_unmap_single(struct device *dev, dma_addr_t iova, size_t size, int dir)
1029#endif 1028#endif
1030 offset = iova & ~iovp_mask; 1029 offset = iova & ~iovp_mask;
1031 1030
1032 DBG_RUN("%s() iovp 0x%lx/%x\n", 1031 DBG_RUN("%s() iovp 0x%lx/%x\n", __func__, (long) iova, size);
1033 __FUNCTION__, (long) iova, size);
1034 1032
1035 iova ^= offset; /* clear offset bits */ 1033 iova ^= offset; /* clear offset bits */
1036 size += offset; 1034 size += offset;
@@ -1404,7 +1402,7 @@ int sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents, int di
1404 struct scatterlist *sg; 1402 struct scatterlist *sg;
1405#endif 1403#endif
1406 1404
1407 DBG_RUN_SG("%s() START %d entries\n", __FUNCTION__, nents); 1405 DBG_RUN_SG("%s() START %d entries\n", __func__, nents);
1408 ioc = GET_IOC(dev); 1406 ioc = GET_IOC(dev);
1409 ASSERT(ioc); 1407 ASSERT(ioc);
1410 1408
@@ -1468,7 +1466,7 @@ int sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents, int di
1468#endif 1466#endif
1469 1467
1470 ASSERT(coalesced == filled); 1468 ASSERT(coalesced == filled);
1471 DBG_RUN_SG("%s() DONE %d mappings\n", __FUNCTION__, filled); 1469 DBG_RUN_SG("%s() DONE %d mappings\n", __func__, filled);
1472 1470
1473 return filled; 1471 return filled;
1474} 1472}
@@ -1491,7 +1489,7 @@ void sba_unmap_sg (struct device *dev, struct scatterlist *sglist, int nents, in
1491#endif 1489#endif
1492 1490
1493 DBG_RUN_SG("%s() START %d entries, %p,%x\n", 1491 DBG_RUN_SG("%s() START %d entries, %p,%x\n",
1494 __FUNCTION__, nents, sba_sg_address(sglist), sglist->length); 1492 __func__, nents, sba_sg_address(sglist), sglist->length);
1495 1493
1496#ifdef ASSERT_PDIR_SANITY 1494#ifdef ASSERT_PDIR_SANITY
1497 ioc = GET_IOC(dev); 1495 ioc = GET_IOC(dev);
@@ -1509,7 +1507,7 @@ void sba_unmap_sg (struct device *dev, struct scatterlist *sglist, int nents, in
1509 nents--; 1507 nents--;
1510 } 1508 }
1511 1509
1512 DBG_RUN_SG("%s() DONE (nents %d)\n", __FUNCTION__, nents); 1510 DBG_RUN_SG("%s() DONE (nents %d)\n", __func__, nents);
1513 1511
1514#ifdef ASSERT_PDIR_SANITY 1512#ifdef ASSERT_PDIR_SANITY
1515 spin_lock_irqsave(&ioc->res_lock, flags); 1513 spin_lock_irqsave(&ioc->res_lock, flags);
@@ -1546,7 +1544,7 @@ ioc_iova_init(struct ioc *ioc)
1546 ioc->iov_size = ~ioc->imask + 1; 1544 ioc->iov_size = ~ioc->imask + 1;
1547 1545
1548 DBG_INIT("%s() hpa %p IOV base 0x%lx mask 0x%lx (%dMB)\n", 1546 DBG_INIT("%s() hpa %p IOV base 0x%lx mask 0x%lx (%dMB)\n",
1549 __FUNCTION__, ioc->ioc_hpa, ioc->ibase, ioc->imask, 1547 __func__, ioc->ioc_hpa, ioc->ibase, ioc->imask,
1550 ioc->iov_size >> 20); 1548 ioc->iov_size >> 20);
1551 1549
1552 switch (iovp_size) { 1550 switch (iovp_size) {
@@ -1569,7 +1567,7 @@ ioc_iova_init(struct ioc *ioc)
1569 1567
1570 memset(ioc->pdir_base, 0, ioc->pdir_size); 1568 memset(ioc->pdir_base, 0, ioc->pdir_size);
1571 1569
1572 DBG_INIT("%s() IOV page size %ldK pdir %p size %x\n", __FUNCTION__, 1570 DBG_INIT("%s() IOV page size %ldK pdir %p size %x\n", __func__,
1573 iovp_size >> 10, ioc->pdir_base, ioc->pdir_size); 1571 iovp_size >> 10, ioc->pdir_base, ioc->pdir_size);
1574 1572
1575 ASSERT(ALIGN((unsigned long) ioc->pdir_base, 4*1024) == (unsigned long) ioc->pdir_base); 1573 ASSERT(ALIGN((unsigned long) ioc->pdir_base, 4*1024) == (unsigned long) ioc->pdir_base);
@@ -1612,7 +1610,7 @@ ioc_iova_init(struct ioc *ioc)
1612 1610
1613 prefetch_spill_page = virt_to_phys(addr); 1611 prefetch_spill_page = virt_to_phys(addr);
1614 1612
1615 DBG_INIT("%s() prefetch spill addr: 0x%lx\n", __FUNCTION__, prefetch_spill_page); 1613 DBG_INIT("%s() prefetch spill addr: 0x%lx\n", __func__, prefetch_spill_page);
1616 } 1614 }
1617 /* 1615 /*
1618 ** Set all the PDIR entries valid w/ the spill page as the target 1616 ** Set all the PDIR entries valid w/ the spill page as the target
@@ -1641,7 +1639,7 @@ ioc_resource_init(struct ioc *ioc)
1641 /* resource map size dictated by pdir_size */ 1639 /* resource map size dictated by pdir_size */
1642 ioc->res_size = ioc->pdir_size / PDIR_ENTRY_SIZE; /* entries */ 1640 ioc->res_size = ioc->pdir_size / PDIR_ENTRY_SIZE; /* entries */
1643 ioc->res_size >>= 3; /* convert bit count to byte count */ 1641 ioc->res_size >>= 3; /* convert bit count to byte count */
1644 DBG_INIT("%s() res_size 0x%x\n", __FUNCTION__, ioc->res_size); 1642 DBG_INIT("%s() res_size 0x%x\n", __func__, ioc->res_size);
1645 1643
1646 ioc->res_map = (char *) __get_free_pages(GFP_KERNEL, 1644 ioc->res_map = (char *) __get_free_pages(GFP_KERNEL,
1647 get_order(ioc->res_size)); 1645 get_order(ioc->res_size));
@@ -1664,7 +1662,7 @@ ioc_resource_init(struct ioc *ioc)
1664 | prefetch_spill_page); 1662 | prefetch_spill_page);
1665#endif 1663#endif
1666 1664
1667 DBG_INIT("%s() res_map %x %p\n", __FUNCTION__, 1665 DBG_INIT("%s() res_map %x %p\n", __func__,
1668 ioc->res_size, (void *) ioc->res_map); 1666 ioc->res_size, (void *) ioc->res_map);
1669} 1667}
1670 1668
@@ -1767,7 +1765,7 @@ ioc_init(u64 hpa, void *handle)
1767 iovp_size = (1 << iovp_shift); 1765 iovp_size = (1 << iovp_shift);
1768 iovp_mask = ~(iovp_size - 1); 1766 iovp_mask = ~(iovp_size - 1);
1769 1767
1770 DBG_INIT("%s: PAGE_SIZE %ldK, iovp_size %ldK\n", __FUNCTION__, 1768 DBG_INIT("%s: PAGE_SIZE %ldK, iovp_size %ldK\n", __func__,
1771 PAGE_SIZE >> 10, iovp_size >> 10); 1769 PAGE_SIZE >> 10, iovp_size >> 10);
1772 1770
1773 if (!ioc->name) { 1771 if (!ioc->name) {
@@ -2137,7 +2135,7 @@ sba_page_override(char *str)
2137 break; 2135 break;
2138 default: 2136 default:
2139 printk("%s: unknown/unsupported iommu page size %ld\n", 2137 printk("%s: unknown/unsupported iommu page size %ld\n",
2140 __FUNCTION__, page_size); 2138 __func__, page_size);
2141 } 2139 }
2142 2140
2143 return 1; 2141 return 1;
diff --git a/arch/ia64/hp/sim/simeth.c b/arch/ia64/hp/sim/simeth.c
index 9898febf609a..969fe9f443c4 100644
--- a/arch/ia64/hp/sim/simeth.c
+++ b/arch/ia64/hp/sim/simeth.c
@@ -222,7 +222,7 @@ simeth_probe1(void)
222 } 222 }
223 223
224 if ((rc = assign_irq_vector(AUTO_ASSIGN)) < 0) 224 if ((rc = assign_irq_vector(AUTO_ASSIGN)) < 0)
225 panic("%s: out of interrupt vectors!\n", __FUNCTION__); 225 panic("%s: out of interrupt vectors!\n", __func__);
226 dev->irq = rc; 226 dev->irq = rc;
227 227
228 /* 228 /*
diff --git a/arch/ia64/hp/sim/simserial.c b/arch/ia64/hp/sim/simserial.c
index ef252df50e1e..eb0c32a85fd7 100644
--- a/arch/ia64/hp/sim/simserial.c
+++ b/arch/ia64/hp/sim/simserial.c
@@ -1000,7 +1000,7 @@ simrs_init (void)
1000 if (!state->irq) { 1000 if (!state->irq) {
1001 if ((rc = assign_irq_vector(AUTO_ASSIGN)) < 0) 1001 if ((rc = assign_irq_vector(AUTO_ASSIGN)) < 0)
1002 panic("%s: out of interrupt vectors!\n", 1002 panic("%s: out of interrupt vectors!\n",
1003 __FUNCTION__); 1003 __func__);
1004 state->irq = rc; 1004 state->irq = rc;
1005 ia64_ssc_connect_irq(KEYBOARD_INTR, state->irq); 1005 ia64_ssc_connect_irq(KEYBOARD_INTR, state->irq);
1006 } 1006 }
diff --git a/arch/ia64/ia32/ia32_signal.c b/arch/ia64/ia32/ia32_signal.c
index 85e82f32e480..256a7faeda07 100644
--- a/arch/ia64/ia32/ia32_signal.c
+++ b/arch/ia64/ia32/ia32_signal.c
@@ -766,8 +766,19 @@ get_sigframe (struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size)
766 766
767 /* This is the X/Open sanctioned signal stack switching. */ 767 /* This is the X/Open sanctioned signal stack switching. */
768 if (ka->sa.sa_flags & SA_ONSTACK) { 768 if (ka->sa.sa_flags & SA_ONSTACK) {
769 if (!on_sig_stack(esp)) 769 int onstack = sas_ss_flags(esp);
770
771 if (onstack == 0)
770 esp = current->sas_ss_sp + current->sas_ss_size; 772 esp = current->sas_ss_sp + current->sas_ss_size;
773 else if (onstack == SS_ONSTACK) {
774 /*
775 * If we are on the alternate signal stack and would
776 * overflow it, don't. Return an always-bogus address
777 * instead so we will die with SIGSEGV.
778 */
779 if (!likely(on_sig_stack(esp - frame_size)))
780 return (void __user *) -1L;
781 }
771 } 782 }
772 /* Legacy stack switching not supported */ 783 /* Legacy stack switching not supported */
773 784
diff --git a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c
index d025a22eb225..b1bf51fe97b4 100644
--- a/arch/ia64/ia32/sys_ia32.c
+++ b/arch/ia64/ia32/sys_ia32.c
@@ -32,13 +32,8 @@
32#include <linux/shm.h> 32#include <linux/shm.h>
33#include <linux/slab.h> 33#include <linux/slab.h>
34#include <linux/uio.h> 34#include <linux/uio.h>
35#include <linux/nfs_fs.h> 35#include <linux/socket.h>
36#include <linux/quota.h> 36#include <linux/quota.h>
37#include <linux/sunrpc/svc.h>
38#include <linux/nfsd/nfsd.h>
39#include <linux/nfsd/cache.h>
40#include <linux/nfsd/xdr.h>
41#include <linux/nfsd/syscall.h>
42#include <linux/poll.h> 37#include <linux/poll.h>
43#include <linux/eventpoll.h> 38#include <linux/eventpoll.h>
44#include <linux/personality.h> 39#include <linux/personality.h>
diff --git a/arch/ia64/kernel/crash.c b/arch/ia64/kernel/crash.c
index f1cf2df97a2d..fbe742ad2fde 100644
--- a/arch/ia64/kernel/crash.c
+++ b/arch/ia64/kernel/crash.c
@@ -155,7 +155,7 @@ kdump_init_notifier(struct notifier_block *self, unsigned long val, void *data)
155 if (val == DIE_INIT_MONARCH_LEAVE) 155 if (val == DIE_INIT_MONARCH_LEAVE)
156 ia64_mca_printk(KERN_NOTICE 156 ia64_mca_printk(KERN_NOTICE
157 "%s: kdump not configured\n", 157 "%s: kdump not configured\n",
158 __FUNCTION__); 158 __func__);
159 return NOTIFY_DONE; 159 return NOTIFY_DONE;
160 } 160 }
161 161
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index 919070a9aed7..728d7247a1a6 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -379,8 +379,8 @@ efi_get_pal_addr (void)
379 * a dedicated ITR for the PAL code. 379 * a dedicated ITR for the PAL code.
380 */ 380 */
381 if ((vaddr & mask) == (KERNEL_START & mask)) { 381 if ((vaddr & mask) == (KERNEL_START & mask)) {
382 printk(KERN_INFO "%s: no need to install ITR for " 382 printk(KERN_INFO "%s: no need to install ITR for PAL code\n",
383 "PAL code\n", __FUNCTION__); 383 __func__);
384 continue; 384 continue;
385 } 385 }
386 386
@@ -399,7 +399,7 @@ efi_get_pal_addr (void)
399 return __va(md->phys_addr); 399 return __va(md->phys_addr);
400 } 400 }
401 printk(KERN_WARNING "%s: no PAL-code memory-descriptor found\n", 401 printk(KERN_WARNING "%s: no PAL-code memory-descriptor found\n",
402 __FUNCTION__); 402 __func__);
403 return NULL; 403 return NULL;
404} 404}
405 405
@@ -543,12 +543,30 @@ efi_init (void)
543 for (i = 0, p = efi_map_start; p < efi_map_end; 543 for (i = 0, p = efi_map_start; p < efi_map_end;
544 ++i, p += efi_desc_size) 544 ++i, p += efi_desc_size)
545 { 545 {
546 const char *unit;
547 unsigned long size;
548
546 md = p; 549 md = p;
547 printk("mem%02u: type=%u, attr=0x%lx, " 550 size = md->num_pages << EFI_PAGE_SHIFT;
548 "range=[0x%016lx-0x%016lx) (%luMB)\n", 551
552 if ((size >> 40) > 0) {
553 size >>= 40;
554 unit = "TB";
555 } else if ((size >> 30) > 0) {
556 size >>= 30;
557 unit = "GB";
558 } else if ((size >> 20) > 0) {
559 size >>= 20;
560 unit = "MB";
561 } else {
562 size >>= 10;
563 unit = "KB";
564 }
565
566 printk("mem%02d: type=%2u, attr=0x%016lx, "
567 "range=[0x%016lx-0x%016lx) (%4lu%s)\n",
549 i, md->type, md->attribute, md->phys_addr, 568 i, md->type, md->attribute, md->phys_addr,
550 md->phys_addr + efi_md_size(md), 569 md->phys_addr + efi_md_size(md), size, unit);
551 md->num_pages >> (20 - EFI_PAGE_SHIFT));
552 } 570 }
553 } 571 }
554#endif 572#endif
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c
index 398e2fd1cd25..082c31dcfd99 100644
--- a/arch/ia64/kernel/iosapic.c
+++ b/arch/ia64/kernel/iosapic.c
@@ -345,7 +345,7 @@ iosapic_set_affinity (unsigned int irq, cpumask_t mask)
345 if (cpus_empty(mask)) 345 if (cpus_empty(mask))
346 return; 346 return;
347 347
348 if (reassign_irq_vector(irq, first_cpu(mask))) 348 if (irq_prepare_move(irq, first_cpu(mask)))
349 return; 349 return;
350 350
351 dest = cpu_physical_id(first_cpu(mask)); 351 dest = cpu_physical_id(first_cpu(mask));
@@ -397,6 +397,7 @@ iosapic_end_level_irq (unsigned int irq)
397 struct iosapic_rte_info *rte; 397 struct iosapic_rte_info *rte;
398 int do_unmask_irq = 0; 398 int do_unmask_irq = 0;
399 399
400 irq_complete_move(irq);
400 if (unlikely(irq_desc[irq].status & IRQ_MOVE_PENDING)) { 401 if (unlikely(irq_desc[irq].status & IRQ_MOVE_PENDING)) {
401 do_unmask_irq = 1; 402 do_unmask_irq = 1;
402 mask_irq(irq); 403 mask_irq(irq);
@@ -450,6 +451,7 @@ iosapic_ack_edge_irq (unsigned int irq)
450{ 451{
451 irq_desc_t *idesc = irq_desc + irq; 452 irq_desc_t *idesc = irq_desc + irq;
452 453
454 irq_complete_move(irq);
453 move_native_irq(irq); 455 move_native_irq(irq);
454 /* 456 /*
455 * Once we have recorded IRQ_PENDING already, we can mask the 457 * Once we have recorded IRQ_PENDING already, we can mask the
@@ -532,7 +534,7 @@ iosapic_reassign_vector (int irq)
532 if (iosapic_intr_info[irq].count) { 534 if (iosapic_intr_info[irq].count) {
533 new_irq = create_irq(); 535 new_irq = create_irq();
534 if (new_irq < 0) 536 if (new_irq < 0)
535 panic("%s: out of interrupt vectors!\n", __FUNCTION__); 537 panic("%s: out of interrupt vectors!\n", __func__);
536 printk(KERN_INFO "Reassigning vector %d to %d\n", 538 printk(KERN_INFO "Reassigning vector %d to %d\n",
537 irq_to_vector(irq), irq_to_vector(new_irq)); 539 irq_to_vector(irq), irq_to_vector(new_irq));
538 memcpy(&iosapic_intr_info[new_irq], &iosapic_intr_info[irq], 540 memcpy(&iosapic_intr_info[new_irq], &iosapic_intr_info[irq],
@@ -597,7 +599,7 @@ register_intr (unsigned int gsi, int irq, unsigned char delivery,
597 index = find_iosapic(gsi); 599 index = find_iosapic(gsi);
598 if (index < 0) { 600 if (index < 0) {
599 printk(KERN_WARNING "%s: No IOSAPIC for GSI %u\n", 601 printk(KERN_WARNING "%s: No IOSAPIC for GSI %u\n",
600 __FUNCTION__, gsi); 602 __func__, gsi);
601 return -ENODEV; 603 return -ENODEV;
602 } 604 }
603 605
@@ -606,7 +608,7 @@ register_intr (unsigned int gsi, int irq, unsigned char delivery,
606 rte = iosapic_alloc_rte(); 608 rte = iosapic_alloc_rte();
607 if (!rte) { 609 if (!rte) {
608 printk(KERN_WARNING "%s: cannot allocate memory\n", 610 printk(KERN_WARNING "%s: cannot allocate memory\n",
609 __FUNCTION__); 611 __func__);
610 return -ENOMEM; 612 return -ENOMEM;
611 } 613 }
612 614
@@ -623,7 +625,7 @@ register_intr (unsigned int gsi, int irq, unsigned char delivery,
623 (info->trigger != trigger || info->polarity != polarity)){ 625 (info->trigger != trigger || info->polarity != polarity)){
624 printk (KERN_WARNING 626 printk (KERN_WARNING
625 "%s: cannot override the interrupt\n", 627 "%s: cannot override the interrupt\n",
626 __FUNCTION__); 628 __func__);
627 return -EINVAL; 629 return -EINVAL;
628 } 630 }
629 rte->refcnt++; 631 rte->refcnt++;
@@ -645,7 +647,7 @@ register_intr (unsigned int gsi, int irq, unsigned char delivery,
645 if (idesc->chip != &no_irq_type) 647 if (idesc->chip != &no_irq_type)
646 printk(KERN_WARNING 648 printk(KERN_WARNING
647 "%s: changing vector %d from %s to %s\n", 649 "%s: changing vector %d from %s to %s\n",
648 __FUNCTION__, irq_to_vector(irq), 650 __func__, irq_to_vector(irq),
649 idesc->chip->name, irq_type->name); 651 idesc->chip->name, irq_type->name);
650 idesc->chip = irq_type; 652 idesc->chip = irq_type;
651 } 653 }
@@ -918,7 +920,7 @@ iosapic_register_platform_intr (u32 int_type, unsigned int gsi,
918 case ACPI_INTERRUPT_INIT: 920 case ACPI_INTERRUPT_INIT:
919 irq = create_irq(); 921 irq = create_irq();
920 if (irq < 0) 922 if (irq < 0)
921 panic("%s: out of interrupt vectors!\n", __FUNCTION__); 923 panic("%s: out of interrupt vectors!\n", __func__);
922 vector = irq_to_vector(irq); 924 vector = irq_to_vector(irq);
923 delivery = IOSAPIC_INIT; 925 delivery = IOSAPIC_INIT;
924 break; 926 break;
@@ -929,7 +931,7 @@ iosapic_register_platform_intr (u32 int_type, unsigned int gsi,
929 mask = 1; 931 mask = 1;
930 break; 932 break;
931 default: 933 default:
932 printk(KERN_ERR "%s: invalid int type 0x%x\n", __FUNCTION__, 934 printk(KERN_ERR "%s: invalid int type 0x%x\n", __func__,
933 int_type); 935 int_type);
934 return -1; 936 return -1;
935 } 937 }
@@ -994,7 +996,7 @@ iosapic_system_init (int system_pcat_compat)
994 */ 996 */
995 printk(KERN_INFO 997 printk(KERN_INFO
996 "%s: Disabling PC-AT compatible 8259 interrupts\n", 998 "%s: Disabling PC-AT compatible 8259 interrupts\n",
997 __FUNCTION__); 999 __func__);
998 outb(0xff, 0xA1); 1000 outb(0xff, 0xA1);
999 outb(0xff, 0x21); 1001 outb(0xff, 0x21);
1000 } 1002 }
@@ -1009,7 +1011,7 @@ iosapic_alloc (void)
1009 if (!iosapic_lists[index].addr) 1011 if (!iosapic_lists[index].addr)
1010 return index; 1012 return index;
1011 1013
1012 printk(KERN_WARNING "%s: failed to allocate iosapic\n", __FUNCTION__); 1014 printk(KERN_WARNING "%s: failed to allocate iosapic\n", __func__);
1013 return -1; 1015 return -1;
1014} 1016}
1015 1017
@@ -1107,14 +1109,14 @@ iosapic_remove (unsigned int gsi_base)
1107 index = find_iosapic(gsi_base); 1109 index = find_iosapic(gsi_base);
1108 if (index < 0) { 1110 if (index < 0) {
1109 printk(KERN_WARNING "%s: No IOSAPIC for GSI base %u\n", 1111 printk(KERN_WARNING "%s: No IOSAPIC for GSI base %u\n",
1110 __FUNCTION__, gsi_base); 1112 __func__, gsi_base);
1111 goto out; 1113 goto out;
1112 } 1114 }
1113 1115
1114 if (iosapic_lists[index].rtes_inuse) { 1116 if (iosapic_lists[index].rtes_inuse) {
1115 err = -EBUSY; 1117 err = -EBUSY;
1116 printk(KERN_WARNING "%s: IOSAPIC for GSI base %u is busy\n", 1118 printk(KERN_WARNING "%s: IOSAPIC for GSI base %u is busy\n",
1117 __FUNCTION__, gsi_base); 1119 __func__, gsi_base);
1118 goto out; 1120 goto out;
1119 } 1121 }
1120 1122
@@ -1135,7 +1137,7 @@ map_iosapic_to_node(unsigned int gsi_base, int node)
1135 index = find_iosapic(gsi_base); 1137 index = find_iosapic(gsi_base);
1136 if (index < 0) { 1138 if (index < 0) {
1137 printk(KERN_WARNING "%s: No IOSAPIC for GSI %u\n", 1139 printk(KERN_WARNING "%s: No IOSAPIC for GSI %u\n",
1138 __FUNCTION__, gsi_base); 1140 __func__, gsi_base);
1139 return; 1141 return;
1140 } 1142 }
1141 iosapic_lists[index].node = node; 1143 iosapic_lists[index].node = node;
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c
index 0b52f19ed046..d8be23fbe6bc 100644
--- a/arch/ia64/kernel/irq_ia64.c
+++ b/arch/ia64/kernel/irq_ia64.c
@@ -260,6 +260,8 @@ void __setup_vector_irq(int cpu)
260} 260}
261 261
262#if defined(CONFIG_SMP) && (defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_DIG)) 262#if defined(CONFIG_SMP) && (defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_DIG))
263#define IA64_IRQ_MOVE_VECTOR IA64_DEF_FIRST_DEVICE_VECTOR
264
263static enum vector_domain_type { 265static enum vector_domain_type {
264 VECTOR_DOMAIN_NONE, 266 VECTOR_DOMAIN_NONE,
265 VECTOR_DOMAIN_PERCPU 267 VECTOR_DOMAIN_PERCPU
@@ -272,6 +274,101 @@ static cpumask_t vector_allocation_domain(int cpu)
272 return CPU_MASK_ALL; 274 return CPU_MASK_ALL;
273} 275}
274 276
277static int __irq_prepare_move(int irq, int cpu)
278{
279 struct irq_cfg *cfg = &irq_cfg[irq];
280 int vector;
281 cpumask_t domain;
282
283 if (cfg->move_in_progress || cfg->move_cleanup_count)
284 return -EBUSY;
285 if (cfg->vector == IRQ_VECTOR_UNASSIGNED || !cpu_online(cpu))
286 return -EINVAL;
287 if (cpu_isset(cpu, cfg->domain))
288 return 0;
289 domain = vector_allocation_domain(cpu);
290 vector = find_unassigned_vector(domain);
291 if (vector < 0)
292 return -ENOSPC;
293 cfg->move_in_progress = 1;
294 cfg->old_domain = cfg->domain;
295 cfg->vector = IRQ_VECTOR_UNASSIGNED;
296 cfg->domain = CPU_MASK_NONE;
297 BUG_ON(__bind_irq_vector(irq, vector, domain));
298 return 0;
299}
300
301int irq_prepare_move(int irq, int cpu)
302{
303 unsigned long flags;
304 int ret;
305
306 spin_lock_irqsave(&vector_lock, flags);
307 ret = __irq_prepare_move(irq, cpu);
308 spin_unlock_irqrestore(&vector_lock, flags);
309 return ret;
310}
311
312void irq_complete_move(unsigned irq)
313{
314 struct irq_cfg *cfg = &irq_cfg[irq];
315 cpumask_t cleanup_mask;
316 int i;
317
318 if (likely(!cfg->move_in_progress))
319 return;
320
321 if (unlikely(cpu_isset(smp_processor_id(), cfg->old_domain)))
322 return;
323
324 cpus_and(cleanup_mask, cfg->old_domain, cpu_online_map);
325 cfg->move_cleanup_count = cpus_weight(cleanup_mask);
326 for_each_cpu_mask(i, cleanup_mask)
327 platform_send_ipi(i, IA64_IRQ_MOVE_VECTOR, IA64_IPI_DM_INT, 0);
328 cfg->move_in_progress = 0;
329}
330
331static irqreturn_t smp_irq_move_cleanup_interrupt(int irq, void *dev_id)
332{
333 int me = smp_processor_id();
334 ia64_vector vector;
335 unsigned long flags;
336
337 for (vector = IA64_FIRST_DEVICE_VECTOR;
338 vector < IA64_LAST_DEVICE_VECTOR; vector++) {
339 int irq;
340 struct irq_desc *desc;
341 struct irq_cfg *cfg;
342 irq = __get_cpu_var(vector_irq)[vector];
343 if (irq < 0)
344 continue;
345
346 desc = irq_desc + irq;
347 cfg = irq_cfg + irq;
348 spin_lock(&desc->lock);
349 if (!cfg->move_cleanup_count)
350 goto unlock;
351
352 if (!cpu_isset(me, cfg->old_domain))
353 goto unlock;
354
355 spin_lock_irqsave(&vector_lock, flags);
356 __get_cpu_var(vector_irq)[vector] = -1;
357 cpu_clear(me, vector_table[vector]);
358 spin_unlock_irqrestore(&vector_lock, flags);
359 cfg->move_cleanup_count--;
360 unlock:
361 spin_unlock(&desc->lock);
362 }
363 return IRQ_HANDLED;
364}
365
366static struct irqaction irq_move_irqaction = {
367 .handler = smp_irq_move_cleanup_interrupt,
368 .flags = IRQF_DISABLED,
369 .name = "irq_move"
370};
371
275static int __init parse_vector_domain(char *arg) 372static int __init parse_vector_domain(char *arg)
276{ 373{
277 if (!arg) 374 if (!arg)
@@ -303,36 +400,6 @@ void destroy_and_reserve_irq(unsigned int irq)
303 spin_unlock_irqrestore(&vector_lock, flags); 400 spin_unlock_irqrestore(&vector_lock, flags);
304} 401}
305 402
306static int __reassign_irq_vector(int irq, int cpu)
307{
308 struct irq_cfg *cfg = &irq_cfg[irq];
309 int vector;
310 cpumask_t domain;
311
312 if (cfg->vector == IRQ_VECTOR_UNASSIGNED || !cpu_online(cpu))
313 return -EINVAL;
314 if (cpu_isset(cpu, cfg->domain))
315 return 0;
316 domain = vector_allocation_domain(cpu);
317 vector = find_unassigned_vector(domain);
318 if (vector < 0)
319 return -ENOSPC;
320 __clear_irq_vector(irq);
321 BUG_ON(__bind_irq_vector(irq, vector, domain));
322 return 0;
323}
324
325int reassign_irq_vector(int irq, int cpu)
326{
327 unsigned long flags;
328 int ret;
329
330 spin_lock_irqsave(&vector_lock, flags);
331 ret = __reassign_irq_vector(irq, cpu);
332 spin_unlock_irqrestore(&vector_lock, flags);
333 return ret;
334}
335
336/* 403/*
337 * Dynamic irq allocate and deallocation for MSI 404 * Dynamic irq allocate and deallocation for MSI
338 */ 405 */
@@ -440,7 +507,7 @@ ia64_handle_irq (ia64_vector vector, struct pt_regs *regs)
440 if (unlikely(irq < 0)) { 507 if (unlikely(irq < 0)) {
441 printk(KERN_ERR "%s: Unexpected interrupt " 508 printk(KERN_ERR "%s: Unexpected interrupt "
442 "vector %d on CPU %d is not mapped " 509 "vector %d on CPU %d is not mapped "
443 "to any IRQ!\n", __FUNCTION__, vector, 510 "to any IRQ!\n", __func__, vector,
444 smp_processor_id()); 511 smp_processor_id());
445 } else 512 } else
446 generic_handle_irq(irq); 513 generic_handle_irq(irq);
@@ -505,7 +572,7 @@ void ia64_process_pending_intr(void)
505 if (unlikely(irq < 0)) { 572 if (unlikely(irq < 0)) {
506 printk(KERN_ERR "%s: Unexpected interrupt " 573 printk(KERN_ERR "%s: Unexpected interrupt "
507 "vector %d on CPU %d not being mapped " 574 "vector %d on CPU %d not being mapped "
508 "to any IRQ!!\n", __FUNCTION__, vector, 575 "to any IRQ!!\n", __func__, vector,
509 smp_processor_id()); 576 smp_processor_id());
510 } else { 577 } else {
511 vectors_in_migration[irq]=0; 578 vectors_in_migration[irq]=0;
@@ -578,6 +645,13 @@ init_IRQ (void)
578 register_percpu_irq(IA64_IPI_VECTOR, &ipi_irqaction); 645 register_percpu_irq(IA64_IPI_VECTOR, &ipi_irqaction);
579 register_percpu_irq(IA64_IPI_RESCHEDULE, &resched_irqaction); 646 register_percpu_irq(IA64_IPI_RESCHEDULE, &resched_irqaction);
580 register_percpu_irq(IA64_IPI_LOCAL_TLB_FLUSH, &tlb_irqaction); 647 register_percpu_irq(IA64_IPI_LOCAL_TLB_FLUSH, &tlb_irqaction);
648#if defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_DIG)
649 if (vector_domain_type != VECTOR_DOMAIN_NONE) {
650 BUG_ON(IA64_FIRST_DEVICE_VECTOR != IA64_IRQ_MOVE_VECTOR);
651 IA64_FIRST_DEVICE_VECTOR++;
652 register_percpu_irq(IA64_IRQ_MOVE_VECTOR, &irq_move_irqaction);
653 }
654#endif
581#endif 655#endif
582#ifdef CONFIG_PERFMON 656#ifdef CONFIG_PERFMON
583 pfm_init_percpu(); 657 pfm_init_percpu();
@@ -592,11 +666,7 @@ ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect)
592 unsigned long ipi_data; 666 unsigned long ipi_data;
593 unsigned long phys_cpu_id; 667 unsigned long phys_cpu_id;
594 668
595#ifdef CONFIG_SMP
596 phys_cpu_id = cpu_physical_id(cpu); 669 phys_cpu_id = cpu_physical_id(cpu);
597#else
598 phys_cpu_id = (ia64_getreg(_IA64_REG_CR_LID) >> 16) & 0xffff;
599#endif
600 670
601 /* 671 /*
602 * cpu number is in 8bit ID and 8bit EID 672 * cpu number is in 8bit ID and 8bit EID
diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c
index b618487cdc85..8d9a446a0d17 100644
--- a/arch/ia64/kernel/kprobes.c
+++ b/arch/ia64/kernel/kprobes.c
@@ -838,7 +838,7 @@ out:
838 return 1; 838 return 1;
839} 839}
840 840
841int __kprobes kprobes_fault_handler(struct pt_regs *regs, int trapnr) 841int __kprobes kprobe_fault_handler(struct pt_regs *regs, int trapnr)
842{ 842{
843 struct kprobe *cur = kprobe_running(); 843 struct kprobe *cur = kprobe_running();
844 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); 844 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
@@ -1001,6 +1001,11 @@ int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs)
1001 return 1; 1001 return 1;
1002} 1002}
1003 1003
1004/* ia64 does not need this */
1005void __kprobes jprobe_return(void)
1006{
1007}
1008
1004int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs) 1009int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
1005{ 1010{
1006 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); 1011 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index 6e17aed53135..6c18221dba36 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -413,8 +413,8 @@ ia64_log_get(int sal_info_type, u8 **buffer, int irq_safe)
413 IA64_LOG_INDEX_INC(sal_info_type); 413 IA64_LOG_INDEX_INC(sal_info_type);
414 IA64_LOG_UNLOCK(sal_info_type); 414 IA64_LOG_UNLOCK(sal_info_type);
415 if (irq_safe) { 415 if (irq_safe) {
416 IA64_MCA_DEBUG("%s: SAL error record type %d retrieved. " 416 IA64_MCA_DEBUG("%s: SAL error record type %d retrieved. Record length = %ld\n",
417 "Record length = %ld\n", __FUNCTION__, sal_info_type, total_len); 417 __func__, sal_info_type, total_len);
418 } 418 }
419 *buffer = (u8 *) log_buffer; 419 *buffer = (u8 *) log_buffer;
420 return total_len; 420 return total_len;
@@ -518,7 +518,7 @@ ia64_mca_cpe_int_handler (int cpe_irq, void *arg)
518 static DEFINE_SPINLOCK(cpe_history_lock); 518 static DEFINE_SPINLOCK(cpe_history_lock);
519 519
520 IA64_MCA_DEBUG("%s: received interrupt vector = %#x on CPU %d\n", 520 IA64_MCA_DEBUG("%s: received interrupt vector = %#x on CPU %d\n",
521 __FUNCTION__, cpe_irq, smp_processor_id()); 521 __func__, cpe_irq, smp_processor_id());
522 522
523 /* SAL spec states this should run w/ interrupts enabled */ 523 /* SAL spec states this should run w/ interrupts enabled */
524 local_irq_enable(); 524 local_irq_enable();
@@ -594,7 +594,7 @@ ia64_mca_register_cpev (int cpev)
594 } 594 }
595 595
596 IA64_MCA_DEBUG("%s: corrected platform error " 596 IA64_MCA_DEBUG("%s: corrected platform error "
597 "vector %#x registered\n", __FUNCTION__, cpev); 597 "vector %#x registered\n", __func__, cpev);
598} 598}
599#endif /* CONFIG_ACPI */ 599#endif /* CONFIG_ACPI */
600 600
@@ -621,12 +621,11 @@ ia64_mca_cmc_vector_setup (void)
621 cmcv.cmcv_vector = IA64_CMC_VECTOR; 621 cmcv.cmcv_vector = IA64_CMC_VECTOR;
622 ia64_setreg(_IA64_REG_CR_CMCV, cmcv.cmcv_regval); 622 ia64_setreg(_IA64_REG_CR_CMCV, cmcv.cmcv_regval);
623 623
624 IA64_MCA_DEBUG("%s: CPU %d corrected " 624 IA64_MCA_DEBUG("%s: CPU %d corrected machine check vector %#x registered.\n",
625 "machine check vector %#x registered.\n", 625 __func__, smp_processor_id(), IA64_CMC_VECTOR);
626 __FUNCTION__, smp_processor_id(), IA64_CMC_VECTOR);
627 626
628 IA64_MCA_DEBUG("%s: CPU %d CMCV = %#016lx\n", 627 IA64_MCA_DEBUG("%s: CPU %d CMCV = %#016lx\n",
629 __FUNCTION__, smp_processor_id(), ia64_getreg(_IA64_REG_CR_CMCV)); 628 __func__, smp_processor_id(), ia64_getreg(_IA64_REG_CR_CMCV));
630} 629}
631 630
632/* 631/*
@@ -651,9 +650,8 @@ ia64_mca_cmc_vector_disable (void *dummy)
651 cmcv.cmcv_mask = 1; /* Mask/disable interrupt */ 650 cmcv.cmcv_mask = 1; /* Mask/disable interrupt */
652 ia64_setreg(_IA64_REG_CR_CMCV, cmcv.cmcv_regval); 651 ia64_setreg(_IA64_REG_CR_CMCV, cmcv.cmcv_regval);
653 652
654 IA64_MCA_DEBUG("%s: CPU %d corrected " 653 IA64_MCA_DEBUG("%s: CPU %d corrected machine check vector %#x disabled.\n",
655 "machine check vector %#x disabled.\n", 654 __func__, smp_processor_id(), cmcv.cmcv_vector);
656 __FUNCTION__, smp_processor_id(), cmcv.cmcv_vector);
657} 655}
658 656
659/* 657/*
@@ -678,9 +676,8 @@ ia64_mca_cmc_vector_enable (void *dummy)
678 cmcv.cmcv_mask = 0; /* Unmask/enable interrupt */ 676 cmcv.cmcv_mask = 0; /* Unmask/enable interrupt */
679 ia64_setreg(_IA64_REG_CR_CMCV, cmcv.cmcv_regval); 677 ia64_setreg(_IA64_REG_CR_CMCV, cmcv.cmcv_regval);
680 678
681 IA64_MCA_DEBUG("%s: CPU %d corrected " 679 IA64_MCA_DEBUG("%s: CPU %d corrected machine check vector %#x enabled.\n",
682 "machine check vector %#x enabled.\n", 680 __func__, smp_processor_id(), cmcv.cmcv_vector);
683 __FUNCTION__, smp_processor_id(), cmcv.cmcv_vector);
684} 681}
685 682
686/* 683/*
@@ -767,7 +764,7 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg)
767 local_irq_save(flags); 764 local_irq_save(flags);
768 if (notify_die(DIE_MCA_RENDZVOUS_ENTER, "MCA", get_irq_regs(), 765 if (notify_die(DIE_MCA_RENDZVOUS_ENTER, "MCA", get_irq_regs(),
769 (long)&nd, 0, 0) == NOTIFY_STOP) 766 (long)&nd, 0, 0) == NOTIFY_STOP)
770 ia64_mca_spin(__FUNCTION__); 767 ia64_mca_spin(__func__);
771 768
772 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_DONE; 769 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_DONE;
773 /* Register with the SAL monarch that the slave has 770 /* Register with the SAL monarch that the slave has
@@ -777,7 +774,7 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg)
777 774
778 if (notify_die(DIE_MCA_RENDZVOUS_PROCESS, "MCA", get_irq_regs(), 775 if (notify_die(DIE_MCA_RENDZVOUS_PROCESS, "MCA", get_irq_regs(),
779 (long)&nd, 0, 0) == NOTIFY_STOP) 776 (long)&nd, 0, 0) == NOTIFY_STOP)
780 ia64_mca_spin(__FUNCTION__); 777 ia64_mca_spin(__func__);
781 778
782 /* Wait for the monarch cpu to exit. */ 779 /* Wait for the monarch cpu to exit. */
783 while (monarch_cpu != -1) 780 while (monarch_cpu != -1)
@@ -785,7 +782,7 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg)
785 782
786 if (notify_die(DIE_MCA_RENDZVOUS_LEAVE, "MCA", get_irq_regs(), 783 if (notify_die(DIE_MCA_RENDZVOUS_LEAVE, "MCA", get_irq_regs(),
787 (long)&nd, 0, 0) == NOTIFY_STOP) 784 (long)&nd, 0, 0) == NOTIFY_STOP)
788 ia64_mca_spin(__FUNCTION__); 785 ia64_mca_spin(__func__);
789 786
790 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_NOTDONE; 787 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_NOTDONE;
791 /* Enable all interrupts */ 788 /* Enable all interrupts */
@@ -1230,7 +1227,7 @@ ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,
1230 1227
1231 if (notify_die(DIE_MCA_MONARCH_ENTER, "MCA", regs, (long)&nd, 0, 0) 1228 if (notify_die(DIE_MCA_MONARCH_ENTER, "MCA", regs, (long)&nd, 0, 0)
1232 == NOTIFY_STOP) 1229 == NOTIFY_STOP)
1233 ia64_mca_spin(__FUNCTION__); 1230 ia64_mca_spin(__func__);
1234 1231
1235 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_CONCURRENT_MCA; 1232 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_CONCURRENT_MCA;
1236 if (sos->monarch) { 1233 if (sos->monarch) {
@@ -1246,7 +1243,7 @@ ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,
1246 ia64_mca_wakeup_all(); 1243 ia64_mca_wakeup_all();
1247 if (notify_die(DIE_MCA_MONARCH_PROCESS, "MCA", regs, (long)&nd, 0, 0) 1244 if (notify_die(DIE_MCA_MONARCH_PROCESS, "MCA", regs, (long)&nd, 0, 0)
1248 == NOTIFY_STOP) 1245 == NOTIFY_STOP)
1249 ia64_mca_spin(__FUNCTION__); 1246 ia64_mca_spin(__func__);
1250 } else { 1247 } else {
1251 while (cpu_isset(cpu, mca_cpu)) 1248 while (cpu_isset(cpu, mca_cpu))
1252 cpu_relax(); /* spin until monarch wakes us */ 1249 cpu_relax(); /* spin until monarch wakes us */
@@ -1276,7 +1273,7 @@ ia64_mca_handler(struct pt_regs *regs, struct switch_stack *sw,
1276 } 1273 }
1277 if (notify_die(DIE_MCA_MONARCH_LEAVE, "MCA", regs, (long)&nd, 0, recover) 1274 if (notify_die(DIE_MCA_MONARCH_LEAVE, "MCA", regs, (long)&nd, 0, recover)
1278 == NOTIFY_STOP) 1275 == NOTIFY_STOP)
1279 ia64_mca_spin(__FUNCTION__); 1276 ia64_mca_spin(__func__);
1280 1277
1281 1278
1282 if (atomic_dec_return(&mca_count) > 0) { 1279 if (atomic_dec_return(&mca_count) > 0) {
@@ -1328,7 +1325,7 @@ ia64_mca_cmc_int_handler(int cmc_irq, void *arg)
1328 static DEFINE_SPINLOCK(cmc_history_lock); 1325 static DEFINE_SPINLOCK(cmc_history_lock);
1329 1326
1330 IA64_MCA_DEBUG("%s: received interrupt vector = %#x on CPU %d\n", 1327 IA64_MCA_DEBUG("%s: received interrupt vector = %#x on CPU %d\n",
1331 __FUNCTION__, cmc_irq, smp_processor_id()); 1328 __func__, cmc_irq, smp_processor_id());
1332 1329
1333 /* SAL spec states this should run w/ interrupts enabled */ 1330 /* SAL spec states this should run w/ interrupts enabled */
1334 local_irq_enable(); 1331 local_irq_enable();
@@ -1614,7 +1611,7 @@ ia64_init_handler(struct pt_regs *regs, struct switch_stack *sw,
1614 */ 1611 */
1615 if (!sos->monarch && atomic_add_return(1, &slaves) == num_online_cpus()) { 1612 if (!sos->monarch && atomic_add_return(1, &slaves) == num_online_cpus()) {
1616 mprintk(KERN_WARNING "%s: Promoting cpu %d to monarch.\n", 1613 mprintk(KERN_WARNING "%s: Promoting cpu %d to monarch.\n",
1617 __FUNCTION__, cpu); 1614 __func__, cpu);
1618 atomic_dec(&slaves); 1615 atomic_dec(&slaves);
1619 sos->monarch = 1; 1616 sos->monarch = 1;
1620 } 1617 }
@@ -1626,7 +1623,7 @@ ia64_init_handler(struct pt_regs *regs, struct switch_stack *sw,
1626 */ 1623 */
1627 if (sos->monarch && atomic_add_return(1, &monarchs) > 1) { 1624 if (sos->monarch && atomic_add_return(1, &monarchs) > 1) {
1628 mprintk(KERN_WARNING "%s: Demoting cpu %d to slave.\n", 1625 mprintk(KERN_WARNING "%s: Demoting cpu %d to slave.\n",
1629 __FUNCTION__, cpu); 1626 __func__, cpu);
1630 atomic_dec(&monarchs); 1627 atomic_dec(&monarchs);
1631 sos->monarch = 0; 1628 sos->monarch = 0;
1632 } 1629 }
@@ -1637,15 +1634,15 @@ ia64_init_handler(struct pt_regs *regs, struct switch_stack *sw,
1637 cpu_relax(); /* spin until monarch enters */ 1634 cpu_relax(); /* spin until monarch enters */
1638 if (notify_die(DIE_INIT_SLAVE_ENTER, "INIT", regs, (long)&nd, 0, 0) 1635 if (notify_die(DIE_INIT_SLAVE_ENTER, "INIT", regs, (long)&nd, 0, 0)
1639 == NOTIFY_STOP) 1636 == NOTIFY_STOP)
1640 ia64_mca_spin(__FUNCTION__); 1637 ia64_mca_spin(__func__);
1641 if (notify_die(DIE_INIT_SLAVE_PROCESS, "INIT", regs, (long)&nd, 0, 0) 1638 if (notify_die(DIE_INIT_SLAVE_PROCESS, "INIT", regs, (long)&nd, 0, 0)
1642 == NOTIFY_STOP) 1639 == NOTIFY_STOP)
1643 ia64_mca_spin(__FUNCTION__); 1640 ia64_mca_spin(__func__);
1644 while (monarch_cpu != -1) 1641 while (monarch_cpu != -1)
1645 cpu_relax(); /* spin until monarch leaves */ 1642 cpu_relax(); /* spin until monarch leaves */
1646 if (notify_die(DIE_INIT_SLAVE_LEAVE, "INIT", regs, (long)&nd, 0, 0) 1643 if (notify_die(DIE_INIT_SLAVE_LEAVE, "INIT", regs, (long)&nd, 0, 0)
1647 == NOTIFY_STOP) 1644 == NOTIFY_STOP)
1648 ia64_mca_spin(__FUNCTION__); 1645 ia64_mca_spin(__func__);
1649 mprintk("Slave on cpu %d returning to normal service.\n", cpu); 1646 mprintk("Slave on cpu %d returning to normal service.\n", cpu);
1650 set_curr_task(cpu, previous_current); 1647 set_curr_task(cpu, previous_current);
1651 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_NOTDONE; 1648 ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_NOTDONE;
@@ -1656,7 +1653,7 @@ ia64_init_handler(struct pt_regs *regs, struct switch_stack *sw,
1656 monarch_cpu = cpu; 1653 monarch_cpu = cpu;
1657 if (notify_die(DIE_INIT_MONARCH_ENTER, "INIT", regs, (long)&nd, 0, 0) 1654 if (notify_die(DIE_INIT_MONARCH_ENTER, "INIT", regs, (long)&nd, 0, 0)
1658 == NOTIFY_STOP) 1655 == NOTIFY_STOP)
1659 ia64_mca_spin(__FUNCTION__); 1656 ia64_mca_spin(__func__);
1660 1657
1661 /* 1658 /*
1662 * Wait for a bit. On some machines (e.g., HP's zx2000 and zx6000, INIT can be 1659 * Wait for a bit. On some machines (e.g., HP's zx2000 and zx6000, INIT can be
@@ -1673,10 +1670,10 @@ ia64_init_handler(struct pt_regs *regs, struct switch_stack *sw,
1673 */ 1670 */
1674 if (notify_die(DIE_INIT_MONARCH_PROCESS, "INIT", regs, (long)&nd, 0, 0) 1671 if (notify_die(DIE_INIT_MONARCH_PROCESS, "INIT", regs, (long)&nd, 0, 0)
1675 == NOTIFY_STOP) 1672 == NOTIFY_STOP)
1676 ia64_mca_spin(__FUNCTION__); 1673 ia64_mca_spin(__func__);
1677 if (notify_die(DIE_INIT_MONARCH_LEAVE, "INIT", regs, (long)&nd, 0, 0) 1674 if (notify_die(DIE_INIT_MONARCH_LEAVE, "INIT", regs, (long)&nd, 0, 0)
1678 == NOTIFY_STOP) 1675 == NOTIFY_STOP)
1679 ia64_mca_spin(__FUNCTION__); 1676 ia64_mca_spin(__func__);
1680 mprintk("\nINIT dump complete. Monarch on cpu %d returning to normal service.\n", cpu); 1677 mprintk("\nINIT dump complete. Monarch on cpu %d returning to normal service.\n", cpu);
1681 atomic_dec(&monarchs); 1678 atomic_dec(&monarchs);
1682 set_curr_task(cpu, previous_current); 1679 set_curr_task(cpu, previous_current);
@@ -1884,7 +1881,7 @@ ia64_mca_init(void)
1884 .priority = 0/* we need to notified last */ 1881 .priority = 0/* we need to notified last */
1885 }; 1882 };
1886 1883
1887 IA64_MCA_DEBUG("%s: begin\n", __FUNCTION__); 1884 IA64_MCA_DEBUG("%s: begin\n", __func__);
1888 1885
1889 /* Clear the Rendez checkin flag for all cpus */ 1886 /* Clear the Rendez checkin flag for all cpus */
1890 for(i = 0 ; i < NR_CPUS; i++) 1887 for(i = 0 ; i < NR_CPUS; i++)
@@ -1928,7 +1925,7 @@ ia64_mca_init(void)
1928 return; 1925 return;
1929 } 1926 }
1930 1927
1931 IA64_MCA_DEBUG("%s: registered MCA rendezvous spinloop and wakeup mech.\n", __FUNCTION__); 1928 IA64_MCA_DEBUG("%s: registered MCA rendezvous spinloop and wakeup mech.\n", __func__);
1932 1929
1933 ia64_mc_info.imi_mca_handler = ia64_tpa(mca_hldlr_ptr->fp); 1930 ia64_mc_info.imi_mca_handler = ia64_tpa(mca_hldlr_ptr->fp);
1934 /* 1931 /*
@@ -1949,7 +1946,7 @@ ia64_mca_init(void)
1949 return; 1946 return;
1950 } 1947 }
1951 1948
1952 IA64_MCA_DEBUG("%s: registered OS MCA handler with SAL at 0x%lx, gp = 0x%lx\n", __FUNCTION__, 1949 IA64_MCA_DEBUG("%s: registered OS MCA handler with SAL at 0x%lx, gp = 0x%lx\n", __func__,
1953 ia64_mc_info.imi_mca_handler, ia64_tpa(mca_hldlr_ptr->gp)); 1950 ia64_mc_info.imi_mca_handler, ia64_tpa(mca_hldlr_ptr->gp));
1954 1951
1955 /* 1952 /*
@@ -1961,7 +1958,7 @@ ia64_mca_init(void)
1961 ia64_mc_info.imi_slave_init_handler = ia64_tpa(init_hldlr_ptr_slave->fp); 1958 ia64_mc_info.imi_slave_init_handler = ia64_tpa(init_hldlr_ptr_slave->fp);
1962 ia64_mc_info.imi_slave_init_handler_size = 0; 1959 ia64_mc_info.imi_slave_init_handler_size = 0;
1963 1960
1964 IA64_MCA_DEBUG("%s: OS INIT handler at %lx\n", __FUNCTION__, 1961 IA64_MCA_DEBUG("%s: OS INIT handler at %lx\n", __func__,
1965 ia64_mc_info.imi_monarch_init_handler); 1962 ia64_mc_info.imi_monarch_init_handler);
1966 1963
1967 /* Register the os init handler with SAL */ 1964 /* Register the os init handler with SAL */
@@ -1982,7 +1979,7 @@ ia64_mca_init(void)
1982 return; 1979 return;
1983 } 1980 }
1984 1981
1985 IA64_MCA_DEBUG("%s: registered OS INIT handler with SAL\n", __FUNCTION__); 1982 IA64_MCA_DEBUG("%s: registered OS INIT handler with SAL\n", __func__);
1986 1983
1987 /* 1984 /*
1988 * Configure the CMCI/P vector and handler. Interrupts for CMC are 1985 * Configure the CMCI/P vector and handler. Interrupts for CMC are
@@ -2042,7 +2039,7 @@ ia64_mca_late_init(void)
2042 cmc_polling_enabled = 0; 2039 cmc_polling_enabled = 0;
2043 schedule_work(&cmc_enable_work); 2040 schedule_work(&cmc_enable_work);
2044 2041
2045 IA64_MCA_DEBUG("%s: CMCI/P setup and enabled.\n", __FUNCTION__); 2042 IA64_MCA_DEBUG("%s: CMCI/P setup and enabled.\n", __func__);
2046 2043
2047#ifdef CONFIG_ACPI 2044#ifdef CONFIG_ACPI
2048 /* Setup the CPEI/P vector and handler */ 2045 /* Setup the CPEI/P vector and handler */
@@ -2065,17 +2062,17 @@ ia64_mca_late_init(void)
2065 ia64_cpe_irq = irq; 2062 ia64_cpe_irq = irq;
2066 ia64_mca_register_cpev(cpe_vector); 2063 ia64_mca_register_cpev(cpe_vector);
2067 IA64_MCA_DEBUG("%s: CPEI/P setup and enabled.\n", 2064 IA64_MCA_DEBUG("%s: CPEI/P setup and enabled.\n",
2068 __FUNCTION__); 2065 __func__);
2069 return 0; 2066 return 0;
2070 } 2067 }
2071 printk(KERN_ERR "%s: Failed to find irq for CPE " 2068 printk(KERN_ERR "%s: Failed to find irq for CPE "
2072 "interrupt handler, vector %d\n", 2069 "interrupt handler, vector %d\n",
2073 __FUNCTION__, cpe_vector); 2070 __func__, cpe_vector);
2074 } 2071 }
2075 /* If platform doesn't support CPEI, get the timer going. */ 2072 /* If platform doesn't support CPEI, get the timer going. */
2076 if (cpe_poll_enabled) { 2073 if (cpe_poll_enabled) {
2077 ia64_mca_cpe_poll(0UL); 2074 ia64_mca_cpe_poll(0UL);
2078 IA64_MCA_DEBUG("%s: CPEP setup and enabled.\n", __FUNCTION__); 2075 IA64_MCA_DEBUG("%s: CPEP setup and enabled.\n", __func__);
2079 } 2076 }
2080 } 2077 }
2081#endif 2078#endif
diff --git a/arch/ia64/kernel/module.c b/arch/ia64/kernel/module.c
index e58f4367cf11..e83e2ea3b3e0 100644
--- a/arch/ia64/kernel/module.c
+++ b/arch/ia64/kernel/module.c
@@ -493,7 +493,7 @@ module_frob_arch_sections (Elf_Ehdr *ehdr, Elf_Shdr *sechdrs, char *secstrings,
493 mod->arch.opd->sh_addralign = 8; 493 mod->arch.opd->sh_addralign = 8;
494 mod->arch.opd->sh_size = fdescs * sizeof(struct fdesc); 494 mod->arch.opd->sh_size = fdescs * sizeof(struct fdesc);
495 DEBUGP("%s: core.plt=%lx, init.plt=%lx, got=%lx, fdesc=%lx\n", 495 DEBUGP("%s: core.plt=%lx, init.plt=%lx, got=%lx, fdesc=%lx\n",
496 __FUNCTION__, mod->arch.core_plt->sh_size, mod->arch.init_plt->sh_size, 496 __func__, mod->arch.core_plt->sh_size, mod->arch.init_plt->sh_size,
497 mod->arch.got->sh_size, mod->arch.opd->sh_size); 497 mod->arch.got->sh_size, mod->arch.opd->sh_size);
498 return 0; 498 return 0;
499} 499}
@@ -585,7 +585,7 @@ get_plt (struct module *mod, const struct insn *insn, uint64_t value, int *okp)
585#if ARCH_MODULE_DEBUG 585#if ARCH_MODULE_DEBUG
586 if (plt_target(plt) != target_ip) { 586 if (plt_target(plt) != target_ip) {
587 printk("%s: mistargeted PLT: wanted %lx, got %lx\n", 587 printk("%s: mistargeted PLT: wanted %lx, got %lx\n",
588 __FUNCTION__, target_ip, plt_target(plt)); 588 __func__, target_ip, plt_target(plt));
589 *okp = 0; 589 *okp = 0;
590 return 0; 590 return 0;
591 } 591 }
@@ -703,7 +703,7 @@ do_reloc (struct module *mod, uint8_t r_type, Elf64_Sym *sym, uint64_t addend,
703 if (r_type == R_IA64_PCREL21BI) { 703 if (r_type == R_IA64_PCREL21BI) {
704 if (!is_internal(mod, val)) { 704 if (!is_internal(mod, val)) {
705 printk(KERN_ERR "%s: %s reloc against non-local symbol (%lx)\n", 705 printk(KERN_ERR "%s: %s reloc against non-local symbol (%lx)\n",
706 __FUNCTION__, reloc_name[r_type], val); 706 __func__, reloc_name[r_type], val);
707 return -ENOEXEC; 707 return -ENOEXEC;
708 } 708 }
709 format = RF_INSN21B; 709 format = RF_INSN21B;
@@ -737,7 +737,7 @@ do_reloc (struct module *mod, uint8_t r_type, Elf64_Sym *sym, uint64_t addend,
737 case R_IA64_LDXMOV: 737 case R_IA64_LDXMOV:
738 if (gp_addressable(mod, val)) { 738 if (gp_addressable(mod, val)) {
739 /* turn "ld8" into "mov": */ 739 /* turn "ld8" into "mov": */
740 DEBUGP("%s: patching ld8 at %p to mov\n", __FUNCTION__, location); 740 DEBUGP("%s: patching ld8 at %p to mov\n", __func__, location);
741 ia64_patch((u64) location, 0x1fff80fe000UL, 0x10000000000UL); 741 ia64_patch((u64) location, 0x1fff80fe000UL, 0x10000000000UL);
742 } 742 }
743 return 0; 743 return 0;
@@ -771,7 +771,7 @@ do_reloc (struct module *mod, uint8_t r_type, Elf64_Sym *sym, uint64_t addend,
771 if (!ok) 771 if (!ok)
772 return -ENOEXEC; 772 return -ENOEXEC;
773 773
774 DEBUGP("%s: [%p]<-%016lx = %s(%lx)\n", __FUNCTION__, location, val, 774 DEBUGP("%s: [%p]<-%016lx = %s(%lx)\n", __func__, location, val,
775 reloc_name[r_type] ? reloc_name[r_type] : "?", sym->st_value + addend); 775 reloc_name[r_type] ? reloc_name[r_type] : "?", sym->st_value + addend);
776 776
777 switch (format) { 777 switch (format) {
@@ -807,7 +807,7 @@ apply_relocate_add (Elf64_Shdr *sechdrs, const char *strtab, unsigned int symind
807 Elf64_Shdr *target_sec; 807 Elf64_Shdr *target_sec;
808 int ret; 808 int ret;
809 809
810 DEBUGP("%s: applying section %u (%u relocs) to %u\n", __FUNCTION__, 810 DEBUGP("%s: applying section %u (%u relocs) to %u\n", __func__,
811 relsec, n, sechdrs[relsec].sh_info); 811 relsec, n, sechdrs[relsec].sh_info);
812 812
813 target_sec = sechdrs + sechdrs[relsec].sh_info; 813 target_sec = sechdrs + sechdrs[relsec].sh_info;
@@ -835,7 +835,7 @@ apply_relocate_add (Elf64_Shdr *sechdrs, const char *strtab, unsigned int symind
835 gp = mod->core_size / 2; 835 gp = mod->core_size / 2;
836 gp = (uint64_t) mod->module_core + ((gp + 7) & -8); 836 gp = (uint64_t) mod->module_core + ((gp + 7) & -8);
837 mod->arch.gp = gp; 837 mod->arch.gp = gp;
838 DEBUGP("%s: placing gp at 0x%lx\n", __FUNCTION__, gp); 838 DEBUGP("%s: placing gp at 0x%lx\n", __func__, gp);
839 } 839 }
840 840
841 for (i = 0; i < n; i++) { 841 for (i = 0; i < n; i++) {
@@ -903,7 +903,7 @@ register_unwind_table (struct module *mod)
903 init = start + num_core; 903 init = start + num_core;
904 } 904 }
905 905
906 DEBUGP("%s: name=%s, gp=%lx, num_init=%lu, num_core=%lu\n", __FUNCTION__, 906 DEBUGP("%s: name=%s, gp=%lx, num_init=%lu, num_core=%lu\n", __func__,
907 mod->name, mod->arch.gp, num_init, num_core); 907 mod->name, mod->arch.gp, num_init, num_core);
908 908
909 /* 909 /*
@@ -912,13 +912,13 @@ register_unwind_table (struct module *mod)
912 if (num_core > 0) { 912 if (num_core > 0) {
913 mod->arch.core_unw_table = unw_add_unwind_table(mod->name, 0, mod->arch.gp, 913 mod->arch.core_unw_table = unw_add_unwind_table(mod->name, 0, mod->arch.gp,
914 core, core + num_core); 914 core, core + num_core);
915 DEBUGP("%s: core: handle=%p [%p-%p)\n", __FUNCTION__, 915 DEBUGP("%s: core: handle=%p [%p-%p)\n", __func__,
916 mod->arch.core_unw_table, core, core + num_core); 916 mod->arch.core_unw_table, core, core + num_core);
917 } 917 }
918 if (num_init > 0) { 918 if (num_init > 0) {
919 mod->arch.init_unw_table = unw_add_unwind_table(mod->name, 0, mod->arch.gp, 919 mod->arch.init_unw_table = unw_add_unwind_table(mod->name, 0, mod->arch.gp,
920 init, init + num_init); 920 init, init + num_init);
921 DEBUGP("%s: init: handle=%p [%p-%p)\n", __FUNCTION__, 921 DEBUGP("%s: init: handle=%p [%p-%p)\n", __func__,
922 mod->arch.init_unw_table, init, init + num_init); 922 mod->arch.init_unw_table, init, init + num_init);
923 } 923 }
924} 924}
@@ -926,7 +926,7 @@ register_unwind_table (struct module *mod)
926int 926int
927module_finalize (const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *mod) 927module_finalize (const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *mod)
928{ 928{
929 DEBUGP("%s: init: entry=%p\n", __FUNCTION__, mod->init); 929 DEBUGP("%s: init: entry=%p\n", __func__, mod->init);
930 if (mod->arch.unwind) 930 if (mod->arch.unwind)
931 register_unwind_table(mod); 931 register_unwind_table(mod);
932 return 0; 932 return 0;
diff --git a/arch/ia64/kernel/msi_ia64.c b/arch/ia64/kernel/msi_ia64.c
index e86d02959794..60c6ef67ebb2 100644
--- a/arch/ia64/kernel/msi_ia64.c
+++ b/arch/ia64/kernel/msi_ia64.c
@@ -57,7 +57,7 @@ static void ia64_set_msi_irq_affinity(unsigned int irq, cpumask_t cpu_mask)
57 if (!cpu_online(cpu)) 57 if (!cpu_online(cpu))
58 return; 58 return;
59 59
60 if (reassign_irq_vector(irq, cpu)) 60 if (irq_prepare_move(irq, cpu))
61 return; 61 return;
62 62
63 read_msi_msg(irq, &msg); 63 read_msi_msg(irq, &msg);
@@ -119,6 +119,7 @@ void ia64_teardown_msi_irq(unsigned int irq)
119 119
120static void ia64_ack_msi_irq(unsigned int irq) 120static void ia64_ack_msi_irq(unsigned int irq)
121{ 121{
122 irq_complete_move(irq);
122 move_native_irq(irq); 123 move_native_irq(irq);
123 ia64_eoi(); 124 ia64_eoi();
124} 125}
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
index f6b99719f10f..a2aabfdc80d9 100644
--- a/arch/ia64/kernel/perfmon.c
+++ b/arch/ia64/kernel/perfmon.c
@@ -227,12 +227,12 @@
227#ifdef PFM_DEBUGGING 227#ifdef PFM_DEBUGGING
228#define DPRINT(a) \ 228#define DPRINT(a) \
229 do { \ 229 do { \
230 if (unlikely(pfm_sysctl.debug >0)) { printk("%s.%d: CPU%d [%d] ", __FUNCTION__, __LINE__, smp_processor_id(), task_pid_nr(current)); printk a; } \ 230 if (unlikely(pfm_sysctl.debug >0)) { printk("%s.%d: CPU%d [%d] ", __func__, __LINE__, smp_processor_id(), task_pid_nr(current)); printk a; } \
231 } while (0) 231 } while (0)
232 232
233#define DPRINT_ovfl(a) \ 233#define DPRINT_ovfl(a) \
234 do { \ 234 do { \
235 if (unlikely(pfm_sysctl.debug > 0 && pfm_sysctl.debug_ovfl >0)) { printk("%s.%d: CPU%d [%d] ", __FUNCTION__, __LINE__, smp_processor_id(), task_pid_nr(current)); printk a; } \ 235 if (unlikely(pfm_sysctl.debug > 0 && pfm_sysctl.debug_ovfl >0)) { printk("%s.%d: CPU%d [%d] ", __func__, __LINE__, smp_processor_id(), task_pid_nr(current)); printk a; } \
236 } while (0) 236 } while (0)
237#endif 237#endif
238 238
diff --git a/arch/ia64/kernel/perfmon_default_smpl.c b/arch/ia64/kernel/perfmon_default_smpl.c
index a7af1cb419f9..5f637bbfcccd 100644
--- a/arch/ia64/kernel/perfmon_default_smpl.c
+++ b/arch/ia64/kernel/perfmon_default_smpl.c
@@ -24,12 +24,12 @@ MODULE_LICENSE("GPL");
24#ifdef DEFAULT_DEBUG 24#ifdef DEFAULT_DEBUG
25#define DPRINT(a) \ 25#define DPRINT(a) \
26 do { \ 26 do { \
27 if (unlikely(pfm_sysctl.debug >0)) { printk("%s.%d: CPU%d ", __FUNCTION__, __LINE__, smp_processor_id()); printk a; } \ 27 if (unlikely(pfm_sysctl.debug >0)) { printk("%s.%d: CPU%d ", __func__, __LINE__, smp_processor_id()); printk a; } \
28 } while (0) 28 } while (0)
29 29
30#define DPRINT_ovfl(a) \ 30#define DPRINT_ovfl(a) \
31 do { \ 31 do { \
32 if (unlikely(pfm_sysctl.debug > 0 && pfm_sysctl.debug_ovfl >0)) { printk("%s.%d: CPU%d ", __FUNCTION__, __LINE__, smp_processor_id()); printk a; } \ 32 if (unlikely(pfm_sysctl.debug > 0 && pfm_sysctl.debug_ovfl >0)) { printk("%s.%d: CPU%d ", __func__, __LINE__, smp_processor_id()); printk a; } \
33 } while (0) 33 } while (0)
34 34
35#else 35#else
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c
index 331d6768b5d5..ab784ec4319d 100644
--- a/arch/ia64/kernel/ptrace.c
+++ b/arch/ia64/kernel/ptrace.c
@@ -698,52 +698,6 @@ thread_matches (struct task_struct *thread, unsigned long addr)
698} 698}
699 699
700/* 700/*
701 * GDB apparently wants to be able to read the register-backing store
702 * of any thread when attached to a given process. If we are peeking
703 * or poking an address that happens to reside in the kernel-backing
704 * store of another thread, we need to attach to that thread, because
705 * otherwise we end up accessing stale data.
706 *
707 * task_list_lock must be read-locked before calling this routine!
708 */
709static struct task_struct *
710find_thread_for_addr (struct task_struct *child, unsigned long addr)
711{
712 struct task_struct *p;
713 struct mm_struct *mm;
714 struct list_head *this, *next;
715 int mm_users;
716
717 if (!(mm = get_task_mm(child)))
718 return child;
719
720 /* -1 because of our get_task_mm(): */
721 mm_users = atomic_read(&mm->mm_users) - 1;
722 if (mm_users <= 1)
723 goto out; /* not multi-threaded */
724
725 /*
726 * Traverse the current process' children list. Every task that
727 * one attaches to becomes a child. And it is only attached children
728 * of the debugger that are of interest (ptrace_check_attach checks
729 * for this).
730 */
731 list_for_each_safe(this, next, &current->children) {
732 p = list_entry(this, struct task_struct, sibling);
733 if (p->tgid != child->tgid)
734 continue;
735 if (thread_matches(p, addr)) {
736 child = p;
737 goto out;
738 }
739 }
740
741 out:
742 mmput(mm);
743 return child;
744}
745
746/*
747 * Write f32-f127 back to task->thread.fph if it has been modified. 701 * Write f32-f127 back to task->thread.fph if it has been modified.
748 */ 702 */
749inline void 703inline void
@@ -826,14 +780,14 @@ convert_to_non_syscall (struct task_struct *child, struct pt_regs *pt,
826 if ((long)((unsigned long)child + IA64_STK_OFFSET - sp) 780 if ((long)((unsigned long)child + IA64_STK_OFFSET - sp)
827 < IA64_PT_REGS_SIZE) { 781 < IA64_PT_REGS_SIZE) {
828 dprintk("ptrace.%s: ran off the top of the kernel " 782 dprintk("ptrace.%s: ran off the top of the kernel "
829 "stack\n", __FUNCTION__); 783 "stack\n", __func__);
830 return; 784 return;
831 } 785 }
832 if (unw_get_pr (&prev_info, &pr) < 0) { 786 if (unw_get_pr (&prev_info, &pr) < 0) {
833 unw_get_rp(&prev_info, &ip); 787 unw_get_rp(&prev_info, &ip);
834 dprintk("ptrace.%s: failed to read " 788 dprintk("ptrace.%s: failed to read "
835 "predicate register (ip=0x%lx)\n", 789 "predicate register (ip=0x%lx)\n",
836 __FUNCTION__, ip); 790 __func__, ip);
837 return; 791 return;
838 } 792 }
839 if (unw_is_intr_frame(&info) 793 if (unw_is_intr_frame(&info)
@@ -908,7 +862,7 @@ static int
908access_uarea (struct task_struct *child, unsigned long addr, 862access_uarea (struct task_struct *child, unsigned long addr,
909 unsigned long *data, int write_access) 863 unsigned long *data, int write_access)
910{ 864{
911 unsigned long *ptr, regnum, urbs_end, rnat_addr, cfm; 865 unsigned long *ptr, regnum, urbs_end, cfm;
912 struct switch_stack *sw; 866 struct switch_stack *sw;
913 struct pt_regs *pt; 867 struct pt_regs *pt;
914# define pt_reg_addr(pt, reg) ((void *) \ 868# define pt_reg_addr(pt, reg) ((void *) \
@@ -1011,14 +965,9 @@ access_uarea (struct task_struct *child, unsigned long addr,
1011 * the kernel was entered. 965 * the kernel was entered.
1012 * 966 *
1013 * Furthermore, when changing the contents of 967 * Furthermore, when changing the contents of
1014 * PT_AR_BSP (or PT_CFM) we MUST copy any 968 * PT_AR_BSP (or PT_CFM) while the task is
1015 * users-level stacked registers that are 969 * blocked in a system call, convert the state
1016 * stored on the kernel stack back to 970 * so that the non-system-call exit
1017 * user-space because otherwise, we might end
1018 * up clobbering kernel stacked registers.
1019 * Also, if this happens while the task is
1020 * blocked in a system call, which convert the
1021 * state such that the non-system-call exit
1022 * path is used. This ensures that the proper 971 * path is used. This ensures that the proper
1023 * state will be picked up when resuming 972 * state will be picked up when resuming
1024 * execution. However, it *also* means that 973 * execution. However, it *also* means that
@@ -1035,10 +984,6 @@ access_uarea (struct task_struct *child, unsigned long addr,
1035 urbs_end = ia64_get_user_rbs_end(child, pt, &cfm); 984 urbs_end = ia64_get_user_rbs_end(child, pt, &cfm);
1036 if (write_access) { 985 if (write_access) {
1037 if (*data != urbs_end) { 986 if (*data != urbs_end) {
1038 if (ia64_sync_user_rbs(child, sw,
1039 pt->ar_bspstore,
1040 urbs_end) < 0)
1041 return -1;
1042 if (in_syscall(pt)) 987 if (in_syscall(pt))
1043 convert_to_non_syscall(child, 988 convert_to_non_syscall(child,
1044 pt, 989 pt,
@@ -1058,10 +1003,6 @@ access_uarea (struct task_struct *child, unsigned long addr,
1058 urbs_end = ia64_get_user_rbs_end(child, pt, &cfm); 1003 urbs_end = ia64_get_user_rbs_end(child, pt, &cfm);
1059 if (write_access) { 1004 if (write_access) {
1060 if (((cfm ^ *data) & PFM_MASK) != 0) { 1005 if (((cfm ^ *data) & PFM_MASK) != 0) {
1061 if (ia64_sync_user_rbs(child, sw,
1062 pt->ar_bspstore,
1063 urbs_end) < 0)
1064 return -1;
1065 if (in_syscall(pt)) 1006 if (in_syscall(pt))
1066 convert_to_non_syscall(child, 1007 convert_to_non_syscall(child,
1067 pt, 1008 pt,
@@ -1093,16 +1034,8 @@ access_uarea (struct task_struct *child, unsigned long addr,
1093 return 0; 1034 return 0;
1094 1035
1095 case PT_AR_RNAT: 1036 case PT_AR_RNAT:
1096 urbs_end = ia64_get_user_rbs_end(child, pt, NULL); 1037 ptr = pt_reg_addr(pt, ar_rnat);
1097 rnat_addr = (long) ia64_rse_rnat_addr((long *) 1038 break;
1098 urbs_end);
1099 if (write_access)
1100 return ia64_poke(child, sw, urbs_end,
1101 rnat_addr, *data);
1102 else
1103 return ia64_peek(child, sw, urbs_end,
1104 rnat_addr, data);
1105
1106 case PT_R1: 1039 case PT_R1:
1107 ptr = pt_reg_addr(pt, r1); 1040 ptr = pt_reg_addr(pt, r1);
1108 break; 1041 break;
@@ -1521,215 +1454,97 @@ ptrace_setregs (struct task_struct *child, struct pt_all_user_regs __user *ppr)
1521 return ret; 1454 return ret;
1522} 1455}
1523 1456
1524/*
1525 * Called by kernel/ptrace.c when detaching..
1526 *
1527 * Make sure the single step bit is not set.
1528 */
1529void 1457void
1530ptrace_disable (struct task_struct *child) 1458user_enable_single_step (struct task_struct *child)
1531{ 1459{
1532 struct ia64_psr *child_psr = ia64_psr(task_pt_regs(child)); 1460 struct ia64_psr *child_psr = ia64_psr(task_pt_regs(child));
1533 1461
1534 /* make sure the single step/taken-branch trap bits are not set: */ 1462 set_tsk_thread_flag(child, TIF_SINGLESTEP);
1535 clear_tsk_thread_flag(child, TIF_SINGLESTEP); 1463 child_psr->ss = 1;
1536 child_psr->ss = 0;
1537 child_psr->tb = 0;
1538} 1464}
1539 1465
1540asmlinkage long 1466void
1541sys_ptrace (long request, pid_t pid, unsigned long addr, unsigned long data) 1467user_enable_block_step (struct task_struct *child)
1542{ 1468{
1543 struct pt_regs *pt; 1469 struct ia64_psr *child_psr = ia64_psr(task_pt_regs(child));
1544 unsigned long urbs_end, peek_or_poke;
1545 struct task_struct *child;
1546 struct switch_stack *sw;
1547 long ret;
1548 struct unw_frame_info info;
1549 1470
1550 lock_kernel(); 1471 set_tsk_thread_flag(child, TIF_SINGLESTEP);
1551 ret = -EPERM; 1472 child_psr->tb = 1;
1552 if (request == PTRACE_TRACEME) { 1473}
1553 ret = ptrace_traceme();
1554 goto out;
1555 }
1556 1474
1557 peek_or_poke = (request == PTRACE_PEEKTEXT 1475void
1558 || request == PTRACE_PEEKDATA 1476user_disable_single_step (struct task_struct *child)
1559 || request == PTRACE_POKETEXT 1477{
1560 || request == PTRACE_POKEDATA); 1478 struct ia64_psr *child_psr = ia64_psr(task_pt_regs(child));
1561 ret = -ESRCH;
1562 read_lock(&tasklist_lock);
1563 {
1564 child = find_task_by_pid(pid);
1565 if (child) {
1566 if (peek_or_poke)
1567 child = find_thread_for_addr(child, addr);
1568 get_task_struct(child);
1569 }
1570 }
1571 read_unlock(&tasklist_lock);
1572 if (!child)
1573 goto out;
1574 ret = -EPERM;
1575 if (pid == 1) /* no messing around with init! */
1576 goto out_tsk;
1577
1578 if (request == PTRACE_ATTACH) {
1579 ret = ptrace_attach(child);
1580 if (!ret)
1581 arch_ptrace_attach(child);
1582 goto out_tsk;
1583 }
1584 1479
1585 ret = ptrace_check_attach(child, request == PTRACE_KILL); 1480 /* make sure the single step/taken-branch trap bits are not set: */
1586 if (ret < 0) 1481 clear_tsk_thread_flag(child, TIF_SINGLESTEP);
1587 goto out_tsk; 1482 child_psr->ss = 0;
1483 child_psr->tb = 0;
1484}
1588 1485
1589 pt = task_pt_regs(child); 1486/*
1590 sw = (struct switch_stack *) (child->thread.ksp + 16); 1487 * Called by kernel/ptrace.c when detaching..
1488 *
1489 * Make sure the single step bit is not set.
1490 */
1491void
1492ptrace_disable (struct task_struct *child)
1493{
1494 user_disable_single_step(child);
1495}
1591 1496
1497long
1498arch_ptrace (struct task_struct *child, long request, long addr, long data)
1499{
1592 switch (request) { 1500 switch (request) {
1593 case PTRACE_PEEKTEXT: 1501 case PTRACE_PEEKTEXT:
1594 case PTRACE_PEEKDATA: 1502 case PTRACE_PEEKDATA:
1595 /* read word at location addr */ 1503 /* read word at location addr */
1596 urbs_end = ia64_get_user_rbs_end(child, pt, NULL); 1504 if (access_process_vm(child, addr, &data, sizeof(data), 0)
1597 ret = ia64_peek(child, sw, urbs_end, addr, &data); 1505 != sizeof(data))
1598 if (ret == 0) { 1506 return -EIO;
1599 ret = data; 1507 /* ensure return value is not mistaken for error code */
1600 /* ensure "ret" is not mistaken as an error code: */ 1508 force_successful_syscall_return();
1601 force_successful_syscall_return(); 1509 return data;
1602 }
1603 goto out_tsk;
1604
1605 case PTRACE_POKETEXT:
1606 case PTRACE_POKEDATA:
1607 /* write the word at location addr */
1608 urbs_end = ia64_get_user_rbs_end(child, pt, NULL);
1609 ret = ia64_poke(child, sw, urbs_end, addr, data);
1610
1611 /* Make sure user RBS has the latest data */
1612 unw_init_from_blocked_task(&info, child);
1613 do_sync_rbs(&info, ia64_sync_user_rbs);
1614 1510
1615 goto out_tsk; 1511 /* PTRACE_POKETEXT and PTRACE_POKEDATA is handled
1512 * by the generic ptrace_request().
1513 */
1616 1514
1617 case PTRACE_PEEKUSR: 1515 case PTRACE_PEEKUSR:
1618 /* read the word at addr in the USER area */ 1516 /* read the word at addr in the USER area */
1619 if (access_uarea(child, addr, &data, 0) < 0) { 1517 if (access_uarea(child, addr, &data, 0) < 0)
1620 ret = -EIO; 1518 return -EIO;
1621 goto out_tsk; 1519 /* ensure return value is not mistaken for error code */
1622 }
1623 ret = data;
1624 /* ensure "ret" is not mistaken as an error code */
1625 force_successful_syscall_return(); 1520 force_successful_syscall_return();
1626 goto out_tsk; 1521 return data;
1627 1522
1628 case PTRACE_POKEUSR: 1523 case PTRACE_POKEUSR:
1629 /* write the word at addr in the USER area */ 1524 /* write the word at addr in the USER area */
1630 if (access_uarea(child, addr, &data, 1) < 0) { 1525 if (access_uarea(child, addr, &data, 1) < 0)
1631 ret = -EIO; 1526 return -EIO;
1632 goto out_tsk; 1527 return 0;
1633 }
1634 ret = 0;
1635 goto out_tsk;
1636 1528
1637 case PTRACE_OLD_GETSIGINFO: 1529 case PTRACE_OLD_GETSIGINFO:
1638 /* for backwards-compatibility */ 1530 /* for backwards-compatibility */
1639 ret = ptrace_request(child, PTRACE_GETSIGINFO, addr, data); 1531 return ptrace_request(child, PTRACE_GETSIGINFO, addr, data);
1640 goto out_tsk;
1641 1532
1642 case PTRACE_OLD_SETSIGINFO: 1533 case PTRACE_OLD_SETSIGINFO:
1643 /* for backwards-compatibility */ 1534 /* for backwards-compatibility */
1644 ret = ptrace_request(child, PTRACE_SETSIGINFO, addr, data); 1535 return ptrace_request(child, PTRACE_SETSIGINFO, addr, data);
1645 goto out_tsk;
1646
1647 case PTRACE_SYSCALL:
1648 /* continue and stop at next (return from) syscall */
1649 case PTRACE_CONT:
1650 /* restart after signal. */
1651 ret = -EIO;
1652 if (!valid_signal(data))
1653 goto out_tsk;
1654 if (request == PTRACE_SYSCALL)
1655 set_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
1656 else
1657 clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
1658 child->exit_code = data;
1659 1536
1660 /* 1537 case PTRACE_GETREGS:
1661 * Make sure the single step/taken-branch trap bits 1538 return ptrace_getregs(child,
1662 * are not set: 1539 (struct pt_all_user_regs __user *) data);
1663 */
1664 clear_tsk_thread_flag(child, TIF_SINGLESTEP);
1665 ia64_psr(pt)->ss = 0;
1666 ia64_psr(pt)->tb = 0;
1667 1540
1668 wake_up_process(child); 1541 case PTRACE_SETREGS:
1669 ret = 0; 1542 return ptrace_setregs(child,
1670 goto out_tsk; 1543 (struct pt_all_user_regs __user *) data);
1671 1544
1672 case PTRACE_KILL: 1545 default:
1673 /* 1546 return ptrace_request(child, request, addr, data);
1674 * Make the child exit. Best I can do is send it a
1675 * sigkill. Perhaps it should be put in the status
1676 * that it wants to exit.
1677 */
1678 if (child->exit_state == EXIT_ZOMBIE)
1679 /* already dead */
1680 goto out_tsk;
1681 child->exit_code = SIGKILL;
1682
1683 ptrace_disable(child);
1684 wake_up_process(child);
1685 ret = 0;
1686 goto out_tsk;
1687
1688 case PTRACE_SINGLESTEP:
1689 /* let child execute for one instruction */
1690 case PTRACE_SINGLEBLOCK:
1691 ret = -EIO;
1692 if (!valid_signal(data))
1693 goto out_tsk;
1694
1695 clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE);
1696 set_tsk_thread_flag(child, TIF_SINGLESTEP);
1697 if (request == PTRACE_SINGLESTEP) {
1698 ia64_psr(pt)->ss = 1;
1699 } else {
1700 ia64_psr(pt)->tb = 1;
1701 }
1702 child->exit_code = data;
1703
1704 /* give it a chance to run. */
1705 wake_up_process(child);
1706 ret = 0;
1707 goto out_tsk;
1708
1709 case PTRACE_DETACH:
1710 /* detach a process that was attached. */
1711 ret = ptrace_detach(child, data);
1712 goto out_tsk;
1713
1714 case PTRACE_GETREGS:
1715 ret = ptrace_getregs(child,
1716 (struct pt_all_user_regs __user *) data);
1717 goto out_tsk;
1718
1719 case PTRACE_SETREGS:
1720 ret = ptrace_setregs(child,
1721 (struct pt_all_user_regs __user *) data);
1722 goto out_tsk;
1723
1724 default:
1725 ret = ptrace_request(child, request, addr, data);
1726 goto out_tsk;
1727 } 1547 }
1728 out_tsk:
1729 put_task_struct(child);
1730 out:
1731 unlock_kernel();
1732 return ret;
1733} 1548}
1734 1549
1735 1550
diff --git a/arch/ia64/kernel/sal.c b/arch/ia64/kernel/sal.c
index f44fe8412162..a3022dc48ef8 100644
--- a/arch/ia64/kernel/sal.c
+++ b/arch/ia64/kernel/sal.c
@@ -109,6 +109,13 @@ check_versions (struct ia64_sal_systab *systab)
109 sal_revision = SAL_VERSION_CODE(2, 8); 109 sal_revision = SAL_VERSION_CODE(2, 8);
110 sal_version = SAL_VERSION_CODE(0, 0); 110 sal_version = SAL_VERSION_CODE(0, 0);
111 } 111 }
112
113 if (ia64_platform_is("sn2") && (sal_revision == SAL_VERSION_CODE(2, 9)))
114 /*
115 * SGI Altix has hard-coded version 2.9 in their prom
116 * but they actually implement 3.2, so let's fix it here.
117 */
118 sal_revision = SAL_VERSION_CODE(3, 2);
112} 119}
113 120
114static void __init 121static void __init
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index ebd1a09f3201..4aa9eaea76c3 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -690,7 +690,7 @@ get_model_name(__u8 family, __u8 model)
690 if (overflow++ == 0) 690 if (overflow++ == 0)
691 printk(KERN_ERR 691 printk(KERN_ERR
692 "%s: Table overflow. Some processor model information will be missing\n", 692 "%s: Table overflow. Some processor model information will be missing\n",
693 __FUNCTION__); 693 __func__);
694 return "Unknown"; 694 return "Unknown";
695} 695}
696 696
@@ -785,7 +785,7 @@ get_max_cacheline_size (void)
785 status = ia64_pal_cache_summary(&levels, &unique_caches); 785 status = ia64_pal_cache_summary(&levels, &unique_caches);
786 if (status != 0) { 786 if (status != 0) {
787 printk(KERN_ERR "%s: ia64_pal_cache_summary() failed (status=%ld)\n", 787 printk(KERN_ERR "%s: ia64_pal_cache_summary() failed (status=%ld)\n",
788 __FUNCTION__, status); 788 __func__, status);
789 max = SMP_CACHE_BYTES; 789 max = SMP_CACHE_BYTES;
790 /* Safest setup for "flush_icache_range()" */ 790 /* Safest setup for "flush_icache_range()" */
791 ia64_i_cache_stride_shift = I_CACHE_STRIDE_SHIFT; 791 ia64_i_cache_stride_shift = I_CACHE_STRIDE_SHIFT;
@@ -798,7 +798,7 @@ get_max_cacheline_size (void)
798 if (status != 0) { 798 if (status != 0) {
799 printk(KERN_ERR 799 printk(KERN_ERR
800 "%s: ia64_pal_cache_config_info(l=%lu, 2) failed (status=%ld)\n", 800 "%s: ia64_pal_cache_config_info(l=%lu, 2) failed (status=%ld)\n",
801 __FUNCTION__, l, status); 801 __func__, l, status);
802 max = SMP_CACHE_BYTES; 802 max = SMP_CACHE_BYTES;
803 /* The safest setup for "flush_icache_range()" */ 803 /* The safest setup for "flush_icache_range()" */
804 cci.pcci_stride = I_CACHE_STRIDE_SHIFT; 804 cci.pcci_stride = I_CACHE_STRIDE_SHIFT;
@@ -814,7 +814,7 @@ get_max_cacheline_size (void)
814 if (status != 0) { 814 if (status != 0) {
815 printk(KERN_ERR 815 printk(KERN_ERR
816 "%s: ia64_pal_cache_config_info(l=%lu, 1) failed (status=%ld)\n", 816 "%s: ia64_pal_cache_config_info(l=%lu, 1) failed (status=%ld)\n",
817 __FUNCTION__, l, status); 817 __func__, l, status);
818 /* The safest setup for "flush_icache_range()" */ 818 /* The safest setup for "flush_icache_range()" */
819 cci.pcci_stride = I_CACHE_STRIDE_SHIFT; 819 cci.pcci_stride = I_CACHE_STRIDE_SHIFT;
820 } 820 }
diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c
index 309da3567bc8..5740296c35af 100644
--- a/arch/ia64/kernel/signal.c
+++ b/arch/ia64/kernel/signal.c
@@ -342,15 +342,33 @@ setup_frame (int sig, struct k_sigaction *ka, siginfo_t *info, sigset_t *set,
342 342
343 new_sp = scr->pt.r12; 343 new_sp = scr->pt.r12;
344 tramp_addr = (unsigned long) __kernel_sigtramp; 344 tramp_addr = (unsigned long) __kernel_sigtramp;
345 if ((ka->sa.sa_flags & SA_ONSTACK) && sas_ss_flags(new_sp) == 0) { 345 if (ka->sa.sa_flags & SA_ONSTACK) {
346 new_sp = current->sas_ss_sp + current->sas_ss_size; 346 int onstack = sas_ss_flags(new_sp);
347 /* 347
348 * We need to check for the register stack being on the signal stack 348 if (onstack == 0) {
349 * separately, because it's switched separately (memory stack is switched 349 new_sp = current->sas_ss_sp + current->sas_ss_size;
350 * in the kernel, register stack is switched in the signal trampoline). 350 /*
351 */ 351 * We need to check for the register stack being on the
352 if (!rbs_on_sig_stack(scr->pt.ar_bspstore)) 352 * signal stack separately, because it's switched
353 new_rbs = (current->sas_ss_sp + sizeof(long) - 1) & ~(sizeof(long) - 1); 353 * separately (memory stack is switched in the kernel,
354 * register stack is switched in the signal trampoline).
355 */
356 if (!rbs_on_sig_stack(scr->pt.ar_bspstore))
357 new_rbs = ALIGN(current->sas_ss_sp,
358 sizeof(long));
359 } else if (onstack == SS_ONSTACK) {
360 unsigned long check_sp;
361
362 /*
363 * If we are on the alternate signal stack and would
364 * overflow it, don't. Return an always-bogus address
365 * instead so we will die with SIGSEGV.
366 */
367 check_sp = (new_sp - sizeof(*frame)) & -STACK_ALIGN;
368 if (!likely(on_sig_stack(check_sp)))
369 return force_sigsegv_info(sig, (void __user *)
370 check_sp);
371 }
354 } 372 }
355 frame = (void __user *) ((new_sp - sizeof(*frame)) & -STACK_ALIGN); 373 frame = (void __user *) ((new_sp - sizeof(*frame)) & -STACK_ALIGN);
356 374
diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c
index 52f70bbc192a..6903361d11a5 100644
--- a/arch/ia64/kernel/unaligned.c
+++ b/arch/ia64/kernel/unaligned.c
@@ -28,7 +28,7 @@ extern int die_if_kernel(char *str, struct pt_regs *regs, long err);
28#undef DEBUG_UNALIGNED_TRAP 28#undef DEBUG_UNALIGNED_TRAP
29 29
30#ifdef DEBUG_UNALIGNED_TRAP 30#ifdef DEBUG_UNALIGNED_TRAP
31# define DPRINT(a...) do { printk("%s %u: ", __FUNCTION__, __LINE__); printk (a); } while (0) 31# define DPRINT(a...) do { printk("%s %u: ", __func__, __LINE__); printk (a); } while (0)
32# define DDUMP(str,vp,len) dump(str, vp, len) 32# define DDUMP(str,vp,len) dump(str, vp, len)
33 33
34static void 34static void
@@ -674,7 +674,7 @@ emulate_load_updates (update_t type, load_store_t ld, struct pt_regs *regs, unsi
674 * just in case. 674 * just in case.
675 */ 675 */
676 if (ld.x6_op == 1 || ld.x6_op == 3) { 676 if (ld.x6_op == 1 || ld.x6_op == 3) {
677 printk(KERN_ERR "%s: register update on speculative load, error\n", __FUNCTION__); 677 printk(KERN_ERR "%s: register update on speculative load, error\n", __func__);
678 if (die_if_kernel("unaligned reference on speculative load with register update\n", 678 if (die_if_kernel("unaligned reference on speculative load with register update\n",
679 regs, 30)) 679 regs, 30))
680 return; 680 return;
@@ -1104,7 +1104,7 @@ emulate_load_floatpair (unsigned long ifa, load_store_t ld, struct pt_regs *regs
1104 */ 1104 */
1105 if (ld.x6_op == 1 || ld.x6_op == 3) 1105 if (ld.x6_op == 1 || ld.x6_op == 3)
1106 printk(KERN_ERR "%s: register update on speculative load pair, error\n", 1106 printk(KERN_ERR "%s: register update on speculative load pair, error\n",
1107 __FUNCTION__); 1107 __func__);
1108 1108
1109 setreg(ld.r3, ifa, 0, regs); 1109 setreg(ld.r3, ifa, 0, regs);
1110 } 1110 }
diff --git a/arch/ia64/kernel/unwind.c b/arch/ia64/kernel/unwind.c
index c1bdb5131814..67810b77d998 100644
--- a/arch/ia64/kernel/unwind.c
+++ b/arch/ia64/kernel/unwind.c
@@ -257,7 +257,7 @@ pt_regs_off (unsigned long reg)
257 off = unw.pt_regs_offsets[reg]; 257 off = unw.pt_regs_offsets[reg];
258 258
259 if (off < 0) { 259 if (off < 0) {
260 UNW_DPRINT(0, "unwind.%s: bad scratch reg r%lu\n", __FUNCTION__, reg); 260 UNW_DPRINT(0, "unwind.%s: bad scratch reg r%lu\n", __func__, reg);
261 off = 0; 261 off = 0;
262 } 262 }
263 return (unsigned long) off; 263 return (unsigned long) off;
@@ -268,13 +268,13 @@ get_scratch_regs (struct unw_frame_info *info)
268{ 268{
269 if (!info->pt) { 269 if (!info->pt) {
270 /* This should not happen with valid unwind info. */ 270 /* This should not happen with valid unwind info. */
271 UNW_DPRINT(0, "unwind.%s: bad unwind info: resetting info->pt\n", __FUNCTION__); 271 UNW_DPRINT(0, "unwind.%s: bad unwind info: resetting info->pt\n", __func__);
272 if (info->flags & UNW_FLAG_INTERRUPT_FRAME) 272 if (info->flags & UNW_FLAG_INTERRUPT_FRAME)
273 info->pt = (unsigned long) ((struct pt_regs *) info->psp - 1); 273 info->pt = (unsigned long) ((struct pt_regs *) info->psp - 1);
274 else 274 else
275 info->pt = info->sp - 16; 275 info->pt = info->sp - 16;
276 } 276 }
277 UNW_DPRINT(3, "unwind.%s: sp 0x%lx pt 0x%lx\n", __FUNCTION__, info->sp, info->pt); 277 UNW_DPRINT(3, "unwind.%s: sp 0x%lx pt 0x%lx\n", __func__, info->sp, info->pt);
278 return (struct pt_regs *) info->pt; 278 return (struct pt_regs *) info->pt;
279} 279}
280 280
@@ -294,7 +294,7 @@ unw_access_gr (struct unw_frame_info *info, int regnum, unsigned long *val, char
294 return 0; 294 return 0;
295 } 295 }
296 UNW_DPRINT(0, "unwind.%s: trying to access non-existent r%u\n", 296 UNW_DPRINT(0, "unwind.%s: trying to access non-existent r%u\n",
297 __FUNCTION__, regnum); 297 __func__, regnum);
298 return -1; 298 return -1;
299 } 299 }
300 300
@@ -341,7 +341,7 @@ unw_access_gr (struct unw_frame_info *info, int regnum, unsigned long *val, char
341 { 341 {
342 UNW_DPRINT(0, "unwind.%s: %p outside of regstk " 342 UNW_DPRINT(0, "unwind.%s: %p outside of regstk "
343 "[0x%lx-0x%lx)\n", 343 "[0x%lx-0x%lx)\n",
344 __FUNCTION__, (void *) addr, 344 __func__, (void *) addr,
345 info->regstk.limit, 345 info->regstk.limit,
346 info->regstk.top); 346 info->regstk.top);
347 return -1; 347 return -1;
@@ -374,7 +374,7 @@ unw_access_gr (struct unw_frame_info *info, int regnum, unsigned long *val, char
374 || (unsigned long) addr >= info->regstk.top) 374 || (unsigned long) addr >= info->regstk.top)
375 { 375 {
376 UNW_DPRINT(0, "unwind.%s: ignoring attempt to access register outside " 376 UNW_DPRINT(0, "unwind.%s: ignoring attempt to access register outside "
377 "of rbs\n", __FUNCTION__); 377 "of rbs\n", __func__);
378 return -1; 378 return -1;
379 } 379 }
380 if ((unsigned long) nat_addr >= info->regstk.top) 380 if ((unsigned long) nat_addr >= info->regstk.top)
@@ -385,7 +385,7 @@ unw_access_gr (struct unw_frame_info *info, int regnum, unsigned long *val, char
385 if (write) { 385 if (write) {
386 if (read_only(addr)) { 386 if (read_only(addr)) {
387 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n", 387 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n",
388 __FUNCTION__); 388 __func__);
389 } else { 389 } else {
390 *addr = *val; 390 *addr = *val;
391 if (*nat) 391 if (*nat)
@@ -427,13 +427,13 @@ unw_access_br (struct unw_frame_info *info, int regnum, unsigned long *val, int
427 427
428 default: 428 default:
429 UNW_DPRINT(0, "unwind.%s: trying to access non-existent b%u\n", 429 UNW_DPRINT(0, "unwind.%s: trying to access non-existent b%u\n",
430 __FUNCTION__, regnum); 430 __func__, regnum);
431 return -1; 431 return -1;
432 } 432 }
433 if (write) 433 if (write)
434 if (read_only(addr)) { 434 if (read_only(addr)) {
435 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n", 435 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n",
436 __FUNCTION__); 436 __func__);
437 } else 437 } else
438 *addr = *val; 438 *addr = *val;
439 else 439 else
@@ -450,7 +450,7 @@ unw_access_fr (struct unw_frame_info *info, int regnum, struct ia64_fpreg *val,
450 450
451 if ((unsigned) (regnum - 2) >= 126) { 451 if ((unsigned) (regnum - 2) >= 126) {
452 UNW_DPRINT(0, "unwind.%s: trying to access non-existent f%u\n", 452 UNW_DPRINT(0, "unwind.%s: trying to access non-existent f%u\n",
453 __FUNCTION__, regnum); 453 __func__, regnum);
454 return -1; 454 return -1;
455 } 455 }
456 456
@@ -482,7 +482,7 @@ unw_access_fr (struct unw_frame_info *info, int regnum, struct ia64_fpreg *val,
482 if (write) 482 if (write)
483 if (read_only(addr)) { 483 if (read_only(addr)) {
484 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n", 484 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n",
485 __FUNCTION__); 485 __func__);
486 } else 486 } else
487 *addr = *val; 487 *addr = *val;
488 else 488 else
@@ -572,14 +572,14 @@ unw_access_ar (struct unw_frame_info *info, int regnum, unsigned long *val, int
572 572
573 default: 573 default:
574 UNW_DPRINT(0, "unwind.%s: trying to access non-existent ar%u\n", 574 UNW_DPRINT(0, "unwind.%s: trying to access non-existent ar%u\n",
575 __FUNCTION__, regnum); 575 __func__, regnum);
576 return -1; 576 return -1;
577 } 577 }
578 578
579 if (write) { 579 if (write) {
580 if (read_only(addr)) { 580 if (read_only(addr)) {
581 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n", 581 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n",
582 __FUNCTION__); 582 __func__);
583 } else 583 } else
584 *addr = *val; 584 *addr = *val;
585 } else 585 } else
@@ -600,7 +600,7 @@ unw_access_pr (struct unw_frame_info *info, unsigned long *val, int write)
600 if (write) { 600 if (write) {
601 if (read_only(addr)) { 601 if (read_only(addr)) {
602 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n", 602 UNW_DPRINT(0, "unwind.%s: ignoring attempt to write read-only location\n",
603 __FUNCTION__); 603 __func__);
604 } else 604 } else
605 *addr = *val; 605 *addr = *val;
606 } else 606 } else
@@ -699,7 +699,7 @@ decode_abreg (unsigned char abreg, int memory)
699 default: 699 default:
700 break; 700 break;
701 } 701 }
702 UNW_DPRINT(0, "unwind.%s: bad abreg=0x%x\n", __FUNCTION__, abreg); 702 UNW_DPRINT(0, "unwind.%s: bad abreg=0x%x\n", __func__, abreg);
703 return UNW_REG_LC; 703 return UNW_REG_LC;
704} 704}
705 705
@@ -739,7 +739,7 @@ spill_next_when (struct unw_reg_info **regp, struct unw_reg_info *lim, unw_word
739 return; 739 return;
740 } 740 }
741 } 741 }
742 UNW_DPRINT(0, "unwind.%s: excess spill!\n", __FUNCTION__); 742 UNW_DPRINT(0, "unwind.%s: excess spill!\n", __func__);
743} 743}
744 744
745static inline void 745static inline void
@@ -855,11 +855,11 @@ desc_abi (unsigned char abi, unsigned char context, struct unw_state_record *sr)
855{ 855{
856 if (abi == 3 && context == 'i') { 856 if (abi == 3 && context == 'i') {
857 sr->flags |= UNW_FLAG_INTERRUPT_FRAME; 857 sr->flags |= UNW_FLAG_INTERRUPT_FRAME;
858 UNW_DPRINT(3, "unwind.%s: interrupt frame\n", __FUNCTION__); 858 UNW_DPRINT(3, "unwind.%s: interrupt frame\n", __func__);
859 } 859 }
860 else 860 else
861 UNW_DPRINT(0, "unwind%s: ignoring unwabi(abi=0x%x,context=0x%x)\n", 861 UNW_DPRINT(0, "unwind%s: ignoring unwabi(abi=0x%x,context=0x%x)\n",
862 __FUNCTION__, abi, context); 862 __func__, abi, context);
863} 863}
864 864
865static inline void 865static inline void
@@ -1347,7 +1347,7 @@ script_emit (struct unw_script *script, struct unw_insn insn)
1347{ 1347{
1348 if (script->count >= UNW_MAX_SCRIPT_LEN) { 1348 if (script->count >= UNW_MAX_SCRIPT_LEN) {
1349 UNW_DPRINT(0, "unwind.%s: script exceeds maximum size of %u instructions!\n", 1349 UNW_DPRINT(0, "unwind.%s: script exceeds maximum size of %u instructions!\n",
1350 __FUNCTION__, UNW_MAX_SCRIPT_LEN); 1350 __func__, UNW_MAX_SCRIPT_LEN);
1351 return; 1351 return;
1352 } 1352 }
1353 script->insn[script->count++] = insn; 1353 script->insn[script->count++] = insn;
@@ -1389,7 +1389,7 @@ emit_nat_info (struct unw_state_record *sr, int i, struct unw_script *script)
1389 1389
1390 default: 1390 default:
1391 UNW_DPRINT(0, "unwind.%s: don't know how to emit nat info for where = %u\n", 1391 UNW_DPRINT(0, "unwind.%s: don't know how to emit nat info for where = %u\n",
1392 __FUNCTION__, r->where); 1392 __func__, r->where);
1393 return; 1393 return;
1394 } 1394 }
1395 insn.opc = opc; 1395 insn.opc = opc;
@@ -1446,7 +1446,7 @@ compile_reg (struct unw_state_record *sr, int i, struct unw_script *script)
1446 val = offsetof(struct pt_regs, f6) + 16*(rval - 6); 1446 val = offsetof(struct pt_regs, f6) + 16*(rval - 6);
1447 else 1447 else
1448 UNW_DPRINT(0, "unwind.%s: kernel may not touch f%lu\n", 1448 UNW_DPRINT(0, "unwind.%s: kernel may not touch f%lu\n",
1449 __FUNCTION__, rval); 1449 __func__, rval);
1450 } 1450 }
1451 break; 1451 break;
1452 1452
@@ -1474,7 +1474,7 @@ compile_reg (struct unw_state_record *sr, int i, struct unw_script *script)
1474 1474
1475 default: 1475 default:
1476 UNW_DPRINT(0, "unwind%s: register %u has unexpected `where' value of %u\n", 1476 UNW_DPRINT(0, "unwind%s: register %u has unexpected `where' value of %u\n",
1477 __FUNCTION__, i, r->where); 1477 __func__, i, r->where);
1478 break; 1478 break;
1479 } 1479 }
1480 insn.opc = opc; 1480 insn.opc = opc;
@@ -1547,10 +1547,10 @@ build_script (struct unw_frame_info *info)
1547 r->when = UNW_WHEN_NEVER; 1547 r->when = UNW_WHEN_NEVER;
1548 sr.pr_val = info->pr; 1548 sr.pr_val = info->pr;
1549 1549
1550 UNW_DPRINT(3, "unwind.%s: ip 0x%lx\n", __FUNCTION__, ip); 1550 UNW_DPRINT(3, "unwind.%s: ip 0x%lx\n", __func__, ip);
1551 script = script_new(ip); 1551 script = script_new(ip);
1552 if (!script) { 1552 if (!script) {
1553 UNW_DPRINT(0, "unwind.%s: failed to create unwind script\n", __FUNCTION__); 1553 UNW_DPRINT(0, "unwind.%s: failed to create unwind script\n", __func__);
1554 STAT(unw.stat.script.build_time += ia64_get_itc() - start); 1554 STAT(unw.stat.script.build_time += ia64_get_itc() - start);
1555 return NULL; 1555 return NULL;
1556 } 1556 }
@@ -1569,7 +1569,7 @@ build_script (struct unw_frame_info *info)
1569 if (!e) { 1569 if (!e) {
1570 /* no info, return default unwinder (leaf proc, no mem stack, no saved regs) */ 1570 /* no info, return default unwinder (leaf proc, no mem stack, no saved regs) */
1571 UNW_DPRINT(1, "unwind.%s: no unwind info for ip=0x%lx (prev ip=0x%lx)\n", 1571 UNW_DPRINT(1, "unwind.%s: no unwind info for ip=0x%lx (prev ip=0x%lx)\n",
1572 __FUNCTION__, ip, unw.cache[info->prev_script].ip); 1572 __func__, ip, unw.cache[info->prev_script].ip);
1573 sr.curr.reg[UNW_REG_RP].where = UNW_WHERE_BR; 1573 sr.curr.reg[UNW_REG_RP].where = UNW_WHERE_BR;
1574 sr.curr.reg[UNW_REG_RP].when = -1; 1574 sr.curr.reg[UNW_REG_RP].when = -1;
1575 sr.curr.reg[UNW_REG_RP].val = 0; 1575 sr.curr.reg[UNW_REG_RP].val = 0;
@@ -1618,13 +1618,13 @@ build_script (struct unw_frame_info *info)
1618 sr.curr.reg[UNW_REG_RP].when = -1; 1618 sr.curr.reg[UNW_REG_RP].when = -1;
1619 sr.curr.reg[UNW_REG_RP].val = sr.return_link_reg; 1619 sr.curr.reg[UNW_REG_RP].val = sr.return_link_reg;
1620 UNW_DPRINT(1, "unwind.%s: using default for rp at ip=0x%lx where=%d val=0x%lx\n", 1620 UNW_DPRINT(1, "unwind.%s: using default for rp at ip=0x%lx where=%d val=0x%lx\n",
1621 __FUNCTION__, ip, sr.curr.reg[UNW_REG_RP].where, 1621 __func__, ip, sr.curr.reg[UNW_REG_RP].where,
1622 sr.curr.reg[UNW_REG_RP].val); 1622 sr.curr.reg[UNW_REG_RP].val);
1623 } 1623 }
1624 1624
1625#ifdef UNW_DEBUG 1625#ifdef UNW_DEBUG
1626 UNW_DPRINT(1, "unwind.%s: state record for func 0x%lx, t=%u:\n", 1626 UNW_DPRINT(1, "unwind.%s: state record for func 0x%lx, t=%u:\n",
1627 __FUNCTION__, table->segment_base + e->start_offset, sr.when_target); 1627 __func__, table->segment_base + e->start_offset, sr.when_target);
1628 for (r = sr.curr.reg; r < sr.curr.reg + UNW_NUM_REGS; ++r) { 1628 for (r = sr.curr.reg; r < sr.curr.reg + UNW_NUM_REGS; ++r) {
1629 if (r->where != UNW_WHERE_NONE || r->when != UNW_WHEN_NEVER) { 1629 if (r->where != UNW_WHERE_NONE || r->when != UNW_WHEN_NEVER) {
1630 UNW_DPRINT(1, " %s <- ", unw.preg_name[r - sr.curr.reg]); 1630 UNW_DPRINT(1, " %s <- ", unw.preg_name[r - sr.curr.reg]);
@@ -1746,7 +1746,7 @@ run_script (struct unw_script *script, struct unw_frame_info *state)
1746 } else { 1746 } else {
1747 s[dst] = 0; 1747 s[dst] = 0;
1748 UNW_DPRINT(0, "unwind.%s: no state->pt, dst=%ld, val=%ld\n", 1748 UNW_DPRINT(0, "unwind.%s: no state->pt, dst=%ld, val=%ld\n",
1749 __FUNCTION__, dst, val); 1749 __func__, dst, val);
1750 } 1750 }
1751 break; 1751 break;
1752 1752
@@ -1756,7 +1756,7 @@ run_script (struct unw_script *script, struct unw_frame_info *state)
1756 else { 1756 else {
1757 s[dst] = 0; 1757 s[dst] = 0;
1758 UNW_DPRINT(0, "unwind.%s: UNW_INSN_MOVE_CONST bad val=%ld\n", 1758 UNW_DPRINT(0, "unwind.%s: UNW_INSN_MOVE_CONST bad val=%ld\n",
1759 __FUNCTION__, val); 1759 __func__, val);
1760 } 1760 }
1761 break; 1761 break;
1762 1762
@@ -1791,7 +1791,7 @@ run_script (struct unw_script *script, struct unw_frame_info *state)
1791 || s[val] < TASK_SIZE) 1791 || s[val] < TASK_SIZE)
1792 { 1792 {
1793 UNW_DPRINT(0, "unwind.%s: rejecting bad psp=0x%lx\n", 1793 UNW_DPRINT(0, "unwind.%s: rejecting bad psp=0x%lx\n",
1794 __FUNCTION__, s[val]); 1794 __func__, s[val]);
1795 break; 1795 break;
1796 } 1796 }
1797#endif 1797#endif
@@ -1825,7 +1825,7 @@ find_save_locs (struct unw_frame_info *info)
1825 if ((info->ip & (local_cpu_data->unimpl_va_mask | 0xf)) || info->ip < TASK_SIZE) { 1825 if ((info->ip & (local_cpu_data->unimpl_va_mask | 0xf)) || info->ip < TASK_SIZE) {
1826 /* don't let obviously bad addresses pollute the cache */ 1826 /* don't let obviously bad addresses pollute the cache */
1827 /* FIXME: should really be level 0 but it occurs too often. KAO */ 1827 /* FIXME: should really be level 0 but it occurs too often. KAO */
1828 UNW_DPRINT(1, "unwind.%s: rejecting bad ip=0x%lx\n", __FUNCTION__, info->ip); 1828 UNW_DPRINT(1, "unwind.%s: rejecting bad ip=0x%lx\n", __func__, info->ip);
1829 info->rp_loc = NULL; 1829 info->rp_loc = NULL;
1830 return -1; 1830 return -1;
1831 } 1831 }
@@ -1838,7 +1838,7 @@ find_save_locs (struct unw_frame_info *info)
1838 spin_unlock_irqrestore(&unw.lock, flags); 1838 spin_unlock_irqrestore(&unw.lock, flags);
1839 UNW_DPRINT(0, 1839 UNW_DPRINT(0,
1840 "unwind.%s: failed to locate/build unwind script for ip %lx\n", 1840 "unwind.%s: failed to locate/build unwind script for ip %lx\n",
1841 __FUNCTION__, info->ip); 1841 __func__, info->ip);
1842 return -1; 1842 return -1;
1843 } 1843 }
1844 have_write_lock = 1; 1844 have_write_lock = 1;
@@ -1882,21 +1882,21 @@ unw_unwind (struct unw_frame_info *info)
1882 if (!unw_valid(info, info->rp_loc)) { 1882 if (!unw_valid(info, info->rp_loc)) {
1883 /* FIXME: should really be level 0 but it occurs too often. KAO */ 1883 /* FIXME: should really be level 0 but it occurs too often. KAO */
1884 UNW_DPRINT(1, "unwind.%s: failed to locate return link (ip=0x%lx)!\n", 1884 UNW_DPRINT(1, "unwind.%s: failed to locate return link (ip=0x%lx)!\n",
1885 __FUNCTION__, info->ip); 1885 __func__, info->ip);
1886 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); 1886 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags));
1887 return -1; 1887 return -1;
1888 } 1888 }
1889 /* restore the ip */ 1889 /* restore the ip */
1890 ip = info->ip = *info->rp_loc; 1890 ip = info->ip = *info->rp_loc;
1891 if (ip < GATE_ADDR) { 1891 if (ip < GATE_ADDR) {
1892 UNW_DPRINT(2, "unwind.%s: reached user-space (ip=0x%lx)\n", __FUNCTION__, ip); 1892 UNW_DPRINT(2, "unwind.%s: reached user-space (ip=0x%lx)\n", __func__, ip);
1893 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); 1893 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags));
1894 return -1; 1894 return -1;
1895 } 1895 }
1896 1896
1897 /* validate the previous stack frame pointer */ 1897 /* validate the previous stack frame pointer */
1898 if (!unw_valid(info, info->pfs_loc)) { 1898 if (!unw_valid(info, info->pfs_loc)) {
1899 UNW_DPRINT(0, "unwind.%s: failed to locate ar.pfs!\n", __FUNCTION__); 1899 UNW_DPRINT(0, "unwind.%s: failed to locate ar.pfs!\n", __func__);
1900 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); 1900 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags));
1901 return -1; 1901 return -1;
1902 } 1902 }
@@ -1912,13 +1912,13 @@ unw_unwind (struct unw_frame_info *info)
1912 num_regs = *info->cfm_loc & 0x7f; /* size of frame */ 1912 num_regs = *info->cfm_loc & 0x7f; /* size of frame */
1913 info->pfs_loc = 1913 info->pfs_loc =
1914 (unsigned long *) (info->pt + offsetof(struct pt_regs, ar_pfs)); 1914 (unsigned long *) (info->pt + offsetof(struct pt_regs, ar_pfs));
1915 UNW_DPRINT(3, "unwind.%s: interrupt_frame pt 0x%lx\n", __FUNCTION__, info->pt); 1915 UNW_DPRINT(3, "unwind.%s: interrupt_frame pt 0x%lx\n", __func__, info->pt);
1916 } else 1916 } else
1917 num_regs = (*info->cfm_loc >> 7) & 0x7f; /* size of locals */ 1917 num_regs = (*info->cfm_loc >> 7) & 0x7f; /* size of locals */
1918 info->bsp = (unsigned long) ia64_rse_skip_regs((unsigned long *) info->bsp, -num_regs); 1918 info->bsp = (unsigned long) ia64_rse_skip_regs((unsigned long *) info->bsp, -num_regs);
1919 if (info->bsp < info->regstk.limit || info->bsp > info->regstk.top) { 1919 if (info->bsp < info->regstk.limit || info->bsp > info->regstk.top) {
1920 UNW_DPRINT(0, "unwind.%s: bsp (0x%lx) out of range [0x%lx-0x%lx]\n", 1920 UNW_DPRINT(0, "unwind.%s: bsp (0x%lx) out of range [0x%lx-0x%lx]\n",
1921 __FUNCTION__, info->bsp, info->regstk.limit, info->regstk.top); 1921 __func__, info->bsp, info->regstk.limit, info->regstk.top);
1922 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); 1922 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags));
1923 return -1; 1923 return -1;
1924 } 1924 }
@@ -1927,14 +1927,14 @@ unw_unwind (struct unw_frame_info *info)
1927 info->sp = info->psp; 1927 info->sp = info->psp;
1928 if (info->sp < info->memstk.top || info->sp > info->memstk.limit) { 1928 if (info->sp < info->memstk.top || info->sp > info->memstk.limit) {
1929 UNW_DPRINT(0, "unwind.%s: sp (0x%lx) out of range [0x%lx-0x%lx]\n", 1929 UNW_DPRINT(0, "unwind.%s: sp (0x%lx) out of range [0x%lx-0x%lx]\n",
1930 __FUNCTION__, info->sp, info->memstk.top, info->memstk.limit); 1930 __func__, info->sp, info->memstk.top, info->memstk.limit);
1931 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); 1931 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags));
1932 return -1; 1932 return -1;
1933 } 1933 }
1934 1934
1935 if (info->ip == prev_ip && info->sp == prev_sp && info->bsp == prev_bsp) { 1935 if (info->ip == prev_ip && info->sp == prev_sp && info->bsp == prev_bsp) {
1936 UNW_DPRINT(0, "unwind.%s: ip, sp, bsp unchanged; stopping here (ip=0x%lx)\n", 1936 UNW_DPRINT(0, "unwind.%s: ip, sp, bsp unchanged; stopping here (ip=0x%lx)\n",
1937 __FUNCTION__, ip); 1937 __func__, ip);
1938 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags)); 1938 STAT(unw.stat.api.unwind_time += ia64_get_itc() - start; local_irq_restore(flags));
1939 return -1; 1939 return -1;
1940 } 1940 }
@@ -1961,7 +1961,7 @@ unw_unwind_to_user (struct unw_frame_info *info)
1961 if ((long)((unsigned long)info->task + IA64_STK_OFFSET - sp) 1961 if ((long)((unsigned long)info->task + IA64_STK_OFFSET - sp)
1962 < IA64_PT_REGS_SIZE) { 1962 < IA64_PT_REGS_SIZE) {
1963 UNW_DPRINT(0, "unwind.%s: ran off the top of the kernel stack\n", 1963 UNW_DPRINT(0, "unwind.%s: ran off the top of the kernel stack\n",
1964 __FUNCTION__); 1964 __func__);
1965 break; 1965 break;
1966 } 1966 }
1967 if (unw_is_intr_frame(info) && 1967 if (unw_is_intr_frame(info) &&
@@ -1971,13 +1971,13 @@ unw_unwind_to_user (struct unw_frame_info *info)
1971 unw_get_rp(info, &ip); 1971 unw_get_rp(info, &ip);
1972 UNW_DPRINT(0, "unwind.%s: failed to read " 1972 UNW_DPRINT(0, "unwind.%s: failed to read "
1973 "predicate register (ip=0x%lx)\n", 1973 "predicate register (ip=0x%lx)\n",
1974 __FUNCTION__, ip); 1974 __func__, ip);
1975 return -1; 1975 return -1;
1976 } 1976 }
1977 } while (unw_unwind(info) >= 0); 1977 } while (unw_unwind(info) >= 0);
1978 unw_get_ip(info, &ip); 1978 unw_get_ip(info, &ip);
1979 UNW_DPRINT(0, "unwind.%s: failed to unwind to user-level (ip=0x%lx)\n", 1979 UNW_DPRINT(0, "unwind.%s: failed to unwind to user-level (ip=0x%lx)\n",
1980 __FUNCTION__, ip); 1980 __func__, ip);
1981 return -1; 1981 return -1;
1982} 1982}
1983EXPORT_SYMBOL(unw_unwind_to_user); 1983EXPORT_SYMBOL(unw_unwind_to_user);
@@ -2028,7 +2028,7 @@ init_frame_info (struct unw_frame_info *info, struct task_struct *t,
2028 " pr 0x%lx\n" 2028 " pr 0x%lx\n"
2029 " sw 0x%lx\n" 2029 " sw 0x%lx\n"
2030 " sp 0x%lx\n", 2030 " sp 0x%lx\n",
2031 __FUNCTION__, (unsigned long) t, rbslimit, rbstop, stktop, stklimit, 2031 __func__, (unsigned long) t, rbslimit, rbstop, stktop, stklimit,
2032 info->pr, (unsigned long) info->sw, info->sp); 2032 info->pr, (unsigned long) info->sw, info->sp);
2033 STAT(unw.stat.api.init_time += ia64_get_itc() - start; local_irq_restore(flags)); 2033 STAT(unw.stat.api.init_time += ia64_get_itc() - start; local_irq_restore(flags));
2034} 2034}
@@ -2047,7 +2047,7 @@ unw_init_frame_info (struct unw_frame_info *info, struct task_struct *t, struct
2047 " bsp 0x%lx\n" 2047 " bsp 0x%lx\n"
2048 " sol 0x%lx\n" 2048 " sol 0x%lx\n"
2049 " ip 0x%lx\n", 2049 " ip 0x%lx\n",
2050 __FUNCTION__, info->bsp, sol, info->ip); 2050 __func__, info->bsp, sol, info->ip);
2051 find_save_locs(info); 2051 find_save_locs(info);
2052} 2052}
2053 2053
@@ -2058,7 +2058,7 @@ unw_init_from_blocked_task (struct unw_frame_info *info, struct task_struct *t)
2058{ 2058{
2059 struct switch_stack *sw = (struct switch_stack *) (t->thread.ksp + 16); 2059 struct switch_stack *sw = (struct switch_stack *) (t->thread.ksp + 16);
2060 2060
2061 UNW_DPRINT(1, "unwind.%s\n", __FUNCTION__); 2061 UNW_DPRINT(1, "unwind.%s\n", __func__);
2062 unw_init_frame_info(info, t, sw); 2062 unw_init_frame_info(info, t, sw);
2063} 2063}
2064EXPORT_SYMBOL(unw_init_from_blocked_task); 2064EXPORT_SYMBOL(unw_init_from_blocked_task);
@@ -2088,7 +2088,7 @@ unw_add_unwind_table (const char *name, unsigned long segment_base, unsigned lon
2088 2088
2089 if (end - start <= 0) { 2089 if (end - start <= 0) {
2090 UNW_DPRINT(0, "unwind.%s: ignoring attempt to insert empty unwind table\n", 2090 UNW_DPRINT(0, "unwind.%s: ignoring attempt to insert empty unwind table\n",
2091 __FUNCTION__); 2091 __func__);
2092 return NULL; 2092 return NULL;
2093 } 2093 }
2094 2094
@@ -2119,14 +2119,14 @@ unw_remove_unwind_table (void *handle)
2119 2119
2120 if (!handle) { 2120 if (!handle) {
2121 UNW_DPRINT(0, "unwind.%s: ignoring attempt to remove non-existent unwind table\n", 2121 UNW_DPRINT(0, "unwind.%s: ignoring attempt to remove non-existent unwind table\n",
2122 __FUNCTION__); 2122 __func__);
2123 return; 2123 return;
2124 } 2124 }
2125 2125
2126 table = handle; 2126 table = handle;
2127 if (table == &unw.kernel_table) { 2127 if (table == &unw.kernel_table) {
2128 UNW_DPRINT(0, "unwind.%s: sorry, freeing the kernel's unwind table is a " 2128 UNW_DPRINT(0, "unwind.%s: sorry, freeing the kernel's unwind table is a "
2129 "no-can-do!\n", __FUNCTION__); 2129 "no-can-do!\n", __func__);
2130 return; 2130 return;
2131 } 2131 }
2132 2132
@@ -2139,7 +2139,7 @@ unw_remove_unwind_table (void *handle)
2139 break; 2139 break;
2140 if (!prev) { 2140 if (!prev) {
2141 UNW_DPRINT(0, "unwind.%s: failed to find unwind table %p\n", 2141 UNW_DPRINT(0, "unwind.%s: failed to find unwind table %p\n",
2142 __FUNCTION__, (void *) table); 2142 __func__, (void *) table);
2143 spin_unlock_irqrestore(&unw.lock, flags); 2143 spin_unlock_irqrestore(&unw.lock, flags);
2144 return; 2144 return;
2145 } 2145 }
@@ -2185,7 +2185,7 @@ create_gate_table (void)
2185 } 2185 }
2186 2186
2187 if (!punw) { 2187 if (!punw) {
2188 printk("%s: failed to find gate DSO's unwind table!\n", __FUNCTION__); 2188 printk("%s: failed to find gate DSO's unwind table!\n", __func__);
2189 return 0; 2189 return 0;
2190 } 2190 }
2191 2191
@@ -2202,7 +2202,7 @@ create_gate_table (void)
2202 unw.gate_table = kmalloc(size, GFP_KERNEL); 2202 unw.gate_table = kmalloc(size, GFP_KERNEL);
2203 if (!unw.gate_table) { 2203 if (!unw.gate_table) {
2204 unw.gate_table_size = 0; 2204 unw.gate_table_size = 0;
2205 printk(KERN_ERR "%s: unable to create unwind data for gate page!\n", __FUNCTION__); 2205 printk(KERN_ERR "%s: unable to create unwind data for gate page!\n", __func__);
2206 return 0; 2206 return 0;
2207 } 2207 }
2208 unw.gate_table_size = size; 2208 unw.gate_table_size = size;
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
index 3e69881648a3..23088bed111e 100644
--- a/arch/ia64/mm/fault.c
+++ b/arch/ia64/mm/fault.c
@@ -26,7 +26,7 @@ static inline int notify_page_fault(struct pt_regs *regs, int trap)
26 if (!user_mode(regs)) { 26 if (!user_mode(regs)) {
27 /* kprobe_running() needs smp_processor_id() */ 27 /* kprobe_running() needs smp_processor_id() */
28 preempt_disable(); 28 preempt_disable();
29 if (kprobe_running() && kprobes_fault_handler(regs, trap)) 29 if (kprobe_running() && kprobe_fault_handler(regs, trap))
30 ret = 1; 30 ret = 1;
31 preempt_enable(); 31 preempt_enable();
32 } 32 }
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index 25aef6211a54..a4ca657c72c6 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -714,7 +714,7 @@ int arch_add_memory(int nid, u64 start, u64 size)
714 714
715 if (ret) 715 if (ret)
716 printk("%s: Problem encountered in __add_pages() as ret=%d\n", 716 printk("%s: Problem encountered in __add_pages() as ret=%d\n",
717 __FUNCTION__, ret); 717 __func__, ret);
718 718
719 return ret; 719 return ret;
720} 720}
diff --git a/arch/ia64/pci/fixup.c b/arch/ia64/pci/fixup.c
index 245dc1fedc24..f5959c0c1810 100644
--- a/arch/ia64/pci/fixup.c
+++ b/arch/ia64/pci/fixup.c
@@ -63,7 +63,7 @@ static void __devinit pci_fixup_video(struct pci_dev *pdev)
63 pci_read_config_word(pdev, PCI_COMMAND, &config); 63 pci_read_config_word(pdev, PCI_COMMAND, &config);
64 if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) { 64 if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
65 pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW; 65 pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
66 printk(KERN_DEBUG "Boot video device is %s\n", pci_name(pdev)); 66 dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n");
67 } 67 }
68} 68}
69DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video); 69DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pci_fixup_video);
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 8fd7e825192b..e282c348dcde 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -765,7 +765,7 @@ static void __init set_pci_cacheline_size(void)
765 status = ia64_pal_cache_summary(&levels, &unique_caches); 765 status = ia64_pal_cache_summary(&levels, &unique_caches);
766 if (status != 0) { 766 if (status != 0) {
767 printk(KERN_ERR "%s: ia64_pal_cache_summary() failed " 767 printk(KERN_ERR "%s: ia64_pal_cache_summary() failed "
768 "(status=%ld)\n", __FUNCTION__, status); 768 "(status=%ld)\n", __func__, status);
769 return; 769 return;
770 } 770 }
771 771
@@ -773,7 +773,7 @@ static void __init set_pci_cacheline_size(void)
773 /* cache_type (data_or_unified)= */ 2, &cci); 773 /* cache_type (data_or_unified)= */ 2, &cci);
774 if (status != 0) { 774 if (status != 0) {
775 printk(KERN_ERR "%s: ia64_pal_cache_config_info() failed " 775 printk(KERN_ERR "%s: ia64_pal_cache_config_info() failed "
776 "(status=%ld)\n", __FUNCTION__, status); 776 "(status=%ld)\n", __func__, status);
777 return; 777 return;
778 } 778 }
779 pci_cache_line_size = (1 << cci.pcci_line_size) / 4; 779 pci_cache_line_size = (1 << cci.pcci_line_size) / 4;
diff --git a/arch/ia64/sn/kernel/huberror.c b/arch/ia64/sn/kernel/huberror.c
index b663168da55c..0101c7924a4d 100644
--- a/arch/ia64/sn/kernel/huberror.c
+++ b/arch/ia64/sn/kernel/huberror.c
@@ -37,7 +37,7 @@ static irqreturn_t hub_eint_handler(int irq, void *arg)
37 (u64) nasid, 0, 0, 0, 0, 0, 0); 37 (u64) nasid, 0, 0, 0, 0, 0, 0);
38 38
39 if ((int)ret_stuff.v0) 39 if ((int)ret_stuff.v0)
40 panic("%s: Fatal %s Error", __FUNCTION__, 40 panic("%s: Fatal %s Error", __func__,
41 ((nasid & 1) ? "TIO" : "HUBII")); 41 ((nasid & 1) ? "TIO" : "HUBII"));
42 42
43 if (!(nasid & 1)) /* Not a TIO, handle CRB errors */ 43 if (!(nasid & 1)) /* Not a TIO, handle CRB errors */
@@ -48,7 +48,7 @@ static irqreturn_t hub_eint_handler(int irq, void *arg)
48 (u64) nasid, 0, 0, 0, 0, 0, 0); 48 (u64) nasid, 0, 0, 0, 0, 0, 0);
49 49
50 if ((int)ret_stuff.v0) 50 if ((int)ret_stuff.v0)
51 panic("%s: Fatal TIO Error", __FUNCTION__); 51 panic("%s: Fatal TIO Error", __func__);
52 } else 52 } else
53 bte_error_handler((unsigned long)NODEPDA(nasid_to_cnodeid(nasid))); 53 bte_error_handler((unsigned long)NODEPDA(nasid_to_cnodeid(nasid)));
54 54
diff --git a/arch/ia64/sn/kernel/io_acpi_init.c b/arch/ia64/sn/kernel/io_acpi_init.c
index 3c7178f5dce8..6568942a95f0 100644
--- a/arch/ia64/sn/kernel/io_acpi_init.c
+++ b/arch/ia64/sn/kernel/io_acpi_init.c
@@ -133,7 +133,7 @@ sn_get_bussoft_ptr(struct pci_bus *bus)
133 if (ACPI_FAILURE(status)) { 133 if (ACPI_FAILURE(status)) {
134 printk(KERN_ERR "%s: " 134 printk(KERN_ERR "%s: "
135 "acpi_get_vendor_resource() failed (0x%x) for: ", 135 "acpi_get_vendor_resource() failed (0x%x) for: ",
136 __FUNCTION__, status); 136 __func__, status);
137 acpi_ns_print_node_pathname(handle, NULL); 137 acpi_ns_print_node_pathname(handle, NULL);
138 printk("\n"); 138 printk("\n");
139 return NULL; 139 return NULL;
@@ -145,7 +145,7 @@ sn_get_bussoft_ptr(struct pci_bus *bus)
145 sizeof(struct pcibus_bussoft *)) { 145 sizeof(struct pcibus_bussoft *)) {
146 printk(KERN_ERR 146 printk(KERN_ERR
147 "%s: Invalid vendor data length %d\n", 147 "%s: Invalid vendor data length %d\n",
148 __FUNCTION__, vendor->byte_length); 148 __func__, vendor->byte_length);
149 kfree(buffer.pointer); 149 kfree(buffer.pointer);
150 return NULL; 150 return NULL;
151 } 151 }
@@ -184,7 +184,7 @@ sn_extract_device_info(acpi_handle handle, struct pcidev_info **pcidev_info,
184 if (ACPI_FAILURE(status)) { 184 if (ACPI_FAILURE(status)) {
185 printk(KERN_ERR 185 printk(KERN_ERR
186 "%s: acpi_get_vendor_resource() failed (0x%x) for: ", 186 "%s: acpi_get_vendor_resource() failed (0x%x) for: ",
187 __FUNCTION__, status); 187 __func__, status);
188 acpi_ns_print_node_pathname(handle, NULL); 188 acpi_ns_print_node_pathname(handle, NULL);
189 printk("\n"); 189 printk("\n");
190 return 1; 190 return 1;
@@ -196,7 +196,7 @@ sn_extract_device_info(acpi_handle handle, struct pcidev_info **pcidev_info,
196 sizeof(struct pci_devdev_info *)) { 196 sizeof(struct pci_devdev_info *)) {
197 printk(KERN_ERR 197 printk(KERN_ERR
198 "%s: Invalid vendor data length: %d for: ", 198 "%s: Invalid vendor data length: %d for: ",
199 __FUNCTION__, vendor->byte_length); 199 __func__, vendor->byte_length);
200 acpi_ns_print_node_pathname(handle, NULL); 200 acpi_ns_print_node_pathname(handle, NULL);
201 printk("\n"); 201 printk("\n");
202 ret = 1; 202 ret = 1;
@@ -205,7 +205,7 @@ sn_extract_device_info(acpi_handle handle, struct pcidev_info **pcidev_info,
205 205
206 pcidev_ptr = kzalloc(sizeof(struct pcidev_info), GFP_KERNEL); 206 pcidev_ptr = kzalloc(sizeof(struct pcidev_info), GFP_KERNEL);
207 if (!pcidev_ptr) 207 if (!pcidev_ptr)
208 panic("%s: Unable to alloc memory for pcidev_info", __FUNCTION__); 208 panic("%s: Unable to alloc memory for pcidev_info", __func__);
209 209
210 memcpy(&addr, vendor->byte_data, sizeof(struct pcidev_info *)); 210 memcpy(&addr, vendor->byte_data, sizeof(struct pcidev_info *));
211 pcidev_prom_ptr = __va(addr); 211 pcidev_prom_ptr = __va(addr);
@@ -214,7 +214,7 @@ sn_extract_device_info(acpi_handle handle, struct pcidev_info **pcidev_info,
214 /* Get the IRQ info */ 214 /* Get the IRQ info */
215 irq_info = kzalloc(sizeof(struct sn_irq_info), GFP_KERNEL); 215 irq_info = kzalloc(sizeof(struct sn_irq_info), GFP_KERNEL);
216 if (!irq_info) 216 if (!irq_info)
217 panic("%s: Unable to alloc memory for sn_irq_info", __FUNCTION__); 217 panic("%s: Unable to alloc memory for sn_irq_info", __func__);
218 218
219 if (pcidev_ptr->pdi_sn_irq_info) { 219 if (pcidev_ptr->pdi_sn_irq_info) {
220 irq_info_prom = __va(pcidev_ptr->pdi_sn_irq_info); 220 irq_info_prom = __va(pcidev_ptr->pdi_sn_irq_info);
@@ -249,10 +249,10 @@ get_host_devfn(acpi_handle device_handle, acpi_handle rootbus_handle)
249 status = acpi_get_parent(child, &parent); 249 status = acpi_get_parent(child, &parent);
250 if (ACPI_FAILURE(status)) { 250 if (ACPI_FAILURE(status)) {
251 printk(KERN_ERR "%s: acpi_get_parent() failed " 251 printk(KERN_ERR "%s: acpi_get_parent() failed "
252 "(0x%x) for: ", __FUNCTION__, status); 252 "(0x%x) for: ", __func__, status);
253 acpi_ns_print_node_pathname(child, NULL); 253 acpi_ns_print_node_pathname(child, NULL);
254 printk("\n"); 254 printk("\n");
255 panic("%s: Unable to find host devfn\n", __FUNCTION__); 255 panic("%s: Unable to find host devfn\n", __func__);
256 } 256 }
257 if (parent == rootbus_handle) 257 if (parent == rootbus_handle)
258 break; 258 break;
@@ -260,7 +260,7 @@ get_host_devfn(acpi_handle device_handle, acpi_handle rootbus_handle)
260 } 260 }
261 if (!child) { 261 if (!child) {
262 printk(KERN_ERR "%s: Unable to find root bus for: ", 262 printk(KERN_ERR "%s: Unable to find root bus for: ",
263 __FUNCTION__); 263 __func__);
264 acpi_ns_print_node_pathname(device_handle, NULL); 264 acpi_ns_print_node_pathname(device_handle, NULL);
265 printk("\n"); 265 printk("\n");
266 BUG(); 266 BUG();
@@ -269,10 +269,10 @@ get_host_devfn(acpi_handle device_handle, acpi_handle rootbus_handle)
269 status = acpi_evaluate_integer(child, METHOD_NAME__ADR, NULL, &adr); 269 status = acpi_evaluate_integer(child, METHOD_NAME__ADR, NULL, &adr);
270 if (ACPI_FAILURE(status)) { 270 if (ACPI_FAILURE(status)) {
271 printk(KERN_ERR "%s: Unable to get _ADR (0x%x) for: ", 271 printk(KERN_ERR "%s: Unable to get _ADR (0x%x) for: ",
272 __FUNCTION__, status); 272 __func__, status);
273 acpi_ns_print_node_pathname(child, NULL); 273 acpi_ns_print_node_pathname(child, NULL);
274 printk("\n"); 274 printk("\n");
275 panic("%s: Unable to find host devfn\n", __FUNCTION__); 275 panic("%s: Unable to find host devfn\n", __func__);
276 } 276 }
277 277
278 slot = (adr >> 16) & 0xffff; 278 slot = (adr >> 16) & 0xffff;
@@ -308,7 +308,7 @@ find_matching_device(acpi_handle handle, u32 lvl, void *context, void **rv)
308 if (ACPI_FAILURE(status)) { 308 if (ACPI_FAILURE(status)) {
309 printk(KERN_ERR 309 printk(KERN_ERR
310 "%s: acpi_get_parent() failed (0x%x) for: ", 310 "%s: acpi_get_parent() failed (0x%x) for: ",
311 __FUNCTION__, status); 311 __func__, status);
312 acpi_ns_print_node_pathname(handle, NULL); 312 acpi_ns_print_node_pathname(handle, NULL);
313 printk("\n"); 313 printk("\n");
314 return AE_OK; 314 return AE_OK;
@@ -318,7 +318,7 @@ find_matching_device(acpi_handle handle, u32 lvl, void *context, void **rv)
318 if (ACPI_FAILURE(status)) { 318 if (ACPI_FAILURE(status)) {
319 printk(KERN_ERR 319 printk(KERN_ERR
320 "%s: Failed to find _BBN in parent of: ", 320 "%s: Failed to find _BBN in parent of: ",
321 __FUNCTION__); 321 __func__);
322 acpi_ns_print_node_pathname(handle, NULL); 322 acpi_ns_print_node_pathname(handle, NULL);
323 printk("\n"); 323 printk("\n");
324 return AE_OK; 324 return AE_OK;
@@ -358,14 +358,14 @@ sn_acpi_get_pcidev_info(struct pci_dev *dev, struct pcidev_info **pcidev_info,
358 if (segment != pci_domain_nr(dev)) { 358 if (segment != pci_domain_nr(dev)) {
359 printk(KERN_ERR 359 printk(KERN_ERR
360 "%s: Segment number mismatch, 0x%lx vs 0x%x for: ", 360 "%s: Segment number mismatch, 0x%lx vs 0x%x for: ",
361 __FUNCTION__, segment, pci_domain_nr(dev)); 361 __func__, segment, pci_domain_nr(dev));
362 acpi_ns_print_node_pathname(rootbus_handle, NULL); 362 acpi_ns_print_node_pathname(rootbus_handle, NULL);
363 printk("\n"); 363 printk("\n");
364 return 1; 364 return 1;
365 } 365 }
366 } else { 366 } else {
367 printk(KERN_ERR "%s: Unable to get __SEG from: ", 367 printk(KERN_ERR "%s: Unable to get __SEG from: ",
368 __FUNCTION__); 368 __func__);
369 acpi_ns_print_node_pathname(rootbus_handle, NULL); 369 acpi_ns_print_node_pathname(rootbus_handle, NULL);
370 printk("\n"); 370 printk("\n");
371 return 1; 371 return 1;
@@ -386,7 +386,7 @@ sn_acpi_get_pcidev_info(struct pci_dev *dev, struct pcidev_info **pcidev_info,
386 if (!pcidev_match.handle) { 386 if (!pcidev_match.handle) {
387 printk(KERN_ERR 387 printk(KERN_ERR
388 "%s: Could not find matching ACPI device for %s.\n", 388 "%s: Could not find matching ACPI device for %s.\n",
389 __FUNCTION__, pci_name(dev)); 389 __func__, pci_name(dev));
390 return 1; 390 return 1;
391 } 391 }
392 392
@@ -422,7 +422,7 @@ sn_acpi_slot_fixup(struct pci_dev *dev)
422 422
423 if (sn_acpi_get_pcidev_info(dev, &pcidev_info, &sn_irq_info)) { 423 if (sn_acpi_get_pcidev_info(dev, &pcidev_info, &sn_irq_info)) {
424 panic("%s: Failure obtaining pcidev_info for %s\n", 424 panic("%s: Failure obtaining pcidev_info for %s\n",
425 __FUNCTION__, pci_name(dev)); 425 __func__, pci_name(dev));
426 } 426 }
427 427
428 if (pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE]) { 428 if (pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE]) {
@@ -463,7 +463,7 @@ sn_acpi_bus_fixup(struct pci_bus *bus)
463 printk(KERN_ERR 463 printk(KERN_ERR
464 "%s: 0x%04x:0x%02x Unable to " 464 "%s: 0x%04x:0x%02x Unable to "
465 "obtain prom_bussoft_ptr\n", 465 "obtain prom_bussoft_ptr\n",
466 __FUNCTION__, pci_domain_nr(bus), bus->number); 466 __func__, pci_domain_nr(bus), bus->number);
467 return; 467 return;
468 } 468 }
469 sn_common_bus_fixup(bus, prom_bussoft_ptr); 469 sn_common_bus_fixup(bus, prom_bussoft_ptr);
diff --git a/arch/ia64/sn/kernel/io_common.c b/arch/ia64/sn/kernel/io_common.c
index c4eb84f9e781..8a924a5661dd 100644
--- a/arch/ia64/sn/kernel/io_common.c
+++ b/arch/ia64/sn/kernel/io_common.c
@@ -364,7 +364,7 @@ void sn_bus_store_sysdata(struct pci_dev *dev)
364 364
365 element = kzalloc(sizeof(struct sysdata_el), GFP_KERNEL); 365 element = kzalloc(sizeof(struct sysdata_el), GFP_KERNEL);
366 if (!element) { 366 if (!element) {
367 dev_dbg(&dev->dev, "%s: out of memory!\n", __FUNCTION__); 367 dev_dbg(&dev->dev, "%s: out of memory!\n", __func__);
368 return; 368 return;
369 } 369 }
370 element->sysdata = SN_PCIDEV_INFO(dev); 370 element->sysdata = SN_PCIDEV_INFO(dev);
diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c
index 906b93674b76..c3aa851d1ca6 100644
--- a/arch/ia64/sn/kernel/io_init.c
+++ b/arch/ia64/sn/kernel/io_init.c
@@ -209,11 +209,11 @@ sn_io_slot_fixup(struct pci_dev *dev)
209 209
210 pcidev_info = kzalloc(sizeof(struct pcidev_info), GFP_KERNEL); 210 pcidev_info = kzalloc(sizeof(struct pcidev_info), GFP_KERNEL);
211 if (!pcidev_info) 211 if (!pcidev_info)
212 panic("%s: Unable to alloc memory for pcidev_info", __FUNCTION__); 212 panic("%s: Unable to alloc memory for pcidev_info", __func__);
213 213
214 sn_irq_info = kzalloc(sizeof(struct sn_irq_info), GFP_KERNEL); 214 sn_irq_info = kzalloc(sizeof(struct sn_irq_info), GFP_KERNEL);
215 if (!sn_irq_info) 215 if (!sn_irq_info)
216 panic("%s: Unable to alloc memory for sn_irq_info", __FUNCTION__); 216 panic("%s: Unable to alloc memory for sn_irq_info", __func__);
217 217
218 /* Call to retrieve pci device information needed by kernel. */ 218 /* Call to retrieve pci device information needed by kernel. */
219 status = sal_get_pcidev_info((u64) pci_domain_nr(dev), 219 status = sal_get_pcidev_info((u64) pci_domain_nr(dev),
diff --git a/arch/ia64/sn/kernel/mca.c b/arch/ia64/sn/kernel/mca.c
index 868c9aa64fe2..27793f7aa99c 100644
--- a/arch/ia64/sn/kernel/mca.c
+++ b/arch/ia64/sn/kernel/mca.c
@@ -100,7 +100,7 @@ sn_platform_plat_specific_err_print(const u8 * sect_header, u8 ** oemdata,
100 if (!newbuf) { 100 if (!newbuf) {
101 mutex_unlock(&sn_oemdata_mutex); 101 mutex_unlock(&sn_oemdata_mutex);
102 printk(KERN_ERR "%s: unable to extend sn_oemdata\n", 102 printk(KERN_ERR "%s: unable to extend sn_oemdata\n",
103 __FUNCTION__); 103 __func__);
104 return 1; 104 return 1;
105 } 105 }
106 vfree(*sn_oemdata); 106 vfree(*sn_oemdata);
diff --git a/arch/ia64/sn/pci/pci_dma.c b/arch/ia64/sn/pci/pci_dma.c
index 511db2fd7bff..18b94b792d54 100644
--- a/arch/ia64/sn/pci/pci_dma.c
+++ b/arch/ia64/sn/pci/pci_dma.c
@@ -116,7 +116,7 @@ void *sn_dma_alloc_coherent(struct device *dev, size_t size,
116 *dma_handle = provider->dma_map_consistent(pdev, phys_addr, size, 116 *dma_handle = provider->dma_map_consistent(pdev, phys_addr, size,
117 SN_DMA_ADDR_PHYS); 117 SN_DMA_ADDR_PHYS);
118 if (!*dma_handle) { 118 if (!*dma_handle) {
119 printk(KERN_ERR "%s: out of ATEs\n", __FUNCTION__); 119 printk(KERN_ERR "%s: out of ATEs\n", __func__);
120 free_pages((unsigned long)cpuaddr, get_order(size)); 120 free_pages((unsigned long)cpuaddr, get_order(size));
121 return NULL; 121 return NULL;
122 } 122 }
@@ -179,7 +179,7 @@ dma_addr_t sn_dma_map_single(struct device *dev, void *cpu_addr, size_t size,
179 phys_addr = __pa(cpu_addr); 179 phys_addr = __pa(cpu_addr);
180 dma_addr = provider->dma_map(pdev, phys_addr, size, SN_DMA_ADDR_PHYS); 180 dma_addr = provider->dma_map(pdev, phys_addr, size, SN_DMA_ADDR_PHYS);
181 if (!dma_addr) { 181 if (!dma_addr) {
182 printk(KERN_ERR "%s: out of ATEs\n", __FUNCTION__); 182 printk(KERN_ERR "%s: out of ATEs\n", __func__);
183 return 0; 183 return 0;
184 } 184 }
185 return dma_addr; 185 return dma_addr;
@@ -266,7 +266,7 @@ int sn_dma_map_sg(struct device *dev, struct scatterlist *sgl, int nhwentries,
266 SN_DMA_ADDR_PHYS); 266 SN_DMA_ADDR_PHYS);
267 267
268 if (!sg->dma_address) { 268 if (!sg->dma_address) {
269 printk(KERN_ERR "%s: out of ATEs\n", __FUNCTION__); 269 printk(KERN_ERR "%s: out of ATEs\n", __func__);
270 270
271 /* 271 /*
272 * Free any successfully allocated entries. 272 * Free any successfully allocated entries.
diff --git a/arch/ia64/sn/pci/tioca_provider.c b/arch/ia64/sn/pci/tioca_provider.c
index ef048a674772..529462c01570 100644
--- a/arch/ia64/sn/pci/tioca_provider.c
+++ b/arch/ia64/sn/pci/tioca_provider.c
@@ -88,7 +88,7 @@ tioca_gart_init(struct tioca_kernel *tioca_kern)
88 break; 88 break;
89 default: 89 default:
90 printk(KERN_ERR "%s: Invalid CA_APERATURE_SIZE " 90 printk(KERN_ERR "%s: Invalid CA_APERATURE_SIZE "
91 "0x%lx\n", __FUNCTION__, (ulong) CA_APERATURE_SIZE); 91 "0x%lx\n", __func__, (ulong) CA_APERATURE_SIZE);
92 return -1; 92 return -1;
93 } 93 }
94 94
@@ -124,7 +124,7 @@ tioca_gart_init(struct tioca_kernel *tioca_kern)
124 if (!tmp) { 124 if (!tmp) {
125 printk(KERN_ERR "%s: Could not allocate " 125 printk(KERN_ERR "%s: Could not allocate "
126 "%lu bytes (order %d) for GART\n", 126 "%lu bytes (order %d) for GART\n",
127 __FUNCTION__, 127 __func__,
128 tioca_kern->ca_gart_size, 128 tioca_kern->ca_gart_size,
129 get_order(tioca_kern->ca_gart_size)); 129 get_order(tioca_kern->ca_gart_size));
130 return -ENOMEM; 130 return -ENOMEM;
@@ -341,7 +341,7 @@ tioca_dma_d48(struct pci_dev *pdev, u64 paddr)
341 341
342 if (node_upper > 64) { 342 if (node_upper > 64) {
343 printk(KERN_ERR "%s: coretalk addr 0x%p node id out " 343 printk(KERN_ERR "%s: coretalk addr 0x%p node id out "
344 "of range\n", __FUNCTION__, (void *)ct_addr); 344 "of range\n", __func__, (void *)ct_addr);
345 return 0; 345 return 0;
346 } 346 }
347 347
@@ -349,7 +349,7 @@ tioca_dma_d48(struct pci_dev *pdev, u64 paddr)
349 if (node_upper != (agp_dma_extn >> CA_AGP_DMA_NODE_ID_SHFT)) { 349 if (node_upper != (agp_dma_extn >> CA_AGP_DMA_NODE_ID_SHFT)) {
350 printk(KERN_ERR "%s: coretalk upper node (%u) " 350 printk(KERN_ERR "%s: coretalk upper node (%u) "
351 "mismatch with ca_agp_dma_addr_extn (%lu)\n", 351 "mismatch with ca_agp_dma_addr_extn (%lu)\n",
352 __FUNCTION__, 352 __func__,
353 node_upper, (agp_dma_extn >> CA_AGP_DMA_NODE_ID_SHFT)); 353 node_upper, (agp_dma_extn >> CA_AGP_DMA_NODE_ID_SHFT));
354 return 0; 354 return 0;
355 } 355 }
@@ -597,7 +597,7 @@ tioca_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
597 if (is_shub1() && sn_sal_rev() < 0x0406) { 597 if (is_shub1() && sn_sal_rev() < 0x0406) {
598 printk 598 printk
599 (KERN_ERR "%s: SGI prom rev 4.06 or greater required " 599 (KERN_ERR "%s: SGI prom rev 4.06 or greater required "
600 "for tioca support\n", __FUNCTION__); 600 "for tioca support\n", __func__);
601 return NULL; 601 return NULL;
602 } 602 }
603 603
@@ -651,7 +651,7 @@ tioca_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
651 printk(KERN_WARNING 651 printk(KERN_WARNING
652 "%s: Unable to get irq %d. " 652 "%s: Unable to get irq %d. "
653 "Error interrupts won't be routed for TIOCA bus %d\n", 653 "Error interrupts won't be routed for TIOCA bus %d\n",
654 __FUNCTION__, SGI_TIOCA_ERROR, 654 __func__, SGI_TIOCA_ERROR,
655 (int)tioca_common->ca_common.bs_persist_busnum); 655 (int)tioca_common->ca_common.bs_persist_busnum);
656 656
657 sn_set_err_irq_affinity(SGI_TIOCA_ERROR); 657 sn_set_err_irq_affinity(SGI_TIOCA_ERROR);
diff --git a/arch/ia64/sn/pci/tioce_provider.c b/arch/ia64/sn/pci/tioce_provider.c
index 999f14f986e2..9b3c11373022 100644
--- a/arch/ia64/sn/pci/tioce_provider.c
+++ b/arch/ia64/sn/pci/tioce_provider.c
@@ -494,7 +494,7 @@ tioce_dma_unmap(struct pci_dev *pdev, dma_addr_t bus_addr, int dir)
494 if (&map->ce_dmamap_list == &ce_kern->ce_dmamap_list) { 494 if (&map->ce_dmamap_list == &ce_kern->ce_dmamap_list) {
495 printk(KERN_WARNING 495 printk(KERN_WARNING
496 "%s: %s - no map found for bus_addr 0x%lx\n", 496 "%s: %s - no map found for bus_addr 0x%lx\n",
497 __FUNCTION__, pci_name(pdev), bus_addr); 497 __func__, pci_name(pdev), bus_addr);
498 } else if (--map->refcnt == 0) { 498 } else if (--map->refcnt == 0) {
499 for (i = 0; i < map->ate_count; i++) { 499 for (i = 0; i < map->ate_count; i++) {
500 map->ate_shadow[i] = 0; 500 map->ate_shadow[i] = 0;
@@ -1030,7 +1030,7 @@ tioce_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
1030 "%s: Unable to get irq %d. " 1030 "%s: Unable to get irq %d. "
1031 "Error interrupts won't be routed for " 1031 "Error interrupts won't be routed for "
1032 "TIOCE bus %04x:%02x\n", 1032 "TIOCE bus %04x:%02x\n",
1033 __FUNCTION__, SGI_PCIASIC_ERROR, 1033 __func__, SGI_PCIASIC_ERROR,
1034 tioce_common->ce_pcibus.bs_persist_segment, 1034 tioce_common->ce_pcibus.bs_persist_segment,
1035 tioce_common->ce_pcibus.bs_persist_busnum); 1035 tioce_common->ce_pcibus.bs_persist_busnum);
1036 1036
diff --git a/arch/m68k/kernel/entry.S b/arch/m68k/kernel/entry.S
index 6dfa3b3c0e2a..18a9c5f4b00d 100644
--- a/arch/m68k/kernel/entry.S
+++ b/arch/m68k/kernel/entry.S
@@ -742,7 +742,9 @@ sys_call_table:
742 .long sys_epoll_pwait /* 315 */ 742 .long sys_epoll_pwait /* 315 */
743 .long sys_utimensat 743 .long sys_utimensat
744 .long sys_signalfd 744 .long sys_signalfd
745 .long sys_ni_syscall 745 .long sys_timerfd_create
746 .long sys_eventfd 746 .long sys_eventfd
747 .long sys_fallocate /* 320 */ 747 .long sys_fallocate /* 320 */
748 .long sys_timerfd_settime
749 .long sys_timerfd_gettime
748 750
diff --git a/arch/m68knommu/defconfig b/arch/m68knommu/defconfig
index 648113075f97..670b0a99cfa0 100644
--- a/arch/m68knommu/defconfig
+++ b/arch/m68knommu/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.23 3# Linux kernel version: 2.6.25-rc3
4# Thu Oct 18 13:17:38 2007 4# Mon Feb 25 15:03:00 2008
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7# CONFIG_MMU is not set 7# CONFIG_MMU is not set
@@ -15,8 +15,10 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
15CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
16CONFIG_GENERIC_HARDIRQS=y 16CONFIG_GENERIC_HARDIRQS=y
17CONFIG_GENERIC_CALIBRATE_DELAY=y 17CONFIG_GENERIC_CALIBRATE_DELAY=y
18CONFIG_GENERIC_TIME=y
18CONFIG_TIME_LOW_RES=y 19CONFIG_TIME_LOW_RES=y
19CONFIG_NO_IOPORT=y 20CONFIG_NO_IOPORT=y
21CONFIG_ARCH_SUPPORTS_AOUT=y
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 22CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
21 23
22# 24#
@@ -31,12 +33,14 @@ CONFIG_LOCALVERSION_AUTO=y
31# CONFIG_POSIX_MQUEUE is not set 33# CONFIG_POSIX_MQUEUE is not set
32# CONFIG_BSD_PROCESS_ACCT is not set 34# CONFIG_BSD_PROCESS_ACCT is not set
33# CONFIG_TASKSTATS is not set 35# CONFIG_TASKSTATS is not set
34# CONFIG_USER_NS is not set
35# CONFIG_AUDIT is not set 36# CONFIG_AUDIT is not set
36# CONFIG_IKCONFIG is not set 37# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14 38CONFIG_LOG_BUF_SHIFT=14
39# CONFIG_CGROUPS is not set
40# CONFIG_GROUP_SCHED is not set
38# CONFIG_SYSFS_DEPRECATED is not set 41# CONFIG_SYSFS_DEPRECATED is not set
39# CONFIG_RELAY is not set 42# CONFIG_RELAY is not set
43# CONFIG_NAMESPACES is not set
40# CONFIG_BLK_DEV_INITRD is not set 44# CONFIG_BLK_DEV_INITRD is not set
41# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 45# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
42CONFIG_SYSCTL=y 46CONFIG_SYSCTL=y
@@ -48,15 +52,22 @@ CONFIG_SYSCTL_SYSCALL=y
48CONFIG_PRINTK=y 52CONFIG_PRINTK=y
49CONFIG_BUG=y 53CONFIG_BUG=y
50CONFIG_ELF_CORE=y 54CONFIG_ELF_CORE=y
55CONFIG_COMPAT_BRK=y
51CONFIG_BASE_FULL=y 56CONFIG_BASE_FULL=y
52# CONFIG_FUTEX is not set 57# CONFIG_FUTEX is not set
53# CONFIG_EPOLL is not set 58# CONFIG_EPOLL is not set
54# CONFIG_SIGNALFD is not set 59# CONFIG_SIGNALFD is not set
60# CONFIG_TIMERFD is not set
55# CONFIG_EVENTFD is not set 61# CONFIG_EVENTFD is not set
56# CONFIG_VM_EVENT_COUNTERS is not set 62# CONFIG_VM_EVENT_COUNTERS is not set
57CONFIG_SLAB=y 63CONFIG_SLAB=y
58# CONFIG_SLUB is not set 64# CONFIG_SLUB is not set
59# CONFIG_SLOB is not set 65# CONFIG_SLOB is not set
66# CONFIG_PROFILING is not set
67# CONFIG_MARKERS is not set
68# CONFIG_HAVE_OPROFILE is not set
69# CONFIG_HAVE_KPROBES is not set
70CONFIG_SLABINFO=y
60CONFIG_TINY_SHMEM=y 71CONFIG_TINY_SHMEM=y
61CONFIG_BASE_SMALL=0 72CONFIG_BASE_SMALL=0
62CONFIG_MODULES=y 73CONFIG_MODULES=y
@@ -83,6 +94,8 @@ CONFIG_IOSCHED_NOOP=y
83# CONFIG_DEFAULT_CFQ is not set 94# CONFIG_DEFAULT_CFQ is not set
84CONFIG_DEFAULT_NOOP=y 95CONFIG_DEFAULT_NOOP=y
85CONFIG_DEFAULT_IOSCHED="noop" 96CONFIG_DEFAULT_IOSCHED="noop"
97CONFIG_CLASSIC_RCU=y
98# CONFIG_PREEMPT_RCU is not set
86 99
87# 100#
88# Processor type and features 101# Processor type and features
@@ -121,6 +134,7 @@ CONFIG_M5272C3=y
121# CONFIG_MOD5272 is not set 134# CONFIG_MOD5272 is not set
122CONFIG_FREESCALE=y 135CONFIG_FREESCALE=y
123CONFIG_4KSTACKS=y 136CONFIG_4KSTACKS=y
137CONFIG_HZ=100
124 138
125# 139#
126# RAM configuration 140# RAM configuration
@@ -147,6 +161,7 @@ CONFIG_FLATMEM_MANUAL=y
147CONFIG_FLATMEM=y 161CONFIG_FLATMEM=y
148CONFIG_FLAT_NODE_MEM_MAP=y 162CONFIG_FLAT_NODE_MEM_MAP=y
149# CONFIG_SPARSEMEM_STATIC is not set 163# CONFIG_SPARSEMEM_STATIC is not set
164# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
150CONFIG_SPLIT_PTLOCK_CPUS=4 165CONFIG_SPLIT_PTLOCK_CPUS=4
151# CONFIG_RESOURCES_64BIT is not set 166# CONFIG_RESOURCES_64BIT is not set
152CONFIG_ZONE_DMA_FLAG=1 167CONFIG_ZONE_DMA_FLAG=1
@@ -159,10 +174,6 @@ CONFIG_VIRT_TO_BUS=y
159# CONFIG_ARCH_SUPPORTS_MSI is not set 174# CONFIG_ARCH_SUPPORTS_MSI is not set
160 175
161# 176#
162# PCCARD (PCMCIA/CardBus) support
163#
164
165#
166# Executable file formats 177# Executable file formats
167# 178#
168CONFIG_BINFMT_FLAT=y 179CONFIG_BINFMT_FLAT=y
@@ -205,6 +216,7 @@ CONFIG_IP_FIB_HASH=y
205# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 216# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
206# CONFIG_INET_XFRM_MODE_TUNNEL is not set 217# CONFIG_INET_XFRM_MODE_TUNNEL is not set
207# CONFIG_INET_XFRM_MODE_BEET is not set 218# CONFIG_INET_XFRM_MODE_BEET is not set
219# CONFIG_INET_LRO is not set
208# CONFIG_INET_DIAG is not set 220# CONFIG_INET_DIAG is not set
209# CONFIG_TCP_CONG_ADVANCED is not set 221# CONFIG_TCP_CONG_ADVANCED is not set
210CONFIG_TCP_CONG_CUBIC=y 222CONFIG_TCP_CONG_CUBIC=y
@@ -229,10 +241,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
229# CONFIG_LAPB is not set 241# CONFIG_LAPB is not set
230# CONFIG_ECONET is not set 242# CONFIG_ECONET is not set
231# CONFIG_WAN_ROUTER is not set 243# CONFIG_WAN_ROUTER is not set
232
233#
234# QoS and/or fair queueing
235#
236# CONFIG_NET_SCHED is not set 244# CONFIG_NET_SCHED is not set
237 245
238# 246#
@@ -240,6 +248,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
240# 248#
241# CONFIG_NET_PKTGEN is not set 249# CONFIG_NET_PKTGEN is not set
242# CONFIG_HAMRADIO is not set 250# CONFIG_HAMRADIO is not set
251# CONFIG_CAN is not set
243# CONFIG_IRDA is not set 252# CONFIG_IRDA is not set
244# CONFIG_BT is not set 253# CONFIG_BT is not set
245# CONFIG_AF_RXRPC is not set 254# CONFIG_AF_RXRPC is not set
@@ -283,6 +292,7 @@ CONFIG_MTD_BLOCK=y
283# CONFIG_INFTL is not set 292# CONFIG_INFTL is not set
284# CONFIG_RFD_FTL is not set 293# CONFIG_RFD_FTL is not set
285# CONFIG_SSFDC is not set 294# CONFIG_SSFDC is not set
295# CONFIG_MTD_OOPS is not set
286 296
287# 297#
288# RAM/ROM/Flash chip drivers 298# RAM/ROM/Flash chip drivers
@@ -339,10 +349,11 @@ CONFIG_BLK_DEV=y
339CONFIG_BLK_DEV_RAM=y 349CONFIG_BLK_DEV_RAM=y
340CONFIG_BLK_DEV_RAM_COUNT=16 350CONFIG_BLK_DEV_RAM_COUNT=16
341CONFIG_BLK_DEV_RAM_SIZE=4096 351CONFIG_BLK_DEV_RAM_SIZE=4096
342CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 352# CONFIG_BLK_DEV_XIP is not set
343# CONFIG_CDROM_PKTCDVD is not set 353# CONFIG_CDROM_PKTCDVD is not set
344# CONFIG_ATA_OVER_ETH is not set 354# CONFIG_ATA_OVER_ETH is not set
345# CONFIG_MISC_DEVICES is not set 355# CONFIG_MISC_DEVICES is not set
356CONFIG_HAVE_IDE=y
346# CONFIG_IDE is not set 357# CONFIG_IDE is not set
347 358
348# 359#
@@ -360,9 +371,15 @@ CONFIG_NETDEVICES=y
360# CONFIG_MACVLAN is not set 371# CONFIG_MACVLAN is not set
361# CONFIG_EQUALIZER is not set 372# CONFIG_EQUALIZER is not set
362# CONFIG_TUN is not set 373# CONFIG_TUN is not set
374# CONFIG_VETH is not set
363# CONFIG_PHYLIB is not set 375# CONFIG_PHYLIB is not set
364CONFIG_NET_ETHERNET=y 376CONFIG_NET_ETHERNET=y
365# CONFIG_MII is not set 377# CONFIG_MII is not set
378# CONFIG_IBM_NEW_EMAC_ZMII is not set
379# CONFIG_IBM_NEW_EMAC_RGMII is not set
380# CONFIG_IBM_NEW_EMAC_TAH is not set
381# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
382# CONFIG_B44 is not set
366CONFIG_FEC=y 383CONFIG_FEC=y
367# CONFIG_FEC2 is not set 384# CONFIG_FEC2 is not set
368# CONFIG_NETDEV_1000 is not set 385# CONFIG_NETDEV_1000 is not set
@@ -377,7 +394,7 @@ CONFIG_FEC=y
377CONFIG_PPP=y 394CONFIG_PPP=y
378# CONFIG_PPP_MULTILINK is not set 395# CONFIG_PPP_MULTILINK is not set
379# CONFIG_PPP_FILTER is not set 396# CONFIG_PPP_FILTER is not set
380# CONFIG_PPP_ASYNC is not set 397CONFIG_PPP_ASYNC=y
381# CONFIG_PPP_SYNC_TTY is not set 398# CONFIG_PPP_SYNC_TTY is not set
382# CONFIG_PPP_DEFLATE is not set 399# CONFIG_PPP_DEFLATE is not set
383# CONFIG_PPP_BSDCOMP is not set 400# CONFIG_PPP_BSDCOMP is not set
@@ -386,7 +403,6 @@ CONFIG_PPP=y
386# CONFIG_PPPOL2TP is not set 403# CONFIG_PPPOL2TP is not set
387# CONFIG_SLIP is not set 404# CONFIG_SLIP is not set
388CONFIG_SLHC=y 405CONFIG_SLHC=y
389# CONFIG_SHAPER is not set
390# CONFIG_NETCONSOLE is not set 406# CONFIG_NETCONSOLE is not set
391# CONFIG_NETPOLL is not set 407# CONFIG_NETPOLL is not set
392# CONFIG_NET_POLL_CONTROLLER is not set 408# CONFIG_NET_POLL_CONTROLLER is not set
@@ -418,12 +434,16 @@ CONFIG_SLHC=y
418# 434#
419# Non-8250 serial port support 435# Non-8250 serial port support
420# 436#
421CONFIG_SERIAL_COLDFIRE=y 437CONFIG_SERIAL_CORE=y
438CONFIG_SERIAL_CORE_CONSOLE=y
439# CONFIG_SERIAL_COLDFIRE is not set
440CONFIG_SERIAL_MCF=y
441CONFIG_SERIAL_MCF_BAUDRATE=19200
442CONFIG_SERIAL_MCF_CONSOLE=y
422# CONFIG_UNIX98_PTYS is not set 443# CONFIG_UNIX98_PTYS is not set
423CONFIG_LEGACY_PTYS=y 444CONFIG_LEGACY_PTYS=y
424CONFIG_LEGACY_PTY_COUNT=256 445CONFIG_LEGACY_PTY_COUNT=256
425# CONFIG_IPMI_HANDLER is not set 446# CONFIG_IPMI_HANDLER is not set
426# CONFIG_WATCHDOG is not set
427# CONFIG_HW_RANDOM is not set 447# CONFIG_HW_RANDOM is not set
428# CONFIG_GEN_RTC is not set 448# CONFIG_GEN_RTC is not set
429# CONFIG_R3964 is not set 449# CONFIG_R3964 is not set
@@ -439,6 +459,14 @@ CONFIG_LEGACY_PTY_COUNT=256
439# CONFIG_W1 is not set 459# CONFIG_W1 is not set
440# CONFIG_POWER_SUPPLY is not set 460# CONFIG_POWER_SUPPLY is not set
441# CONFIG_HWMON is not set 461# CONFIG_HWMON is not set
462# CONFIG_THERMAL is not set
463# CONFIG_WATCHDOG is not set
464
465#
466# Sonics Silicon Backplane
467#
468CONFIG_SSB_POSSIBLE=y
469# CONFIG_SSB is not set
442 470
443# 471#
444# Multifunction device drivers 472# Multifunction device drivers
@@ -450,20 +478,20 @@ CONFIG_LEGACY_PTY_COUNT=256
450# 478#
451# CONFIG_VIDEO_DEV is not set 479# CONFIG_VIDEO_DEV is not set
452# CONFIG_DVB_CORE is not set 480# CONFIG_DVB_CORE is not set
453CONFIG_DAB=y 481# CONFIG_DAB is not set
454 482
455# 483#
456# Graphics support 484# Graphics support
457# 485#
486# CONFIG_VGASTATE is not set
487# CONFIG_VIDEO_OUTPUT_CONTROL is not set
488# CONFIG_FB is not set
458# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 489# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
459 490
460# 491#
461# Display device support 492# Display device support
462# 493#
463# CONFIG_DISPLAY_SUPPORT is not set 494# CONFIG_DISPLAY_SUPPORT is not set
464# CONFIG_VGASTATE is not set
465CONFIG_VIDEO_OUTPUT_CONTROL=y
466# CONFIG_FB is not set
467 495
468# 496#
469# Sound 497# Sound
@@ -471,23 +499,11 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
471# CONFIG_SOUND is not set 499# CONFIG_SOUND is not set
472# CONFIG_USB_SUPPORT is not set 500# CONFIG_USB_SUPPORT is not set
473# CONFIG_MMC is not set 501# CONFIG_MMC is not set
502# CONFIG_MEMSTICK is not set
474# CONFIG_NEW_LEDS is not set 503# CONFIG_NEW_LEDS is not set
475# CONFIG_RTC_CLASS is not set 504# CONFIG_RTC_CLASS is not set
476 505
477# 506#
478# DMA Engine support
479#
480# CONFIG_DMA_ENGINE is not set
481
482#
483# DMA Clients
484#
485
486#
487# DMA Devices
488#
489
490#
491# Userspace I/O 507# Userspace I/O
492# 508#
493# CONFIG_UIO is not set 509# CONFIG_UIO is not set
@@ -505,11 +521,9 @@ CONFIG_EXT2_FS=y
505# CONFIG_XFS_FS is not set 521# CONFIG_XFS_FS is not set
506# CONFIG_GFS2_FS is not set 522# CONFIG_GFS2_FS is not set
507# CONFIG_OCFS2_FS is not set 523# CONFIG_OCFS2_FS is not set
508# CONFIG_MINIX_FS is not set 524# CONFIG_DNOTIFY is not set
509CONFIG_ROMFS_FS=y
510# CONFIG_INOTIFY is not set 525# CONFIG_INOTIFY is not set
511# CONFIG_QUOTA is not set 526# CONFIG_QUOTA is not set
512# CONFIG_DNOTIFY is not set
513# CONFIG_AUTOFS_FS is not set 527# CONFIG_AUTOFS_FS is not set
514# CONFIG_AUTOFS4_FS is not set 528# CONFIG_AUTOFS4_FS is not set
515# CONFIG_FUSE_FS is not set 529# CONFIG_FUSE_FS is not set
@@ -535,7 +549,6 @@ CONFIG_PROC_SYSCTL=y
535CONFIG_SYSFS=y 549CONFIG_SYSFS=y
536# CONFIG_TMPFS is not set 550# CONFIG_TMPFS is not set
537# CONFIG_HUGETLB_PAGE is not set 551# CONFIG_HUGETLB_PAGE is not set
538CONFIG_RAMFS=y
539# CONFIG_CONFIGFS_FS is not set 552# CONFIG_CONFIGFS_FS is not set
540 553
541# 554#
@@ -551,42 +564,27 @@ CONFIG_RAMFS=y
551# CONFIG_JFFS2_FS is not set 564# CONFIG_JFFS2_FS is not set
552# CONFIG_CRAMFS is not set 565# CONFIG_CRAMFS is not set
553# CONFIG_VXFS_FS is not set 566# CONFIG_VXFS_FS is not set
567# CONFIG_MINIX_FS is not set
554# CONFIG_HPFS_FS is not set 568# CONFIG_HPFS_FS is not set
555# CONFIG_QNX4FS_FS is not set 569# CONFIG_QNX4FS_FS is not set
570CONFIG_ROMFS_FS=y
556# CONFIG_SYSV_FS is not set 571# CONFIG_SYSV_FS is not set
557# CONFIG_UFS_FS is not set 572# CONFIG_UFS_FS is not set
558 573# CONFIG_NETWORK_FILESYSTEMS is not set
559#
560# Network File Systems
561#
562# CONFIG_NFS_FS is not set
563# CONFIG_NFSD is not set
564# CONFIG_SMB_FS is not set
565# CONFIG_CIFS is not set
566# CONFIG_NCP_FS is not set
567# CONFIG_CODA_FS is not set
568# CONFIG_AFS_FS is not set
569 574
570# 575#
571# Partition Types 576# Partition Types
572# 577#
573# CONFIG_PARTITION_ADVANCED is not set 578# CONFIG_PARTITION_ADVANCED is not set
574CONFIG_MSDOS_PARTITION=y 579CONFIG_MSDOS_PARTITION=y
575
576#
577# Native Language Support
578#
579# CONFIG_NLS is not set 580# CONFIG_NLS is not set
580
581#
582# Distributed Lock Manager
583#
584# CONFIG_DLM is not set 581# CONFIG_DLM is not set
585 582
586# 583#
587# Kernel hacking 584# Kernel hacking
588# 585#
589# CONFIG_PRINTK_TIME is not set 586# CONFIG_PRINTK_TIME is not set
587CONFIG_ENABLE_WARN_DEPRECATED=y
590# CONFIG_ENABLE_MUST_CHECK is not set 588# CONFIG_ENABLE_MUST_CHECK is not set
591# CONFIG_MAGIC_SYSRQ is not set 589# CONFIG_MAGIC_SYSRQ is not set
592# CONFIG_UNUSED_SYMBOLS is not set 590# CONFIG_UNUSED_SYMBOLS is not set
@@ -594,6 +592,7 @@ CONFIG_MSDOS_PARTITION=y
594# CONFIG_HEADERS_CHECK is not set 592# CONFIG_HEADERS_CHECK is not set
595# CONFIG_DEBUG_KERNEL is not set 593# CONFIG_DEBUG_KERNEL is not set
596# CONFIG_DEBUG_BUGVERBOSE is not set 594# CONFIG_DEBUG_BUGVERBOSE is not set
595# CONFIG_SAMPLES is not set
597# CONFIG_FULLDEBUG is not set 596# CONFIG_FULLDEBUG is not set
598# CONFIG_HIGHPROFILE is not set 597# CONFIG_HIGHPROFILE is not set
599# CONFIG_BOOTPARAM is not set 598# CONFIG_BOOTPARAM is not set
@@ -605,6 +604,7 @@ CONFIG_MSDOS_PARTITION=y
605# 604#
606# CONFIG_KEYS is not set 605# CONFIG_KEYS is not set
607# CONFIG_SECURITY is not set 606# CONFIG_SECURITY is not set
607# CONFIG_SECURITY_FILE_CAPABILITIES is not set
608# CONFIG_CRYPTO is not set 608# CONFIG_CRYPTO is not set
609 609
610# 610#
diff --git a/arch/m68knommu/kernel/syscalltable.S b/arch/m68knommu/kernel/syscalltable.S
index 1b02b8820068..fca2e49917a3 100644
--- a/arch/m68knommu/kernel/syscalltable.S
+++ b/arch/m68knommu/kernel/syscalltable.S
@@ -336,9 +336,11 @@ ENTRY(sys_call_table)
336 .long sys_epoll_pwait /* 315 */ 336 .long sys_epoll_pwait /* 315 */
337 .long sys_utimensat 337 .long sys_utimensat
338 .long sys_signalfd 338 .long sys_signalfd
339 .long sys_ni_syscall 339 .long sys_timerfd_create
340 .long sys_eventfd 340 .long sys_eventfd
341 .long sys_fallocate /* 320 */ 341 .long sys_fallocate /* 320 */
342 .long sys_timerfd_settime
343 .long sys_timerfd_gettime
342 344
343 .rept NR_syscalls-(.-sys_call_table)/4 345 .rept NR_syscalls-(.-sys_call_table)/4
344 .long sys_ni_syscall 346 .long sys_ni_syscall
diff --git a/arch/m68knommu/platform/68328/timers.c b/arch/m68knommu/platform/68328/timers.c
index 9159fd05c9ac..6bafefa546e5 100644
--- a/arch/m68knommu/platform/68328/timers.c
+++ b/arch/m68knommu/platform/68328/timers.c
@@ -67,16 +67,6 @@ static irqreturn_t hw_tick(int irq, void *dummy)
67 67
68/***************************************************************************/ 68/***************************************************************************/
69 69
70static irqreturn_t hw_tick(int irq, void *dummy)
71{
72 /* Reset Timer1 */
73 TSTAT &= 0;
74
75 return arch_timer_interrupt(irq, dummy);
76}
77
78/***************************************************************************/
79
80static struct irqaction m68328_timer_irq = { 70static struct irqaction m68328_timer_irq = {
81 .name = "timer", 71 .name = "timer",
82 .flags = IRQF_DISABLED | IRQF_TIMER, 72 .flags = IRQF_DISABLED | IRQF_TIMER,
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index ade230d445d9..8724ed3298d3 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1824,7 +1824,7 @@ choice
1824 Allows the configuration of the timer frequency. 1824 Allows the configuration of the timer frequency.
1825 1825
1826 config HZ_48 1826 config HZ_48
1827 bool "48 HZ" if SYS_SUPPORTS_48HZ 1827 bool "48 HZ" if SYS_SUPPORTS_48HZ || SYS_SUPPORTS_ARBIT_HZ
1828 1828
1829 config HZ_100 1829 config HZ_100
1830 bool "100 HZ" if SYS_SUPPORTS_100HZ || SYS_SUPPORTS_ARBIT_HZ 1830 bool "100 HZ" if SYS_SUPPORTS_100HZ || SYS_SUPPORTS_ARBIT_HZ
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 3fb7f3065c92..72097dacabd3 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -12,6 +12,8 @@
12# for "archclean" cleaning up for this architecture. 12# for "archclean" cleaning up for this architecture.
13# 13#
14 14
15KBUILD_DEFCONFIG := ip22_defconfig
16
15cflags-y := 17cflags-y :=
16 18
17# 19#
diff --git a/arch/mips/au1000/common/dbdma.c b/arch/mips/au1000/common/dbdma.c
index 428ed275a0f6..57f17b41098d 100644
--- a/arch/mips/au1000/common/dbdma.c
+++ b/arch/mips/au1000/common/dbdma.c
@@ -161,22 +161,22 @@ static dbdev_tab_t dbdev_tab[] = {
161 { DSCR_CMD0_ALWAYS, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 }, 161 { DSCR_CMD0_ALWAYS, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
162 162
163 /* Provide 16 user definable device types */ 163 /* Provide 16 user definable device types */
164 { 0, 0, 0, 0, 0, 0, 0 }, 164 { ~0, 0, 0, 0, 0, 0, 0 },
165 { 0, 0, 0, 0, 0, 0, 0 }, 165 { ~0, 0, 0, 0, 0, 0, 0 },
166 { 0, 0, 0, 0, 0, 0, 0 }, 166 { ~0, 0, 0, 0, 0, 0, 0 },
167 { 0, 0, 0, 0, 0, 0, 0 }, 167 { ~0, 0, 0, 0, 0, 0, 0 },
168 { 0, 0, 0, 0, 0, 0, 0 }, 168 { ~0, 0, 0, 0, 0, 0, 0 },
169 { 0, 0, 0, 0, 0, 0, 0 }, 169 { ~0, 0, 0, 0, 0, 0, 0 },
170 { 0, 0, 0, 0, 0, 0, 0 }, 170 { ~0, 0, 0, 0, 0, 0, 0 },
171 { 0, 0, 0, 0, 0, 0, 0 }, 171 { ~0, 0, 0, 0, 0, 0, 0 },
172 { 0, 0, 0, 0, 0, 0, 0 }, 172 { ~0, 0, 0, 0, 0, 0, 0 },
173 { 0, 0, 0, 0, 0, 0, 0 }, 173 { ~0, 0, 0, 0, 0, 0, 0 },
174 { 0, 0, 0, 0, 0, 0, 0 }, 174 { ~0, 0, 0, 0, 0, 0, 0 },
175 { 0, 0, 0, 0, 0, 0, 0 }, 175 { ~0, 0, 0, 0, 0, 0, 0 },
176 { 0, 0, 0, 0, 0, 0, 0 }, 176 { ~0, 0, 0, 0, 0, 0, 0 },
177 { 0, 0, 0, 0, 0, 0, 0 }, 177 { ~0, 0, 0, 0, 0, 0, 0 },
178 { 0, 0, 0, 0, 0, 0, 0 }, 178 { ~0, 0, 0, 0, 0, 0, 0 },
179 { 0, 0, 0, 0, 0, 0, 0 }, 179 { ~0, 0, 0, 0, 0, 0, 0 },
180}; 180};
181 181
182#define DBDEV_TAB_SIZE ARRAY_SIZE(dbdev_tab) 182#define DBDEV_TAB_SIZE ARRAY_SIZE(dbdev_tab)
@@ -209,7 +209,7 @@ au1xxx_ddma_add_device(dbdev_tab_t *dev)
209 dbdev_tab_t *p=NULL; 209 dbdev_tab_t *p=NULL;
210 static u16 new_id=0x1000; 210 static u16 new_id=0x1000;
211 211
212 p = find_dbdev_id(0); 212 p = find_dbdev_id(~0);
213 if ( NULL != p ) 213 if ( NULL != p )
214 { 214 {
215 memcpy(p, dev, sizeof(dbdev_tab_t)); 215 memcpy(p, dev, sizeof(dbdev_tab_t));
diff --git a/arch/mips/defconfig b/arch/mips/defconfig
deleted file mode 100644
index 4f5e56c9335e..000000000000
--- a/arch/mips/defconfig
+++ /dev/null
@@ -1,1158 +0,0 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23-rc2
4# Tue Aug 7 12:39:49 2007
5#
6CONFIG_MIPS=y
7
8#
9# Machine selection
10#
11CONFIG_ZONE_DMA=y
12# CONFIG_MACH_ALCHEMY is not set
13# CONFIG_BASLER_EXCITE is not set
14# CONFIG_MIPS_COBALT is not set
15# CONFIG_MACH_DECSTATION is not set
16# CONFIG_MACH_JAZZ is not set
17# CONFIG_LEMOTE_FULONG is not set
18# CONFIG_MIPS_ATLAS is not set
19# CONFIG_MIPS_MALTA is not set
20# CONFIG_MIPS_SEAD is not set
21# CONFIG_MIPS_SIM is not set
22# CONFIG_MARKEINS is not set
23# CONFIG_MACH_VR41XX is not set
24# CONFIG_PNX8550_JBS is not set
25# CONFIG_PNX8550_STB810 is not set
26# CONFIG_PMC_MSP is not set
27# CONFIG_PMC_YOSEMITE is not set
28CONFIG_SGI_IP22=y
29# CONFIG_SGI_IP27 is not set
30# CONFIG_SGI_IP32 is not set
31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
37# CONFIG_SIBYTE_SENTOSA is not set
38# CONFIG_SIBYTE_BIGSUR is not set
39# CONFIG_SNI_RM is not set
40# CONFIG_TOSHIBA_JMR3927 is not set
41# CONFIG_TOSHIBA_RBTX4927 is not set
42# CONFIG_TOSHIBA_RBTX4938 is not set
43# CONFIG_WR_PPMC is not set
44CONFIG_RWSEM_GENERIC_SPINLOCK=y
45# CONFIG_ARCH_HAS_ILOG2_U32 is not set
46# CONFIG_ARCH_HAS_ILOG2_U64 is not set
47CONFIG_GENERIC_FIND_NEXT_BIT=y
48CONFIG_GENERIC_HWEIGHT=y
49CONFIG_GENERIC_CALIBRATE_DELAY=y
50CONFIG_GENERIC_TIME=y
51CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
52# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
53CONFIG_ARC=y
54CONFIG_DMA_NONCOHERENT=y
55CONFIG_DMA_NEED_PCI_MAP_STATE=y
56CONFIG_EARLY_PRINTK=y
57CONFIG_SYS_HAS_EARLY_PRINTK=y
58# CONFIG_NO_IOPORT is not set
59CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y
60CONFIG_CPU_BIG_ENDIAN=y
61# CONFIG_CPU_LITTLE_ENDIAN is not set
62CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
63CONFIG_IRQ_CPU=y
64CONFIG_SWAP_IO_SPACE=y
65CONFIG_ARC32=y
66CONFIG_BOOT_ELF32=y
67CONFIG_MIPS_L1_CACHE_SHIFT=5
68CONFIG_ARC_CONSOLE=y
69CONFIG_ARC_PROMLIB=y
70
71#
72# CPU selection
73#
74# CONFIG_CPU_LOONGSON2 is not set
75# CONFIG_CPU_MIPS32_R1 is not set
76# CONFIG_CPU_MIPS32_R2 is not set
77# CONFIG_CPU_MIPS64_R1 is not set
78# CONFIG_CPU_MIPS64_R2 is not set
79# CONFIG_CPU_R3000 is not set
80# CONFIG_CPU_TX39XX is not set
81# CONFIG_CPU_VR41XX is not set
82# CONFIG_CPU_R4300 is not set
83# CONFIG_CPU_R4X00 is not set
84# CONFIG_CPU_TX49XX is not set
85CONFIG_CPU_R5000=y
86# CONFIG_CPU_R5432 is not set
87# CONFIG_CPU_R6000 is not set
88# CONFIG_CPU_NEVADA is not set
89# CONFIG_CPU_R8000 is not set
90# CONFIG_CPU_R10000 is not set
91# CONFIG_CPU_RM7000 is not set
92# CONFIG_CPU_RM9000 is not set
93# CONFIG_CPU_SB1 is not set
94CONFIG_SYS_HAS_CPU_R4X00=y
95CONFIG_SYS_HAS_CPU_R5000=y
96CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
97CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
98CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
99CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
100
101#
102# Kernel type
103#
104CONFIG_32BIT=y
105# CONFIG_64BIT is not set
106CONFIG_PAGE_SIZE_4KB=y
107# CONFIG_PAGE_SIZE_8KB is not set
108# CONFIG_PAGE_SIZE_16KB is not set
109# CONFIG_PAGE_SIZE_64KB is not set
110CONFIG_BOARD_SCACHE=y
111CONFIG_IP22_CPU_SCACHE=y
112CONFIG_MIPS_MT_DISABLED=y
113# CONFIG_MIPS_MT_SMP is not set
114# CONFIG_MIPS_MT_SMTC is not set
115CONFIG_CPU_HAS_LLSC=y
116CONFIG_CPU_HAS_SYNC=y
117CONFIG_GENERIC_HARDIRQS=y
118CONFIG_GENERIC_IRQ_PROBE=y
119CONFIG_ARCH_FLATMEM_ENABLE=y
120CONFIG_SELECT_MEMORY_MODEL=y
121CONFIG_FLATMEM_MANUAL=y
122# CONFIG_DISCONTIGMEM_MANUAL is not set
123# CONFIG_SPARSEMEM_MANUAL is not set
124CONFIG_FLATMEM=y
125CONFIG_FLAT_NODE_MEM_MAP=y
126# CONFIG_SPARSEMEM_STATIC is not set
127CONFIG_SPLIT_PTLOCK_CPUS=4
128# CONFIG_RESOURCES_64BIT is not set
129CONFIG_ZONE_DMA_FLAG=1
130CONFIG_BOUNCE=y
131CONFIG_VIRT_TO_BUS=y
132# CONFIG_HZ_48 is not set
133# CONFIG_HZ_100 is not set
134# CONFIG_HZ_128 is not set
135# CONFIG_HZ_250 is not set
136# CONFIG_HZ_256 is not set
137CONFIG_HZ_1000=y
138# CONFIG_HZ_1024 is not set
139CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
140CONFIG_HZ=1000
141# CONFIG_PREEMPT_NONE is not set
142CONFIG_PREEMPT_VOLUNTARY=y
143# CONFIG_PREEMPT is not set
144# CONFIG_KEXEC is not set
145CONFIG_SECCOMP=y
146CONFIG_LOCKDEP_SUPPORT=y
147CONFIG_STACKTRACE_SUPPORT=y
148CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
149
150#
151# General setup
152#
153CONFIG_EXPERIMENTAL=y
154CONFIG_BROKEN_ON_SMP=y
155CONFIG_INIT_ENV_ARG_LIMIT=32
156CONFIG_LOCALVERSION=""
157CONFIG_LOCALVERSION_AUTO=y
158CONFIG_SWAP=y
159CONFIG_SYSVIPC=y
160CONFIG_SYSVIPC_SYSCTL=y
161# CONFIG_POSIX_MQUEUE is not set
162# CONFIG_BSD_PROCESS_ACCT is not set
163# CONFIG_TASKSTATS is not set
164# CONFIG_USER_NS is not set
165# CONFIG_AUDIT is not set
166CONFIG_IKCONFIG=y
167CONFIG_IKCONFIG_PROC=y
168CONFIG_LOG_BUF_SHIFT=14
169CONFIG_SYSFS_DEPRECATED=y
170CONFIG_RELAY=y
171# CONFIG_BLK_DEV_INITRD is not set
172# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
173CONFIG_SYSCTL=y
174CONFIG_EMBEDDED=y
175CONFIG_SYSCTL_SYSCALL=y
176CONFIG_KALLSYMS=y
177# CONFIG_KALLSYMS_EXTRA_PASS is not set
178# CONFIG_HOTPLUG is not set
179CONFIG_PRINTK=y
180CONFIG_BUG=y
181CONFIG_ELF_CORE=y
182CONFIG_BASE_FULL=y
183CONFIG_FUTEX=y
184CONFIG_ANON_INODES=y
185CONFIG_EPOLL=y
186CONFIG_SIGNALFD=y
187CONFIG_TIMERFD=y
188CONFIG_EVENTFD=y
189CONFIG_SHMEM=y
190CONFIG_VM_EVENT_COUNTERS=y
191CONFIG_SLAB=y
192# CONFIG_SLUB is not set
193# CONFIG_SLOB is not set
194CONFIG_RT_MUTEXES=y
195# CONFIG_TINY_SHMEM is not set
196CONFIG_BASE_SMALL=0
197CONFIG_MODULES=y
198CONFIG_MODULE_UNLOAD=y
199# CONFIG_MODULE_FORCE_UNLOAD is not set
200CONFIG_MODVERSIONS=y
201CONFIG_MODULE_SRCVERSION_ALL=y
202CONFIG_KMOD=y
203CONFIG_BLOCK=y
204# CONFIG_LBD is not set
205# CONFIG_BLK_DEV_IO_TRACE is not set
206# CONFIG_LSF is not set
207# CONFIG_BLK_DEV_BSG is not set
208
209#
210# IO Schedulers
211#
212CONFIG_IOSCHED_NOOP=y
213CONFIG_IOSCHED_AS=y
214CONFIG_IOSCHED_DEADLINE=y
215CONFIG_IOSCHED_CFQ=y
216CONFIG_DEFAULT_AS=y
217# CONFIG_DEFAULT_DEADLINE is not set
218# CONFIG_DEFAULT_CFQ is not set
219# CONFIG_DEFAULT_NOOP is not set
220CONFIG_DEFAULT_IOSCHED="anticipatory"
221
222#
223# Bus options (PCI, PCMCIA, EISA, ISA, TC)
224#
225CONFIG_HW_HAS_EISA=y
226# CONFIG_ARCH_SUPPORTS_MSI is not set
227# CONFIG_EISA is not set
228CONFIG_MMU=y
229
230#
231# PCCARD (PCMCIA/CardBus) support
232#
233
234#
235# Executable file formats
236#
237CONFIG_BINFMT_ELF=y
238CONFIG_BINFMT_MISC=m
239CONFIG_TRAD_SIGNALS=y
240
241#
242# Power management options
243#
244CONFIG_PM=y
245# CONFIG_PM_LEGACY is not set
246# CONFIG_PM_DEBUG is not set
247# CONFIG_SUSPEND is not set
248
249#
250# Networking
251#
252CONFIG_NET=y
253
254#
255# Networking options
256#
257CONFIG_PACKET=y
258CONFIG_PACKET_MMAP=y
259CONFIG_UNIX=y
260CONFIG_XFRM=y
261CONFIG_XFRM_USER=m
262# CONFIG_XFRM_SUB_POLICY is not set
263CONFIG_XFRM_MIGRATE=y
264CONFIG_NET_KEY=y
265CONFIG_NET_KEY_MIGRATE=y
266CONFIG_INET=y
267CONFIG_IP_MULTICAST=y
268# CONFIG_IP_ADVANCED_ROUTER is not set
269CONFIG_IP_FIB_HASH=y
270CONFIG_IP_PNP=y
271# CONFIG_IP_PNP_DHCP is not set
272CONFIG_IP_PNP_BOOTP=y
273# CONFIG_IP_PNP_RARP is not set
274# CONFIG_NET_IPIP is not set
275# CONFIG_NET_IPGRE is not set
276# CONFIG_IP_MROUTE is not set
277# CONFIG_ARPD is not set
278# CONFIG_SYN_COOKIES is not set
279CONFIG_INET_AH=m
280CONFIG_INET_ESP=m
281CONFIG_INET_IPCOMP=m
282CONFIG_INET_XFRM_TUNNEL=m
283CONFIG_INET_TUNNEL=m
284CONFIG_INET_XFRM_MODE_TRANSPORT=m
285CONFIG_INET_XFRM_MODE_TUNNEL=m
286CONFIG_INET_XFRM_MODE_BEET=m
287CONFIG_INET_DIAG=y
288CONFIG_INET_TCP_DIAG=y
289# CONFIG_TCP_CONG_ADVANCED is not set
290CONFIG_TCP_CONG_CUBIC=y
291CONFIG_DEFAULT_TCP_CONG="cubic"
292CONFIG_TCP_MD5SIG=y
293CONFIG_IP_VS=m
294# CONFIG_IP_VS_DEBUG is not set
295CONFIG_IP_VS_TAB_BITS=12
296
297#
298# IPVS transport protocol load balancing support
299#
300CONFIG_IP_VS_PROTO_TCP=y
301CONFIG_IP_VS_PROTO_UDP=y
302CONFIG_IP_VS_PROTO_ESP=y
303CONFIG_IP_VS_PROTO_AH=y
304
305#
306# IPVS scheduler
307#
308CONFIG_IP_VS_RR=m
309CONFIG_IP_VS_WRR=m
310CONFIG_IP_VS_LC=m
311CONFIG_IP_VS_WLC=m
312CONFIG_IP_VS_LBLC=m
313CONFIG_IP_VS_LBLCR=m
314CONFIG_IP_VS_DH=m
315CONFIG_IP_VS_SH=m
316CONFIG_IP_VS_SED=m
317CONFIG_IP_VS_NQ=m
318
319#
320# IPVS application helper
321#
322CONFIG_IP_VS_FTP=m
323CONFIG_IPV6=m
324CONFIG_IPV6_PRIVACY=y
325CONFIG_IPV6_ROUTER_PREF=y
326CONFIG_IPV6_ROUTE_INFO=y
327CONFIG_IPV6_OPTIMISTIC_DAD=y
328CONFIG_INET6_AH=m
329CONFIG_INET6_ESP=m
330CONFIG_INET6_IPCOMP=m
331CONFIG_IPV6_MIP6=m
332CONFIG_INET6_XFRM_TUNNEL=m
333CONFIG_INET6_TUNNEL=m
334CONFIG_INET6_XFRM_MODE_TRANSPORT=m
335CONFIG_INET6_XFRM_MODE_TUNNEL=m
336CONFIG_INET6_XFRM_MODE_BEET=m
337CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
338CONFIG_IPV6_SIT=m
339CONFIG_IPV6_TUNNEL=m
340CONFIG_IPV6_MULTIPLE_TABLES=y
341CONFIG_IPV6_SUBTREES=y
342CONFIG_NETWORK_SECMARK=y
343CONFIG_NETFILTER=y
344# CONFIG_NETFILTER_DEBUG is not set
345
346#
347# Core Netfilter Configuration
348#
349CONFIG_NETFILTER_NETLINK=m
350CONFIG_NETFILTER_NETLINK_QUEUE=m
351CONFIG_NETFILTER_NETLINK_LOG=m
352CONFIG_NF_CONNTRACK_ENABLED=m
353CONFIG_NF_CONNTRACK=m
354CONFIG_NF_CT_ACCT=y
355CONFIG_NF_CONNTRACK_MARK=y
356CONFIG_NF_CONNTRACK_SECMARK=y
357CONFIG_NF_CONNTRACK_EVENTS=y
358CONFIG_NF_CT_PROTO_GRE=m
359CONFIG_NF_CT_PROTO_SCTP=m
360CONFIG_NF_CT_PROTO_UDPLITE=m
361CONFIG_NF_CONNTRACK_AMANDA=m
362CONFIG_NF_CONNTRACK_FTP=m
363CONFIG_NF_CONNTRACK_H323=m
364CONFIG_NF_CONNTRACK_IRC=m
365# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
366CONFIG_NF_CONNTRACK_PPTP=m
367CONFIG_NF_CONNTRACK_SANE=m
368CONFIG_NF_CONNTRACK_SIP=m
369CONFIG_NF_CONNTRACK_TFTP=m
370CONFIG_NF_CT_NETLINK=m
371CONFIG_NETFILTER_XTABLES=m
372CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
373CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
374CONFIG_NETFILTER_XT_TARGET_DSCP=m
375CONFIG_NETFILTER_XT_TARGET_MARK=m
376CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
377CONFIG_NETFILTER_XT_TARGET_NFLOG=m
378CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
379CONFIG_NETFILTER_XT_TARGET_TRACE=m
380CONFIG_NETFILTER_XT_TARGET_SECMARK=m
381CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
382CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
383CONFIG_NETFILTER_XT_MATCH_COMMENT=m
384CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
385CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
386CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
387CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
388CONFIG_NETFILTER_XT_MATCH_DCCP=m
389CONFIG_NETFILTER_XT_MATCH_DSCP=m
390CONFIG_NETFILTER_XT_MATCH_ESP=m
391CONFIG_NETFILTER_XT_MATCH_HELPER=m
392CONFIG_NETFILTER_XT_MATCH_LENGTH=m
393CONFIG_NETFILTER_XT_MATCH_LIMIT=m
394CONFIG_NETFILTER_XT_MATCH_MAC=m
395CONFIG_NETFILTER_XT_MATCH_MARK=m
396CONFIG_NETFILTER_XT_MATCH_POLICY=m
397CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
398CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
399CONFIG_NETFILTER_XT_MATCH_QUOTA=m
400CONFIG_NETFILTER_XT_MATCH_REALM=m
401CONFIG_NETFILTER_XT_MATCH_SCTP=m
402CONFIG_NETFILTER_XT_MATCH_STATE=m
403CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
404CONFIG_NETFILTER_XT_MATCH_STRING=m
405CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
406CONFIG_NETFILTER_XT_MATCH_U32=m
407CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
408
409#
410# IP: Netfilter Configuration
411#
412CONFIG_NF_CONNTRACK_IPV4=m
413CONFIG_NF_CONNTRACK_PROC_COMPAT=y
414CONFIG_IP_NF_QUEUE=m
415CONFIG_IP_NF_IPTABLES=m
416CONFIG_IP_NF_MATCH_IPRANGE=m
417CONFIG_IP_NF_MATCH_TOS=m
418CONFIG_IP_NF_MATCH_RECENT=m
419CONFIG_IP_NF_MATCH_ECN=m
420CONFIG_IP_NF_MATCH_AH=m
421CONFIG_IP_NF_MATCH_TTL=m
422CONFIG_IP_NF_MATCH_OWNER=m
423CONFIG_IP_NF_MATCH_ADDRTYPE=m
424CONFIG_IP_NF_FILTER=m
425CONFIG_IP_NF_TARGET_REJECT=m
426CONFIG_IP_NF_TARGET_LOG=m
427CONFIG_IP_NF_TARGET_ULOG=m
428CONFIG_NF_NAT=m
429CONFIG_NF_NAT_NEEDED=y
430CONFIG_IP_NF_TARGET_MASQUERADE=m
431CONFIG_IP_NF_TARGET_REDIRECT=m
432CONFIG_IP_NF_TARGET_NETMAP=m
433CONFIG_IP_NF_TARGET_SAME=m
434CONFIG_NF_NAT_SNMP_BASIC=m
435CONFIG_NF_NAT_PROTO_GRE=m
436CONFIG_NF_NAT_FTP=m
437CONFIG_NF_NAT_IRC=m
438CONFIG_NF_NAT_TFTP=m
439CONFIG_NF_NAT_AMANDA=m
440CONFIG_NF_NAT_PPTP=m
441CONFIG_NF_NAT_H323=m
442CONFIG_NF_NAT_SIP=m
443CONFIG_IP_NF_MANGLE=m
444CONFIG_IP_NF_TARGET_TOS=m
445CONFIG_IP_NF_TARGET_ECN=m
446CONFIG_IP_NF_TARGET_TTL=m
447CONFIG_IP_NF_TARGET_CLUSTERIP=m
448CONFIG_IP_NF_RAW=m
449CONFIG_IP_NF_ARPTABLES=m
450CONFIG_IP_NF_ARPFILTER=m
451CONFIG_IP_NF_ARP_MANGLE=m
452
453#
454# IPv6: Netfilter Configuration (EXPERIMENTAL)
455#
456CONFIG_NF_CONNTRACK_IPV6=m
457CONFIG_IP6_NF_QUEUE=m
458CONFIG_IP6_NF_IPTABLES=m
459CONFIG_IP6_NF_MATCH_RT=m
460CONFIG_IP6_NF_MATCH_OPTS=m
461CONFIG_IP6_NF_MATCH_FRAG=m
462CONFIG_IP6_NF_MATCH_HL=m
463CONFIG_IP6_NF_MATCH_OWNER=m
464CONFIG_IP6_NF_MATCH_IPV6HEADER=m
465CONFIG_IP6_NF_MATCH_AH=m
466CONFIG_IP6_NF_MATCH_MH=m
467CONFIG_IP6_NF_MATCH_EUI64=m
468CONFIG_IP6_NF_FILTER=m
469CONFIG_IP6_NF_TARGET_LOG=m
470CONFIG_IP6_NF_TARGET_REJECT=m
471CONFIG_IP6_NF_MANGLE=m
472CONFIG_IP6_NF_TARGET_HL=m
473CONFIG_IP6_NF_RAW=m
474# CONFIG_IP_DCCP is not set
475CONFIG_IP_SCTP=m
476# CONFIG_SCTP_DBG_MSG is not set
477# CONFIG_SCTP_DBG_OBJCNT is not set
478# CONFIG_SCTP_HMAC_NONE is not set
479# CONFIG_SCTP_HMAC_SHA1 is not set
480CONFIG_SCTP_HMAC_MD5=y
481# CONFIG_TIPC is not set
482# CONFIG_ATM is not set
483# CONFIG_BRIDGE is not set
484# CONFIG_VLAN_8021Q is not set
485# CONFIG_DECNET is not set
486# CONFIG_LLC2 is not set
487# CONFIG_IPX is not set
488# CONFIG_ATALK is not set
489# CONFIG_X25 is not set
490# CONFIG_LAPB is not set
491# CONFIG_ECONET is not set
492# CONFIG_WAN_ROUTER is not set
493
494#
495# QoS and/or fair queueing
496#
497CONFIG_NET_SCHED=y
498CONFIG_NET_SCH_FIFO=y
499
500#
501# Queueing/Scheduling
502#
503CONFIG_NET_SCH_CBQ=m
504CONFIG_NET_SCH_HTB=m
505CONFIG_NET_SCH_HFSC=m
506CONFIG_NET_SCH_PRIO=m
507CONFIG_NET_SCH_RR=m
508CONFIG_NET_SCH_RED=m
509CONFIG_NET_SCH_SFQ=m
510CONFIG_NET_SCH_TEQL=m
511CONFIG_NET_SCH_TBF=m
512CONFIG_NET_SCH_GRED=m
513CONFIG_NET_SCH_DSMARK=m
514CONFIG_NET_SCH_NETEM=m
515CONFIG_NET_SCH_INGRESS=m
516
517#
518# Classification
519#
520CONFIG_NET_CLS=y
521CONFIG_NET_CLS_BASIC=m
522CONFIG_NET_CLS_TCINDEX=m
523CONFIG_NET_CLS_ROUTE4=m
524CONFIG_NET_CLS_ROUTE=y
525CONFIG_NET_CLS_FW=m
526CONFIG_NET_CLS_U32=m
527# CONFIG_CLS_U32_PERF is not set
528# CONFIG_CLS_U32_MARK is not set
529CONFIG_NET_CLS_RSVP=m
530CONFIG_NET_CLS_RSVP6=m
531# CONFIG_NET_EMATCH is not set
532CONFIG_NET_CLS_ACT=y
533CONFIG_NET_ACT_POLICE=y
534CONFIG_NET_ACT_GACT=m
535CONFIG_GACT_PROB=y
536CONFIG_NET_ACT_MIRRED=m
537CONFIG_NET_ACT_IPT=m
538CONFIG_NET_ACT_PEDIT=m
539CONFIG_NET_ACT_SIMP=m
540CONFIG_NET_CLS_POLICE=y
541# CONFIG_NET_CLS_IND is not set
542
543#
544# Network testing
545#
546# CONFIG_NET_PKTGEN is not set
547# CONFIG_HAMRADIO is not set
548# CONFIG_IRDA is not set
549# CONFIG_BT is not set
550# CONFIG_AF_RXRPC is not set
551CONFIG_FIB_RULES=y
552
553#
554# Wireless
555#
556CONFIG_CFG80211=m
557CONFIG_WIRELESS_EXT=y
558CONFIG_MAC80211=m
559# CONFIG_MAC80211_DEBUG is not set
560CONFIG_IEEE80211=m
561# CONFIG_IEEE80211_DEBUG is not set
562CONFIG_IEEE80211_CRYPT_WEP=m
563CONFIG_IEEE80211_CRYPT_CCMP=m
564CONFIG_IEEE80211_CRYPT_TKIP=m
565CONFIG_IEEE80211_SOFTMAC=m
566# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
567CONFIG_RFKILL=m
568CONFIG_RFKILL_INPUT=m
569# CONFIG_NET_9P is not set
570
571#
572# Device Drivers
573#
574
575#
576# Generic Driver Options
577#
578CONFIG_STANDALONE=y
579CONFIG_PREVENT_FIRMWARE_BUILD=y
580# CONFIG_SYS_HYPERVISOR is not set
581CONFIG_CONNECTOR=m
582# CONFIG_MTD is not set
583# CONFIG_PARPORT is not set
584CONFIG_BLK_DEV=y
585# CONFIG_BLK_DEV_COW_COMMON is not set
586# CONFIG_BLK_DEV_LOOP is not set
587# CONFIG_BLK_DEV_NBD is not set
588# CONFIG_BLK_DEV_RAM is not set
589CONFIG_CDROM_PKTCDVD=m
590CONFIG_CDROM_PKTCDVD_BUFFERS=8
591# CONFIG_CDROM_PKTCDVD_WCACHE is not set
592CONFIG_ATA_OVER_ETH=m
593# CONFIG_MISC_DEVICES is not set
594# CONFIG_IDE is not set
595
596#
597# SCSI device support
598#
599CONFIG_RAID_ATTRS=m
600CONFIG_SCSI=y
601CONFIG_SCSI_DMA=y
602CONFIG_SCSI_TGT=m
603# CONFIG_SCSI_NETLINK is not set
604CONFIG_SCSI_PROC_FS=y
605
606#
607# SCSI support type (disk, tape, CD-ROM)
608#
609CONFIG_BLK_DEV_SD=y
610CONFIG_CHR_DEV_ST=y
611# CONFIG_CHR_DEV_OSST is not set
612CONFIG_BLK_DEV_SR=y
613# CONFIG_BLK_DEV_SR_VENDOR is not set
614# CONFIG_CHR_DEV_SG is not set
615CONFIG_CHR_DEV_SCH=m
616
617#
618# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
619#
620# CONFIG_SCSI_MULTI_LUN is not set
621CONFIG_SCSI_CONSTANTS=y
622# CONFIG_SCSI_LOGGING is not set
623CONFIG_SCSI_SCAN_ASYNC=y
624CONFIG_SCSI_WAIT_SCAN=m
625
626#
627# SCSI Transports
628#
629CONFIG_SCSI_SPI_ATTRS=m
630# CONFIG_SCSI_FC_ATTRS is not set
631CONFIG_SCSI_ISCSI_ATTRS=m
632# CONFIG_SCSI_SAS_LIBSAS is not set
633CONFIG_SCSI_LOWLEVEL=y
634CONFIG_ISCSI_TCP=m
635CONFIG_SGIWD93_SCSI=y
636# CONFIG_SCSI_DEBUG is not set
637# CONFIG_ATA is not set
638# CONFIG_MD is not set
639CONFIG_NETDEVICES=y
640# CONFIG_NETDEVICES_MULTIQUEUE is not set
641# CONFIG_IFB is not set
642CONFIG_DUMMY=m
643CONFIG_BONDING=m
644CONFIG_MACVLAN=m
645CONFIG_EQUALIZER=m
646CONFIG_TUN=m
647CONFIG_PHYLIB=m
648
649#
650# MII PHY device drivers
651#
652CONFIG_MARVELL_PHY=m
653CONFIG_DAVICOM_PHY=m
654CONFIG_QSEMI_PHY=m
655CONFIG_LXT_PHY=m
656CONFIG_CICADA_PHY=m
657# CONFIG_VITESSE_PHY is not set
658# CONFIG_SMSC_PHY is not set
659# CONFIG_BROADCOM_PHY is not set
660# CONFIG_ICPLUS_PHY is not set
661# CONFIG_FIXED_PHY is not set
662CONFIG_NET_ETHERNET=y
663# CONFIG_MII is not set
664# CONFIG_AX88796 is not set
665# CONFIG_DM9000 is not set
666CONFIG_SGISEEQ=y
667# CONFIG_NETDEV_1000 is not set
668# CONFIG_NETDEV_10000 is not set
669
670#
671# Wireless LAN
672#
673CONFIG_WLAN_PRE80211=y
674CONFIG_STRIP=m
675CONFIG_WLAN_80211=y
676# CONFIG_LIBERTAS is not set
677CONFIG_HOSTAP=m
678# CONFIG_HOSTAP_FIRMWARE is not set
679# CONFIG_WAN is not set
680# CONFIG_PPP is not set
681# CONFIG_SLIP is not set
682# CONFIG_SHAPER is not set
683# CONFIG_NETCONSOLE is not set
684# CONFIG_NETPOLL is not set
685# CONFIG_NET_POLL_CONTROLLER is not set
686# CONFIG_ISDN is not set
687# CONFIG_PHONE is not set
688
689#
690# Input device support
691#
692CONFIG_INPUT=y
693# CONFIG_INPUT_FF_MEMLESS is not set
694# CONFIG_INPUT_POLLDEV is not set
695
696#
697# Userland interfaces
698#
699CONFIG_INPUT_MOUSEDEV=m
700CONFIG_INPUT_MOUSEDEV_PSAUX=y
701CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
702CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
703# CONFIG_INPUT_JOYDEV is not set
704# CONFIG_INPUT_TSDEV is not set
705# CONFIG_INPUT_EVDEV is not set
706# CONFIG_INPUT_EVBUG is not set
707
708#
709# Input Device Drivers
710#
711CONFIG_INPUT_KEYBOARD=y
712CONFIG_KEYBOARD_ATKBD=y
713# CONFIG_KEYBOARD_SUNKBD is not set
714# CONFIG_KEYBOARD_LKKBD is not set
715# CONFIG_KEYBOARD_XTKBD is not set
716# CONFIG_KEYBOARD_NEWTON is not set
717# CONFIG_KEYBOARD_STOWAWAY is not set
718CONFIG_INPUT_MOUSE=y
719CONFIG_MOUSE_PS2=m
720# CONFIG_MOUSE_PS2_ALPS is not set
721CONFIG_MOUSE_PS2_LOGIPS2PP=y
722# CONFIG_MOUSE_PS2_SYNAPTICS is not set
723# CONFIG_MOUSE_PS2_LIFEBOOK is not set
724CONFIG_MOUSE_PS2_TRACKPOINT=y
725# CONFIG_MOUSE_PS2_TOUCHKIT is not set
726CONFIG_MOUSE_SERIAL=m
727# CONFIG_MOUSE_VSXXXAA is not set
728# CONFIG_INPUT_JOYSTICK is not set
729# CONFIG_INPUT_TABLET is not set
730# CONFIG_INPUT_TOUCHSCREEN is not set
731# CONFIG_INPUT_MISC is not set
732
733#
734# Hardware I/O ports
735#
736CONFIG_SERIO=y
737CONFIG_SERIO_I8042=y
738CONFIG_SERIO_SERPORT=y
739CONFIG_SERIO_LIBPS2=y
740CONFIG_SERIO_RAW=m
741# CONFIG_GAMEPORT is not set
742
743#
744# Character devices
745#
746CONFIG_VT=y
747CONFIG_VT_CONSOLE=y
748CONFIG_HW_CONSOLE=y
749CONFIG_VT_HW_CONSOLE_BINDING=y
750# CONFIG_SERIAL_NONSTANDARD is not set
751
752#
753# Serial drivers
754#
755# CONFIG_SERIAL_8250 is not set
756
757#
758# Non-8250 serial port support
759#
760CONFIG_SERIAL_IP22_ZILOG=m
761CONFIG_SERIAL_CORE=m
762CONFIG_UNIX98_PTYS=y
763CONFIG_LEGACY_PTYS=y
764CONFIG_LEGACY_PTY_COUNT=256
765# CONFIG_IPMI_HANDLER is not set
766CONFIG_WATCHDOG=y
767# CONFIG_WATCHDOG_NOWAYOUT is not set
768
769#
770# Watchdog Device Drivers
771#
772# CONFIG_SOFT_WATCHDOG is not set
773CONFIG_INDYDOG=m
774# CONFIG_HW_RANDOM is not set
775# CONFIG_RTC is not set
776CONFIG_SGI_DS1286=m
777# CONFIG_R3964 is not set
778CONFIG_RAW_DRIVER=m
779CONFIG_MAX_RAW_DEVS=256
780# CONFIG_TCG_TPM is not set
781# CONFIG_I2C is not set
782
783#
784# SPI support
785#
786# CONFIG_SPI is not set
787# CONFIG_SPI_MASTER is not set
788# CONFIG_W1 is not set
789# CONFIG_POWER_SUPPLY is not set
790# CONFIG_HWMON is not set
791
792#
793# Multifunction device drivers
794#
795# CONFIG_MFD_SM501 is not set
796
797#
798# Multimedia devices
799#
800# CONFIG_VIDEO_DEV is not set
801# CONFIG_DVB_CORE is not set
802# CONFIG_DAB is not set
803
804#
805# Graphics support
806#
807# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
808
809#
810# Display device support
811#
812# CONFIG_DISPLAY_SUPPORT is not set
813# CONFIG_VGASTATE is not set
814# CONFIG_VIDEO_OUTPUT_CONTROL is not set
815# CONFIG_FB is not set
816
817#
818# Console display driver support
819#
820# CONFIG_VGA_CONSOLE is not set
821CONFIG_SGI_NEWPORT_CONSOLE=y
822CONFIG_DUMMY_CONSOLE=y
823CONFIG_FONT_8x16=y
824CONFIG_LOGO=y
825# CONFIG_LOGO_LINUX_MONO is not set
826# CONFIG_LOGO_LINUX_VGA16 is not set
827# CONFIG_LOGO_LINUX_CLUT224 is not set
828CONFIG_LOGO_SGI_CLUT224=y
829
830#
831# Sound
832#
833# CONFIG_SOUND is not set
834CONFIG_HID_SUPPORT=y
835CONFIG_HID=y
836# CONFIG_HID_DEBUG is not set
837CONFIG_USB_SUPPORT=y
838# CONFIG_USB_ARCH_HAS_HCD is not set
839# CONFIG_USB_ARCH_HAS_OHCI is not set
840# CONFIG_USB_ARCH_HAS_EHCI is not set
841
842#
843# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
844#
845
846#
847# USB Gadget Support
848#
849# CONFIG_USB_GADGET is not set
850# CONFIG_MMC is not set
851# CONFIG_NEW_LEDS is not set
852# CONFIG_RTC_CLASS is not set
853
854#
855# DMA Engine support
856#
857# CONFIG_DMA_ENGINE is not set
858
859#
860# DMA Clients
861#
862
863#
864# DMA Devices
865#
866
867#
868# Userspace I/O
869#
870# CONFIG_UIO is not set
871
872#
873# File systems
874#
875CONFIG_EXT2_FS=m
876# CONFIG_EXT2_FS_XATTR is not set
877# CONFIG_EXT2_FS_XIP is not set
878CONFIG_EXT3_FS=y
879CONFIG_EXT3_FS_XATTR=y
880CONFIG_EXT3_FS_POSIX_ACL=y
881CONFIG_EXT3_FS_SECURITY=y
882# CONFIG_EXT4DEV_FS is not set
883CONFIG_JBD=y
884# CONFIG_JBD_DEBUG is not set
885CONFIG_FS_MBCACHE=y
886# CONFIG_REISERFS_FS is not set
887# CONFIG_JFS_FS is not set
888CONFIG_FS_POSIX_ACL=y
889CONFIG_XFS_FS=m
890CONFIG_XFS_QUOTA=y
891CONFIG_XFS_SECURITY=y
892# CONFIG_XFS_POSIX_ACL is not set
893# CONFIG_XFS_RT is not set
894# CONFIG_GFS2_FS is not set
895# CONFIG_OCFS2_FS is not set
896CONFIG_MINIX_FS=m
897# CONFIG_ROMFS_FS is not set
898CONFIG_INOTIFY=y
899CONFIG_INOTIFY_USER=y
900CONFIG_QUOTA=y
901# CONFIG_QFMT_V1 is not set
902CONFIG_QFMT_V2=m
903CONFIG_QUOTACTL=y
904CONFIG_DNOTIFY=y
905CONFIG_AUTOFS_FS=m
906CONFIG_AUTOFS4_FS=m
907CONFIG_FUSE_FS=m
908CONFIG_GENERIC_ACL=y
909
910#
911# CD-ROM/DVD Filesystems
912#
913CONFIG_ISO9660_FS=m
914CONFIG_JOLIET=y
915CONFIG_ZISOFS=y
916CONFIG_UDF_FS=m
917CONFIG_UDF_NLS=y
918
919#
920# DOS/FAT/NT Filesystems
921#
922CONFIG_FAT_FS=m
923CONFIG_MSDOS_FS=m
924CONFIG_VFAT_FS=m
925CONFIG_FAT_DEFAULT_CODEPAGE=437
926CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
927# CONFIG_NTFS_FS is not set
928
929#
930# Pseudo filesystems
931#
932CONFIG_PROC_FS=y
933CONFIG_PROC_KCORE=y
934CONFIG_PROC_SYSCTL=y
935CONFIG_SYSFS=y
936CONFIG_TMPFS=y
937CONFIG_TMPFS_POSIX_ACL=y
938# CONFIG_HUGETLB_PAGE is not set
939CONFIG_RAMFS=y
940CONFIG_CONFIGFS_FS=m
941
942#
943# Miscellaneous filesystems
944#
945# CONFIG_ADFS_FS is not set
946# CONFIG_AFFS_FS is not set
947# CONFIG_ECRYPT_FS is not set
948# CONFIG_HFS_FS is not set
949# CONFIG_HFSPLUS_FS is not set
950# CONFIG_BEFS_FS is not set
951# CONFIG_BFS_FS is not set
952CONFIG_EFS_FS=m
953# CONFIG_CRAMFS is not set
954# CONFIG_VXFS_FS is not set
955# CONFIG_HPFS_FS is not set
956# CONFIG_QNX4FS_FS is not set
957# CONFIG_SYSV_FS is not set
958CONFIG_UFS_FS=m
959# CONFIG_UFS_FS_WRITE is not set
960# CONFIG_UFS_DEBUG is not set
961
962#
963# Network File Systems
964#
965CONFIG_NFS_FS=m
966CONFIG_NFS_V3=y
967CONFIG_NFS_V3_ACL=y
968# CONFIG_NFS_V4 is not set
969# CONFIG_NFS_DIRECTIO is not set
970CONFIG_NFSD=m
971CONFIG_NFSD_V2_ACL=y
972CONFIG_NFSD_V3=y
973CONFIG_NFSD_V3_ACL=y
974# CONFIG_NFSD_V4 is not set
975CONFIG_NFSD_TCP=y
976CONFIG_LOCKD=m
977CONFIG_LOCKD_V4=y
978CONFIG_EXPORTFS=m
979CONFIG_NFS_ACL_SUPPORT=m
980CONFIG_NFS_COMMON=y
981CONFIG_SUNRPC=m
982CONFIG_SUNRPC_GSS=m
983# CONFIG_SUNRPC_BIND34 is not set
984CONFIG_RPCSEC_GSS_KRB5=m
985# CONFIG_RPCSEC_GSS_SPKM3 is not set
986CONFIG_SMB_FS=m
987CONFIG_SMB_NLS_DEFAULT=y
988CONFIG_SMB_NLS_REMOTE="cp437"
989CONFIG_CIFS=m
990# CONFIG_CIFS_STATS is not set
991# CONFIG_CIFS_WEAK_PW_HASH is not set
992# CONFIG_CIFS_XATTR is not set
993# CONFIG_CIFS_DEBUG2 is not set
994# CONFIG_CIFS_EXPERIMENTAL is not set
995# CONFIG_NCP_FS is not set
996CONFIG_CODA_FS=m
997# CONFIG_CODA_FS_OLD_API is not set
998# CONFIG_AFS_FS is not set
999
1000#
1001# Partition Types
1002#
1003CONFIG_PARTITION_ADVANCED=y
1004# CONFIG_ACORN_PARTITION is not set
1005# CONFIG_OSF_PARTITION is not set
1006# CONFIG_AMIGA_PARTITION is not set
1007# CONFIG_ATARI_PARTITION is not set
1008# CONFIG_MAC_PARTITION is not set
1009CONFIG_MSDOS_PARTITION=y
1010# CONFIG_BSD_DISKLABEL is not set
1011# CONFIG_MINIX_SUBPARTITION is not set
1012# CONFIG_SOLARIS_X86_PARTITION is not set
1013# CONFIG_UNIXWARE_DISKLABEL is not set
1014# CONFIG_LDM_PARTITION is not set
1015CONFIG_SGI_PARTITION=y
1016# CONFIG_ULTRIX_PARTITION is not set
1017# CONFIG_SUN_PARTITION is not set
1018# CONFIG_KARMA_PARTITION is not set
1019# CONFIG_EFI_PARTITION is not set
1020# CONFIG_SYSV68_PARTITION is not set
1021
1022#
1023# Native Language Support
1024#
1025CONFIG_NLS=m
1026CONFIG_NLS_DEFAULT="iso8859-1"
1027CONFIG_NLS_CODEPAGE_437=m
1028CONFIG_NLS_CODEPAGE_737=m
1029CONFIG_NLS_CODEPAGE_775=m
1030CONFIG_NLS_CODEPAGE_850=m
1031CONFIG_NLS_CODEPAGE_852=m
1032CONFIG_NLS_CODEPAGE_855=m
1033CONFIG_NLS_CODEPAGE_857=m
1034CONFIG_NLS_CODEPAGE_860=m
1035CONFIG_NLS_CODEPAGE_861=m
1036CONFIG_NLS_CODEPAGE_862=m
1037CONFIG_NLS_CODEPAGE_863=m
1038CONFIG_NLS_CODEPAGE_864=m
1039CONFIG_NLS_CODEPAGE_865=m
1040CONFIG_NLS_CODEPAGE_866=m
1041CONFIG_NLS_CODEPAGE_869=m
1042CONFIG_NLS_CODEPAGE_936=m
1043CONFIG_NLS_CODEPAGE_950=m
1044CONFIG_NLS_CODEPAGE_932=m
1045CONFIG_NLS_CODEPAGE_949=m
1046CONFIG_NLS_CODEPAGE_874=m
1047CONFIG_NLS_ISO8859_8=m
1048CONFIG_NLS_CODEPAGE_1250=m
1049CONFIG_NLS_CODEPAGE_1251=m
1050CONFIG_NLS_ASCII=m
1051CONFIG_NLS_ISO8859_1=m
1052CONFIG_NLS_ISO8859_2=m
1053CONFIG_NLS_ISO8859_3=m
1054CONFIG_NLS_ISO8859_4=m
1055CONFIG_NLS_ISO8859_5=m
1056CONFIG_NLS_ISO8859_6=m
1057CONFIG_NLS_ISO8859_7=m
1058CONFIG_NLS_ISO8859_9=m
1059CONFIG_NLS_ISO8859_13=m
1060CONFIG_NLS_ISO8859_14=m
1061CONFIG_NLS_ISO8859_15=m
1062CONFIG_NLS_KOI8_R=m
1063CONFIG_NLS_KOI8_U=m
1064CONFIG_NLS_UTF8=m
1065
1066#
1067# Distributed Lock Manager
1068#
1069CONFIG_DLM=m
1070# CONFIG_DLM_DEBUG is not set
1071
1072#
1073# Profiling support
1074#
1075# CONFIG_PROFILING is not set
1076
1077#
1078# Kernel hacking
1079#
1080CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1081# CONFIG_PRINTK_TIME is not set
1082CONFIG_ENABLE_MUST_CHECK=y
1083# CONFIG_MAGIC_SYSRQ is not set
1084# CONFIG_UNUSED_SYMBOLS is not set
1085# CONFIG_DEBUG_FS is not set
1086# CONFIG_HEADERS_CHECK is not set
1087# CONFIG_DEBUG_KERNEL is not set
1088CONFIG_CROSSCOMPILE=y
1089CONFIG_CMDLINE=""
1090
1091#
1092# Security options
1093#
1094CONFIG_KEYS=y
1095CONFIG_KEYS_DEBUG_PROC_KEYS=y
1096# CONFIG_SECURITY is not set
1097CONFIG_CRYPTO=y
1098CONFIG_CRYPTO_ALGAPI=y
1099CONFIG_CRYPTO_ABLKCIPHER=m
1100CONFIG_CRYPTO_BLKCIPHER=m
1101CONFIG_CRYPTO_HASH=y
1102CONFIG_CRYPTO_MANAGER=y
1103CONFIG_CRYPTO_HMAC=y
1104CONFIG_CRYPTO_XCBC=m
1105CONFIG_CRYPTO_NULL=m
1106CONFIG_CRYPTO_MD4=m
1107CONFIG_CRYPTO_MD5=y
1108CONFIG_CRYPTO_SHA1=m
1109CONFIG_CRYPTO_SHA256=m
1110CONFIG_CRYPTO_SHA512=m
1111CONFIG_CRYPTO_WP512=m
1112CONFIG_CRYPTO_TGR192=m
1113CONFIG_CRYPTO_GF128MUL=m
1114CONFIG_CRYPTO_ECB=m
1115CONFIG_CRYPTO_CBC=m
1116CONFIG_CRYPTO_PCBC=m
1117CONFIG_CRYPTO_LRW=m
1118CONFIG_CRYPTO_CRYPTD=m
1119CONFIG_CRYPTO_DES=m
1120CONFIG_CRYPTO_FCRYPT=m
1121CONFIG_CRYPTO_BLOWFISH=m
1122CONFIG_CRYPTO_TWOFISH=m
1123CONFIG_CRYPTO_TWOFISH_COMMON=m
1124CONFIG_CRYPTO_SERPENT=m
1125CONFIG_CRYPTO_AES=m
1126CONFIG_CRYPTO_CAST5=m
1127CONFIG_CRYPTO_CAST6=m
1128CONFIG_CRYPTO_TEA=m
1129CONFIG_CRYPTO_ARC4=m
1130CONFIG_CRYPTO_KHAZAD=m
1131CONFIG_CRYPTO_ANUBIS=m
1132CONFIG_CRYPTO_DEFLATE=m
1133CONFIG_CRYPTO_MICHAEL_MIC=m
1134CONFIG_CRYPTO_CRC32C=m
1135CONFIG_CRYPTO_CAMELLIA=m
1136# CONFIG_CRYPTO_TEST is not set
1137# CONFIG_CRYPTO_HW is not set
1138
1139#
1140# Library routines
1141#
1142CONFIG_BITREVERSE=m
1143# CONFIG_CRC_CCITT is not set
1144CONFIG_CRC16=m
1145# CONFIG_CRC_ITU_T is not set
1146CONFIG_CRC32=m
1147# CONFIG_CRC7 is not set
1148CONFIG_LIBCRC32C=m
1149CONFIG_ZLIB_INFLATE=m
1150CONFIG_ZLIB_DEFLATE=m
1151CONFIG_TEXTSEARCH=y
1152CONFIG_TEXTSEARCH_KMP=m
1153CONFIG_TEXTSEARCH_BM=m
1154CONFIG_TEXTSEARCH_FSM=m
1155CONFIG_PLIST=y
1156CONFIG_HAS_IOMEM=y
1157CONFIG_HAS_IOPORT=y
1158CONFIG_HAS_DMA=y
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile
index ffa08362de17..9e78e1a4ca17 100644
--- a/arch/mips/kernel/Makefile
+++ b/arch/mips/kernel/Makefile
@@ -76,7 +76,6 @@ obj-$(CONFIG_PROC_FS) += proc.o
76obj-$(CONFIG_64BIT) += cpu-bugs64.o 76obj-$(CONFIG_64BIT) += cpu-bugs64.o
77 77
78obj-$(CONFIG_I8253) += i8253.o 78obj-$(CONFIG_I8253) += i8253.o
79obj-$(CONFIG_PCSPEAKER) += pcspeaker.o
80 79
81obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o 80obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o
82obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 81obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
diff --git a/arch/mips/kernel/cpu-bugs64.c b/arch/mips/kernel/cpu-bugs64.c
index 417bb3e336ac..a1b48af0992f 100644
--- a/arch/mips/kernel/cpu-bugs64.c
+++ b/arch/mips/kernel/cpu-bugs64.c
@@ -167,7 +167,7 @@ static inline void check_mult_sh(void)
167 panic(bug64hit, !R4000_WAR ? r4kwar : nowar); 167 panic(bug64hit, !R4000_WAR ? r4kwar : nowar);
168} 168}
169 169
170static volatile int daddi_ov __initdata = 0; 170static volatile int daddi_ov __cpuinitdata = 0;
171 171
172asmlinkage void __init do_daddi_ov(struct pt_regs *regs) 172asmlinkage void __init do_daddi_ov(struct pt_regs *regs)
173{ 173{
@@ -239,7 +239,7 @@ static inline void check_daddi(void)
239 panic(bug64hit, !DADDI_WAR ? daddiwar : nowar); 239 panic(bug64hit, !DADDI_WAR ? daddiwar : nowar);
240} 240}
241 241
242int daddiu_bug __initdata = -1; 242int daddiu_bug __cpuinitdata = -1;
243 243
244static inline void check_daddiu(void) 244static inline void check_daddiu(void)
245{ 245{
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index 5861a432a52f..89c3304cb93c 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -550,7 +550,7 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c)
550 } 550 }
551} 551}
552 552
553static char unknown_isa[] __initdata = KERN_ERR \ 553static char unknown_isa[] __cpuinitdata = KERN_ERR \
554 "Unsupported ISA type, c0.config0: %d."; 554 "Unsupported ISA type, c0.config0: %d.";
555 555
556static inline unsigned int decode_config0(struct cpuinfo_mips *c) 556static inline unsigned int decode_config0(struct cpuinfo_mips *c)
@@ -656,7 +656,7 @@ static inline unsigned int decode_config3(struct cpuinfo_mips *c)
656 return config3 & MIPS_CONF_M; 656 return config3 & MIPS_CONF_M;
657} 657}
658 658
659static void __init decode_configs(struct cpuinfo_mips *c) 659static void __cpuinit decode_configs(struct cpuinfo_mips *c)
660{ 660{
661 /* MIPS32 or MIPS64 compliant CPU. */ 661 /* MIPS32 or MIPS64 compliant CPU. */
662 c->options = MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER | 662 c->options = MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER |
@@ -814,7 +814,7 @@ const char *__cpu_name[NR_CPUS];
814/* 814/*
815 * Name a CPU 815 * Name a CPU
816 */ 816 */
817static __init const char *cpu_to_name(struct cpuinfo_mips *c) 817static __cpuinit const char *cpu_to_name(struct cpuinfo_mips *c)
818{ 818{
819 const char *name = NULL; 819 const char *name = NULL;
820 820
@@ -896,7 +896,7 @@ static __init const char *cpu_to_name(struct cpuinfo_mips *c)
896 return name; 896 return name;
897} 897}
898 898
899__init void cpu_probe(void) 899__cpuinit void cpu_probe(void)
900{ 900{
901 struct cpuinfo_mips *c = &current_cpu_data; 901 struct cpuinfo_mips *c = &current_cpu_data;
902 unsigned int cpu = smp_processor_id(); 902 unsigned int cpu = smp_processor_id();
@@ -959,7 +959,7 @@ __init void cpu_probe(void)
959 c->srsets = 1; 959 c->srsets = 1;
960} 960}
961 961
962__init void cpu_report(void) 962__cpuinit void cpu_report(void)
963{ 963{
964 struct cpuinfo_mips *c = &current_cpu_data; 964 struct cpuinfo_mips *c = &current_cpu_data;
965 965
diff --git a/arch/mips/kernel/csrc-r4k.c b/arch/mips/kernel/csrc-r4k.c
index 0e2b5cd81f67..86e026f067bc 100644
--- a/arch/mips/kernel/csrc-r4k.c
+++ b/arch/mips/kernel/csrc-r4k.c
@@ -22,12 +22,17 @@ static struct clocksource clocksource_mips = {
22 .flags = CLOCK_SOURCE_IS_CONTINUOUS, 22 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
23}; 23};
24 24
25void __init init_mips_clocksource(void) 25int __init init_mips_clocksource(void)
26{ 26{
27 if (!cpu_has_counter || !mips_hpt_frequency)
28 return -ENXIO;
29
27 /* Calclate a somewhat reasonable rating value */ 30 /* Calclate a somewhat reasonable rating value */
28 clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000; 31 clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000;
29 32
30 clocksource_set_clock(&clocksource_mips, mips_hpt_frequency); 33 clocksource_set_clock(&clocksource_mips, mips_hpt_frequency);
31 34
32 clocksource_register(&clocksource_mips); 35 clocksource_register(&clocksource_mips);
36
37 return 0;
33} 38}
diff --git a/arch/mips/kernel/head.S b/arch/mips/kernel/head.S
index a24fb7900901..361364501d34 100644
--- a/arch/mips/kernel/head.S
+++ b/arch/mips/kernel/head.S
@@ -195,7 +195,7 @@ NESTED(kernel_entry, 16, sp) # kernel entry point
195 j start_kernel 195 j start_kernel
196 END(kernel_entry) 196 END(kernel_entry)
197 197
198 __INIT 198 __CPUINIT
199 199
200#ifdef CONFIG_SMP 200#ifdef CONFIG_SMP
201/* 201/*
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index fcae66752972..984c0d0a7b4d 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -534,8 +534,7 @@ static int simulate_llsc(struct pt_regs *regs, unsigned int opcode)
534 534
535/* 535/*
536 * Simulate trapping 'rdhwr' instructions to provide user accessible 536 * Simulate trapping 'rdhwr' instructions to provide user accessible
537 * registers not implemented in hardware. The only current use of this 537 * registers not implemented in hardware.
538 * is the thread area pointer.
539 */ 538 */
540static int simulate_rdhwr(struct pt_regs *regs, unsigned int opcode) 539static int simulate_rdhwr(struct pt_regs *regs, unsigned int opcode)
541{ 540{
@@ -545,11 +544,31 @@ static int simulate_rdhwr(struct pt_regs *regs, unsigned int opcode)
545 int rd = (opcode & RD) >> 11; 544 int rd = (opcode & RD) >> 11;
546 int rt = (opcode & RT) >> 16; 545 int rt = (opcode & RT) >> 16;
547 switch (rd) { 546 switch (rd) {
548 case 29: 547 case 0: /* CPU number */
549 regs->regs[rt] = ti->tp_value; 548 regs->regs[rt] = smp_processor_id();
550 return 0; 549 return 0;
550 case 1: /* SYNCI length */
551 regs->regs[rt] = min(current_cpu_data.dcache.linesz,
552 current_cpu_data.icache.linesz);
553 return 0;
554 case 2: /* Read count register */
555 regs->regs[rt] = read_c0_count();
556 return 0;
557 case 3: /* Count register resolution */
558 switch (current_cpu_data.cputype) {
559 case CPU_20KC:
560 case CPU_25KF:
561 regs->regs[rt] = 1;
562 break;
551 default: 563 default:
552 return -1; 564 regs->regs[rt] = 2;
565 }
566 return 0;
567 case 29:
568 regs->regs[rt] = ti->tp_value;
569 return 0;
570 default:
571 return -1;
553 } 572 }
554 } 573 }
555 574
@@ -1287,7 +1306,7 @@ int cp0_compare_irq;
1287int cp0_perfcount_irq; 1306int cp0_perfcount_irq;
1288EXPORT_SYMBOL_GPL(cp0_perfcount_irq); 1307EXPORT_SYMBOL_GPL(cp0_perfcount_irq);
1289 1308
1290void __init per_cpu_trap_init(void) 1309void __cpuinit per_cpu_trap_init(void)
1291{ 1310{
1292 unsigned int cpu = smp_processor_id(); 1311 unsigned int cpu = smp_processor_id();
1293 unsigned int status_set = ST0_CU0; 1312 unsigned int status_set = ST0_CU0;
@@ -1404,11 +1423,12 @@ void __init set_handler(unsigned long offset, void *addr, unsigned long size)
1404 flush_icache_range(ebase + offset, ebase + offset + size); 1423 flush_icache_range(ebase + offset, ebase + offset + size);
1405} 1424}
1406 1425
1407static char panic_null_cerr[] __initdata = 1426static char panic_null_cerr[] __cpuinitdata =
1408 "Trying to set NULL cache error exception handler"; 1427 "Trying to set NULL cache error exception handler";
1409 1428
1410/* Install uncached CPU exception handler */ 1429/* Install uncached CPU exception handler */
1411void __init set_uncached_handler(unsigned long offset, void *addr, unsigned long size) 1430void __cpuinit set_uncached_handler(unsigned long offset, void *addr,
1431 unsigned long size)
1412{ 1432{
1413#ifdef CONFIG_32BIT 1433#ifdef CONFIG_32BIT
1414 unsigned long uncached_ebase = KSEG1ADDR(ebase); 1434 unsigned long uncached_ebase = KSEG1ADDR(ebase);
diff --git a/arch/mips/lib/ucmpdi2.c b/arch/mips/lib/ucmpdi2.c
index b33d8569bcb0..bb4cb2f828ea 100644
--- a/arch/mips/lib/ucmpdi2.c
+++ b/arch/mips/lib/ucmpdi2.c
@@ -17,3 +17,5 @@ word_type __ucmpdi2(unsigned long long a, unsigned long long b)
17 return 2; 17 return 2;
18 return 1; 18 return 1;
19} 19}
20
21EXPORT_SYMBOL(__ucmpdi2);
diff --git a/arch/mips/lib/uncached.c b/arch/mips/lib/uncached.c
index 27b012d4341c..a6d1c77034d5 100644
--- a/arch/mips/lib/uncached.c
+++ b/arch/mips/lib/uncached.c
@@ -36,7 +36,7 @@
36 * values, so we can avoid sharing the same stack area between a cached 36 * values, so we can avoid sharing the same stack area between a cached
37 * and the uncached mode. 37 * and the uncached mode.
38 */ 38 */
39unsigned long __init run_uncached(void *func) 39unsigned long __cpuinit run_uncached(void *func)
40{ 40{
41 register long sp __asm__("$sp"); 41 register long sp __asm__("$sp");
42 register long ret __asm__("$2"); 42 register long ret __asm__("$2");
diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c
index f02ce6308e51..b50e0fc406ac 100644
--- a/arch/mips/mips-boards/generic/time.c
+++ b/arch/mips/mips-boards/generic/time.c
@@ -146,7 +146,7 @@ void __init plat_perf_setup(void)
146 } 146 }
147} 147}
148 148
149unsigned int __init get_c0_compare_int(void) 149unsigned int __cpuinit get_c0_compare_int(void)
150{ 150{
151#ifdef MSC01E_INT_BASE 151#ifdef MSC01E_INT_BASE
152 if (cpu_has_veic) { 152 if (cpu_has_veic) {
diff --git a/arch/mips/mipssim/sim_time.c b/arch/mips/mipssim/sim_time.c
index e39bbe989da3..881ecbc1fa23 100644
--- a/arch/mips/mipssim/sim_time.c
+++ b/arch/mips/mipssim/sim_time.c
@@ -83,7 +83,7 @@ static void mips_timer_dispatch(void)
83} 83}
84 84
85 85
86unsigned __init get_c0_compare_int(void) 86unsigned __cpuinit get_c0_compare_int(void)
87{ 87{
88#ifdef MSC01E_INT_BASE 88#ifdef MSC01E_INT_BASE
89 if (cpu_has_veic) { 89 if (cpu_has_veic) {
diff --git a/arch/mips/mm/c-r3k.c b/arch/mips/mm/c-r3k.c
index 562abb77d1d5..76935e320214 100644
--- a/arch/mips/mm/c-r3k.c
+++ b/arch/mips/mm/c-r3k.c
@@ -307,7 +307,7 @@ static void r3k_dma_cache_wback_inv(unsigned long start, unsigned long size)
307 r3k_flush_dcache_range(start, start + size); 307 r3k_flush_dcache_range(start, start + size);
308} 308}
309 309
310void __init r3k_cache_init(void) 310void __cpuinit r3k_cache_init(void)
311{ 311{
312 extern void build_clear_page(void); 312 extern void build_clear_page(void);
313 extern void build_copy_page(void); 313 extern void build_copy_page(void);
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c
index 2c4f7e11f0d5..6496925b5e29 100644
--- a/arch/mips/mm/c-r4k.c
+++ b/arch/mips/mm/c-r4k.c
@@ -93,7 +93,7 @@ static inline void r4k_blast_dcache_page_dc32(unsigned long addr)
93 blast_dcache32_page(addr); 93 blast_dcache32_page(addr);
94} 94}
95 95
96static void __init r4k_blast_dcache_page_setup(void) 96static void __cpuinit r4k_blast_dcache_page_setup(void)
97{ 97{
98 unsigned long dc_lsize = cpu_dcache_line_size(); 98 unsigned long dc_lsize = cpu_dcache_line_size();
99 99
@@ -107,7 +107,7 @@ static void __init r4k_blast_dcache_page_setup(void)
107 107
108static void (* r4k_blast_dcache_page_indexed)(unsigned long addr); 108static void (* r4k_blast_dcache_page_indexed)(unsigned long addr);
109 109
110static void __init r4k_blast_dcache_page_indexed_setup(void) 110static void __cpuinit r4k_blast_dcache_page_indexed_setup(void)
111{ 111{
112 unsigned long dc_lsize = cpu_dcache_line_size(); 112 unsigned long dc_lsize = cpu_dcache_line_size();
113 113
@@ -121,7 +121,7 @@ static void __init r4k_blast_dcache_page_indexed_setup(void)
121 121
122static void (* r4k_blast_dcache)(void); 122static void (* r4k_blast_dcache)(void);
123 123
124static void __init r4k_blast_dcache_setup(void) 124static void __cpuinit r4k_blast_dcache_setup(void)
125{ 125{
126 unsigned long dc_lsize = cpu_dcache_line_size(); 126 unsigned long dc_lsize = cpu_dcache_line_size();
127 127
@@ -206,7 +206,7 @@ static inline void tx49_blast_icache32_page_indexed(unsigned long page)
206 206
207static void (* r4k_blast_icache_page)(unsigned long addr); 207static void (* r4k_blast_icache_page)(unsigned long addr);
208 208
209static void __init r4k_blast_icache_page_setup(void) 209static void __cpuinit r4k_blast_icache_page_setup(void)
210{ 210{
211 unsigned long ic_lsize = cpu_icache_line_size(); 211 unsigned long ic_lsize = cpu_icache_line_size();
212 212
@@ -223,7 +223,7 @@ static void __init r4k_blast_icache_page_setup(void)
223 223
224static void (* r4k_blast_icache_page_indexed)(unsigned long addr); 224static void (* r4k_blast_icache_page_indexed)(unsigned long addr);
225 225
226static void __init r4k_blast_icache_page_indexed_setup(void) 226static void __cpuinit r4k_blast_icache_page_indexed_setup(void)
227{ 227{
228 unsigned long ic_lsize = cpu_icache_line_size(); 228 unsigned long ic_lsize = cpu_icache_line_size();
229 229
@@ -247,7 +247,7 @@ static void __init r4k_blast_icache_page_indexed_setup(void)
247 247
248static void (* r4k_blast_icache)(void); 248static void (* r4k_blast_icache)(void);
249 249
250static void __init r4k_blast_icache_setup(void) 250static void __cpuinit r4k_blast_icache_setup(void)
251{ 251{
252 unsigned long ic_lsize = cpu_icache_line_size(); 252 unsigned long ic_lsize = cpu_icache_line_size();
253 253
@@ -268,7 +268,7 @@ static void __init r4k_blast_icache_setup(void)
268 268
269static void (* r4k_blast_scache_page)(unsigned long addr); 269static void (* r4k_blast_scache_page)(unsigned long addr);
270 270
271static void __init r4k_blast_scache_page_setup(void) 271static void __cpuinit r4k_blast_scache_page_setup(void)
272{ 272{
273 unsigned long sc_lsize = cpu_scache_line_size(); 273 unsigned long sc_lsize = cpu_scache_line_size();
274 274
@@ -286,7 +286,7 @@ static void __init r4k_blast_scache_page_setup(void)
286 286
287static void (* r4k_blast_scache_page_indexed)(unsigned long addr); 287static void (* r4k_blast_scache_page_indexed)(unsigned long addr);
288 288
289static void __init r4k_blast_scache_page_indexed_setup(void) 289static void __cpuinit r4k_blast_scache_page_indexed_setup(void)
290{ 290{
291 unsigned long sc_lsize = cpu_scache_line_size(); 291 unsigned long sc_lsize = cpu_scache_line_size();
292 292
@@ -304,7 +304,7 @@ static void __init r4k_blast_scache_page_indexed_setup(void)
304 304
305static void (* r4k_blast_scache)(void); 305static void (* r4k_blast_scache)(void);
306 306
307static void __init r4k_blast_scache_setup(void) 307static void __cpuinit r4k_blast_scache_setup(void)
308{ 308{
309 unsigned long sc_lsize = cpu_scache_line_size(); 309 unsigned long sc_lsize = cpu_scache_line_size();
310 310
@@ -691,11 +691,11 @@ static inline void rm7k_erratum31(void)
691 } 691 }
692} 692}
693 693
694static char *way_string[] __initdata = { NULL, "direct mapped", "2-way", 694static char *way_string[] __cpuinitdata = { NULL, "direct mapped", "2-way",
695 "3-way", "4-way", "5-way", "6-way", "7-way", "8-way" 695 "3-way", "4-way", "5-way", "6-way", "7-way", "8-way"
696}; 696};
697 697
698static void __init probe_pcache(void) 698static void __cpuinit probe_pcache(void)
699{ 699{
700 struct cpuinfo_mips *c = &current_cpu_data; 700 struct cpuinfo_mips *c = &current_cpu_data;
701 unsigned int config = read_c0_config(); 701 unsigned int config = read_c0_config();
@@ -1016,7 +1016,7 @@ static void __init probe_pcache(void)
1016 * executes in KSEG1 space or else you will crash and burn badly. You have 1016 * executes in KSEG1 space or else you will crash and burn badly. You have
1017 * been warned. 1017 * been warned.
1018 */ 1018 */
1019static int __init probe_scache(void) 1019static int __cpuinit probe_scache(void)
1020{ 1020{
1021 unsigned long flags, addr, begin, end, pow2; 1021 unsigned long flags, addr, begin, end, pow2;
1022 unsigned int config = read_c0_config(); 1022 unsigned int config = read_c0_config();
@@ -1095,7 +1095,7 @@ extern int r5k_sc_init(void);
1095extern int rm7k_sc_init(void); 1095extern int rm7k_sc_init(void);
1096extern int mips_sc_init(void); 1096extern int mips_sc_init(void);
1097 1097
1098static void __init setup_scache(void) 1098static void __cpuinit setup_scache(void)
1099{ 1099{
1100 struct cpuinfo_mips *c = &current_cpu_data; 1100 struct cpuinfo_mips *c = &current_cpu_data;
1101 unsigned int config = read_c0_config(); 1101 unsigned int config = read_c0_config();
@@ -1206,7 +1206,7 @@ void au1x00_fixup_config_od(void)
1206 } 1206 }
1207} 1207}
1208 1208
1209static void __init coherency_setup(void) 1209static void __cpuinit coherency_setup(void)
1210{ 1210{
1211 change_c0_config(CONF_CM_CMASK, CONF_CM_DEFAULT); 1211 change_c0_config(CONF_CM_CMASK, CONF_CM_DEFAULT);
1212 1212
@@ -1238,7 +1238,7 @@ static void __init coherency_setup(void)
1238 } 1238 }
1239} 1239}
1240 1240
1241void __init r4k_cache_init(void) 1241void __cpuinit r4k_cache_init(void)
1242{ 1242{
1243 extern void build_clear_page(void); 1243 extern void build_clear_page(void);
1244 extern void build_copy_page(void); 1244 extern void build_copy_page(void);
diff --git a/arch/mips/mm/c-tx39.c b/arch/mips/mm/c-tx39.c
index 9ea121e8cdce..b09d56981d53 100644
--- a/arch/mips/mm/c-tx39.c
+++ b/arch/mips/mm/c-tx39.c
@@ -329,7 +329,7 @@ static __init void tx39_probe_cache(void)
329 } 329 }
330} 330}
331 331
332void __init tx39_cache_init(void) 332void __cpuinit tx39_cache_init(void)
333{ 333{
334 extern void build_clear_page(void); 334 extern void build_clear_page(void);
335 extern void build_copy_page(void); 335 extern void build_copy_page(void);
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
index 6a24651971df..51ab1faa027d 100644
--- a/arch/mips/mm/cache.c
+++ b/arch/mips/mm/cache.c
@@ -127,9 +127,10 @@ void __update_cache(struct vm_area_struct *vma, unsigned long address,
127 } 127 }
128} 128}
129 129
130static char cache_panic[] __initdata = "Yeee, unsupported cache architecture."; 130static char cache_panic[] __cpuinitdata =
131 "Yeee, unsupported cache architecture.";
131 132
132void __init cpu_cache_init(void) 133void __devinit cpu_cache_init(void)
133{ 134{
134 if (cpu_has_3k_cache) { 135 if (cpu_has_3k_cache) {
135 extern void __weak r3k_cache_init(void); 136 extern void __weak r3k_cache_init(void);
diff --git a/arch/mips/mm/cex-sb1.S b/arch/mips/mm/cex-sb1.S
index e54a62f2807c..2d08268bb705 100644
--- a/arch/mips/mm/cex-sb1.S
+++ b/arch/mips/mm/cex-sb1.S
@@ -34,8 +34,6 @@
34 * is changed. 34 * is changed.
35 */ 35 */
36 36
37 __INIT
38
39 .set mips64 37 .set mips64
40 .set noreorder 38 .set noreorder
41 .set noat 39 .set noat
@@ -51,6 +49,8 @@
51 * (0x170-0x17f) are used to preserve k0, k1, and ra. 49 * (0x170-0x17f) are used to preserve k0, k1, and ra.
52 */ 50 */
53 51
52 __CPUINIT
53
54LEAF(except_vec2_sb1) 54LEAF(except_vec2_sb1)
55 /* 55 /*
56 * If this error is recoverable, we need to exit the handler 56 * If this error is recoverable, we need to exit the handler
diff --git a/arch/mips/mm/pg-r4k.c b/arch/mips/mm/pg-r4k.c
index 9185fbf37c0d..455dedb5b39e 100644
--- a/arch/mips/mm/pg-r4k.c
+++ b/arch/mips/mm/pg-r4k.c
@@ -66,21 +66,21 @@ EXPORT_SYMBOL(copy_page);
66 * with 64-bit kernels. The prefetch offsets have been experimentally tuned 66 * with 64-bit kernels. The prefetch offsets have been experimentally tuned
67 * an Origin 200. 67 * an Origin 200.
68 */ 68 */
69static int pref_offset_clear __initdata = 512; 69static int pref_offset_clear __cpuinitdata = 512;
70static int pref_offset_copy __initdata = 256; 70static int pref_offset_copy __cpuinitdata = 256;
71 71
72static unsigned int pref_src_mode __initdata; 72static unsigned int pref_src_mode __cpuinitdata;
73static unsigned int pref_dst_mode __initdata; 73static unsigned int pref_dst_mode __cpuinitdata;
74 74
75static int load_offset __initdata; 75static int load_offset __cpuinitdata;
76static int store_offset __initdata; 76static int store_offset __cpuinitdata;
77 77
78static unsigned int __initdata *dest, *epc; 78static unsigned int __cpuinitdata *dest, *epc;
79 79
80static unsigned int instruction_pending; 80static unsigned int instruction_pending;
81static union mips_instruction delayed_mi; 81static union mips_instruction delayed_mi;
82 82
83static void __init emit_instruction(union mips_instruction mi) 83static void __cpuinit emit_instruction(union mips_instruction mi)
84{ 84{
85 if (instruction_pending) 85 if (instruction_pending)
86 *epc++ = delayed_mi.word; 86 *epc++ = delayed_mi.word;
@@ -222,7 +222,7 @@ static inline void build_cdex_p(void)
222 emit_instruction(mi); 222 emit_instruction(mi);
223} 223}
224 224
225static void __init __build_store_reg(int reg) 225static void __cpuinit __build_store_reg(int reg)
226{ 226{
227 union mips_instruction mi; 227 union mips_instruction mi;
228 unsigned int width; 228 unsigned int width;
@@ -339,7 +339,7 @@ static inline void build_jr_ra(void)
339 flush_delay_slot_or_nop(); 339 flush_delay_slot_or_nop();
340} 340}
341 341
342void __init build_clear_page(void) 342void __cpuinit build_clear_page(void)
343{ 343{
344 unsigned int loop_start; 344 unsigned int loop_start;
345 unsigned long off; 345 unsigned long off;
@@ -442,7 +442,7 @@ dest = label();
442 pr_debug("\t.set pop\n"); 442 pr_debug("\t.set pop\n");
443} 443}
444 444
445void __init build_copy_page(void) 445void __cpuinit build_copy_page(void)
446{ 446{
447 unsigned int loop_start; 447 unsigned int loop_start;
448 unsigned long off; 448 unsigned long off;
diff --git a/arch/mips/mm/pg-sb1.c b/arch/mips/mm/pg-sb1.c
index 89925ec57d6a..49e289d05414 100644
--- a/arch/mips/mm/pg-sb1.c
+++ b/arch/mips/mm/pg-sb1.c
@@ -293,10 +293,10 @@ void copy_page(void *to, void *from)
293EXPORT_SYMBOL(clear_page); 293EXPORT_SYMBOL(clear_page);
294EXPORT_SYMBOL(copy_page); 294EXPORT_SYMBOL(copy_page);
295 295
296void __init build_clear_page(void) 296void __cpuinit build_clear_page(void)
297{ 297{
298} 298}
299 299
300void __init build_copy_page(void) 300void __cpuinit build_copy_page(void)
301{ 301{
302} 302}
diff --git a/arch/mips/mm/sc-ip22.c b/arch/mips/mm/sc-ip22.c
index d236cf8b7374..1f602a110e10 100644
--- a/arch/mips/mm/sc-ip22.c
+++ b/arch/mips/mm/sc-ip22.c
@@ -168,7 +168,7 @@ struct bcache_ops indy_sc_ops = {
168 .bc_inv = indy_sc_wback_invalidate 168 .bc_inv = indy_sc_wback_invalidate
169}; 169};
170 170
171void __init indy_sc_init(void) 171void __cpuinit indy_sc_init(void)
172{ 172{
173 if (indy_sc_probe()) { 173 if (indy_sc_probe()) {
174 indy_sc_enable(); 174 indy_sc_enable();
diff --git a/arch/mips/mm/sc-mips.c b/arch/mips/mm/sc-mips.c
index c13170bc675c..b55c2d1b998f 100644
--- a/arch/mips/mm/sc-mips.c
+++ b/arch/mips/mm/sc-mips.c
@@ -100,7 +100,7 @@ static inline int __init mips_sc_probe(void)
100 return 1; 100 return 1;
101} 101}
102 102
103int __init mips_sc_init(void) 103int __cpuinit mips_sc_init(void)
104{ 104{
105 int found = mips_sc_probe(); 105 int found = mips_sc_probe();
106 if (found) { 106 if (found) {
@@ -109,4 +109,3 @@ int __init mips_sc_init(void)
109 } 109 }
110 return found; 110 return found;
111} 111}
112
diff --git a/arch/mips/mm/sc-r5k.c b/arch/mips/mm/sc-r5k.c
index d35b6c1103a3..f330d38e5575 100644
--- a/arch/mips/mm/sc-r5k.c
+++ b/arch/mips/mm/sc-r5k.c
@@ -99,7 +99,7 @@ static struct bcache_ops r5k_sc_ops = {
99 .bc_inv = r5k_dma_cache_inv_sc 99 .bc_inv = r5k_dma_cache_inv_sc
100}; 100};
101 101
102void __init r5k_sc_init(void) 102void __cpuinit r5k_sc_init(void)
103{ 103{
104 if (r5k_sc_probe()) { 104 if (r5k_sc_probe()) {
105 r5k_sc_enable(); 105 r5k_sc_enable();
diff --git a/arch/mips/mm/sc-rm7k.c b/arch/mips/mm/sc-rm7k.c
index 31ec73052423..fc227f3b1199 100644
--- a/arch/mips/mm/sc-rm7k.c
+++ b/arch/mips/mm/sc-rm7k.c
@@ -128,7 +128,7 @@ struct bcache_ops rm7k_sc_ops = {
128 .bc_inv = rm7k_sc_inv 128 .bc_inv = rm7k_sc_inv
129}; 129};
130 130
131void __init rm7k_sc_init(void) 131void __cpuinit rm7k_sc_init(void)
132{ 132{
133 struct cpuinfo_mips *c = &current_cpu_data; 133 struct cpuinfo_mips *c = &current_cpu_data;
134 unsigned int config = read_c0_config(); 134 unsigned int config = read_c0_config();
diff --git a/arch/mips/mm/tlb-r3k.c b/arch/mips/mm/tlb-r3k.c
index 7948e9a5e372..a782549ac80e 100644
--- a/arch/mips/mm/tlb-r3k.c
+++ b/arch/mips/mm/tlb-r3k.c
@@ -281,7 +281,7 @@ void __init add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
281 } 281 }
282} 282}
283 283
284void __init tlb_init(void) 284void __cpuinit tlb_init(void)
285{ 285{
286 local_flush_tlb_all(); 286 local_flush_tlb_all();
287 287
diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c
index 74ae0348cc92..63065d6e8063 100644
--- a/arch/mips/mm/tlb-r4k.c
+++ b/arch/mips/mm/tlb-r4k.c
@@ -388,7 +388,7 @@ void __init add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
388 * lifetime of the system 388 * lifetime of the system
389 */ 389 */
390 390
391static int temp_tlb_entry __initdata; 391static int temp_tlb_entry __cpuinitdata;
392 392
393__init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1, 393__init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,
394 unsigned long entryhi, unsigned long pagemask) 394 unsigned long entryhi, unsigned long pagemask)
@@ -427,7 +427,7 @@ out:
427 return ret; 427 return ret;
428} 428}
429 429
430static void __init probe_tlb(unsigned long config) 430static void __cpuinit probe_tlb(unsigned long config)
431{ 431{
432 struct cpuinfo_mips *c = &current_cpu_data; 432 struct cpuinfo_mips *c = &current_cpu_data;
433 unsigned int reg; 433 unsigned int reg;
@@ -455,7 +455,7 @@ static void __init probe_tlb(unsigned long config)
455 c->tlbsize = ((reg >> 25) & 0x3f) + 1; 455 c->tlbsize = ((reg >> 25) & 0x3f) + 1;
456} 456}
457 457
458static int __initdata ntlb = 0; 458static int __cpuinitdata ntlb = 0;
459static int __init set_ntlb(char *str) 459static int __init set_ntlb(char *str)
460{ 460{
461 get_option(&str, &ntlb); 461 get_option(&str, &ntlb);
@@ -464,7 +464,7 @@ static int __init set_ntlb(char *str)
464 464
465__setup("ntlb=", set_ntlb); 465__setup("ntlb=", set_ntlb);
466 466
467void __init tlb_init(void) 467void __cpuinit tlb_init(void)
468{ 468{
469 unsigned int config = read_c0_config(); 469 unsigned int config = read_c0_config();
470 470
@@ -473,7 +473,7 @@ void __init tlb_init(void)
473 * - On R4600 1.7 the tlbp never hits for pages smaller than 473 * - On R4600 1.7 the tlbp never hits for pages smaller than
474 * the value in the c0_pagemask register. 474 * the value in the c0_pagemask register.
475 * - The entire mm handling assumes the c0_pagemask register to 475 * - The entire mm handling assumes the c0_pagemask register to
476 * be set for 4kb pages. 476 * be set to fixed-size pages.
477 */ 477 */
478 probe_tlb(config); 478 probe_tlb(config);
479 write_c0_pagemask(PM_DEFAULT_MASK); 479 write_c0_pagemask(PM_DEFAULT_MASK);
diff --git a/arch/mips/mm/tlb-r8k.c b/arch/mips/mm/tlb-r8k.c
index bd8409d8ff62..4f01a3be215c 100644
--- a/arch/mips/mm/tlb-r8k.c
+++ b/arch/mips/mm/tlb-r8k.c
@@ -214,14 +214,14 @@ void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte)
214 local_irq_restore(flags); 214 local_irq_restore(flags);
215} 215}
216 216
217static void __init probe_tlb(unsigned long config) 217static void __cpuinit probe_tlb(unsigned long config)
218{ 218{
219 struct cpuinfo_mips *c = &current_cpu_data; 219 struct cpuinfo_mips *c = &current_cpu_data;
220 220
221 c->tlbsize = 3 * 128; /* 3 sets each 128 entries */ 221 c->tlbsize = 3 * 128; /* 3 sets each 128 entries */
222} 222}
223 223
224void __init tlb_init(void) 224void __cpuinit tlb_init(void)
225{ 225{
226 unsigned int config = read_c0_config(); 226 unsigned int config = read_c0_config();
227 unsigned long status; 227 unsigned long status;
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
index 218a6cc415e8..3a93d4ce2703 100644
--- a/arch/mips/mm/tlbex.c
+++ b/arch/mips/mm/tlbex.c
@@ -60,7 +60,7 @@ static inline int __maybe_unused r10000_llsc_war(void)
60 * why; it's not an issue caused by the core RTL. 60 * why; it's not an issue caused by the core RTL.
61 * 61 *
62 */ 62 */
63static int __init m4kc_tlbp_war(void) 63static int __cpuinit m4kc_tlbp_war(void)
64{ 64{
65 return (current_cpu_data.processor_id & 0xffff00) == 65 return (current_cpu_data.processor_id & 0xffff00) ==
66 (PRID_COMP_MIPS | PRID_IMP_4KC); 66 (PRID_COMP_MIPS | PRID_IMP_4KC);
@@ -144,16 +144,16 @@ static inline void dump_handler(const u32 *handler, int count)
144 * We deliberately chose a buffer size of 128, so we won't scribble 144 * We deliberately chose a buffer size of 128, so we won't scribble
145 * over anything important on overflow before we panic. 145 * over anything important on overflow before we panic.
146 */ 146 */
147static u32 tlb_handler[128] __initdata; 147static u32 tlb_handler[128] __cpuinitdata;
148 148
149/* simply assume worst case size for labels and relocs */ 149/* simply assume worst case size for labels and relocs */
150static struct uasm_label labels[128] __initdata; 150static struct uasm_label labels[128] __cpuinitdata;
151static struct uasm_reloc relocs[128] __initdata; 151static struct uasm_reloc relocs[128] __cpuinitdata;
152 152
153/* 153/*
154 * The R3000 TLB handler is simple. 154 * The R3000 TLB handler is simple.
155 */ 155 */
156static void __init build_r3000_tlb_refill_handler(void) 156static void __cpuinit build_r3000_tlb_refill_handler(void)
157{ 157{
158 long pgdc = (long)pgd_current; 158 long pgdc = (long)pgd_current;
159 u32 *p; 159 u32 *p;
@@ -197,7 +197,7 @@ static void __init build_r3000_tlb_refill_handler(void)
197 * other one.To keep things simple, we first assume linear space, 197 * other one.To keep things simple, we first assume linear space,
198 * then we relocate it to the final handler layout as needed. 198 * then we relocate it to the final handler layout as needed.
199 */ 199 */
200static u32 final_handler[64] __initdata; 200static u32 final_handler[64] __cpuinitdata;
201 201
202/* 202/*
203 * Hazards 203 * Hazards
@@ -221,7 +221,7 @@ static u32 final_handler[64] __initdata;
221 * 221 *
222 * As if we MIPS hackers wouldn't know how to nop pipelines happy ... 222 * As if we MIPS hackers wouldn't know how to nop pipelines happy ...
223 */ 223 */
224static void __init __maybe_unused build_tlb_probe_entry(u32 **p) 224static void __cpuinit __maybe_unused build_tlb_probe_entry(u32 **p)
225{ 225{
226 switch (current_cpu_type()) { 226 switch (current_cpu_type()) {
227 /* Found by experiment: R4600 v2.0 needs this, too. */ 227 /* Found by experiment: R4600 v2.0 needs this, too. */
@@ -245,7 +245,7 @@ static void __init __maybe_unused build_tlb_probe_entry(u32 **p)
245 */ 245 */
246enum tlb_write_entry { tlb_random, tlb_indexed }; 246enum tlb_write_entry { tlb_random, tlb_indexed };
247 247
248static void __init build_tlb_write_entry(u32 **p, struct uasm_label **l, 248static void __cpuinit build_tlb_write_entry(u32 **p, struct uasm_label **l,
249 struct uasm_reloc **r, 249 struct uasm_reloc **r,
250 enum tlb_write_entry wmode) 250 enum tlb_write_entry wmode)
251{ 251{
@@ -389,7 +389,7 @@ static void __init build_tlb_write_entry(u32 **p, struct uasm_label **l,
389 * TMP and PTR are scratch. 389 * TMP and PTR are scratch.
390 * TMP will be clobbered, PTR will hold the pmd entry. 390 * TMP will be clobbered, PTR will hold the pmd entry.
391 */ 391 */
392static void __init 392static void __cpuinit
393build_get_pmde64(u32 **p, struct uasm_label **l, struct uasm_reloc **r, 393build_get_pmde64(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
394 unsigned int tmp, unsigned int ptr) 394 unsigned int tmp, unsigned int ptr)
395{ 395{
@@ -450,7 +450,7 @@ build_get_pmde64(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
450 * BVADDR is the faulting address, PTR is scratch. 450 * BVADDR is the faulting address, PTR is scratch.
451 * PTR will hold the pgd for vmalloc. 451 * PTR will hold the pgd for vmalloc.
452 */ 452 */
453static void __init 453static void __cpuinit
454build_get_pgd_vmalloc64(u32 **p, struct uasm_label **l, struct uasm_reloc **r, 454build_get_pgd_vmalloc64(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
455 unsigned int bvaddr, unsigned int ptr) 455 unsigned int bvaddr, unsigned int ptr)
456{ 456{
@@ -522,7 +522,7 @@ build_get_pgd_vmalloc64(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
522 * TMP and PTR are scratch. 522 * TMP and PTR are scratch.
523 * TMP will be clobbered, PTR will hold the pgd entry. 523 * TMP will be clobbered, PTR will hold the pgd entry.
524 */ 524 */
525static void __init __maybe_unused 525static void __cpuinit __maybe_unused
526build_get_pgde32(u32 **p, unsigned int tmp, unsigned int ptr) 526build_get_pgde32(u32 **p, unsigned int tmp, unsigned int ptr)
527{ 527{
528 long pgdc = (long)pgd_current; 528 long pgdc = (long)pgd_current;
@@ -557,7 +557,7 @@ build_get_pgde32(u32 **p, unsigned int tmp, unsigned int ptr)
557 557
558#endif /* !CONFIG_64BIT */ 558#endif /* !CONFIG_64BIT */
559 559
560static void __init build_adjust_context(u32 **p, unsigned int ctx) 560static void __cpuinit build_adjust_context(u32 **p, unsigned int ctx)
561{ 561{
562 unsigned int shift = 4 - (PTE_T_LOG2 + 1) + PAGE_SHIFT - 12; 562 unsigned int shift = 4 - (PTE_T_LOG2 + 1) + PAGE_SHIFT - 12;
563 unsigned int mask = (PTRS_PER_PTE / 2 - 1) << (PTE_T_LOG2 + 1); 563 unsigned int mask = (PTRS_PER_PTE / 2 - 1) << (PTE_T_LOG2 + 1);
@@ -583,7 +583,7 @@ static void __init build_adjust_context(u32 **p, unsigned int ctx)
583 uasm_i_andi(p, ctx, ctx, mask); 583 uasm_i_andi(p, ctx, ctx, mask);
584} 584}
585 585
586static void __init build_get_ptep(u32 **p, unsigned int tmp, unsigned int ptr) 586static void __cpuinit build_get_ptep(u32 **p, unsigned int tmp, unsigned int ptr)
587{ 587{
588 /* 588 /*
589 * Bug workaround for the Nevada. It seems as if under certain 589 * Bug workaround for the Nevada. It seems as if under certain
@@ -608,7 +608,7 @@ static void __init build_get_ptep(u32 **p, unsigned int tmp, unsigned int ptr)
608 UASM_i_ADDU(p, ptr, ptr, tmp); /* add in offset */ 608 UASM_i_ADDU(p, ptr, ptr, tmp); /* add in offset */
609} 609}
610 610
611static void __init build_update_entries(u32 **p, unsigned int tmp, 611static void __cpuinit build_update_entries(u32 **p, unsigned int tmp,
612 unsigned int ptep) 612 unsigned int ptep)
613{ 613{
614 /* 614 /*
@@ -651,7 +651,7 @@ static void __init build_update_entries(u32 **p, unsigned int tmp,
651#endif 651#endif
652} 652}
653 653
654static void __init build_r4000_tlb_refill_handler(void) 654static void __cpuinit build_r4000_tlb_refill_handler(void)
655{ 655{
656 u32 *p = tlb_handler; 656 u32 *p = tlb_handler;
657 struct uasm_label *l = labels; 657 struct uasm_label *l = labels;
@@ -783,7 +783,7 @@ u32 handle_tlbl[FASTPATH_SIZE] __cacheline_aligned;
783u32 handle_tlbs[FASTPATH_SIZE] __cacheline_aligned; 783u32 handle_tlbs[FASTPATH_SIZE] __cacheline_aligned;
784u32 handle_tlbm[FASTPATH_SIZE] __cacheline_aligned; 784u32 handle_tlbm[FASTPATH_SIZE] __cacheline_aligned;
785 785
786static void __init 786static void __cpuinit
787iPTE_LW(u32 **p, struct uasm_label **l, unsigned int pte, unsigned int ptr) 787iPTE_LW(u32 **p, struct uasm_label **l, unsigned int pte, unsigned int ptr)
788{ 788{
789#ifdef CONFIG_SMP 789#ifdef CONFIG_SMP
@@ -803,7 +803,7 @@ iPTE_LW(u32 **p, struct uasm_label **l, unsigned int pte, unsigned int ptr)
803#endif 803#endif
804} 804}
805 805
806static void __init 806static void __cpuinit
807iPTE_SW(u32 **p, struct uasm_reloc **r, unsigned int pte, unsigned int ptr, 807iPTE_SW(u32 **p, struct uasm_reloc **r, unsigned int pte, unsigned int ptr,
808 unsigned int mode) 808 unsigned int mode)
809{ 809{
@@ -863,7 +863,7 @@ iPTE_SW(u32 **p, struct uasm_reloc **r, unsigned int pte, unsigned int ptr,
863 * the page table where this PTE is located, PTE will be re-loaded 863 * the page table where this PTE is located, PTE will be re-loaded
864 * with it's original value. 864 * with it's original value.
865 */ 865 */
866static void __init 866static void __cpuinit
867build_pte_present(u32 **p, struct uasm_label **l, struct uasm_reloc **r, 867build_pte_present(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
868 unsigned int pte, unsigned int ptr, enum label_id lid) 868 unsigned int pte, unsigned int ptr, enum label_id lid)
869{ 869{
@@ -874,7 +874,7 @@ build_pte_present(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
874} 874}
875 875
876/* Make PTE valid, store result in PTR. */ 876/* Make PTE valid, store result in PTR. */
877static void __init 877static void __cpuinit
878build_make_valid(u32 **p, struct uasm_reloc **r, unsigned int pte, 878build_make_valid(u32 **p, struct uasm_reloc **r, unsigned int pte,
879 unsigned int ptr) 879 unsigned int ptr)
880{ 880{
@@ -887,7 +887,7 @@ build_make_valid(u32 **p, struct uasm_reloc **r, unsigned int pte,
887 * Check if PTE can be written to, if not branch to LABEL. Regardless 887 * Check if PTE can be written to, if not branch to LABEL. Regardless
888 * restore PTE with value from PTR when done. 888 * restore PTE with value from PTR when done.
889 */ 889 */
890static void __init 890static void __cpuinit
891build_pte_writable(u32 **p, struct uasm_label **l, struct uasm_reloc **r, 891build_pte_writable(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
892 unsigned int pte, unsigned int ptr, enum label_id lid) 892 unsigned int pte, unsigned int ptr, enum label_id lid)
893{ 893{
@@ -900,7 +900,7 @@ build_pte_writable(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
900/* Make PTE writable, update software status bits as well, then store 900/* Make PTE writable, update software status bits as well, then store
901 * at PTR. 901 * at PTR.
902 */ 902 */
903static void __init 903static void __cpuinit
904build_make_write(u32 **p, struct uasm_reloc **r, unsigned int pte, 904build_make_write(u32 **p, struct uasm_reloc **r, unsigned int pte,
905 unsigned int ptr) 905 unsigned int ptr)
906{ 906{
@@ -914,7 +914,7 @@ build_make_write(u32 **p, struct uasm_reloc **r, unsigned int pte,
914 * Check if PTE can be modified, if not branch to LABEL. Regardless 914 * Check if PTE can be modified, if not branch to LABEL. Regardless
915 * restore PTE with value from PTR when done. 915 * restore PTE with value from PTR when done.
916 */ 916 */
917static void __init 917static void __cpuinit
918build_pte_modifiable(u32 **p, struct uasm_label **l, struct uasm_reloc **r, 918build_pte_modifiable(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
919 unsigned int pte, unsigned int ptr, enum label_id lid) 919 unsigned int pte, unsigned int ptr, enum label_id lid)
920{ 920{
@@ -931,7 +931,7 @@ build_pte_modifiable(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
931 * This places the pte into ENTRYLO0 and writes it with tlbwi. 931 * This places the pte into ENTRYLO0 and writes it with tlbwi.
932 * Then it returns. 932 * Then it returns.
933 */ 933 */
934static void __init 934static void __cpuinit
935build_r3000_pte_reload_tlbwi(u32 **p, unsigned int pte, unsigned int tmp) 935build_r3000_pte_reload_tlbwi(u32 **p, unsigned int pte, unsigned int tmp)
936{ 936{
937 uasm_i_mtc0(p, pte, C0_ENTRYLO0); /* cp0 delay */ 937 uasm_i_mtc0(p, pte, C0_ENTRYLO0); /* cp0 delay */
@@ -947,7 +947,7 @@ build_r3000_pte_reload_tlbwi(u32 **p, unsigned int pte, unsigned int tmp)
947 * may have the probe fail bit set as a result of a trap on a 947 * may have the probe fail bit set as a result of a trap on a
948 * kseg2 access, i.e. without refill. Then it returns. 948 * kseg2 access, i.e. without refill. Then it returns.
949 */ 949 */
950static void __init 950static void __cpuinit
951build_r3000_tlb_reload_write(u32 **p, struct uasm_label **l, 951build_r3000_tlb_reload_write(u32 **p, struct uasm_label **l,
952 struct uasm_reloc **r, unsigned int pte, 952 struct uasm_reloc **r, unsigned int pte,
953 unsigned int tmp) 953 unsigned int tmp)
@@ -965,7 +965,7 @@ build_r3000_tlb_reload_write(u32 **p, struct uasm_label **l,
965 uasm_i_rfe(p); /* branch delay */ 965 uasm_i_rfe(p); /* branch delay */
966} 966}
967 967
968static void __init 968static void __cpuinit
969build_r3000_tlbchange_handler_head(u32 **p, unsigned int pte, 969build_r3000_tlbchange_handler_head(u32 **p, unsigned int pte,
970 unsigned int ptr) 970 unsigned int ptr)
971{ 971{
@@ -985,7 +985,7 @@ build_r3000_tlbchange_handler_head(u32 **p, unsigned int pte,
985 uasm_i_tlbp(p); /* load delay */ 985 uasm_i_tlbp(p); /* load delay */
986} 986}
987 987
988static void __init build_r3000_tlb_load_handler(void) 988static void __cpuinit build_r3000_tlb_load_handler(void)
989{ 989{
990 u32 *p = handle_tlbl; 990 u32 *p = handle_tlbl;
991 struct uasm_label *l = labels; 991 struct uasm_label *l = labels;
@@ -1015,7 +1015,7 @@ static void __init build_r3000_tlb_load_handler(void)
1015 dump_handler(handle_tlbl, ARRAY_SIZE(handle_tlbl)); 1015 dump_handler(handle_tlbl, ARRAY_SIZE(handle_tlbl));
1016} 1016}
1017 1017
1018static void __init build_r3000_tlb_store_handler(void) 1018static void __cpuinit build_r3000_tlb_store_handler(void)
1019{ 1019{
1020 u32 *p = handle_tlbs; 1020 u32 *p = handle_tlbs;
1021 struct uasm_label *l = labels; 1021 struct uasm_label *l = labels;
@@ -1045,7 +1045,7 @@ static void __init build_r3000_tlb_store_handler(void)
1045 dump_handler(handle_tlbs, ARRAY_SIZE(handle_tlbs)); 1045 dump_handler(handle_tlbs, ARRAY_SIZE(handle_tlbs));
1046} 1046}
1047 1047
1048static void __init build_r3000_tlb_modify_handler(void) 1048static void __cpuinit build_r3000_tlb_modify_handler(void)
1049{ 1049{
1050 u32 *p = handle_tlbm; 1050 u32 *p = handle_tlbm;
1051 struct uasm_label *l = labels; 1051 struct uasm_label *l = labels;
@@ -1078,7 +1078,7 @@ static void __init build_r3000_tlb_modify_handler(void)
1078/* 1078/*
1079 * R4000 style TLB load/store/modify handlers. 1079 * R4000 style TLB load/store/modify handlers.
1080 */ 1080 */
1081static void __init 1081static void __cpuinit
1082build_r4000_tlbchange_handler_head(u32 **p, struct uasm_label **l, 1082build_r4000_tlbchange_handler_head(u32 **p, struct uasm_label **l,
1083 struct uasm_reloc **r, unsigned int pte, 1083 struct uasm_reloc **r, unsigned int pte,
1084 unsigned int ptr) 1084 unsigned int ptr)
@@ -1103,7 +1103,7 @@ build_r4000_tlbchange_handler_head(u32 **p, struct uasm_label **l,
1103 build_tlb_probe_entry(p); 1103 build_tlb_probe_entry(p);
1104} 1104}
1105 1105
1106static void __init 1106static void __cpuinit
1107build_r4000_tlbchange_handler_tail(u32 **p, struct uasm_label **l, 1107build_r4000_tlbchange_handler_tail(u32 **p, struct uasm_label **l,
1108 struct uasm_reloc **r, unsigned int tmp, 1108 struct uasm_reloc **r, unsigned int tmp,
1109 unsigned int ptr) 1109 unsigned int ptr)
@@ -1120,7 +1120,7 @@ build_r4000_tlbchange_handler_tail(u32 **p, struct uasm_label **l,
1120#endif 1120#endif
1121} 1121}
1122 1122
1123static void __init build_r4000_tlb_load_handler(void) 1123static void __cpuinit build_r4000_tlb_load_handler(void)
1124{ 1124{
1125 u32 *p = handle_tlbl; 1125 u32 *p = handle_tlbl;
1126 struct uasm_label *l = labels; 1126 struct uasm_label *l = labels;
@@ -1160,7 +1160,7 @@ static void __init build_r4000_tlb_load_handler(void)
1160 dump_handler(handle_tlbl, ARRAY_SIZE(handle_tlbl)); 1160 dump_handler(handle_tlbl, ARRAY_SIZE(handle_tlbl));
1161} 1161}
1162 1162
1163static void __init build_r4000_tlb_store_handler(void) 1163static void __cpuinit build_r4000_tlb_store_handler(void)
1164{ 1164{
1165 u32 *p = handle_tlbs; 1165 u32 *p = handle_tlbs;
1166 struct uasm_label *l = labels; 1166 struct uasm_label *l = labels;
@@ -1191,7 +1191,7 @@ static void __init build_r4000_tlb_store_handler(void)
1191 dump_handler(handle_tlbs, ARRAY_SIZE(handle_tlbs)); 1191 dump_handler(handle_tlbs, ARRAY_SIZE(handle_tlbs));
1192} 1192}
1193 1193
1194static void __init build_r4000_tlb_modify_handler(void) 1194static void __cpuinit build_r4000_tlb_modify_handler(void)
1195{ 1195{
1196 u32 *p = handle_tlbm; 1196 u32 *p = handle_tlbm;
1197 struct uasm_label *l = labels; 1197 struct uasm_label *l = labels;
@@ -1223,7 +1223,7 @@ static void __init build_r4000_tlb_modify_handler(void)
1223 dump_handler(handle_tlbm, ARRAY_SIZE(handle_tlbm)); 1223 dump_handler(handle_tlbm, ARRAY_SIZE(handle_tlbm));
1224} 1224}
1225 1225
1226void __init build_tlb_refill_handler(void) 1226void __cpuinit build_tlb_refill_handler(void)
1227{ 1227{
1228 /* 1228 /*
1229 * The refill handler is generated per-CPU, multi-node systems 1229 * The refill handler is generated per-CPU, multi-node systems
@@ -1269,7 +1269,7 @@ void __init build_tlb_refill_handler(void)
1269 } 1269 }
1270} 1270}
1271 1271
1272void __init flush_tlb_handlers(void) 1272void __cpuinit flush_tlb_handlers(void)
1273{ 1273{
1274 flush_icache_range((unsigned long)handle_tlbl, 1274 flush_icache_range((unsigned long)handle_tlbl,
1275 (unsigned long)handle_tlbl + sizeof(handle_tlbl)); 1275 (unsigned long)handle_tlbl + sizeof(handle_tlbl));
diff --git a/arch/mips/mm/uasm.c b/arch/mips/mm/uasm.c
index e3f74ed5f704..1a6f7704cc89 100644
--- a/arch/mips/mm/uasm.c
+++ b/arch/mips/mm/uasm.c
@@ -82,7 +82,7 @@ struct insn {
82 | (e) << RE_SH \ 82 | (e) << RE_SH \
83 | (f) << FUNC_SH) 83 | (f) << FUNC_SH)
84 84
85static struct insn insn_table[] __initdata = { 85static struct insn insn_table[] __cpuinitdata = {
86 { insn_addiu, M(addiu_op, 0, 0, 0, 0, 0), RS | RT | SIMM }, 86 { insn_addiu, M(addiu_op, 0, 0, 0, 0, 0), RS | RT | SIMM },
87 { insn_addu, M(spec_op, 0, 0, 0, 0, addu_op), RS | RT | RD }, 87 { insn_addu, M(spec_op, 0, 0, 0, 0, addu_op), RS | RT | RD },
88 { insn_and, M(spec_op, 0, 0, 0, 0, and_op), RS | RT | RD }, 88 { insn_and, M(spec_op, 0, 0, 0, 0, and_op), RS | RT | RD },
@@ -135,7 +135,7 @@ static struct insn insn_table[] __initdata = {
135 135
136#undef M 136#undef M
137 137
138static inline __init u32 build_rs(u32 arg) 138static inline __cpuinit u32 build_rs(u32 arg)
139{ 139{
140 if (arg & ~RS_MASK) 140 if (arg & ~RS_MASK)
141 printk(KERN_WARNING "Micro-assembler field overflow\n"); 141 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -143,7 +143,7 @@ static inline __init u32 build_rs(u32 arg)
143 return (arg & RS_MASK) << RS_SH; 143 return (arg & RS_MASK) << RS_SH;
144} 144}
145 145
146static inline __init u32 build_rt(u32 arg) 146static inline __cpuinit u32 build_rt(u32 arg)
147{ 147{
148 if (arg & ~RT_MASK) 148 if (arg & ~RT_MASK)
149 printk(KERN_WARNING "Micro-assembler field overflow\n"); 149 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -151,7 +151,7 @@ static inline __init u32 build_rt(u32 arg)
151 return (arg & RT_MASK) << RT_SH; 151 return (arg & RT_MASK) << RT_SH;
152} 152}
153 153
154static inline __init u32 build_rd(u32 arg) 154static inline __cpuinit u32 build_rd(u32 arg)
155{ 155{
156 if (arg & ~RD_MASK) 156 if (arg & ~RD_MASK)
157 printk(KERN_WARNING "Micro-assembler field overflow\n"); 157 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -159,7 +159,7 @@ static inline __init u32 build_rd(u32 arg)
159 return (arg & RD_MASK) << RD_SH; 159 return (arg & RD_MASK) << RD_SH;
160} 160}
161 161
162static inline __init u32 build_re(u32 arg) 162static inline __cpuinit u32 build_re(u32 arg)
163{ 163{
164 if (arg & ~RE_MASK) 164 if (arg & ~RE_MASK)
165 printk(KERN_WARNING "Micro-assembler field overflow\n"); 165 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -167,7 +167,7 @@ static inline __init u32 build_re(u32 arg)
167 return (arg & RE_MASK) << RE_SH; 167 return (arg & RE_MASK) << RE_SH;
168} 168}
169 169
170static inline __init u32 build_simm(s32 arg) 170static inline __cpuinit u32 build_simm(s32 arg)
171{ 171{
172 if (arg > 0x7fff || arg < -0x8000) 172 if (arg > 0x7fff || arg < -0x8000)
173 printk(KERN_WARNING "Micro-assembler field overflow\n"); 173 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -175,7 +175,7 @@ static inline __init u32 build_simm(s32 arg)
175 return arg & 0xffff; 175 return arg & 0xffff;
176} 176}
177 177
178static inline __init u32 build_uimm(u32 arg) 178static inline __cpuinit u32 build_uimm(u32 arg)
179{ 179{
180 if (arg & ~IMM_MASK) 180 if (arg & ~IMM_MASK)
181 printk(KERN_WARNING "Micro-assembler field overflow\n"); 181 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -183,7 +183,7 @@ static inline __init u32 build_uimm(u32 arg)
183 return arg & IMM_MASK; 183 return arg & IMM_MASK;
184} 184}
185 185
186static inline __init u32 build_bimm(s32 arg) 186static inline __cpuinit u32 build_bimm(s32 arg)
187{ 187{
188 if (arg > 0x1ffff || arg < -0x20000) 188 if (arg > 0x1ffff || arg < -0x20000)
189 printk(KERN_WARNING "Micro-assembler field overflow\n"); 189 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -194,7 +194,7 @@ static inline __init u32 build_bimm(s32 arg)
194 return ((arg < 0) ? (1 << 15) : 0) | ((arg >> 2) & 0x7fff); 194 return ((arg < 0) ? (1 << 15) : 0) | ((arg >> 2) & 0x7fff);
195} 195}
196 196
197static inline __init u32 build_jimm(u32 arg) 197static inline __cpuinit u32 build_jimm(u32 arg)
198{ 198{
199 if (arg & ~((JIMM_MASK) << 2)) 199 if (arg & ~((JIMM_MASK) << 2))
200 printk(KERN_WARNING "Micro-assembler field overflow\n"); 200 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -202,7 +202,7 @@ static inline __init u32 build_jimm(u32 arg)
202 return (arg >> 2) & JIMM_MASK; 202 return (arg >> 2) & JIMM_MASK;
203} 203}
204 204
205static inline __init u32 build_func(u32 arg) 205static inline __cpuinit u32 build_func(u32 arg)
206{ 206{
207 if (arg & ~FUNC_MASK) 207 if (arg & ~FUNC_MASK)
208 printk(KERN_WARNING "Micro-assembler field overflow\n"); 208 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -210,7 +210,7 @@ static inline __init u32 build_func(u32 arg)
210 return arg & FUNC_MASK; 210 return arg & FUNC_MASK;
211} 211}
212 212
213static inline __init u32 build_set(u32 arg) 213static inline __cpuinit u32 build_set(u32 arg)
214{ 214{
215 if (arg & ~SET_MASK) 215 if (arg & ~SET_MASK)
216 printk(KERN_WARNING "Micro-assembler field overflow\n"); 216 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -222,7 +222,7 @@ static inline __init u32 build_set(u32 arg)
222 * The order of opcode arguments is implicitly left to right, 222 * The order of opcode arguments is implicitly left to right,
223 * starting with RS and ending with FUNC or IMM. 223 * starting with RS and ending with FUNC or IMM.
224 */ 224 */
225static void __init build_insn(u32 **buf, enum opcode opc, ...) 225static void __cpuinit build_insn(u32 **buf, enum opcode opc, ...)
226{ 226{
227 struct insn *ip = NULL; 227 struct insn *ip = NULL;
228 unsigned int i; 228 unsigned int i;
@@ -375,14 +375,14 @@ I_u3u1u2(_xor)
375I_u2u1u3(_xori) 375I_u2u1u3(_xori)
376 376
377/* Handle labels. */ 377/* Handle labels. */
378void __init uasm_build_label(struct uasm_label **lab, u32 *addr, int lid) 378void __cpuinit uasm_build_label(struct uasm_label **lab, u32 *addr, int lid)
379{ 379{
380 (*lab)->addr = addr; 380 (*lab)->addr = addr;
381 (*lab)->lab = lid; 381 (*lab)->lab = lid;
382 (*lab)++; 382 (*lab)++;
383} 383}
384 384
385int __init uasm_in_compat_space_p(long addr) 385int __cpuinit uasm_in_compat_space_p(long addr)
386{ 386{
387 /* Is this address in 32bit compat space? */ 387 /* Is this address in 32bit compat space? */
388#ifdef CONFIG_64BIT 388#ifdef CONFIG_64BIT
@@ -392,7 +392,7 @@ int __init uasm_in_compat_space_p(long addr)
392#endif 392#endif
393} 393}
394 394
395int __init uasm_rel_highest(long val) 395int __cpuinit uasm_rel_highest(long val)
396{ 396{
397#ifdef CONFIG_64BIT 397#ifdef CONFIG_64BIT
398 return ((((val + 0x800080008000L) >> 48) & 0xffff) ^ 0x8000) - 0x8000; 398 return ((((val + 0x800080008000L) >> 48) & 0xffff) ^ 0x8000) - 0x8000;
@@ -401,7 +401,7 @@ int __init uasm_rel_highest(long val)
401#endif 401#endif
402} 402}
403 403
404int __init uasm_rel_higher(long val) 404int __cpuinit uasm_rel_higher(long val)
405{ 405{
406#ifdef CONFIG_64BIT 406#ifdef CONFIG_64BIT
407 return ((((val + 0x80008000L) >> 32) & 0xffff) ^ 0x8000) - 0x8000; 407 return ((((val + 0x80008000L) >> 32) & 0xffff) ^ 0x8000) - 0x8000;
@@ -410,17 +410,17 @@ int __init uasm_rel_higher(long val)
410#endif 410#endif
411} 411}
412 412
413int __init uasm_rel_hi(long val) 413int __cpuinit uasm_rel_hi(long val)
414{ 414{
415 return ((((val + 0x8000L) >> 16) & 0xffff) ^ 0x8000) - 0x8000; 415 return ((((val + 0x8000L) >> 16) & 0xffff) ^ 0x8000) - 0x8000;
416} 416}
417 417
418int __init uasm_rel_lo(long val) 418int __cpuinit uasm_rel_lo(long val)
419{ 419{
420 return ((val & 0xffff) ^ 0x8000) - 0x8000; 420 return ((val & 0xffff) ^ 0x8000) - 0x8000;
421} 421}
422 422
423void __init UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr) 423void __cpuinit UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr)
424{ 424{
425 if (!uasm_in_compat_space_p(addr)) { 425 if (!uasm_in_compat_space_p(addr)) {
426 uasm_i_lui(buf, rs, uasm_rel_highest(addr)); 426 uasm_i_lui(buf, rs, uasm_rel_highest(addr));
@@ -436,7 +436,7 @@ void __init UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr)
436 uasm_i_lui(buf, rs, uasm_rel_hi(addr)); 436 uasm_i_lui(buf, rs, uasm_rel_hi(addr));
437} 437}
438 438
439void __init UASM_i_LA(u32 **buf, unsigned int rs, long addr) 439void __cpuinit UASM_i_LA(u32 **buf, unsigned int rs, long addr)
440{ 440{
441 UASM_i_LA_mostly(buf, rs, addr); 441 UASM_i_LA_mostly(buf, rs, addr);
442 if (uasm_rel_lo(addr)) { 442 if (uasm_rel_lo(addr)) {
@@ -448,7 +448,7 @@ void __init UASM_i_LA(u32 **buf, unsigned int rs, long addr)
448} 448}
449 449
450/* Handle relocations. */ 450/* Handle relocations. */
451void __init 451void __cpuinit
452uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid) 452uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid)
453{ 453{
454 (*rel)->addr = addr; 454 (*rel)->addr = addr;
@@ -457,7 +457,7 @@ uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid)
457 (*rel)++; 457 (*rel)++;
458} 458}
459 459
460static inline void __init 460static inline void __cpuinit
461__resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab) 461__resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab)
462{ 462{
463 long laddr = (long)lab->addr; 463 long laddr = (long)lab->addr;
@@ -474,7 +474,7 @@ __resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab)
474 } 474 }
475} 475}
476 476
477void __init 477void __cpuinit
478uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab) 478uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab)
479{ 479{
480 struct uasm_label *l; 480 struct uasm_label *l;
@@ -485,7 +485,7 @@ uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab)
485 __resolve_relocs(rel, l); 485 __resolve_relocs(rel, l);
486} 486}
487 487
488void __init 488void __cpuinit
489uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off) 489uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off)
490{ 490{
491 for (; rel->lab != UASM_LABEL_INVALID; rel++) 491 for (; rel->lab != UASM_LABEL_INVALID; rel++)
@@ -493,7 +493,7 @@ uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off)
493 rel->addr += off; 493 rel->addr += off;
494} 494}
495 495
496void __init 496void __cpuinit
497uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off) 497uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off)
498{ 498{
499 for (; lab->lab != UASM_LABEL_INVALID; lab++) 499 for (; lab->lab != UASM_LABEL_INVALID; lab++)
@@ -501,7 +501,7 @@ uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off)
501 lab->addr += off; 501 lab->addr += off;
502} 502}
503 503
504void __init 504void __cpuinit
505uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab, u32 *first, 505uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab, u32 *first,
506 u32 *end, u32 *target) 506 u32 *end, u32 *target)
507{ 507{
@@ -513,7 +513,7 @@ uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab, u32 *first,
513 uasm_move_labels(lab, first, end, off); 513 uasm_move_labels(lab, first, end, off);
514} 514}
515 515
516int __init uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr) 516int __cpuinit uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr)
517{ 517{
518 for (; rel->lab != UASM_LABEL_INVALID; rel++) { 518 for (; rel->lab != UASM_LABEL_INVALID; rel++) {
519 if (rel->addr == addr 519 if (rel->addr == addr
@@ -526,49 +526,49 @@ int __init uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr)
526} 526}
527 527
528/* Convenience functions for labeled branches. */ 528/* Convenience functions for labeled branches. */
529void __init 529void __cpuinit
530uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) 530uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
531{ 531{
532 uasm_r_mips_pc16(r, *p, lid); 532 uasm_r_mips_pc16(r, *p, lid);
533 uasm_i_bltz(p, reg, 0); 533 uasm_i_bltz(p, reg, 0);
534} 534}
535 535
536void __init 536void __cpuinit
537uasm_il_b(u32 **p, struct uasm_reloc **r, int lid) 537uasm_il_b(u32 **p, struct uasm_reloc **r, int lid)
538{ 538{
539 uasm_r_mips_pc16(r, *p, lid); 539 uasm_r_mips_pc16(r, *p, lid);
540 uasm_i_b(p, 0); 540 uasm_i_b(p, 0);
541} 541}
542 542
543void __init 543void __cpuinit
544uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) 544uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
545{ 545{
546 uasm_r_mips_pc16(r, *p, lid); 546 uasm_r_mips_pc16(r, *p, lid);
547 uasm_i_beqz(p, reg, 0); 547 uasm_i_beqz(p, reg, 0);
548} 548}
549 549
550void __init 550void __cpuinit
551uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) 551uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
552{ 552{
553 uasm_r_mips_pc16(r, *p, lid); 553 uasm_r_mips_pc16(r, *p, lid);
554 uasm_i_beqzl(p, reg, 0); 554 uasm_i_beqzl(p, reg, 0);
555} 555}
556 556
557void __init 557void __cpuinit
558uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) 558uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
559{ 559{
560 uasm_r_mips_pc16(r, *p, lid); 560 uasm_r_mips_pc16(r, *p, lid);
561 uasm_i_bnez(p, reg, 0); 561 uasm_i_bnez(p, reg, 0);
562} 562}
563 563
564void __init 564void __cpuinit
565uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) 565uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
566{ 566{
567 uasm_r_mips_pc16(r, *p, lid); 567 uasm_r_mips_pc16(r, *p, lid);
568 uasm_i_bgezl(p, reg, 0); 568 uasm_i_bgezl(p, reg, 0);
569} 569}
570 570
571void __init 571void __cpuinit
572uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) 572uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
573{ 573{
574 uasm_r_mips_pc16(r, *p, lid); 574 uasm_r_mips_pc16(r, *p, lid);
diff --git a/arch/mips/mm/uasm.h b/arch/mips/mm/uasm.h
index a10fc1135c76..fe0574f6e77d 100644
--- a/arch/mips/mm/uasm.h
+++ b/arch/mips/mm/uasm.h
@@ -11,38 +11,38 @@
11#include <linux/types.h> 11#include <linux/types.h>
12 12
13#define Ip_u1u2u3(op) \ 13#define Ip_u1u2u3(op) \
14void __init \ 14void __cpuinit \
15uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c) 15uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c)
16 16
17#define Ip_u2u1u3(op) \ 17#define Ip_u2u1u3(op) \
18void __init \ 18void __cpuinit \
19uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c) 19uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c)
20 20
21#define Ip_u3u1u2(op) \ 21#define Ip_u3u1u2(op) \
22void __init \ 22void __cpuinit \
23uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c) 23uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c)
24 24
25#define Ip_u1u2s3(op) \ 25#define Ip_u1u2s3(op) \
26void __init \ 26void __cpuinit \
27uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c) 27uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c)
28 28
29#define Ip_u2s3u1(op) \ 29#define Ip_u2s3u1(op) \
30void __init \ 30void __cpuinit \
31uasm_i##op(u32 **buf, unsigned int a, signed int b, unsigned int c) 31uasm_i##op(u32 **buf, unsigned int a, signed int b, unsigned int c)
32 32
33#define Ip_u2u1s3(op) \ 33#define Ip_u2u1s3(op) \
34void __init \ 34void __cpuinit \
35uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c) 35uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c)
36 36
37#define Ip_u1u2(op) \ 37#define Ip_u1u2(op) \
38void __init uasm_i##op(u32 **buf, unsigned int a, unsigned int b) 38void __cpuinit uasm_i##op(u32 **buf, unsigned int a, unsigned int b)
39 39
40#define Ip_u1s2(op) \ 40#define Ip_u1s2(op) \
41void __init uasm_i##op(u32 **buf, unsigned int a, signed int b) 41void __cpuinit uasm_i##op(u32 **buf, unsigned int a, signed int b)
42 42
43#define Ip_u1(op) void __init uasm_i##op(u32 **buf, unsigned int a) 43#define Ip_u1(op) void __cpuinit uasm_i##op(u32 **buf, unsigned int a)
44 44
45#define Ip_0(op) void __init uasm_i##op(u32 **buf) 45#define Ip_0(op) void __cpuinit uasm_i##op(u32 **buf)
46 46
47Ip_u2u1s3(_addiu); 47Ip_u2u1s3(_addiu);
48Ip_u3u1u2(_addu); 48Ip_u3u1u2(_addu);
@@ -98,19 +98,19 @@ struct uasm_label {
98 int lab; 98 int lab;
99}; 99};
100 100
101void __init uasm_build_label(struct uasm_label **lab, u32 *addr, int lid); 101void __cpuinit uasm_build_label(struct uasm_label **lab, u32 *addr, int lid);
102#ifdef CONFIG_64BIT 102#ifdef CONFIG_64BIT
103int __init uasm_in_compat_space_p(long addr); 103int uasm_in_compat_space_p(long addr);
104int __init uasm_rel_highest(long val); 104int uasm_rel_highest(long val);
105int __init uasm_rel_higher(long val); 105int uasm_rel_higher(long val);
106#endif 106#endif
107int __init uasm_rel_hi(long val); 107int uasm_rel_hi(long val);
108int __init uasm_rel_lo(long val); 108int uasm_rel_lo(long val);
109void __init UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr); 109void UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr);
110void __init UASM_i_LA(u32 **buf, unsigned int rs, long addr); 110void UASM_i_LA(u32 **buf, unsigned int rs, long addr);
111 111
112#define UASM_L_LA(lb) \ 112#define UASM_L_LA(lb) \
113static inline void __init uasm_l##lb(struct uasm_label **lab, u32 *addr) \ 113static inline void __cpuinit uasm_l##lb(struct uasm_label **lab, u32 *addr) \
114{ \ 114{ \
115 uasm_build_label(lab, addr, label##lb); \ 115 uasm_build_label(lab, addr, label##lb); \
116} 116}
@@ -164,29 +164,19 @@ struct uasm_reloc {
164/* This is zero so we can use zeroed label arrays. */ 164/* This is zero so we can use zeroed label arrays. */
165#define UASM_LABEL_INVALID 0 165#define UASM_LABEL_INVALID 0
166 166
167void __init uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid); 167void uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid);
168void __init 168void uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab);
169uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab); 169void uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off);
170void __init 170void uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off);
171uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off); 171void uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab,
172void __init 172 u32 *first, u32 *end, u32 *target);
173uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off); 173int uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr);
174void __init
175uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab, u32 *first,
176 u32 *end, u32 *target);
177int __init uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr);
178 174
179/* Convenience functions for labeled branches. */ 175/* Convenience functions for labeled branches. */
180void __init 176void uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
181uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); 177void uasm_il_b(u32 **p, struct uasm_reloc **r, int lid);
182void __init uasm_il_b(u32 **p, struct uasm_reloc **r, int lid); 178void uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
183void __init 179void uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
184uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); 180void uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
185void __init 181void uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
186uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); 182void uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
187void __init
188uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
189void __init
190uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
191void __init
192uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
diff --git a/arch/mips/pci/pci-bcm1480.c b/arch/mips/pci/pci-bcm1480.c
index 30ed36125bcd..ab68c4318a30 100644
--- a/arch/mips/pci/pci-bcm1480.c
+++ b/arch/mips/pci/pci-bcm1480.c
@@ -249,8 +249,9 @@ static int __init bcm1480_pcibios_init(void)
249 * XXX ehs: Should this happen in PCI Device mode? 249 * XXX ehs: Should this happen in PCI Device mode?
250 */ 250 */
251 251
252 set_io_port_base((unsigned long) 252 bcm1480_controller.io_map_base = (unsigned long)
253 ioremap(A_BCM1480_PHYS_PCI_IO_MATCH_BYTES, 65536)); 253 ioremap(A_BCM1480_PHYS_PCI_IO_MATCH_BYTES, 65536);
254 set_io_port_base(bcm1480_controller.io_map_base);
254 isa_slot_offset = (unsigned long) 255 isa_slot_offset = (unsigned long)
255 ioremap(A_BCM1480_PHYS_PCI_MEM_MATCH_BYTES, 1024*1024); 256 ioremap(A_BCM1480_PHYS_PCI_MEM_MATCH_BYTES, 1024*1024);
256 257
diff --git a/arch/mips/pci/pci-ip27.c b/arch/mips/pci/pci-ip27.c
index a322543ac34e..bb64828a92fe 100644
--- a/arch/mips/pci/pci-ip27.c
+++ b/arch/mips/pci/pci-ip27.c
@@ -40,7 +40,7 @@ int irq_to_slot[MAX_PCI_BUSSES * MAX_DEVICES_PER_PCIBUS];
40 40
41extern struct pci_ops bridge_pci_ops; 41extern struct pci_ops bridge_pci_ops;
42 42
43int __init bridge_probe(nasid_t nasid, int widget_id, int masterwid) 43int __cpuinit bridge_probe(nasid_t nasid, int widget_id, int masterwid)
44{ 44{
45 unsigned long offset = NODE_OFFSET(nasid); 45 unsigned long offset = NODE_OFFSET(nasid);
46 struct bridge_controller *bc; 46 struct bridge_controller *bc;
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c
index f9471d77c096..358ad6210949 100644
--- a/arch/mips/pci/pci.c
+++ b/arch/mips/pci/pci.c
@@ -260,7 +260,7 @@ static void pcibios_fixup_device_resources(struct pci_dev *dev,
260 } 260 }
261} 261}
262 262
263void pcibios_fixup_bus(struct pci_bus *bus) 263void __devinit pcibios_fixup_bus(struct pci_bus *bus)
264{ 264{
265 /* Propagate hose info into the subordinate devices. */ 265 /* Propagate hose info into the subordinate devices. */
266 266
diff --git a/arch/mips/pmc-sierra/yosemite/smp.c b/arch/mips/pmc-sierra/yosemite/smp.c
index 653f3ec61cab..3a7df647ca77 100644
--- a/arch/mips/pmc-sierra/yosemite/smp.c
+++ b/arch/mips/pmc-sierra/yosemite/smp.c
@@ -7,10 +7,10 @@
7 7
8#define LAUNCHSTACK_SIZE 256 8#define LAUNCHSTACK_SIZE 256
9 9
10static __initdata DEFINE_SPINLOCK(launch_lock); 10static __cpuinitdata DEFINE_SPINLOCK(launch_lock);
11 11
12static unsigned long secondary_sp __initdata; 12static unsigned long secondary_sp __cpuinitdata;
13static unsigned long secondary_gp __initdata; 13static unsigned long secondary_gp __cpuinitdata;
14 14
15static unsigned char launchstack[LAUNCHSTACK_SIZE] __initdata 15static unsigned char launchstack[LAUNCHSTACK_SIZE] __initdata
16 __attribute__((aligned(2 * sizeof(long)))); 16 __attribute__((aligned(2 * sizeof(long))));
diff --git a/arch/mips/sgi-ip27/ip27-init.c b/arch/mips/sgi-ip27/ip27-init.c
index a49e7c85f724..7093e7c573a4 100644
--- a/arch/mips/sgi-ip27/ip27-init.c
+++ b/arch/mips/sgi-ip27/ip27-init.c
@@ -53,7 +53,7 @@ extern void pcibr_setup(cnodeid_t);
53 53
54extern void xtalk_probe_node(cnodeid_t nid); 54extern void xtalk_probe_node(cnodeid_t nid);
55 55
56static void __init per_hub_init(cnodeid_t cnode) 56static void __cpuinit per_hub_init(cnodeid_t cnode)
57{ 57{
58 struct hub_data *hub = hub_data(cnode); 58 struct hub_data *hub = hub_data(cnode);
59 nasid_t nasid = COMPACT_TO_NASID_NODEID(cnode); 59 nasid_t nasid = COMPACT_TO_NASID_NODEID(cnode);
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c
index 08d45369be45..25d3baf0ebc4 100644
--- a/arch/mips/sgi-ip27/ip27-timer.c
+++ b/arch/mips/sgi-ip27/ip27-timer.c
@@ -285,7 +285,7 @@ void __cpuinit cpu_time_init(void)
285 set_c0_status(SRB_TIMOCLK); 285 set_c0_status(SRB_TIMOCLK);
286} 286}
287 287
288void __init hub_rtc_init(cnodeid_t cnode) 288void __cpuinit hub_rtc_init(cnodeid_t cnode)
289{ 289{
290 /* 290 /*
291 * We only need to initialize the current node. 291 * We only need to initialize the current node.
diff --git a/arch/mips/sgi-ip27/ip27-xtalk.c b/arch/mips/sgi-ip27/ip27-xtalk.c
index fc82f34a32ce..6ae64e8dfc40 100644
--- a/arch/mips/sgi-ip27/ip27-xtalk.c
+++ b/arch/mips/sgi-ip27/ip27-xtalk.c
@@ -22,7 +22,7 @@
22 22
23extern int bridge_probe(nasid_t nasid, int widget, int masterwid); 23extern int bridge_probe(nasid_t nasid, int widget, int masterwid);
24 24
25static int __init probe_one_port(nasid_t nasid, int widget, int masterwid) 25static int __cpuinit probe_one_port(nasid_t nasid, int widget, int masterwid)
26{ 26{
27 widgetreg_t widget_id; 27 widgetreg_t widget_id;
28 xwidget_part_num_t partnum; 28 xwidget_part_num_t partnum;
@@ -46,7 +46,7 @@ static int __init probe_one_port(nasid_t nasid, int widget, int masterwid)
46 return 0; 46 return 0;
47} 47}
48 48
49static int __init xbow_probe(nasid_t nasid) 49static int __cpuinit xbow_probe(nasid_t nasid)
50{ 50{
51 lboard_t *brd; 51 lboard_t *brd;
52 klxbow_t *xbow_p; 52 klxbow_t *xbow_p;
@@ -99,7 +99,7 @@ static int __init xbow_probe(nasid_t nasid)
99 return 0; 99 return 0;
100} 100}
101 101
102void __init xtalk_probe_node(cnodeid_t nid) 102void __cpuinit xtalk_probe_node(cnodeid_t nid)
103{ 103{
104 volatile u64 hubreg; 104 volatile u64 hubreg;
105 nasid_t nasid; 105 nasid_t nasid;
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index e4e13e0bca16..ef12db07b22f 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -90,6 +90,7 @@ config PPC
90 select HAVE_IDE 90 select HAVE_IDE
91 select HAVE_OPROFILE 91 select HAVE_OPROFILE
92 select HAVE_KPROBES 92 select HAVE_KPROBES
93 select HAVE_KRETPROBES
93 select HAVE_LMB 94 select HAVE_LMB
94 95
95config EARLY_PRINTK 96config EARLY_PRINTK
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 1c6ce3536e4c..ab5cfe8ef988 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -155,7 +155,7 @@ all: zImage
155 155
156CPPFLAGS_vmlinux.lds := -Upowerpc 156CPPFLAGS_vmlinux.lds := -Upowerpc
157 157
158BOOT_TARGETS = zImage zImage.initrd uImage treeImage.% cuImage.% 158BOOT_TARGETS = zImage zImage.initrd uImage zImage% dtbImage% treeImage.% cuImage.%
159 159
160PHONY += $(BOOT_TARGETS) 160PHONY += $(BOOT_TARGETS)
161 161
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index e3993a607584..4974d9e56ead 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -186,7 +186,7 @@ quiet_cmd_wrap = WRAP $@
186image-$(CONFIG_PPC_PSERIES) += zImage.pseries 186image-$(CONFIG_PPC_PSERIES) += zImage.pseries
187image-$(CONFIG_PPC_MAPLE) += zImage.pseries 187image-$(CONFIG_PPC_MAPLE) += zImage.pseries
188image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries 188image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries
189image-$(CONFIG_PPC_PS3) += zImage-dtb.ps3 189image-$(CONFIG_PPC_PS3) += dtbImage.ps3
190image-$(CONFIG_PPC_CELLEB) += zImage.pseries 190image-$(CONFIG_PPC_CELLEB) += zImage.pseries
191image-$(CONFIG_PPC_CHRP) += zImage.chrp 191image-$(CONFIG_PPC_CHRP) += zImage.chrp
192image-$(CONFIG_PPC_EFIKA) += zImage.chrp 192image-$(CONFIG_PPC_EFIKA) += zImage.chrp
@@ -205,7 +205,7 @@ image-$(CONFIG_DEFAULT_UIMAGE) += uImage
205# 205#
206 206
207# Board ports in arch/powerpc/platform/40x/Kconfig 207# Board ports in arch/powerpc/platform/40x/Kconfig
208image-$(CONFIG_EP405) += zImage-dtb.ep405 208image-$(CONFIG_EP405) += dtbImage.ep405
209image-$(CONFIG_WALNUT) += treeImage.walnut 209image-$(CONFIG_WALNUT) += treeImage.walnut
210 210
211# Board ports in arch/powerpc/platform/44x/Kconfig 211# Board ports in arch/powerpc/platform/44x/Kconfig
@@ -220,9 +220,9 @@ image-$(CONFIG_WARP) += cuImage.warp
220# Board ports in arch/powerpc/platform/8xx/Kconfig 220# Board ports in arch/powerpc/platform/8xx/Kconfig
221image-$(CONFIG_PPC_MPC86XADS) += cuImage.mpc866ads 221image-$(CONFIG_PPC_MPC86XADS) += cuImage.mpc866ads
222image-$(CONFIG_PPC_MPC885ADS) += cuImage.mpc885ads 222image-$(CONFIG_PPC_MPC885ADS) += cuImage.mpc885ads
223image-$(CONFIG_PPC_EP88XC) += zImage-dtb.ep88xc 223image-$(CONFIG_PPC_EP88XC) += dtbImage.ep88xc
224image-$(CONFIG_PPC_ADDER875) += cuImage.adder875-uboot \ 224image-$(CONFIG_PPC_ADDER875) += cuImage.adder875-uboot \
225 zImage-dtb.adder875-redboot 225 dtbImage.adder875-redboot
226 226
227# Board ports in arch/powerpc/platform/52xx/Kconfig 227# Board ports in arch/powerpc/platform/52xx/Kconfig
228image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b 228image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b
@@ -230,7 +230,7 @@ image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b
230# Board ports in arch/powerpc/platform/82xx/Kconfig 230# Board ports in arch/powerpc/platform/82xx/Kconfig
231image-$(CONFIG_MPC8272_ADS) += cuImage.mpc8272ads 231image-$(CONFIG_MPC8272_ADS) += cuImage.mpc8272ads
232image-$(CONFIG_PQ2FADS) += cuImage.pq2fads 232image-$(CONFIG_PQ2FADS) += cuImage.pq2fads
233image-$(CONFIG_EP8248E) += zImage-dtb.ep8248e 233image-$(CONFIG_EP8248E) += dtbImage.ep8248e
234 234
235# Board ports in arch/powerpc/platform/83xx/Kconfig 235# Board ports in arch/powerpc/platform/83xx/Kconfig
236image-$(CONFIG_MPC832x_MDS) += cuImage.mpc832x_mds 236image-$(CONFIG_MPC832x_MDS) += cuImage.mpc832x_mds
@@ -268,7 +268,8 @@ endif
268 268
269initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-)) 269initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-))
270initrd-y := $(patsubst zImage%, zImage.initrd%, \ 270initrd-y := $(patsubst zImage%, zImage.initrd%, \
271 $(patsubst treeImage%, treeImage.initrd%, $(image-y))) 271 $(patsubst dtbImage%, dtbImage.initrd%, \
272 $(patsubst treeImage%, treeImage.initrd%, $(image-y))))
272initrd-y := $(filter-out $(image-y), $(initrd-y)) 273initrd-y := $(filter-out $(image-y), $(initrd-y))
273targets += $(image-y) $(initrd-y) 274targets += $(image-y) $(initrd-y)
274 275
@@ -283,10 +284,11 @@ $(obj)/zImage.initrd.%: vmlinux $(wrapperbits)
283$(obj)/zImage.%: vmlinux $(wrapperbits) 284$(obj)/zImage.%: vmlinux $(wrapperbits)
284 $(call if_changed,wrap,$*) 285 $(call if_changed,wrap,$*)
285 286
286$(obj)/zImage-dtb.initrd.%: vmlinux $(wrapperbits) $(dtstree)/%.dts 287# dtbImage% - a dtbImage is a zImage with an embedded device tree blob
288$(obj)/dtbImage.initrd.%: vmlinux $(wrapperbits) $(dtstree)/%.dts
287 $(call if_changed,wrap,$*,$(dtstree)/$*.dts,,$(obj)/ramdisk.image.gz) 289 $(call if_changed,wrap,$*,$(dtstree)/$*.dts,,$(obj)/ramdisk.image.gz)
288 290
289$(obj)/zImage-dtb.%: vmlinux $(wrapperbits) $(dtstree)/%.dts 291$(obj)/dtbImage.%: vmlinux $(wrapperbits) $(dtstree)/%.dts
290 $(call if_changed,wrap,$*,$(dtstree)/$*.dts) 292 $(call if_changed,wrap,$*,$(dtstree)/$*.dts)
291 293
292# This cannot be in the root of $(src) as the zImage rule always adds a $(obj) 294# This cannot be in the root of $(src) as the zImage rule always adds a $(obj)
diff --git a/arch/powerpc/boot/cuboot-bamboo.c b/arch/powerpc/boot/cuboot-bamboo.c
index 900c7ff2b7e9..b5c30f766c40 100644
--- a/arch/powerpc/boot/cuboot-bamboo.c
+++ b/arch/powerpc/boot/cuboot-bamboo.c
@@ -17,6 +17,7 @@
17#include "44x.h" 17#include "44x.h"
18#include "cuboot.h" 18#include "cuboot.h"
19 19
20#define TARGET_4xx
20#define TARGET_44x 21#define TARGET_44x
21#include "ppcboot.h" 22#include "ppcboot.h"
22 23
diff --git a/arch/powerpc/boot/cuboot-ebony.c b/arch/powerpc/boot/cuboot-ebony.c
index c5f37ce172ea..56564ba37f62 100644
--- a/arch/powerpc/boot/cuboot-ebony.c
+++ b/arch/powerpc/boot/cuboot-ebony.c
@@ -17,6 +17,7 @@
17#include "44x.h" 17#include "44x.h"
18#include "cuboot.h" 18#include "cuboot.h"
19 19
20#define TARGET_4xx
20#define TARGET_44x 21#define TARGET_44x
21#include "ppcboot.h" 22#include "ppcboot.h"
22 23
diff --git a/arch/powerpc/boot/cuboot-katmai.c b/arch/powerpc/boot/cuboot-katmai.c
index c021167f9381..5434d70b5660 100644
--- a/arch/powerpc/boot/cuboot-katmai.c
+++ b/arch/powerpc/boot/cuboot-katmai.c
@@ -22,6 +22,7 @@
22#include "44x.h" 22#include "44x.h"
23#include "cuboot.h" 23#include "cuboot.h"
24 24
25#define TARGET_4xx
25#define TARGET_44x 26#define TARGET_44x
26#include "ppcboot.h" 27#include "ppcboot.h"
27 28
diff --git a/arch/powerpc/boot/cuboot-taishan.c b/arch/powerpc/boot/cuboot-taishan.c
index f66455a45ab1..b55b80467eed 100644
--- a/arch/powerpc/boot/cuboot-taishan.c
+++ b/arch/powerpc/boot/cuboot-taishan.c
@@ -21,7 +21,9 @@
21#include "dcr.h" 21#include "dcr.h"
22#include "4xx.h" 22#include "4xx.h"
23 23
24#define TARGET_4xx
24#define TARGET_44x 25#define TARGET_44x
26#define TARGET_440GX
25#include "ppcboot.h" 27#include "ppcboot.h"
26 28
27static bd_t bd; 29static bd_t bd;
diff --git a/arch/powerpc/boot/cuboot-warp.c b/arch/powerpc/boot/cuboot-warp.c
index bdedebe1bc14..3db93e85e9ea 100644
--- a/arch/powerpc/boot/cuboot-warp.c
+++ b/arch/powerpc/boot/cuboot-warp.c
@@ -11,6 +11,7 @@
11#include "4xx.h" 11#include "4xx.h"
12#include "cuboot.h" 12#include "cuboot.h"
13 13
14#define TARGET_4xx
14#define TARGET_44x 15#define TARGET_44x
15#include "ppcboot.h" 16#include "ppcboot.h"
16 17
diff --git a/arch/powerpc/boot/dts/haleakala.dts b/arch/powerpc/boot/dts/haleakala.dts
index 5dd3d15f0feb..ae68fefc01b6 100644
--- a/arch/powerpc/boot/dts/haleakala.dts
+++ b/arch/powerpc/boot/dts/haleakala.dts
@@ -235,7 +235,7 @@
235 #interrupt-cells = <1>; 235 #interrupt-cells = <1>;
236 #size-cells = <2>; 236 #size-cells = <2>;
237 #address-cells = <3>; 237 #address-cells = <3>;
238 compatible = "ibm,plb-pciex-405exr", "ibm,plb-pciex"; 238 compatible = "ibm,plb-pciex-405ex", "ibm,plb-pciex";
239 primary; 239 primary;
240 port = <0>; /* port number */ 240 port = <0>; /* port number */
241 reg = <a0000000 20000000 /* Config space access */ 241 reg = <a0000000 20000000 /* Config space access */
diff --git a/arch/powerpc/boot/dts/katmai.dts b/arch/powerpc/boot/dts/katmai.dts
index bc32ac7250ec..fc86e5a3afc4 100644
--- a/arch/powerpc/boot/dts/katmai.dts
+++ b/arch/powerpc/boot/dts/katmai.dts
@@ -38,8 +38,8 @@
38 timebase-frequency = <0>; /* Filled in by zImage */ 38 timebase-frequency = <0>; /* Filled in by zImage */
39 i-cache-line-size = <20>; 39 i-cache-line-size = <20>;
40 d-cache-line-size = <20>; 40 d-cache-line-size = <20>;
41 i-cache-size = <20000>; 41 i-cache-size = <8000>;
42 d-cache-size = <20000>; 42 d-cache-size = <8000>;
43 dcr-controller; 43 dcr-controller;
44 dcr-access-method = "native"; 44 dcr-access-method = "native";
45 }; 45 };
@@ -136,11 +136,11 @@
136 }; 136 };
137 137
138 POB0: opb { 138 POB0: opb {
139 compatible = "ibm,opb-440spe", "ibm,opb-440gp", "ibm,opb"; 139 compatible = "ibm,opb-440spe", "ibm,opb-440gp", "ibm,opb";
140 #address-cells = <1>; 140 #address-cells = <1>;
141 #size-cells = <1>; 141 #size-cells = <1>;
142 ranges = <00000000 4 e0000000 20000000>; 142 ranges = <00000000 4 e0000000 20000000>;
143 clock-frequency = <0>; /* Filled in by zImage */ 143 clock-frequency = <0>; /* Filled in by zImage */
144 144
145 EBC0: ebc { 145 EBC0: ebc {
146 compatible = "ibm,ebc-440spe", "ibm,ebc-440gp", "ibm,ebc"; 146 compatible = "ibm,ebc-440spe", "ibm,ebc-440gp", "ibm,ebc";
@@ -153,38 +153,38 @@
153 }; 153 };
154 154
155 UART0: serial@10000200 { 155 UART0: serial@10000200 {
156 device_type = "serial"; 156 device_type = "serial";
157 compatible = "ns16550"; 157 compatible = "ns16550";
158 reg = <10000200 8>; 158 reg = <10000200 8>;
159 virtual-reg = <a0000200>; 159 virtual-reg = <a0000200>;
160 clock-frequency = <0>; /* Filled in by zImage */ 160 clock-frequency = <0>; /* Filled in by zImage */
161 current-speed = <1c200>; 161 current-speed = <1c200>;
162 interrupt-parent = <&UIC0>; 162 interrupt-parent = <&UIC0>;
163 interrupts = <0 4>; 163 interrupts = <0 4>;
164 }; 164 };
165 165
166 UART1: serial@10000300 { 166 UART1: serial@10000300 {
167 device_type = "serial"; 167 device_type = "serial";
168 compatible = "ns16550"; 168 compatible = "ns16550";
169 reg = <10000300 8>; 169 reg = <10000300 8>;
170 virtual-reg = <a0000300>; 170 virtual-reg = <a0000300>;
171 clock-frequency = <0>; 171 clock-frequency = <0>;
172 current-speed = <0>; 172 current-speed = <0>;
173 interrupt-parent = <&UIC0>; 173 interrupt-parent = <&UIC0>;
174 interrupts = <1 4>; 174 interrupts = <1 4>;
175 }; 175 };
176 176
177 177
178 UART2: serial@10000600 { 178 UART2: serial@10000600 {
179 device_type = "serial"; 179 device_type = "serial";
180 compatible = "ns16550"; 180 compatible = "ns16550";
181 reg = <10000600 8>; 181 reg = <10000600 8>;
182 virtual-reg = <a0000600>; 182 virtual-reg = <a0000600>;
183 clock-frequency = <0>; 183 clock-frequency = <0>;
184 current-speed = <0>; 184 current-speed = <0>;
185 interrupt-parent = <&UIC1>; 185 interrupt-parent = <&UIC1>;
186 interrupts = <5 4>; 186 interrupts = <5 4>;
187 }; 187 };
188 188
189 IIC0: i2c@10000400 { 189 IIC0: i2c@10000400 {
190 compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic"; 190 compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts
index a3637fff73cc..49c05e97386c 100644
--- a/arch/powerpc/boot/dts/mpc8377_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8377_mds.dts
@@ -47,6 +47,72 @@
47 reg = <0x00000000 0x20000000>; // 512MB at 0 47 reg = <0x00000000 0x20000000>; // 512MB at 0
48 }; 48 };
49 49
50 localbus@e0005000 {
51 #address-cells = <2>;
52 #size-cells = <1>;
53 compatible = "fsl,mpc8377-elbc", "fsl,elbc", "simple-bus";
54 reg = <0xe0005000 0x1000>;
55 interrupts = <77 0x8>;
56 interrupt-parent = <&ipic>;
57
58 // booting from NOR flash
59 ranges = <0 0x0 0xfe000000 0x02000000
60 1 0x0 0xf8000000 0x00008000
61 3 0x0 0xe0600000 0x00008000>;
62
63 flash@0,0 {
64 #address-cells = <1>;
65 #size-cells = <1>;
66 compatible = "cfi-flash";
67 reg = <0 0x0 0x2000000>;
68 bank-width = <2>;
69 device-width = <1>;
70
71 u-boot@0 {
72 reg = <0x0 0x100000>;
73 read-only;
74 };
75
76 fs@100000 {
77 reg = <0x100000 0x800000>;
78 };
79
80 kernel@1d00000 {
81 reg = <0x1d00000 0x200000>;
82 };
83
84 dtb@1f00000 {
85 reg = <0x1f00000 0x100000>;
86 };
87 };
88
89 bcsr@1,0 {
90 reg = <1 0x0 0x8000>;
91 compatible = "fsl,mpc837xmds-bcsr";
92 };
93
94 nand@3,0 {
95 #address-cells = <1>;
96 #size-cells = <1>;
97 compatible = "fsl,mpc8377-fcm-nand",
98 "fsl,elbc-fcm-nand";
99 reg = <3 0x0 0x8000>;
100
101 u-boot@0 {
102 reg = <0x0 0x100000>;
103 read-only;
104 };
105
106 kernel@100000 {
107 reg = <0x100000 0x300000>;
108 };
109
110 fs@400000 {
111 reg = <0x400000 0x1c00000>;
112 };
113 };
114 };
115
50 soc@e0000000 { 116 soc@e0000000 {
51 #address-cells = <1>; 117 #address-cells = <1>;
52 #size-cells = <1>; 118 #size-cells = <1>;
@@ -91,7 +157,6 @@
91 mode = "cpu"; 157 mode = "cpu";
92 }; 158 };
93 159
94 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
95 usb@23000 { 160 usb@23000 {
96 compatible = "fsl-usb2-dr"; 161 compatible = "fsl-usb2-dr";
97 reg = <0x23000 0x1000>; 162 reg = <0x23000 0x1000>;
@@ -99,7 +164,8 @@
99 #size-cells = <0>; 164 #size-cells = <0>;
100 interrupt-parent = <&ipic>; 165 interrupt-parent = <&ipic>;
101 interrupts = <38 0x8>; 166 interrupts = <38 0x8>;
102 phy_type = "utmi_wide"; 167 dr_mode = "host";
168 phy_type = "ulpi";
103 }; 169 };
104 170
105 mdio@24520 { 171 mdio@24520 {
diff --git a/arch/powerpc/boot/dts/mpc8378_mds.dts b/arch/powerpc/boot/dts/mpc8378_mds.dts
index 533e9b06cc8f..1d6ea080ad73 100644
--- a/arch/powerpc/boot/dts/mpc8378_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8378_mds.dts
@@ -47,6 +47,72 @@
47 reg = <0x00000000 0x20000000>; // 512MB at 0 47 reg = <0x00000000 0x20000000>; // 512MB at 0
48 }; 48 };
49 49
50 localbus@e0005000 {
51 #address-cells = <2>;
52 #size-cells = <1>;
53 compatible = "fsl,mpc8378-elbc", "fsl,elbc", "simple-bus";
54 reg = <0xe0005000 0x1000>;
55 interrupts = <77 0x8>;
56 interrupt-parent = <&ipic>;
57
58 // booting from NOR flash
59 ranges = <0 0x0 0xfe000000 0x02000000
60 1 0x0 0xf8000000 0x00008000
61 3 0x0 0xe0600000 0x00008000>;
62
63 flash@0,0 {
64 #address-cells = <1>;
65 #size-cells = <1>;
66 compatible = "cfi-flash";
67 reg = <0 0x0 0x2000000>;
68 bank-width = <2>;
69 device-width = <1>;
70
71 u-boot@0 {
72 reg = <0x0 0x100000>;
73 read-only;
74 };
75
76 fs@100000 {
77 reg = <0x100000 0x800000>;
78 };
79
80 kernel@1d00000 {
81 reg = <0x1d00000 0x200000>;
82 };
83
84 dtb@1f00000 {
85 reg = <0x1f00000 0x100000>;
86 };
87 };
88
89 bcsr@1,0 {
90 reg = <1 0x0 0x8000>;
91 compatible = "fsl,mpc837xmds-bcsr";
92 };
93
94 nand@3,0 {
95 #address-cells = <1>;
96 #size-cells = <1>;
97 compatible = "fsl,mpc8378-fcm-nand",
98 "fsl,elbc-fcm-nand";
99 reg = <3 0x0 0x8000>;
100
101 u-boot@0 {
102 reg = <0x0 0x100000>;
103 read-only;
104 };
105
106 kernel@100000 {
107 reg = <0x100000 0x300000>;
108 };
109
110 fs@400000 {
111 reg = <0x400000 0x1c00000>;
112 };
113 };
114 };
115
50 soc@e0000000 { 116 soc@e0000000 {
51 #address-cells = <1>; 117 #address-cells = <1>;
52 #size-cells = <1>; 118 #size-cells = <1>;
@@ -91,7 +157,6 @@
91 mode = "cpu"; 157 mode = "cpu";
92 }; 158 };
93 159
94 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
95 usb@23000 { 160 usb@23000 {
96 compatible = "fsl-usb2-dr"; 161 compatible = "fsl-usb2-dr";
97 reg = <0x23000 0x1000>; 162 reg = <0x23000 0x1000>;
@@ -99,7 +164,8 @@
99 #size-cells = <0>; 164 #size-cells = <0>;
100 interrupt-parent = <&ipic>; 165 interrupt-parent = <&ipic>;
101 interrupts = <38 0x8>; 166 interrupts = <38 0x8>;
102 phy_type = "utmi_wide"; 167 dr_mode = "host";
168 phy_type = "ulpi";
103 }; 169 };
104 170
105 mdio@24520 { 171 mdio@24520 {
diff --git a/arch/powerpc/boot/dts/mpc8379_mds.dts b/arch/powerpc/boot/dts/mpc8379_mds.dts
index c270685bbde4..fdb4a9255b24 100644
--- a/arch/powerpc/boot/dts/mpc8379_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8379_mds.dts
@@ -47,6 +47,72 @@
47 reg = <0x00000000 0x20000000>; // 512MB at 0 47 reg = <0x00000000 0x20000000>; // 512MB at 0
48 }; 48 };
49 49
50 localbus@e0005000 {
51 #address-cells = <2>;
52 #size-cells = <1>;
53 compatible = "fsl,mpc8379-elbc", "fsl,elbc", "simple-bus";
54 reg = <0xe0005000 0x1000>;
55 interrupts = <77 0x8>;
56 interrupt-parent = <&ipic>;
57
58 // booting from NOR flash
59 ranges = <0 0x0 0xfe000000 0x02000000
60 1 0x0 0xf8000000 0x00008000
61 3 0x0 0xe0600000 0x00008000>;
62
63 flash@0,0 {
64 #address-cells = <1>;
65 #size-cells = <1>;
66 compatible = "cfi-flash";
67 reg = <0 0x0 0x2000000>;
68 bank-width = <2>;
69 device-width = <1>;
70
71 u-boot@0 {
72 reg = <0x0 0x100000>;
73 read-only;
74 };
75
76 fs@100000 {
77 reg = <0x100000 0x800000>;
78 };
79
80 kernel@1d00000 {
81 reg = <0x1d00000 0x200000>;
82 };
83
84 dtb@1f00000 {
85 reg = <0x1f00000 0x100000>;
86 };
87 };
88
89 bcsr@1,0 {
90 reg = <1 0x0 0x8000>;
91 compatible = "fsl,mpc837xmds-bcsr";
92 };
93
94 nand@3,0 {
95 #address-cells = <1>;
96 #size-cells = <1>;
97 compatible = "fsl,mpc8379-fcm-nand",
98 "fsl,elbc-fcm-nand";
99 reg = <3 0x0 0x8000>;
100
101 u-boot@0 {
102 reg = <0x0 0x100000>;
103 read-only;
104 };
105
106 kernel@100000 {
107 reg = <0x100000 0x300000>;
108 };
109
110 fs@400000 {
111 reg = <0x400000 0x1c00000>;
112 };
113 };
114 };
115
50 soc@e0000000 { 116 soc@e0000000 {
51 #address-cells = <1>; 117 #address-cells = <1>;
52 #size-cells = <1>; 118 #size-cells = <1>;
@@ -91,7 +157,6 @@
91 mode = "cpu"; 157 mode = "cpu";
92 }; 158 };
93 159
94 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
95 usb@23000 { 160 usb@23000 {
96 compatible = "fsl-usb2-dr"; 161 compatible = "fsl-usb2-dr";
97 reg = <0x23000 0x1000>; 162 reg = <0x23000 0x1000>;
@@ -99,7 +164,8 @@
99 #size-cells = <0>; 164 #size-cells = <0>;
100 interrupt-parent = <&ipic>; 165 interrupt-parent = <&ipic>;
101 interrupts = <38 0x8>; 166 interrupts = <38 0x8>;
102 phy_type = "utmi_wide"; 167 dr_mode = "host";
168 phy_type = "ulpi";
103 }; 169 };
104 170
105 mdio@24520 { 171 mdio@24520 {
diff --git a/arch/powerpc/boot/dts/sbc8548.dts b/arch/powerpc/boot/dts/sbc8548.dts
index 14be38ad5d4b..b86e65d926c1 100644
--- a/arch/powerpc/boot/dts/sbc8548.dts
+++ b/arch/powerpc/boot/dts/sbc8548.dts
@@ -184,11 +184,17 @@
184 cell-index = <0>; 184 cell-index = <0>;
185 interrupt-map-mask = <0xf800 0x0 0x0 0x7>; 185 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
186 interrupt-map = < 186 interrupt-map = <
187 /* IDSEL 0x01 (PCI-X slot) */ 187 /* IDSEL 0x01 (PCI-X slot) @66MHz */
188 0x0800 0x0 0x0 0x1 &mpic 0x0 0x1 188 0x0800 0x0 0x0 0x1 &mpic 0x2 0x1
189 0x0800 0x0 0x0 0x2 &mpic 0x1 0x1 189 0x0800 0x0 0x0 0x2 &mpic 0x3 0x1
190 0x0800 0x0 0x0 0x3 &mpic 0x2 0x1 190 0x0800 0x0 0x0 0x3 &mpic 0x4 0x1
191 0x0800 0x0 0x0 0x4 &mpic 0x3 0x1>; 191 0x0800 0x0 0x0 0x4 &mpic 0x1 0x1
192
193 /* IDSEL 0x11 (PCI, 3.3V 32bit) @33MHz */
194 0x8800 0x0 0x0 0x1 &mpic 0x2 0x1
195 0x8800 0x0 0x0 0x2 &mpic 0x3 0x1
196 0x8800 0x0 0x0 0x3 &mpic 0x4 0x1
197 0x8800 0x0 0x0 0x4 &mpic 0x1 0x1>;
192 198
193 interrupt-parent = <&mpic>; 199 interrupt-parent = <&mpic>;
194 interrupts = <0x18 0x2>; 200 interrupts = <0x18 0x2>;
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
index c3178155311b..d50e498a072b 100755
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -191,10 +191,14 @@ ps3)
191 ksection=.kernel:vmlinux.bin 191 ksection=.kernel:vmlinux.bin
192 isection=.kernel:initrd 192 isection=.kernel:initrd
193 ;; 193 ;;
194ep88xc|ep405|redboot*|ep8248e) 194ep88xc|ep405|ep8248e)
195 platformo="$object/fixed-head.o $object/$platform.o" 195 platformo="$object/fixed-head.o $object/$platform.o"
196 binary=y 196 binary=y
197 ;; 197 ;;
198adder875-redboot)
199 platformo="$object/fixed-head.o $object/redboot-8xx.o"
200 binary=y
201 ;;
198esac 202esac
199 203
200vmz="$tmpdir/`basename \"$kernel\"`.$ext" 204vmz="$tmpdir/`basename \"$kernel\"`.$ext"
diff --git a/arch/powerpc/configs/adder875-uboot_defconfig b/arch/powerpc/configs/adder875-uboot_defconfig
deleted file mode 100644
index 1faf7ef59a23..000000000000
--- a/arch/powerpc/configs/adder875-uboot_defconfig
+++ /dev/null
@@ -1,798 +0,0 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24-rc6
4# Thu Jan 17 16:17:18 2008
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11# CONFIG_6xx is not set
12# CONFIG_PPC_85xx is not set
13CONFIG_PPC_8xx=y
14# CONFIG_40x is not set
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_8xx=y
18# CONFIG_PPC_MM_SLICES is not set
19CONFIG_NOT_COHERENT_CACHE=y
20CONFIG_PPC32=y
21CONFIG_WORD_SIZE=32
22CONFIG_PPC_MERGE=y
23CONFIG_MMU=y
24CONFIG_GENERIC_CMOS_UPDATE=y
25CONFIG_GENERIC_TIME=y
26CONFIG_GENERIC_TIME_VSYSCALL=y
27CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y
29CONFIG_IRQ_PER_CPU=y
30CONFIG_RWSEM_XCHGADD_ALGORITHM=y
31CONFIG_ARCH_HAS_ILOG2_U32=y
32CONFIG_GENERIC_HWEIGHT=y
33CONFIG_GENERIC_CALIBRATE_DELAY=y
34CONFIG_GENERIC_FIND_NEXT_BIT=y
35# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
36CONFIG_PPC=y
37CONFIG_EARLY_PRINTK=y
38CONFIG_GENERIC_NVRAM=y
39CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
40CONFIG_ARCH_MAY_HAVE_PC_FDC=y
41CONFIG_PPC_OF=y
42CONFIG_OF=y
43# CONFIG_PPC_UDBG_16550 is not set
44# CONFIG_GENERIC_TBSYNC is not set
45CONFIG_AUDIT_ARCH=y
46CONFIG_GENERIC_BUG=y
47# CONFIG_DEFAULT_UIMAGE is not set
48CONFIG_REDBOOT=y
49# CONFIG_PPC_DCR_NATIVE is not set
50# CONFIG_PPC_DCR_MMIO is not set
51CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
52
53#
54# General setup
55#
56CONFIG_EXPERIMENTAL=y
57CONFIG_BROKEN_ON_SMP=y
58CONFIG_INIT_ENV_ARG_LIMIT=32
59CONFIG_LOCALVERSION=""
60CONFIG_LOCALVERSION_AUTO=y
61# CONFIG_SWAP is not set
62CONFIG_SYSVIPC=y
63CONFIG_SYSVIPC_SYSCTL=y
64# CONFIG_POSIX_MQUEUE is not set
65# CONFIG_BSD_PROCESS_ACCT is not set
66# CONFIG_TASKSTATS is not set
67# CONFIG_USER_NS is not set
68# CONFIG_PID_NS is not set
69# CONFIG_AUDIT is not set
70# CONFIG_IKCONFIG is not set
71CONFIG_LOG_BUF_SHIFT=14
72# CONFIG_CGROUPS is not set
73CONFIG_FAIR_GROUP_SCHED=y
74CONFIG_FAIR_USER_SCHED=y
75# CONFIG_FAIR_CGROUP_SCHED is not set
76CONFIG_SYSFS_DEPRECATED=y
77# CONFIG_RELAY is not set
78# CONFIG_BLK_DEV_INITRD is not set
79# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
80CONFIG_SYSCTL=y
81CONFIG_EMBEDDED=y
82# CONFIG_SYSCTL_SYSCALL is not set
83CONFIG_KALLSYMS=y
84# CONFIG_KALLSYMS_ALL is not set
85# CONFIG_KALLSYMS_EXTRA_PASS is not set
86CONFIG_HOTPLUG=y
87CONFIG_PRINTK=y
88CONFIG_BUG=y
89# CONFIG_ELF_CORE is not set
90# CONFIG_BASE_FULL is not set
91# CONFIG_FUTEX is not set
92CONFIG_ANON_INODES=y
93CONFIG_EPOLL=y
94CONFIG_SIGNALFD=y
95CONFIG_EVENTFD=y
96CONFIG_SHMEM=y
97# CONFIG_VM_EVENT_COUNTERS is not set
98CONFIG_SLUB_DEBUG=y
99# CONFIG_SLAB is not set
100CONFIG_SLUB=y
101# CONFIG_SLOB is not set
102# CONFIG_TINY_SHMEM is not set
103CONFIG_BASE_SMALL=1
104# CONFIG_MODULES is not set
105CONFIG_BLOCK=y
106# CONFIG_LBD is not set
107# CONFIG_BLK_DEV_IO_TRACE is not set
108# CONFIG_LSF is not set
109# CONFIG_BLK_DEV_BSG is not set
110
111#
112# IO Schedulers
113#
114CONFIG_IOSCHED_NOOP=y
115# CONFIG_IOSCHED_AS is not set
116CONFIG_IOSCHED_DEADLINE=y
117# CONFIG_IOSCHED_CFQ is not set
118# CONFIG_DEFAULT_AS is not set
119CONFIG_DEFAULT_DEADLINE=y
120# CONFIG_DEFAULT_CFQ is not set
121# CONFIG_DEFAULT_NOOP is not set
122CONFIG_DEFAULT_IOSCHED="deadline"
123
124#
125# Platform support
126#
127# CONFIG_PPC_MPC52xx is not set
128# CONFIG_PPC_MPC5200 is not set
129# CONFIG_PPC_CELL is not set
130# CONFIG_PPC_CELL_NATIVE is not set
131CONFIG_CPM1=y
132# CONFIG_MPC8XXFADS is not set
133# CONFIG_MPC86XADS is not set
134# CONFIG_MPC885ADS is not set
135# CONFIG_PPC_EP88XC is not set
136CONFIG_PPC_ADDER875=y
137
138#
139# MPC8xx CPM Options
140#
141
142#
143# Generic MPC8xx Options
144#
145CONFIG_8xx_COPYBACK=y
146# CONFIG_8xx_CPU6 is not set
147CONFIG_8xx_CPU15=y
148CONFIG_NO_UCODE_PATCH=y
149# CONFIG_USB_SOF_UCODE_PATCH is not set
150# CONFIG_I2C_SPI_UCODE_PATCH is not set
151# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set
152# CONFIG_PQ2ADS is not set
153# CONFIG_MPIC is not set
154# CONFIG_MPIC_WEIRD is not set
155# CONFIG_PPC_I8259 is not set
156# CONFIG_PPC_RTAS is not set
157# CONFIG_MMIO_NVRAM is not set
158# CONFIG_PPC_MPC106 is not set
159# CONFIG_PPC_970_NAP is not set
160# CONFIG_PPC_INDIRECT_IO is not set
161# CONFIG_GENERIC_IOMAP is not set
162# CONFIG_CPU_FREQ is not set
163# CONFIG_CPM2 is not set
164CONFIG_PPC_CPM_NEW_BINDING=y
165# CONFIG_FSL_ULI1575 is not set
166CONFIG_CPM=y
167
168#
169# Kernel options
170#
171# CONFIG_HIGHMEM is not set
172# CONFIG_TICK_ONESHOT is not set
173# CONFIG_NO_HZ is not set
174# CONFIG_HIGH_RES_TIMERS is not set
175CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
176# CONFIG_HZ_100 is not set
177# CONFIG_HZ_250 is not set
178# CONFIG_HZ_300 is not set
179CONFIG_HZ_1000=y
180CONFIG_HZ=1000
181CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set
183# CONFIG_PREEMPT is not set
184CONFIG_BINFMT_ELF=y
185# CONFIG_BINFMT_MISC is not set
186# CONFIG_MATH_EMULATION is not set
187# CONFIG_8XX_MINIMAL_FPEMU is not set
188CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
189CONFIG_ARCH_FLATMEM_ENABLE=y
190CONFIG_ARCH_POPULATES_NODE_MAP=y
191CONFIG_SELECT_MEMORY_MODEL=y
192CONFIG_FLATMEM_MANUAL=y
193# CONFIG_DISCONTIGMEM_MANUAL is not set
194# CONFIG_SPARSEMEM_MANUAL is not set
195CONFIG_FLATMEM=y
196CONFIG_FLAT_NODE_MEM_MAP=y
197# CONFIG_SPARSEMEM_STATIC is not set
198# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
199CONFIG_SPLIT_PTLOCK_CPUS=4
200# CONFIG_RESOURCES_64BIT is not set
201CONFIG_ZONE_DMA_FLAG=1
202CONFIG_BOUNCE=y
203CONFIG_VIRT_TO_BUS=y
204# CONFIG_PROC_DEVICETREE is not set
205# CONFIG_CMDLINE_BOOL is not set
206# CONFIG_PM is not set
207CONFIG_SUSPEND_UP_POSSIBLE=y
208CONFIG_HIBERNATION_UP_POSSIBLE=y
209# CONFIG_SECCOMP is not set
210CONFIG_WANT_DEVICE_TREE=y
211CONFIG_DEVICE_TREE="adder875-uboot.dts"
212CONFIG_ISA_DMA_API=y
213
214#
215# Bus options
216#
217CONFIG_ZONE_DMA=y
218CONFIG_FSL_SOC=y
219# CONFIG_PCI is not set
220# CONFIG_PCI_DOMAINS is not set
221# CONFIG_PCI_SYSCALL is not set
222# CONFIG_PCI_QSPAN is not set
223# CONFIG_ARCH_SUPPORTS_MSI is not set
224# CONFIG_PCCARD is not set
225
226#
227# Advanced setup
228#
229# CONFIG_ADVANCED_OPTIONS is not set
230
231#
232# Default settings for advanced configuration options are used
233#
234CONFIG_HIGHMEM_START=0xfe000000
235CONFIG_LOWMEM_SIZE=0x30000000
236CONFIG_KERNEL_START=0xc0000000
237CONFIG_TASK_SIZE=0x80000000
238CONFIG_CONSISTENT_START=0xfd000000
239CONFIG_CONSISTENT_SIZE=0x00200000
240CONFIG_BOOT_LOAD=0x00400000
241
242#
243# Networking
244#
245CONFIG_NET=y
246
247#
248# Networking options
249#
250CONFIG_PACKET=y
251# CONFIG_PACKET_MMAP is not set
252CONFIG_UNIX=y
253# CONFIG_NET_KEY is not set
254CONFIG_INET=y
255CONFIG_IP_MULTICAST=y
256# CONFIG_IP_ADVANCED_ROUTER is not set
257CONFIG_IP_FIB_HASH=y
258CONFIG_IP_PNP=y
259# CONFIG_IP_PNP_DHCP is not set
260# CONFIG_IP_PNP_BOOTP is not set
261# CONFIG_IP_PNP_RARP is not set
262# CONFIG_NET_IPIP is not set
263# CONFIG_NET_IPGRE is not set
264# CONFIG_IP_MROUTE is not set
265# CONFIG_ARPD is not set
266CONFIG_SYN_COOKIES=y
267# CONFIG_INET_AH is not set
268# CONFIG_INET_ESP is not set
269# CONFIG_INET_IPCOMP is not set
270# CONFIG_INET_XFRM_TUNNEL is not set
271# CONFIG_INET_TUNNEL is not set
272# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
273# CONFIG_INET_XFRM_MODE_TUNNEL is not set
274# CONFIG_INET_XFRM_MODE_BEET is not set
275# CONFIG_INET_LRO is not set
276CONFIG_INET_DIAG=y
277CONFIG_INET_TCP_DIAG=y
278# CONFIG_TCP_CONG_ADVANCED is not set
279CONFIG_TCP_CONG_CUBIC=y
280CONFIG_DEFAULT_TCP_CONG="cubic"
281# CONFIG_TCP_MD5SIG is not set
282# CONFIG_IPV6 is not set
283# CONFIG_INET6_XFRM_TUNNEL is not set
284# CONFIG_INET6_TUNNEL is not set
285# CONFIG_NETWORK_SECMARK is not set
286# CONFIG_NETFILTER is not set
287# CONFIG_IP_DCCP is not set
288# CONFIG_IP_SCTP is not set
289# CONFIG_TIPC is not set
290# CONFIG_ATM is not set
291# CONFIG_BRIDGE is not set
292# CONFIG_VLAN_8021Q is not set
293# CONFIG_DECNET is not set
294# CONFIG_LLC2 is not set
295# CONFIG_IPX is not set
296# CONFIG_ATALK is not set
297# CONFIG_X25 is not set
298# CONFIG_LAPB is not set
299# CONFIG_ECONET is not set
300# CONFIG_WAN_ROUTER is not set
301# CONFIG_NET_SCHED is not set
302
303#
304# Network testing
305#
306# CONFIG_NET_PKTGEN is not set
307# CONFIG_HAMRADIO is not set
308# CONFIG_IRDA is not set
309# CONFIG_BT is not set
310# CONFIG_AF_RXRPC is not set
311
312#
313# Wireless
314#
315# CONFIG_CFG80211 is not set
316# CONFIG_WIRELESS_EXT is not set
317# CONFIG_MAC80211 is not set
318# CONFIG_IEEE80211 is not set
319# CONFIG_RFKILL is not set
320# CONFIG_NET_9P is not set
321
322#
323# Device Drivers
324#
325
326#
327# Generic Driver Options
328#
329CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
330CONFIG_STANDALONE=y
331CONFIG_PREVENT_FIRMWARE_BUILD=y
332# CONFIG_FW_LOADER is not set
333# CONFIG_DEBUG_DRIVER is not set
334# CONFIG_DEBUG_DEVRES is not set
335# CONFIG_SYS_HYPERVISOR is not set
336# CONFIG_CONNECTOR is not set
337CONFIG_MTD=y
338# CONFIG_MTD_DEBUG is not set
339# CONFIG_MTD_CONCAT is not set
340# CONFIG_MTD_PARTITIONS is not set
341
342#
343# User Modules And Translation Layers
344#
345CONFIG_MTD_CHAR=y
346CONFIG_MTD_BLKDEVS=y
347CONFIG_MTD_BLOCK=y
348# CONFIG_FTL is not set
349# CONFIG_NFTL is not set
350# CONFIG_INFTL is not set
351# CONFIG_RFD_FTL is not set
352# CONFIG_SSFDC is not set
353# CONFIG_MTD_OOPS is not set
354
355#
356# RAM/ROM/Flash chip drivers
357#
358CONFIG_MTD_CFI=y
359# CONFIG_MTD_JEDECPROBE is not set
360CONFIG_MTD_GEN_PROBE=y
361# CONFIG_MTD_CFI_ADV_OPTIONS is not set
362CONFIG_MTD_MAP_BANK_WIDTH_1=y
363CONFIG_MTD_MAP_BANK_WIDTH_2=y
364CONFIG_MTD_MAP_BANK_WIDTH_4=y
365# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
366# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
367# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
368CONFIG_MTD_CFI_I1=y
369CONFIG_MTD_CFI_I2=y
370# CONFIG_MTD_CFI_I4 is not set
371# CONFIG_MTD_CFI_I8 is not set
372# CONFIG_MTD_CFI_INTELEXT is not set
373CONFIG_MTD_CFI_AMDSTD=y
374# CONFIG_MTD_CFI_STAA is not set
375CONFIG_MTD_CFI_UTIL=y
376# CONFIG_MTD_RAM is not set
377# CONFIG_MTD_ROM is not set
378# CONFIG_MTD_ABSENT is not set
379
380#
381# Mapping drivers for chip access
382#
383# CONFIG_MTD_COMPLEX_MAPPINGS is not set
384# CONFIG_MTD_PHYSMAP is not set
385CONFIG_MTD_PHYSMAP_OF=y
386# CONFIG_MTD_CFI_FLAGADM is not set
387# CONFIG_MTD_PLATRAM is not set
388
389#
390# Self-contained MTD device drivers
391#
392# CONFIG_MTD_SLRAM is not set
393# CONFIG_MTD_PHRAM is not set
394# CONFIG_MTD_MTDRAM is not set
395# CONFIG_MTD_BLOCK2MTD is not set
396
397#
398# Disk-On-Chip Device Drivers
399#
400# CONFIG_MTD_DOC2000 is not set
401# CONFIG_MTD_DOC2001 is not set
402# CONFIG_MTD_DOC2001PLUS is not set
403# CONFIG_MTD_NAND is not set
404# CONFIG_MTD_ONENAND is not set
405
406#
407# UBI - Unsorted block images
408#
409# CONFIG_MTD_UBI is not set
410CONFIG_OF_DEVICE=y
411# CONFIG_PARPORT is not set
412# CONFIG_BLK_DEV is not set
413# CONFIG_MISC_DEVICES is not set
414# CONFIG_IDE is not set
415
416#
417# SCSI device support
418#
419# CONFIG_RAID_ATTRS is not set
420# CONFIG_SCSI is not set
421# CONFIG_SCSI_DMA is not set
422# CONFIG_SCSI_NETLINK is not set
423# CONFIG_ATA is not set
424# CONFIG_MD is not set
425# CONFIG_MACINTOSH_DRIVERS is not set
426CONFIG_NETDEVICES=y
427# CONFIG_NETDEVICES_MULTIQUEUE is not set
428# CONFIG_DUMMY is not set
429# CONFIG_BONDING is not set
430# CONFIG_MACVLAN is not set
431# CONFIG_EQUALIZER is not set
432# CONFIG_TUN is not set
433# CONFIG_VETH is not set
434CONFIG_PHYLIB=y
435
436#
437# MII PHY device drivers
438#
439# CONFIG_MARVELL_PHY is not set
440CONFIG_DAVICOM_PHY=y
441# CONFIG_QSEMI_PHY is not set
442# CONFIG_LXT_PHY is not set
443# CONFIG_CICADA_PHY is not set
444# CONFIG_VITESSE_PHY is not set
445# CONFIG_SMSC_PHY is not set
446# CONFIG_BROADCOM_PHY is not set
447# CONFIG_ICPLUS_PHY is not set
448# CONFIG_FIXED_PHY is not set
449# CONFIG_MDIO_BITBANG is not set
450CONFIG_NET_ETHERNET=y
451CONFIG_MII=y
452# CONFIG_IBM_NEW_EMAC_ZMII is not set
453# CONFIG_IBM_NEW_EMAC_RGMII is not set
454# CONFIG_IBM_NEW_EMAC_TAH is not set
455# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
456# CONFIG_B44 is not set
457CONFIG_FS_ENET=y
458# CONFIG_FS_ENET_HAS_SCC is not set
459CONFIG_FS_ENET_HAS_FEC=y
460CONFIG_FS_ENET_MDIO_FEC=y
461# CONFIG_NETDEV_1000 is not set
462# CONFIG_NETDEV_10000 is not set
463
464#
465# Wireless LAN
466#
467# CONFIG_WLAN_PRE80211 is not set
468# CONFIG_WLAN_80211 is not set
469# CONFIG_WAN is not set
470# CONFIG_PPP is not set
471# CONFIG_SLIP is not set
472# CONFIG_SHAPER is not set
473# CONFIG_NETCONSOLE is not set
474# CONFIG_NETPOLL is not set
475# CONFIG_NET_POLL_CONTROLLER is not set
476# CONFIG_ISDN is not set
477# CONFIG_PHONE is not set
478
479#
480# Input device support
481#
482CONFIG_INPUT=y
483# CONFIG_INPUT_FF_MEMLESS is not set
484# CONFIG_INPUT_POLLDEV is not set
485
486#
487# Userland interfaces
488#
489CONFIG_INPUT_MOUSEDEV=y
490CONFIG_INPUT_MOUSEDEV_PSAUX=y
491CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
492CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
493# CONFIG_INPUT_JOYDEV is not set
494# CONFIG_INPUT_EVDEV is not set
495# CONFIG_INPUT_EVBUG is not set
496
497#
498# Input Device Drivers
499#
500CONFIG_INPUT_KEYBOARD=y
501CONFIG_KEYBOARD_ATKBD=y
502# CONFIG_KEYBOARD_SUNKBD is not set
503# CONFIG_KEYBOARD_LKKBD is not set
504# CONFIG_KEYBOARD_XTKBD is not set
505# CONFIG_KEYBOARD_NEWTON is not set
506# CONFIG_KEYBOARD_STOWAWAY is not set
507CONFIG_INPUT_MOUSE=y
508CONFIG_MOUSE_PS2=y
509CONFIG_MOUSE_PS2_ALPS=y
510CONFIG_MOUSE_PS2_LOGIPS2PP=y
511CONFIG_MOUSE_PS2_SYNAPTICS=y
512CONFIG_MOUSE_PS2_LIFEBOOK=y
513CONFIG_MOUSE_PS2_TRACKPOINT=y
514# CONFIG_MOUSE_PS2_TOUCHKIT is not set
515# CONFIG_MOUSE_SERIAL is not set
516# CONFIG_MOUSE_VSXXXAA is not set
517# CONFIG_INPUT_JOYSTICK is not set
518# CONFIG_INPUT_TABLET is not set
519# CONFIG_INPUT_TOUCHSCREEN is not set
520# CONFIG_INPUT_MISC is not set
521
522#
523# Hardware I/O ports
524#
525CONFIG_SERIO=y
526CONFIG_SERIO_I8042=y
527CONFIG_SERIO_SERPORT=y
528CONFIG_SERIO_LIBPS2=y
529# CONFIG_SERIO_RAW is not set
530# CONFIG_GAMEPORT is not set
531
532#
533# Character devices
534#
535# CONFIG_VT is not set
536# CONFIG_SERIAL_NONSTANDARD is not set
537
538#
539# Serial drivers
540#
541# CONFIG_SERIAL_8250 is not set
542
543#
544# Non-8250 serial port support
545#
546# CONFIG_SERIAL_UARTLITE is not set
547CONFIG_SERIAL_CORE=y
548CONFIG_SERIAL_CORE_CONSOLE=y
549CONFIG_SERIAL_CPM=y
550CONFIG_SERIAL_CPM_CONSOLE=y
551# CONFIG_SERIAL_CPM_SCC1 is not set
552# CONFIG_SERIAL_CPM_SCC2 is not set
553# CONFIG_SERIAL_CPM_SCC3 is not set
554# CONFIG_SERIAL_CPM_SCC4 is not set
555CONFIG_SERIAL_CPM_SMC1=y
556CONFIG_SERIAL_CPM_SMC2=y
557CONFIG_UNIX98_PTYS=y
558# CONFIG_LEGACY_PTYS is not set
559# CONFIG_IPMI_HANDLER is not set
560CONFIG_HW_RANDOM=y
561# CONFIG_NVRAM is not set
562CONFIG_GEN_RTC=y
563# CONFIG_GEN_RTC_X is not set
564# CONFIG_R3964 is not set
565# CONFIG_RAW_DRIVER is not set
566# CONFIG_TCG_TPM is not set
567# CONFIG_I2C is not set
568
569#
570# SPI support
571#
572# CONFIG_SPI is not set
573# CONFIG_SPI_MASTER is not set
574# CONFIG_W1 is not set
575# CONFIG_POWER_SUPPLY is not set
576# CONFIG_HWMON is not set
577# CONFIG_WATCHDOG is not set
578
579#
580# Sonics Silicon Backplane
581#
582CONFIG_SSB_POSSIBLE=y
583# CONFIG_SSB is not set
584
585#
586# Multifunction device drivers
587#
588# CONFIG_MFD_SM501 is not set
589
590#
591# Multimedia devices
592#
593# CONFIG_VIDEO_DEV is not set
594# CONFIG_DVB_CORE is not set
595CONFIG_DAB=y
596
597#
598# Graphics support
599#
600# CONFIG_VGASTATE is not set
601CONFIG_VIDEO_OUTPUT_CONTROL=y
602# CONFIG_FB is not set
603# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
604
605#
606# Display device support
607#
608# CONFIG_DISPLAY_SUPPORT is not set
609
610#
611# Sound
612#
613# CONFIG_SOUND is not set
614# CONFIG_HID_SUPPORT is not set
615# CONFIG_USB_SUPPORT is not set
616# CONFIG_MMC is not set
617# CONFIG_NEW_LEDS is not set
618# CONFIG_EDAC is not set
619# CONFIG_RTC_CLASS is not set
620
621#
622# Userspace I/O
623#
624# CONFIG_UIO is not set
625
626#
627# File systems
628#
629# CONFIG_EXT2_FS is not set
630# CONFIG_EXT3_FS is not set
631# CONFIG_EXT4DEV_FS is not set
632# CONFIG_REISERFS_FS is not set
633# CONFIG_JFS_FS is not set
634# CONFIG_FS_POSIX_ACL is not set
635# CONFIG_XFS_FS is not set
636# CONFIG_GFS2_FS is not set
637# CONFIG_OCFS2_FS is not set
638# CONFIG_MINIX_FS is not set
639# CONFIG_ROMFS_FS is not set
640# CONFIG_INOTIFY is not set
641# CONFIG_QUOTA is not set
642# CONFIG_DNOTIFY is not set
643# CONFIG_AUTOFS_FS is not set
644# CONFIG_AUTOFS4_FS is not set
645# CONFIG_FUSE_FS is not set
646
647#
648# CD-ROM/DVD Filesystems
649#
650# CONFIG_ISO9660_FS is not set
651# CONFIG_UDF_FS is not set
652
653#
654# DOS/FAT/NT Filesystems
655#
656# CONFIG_MSDOS_FS is not set
657# CONFIG_VFAT_FS is not set
658# CONFIG_NTFS_FS is not set
659
660#
661# Pseudo filesystems
662#
663CONFIG_PROC_FS=y
664# CONFIG_PROC_KCORE is not set
665CONFIG_PROC_SYSCTL=y
666CONFIG_SYSFS=y
667CONFIG_TMPFS=y
668# CONFIG_TMPFS_POSIX_ACL is not set
669# CONFIG_HUGETLB_PAGE is not set
670# CONFIG_CONFIGFS_FS is not set
671
672#
673# Miscellaneous filesystems
674#
675# CONFIG_ADFS_FS is not set
676# CONFIG_AFFS_FS is not set
677# CONFIG_HFS_FS is not set
678# CONFIG_HFSPLUS_FS is not set
679# CONFIG_BEFS_FS is not set
680# CONFIG_BFS_FS is not set
681# CONFIG_EFS_FS is not set
682# CONFIG_JFFS2_FS is not set
683CONFIG_CRAMFS=y
684# CONFIG_VXFS_FS is not set
685# CONFIG_HPFS_FS is not set
686# CONFIG_QNX4FS_FS is not set
687# CONFIG_SYSV_FS is not set
688# CONFIG_UFS_FS is not set
689CONFIG_NETWORK_FILESYSTEMS=y
690CONFIG_NFS_FS=y
691CONFIG_NFS_V3=y
692# CONFIG_NFS_V3_ACL is not set
693# CONFIG_NFS_V4 is not set
694# CONFIG_NFS_DIRECTIO is not set
695# CONFIG_NFSD is not set
696CONFIG_ROOT_NFS=y
697CONFIG_LOCKD=y
698CONFIG_LOCKD_V4=y
699CONFIG_NFS_COMMON=y
700CONFIG_SUNRPC=y
701# CONFIG_SUNRPC_BIND34 is not set
702# CONFIG_RPCSEC_GSS_KRB5 is not set
703# CONFIG_RPCSEC_GSS_SPKM3 is not set
704# CONFIG_SMB_FS is not set
705# CONFIG_CIFS is not set
706# CONFIG_NCP_FS is not set
707# CONFIG_CODA_FS is not set
708# CONFIG_AFS_FS is not set
709
710#
711# Partition Types
712#
713CONFIG_PARTITION_ADVANCED=y
714# CONFIG_ACORN_PARTITION is not set
715# CONFIG_OSF_PARTITION is not set
716# CONFIG_AMIGA_PARTITION is not set
717# CONFIG_ATARI_PARTITION is not set
718# CONFIG_MAC_PARTITION is not set
719CONFIG_MSDOS_PARTITION=y
720# CONFIG_BSD_DISKLABEL is not set
721# CONFIG_MINIX_SUBPARTITION is not set
722# CONFIG_SOLARIS_X86_PARTITION is not set
723# CONFIG_UNIXWARE_DISKLABEL is not set
724# CONFIG_LDM_PARTITION is not set
725# CONFIG_SGI_PARTITION is not set
726# CONFIG_ULTRIX_PARTITION is not set
727# CONFIG_SUN_PARTITION is not set
728# CONFIG_KARMA_PARTITION is not set
729# CONFIG_EFI_PARTITION is not set
730# CONFIG_SYSV68_PARTITION is not set
731# CONFIG_NLS is not set
732# CONFIG_DLM is not set
733# CONFIG_UCC_SLOW is not set
734
735#
736# Library routines
737#
738# CONFIG_CRC_CCITT is not set
739# CONFIG_CRC16 is not set
740# CONFIG_CRC_ITU_T is not set
741# CONFIG_CRC32 is not set
742# CONFIG_CRC7 is not set
743# CONFIG_LIBCRC32C is not set
744CONFIG_ZLIB_INFLATE=y
745CONFIG_HAS_IOMEM=y
746CONFIG_HAS_IOPORT=y
747CONFIG_HAS_DMA=y
748CONFIG_INSTRUMENTATION=y
749# CONFIG_PROFILING is not set
750# CONFIG_MARKERS is not set
751
752#
753# Kernel hacking
754#
755# CONFIG_PRINTK_TIME is not set
756CONFIG_ENABLE_WARN_DEPRECATED=y
757CONFIG_ENABLE_MUST_CHECK=y
758CONFIG_MAGIC_SYSRQ=y
759# CONFIG_UNUSED_SYMBOLS is not set
760# CONFIG_DEBUG_FS is not set
761# CONFIG_HEADERS_CHECK is not set
762CONFIG_DEBUG_KERNEL=y
763# CONFIG_DEBUG_SHIRQ is not set
764CONFIG_DETECT_SOFTLOCKUP=y
765CONFIG_SCHED_DEBUG=y
766# CONFIG_SCHEDSTATS is not set
767# CONFIG_TIMER_STATS is not set
768# CONFIG_SLUB_DEBUG_ON is not set
769# CONFIG_DEBUG_SPINLOCK is not set
770# CONFIG_DEBUG_MUTEXES is not set
771# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
772# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
773# CONFIG_DEBUG_KOBJECT is not set
774CONFIG_DEBUG_BUGVERBOSE=y
775CONFIG_DEBUG_INFO=y
776# CONFIG_DEBUG_VM is not set
777# CONFIG_DEBUG_LIST is not set
778# CONFIG_DEBUG_SG is not set
779CONFIG_FORCED_INLINING=y
780# CONFIG_BOOT_PRINTK_DELAY is not set
781# CONFIG_FAULT_INJECTION is not set
782# CONFIG_SAMPLES is not set
783# CONFIG_DEBUG_STACKOVERFLOW is not set
784# CONFIG_DEBUG_STACK_USAGE is not set
785# CONFIG_DEBUG_PAGEALLOC is not set
786# CONFIG_DEBUGGER is not set
787# CONFIG_BDI_SWITCH is not set
788# CONFIG_PPC_EARLY_DEBUG is not set
789
790#
791# Security options
792#
793# CONFIG_KEYS is not set
794# CONFIG_SECURITY is not set
795# CONFIG_SECURITY_FILE_CAPABILITIES is not set
796# CONFIG_CRYPTO is not set
797# CONFIG_PPC_CLOCK is not set
798CONFIG_PPC_LIB_RHEAP=y
diff --git a/arch/powerpc/configs/adder875-redboot_defconfig b/arch/powerpc/configs/adder875_defconfig
index cab5f9b64567..a3cc94a2ff06 100644
--- a/arch/powerpc/configs/adder875-redboot_defconfig
+++ b/arch/powerpc/configs/adder875_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-rc6 3# Linux kernel version: 2.6.25-rc2
4# Thu Jan 17 16:17:38 2008 4# Wed Feb 20 12:26:07 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -26,6 +26,7 @@ CONFIG_GENERIC_TIME=y
26CONFIG_GENERIC_TIME_VSYSCALL=y 26CONFIG_GENERIC_TIME_VSYSCALL=y
27CONFIG_GENERIC_CLOCKEVENTS=y 27CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y 28CONFIG_GENERIC_HARDIRQS=y
29# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
29CONFIG_IRQ_PER_CPU=y 30CONFIG_IRQ_PER_CPU=y
30CONFIG_RWSEM_XCHGADD_ALGORITHM=y 31CONFIG_RWSEM_XCHGADD_ALGORITHM=y
31CONFIG_ARCH_HAS_ILOG2_U32=y 32CONFIG_ARCH_HAS_ILOG2_U32=y
@@ -64,17 +65,18 @@ CONFIG_SYSVIPC_SYSCTL=y
64# CONFIG_POSIX_MQUEUE is not set 65# CONFIG_POSIX_MQUEUE is not set
65# CONFIG_BSD_PROCESS_ACCT is not set 66# CONFIG_BSD_PROCESS_ACCT is not set
66# CONFIG_TASKSTATS is not set 67# CONFIG_TASKSTATS is not set
67# CONFIG_USER_NS is not set
68# CONFIG_PID_NS is not set
69# CONFIG_AUDIT is not set 68# CONFIG_AUDIT is not set
70# CONFIG_IKCONFIG is not set 69# CONFIG_IKCONFIG is not set
71CONFIG_LOG_BUF_SHIFT=14 70CONFIG_LOG_BUF_SHIFT=14
72# CONFIG_CGROUPS is not set 71# CONFIG_CGROUPS is not set
72CONFIG_GROUP_SCHED=y
73CONFIG_FAIR_GROUP_SCHED=y 73CONFIG_FAIR_GROUP_SCHED=y
74CONFIG_FAIR_USER_SCHED=y 74# CONFIG_RT_GROUP_SCHED is not set
75# CONFIG_FAIR_CGROUP_SCHED is not set 75CONFIG_USER_SCHED=y
76# CONFIG_CGROUP_SCHED is not set
76CONFIG_SYSFS_DEPRECATED=y 77CONFIG_SYSFS_DEPRECATED=y
77# CONFIG_RELAY is not set 78# CONFIG_RELAY is not set
79# CONFIG_NAMESPACES is not set
78# CONFIG_BLK_DEV_INITRD is not set 80# CONFIG_BLK_DEV_INITRD is not set
79# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 81# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
80CONFIG_SYSCTL=y 82CONFIG_SYSCTL=y
@@ -87,11 +89,13 @@ CONFIG_HOTPLUG=y
87CONFIG_PRINTK=y 89CONFIG_PRINTK=y
88CONFIG_BUG=y 90CONFIG_BUG=y
89# CONFIG_ELF_CORE is not set 91# CONFIG_ELF_CORE is not set
92CONFIG_COMPAT_BRK=y
90# CONFIG_BASE_FULL is not set 93# CONFIG_BASE_FULL is not set
91# CONFIG_FUTEX is not set 94# CONFIG_FUTEX is not set
92CONFIG_ANON_INODES=y 95CONFIG_ANON_INODES=y
93CONFIG_EPOLL=y 96CONFIG_EPOLL=y
94CONFIG_SIGNALFD=y 97CONFIG_SIGNALFD=y
98CONFIG_TIMERFD=y
95CONFIG_EVENTFD=y 99CONFIG_EVENTFD=y
96CONFIG_SHMEM=y 100CONFIG_SHMEM=y
97# CONFIG_VM_EVENT_COUNTERS is not set 101# CONFIG_VM_EVENT_COUNTERS is not set
@@ -99,6 +103,12 @@ CONFIG_SLUB_DEBUG=y
99# CONFIG_SLAB is not set 103# CONFIG_SLAB is not set
100CONFIG_SLUB=y 104CONFIG_SLUB=y
101# CONFIG_SLOB is not set 105# CONFIG_SLOB is not set
106# CONFIG_PROFILING is not set
107# CONFIG_MARKERS is not set
108CONFIG_HAVE_OPROFILE=y
109CONFIG_HAVE_KPROBES=y
110CONFIG_PROC_PAGE_MONITOR=y
111CONFIG_SLABINFO=y
102# CONFIG_TINY_SHMEM is not set 112# CONFIG_TINY_SHMEM is not set
103CONFIG_BASE_SMALL=1 113CONFIG_BASE_SMALL=1
104# CONFIG_MODULES is not set 114# CONFIG_MODULES is not set
@@ -120,12 +130,14 @@ CONFIG_DEFAULT_DEADLINE=y
120# CONFIG_DEFAULT_CFQ is not set 130# CONFIG_DEFAULT_CFQ is not set
121# CONFIG_DEFAULT_NOOP is not set 131# CONFIG_DEFAULT_NOOP is not set
122CONFIG_DEFAULT_IOSCHED="deadline" 132CONFIG_DEFAULT_IOSCHED="deadline"
133CONFIG_CLASSIC_RCU=y
134# CONFIG_PREEMPT_RCU is not set
123 135
124# 136#
125# Platform support 137# Platform support
126# 138#
127# CONFIG_PPC_MPC52xx is not set 139# CONFIG_PPC_MPC512x is not set
128# CONFIG_PPC_MPC5200 is not set 140# CONFIG_PPC_MPC5121 is not set
129# CONFIG_PPC_CELL is not set 141# CONFIG_PPC_CELL is not set
130# CONFIG_PPC_CELL_NATIVE is not set 142# CONFIG_PPC_CELL_NATIVE is not set
131CONFIG_CPM1=y 143CONFIG_CPM1=y
@@ -150,6 +162,7 @@ CONFIG_NO_UCODE_PATCH=y
150# CONFIG_I2C_SPI_UCODE_PATCH is not set 162# CONFIG_I2C_SPI_UCODE_PATCH is not set
151# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set 163# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set
152# CONFIG_PQ2ADS is not set 164# CONFIG_PQ2ADS is not set
165# CONFIG_IPIC is not set
153# CONFIG_MPIC is not set 166# CONFIG_MPIC is not set
154# CONFIG_MPIC_WEIRD is not set 167# CONFIG_MPIC_WEIRD is not set
155# CONFIG_PPC_I8259 is not set 168# CONFIG_PPC_I8259 is not set
@@ -160,7 +173,6 @@ CONFIG_NO_UCODE_PATCH=y
160# CONFIG_PPC_INDIRECT_IO is not set 173# CONFIG_PPC_INDIRECT_IO is not set
161# CONFIG_GENERIC_IOMAP is not set 174# CONFIG_GENERIC_IOMAP is not set
162# CONFIG_CPU_FREQ is not set 175# CONFIG_CPU_FREQ is not set
163# CONFIG_CPM2 is not set
164CONFIG_PPC_CPM_NEW_BINDING=y 176CONFIG_PPC_CPM_NEW_BINDING=y
165# CONFIG_FSL_ULI1575 is not set 177# CONFIG_FSL_ULI1575 is not set
166CONFIG_CPM=y 178CONFIG_CPM=y
@@ -178,14 +190,19 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
178# CONFIG_HZ_300 is not set 190# CONFIG_HZ_300 is not set
179CONFIG_HZ_1000=y 191CONFIG_HZ_1000=y
180CONFIG_HZ=1000 192CONFIG_HZ=1000
193# CONFIG_SCHED_HRTICK is not set
181CONFIG_PREEMPT_NONE=y 194CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set 195# CONFIG_PREEMPT_VOLUNTARY is not set
183# CONFIG_PREEMPT is not set 196# CONFIG_PREEMPT is not set
197CONFIG_RCU_TRACE=y
184CONFIG_BINFMT_ELF=y 198CONFIG_BINFMT_ELF=y
185# CONFIG_BINFMT_MISC is not set 199# CONFIG_BINFMT_MISC is not set
186# CONFIG_MATH_EMULATION is not set 200# CONFIG_MATH_EMULATION is not set
187# CONFIG_8XX_MINIMAL_FPEMU is not set 201# CONFIG_8XX_MINIMAL_FPEMU is not set
202# CONFIG_IOMMU_HELPER is not set
188CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 203CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
204CONFIG_ARCH_HAS_WALK_MEMORY=y
205CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
189CONFIG_ARCH_FLATMEM_ENABLE=y 206CONFIG_ARCH_FLATMEM_ENABLE=y
190CONFIG_ARCH_POPULATES_NODE_MAP=y 207CONFIG_ARCH_POPULATES_NODE_MAP=y
191CONFIG_SELECT_MEMORY_MODEL=y 208CONFIG_SELECT_MEMORY_MODEL=y
@@ -204,11 +221,7 @@ CONFIG_VIRT_TO_BUS=y
204# CONFIG_PROC_DEVICETREE is not set 221# CONFIG_PROC_DEVICETREE is not set
205# CONFIG_CMDLINE_BOOL is not set 222# CONFIG_CMDLINE_BOOL is not set
206# CONFIG_PM is not set 223# CONFIG_PM is not set
207CONFIG_SUSPEND_UP_POSSIBLE=y
208CONFIG_HIBERNATION_UP_POSSIBLE=y
209# CONFIG_SECCOMP is not set 224# CONFIG_SECCOMP is not set
210CONFIG_WANT_DEVICE_TREE=y
211CONFIG_DEVICE_TREE="adder875-redboot.dts"
212CONFIG_ISA_DMA_API=y 225CONFIG_ISA_DMA_API=y
213 226
214# 227#
@@ -305,6 +318,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
305# 318#
306# CONFIG_NET_PKTGEN is not set 319# CONFIG_NET_PKTGEN is not set
307# CONFIG_HAMRADIO is not set 320# CONFIG_HAMRADIO is not set
321# CONFIG_CAN is not set
308# CONFIG_IRDA is not set 322# CONFIG_IRDA is not set
309# CONFIG_BT is not set 323# CONFIG_BT is not set
310# CONFIG_AF_RXRPC is not set 324# CONFIG_AF_RXRPC is not set
@@ -411,6 +425,7 @@ CONFIG_OF_DEVICE=y
411# CONFIG_PARPORT is not set 425# CONFIG_PARPORT is not set
412# CONFIG_BLK_DEV is not set 426# CONFIG_BLK_DEV is not set
413# CONFIG_MISC_DEVICES is not set 427# CONFIG_MISC_DEVICES is not set
428CONFIG_HAVE_IDE=y
414# CONFIG_IDE is not set 429# CONFIG_IDE is not set
415 430
416# 431#
@@ -445,6 +460,7 @@ CONFIG_DAVICOM_PHY=y
445# CONFIG_SMSC_PHY is not set 460# CONFIG_SMSC_PHY is not set
446# CONFIG_BROADCOM_PHY is not set 461# CONFIG_BROADCOM_PHY is not set
447# CONFIG_ICPLUS_PHY is not set 462# CONFIG_ICPLUS_PHY is not set
463# CONFIG_REALTEK_PHY is not set
448# CONFIG_FIXED_PHY is not set 464# CONFIG_FIXED_PHY is not set
449# CONFIG_MDIO_BITBANG is not set 465# CONFIG_MDIO_BITBANG is not set
450CONFIG_NET_ETHERNET=y 466CONFIG_NET_ETHERNET=y
@@ -469,7 +485,6 @@ CONFIG_FS_ENET_MDIO_FEC=y
469# CONFIG_WAN is not set 485# CONFIG_WAN is not set
470# CONFIG_PPP is not set 486# CONFIG_PPP is not set
471# CONFIG_SLIP is not set 487# CONFIG_SLIP is not set
472# CONFIG_SHAPER is not set
473# CONFIG_NETCONSOLE is not set 488# CONFIG_NETCONSOLE is not set
474# CONFIG_NETPOLL is not set 489# CONFIG_NETPOLL is not set
475# CONFIG_NET_POLL_CONTROLLER is not set 490# CONFIG_NET_POLL_CONTROLLER is not set
@@ -574,6 +589,7 @@ CONFIG_GEN_RTC=y
574# CONFIG_W1 is not set 589# CONFIG_W1 is not set
575# CONFIG_POWER_SUPPLY is not set 590# CONFIG_POWER_SUPPLY is not set
576# CONFIG_HWMON is not set 591# CONFIG_HWMON is not set
592CONFIG_THERMAL=y
577# CONFIG_WATCHDOG is not set 593# CONFIG_WATCHDOG is not set
578 594
579# 595#
@@ -614,6 +630,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
614# CONFIG_HID_SUPPORT is not set 630# CONFIG_HID_SUPPORT is not set
615# CONFIG_USB_SUPPORT is not set 631# CONFIG_USB_SUPPORT is not set
616# CONFIG_MMC is not set 632# CONFIG_MMC is not set
633# CONFIG_MEMSTICK is not set
617# CONFIG_NEW_LEDS is not set 634# CONFIG_NEW_LEDS is not set
618# CONFIG_EDAC is not set 635# CONFIG_EDAC is not set
619# CONFIG_RTC_CLASS is not set 636# CONFIG_RTC_CLASS is not set
@@ -635,11 +652,9 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
635# CONFIG_XFS_FS is not set 652# CONFIG_XFS_FS is not set
636# CONFIG_GFS2_FS is not set 653# CONFIG_GFS2_FS is not set
637# CONFIG_OCFS2_FS is not set 654# CONFIG_OCFS2_FS is not set
638# CONFIG_MINIX_FS is not set 655# CONFIG_DNOTIFY is not set
639# CONFIG_ROMFS_FS is not set
640# CONFIG_INOTIFY is not set 656# CONFIG_INOTIFY is not set
641# CONFIG_QUOTA is not set 657# CONFIG_QUOTA is not set
642# CONFIG_DNOTIFY is not set
643# CONFIG_AUTOFS_FS is not set 658# CONFIG_AUTOFS_FS is not set
644# CONFIG_AUTOFS4_FS is not set 659# CONFIG_AUTOFS4_FS is not set
645# CONFIG_FUSE_FS is not set 660# CONFIG_FUSE_FS is not set
@@ -682,8 +697,10 @@ CONFIG_TMPFS=y
682# CONFIG_JFFS2_FS is not set 697# CONFIG_JFFS2_FS is not set
683CONFIG_CRAMFS=y 698CONFIG_CRAMFS=y
684# CONFIG_VXFS_FS is not set 699# CONFIG_VXFS_FS is not set
700# CONFIG_MINIX_FS is not set
685# CONFIG_HPFS_FS is not set 701# CONFIG_HPFS_FS is not set
686# CONFIG_QNX4FS_FS is not set 702# CONFIG_QNX4FS_FS is not set
703# CONFIG_ROMFS_FS is not set
687# CONFIG_SYSV_FS is not set 704# CONFIG_SYSV_FS is not set
688# CONFIG_UFS_FS is not set 705# CONFIG_UFS_FS is not set
689CONFIG_NETWORK_FILESYSTEMS=y 706CONFIG_NETWORK_FILESYSTEMS=y
@@ -730,7 +747,6 @@ CONFIG_MSDOS_PARTITION=y
730# CONFIG_SYSV68_PARTITION is not set 747# CONFIG_SYSV68_PARTITION is not set
731# CONFIG_NLS is not set 748# CONFIG_NLS is not set
732# CONFIG_DLM is not set 749# CONFIG_DLM is not set
733# CONFIG_UCC_SLOW is not set
734 750
735# 751#
736# Library routines 752# Library routines
@@ -745,9 +761,6 @@ CONFIG_ZLIB_INFLATE=y
745CONFIG_HAS_IOMEM=y 761CONFIG_HAS_IOMEM=y
746CONFIG_HAS_IOPORT=y 762CONFIG_HAS_IOPORT=y
747CONFIG_HAS_DMA=y 763CONFIG_HAS_DMA=y
748CONFIG_INSTRUMENTATION=y
749# CONFIG_PROFILING is not set
750# CONFIG_MARKERS is not set
751 764
752# 765#
753# Kernel hacking 766# Kernel hacking
@@ -757,7 +770,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
757CONFIG_ENABLE_MUST_CHECK=y 770CONFIG_ENABLE_MUST_CHECK=y
758CONFIG_MAGIC_SYSRQ=y 771CONFIG_MAGIC_SYSRQ=y
759# CONFIG_UNUSED_SYMBOLS is not set 772# CONFIG_UNUSED_SYMBOLS is not set
760# CONFIG_DEBUG_FS is not set 773CONFIG_DEBUG_FS=y
761# CONFIG_HEADERS_CHECK is not set 774# CONFIG_HEADERS_CHECK is not set
762CONFIG_DEBUG_KERNEL=y 775CONFIG_DEBUG_KERNEL=y
763# CONFIG_DEBUG_SHIRQ is not set 776# CONFIG_DEBUG_SHIRQ is not set
@@ -766,6 +779,7 @@ CONFIG_SCHED_DEBUG=y
766# CONFIG_SCHEDSTATS is not set 779# CONFIG_SCHEDSTATS is not set
767# CONFIG_TIMER_STATS is not set 780# CONFIG_TIMER_STATS is not set
768# CONFIG_SLUB_DEBUG_ON is not set 781# CONFIG_SLUB_DEBUG_ON is not set
782# CONFIG_SLUB_STATS is not set
769# CONFIG_DEBUG_SPINLOCK is not set 783# CONFIG_DEBUG_SPINLOCK is not set
770# CONFIG_DEBUG_MUTEXES is not set 784# CONFIG_DEBUG_MUTEXES is not set
771# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 785# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
@@ -776,14 +790,15 @@ CONFIG_DEBUG_INFO=y
776# CONFIG_DEBUG_VM is not set 790# CONFIG_DEBUG_VM is not set
777# CONFIG_DEBUG_LIST is not set 791# CONFIG_DEBUG_LIST is not set
778# CONFIG_DEBUG_SG is not set 792# CONFIG_DEBUG_SG is not set
779CONFIG_FORCED_INLINING=y
780# CONFIG_BOOT_PRINTK_DELAY is not set 793# CONFIG_BOOT_PRINTK_DELAY is not set
794# CONFIG_BACKTRACE_SELF_TEST is not set
781# CONFIG_FAULT_INJECTION is not set 795# CONFIG_FAULT_INJECTION is not set
782# CONFIG_SAMPLES is not set 796# CONFIG_SAMPLES is not set
783# CONFIG_DEBUG_STACKOVERFLOW is not set 797# CONFIG_DEBUG_STACKOVERFLOW is not set
784# CONFIG_DEBUG_STACK_USAGE is not set 798# CONFIG_DEBUG_STACK_USAGE is not set
785# CONFIG_DEBUG_PAGEALLOC is not set 799# CONFIG_DEBUG_PAGEALLOC is not set
786# CONFIG_DEBUGGER is not set 800# CONFIG_DEBUGGER is not set
801# CONFIG_VIRQ_DEBUG is not set
787# CONFIG_BDI_SWITCH is not set 802# CONFIG_BDI_SWITCH is not set
788# CONFIG_PPC_EARLY_DEBUG is not set 803# CONFIG_PPC_EARLY_DEBUG is not set
789 804
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
index f7458396cd7c..3c9452d4308b 100644
--- a/arch/powerpc/kernel/head_8xx.S
+++ b/arch/powerpc/kernel/head_8xx.S
@@ -332,8 +332,18 @@ InstructionTLBMiss:
332 mfspr r11, SPRN_MD_TWC /* ....and get the pte address */ 332 mfspr r11, SPRN_MD_TWC /* ....and get the pte address */
333 lwz r10, 0(r11) /* Get the pte */ 333 lwz r10, 0(r11) /* Get the pte */
334 334
335#ifdef CONFIG_SWAP
336 /* do not set the _PAGE_ACCESSED bit of a non-present page */
337 andi. r11, r10, _PAGE_PRESENT
338 beq 4f
339 ori r10, r10, _PAGE_ACCESSED
340 mfspr r11, SPRN_MD_TWC /* get the pte address again */
341 stw r10, 0(r11)
3424:
343#else
335 ori r10, r10, _PAGE_ACCESSED 344 ori r10, r10, _PAGE_ACCESSED
336 stw r10, 0(r11) 345 stw r10, 0(r11)
346#endif
337 347
338 /* The Linux PTE won't go exactly into the MMU TLB. 348 /* The Linux PTE won't go exactly into the MMU TLB.
339 * Software indicator bits 21, 22 and 28 must be clear. 349 * Software indicator bits 21, 22 and 28 must be clear.
@@ -398,8 +408,17 @@ DataStoreTLBMiss:
398 DO_8xx_CPU6(0x3b80, r3) 408 DO_8xx_CPU6(0x3b80, r3)
399 mtspr SPRN_MD_TWC, r11 409 mtspr SPRN_MD_TWC, r11
400 410
401 mfspr r11, SPRN_MD_TWC /* get the pte address again */ 411#ifdef CONFIG_SWAP
412 /* do not set the _PAGE_ACCESSED bit of a non-present page */
413 andi. r11, r10, _PAGE_PRESENT
414 beq 4f
402 ori r10, r10, _PAGE_ACCESSED 415 ori r10, r10, _PAGE_ACCESSED
4164:
417 /* and update pte in table */
418#else
419 ori r10, r10, _PAGE_ACCESSED
420#endif
421 mfspr r11, SPRN_MD_TWC /* get the pte address again */
403 stw r10, 0(r11) 422 stw r10, 0(r11)
404 423
405 /* The Linux PTE won't go exactly into the MMU TLB. 424 /* The Linux PTE won't go exactly into the MMU TLB.
@@ -507,7 +526,16 @@ DataTLBError:
507 526
508 /* Update 'changed', among others. 527 /* Update 'changed', among others.
509 */ 528 */
529#ifdef CONFIG_SWAP
530 ori r10, r10, _PAGE_DIRTY|_PAGE_HWWRITE
531 /* do not set the _PAGE_ACCESSED bit of a non-present page */
532 andi. r11, r10, _PAGE_PRESENT
533 beq 4f
534 ori r10, r10, _PAGE_ACCESSED
5354:
536#else
510 ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE 537 ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE
538#endif
511 mfspr r11, SPRN_MD_TWC /* Get pte address again */ 539 mfspr r11, SPRN_MD_TWC /* Get pte address again */
512 stw r10, 0(r11) /* and update pte in table */ 540 stw r10, 0(r11) /* and update pte in table */
513 541
diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S
index 5c2e253ddfb1..9d2c56621f1e 100644
--- a/arch/powerpc/kernel/misc_32.S
+++ b/arch/powerpc/kernel/misc_32.S
@@ -785,6 +785,21 @@ _GLOBAL(__lshrdi3)
785 or r4,r4,r7 # LSW |= t2 785 or r4,r4,r7 # LSW |= t2
786 blr 786 blr
787 787
788/*
789 * 64-bit comparison: __ucmpdi2(u64 a, u64 b)
790 * Returns 0 if a < b, 1 if a == b, 2 if a > b.
791 */
792_GLOBAL(__ucmpdi2)
793 cmplw r3,r5
794 li r3,1
795 bne 1f
796 cmplw r4,r6
797 beqlr
7981: li r3,0
799 bltlr
800 li r3,2
801 blr
802
788_GLOBAL(abs) 803_GLOBAL(abs)
789 srawi r4,r3,31 804 srawi r4,r3,31
790 xor r3,r3,r4 805 xor r3,r3,r4
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 980fe32895c0..89c83ccb85c1 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -748,7 +748,13 @@ static void __devinit pcibios_fixup_resources(struct pci_dev *dev)
748 struct resource *res = dev->resource + i; 748 struct resource *res = dev->resource + i;
749 if (!res->flags) 749 if (!res->flags)
750 continue; 750 continue;
751 if (res->end == 0xffffffff) { 751 /* On platforms that have PPC_PCI_PROBE_ONLY set, we don't
752 * consider 0 as an unassigned BAR value. It's technically
753 * a valid value, but linux doesn't like it... so when we can
754 * re-assign things, we do so, but if we can't, we keep it
755 * around and hope for the best...
756 */
757 if (res->start == 0 && !(ppc_pci_flags & PPC_PCI_PROBE_ONLY)) {
752 pr_debug("PCI:%s Resource %d %016llx-%016llx [%x] is unassigned\n", 758 pr_debug("PCI:%s Resource %d %016llx-%016llx [%x] is unassigned\n",
753 pci_name(dev), i, 759 pci_name(dev), i,
754 (unsigned long long)res->start, 760 (unsigned long long)res->start,
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
index aa9ff35b0e63..9c98424277a8 100644
--- a/arch/powerpc/kernel/ppc_ksyms.c
+++ b/arch/powerpc/kernel/ppc_ksyms.c
@@ -58,6 +58,7 @@ extern void program_check_exception(struct pt_regs *regs);
58extern void single_step_exception(struct pt_regs *regs); 58extern void single_step_exception(struct pt_regs *regs);
59extern int sys_sigreturn(struct pt_regs *regs); 59extern int sys_sigreturn(struct pt_regs *regs);
60 60
61EXPORT_SYMBOL(empty_zero_page);
61EXPORT_SYMBOL(clear_pages); 62EXPORT_SYMBOL(clear_pages);
62EXPORT_SYMBOL(copy_page); 63EXPORT_SYMBOL(copy_page);
63EXPORT_SYMBOL(ISA_DMA_THRESHOLD); 64EXPORT_SYMBOL(ISA_DMA_THRESHOLD);
@@ -149,6 +150,8 @@ long long __lshrdi3(long long, int);
149EXPORT_SYMBOL(__ashrdi3); 150EXPORT_SYMBOL(__ashrdi3);
150EXPORT_SYMBOL(__ashldi3); 151EXPORT_SYMBOL(__ashldi3);
151EXPORT_SYMBOL(__lshrdi3); 152EXPORT_SYMBOL(__lshrdi3);
153int __ucmpdi2(unsigned long long, unsigned long long);
154EXPORT_SYMBOL(__ucmpdi2);
152#endif 155#endif
153 156
154EXPORT_SYMBOL(memcpy); 157EXPORT_SYMBOL(memcpy);
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 4cc53f92377e..0b018b29cda8 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -530,10 +530,10 @@ void __init htab_initialize(void)
530 } else { 530 } else {
531 /* Find storage for the HPT. Must be contiguous in 531 /* Find storage for the HPT. Must be contiguous in
532 * the absolute address space. On cell we want it to be 532 * the absolute address space. On cell we want it to be
533 * in the first 1 Gig. 533 * in the first 2 Gig so we can use it for IOMMU hacks.
534 */ 534 */
535 if (machine_is(cell)) 535 if (machine_is(cell))
536 limit = 0x40000000; 536 limit = 0x80000000;
537 else 537 else
538 limit = 0; 538 limit = 0;
539 539
diff --git a/arch/powerpc/oprofile/op_model_cell.c b/arch/powerpc/oprofile/op_model_cell.c
index 13929771bee7..9eed1f68fcab 100644
--- a/arch/powerpc/oprofile/op_model_cell.c
+++ b/arch/powerpc/oprofile/op_model_cell.c
@@ -1151,7 +1151,7 @@ static void cell_handle_interrupt(struct pt_regs *regs,
1151 for (i = 0; i < num_counters; ++i) { 1151 for (i = 0; i < num_counters; ++i) {
1152 if ((interrupt_mask & CBE_PM_CTR_OVERFLOW_INTR(i)) 1152 if ((interrupt_mask & CBE_PM_CTR_OVERFLOW_INTR(i))
1153 && ctr[i].enabled) { 1153 && ctr[i].enabled) {
1154 oprofile_add_pc(pc, is_kernel, i); 1154 oprofile_add_ext_sample(pc, regs, i, is_kernel);
1155 cbe_write_ctr(cpu, i, reset_value[i]); 1155 cbe_write_ctr(cpu, i, reset_value[i]);
1156 } 1156 }
1157 } 1157 }
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c
index 9aa4425d80b2..4d5fd1dbd400 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_common.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c
@@ -199,6 +199,7 @@ int mpc52xx_set_psc_clkdiv(int psc_id, int clkdiv)
199 199
200 return 0; 200 return 0;
201} 201}
202EXPORT_SYMBOL(mpc52xx_set_psc_clkdiv);
202 203
203/** 204/**
204 * mpc52xx_restart: ppc_md->restart hook for mpc5200 using the watchdog timer 205 * mpc52xx_restart: ppc_md->restart hook for mpc5200 using the watchdog timer
diff --git a/arch/powerpc/platforms/83xx/mpc837x_mds.c b/arch/powerpc/platforms/83xx/mpc837x_mds.c
index 8a9c26973605..64d17b0d6455 100644
--- a/arch/powerpc/platforms/83xx/mpc837x_mds.c
+++ b/arch/powerpc/platforms/83xx/mpc837x_mds.c
@@ -39,12 +39,9 @@ static int mpc837xmds_usb_cfg(void)
39 if (ret) 39 if (ret)
40 return ret; 40 return ret;
41 /* Map BCSR area */ 41 /* Map BCSR area */
42 np = of_find_node_by_name(NULL, "bcsr"); 42 np = of_find_compatible_node(NULL, NULL, "fsl,mpc837xmds-bcsr");
43 if (np) { 43 if (np) {
44 struct resource res; 44 bcsr_regs = of_iomap(np, 0);
45
46 of_address_to_resource(np, 0, &res);
47 bcsr_regs = ioremap(res.start, res.end - res.start + 1);
48 of_node_put(np); 45 of_node_put(np);
49 } 46 }
50 if (!bcsr_regs) 47 if (!bcsr_regs)
@@ -96,6 +93,7 @@ static void __init mpc837x_mds_setup_arch(void)
96static struct of_device_id mpc837x_ids[] = { 93static struct of_device_id mpc837x_ids[] = {
97 { .type = "soc", }, 94 { .type = "soc", },
98 { .compatible = "soc", }, 95 { .compatible = "soc", },
96 { .compatible = "simple-bus", },
99 {}, 97 {},
100}; 98};
101 99
diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig
index 0afd22595546..a578b966ecbc 100644
--- a/arch/powerpc/platforms/Kconfig
+++ b/arch/powerpc/platforms/Kconfig
@@ -22,7 +22,6 @@ config PPC_83xx
22 select FSL_SOC 22 select FSL_SOC
23 select MPC83xx 23 select MPC83xx
24 select IPIC 24 select IPIC
25 select FSL_EMB_PERFMON
26 25
27config PPC_86xx 26config PPC_86xx
28 bool "Freescale 86xx" 27 bool "Freescale 86xx"
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
index 73d81ce14b67..0c3face0ddbb 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -113,7 +113,12 @@ config FSL_BOOKE
113 default y 113 default y
114 114
115config FSL_EMB_PERFMON 115config FSL_EMB_PERFMON
116 bool 116 bool "Freescale Embedded Perfmon"
117 depends on E500 || PPC_83xx
118 help
119 This is the Performance Monitor support found on the e500 core
120 and some e300 cores (c3 and c4). Select this only if your
121 core supports the Embedded Performance Monitor APU
117 122
118config PTE_64BIT 123config PTE_64BIT
119 bool 124 bool
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c
index 61381586895f..d6a732503ea6 100644
--- a/arch/powerpc/platforms/cell/iommu.c
+++ b/arch/powerpc/platforms/cell/iommu.c
@@ -113,7 +113,7 @@
113 113
114/* IOMMU sizing */ 114/* IOMMU sizing */
115#define IO_SEGMENT_SHIFT 28 115#define IO_SEGMENT_SHIFT 28
116#define IO_PAGENO_BITS (IO_SEGMENT_SHIFT - IOMMU_PAGE_SHIFT) 116#define IO_PAGENO_BITS(shift) (IO_SEGMENT_SHIFT - (shift))
117 117
118/* The high bit needs to be set on every DMA address */ 118/* The high bit needs to be set on every DMA address */
119#define SPIDER_DMA_OFFSET 0x80000000ul 119#define SPIDER_DMA_OFFSET 0x80000000ul
@@ -123,7 +123,6 @@ struct iommu_window {
123 struct cbe_iommu *iommu; 123 struct cbe_iommu *iommu;
124 unsigned long offset; 124 unsigned long offset;
125 unsigned long size; 125 unsigned long size;
126 unsigned long pte_offset;
127 unsigned int ioid; 126 unsigned int ioid;
128 struct iommu_table table; 127 struct iommu_table table;
129}; 128};
@@ -200,7 +199,7 @@ static void tce_build_cell(struct iommu_table *tbl, long index, long npages,
200 (window->ioid & IOPTE_IOID_Mask); 199 (window->ioid & IOPTE_IOID_Mask);
201#endif 200#endif
202 201
203 io_pte = (unsigned long *)tbl->it_base + (index - window->pte_offset); 202 io_pte = (unsigned long *)tbl->it_base + (index - tbl->it_offset);
204 203
205 for (i = 0; i < npages; i++, uaddr += IOMMU_PAGE_SIZE) 204 for (i = 0; i < npages; i++, uaddr += IOMMU_PAGE_SIZE)
206 io_pte[i] = base_pte | (__pa(uaddr) & IOPTE_RPN_Mask); 205 io_pte[i] = base_pte | (__pa(uaddr) & IOPTE_RPN_Mask);
@@ -232,7 +231,7 @@ static void tce_free_cell(struct iommu_table *tbl, long index, long npages)
232 | (window->ioid & IOPTE_IOID_Mask); 231 | (window->ioid & IOPTE_IOID_Mask);
233#endif 232#endif
234 233
235 io_pte = (unsigned long *)tbl->it_base + (index - window->pte_offset); 234 io_pte = (unsigned long *)tbl->it_base + (index - tbl->it_offset);
236 235
237 for (i = 0; i < npages; i++) 236 for (i = 0; i < npages; i++)
238 io_pte[i] = pte; 237 io_pte[i] = pte;
@@ -307,76 +306,84 @@ static int cell_iommu_find_ioc(int nid, unsigned long *base)
307 return -ENODEV; 306 return -ENODEV;
308} 307}
309 308
310static void cell_iommu_setup_page_tables(struct cbe_iommu *iommu, 309static void cell_iommu_setup_stab(struct cbe_iommu *iommu,
311 unsigned long dbase, unsigned long dsize, 310 unsigned long dbase, unsigned long dsize,
312 unsigned long fbase, unsigned long fsize) 311 unsigned long fbase, unsigned long fsize)
313{ 312{
314 struct page *page; 313 struct page *page;
315 int i; 314 unsigned long segments, stab_size;
316 unsigned long reg, segments, pages_per_segment, ptab_size, stab_size,
317 n_pte_pages, base;
318
319 base = dbase;
320 if (fsize != 0)
321 base = min(fbase, dbase);
322 315
323 segments = max(dbase + dsize, fbase + fsize) >> IO_SEGMENT_SHIFT; 316 segments = max(dbase + dsize, fbase + fsize) >> IO_SEGMENT_SHIFT;
324 pages_per_segment = 1ull << IO_PAGENO_BITS;
325 317
326 pr_debug("%s: iommu[%d]: segments: %lu, pages per segment: %lu\n", 318 pr_debug("%s: iommu[%d]: segments: %lu\n",
327 __FUNCTION__, iommu->nid, segments, pages_per_segment); 319 __FUNCTION__, iommu->nid, segments);
328 320
329 /* set up the segment table */ 321 /* set up the segment table */
330 stab_size = segments * sizeof(unsigned long); 322 stab_size = segments * sizeof(unsigned long);
331 page = alloc_pages_node(iommu->nid, GFP_KERNEL, get_order(stab_size)); 323 page = alloc_pages_node(iommu->nid, GFP_KERNEL, get_order(stab_size));
332 BUG_ON(!page); 324 BUG_ON(!page);
333 iommu->stab = page_address(page); 325 iommu->stab = page_address(page);
334 clear_page(iommu->stab); 326 memset(iommu->stab, 0, stab_size);
327}
328
329static unsigned long *cell_iommu_alloc_ptab(struct cbe_iommu *iommu,
330 unsigned long base, unsigned long size, unsigned long gap_base,
331 unsigned long gap_size, unsigned long page_shift)
332{
333 struct page *page;
334 int i;
335 unsigned long reg, segments, pages_per_segment, ptab_size,
336 n_pte_pages, start_seg, *ptab;
337
338 start_seg = base >> IO_SEGMENT_SHIFT;
339 segments = size >> IO_SEGMENT_SHIFT;
340 pages_per_segment = 1ull << IO_PAGENO_BITS(page_shift);
341 /* PTEs for each segment must start on a 4K bounday */
342 pages_per_segment = max(pages_per_segment,
343 (1 << 12) / sizeof(unsigned long));
335 344
336 /* ... and the page tables. Since these are contiguous, we can treat
337 * the page tables as one array of ptes, like pSeries does.
338 */
339 ptab_size = segments * pages_per_segment * sizeof(unsigned long); 345 ptab_size = segments * pages_per_segment * sizeof(unsigned long);
340 pr_debug("%s: iommu[%d]: ptab_size: %lu, order: %d\n", __FUNCTION__, 346 pr_debug("%s: iommu[%d]: ptab_size: %lu, order: %d\n", __FUNCTION__,
341 iommu->nid, ptab_size, get_order(ptab_size)); 347 iommu->nid, ptab_size, get_order(ptab_size));
342 page = alloc_pages_node(iommu->nid, GFP_KERNEL, get_order(ptab_size)); 348 page = alloc_pages_node(iommu->nid, GFP_KERNEL, get_order(ptab_size));
343 BUG_ON(!page); 349 BUG_ON(!page);
344 350
345 iommu->ptab = page_address(page); 351 ptab = page_address(page);
346 memset(iommu->ptab, 0, ptab_size); 352 memset(ptab, 0, ptab_size);
347 353
348 /* allocate a bogus page for the end of each mapping */ 354 /* number of 4K pages needed for a page table */
349 page = alloc_pages_node(iommu->nid, GFP_KERNEL, 0); 355 n_pte_pages = (pages_per_segment * sizeof(unsigned long)) >> 12;
350 BUG_ON(!page);
351 iommu->pad_page = page_address(page);
352 clear_page(iommu->pad_page);
353
354 /* number of pages needed for a page table */
355 n_pte_pages = (pages_per_segment *
356 sizeof(unsigned long)) >> IOMMU_PAGE_SHIFT;
357 356
358 pr_debug("%s: iommu[%d]: stab at %p, ptab at %p, n_pte_pages: %lu\n", 357 pr_debug("%s: iommu[%d]: stab at %p, ptab at %p, n_pte_pages: %lu\n",
359 __FUNCTION__, iommu->nid, iommu->stab, iommu->ptab, 358 __FUNCTION__, iommu->nid, iommu->stab, ptab,
360 n_pte_pages); 359 n_pte_pages);
361 360
362 /* initialise the STEs */ 361 /* initialise the STEs */
363 reg = IOSTE_V | ((n_pte_pages - 1) << 5); 362 reg = IOSTE_V | ((n_pte_pages - 1) << 5);
364 363
365 if (IOMMU_PAGE_SIZE == 0x1000) 364 switch (page_shift) {
366 reg |= IOSTE_PS_4K; 365 case 12: reg |= IOSTE_PS_4K; break;
367 else if (IOMMU_PAGE_SIZE == 0x10000) 366 case 16: reg |= IOSTE_PS_64K; break;
368 reg |= IOSTE_PS_64K; 367 case 20: reg |= IOSTE_PS_1M; break;
369 else { 368 case 24: reg |= IOSTE_PS_16M; break;
370 extern void __unknown_page_size_error(void); 369 default: BUG();
371 __unknown_page_size_error();
372 } 370 }
373 371
372 gap_base = gap_base >> IO_SEGMENT_SHIFT;
373 gap_size = gap_size >> IO_SEGMENT_SHIFT;
374
374 pr_debug("Setting up IOMMU stab:\n"); 375 pr_debug("Setting up IOMMU stab:\n");
375 for (i = base >> IO_SEGMENT_SHIFT; i < segments; i++) { 376 for (i = start_seg; i < (start_seg + segments); i++) {
376 iommu->stab[i] = reg | 377 if (i >= gap_base && i < (gap_base + gap_size)) {
377 (__pa(iommu->ptab) + n_pte_pages * IOMMU_PAGE_SIZE * i); 378 pr_debug("\toverlap at %d, skipping\n", i);
379 continue;
380 }
381 iommu->stab[i] = reg | (__pa(ptab) + (n_pte_pages << 12) *
382 (i - start_seg));
378 pr_debug("\t[%d] 0x%016lx\n", i, iommu->stab[i]); 383 pr_debug("\t[%d] 0x%016lx\n", i, iommu->stab[i]);
379 } 384 }
385
386 return ptab;
380} 387}
381 388
382static void cell_iommu_enable_hardware(struct cbe_iommu *iommu) 389static void cell_iommu_enable_hardware(struct cbe_iommu *iommu)
@@ -423,7 +430,9 @@ static void cell_iommu_enable_hardware(struct cbe_iommu *iommu)
423static void cell_iommu_setup_hardware(struct cbe_iommu *iommu, 430static void cell_iommu_setup_hardware(struct cbe_iommu *iommu,
424 unsigned long base, unsigned long size) 431 unsigned long base, unsigned long size)
425{ 432{
426 cell_iommu_setup_page_tables(iommu, base, size, 0, 0); 433 cell_iommu_setup_stab(iommu, base, size, 0, 0);
434 iommu->ptab = cell_iommu_alloc_ptab(iommu, base, size, 0, 0,
435 IOMMU_PAGE_SHIFT);
427 cell_iommu_enable_hardware(iommu); 436 cell_iommu_enable_hardware(iommu);
428} 437}
429 438
@@ -464,6 +473,7 @@ cell_iommu_setup_window(struct cbe_iommu *iommu, struct device_node *np,
464 unsigned long pte_offset) 473 unsigned long pte_offset)
465{ 474{
466 struct iommu_window *window; 475 struct iommu_window *window;
476 struct page *page;
467 u32 ioid; 477 u32 ioid;
468 478
469 ioid = cell_iommu_get_ioid(np); 479 ioid = cell_iommu_get_ioid(np);
@@ -475,13 +485,11 @@ cell_iommu_setup_window(struct cbe_iommu *iommu, struct device_node *np,
475 window->size = size; 485 window->size = size;
476 window->ioid = ioid; 486 window->ioid = ioid;
477 window->iommu = iommu; 487 window->iommu = iommu;
478 window->pte_offset = pte_offset;
479 488
480 window->table.it_blocksize = 16; 489 window->table.it_blocksize = 16;
481 window->table.it_base = (unsigned long)iommu->ptab; 490 window->table.it_base = (unsigned long)iommu->ptab;
482 window->table.it_index = iommu->nid; 491 window->table.it_index = iommu->nid;
483 window->table.it_offset = (offset >> IOMMU_PAGE_SHIFT) + 492 window->table.it_offset = (offset >> IOMMU_PAGE_SHIFT) + pte_offset;
484 window->pte_offset;
485 window->table.it_size = size >> IOMMU_PAGE_SHIFT; 493 window->table.it_size = size >> IOMMU_PAGE_SHIFT;
486 494
487 iommu_init_table(&window->table, iommu->nid); 495 iommu_init_table(&window->table, iommu->nid);
@@ -504,6 +512,11 @@ cell_iommu_setup_window(struct cbe_iommu *iommu, struct device_node *np,
504 * This code also assumes that we have a window that starts at 0, 512 * This code also assumes that we have a window that starts at 0,
505 * which is the case on all spider based blades. 513 * which is the case on all spider based blades.
506 */ 514 */
515 page = alloc_pages_node(iommu->nid, GFP_KERNEL, 0);
516 BUG_ON(!page);
517 iommu->pad_page = page_address(page);
518 clear_page(iommu->pad_page);
519
507 __set_bit(0, window->table.it_map); 520 __set_bit(0, window->table.it_map);
508 tce_build_cell(&window->table, window->table.it_offset, 1, 521 tce_build_cell(&window->table, window->table.it_offset, 1,
509 (unsigned long)iommu->pad_page, DMA_TO_DEVICE); 522 (unsigned long)iommu->pad_page, DMA_TO_DEVICE);
@@ -549,7 +562,7 @@ static void cell_dma_dev_setup_iommu(struct device *dev)
549 archdata->dma_data = &window->table; 562 archdata->dma_data = &window->table;
550} 563}
551 564
552static void cell_dma_dev_setup_static(struct device *dev); 565static void cell_dma_dev_setup_fixed(struct device *dev);
553 566
554static void cell_dma_dev_setup(struct device *dev) 567static void cell_dma_dev_setup(struct device *dev)
555{ 568{
@@ -557,7 +570,7 @@ static void cell_dma_dev_setup(struct device *dev)
557 570
558 /* Order is important here, these are not mutually exclusive */ 571 /* Order is important here, these are not mutually exclusive */
559 if (get_dma_ops(dev) == &dma_iommu_fixed_ops) 572 if (get_dma_ops(dev) == &dma_iommu_fixed_ops)
560 cell_dma_dev_setup_static(dev); 573 cell_dma_dev_setup_fixed(dev);
561 else if (get_pci_dma_ops() == &dma_iommu_ops) 574 else if (get_pci_dma_ops() == &dma_iommu_ops)
562 cell_dma_dev_setup_iommu(dev); 575 cell_dma_dev_setup_iommu(dev);
563 else if (get_pci_dma_ops() == &dma_direct_ops) 576 else if (get_pci_dma_ops() == &dma_direct_ops)
@@ -858,7 +871,7 @@ static int dma_set_mask_and_switch(struct device *dev, u64 dma_mask)
858 return 0; 871 return 0;
859} 872}
860 873
861static void cell_dma_dev_setup_static(struct device *dev) 874static void cell_dma_dev_setup_fixed(struct device *dev)
862{ 875{
863 struct dev_archdata *archdata = &dev->archdata; 876 struct dev_archdata *archdata = &dev->archdata;
864 u64 addr; 877 u64 addr;
@@ -869,35 +882,45 @@ static void cell_dma_dev_setup_static(struct device *dev)
869 dev_dbg(dev, "iommu: fixed addr = %lx\n", addr); 882 dev_dbg(dev, "iommu: fixed addr = %lx\n", addr);
870} 883}
871 884
885static void insert_16M_pte(unsigned long addr, unsigned long *ptab,
886 unsigned long base_pte)
887{
888 unsigned long segment, offset;
889
890 segment = addr >> IO_SEGMENT_SHIFT;
891 offset = (addr >> 24) - (segment << IO_PAGENO_BITS(24));
892 ptab = ptab + (segment * (1 << 12) / sizeof(unsigned long));
893
894 pr_debug("iommu: addr %lx ptab %p segment %lx offset %lx\n",
895 addr, ptab, segment, offset);
896
897 ptab[offset] = base_pte | (__pa(addr) & IOPTE_RPN_Mask);
898}
899
872static void cell_iommu_setup_fixed_ptab(struct cbe_iommu *iommu, 900static void cell_iommu_setup_fixed_ptab(struct cbe_iommu *iommu,
873 struct device_node *np, unsigned long dbase, unsigned long dsize, 901 struct device_node *np, unsigned long dbase, unsigned long dsize,
874 unsigned long fbase, unsigned long fsize) 902 unsigned long fbase, unsigned long fsize)
875{ 903{
876 unsigned long base_pte, uaddr, *io_pte; 904 unsigned long base_pte, uaddr, ioaddr, *ptab;
877 int i;
878 905
879 dma_iommu_fixed_base = fbase; 906 ptab = cell_iommu_alloc_ptab(iommu, fbase, fsize, dbase, dsize, 24);
880 907
881 /* convert from bytes into page table indices */ 908 dma_iommu_fixed_base = fbase;
882 dbase = dbase >> IOMMU_PAGE_SHIFT;
883 dsize = dsize >> IOMMU_PAGE_SHIFT;
884 fbase = fbase >> IOMMU_PAGE_SHIFT;
885 fsize = fsize >> IOMMU_PAGE_SHIFT;
886 909
887 pr_debug("iommu: mapping 0x%lx pages from 0x%lx\n", fsize, fbase); 910 pr_debug("iommu: mapping 0x%lx pages from 0x%lx\n", fsize, fbase);
888 911
889 io_pte = iommu->ptab;
890 base_pte = IOPTE_PP_W | IOPTE_PP_R | IOPTE_M | IOPTE_SO_RW 912 base_pte = IOPTE_PP_W | IOPTE_PP_R | IOPTE_M | IOPTE_SO_RW
891 | (cell_iommu_get_ioid(np) & IOPTE_IOID_Mask); 913 | (cell_iommu_get_ioid(np) & IOPTE_IOID_Mask);
892 914
893 uaddr = 0; 915 for (uaddr = 0; uaddr < fsize; uaddr += (1 << 24)) {
894 for (i = fbase; i < fbase + fsize; i++, uaddr += IOMMU_PAGE_SIZE) {
895 /* Don't touch the dynamic region */ 916 /* Don't touch the dynamic region */
896 if (i >= dbase && i < (dbase + dsize)) { 917 ioaddr = uaddr + fbase;
897 pr_debug("iommu: static/dynamic overlap, skipping\n"); 918 if (ioaddr >= dbase && ioaddr < (dbase + dsize)) {
919 pr_debug("iommu: fixed/dynamic overlap, skipping\n");
898 continue; 920 continue;
899 } 921 }
900 io_pte[i] = base_pte | (__pa(uaddr) & IOPTE_RPN_Mask); 922
923 insert_16M_pte(uaddr, ptab, base_pte);
901 } 924 }
902 925
903 mb(); 926 mb();
@@ -995,7 +1018,9 @@ static int __init cell_iommu_fixed_mapping_init(void)
995 "fixed window 0x%lx-0x%lx\n", iommu->nid, dbase, 1018 "fixed window 0x%lx-0x%lx\n", iommu->nid, dbase,
996 dbase + dsize, fbase, fbase + fsize); 1019 dbase + dsize, fbase, fbase + fsize);
997 1020
998 cell_iommu_setup_page_tables(iommu, dbase, dsize, fbase, fsize); 1021 cell_iommu_setup_stab(iommu, dbase, dsize, fbase, fsize);
1022 iommu->ptab = cell_iommu_alloc_ptab(iommu, dbase, dsize, 0, 0,
1023 IOMMU_PAGE_SHIFT);
999 cell_iommu_setup_fixed_ptab(iommu, np, dbase, dsize, 1024 cell_iommu_setup_fixed_ptab(iommu, np, dbase, dsize,
1000 fbase, fsize); 1025 fbase, fsize);
1001 cell_iommu_enable_hardware(iommu); 1026 cell_iommu_enable_hardware(iommu);
diff --git a/arch/powerpc/platforms/cell/setup.c b/arch/powerpc/platforms/cell/setup.c
index a7f609b3b876..dda34650cb07 100644
--- a/arch/powerpc/platforms/cell/setup.c
+++ b/arch/powerpc/platforms/cell/setup.c
@@ -149,6 +149,11 @@ static void __init cell_init_irq(void)
149 mpic_init_IRQ(); 149 mpic_init_IRQ();
150} 150}
151 151
152static void __init cell_set_dabrx(void)
153{
154 mtspr(SPRN_DABRX, DABRX_KERNEL | DABRX_USER);
155}
156
152static void __init cell_setup_arch(void) 157static void __init cell_setup_arch(void)
153{ 158{
154#ifdef CONFIG_SPU_BASE 159#ifdef CONFIG_SPU_BASE
@@ -158,6 +163,8 @@ static void __init cell_setup_arch(void)
158 163
159 cbe_regs_init(); 164 cbe_regs_init();
160 165
166 cell_set_dabrx();
167
161#ifdef CONFIG_CBE_RAS 168#ifdef CONFIG_CBE_RAS
162 cbe_ras_init(); 169 cbe_ras_init();
163#endif 170#endif
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c
index 87eb07f94c5f..712001f6b7da 100644
--- a/arch/powerpc/platforms/cell/spu_base.c
+++ b/arch/powerpc/platforms/cell/spu_base.c
@@ -81,9 +81,12 @@ struct spu_slb {
81void spu_invalidate_slbs(struct spu *spu) 81void spu_invalidate_slbs(struct spu *spu)
82{ 82{
83 struct spu_priv2 __iomem *priv2 = spu->priv2; 83 struct spu_priv2 __iomem *priv2 = spu->priv2;
84 unsigned long flags;
84 85
86 spin_lock_irqsave(&spu->register_lock, flags);
85 if (spu_mfc_sr1_get(spu) & MFC_STATE1_RELOCATE_MASK) 87 if (spu_mfc_sr1_get(spu) & MFC_STATE1_RELOCATE_MASK)
86 out_be64(&priv2->slb_invalidate_all_W, 0UL); 88 out_be64(&priv2->slb_invalidate_all_W, 0UL);
89 spin_unlock_irqrestore(&spu->register_lock, flags);
87} 90}
88EXPORT_SYMBOL_GPL(spu_invalidate_slbs); 91EXPORT_SYMBOL_GPL(spu_invalidate_slbs);
89 92
@@ -148,7 +151,11 @@ static inline void spu_load_slb(struct spu *spu, int slbe, struct spu_slb *slb)
148 __func__, slbe, slb->vsid, slb->esid); 151 __func__, slbe, slb->vsid, slb->esid);
149 152
150 out_be64(&priv2->slb_index_W, slbe); 153 out_be64(&priv2->slb_index_W, slbe);
154 /* set invalid before writing vsid */
155 out_be64(&priv2->slb_esid_RW, 0);
156 /* now it's safe to write the vsid */
151 out_be64(&priv2->slb_vsid_RW, slb->vsid); 157 out_be64(&priv2->slb_vsid_RW, slb->vsid);
158 /* setting the new esid makes the entry valid again */
152 out_be64(&priv2->slb_esid_RW, slb->esid); 159 out_be64(&priv2->slb_esid_RW, slb->esid);
153} 160}
154 161
@@ -290,9 +297,11 @@ void spu_setup_kernel_slbs(struct spu *spu, struct spu_lscsa *lscsa,
290 nr_slbs++; 297 nr_slbs++;
291 } 298 }
292 299
300 spin_lock_irq(&spu->register_lock);
293 /* Add the set of SLBs */ 301 /* Add the set of SLBs */
294 for (i = 0; i < nr_slbs; i++) 302 for (i = 0; i < nr_slbs; i++)
295 spu_load_slb(spu, i, &slbs[i]); 303 spu_load_slb(spu, i, &slbs[i]);
304 spin_unlock_irq(&spu->register_lock);
296} 305}
297EXPORT_SYMBOL_GPL(spu_setup_kernel_slbs); 306EXPORT_SYMBOL_GPL(spu_setup_kernel_slbs);
298 307
@@ -337,13 +346,14 @@ spu_irq_class_1(int irq, void *data)
337 if (stat & CLASS1_STORAGE_FAULT_INTR) 346 if (stat & CLASS1_STORAGE_FAULT_INTR)
338 spu_mfc_dsisr_set(spu, 0ul); 347 spu_mfc_dsisr_set(spu, 0ul);
339 spu_int_stat_clear(spu, 1, stat); 348 spu_int_stat_clear(spu, 1, stat);
340 spin_unlock(&spu->register_lock);
341 pr_debug("%s: %lx %lx %lx %lx\n", __FUNCTION__, mask, stat,
342 dar, dsisr);
343 349
344 if (stat & CLASS1_SEGMENT_FAULT_INTR) 350 if (stat & CLASS1_SEGMENT_FAULT_INTR)
345 __spu_trap_data_seg(spu, dar); 351 __spu_trap_data_seg(spu, dar);
346 352
353 spin_unlock(&spu->register_lock);
354 pr_debug("%s: %lx %lx %lx %lx\n", __FUNCTION__, mask, stat,
355 dar, dsisr);
356
347 if (stat & CLASS1_STORAGE_FAULT_INTR) 357 if (stat & CLASS1_STORAGE_FAULT_INTR)
348 __spu_trap_data_map(spu, dar, dsisr); 358 __spu_trap_data_map(spu, dar, dsisr);
349 359
diff --git a/arch/powerpc/platforms/cell/spufs/context.c b/arch/powerpc/platforms/cell/spufs/context.c
index 133995ed5cc7..0ad83aeb70b1 100644
--- a/arch/powerpc/platforms/cell/spufs/context.c
+++ b/arch/powerpc/platforms/cell/spufs/context.c
@@ -109,13 +109,12 @@ void spu_forget(struct spu_context *ctx)
109 109
110 /* 110 /*
111 * This is basically an open-coded spu_acquire_saved, except that 111 * This is basically an open-coded spu_acquire_saved, except that
112 * we don't acquire the state mutex interruptible. 112 * we don't acquire the state mutex interruptible, and we don't
113 * want this context to be rescheduled on release.
113 */ 114 */
114 mutex_lock(&ctx->state_mutex); 115 mutex_lock(&ctx->state_mutex);
115 if (ctx->state != SPU_STATE_SAVED) { 116 if (ctx->state != SPU_STATE_SAVED)
116 set_bit(SPU_SCHED_WAS_ACTIVE, &ctx->sched_flags);
117 spu_deactivate(ctx); 117 spu_deactivate(ctx);
118 }
119 118
120 mm = ctx->owner; 119 mm = ctx->owner;
121 ctx->owner = NULL; 120 ctx->owner = NULL;
@@ -171,7 +170,8 @@ void spu_release_saved(struct spu_context *ctx)
171{ 170{
172 BUG_ON(ctx->state != SPU_STATE_SAVED); 171 BUG_ON(ctx->state != SPU_STATE_SAVED);
173 172
174 if (test_and_clear_bit(SPU_SCHED_WAS_ACTIVE, &ctx->sched_flags)) 173 if (test_and_clear_bit(SPU_SCHED_WAS_ACTIVE, &ctx->sched_flags) &&
174 test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags))
175 spu_activate(ctx, 0); 175 spu_activate(ctx, 0);
176 176
177 spu_release(ctx); 177 spu_release(ctx);
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c
index c66c3756970d..f7a7e8635fb6 100644
--- a/arch/powerpc/platforms/cell/spufs/file.c
+++ b/arch/powerpc/platforms/cell/spufs/file.c
@@ -367,6 +367,13 @@ static unsigned long spufs_ps_nopfn(struct vm_area_struct *vma,
367 return NOPFN_SIGBUS; 367 return NOPFN_SIGBUS;
368 368
369 /* 369 /*
370 * Because we release the mmap_sem, the context may be destroyed while
371 * we're in spu_wait. Grab an extra reference so it isn't destroyed
372 * in the meantime.
373 */
374 get_spu_context(ctx);
375
376 /*
370 * We have to wait for context to be loaded before we have 377 * We have to wait for context to be loaded before we have
371 * pages to hand out to the user, but we don't want to wait 378 * pages to hand out to the user, but we don't want to wait
372 * with the mmap_sem held. 379 * with the mmap_sem held.
@@ -375,7 +382,7 @@ static unsigned long spufs_ps_nopfn(struct vm_area_struct *vma,
375 * hanged. 382 * hanged.
376 */ 383 */
377 if (spu_acquire(ctx)) 384 if (spu_acquire(ctx))
378 return NOPFN_REFAULT; 385 goto refault;
379 386
380 if (ctx->state == SPU_STATE_SAVED) { 387 if (ctx->state == SPU_STATE_SAVED) {
381 up_read(&current->mm->mmap_sem); 388 up_read(&current->mm->mmap_sem);
@@ -391,6 +398,9 @@ static unsigned long spufs_ps_nopfn(struct vm_area_struct *vma,
391 398
392 if (!ret) 399 if (!ret)
393 spu_release(ctx); 400 spu_release(ctx);
401
402refault:
403 put_spu_context(ctx);
394 return NOPFN_REFAULT; 404 return NOPFN_REFAULT;
395} 405}
396 406
diff --git a/arch/powerpc/platforms/cell/spufs/run.c b/arch/powerpc/platforms/cell/spufs/run.c
index 6221968c2a3c..cac69e116776 100644
--- a/arch/powerpc/platforms/cell/spufs/run.c
+++ b/arch/powerpc/platforms/cell/spufs/run.c
@@ -220,6 +220,7 @@ static int spu_run_init(struct spu_context *ctx, u32 *npc)
220 } 220 }
221 } 221 }
222 222
223 set_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags);
223 return 0; 224 return 0;
224} 225}
225 226
@@ -234,7 +235,7 @@ static int spu_run_fini(struct spu_context *ctx, u32 *npc,
234 *npc = ctx->ops->npc_read(ctx); 235 *npc = ctx->ops->npc_read(ctx);
235 236
236 spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED); 237 spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED);
237 ctx->policy = SCHED_IDLE; 238 clear_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags);
238 spu_release(ctx); 239 spu_release(ctx);
239 240
240 if (signal_pending(current)) 241 if (signal_pending(current))
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c
index 3a5972117de7..00528ef84ad2 100644
--- a/arch/powerpc/platforms/cell/spufs/sched.c
+++ b/arch/powerpc/platforms/cell/spufs/sched.c
@@ -246,7 +246,7 @@ static void spu_bind_context(struct spu *spu, struct spu_context *ctx)
246 spu_switch_notify(spu, ctx); 246 spu_switch_notify(spu, ctx);
247 ctx->state = SPU_STATE_RUNNABLE; 247 ctx->state = SPU_STATE_RUNNABLE;
248 248
249 spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED); 249 spuctx_switch_state(ctx, SPU_UTIL_USER);
250} 250}
251 251
252/* 252/*
@@ -867,7 +867,7 @@ static noinline void spusched_tick(struct spu_context *ctx)
867 if (ctx->policy == SCHED_FIFO) 867 if (ctx->policy == SCHED_FIFO)
868 goto out; 868 goto out;
869 869
870 if (--ctx->time_slice && ctx->policy != SCHED_IDLE) 870 if (--ctx->time_slice && test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags))
871 goto out; 871 goto out;
872 872
873 spu = ctx->spu; 873 spu = ctx->spu;
@@ -877,7 +877,7 @@ static noinline void spusched_tick(struct spu_context *ctx)
877 new = grab_runnable_context(ctx->prio + 1, spu->node); 877 new = grab_runnable_context(ctx->prio + 1, spu->node);
878 if (new) { 878 if (new) {
879 spu_unschedule(spu, ctx); 879 spu_unschedule(spu, ctx);
880 if (ctx->policy != SCHED_IDLE) 880 if (test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags))
881 spu_add_to_rq(ctx); 881 spu_add_to_rq(ctx);
882 } else { 882 } else {
883 spu_context_nospu_trace(spusched_tick__newslice, ctx); 883 spu_context_nospu_trace(spusched_tick__newslice, ctx);
diff --git a/arch/powerpc/platforms/cell/spufs/spufs.h b/arch/powerpc/platforms/cell/spufs/spufs.h
index 2c2fe3c07d72..cdc515182f82 100644
--- a/arch/powerpc/platforms/cell/spufs/spufs.h
+++ b/arch/powerpc/platforms/cell/spufs/spufs.h
@@ -44,6 +44,7 @@ struct spu_gang;
44enum { 44enum {
45 SPU_SCHED_NOTIFY_ACTIVE, 45 SPU_SCHED_NOTIFY_ACTIVE,
46 SPU_SCHED_WAS_ACTIVE, /* was active upon spu_acquire_saved() */ 46 SPU_SCHED_WAS_ACTIVE, /* was active upon spu_acquire_saved() */
47 SPU_SCHED_SPU_RUN, /* context is within spu_run */
47}; 48};
48 49
49struct spu_context { 50struct spu_context {
diff --git a/arch/powerpc/platforms/cell/spufs/sputrace.c b/arch/powerpc/platforms/cell/spufs/sputrace.c
index 01974f7776e1..79aa773f3c99 100644
--- a/arch/powerpc/platforms/cell/spufs/sputrace.c
+++ b/arch/powerpc/platforms/cell/spufs/sputrace.c
@@ -58,12 +58,12 @@ static int sputrace_sprint(char *tbuf, int n)
58 ktime_to_timespec(ktime_sub(t->tstamp, sputrace_start)); 58 ktime_to_timespec(ktime_sub(t->tstamp, sputrace_start));
59 59
60 return snprintf(tbuf, n, 60 return snprintf(tbuf, n,
61 "[%lu.%09lu] %d: %s (thread = %d, spu = %d)\n", 61 "[%lu.%09lu] %d: %s (ctxthread = %d, spu = %d)\n",
62 (unsigned long) tv.tv_sec, 62 (unsigned long) tv.tv_sec,
63 (unsigned long) tv.tv_nsec, 63 (unsigned long) tv.tv_nsec,
64 t->owner_tid,
65 t->name,
66 t->curr_tid, 64 t->curr_tid,
65 t->name,
66 t->owner_tid,
67 t->number); 67 t->number);
68} 68}
69 69
@@ -188,6 +188,7 @@ struct spu_probe spu_probes[] = {
188 { "spufs_ps_nopfn__insert", "%p %p", spu_context_event }, 188 { "spufs_ps_nopfn__insert", "%p %p", spu_context_event },
189 { "spu_acquire_saved__enter", "%p", spu_context_nospu_event }, 189 { "spu_acquire_saved__enter", "%p", spu_context_nospu_event },
190 { "destroy_spu_context__enter", "%p", spu_context_nospu_event }, 190 { "destroy_spu_context__enter", "%p", spu_context_nospu_event },
191 { "spufs_stop_callback__enter", "%p %p", spu_context_event },
191}; 192};
192 193
193static int __init sputrace_init(void) 194static int __init sputrace_init(void)
diff --git a/arch/powerpc/platforms/cell/spufs/switch.c b/arch/powerpc/platforms/cell/spufs/switch.c
index 6f5886c7b1f9..e9dc7a55d1b9 100644
--- a/arch/powerpc/platforms/cell/spufs/switch.c
+++ b/arch/powerpc/platforms/cell/spufs/switch.c
@@ -34,6 +34,7 @@
34 34
35#include <linux/module.h> 35#include <linux/module.h>
36#include <linux/errno.h> 36#include <linux/errno.h>
37#include <linux/hardirq.h>
37#include <linux/sched.h> 38#include <linux/sched.h>
38#include <linux/kernel.h> 39#include <linux/kernel.h>
39#include <linux/mm.h> 40#include <linux/mm.h>
@@ -117,6 +118,8 @@ static inline void disable_interrupts(struct spu_state *csa, struct spu *spu)
117 * Write INT_MASK_class1 with value of 0. 118 * Write INT_MASK_class1 with value of 0.
118 * Save INT_Mask_class2 in CSA. 119 * Save INT_Mask_class2 in CSA.
119 * Write INT_MASK_class2 with value of 0. 120 * Write INT_MASK_class2 with value of 0.
121 * Synchronize all three interrupts to be sure
122 * we no longer execute a handler on another CPU.
120 */ 123 */
121 spin_lock_irq(&spu->register_lock); 124 spin_lock_irq(&spu->register_lock);
122 if (csa) { 125 if (csa) {
@@ -129,6 +132,9 @@ static inline void disable_interrupts(struct spu_state *csa, struct spu *spu)
129 spu_int_mask_set(spu, 2, 0ul); 132 spu_int_mask_set(spu, 2, 0ul);
130 eieio(); 133 eieio();
131 spin_unlock_irq(&spu->register_lock); 134 spin_unlock_irq(&spu->register_lock);
135 synchronize_irq(spu->irqs[0]);
136 synchronize_irq(spu->irqs[1]);
137 synchronize_irq(spu->irqs[2]);
132} 138}
133 139
134static inline void set_watchdog_timer(struct spu_state *csa, struct spu *spu) 140static inline void set_watchdog_timer(struct spu_state *csa, struct spu *spu)
diff --git a/arch/powerpc/platforms/celleb/beat.h b/arch/powerpc/platforms/celleb/beat.h
index b2e292df13ca..ac82ac35b991 100644
--- a/arch/powerpc/platforms/celleb/beat.h
+++ b/arch/powerpc/platforms/celleb/beat.h
@@ -21,9 +21,6 @@
21#ifndef _CELLEB_BEAT_H 21#ifndef _CELLEB_BEAT_H
22#define _CELLEB_BEAT_H 22#define _CELLEB_BEAT_H
23 23
24#define DABRX_KERNEL (1UL<<1)
25#define DABRX_USER (1UL<<0)
26
27int64_t beat_get_term_char(uint64_t,uint64_t*,uint64_t*,uint64_t*); 24int64_t beat_get_term_char(uint64_t,uint64_t*,uint64_t*,uint64_t*);
28int64_t beat_put_term_char(uint64_t,uint64_t,uint64_t,uint64_t); 25int64_t beat_put_term_char(uint64_t,uint64_t,uint64_t,uint64_t);
29int64_t beat_repository_encode(int, const char *, uint64_t[4]); 26int64_t beat_repository_encode(int, const char *, uint64_t[4]);
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c
index 40736400ef80..829b8b02527b 100644
--- a/arch/powerpc/platforms/powermac/pic.c
+++ b/arch/powerpc/platforms/powermac/pic.c
@@ -618,9 +618,9 @@ static int pmacpic_find_viaint(void)
618 if (np == NULL) 618 if (np == NULL)
619 goto not_found; 619 goto not_found;
620 viaint = irq_of_parse_and_map(np, 0);; 620 viaint = irq_of_parse_and_map(np, 0);;
621#endif /* CONFIG_ADB_PMU */
622 621
623not_found: 622not_found:
623#endif /* CONFIG_ADB_PMU */
624 return viaint; 624 return viaint;
625} 625}
626 626
diff --git a/arch/powerpc/sysdev/qe_lib/qe.c b/arch/powerpc/sysdev/qe_lib/qe.c
index 6efbd5e5bb1b..cc81fd1141b0 100644
--- a/arch/powerpc/sysdev/qe_lib/qe.c
+++ b/arch/powerpc/sysdev/qe_lib/qe.c
@@ -509,7 +509,7 @@ int qe_upload_firmware(const struct qe_firmware *firmware)
509 } 509 }
510 510
511 /* Validate some of the fields */ 511 /* Validate some of the fields */
512 if ((firmware->count < 1) || (firmware->count >= MAX_QE_RISC)) { 512 if ((firmware->count < 1) || (firmware->count > MAX_QE_RISC)) {
513 printk(KERN_ERR "qe-firmware: invalid data\n"); 513 printk(KERN_ERR "qe-firmware: invalid data\n");
514 return -EINVAL; 514 return -EINVAL;
515 } 515 }
@@ -609,7 +609,10 @@ struct qe_firmware_info *qe_get_firmware_info(void)
609 * If we haven't checked yet, and a driver hasn't uploaded a firmware 609 * If we haven't checked yet, and a driver hasn't uploaded a firmware
610 * yet, then check the device tree for information. 610 * yet, then check the device tree for information.
611 */ 611 */
612 if (initialized || qe_firmware_uploaded) 612 if (qe_firmware_uploaded)
613 return &qe_firmware_info;
614
615 if (initialized)
613 return NULL; 616 return NULL;
614 617
615 initialized = 1; 618 initialized = 1;
diff --git a/arch/ppc/kernel/head_8xx.S b/arch/ppc/kernel/head_8xx.S
index eb8d26f87362..321bda2de2cb 100644
--- a/arch/ppc/kernel/head_8xx.S
+++ b/arch/ppc/kernel/head_8xx.S
@@ -329,8 +329,18 @@ InstructionTLBMiss:
329 mfspr r11, SPRN_MD_TWC /* ....and get the pte address */ 329 mfspr r11, SPRN_MD_TWC /* ....and get the pte address */
330 lwz r10, 0(r11) /* Get the pte */ 330 lwz r10, 0(r11) /* Get the pte */
331 331
332#ifdef CONFIG_SWAP
333 /* do not set the _PAGE_ACCESSED bit of a non-present page */
334 andi. r11, r10, _PAGE_PRESENT
335 beq 4f
336 ori r10, r10, _PAGE_ACCESSED
337 mfspr r11, SPRN_MD_TWC /* get the pte address again */
338 stw r10, 0(r11)
3394:
340#else
332 ori r10, r10, _PAGE_ACCESSED 341 ori r10, r10, _PAGE_ACCESSED
333 stw r10, 0(r11) 342 stw r10, 0(r11)
343#endif
334 344
335 /* The Linux PTE won't go exactly into the MMU TLB. 345 /* The Linux PTE won't go exactly into the MMU TLB.
336 * Software indicator bits 21, 22 and 28 must be clear. 346 * Software indicator bits 21, 22 and 28 must be clear.
@@ -395,8 +405,17 @@ DataStoreTLBMiss:
395 DO_8xx_CPU6(0x3b80, r3) 405 DO_8xx_CPU6(0x3b80, r3)
396 mtspr SPRN_MD_TWC, r11 406 mtspr SPRN_MD_TWC, r11
397 407
398 mfspr r11, SPRN_MD_TWC /* get the pte address again */ 408#ifdef CONFIG_SWAP
409 /* do not set the _PAGE_ACCESSED bit of a non-present page */
410 andi. r11, r10, _PAGE_PRESENT
411 beq 4f
412 ori r10, r10, _PAGE_ACCESSED
4134:
414 /* and update pte in table */
415#else
399 ori r10, r10, _PAGE_ACCESSED 416 ori r10, r10, _PAGE_ACCESSED
417#endif
418 mfspr r11, SPRN_MD_TWC /* get the pte address again */
400 stw r10, 0(r11) 419 stw r10, 0(r11)
401 420
402 /* The Linux PTE won't go exactly into the MMU TLB. 421 /* The Linux PTE won't go exactly into the MMU TLB.
@@ -575,7 +594,16 @@ DataTLBError:
575 594
576 /* Update 'changed', among others. 595 /* Update 'changed', among others.
577 */ 596 */
597#ifdef CONFIG_SWAP
598 ori r10, r10, _PAGE_DIRTY|_PAGE_HWWRITE
599 /* do not set the _PAGE_ACCESSED bit of a non-present page */
600 andi. r11, r10, _PAGE_PRESENT
601 beq 4f
602 ori r10, r10, _PAGE_ACCESSED
6034:
604#else
578 ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE 605 ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE
606#endif
579 mfspr r11, SPRN_MD_TWC /* Get pte address again */ 607 mfspr r11, SPRN_MD_TWC /* Get pte address again */
580 stw r10, 0(r11) /* and update pte in table */ 608 stw r10, 0(r11) /* and update pte in table */
581 609
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index b21444b681b6..1831833c430e 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -61,6 +61,7 @@ config S390
61 def_bool y 61 def_bool y
62 select HAVE_OPROFILE 62 select HAVE_OPROFILE
63 select HAVE_KPROBES 63 select HAVE_KPROBES
64 select HAVE_KRETPROBES
64 65
65source "init/Kconfig" 66source "init/Kconfig"
66 67
@@ -350,6 +351,10 @@ endchoice
350 351
351source "fs/Kconfig.binfmt" 352source "fs/Kconfig.binfmt"
352 353
354config FORCE_MAX_ZONEORDER
355 int
356 default "9"
357
353config PROCESS_DEBUG 358config PROCESS_DEBUG
354 bool "Show crashed user process info" 359 bool "Show crashed user process info"
355 help 360 help
diff --git a/arch/s390/defconfig b/arch/s390/defconfig
index 39921f3a9685..62f6b5a606dd 100644
--- a/arch/s390/defconfig
+++ b/arch/s390/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 3# Linux kernel version: 2.6.25-rc4
4# Sat Feb 9 12:13:01 2008 4# Wed Mar 5 11:22:59 2008
5# 5#
6CONFIG_MMU=y 6CONFIG_MMU=y
7CONFIG_ZONE_DMA=y 7CONFIG_ZONE_DMA=y
@@ -43,12 +43,15 @@ CONFIG_CGROUPS=y
43# CONFIG_CGROUP_DEBUG is not set 43# CONFIG_CGROUP_DEBUG is not set
44CONFIG_CGROUP_NS=y 44CONFIG_CGROUP_NS=y
45# CONFIG_CPUSETS is not set 45# CONFIG_CPUSETS is not set
46CONFIG_GROUP_SCHED=y
46CONFIG_FAIR_GROUP_SCHED=y 47CONFIG_FAIR_GROUP_SCHED=y
47CONFIG_FAIR_USER_SCHED=y 48# CONFIG_RT_GROUP_SCHED is not set
48# CONFIG_FAIR_CGROUP_SCHED is not set 49CONFIG_USER_SCHED=y
50# CONFIG_CGROUP_SCHED is not set
49# CONFIG_CGROUP_CPUACCT is not set 51# CONFIG_CGROUP_CPUACCT is not set
50# CONFIG_RESOURCE_COUNTERS is not set 52# CONFIG_RESOURCE_COUNTERS is not set
51CONFIG_SYSFS_DEPRECATED=y 53CONFIG_SYSFS_DEPRECATED=y
54CONFIG_SYSFS_DEPRECATED_V2=y
52# CONFIG_RELAY is not set 55# CONFIG_RELAY is not set
53CONFIG_NAMESPACES=y 56CONFIG_NAMESPACES=y
54CONFIG_UTS_NS=y 57CONFIG_UTS_NS=y
@@ -85,7 +88,9 @@ CONFIG_SLAB=y
85# CONFIG_MARKERS is not set 88# CONFIG_MARKERS is not set
86CONFIG_HAVE_OPROFILE=y 89CONFIG_HAVE_OPROFILE=y
87CONFIG_KPROBES=y 90CONFIG_KPROBES=y
91CONFIG_KRETPROBES=y
88CONFIG_HAVE_KPROBES=y 92CONFIG_HAVE_KPROBES=y
93CONFIG_HAVE_KRETPROBES=y
89CONFIG_PROC_PAGE_MONITOR=y 94CONFIG_PROC_PAGE_MONITOR=y
90CONFIG_SLABINFO=y 95CONFIG_SLABINFO=y
91CONFIG_RT_MUTEXES=y 96CONFIG_RT_MUTEXES=y
@@ -185,6 +190,7 @@ CONFIG_IPL=y
185CONFIG_IPL_VM=y 190CONFIG_IPL_VM=y
186CONFIG_BINFMT_ELF=y 191CONFIG_BINFMT_ELF=y
187CONFIG_BINFMT_MISC=m 192CONFIG_BINFMT_MISC=m
193CONFIG_FORCE_MAX_ZONEORDER=9
188# CONFIG_PROCESS_DEBUG is not set 194# CONFIG_PROCESS_DEBUG is not set
189CONFIG_PFAULT=y 195CONFIG_PFAULT=y
190# CONFIG_SHARED_KERNEL is not set 196# CONFIG_SHARED_KERNEL is not set
@@ -435,6 +441,7 @@ CONFIG_DASD_EER=y
435CONFIG_MISC_DEVICES=y 441CONFIG_MISC_DEVICES=y
436# CONFIG_EEPROM_93CX6 is not set 442# CONFIG_EEPROM_93CX6 is not set
437# CONFIG_ENCLOSURE_SERVICES is not set 443# CONFIG_ENCLOSURE_SERVICES is not set
444# CONFIG_HAVE_IDE is not set
438 445
439# 446#
440# SCSI device support 447# SCSI device support
@@ -593,6 +600,7 @@ CONFIG_S390_VMUR=m
593# 600#
594# Sonics Silicon Backplane 601# Sonics Silicon Backplane
595# 602#
603# CONFIG_MEMSTICK is not set
596 604
597# 605#
598# File systems 606# File systems
@@ -750,7 +758,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
750# CONFIG_DEBUG_LIST is not set 758# CONFIG_DEBUG_LIST is not set
751# CONFIG_DEBUG_SG is not set 759# CONFIG_DEBUG_SG is not set
752# CONFIG_FRAME_POINTER is not set 760# CONFIG_FRAME_POINTER is not set
753CONFIG_FORCED_INLINING=y
754# CONFIG_RCU_TORTURE_TEST is not set 761# CONFIG_RCU_TORTURE_TEST is not set
755# CONFIG_KPROBES_SANITY_TEST is not set 762# CONFIG_KPROBES_SANITY_TEST is not set
756# CONFIG_BACKTRACE_SELF_TEST is not set 763# CONFIG_BACKTRACE_SELF_TEST is not set
@@ -759,6 +766,7 @@ CONFIG_FORCED_INLINING=y
759# CONFIG_LATENCYTOP is not set 766# CONFIG_LATENCYTOP is not set
760CONFIG_SAMPLES=y 767CONFIG_SAMPLES=y
761# CONFIG_SAMPLE_KOBJECT is not set 768# CONFIG_SAMPLE_KOBJECT is not set
769# CONFIG_SAMPLE_KPROBES is not set
762# CONFIG_DEBUG_PAGEALLOC is not set 770# CONFIG_DEBUG_PAGEALLOC is not set
763 771
764# 772#
diff --git a/arch/s390/kernel/Makefile b/arch/s390/kernel/Makefile
index b3b650a93c7c..4d3e38392cb1 100644
--- a/arch/s390/kernel/Makefile
+++ b/arch/s390/kernel/Makefile
@@ -4,6 +4,11 @@
4 4
5EXTRA_AFLAGS := -traditional 5EXTRA_AFLAGS := -traditional
6 6
7#
8# Passing null pointers is ok for smp code, since we access the lowcore here.
9#
10CFLAGS_smp.o := -Wno-nonnull
11
7obj-y := bitmap.o traps.o time.o process.o base.o early.o \ 12obj-y := bitmap.o traps.o time.o process.o base.o early.o \
8 setup.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o \ 13 setup.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o \
9 semaphore.o s390_ext.o debug.o irq.o ipl.o dis.o diag.o 14 semaphore.o s390_ext.o debug.o irq.o ipl.o dis.o diag.o
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c
index 9f7b73b180f0..01832c440636 100644
--- a/arch/s390/kernel/early.c
+++ b/arch/s390/kernel/early.c
@@ -88,13 +88,17 @@ static noinline __init void create_kernel_nss(void)
88 88
89 __cpcmd(defsys_cmd, NULL, 0, &response); 89 __cpcmd(defsys_cmd, NULL, 0, &response);
90 90
91 if (response != 0) 91 if (response != 0) {
92 kernel_nss_name[0] = '\0';
92 return; 93 return;
94 }
93 95
94 __cpcmd(savesys_cmd, NULL, 0, &response); 96 __cpcmd(savesys_cmd, NULL, 0, &response);
95 97
96 if (response != strlen(savesys_cmd)) 98 if (response != strlen(savesys_cmd)) {
99 kernel_nss_name[0] = '\0';
97 return; 100 return;
101 }
98 102
99 ipl_flags = IPL_NSS_VALID; 103 ipl_flags = IPL_NSS_VALID;
100} 104}
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index 60acdc266db1..375232c46c7a 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -704,6 +704,7 @@ void reipl_run(struct shutdown_trigger *trigger)
704 default: 704 default:
705 break; 705 break;
706 } 706 }
707 disabled_wait((unsigned long) __builtin_return_address(0));
707} 708}
708 709
709static void __init reipl_probe(void) 710static void __init reipl_probe(void)
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index 1c59ec161cf8..ce203154d8ce 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -152,6 +152,10 @@ static void default_idle(void)
152 local_mcck_disable(); 152 local_mcck_disable();
153 if (test_thread_flag(TIF_MCCK_PENDING)) { 153 if (test_thread_flag(TIF_MCCK_PENDING)) {
154 local_mcck_enable(); 154 local_mcck_enable();
155 /* disable monitor call class 0 */
156 __ctl_clear_bit(8, 15);
157 atomic_notifier_call_chain(&idle_chain, S390_CPU_NOT_IDLE,
158 hcpu);
155 local_irq_enable(); 159 local_irq_enable();
156 s390_handle_mcck(); 160 s390_handle_mcck();
157 return; 161 return;
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 818bd09c0260..8f894d380a62 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -629,14 +629,8 @@ static int __cpuinit smp_alloc_lowcore(int cpu)
629 panic_stack = __get_free_page(GFP_KERNEL); 629 panic_stack = __get_free_page(GFP_KERNEL);
630 if (!panic_stack || !async_stack) 630 if (!panic_stack || !async_stack)
631 goto out; 631 goto out;
632 /* 632 memcpy(lowcore, &S390_lowcore, 512);
633 * Only need to copy the first 512 bytes from address 0. But since 633 memset((char *)lowcore + 512, 0, sizeof(*lowcore) - 512);
634 * the compiler emits a warning if src == NULL for memcpy use copy_page
635 * instead. Copies more than needed but this code is not performance
636 * critical.
637 */
638 copy_page(lowcore, &S390_lowcore);
639 memset((void *)lowcore + 512, 0, sizeof(*lowcore) - 512);
640 lowcore->async_stack = async_stack + ASYNC_SIZE; 634 lowcore->async_stack = async_stack + ASYNC_SIZE;
641 lowcore->panic_stack = panic_stack + PAGE_SIZE; 635 lowcore->panic_stack = panic_stack + PAGE_SIZE;
642 636
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index 76a5dd1b4ce9..cb232c155360 100644
--- a/arch/s390/kernel/time.c
+++ b/arch/s390/kernel/time.c
@@ -209,8 +209,6 @@ static void stop_hz_timer(void)
209 */ 209 */
210static void start_hz_timer(void) 210static void start_hz_timer(void)
211{ 211{
212 BUG_ON(!in_interrupt());
213
214 if (!cpu_isset(smp_processor_id(), nohz_cpu_mask)) 212 if (!cpu_isset(smp_processor_id(), nohz_cpu_mask))
215 return; 213 return;
216 account_ticks(get_clock()); 214 account_ticks(get_clock());
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index b3400b5ad5c6..95b7534e9e3c 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -330,6 +330,7 @@ config CPU_SUBTYPE_SH5_101
330 330
331config CPU_SUBTYPE_SH5_103 331config CPU_SUBTYPE_SH5_103
332 bool "Support SH5-103 processor" 332 bool "Support SH5-103 processor"
333 select CPU_SH5
333 334
334endchoice 335endchoice
335 336
@@ -455,13 +456,6 @@ config SH_SECUREEDGE5410
455 This includes both the OEM SecureEdge products as well as the 456 This includes both the OEM SecureEdge products as well as the
456 SME product line. 457 SME product line.
457 458
458config SH_7710VOIPGW
459 bool "SH7710-VOIP-GW"
460 depends on CPU_SUBTYPE_SH7710
461 help
462 Select this option to build a kernel for the SH7710 based
463 VOIP GW.
464
465config SH_RTS7751R2D 459config SH_RTS7751R2D
466 bool "RTS7751R2D" 460 bool "RTS7751R2D"
467 depends on CPU_SUBTYPE_SH7751R 461 depends on CPU_SUBTYPE_SH7751R
diff --git a/arch/sh/Makefile b/arch/sh/Makefile
index 81381e5773c8..c510c225144f 100644
--- a/arch/sh/Makefile
+++ b/arch/sh/Makefile
@@ -118,7 +118,6 @@ machdir-$(CONFIG_SH_EDOSK7705) += renesas/edosk7705
118machdir-$(CONFIG_SH_HIGHLANDER) += renesas/r7780rp 118machdir-$(CONFIG_SH_HIGHLANDER) += renesas/r7780rp
119machdir-$(CONFIG_SH_MIGOR) += renesas/migor 119machdir-$(CONFIG_SH_MIGOR) += renesas/migor
120machdir-$(CONFIG_SH_SDK7780) += renesas/sdk7780 120machdir-$(CONFIG_SH_SDK7780) += renesas/sdk7780
121machdir-$(CONFIG_SH_7710VOIPGW) += renesas/sh7710voipgw
122machdir-$(CONFIG_SH_X3PROTO) += renesas/x3proto 121machdir-$(CONFIG_SH_X3PROTO) += renesas/x3proto
123machdir-$(CONFIG_SH_SH4202_MICRODEV) += superh/microdev 122machdir-$(CONFIG_SH_SH4202_MICRODEV) += superh/microdev
124machdir-$(CONFIG_SH_LANDISK) += landisk 123machdir-$(CONFIG_SH_LANDISK) += landisk
diff --git a/arch/sh/boards/hp6xx/hp6xx_apm.c b/arch/sh/boards/hp6xx/hp6xx_apm.c
index 640ca2a74f16..177f4f028e0d 100644
--- a/arch/sh/boards/hp6xx/hp6xx_apm.c
+++ b/arch/sh/boards/hp6xx/hp6xx_apm.c
@@ -2,6 +2,7 @@
2 * bios-less APM driver for hp680 2 * bios-less APM driver for hp680
3 * 3 *
4 * Copyright 2005 (c) Andriy Skulysh <askulysh@gmail.com> 4 * Copyright 2005 (c) Andriy Skulysh <askulysh@gmail.com>
5 * Copyright 2008 (c) Kristoffer Ericson <kristoffer.ericson@gmail.com>
5 * 6 *
6 * This program is free software; you can redistribute it and/or 7 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License. 8 * modify it under the terms of the GNU General Public License.
@@ -15,17 +16,19 @@
15#include <asm/adc.h> 16#include <asm/adc.h>
16#include <asm/hp6xx.h> 17#include <asm/hp6xx.h>
17 18
18#define SH7709_PGDR 0xa400012c 19/* percentage values */
19
20#define APM_CRITICAL 10 20#define APM_CRITICAL 10
21#define APM_LOW 30 21#define APM_LOW 30
22 22
23/* resonably sane values */
23#define HP680_BATTERY_MAX 898 24#define HP680_BATTERY_MAX 898
24#define HP680_BATTERY_MIN 486 25#define HP680_BATTERY_MIN 486
25#define HP680_BATTERY_AC_ON 1023 26#define HP680_BATTERY_AC_ON 1023
26 27
27#define MODNAME "hp6x0_apm" 28#define MODNAME "hp6x0_apm"
28 29
30#define PGDR 0xa400012c
31
29static void hp6x0_apm_get_power_status(struct apm_power_info *info) 32static void hp6x0_apm_get_power_status(struct apm_power_info *info)
30{ 33{
31 int battery, backup, charging, percentage; 34 int battery, backup, charging, percentage;
@@ -38,17 +41,26 @@ static void hp6x0_apm_get_power_status(struct apm_power_info *info)
38 percentage = 100 * (battery - HP680_BATTERY_MIN) / 41 percentage = 100 * (battery - HP680_BATTERY_MIN) /
39 (HP680_BATTERY_MAX - HP680_BATTERY_MIN); 42 (HP680_BATTERY_MAX - HP680_BATTERY_MIN);
40 43
44 /* % of full battery */
45 info->battery_life = percentage;
46
47 /* We want our estimates in minutes */
48 info->units = 0;
49
50 /* Extremely(!!) rough estimate, we will replace this with a datalist later on */
51 info->time = (2 * battery);
52
41 info->ac_line_status = (battery > HP680_BATTERY_AC_ON) ? 53 info->ac_line_status = (battery > HP680_BATTERY_AC_ON) ?
42 APM_AC_ONLINE : APM_AC_OFFLINE; 54 APM_AC_ONLINE : APM_AC_OFFLINE;
43 55
44 pgdr = ctrl_inb(SH7709_PGDR); 56 pgdr = ctrl_inb(PGDR);
45 if (pgdr & PGDR_MAIN_BATTERY_OUT) { 57 if (pgdr & PGDR_MAIN_BATTERY_OUT) {
46 info->battery_status = APM_BATTERY_STATUS_NOT_PRESENT; 58 info->battery_status = APM_BATTERY_STATUS_NOT_PRESENT;
47 info->battery_flag = 0x80; 59 info->battery_flag = 0x80;
48 } else if (charging < 8) { 60 } else if (charging < 8) {
49 info->battery_status = APM_BATTERY_STATUS_CHARGING; 61 info->battery_status = APM_BATTERY_STATUS_CHARGING;
50 info->battery_flag = 0x08; 62 info->battery_flag = 0x08;
51 info->ac_line_status = 0xff; 63 info->ac_line_status = 0x01;
52 } else if (percentage <= APM_CRITICAL) { 64 } else if (percentage <= APM_CRITICAL) {
53 info->battery_status = APM_BATTERY_STATUS_CRITICAL; 65 info->battery_status = APM_BATTERY_STATUS_CRITICAL;
54 info->battery_flag = 0x04; 66 info->battery_flag = 0x04;
@@ -59,8 +71,6 @@ static void hp6x0_apm_get_power_status(struct apm_power_info *info)
59 info->battery_status = APM_BATTERY_STATUS_HIGH; 71 info->battery_status = APM_BATTERY_STATUS_HIGH;
60 info->battery_flag = 0x01; 72 info->battery_flag = 0x01;
61 } 73 }
62
63 info->units = 0;
64} 74}
65 75
66static irqreturn_t hp6x0_apm_interrupt(int irq, void *dev) 76static irqreturn_t hp6x0_apm_interrupt(int irq, void *dev)
diff --git a/arch/sh/boards/renesas/sh7710voipgw/Makefile b/arch/sh/boards/renesas/sh7710voipgw/Makefile
deleted file mode 100644
index 77037567633b..000000000000
--- a/arch/sh/boards/renesas/sh7710voipgw/Makefile
+++ /dev/null
@@ -1 +0,0 @@
1obj-y := setup.o
diff --git a/arch/sh/boards/renesas/sh7710voipgw/setup.c b/arch/sh/boards/renesas/sh7710voipgw/setup.c
deleted file mode 100644
index 0d56fd83bcba..000000000000
--- a/arch/sh/boards/renesas/sh7710voipgw/setup.c
+++ /dev/null
@@ -1,94 +0,0 @@
1/*
2 * Renesas Technology SH7710 VoIP Gateway
3 *
4 * Copyright (C) 2006 Ranjit Deshpande
5 * Kenati Technologies Inc.
6 *
7 * May be copied or modified under the terms of the GNU General Public
8 * License. See linux/COPYING for more information.
9 */
10#include <linux/init.h>
11#include <asm/machvec.h>
12#include <asm/irq.h>
13#include <asm/io.h>
14
15static struct ipr_data sh7710voipgw_ipr_map[] = {
16 { TIMER2_IRQ, TIMER2_IPR_ADDR, TIMER2_IPR_POS, TIMER2_PRIORITY },
17 { WDT_IRQ, WDT_IPR_ADDR, WDT_IPR_POS, WDT_PRIORITY },
18
19 /* SCIF0 */
20 { SCIF0_ERI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS, SCIF0_PRIORITY },
21 { SCIF0_RXI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS, SCIF0_PRIORITY },
22 { SCIF0_BRI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS, SCIF0_PRIORITY },
23 { SCIF0_TXI_IRQ, SCIF0_IPR_ADDR, SCIF0_IPR_POS, SCIF0_PRIORITY },
24
25 /* DMAC-1 */
26 { DMTE0_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY },
27 { DMTE1_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY },
28 { DMTE2_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY },
29 { DMTE3_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY },
30
31 /* DMAC-2 */
32 { DMTE4_IRQ, DMA2_IPR_ADDR, DMA2_IPR_POS, DMA2_PRIORITY },
33 { DMTE4_IRQ, DMA2_IPR_ADDR, DMA2_IPR_POS, DMA2_PRIORITY },
34
35 /* IPSEC */
36 { IPSEC_IRQ, IPSEC_IPR_ADDR, IPSEC_IPR_POS, IPSEC_PRIORITY },
37
38 /* EDMAC */
39 { EDMAC0_IRQ, EDMAC0_IPR_ADDR, EDMAC0_IPR_POS, EDMAC0_PRIORITY },
40 { EDMAC1_IRQ, EDMAC1_IPR_ADDR, EDMAC1_IPR_POS, EDMAC1_PRIORITY },
41 { EDMAC2_IRQ, EDMAC2_IPR_ADDR, EDMAC2_IPR_POS, EDMAC2_PRIORITY },
42
43 /* SIOF0 */
44 { SIOF0_ERI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS, SIOF0_PRIORITY },
45 { SIOF0_TXI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS, SIOF0_PRIORITY },
46 { SIOF0_RXI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS, SIOF0_PRIORITY },
47 { SIOF0_CCI_IRQ, SIOF0_IPR_ADDR, SIOF0_IPR_POS, SIOF0_PRIORITY },
48
49 /* SIOF1 */
50 { SIOF1_ERI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS, SIOF1_PRIORITY },
51 { SIOF1_TXI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS, SIOF1_PRIORITY },
52 { SIOF1_RXI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS, SIOF1_PRIORITY },
53 { SIOF1_CCI_IRQ, SIOF1_IPR_ADDR, SIOF1_IPR_POS, SIOF1_PRIORITY },
54
55 /* SLIC IRQ's */
56 { IRQ1_IRQ, IRQ1_IPR_ADDR, IRQ1_IPR_POS, IRQ1_PRIORITY },
57 { IRQ2_IRQ, IRQ2_IPR_ADDR, IRQ2_IPR_POS, IRQ2_PRIORITY },
58};
59
60/*
61 * Initialize IRQ setting
62 */
63static void __init sh7710voipgw_init_irq(void)
64{
65 /* Disable all interrupts in IPR registers */
66 ctrl_outw(0x0, INTC_IPRA);
67 ctrl_outw(0x0, INTC_IPRB);
68 ctrl_outw(0x0, INTC_IPRC);
69 ctrl_outw(0x0, INTC_IPRD);
70 ctrl_outw(0x0, INTC_IPRE);
71 ctrl_outw(0x0, INTC_IPRF);
72 ctrl_outw(0x0, INTC_IPRG);
73 ctrl_outw(0x0, INTC_IPRH);
74 ctrl_outw(0x0, INTC_IPRI);
75
76 /* Ack all interrupt sources in the IRR0 register */
77 ctrl_outb(0x3f, INTC_IRR0);
78
79 /* Use IRQ0 - IRQ3 as active low interrupt lines i.e. disable
80 * IRL mode.
81 */
82 ctrl_outw(0x2aa, INTC_ICR1);
83
84 make_ipr_irq(sh7710voipgw_ipr_map, ARRAY_SIZE(sh7710voipgw_ipr_map));
85}
86
87/*
88 * The Machine Vector
89 */
90static struct sh_machine_vector mv_sh7710voipgw __initmv = {
91 .mv_name = "SH7710 VoIP Gateway",
92 .mv_nr_irqs = 104,
93 .mv_init_irq = sh7710voipgw_init_irq,
94};
diff --git a/arch/sh/boards/renesas/x3proto/ilsel.c b/arch/sh/boards/renesas/x3proto/ilsel.c
index 6d4454fef97c..b5c673c39337 100644
--- a/arch/sh/boards/renesas/x3proto/ilsel.c
+++ b/arch/sh/boards/renesas/x3proto/ilsel.c
@@ -68,7 +68,7 @@ static void __ilsel_enable(ilsel_source_t set, unsigned int bit)
68 shift = mk_ilsel_shift(bit); 68 shift = mk_ilsel_shift(bit);
69 69
70 pr_debug("%s: bit#%d: addr - 0x%08lx (shift %d, set %d)\n", 70 pr_debug("%s: bit#%d: addr - 0x%08lx (shift %d, set %d)\n",
71 __FUNCTION__, bit, addr, shift, set); 71 __func__, bit, addr, shift, set);
72 72
73 tmp = ctrl_inw(addr); 73 tmp = ctrl_inw(addr);
74 tmp &= ~(0xf << shift); 74 tmp &= ~(0xf << shift);
diff --git a/arch/sh/boards/superh/microdev/io.c b/arch/sh/boards/superh/microdev/io.c
index b704e20d7e4d..9f8a540f7e14 100644
--- a/arch/sh/boards/superh/microdev/io.c
+++ b/arch/sh/boards/superh/microdev/io.c
@@ -127,7 +127,7 @@ static unsigned long microdev_isa_port2addr(unsigned long offset)
127 * safe default. 127 * safe default.
128 */ 128 */
129 printk("Warning: unexpected port in %s( offset = 0x%lx )\n", 129 printk("Warning: unexpected port in %s( offset = 0x%lx )\n",
130 __FUNCTION__, offset); 130 __func__, offset);
131 result = PVR; 131 result = PVR;
132 } 132 }
133 133
diff --git a/arch/sh/configs/r7780mp_defconfig b/arch/sh/configs/r7780mp_defconfig
index 2ad804ec920a..1a072615ffd4 100644
--- a/arch/sh/configs/r7780mp_defconfig
+++ b/arch/sh/configs/r7780mp_defconfig
@@ -1,9 +1,10 @@
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-rc2 3# Linux kernel version: 2.6.25-rc4
4# Tue Nov 13 20:32:39 2007 4# Thu Mar 6 15:39:59 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 8CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y 9CONFIG_GENERIC_BUG=y
9CONFIG_GENERIC_FIND_NEXT_BIT=y 10CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -19,6 +20,8 @@ CONFIG_LOCKDEP_SUPPORT=y
19# CONFIG_ARCH_HAS_ILOG2_U32 is not set 20# CONFIG_ARCH_HAS_ILOG2_U32 is not set
20# CONFIG_ARCH_HAS_ILOG2_U64 is not set 21# CONFIG_ARCH_HAS_ILOG2_U64 is not set
21CONFIG_ARCH_NO_VIRT_TO_BUS=y 22CONFIG_ARCH_NO_VIRT_TO_BUS=y
23CONFIG_ARCH_SUPPORTS_AOUT=y
24CONFIG_IO_TRAPPED=y
22CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
23 26
24# 27#
@@ -37,17 +40,20 @@ CONFIG_SYSVIPC_SYSCTL=y
37CONFIG_BSD_PROCESS_ACCT=y 40CONFIG_BSD_PROCESS_ACCT=y
38# CONFIG_BSD_PROCESS_ACCT_V3 is not set 41# CONFIG_BSD_PROCESS_ACCT_V3 is not set
39# CONFIG_TASKSTATS is not set 42# CONFIG_TASKSTATS is not set
40# CONFIG_USER_NS is not set
41# CONFIG_AUDIT is not set 43# CONFIG_AUDIT is not set
42CONFIG_IKCONFIG=y 44CONFIG_IKCONFIG=y
43CONFIG_IKCONFIG_PROC=y 45CONFIG_IKCONFIG_PROC=y
44CONFIG_LOG_BUF_SHIFT=14 46CONFIG_LOG_BUF_SHIFT=14
45# CONFIG_CGROUPS is not set 47# CONFIG_CGROUPS is not set
48CONFIG_GROUP_SCHED=y
46CONFIG_FAIR_GROUP_SCHED=y 49CONFIG_FAIR_GROUP_SCHED=y
47CONFIG_FAIR_USER_SCHED=y 50# CONFIG_RT_GROUP_SCHED is not set
48# CONFIG_FAIR_CGROUP_SCHED is not set 51CONFIG_USER_SCHED=y
49# CONFIG_SYSFS_DEPRECATED is not set 52# CONFIG_CGROUP_SCHED is not set
53CONFIG_SYSFS_DEPRECATED=y
54CONFIG_SYSFS_DEPRECATED_V2=y
50# CONFIG_RELAY is not set 55# CONFIG_RELAY is not set
56# CONFIG_NAMESPACES is not set
51# CONFIG_BLK_DEV_INITRD is not set 57# CONFIG_BLK_DEV_INITRD is not set
52CONFIG_CC_OPTIMIZE_FOR_SIZE=y 58CONFIG_CC_OPTIMIZE_FOR_SIZE=y
53CONFIG_SYSCTL=y 59CONFIG_SYSCTL=y
@@ -61,17 +67,27 @@ CONFIG_HOTPLUG=y
61CONFIG_PRINTK=y 67CONFIG_PRINTK=y
62CONFIG_BUG=y 68CONFIG_BUG=y
63CONFIG_ELF_CORE=y 69CONFIG_ELF_CORE=y
70CONFIG_COMPAT_BRK=y
64CONFIG_BASE_FULL=y 71CONFIG_BASE_FULL=y
65# CONFIG_FUTEX is not set 72# CONFIG_FUTEX is not set
66CONFIG_ANON_INODES=y 73CONFIG_ANON_INODES=y
67# CONFIG_EPOLL is not set 74# CONFIG_EPOLL is not set
68CONFIG_SIGNALFD=y 75CONFIG_SIGNALFD=y
76CONFIG_TIMERFD=y
69CONFIG_EVENTFD=y 77CONFIG_EVENTFD=y
70CONFIG_SHMEM=y 78CONFIG_SHMEM=y
71CONFIG_VM_EVENT_COUNTERS=y 79CONFIG_VM_EVENT_COUNTERS=y
72CONFIG_SLAB=y 80CONFIG_SLAB=y
73# CONFIG_SLUB is not set 81# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set 82# CONFIG_SLOB is not set
83CONFIG_PROFILING=y
84# CONFIG_MARKERS is not set
85CONFIG_OPROFILE=m
86CONFIG_HAVE_OPROFILE=y
87# CONFIG_HAVE_KPROBES is not set
88# CONFIG_HAVE_KRETPROBES is not set
89CONFIG_PROC_PAGE_MONITOR=y
90CONFIG_SLABINFO=y
75# CONFIG_TINY_SHMEM is not set 91# CONFIG_TINY_SHMEM is not set
76CONFIG_BASE_SMALL=0 92CONFIG_BASE_SMALL=0
77CONFIG_MODULES=y 93CONFIG_MODULES=y
@@ -98,6 +114,8 @@ CONFIG_IOSCHED_NOOP=y
98# CONFIG_DEFAULT_CFQ is not set 114# CONFIG_DEFAULT_CFQ is not set
99CONFIG_DEFAULT_NOOP=y 115CONFIG_DEFAULT_NOOP=y
100CONFIG_DEFAULT_IOSCHED="noop" 116CONFIG_DEFAULT_IOSCHED="noop"
117CONFIG_CLASSIC_RCU=y
118# CONFIG_PREEMPT_RCU is not set
101 119
102# 120#
103# System type 121# System type
@@ -105,7 +123,9 @@ CONFIG_DEFAULT_IOSCHED="noop"
105CONFIG_CPU_SH4=y 123CONFIG_CPU_SH4=y
106CONFIG_CPU_SH4A=y 124CONFIG_CPU_SH4A=y
107# CONFIG_CPU_SUBTYPE_SH7619 is not set 125# CONFIG_CPU_SUBTYPE_SH7619 is not set
126# CONFIG_CPU_SUBTYPE_SH7203 is not set
108# CONFIG_CPU_SUBTYPE_SH7206 is not set 127# CONFIG_CPU_SUBTYPE_SH7206 is not set
128# CONFIG_CPU_SUBTYPE_SH7263 is not set
109# CONFIG_CPU_SUBTYPE_SH7705 is not set 129# CONFIG_CPU_SUBTYPE_SH7705 is not set
110# CONFIG_CPU_SUBTYPE_SH7706 is not set 130# CONFIG_CPU_SUBTYPE_SH7706 is not set
111# CONFIG_CPU_SUBTYPE_SH7707 is not set 131# CONFIG_CPU_SUBTYPE_SH7707 is not set
@@ -114,6 +134,7 @@ CONFIG_CPU_SH4A=y
114# CONFIG_CPU_SUBTYPE_SH7710 is not set 134# CONFIG_CPU_SUBTYPE_SH7710 is not set
115# CONFIG_CPU_SUBTYPE_SH7712 is not set 135# CONFIG_CPU_SUBTYPE_SH7712 is not set
116# CONFIG_CPU_SUBTYPE_SH7720 is not set 136# CONFIG_CPU_SUBTYPE_SH7720 is not set
137# CONFIG_CPU_SUBTYPE_SH7721 is not set
117# CONFIG_CPU_SUBTYPE_SH7750 is not set 138# CONFIG_CPU_SUBTYPE_SH7750 is not set
118# CONFIG_CPU_SUBTYPE_SH7091 is not set 139# CONFIG_CPU_SUBTYPE_SH7091 is not set
119# CONFIG_CPU_SUBTYPE_SH7750R is not set 140# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -122,12 +143,16 @@ CONFIG_CPU_SH4A=y
122# CONFIG_CPU_SUBTYPE_SH7751R is not set 143# CONFIG_CPU_SUBTYPE_SH7751R is not set
123# CONFIG_CPU_SUBTYPE_SH7760 is not set 144# CONFIG_CPU_SUBTYPE_SH7760 is not set
124# CONFIG_CPU_SUBTYPE_SH4_202 is not set 145# CONFIG_CPU_SUBTYPE_SH4_202 is not set
146# CONFIG_CPU_SUBTYPE_SH7763 is not set
125# CONFIG_CPU_SUBTYPE_SH7770 is not set 147# CONFIG_CPU_SUBTYPE_SH7770 is not set
126CONFIG_CPU_SUBTYPE_SH7780=y 148CONFIG_CPU_SUBTYPE_SH7780=y
127# CONFIG_CPU_SUBTYPE_SH7785 is not set 149# CONFIG_CPU_SUBTYPE_SH7785 is not set
128# CONFIG_CPU_SUBTYPE_SHX3 is not set 150# CONFIG_CPU_SUBTYPE_SHX3 is not set
129# CONFIG_CPU_SUBTYPE_SH7343 is not set 151# CONFIG_CPU_SUBTYPE_SH7343 is not set
130# CONFIG_CPU_SUBTYPE_SH7722 is not set 152# CONFIG_CPU_SUBTYPE_SH7722 is not set
153# CONFIG_CPU_SUBTYPE_SH7366 is not set
154# CONFIG_CPU_SUBTYPE_SH5_101 is not set
155# CONFIG_CPU_SUBTYPE_SH5_103 is not set
131 156
132# 157#
133# Memory management options 158# Memory management options
@@ -137,7 +162,8 @@ CONFIG_MMU=y
137CONFIG_PAGE_OFFSET=0x80000000 162CONFIG_PAGE_OFFSET=0x80000000
138CONFIG_MEMORY_START=0x08000000 163CONFIG_MEMORY_START=0x08000000
139CONFIG_MEMORY_SIZE=0x08000000 164CONFIG_MEMORY_SIZE=0x08000000
140# CONFIG_32BIT is not set 165CONFIG_29BIT=y
166# CONFIG_PMB is not set
141CONFIG_VSYSCALL=y 167CONFIG_VSYSCALL=y
142CONFIG_ARCH_FLATMEM_ENABLE=y 168CONFIG_ARCH_FLATMEM_ENABLE=y
143CONFIG_ARCH_SPARSEMEM_ENABLE=y 169CONFIG_ARCH_SPARSEMEM_ENABLE=y
@@ -153,6 +179,7 @@ CONFIG_HUGETLB_PAGE_SIZE_64K=y
153# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set 179# CONFIG_HUGETLB_PAGE_SIZE_1MB is not set
154# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set 180# CONFIG_HUGETLB_PAGE_SIZE_4MB is not set
155# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set 181# CONFIG_HUGETLB_PAGE_SIZE_64MB is not set
182# CONFIG_HUGETLB_PAGE_SIZE_512MB is not set
156CONFIG_SELECT_MEMORY_MODEL=y 183CONFIG_SELECT_MEMORY_MODEL=y
157CONFIG_FLATMEM_MANUAL=y 184CONFIG_FLATMEM_MANUAL=y
158# CONFIG_DISCONTIGMEM_MANUAL is not set 185# CONFIG_DISCONTIGMEM_MANUAL is not set
@@ -190,6 +217,7 @@ CONFIG_CPU_HAS_FPU=y
190# Board support 217# Board support
191# 218#
192# CONFIG_SH_7780_SOLUTION_ENGINE is not set 219# CONFIG_SH_7780_SOLUTION_ENGINE is not set
220# CONFIG_SH_SDK7780 is not set
193CONFIG_SH_HIGHLANDER=y 221CONFIG_SH_HIGHLANDER=y
194# CONFIG_SH_R7780RP is not set 222# CONFIG_SH_R7780RP is not set
195CONFIG_SH_R7780MP=y 223CONFIG_SH_R7780MP=y
@@ -234,12 +262,13 @@ CONFIG_HZ_250=y
234# CONFIG_HZ_300 is not set 262# CONFIG_HZ_300 is not set
235# CONFIG_HZ_1000 is not set 263# CONFIG_HZ_1000 is not set
236CONFIG_HZ=250 264CONFIG_HZ=250
265# CONFIG_SCHED_HRTICK is not set
237CONFIG_KEXEC=y 266CONFIG_KEXEC=y
238# CONFIG_CRASH_DUMP is not set 267# CONFIG_CRASH_DUMP is not set
239# CONFIG_PREEMPT_NONE is not set 268# CONFIG_PREEMPT_NONE is not set
240# CONFIG_PREEMPT_VOLUNTARY is not set 269# CONFIG_PREEMPT_VOLUNTARY is not set
241CONFIG_PREEMPT=y 270CONFIG_PREEMPT=y
242CONFIG_PREEMPT_BKL=y 271CONFIG_RCU_TRACE=y
243CONFIG_GUSA=y 272CONFIG_GUSA=y
244 273
245# 274#
@@ -284,6 +313,7 @@ CONFIG_XFRM=y
284# CONFIG_XFRM_USER is not set 313# CONFIG_XFRM_USER is not set
285# CONFIG_XFRM_SUB_POLICY is not set 314# CONFIG_XFRM_SUB_POLICY is not set
286# CONFIG_XFRM_MIGRATE is not set 315# CONFIG_XFRM_MIGRATE is not set
316# CONFIG_XFRM_STATISTICS is not set
287# CONFIG_NET_KEY is not set 317# CONFIG_NET_KEY is not set
288CONFIG_INET=y 318CONFIG_INET=y
289# CONFIG_IP_MULTICAST is not set 319# CONFIG_IP_MULTICAST is not set
@@ -344,6 +374,7 @@ CONFIG_LLC=m
344# 374#
345# CONFIG_NET_PKTGEN is not set 375# CONFIG_NET_PKTGEN is not set
346# CONFIG_HAMRADIO is not set 376# CONFIG_HAMRADIO is not set
377# CONFIG_CAN is not set
347# CONFIG_IRDA is not set 378# CONFIG_IRDA is not set
348# CONFIG_BT is not set 379# CONFIG_BT is not set
349# CONFIG_AF_RXRPC is not set 380# CONFIG_AF_RXRPC is not set
@@ -386,7 +417,7 @@ CONFIG_BLK_DEV=y
386CONFIG_BLK_DEV_RAM=y 417CONFIG_BLK_DEV_RAM=y
387CONFIG_BLK_DEV_RAM_COUNT=16 418CONFIG_BLK_DEV_RAM_COUNT=16
388CONFIG_BLK_DEV_RAM_SIZE=4096 419CONFIG_BLK_DEV_RAM_SIZE=4096
389CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 420# CONFIG_BLK_DEV_XIP is not set
390# CONFIG_CDROM_PKTCDVD is not set 421# CONFIG_CDROM_PKTCDVD is not set
391# CONFIG_ATA_OVER_ETH is not set 422# CONFIG_ATA_OVER_ETH is not set
392CONFIG_MISC_DEVICES=y 423CONFIG_MISC_DEVICES=y
@@ -394,6 +425,8 @@ CONFIG_MISC_DEVICES=y
394CONFIG_EEPROM_93CX6=y 425CONFIG_EEPROM_93CX6=y
395# CONFIG_SGI_IOC4 is not set 426# CONFIG_SGI_IOC4 is not set
396# CONFIG_TIFM_CORE is not set 427# CONFIG_TIFM_CORE is not set
428# CONFIG_ENCLOSURE_SERVICES is not set
429CONFIG_HAVE_IDE=y
397# CONFIG_IDE is not set 430# CONFIG_IDE is not set
398 431
399# 432#
@@ -453,6 +486,7 @@ CONFIG_SCSI_LOWLEVEL=y
453# CONFIG_SCSI_IPS is not set 486# CONFIG_SCSI_IPS is not set
454# CONFIG_SCSI_INITIO is not set 487# CONFIG_SCSI_INITIO is not set
455# CONFIG_SCSI_INIA100 is not set 488# CONFIG_SCSI_INIA100 is not set
489# CONFIG_SCSI_MVSAS is not set
456# CONFIG_SCSI_STEX is not set 490# CONFIG_SCSI_STEX is not set
457# CONFIG_SCSI_SYM53C8XX_2 is not set 491# CONFIG_SCSI_SYM53C8XX_2 is not set
458# CONFIG_SCSI_IPR is not set 492# CONFIG_SCSI_IPR is not set
@@ -506,6 +540,7 @@ CONFIG_SATA_SIL=y
506# CONFIG_PATA_MPIIX is not set 540# CONFIG_PATA_MPIIX is not set
507# CONFIG_PATA_OLDPIIX is not set 541# CONFIG_PATA_OLDPIIX is not set
508# CONFIG_PATA_NETCELL is not set 542# CONFIG_PATA_NETCELL is not set
543# CONFIG_PATA_NINJA32 is not set
509# CONFIG_PATA_NS87410 is not set 544# CONFIG_PATA_NS87410 is not set
510# CONFIG_PATA_NS87415 is not set 545# CONFIG_PATA_NS87415 is not set
511# CONFIG_PATA_OPTI is not set 546# CONFIG_PATA_OPTI is not set
@@ -538,7 +573,6 @@ CONFIG_NETDEVICES=y
538# CONFIG_EQUALIZER is not set 573# CONFIG_EQUALIZER is not set
539# CONFIG_TUN is not set 574# CONFIG_TUN is not set
540# CONFIG_VETH is not set 575# CONFIG_VETH is not set
541# CONFIG_IP1000 is not set
542# CONFIG_ARCNET is not set 576# CONFIG_ARCNET is not set
543# CONFIG_PHYLIB is not set 577# CONFIG_PHYLIB is not set
544CONFIG_NET_ETHERNET=y 578CONFIG_NET_ETHERNET=y
@@ -551,7 +585,6 @@ CONFIG_AX88796_93CX6=y
551# CONFIG_CASSINI is not set 585# CONFIG_CASSINI is not set
552# CONFIG_NET_VENDOR_3COM is not set 586# CONFIG_NET_VENDOR_3COM is not set
553# CONFIG_SMC91X is not set 587# CONFIG_SMC91X is not set
554# CONFIG_SMC911X is not set
555# CONFIG_NET_TULIP is not set 588# CONFIG_NET_TULIP is not set
556# CONFIG_HP100 is not set 589# CONFIG_HP100 is not set
557# CONFIG_IBM_NEW_EMAC_ZMII is not set 590# CONFIG_IBM_NEW_EMAC_ZMII is not set
@@ -576,6 +609,7 @@ CONFIG_8139TOO=m
576# CONFIG_8139TOO_TUNE_TWISTER is not set 609# CONFIG_8139TOO_TUNE_TWISTER is not set
577CONFIG_8139TOO_8129=y 610CONFIG_8139TOO_8129=y
578# CONFIG_8139_OLD_RX_RESET is not set 611# CONFIG_8139_OLD_RX_RESET is not set
612# CONFIG_R6040 is not set
579# CONFIG_SIS900 is not set 613# CONFIG_SIS900 is not set
580# CONFIG_EPIC100 is not set 614# CONFIG_EPIC100 is not set
581# CONFIG_SUNDANCE is not set 615# CONFIG_SUNDANCE is not set
@@ -591,6 +625,9 @@ CONFIG_E1000=m
591# CONFIG_E1000_NAPI is not set 625# CONFIG_E1000_NAPI is not set
592# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set 626# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
593# CONFIG_E1000E is not set 627# CONFIG_E1000E is not set
628# CONFIG_E1000E_ENABLED is not set
629# CONFIG_IP1000 is not set
630# CONFIG_IGB is not set
594# CONFIG_NS83820 is not set 631# CONFIG_NS83820 is not set
595# CONFIG_HAMACHI is not set 632# CONFIG_HAMACHI is not set
596# CONFIG_YELLOWFIN is not set 633# CONFIG_YELLOWFIN is not set
@@ -616,6 +653,7 @@ CONFIG_NETDEV_10000=y
616# CONFIG_NIU is not set 653# CONFIG_NIU is not set
617# CONFIG_MLX4_CORE is not set 654# CONFIG_MLX4_CORE is not set
618# CONFIG_TEHUTI is not set 655# CONFIG_TEHUTI is not set
656# CONFIG_BNX2X is not set
619# CONFIG_TR is not set 657# CONFIG_TR is not set
620 658
621# 659#
@@ -629,7 +667,6 @@ CONFIG_NETDEV_10000=y
629# CONFIG_PPP is not set 667# CONFIG_PPP is not set
630# CONFIG_SLIP is not set 668# CONFIG_SLIP is not set
631# CONFIG_NET_FC is not set 669# CONFIG_NET_FC is not set
632# CONFIG_SHAPER is not set
633# CONFIG_NETCONSOLE is not set 670# CONFIG_NETCONSOLE is not set
634# CONFIG_NETPOLL is not set 671# CONFIG_NETPOLL is not set
635# CONFIG_NET_POLL_CONTROLLER is not set 672# CONFIG_NET_POLL_CONTROLLER is not set
@@ -686,6 +723,7 @@ CONFIG_SERIO_LIBPS2=y
686# 723#
687# CONFIG_VT is not set 724# CONFIG_VT is not set
688# CONFIG_SERIAL_NONSTANDARD is not set 725# CONFIG_SERIAL_NONSTANDARD is not set
726# CONFIG_NOZOMI is not set
689 727
690# 728#
691# Serial drivers 729# Serial drivers
@@ -722,6 +760,7 @@ CONFIG_DEVPORT=y
722# CONFIG_POWER_SUPPLY is not set 760# CONFIG_POWER_SUPPLY is not set
723CONFIG_HWMON=y 761CONFIG_HWMON=y
724# CONFIG_HWMON_VID is not set 762# CONFIG_HWMON_VID is not set
763# CONFIG_SENSORS_I5K_AMB is not set
725# CONFIG_SENSORS_F71805F is not set 764# CONFIG_SENSORS_F71805F is not set
726# CONFIG_SENSORS_F71882FG is not set 765# CONFIG_SENSORS_F71882FG is not set
727# CONFIG_SENSORS_IT87 is not set 766# CONFIG_SENSORS_IT87 is not set
@@ -736,6 +775,7 @@ CONFIG_HWMON=y
736# CONFIG_SENSORS_W83627HF is not set 775# CONFIG_SENSORS_W83627HF is not set
737# CONFIG_SENSORS_W83627EHF is not set 776# CONFIG_SENSORS_W83627EHF is not set
738# CONFIG_HWMON_DEBUG_CHIP is not set 777# CONFIG_HWMON_DEBUG_CHIP is not set
778CONFIG_THERMAL=y
739# CONFIG_WATCHDOG is not set 779# CONFIG_WATCHDOG is not set
740 780
741# 781#
@@ -800,12 +840,9 @@ CONFIG_USB_ARCH_HAS_EHCI=y
800# 840#
801# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 841# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
802# 842#
803
804#
805# USB Gadget Support
806#
807# CONFIG_USB_GADGET is not set 843# CONFIG_USB_GADGET is not set
808# CONFIG_MMC is not set 844# CONFIG_MMC is not set
845# CONFIG_MEMSTICK is not set
809# CONFIG_NEW_LEDS is not set 846# CONFIG_NEW_LEDS is not set
810# CONFIG_INFINIBAND is not set 847# CONFIG_INFINIBAND is not set
811CONFIG_RTC_LIB=y 848CONFIG_RTC_LIB=y
@@ -830,9 +867,10 @@ CONFIG_RTC_INTF_DEV=y
830# 867#
831# Platform RTC drivers 868# Platform RTC drivers
832# 869#
870# CONFIG_RTC_DRV_DS1511 is not set
833# CONFIG_RTC_DRV_DS1553 is not set 871# CONFIG_RTC_DRV_DS1553 is not set
834# CONFIG_RTC_DRV_STK17TA8 is not set
835# CONFIG_RTC_DRV_DS1742 is not set 872# CONFIG_RTC_DRV_DS1742 is not set
873# CONFIG_RTC_DRV_STK17TA8 is not set
836# CONFIG_RTC_DRV_M48T86 is not set 874# CONFIG_RTC_DRV_M48T86 is not set
837# CONFIG_RTC_DRV_M48T59 is not set 875# CONFIG_RTC_DRV_M48T59 is not set
838# CONFIG_RTC_DRV_V3020 is not set 876# CONFIG_RTC_DRV_V3020 is not set
@@ -867,12 +905,10 @@ CONFIG_FS_POSIX_ACL=y
867# CONFIG_XFS_FS is not set 905# CONFIG_XFS_FS is not set
868# CONFIG_GFS2_FS is not set 906# CONFIG_GFS2_FS is not set
869# CONFIG_OCFS2_FS is not set 907# CONFIG_OCFS2_FS is not set
870CONFIG_MINIX_FS=y 908CONFIG_DNOTIFY=y
871# CONFIG_ROMFS_FS is not set
872CONFIG_INOTIFY=y 909CONFIG_INOTIFY=y
873CONFIG_INOTIFY_USER=y 910CONFIG_INOTIFY_USER=y
874# CONFIG_QUOTA is not set 911# CONFIG_QUOTA is not set
875CONFIG_DNOTIFY=y
876# CONFIG_AUTOFS_FS is not set 912# CONFIG_AUTOFS_FS is not set
877# CONFIG_AUTOFS4_FS is not set 913# CONFIG_AUTOFS4_FS is not set
878CONFIG_FUSE_FS=m 914CONFIG_FUSE_FS=m
@@ -920,8 +956,10 @@ CONFIG_CONFIGFS_FS=m
920# CONFIG_EFS_FS is not set 956# CONFIG_EFS_FS is not set
921# CONFIG_CRAMFS is not set 957# CONFIG_CRAMFS is not set
922# CONFIG_VXFS_FS is not set 958# CONFIG_VXFS_FS is not set
959CONFIG_MINIX_FS=y
923# CONFIG_HPFS_FS is not set 960# CONFIG_HPFS_FS is not set
924# CONFIG_QNX4FS_FS is not set 961# CONFIG_QNX4FS_FS is not set
962# CONFIG_ROMFS_FS is not set
925# CONFIG_SYSV_FS is not set 963# CONFIG_SYSV_FS is not set
926# CONFIG_UFS_FS is not set 964# CONFIG_UFS_FS is not set
927CONFIG_NETWORK_FILESYSTEMS=y 965CONFIG_NETWORK_FILESYSTEMS=y
@@ -997,10 +1035,6 @@ CONFIG_NLS_ISO8859_1=y
997# CONFIG_NLS_KOI8_U is not set 1035# CONFIG_NLS_KOI8_U is not set
998# CONFIG_NLS_UTF8 is not set 1036# CONFIG_NLS_UTF8 is not set
999# CONFIG_DLM is not set 1037# CONFIG_DLM is not set
1000CONFIG_INSTRUMENTATION=y
1001CONFIG_PROFILING=y
1002CONFIG_OPROFILE=m
1003# CONFIG_MARKERS is not set
1004 1038
1005# 1039#
1006# Kernel hacking 1040# Kernel hacking
@@ -1035,9 +1069,9 @@ CONFIG_DEBUG_INFO=y
1035# CONFIG_DEBUG_LIST is not set 1069# CONFIG_DEBUG_LIST is not set
1036# CONFIG_DEBUG_SG is not set 1070# CONFIG_DEBUG_SG is not set
1037# CONFIG_FRAME_POINTER is not set 1071# CONFIG_FRAME_POINTER is not set
1038CONFIG_FORCED_INLINING=y
1039# CONFIG_BOOT_PRINTK_DELAY is not set 1072# CONFIG_BOOT_PRINTK_DELAY is not set
1040# CONFIG_RCU_TORTURE_TEST is not set 1073# CONFIG_RCU_TORTURE_TEST is not set
1074# CONFIG_BACKTRACE_SELF_TEST is not set
1041# CONFIG_FAULT_INJECTION is not set 1075# CONFIG_FAULT_INJECTION is not set
1042# CONFIG_SAMPLES is not set 1076# CONFIG_SAMPLES is not set
1043CONFIG_SH_STANDARD_BIOS=y 1077CONFIG_SH_STANDARD_BIOS=y
@@ -1059,6 +1093,7 @@ CONFIG_DEBUG_STACKOVERFLOW=y
1059CONFIG_CRYPTO=y 1093CONFIG_CRYPTO=y
1060CONFIG_CRYPTO_ALGAPI=y 1094CONFIG_CRYPTO_ALGAPI=y
1061CONFIG_CRYPTO_BLKCIPHER=y 1095CONFIG_CRYPTO_BLKCIPHER=y
1096# CONFIG_CRYPTO_SEQIV is not set
1062CONFIG_CRYPTO_HASH=y 1097CONFIG_CRYPTO_HASH=y
1063CONFIG_CRYPTO_MANAGER=y 1098CONFIG_CRYPTO_MANAGER=y
1064CONFIG_CRYPTO_HMAC=y 1099CONFIG_CRYPTO_HMAC=y
@@ -1077,6 +1112,9 @@ CONFIG_CRYPTO_CBC=y
1077CONFIG_CRYPTO_PCBC=m 1112CONFIG_CRYPTO_PCBC=m
1078# CONFIG_CRYPTO_LRW is not set 1113# CONFIG_CRYPTO_LRW is not set
1079# CONFIG_CRYPTO_XTS is not set 1114# CONFIG_CRYPTO_XTS is not set
1115# CONFIG_CRYPTO_CTR is not set
1116# CONFIG_CRYPTO_GCM is not set
1117# CONFIG_CRYPTO_CCM is not set
1080# CONFIG_CRYPTO_CRYPTD is not set 1118# CONFIG_CRYPTO_CRYPTD is not set
1081CONFIG_CRYPTO_DES=y 1119CONFIG_CRYPTO_DES=y
1082# CONFIG_CRYPTO_FCRYPT is not set 1120# CONFIG_CRYPTO_FCRYPT is not set
@@ -1091,13 +1129,16 @@ CONFIG_CRYPTO_DES=y
1091# CONFIG_CRYPTO_KHAZAD is not set 1129# CONFIG_CRYPTO_KHAZAD is not set
1092# CONFIG_CRYPTO_ANUBIS is not set 1130# CONFIG_CRYPTO_ANUBIS is not set
1093# CONFIG_CRYPTO_SEED is not set 1131# CONFIG_CRYPTO_SEED is not set
1132# CONFIG_CRYPTO_SALSA20 is not set
1094# CONFIG_CRYPTO_DEFLATE is not set 1133# CONFIG_CRYPTO_DEFLATE is not set
1095# CONFIG_CRYPTO_MICHAEL_MIC is not set 1134# CONFIG_CRYPTO_MICHAEL_MIC is not set
1096# CONFIG_CRYPTO_CRC32C is not set 1135# CONFIG_CRYPTO_CRC32C is not set
1097# CONFIG_CRYPTO_CAMELLIA is not set 1136# CONFIG_CRYPTO_CAMELLIA is not set
1098# CONFIG_CRYPTO_TEST is not set 1137# CONFIG_CRYPTO_TEST is not set
1099# CONFIG_CRYPTO_AUTHENC is not set 1138# CONFIG_CRYPTO_AUTHENC is not set
1139# CONFIG_CRYPTO_LZO is not set
1100CONFIG_CRYPTO_HW=y 1140CONFIG_CRYPTO_HW=y
1141# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1101 1142
1102# 1143#
1103# Library routines 1144# Library routines
diff --git a/arch/sh/configs/se7780_defconfig b/arch/sh/configs/se7780_defconfig
index f68743dc3931..30f5ee40c312 100644
--- a/arch/sh/configs/se7780_defconfig
+++ b/arch/sh/configs/se7780_defconfig
@@ -1,9 +1,10 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.21-rc3 3# Linux kernel version: 2.6.25-rc3
4# Thu Mar 15 14:06:20 2007 4# Thu Feb 28 10:18:04 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 8CONFIG_RWSEM_GENERIC_SPINLOCK=y
8CONFIG_GENERIC_BUG=y 9CONFIG_GENERIC_BUG=y
9CONFIG_GENERIC_FIND_NEXT_BIT=y 10CONFIG_GENERIC_FIND_NEXT_BIT=y
@@ -11,38 +12,44 @@ CONFIG_GENERIC_HWEIGHT=y
11CONFIG_GENERIC_HARDIRQS=y 12CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y 13CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y 14CONFIG_GENERIC_CALIBRATE_DELAY=y
14# CONFIG_GENERIC_TIME is not set 15CONFIG_GENERIC_TIME=y
16CONFIG_GENERIC_CLOCKEVENTS=y
17CONFIG_SYS_SUPPORTS_PCI=y
15CONFIG_STACKTRACE_SUPPORT=y 18CONFIG_STACKTRACE_SUPPORT=y
16CONFIG_LOCKDEP_SUPPORT=y 19CONFIG_LOCKDEP_SUPPORT=y
17# CONFIG_ARCH_HAS_ILOG2_U32 is not set 20# CONFIG_ARCH_HAS_ILOG2_U32 is not set
18# CONFIG_ARCH_HAS_ILOG2_U64 is not set 21# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_ARCH_NO_VIRT_TO_BUS=y
23CONFIG_ARCH_SUPPORTS_AOUT=y
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 24CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 25
21# 26#
22# Code maturity level options 27# General setup
23# 28#
24# CONFIG_EXPERIMENTAL is not set 29# CONFIG_EXPERIMENTAL is not set
25CONFIG_BROKEN_ON_SMP=y 30CONFIG_BROKEN_ON_SMP=y
26CONFIG_INIT_ENV_ARG_LIMIT=32 31CONFIG_INIT_ENV_ARG_LIMIT=32
27
28#
29# General setup
30#
31CONFIG_LOCALVERSION="" 32CONFIG_LOCALVERSION=""
32CONFIG_LOCALVERSION_AUTO=y 33CONFIG_LOCALVERSION_AUTO=y
33# CONFIG_SWAP is not set 34# CONFIG_SWAP is not set
34CONFIG_SYSVIPC=y 35CONFIG_SYSVIPC=y
35# CONFIG_IPC_NS is not set
36CONFIG_SYSVIPC_SYSCTL=y 36CONFIG_SYSVIPC_SYSCTL=y
37# CONFIG_BSD_PROCESS_ACCT is not set 37# CONFIG_BSD_PROCESS_ACCT is not set
38# CONFIG_TASKSTATS is not set 38# CONFIG_TASKSTATS is not set
39# CONFIG_UTS_NS is not set
40# CONFIG_AUDIT is not set 39# CONFIG_AUDIT is not set
41CONFIG_IKCONFIG=y 40CONFIG_IKCONFIG=y
42CONFIG_IKCONFIG_PROC=y 41CONFIG_IKCONFIG_PROC=y
42CONFIG_LOG_BUF_SHIFT=14
43# CONFIG_CGROUPS is not set
44CONFIG_GROUP_SCHED=y
45CONFIG_FAIR_GROUP_SCHED=y
46CONFIG_USER_SCHED=y
47# CONFIG_CGROUP_SCHED is not set
43CONFIG_SYSFS_DEPRECATED=y 48CONFIG_SYSFS_DEPRECATED=y
44# CONFIG_RELAY is not set 49# CONFIG_RELAY is not set
50# CONFIG_NAMESPACES is not set
45# CONFIG_BLK_DEV_INITRD is not set 51# CONFIG_BLK_DEV_INITRD is not set
52CONFIG_CC_OPTIMIZE_FOR_SIZE=y
46CONFIG_SYSCTL=y 53CONFIG_SYSCTL=y
47CONFIG_EMBEDDED=y 54CONFIG_EMBEDDED=y
48CONFIG_UID16=y 55CONFIG_UID16=y
@@ -52,31 +59,36 @@ CONFIG_SYSCTL_SYSCALL=y
52CONFIG_PRINTK=y 59CONFIG_PRINTK=y
53CONFIG_BUG=y 60CONFIG_BUG=y
54CONFIG_ELF_CORE=y 61CONFIG_ELF_CORE=y
62CONFIG_COMPAT_BRK=y
55CONFIG_BASE_FULL=y 63CONFIG_BASE_FULL=y
56CONFIG_FUTEX=y 64CONFIG_FUTEX=y
65CONFIG_ANON_INODES=y
57# CONFIG_EPOLL is not set 66# CONFIG_EPOLL is not set
67CONFIG_SIGNALFD=y
68CONFIG_TIMERFD=y
69CONFIG_EVENTFD=y
58CONFIG_SHMEM=y 70CONFIG_SHMEM=y
59CONFIG_SLAB=y
60CONFIG_VM_EVENT_COUNTERS=y 71CONFIG_VM_EVENT_COUNTERS=y
72CONFIG_SLAB=y
73# CONFIG_SLUB is not set
74# CONFIG_SLOB is not set
75# CONFIG_PROFILING is not set
76# CONFIG_MARKERS is not set
77CONFIG_HAVE_OPROFILE=y
78# CONFIG_HAVE_KPROBES is not set
79CONFIG_PROC_PAGE_MONITOR=y
80CONFIG_SLABINFO=y
61CONFIG_RT_MUTEXES=y 81CONFIG_RT_MUTEXES=y
62# CONFIG_TINY_SHMEM is not set 82# CONFIG_TINY_SHMEM is not set
63CONFIG_BASE_SMALL=0 83CONFIG_BASE_SMALL=0
64# CONFIG_SLOB is not set
65
66#
67# Loadable module support
68#
69CONFIG_MODULES=y 84CONFIG_MODULES=y
70CONFIG_MODULE_UNLOAD=y 85CONFIG_MODULE_UNLOAD=y
71# CONFIG_MODVERSIONS is not set 86# CONFIG_MODVERSIONS is not set
72# CONFIG_MODULE_SRCVERSION_ALL is not set 87# CONFIG_MODULE_SRCVERSION_ALL is not set
73CONFIG_KMOD=y 88CONFIG_KMOD=y
74
75#
76# Block layer
77#
78CONFIG_BLOCK=y 89CONFIG_BLOCK=y
79# CONFIG_LBD is not set 90# CONFIG_LBD is not set
91# CONFIG_BLK_DEV_IO_TRACE is not set
80# CONFIG_LSF is not set 92# CONFIG_LSF is not set
81 93
82# 94#
@@ -91,68 +103,27 @@ CONFIG_DEFAULT_DEADLINE=y
91# CONFIG_DEFAULT_CFQ is not set 103# CONFIG_DEFAULT_CFQ is not set
92# CONFIG_DEFAULT_NOOP is not set 104# CONFIG_DEFAULT_NOOP is not set
93CONFIG_DEFAULT_IOSCHED="deadline" 105CONFIG_DEFAULT_IOSCHED="deadline"
106CONFIG_CLASSIC_RCU=y
107# CONFIG_PREEMPT_RCU is not set
94 108
95# 109#
96# System type 110# System type
97# 111#
98CONFIG_SOLUTION_ENGINE=y
99# CONFIG_SH_SOLUTION_ENGINE is not set
100# CONFIG_SH_7751_SOLUTION_ENGINE is not set
101CONFIG_SH_7780_SOLUTION_ENGINE=y
102# CONFIG_SH_7300_SOLUTION_ENGINE is not set
103# CONFIG_SH_7343_SOLUTION_ENGINE is not set
104# CONFIG_SH_73180_SOLUTION_ENGINE is not set
105# CONFIG_SH_7751_SYSTEMH is not set
106# CONFIG_SH_HP6XX is not set
107# CONFIG_SH_SATURN is not set
108# CONFIG_SH_DREAMCAST is not set
109# CONFIG_SH_MPC1211 is not set
110# CONFIG_SH_SH03 is not set
111# CONFIG_SH_SECUREEDGE5410 is not set
112# CONFIG_SH_HS7751RVOIP is not set
113# CONFIG_SH_7710VOIPGW is not set
114# CONFIG_SH_RTS7751R2D is not set
115# CONFIG_SH_HIGHLANDER is not set
116# CONFIG_SH_EDOSK7705 is not set
117# CONFIG_SH_SH4202_MICRODEV is not set
118# CONFIG_SH_LANDISK is not set
119# CONFIG_SH_TITAN is not set
120# CONFIG_SH_SHMIN is not set
121# CONFIG_SH_7206_SOLUTION_ENGINE is not set
122# CONFIG_SH_7619_SOLUTION_ENGINE is not set
123# CONFIG_SH_UNKNOWN is not set
124
125#
126# Processor selection
127#
128CONFIG_CPU_SH4=y 112CONFIG_CPU_SH4=y
129CONFIG_CPU_SH4A=y 113CONFIG_CPU_SH4A=y
130
131#
132# SH-2 Processor Support
133#
134# CONFIG_CPU_SUBTYPE_SH7604 is not set
135# CONFIG_CPU_SUBTYPE_SH7619 is not set 114# CONFIG_CPU_SUBTYPE_SH7619 is not set
136 115# CONFIG_CPU_SUBTYPE_SH7203 is not set
137#
138# SH-2A Processor Support
139#
140# CONFIG_CPU_SUBTYPE_SH7206 is not set 116# CONFIG_CPU_SUBTYPE_SH7206 is not set
141 117# CONFIG_CPU_SUBTYPE_SH7263 is not set
142#
143# SH-3 Processor Support
144#
145# CONFIG_CPU_SUBTYPE_SH7300 is not set
146# CONFIG_CPU_SUBTYPE_SH7705 is not set 118# CONFIG_CPU_SUBTYPE_SH7705 is not set
147# CONFIG_CPU_SUBTYPE_SH7706 is not set 119# CONFIG_CPU_SUBTYPE_SH7706 is not set
148# CONFIG_CPU_SUBTYPE_SH7707 is not set 120# CONFIG_CPU_SUBTYPE_SH7707 is not set
149# CONFIG_CPU_SUBTYPE_SH7708 is not set 121# CONFIG_CPU_SUBTYPE_SH7708 is not set
150# CONFIG_CPU_SUBTYPE_SH7709 is not set 122# CONFIG_CPU_SUBTYPE_SH7709 is not set
151# CONFIG_CPU_SUBTYPE_SH7710 is not set 123# CONFIG_CPU_SUBTYPE_SH7710 is not set
152 124# CONFIG_CPU_SUBTYPE_SH7712 is not set
153# 125# CONFIG_CPU_SUBTYPE_SH7720 is not set
154# SH-4 Processor Support 126# CONFIG_CPU_SUBTYPE_SH7721 is not set
155#
156# CONFIG_CPU_SUBTYPE_SH7750 is not set 127# CONFIG_CPU_SUBTYPE_SH7750 is not set
157# CONFIG_CPU_SUBTYPE_SH7091 is not set 128# CONFIG_CPU_SUBTYPE_SH7091 is not set
158# CONFIG_CPU_SUBTYPE_SH7750R is not set 129# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -161,52 +132,58 @@ CONFIG_CPU_SH4A=y
161# CONFIG_CPU_SUBTYPE_SH7751R is not set 132# CONFIG_CPU_SUBTYPE_SH7751R is not set
162# CONFIG_CPU_SUBTYPE_SH7760 is not set 133# CONFIG_CPU_SUBTYPE_SH7760 is not set
163# CONFIG_CPU_SUBTYPE_SH4_202 is not set 134# CONFIG_CPU_SUBTYPE_SH4_202 is not set
164 135# CONFIG_CPU_SUBTYPE_SH7763 is not set
165#
166# ST40 Processor Support
167#
168# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
169# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
170
171#
172# SH-4A Processor Support
173#
174# CONFIG_CPU_SUBTYPE_SH7770 is not set 136# CONFIG_CPU_SUBTYPE_SH7770 is not set
175CONFIG_CPU_SUBTYPE_SH7780=y 137CONFIG_CPU_SUBTYPE_SH7780=y
176# CONFIG_CPU_SUBTYPE_SH7785 is not set 138# CONFIG_CPU_SUBTYPE_SH7785 is not set
177 139# CONFIG_CPU_SUBTYPE_SHX3 is not set
178#
179# SH4AL-DSP Processor Support
180#
181# CONFIG_CPU_SUBTYPE_SH73180 is not set
182# CONFIG_CPU_SUBTYPE_SH7343 is not set 140# CONFIG_CPU_SUBTYPE_SH7343 is not set
183# CONFIG_CPU_SUBTYPE_SH7722 is not set 141# CONFIG_CPU_SUBTYPE_SH7722 is not set
142# CONFIG_CPU_SUBTYPE_SH7366 is not set
143# CONFIG_CPU_SUBTYPE_SH5_101 is not set
144# CONFIG_CPU_SUBTYPE_SH5_103 is not set
184 145
185# 146#
186# Memory management options 147# Memory management options
187# 148#
149CONFIG_QUICKLIST=y
188CONFIG_MMU=y 150CONFIG_MMU=y
189CONFIG_PAGE_OFFSET=0x80000000 151CONFIG_PAGE_OFFSET=0x80000000
190CONFIG_MEMORY_START=0x08000000 152CONFIG_MEMORY_START=0x08000000
191CONFIG_MEMORY_SIZE=0x08000000 153CONFIG_MEMORY_SIZE=0x08000000
192CONFIG_32BIT=y 154CONFIG_29BIT=y
155# CONFIG_PMB is not set
193CONFIG_VSYSCALL=y 156CONFIG_VSYSCALL=y
157CONFIG_ARCH_FLATMEM_ENABLE=y
158CONFIG_ARCH_SPARSEMEM_ENABLE=y
159CONFIG_ARCH_SPARSEMEM_DEFAULT=y
160CONFIG_MAX_ACTIVE_REGIONS=1
161CONFIG_ARCH_POPULATES_NODE_MAP=y
162CONFIG_ARCH_SELECT_MEMORY_MODEL=y
163CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
194CONFIG_PAGE_SIZE_4KB=y 164CONFIG_PAGE_SIZE_4KB=y
195# CONFIG_PAGE_SIZE_8KB is not set 165# CONFIG_PAGE_SIZE_8KB is not set
196# CONFIG_PAGE_SIZE_64KB is not set 166# CONFIG_PAGE_SIZE_64KB is not set
197CONFIG_FLATMEM=y 167CONFIG_SELECT_MEMORY_MODEL=y
198CONFIG_FLAT_NODE_MEM_MAP=y 168# CONFIG_FLATMEM_MANUAL is not set
199# CONFIG_SPARSEMEM_STATIC is not set 169# CONFIG_DISCONTIGMEM_MANUAL is not set
170CONFIG_SPARSEMEM_MANUAL=y
171CONFIG_SPARSEMEM=y
172CONFIG_HAVE_MEMORY_PRESENT=y
173CONFIG_SPARSEMEM_STATIC=y
174# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
200CONFIG_SPLIT_PTLOCK_CPUS=4 175CONFIG_SPLIT_PTLOCK_CPUS=4
201# CONFIG_RESOURCES_64BIT is not set 176# CONFIG_RESOURCES_64BIT is not set
202CONFIG_ZONE_DMA_FLAG=0 177CONFIG_ZONE_DMA_FLAG=0
178CONFIG_NR_QUICK=2
203 179
204# 180#
205# Cache configuration 181# Cache configuration
206# 182#
207# CONFIG_SH_DIRECT_MAPPED is not set 183# CONFIG_SH_DIRECT_MAPPED is not set
208# CONFIG_SH_WRITETHROUGH is not set 184CONFIG_CACHE_WRITEBACK=y
209# CONFIG_SH_OCRAM is not set 185# CONFIG_CACHE_WRITETHROUGH is not set
186# CONFIG_CACHE_OFF is not set
210 187
211# 188#
212# Processor features 189# Processor features
@@ -214,20 +191,29 @@ CONFIG_ZONE_DMA_FLAG=0
214CONFIG_CPU_LITTLE_ENDIAN=y 191CONFIG_CPU_LITTLE_ENDIAN=y
215# CONFIG_CPU_BIG_ENDIAN is not set 192# CONFIG_CPU_BIG_ENDIAN is not set
216CONFIG_SH_FPU=y 193CONFIG_SH_FPU=y
217# CONFIG_SH_DSP is not set
218# CONFIG_SH_STORE_QUEUES is not set 194# CONFIG_SH_STORE_QUEUES is not set
219CONFIG_CPU_HAS_INTEVT=y 195CONFIG_CPU_HAS_INTEVT=y
220CONFIG_CPU_HAS_INTC2_IRQ=y
221CONFIG_CPU_HAS_INTC_IRQ=y
222CONFIG_CPU_HAS_SR_RB=y 196CONFIG_CPU_HAS_SR_RB=y
197CONFIG_CPU_HAS_FPU=y
198
199#
200# Board support
201#
202CONFIG_SOLUTION_ENGINE=y
203CONFIG_SH_7780_SOLUTION_ENGINE=y
204# CONFIG_SH_SDK7780 is not set
205# CONFIG_SH_HIGHLANDER is not set
223 206
224# 207#
225# Timer and clock configuration 208# Timer and clock configuration
226# 209#
227CONFIG_SH_TMU=y 210CONFIG_SH_TMU=y
228CONFIG_SH_TIMER_IRQ=28 211CONFIG_SH_TIMER_IRQ=28
229# CONFIG_NO_IDLE_HZ is not set
230CONFIG_SH_PCLK_FREQ=33333333 212CONFIG_SH_PCLK_FREQ=33333333
213# CONFIG_TICK_ONESHOT is not set
214# CONFIG_NO_HZ is not set
215# CONFIG_HIGH_RES_TIMERS is not set
216CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
231 217
232# 218#
233# CPU Frequency scaling 219# CPU Frequency scaling
@@ -242,7 +228,6 @@ CONFIG_SH_PCLK_FREQ=33333333
242# 228#
243# Companion Chips 229# Companion Chips
244# 230#
245# CONFIG_HD6446X_SERIES is not set
246 231
247# 232#
248# Additional SuperH Device Drivers 233# Additional SuperH Device Drivers
@@ -258,40 +243,36 @@ CONFIG_HZ_250=y
258# CONFIG_HZ_300 is not set 243# CONFIG_HZ_300 is not set
259# CONFIG_HZ_1000 is not set 244# CONFIG_HZ_1000 is not set
260CONFIG_HZ=250 245CONFIG_HZ=250
261# CONFIG_SMP is not set 246# CONFIG_SCHED_HRTICK is not set
262CONFIG_PREEMPT_NONE=y 247CONFIG_PREEMPT_NONE=y
263# CONFIG_PREEMPT_VOLUNTARY is not set 248# CONFIG_PREEMPT_VOLUNTARY is not set
264# CONFIG_PREEMPT is not set 249# CONFIG_PREEMPT is not set
250CONFIG_RCU_TRACE=y
251CONFIG_GUSA=y
265 252
266# 253#
267# Boot options 254# Boot options
268# 255#
269CONFIG_ZERO_PAGE_OFFSET=0x00001000 256CONFIG_ZERO_PAGE_OFFSET=0x00001000
270CONFIG_BOOT_LINK_OFFSET=0x00810000 257CONFIG_BOOT_LINK_OFFSET=0x00810000
271# CONFIG_UBC_WAKEUP is not set 258CONFIG_CMDLINE_BOOL=y
272# CONFIG_CMDLINE_BOOL is not set 259CONFIG_CMDLINE="console=ttySC0.115200 root=/dev/sda1"
273 260
274# 261#
275# Bus options 262# Bus options
276# 263#
264# CONFIG_CF_ENABLER is not set
277CONFIG_PCI=y 265CONFIG_PCI=y
278CONFIG_SH_PCIDMA_NONCOHERENT=y 266CONFIG_SH_PCIDMA_NONCOHERENT=y
279CONFIG_PCI_AUTO=y 267CONFIG_PCI_AUTO=y
280CONFIG_PCI_AUTO_UPDATE_RESOURCES=y 268CONFIG_PCI_AUTO_UPDATE_RESOURCES=y
281 269# CONFIG_ARCH_SUPPORTS_MSI is not set
282# 270CONFIG_PCI_LEGACY=y
283# PCCARD (PCMCIA/CardBus) support
284#
285
286#
287# PCI Hotplug Support
288#
289 271
290# 272#
291# Executable file formats 273# Executable file formats
292# 274#
293CONFIG_BINFMT_ELF=y 275CONFIG_BINFMT_ELF=y
294# CONFIG_BINFMT_FLAT is not set
295# CONFIG_BINFMT_MISC is not set 276# CONFIG_BINFMT_MISC is not set
296 277
297# 278#
@@ -302,7 +283,6 @@ CONFIG_NET=y
302# 283#
303# Networking options 284# Networking options
304# 285#
305# CONFIG_NETDEBUG is not set
306CONFIG_PACKET=y 286CONFIG_PACKET=y
307# CONFIG_PACKET_MMAP is not set 287# CONFIG_PACKET_MMAP is not set
308CONFIG_UNIX=y 288CONFIG_UNIX=y
@@ -329,6 +309,7 @@ CONFIG_IP_PNP=y
329CONFIG_INET_XFRM_MODE_TRANSPORT=y 309CONFIG_INET_XFRM_MODE_TRANSPORT=y
330CONFIG_INET_XFRM_MODE_TUNNEL=y 310CONFIG_INET_XFRM_MODE_TUNNEL=y
331CONFIG_INET_XFRM_MODE_BEET=y 311CONFIG_INET_XFRM_MODE_BEET=y
312# CONFIG_INET_LRO is not set
332CONFIG_INET_DIAG=y 313CONFIG_INET_DIAG=y
333CONFIG_INET_TCP_DIAG=y 314CONFIG_INET_TCP_DIAG=y
334# CONFIG_TCP_CONG_ADVANCED is not set 315# CONFIG_TCP_CONG_ADVANCED is not set
@@ -349,16 +330,13 @@ CONFIG_IPV6=y
349# CONFIG_IPV6_TUNNEL is not set 330# CONFIG_IPV6_TUNNEL is not set
350# CONFIG_NETWORK_SECMARK is not set 331# CONFIG_NETWORK_SECMARK is not set
351# CONFIG_NETFILTER is not set 332# CONFIG_NETFILTER is not set
333# CONFIG_ATM is not set
352# CONFIG_BRIDGE is not set 334# CONFIG_BRIDGE is not set
353# CONFIG_VLAN_8021Q is not set 335# CONFIG_VLAN_8021Q is not set
354# CONFIG_DECNET is not set 336# CONFIG_DECNET is not set
355# CONFIG_LLC2 is not set 337# CONFIG_LLC2 is not set
356# CONFIG_IPX is not set 338# CONFIG_IPX is not set
357# CONFIG_ATALK is not set 339# CONFIG_ATALK is not set
358
359#
360# QoS and/or fair queueing
361#
362# CONFIG_NET_SCHED is not set 340# CONFIG_NET_SCHED is not set
363 341
364# 342#
@@ -366,9 +344,18 @@ CONFIG_IPV6=y
366# 344#
367# CONFIG_NET_PKTGEN is not set 345# CONFIG_NET_PKTGEN is not set
368# CONFIG_HAMRADIO is not set 346# CONFIG_HAMRADIO is not set
347# CONFIG_CAN is not set
369# CONFIG_IRDA is not set 348# CONFIG_IRDA is not set
370# CONFIG_BT is not set 349# CONFIG_BT is not set
350
351#
352# Wireless
353#
354# CONFIG_CFG80211 is not set
355# CONFIG_WIRELESS_EXT is not set
356# CONFIG_MAC80211 is not set
371# CONFIG_IEEE80211 is not set 357# CONFIG_IEEE80211 is not set
358# CONFIG_RFKILL is not set
372 359
373# 360#
374# Device Drivers 361# Device Drivers
@@ -380,15 +367,7 @@ CONFIG_IPV6=y
380CONFIG_STANDALONE=y 367CONFIG_STANDALONE=y
381# CONFIG_PREVENT_FIRMWARE_BUILD is not set 368# CONFIG_PREVENT_FIRMWARE_BUILD is not set
382# CONFIG_SYS_HYPERVISOR is not set 369# CONFIG_SYS_HYPERVISOR is not set
383
384#
385# Connector - unified userspace <-> kernelspace linker
386#
387# CONFIG_CONNECTOR is not set 370# CONFIG_CONNECTOR is not set
388
389#
390# Memory Technology Devices (MTD)
391#
392CONFIG_MTD=y 371CONFIG_MTD=y
393# CONFIG_MTD_DEBUG is not set 372# CONFIG_MTD_DEBUG is not set
394# CONFIG_MTD_CONCAT is not set 373# CONFIG_MTD_CONCAT is not set
@@ -407,6 +386,7 @@ CONFIG_MTD_BLOCK=y
407# CONFIG_INFTL is not set 386# CONFIG_INFTL is not set
408# CONFIG_RFD_FTL is not set 387# CONFIG_RFD_FTL is not set
409# CONFIG_SSFDC is not set 388# CONFIG_SSFDC is not set
389# CONFIG_MTD_OOPS is not set
410 390
411# 391#
412# RAM/ROM/Flash chip drivers 392# RAM/ROM/Flash chip drivers
@@ -437,13 +417,13 @@ CONFIG_MTD_CFI_UTIL=y
437# CONFIG_MTD_RAM is not set 417# CONFIG_MTD_RAM is not set
438CONFIG_MTD_ROM=y 418CONFIG_MTD_ROM=y
439# CONFIG_MTD_ABSENT is not set 419# CONFIG_MTD_ABSENT is not set
440# CONFIG_MTD_OBSOLETE_CHIPS is not set
441 420
442# 421#
443# Mapping drivers for chip access 422# Mapping drivers for chip access
444# 423#
445# CONFIG_MTD_COMPLEX_MAPPINGS is not set 424# CONFIG_MTD_COMPLEX_MAPPINGS is not set
446# CONFIG_MTD_PHYSMAP is not set 425# CONFIG_MTD_PHYSMAP is not set
426# CONFIG_MTD_INTEL_VR_NOR is not set
447# CONFIG_MTD_PLATRAM is not set 427# CONFIG_MTD_PLATRAM is not set
448 428
449# 429#
@@ -461,31 +441,15 @@ CONFIG_MTD_ROM=y
461# CONFIG_MTD_DOC2000 is not set 441# CONFIG_MTD_DOC2000 is not set
462# CONFIG_MTD_DOC2001 is not set 442# CONFIG_MTD_DOC2001 is not set
463# CONFIG_MTD_DOC2001PLUS is not set 443# CONFIG_MTD_DOC2001PLUS is not set
464
465#
466# NAND Flash Device Drivers
467#
468# CONFIG_MTD_NAND is not set 444# CONFIG_MTD_NAND is not set
469
470#
471# OneNAND Flash Device Drivers
472#
473# CONFIG_MTD_ONENAND is not set 445# CONFIG_MTD_ONENAND is not set
474 446
475# 447#
476# Parallel port support 448# UBI - Unsorted block images
477# 449#
450# CONFIG_MTD_UBI is not set
478# CONFIG_PARPORT is not set 451# CONFIG_PARPORT is not set
479 452CONFIG_BLK_DEV=y
480#
481# Plug and Play support
482#
483# CONFIG_PNPACPI is not set
484
485#
486# Block devices
487#
488# CONFIG_BLK_CPQ_DA is not set
489# CONFIG_BLK_CPQ_CISS_DA is not set 453# CONFIG_BLK_CPQ_CISS_DA is not set
490# CONFIG_BLK_DEV_DAC960 is not set 454# CONFIG_BLK_DEV_DAC960 is not set
491# CONFIG_BLK_DEV_COW_COMMON is not set 455# CONFIG_BLK_DEV_COW_COMMON is not set
@@ -497,15 +461,12 @@ CONFIG_BLK_DEV_LOOP=y
497# CONFIG_BLK_DEV_RAM is not set 461# CONFIG_BLK_DEV_RAM is not set
498# CONFIG_CDROM_PKTCDVD is not set 462# CONFIG_CDROM_PKTCDVD is not set
499# CONFIG_ATA_OVER_ETH is not set 463# CONFIG_ATA_OVER_ETH is not set
500 464CONFIG_MISC_DEVICES=y
501# 465# CONFIG_PHANTOM is not set
502# Misc devices 466# CONFIG_EEPROM_93CX6 is not set
503#
504# CONFIG_SGI_IOC4 is not set 467# CONFIG_SGI_IOC4 is not set
505 468# CONFIG_ENCLOSURE_SERVICES is not set
506# 469CONFIG_HAVE_IDE=y
507# ATA/ATAPI/MFM/RLL support
508#
509# CONFIG_IDE is not set 470# CONFIG_IDE is not set
510 471
511# 472#
@@ -513,6 +474,7 @@ CONFIG_BLK_DEV_LOOP=y
513# 474#
514# CONFIG_RAID_ATTRS is not set 475# CONFIG_RAID_ATTRS is not set
515CONFIG_SCSI=y 476CONFIG_SCSI=y
477CONFIG_SCSI_DMA=y
516# CONFIG_SCSI_NETLINK is not set 478# CONFIG_SCSI_NETLINK is not set
517CONFIG_SCSI_PROC_FS=y 479CONFIG_SCSI_PROC_FS=y
518 480
@@ -533,6 +495,7 @@ CONFIG_CHR_DEV_SG=y
533# CONFIG_SCSI_CONSTANTS is not set 495# CONFIG_SCSI_CONSTANTS is not set
534# CONFIG_SCSI_LOGGING is not set 496# CONFIG_SCSI_LOGGING is not set
535# CONFIG_SCSI_SCAN_ASYNC is not set 497# CONFIG_SCSI_SCAN_ASYNC is not set
498CONFIG_SCSI_WAIT_SCAN=m
536 499
537# 500#
538# SCSI Transports 501# SCSI Transports
@@ -540,12 +503,9 @@ CONFIG_CHR_DEV_SG=y
540# CONFIG_SCSI_SPI_ATTRS is not set 503# CONFIG_SCSI_SPI_ATTRS is not set
541# CONFIG_SCSI_FC_ATTRS is not set 504# CONFIG_SCSI_FC_ATTRS is not set
542# CONFIG_SCSI_ISCSI_ATTRS is not set 505# CONFIG_SCSI_ISCSI_ATTRS is not set
543# CONFIG_SCSI_SAS_ATTRS is not set
544# CONFIG_SCSI_SAS_LIBSAS is not set 506# CONFIG_SCSI_SAS_LIBSAS is not set
545 507# CONFIG_SCSI_SRP_ATTRS is not set
546# 508CONFIG_SCSI_LOWLEVEL=y
547# SCSI low-level drivers
548#
549# CONFIG_ISCSI_TCP is not set 509# CONFIG_ISCSI_TCP is not set
550# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 510# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
551# CONFIG_SCSI_3W_9XXX is not set 511# CONFIG_SCSI_3W_9XXX is not set
@@ -555,7 +515,6 @@ CONFIG_CHR_DEV_SG=y
555# CONFIG_SCSI_AIC7XXX_OLD is not set 515# CONFIG_SCSI_AIC7XXX_OLD is not set
556# CONFIG_SCSI_AIC79XX is not set 516# CONFIG_SCSI_AIC79XX is not set
557# CONFIG_SCSI_AIC94XX is not set 517# CONFIG_SCSI_AIC94XX is not set
558# CONFIG_SCSI_DPT_I2O is not set
559# CONFIG_SCSI_ARCMSR is not set 518# CONFIG_SCSI_ARCMSR is not set
560# CONFIG_MEGARAID_NEWGEN is not set 519# CONFIG_MEGARAID_NEWGEN is not set
561# CONFIG_MEGARAID_LEGACY is not set 520# CONFIG_MEGARAID_LEGACY is not set
@@ -566,6 +525,7 @@ CONFIG_CHR_DEV_SG=y
566# CONFIG_SCSI_IPS is not set 525# CONFIG_SCSI_IPS is not set
567# CONFIG_SCSI_INITIO is not set 526# CONFIG_SCSI_INITIO is not set
568# CONFIG_SCSI_INIA100 is not set 527# CONFIG_SCSI_INIA100 is not set
528# CONFIG_SCSI_MVSAS is not set
569# CONFIG_SCSI_STEX is not set 529# CONFIG_SCSI_STEX is not set
570# CONFIG_SCSI_SYM53C8XX_2 is not set 530# CONFIG_SCSI_SYM53C8XX_2 is not set
571# CONFIG_SCSI_IPR is not set 531# CONFIG_SCSI_IPR is not set
@@ -577,10 +537,6 @@ CONFIG_CHR_DEV_SG=y
577# CONFIG_SCSI_NSP32 is not set 537# CONFIG_SCSI_NSP32 is not set
578# CONFIG_SCSI_DEBUG is not set 538# CONFIG_SCSI_DEBUG is not set
579# CONFIG_SCSI_SRP is not set 539# CONFIG_SCSI_SRP is not set
580
581#
582# Serial ATA (prod) and Parallel ATA (experimental) drivers
583#
584CONFIG_ATA=y 540CONFIG_ATA=y
585# CONFIG_ATA_NONSTANDARD is not set 541# CONFIG_ATA_NONSTANDARD is not set
586# CONFIG_SATA_AHCI is not set 542# CONFIG_SATA_AHCI is not set
@@ -597,62 +553,48 @@ CONFIG_SATA_SIL=y
597# CONFIG_SATA_VIA is not set 553# CONFIG_SATA_VIA is not set
598# CONFIG_SATA_VITESSE is not set 554# CONFIG_SATA_VITESSE is not set
599# CONFIG_PATA_AMD is not set 555# CONFIG_PATA_AMD is not set
556# CONFIG_PATA_ARTOP is not set
557# CONFIG_PATA_ATIIXP is not set
558# CONFIG_PATA_CMD64X is not set
600# CONFIG_PATA_CS5520 is not set 559# CONFIG_PATA_CS5520 is not set
601# CONFIG_PATA_EFAR is not set 560# CONFIG_PATA_EFAR is not set
602# CONFIG_ATA_GENERIC is not set 561# CONFIG_ATA_GENERIC is not set
562# CONFIG_PATA_HPT366 is not set
603# CONFIG_PATA_HPT3X3 is not set 563# CONFIG_PATA_HPT3X3 is not set
564# CONFIG_PATA_IT821X is not set
604# CONFIG_PATA_JMICRON is not set 565# CONFIG_PATA_JMICRON is not set
605# CONFIG_PATA_TRIFLEX is not set 566# CONFIG_PATA_TRIFLEX is not set
606# CONFIG_PATA_MARVELL is not set 567# CONFIG_PATA_MARVELL is not set
607# CONFIG_PATA_MPIIX is not set 568# CONFIG_PATA_MPIIX is not set
569# CONFIG_PATA_OLDPIIX is not set
608# CONFIG_PATA_NETCELL is not set 570# CONFIG_PATA_NETCELL is not set
609# CONFIG_PATA_RZ1000 is not set 571# CONFIG_PATA_RZ1000 is not set
572# CONFIG_PATA_SERVERWORKS is not set
610# CONFIG_PATA_PDC2027X is not set 573# CONFIG_PATA_PDC2027X is not set
611# CONFIG_PATA_SIL680 is not set 574# CONFIG_PATA_SIL680 is not set
612# CONFIG_PATA_VIA is not set 575# CONFIG_PATA_VIA is not set
613# CONFIG_PATA_WINBOND is not set 576# CONFIG_PATA_WINBOND is not set
614# CONFIG_PATA_PLATFORM is not set 577# CONFIG_PATA_PLATFORM is not set
615
616#
617# Multi-device support (RAID and LVM)
618#
619# CONFIG_MD is not set 578# CONFIG_MD is not set
620
621#
622# Fusion MPT device support
623#
624# CONFIG_FUSION is not set 579# CONFIG_FUSION is not set
625# CONFIG_FUSION_SPI is not set
626# CONFIG_FUSION_FC is not set
627# CONFIG_FUSION_SAS is not set
628 580
629# 581#
630# IEEE 1394 (FireWire) support 582# IEEE 1394 (FireWire) support
631# 583#
632# CONFIG_IEEE1394 is not set
633 584
634# 585#
635# I2O device support 586# An alternative FireWire stack is available with EXPERIMENTAL=y
636# 587#
588# CONFIG_IEEE1394 is not set
637# CONFIG_I2O is not set 589# CONFIG_I2O is not set
638
639#
640# Network device support
641#
642CONFIG_NETDEVICES=y 590CONFIG_NETDEVICES=y
591# CONFIG_NETDEVICES_MULTIQUEUE is not set
643# CONFIG_DUMMY is not set 592# CONFIG_DUMMY is not set
644# CONFIG_BONDING is not set 593# CONFIG_BONDING is not set
645# CONFIG_EQUALIZER is not set 594# CONFIG_EQUALIZER is not set
646# CONFIG_TUN is not set 595# CONFIG_TUN is not set
647 596# CONFIG_VETH is not set
648#
649# ARCnet devices
650#
651# CONFIG_ARCNET is not set 597# CONFIG_ARCNET is not set
652
653#
654# PHY device support
655#
656CONFIG_PHYLIB=y 598CONFIG_PHYLIB=y
657 599
658# 600#
@@ -666,85 +608,59 @@ CONFIG_PHYLIB=y
666# CONFIG_VITESSE_PHY is not set 608# CONFIG_VITESSE_PHY is not set
667CONFIG_SMSC_PHY=y 609CONFIG_SMSC_PHY=y
668# CONFIG_BROADCOM_PHY is not set 610# CONFIG_BROADCOM_PHY is not set
611# CONFIG_ICPLUS_PHY is not set
612# CONFIG_REALTEK_PHY is not set
669# CONFIG_FIXED_PHY is not set 613# CONFIG_FIXED_PHY is not set
670 614# CONFIG_MDIO_BITBANG is not set
671#
672# Ethernet (10 or 100Mbit)
673#
674CONFIG_NET_ETHERNET=y 615CONFIG_NET_ETHERNET=y
675CONFIG_MII=y 616CONFIG_MII=y
617# CONFIG_AX88796 is not set
676# CONFIG_STNIC is not set 618# CONFIG_STNIC is not set
677# CONFIG_HAPPYMEAL is not set 619# CONFIG_HAPPYMEAL is not set
678# CONFIG_SUNGEM is not set 620# CONFIG_SUNGEM is not set
679# CONFIG_CASSINI is not set 621# CONFIG_CASSINI is not set
680# CONFIG_NET_VENDOR_3COM is not set 622# CONFIG_NET_VENDOR_3COM is not set
681CONFIG_SMC91X=y 623CONFIG_SMC91X=y
682
683#
684# Tulip family network device support
685#
686# CONFIG_NET_TULIP is not set 624# CONFIG_NET_TULIP is not set
687# CONFIG_HP100 is not set 625# CONFIG_HP100 is not set
626# CONFIG_IBM_NEW_EMAC_ZMII is not set
627# CONFIG_IBM_NEW_EMAC_RGMII is not set
628# CONFIG_IBM_NEW_EMAC_TAH is not set
629# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
688CONFIG_NET_PCI=y 630CONFIG_NET_PCI=y
689# CONFIG_PCNET32 is not set 631# CONFIG_PCNET32 is not set
690# CONFIG_AMD8111_ETH is not set 632# CONFIG_AMD8111_ETH is not set
691# CONFIG_ADAPTEC_STARFIRE is not set 633# CONFIG_ADAPTEC_STARFIRE is not set
692# CONFIG_B44 is not set 634# CONFIG_B44 is not set
693# CONFIG_FORCEDETH is not set 635# CONFIG_FORCEDETH is not set
694# CONFIG_DGRS is not set
695# CONFIG_EEPRO100 is not set 636# CONFIG_EEPRO100 is not set
696# CONFIG_E100 is not set 637# CONFIG_E100 is not set
697# CONFIG_FEALNX is not set 638# CONFIG_FEALNX is not set
698# CONFIG_NATSEMI is not set 639# CONFIG_NATSEMI is not set
699# CONFIG_NE2K_PCI is not set 640# CONFIG_NE2K_PCI is not set
700# CONFIG_8139TOO is not set 641# CONFIG_8139TOO is not set
642# CONFIG_R6040 is not set
701# CONFIG_SIS900 is not set 643# CONFIG_SIS900 is not set
702# CONFIG_EPIC100 is not set 644# CONFIG_EPIC100 is not set
703# CONFIG_SUNDANCE is not set 645# CONFIG_SUNDANCE is not set
704# CONFIG_TLAN is not set 646# CONFIG_TLAN is not set
705# CONFIG_VIA_RHINE is not set 647# CONFIG_VIA_RHINE is not set
706 648# CONFIG_NETDEV_1000 is not set
707# 649# CONFIG_NETDEV_10000 is not set
708# Ethernet (1000 Mbit)
709#
710# CONFIG_ACENIC is not set
711# CONFIG_DL2K is not set
712# CONFIG_E1000 is not set
713# CONFIG_NS83820 is not set
714# CONFIG_HAMACHI is not set
715# CONFIG_R8169 is not set
716# CONFIG_SIS190 is not set
717# CONFIG_SKGE is not set
718# CONFIG_SKY2 is not set
719# CONFIG_SK98LIN is not set
720# CONFIG_VIA_VELOCITY is not set
721# CONFIG_TIGON3 is not set
722# CONFIG_BNX2 is not set
723# CONFIG_QLA3XXX is not set
724
725#
726# Ethernet (10000 Mbit)
727#
728# CONFIG_CHELSIO_T1 is not set
729# CONFIG_CHELSIO_T3 is not set
730# CONFIG_IXGB is not set
731# CONFIG_S2IO is not set
732# CONFIG_MYRI10GE is not set
733# CONFIG_NETXEN_NIC is not set
734
735#
736# Token Ring devices
737#
738# CONFIG_TR is not set 650# CONFIG_TR is not set
739 651
740# 652#
741# Wireless LAN (non-hamradio) 653# Wireless LAN
742# 654#
743# CONFIG_NET_RADIO is not set 655# CONFIG_WLAN_PRE80211 is not set
656# CONFIG_WLAN_80211 is not set
744 657
745# 658#
746# Wan interfaces 659# USB Network Adapters
747# 660#
661# CONFIG_USB_KAWETH is not set
662# CONFIG_USB_PEGASUS is not set
663# CONFIG_USB_USBNET is not set
748# CONFIG_WAN is not set 664# CONFIG_WAN is not set
749# CONFIG_FDDI is not set 665# CONFIG_FDDI is not set
750# CONFIG_PPP is not set 666# CONFIG_PPP is not set
@@ -752,15 +668,7 @@ CONFIG_NET_PCI=y
752# CONFIG_NET_FC is not set 668# CONFIG_NET_FC is not set
753# CONFIG_NETPOLL is not set 669# CONFIG_NETPOLL is not set
754# CONFIG_NET_POLL_CONTROLLER is not set 670# CONFIG_NET_POLL_CONTROLLER is not set
755
756#
757# ISDN subsystem
758#
759# CONFIG_ISDN is not set 671# CONFIG_ISDN is not set
760
761#
762# Telephony Support
763#
764# CONFIG_PHONE is not set 672# CONFIG_PHONE is not set
765 673
766# 674#
@@ -768,6 +676,7 @@ CONFIG_NET_PCI=y
768# 676#
769CONFIG_INPUT=y 677CONFIG_INPUT=y
770# CONFIG_INPUT_FF_MEMLESS is not set 678# CONFIG_INPUT_FF_MEMLESS is not set
679# CONFIG_INPUT_POLLDEV is not set
771 680
772# 681#
773# Userland interfaces 682# Userland interfaces
@@ -777,7 +686,6 @@ CONFIG_INPUT_MOUSEDEV=y
777CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 686CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
778CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 687CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
779# CONFIG_INPUT_JOYDEV is not set 688# CONFIG_INPUT_JOYDEV is not set
780# CONFIG_INPUT_TSDEV is not set
781# CONFIG_INPUT_EVDEV is not set 689# CONFIG_INPUT_EVDEV is not set
782# CONFIG_INPUT_EVBUG is not set 690# CONFIG_INPUT_EVBUG is not set
783 691
@@ -787,6 +695,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
787# CONFIG_INPUT_KEYBOARD is not set 695# CONFIG_INPUT_KEYBOARD is not set
788# CONFIG_INPUT_MOUSE is not set 696# CONFIG_INPUT_MOUSE is not set
789# CONFIG_INPUT_JOYSTICK is not set 697# CONFIG_INPUT_JOYSTICK is not set
698# CONFIG_INPUT_TABLET is not set
790# CONFIG_INPUT_TOUCHSCREEN is not set 699# CONFIG_INPUT_TOUCHSCREEN is not set
791# CONFIG_INPUT_MISC is not set 700# CONFIG_INPUT_MISC is not set
792 701
@@ -821,31 +730,12 @@ CONFIG_SERIAL_CORE_CONSOLE=y
821# CONFIG_SERIAL_JSM is not set 730# CONFIG_SERIAL_JSM is not set
822CONFIG_UNIX98_PTYS=y 731CONFIG_UNIX98_PTYS=y
823# CONFIG_LEGACY_PTYS is not set 732# CONFIG_LEGACY_PTYS is not set
824
825#
826# IPMI
827#
828# CONFIG_IPMI_HANDLER is not set 733# CONFIG_IPMI_HANDLER is not set
829
830#
831# Watchdog Cards
832#
833# CONFIG_WATCHDOG is not set
834# CONFIG_HW_RANDOM is not set 734# CONFIG_HW_RANDOM is not set
835# CONFIG_GEN_RTC is not set
836# CONFIG_DTLK is not set
837# CONFIG_R3964 is not set 735# CONFIG_R3964 is not set
838# CONFIG_APPLICOM is not set 736# CONFIG_APPLICOM is not set
839# CONFIG_DRM is not set
840# CONFIG_RAW_DRIVER is not set 737# CONFIG_RAW_DRIVER is not set
841 738CONFIG_DEVPORT=y
842#
843# TPM devices
844#
845
846#
847# I2C support
848#
849# CONFIG_I2C is not set 739# CONFIG_I2C is not set
850 740
851# 741#
@@ -853,18 +743,27 @@ CONFIG_UNIX98_PTYS=y
853# 743#
854# CONFIG_SPI is not set 744# CONFIG_SPI is not set
855# CONFIG_SPI_MASTER is not set 745# CONFIG_SPI_MASTER is not set
856
857#
858# Dallas's 1-wire bus
859#
860# CONFIG_W1 is not set 746# CONFIG_W1 is not set
861 747# CONFIG_POWER_SUPPLY is not set
862#
863# Hardware Monitoring support
864#
865CONFIG_HWMON=y 748CONFIG_HWMON=y
866# CONFIG_HWMON_VID is not set 749# CONFIG_HWMON_VID is not set
750# CONFIG_SENSORS_IT87 is not set
751# CONFIG_SENSORS_PC87360 is not set
752# CONFIG_SENSORS_SIS5595 is not set
753# CONFIG_SENSORS_SMSC47M1 is not set
754# CONFIG_SENSORS_VIA686A is not set
755# CONFIG_SENSORS_VT8231 is not set
756# CONFIG_SENSORS_W83627HF is not set
757# CONFIG_SENSORS_W83627EHF is not set
867# CONFIG_HWMON_DEBUG_CHIP is not set 758# CONFIG_HWMON_DEBUG_CHIP is not set
759CONFIG_THERMAL=y
760# CONFIG_WATCHDOG is not set
761
762#
763# Sonics Silicon Backplane
764#
765CONFIG_SSB_POSSIBLE=y
766# CONFIG_SSB is not set
868 767
869# 768#
870# Multifunction device drivers 769# Multifunction device drivers
@@ -875,23 +774,27 @@ CONFIG_HWMON=y
875# Multimedia devices 774# Multimedia devices
876# 775#
877# CONFIG_VIDEO_DEV is not set 776# CONFIG_VIDEO_DEV is not set
878 777# CONFIG_DVB_CORE is not set
879# 778# CONFIG_DAB is not set
880# Digital Video Broadcasting Devices
881#
882# CONFIG_DVB is not set
883# CONFIG_USB_DABUSB is not set
884 779
885# 780#
886# Graphics support 781# Graphics support
887# 782#
888# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 783# CONFIG_DRM is not set
784# CONFIG_VGASTATE is not set
785# CONFIG_VIDEO_OUTPUT_CONTROL is not set
889CONFIG_FB=y 786CONFIG_FB=y
890CONFIG_FIRMWARE_EDID=y 787CONFIG_FIRMWARE_EDID=y
891# CONFIG_FB_DDC is not set 788# CONFIG_FB_DDC is not set
892# CONFIG_FB_CFB_FILLRECT is not set 789# CONFIG_FB_CFB_FILLRECT is not set
893# CONFIG_FB_CFB_COPYAREA is not set 790# CONFIG_FB_CFB_COPYAREA is not set
894# CONFIG_FB_CFB_IMAGEBLIT is not set 791# CONFIG_FB_CFB_IMAGEBLIT is not set
792# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
793# CONFIG_FB_SYS_FILLRECT is not set
794# CONFIG_FB_SYS_COPYAREA is not set
795# CONFIG_FB_SYS_IMAGEBLIT is not set
796# CONFIG_FB_SYS_FOPS is not set
797CONFIG_FB_DEFERRED_IO=y
895# CONFIG_FB_SVGALIB is not set 798# CONFIG_FB_SVGALIB is not set
896# CONFIG_FB_MACMODES is not set 799# CONFIG_FB_MACMODES is not set
897# CONFIG_FB_BACKLIGHT is not set 800# CONFIG_FB_BACKLIGHT is not set
@@ -899,14 +802,13 @@ CONFIG_FIRMWARE_EDID=y
899# CONFIG_FB_TILEBLITTING is not set 802# CONFIG_FB_TILEBLITTING is not set
900 803
901# 804#
902# Frambuffer hardware drivers 805# Frame buffer hardware drivers
903# 806#
904# CONFIG_FB_CIRRUS is not set 807# CONFIG_FB_CIRRUS is not set
905# CONFIG_FB_PM2 is not set 808# CONFIG_FB_PM2 is not set
906# CONFIG_FB_CYBER2000 is not set 809# CONFIG_FB_CYBER2000 is not set
907# CONFIG_FB_ASILIANT is not set 810# CONFIG_FB_ASILIANT is not set
908# CONFIG_FB_IMSTT is not set 811# CONFIG_FB_IMSTT is not set
909# CONFIG_FB_EPSON1355 is not set
910# CONFIG_FB_S1D13XXX is not set 812# CONFIG_FB_S1D13XXX is not set
911# CONFIG_FB_NVIDIA is not set 813# CONFIG_FB_NVIDIA is not set
912# CONFIG_FB_RIVA is not set 814# CONFIG_FB_RIVA is not set
@@ -920,22 +822,27 @@ CONFIG_FIRMWARE_EDID=y
920# CONFIG_FB_KYRO is not set 822# CONFIG_FB_KYRO is not set
921# CONFIG_FB_3DFX is not set 823# CONFIG_FB_3DFX is not set
922# CONFIG_FB_VOODOO1 is not set 824# CONFIG_FB_VOODOO1 is not set
825# CONFIG_FB_VT8623 is not set
923# CONFIG_FB_TRIDENT is not set 826# CONFIG_FB_TRIDENT is not set
827# CONFIG_FB_ARK is not set
924# CONFIG_FB_VIRTUAL is not set 828# CONFIG_FB_VIRTUAL is not set
829# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
830
831#
832# Display device support
833#
834# CONFIG_DISPLAY_SUPPORT is not set
925 835
926# 836#
927# Console display driver support 837# Console display driver support
928# 838#
929CONFIG_DUMMY_CONSOLE=y 839CONFIG_DUMMY_CONSOLE=y
930CONFIG_FRAMEBUFFER_CONSOLE=y 840CONFIG_FRAMEBUFFER_CONSOLE=y
841# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
931# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set 842# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
932# CONFIG_FONTS is not set 843# CONFIG_FONTS is not set
933CONFIG_FONT_8x8=y 844CONFIG_FONT_8x8=y
934CONFIG_FONT_8x16=y 845CONFIG_FONT_8x16=y
935
936#
937# Logo configuration
938#
939CONFIG_LOGO=y 846CONFIG_LOGO=y
940# CONFIG_LOGO_LINUX_MONO is not set 847# CONFIG_LOGO_LINUX_MONO is not set
941# CONFIG_LOGO_LINUX_VGA16 is not set 848# CONFIG_LOGO_LINUX_VGA16 is not set
@@ -958,39 +865,38 @@ CONFIG_SOUND=y
958# Open Sound System 865# Open Sound System
959# 866#
960CONFIG_SOUND_PRIME=y 867CONFIG_SOUND_PRIME=y
961# CONFIG_OBSOLETE_OSS is not set
962# CONFIG_SOUND_BT878 is not set
963# CONFIG_SOUND_ICH is not set
964# CONFIG_SOUND_TRIDENT is not set 868# CONFIG_SOUND_TRIDENT is not set
965# CONFIG_SOUND_MSNDCLAS is not set 869# CONFIG_SOUND_MSNDCLAS is not set
966# CONFIG_SOUND_MSNDPIN is not set 870# CONFIG_SOUND_MSNDPIN is not set
967# CONFIG_SOUND_VIA82CXXX is not set 871CONFIG_HID_SUPPORT=y
968
969#
970# HID Devices
971#
972CONFIG_HID=y 872CONFIG_HID=y
973# CONFIG_HID_DEBUG is not set 873# CONFIG_HID_DEBUG is not set
874# CONFIG_HIDRAW is not set
974 875
975# 876#
976# USB support 877# USB Input Devices
977# 878#
879CONFIG_USB_HID=y
880# CONFIG_USB_HIDINPUT_POWERBOOK is not set
881# CONFIG_USB_HIDDEV is not set
882CONFIG_USB_SUPPORT=y
978CONFIG_USB_ARCH_HAS_HCD=y 883CONFIG_USB_ARCH_HAS_HCD=y
979CONFIG_USB_ARCH_HAS_OHCI=y 884CONFIG_USB_ARCH_HAS_OHCI=y
980CONFIG_USB_ARCH_HAS_EHCI=y 885CONFIG_USB_ARCH_HAS_EHCI=y
981CONFIG_USB=y 886CONFIG_USB=y
982CONFIG_USB_DEBUG=y 887# CONFIG_USB_DEBUG is not set
888# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
983 889
984# 890#
985# Miscellaneous USB options 891# Miscellaneous USB options
986# 892#
987CONFIG_USB_DEVICEFS=y 893CONFIG_USB_DEVICEFS=y
894# CONFIG_USB_DEVICE_CLASS is not set
988 895
989# 896#
990# USB Host Controller Drivers 897# USB Host Controller Drivers
991# 898#
992CONFIG_USB_EHCI_HCD=y 899CONFIG_USB_EHCI_HCD=y
993# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
994# CONFIG_USB_ISP116X_HCD is not set 900# CONFIG_USB_ISP116X_HCD is not set
995CONFIG_USB_OHCI_HCD=y 901CONFIG_USB_OHCI_HCD=y
996# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set 902# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
@@ -998,6 +904,7 @@ CONFIG_USB_OHCI_HCD=y
998CONFIG_USB_OHCI_LITTLE_ENDIAN=y 904CONFIG_USB_OHCI_LITTLE_ENDIAN=y
999# CONFIG_USB_UHCI_HCD is not set 905# CONFIG_USB_UHCI_HCD is not set
1000# CONFIG_USB_SL811_HCD is not set 906# CONFIG_USB_SL811_HCD is not set
907# CONFIG_USB_R8A66597_HCD is not set
1001 908
1002# 909#
1003# USB Device Class drivers 910# USB Device Class drivers
@@ -1015,49 +922,20 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1015CONFIG_USB_STORAGE=y 922CONFIG_USB_STORAGE=y
1016# CONFIG_USB_STORAGE_DEBUG is not set 923# CONFIG_USB_STORAGE_DEBUG is not set
1017# CONFIG_USB_STORAGE_FREECOM is not set 924# CONFIG_USB_STORAGE_FREECOM is not set
925# CONFIG_USB_STORAGE_ISD200 is not set
1018# CONFIG_USB_STORAGE_DPCM is not set 926# CONFIG_USB_STORAGE_DPCM is not set
1019# CONFIG_USB_STORAGE_KARMA is not set 927# CONFIG_USB_STORAGE_KARMA is not set
1020# CONFIG_USB_LIBUSUAL is not set 928# CONFIG_USB_LIBUSUAL is not set
1021 929
1022# 930#
1023# USB Input Devices
1024#
1025CONFIG_USB_HID=y
1026# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1027# CONFIG_USB_HIDDEV is not set
1028# CONFIG_USB_AIPTEK is not set
1029# CONFIG_USB_WACOM is not set
1030# CONFIG_USB_ACECAD is not set
1031# CONFIG_USB_KBTAB is not set
1032# CONFIG_USB_POWERMATE is not set
1033# CONFIG_USB_TOUCHSCREEN is not set
1034# CONFIG_USB_XPAD is not set
1035# CONFIG_USB_ATI_REMOTE is not set
1036# CONFIG_USB_ATI_REMOTE2 is not set
1037# CONFIG_USB_APPLETOUCH is not set
1038# CONFIG_USB_GTCO is not set
1039
1040#
1041# USB Imaging devices 931# USB Imaging devices
1042# 932#
1043# CONFIG_USB_MICROTEK is not set 933# CONFIG_USB_MICROTEK is not set
1044
1045#
1046# USB Network Adapters
1047#
1048# CONFIG_USB_KAWETH is not set
1049# CONFIG_USB_PEGASUS is not set
1050# CONFIG_USB_USBNET_MII is not set
1051# CONFIG_USB_USBNET is not set
1052CONFIG_USB_MON=y 934CONFIG_USB_MON=y
1053 935
1054# 936#
1055# USB port drivers 937# USB port drivers
1056# 938#
1057
1058#
1059# USB Serial Converter support
1060#
1061# CONFIG_USB_SERIAL is not set 939# CONFIG_USB_SERIAL is not set
1062 940
1063# 941#
@@ -1078,67 +956,17 @@ CONFIG_USB_MON=y
1078# CONFIG_USB_LD is not set 956# CONFIG_USB_LD is not set
1079# CONFIG_USB_TRANCEVIBRATOR is not set 957# CONFIG_USB_TRANCEVIBRATOR is not set
1080# CONFIG_USB_IOWARRIOR is not set 958# CONFIG_USB_IOWARRIOR is not set
1081
1082#
1083# USB DSL modem support
1084#
1085
1086#
1087# USB Gadget Support
1088#
1089# CONFIG_USB_GADGET is not set 959# CONFIG_USB_GADGET is not set
1090
1091#
1092# MMC/SD Card support
1093#
1094# CONFIG_MMC is not set 960# CONFIG_MMC is not set
1095 961# CONFIG_MEMSTICK is not set
1096#
1097# LED devices
1098#
1099# CONFIG_NEW_LEDS is not set 962# CONFIG_NEW_LEDS is not set
1100
1101#
1102# LED drivers
1103#
1104
1105#
1106# LED Triggers
1107#
1108
1109#
1110# InfiniBand support
1111#
1112# CONFIG_INFINIBAND is not set 963# CONFIG_INFINIBAND is not set
964# CONFIG_RTC_CLASS is not set
1113 965
1114# 966#
1115# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 967# Userspace I/O
1116#
1117
1118#
1119# Real Time Clock
1120#
1121
1122#
1123# DMA Engine support
1124#
1125# CONFIG_DMA_ENGINE is not set
1126
1127#
1128# DMA Clients
1129#
1130
1131#
1132# DMA Devices
1133#
1134
1135#
1136# Auxiliary Display support
1137#
1138
1139#
1140# Virtualization
1141# 968#
969# CONFIG_UIO is not set
1142 970
1143# 971#
1144# File systems 972# File systems
@@ -1151,12 +979,11 @@ CONFIG_EXT2_FS=y
1151# CONFIG_JFS_FS is not set 979# CONFIG_JFS_FS is not set
1152# CONFIG_FS_POSIX_ACL is not set 980# CONFIG_FS_POSIX_ACL is not set
1153# CONFIG_XFS_FS is not set 981# CONFIG_XFS_FS is not set
1154# CONFIG_MINIX_FS is not set 982# CONFIG_OCFS2_FS is not set
1155# CONFIG_ROMFS_FS is not set 983# CONFIG_DNOTIFY is not set
1156CONFIG_INOTIFY=y 984CONFIG_INOTIFY=y
1157CONFIG_INOTIFY_USER=y 985CONFIG_INOTIFY_USER=y
1158# CONFIG_QUOTA is not set 986# CONFIG_QUOTA is not set
1159# CONFIG_DNOTIFY is not set
1160# CONFIG_AUTOFS_FS is not set 987# CONFIG_AUTOFS_FS is not set
1161# CONFIG_AUTOFS4_FS is not set 988# CONFIG_AUTOFS4_FS is not set
1162# CONFIG_FUSE_FS is not set 989# CONFIG_FUSE_FS is not set
@@ -1181,14 +1008,14 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1181# Pseudo filesystems 1008# Pseudo filesystems
1182# 1009#
1183CONFIG_PROC_FS=y 1010CONFIG_PROC_FS=y
1184# CONFIG_PROC_KCORE is not set 1011CONFIG_PROC_KCORE=y
1185CONFIG_PROC_SYSCTL=y 1012CONFIG_PROC_SYSCTL=y
1186# CONFIG_SYSFS is not set 1013CONFIG_SYSFS=y
1187CONFIG_TMPFS=y 1014CONFIG_TMPFS=y
1188# CONFIG_TMPFS_POSIX_ACL is not set 1015# CONFIG_TMPFS_POSIX_ACL is not set
1189# CONFIG_HUGETLBFS is not set 1016# CONFIG_HUGETLBFS is not set
1190# CONFIG_HUGETLB_PAGE is not set 1017# CONFIG_HUGETLB_PAGE is not set
1191CONFIG_RAMFS=y 1018# CONFIG_CONFIGFS_FS is not set
1192 1019
1193# 1020#
1194# Miscellaneous filesystems 1021# Miscellaneous filesystems
@@ -1197,14 +1024,13 @@ CONFIG_RAMFS=y
1197# CONFIG_JFFS2_FS is not set 1024# CONFIG_JFFS2_FS is not set
1198CONFIG_CRAMFS=y 1025CONFIG_CRAMFS=y
1199# CONFIG_VXFS_FS is not set 1026# CONFIG_VXFS_FS is not set
1027# CONFIG_MINIX_FS is not set
1200# CONFIG_HPFS_FS is not set 1028# CONFIG_HPFS_FS is not set
1201# CONFIG_QNX4FS_FS is not set 1029# CONFIG_QNX4FS_FS is not set
1030# CONFIG_ROMFS_FS is not set
1202# CONFIG_SYSV_FS is not set 1031# CONFIG_SYSV_FS is not set
1203# CONFIG_UFS_FS is not set 1032# CONFIG_UFS_FS is not set
1204 1033CONFIG_NETWORK_FILESYSTEMS=y
1205#
1206# Network File Systems
1207#
1208CONFIG_NFS_FS=y 1034CONFIG_NFS_FS=y
1209CONFIG_NFS_V3=y 1035CONFIG_NFS_V3=y
1210# CONFIG_NFS_V3_ACL is not set 1036# CONFIG_NFS_V3_ACL is not set
@@ -1225,10 +1051,6 @@ CONFIG_SUNRPC=y
1225# 1051#
1226# CONFIG_PARTITION_ADVANCED is not set 1052# CONFIG_PARTITION_ADVANCED is not set
1227CONFIG_MSDOS_PARTITION=y 1053CONFIG_MSDOS_PARTITION=y
1228
1229#
1230# Native Language Support
1231#
1232CONFIG_NLS=y 1054CONFIG_NLS=y
1233CONFIG_NLS_DEFAULT="iso8859-1" 1055CONFIG_NLS_DEFAULT="iso8859-1"
1234# CONFIG_NLS_CODEPAGE_437 is not set 1056# CONFIG_NLS_CODEPAGE_437 is not set
@@ -1275,13 +1097,15 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1275# 1097#
1276CONFIG_TRACE_IRQFLAGS_SUPPORT=y 1098CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1277# CONFIG_PRINTK_TIME is not set 1099# CONFIG_PRINTK_TIME is not set
1100CONFIG_ENABLE_WARN_DEPRECATED=y
1278CONFIG_ENABLE_MUST_CHECK=y 1101CONFIG_ENABLE_MUST_CHECK=y
1279# CONFIG_MAGIC_SYSRQ is not set 1102# CONFIG_MAGIC_SYSRQ is not set
1280# CONFIG_UNUSED_SYMBOLS is not set 1103# CONFIG_UNUSED_SYMBOLS is not set
1104CONFIG_DEBUG_FS=y
1281# CONFIG_HEADERS_CHECK is not set 1105# CONFIG_HEADERS_CHECK is not set
1282# CONFIG_DEBUG_KERNEL is not set 1106# CONFIG_DEBUG_KERNEL is not set
1283CONFIG_LOG_BUF_SHIFT=14
1284# CONFIG_DEBUG_BUGVERBOSE is not set 1107# CONFIG_DEBUG_BUGVERBOSE is not set
1108# CONFIG_SAMPLES is not set
1285# CONFIG_SH_STANDARD_BIOS is not set 1109# CONFIG_SH_STANDARD_BIOS is not set
1286# CONFIG_EARLY_SCIF_CONSOLE is not set 1110# CONFIG_EARLY_SCIF_CONSOLE is not set
1287# CONFIG_SH_KGDB is not set 1111# CONFIG_SH_KGDB is not set
@@ -1290,11 +1114,48 @@ CONFIG_LOG_BUF_SHIFT=14
1290# Security options 1114# Security options
1291# 1115#
1292# CONFIG_KEYS is not set 1116# CONFIG_KEYS is not set
1293 1117# CONFIG_SECURITY is not set
1294# 1118CONFIG_CRYPTO=y
1295# Cryptographic options 1119# CONFIG_CRYPTO_SEQIV is not set
1296# 1120# CONFIG_CRYPTO_MANAGER is not set
1297# CONFIG_CRYPTO is not set 1121# CONFIG_CRYPTO_HMAC is not set
1122# CONFIG_CRYPTO_NULL is not set
1123# CONFIG_CRYPTO_MD4 is not set
1124# CONFIG_CRYPTO_MD5 is not set
1125# CONFIG_CRYPTO_SHA1 is not set
1126# CONFIG_CRYPTO_SHA256 is not set
1127# CONFIG_CRYPTO_SHA512 is not set
1128# CONFIG_CRYPTO_WP512 is not set
1129# CONFIG_CRYPTO_TGR192 is not set
1130# CONFIG_CRYPTO_ECB is not set
1131# CONFIG_CRYPTO_CBC is not set
1132# CONFIG_CRYPTO_PCBC is not set
1133# CONFIG_CRYPTO_CTR is not set
1134# CONFIG_CRYPTO_GCM is not set
1135# CONFIG_CRYPTO_CCM is not set
1136# CONFIG_CRYPTO_CRYPTD is not set
1137# CONFIG_CRYPTO_DES is not set
1138# CONFIG_CRYPTO_FCRYPT is not set
1139# CONFIG_CRYPTO_BLOWFISH is not set
1140# CONFIG_CRYPTO_TWOFISH is not set
1141# CONFIG_CRYPTO_SERPENT is not set
1142# CONFIG_CRYPTO_AES is not set
1143# CONFIG_CRYPTO_CAST5 is not set
1144# CONFIG_CRYPTO_CAST6 is not set
1145# CONFIG_CRYPTO_TEA is not set
1146# CONFIG_CRYPTO_ARC4 is not set
1147# CONFIG_CRYPTO_KHAZAD is not set
1148# CONFIG_CRYPTO_ANUBIS is not set
1149# CONFIG_CRYPTO_SEED is not set
1150# CONFIG_CRYPTO_DEFLATE is not set
1151# CONFIG_CRYPTO_MICHAEL_MIC is not set
1152# CONFIG_CRYPTO_CRC32C is not set
1153# CONFIG_CRYPTO_CAMELLIA is not set
1154# CONFIG_CRYPTO_TEST is not set
1155# CONFIG_CRYPTO_AUTHENC is not set
1156# CONFIG_CRYPTO_LZO is not set
1157CONFIG_CRYPTO_HW=y
1158# CONFIG_CRYPTO_DEV_HIFN_795X is not set
1298 1159
1299# 1160#
1300# Library routines 1161# Library routines
@@ -1302,9 +1163,12 @@ CONFIG_LOG_BUF_SHIFT=14
1302CONFIG_BITREVERSE=y 1163CONFIG_BITREVERSE=y
1303# CONFIG_CRC_CCITT is not set 1164# CONFIG_CRC_CCITT is not set
1304# CONFIG_CRC16 is not set 1165# CONFIG_CRC16 is not set
1166# CONFIG_CRC_ITU_T is not set
1305CONFIG_CRC32=y 1167CONFIG_CRC32=y
1168# CONFIG_CRC7 is not set
1306# CONFIG_LIBCRC32C is not set 1169# CONFIG_LIBCRC32C is not set
1307CONFIG_ZLIB_INFLATE=y 1170CONFIG_ZLIB_INFLATE=y
1308CONFIG_PLIST=y 1171CONFIG_PLIST=y
1309CONFIG_HAS_IOMEM=y 1172CONFIG_HAS_IOMEM=y
1310CONFIG_HAS_IOPORT=y 1173CONFIG_HAS_IOPORT=y
1174CONFIG_HAS_DMA=y
diff --git a/arch/sh/configs/sh7710voipgw_defconfig b/arch/sh/configs/sh7710voipgw_defconfig
index 9380c321169a..37e49a589207 100644
--- a/arch/sh/configs/sh7710voipgw_defconfig
+++ b/arch/sh/configs/sh7710voipgw_defconfig
@@ -1,40 +1,55 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.18 3# Linux kernel version: 2.6.25-rc4
4# Tue Oct 3 12:48:56 2006 4# Thu Mar 6 16:02:29 2008
5# 5#
6CONFIG_SUPERH=y 6CONFIG_SUPERH=y
7CONFIG_SUPERH32=y
7CONFIG_RWSEM_GENERIC_SPINLOCK=y 8CONFIG_RWSEM_GENERIC_SPINLOCK=y
9CONFIG_GENERIC_BUG=y
8CONFIG_GENERIC_FIND_NEXT_BIT=y 10CONFIG_GENERIC_FIND_NEXT_BIT=y
9CONFIG_GENERIC_HWEIGHT=y 11CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_HARDIRQS=y 12CONFIG_GENERIC_HARDIRQS=y
11CONFIG_GENERIC_IRQ_PROBE=y 13CONFIG_GENERIC_IRQ_PROBE=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y 14CONFIG_GENERIC_CALIBRATE_DELAY=y
15CONFIG_GENERIC_TIME=y
16CONFIG_GENERIC_CLOCKEVENTS=y
17CONFIG_STACKTRACE_SUPPORT=y
18CONFIG_LOCKDEP_SUPPORT=y
19# CONFIG_ARCH_HAS_ILOG2_U32 is not set
20# CONFIG_ARCH_HAS_ILOG2_U64 is not set
21CONFIG_ARCH_NO_VIRT_TO_BUS=y
22CONFIG_ARCH_SUPPORTS_AOUT=y
13CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 23CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
14 24
15# 25#
16# Code maturity level options 26# General setup
17# 27#
18CONFIG_EXPERIMENTAL=y 28CONFIG_EXPERIMENTAL=y
19CONFIG_BROKEN_ON_SMP=y 29CONFIG_BROKEN_ON_SMP=y
20CONFIG_INIT_ENV_ARG_LIMIT=32 30CONFIG_INIT_ENV_ARG_LIMIT=32
21
22#
23# General setup
24#
25CONFIG_LOCALVERSION="" 31CONFIG_LOCALVERSION=""
26CONFIG_LOCALVERSION_AUTO=y 32CONFIG_LOCALVERSION_AUTO=y
27# CONFIG_SWAP is not set 33# CONFIG_SWAP is not set
28CONFIG_SYSVIPC=y 34CONFIG_SYSVIPC=y
29# CONFIG_IPC_NS is not set 35CONFIG_SYSVIPC_SYSCTL=y
30CONFIG_POSIX_MQUEUE=y 36CONFIG_POSIX_MQUEUE=y
31# CONFIG_BSD_PROCESS_ACCT is not set 37# CONFIG_BSD_PROCESS_ACCT is not set
32# CONFIG_TASKSTATS is not set 38# CONFIG_TASKSTATS is not set
33# CONFIG_UTS_NS is not set
34# CONFIG_AUDIT is not set 39# CONFIG_AUDIT is not set
35# CONFIG_IKCONFIG is not set 40# CONFIG_IKCONFIG is not set
41CONFIG_LOG_BUF_SHIFT=14
42# CONFIG_CGROUPS is not set
43CONFIG_GROUP_SCHED=y
44CONFIG_FAIR_GROUP_SCHED=y
45# CONFIG_RT_GROUP_SCHED is not set
46CONFIG_USER_SCHED=y
47# CONFIG_CGROUP_SCHED is not set
48CONFIG_SYSFS_DEPRECATED=y
49CONFIG_SYSFS_DEPRECATED_V2=y
36# CONFIG_RELAY is not set 50# CONFIG_RELAY is not set
37CONFIG_INITRAMFS_SOURCE="" 51# CONFIG_NAMESPACES is not set
52# CONFIG_BLK_DEV_INITRD is not set
38CONFIG_CC_OPTIMIZE_FOR_SIZE=y 53CONFIG_CC_OPTIMIZE_FOR_SIZE=y
39CONFIG_SYSCTL=y 54CONFIG_SYSCTL=y
40CONFIG_EMBEDDED=y 55CONFIG_EMBEDDED=y
@@ -46,33 +61,39 @@ CONFIG_HOTPLUG=y
46CONFIG_PRINTK=y 61CONFIG_PRINTK=y
47CONFIG_BUG=y 62CONFIG_BUG=y
48CONFIG_ELF_CORE=y 63CONFIG_ELF_CORE=y
64CONFIG_COMPAT_BRK=y
49CONFIG_BASE_FULL=y 65CONFIG_BASE_FULL=y
50# CONFIG_FUTEX is not set 66# CONFIG_FUTEX is not set
67CONFIG_ANON_INODES=y
51# CONFIG_EPOLL is not set 68# CONFIG_EPOLL is not set
69CONFIG_SIGNALFD=y
70CONFIG_TIMERFD=y
71CONFIG_EVENTFD=y
52# CONFIG_SHMEM is not set 72# CONFIG_SHMEM is not set
53CONFIG_SLAB=y
54CONFIG_VM_EVENT_COUNTERS=y 73CONFIG_VM_EVENT_COUNTERS=y
74CONFIG_SLAB=y
75# CONFIG_SLUB is not set
76# CONFIG_SLOB is not set
77# CONFIG_PROFILING is not set
78# CONFIG_MARKERS is not set
79CONFIG_HAVE_OPROFILE=y
80# CONFIG_HAVE_KPROBES is not set
81# CONFIG_HAVE_KRETPROBES is not set
82CONFIG_PROC_PAGE_MONITOR=y
83CONFIG_SLABINFO=y
55CONFIG_TINY_SHMEM=y 84CONFIG_TINY_SHMEM=y
56CONFIG_BASE_SMALL=0 85CONFIG_BASE_SMALL=0
57# CONFIG_SLOB is not set
58
59#
60# Loadable module support
61#
62CONFIG_MODULES=y 86CONFIG_MODULES=y
63CONFIG_MODULE_UNLOAD=y 87CONFIG_MODULE_UNLOAD=y
64CONFIG_MODULE_FORCE_UNLOAD=y 88CONFIG_MODULE_FORCE_UNLOAD=y
65# CONFIG_MODVERSIONS is not set 89# CONFIG_MODVERSIONS is not set
66# CONFIG_MODULE_SRCVERSION_ALL is not set 90# CONFIG_MODULE_SRCVERSION_ALL is not set
67# CONFIG_KMOD is not set 91# CONFIG_KMOD is not set
68
69#
70# Block layer
71#
72CONFIG_BLOCK=y 92CONFIG_BLOCK=y
73# CONFIG_LBD is not set 93# CONFIG_LBD is not set
74# CONFIG_BLK_DEV_IO_TRACE is not set 94# CONFIG_BLK_DEV_IO_TRACE is not set
75# CONFIG_LSF is not set 95# CONFIG_LSF is not set
96# CONFIG_BLK_DEV_BSG is not set
76 97
77# 98#
78# IO Schedulers 99# IO Schedulers
@@ -86,59 +107,26 @@ CONFIG_DEFAULT_DEADLINE=y
86# CONFIG_DEFAULT_CFQ is not set 107# CONFIG_DEFAULT_CFQ is not set
87# CONFIG_DEFAULT_NOOP is not set 108# CONFIG_DEFAULT_NOOP is not set
88CONFIG_DEFAULT_IOSCHED="deadline" 109CONFIG_DEFAULT_IOSCHED="deadline"
110CONFIG_CLASSIC_RCU=y
111# CONFIG_PREEMPT_RCU is not set
89 112
90# 113#
91# System type 114# System type
92# 115#
93# CONFIG_SH_SOLUTION_ENGINE is not set
94# CONFIG_SH_7751_SOLUTION_ENGINE is not set
95# CONFIG_SH_7300_SOLUTION_ENGINE is not set
96# CONFIG_SH_7343_SOLUTION_ENGINE is not set
97# CONFIG_SH_73180_SOLUTION_ENGINE is not set
98# CONFIG_SH_7751_SYSTEMH is not set
99# CONFIG_SH_HP6XX is not set
100# CONFIG_SH_EC3104 is not set
101# CONFIG_SH_SATURN is not set
102# CONFIG_SH_DREAMCAST is not set
103# CONFIG_SH_BIGSUR is not set
104# CONFIG_SH_MPC1211 is not set
105# CONFIG_SH_SH03 is not set
106# CONFIG_SH_SECUREEDGE5410 is not set
107# CONFIG_SH_HS7751RVOIP is not set
108CONFIG_SH_7710VOIPGW=y
109# CONFIG_SH_RTS7751R2D is not set
110# CONFIG_SH_R7780RP is not set
111# CONFIG_SH_EDOSK7705 is not set
112# CONFIG_SH_SH4202_MICRODEV is not set
113# CONFIG_SH_LANDISK is not set
114# CONFIG_SH_TITAN is not set
115# CONFIG_SH_SHMIN is not set
116# CONFIG_SH_UNKNOWN is not set
117
118#
119# Processor selection
120#
121CONFIG_CPU_SH3=y 116CONFIG_CPU_SH3=y
122 117# CONFIG_CPU_SUBTYPE_SH7619 is not set
123# 118# CONFIG_CPU_SUBTYPE_SH7203 is not set
124# SH-2 Processor Support 119# CONFIG_CPU_SUBTYPE_SH7206 is not set
125# 120# CONFIG_CPU_SUBTYPE_SH7263 is not set
126# CONFIG_CPU_SUBTYPE_SH7604 is not set
127
128#
129# SH-3 Processor Support
130#
131# CONFIG_CPU_SUBTYPE_SH7300 is not set
132# CONFIG_CPU_SUBTYPE_SH7705 is not set 121# CONFIG_CPU_SUBTYPE_SH7705 is not set
133# CONFIG_CPU_SUBTYPE_SH7706 is not set 122# CONFIG_CPU_SUBTYPE_SH7706 is not set
134# CONFIG_CPU_SUBTYPE_SH7707 is not set 123# CONFIG_CPU_SUBTYPE_SH7707 is not set
135# CONFIG_CPU_SUBTYPE_SH7708 is not set 124# CONFIG_CPU_SUBTYPE_SH7708 is not set
136# CONFIG_CPU_SUBTYPE_SH7709 is not set 125# CONFIG_CPU_SUBTYPE_SH7709 is not set
137CONFIG_CPU_SUBTYPE_SH7710=y 126CONFIG_CPU_SUBTYPE_SH7710=y
138 127# CONFIG_CPU_SUBTYPE_SH7712 is not set
139# 128# CONFIG_CPU_SUBTYPE_SH7720 is not set
140# SH-4 Processor Support 129# CONFIG_CPU_SUBTYPE_SH7721 is not set
141#
142# CONFIG_CPU_SUBTYPE_SH7750 is not set 130# CONFIG_CPU_SUBTYPE_SH7750 is not set
143# CONFIG_CPU_SUBTYPE_SH7091 is not set 131# CONFIG_CPU_SUBTYPE_SH7091 is not set
144# CONFIG_CPU_SUBTYPE_SH7750R is not set 132# CONFIG_CPU_SUBTYPE_SH7750R is not set
@@ -147,65 +135,84 @@ CONFIG_CPU_SUBTYPE_SH7710=y
147# CONFIG_CPU_SUBTYPE_SH7751R is not set 135# CONFIG_CPU_SUBTYPE_SH7751R is not set
148# CONFIG_CPU_SUBTYPE_SH7760 is not set 136# CONFIG_CPU_SUBTYPE_SH7760 is not set
149# CONFIG_CPU_SUBTYPE_SH4_202 is not set 137# CONFIG_CPU_SUBTYPE_SH4_202 is not set
150 138# CONFIG_CPU_SUBTYPE_SH7763 is not set
151#
152# ST40 Processor Support
153#
154# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
155# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
156
157#
158# SH-4A Processor Support
159#
160# CONFIG_CPU_SUBTYPE_SH7770 is not set 139# CONFIG_CPU_SUBTYPE_SH7770 is not set
161# CONFIG_CPU_SUBTYPE_SH7780 is not set 140# CONFIG_CPU_SUBTYPE_SH7780 is not set
162 141# CONFIG_CPU_SUBTYPE_SH7785 is not set
163# 142# CONFIG_CPU_SUBTYPE_SHX3 is not set
164# SH4AL-DSP Processor Support
165#
166# CONFIG_CPU_SUBTYPE_SH73180 is not set
167# CONFIG_CPU_SUBTYPE_SH7343 is not set 143# CONFIG_CPU_SUBTYPE_SH7343 is not set
144# CONFIG_CPU_SUBTYPE_SH7722 is not set
145# CONFIG_CPU_SUBTYPE_SH7366 is not set
146# CONFIG_CPU_SUBTYPE_SH5_101 is not set
147# CONFIG_CPU_SUBTYPE_SH5_103 is not set
168 148
169# 149#
170# Memory management options 150# Memory management options
171# 151#
152CONFIG_QUICKLIST=y
172CONFIG_MMU=y 153CONFIG_MMU=y
173CONFIG_PAGE_OFFSET=0x80000000 154CONFIG_PAGE_OFFSET=0x80000000
174CONFIG_MEMORY_START=0x0c000000 155CONFIG_MEMORY_START=0x0c000000
175CONFIG_MEMORY_SIZE=0x00800000 156CONFIG_MEMORY_SIZE=0x00800000
157CONFIG_29BIT=y
176CONFIG_VSYSCALL=y 158CONFIG_VSYSCALL=y
159CONFIG_ARCH_FLATMEM_ENABLE=y
160CONFIG_ARCH_SPARSEMEM_ENABLE=y
161CONFIG_ARCH_SPARSEMEM_DEFAULT=y
162CONFIG_MAX_ACTIVE_REGIONS=1
163CONFIG_ARCH_POPULATES_NODE_MAP=y
164CONFIG_ARCH_SELECT_MEMORY_MODEL=y
165CONFIG_PAGE_SIZE_4KB=y
166# CONFIG_PAGE_SIZE_8KB is not set
167# CONFIG_PAGE_SIZE_64KB is not set
177CONFIG_SELECT_MEMORY_MODEL=y 168CONFIG_SELECT_MEMORY_MODEL=y
178CONFIG_FLATMEM_MANUAL=y 169CONFIG_FLATMEM_MANUAL=y
179# CONFIG_DISCONTIGMEM_MANUAL is not set 170# CONFIG_DISCONTIGMEM_MANUAL is not set
180# CONFIG_SPARSEMEM_MANUAL is not set 171# CONFIG_SPARSEMEM_MANUAL is not set
181CONFIG_FLATMEM=y 172CONFIG_FLATMEM=y
182CONFIG_FLAT_NODE_MEM_MAP=y 173CONFIG_FLAT_NODE_MEM_MAP=y
183# CONFIG_SPARSEMEM_STATIC is not set 174CONFIG_SPARSEMEM_STATIC=y
175# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
184CONFIG_SPLIT_PTLOCK_CPUS=4 176CONFIG_SPLIT_PTLOCK_CPUS=4
185# CONFIG_RESOURCES_64BIT is not set 177# CONFIG_RESOURCES_64BIT is not set
178CONFIG_ZONE_DMA_FLAG=0
179CONFIG_NR_QUICK=2
186 180
187# 181#
188# Cache configuration 182# Cache configuration
189# 183#
190# CONFIG_SH_DIRECT_MAPPED is not set 184# CONFIG_SH_DIRECT_MAPPED is not set
191# CONFIG_SH_WRITETHROUGH is not set 185CONFIG_CACHE_WRITEBACK=y
192# CONFIG_SH_OCRAM is not set 186# CONFIG_CACHE_WRITETHROUGH is not set
187# CONFIG_CACHE_OFF is not set
193 188
194# 189#
195# Processor features 190# Processor features
196# 191#
197CONFIG_CPU_LITTLE_ENDIAN=y 192CONFIG_CPU_LITTLE_ENDIAN=y
193# CONFIG_CPU_BIG_ENDIAN is not set
198# CONFIG_SH_FPU_EMU is not set 194# CONFIG_SH_FPU_EMU is not set
199CONFIG_SH_DSP=y 195CONFIG_SH_DSP=y
200# CONFIG_SH_ADC is not set 196# CONFIG_SH_ADC is not set
201CONFIG_CPU_HAS_INTEVT=y 197CONFIG_CPU_HAS_INTEVT=y
202CONFIG_CPU_HAS_SR_RB=y 198CONFIG_CPU_HAS_SR_RB=y
199CONFIG_CPU_HAS_DSP=y
203 200
204# 201#
205# Timer support 202# Board support
203#
204# CONFIG_SH_SOLUTION_ENGINE is not set
205
206#
207# Timer and clock configuration
206# 208#
207CONFIG_SH_TMU=y 209CONFIG_SH_TMU=y
210CONFIG_SH_TIMER_IRQ=16
208CONFIG_SH_PCLK_FREQ=32768000 211CONFIG_SH_PCLK_FREQ=32768000
212# CONFIG_TICK_ONESHOT is not set
213# CONFIG_NO_HZ is not set
214# CONFIG_HIGH_RES_TIMERS is not set
215CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
209 216
210# 217#
211# CPU Frequency scaling 218# CPU Frequency scaling
@@ -220,56 +227,51 @@ CONFIG_SH_PCLK_FREQ=32768000
220# 227#
221# Companion Chips 228# Companion Chips
222# 229#
223# CONFIG_HD6446X_SERIES is not set 230
231#
232# Additional SuperH Device Drivers
233#
234# CONFIG_HEARTBEAT is not set
235# CONFIG_PUSH_SWITCH is not set
224 236
225# 237#
226# Kernel features 238# Kernel features
227# 239#
228# CONFIG_HZ_100 is not set 240# CONFIG_HZ_100 is not set
229CONFIG_HZ_250=y 241CONFIG_HZ_250=y
242# CONFIG_HZ_300 is not set
230# CONFIG_HZ_1000 is not set 243# CONFIG_HZ_1000 is not set
231CONFIG_HZ=250 244CONFIG_HZ=250
245# CONFIG_SCHED_HRTICK is not set
232# CONFIG_KEXEC is not set 246# CONFIG_KEXEC is not set
233# CONFIG_SMP is not set 247# CONFIG_CRASH_DUMP is not set
234CONFIG_PREEMPT_NONE=y 248CONFIG_PREEMPT_NONE=y
235# CONFIG_PREEMPT_VOLUNTARY is not set 249# CONFIG_PREEMPT_VOLUNTARY is not set
236# CONFIG_PREEMPT is not set 250# CONFIG_PREEMPT is not set
251CONFIG_RCU_TRACE=y
252CONFIG_GUSA=y
253# CONFIG_GUSA_RB is not set
237 254
238# 255#
239# Boot options 256# Boot options
240# 257#
241CONFIG_ZERO_PAGE_OFFSET=0x00001000 258CONFIG_ZERO_PAGE_OFFSET=0x00001000
242CONFIG_BOOT_LINK_OFFSET=0x00800000 259CONFIG_BOOT_LINK_OFFSET=0x00800000
243# CONFIG_UBC_WAKEUP is not set
244# CONFIG_CMDLINE_BOOL is not set 260# CONFIG_CMDLINE_BOOL is not set
245 261
246# 262#
247# Bus options 263# Bus options
248# 264#
249# CONFIG_PCI is not set 265# CONFIG_ARCH_SUPPORTS_MSI is not set
250
251#
252# PCCARD (PCMCIA/CardBus) support
253#
254# CONFIG_PCCARD is not set 266# CONFIG_PCCARD is not set
255 267
256# 268#
257# PCI Hotplug Support
258#
259
260#
261# Executable file formats 269# Executable file formats
262# 270#
263CONFIG_BINFMT_ELF=y 271CONFIG_BINFMT_ELF=y
264# CONFIG_BINFMT_FLAT is not set
265# CONFIG_BINFMT_MISC is not set 272# CONFIG_BINFMT_MISC is not set
266 273
267# 274#
268# Power management options (EXPERIMENTAL)
269#
270# CONFIG_PM is not set
271
272#
273# Networking 275# Networking
274# 276#
275CONFIG_NET=y 277CONFIG_NET=y
@@ -277,13 +279,14 @@ CONFIG_NET=y
277# 279#
278# Networking options 280# Networking options
279# 281#
280# CONFIG_NETDEBUG is not set
281CONFIG_PACKET=y 282CONFIG_PACKET=y
282# CONFIG_PACKET_MMAP is not set 283# CONFIG_PACKET_MMAP is not set
283CONFIG_UNIX=y 284CONFIG_UNIX=y
284CONFIG_XFRM=y 285CONFIG_XFRM=y
285# CONFIG_XFRM_USER is not set 286# CONFIG_XFRM_USER is not set
286# CONFIG_XFRM_SUB_POLICY is not set 287# CONFIG_XFRM_SUB_POLICY is not set
288# CONFIG_XFRM_MIGRATE is not set
289# CONFIG_XFRM_STATISTICS is not set
287# CONFIG_NET_KEY is not set 290# CONFIG_NET_KEY is not set
288CONFIG_INET=y 291CONFIG_INET=y
289# CONFIG_IP_MULTICAST is not set 292# CONFIG_IP_MULTICAST is not set
@@ -301,14 +304,13 @@ CONFIG_SYN_COOKIES=y
301# CONFIG_INET_TUNNEL is not set 304# CONFIG_INET_TUNNEL is not set
302CONFIG_INET_XFRM_MODE_TRANSPORT=y 305CONFIG_INET_XFRM_MODE_TRANSPORT=y
303CONFIG_INET_XFRM_MODE_TUNNEL=y 306CONFIG_INET_XFRM_MODE_TUNNEL=y
307CONFIG_INET_XFRM_MODE_BEET=y
308# CONFIG_INET_LRO is not set
304# CONFIG_INET_DIAG is not set 309# CONFIG_INET_DIAG is not set
305# CONFIG_TCP_CONG_ADVANCED is not set 310# CONFIG_TCP_CONG_ADVANCED is not set
306CONFIG_TCP_CONG_CUBIC=y 311CONFIG_TCP_CONG_CUBIC=y
307CONFIG_DEFAULT_TCP_CONG="cubic" 312CONFIG_DEFAULT_TCP_CONG="cubic"
308 313# CONFIG_TCP_MD5SIG is not set
309#
310# IP: Virtual Server Configuration
311#
312# CONFIG_IP_VS is not set 314# CONFIG_IP_VS is not set
313# CONFIG_IPV6 is not set 315# CONFIG_IPV6 is not set
314# CONFIG_INET6_XFRM_TUNNEL is not set 316# CONFIG_INET6_XFRM_TUNNEL is not set
@@ -316,44 +318,24 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
316# CONFIG_NETWORK_SECMARK is not set 318# CONFIG_NETWORK_SECMARK is not set
317CONFIG_NETFILTER=y 319CONFIG_NETFILTER=y
318# CONFIG_NETFILTER_DEBUG is not set 320# CONFIG_NETFILTER_DEBUG is not set
321CONFIG_NETFILTER_ADVANCED=y
319 322
320# 323#
321# Core Netfilter Configuration 324# Core Netfilter Configuration
322# 325#
323# CONFIG_NETFILTER_NETLINK is not set 326# CONFIG_NETFILTER_NETLINK_QUEUE is not set
327# CONFIG_NETFILTER_NETLINK_LOG is not set
328# CONFIG_NF_CONNTRACK is not set
324# CONFIG_NETFILTER_XTABLES is not set 329# CONFIG_NETFILTER_XTABLES is not set
325 330
326# 331#
327# IP: Netfilter Configuration 332# IP: Netfilter Configuration
328# 333#
329CONFIG_IP_NF_CONNTRACK=y
330# CONFIG_IP_NF_CT_ACCT is not set
331# CONFIG_IP_NF_CONNTRACK_MARK is not set
332# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
333# CONFIG_IP_NF_CT_PROTO_SCTP is not set
334CONFIG_IP_NF_FTP=m
335# CONFIG_IP_NF_IRC is not set
336# CONFIG_IP_NF_NETBIOS_NS is not set
337# CONFIG_IP_NF_TFTP is not set
338# CONFIG_IP_NF_AMANDA is not set
339CONFIG_IP_NF_PPTP=m
340# CONFIG_IP_NF_H323 is not set
341# CONFIG_IP_NF_SIP is not set
342# CONFIG_IP_NF_QUEUE is not set 334# CONFIG_IP_NF_QUEUE is not set
343 335# CONFIG_IP_NF_IPTABLES is not set
344# 336# CONFIG_IP_NF_ARPTABLES is not set
345# DCCP Configuration (EXPERIMENTAL)
346#
347# CONFIG_IP_DCCP is not set 337# CONFIG_IP_DCCP is not set
348
349#
350# SCTP Configuration (EXPERIMENTAL)
351#
352# CONFIG_IP_SCTP is not set 338# CONFIG_IP_SCTP is not set
353
354#
355# TIPC Configuration (EXPERIMENTAL)
356#
357# CONFIG_TIPC is not set 339# CONFIG_TIPC is not set
358# CONFIG_ATM is not set 340# CONFIG_ATM is not set
359# CONFIG_BRIDGE is not set 341# CONFIG_BRIDGE is not set
@@ -366,14 +348,7 @@ CONFIG_IP_NF_PPTP=m
366# CONFIG_LAPB is not set 348# CONFIG_LAPB is not set
367# CONFIG_ECONET is not set 349# CONFIG_ECONET is not set
368# CONFIG_WAN_ROUTER is not set 350# CONFIG_WAN_ROUTER is not set
369
370#
371# QoS and/or fair queueing
372#
373CONFIG_NET_SCHED=y 351CONFIG_NET_SCHED=y
374CONFIG_NET_SCH_CLK_JIFFIES=y
375# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set
376# CONFIG_NET_SCH_CLK_CPU is not set
377 352
378# 353#
379# Queueing/Scheduling 354# Queueing/Scheduling
@@ -382,6 +357,7 @@ CONFIG_NET_SCH_CBQ=y
382# CONFIG_NET_SCH_HTB is not set 357# CONFIG_NET_SCH_HTB is not set
383# CONFIG_NET_SCH_HFSC is not set 358# CONFIG_NET_SCH_HFSC is not set
384# CONFIG_NET_SCH_PRIO is not set 359# CONFIG_NET_SCH_PRIO is not set
360# CONFIG_NET_SCH_RR is not set
385# CONFIG_NET_SCH_RED is not set 361# CONFIG_NET_SCH_RED is not set
386# CONFIG_NET_SCH_SFQ is not set 362# CONFIG_NET_SCH_SFQ is not set
387# CONFIG_NET_SCH_TEQL is not set 363# CONFIG_NET_SCH_TEQL is not set
@@ -389,7 +365,6 @@ CONFIG_NET_SCH_CBQ=y
389# CONFIG_NET_SCH_GRED is not set 365# CONFIG_NET_SCH_GRED is not set
390# CONFIG_NET_SCH_DSMARK is not set 366# CONFIG_NET_SCH_DSMARK is not set
391# CONFIG_NET_SCH_NETEM is not set 367# CONFIG_NET_SCH_NETEM is not set
392CONFIG_NET_SCH_INGRESS=y
393 368
394# 369#
395# Classification 370# Classification
@@ -405,20 +380,31 @@ CONFIG_NET_CLS_U32=y
405# CONFIG_CLS_U32_MARK is not set 380# CONFIG_CLS_U32_MARK is not set
406# CONFIG_NET_CLS_RSVP is not set 381# CONFIG_NET_CLS_RSVP is not set
407# CONFIG_NET_CLS_RSVP6 is not set 382# CONFIG_NET_CLS_RSVP6 is not set
383# CONFIG_NET_CLS_FLOW is not set
408# CONFIG_NET_EMATCH is not set 384# CONFIG_NET_EMATCH is not set
409# CONFIG_NET_CLS_ACT is not set 385# CONFIG_NET_CLS_ACT is not set
410CONFIG_NET_CLS_POLICE=y
411# CONFIG_NET_CLS_IND is not set 386# CONFIG_NET_CLS_IND is not set
412CONFIG_NET_ESTIMATOR=y 387CONFIG_NET_SCH_FIFO=y
413 388
414# 389#
415# Network testing 390# Network testing
416# 391#
417# CONFIG_NET_PKTGEN is not set 392# CONFIG_NET_PKTGEN is not set
418# CONFIG_HAMRADIO is not set 393# CONFIG_HAMRADIO is not set
394# CONFIG_CAN is not set
419# CONFIG_IRDA is not set 395# CONFIG_IRDA is not set
420# CONFIG_BT is not set 396# CONFIG_BT is not set
397# CONFIG_AF_RXRPC is not set
398
399#
400# Wireless
401#
402# CONFIG_CFG80211 is not set
403# CONFIG_WIRELESS_EXT is not set
404# CONFIG_MAC80211 is not set
421# CONFIG_IEEE80211 is not set 405# CONFIG_IEEE80211 is not set
406# CONFIG_RFKILL is not set
407# CONFIG_NET_9P is not set
422 408
423# 409#
424# Device Drivers 410# Device Drivers
@@ -427,19 +413,12 @@ CONFIG_NET_ESTIMATOR=y
427# 413#
428# Generic Driver Options 414# Generic Driver Options
429# 415#
416CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
430CONFIG_STANDALONE=y 417CONFIG_STANDALONE=y
431CONFIG_PREVENT_FIRMWARE_BUILD=y 418CONFIG_PREVENT_FIRMWARE_BUILD=y
432CONFIG_FW_LOADER=y 419CONFIG_FW_LOADER=y
433# CONFIG_SYS_HYPERVISOR is not set 420# CONFIG_SYS_HYPERVISOR is not set
434
435#
436# Connector - unified userspace <-> kernelspace linker
437#
438# CONFIG_CONNECTOR is not set 421# CONFIG_CONNECTOR is not set
439
440#
441# Memory Technology Devices (MTD)
442#
443CONFIG_MTD=y 422CONFIG_MTD=y
444# CONFIG_MTD_DEBUG is not set 423# CONFIG_MTD_DEBUG is not set
445# CONFIG_MTD_CONCAT is not set 424# CONFIG_MTD_CONCAT is not set
@@ -451,12 +430,14 @@ CONFIG_MTD_PARTITIONS=y
451# User Modules And Translation Layers 430# User Modules And Translation Layers
452# 431#
453CONFIG_MTD_CHAR=y 432CONFIG_MTD_CHAR=y
433CONFIG_MTD_BLKDEVS=y
454CONFIG_MTD_BLOCK=y 434CONFIG_MTD_BLOCK=y
455# CONFIG_FTL is not set 435# CONFIG_FTL is not set
456# CONFIG_NFTL is not set 436# CONFIG_NFTL is not set
457# CONFIG_INFTL is not set 437# CONFIG_INFTL is not set
458# CONFIG_RFD_FTL is not set 438# CONFIG_RFD_FTL is not set
459# CONFIG_SSFDC is not set 439# CONFIG_SSFDC is not set
440# CONFIG_MTD_OOPS is not set
460 441
461# 442#
462# RAM/ROM/Flash chip drivers 443# RAM/ROM/Flash chip drivers
@@ -482,7 +463,6 @@ CONFIG_MTD_CFI_UTIL=y
482CONFIG_MTD_RAM=y 463CONFIG_MTD_RAM=y
483# CONFIG_MTD_ROM is not set 464# CONFIG_MTD_ROM is not set
484# CONFIG_MTD_ABSENT is not set 465# CONFIG_MTD_ABSENT is not set
485# CONFIG_MTD_OBSOLETE_CHIPS is not set
486 466
487# 467#
488# Mapping drivers for chip access 468# Mapping drivers for chip access
@@ -505,40 +485,25 @@ CONFIG_MTD_RAM=y
505# CONFIG_MTD_DOC2000 is not set 485# CONFIG_MTD_DOC2000 is not set
506# CONFIG_MTD_DOC2001 is not set 486# CONFIG_MTD_DOC2001 is not set
507# CONFIG_MTD_DOC2001PLUS is not set 487# CONFIG_MTD_DOC2001PLUS is not set
508
509#
510# NAND Flash Device Drivers
511#
512# CONFIG_MTD_NAND is not set 488# CONFIG_MTD_NAND is not set
513
514#
515# OneNAND Flash Device Drivers
516#
517# CONFIG_MTD_ONENAND is not set 489# CONFIG_MTD_ONENAND is not set
518 490
519# 491#
520# Parallel port support 492# UBI - Unsorted block images
521# 493#
494# CONFIG_MTD_UBI is not set
522# CONFIG_PARPORT is not set 495# CONFIG_PARPORT is not set
523 496CONFIG_BLK_DEV=y
524#
525# Plug and Play support
526#
527
528#
529# Block devices
530#
531# CONFIG_BLK_DEV_COW_COMMON is not set 497# CONFIG_BLK_DEV_COW_COMMON is not set
532# CONFIG_BLK_DEV_LOOP is not set 498# CONFIG_BLK_DEV_LOOP is not set
533# CONFIG_BLK_DEV_NBD is not set 499# CONFIG_BLK_DEV_NBD is not set
534# CONFIG_BLK_DEV_RAM is not set 500# CONFIG_BLK_DEV_RAM is not set
535# CONFIG_BLK_DEV_INITRD is not set
536# CONFIG_CDROM_PKTCDVD is not set 501# CONFIG_CDROM_PKTCDVD is not set
537# CONFIG_ATA_OVER_ETH is not set 502# CONFIG_ATA_OVER_ETH is not set
538 503CONFIG_MISC_DEVICES=y
539# 504# CONFIG_EEPROM_93CX6 is not set
540# ATA/ATAPI/MFM/RLL support 505# CONFIG_ENCLOSURE_SERVICES is not set
541# 506CONFIG_HAVE_IDE=y
542# CONFIG_IDE is not set 507# CONFIG_IDE is not set
543 508
544# 509#
@@ -546,104 +511,59 @@ CONFIG_MTD_RAM=y
546# 511#
547# CONFIG_RAID_ATTRS is not set 512# CONFIG_RAID_ATTRS is not set
548# CONFIG_SCSI is not set 513# CONFIG_SCSI is not set
514# CONFIG_SCSI_DMA is not set
549# CONFIG_SCSI_NETLINK is not set 515# CONFIG_SCSI_NETLINK is not set
550
551#
552# Serial ATA (prod) and Parallel ATA (experimental) drivers
553#
554# CONFIG_ATA is not set 516# CONFIG_ATA is not set
555
556#
557# Multi-device support (RAID and LVM)
558#
559# CONFIG_MD is not set 517# CONFIG_MD is not set
560
561#
562# Fusion MPT device support
563#
564# CONFIG_FUSION is not set
565
566#
567# IEEE 1394 (FireWire) support
568#
569
570#
571# I2O device support
572#
573
574#
575# Network device support
576#
577CONFIG_NETDEVICES=y 518CONFIG_NETDEVICES=y
519# CONFIG_NETDEVICES_MULTIQUEUE is not set
578# CONFIG_DUMMY is not set 520# CONFIG_DUMMY is not set
579# CONFIG_BONDING is not set 521# CONFIG_BONDING is not set
522# CONFIG_MACVLAN is not set
580# CONFIG_EQUALIZER is not set 523# CONFIG_EQUALIZER is not set
581# CONFIG_TUN is not set 524# CONFIG_TUN is not set
582 525# CONFIG_VETH is not set
583#
584# PHY device support
585#
586# CONFIG_PHYLIB is not set 526# CONFIG_PHYLIB is not set
587
588#
589# Ethernet (10 or 100Mbit)
590#
591CONFIG_NET_ETHERNET=y 527CONFIG_NET_ETHERNET=y
592# CONFIG_MII is not set 528# CONFIG_MII is not set
529# CONFIG_AX88796 is not set
593# CONFIG_STNIC is not set 530# CONFIG_STNIC is not set
594# CONFIG_SMC91X is not set 531# CONFIG_SMC91X is not set
532# CONFIG_IBM_NEW_EMAC_ZMII is not set
533# CONFIG_IBM_NEW_EMAC_RGMII is not set
534# CONFIG_IBM_NEW_EMAC_TAH is not set
535# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
536# CONFIG_B44 is not set
537CONFIG_NETDEV_1000=y
538# CONFIG_E1000E_ENABLED is not set
539CONFIG_NETDEV_10000=y
595 540
596# 541#
597# Ethernet (1000 Mbit) 542# Wireless LAN
598#
599
600#
601# Ethernet (10000 Mbit)
602#
603
604#
605# Token Ring devices
606#
607
608#
609# Wireless LAN (non-hamradio)
610#
611# CONFIG_NET_RADIO is not set
612
613#
614# Wan interfaces
615# 543#
544# CONFIG_WLAN_PRE80211 is not set
545# CONFIG_WLAN_80211 is not set
616# CONFIG_WAN is not set 546# CONFIG_WAN is not set
617# CONFIG_PPP is not set 547# CONFIG_PPP is not set
618# CONFIG_SLIP is not set 548# CONFIG_SLIP is not set
619# CONFIG_SHAPER is not set
620# CONFIG_NETCONSOLE is not set 549# CONFIG_NETCONSOLE is not set
621# CONFIG_NETPOLL is not set 550# CONFIG_NETPOLL is not set
622# CONFIG_NET_POLL_CONTROLLER is not set 551# CONFIG_NET_POLL_CONTROLLER is not set
623
624#
625# ISDN subsystem
626#
627# CONFIG_ISDN is not set 552# CONFIG_ISDN is not set
628
629#
630# Telephony Support
631#
632CONFIG_PHONE=y 553CONFIG_PHONE=y
633# CONFIG_PHONE_IXJ is not set
634 554
635# 555#
636# Input device support 556# Input device support
637# 557#
638CONFIG_INPUT=y 558CONFIG_INPUT=y
639# CONFIG_INPUT_FF_MEMLESS is not set 559# CONFIG_INPUT_FF_MEMLESS is not set
560# CONFIG_INPUT_POLLDEV is not set
640 561
641# 562#
642# Userland interfaces 563# Userland interfaces
643# 564#
644# CONFIG_INPUT_MOUSEDEV is not set 565# CONFIG_INPUT_MOUSEDEV is not set
645# CONFIG_INPUT_JOYDEV is not set 566# CONFIG_INPUT_JOYDEV is not set
646# CONFIG_INPUT_TSDEV is not set
647# CONFIG_INPUT_EVDEV is not set 567# CONFIG_INPUT_EVDEV is not set
648# CONFIG_INPUT_EVBUG is not set 568# CONFIG_INPUT_EVBUG is not set
649 569
@@ -653,6 +573,7 @@ CONFIG_INPUT=y
653# CONFIG_INPUT_KEYBOARD is not set 573# CONFIG_INPUT_KEYBOARD is not set
654# CONFIG_INPUT_MOUSE is not set 574# CONFIG_INPUT_MOUSE is not set
655# CONFIG_INPUT_JOYSTICK is not set 575# CONFIG_INPUT_JOYSTICK is not set
576# CONFIG_INPUT_TABLET is not set
656# CONFIG_INPUT_TOUCHSCREEN is not set 577# CONFIG_INPUT_TOUCHSCREEN is not set
657# CONFIG_INPUT_MISC is not set 578# CONFIG_INPUT_MISC is not set
658 579
@@ -684,35 +605,11 @@ CONFIG_SERIAL_CORE_CONSOLE=y
684# CONFIG_UNIX98_PTYS is not set 605# CONFIG_UNIX98_PTYS is not set
685CONFIG_LEGACY_PTYS=y 606CONFIG_LEGACY_PTYS=y
686CONFIG_LEGACY_PTY_COUNT=256 607CONFIG_LEGACY_PTY_COUNT=256
687
688#
689# IPMI
690#
691# CONFIG_IPMI_HANDLER is not set 608# CONFIG_IPMI_HANDLER is not set
692
693#
694# Watchdog Cards
695#
696# CONFIG_WATCHDOG is not set
697CONFIG_HW_RANDOM=y 609CONFIG_HW_RANDOM=y
698# CONFIG_GEN_RTC is not set
699# CONFIG_DTLK is not set
700# CONFIG_R3964 is not set 610# CONFIG_R3964 is not set
701
702#
703# Ftape, the floppy tape device driver
704#
705# CONFIG_RAW_DRIVER is not set 611# CONFIG_RAW_DRIVER is not set
706
707#
708# TPM devices
709#
710# CONFIG_TCG_TPM is not set 612# CONFIG_TCG_TPM is not set
711# CONFIG_TELCLOCK is not set
712
713#
714# I2C support
715#
716# CONFIG_I2C is not set 613# CONFIG_I2C is not set
717 614
718# 615#
@@ -720,119 +617,86 @@ CONFIG_HW_RANDOM=y
720# 617#
721# CONFIG_SPI is not set 618# CONFIG_SPI is not set
722# CONFIG_SPI_MASTER is not set 619# CONFIG_SPI_MASTER is not set
620# CONFIG_W1 is not set
621# CONFIG_POWER_SUPPLY is not set
622# CONFIG_HWMON is not set
623CONFIG_THERMAL=y
624# CONFIG_WATCHDOG is not set
723 625
724# 626#
725# Dallas's 1-wire bus 627# Sonics Silicon Backplane
726#
727
728#
729# Hardware Monitoring support
730# 628#
731# CONFIG_HWMON is not set 629CONFIG_SSB_POSSIBLE=y
732# CONFIG_HWMON_VID is not set 630# CONFIG_SSB is not set
733 631
734# 632#
735# Misc devices 633# Multifunction device drivers
736# 634#
635# CONFIG_MFD_SM501 is not set
737 636
738# 637#
739# Multimedia devices 638# Multimedia devices
740# 639#
741# CONFIG_VIDEO_DEV is not set 640# CONFIG_VIDEO_DEV is not set
742CONFIG_VIDEO_V4L2=y 641# CONFIG_DVB_CORE is not set
743 642# CONFIG_DAB is not set
744#
745# Digital Video Broadcasting Devices
746#
747# CONFIG_DVB is not set
748 643
749# 644#
750# Graphics support 645# Graphics support
751# 646#
752CONFIG_FIRMWARE_EDID=y 647# CONFIG_VGASTATE is not set
648# CONFIG_VIDEO_OUTPUT_CONTROL is not set
753# CONFIG_FB is not set 649# CONFIG_FB is not set
754# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 650# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
755 651
756# 652#
757# Sound 653# Display device support
758# 654#
759# CONFIG_SOUND is not set 655# CONFIG_DISPLAY_SUPPORT is not set
760 656
761# 657#
762# USB support 658# Sound
763# 659#
764# CONFIG_USB_ARCH_HAS_HCD is not set 660# CONFIG_SOUND is not set
661CONFIG_HID_SUPPORT=y
662CONFIG_HID=y
663# CONFIG_HID_DEBUG is not set
664# CONFIG_HIDRAW is not set
665CONFIG_USB_SUPPORT=y
666CONFIG_USB_ARCH_HAS_HCD=y
765# CONFIG_USB_ARCH_HAS_OHCI is not set 667# CONFIG_USB_ARCH_HAS_OHCI is not set
766# CONFIG_USB_ARCH_HAS_EHCI is not set 668# CONFIG_USB_ARCH_HAS_EHCI is not set
669# CONFIG_USB is not set
767 670
768# 671#
769# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 672# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
770# 673#
771
772#
773# USB Gadget Support
774#
775# CONFIG_USB_GADGET is not set 674# CONFIG_USB_GADGET is not set
776
777#
778# MMC/SD Card support
779#
780# CONFIG_MMC is not set 675# CONFIG_MMC is not set
781 676# CONFIG_MEMSTICK is not set
782#
783# LED devices
784#
785# CONFIG_NEW_LEDS is not set 677# CONFIG_NEW_LEDS is not set
786
787#
788# LED drivers
789#
790
791#
792# LED Triggers
793#
794
795#
796# InfiniBand support
797#
798
799#
800# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
801#
802
803#
804# Real Time Clock
805#
806# CONFIG_RTC_CLASS is not set 678# CONFIG_RTC_CLASS is not set
807 679
808# 680#
809# DMA Engine support 681# Userspace I/O
810#
811# CONFIG_DMA_ENGINE is not set
812
813#
814# DMA Clients
815#
816
817#
818# DMA Devices
819# 682#
683# CONFIG_UIO is not set
820 684
821# 685#
822# File systems 686# File systems
823# 687#
824# CONFIG_EXT2_FS is not set 688# CONFIG_EXT2_FS is not set
825# CONFIG_EXT3_FS is not set 689# CONFIG_EXT3_FS is not set
690# CONFIG_EXT4DEV_FS is not set
826# CONFIG_REISERFS_FS is not set 691# CONFIG_REISERFS_FS is not set
827# CONFIG_JFS_FS is not set 692# CONFIG_JFS_FS is not set
828# CONFIG_FS_POSIX_ACL is not set 693# CONFIG_FS_POSIX_ACL is not set
829# CONFIG_XFS_FS is not set 694# CONFIG_XFS_FS is not set
695# CONFIG_GFS2_FS is not set
830# CONFIG_OCFS2_FS is not set 696# CONFIG_OCFS2_FS is not set
831# CONFIG_MINIX_FS is not set 697# CONFIG_DNOTIFY is not set
832# CONFIG_ROMFS_FS is not set
833# CONFIG_INOTIFY is not set 698# CONFIG_INOTIFY is not set
834# CONFIG_QUOTA is not set 699# CONFIG_QUOTA is not set
835# CONFIG_DNOTIFY is not set
836# CONFIG_AUTOFS_FS is not set 700# CONFIG_AUTOFS_FS is not set
837# CONFIG_AUTOFS4_FS is not set 701# CONFIG_AUTOFS4_FS is not set
838# CONFIG_FUSE_FS is not set 702# CONFIG_FUSE_FS is not set
@@ -861,7 +725,6 @@ CONFIG_TMPFS=y
861# CONFIG_TMPFS_POSIX_ACL is not set 725# CONFIG_TMPFS_POSIX_ACL is not set
862# CONFIG_HUGETLBFS is not set 726# CONFIG_HUGETLBFS is not set
863# CONFIG_HUGETLB_PAGE is not set 727# CONFIG_HUGETLB_PAGE is not set
864CONFIG_RAMFS=y
865# CONFIG_CONFIGFS_FS is not set 728# CONFIG_CONFIGFS_FS is not set
866 729
867# 730#
@@ -874,26 +737,26 @@ CONFIG_RAMFS=y
874# CONFIG_BEFS_FS is not set 737# CONFIG_BEFS_FS is not set
875# CONFIG_BFS_FS is not set 738# CONFIG_BFS_FS is not set
876# CONFIG_EFS_FS is not set 739# CONFIG_EFS_FS is not set
877# CONFIG_JFFS_FS is not set
878CONFIG_JFFS2_FS=y 740CONFIG_JFFS2_FS=y
879CONFIG_JFFS2_FS_DEBUG=0 741CONFIG_JFFS2_FS_DEBUG=0
880CONFIG_JFFS2_FS_WRITEBUFFER=y 742CONFIG_JFFS2_FS_WRITEBUFFER=y
743# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
881# CONFIG_JFFS2_SUMMARY is not set 744# CONFIG_JFFS2_SUMMARY is not set
882# CONFIG_JFFS2_FS_XATTR is not set 745# CONFIG_JFFS2_FS_XATTR is not set
883# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set 746# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
884CONFIG_JFFS2_ZLIB=y 747CONFIG_JFFS2_ZLIB=y
748# CONFIG_JFFS2_LZO is not set
885CONFIG_JFFS2_RTIME=y 749CONFIG_JFFS2_RTIME=y
886# CONFIG_JFFS2_RUBIN is not set 750# CONFIG_JFFS2_RUBIN is not set
887# CONFIG_CRAMFS is not set 751# CONFIG_CRAMFS is not set
888# CONFIG_VXFS_FS is not set 752# CONFIG_VXFS_FS is not set
753# CONFIG_MINIX_FS is not set
889# CONFIG_HPFS_FS is not set 754# CONFIG_HPFS_FS is not set
890# CONFIG_QNX4FS_FS is not set 755# CONFIG_QNX4FS_FS is not set
756# CONFIG_ROMFS_FS is not set
891# CONFIG_SYSV_FS is not set 757# CONFIG_SYSV_FS is not set
892# CONFIG_UFS_FS is not set 758# CONFIG_UFS_FS is not set
893 759CONFIG_NETWORK_FILESYSTEMS=y
894#
895# Network File Systems
896#
897# CONFIG_NFS_FS is not set 760# CONFIG_NFS_FS is not set
898# CONFIG_NFSD is not set 761# CONFIG_NFSD is not set
899# CONFIG_SMB_FS is not set 762# CONFIG_SMB_FS is not set
@@ -901,55 +764,97 @@ CONFIG_JFFS2_RTIME=y
901# CONFIG_NCP_FS is not set 764# CONFIG_NCP_FS is not set
902# CONFIG_CODA_FS is not set 765# CONFIG_CODA_FS is not set
903# CONFIG_AFS_FS is not set 766# CONFIG_AFS_FS is not set
904# CONFIG_9P_FS is not set
905 767
906# 768#
907# Partition Types 769# Partition Types
908# 770#
909# CONFIG_PARTITION_ADVANCED is not set 771# CONFIG_PARTITION_ADVANCED is not set
910CONFIG_MSDOS_PARTITION=y 772CONFIG_MSDOS_PARTITION=y
911
912#
913# Native Language Support
914#
915# CONFIG_NLS is not set 773# CONFIG_NLS is not set
916 774# CONFIG_DLM is not set
917#
918# Profiling support
919#
920# CONFIG_PROFILING is not set
921 775
922# 776#
923# Kernel hacking 777# Kernel hacking
924# 778#
779CONFIG_TRACE_IRQFLAGS_SUPPORT=y
925# CONFIG_PRINTK_TIME is not set 780# CONFIG_PRINTK_TIME is not set
781CONFIG_ENABLE_WARN_DEPRECATED=y
926CONFIG_ENABLE_MUST_CHECK=y 782CONFIG_ENABLE_MUST_CHECK=y
927# CONFIG_MAGIC_SYSRQ is not set 783# CONFIG_MAGIC_SYSRQ is not set
928# CONFIG_UNUSED_SYMBOLS is not set 784# CONFIG_UNUSED_SYMBOLS is not set
785CONFIG_DEBUG_FS=y
786# CONFIG_HEADERS_CHECK is not set
929# CONFIG_DEBUG_KERNEL is not set 787# CONFIG_DEBUG_KERNEL is not set
930CONFIG_LOG_BUF_SHIFT=14
931# CONFIG_DEBUG_BUGVERBOSE is not set 788# CONFIG_DEBUG_BUGVERBOSE is not set
932# CONFIG_DEBUG_FS is not set 789# CONFIG_SAMPLES is not set
933# CONFIG_SH_STANDARD_BIOS is not set 790# CONFIG_SH_STANDARD_BIOS is not set
934# CONFIG_KGDB is not set 791# CONFIG_EARLY_SCIF_CONSOLE is not set
792# CONFIG_SH_KGDB is not set
935 793
936# 794#
937# Security options 795# Security options
938# 796#
939# CONFIG_KEYS is not set 797# CONFIG_KEYS is not set
940# CONFIG_SECURITY is not set 798# CONFIG_SECURITY is not set
941 799# CONFIG_SECURITY_FILE_CAPABILITIES is not set
942# 800CONFIG_CRYPTO=y
943# Cryptographic options 801# CONFIG_CRYPTO_SEQIV is not set
944# 802# CONFIG_CRYPTO_MANAGER is not set
945# CONFIG_CRYPTO is not set 803# CONFIG_CRYPTO_HMAC is not set
804# CONFIG_CRYPTO_XCBC is not set
805# CONFIG_CRYPTO_NULL is not set
806# CONFIG_CRYPTO_MD4 is not set
807# CONFIG_CRYPTO_MD5 is not set
808# CONFIG_CRYPTO_SHA1 is not set
809# CONFIG_CRYPTO_SHA256 is not set
810# CONFIG_CRYPTO_SHA512 is not set
811# CONFIG_CRYPTO_WP512 is not set
812# CONFIG_CRYPTO_TGR192 is not set
813# CONFIG_CRYPTO_GF128MUL is not set
814# CONFIG_CRYPTO_ECB is not set
815# CONFIG_CRYPTO_CBC is not set
816# CONFIG_CRYPTO_PCBC is not set
817# CONFIG_CRYPTO_LRW is not set
818# CONFIG_CRYPTO_XTS is not set
819# CONFIG_CRYPTO_CTR is not set
820# CONFIG_CRYPTO_GCM is not set
821# CONFIG_CRYPTO_CCM is not set
822# CONFIG_CRYPTO_CRYPTD is not set
823# CONFIG_CRYPTO_DES is not set
824# CONFIG_CRYPTO_FCRYPT is not set
825# CONFIG_CRYPTO_BLOWFISH is not set
826# CONFIG_CRYPTO_TWOFISH is not set
827# CONFIG_CRYPTO_SERPENT is not set
828# CONFIG_CRYPTO_AES is not set
829# CONFIG_CRYPTO_CAST5 is not set
830# CONFIG_CRYPTO_CAST6 is not set
831# CONFIG_CRYPTO_TEA is not set
832# CONFIG_CRYPTO_ARC4 is not set
833# CONFIG_CRYPTO_KHAZAD is not set
834# CONFIG_CRYPTO_ANUBIS is not set
835# CONFIG_CRYPTO_SEED is not set
836# CONFIG_CRYPTO_SALSA20 is not set
837# CONFIG_CRYPTO_DEFLATE is not set
838# CONFIG_CRYPTO_MICHAEL_MIC is not set
839# CONFIG_CRYPTO_CRC32C is not set
840# CONFIG_CRYPTO_CAMELLIA is not set
841# CONFIG_CRYPTO_TEST is not set
842# CONFIG_CRYPTO_AUTHENC is not set
843# CONFIG_CRYPTO_LZO is not set
844CONFIG_CRYPTO_HW=y
946 845
947# 846#
948# Library routines 847# Library routines
949# 848#
849CONFIG_BITREVERSE=y
950# CONFIG_CRC_CCITT is not set 850# CONFIG_CRC_CCITT is not set
951# CONFIG_CRC16 is not set 851# CONFIG_CRC16 is not set
852# CONFIG_CRC_ITU_T is not set
952CONFIG_CRC32=y 853CONFIG_CRC32=y
854# CONFIG_CRC7 is not set
953# CONFIG_LIBCRC32C is not set 855# CONFIG_LIBCRC32C is not set
954CONFIG_ZLIB_INFLATE=y 856CONFIG_ZLIB_INFLATE=y
955CONFIG_ZLIB_DEFLATE=y 857CONFIG_ZLIB_DEFLATE=y
858CONFIG_HAS_IOMEM=y
859CONFIG_HAS_IOPORT=y
860CONFIG_HAS_DMA=y
diff --git a/arch/sh/drivers/dma/dma-sh.c b/arch/sh/drivers/dma/dma-sh.c
index 5c3359756a92..71ff3d6f26e2 100644
--- a/arch/sh/drivers/dma/dma-sh.c
+++ b/arch/sh/drivers/dma/dma-sh.c
@@ -90,7 +90,7 @@ static irqreturn_t dma_tei(int irq, void *dev_id)
90 90
91static int sh_dmac_request_dma(struct dma_channel *chan) 91static int sh_dmac_request_dma(struct dma_channel *chan)
92{ 92{
93 if (unlikely(!chan->flags & DMA_TEI_CAPABLE)) 93 if (unlikely(!(chan->flags & DMA_TEI_CAPABLE)))
94 return 0; 94 return 0;
95 95
96 return request_irq(get_dmte_irq(chan->chan), dma_tei, 96 return request_irq(get_dmte_irq(chan->chan), dma_tei,
diff --git a/arch/sh/drivers/heartbeat.c b/arch/sh/drivers/heartbeat.c
index b76a14f12ce2..ab77b0e0fa0e 100644
--- a/arch/sh/drivers/heartbeat.c
+++ b/arch/sh/drivers/heartbeat.c
@@ -93,7 +93,7 @@ static int heartbeat_drv_probe(struct platform_device *pdev)
93 } 93 }
94 94
95 hd->base = ioremap_nocache(res->start, res->end - res->start + 1); 95 hd->base = ioremap_nocache(res->start, res->end - res->start + 1);
96 if (!unlikely(hd->base)) { 96 if (unlikely(!hd->base)) {
97 dev_err(&pdev->dev, "ioremap failed\n"); 97 dev_err(&pdev->dev, "ioremap failed\n");
98 98
99 if (!pdev->dev.platform_data) 99 if (!pdev->dev.platform_data)
diff --git a/arch/sh/drivers/pci/ops-dreamcast.c b/arch/sh/drivers/pci/ops-dreamcast.c
index 0dac87b19624..e1284fc69361 100644
--- a/arch/sh/drivers/pci/ops-dreamcast.c
+++ b/arch/sh/drivers/pci/ops-dreamcast.c
@@ -83,9 +83,9 @@ static int gapspci_read(struct pci_bus *bus, unsigned int devfn, int where, int
83 return PCIBIOS_DEVICE_NOT_FOUND; 83 return PCIBIOS_DEVICE_NOT_FOUND;
84 84
85 switch (size) { 85 switch (size) {
86 case 1: *val = ctrl_inb(GAPSPCI_BBA_CONFIG+where); break; 86 case 1: *val = inb(GAPSPCI_BBA_CONFIG+where); break;
87 case 2: *val = ctrl_inw(GAPSPCI_BBA_CONFIG+where); break; 87 case 2: *val = inw(GAPSPCI_BBA_CONFIG+where); break;
88 case 4: *val = ctrl_inl(GAPSPCI_BBA_CONFIG+where); break; 88 case 4: *val = inl(GAPSPCI_BBA_CONFIG+where); break;
89 } 89 }
90 90
91 return PCIBIOS_SUCCESSFUL; 91 return PCIBIOS_SUCCESSFUL;
@@ -97,9 +97,9 @@ static int gapspci_write(struct pci_bus *bus, unsigned int devfn, int where, int
97 return PCIBIOS_DEVICE_NOT_FOUND; 97 return PCIBIOS_DEVICE_NOT_FOUND;
98 98
99 switch (size) { 99 switch (size) {
100 case 1: ctrl_outb(( u8)val, GAPSPCI_BBA_CONFIG+where); break; 100 case 1: outb(( u8)val, GAPSPCI_BBA_CONFIG+where); break;
101 case 2: ctrl_outw((u16)val, GAPSPCI_BBA_CONFIG+where); break; 101 case 2: outw((u16)val, GAPSPCI_BBA_CONFIG+where); break;
102 case 4: ctrl_outl((u32)val, GAPSPCI_BBA_CONFIG+where); break; 102 case 4: outl((u32)val, GAPSPCI_BBA_CONFIG+where); break;
103 } 103 }
104 104
105 return PCIBIOS_SUCCESSFUL; 105 return PCIBIOS_SUCCESSFUL;
@@ -127,36 +127,36 @@ int __init gapspci_init(void)
127 */ 127 */
128 128
129 for (i=0; i<16; i++) 129 for (i=0; i<16; i++)
130 idbuf[i] = ctrl_inb(GAPSPCI_REGS+i); 130 idbuf[i] = inb(GAPSPCI_REGS+i);
131 131
132 if (strncmp(idbuf, "GAPSPCI_BRIDGE_2", 16)) 132 if (strncmp(idbuf, "GAPSPCI_BRIDGE_2", 16))
133 return -ENODEV; 133 return -ENODEV;
134 134
135 ctrl_outl(0x5a14a501, GAPSPCI_REGS+0x18); 135 outl(0x5a14a501, GAPSPCI_REGS+0x18);
136 136
137 for (i=0; i<1000000; i++) 137 for (i=0; i<1000000; i++)
138 ; 138 ;
139 139
140 if (ctrl_inl(GAPSPCI_REGS+0x18) != 1) 140 if (inl(GAPSPCI_REGS+0x18) != 1)
141 return -EINVAL; 141 return -EINVAL;
142 142
143 ctrl_outl(0x01000000, GAPSPCI_REGS+0x20); 143 outl(0x01000000, GAPSPCI_REGS+0x20);
144 ctrl_outl(0x01000000, GAPSPCI_REGS+0x24); 144 outl(0x01000000, GAPSPCI_REGS+0x24);
145 145
146 ctrl_outl(GAPSPCI_DMA_BASE, GAPSPCI_REGS+0x28); 146 outl(GAPSPCI_DMA_BASE, GAPSPCI_REGS+0x28);
147 ctrl_outl(GAPSPCI_DMA_BASE+GAPSPCI_DMA_SIZE, GAPSPCI_REGS+0x2c); 147 outl(GAPSPCI_DMA_BASE+GAPSPCI_DMA_SIZE, GAPSPCI_REGS+0x2c);
148 148
149 ctrl_outl(1, GAPSPCI_REGS+0x14); 149 outl(1, GAPSPCI_REGS+0x14);
150 ctrl_outl(1, GAPSPCI_REGS+0x34); 150 outl(1, GAPSPCI_REGS+0x34);
151 151
152 /* Setting Broadband Adapter */ 152 /* Setting Broadband Adapter */
153 ctrl_outw(0xf900, GAPSPCI_BBA_CONFIG+0x06); 153 outw(0xf900, GAPSPCI_BBA_CONFIG+0x06);
154 ctrl_outl(0x00000000, GAPSPCI_BBA_CONFIG+0x30); 154 outl(0x00000000, GAPSPCI_BBA_CONFIG+0x30);
155 ctrl_outb(0x00, GAPSPCI_BBA_CONFIG+0x3c); 155 outb(0x00, GAPSPCI_BBA_CONFIG+0x3c);
156 ctrl_outb(0xf0, GAPSPCI_BBA_CONFIG+0x0d); 156 outb(0xf0, GAPSPCI_BBA_CONFIG+0x0d);
157 ctrl_outw(0x0006, GAPSPCI_BBA_CONFIG+0x04); 157 outw(0x0006, GAPSPCI_BBA_CONFIG+0x04);
158 ctrl_outl(0x00002001, GAPSPCI_BBA_CONFIG+0x10); 158 outl(0x00002001, GAPSPCI_BBA_CONFIG+0x10);
159 ctrl_outl(0x01000000, GAPSPCI_BBA_CONFIG+0x14); 159 outl(0x01000000, GAPSPCI_BBA_CONFIG+0x14);
160 160
161 return 0; 161 return 0;
162} 162}
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c
index 80a31329ead9..75fb03d35670 100644
--- a/arch/sh/kernel/cpu/init.c
+++ b/arch/sh/kernel/cpu/init.c
@@ -233,7 +233,7 @@ static void __init dsp_init(void)
233 * and cache configuration in detect_cpu_and_cache_system(). 233 * and cache configuration in detect_cpu_and_cache_system().
234 */ 234 */
235 235
236asmlinkage void __cpuinit sh_cpu_init(void) 236asmlinkage void __init sh_cpu_init(void)
237{ 237{
238 current_thread_info()->cpu = hard_smp_processor_id(); 238 current_thread_info()->cpu = hard_smp_processor_id();
239 239
diff --git a/arch/sh/kernel/cpu/sh2/setup-sh7619.c b/arch/sh/kernel/cpu/sh2/setup-sh7619.c
index b230eb278cef..cc530f4d84d6 100644
--- a/arch/sh/kernel/cpu/sh2/setup-sh7619.c
+++ b/arch/sh/kernel/cpu/sh2/setup-sh7619.c
@@ -10,7 +10,7 @@
10#include <linux/platform_device.h> 10#include <linux/platform_device.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/serial.h> 12#include <linux/serial.h>
13#include <asm/sci.h> 13#include <linux/serial_sci.h>
14 14
15enum { 15enum {
16 UNUSED = 0, 16 UNUSED = 0,
diff --git a/arch/sh/kernel/cpu/sh2a/clock-sh7203.c b/arch/sh/kernel/cpu/sh2a/clock-sh7203.c
index 3feb95a4fcbc..fb781329848a 100644
--- a/arch/sh/kernel/cpu/sh2a/clock-sh7203.c
+++ b/arch/sh/kernel/cpu/sh2a/clock-sh7203.c
@@ -21,8 +21,8 @@
21#include <asm/freq.h> 21#include <asm/freq.h>
22#include <asm/io.h> 22#include <asm/io.h>
23 23
24const static int pll1rate[]={8,12,16,0}; 24static const int pll1rate[]={8,12,16,0};
25const static int pfc_divisors[]={1,2,3,4,6,8,12}; 25static const int pfc_divisors[]={1,2,3,4,6,8,12};
26#define ifc_divisors pfc_divisors 26#define ifc_divisors pfc_divisors
27 27
28#if (CONFIG_SH_CLK_MD == 0) 28#if (CONFIG_SH_CLK_MD == 0)
diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7203.c b/arch/sh/kernel/cpu/sh2a/setup-sh7203.c
index db6ef5cecde1..e98dc4450352 100644
--- a/arch/sh/kernel/cpu/sh2a/setup-sh7203.c
+++ b/arch/sh/kernel/cpu/sh2a/setup-sh7203.c
@@ -10,7 +10,7 @@
10#include <linux/platform_device.h> 10#include <linux/platform_device.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/serial.h> 12#include <linux/serial.h>
13#include <asm/sci.h> 13#include <linux/serial_sci.h>
14 14
15enum { 15enum {
16 UNUSED = 0, 16 UNUSED = 0,
diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7206.c b/arch/sh/kernel/cpu/sh2a/setup-sh7206.c
index a564425b905f..e6d4ec445dd8 100644
--- a/arch/sh/kernel/cpu/sh2a/setup-sh7206.c
+++ b/arch/sh/kernel/cpu/sh2a/setup-sh7206.c
@@ -10,7 +10,7 @@
10#include <linux/platform_device.h> 10#include <linux/platform_device.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/serial.h> 12#include <linux/serial.h>
13#include <asm/sci.h> 13#include <linux/serial_sci.h>
14 14
15enum { 15enum {
16 UNUSED = 0, 16 UNUSED = 0,
diff --git a/arch/sh/kernel/cpu/sh3/probe.c b/arch/sh/kernel/cpu/sh3/probe.c
index fcc80bb7bee7..10f2a760c5ee 100644
--- a/arch/sh/kernel/cpu/sh3/probe.c
+++ b/arch/sh/kernel/cpu/sh3/probe.c
@@ -94,9 +94,9 @@ int __uses_jump_to_uncached detect_cpu_and_cache_system(void)
94 boot_cpu_data.dcache.way_incr = (1 << 13); 94 boot_cpu_data.dcache.way_incr = (1 << 13);
95 boot_cpu_data.dcache.entry_mask = 0x1ff0; 95 boot_cpu_data.dcache.entry_mask = 0x1ff0;
96 boot_cpu_data.dcache.sets = 512; 96 boot_cpu_data.dcache.sets = 512;
97 ctrl_outl(CCR_CACHE_32KB, CCR3); 97 ctrl_outl(CCR_CACHE_32KB, CCR3_REG);
98#else 98#else
99 ctrl_outl(CCR_CACHE_16KB, CCR3); 99 ctrl_outl(CCR_CACHE_16KB, CCR3_REG);
100#endif 100#endif
101#endif 101#endif
102 } 102 }
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7705.c b/arch/sh/kernel/cpu/sh3/setup-sh7705.c
index dd0a20a685f7..f581534cb732 100644
--- a/arch/sh/kernel/cpu/sh3/setup-sh7705.c
+++ b/arch/sh/kernel/cpu/sh3/setup-sh7705.c
@@ -12,7 +12,7 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/irq.h> 13#include <linux/irq.h>
14#include <linux/serial.h> 14#include <linux/serial.h>
15#include <asm/sci.h> 15#include <linux/serial_sci.h>
16#include <asm/rtc.h> 16#include <asm/rtc.h>
17 17
18enum { 18enum {
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh770x.c b/arch/sh/kernel/cpu/sh3/setup-sh770x.c
index 969804bb523b..d3733b13ea52 100644
--- a/arch/sh/kernel/cpu/sh3/setup-sh770x.c
+++ b/arch/sh/kernel/cpu/sh3/setup-sh770x.c
@@ -16,7 +16,7 @@
16#include <linux/irq.h> 16#include <linux/irq.h>
17#include <linux/platform_device.h> 17#include <linux/platform_device.h>
18#include <linux/serial.h> 18#include <linux/serial.h>
19#include <asm/sci.h> 19#include <linux/serial_sci.h>
20 20
21enum { 21enum {
22 UNUSED = 0, 22 UNUSED = 0,
@@ -123,15 +123,15 @@ static struct resource rtc_resources[] = {
123 .flags = IORESOURCE_IO, 123 .flags = IORESOURCE_IO,
124 }, 124 },
125 [1] = { 125 [1] = {
126 .start = 20, 126 .start = 21,
127 .flags = IORESOURCE_IRQ, 127 .flags = IORESOURCE_IRQ,
128 }, 128 },
129 [2] = { 129 [2] = {
130 .start = 21, 130 .start = 22,
131 .flags = IORESOURCE_IRQ, 131 .flags = IORESOURCE_IRQ,
132 }, 132 },
133 [3] = { 133 [3] = {
134 .start = 22, 134 .start = 20,
135 .flags = IORESOURCE_IRQ, 135 .flags = IORESOURCE_IRQ,
136 }, 136 },
137}; 137};
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7710.c b/arch/sh/kernel/cpu/sh3/setup-sh7710.c
index 0cc0e2bf135d..7406c9ad9259 100644
--- a/arch/sh/kernel/cpu/sh3/setup-sh7710.c
+++ b/arch/sh/kernel/cpu/sh3/setup-sh7710.c
@@ -12,7 +12,7 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/irq.h> 13#include <linux/irq.h>
14#include <linux/serial.h> 14#include <linux/serial.h>
15#include <asm/sci.h> 15#include <linux/serial_sci.h>
16#include <asm/rtc.h> 16#include <asm/rtc.h>
17 17
18enum { 18enum {
diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7720.c b/arch/sh/kernel/cpu/sh3/setup-sh7720.c
index 3855ea4c21c8..8028082527c5 100644
--- a/arch/sh/kernel/cpu/sh3/setup-sh7720.c
+++ b/arch/sh/kernel/cpu/sh3/setup-sh7720.c
@@ -16,7 +16,7 @@
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/serial.h> 17#include <linux/serial.h>
18#include <linux/io.h> 18#include <linux/io.h>
19#include <asm/sci.h> 19#include <linux/serial_sci.h>
20#include <asm/rtc.h> 20#include <asm/rtc.h>
21 21
22#define INTC_ICR1 0xA4140010UL 22#define INTC_ICR1 0xA4140010UL
diff --git a/arch/sh/kernel/cpu/sh4/setup-sh4-202.c b/arch/sh/kernel/cpu/sh4/setup-sh4-202.c
index dab193293f20..7371abf64f80 100644
--- a/arch/sh/kernel/cpu/sh4/setup-sh4-202.c
+++ b/arch/sh/kernel/cpu/sh4/setup-sh4-202.c
@@ -10,7 +10,7 @@
10#include <linux/platform_device.h> 10#include <linux/platform_device.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/serial.h> 12#include <linux/serial.h>
13#include <asm/sci.h> 13#include <linux/serial_sci.h>
14 14
15static struct plat_sci_port sci_platform_data[] = { 15static struct plat_sci_port sci_platform_data[] = {
16 { 16 {
diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7750.c b/arch/sh/kernel/cpu/sh4/setup-sh7750.c
index ae3603aca615..ec884039b914 100644
--- a/arch/sh/kernel/cpu/sh4/setup-sh7750.c
+++ b/arch/sh/kernel/cpu/sh4/setup-sh7750.c
@@ -12,7 +12,7 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/serial.h> 13#include <linux/serial.h>
14#include <linux/io.h> 14#include <linux/io.h>
15#include <asm/sci.h> 15#include <linux/serial_sci.h>
16 16
17static struct resource rtc_resources[] = { 17static struct resource rtc_resources[] = {
18 [0] = { 18 [0] = {
diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7760.c b/arch/sh/kernel/cpu/sh4/setup-sh7760.c
index 85f81579b97e..254c5c55ab91 100644
--- a/arch/sh/kernel/cpu/sh4/setup-sh7760.c
+++ b/arch/sh/kernel/cpu/sh4/setup-sh7760.c
@@ -10,7 +10,7 @@
10#include <linux/platform_device.h> 10#include <linux/platform_device.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/serial.h> 12#include <linux/serial.h>
13#include <asm/sci.h> 13#include <linux/serial_sci.h>
14 14
15enum { 15enum {
16 UNUSED = 0, 16 UNUSED = 0,
diff --git a/arch/sh/kernel/cpu/sh4/sq.c b/arch/sh/kernel/cpu/sh4/sq.c
index 8250e017bd4e..9561b02ade0e 100644
--- a/arch/sh/kernel/cpu/sh4/sq.c
+++ b/arch/sh/kernel/cpu/sh4/sq.c
@@ -216,7 +216,7 @@ void sq_unmap(unsigned long vaddr)
216 216
217 if (unlikely(!map)) { 217 if (unlikely(!map)) {
218 printk("%s: bad store queue address 0x%08lx\n", 218 printk("%s: bad store queue address 0x%08lx\n",
219 __FUNCTION__, vaddr); 219 __func__, vaddr);
220 return; 220 return;
221 } 221 }
222 222
@@ -233,7 +233,7 @@ void sq_unmap(unsigned long vaddr)
233 vma = remove_vm_area((void *)(map->sq_addr & PAGE_MASK)); 233 vma = remove_vm_area((void *)(map->sq_addr & PAGE_MASK));
234 if (!vma) { 234 if (!vma) {
235 printk(KERN_ERR "%s: bad address 0x%08lx\n", 235 printk(KERN_ERR "%s: bad address 0x%08lx\n",
236 __FUNCTION__, map->sq_addr); 236 __func__, map->sq_addr);
237 return; 237 return;
238 } 238 }
239 } 239 }
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c
index c0a3f079dfdc..6d4f50cd4aaf 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c
@@ -10,7 +10,7 @@
10#include <linux/platform_device.h> 10#include <linux/platform_device.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/serial.h> 12#include <linux/serial.h>
13#include <asm/sci.h> 13#include <linux/serial_sci.h>
14 14
15static struct plat_sci_port sci_platform_data[] = { 15static struct plat_sci_port sci_platform_data[] = {
16 { 16 {
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c
index 967e8b69a2f8..f26b5cdad0d1 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c
@@ -12,7 +12,7 @@
12#include <linux/platform_device.h> 12#include <linux/platform_device.h>
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/serial.h> 14#include <linux/serial.h>
15#include <asm/sci.h> 15#include <linux/serial_sci.h>
16 16
17static struct plat_sci_port sci_platform_data[] = { 17static struct plat_sci_port sci_platform_data[] = {
18 { 18 {
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
index 73c778d40d13..b98b4bc93ec9 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c
@@ -10,9 +10,9 @@
10#include <linux/platform_device.h> 10#include <linux/platform_device.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/serial.h> 12#include <linux/serial.h>
13#include <linux/serial_sci.h>
13#include <linux/mm.h> 14#include <linux/mm.h>
14#include <asm/mmzone.h> 15#include <asm/mmzone.h>
15#include <asm/sci.h>
16 16
17static struct resource usbf_resources[] = { 17static struct resource usbf_resources[] = {
18 [0] = { 18 [0] = {
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c
index eabd5386812d..07c988dc9de6 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c
@@ -12,7 +12,7 @@
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/serial.h> 13#include <linux/serial.h>
14#include <linux/io.h> 14#include <linux/io.h>
15#include <asm/sci.h> 15#include <linux/serial_sci.h>
16 16
17static struct resource rtc_resources[] = { 17static struct resource rtc_resources[] = {
18 [0] = { 18 [0] = {
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7770.c b/arch/sh/kernel/cpu/sh4a/setup-sh7770.c
index 32f4f59a837b..b9cec48b1808 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7770.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7770.c
@@ -10,7 +10,7 @@
10#include <linux/platform_device.h> 10#include <linux/platform_device.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/serial.h> 12#include <linux/serial.h>
13#include <asm/sci.h> 13#include <linux/serial_sci.h>
14 14
15static struct plat_sci_port sci_platform_data[] = { 15static struct plat_sci_port sci_platform_data[] = {
16 { 16 {
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c
index 293004b526ff..18dbbe23fea1 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c
@@ -11,7 +11,7 @@
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/serial.h> 12#include <linux/serial.h>
13#include <linux/io.h> 13#include <linux/io.h>
14#include <asm/sci.h> 14#include <linux/serial_sci.h>
15 15
16static struct resource rtc_resources[] = { 16static struct resource rtc_resources[] = {
17 [0] = { 17 [0] = {
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c
index 74b60e96cdf4..621e7329ec63 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c
@@ -10,10 +10,10 @@
10#include <linux/platform_device.h> 10#include <linux/platform_device.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/serial.h> 12#include <linux/serial.h>
13#include <linux/serial_sci.h>
13#include <linux/io.h> 14#include <linux/io.h>
14#include <linux/mm.h> 15#include <linux/mm.h>
15#include <asm/mmzone.h> 16#include <asm/mmzone.h>
16#include <asm/sci.h>
17 17
18static struct plat_sci_port sci_platform_data[] = { 18static struct plat_sci_port sci_platform_data[] = {
19 { 19 {
diff --git a/arch/sh/kernel/cpu/sh4a/setup-shx3.c b/arch/sh/kernel/cpu/sh4a/setup-shx3.c
index 4dc958b6b314..bd35f32534b9 100644
--- a/arch/sh/kernel/cpu/sh4a/setup-shx3.c
+++ b/arch/sh/kernel/cpu/sh4a/setup-shx3.c
@@ -10,9 +10,9 @@
10#include <linux/platform_device.h> 10#include <linux/platform_device.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/serial.h> 12#include <linux/serial.h>
13#include <linux/serial_sci.h>
13#include <linux/io.h> 14#include <linux/io.h>
14#include <asm/mmzone.h> 15#include <asm/mmzone.h>
15#include <asm/sci.h>
16 16
17static struct plat_sci_port sci_platform_data[] = { 17static struct plat_sci_port sci_platform_data[] = {
18 { 18 {
diff --git a/arch/sh/kernel/cpu/sh5/unwind.c b/arch/sh/kernel/cpu/sh5/unwind.c
index 119c20afd4e5..b205b25eaf45 100644
--- a/arch/sh/kernel/cpu/sh5/unwind.c
+++ b/arch/sh/kernel/cpu/sh5/unwind.c
@@ -149,7 +149,7 @@ static int lookup_prev_stack_frame(unsigned long fp, unsigned long pc,
149 if (dest >= 63) { 149 if (dest >= 63) {
150 printk(KERN_NOTICE "%s: Invalid dest reg %d " 150 printk(KERN_NOTICE "%s: Invalid dest reg %d "
151 "specified in movi handler. Failed " 151 "specified in movi handler. Failed "
152 "opcode was 0x%lx: ", __FUNCTION__, 152 "opcode was 0x%lx: ", __func__,
153 dest, op); 153 dest, op);
154 154
155 continue; 155 continue;
diff --git a/arch/sh/kernel/io_trapped.c b/arch/sh/kernel/io_trapped.c
index 86a665d92201..39cd7f3aec7b 100644
--- a/arch/sh/kernel/io_trapped.c
+++ b/arch/sh/kernel/io_trapped.c
@@ -32,7 +32,7 @@ EXPORT_SYMBOL_GPL(trapped_mem);
32#endif 32#endif
33static DEFINE_SPINLOCK(trapped_lock); 33static DEFINE_SPINLOCK(trapped_lock);
34 34
35int __init register_trapped_io(struct trapped_io *tiop) 35int register_trapped_io(struct trapped_io *tiop)
36{ 36{
37 struct resource *res; 37 struct resource *res;
38 unsigned long len = 0, flags = 0; 38 unsigned long len = 0, flags = 0;
diff --git a/arch/sh/kernel/sh_ksyms_32.c b/arch/sh/kernel/sh_ksyms_32.c
index e1a6de9088b5..d80de3903271 100644
--- a/arch/sh/kernel/sh_ksyms_32.c
+++ b/arch/sh/kernel/sh_ksyms_32.c
@@ -111,9 +111,9 @@ DECLARE_EXPORT(__movmem_i4_even);
111DECLARE_EXPORT(__movmem_i4_odd); 111DECLARE_EXPORT(__movmem_i4_odd);
112DECLARE_EXPORT(__movmemSI12_i4); 112DECLARE_EXPORT(__movmemSI12_i4);
113 113
114#if (__GNUC_MINOR__ == 2 || defined(__GNUC_STM_RELEASE__)) 114#if (__GNUC_MINOR__ >= 2 || defined(__GNUC_STM_RELEASE__))
115/* 115/*
116 * GCC 4.2 emits these for division, as do GCC 4.1.x versions of the ST 116 * GCC >= 4.2 emits these for division, as do GCC 4.1.x versions of the ST
117 * compiler which include backported patches. 117 * compiler which include backported patches.
118 */ 118 */
119DECLARE_EXPORT(__sdivsi3_i4i); 119DECLARE_EXPORT(__sdivsi3_i4i);
@@ -146,5 +146,6 @@ EXPORT_SYMBOL(csum_partial_copy_generic);
146EXPORT_SYMBOL(csum_ipv6_magic); 146EXPORT_SYMBOL(csum_ipv6_magic);
147#endif 147#endif
148EXPORT_SYMBOL(clear_page); 148EXPORT_SYMBOL(clear_page);
149EXPORT_SYMBOL(copy_page);
149EXPORT_SYMBOL(__clear_user); 150EXPORT_SYMBOL(__clear_user);
150EXPORT_SYMBOL(_ebss); 151EXPORT_SYMBOL(_ebss);
diff --git a/arch/sh/kernel/sh_ksyms_64.c b/arch/sh/kernel/sh_ksyms_64.c
index 8004c38d3d37..dd38a683de65 100644
--- a/arch/sh/kernel/sh_ksyms_64.c
+++ b/arch/sh/kernel/sh_ksyms_64.c
@@ -42,6 +42,7 @@ EXPORT_SYMBOL(__down_trylock);
42EXPORT_SYMBOL(__up); 42EXPORT_SYMBOL(__up);
43EXPORT_SYMBOL(__put_user_asm_l); 43EXPORT_SYMBOL(__put_user_asm_l);
44EXPORT_SYMBOL(__get_user_asm_l); 44EXPORT_SYMBOL(__get_user_asm_l);
45EXPORT_SYMBOL(copy_page);
45EXPORT_SYMBOL(__copy_user); 46EXPORT_SYMBOL(__copy_user);
46EXPORT_SYMBOL(memcpy); 47EXPORT_SYMBOL(memcpy);
47EXPORT_SYMBOL(__udelay); 48EXPORT_SYMBOL(__udelay);
diff --git a/arch/sh/kernel/timers/timer-cmt.c b/arch/sh/kernel/timers/timer-cmt.c
index 71312324b5de..d20c8c375881 100644
--- a/arch/sh/kernel/timers/timer-cmt.c
+++ b/arch/sh/kernel/timers/timer-cmt.c
@@ -77,7 +77,7 @@ static unsigned long cmt_timer_get_offset(void)
77 count -= LATCH; 77 count -= LATCH;
78 } else { 78 } else {
79 printk("%s (): hardware timer problem?\n", 79 printk("%s (): hardware timer problem?\n",
80 __FUNCTION__); 80 __func__);
81 } 81 }
82 } 82 }
83 } else 83 } else
diff --git a/arch/sh/kernel/timers/timer-mtu2.c b/arch/sh/kernel/timers/timer-mtu2.c
index ade9d6eb29f9..fe453c01f9c9 100644
--- a/arch/sh/kernel/timers/timer-mtu2.c
+++ b/arch/sh/kernel/timers/timer-mtu2.c
@@ -76,7 +76,7 @@ static unsigned long mtu2_timer_get_offset(void)
76 count -= LATCH; 76 count -= LATCH;
77 } else { 77 } else {
78 printk("%s (): hardware timer problem?\n", 78 printk("%s (): hardware timer problem?\n",
79 __FUNCTION__); 79 __func__);
80 } 80 }
81 } 81 }
82 } else 82 } else
diff --git a/arch/sh/kernel/topology.c b/arch/sh/kernel/topology.c
index 9b5844a1bdaa..0838942b7083 100644
--- a/arch/sh/kernel/topology.c
+++ b/arch/sh/kernel/topology.c
@@ -29,7 +29,7 @@ static int __init topology_init(void)
29 ret = register_cpu(&per_cpu(cpu_devices, i), i); 29 ret = register_cpu(&per_cpu(cpu_devices, i), i);
30 if (unlikely(ret)) 30 if (unlikely(ret))
31 printk(KERN_WARNING "%s: register_cpu %d failed (%d)\n", 31 printk(KERN_WARNING "%s: register_cpu %d failed (%d)\n",
32 __FUNCTION__, i, ret); 32 __func__, i, ret);
33 } 33 }
34 34
35#if defined(CONFIG_NUMA) && !defined(CONFIG_SMP) 35#if defined(CONFIG_NUMA) && !defined(CONFIG_SMP)
diff --git a/arch/sh/kernel/traps_64.c b/arch/sh/kernel/traps_64.c
index a55ac81d795b..1b58a7499087 100644
--- a/arch/sh/kernel/traps_64.c
+++ b/arch/sh/kernel/traps_64.c
@@ -238,7 +238,7 @@ DO_ERROR(12, SIGILL, "reserved instruction", reserved_inst, current)
238/* Called with interrupts disabled */ 238/* Called with interrupts disabled */
239asmlinkage void do_exception_error(unsigned long ex, struct pt_regs *regs) 239asmlinkage void do_exception_error(unsigned long ex, struct pt_regs *regs)
240{ 240{
241 show_excp_regs(__FUNCTION__, -1, -1, regs); 241 show_excp_regs(__func__, -1, -1, regs);
242 die_if_kernel("exception", regs, ex); 242 die_if_kernel("exception", regs, ex);
243} 243}
244 244
diff --git a/arch/sh/lib64/c-checksum.c b/arch/sh/lib64/c-checksum.c
index 5dfbd8b5e558..5c284e0cff9c 100644
--- a/arch/sh/lib64/c-checksum.c
+++ b/arch/sh/lib64/c-checksum.c
@@ -207,7 +207,7 @@ __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
207 result = (result & 0xffffffff) + (result >> 32); 207 result = (result & 0xffffffff) + (result >> 32);
208 208
209 pr_debug("%s saddr %x daddr %x len %x proto %x sum %x result %08Lx\n", 209 pr_debug("%s saddr %x daddr %x len %x proto %x sum %x result %08Lx\n",
210 __FUNCTION__, saddr, daddr, len, proto, sum, result); 210 __func__, saddr, daddr, len, proto, sum, result);
211 211
212 return (__wsum)result; 212 return (__wsum)result;
213} 213}
diff --git a/arch/sh/lib64/udelay.c b/arch/sh/lib64/udelay.c
index 23c7d17fb9f7..d76bd801194f 100644
--- a/arch/sh/lib64/udelay.c
+++ b/arch/sh/lib64/udelay.c
@@ -21,7 +21,7 @@
21 * a 1GHz box, that's about 2 seconds. 21 * a 1GHz box, that's about 2 seconds.
22 */ 22 */
23 23
24void __delay(int loops) 24void __delay(unsigned long loops)
25{ 25{
26 long long dummy; 26 long long dummy;
27 __asm__ __volatile__("gettr tr0, %1\n\t" 27 __asm__ __volatile__("gettr tr0, %1\n\t"
@@ -33,24 +33,17 @@ void __delay(int loops)
33 :"0"(loops)); 33 :"0"(loops));
34} 34}
35 35
36void __udelay(unsigned long long usecs, unsigned long lpj) 36inline void __const_udelay(unsigned long xloops)
37{ 37{
38 usecs *= (((unsigned long long) HZ << 32) / 1000000) * lpj; 38 __delay(xloops * (HZ * cpu_data[raw_smp_processor_id()].loops_per_jiffy));
39 __delay((long long) usecs >> 32);
40} 39}
41 40
42void __ndelay(unsigned long long nsecs, unsigned long lpj) 41void __udelay(unsigned long usecs)
43{ 42{
44 nsecs *= (((unsigned long long) HZ << 32) / 1000000000) * lpj; 43 __const_udelay(usecs * 0x000010c6); /* 2**32 / 1000000 */
45 __delay((long long) nsecs >> 32);
46} 44}
47 45
48void udelay(unsigned long usecs) 46void __ndelay(unsigned long nsecs)
49{ 47{
50 __udelay(usecs, cpu_data[raw_smp_processor_id()].loops_per_jiffy); 48 __const_udelay(nsecs * 0x00000005);
51}
52
53void ndelay(unsigned long nsecs)
54{
55 __ndelay(nsecs, cpu_data[raw_smp_processor_id()].loops_per_jiffy);
56} 49}
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig
index f549b8cd2501..5fd218430b19 100644
--- a/arch/sh/mm/Kconfig
+++ b/arch/sh/mm/Kconfig
@@ -59,7 +59,7 @@ config 32BIT
59 59
60config PMB 60config PMB
61 bool "Support 32-bit physical addressing through PMB" 61 bool "Support 32-bit physical addressing through PMB"
62 depends on MMU && (CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785) 62 depends on MMU && EXPERIMENTAL && (CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785)
63 select 32BIT 63 select 32BIT
64 default y 64 default y
65 help 65 help
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index e2ed6dd252b9..53dde0607362 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -328,7 +328,7 @@ int arch_add_memory(int nid, u64 start, u64 size)
328 /* We only have ZONE_NORMAL, so this is easy.. */ 328 /* We only have ZONE_NORMAL, so this is easy.. */
329 ret = __add_pages(pgdat->node_zones + ZONE_NORMAL, start_pfn, nr_pages); 329 ret = __add_pages(pgdat->node_zones + ZONE_NORMAL, start_pfn, nr_pages);
330 if (unlikely(ret)) 330 if (unlikely(ret))
331 printk("%s: Failed, __add_pages() == %d\n", __FUNCTION__, ret); 331 printk("%s: Failed, __add_pages() == %d\n", __func__, ret);
332 332
333 return ret; 333 return ret;
334} 334}
diff --git a/arch/sh/mm/ioremap_32.c b/arch/sh/mm/ioremap_32.c
index 0c7b7e33abdc..882a32ebc6b7 100644
--- a/arch/sh/mm/ioremap_32.c
+++ b/arch/sh/mm/ioremap_32.c
@@ -141,7 +141,7 @@ void __iounmap(void __iomem *addr)
141 141
142 p = remove_vm_area((void *)(vaddr & PAGE_MASK)); 142 p = remove_vm_area((void *)(vaddr & PAGE_MASK));
143 if (!p) { 143 if (!p) {
144 printk(KERN_ERR "%s: bad address %p\n", __FUNCTION__, addr); 144 printk(KERN_ERR "%s: bad address %p\n", __func__, addr);
145 return; 145 return;
146 } 146 }
147 147
diff --git a/arch/sh/mm/ioremap_64.c b/arch/sh/mm/ioremap_64.c
index e27d16519235..cea224c3e49b 100644
--- a/arch/sh/mm/ioremap_64.c
+++ b/arch/sh/mm/ioremap_64.c
@@ -178,7 +178,7 @@ static unsigned long shmedia_alloc_io(unsigned long phys, unsigned long size,
178 } else { 178 } else {
179 if (!printed_full) { 179 if (!printed_full) {
180 printk("%s: done with statics, switching to kmalloc\n", 180 printk("%s: done with statics, switching to kmalloc\n",
181 __FUNCTION__); 181 __func__);
182 printed_full = 1; 182 printed_full = 1;
183 } 183 }
184 tlen = strlen(name); 184 tlen = strlen(name);
@@ -352,7 +352,7 @@ void onchip_unmap(unsigned long vaddr)
352 res = shmedia_find_resource(&shmedia_iomap, vaddr); 352 res = shmedia_find_resource(&shmedia_iomap, vaddr);
353 if (!res) { 353 if (!res) {
354 printk(KERN_ERR "%s: Failed to free 0x%08lx\n", 354 printk(KERN_ERR "%s: Failed to free 0x%08lx\n",
355 __FUNCTION__, vaddr); 355 __func__, vaddr);
356 return; 356 return;
357 } 357 }
358 358
diff --git a/arch/sh/mm/pg-sh7705.c b/arch/sh/mm/pg-sh7705.c
index a4b015f95a3a..7f885b7f8aff 100644
--- a/arch/sh/mm/pg-sh7705.c
+++ b/arch/sh/mm/pg-sh7705.c
@@ -14,6 +14,7 @@
14#include <linux/mman.h> 14#include <linux/mman.h>
15#include <linux/mm.h> 15#include <linux/mm.h>
16#include <linux/threads.h> 16#include <linux/threads.h>
17#include <linux/fs.h>
17#include <asm/addrspace.h> 18#include <asm/addrspace.h>
18#include <asm/page.h> 19#include <asm/page.h>
19#include <asm/pgtable.h> 20#include <asm/pgtable.h>
diff --git a/arch/sh/mm/tlbflush_64.c b/arch/sh/mm/tlbflush_64.c
index 2a98c9ec88ff..7876997ba19a 100644
--- a/arch/sh/mm/tlbflush_64.c
+++ b/arch/sh/mm/tlbflush_64.c
@@ -131,7 +131,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
131#ifdef DEBUG_FAULT 131#ifdef DEBUG_FAULT
132 print_task(tsk); 132 print_task(tsk);
133 printk("%s:%d fault, address is 0x%08x PC %016Lx textaccess %d writeaccess %d\n", 133 printk("%s:%d fault, address is 0x%08x PC %016Lx textaccess %d writeaccess %d\n",
134 __FUNCTION__,__LINE__, 134 __func__, __LINE__,
135 address,regs->pc,textaccess,writeaccess); 135 address,regs->pc,textaccess,writeaccess);
136 show_regs(regs); 136 show_regs(regs);
137#endif 137#endif
@@ -145,7 +145,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
145#ifdef DEBUG_FAULT 145#ifdef DEBUG_FAULT
146 print_task(tsk); 146 print_task(tsk);
147 printk("%s:%d fault, address is 0x%08x PC %016Lx textaccess %d writeaccess %d\n", 147 printk("%s:%d fault, address is 0x%08x PC %016Lx textaccess %d writeaccess %d\n",
148 __FUNCTION__,__LINE__, 148 __func__, __LINE__,
149 address,regs->pc,textaccess,writeaccess); 149 address,regs->pc,textaccess,writeaccess);
150 show_regs(regs); 150 show_regs(regs);
151 151
@@ -157,7 +157,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
157#ifdef DEBUG_FAULT 157#ifdef DEBUG_FAULT
158 print_task(tsk); 158 print_task(tsk);
159 printk("%s:%d fault, address is 0x%08x PC %016Lx textaccess %d writeaccess %d\n", 159 printk("%s:%d fault, address is 0x%08x PC %016Lx textaccess %d writeaccess %d\n",
160 __FUNCTION__,__LINE__, 160 __func__, __LINE__,
161 address,regs->pc,textaccess,writeaccess); 161 address,regs->pc,textaccess,writeaccess);
162 show_regs(regs); 162 show_regs(regs);
163#endif 163#endif
diff --git a/arch/sh/tools/mach-types b/arch/sh/tools/mach-types
index 67997af25c0c..d63b93da952d 100644
--- a/arch/sh/tools/mach-types
+++ b/arch/sh/tools/mach-types
@@ -38,7 +38,6 @@ R7780MP SH_R7780MP
38R7785RP SH_R7785RP 38R7785RP SH_R7785RP
39TITAN SH_TITAN 39TITAN SH_TITAN
40SHMIN SH_SHMIN 40SHMIN SH_SHMIN
417710VOIPGW SH_7710VOIPGW
42LBOXRE2 SH_LBOX_RE2 41LBOXRE2 SH_LBOX_RE2
43X3PROTO SH_X3PROTO 42X3PROTO SH_X3PROTO
44MAGICPANELR2 SH_MAGIC_PANEL_R2 43MAGICPANELR2 SH_MAGIC_PANEL_R2
diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile
index e795f282dece..bf1b15d3f6f5 100644
--- a/arch/sparc/kernel/Makefile
+++ b/arch/sparc/kernel/Makefile
@@ -1,4 +1,4 @@
1# $Id: Makefile,v 1.62 2000/12/15 00:41:17 davem Exp $ 1#
2# Makefile for the linux kernel. 2# Makefile for the linux kernel.
3# 3#
4 4
@@ -12,7 +12,8 @@ obj-y := entry.o wof.o wuf.o etrap.o rtrap.o traps.o $(IRQ_OBJS) \
12 sys_sparc.o sunos_asm.o systbls.o \ 12 sys_sparc.o sunos_asm.o systbls.o \
13 time.o windows.o cpu.o devices.o sclow.o \ 13 time.o windows.o cpu.o devices.o sclow.o \
14 tadpole.o tick14.o ptrace.o sys_solaris.o \ 14 tadpole.o tick14.o ptrace.o sys_solaris.o \
15 unaligned.o muldiv.o semaphore.o prom.o of_device.o devres.o 15 unaligned.o una_asm.o muldiv.o semaphore.o \
16 prom.o of_device.o devres.o
16 17
17devres-y = ../../../kernel/irq/devres.o 18devres-y = ../../../kernel/irq/devres.o
18 19
diff --git a/arch/sparc/kernel/cpu.c b/arch/sparc/kernel/cpu.c
index 259a559d4cea..e7a0edfc1a32 100644
--- a/arch/sparc/kernel/cpu.c
+++ b/arch/sparc/kernel/cpu.c
@@ -32,7 +32,7 @@ struct cpu_fp_info {
32/* In order to get the fpu type correct, you need to take the IDPROM's 32/* In order to get the fpu type correct, you need to take the IDPROM's
33 * machine type value into consideration too. I will fix this. 33 * machine type value into consideration too. I will fix this.
34 */ 34 */
35struct cpu_fp_info linux_sparc_fpu[] = { 35static struct cpu_fp_info linux_sparc_fpu[] = {
36 { 0, 0, "Fujitsu MB86910 or Weitek WTL1164/5"}, 36 { 0, 0, "Fujitsu MB86910 or Weitek WTL1164/5"},
37 { 0, 1, "Fujitsu MB86911 or Weitek WTL1164/5 or LSI L64831"}, 37 { 0, 1, "Fujitsu MB86911 or Weitek WTL1164/5 or LSI L64831"},
38 { 0, 2, "LSI Logic L64802 or Texas Instruments ACT8847"}, 38 { 0, 2, "LSI Logic L64802 or Texas Instruments ACT8847"},
@@ -76,7 +76,7 @@ struct cpu_fp_info linux_sparc_fpu[] = {
76 76
77#define NSPARCFPU ARRAY_SIZE(linux_sparc_fpu) 77#define NSPARCFPU ARRAY_SIZE(linux_sparc_fpu)
78 78
79struct cpu_iu_info linux_sparc_chips[] = { 79static struct cpu_iu_info linux_sparc_chips[] = {
80 /* Sun4/100, 4/200, SLC */ 80 /* Sun4/100, 4/200, SLC */
81 { 0, 0, "Fujitsu MB86900/1A or LSI L64831 SparcKIT-40"}, 81 { 0, 0, "Fujitsu MB86900/1A or LSI L64831 SparcKIT-40"},
82 /* borned STP1012PGA */ 82 /* borned STP1012PGA */
diff --git a/arch/sparc/kernel/ebus.c b/arch/sparc/kernel/ebus.c
index d850785b2080..96344ff2bbe1 100644
--- a/arch/sparc/kernel/ebus.c
+++ b/arch/sparc/kernel/ebus.c
@@ -101,7 +101,7 @@ void __init fill_ebus_child(struct device_node *dp,
101 prom_printf("UGH: property for %s was %d, need < %d\n", 101 prom_printf("UGH: property for %s was %d, need < %d\n",
102 dev->prom_node->name, len, 102 dev->prom_node->name, len,
103 dev->parent->num_addrs); 103 dev->parent->num_addrs);
104 panic(__FUNCTION__); 104 panic(__func__);
105 } 105 }
106 106
107 /* XXX resource */ 107 /* XXX resource */
@@ -162,7 +162,7 @@ void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_device *d
162 prom_printf("UGH: proplen for %s was %d, need multiple of %d\n", 162 prom_printf("UGH: proplen for %s was %d, need multiple of %d\n",
163 dev->prom_node->name, len, 163 dev->prom_node->name, len,
164 (int)sizeof(struct linux_prom_registers)); 164 (int)sizeof(struct linux_prom_registers));
165 panic(__FUNCTION__); 165 panic(__func__);
166 } 166 }
167 dev->num_addrs = len / sizeof(struct linux_prom_registers); 167 dev->num_addrs = len / sizeof(struct linux_prom_registers);
168 168
@@ -324,7 +324,7 @@ void __init ebus_init(void)
324 regs = of_get_property(dp, "reg", &len); 324 regs = of_get_property(dp, "reg", &len);
325 if (!regs) { 325 if (!regs) {
326 prom_printf("%s: can't find reg property\n", 326 prom_printf("%s: can't find reg property\n",
327 __FUNCTION__); 327 __func__);
328 prom_halt(); 328 prom_halt();
329 } 329 }
330 nreg = len / sizeof(struct linux_prom_pci_registers); 330 nreg = len / sizeof(struct linux_prom_pci_registers);
diff --git a/arch/sparc/kernel/led.c b/arch/sparc/kernel/led.c
index 313d1620ae8e..59e9344e7a0d 100644
--- a/arch/sparc/kernel/led.c
+++ b/arch/sparc/kernel/led.c
@@ -3,6 +3,9 @@
3#include <linux/init.h> 3#include <linux/init.h>
4#include <linux/proc_fs.h> 4#include <linux/proc_fs.h>
5#include <linux/string.h> 5#include <linux/string.h>
6#include <linux/jiffies.h>
7#include <linux/timer.h>
8#include <linux/uaccess.h>
6 9
7#include <asm/auxio.h> 10#include <asm/auxio.h>
8 11
diff --git a/arch/sparc/kernel/process.c b/arch/sparc/kernel/process.c
index 0bd69d0b5cd7..70c0dd22491d 100644
--- a/arch/sparc/kernel/process.c
+++ b/arch/sparc/kernel/process.c
@@ -139,8 +139,6 @@ void cpu_idle(void)
139 139
140#endif 140#endif
141 141
142extern char reboot_command [];
143
144/* XXX cli/sti -> local_irq_xxx here, check this works once SMP is fixed. */ 142/* XXX cli/sti -> local_irq_xxx here, check this works once SMP is fixed. */
145void machine_halt(void) 143void machine_halt(void)
146{ 144{
diff --git a/arch/sparc/kernel/una_asm.S b/arch/sparc/kernel/una_asm.S
new file mode 100644
index 000000000000..8cc03458eb7e
--- /dev/null
+++ b/arch/sparc/kernel/una_asm.S
@@ -0,0 +1,153 @@
1/* una_asm.S: Kernel unaligned trap assembler helpers.
2 *
3 * Copyright (C) 1996,2005,2008 David S. Miller (davem@davemloft.net)
4 * Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
5 */
6
7#include <linux/errno.h>
8
9 .text
10
11retl_efault:
12 retl
13 mov -EFAULT, %o0
14
15 /* int __do_int_store(unsigned long *dst_addr, int size,
16 * unsigned long *src_val)
17 *
18 * %o0 = dest_addr
19 * %o1 = size
20 * %o2 = src_val
21 *
22 * Return '0' on success, -EFAULT on failure.
23 */
24 .globl __do_int_store
25__do_int_store:
26 ld [%o2], %g1
27 cmp %1, 2
28 be 2f
29 cmp %1, 4
30 be 1f
31 srl %g1, 24, %g2
32 srl %g1, 16, %g7
334: stb %g2, [%o0]
34 srl %g1, 8, %g2
355: stb %g7, [%o0 + 1]
36 ld [%o2 + 4], %g7
376: stb %g2, [%o0 + 2]
38 srl %g7, 24, %g2
397: stb %g1, [%o0 + 3]
40 srl %g7, 16, %g1
418: stb %g2, [%o0 + 4]
42 srl %g7, 8, %g2
439: stb %g1, [%o0 + 5]
4410: stb %g2, [%o0 + 6]
45 b 0f
4611: stb %g7, [%o0 + 7]
471: srl %g1, 16, %g7
4812: stb %g2, [%o0]
49 srl %g1, 8, %g2
5013: stb %g7, [%o0 + 1]
5114: stb %g2, [%o0 + 2]
52 b 0f
5315: stb %g1, [%o0 + 3]
542: srl %g1, 8, %g2
5516: stb %g2, [%o0]
5617: stb %g1, [%o0 + 1]
570: retl
58 mov 0, %o0
59
60 .section __ex_table,#alloc
61 .word 4b, retl_efault
62 .word 5b, retl_efault
63 .word 6b, retl_efault
64 .word 7b, retl_efault
65 .word 8b, retl_efault
66 .word 9b, retl_efault
67 .word 10b, retl_efault
68 .word 11b, retl_efault
69 .word 12b, retl_efault
70 .word 13b, retl_efault
71 .word 14b, retl_efault
72 .word 15b, retl_efault
73 .word 16b, retl_efault
74 .word 17b, retl_efault
75 .previous
76
77 /* int do_int_load(unsigned long *dest_reg, int size,
78 * unsigned long *saddr, int is_signed)
79 *
80 * %o0 = dest_reg
81 * %o1 = size
82 * %o2 = saddr
83 * %o3 = is_signed
84 *
85 * Return '0' on success, -EFAULT on failure.
86 */
87 .globl do_int_load
88do_int_load:
89 cmp %o1, 8
90 be 9f
91 cmp %o1, 4
92 be 6f
934: ldub [%o2], %g1
945: ldub [%o2 + 1], %g2
95 sll %g1, 8, %g1
96 tst %o3
97 be 3f
98 or %g1, %g2, %g1
99 sll %g1, 16, %g1
100 sra %g1, 16, %g1
1013: b 0f
102 st %g1, [%o0]
1036: ldub [%o2 + 1], %g2
104 sll %g1, 24, %g1
1057: ldub [%o2 + 2], %g7
106 sll %g2, 16, %g2
1078: ldub [%o2 + 3], %g3
108 sll %g7, 8, %g7
109 or %g3, %g2, %g3
110 or %g7, %g3, %g7
111 or %g1, %g7, %g1
112 b 0f
113 st %g1, [%o0]
1149: ldub [%o2], %g1
11510: ldub [%o2 + 1], %g2
116 sll %g1, 24, %g1
11711: ldub [%o2 + 2], %g7
118 sll %g2, 16, %g2
11912: ldub [%o2 + 3], %g3
120 sll %g7, 8, %g7
121 or %g1, %g2, %g1
122 or %g7, %g3, %g7
123 or %g1, %g7, %g7
12413: ldub [%o2 + 4], %g1
125 st %g7, [%o0]
12614: ldub [%o2 + 5], %g2
127 sll %g1, 24, %g1
12815: ldub [%o2 + 6], %g7
129 sll %g2, 16, %g2
13016: ldub [%o2 + 7], %g3
131 sll %g7, 8, %g7
132 or %g1, %g2, %g1
133 or %g7, %g3, %g7
134 or %g1, %g7, %g7
135 st %g7, [%o0 + 4]
1360: retl
137 mov 0, %o0
138
139 .section __ex_table,#alloc
140 .word 4b, retl_efault
141 .word 5b, retl_efault
142 .word 6b, retl_efault
143 .word 7b, retl_efault
144 .word 8b, retl_efault
145 .word 9b, retl_efault
146 .word 10b, retl_efault
147 .word 11b, retl_efault
148 .word 12b, retl_efault
149 .word 13b, retl_efault
150 .word 14b, retl_efault
151 .word 15b, retl_efault
152 .word 16b, retl_efault
153 .previous
diff --git a/arch/sparc/kernel/unaligned.c b/arch/sparc/kernel/unaligned.c
index a6330fbc9dd9..33857be16661 100644
--- a/arch/sparc/kernel/unaligned.c
+++ b/arch/sparc/kernel/unaligned.c
@@ -175,157 +175,31 @@ static void unaligned_panic(char *str)
175 panic(str); 175 panic(str);
176} 176}
177 177
178#define do_integer_load(dest_reg, size, saddr, is_signed, errh) ({ \ 178/* una_asm.S */
179__asm__ __volatile__ ( \ 179extern int do_int_load(unsigned long *dest_reg, int size,
180 "cmp %1, 8\n\t" \ 180 unsigned long *saddr, int is_signed);
181 "be 9f\n\t" \ 181extern int __do_int_store(unsigned long *dst_addr, int size,
182 " cmp %1, 4\n\t" \ 182 unsigned long *src_val);
183 "be 6f\n" \ 183
184"4:\t" " ldub [%2], %%l1\n" \ 184static int do_int_store(int reg_num, int size, unsigned long *dst_addr,
185"5:\t" "ldub [%2 + 1], %%l2\n\t" \ 185 struct pt_regs *regs)
186 "sll %%l1, 8, %%l1\n\t" \ 186{
187 "tst %3\n\t" \ 187 unsigned long zero[2] = { 0, 0 };
188 "be 3f\n\t" \ 188 unsigned long *src_val;
189 " add %%l1, %%l2, %%l1\n\t" \ 189
190 "sll %%l1, 16, %%l1\n\t" \ 190 if (reg_num)
191 "sra %%l1, 16, %%l1\n" \ 191 src_val = fetch_reg_addr(reg_num, regs);
192"3:\t" "b 0f\n\t" \ 192 else {
193 " st %%l1, [%0]\n" \ 193 src_val = &zero[0];
194"6:\t" "ldub [%2 + 1], %%l2\n\t" \ 194 if (size == 8)
195 "sll %%l1, 24, %%l1\n" \ 195 zero[1] = fetch_reg(1, regs);
196"7:\t" "ldub [%2 + 2], %%g7\n\t" \ 196 }
197 "sll %%l2, 16, %%l2\n" \ 197 return __do_int_store(dst_addr, size, src_val);
198"8:\t" "ldub [%2 + 3], %%g1\n\t" \ 198}
199 "sll %%g7, 8, %%g7\n\t" \
200 "or %%l1, %%l2, %%l1\n\t" \
201 "or %%g7, %%g1, %%g7\n\t" \
202 "or %%l1, %%g7, %%l1\n\t" \
203 "b 0f\n\t" \
204 " st %%l1, [%0]\n" \
205"9:\t" "ldub [%2], %%l1\n" \
206"10:\t" "ldub [%2 + 1], %%l2\n\t" \
207 "sll %%l1, 24, %%l1\n" \
208"11:\t" "ldub [%2 + 2], %%g7\n\t" \
209 "sll %%l2, 16, %%l2\n" \
210"12:\t" "ldub [%2 + 3], %%g1\n\t" \
211 "sll %%g7, 8, %%g7\n\t" \
212 "or %%l1, %%l2, %%l1\n\t" \
213 "or %%g7, %%g1, %%g7\n\t" \
214 "or %%l1, %%g7, %%g7\n" \
215"13:\t" "ldub [%2 + 4], %%l1\n\t" \
216 "st %%g7, [%0]\n" \
217"14:\t" "ldub [%2 + 5], %%l2\n\t" \
218 "sll %%l1, 24, %%l1\n" \
219"15:\t" "ldub [%2 + 6], %%g7\n\t" \
220 "sll %%l2, 16, %%l2\n" \
221"16:\t" "ldub [%2 + 7], %%g1\n\t" \
222 "sll %%g7, 8, %%g7\n\t" \
223 "or %%l1, %%l2, %%l1\n\t" \
224 "or %%g7, %%g1, %%g7\n\t" \
225 "or %%l1, %%g7, %%g7\n\t" \
226 "st %%g7, [%0 + 4]\n" \
227"0:\n\n\t" \
228 ".section __ex_table,#alloc\n\t" \
229 ".word 4b, " #errh "\n\t" \
230 ".word 5b, " #errh "\n\t" \
231 ".word 6b, " #errh "\n\t" \
232 ".word 7b, " #errh "\n\t" \
233 ".word 8b, " #errh "\n\t" \
234 ".word 9b, " #errh "\n\t" \
235 ".word 10b, " #errh "\n\t" \
236 ".word 11b, " #errh "\n\t" \
237 ".word 12b, " #errh "\n\t" \
238 ".word 13b, " #errh "\n\t" \
239 ".word 14b, " #errh "\n\t" \
240 ".word 15b, " #errh "\n\t" \
241 ".word 16b, " #errh "\n\n\t" \
242 ".previous\n\t" \
243 : : "r" (dest_reg), "r" (size), "r" (saddr), "r" (is_signed) \
244 : "l1", "l2", "g7", "g1", "cc"); \
245})
246
247#define store_common(dst_addr, size, src_val, errh) ({ \
248__asm__ __volatile__ ( \
249 "ld [%2], %%l1\n" \
250 "cmp %1, 2\n\t" \
251 "be 2f\n\t" \
252 " cmp %1, 4\n\t" \
253 "be 1f\n\t" \
254 " srl %%l1, 24, %%l2\n\t" \
255 "srl %%l1, 16, %%g7\n" \
256"4:\t" "stb %%l2, [%0]\n\t" \
257 "srl %%l1, 8, %%l2\n" \
258"5:\t" "stb %%g7, [%0 + 1]\n\t" \
259 "ld [%2 + 4], %%g7\n" \
260"6:\t" "stb %%l2, [%0 + 2]\n\t" \
261 "srl %%g7, 24, %%l2\n" \
262"7:\t" "stb %%l1, [%0 + 3]\n\t" \
263 "srl %%g7, 16, %%l1\n" \
264"8:\t" "stb %%l2, [%0 + 4]\n\t" \
265 "srl %%g7, 8, %%l2\n" \
266"9:\t" "stb %%l1, [%0 + 5]\n" \
267"10:\t" "stb %%l2, [%0 + 6]\n\t" \
268 "b 0f\n" \
269"11:\t" " stb %%g7, [%0 + 7]\n" \
270"1:\t" "srl %%l1, 16, %%g7\n" \
271"12:\t" "stb %%l2, [%0]\n\t" \
272 "srl %%l1, 8, %%l2\n" \
273"13:\t" "stb %%g7, [%0 + 1]\n" \
274"14:\t" "stb %%l2, [%0 + 2]\n\t" \
275 "b 0f\n" \
276"15:\t" " stb %%l1, [%0 + 3]\n" \
277"2:\t" "srl %%l1, 8, %%l2\n" \
278"16:\t" "stb %%l2, [%0]\n" \
279"17:\t" "stb %%l1, [%0 + 1]\n" \
280"0:\n\n\t" \
281 ".section __ex_table,#alloc\n\t" \
282 ".word 4b, " #errh "\n\t" \
283 ".word 5b, " #errh "\n\t" \
284 ".word 6b, " #errh "\n\t" \
285 ".word 7b, " #errh "\n\t" \
286 ".word 8b, " #errh "\n\t" \
287 ".word 9b, " #errh "\n\t" \
288 ".word 10b, " #errh "\n\t" \
289 ".word 11b, " #errh "\n\t" \
290 ".word 12b, " #errh "\n\t" \
291 ".word 13b, " #errh "\n\t" \
292 ".word 14b, " #errh "\n\t" \
293 ".word 15b, " #errh "\n\t" \
294 ".word 16b, " #errh "\n\t" \
295 ".word 17b, " #errh "\n\n\t" \
296 ".previous\n\t" \
297 : : "r" (dst_addr), "r" (size), "r" (src_val) \
298 : "l1", "l2", "g7", "g1", "cc"); \
299})
300
301#define do_integer_store(reg_num, size, dst_addr, regs, errh) ({ \
302 unsigned long *src_val; \
303 static unsigned long zero[2] = { 0, }; \
304 \
305 if (reg_num) src_val = fetch_reg_addr(reg_num, regs); \
306 else { \
307 src_val = &zero[0]; \
308 if (size == 8) \
309 zero[1] = fetch_reg(1, regs); \
310 } \
311 store_common(dst_addr, size, src_val, errh); \
312})
313 199
314extern void smp_capture(void); 200extern void smp_capture(void);
315extern void smp_release(void); 201extern void smp_release(void);
316 202
317#define do_atomic(srcdest_reg, mem, errh) ({ \
318 unsigned long flags, tmp; \
319 \
320 smp_capture(); \
321 local_irq_save(flags); \
322 tmp = *srcdest_reg; \
323 do_integer_load(srcdest_reg, 4, mem, 0, errh); \
324 store_common(mem, 4, &tmp, errh); \
325 local_irq_restore(flags); \
326 smp_release(); \
327})
328
329static inline void advance(struct pt_regs *regs) 203static inline void advance(struct pt_regs *regs)
330{ 204{
331 regs->pc = regs->npc; 205 regs->pc = regs->npc;
@@ -342,9 +216,7 @@ static inline int ok_for_kernel(unsigned int insn)
342 return !floating_point_load_or_store_p(insn); 216 return !floating_point_load_or_store_p(insn);
343} 217}
344 218
345void kernel_mna_trap_fault(struct pt_regs *regs, unsigned int insn) __asm__ ("kernel_mna_trap_fault"); 219static void kernel_mna_trap_fault(struct pt_regs *regs, unsigned int insn)
346
347void kernel_mna_trap_fault(struct pt_regs *regs, unsigned int insn)
348{ 220{
349 unsigned long g2 = regs->u_regs [UREG_G2]; 221 unsigned long g2 = regs->u_regs [UREG_G2];
350 unsigned long fixup = search_extables_range(regs->pc, &g2); 222 unsigned long fixup = search_extables_range(regs->pc, &g2);
@@ -379,48 +251,34 @@ asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn)
379 printk("Unsupported unaligned load/store trap for kernel at <%08lx>.\n", 251 printk("Unsupported unaligned load/store trap for kernel at <%08lx>.\n",
380 regs->pc); 252 regs->pc);
381 unaligned_panic("Wheee. Kernel does fpu/atomic unaligned load/store."); 253 unaligned_panic("Wheee. Kernel does fpu/atomic unaligned load/store.");
382
383 __asm__ __volatile__ ("\n"
384"kernel_unaligned_trap_fault:\n\t"
385 "mov %0, %%o0\n\t"
386 "call kernel_mna_trap_fault\n\t"
387 " mov %1, %%o1\n\t"
388 :
389 : "r" (regs), "r" (insn)
390 : "o0", "o1", "o2", "o3", "o4", "o5", "o7",
391 "g1", "g2", "g3", "g4", "g5", "g7", "cc");
392 } else { 254 } else {
393 unsigned long addr = compute_effective_address(regs, insn); 255 unsigned long addr = compute_effective_address(regs, insn);
256 int err;
394 257
395#ifdef DEBUG_MNA 258#ifdef DEBUG_MNA
396 printk("KMNA: pc=%08lx [dir=%s addr=%08lx size=%d] retpc[%08lx]\n", 259 printk("KMNA: pc=%08lx [dir=%s addr=%08lx size=%d] retpc[%08lx]\n",
397 regs->pc, dirstrings[dir], addr, size, regs->u_regs[UREG_RETPC]); 260 regs->pc, dirstrings[dir], addr, size, regs->u_regs[UREG_RETPC]);
398#endif 261#endif
399 switch(dir) { 262 switch (dir) {
400 case load: 263 case load:
401 do_integer_load(fetch_reg_addr(((insn>>25)&0x1f), regs), 264 err = do_int_load(fetch_reg_addr(((insn>>25)&0x1f),
402 size, (unsigned long *) addr, 265 regs),
403 decode_signedness(insn), 266 size, (unsigned long *) addr,
404 kernel_unaligned_trap_fault); 267 decode_signedness(insn));
405 break; 268 break;
406 269
407 case store: 270 case store:
408 do_integer_store(((insn>>25)&0x1f), size, 271 err = do_int_store(((insn>>25)&0x1f), size,
409 (unsigned long *) addr, regs, 272 (unsigned long *) addr, regs);
410 kernel_unaligned_trap_fault);
411 break; 273 break;
412#if 0 /* unsupported */
413 case both:
414 do_atomic(fetch_reg_addr(((insn>>25)&0x1f), regs),
415 (unsigned long *) addr,
416 kernel_unaligned_trap_fault);
417 break;
418#endif
419 default: 274 default:
420 panic("Impossible kernel unaligned trap."); 275 panic("Impossible kernel unaligned trap.");
421 /* Not reached... */ 276 /* Not reached... */
422 } 277 }
423 advance(regs); 278 if (err)
279 kernel_mna_trap_fault(regs, insn);
280 else
281 advance(regs);
424 } 282 }
425} 283}
426 284
@@ -459,9 +317,7 @@ static inline int ok_for_user(struct pt_regs *regs, unsigned int insn,
459 return 0; 317 return 0;
460} 318}
461 319
462void user_mna_trap_fault(struct pt_regs *regs, unsigned int insn) __asm__ ("user_mna_trap_fault"); 320static void user_mna_trap_fault(struct pt_regs *regs, unsigned int insn)
463
464void user_mna_trap_fault(struct pt_regs *regs, unsigned int insn)
465{ 321{
466 siginfo_t info; 322 siginfo_t info;
467 323
@@ -485,7 +341,7 @@ asmlinkage void user_unaligned_trap(struct pt_regs *regs, unsigned int insn)
485 if(!ok_for_user(regs, insn, dir)) { 341 if(!ok_for_user(regs, insn, dir)) {
486 goto kill_user; 342 goto kill_user;
487 } else { 343 } else {
488 int size = decode_access_size(insn); 344 int err, size = decode_access_size(insn);
489 unsigned long addr; 345 unsigned long addr;
490 346
491 if(floating_point_load_or_store_p(insn)) { 347 if(floating_point_load_or_store_p(insn)) {
@@ -496,48 +352,34 @@ asmlinkage void user_unaligned_trap(struct pt_regs *regs, unsigned int insn)
496 addr = compute_effective_address(regs, insn); 352 addr = compute_effective_address(regs, insn);
497 switch(dir) { 353 switch(dir) {
498 case load: 354 case load:
499 do_integer_load(fetch_reg_addr(((insn>>25)&0x1f), regs), 355 err = do_int_load(fetch_reg_addr(((insn>>25)&0x1f),
500 size, (unsigned long *) addr, 356 regs),
501 decode_signedness(insn), 357 size, (unsigned long *) addr,
502 user_unaligned_trap_fault); 358 decode_signedness(insn));
503 break; 359 break;
504 360
505 case store: 361 case store:
506 do_integer_store(((insn>>25)&0x1f), size, 362 err = do_int_store(((insn>>25)&0x1f), size,
507 (unsigned long *) addr, regs, 363 (unsigned long *) addr, regs);
508 user_unaligned_trap_fault);
509 break; 364 break;
510 365
511 case both: 366 case both:
512#if 0 /* unsupported */
513 do_atomic(fetch_reg_addr(((insn>>25)&0x1f), regs),
514 (unsigned long *) addr,
515 user_unaligned_trap_fault);
516#else
517 /* 367 /*
518 * This was supported in 2.4. However, we question 368 * This was supported in 2.4. However, we question
519 * the value of SWAP instruction across word boundaries. 369 * the value of SWAP instruction across word boundaries.
520 */ 370 */
521 printk("Unaligned SWAP unsupported.\n"); 371 printk("Unaligned SWAP unsupported.\n");
522 goto kill_user; 372 err = -EFAULT;
523#endif
524 break; 373 break;
525 374
526 default: 375 default:
527 unaligned_panic("Impossible user unaligned trap."); 376 unaligned_panic("Impossible user unaligned trap.");
528
529 __asm__ __volatile__ ("\n"
530"user_unaligned_trap_fault:\n\t"
531 "mov %0, %%o0\n\t"
532 "call user_mna_trap_fault\n\t"
533 " mov %1, %%o1\n\t"
534 :
535 : "r" (regs), "r" (insn)
536 : "o0", "o1", "o2", "o3", "o4", "o5", "o7",
537 "g1", "g2", "g3", "g4", "g5", "g7", "cc");
538 goto out; 377 goto out;
539 } 378 }
540 advance(regs); 379 if (err)
380 goto kill_user;
381 else
382 advance(regs);
541 goto out; 383 goto out;
542 } 384 }
543 385
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
index b18d24d249fa..2667a9dee11d 100644
--- a/arch/sparc64/Kconfig
+++ b/arch/sparc64/Kconfig
@@ -10,6 +10,7 @@ config SPARC
10 default y 10 default y
11 select HAVE_OPROFILE 11 select HAVE_OPROFILE
12 select HAVE_KPROBES 12 select HAVE_KPROBES
13 select HAVE_KRETPROBES
13 14
14config SPARC64 15config SPARC64
15 bool 16 bool
diff --git a/arch/sparc64/kernel/cpu.c b/arch/sparc64/kernel/cpu.c
index e43db73f2b91..dd5d28e3d798 100644
--- a/arch/sparc64/kernel/cpu.c
+++ b/arch/sparc64/kernel/cpu.c
@@ -30,7 +30,7 @@ struct cpu_fp_info {
30 char* fp_name; 30 char* fp_name;
31}; 31};
32 32
33struct cpu_fp_info linux_sparc_fpu[] = { 33static struct cpu_fp_info linux_sparc_fpu[] = {
34 { 0x17, 0x10, 0, "UltraSparc I integrated FPU"}, 34 { 0x17, 0x10, 0, "UltraSparc I integrated FPU"},
35 { 0x22, 0x10, 0, "UltraSparc I integrated FPU"}, 35 { 0x22, 0x10, 0, "UltraSparc I integrated FPU"},
36 { 0x17, 0x11, 0, "UltraSparc II integrated FPU"}, 36 { 0x17, 0x11, 0, "UltraSparc II integrated FPU"},
@@ -46,7 +46,7 @@ struct cpu_fp_info linux_sparc_fpu[] = {
46 46
47#define NSPARCFPU ARRAY_SIZE(linux_sparc_fpu) 47#define NSPARCFPU ARRAY_SIZE(linux_sparc_fpu)
48 48
49struct cpu_iu_info linux_sparc_chips[] = { 49static struct cpu_iu_info linux_sparc_chips[] = {
50 { 0x17, 0x10, "TI UltraSparc I (SpitFire)"}, 50 { 0x17, 0x10, "TI UltraSparc I (SpitFire)"},
51 { 0x22, 0x10, "TI UltraSparc I (SpitFire)"}, 51 { 0x22, 0x10, "TI UltraSparc I (SpitFire)"},
52 { 0x17, 0x11, "TI UltraSparc II (BlackBird)"}, 52 { 0x17, 0x11, "TI UltraSparc II (BlackBird)"},
diff --git a/arch/sparc64/kernel/ds.c b/arch/sparc64/kernel/ds.c
index eeb5a2fc788d..bd76482077be 100644
--- a/arch/sparc64/kernel/ds.c
+++ b/arch/sparc64/kernel/ds.c
@@ -525,10 +525,10 @@ static void dr_cpu_mark(struct ds_data *resp, int cpu, int ncpus,
525 } 525 }
526} 526}
527 527
528static int dr_cpu_configure(struct ds_info *dp, 528static int __cpuinit dr_cpu_configure(struct ds_info *dp,
529 struct ds_cap_state *cp, 529 struct ds_cap_state *cp,
530 u64 req_num, 530 u64 req_num,
531 cpumask_t *mask) 531 cpumask_t *mask)
532{ 532{
533 struct ds_data *resp; 533 struct ds_data *resp;
534 int resp_len, ncpus, cpu; 534 int resp_len, ncpus, cpu;
@@ -623,9 +623,9 @@ static int dr_cpu_unconfigure(struct ds_info *dp,
623 return 0; 623 return 0;
624} 624}
625 625
626static void dr_cpu_data(struct ds_info *dp, 626static void __cpuinit dr_cpu_data(struct ds_info *dp,
627 struct ds_cap_state *cp, 627 struct ds_cap_state *cp,
628 void *buf, int len) 628 void *buf, int len)
629{ 629{
630 struct ds_data *data = buf; 630 struct ds_data *data = buf;
631 struct dr_cpu_tag *tag = (struct dr_cpu_tag *) (data + 1); 631 struct dr_cpu_tag *tag = (struct dr_cpu_tag *) (data + 1);
diff --git a/arch/sparc64/kernel/mdesc.c b/arch/sparc64/kernel/mdesc.c
index 856659bb1311..910083589569 100644
--- a/arch/sparc64/kernel/mdesc.c
+++ b/arch/sparc64/kernel/mdesc.c
@@ -758,7 +758,7 @@ static void __devinit get_mondo_data(struct mdesc_handle *hp, u64 mp,
758 get_one_mondo_bits(val, &tb->nonresum_qmask, 2); 758 get_one_mondo_bits(val, &tb->nonresum_qmask, 2);
759} 759}
760 760
761void __devinit mdesc_fill_in_cpu_data(cpumask_t mask) 761void __cpuinit mdesc_fill_in_cpu_data(cpumask_t mask)
762{ 762{
763 struct mdesc_handle *hp = mdesc_grab(); 763 struct mdesc_handle *hp = mdesc_grab();
764 u64 mp; 764 u64 mp;
diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c
index 2aafce7dfc0e..e116e38b160e 100644
--- a/arch/sparc64/kernel/process.c
+++ b/arch/sparc64/kernel/process.c
@@ -114,8 +114,6 @@ void cpu_idle(void)
114 } 114 }
115} 115}
116 116
117extern char reboot_command [];
118
119void machine_halt(void) 117void machine_halt(void)
120{ 118{
121 sstate_halt(); 119 sstate_halt();
diff --git a/arch/sparc64/mm/fault.c b/arch/sparc64/mm/fault.c
index e2027f27c0fe..2650d0d33ac2 100644
--- a/arch/sparc64/mm/fault.c
+++ b/arch/sparc64/mm/fault.c
@@ -244,16 +244,8 @@ static void do_kernel_fault(struct pt_regs *regs, int si_code, int fault_code,
244 if (regs->tstate & TSTATE_PRIV) { 244 if (regs->tstate & TSTATE_PRIV) {
245 const struct exception_table_entry *entry; 245 const struct exception_table_entry *entry;
246 246
247 if (asi == ASI_P && (insn & 0xc0800000) == 0xc0800000) { 247 entry = search_exception_tables(regs->tpc);
248 if (insn & 0x2000) 248 if (entry) {
249 asi = (regs->tstate >> 24);
250 else
251 asi = (insn >> 5);
252 }
253
254 /* Look in asi.h: All _S asis have LS bit set */
255 if ((asi & 0x1) &&
256 (entry = search_exception_tables(regs->tpc))) {
257 regs->tpc = entry->fixup; 249 regs->tpc = entry->fixup;
258 regs->tnpc = regs->tpc + 4; 250 regs->tnpc = regs->tpc + 4;
259 return; 251 return;
@@ -294,7 +286,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
294 unsigned long tpc = regs->tpc; 286 unsigned long tpc = regs->tpc;
295 287
296 /* Sanity check the PC. */ 288 /* Sanity check the PC. */
297 if ((tpc >= KERNBASE && tpc < (unsigned long) _etext) || 289 if ((tpc >= KERNBASE && tpc < (unsigned long) __init_end) ||
298 (tpc >= MODULES_VADDR && tpc < MODULES_END)) { 290 (tpc >= MODULES_VADDR && tpc < MODULES_END)) {
299 /* Valid, no problems... */ 291 /* Valid, no problems... */
300 } else { 292 } else {
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c
index 9e6bca266d88..b5c30416fdac 100644
--- a/arch/sparc64/mm/init.c
+++ b/arch/sparc64/mm/init.c
@@ -1010,7 +1010,8 @@ static struct linux_prom64_registers pall[MAX_BANKS] __initdata;
1010static int pall_ents __initdata; 1010static int pall_ents __initdata;
1011 1011
1012#ifdef CONFIG_DEBUG_PAGEALLOC 1012#ifdef CONFIG_DEBUG_PAGEALLOC
1013static unsigned long kernel_map_range(unsigned long pstart, unsigned long pend, pgprot_t prot) 1013static unsigned long __ref kernel_map_range(unsigned long pstart,
1014 unsigned long pend, pgprot_t prot)
1014{ 1015{
1015 unsigned long vstart = PAGE_OFFSET + pstart; 1016 unsigned long vstart = PAGE_OFFSET + pstart;
1016 unsigned long vend = PAGE_OFFSET + pend; 1017 unsigned long vend = PAGE_OFFSET + pend;
diff --git a/arch/sparc64/solaris/conv.h b/arch/sparc64/solaris/conv.h
index 5faf59a9de39..50e58232cf2b 100644
--- a/arch/sparc64/solaris/conv.h
+++ b/arch/sparc64/solaris/conv.h
@@ -28,7 +28,7 @@ extern unsigned sunos_sys_table[];
28#define SUNOS(x) ((long)sunos_sys_table[x]) 28#define SUNOS(x) ((long)sunos_sys_table[x])
29 29
30#ifdef DEBUG_SOLARIS 30#ifdef DEBUG_SOLARIS
31#define SOLD(s) printk("%s,%d,%s(): %s\n",__FILE__,__LINE__,__FUNCTION__,(s)) 31#define SOLD(s) printk("%s,%d,%s(): %s\n",__FILE__,__LINE__,__func__,(s))
32#define SOLDD(s) printk("solaris: "); printk s 32#define SOLDD(s) printk("solaris: "); printk s
33#else 33#else
34#define SOLD(s) 34#define SOLD(s)
diff --git a/arch/sparc64/solaris/timod.c b/arch/sparc64/solaris/timod.c
index f53123c02c2b..15234fcd191a 100644
--- a/arch/sparc64/solaris/timod.c
+++ b/arch/sparc64/solaris/timod.c
@@ -81,7 +81,7 @@ void mykfree(void *p)
81#define MKCTL_MAGIC 0xDEADBABEBADC0DEDL 81#define MKCTL_MAGIC 0xDEADBABEBADC0DEDL
82#define PUT_MAGIC(a,m) do{(*(u64*)(a))=(m);}while(0) 82#define PUT_MAGIC(a,m) do{(*(u64*)(a))=(m);}while(0)
83#define SCHECK_MAGIC(a,m) do{if((*(u64*)(a))!=(m))printk("%s,%u,%s(): magic %08x at %p corrupted!\n",\ 83#define SCHECK_MAGIC(a,m) do{if((*(u64*)(a))!=(m))printk("%s,%u,%s(): magic %08x at %p corrupted!\n",\
84 __FILE__,__LINE__,__FUNCTION__,(m),(a));}while(0) 84 __FILE__,__LINE__,__func__,(m),(a));}while(0)
85#define BUF_OFFSET sizeof(u64) 85#define BUF_OFFSET sizeof(u64)
86#define MKCTL_TRAILER sizeof(u64) 86#define MKCTL_TRAILER sizeof(u64)
87 87
diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c
index fc50d2f959d1..e8cb9ff183e9 100644
--- a/arch/um/kernel/process.c
+++ b/arch/um/kernel/process.c
@@ -128,8 +128,6 @@ void *get_current(void)
128 return current; 128 return current;
129} 129}
130 130
131extern void schedule_tail(struct task_struct *prev);
132
133/* 131/*
134 * This is called magically, by its address being stuffed in a jmp_buf 132 * This is called magically, by its address being stuffed in a jmp_buf
135 * and being longjmp-d to. 133 * and being longjmp-d to.
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 4a88cf7695b4..237fc128143d 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -21,7 +21,8 @@ config X86
21 select HAVE_IDE 21 select HAVE_IDE
22 select HAVE_OPROFILE 22 select HAVE_OPROFILE
23 select HAVE_KPROBES 23 select HAVE_KPROBES
24 select HAVE_KVM 24 select HAVE_KRETPROBES
25 select HAVE_KVM if ((X86_32 && !X86_VOYAGER && !X86_VISWS && !X86_NUMAQ) || X86_64)
25 26
26 27
27config GENERIC_LOCKBREAK 28config GENERIC_LOCKBREAK
@@ -65,9 +66,6 @@ config MMU
65config ZONE_DMA 66config ZONE_DMA
66 def_bool y 67 def_bool y
67 68
68config QUICKLIST
69 def_bool X86_32
70
71config SBUS 69config SBUS
72 bool 70 bool
73 71
diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu
index e09a6b73a1aa..9304bfba7d45 100644
--- a/arch/x86/Kconfig.cpu
+++ b/arch/x86/Kconfig.cpu
@@ -377,6 +377,19 @@ config X86_OOSTORE
377 def_bool y 377 def_bool y
378 depends on (MWINCHIP3D || MWINCHIP2 || MWINCHIPC6) && MTRR 378 depends on (MWINCHIP3D || MWINCHIP2 || MWINCHIPC6) && MTRR
379 379
380#
381# P6_NOPs are a relatively minor optimization that require a family >=
382# 6 processor, except that it is broken on certain VIA chips.
383# Furthermore, AMD chips prefer a totally different sequence of NOPs
384# (which work on all CPUs). As a result, disallow these if we're
385# compiling X86_GENERIC but not X86_64 (these NOPs do work on all
386# x86-64 capable chips); the list of processors in the right-hand clause
387# are the cores that benefit from this optimization.
388#
389config X86_P6_NOP
390 def_bool y
391 depends on (X86_64 || !X86_GENERIC) && (M686 || MPENTIUMII || MPENTIUMIII || MPENTIUMM || MCORE2 || MPENTIUM4)
392
380config X86_TSC 393config X86_TSC
381 def_bool y 394 def_bool y
382 depends on ((MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2) && !X86_NUMAQ) || X86_64 395 depends on ((MWINCHIP3D || MWINCHIP2 || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2) && !X86_NUMAQ) || X86_64
@@ -390,6 +403,7 @@ config X86_CMOV
390config X86_MINIMUM_CPU_FAMILY 403config X86_MINIMUM_CPU_FAMILY
391 int 404 int
392 default "64" if X86_64 405 default "64" if X86_64
406 default "6" if X86_32 && X86_P6_NOP
393 default "4" if X86_32 && (X86_XADD || X86_CMPXCHG || X86_BSWAP || X86_WP_WORKS_OK) 407 default "4" if X86_32 && (X86_XADD || X86_CMPXCHG || X86_BSWAP || X86_WP_WORKS_OK)
394 default "3" 408 default "3"
395 409
diff --git a/arch/x86/boot/memory.c b/arch/x86/boot/memory.c
index 378353956b5d..e77d89f9e8aa 100644
--- a/arch/x86/boot/memory.c
+++ b/arch/x86/boot/memory.c
@@ -37,6 +37,12 @@ static int detect_memory_e820(void)
37 "=m" (*desc) 37 "=m" (*desc)
38 : "D" (desc), "d" (SMAP), "a" (0xe820)); 38 : "D" (desc), "d" (SMAP), "a" (0xe820));
39 39
40 /* BIOSes which terminate the chain with CF = 1 as opposed
41 to %ebx = 0 don't always report the SMAP signature on
42 the final, failing, probe. */
43 if (err)
44 break;
45
40 /* Some BIOSes stop returning SMAP in the middle of 46 /* Some BIOSes stop returning SMAP in the middle of
41 the search loop. We don't know exactly how the BIOS 47 the search loop. We don't know exactly how the BIOS
42 screwed up the map at that point, we might have a 48 screwed up the map at that point, we might have a
@@ -47,9 +53,6 @@ static int detect_memory_e820(void)
47 break; 53 break;
48 } 54 }
49 55
50 if (err)
51 break;
52
53 count++; 56 count++;
54 desc++; 57 desc++;
55 } while (next && count < E820MAX); 58 } while (next && count < E820MAX);
diff --git a/arch/x86/boot/vesa.h b/arch/x86/boot/vesa.h
index ff5b73cd406f..468e444622c5 100644
--- a/arch/x86/boot/vesa.h
+++ b/arch/x86/boot/vesa.h
@@ -26,17 +26,10 @@ struct vesa_general_info {
26 far_ptr video_mode_ptr; /* 14 */ 26 far_ptr video_mode_ptr; /* 14 */
27 u16 total_memory; /* 18 */ 27 u16 total_memory; /* 18 */
28 28
29 u16 oem_software_rev; /* 20 */ 29 u8 reserved[236]; /* 20 */
30 far_ptr oem_vendor_name_ptr; /* 22 */
31 far_ptr oem_product_name_ptr; /* 26 */
32 far_ptr oem_product_rev_ptr; /* 30 */
33
34 u8 reserved[222]; /* 34 */
35 u8 oem_data[256]; /* 256 */
36} __attribute__ ((packed)); 30} __attribute__ ((packed));
37 31
38#define VESA_MAGIC ('V' + ('E' << 8) + ('S' << 16) + ('A' << 24)) 32#define VESA_MAGIC ('V' + ('E' << 8) + ('S' << 16) + ('A' << 24))
39#define VBE2_MAGIC ('V' + ('B' << 8) + ('E' << 16) + ('2' << 24))
40 33
41struct vesa_mode_info { 34struct vesa_mode_info {
42 u16 mode_attr; /* 0 */ 35 u16 mode_attr; /* 0 */
diff --git a/arch/x86/boot/video-vesa.c b/arch/x86/boot/video-vesa.c
index 662dd2f13068..419b5c273374 100644
--- a/arch/x86/boot/video-vesa.c
+++ b/arch/x86/boot/video-vesa.c
@@ -37,8 +37,6 @@ static int vesa_probe(void)
37 37
38 video_vesa.modes = GET_HEAP(struct mode_info, 0); 38 video_vesa.modes = GET_HEAP(struct mode_info, 0);
39 39
40 vginfo.signature = VBE2_MAGIC;
41
42 ax = 0x4f00; 40 ax = 0x4f00;
43 di = (size_t)&vginfo; 41 di = (size_t)&vginfo;
44 asm(INT10 42 asm(INT10
diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
index 1c0503bdfb1a..5e7771a3ba2f 100644
--- a/arch/x86/ia32/ia32_signal.c
+++ b/arch/x86/ia32/ia32_signal.c
@@ -500,7 +500,7 @@ int ia32_setup_frame(int sig, struct k_sigaction *ka,
500 regs->ss = __USER32_DS; 500 regs->ss = __USER32_DS;
501 501
502 set_fs(USER_DS); 502 set_fs(USER_DS);
503 regs->flags &= ~X86_EFLAGS_TF; 503 regs->flags &= ~(X86_EFLAGS_TF | X86_EFLAGS_DF);
504 if (test_thread_flag(TIF_SINGLESTEP)) 504 if (test_thread_flag(TIF_SINGLESTEP))
505 ptrace_notify(SIGTRAP); 505 ptrace_notify(SIGTRAP);
506 506
@@ -600,7 +600,7 @@ int ia32_setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
600 regs->ss = __USER32_DS; 600 regs->ss = __USER32_DS;
601 601
602 set_fs(USER_DS); 602 set_fs(USER_DS);
603 regs->flags &= ~X86_EFLAGS_TF; 603 regs->flags &= ~(X86_EFLAGS_TF | X86_EFLAGS_DF);
604 if (test_thread_flag(TIF_SINGLESTEP)) 604 if (test_thread_flag(TIF_SINGLESTEP))
605 ptrace_notify(SIGTRAP); 605 ptrace_notify(SIGTRAP);
606 606
diff --git a/arch/x86/kernel/asm-offsets_32.c b/arch/x86/kernel/asm-offsets_32.c
index a33d53017997..8ea040124f7d 100644
--- a/arch/x86/kernel/asm-offsets_32.c
+++ b/arch/x86/kernel/asm-offsets_32.c
@@ -128,13 +128,11 @@ void foo(void)
128 OFFSET(XEN_vcpu_info_pending, vcpu_info, evtchn_upcall_pending); 128 OFFSET(XEN_vcpu_info_pending, vcpu_info, evtchn_upcall_pending);
129#endif 129#endif
130 130
131#ifdef CONFIG_LGUEST_GUEST 131#if defined(CONFIG_LGUEST) || defined(CONFIG_LGUEST_GUEST) || defined(CONFIG_LGUEST_MODULE)
132 BLANK(); 132 BLANK();
133 OFFSET(LGUEST_DATA_irq_enabled, lguest_data, irq_enabled); 133 OFFSET(LGUEST_DATA_irq_enabled, lguest_data, irq_enabled);
134 OFFSET(LGUEST_DATA_pgdir, lguest_data, pgdir); 134 OFFSET(LGUEST_DATA_pgdir, lguest_data, pgdir);
135#endif
136 135
137#ifdef CONFIG_LGUEST
138 BLANK(); 136 BLANK();
139 OFFSET(LGUEST_PAGES_host_gdt_desc, lguest_pages, state.host_gdt_desc); 137 OFFSET(LGUEST_PAGES_host_gdt_desc, lguest_pages, state.host_gdt_desc);
140 OFFSET(LGUEST_PAGES_host_idt_desc, lguest_pages, state.host_idt_desc); 138 OFFSET(LGUEST_PAGES_host_idt_desc, lguest_pages, state.host_idt_desc);
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index f86a3c4a2669..a38aafaefc23 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -504,7 +504,7 @@ void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
504 504
505 /* Clear all flags overriden by options */ 505 /* Clear all flags overriden by options */
506 for (i = 0; i < NCAPINTS; i++) 506 for (i = 0; i < NCAPINTS; i++)
507 c->x86_capability[i] ^= cleared_cpu_caps[i]; 507 c->x86_capability[i] &= ~cleared_cpu_caps[i];
508 508
509 /* Init Machine Check Exception if available. */ 509 /* Init Machine Check Exception if available. */
510 mcheck_init(c); 510 mcheck_init(c);
diff --git a/arch/x86/kernel/cpu/cpufreq/e_powersaver.c b/arch/x86/kernel/cpu/cpufreq/e_powersaver.c
index 39f8cb18296c..c2f930d86640 100644
--- a/arch/x86/kernel/cpu/cpufreq/e_powersaver.c
+++ b/arch/x86/kernel/cpu/cpufreq/e_powersaver.c
@@ -55,7 +55,6 @@ static int eps_set_state(struct eps_cpu_data *centaur,
55{ 55{
56 struct cpufreq_freqs freqs; 56 struct cpufreq_freqs freqs;
57 u32 lo, hi; 57 u32 lo, hi;
58 u8 current_multiplier, current_voltage;
59 int err = 0; 58 int err = 0;
60 int i; 59 int i;
61 60
@@ -95,6 +94,10 @@ postchange:
95 rdmsr(MSR_IA32_PERF_STATUS, lo, hi); 94 rdmsr(MSR_IA32_PERF_STATUS, lo, hi);
96 freqs.new = centaur->fsb * ((lo >> 8) & 0xff); 95 freqs.new = centaur->fsb * ((lo >> 8) & 0xff);
97 96
97#ifdef DEBUG
98 {
99 u8 current_multiplier, current_voltage;
100
98 /* Print voltage and multiplier */ 101 /* Print voltage and multiplier */
99 rdmsr(MSR_IA32_PERF_STATUS, lo, hi); 102 rdmsr(MSR_IA32_PERF_STATUS, lo, hi);
100 current_voltage = lo & 0xff; 103 current_voltage = lo & 0xff;
@@ -103,7 +106,8 @@ postchange:
103 current_multiplier = (lo >> 8) & 0xff; 106 current_multiplier = (lo >> 8) & 0xff;
104 printk(KERN_INFO "eps: Current multiplier = %d\n", 107 printk(KERN_INFO "eps: Current multiplier = %d\n",
105 current_multiplier); 108 current_multiplier);
106 109 }
110#endif
107 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); 111 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
108 return err; 112 return err;
109} 113}
diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
index b6e136f23d3d..be83336fddba 100644
--- a/arch/x86/kernel/cpu/mtrr/main.c
+++ b/arch/x86/kernel/cpu/mtrr/main.c
@@ -43,6 +43,7 @@
43#include <asm/uaccess.h> 43#include <asm/uaccess.h>
44#include <asm/processor.h> 44#include <asm/processor.h>
45#include <asm/msr.h> 45#include <asm/msr.h>
46#include <asm/kvm_para.h>
46#include "mtrr.h" 47#include "mtrr.h"
47 48
48u32 num_var_ranges = 0; 49u32 num_var_ranges = 0;
@@ -649,6 +650,7 @@ static __init int amd_special_default_mtrr(void)
649 650
650/** 651/**
651 * mtrr_trim_uncached_memory - trim RAM not covered by MTRRs 652 * mtrr_trim_uncached_memory - trim RAM not covered by MTRRs
653 * @end_pfn: ending page frame number
652 * 654 *
653 * Some buggy BIOSes don't setup the MTRRs properly for systems with certain 655 * Some buggy BIOSes don't setup the MTRRs properly for systems with certain
654 * memory configurations. This routine checks that the highest MTRR matches 656 * memory configurations. This routine checks that the highest MTRR matches
@@ -688,8 +690,11 @@ int __init mtrr_trim_uncached_memory(unsigned long end_pfn)
688 690
689 /* kvm/qemu doesn't have mtrr set right, don't trim them all */ 691 /* kvm/qemu doesn't have mtrr set right, don't trim them all */
690 if (!highest_pfn) { 692 if (!highest_pfn) {
691 printk(KERN_WARNING "WARNING: strange, CPU MTRRs all blank?\n"); 693 if (!kvm_para_available()) {
692 WARN_ON(1); 694 printk(KERN_WARNING
695 "WARNING: strange, CPU MTRRs all blank?\n");
696 WARN_ON(1);
697 }
693 return 0; 698 return 0;
694 } 699 }
695 700
diff --git a/arch/x86/kernel/cpu/transmeta.c b/arch/x86/kernel/cpu/transmeta.c
index 200fb3f9ebfb..e8b422c1c512 100644
--- a/arch/x86/kernel/cpu/transmeta.c
+++ b/arch/x86/kernel/cpu/transmeta.c
@@ -76,13 +76,6 @@ static void __cpuinit init_transmeta(struct cpuinfo_x86 *c)
76 /* All Transmeta CPUs have a constant TSC */ 76 /* All Transmeta CPUs have a constant TSC */
77 set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability); 77 set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability);
78 78
79 /* If we can run i686 user-space code, call us an i686 */
80#define USER686 ((1 << X86_FEATURE_TSC)|\
81 (1 << X86_FEATURE_CX8)|\
82 (1 << X86_FEATURE_CMOV))
83 if (c->x86 == 5 && (c->x86_capability[0] & USER686) == USER686)
84 c->x86 = 6;
85
86#ifdef CONFIG_SYSCTL 79#ifdef CONFIG_SYSCTL
87 /* randomize_va_space slows us down enormously; 80 /* randomize_va_space slows us down enormously;
88 it probably triggers retranslation of x86->native bytecode */ 81 it probably triggers retranslation of x86->native bytecode */
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index 2ad9a1bc6a73..c20c9e7e08dd 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -453,6 +453,7 @@ ENTRY(stub_execve)
453 CFI_REGISTER rip, r11 453 CFI_REGISTER rip, r11
454 SAVE_REST 454 SAVE_REST
455 FIXUP_TOP_OF_STACK %r11 455 FIXUP_TOP_OF_STACK %r11
456 movq %rsp, %rcx
456 call sys_execve 457 call sys_execve
457 RESTORE_TOP_OF_STACK %r11 458 RESTORE_TOP_OF_STACK %r11
458 movq %rax,RAX(%rsp) 459 movq %rax,RAX(%rsp)
@@ -1036,15 +1037,16 @@ ENDPROC(child_rip)
1036 * rdi: name, rsi: argv, rdx: envp 1037 * rdi: name, rsi: argv, rdx: envp
1037 * 1038 *
1038 * We want to fallback into: 1039 * We want to fallback into:
1039 * extern long sys_execve(char *name, char **argv,char **envp, struct pt_regs regs) 1040 * extern long sys_execve(char *name, char **argv,char **envp, struct pt_regs *regs)
1040 * 1041 *
1041 * do_sys_execve asm fallback arguments: 1042 * do_sys_execve asm fallback arguments:
1042 * rdi: name, rsi: argv, rdx: envp, fake frame on the stack 1043 * rdi: name, rsi: argv, rdx: envp, rcx: fake frame on the stack
1043 */ 1044 */
1044ENTRY(kernel_execve) 1045ENTRY(kernel_execve)
1045 CFI_STARTPROC 1046 CFI_STARTPROC
1046 FAKE_STACK_FRAME $0 1047 FAKE_STACK_FRAME $0
1047 SAVE_ALL 1048 SAVE_ALL
1049 movq %rsp,%rcx
1048 call sys_execve 1050 call sys_execve
1049 movq %rax, RAX(%rsp) 1051 movq %rax, RAX(%rsp)
1050 RESTORE_REST 1052 RESTORE_REST
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
index 25eb98540a41..fd8ca53943a8 100644
--- a/arch/x86/kernel/head_32.S
+++ b/arch/x86/kernel/head_32.S
@@ -606,7 +606,7 @@ ENTRY(_stext)
606.section ".bss.page_aligned","wa" 606.section ".bss.page_aligned","wa"
607 .align PAGE_SIZE_asm 607 .align PAGE_SIZE_asm
608#ifdef CONFIG_X86_PAE 608#ifdef CONFIG_X86_PAE
609ENTRY(swapper_pg_pmd) 609swapper_pg_pmd:
610 .fill 1024*KPMDS,4,0 610 .fill 1024*KPMDS,4,0
611#else 611#else
612ENTRY(swapper_pg_dir) 612ENTRY(swapper_pg_dir)
diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S
index eb415043a929..a007454133a3 100644
--- a/arch/x86/kernel/head_64.S
+++ b/arch/x86/kernel/head_64.S
@@ -379,18 +379,24 @@ NEXT_PAGE(level2_ident_pgt)
379 /* Since I easily can, map the first 1G. 379 /* Since I easily can, map the first 1G.
380 * Don't set NX because code runs from these pages. 380 * Don't set NX because code runs from these pages.
381 */ 381 */
382 PMDS(0x0000000000000000, __PAGE_KERNEL_LARGE_EXEC, PTRS_PER_PMD) 382 PMDS(0, __PAGE_KERNEL_LARGE_EXEC, PTRS_PER_PMD)
383 383
384NEXT_PAGE(level2_kernel_pgt) 384NEXT_PAGE(level2_kernel_pgt)
385 /* 40MB kernel mapping. The kernel code cannot be bigger than that. 385 /*
386 When you change this change KERNEL_TEXT_SIZE in page.h too. */ 386 * 128 MB kernel mapping. We spend a full page on this pagetable
387 /* (2^48-(2*1024*1024*1024)-((2^39)*511)-((2^30)*510)) = 0 */ 387 * anyway.
388 PMDS(0x0000000000000000, __PAGE_KERNEL_LARGE_EXEC|_PAGE_GLOBAL, KERNEL_TEXT_SIZE/PMD_SIZE) 388 *
389 /* Module mapping starts here */ 389 * The kernel code+data+bss must not be bigger than that.
390 .fill (PTRS_PER_PMD - (KERNEL_TEXT_SIZE/PMD_SIZE)),8,0 390 *
391 * (NOTE: at +128MB starts the module area, see MODULES_VADDR.
392 * If you want to increase this then increase MODULES_VADDR
393 * too.)
394 */
395 PMDS(0, __PAGE_KERNEL_LARGE_EXEC|_PAGE_GLOBAL,
396 KERNEL_IMAGE_SIZE/PMD_SIZE)
391 397
392NEXT_PAGE(level2_spare_pgt) 398NEXT_PAGE(level2_spare_pgt)
393 .fill 512,8,0 399 .fill 512, 8, 0
394 400
395#undef PMDS 401#undef PMDS
396#undef NEXT_PAGE 402#undef NEXT_PAGE
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index 429d084e014d..235fd6c77504 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -368,8 +368,8 @@ static int hpet_clocksource_register(void)
368 return 0; 368 return 0;
369} 369}
370 370
371/* 371/**
372 * Try to setup the HPET timer 372 * hpet_enable - Try to setup the HPET timer. Returns 1 on success.
373 */ 373 */
374int __init hpet_enable(void) 374int __init hpet_enable(void)
375{ 375{
diff --git a/arch/x86/kernel/i387.c b/arch/x86/kernel/i387.c
index 763dfc407232..d2e39e69aaf8 100644
--- a/arch/x86/kernel/i387.c
+++ b/arch/x86/kernel/i387.c
@@ -132,7 +132,7 @@ int xfpregs_get(struct task_struct *target, const struct user_regset *regset,
132 if (!cpu_has_fxsr) 132 if (!cpu_has_fxsr)
133 return -ENODEV; 133 return -ENODEV;
134 134
135 unlazy_fpu(target); 135 init_fpu(target);
136 136
137 return user_regset_copyout(&pos, &count, &kbuf, &ubuf, 137 return user_regset_copyout(&pos, &count, &kbuf, &ubuf,
138 &target->thread.i387.fxsave, 0, -1); 138 &target->thread.i387.fxsave, 0, -1);
@@ -147,7 +147,7 @@ int xfpregs_set(struct task_struct *target, const struct user_regset *regset,
147 if (!cpu_has_fxsr) 147 if (!cpu_has_fxsr)
148 return -ENODEV; 148 return -ENODEV;
149 149
150 unlazy_fpu(target); 150 init_fpu(target);
151 set_stopped_child_used_math(target); 151 set_stopped_child_used_math(target);
152 152
153 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, 153 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
@@ -261,7 +261,7 @@ static void convert_from_fxsr(struct user_i387_ia32_struct *env,
261 } 261 }
262#else 262#else
263 env->fip = fxsave->fip; 263 env->fip = fxsave->fip;
264 env->fcs = fxsave->fcs; 264 env->fcs = (u16) fxsave->fcs | ((u32) fxsave->fop << 16);
265 env->foo = fxsave->foo; 265 env->foo = fxsave->foo;
266 env->fos = fxsave->fos; 266 env->fos = fxsave->fos;
267#endif 267#endif
@@ -307,7 +307,7 @@ int fpregs_get(struct task_struct *target, const struct user_regset *regset,
307 if (!HAVE_HWFP) 307 if (!HAVE_HWFP)
308 return fpregs_soft_get(target, regset, pos, count, kbuf, ubuf); 308 return fpregs_soft_get(target, regset, pos, count, kbuf, ubuf);
309 309
310 unlazy_fpu(target); 310 init_fpu(target);
311 311
312 if (!cpu_has_fxsr) 312 if (!cpu_has_fxsr)
313 return user_regset_copyout(&pos, &count, &kbuf, &ubuf, 313 return user_regset_copyout(&pos, &count, &kbuf, &ubuf,
@@ -332,7 +332,7 @@ int fpregs_set(struct task_struct *target, const struct user_regset *regset,
332 if (!HAVE_HWFP) 332 if (!HAVE_HWFP)
333 return fpregs_soft_set(target, regset, pos, count, kbuf, ubuf); 333 return fpregs_soft_set(target, regset, pos, count, kbuf, ubuf);
334 334
335 unlazy_fpu(target); 335 init_fpu(target);
336 set_stopped_child_used_math(target); 336 set_stopped_child_used_math(target);
337 337
338 if (!cpu_has_fxsr) 338 if (!cpu_has_fxsr)
diff --git a/arch/x86/kernel/init_task.c b/arch/x86/kernel/init_task.c
index 5b3ce7934363..3d01e47777db 100644
--- a/arch/x86/kernel/init_task.c
+++ b/arch/x86/kernel/init_task.c
@@ -15,6 +15,7 @@ static struct files_struct init_files = INIT_FILES;
15static struct signal_struct init_signals = INIT_SIGNALS(init_signals); 15static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
16static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); 16static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
17struct mm_struct init_mm = INIT_MM(init_mm); 17struct mm_struct init_mm = INIT_MM(init_mm);
18EXPORT_UNUSED_SYMBOL(init_mm); /* will be removed in 2.6.26 */
18 19
19/* 20/*
20 * Initial thread structure. 21 * Initial thread structure.
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
index a7d50a547dc2..be3c7a299f02 100644
--- a/arch/x86/kernel/process_32.c
+++ b/arch/x86/kernel/process_32.c
@@ -603,11 +603,13 @@ __switch_to_xtra(struct task_struct *prev_p, struct task_struct *next_p,
603 } 603 }
604#endif 604#endif
605 605
606#ifdef X86_BTS
606 if (test_tsk_thread_flag(prev_p, TIF_BTS_TRACE_TS)) 607 if (test_tsk_thread_flag(prev_p, TIF_BTS_TRACE_TS))
607 ptrace_bts_take_timestamp(prev_p, BTS_TASK_DEPARTS); 608 ptrace_bts_take_timestamp(prev_p, BTS_TASK_DEPARTS);
608 609
609 if (test_tsk_thread_flag(next_p, TIF_BTS_TRACE_TS)) 610 if (test_tsk_thread_flag(next_p, TIF_BTS_TRACE_TS))
610 ptrace_bts_take_timestamp(next_p, BTS_TASK_ARRIVES); 611 ptrace_bts_take_timestamp(next_p, BTS_TASK_ARRIVES);
612#endif
611 613
612 614
613 if (!test_tsk_thread_flag(next_p, TIF_IO_BITMAP)) { 615 if (!test_tsk_thread_flag(next_p, TIF_IO_BITMAP)) {
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index b0cc8f0136d8..3baf9b9f4c87 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -604,11 +604,13 @@ static inline void __switch_to_xtra(struct task_struct *prev_p,
604 memset(tss->io_bitmap, 0xff, prev->io_bitmap_max); 604 memset(tss->io_bitmap, 0xff, prev->io_bitmap_max);
605 } 605 }
606 606
607#ifdef X86_BTS
607 if (test_tsk_thread_flag(prev_p, TIF_BTS_TRACE_TS)) 608 if (test_tsk_thread_flag(prev_p, TIF_BTS_TRACE_TS))
608 ptrace_bts_take_timestamp(prev_p, BTS_TASK_DEPARTS); 609 ptrace_bts_take_timestamp(prev_p, BTS_TASK_DEPARTS);
609 610
610 if (test_tsk_thread_flag(next_p, TIF_BTS_TRACE_TS)) 611 if (test_tsk_thread_flag(next_p, TIF_BTS_TRACE_TS))
611 ptrace_bts_take_timestamp(next_p, BTS_TASK_ARRIVES); 612 ptrace_bts_take_timestamp(next_p, BTS_TASK_ARRIVES);
613#endif
612} 614}
613 615
614/* 616/*
@@ -730,16 +732,16 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
730 */ 732 */
731asmlinkage 733asmlinkage
732long sys_execve(char __user *name, char __user * __user *argv, 734long sys_execve(char __user *name, char __user * __user *argv,
733 char __user * __user *envp, struct pt_regs regs) 735 char __user * __user *envp, struct pt_regs *regs)
734{ 736{
735 long error; 737 long error;
736 char * filename; 738 char * filename;
737 739
738 filename = getname(name); 740 filename = getname(name);
739 error = PTR_ERR(filename); 741 error = PTR_ERR(filename);
740 if (IS_ERR(filename)) 742 if (IS_ERR(filename))
741 return error; 743 return error;
742 error = do_execve(filename, argv, envp, &regs); 744 error = do_execve(filename, argv, envp, regs);
743 putname(filename); 745 putname(filename);
744 return error; 746 return error;
745} 747}
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c
index d862e396b099..d5904eef1d31 100644
--- a/arch/x86/kernel/ptrace.c
+++ b/arch/x86/kernel/ptrace.c
@@ -323,6 +323,16 @@ static int putreg(struct task_struct *child,
323 return set_flags(child, value); 323 return set_flags(child, value);
324 324
325#ifdef CONFIG_X86_64 325#ifdef CONFIG_X86_64
326 /*
327 * Orig_ax is really just a flag with small positive and
328 * negative values, so make sure to always sign-extend it
329 * from 32 bits so that it works correctly regardless of
330 * whether we come from a 32-bit environment or not.
331 */
332 case offsetof(struct user_regs_struct, orig_ax):
333 value = (long) (s32) value;
334 break;
335
326 case offsetof(struct user_regs_struct,fs_base): 336 case offsetof(struct user_regs_struct,fs_base):
327 if (value >= TASK_SIZE_OF(child)) 337 if (value >= TASK_SIZE_OF(child))
328 return -EIO; 338 return -EIO;
@@ -544,6 +554,8 @@ static int ptrace_set_debugreg(struct task_struct *child,
544 return 0; 554 return 0;
545} 555}
546 556
557#ifdef X86_BTS
558
547static int ptrace_bts_get_size(struct task_struct *child) 559static int ptrace_bts_get_size(struct task_struct *child)
548{ 560{
549 if (!child->thread.ds_area_msr) 561 if (!child->thread.ds_area_msr)
@@ -826,6 +838,7 @@ void ptrace_bts_take_timestamp(struct task_struct *tsk,
826 838
827 ptrace_bts_write_record(tsk, &rec); 839 ptrace_bts_write_record(tsk, &rec);
828} 840}
841#endif /* X86_BTS */
829 842
830/* 843/*
831 * Called by kernel/ptrace.c when detaching.. 844 * Called by kernel/ptrace.c when detaching..
@@ -839,7 +852,9 @@ void ptrace_disable(struct task_struct *child)
839 clear_tsk_thread_flag(child, TIF_SYSCALL_EMU); 852 clear_tsk_thread_flag(child, TIF_SYSCALL_EMU);
840#endif 853#endif
841 if (child->thread.ds_area_msr) { 854 if (child->thread.ds_area_msr) {
855#ifdef X86_BTS
842 ptrace_bts_realloc(child, 0, 0); 856 ptrace_bts_realloc(child, 0, 0);
857#endif
843 child->thread.debugctlmsr &= ~ds_debugctl_mask(); 858 child->thread.debugctlmsr &= ~ds_debugctl_mask();
844 if (!child->thread.debugctlmsr) 859 if (!child->thread.debugctlmsr)
845 clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR); 860 clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR);
@@ -961,6 +976,10 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
961 break; 976 break;
962#endif 977#endif
963 978
979 /*
980 * These bits need more cooking - not enabled yet:
981 */
982#ifdef X86_BTS
964 case PTRACE_BTS_CONFIG: 983 case PTRACE_BTS_CONFIG:
965 ret = ptrace_bts_config 984 ret = ptrace_bts_config
966 (child, data, (struct ptrace_bts_config __user *)addr); 985 (child, data, (struct ptrace_bts_config __user *)addr);
@@ -988,6 +1007,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
988 ret = ptrace_bts_drain 1007 ret = ptrace_bts_drain
989 (child, data, (struct bts_struct __user *) addr); 1008 (child, data, (struct bts_struct __user *) addr);
990 break; 1009 break;
1010#endif
991 1011
992 default: 1012 default:
993 ret = ptrace_request(child, request, addr, data); 1013 ret = ptrace_request(child, request, addr, data);
@@ -1035,10 +1055,17 @@ static int putreg32(struct task_struct *child, unsigned regno, u32 value)
1035 R32(esi, si); 1055 R32(esi, si);
1036 R32(ebp, bp); 1056 R32(ebp, bp);
1037 R32(eax, ax); 1057 R32(eax, ax);
1038 R32(orig_eax, orig_ax);
1039 R32(eip, ip); 1058 R32(eip, ip);
1040 R32(esp, sp); 1059 R32(esp, sp);
1041 1060
1061 case offsetof(struct user32, regs.orig_eax):
1062 /*
1063 * Sign-extend the value so that orig_eax = -1
1064 * causes (long)orig_ax < 0 tests to fire correctly.
1065 */
1066 regs->orig_ax = (long) (s32) value;
1067 break;
1068
1042 case offsetof(struct user32, regs.eflags): 1069 case offsetof(struct user32, regs.eflags):
1043 return set_flags(child, value); 1070 return set_flags(child, value);
1044 1071
@@ -1226,12 +1253,14 @@ asmlinkage long sys32_ptrace(long request, u32 pid, u32 addr, u32 data)
1226 case PTRACE_SETOPTIONS: 1253 case PTRACE_SETOPTIONS:
1227 case PTRACE_SET_THREAD_AREA: 1254 case PTRACE_SET_THREAD_AREA:
1228 case PTRACE_GET_THREAD_AREA: 1255 case PTRACE_GET_THREAD_AREA:
1256#ifdef X86_BTS
1229 case PTRACE_BTS_CONFIG: 1257 case PTRACE_BTS_CONFIG:
1230 case PTRACE_BTS_STATUS: 1258 case PTRACE_BTS_STATUS:
1231 case PTRACE_BTS_SIZE: 1259 case PTRACE_BTS_SIZE:
1232 case PTRACE_BTS_GET: 1260 case PTRACE_BTS_GET:
1233 case PTRACE_BTS_CLEAR: 1261 case PTRACE_BTS_CLEAR:
1234 case PTRACE_BTS_DRAIN: 1262 case PTRACE_BTS_DRAIN:
1263#endif
1235 return sys_ptrace(request, pid, addr, data); 1264 return sys_ptrace(request, pid, addr, data);
1236 1265
1237 default: 1266 default:
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 7fd6ac43e4a1..55ceb8cdef75 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -326,6 +326,10 @@ static inline void kb_wait(void)
326 } 326 }
327} 327}
328 328
329void __attribute__((weak)) mach_reboot_fixups(void)
330{
331}
332
329static void native_machine_emergency_restart(void) 333static void native_machine_emergency_restart(void)
330{ 334{
331 int i; 335 int i;
@@ -337,6 +341,8 @@ static void native_machine_emergency_restart(void)
337 /* Could also try the reset bit in the Hammer NB */ 341 /* Could also try the reset bit in the Hammer NB */
338 switch (reboot_type) { 342 switch (reboot_type) {
339 case BOOT_KBD: 343 case BOOT_KBD:
344 mach_reboot_fixups(); /* for board specific fixups */
345
340 for (i = 0; i < 10; i++) { 346 for (i = 0; i < 10; i++) {
341 kb_wait(); 347 kb_wait();
342 udelay(50); 348 udelay(50);
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c
index 6fd804f07821..7637dc91c79b 100644
--- a/arch/x86/kernel/setup_64.c
+++ b/arch/x86/kernel/setup_64.c
@@ -1021,7 +1021,7 @@ void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
1021 1021
1022 /* Clear all flags overriden by options */ 1022 /* Clear all flags overriden by options */
1023 for (i = 0; i < NCAPINTS; i++) 1023 for (i = 0; i < NCAPINTS; i++)
1024 c->x86_capability[i] ^= cleared_cpu_caps[i]; 1024 c->x86_capability[i] &= ~cleared_cpu_caps[i];
1025 1025
1026#ifdef CONFIG_X86_MCE 1026#ifdef CONFIG_X86_MCE
1027 mcheck_init(c); 1027 mcheck_init(c);
diff --git a/arch/x86/kernel/signal_32.c b/arch/x86/kernel/signal_32.c
index caee1f002fed..0157a6f0f41f 100644
--- a/arch/x86/kernel/signal_32.c
+++ b/arch/x86/kernel/signal_32.c
@@ -407,7 +407,7 @@ static int setup_frame(int sig, struct k_sigaction *ka,
407 * The tracer may want to single-step inside the 407 * The tracer may want to single-step inside the
408 * handler too. 408 * handler too.
409 */ 409 */
410 regs->flags &= ~TF_MASK; 410 regs->flags &= ~(TF_MASK | X86_EFLAGS_DF);
411 if (test_thread_flag(TIF_SINGLESTEP)) 411 if (test_thread_flag(TIF_SINGLESTEP))
412 ptrace_notify(SIGTRAP); 412 ptrace_notify(SIGTRAP);
413 413
@@ -500,7 +500,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
500 * The tracer may want to single-step inside the 500 * The tracer may want to single-step inside the
501 * handler too. 501 * handler too.
502 */ 502 */
503 regs->flags &= ~TF_MASK; 503 regs->flags &= ~(TF_MASK | X86_EFLAGS_DF);
504 if (test_thread_flag(TIF_SINGLESTEP)) 504 if (test_thread_flag(TIF_SINGLESTEP))
505 ptrace_notify(SIGTRAP); 505 ptrace_notify(SIGTRAP);
506 506
diff --git a/arch/x86/kernel/signal_64.c b/arch/x86/kernel/signal_64.c
index 7347bb14e306..1c83e5124c65 100644
--- a/arch/x86/kernel/signal_64.c
+++ b/arch/x86/kernel/signal_64.c
@@ -295,7 +295,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
295 see include/asm-x86_64/uaccess.h for details. */ 295 see include/asm-x86_64/uaccess.h for details. */
296 set_fs(USER_DS); 296 set_fs(USER_DS);
297 297
298 regs->flags &= ~X86_EFLAGS_TF; 298 regs->flags &= ~(X86_EFLAGS_TF | X86_EFLAGS_DF);
299 if (test_thread_flag(TIF_SINGLESTEP)) 299 if (test_thread_flag(TIF_SINGLESTEP))
300 ptrace_notify(SIGTRAP); 300 ptrace_notify(SIGTRAP);
301#ifdef DEBUG_SIG 301#ifdef DEBUG_SIG
@@ -311,6 +311,35 @@ give_sigsegv:
311} 311}
312 312
313/* 313/*
314 * Return -1L or the syscall number that @regs is executing.
315 */
316static long current_syscall(struct pt_regs *regs)
317{
318 /*
319 * We always sign-extend a -1 value being set here,
320 * so this is always either -1L or a syscall number.
321 */
322 return regs->orig_ax;
323}
324
325/*
326 * Return a value that is -EFOO if the system call in @regs->orig_ax
327 * returned an error. This only works for @regs from @current.
328 */
329static long current_syscall_ret(struct pt_regs *regs)
330{
331#ifdef CONFIG_IA32_EMULATION
332 if (test_thread_flag(TIF_IA32))
333 /*
334 * Sign-extend the value so (int)-EFOO becomes (long)-EFOO
335 * and will match correctly in comparisons.
336 */
337 return (int) regs->ax;
338#endif
339 return regs->ax;
340}
341
342/*
314 * OK, we're invoking a handler 343 * OK, we're invoking a handler
315 */ 344 */
316 345
@@ -327,9 +356,9 @@ handle_signal(unsigned long sig, siginfo_t *info, struct k_sigaction *ka,
327#endif 356#endif
328 357
329 /* Are we from a system call? */ 358 /* Are we from a system call? */
330 if ((long)regs->orig_ax >= 0) { 359 if (current_syscall(regs) >= 0) {
331 /* If so, check system call restarting.. */ 360 /* If so, check system call restarting.. */
332 switch (regs->ax) { 361 switch (current_syscall_ret(regs)) {
333 case -ERESTART_RESTARTBLOCK: 362 case -ERESTART_RESTARTBLOCK:
334 case -ERESTARTNOHAND: 363 case -ERESTARTNOHAND:
335 regs->ax = -EINTR; 364 regs->ax = -EINTR;
@@ -426,10 +455,9 @@ static void do_signal(struct pt_regs *regs)
426 } 455 }
427 456
428 /* Did we come from a system call? */ 457 /* Did we come from a system call? */
429 if ((long)regs->orig_ax >= 0) { 458 if (current_syscall(regs) >= 0) {
430 /* Restart the system call - no handlers present */ 459 /* Restart the system call - no handlers present */
431 long res = regs->ax; 460 switch (current_syscall_ret(regs)) {
432 switch (res) {
433 case -ERESTARTNOHAND: 461 case -ERESTARTNOHAND:
434 case -ERESTARTSYS: 462 case -ERESTARTSYS:
435 case -ERESTARTNOINTR: 463 case -ERESTARTNOINTR:
diff --git a/arch/x86/kernel/smpboot_64.c b/arch/x86/kernel/smpboot_64.c
index d53bd6fcb428..0880f2c388a9 100644
--- a/arch/x86/kernel/smpboot_64.c
+++ b/arch/x86/kernel/smpboot_64.c
@@ -554,10 +554,10 @@ static int __cpuinit do_boot_cpu(int cpu, int apicid)
554 int timeout; 554 int timeout;
555 unsigned long start_rip; 555 unsigned long start_rip;
556 struct create_idle c_idle = { 556 struct create_idle c_idle = {
557 .work = __WORK_INITIALIZER(c_idle.work, do_fork_idle),
558 .cpu = cpu, 557 .cpu = cpu,
559 .done = COMPLETION_INITIALIZER_ONSTACK(c_idle.done), 558 .done = COMPLETION_INITIALIZER_ONSTACK(c_idle.done),
560 }; 559 };
560 INIT_WORK(&c_idle.work, do_fork_idle);
561 561
562 /* allocate memory for gdts of secondary cpus. Hotplug is considered */ 562 /* allocate memory for gdts of secondary cpus. Hotplug is considered */
563 if (!cpu_gdt_descr[cpu].address && 563 if (!cpu_gdt_descr[cpu].address &&
diff --git a/arch/x86/kernel/stacktrace.c b/arch/x86/kernel/stacktrace.c
index 02f0f61f5b11..c28c342c162f 100644
--- a/arch/x86/kernel/stacktrace.c
+++ b/arch/x86/kernel/stacktrace.c
@@ -25,6 +25,8 @@ static int save_stack_stack(void *data, char *name)
25static void save_stack_address(void *data, unsigned long addr, int reliable) 25static void save_stack_address(void *data, unsigned long addr, int reliable)
26{ 26{
27 struct stack_trace *trace = data; 27 struct stack_trace *trace = data;
28 if (!reliable)
29 return;
28 if (trace->skip > 0) { 30 if (trace->skip > 0) {
29 trace->skip--; 31 trace->skip--;
30 return; 32 return;
@@ -37,6 +39,8 @@ static void
37save_stack_address_nosched(void *data, unsigned long addr, int reliable) 39save_stack_address_nosched(void *data, unsigned long addr, int reliable)
38{ 40{
39 struct stack_trace *trace = (struct stack_trace *)data; 41 struct stack_trace *trace = (struct stack_trace *)data;
42 if (!reliable)
43 return;
40 if (in_sched_functions(addr)) 44 if (in_sched_functions(addr))
41 return; 45 return;
42 if (trace->skip > 0) { 46 if (trace->skip > 0) {
diff --git a/arch/x86/kernel/step.c b/arch/x86/kernel/step.c
index 2ef1a5f8d675..9d406cdc847f 100644
--- a/arch/x86/kernel/step.c
+++ b/arch/x86/kernel/step.c
@@ -166,7 +166,7 @@ static void enable_step(struct task_struct *child, bool block)
166 child->thread.debugctlmsr | DEBUGCTLMSR_BTF); 166 child->thread.debugctlmsr | DEBUGCTLMSR_BTF);
167 } else { 167 } else {
168 write_debugctlmsr(child, 168 write_debugctlmsr(child,
169 child->thread.debugctlmsr & ~TIF_DEBUGCTLMSR); 169 child->thread.debugctlmsr & ~DEBUGCTLMSR_BTF);
170 170
171 if (!child->thread.debugctlmsr) 171 if (!child->thread.debugctlmsr)
172 clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR); 172 clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR);
@@ -189,7 +189,7 @@ void user_disable_single_step(struct task_struct *child)
189 * Make sure block stepping (BTF) is disabled. 189 * Make sure block stepping (BTF) is disabled.
190 */ 190 */
191 write_debugctlmsr(child, 191 write_debugctlmsr(child,
192 child->thread.debugctlmsr & ~TIF_DEBUGCTLMSR); 192 child->thread.debugctlmsr & ~DEBUGCTLMSR_BTF);
193 193
194 if (!child->thread.debugctlmsr) 194 if (!child->thread.debugctlmsr)
195 clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR); 195 clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR);
diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c
index 6dfd4e76661a..022bcaa3b42e 100644
--- a/arch/x86/kernel/tls.c
+++ b/arch/x86/kernel/tls.c
@@ -91,7 +91,9 @@ int do_set_thread_area(struct task_struct *p, int idx,
91 91
92asmlinkage int sys_set_thread_area(struct user_desc __user *u_info) 92asmlinkage int sys_set_thread_area(struct user_desc __user *u_info)
93{ 93{
94 return do_set_thread_area(current, -1, u_info, 1); 94 int ret = do_set_thread_area(current, -1, u_info, 1);
95 prevent_tail_call(ret);
96 return ret;
95} 97}
96 98
97 99
@@ -139,7 +141,9 @@ int do_get_thread_area(struct task_struct *p, int idx,
139 141
140asmlinkage int sys_get_thread_area(struct user_desc __user *u_info) 142asmlinkage int sys_get_thread_area(struct user_desc __user *u_info)
141{ 143{
142 return do_get_thread_area(current, -1, u_info); 144 int ret = do_get_thread_area(current, -1, u_info);
145 prevent_tail_call(ret);
146 return ret;
143} 147}
144 148
145int regset_tls_active(struct task_struct *target, 149int regset_tls_active(struct task_struct *target,
diff --git a/arch/x86/kernel/tsc_32.c b/arch/x86/kernel/tsc_32.c
index 43517e324be8..f14cfd9d1f94 100644
--- a/arch/x86/kernel/tsc_32.c
+++ b/arch/x86/kernel/tsc_32.c
@@ -28,7 +28,8 @@ EXPORT_SYMBOL_GPL(tsc_khz);
28static int __init tsc_setup(char *str) 28static int __init tsc_setup(char *str)
29{ 29{
30 printk(KERN_WARNING "notsc: Kernel compiled with CONFIG_X86_TSC, " 30 printk(KERN_WARNING "notsc: Kernel compiled with CONFIG_X86_TSC, "
31 "cannot disable TSC.\n"); 31 "cannot disable TSC completely.\n");
32 mark_tsc_unstable("user disabled TSC");
32 return 1; 33 return 1;
33} 34}
34#else 35#else
diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c
index 3f8242774580..edff4c985485 100644
--- a/arch/x86/kernel/vsyscall_64.c
+++ b/arch/x86/kernel/vsyscall_64.c
@@ -44,11 +44,6 @@
44 44
45#define __vsyscall(nr) __attribute__ ((unused,__section__(".vsyscall_" #nr))) 45#define __vsyscall(nr) __attribute__ ((unused,__section__(".vsyscall_" #nr)))
46#define __syscall_clobber "r11","cx","memory" 46#define __syscall_clobber "r11","cx","memory"
47#define __pa_vsymbol(x) \
48 ({unsigned long v; \
49 extern char __vsyscall_0; \
50 asm("" : "=r" (v) : "0" (x)); \
51 ((v - VSYSCALL_START) + __pa_symbol(&__vsyscall_0)); })
52 47
53/* 48/*
54 * vsyscall_gtod_data contains data that is : 49 * vsyscall_gtod_data contains data that is :
@@ -102,7 +97,7 @@ static __always_inline void do_get_tz(struct timezone * tz)
102static __always_inline int gettimeofday(struct timeval *tv, struct timezone *tz) 97static __always_inline int gettimeofday(struct timeval *tv, struct timezone *tz)
103{ 98{
104 int ret; 99 int ret;
105 asm volatile("vsysc2: syscall" 100 asm volatile("syscall"
106 : "=a" (ret) 101 : "=a" (ret)
107 : "0" (__NR_gettimeofday),"D" (tv),"S" (tz) 102 : "0" (__NR_gettimeofday),"D" (tv),"S" (tz)
108 : __syscall_clobber ); 103 : __syscall_clobber );
@@ -112,7 +107,7 @@ static __always_inline int gettimeofday(struct timeval *tv, struct timezone *tz)
112static __always_inline long time_syscall(long *t) 107static __always_inline long time_syscall(long *t)
113{ 108{
114 long secs; 109 long secs;
115 asm volatile("vsysc1: syscall" 110 asm volatile("syscall"
116 : "=a" (secs) 111 : "=a" (secs)
117 : "0" (__NR_time),"D" (t) : __syscall_clobber); 112 : "0" (__NR_time),"D" (t) : __syscall_clobber);
118 return secs; 113 return secs;
@@ -228,42 +223,11 @@ long __vsyscall(3) venosys_1(void)
228 223
229#ifdef CONFIG_SYSCTL 224#ifdef CONFIG_SYSCTL
230 225
231#define SYSCALL 0x050f 226static int
232#define NOP2 0x9090 227vsyscall_sysctl_change(ctl_table *ctl, int write, struct file * filp,
233 228 void __user *buffer, size_t *lenp, loff_t *ppos)
234/*
235 * NOP out syscall in vsyscall page when not needed.
236 */
237static int vsyscall_sysctl_change(ctl_table *ctl, int write, struct file * filp,
238 void __user *buffer, size_t *lenp, loff_t *ppos)
239{ 229{
240 extern u16 vsysc1, vsysc2; 230 return proc_dointvec(ctl, write, filp, buffer, lenp, ppos);
241 u16 __iomem *map1;
242 u16 __iomem *map2;
243 int ret = proc_dointvec(ctl, write, filp, buffer, lenp, ppos);
244 if (!write)
245 return ret;
246 /* gcc has some trouble with __va(__pa()), so just do it this
247 way. */
248 map1 = ioremap(__pa_vsymbol(&vsysc1), 2);
249 if (!map1)
250 return -ENOMEM;
251 map2 = ioremap(__pa_vsymbol(&vsysc2), 2);
252 if (!map2) {
253 ret = -ENOMEM;
254 goto out;
255 }
256 if (!vsyscall_gtod_data.sysctl_enabled) {
257 writew(SYSCALL, map1);
258 writew(SYSCALL, map2);
259 } else {
260 writew(NOP2, map1);
261 writew(NOP2, map2);
262 }
263 iounmap(map2);
264out:
265 iounmap(map1);
266 return ret;
267} 231}
268 232
269static ctl_table kernel_table2[] = { 233static ctl_table kernel_table2[] = {
@@ -279,7 +243,6 @@ static ctl_table kernel_root_table2[] = {
279 .child = kernel_table2 }, 243 .child = kernel_table2 },
280 {} 244 {}
281}; 245};
282
283#endif 246#endif
284 247
285/* Assume __initcall executes before all user space. Hopefully kmod 248/* Assume __initcall executes before all user space. Hopefully kmod
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index 2cbee9479ce4..68a6b1511934 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -647,6 +647,10 @@ static void start_apic_timer(struct kvm_lapic *apic)
647 apic->timer.period = apic_get_reg(apic, APIC_TMICT) * 647 apic->timer.period = apic_get_reg(apic, APIC_TMICT) *
648 APIC_BUS_CYCLE_NS * apic->timer.divide_count; 648 APIC_BUS_CYCLE_NS * apic->timer.divide_count;
649 atomic_set(&apic->timer.pending, 0); 649 atomic_set(&apic->timer.pending, 0);
650
651 if (!apic->timer.period)
652 return;
653
650 hrtimer_start(&apic->timer.dev, 654 hrtimer_start(&apic->timer.dev,
651 ktime_add_ns(now, apic->timer.period), 655 ktime_add_ns(now, apic->timer.period),
652 HRTIMER_MODE_ABS); 656 HRTIMER_MODE_ABS);
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 8efdcdbebb03..d8172aabc660 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -681,8 +681,7 @@ static struct kvm_mmu_page *kvm_mmu_get_page(struct kvm_vcpu *vcpu,
681 unsigned level, 681 unsigned level,
682 int metaphysical, 682 int metaphysical,
683 unsigned access, 683 unsigned access,
684 u64 *parent_pte, 684 u64 *parent_pte)
685 bool *new_page)
686{ 685{
687 union kvm_mmu_page_role role; 686 union kvm_mmu_page_role role;
688 unsigned index; 687 unsigned index;
@@ -722,8 +721,6 @@ static struct kvm_mmu_page *kvm_mmu_get_page(struct kvm_vcpu *vcpu,
722 vcpu->arch.mmu.prefetch_page(vcpu, sp); 721 vcpu->arch.mmu.prefetch_page(vcpu, sp);
723 if (!metaphysical) 722 if (!metaphysical)
724 rmap_write_protect(vcpu->kvm, gfn); 723 rmap_write_protect(vcpu->kvm, gfn);
725 if (new_page)
726 *new_page = 1;
727 return sp; 724 return sp;
728} 725}
729 726
@@ -876,11 +873,18 @@ static void page_header_update_slot(struct kvm *kvm, void *pte, gfn_t gfn)
876 873
877struct page *gva_to_page(struct kvm_vcpu *vcpu, gva_t gva) 874struct page *gva_to_page(struct kvm_vcpu *vcpu, gva_t gva)
878{ 875{
876 struct page *page;
877
879 gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, gva); 878 gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, gva);
880 879
881 if (gpa == UNMAPPED_GVA) 880 if (gpa == UNMAPPED_GVA)
882 return NULL; 881 return NULL;
883 return gfn_to_page(vcpu->kvm, gpa >> PAGE_SHIFT); 882
883 down_read(&current->mm->mmap_sem);
884 page = gfn_to_page(vcpu->kvm, gpa >> PAGE_SHIFT);
885 up_read(&current->mm->mmap_sem);
886
887 return page;
884} 888}
885 889
886static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *shadow_pte, 890static void mmu_set_spte(struct kvm_vcpu *vcpu, u64 *shadow_pte,
@@ -999,8 +1003,7 @@ static int __nonpaging_map(struct kvm_vcpu *vcpu, gva_t v, int write,
999 >> PAGE_SHIFT; 1003 >> PAGE_SHIFT;
1000 new_table = kvm_mmu_get_page(vcpu, pseudo_gfn, 1004 new_table = kvm_mmu_get_page(vcpu, pseudo_gfn,
1001 v, level - 1, 1005 v, level - 1,
1002 1, ACC_ALL, &table[index], 1006 1, ACC_ALL, &table[index]);
1003 NULL);
1004 if (!new_table) { 1007 if (!new_table) {
1005 pgprintk("nonpaging_map: ENOMEM\n"); 1008 pgprintk("nonpaging_map: ENOMEM\n");
1006 kvm_release_page_clean(page); 1009 kvm_release_page_clean(page);
@@ -1020,15 +1023,18 @@ static int nonpaging_map(struct kvm_vcpu *vcpu, gva_t v, int write, gfn_t gfn)
1020 1023
1021 struct page *page; 1024 struct page *page;
1022 1025
1026 down_read(&vcpu->kvm->slots_lock);
1027
1023 down_read(&current->mm->mmap_sem); 1028 down_read(&current->mm->mmap_sem);
1024 page = gfn_to_page(vcpu->kvm, gfn); 1029 page = gfn_to_page(vcpu->kvm, gfn);
1030 up_read(&current->mm->mmap_sem);
1025 1031
1026 spin_lock(&vcpu->kvm->mmu_lock); 1032 spin_lock(&vcpu->kvm->mmu_lock);
1027 kvm_mmu_free_some_pages(vcpu); 1033 kvm_mmu_free_some_pages(vcpu);
1028 r = __nonpaging_map(vcpu, v, write, gfn, page); 1034 r = __nonpaging_map(vcpu, v, write, gfn, page);
1029 spin_unlock(&vcpu->kvm->mmu_lock); 1035 spin_unlock(&vcpu->kvm->mmu_lock);
1030 1036
1031 up_read(&current->mm->mmap_sem); 1037 up_read(&vcpu->kvm->slots_lock);
1032 1038
1033 return r; 1039 return r;
1034} 1040}
@@ -1090,7 +1096,7 @@ static void mmu_alloc_roots(struct kvm_vcpu *vcpu)
1090 1096
1091 ASSERT(!VALID_PAGE(root)); 1097 ASSERT(!VALID_PAGE(root));
1092 sp = kvm_mmu_get_page(vcpu, root_gfn, 0, 1098 sp = kvm_mmu_get_page(vcpu, root_gfn, 0,
1093 PT64_ROOT_LEVEL, 0, ACC_ALL, NULL, NULL); 1099 PT64_ROOT_LEVEL, 0, ACC_ALL, NULL);
1094 root = __pa(sp->spt); 1100 root = __pa(sp->spt);
1095 ++sp->root_count; 1101 ++sp->root_count;
1096 vcpu->arch.mmu.root_hpa = root; 1102 vcpu->arch.mmu.root_hpa = root;
@@ -1111,7 +1117,7 @@ static void mmu_alloc_roots(struct kvm_vcpu *vcpu)
1111 root_gfn = 0; 1117 root_gfn = 0;
1112 sp = kvm_mmu_get_page(vcpu, root_gfn, i << 30, 1118 sp = kvm_mmu_get_page(vcpu, root_gfn, i << 30,
1113 PT32_ROOT_LEVEL, !is_paging(vcpu), 1119 PT32_ROOT_LEVEL, !is_paging(vcpu),
1114 ACC_ALL, NULL, NULL); 1120 ACC_ALL, NULL);
1115 root = __pa(sp->spt); 1121 root = __pa(sp->spt);
1116 ++sp->root_count; 1122 ++sp->root_count;
1117 vcpu->arch.mmu.pae_root[i] = root | PT_PRESENT_MASK; 1123 vcpu->arch.mmu.pae_root[i] = root | PT_PRESENT_MASK;
@@ -1172,7 +1178,7 @@ void kvm_mmu_flush_tlb(struct kvm_vcpu *vcpu)
1172 1178
1173static void paging_new_cr3(struct kvm_vcpu *vcpu) 1179static void paging_new_cr3(struct kvm_vcpu *vcpu)
1174{ 1180{
1175 pgprintk("%s: cr3 %lx\n", __FUNCTION__, vcpu->cr3); 1181 pgprintk("%s: cr3 %lx\n", __FUNCTION__, vcpu->arch.cr3);
1176 mmu_free_roots(vcpu); 1182 mmu_free_roots(vcpu);
1177} 1183}
1178 1184
@@ -1362,6 +1368,7 @@ static void mmu_guess_page_from_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
1362 gfn_t gfn; 1368 gfn_t gfn;
1363 int r; 1369 int r;
1364 u64 gpte = 0; 1370 u64 gpte = 0;
1371 struct page *page;
1365 1372
1366 if (bytes != 4 && bytes != 8) 1373 if (bytes != 4 && bytes != 8)
1367 return; 1374 return;
@@ -1389,6 +1396,11 @@ static void mmu_guess_page_from_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
1389 if (!is_present_pte(gpte)) 1396 if (!is_present_pte(gpte))
1390 return; 1397 return;
1391 gfn = (gpte & PT64_BASE_ADDR_MASK) >> PAGE_SHIFT; 1398 gfn = (gpte & PT64_BASE_ADDR_MASK) >> PAGE_SHIFT;
1399
1400 down_read(&current->mm->mmap_sem);
1401 page = gfn_to_page(vcpu->kvm, gfn);
1402 up_read(&current->mm->mmap_sem);
1403
1392 vcpu->arch.update_pte.gfn = gfn; 1404 vcpu->arch.update_pte.gfn = gfn;
1393 vcpu->arch.update_pte.page = gfn_to_page(vcpu->kvm, gfn); 1405 vcpu->arch.update_pte.page = gfn_to_page(vcpu->kvm, gfn);
1394} 1406}
@@ -1496,9 +1508,9 @@ int kvm_mmu_unprotect_page_virt(struct kvm_vcpu *vcpu, gva_t gva)
1496 gpa_t gpa; 1508 gpa_t gpa;
1497 int r; 1509 int r;
1498 1510
1499 down_read(&current->mm->mmap_sem); 1511 down_read(&vcpu->kvm->slots_lock);
1500 gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, gva); 1512 gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, gva);
1501 up_read(&current->mm->mmap_sem); 1513 up_read(&vcpu->kvm->slots_lock);
1502 1514
1503 spin_lock(&vcpu->kvm->mmu_lock); 1515 spin_lock(&vcpu->kvm->mmu_lock);
1504 r = kvm_mmu_unprotect_page(vcpu->kvm, gpa >> PAGE_SHIFT); 1516 r = kvm_mmu_unprotect_page(vcpu->kvm, gpa >> PAGE_SHIFT);
diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
index 03ba8608fe0f..ecc0856268c4 100644
--- a/arch/x86/kvm/paging_tmpl.h
+++ b/arch/x86/kvm/paging_tmpl.h
@@ -91,7 +91,10 @@ static bool FNAME(cmpxchg_gpte)(struct kvm *kvm,
91 pt_element_t *table; 91 pt_element_t *table;
92 struct page *page; 92 struct page *page;
93 93
94 down_read(&current->mm->mmap_sem);
94 page = gfn_to_page(kvm, table_gfn); 95 page = gfn_to_page(kvm, table_gfn);
96 up_read(&current->mm->mmap_sem);
97
95 table = kmap_atomic(page, KM_USER0); 98 table = kmap_atomic(page, KM_USER0);
96 99
97 ret = CMPXCHG(&table[index], orig_pte, new_pte); 100 ret = CMPXCHG(&table[index], orig_pte, new_pte);
@@ -140,7 +143,7 @@ walk:
140 } 143 }
141#endif 144#endif
142 ASSERT((!is_long_mode(vcpu) && is_pae(vcpu)) || 145 ASSERT((!is_long_mode(vcpu) && is_pae(vcpu)) ||
143 (vcpu->cr3 & CR3_NONPAE_RESERVED_BITS) == 0); 146 (vcpu->arch.cr3 & CR3_NONPAE_RESERVED_BITS) == 0);
144 147
145 pt_access = ACC_ALL; 148 pt_access = ACC_ALL;
146 149
@@ -297,7 +300,6 @@ static u64 *FNAME(fetch)(struct kvm_vcpu *vcpu, gva_t addr,
297 u64 shadow_pte; 300 u64 shadow_pte;
298 int metaphysical; 301 int metaphysical;
299 gfn_t table_gfn; 302 gfn_t table_gfn;
300 bool new_page = 0;
301 303
302 shadow_ent = ((u64 *)__va(shadow_addr)) + index; 304 shadow_ent = ((u64 *)__va(shadow_addr)) + index;
303 if (level == PT_PAGE_TABLE_LEVEL) 305 if (level == PT_PAGE_TABLE_LEVEL)
@@ -319,8 +321,8 @@ static u64 *FNAME(fetch)(struct kvm_vcpu *vcpu, gva_t addr,
319 } 321 }
320 shadow_page = kvm_mmu_get_page(vcpu, table_gfn, addr, level-1, 322 shadow_page = kvm_mmu_get_page(vcpu, table_gfn, addr, level-1,
321 metaphysical, access, 323 metaphysical, access,
322 shadow_ent, &new_page); 324 shadow_ent);
323 if (new_page && !metaphysical) { 325 if (!metaphysical) {
324 int r; 326 int r;
325 pt_element_t curr_pte; 327 pt_element_t curr_pte;
326 r = kvm_read_guest_atomic(vcpu->kvm, 328 r = kvm_read_guest_atomic(vcpu->kvm,
@@ -378,7 +380,7 @@ static int FNAME(page_fault)(struct kvm_vcpu *vcpu, gva_t addr,
378 if (r) 380 if (r)
379 return r; 381 return r;
380 382
381 down_read(&current->mm->mmap_sem); 383 down_read(&vcpu->kvm->slots_lock);
382 /* 384 /*
383 * Look up the shadow pte for the faulting address. 385 * Look up the shadow pte for the faulting address.
384 */ 386 */
@@ -392,11 +394,13 @@ static int FNAME(page_fault)(struct kvm_vcpu *vcpu, gva_t addr,
392 pgprintk("%s: guest page fault\n", __FUNCTION__); 394 pgprintk("%s: guest page fault\n", __FUNCTION__);
393 inject_page_fault(vcpu, addr, walker.error_code); 395 inject_page_fault(vcpu, addr, walker.error_code);
394 vcpu->arch.last_pt_write_count = 0; /* reset fork detector */ 396 vcpu->arch.last_pt_write_count = 0; /* reset fork detector */
395 up_read(&current->mm->mmap_sem); 397 up_read(&vcpu->kvm->slots_lock);
396 return 0; 398 return 0;
397 } 399 }
398 400
401 down_read(&current->mm->mmap_sem);
399 page = gfn_to_page(vcpu->kvm, walker.gfn); 402 page = gfn_to_page(vcpu->kvm, walker.gfn);
403 up_read(&current->mm->mmap_sem);
400 404
401 spin_lock(&vcpu->kvm->mmu_lock); 405 spin_lock(&vcpu->kvm->mmu_lock);
402 kvm_mmu_free_some_pages(vcpu); 406 kvm_mmu_free_some_pages(vcpu);
@@ -413,14 +417,14 @@ static int FNAME(page_fault)(struct kvm_vcpu *vcpu, gva_t addr,
413 */ 417 */
414 if (shadow_pte && is_io_pte(*shadow_pte)) { 418 if (shadow_pte && is_io_pte(*shadow_pte)) {
415 spin_unlock(&vcpu->kvm->mmu_lock); 419 spin_unlock(&vcpu->kvm->mmu_lock);
416 up_read(&current->mm->mmap_sem); 420 up_read(&vcpu->kvm->slots_lock);
417 return 1; 421 return 1;
418 } 422 }
419 423
420 ++vcpu->stat.pf_fixed; 424 ++vcpu->stat.pf_fixed;
421 kvm_mmu_audit(vcpu, "post page fault (fixed)"); 425 kvm_mmu_audit(vcpu, "post page fault (fixed)");
422 spin_unlock(&vcpu->kvm->mmu_lock); 426 spin_unlock(&vcpu->kvm->mmu_lock);
423 up_read(&current->mm->mmap_sem); 427 up_read(&vcpu->kvm->slots_lock);
424 428
425 return write_pt; 429 return write_pt;
426} 430}
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index de755cb1431d..1a582f1090e8 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -792,6 +792,10 @@ static void svm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
792 vcpu->arch.cr0 = cr0; 792 vcpu->arch.cr0 = cr0;
793 cr0 |= X86_CR0_PG | X86_CR0_WP; 793 cr0 |= X86_CR0_PG | X86_CR0_WP;
794 cr0 &= ~(X86_CR0_CD | X86_CR0_NW); 794 cr0 &= ~(X86_CR0_CD | X86_CR0_NW);
795 if (!vcpu->fpu_active) {
796 svm->vmcb->control.intercept_exceptions |= (1 << NM_VECTOR);
797 cr0 |= X86_CR0_TS;
798 }
795 svm->vmcb->save.cr0 = cr0; 799 svm->vmcb->save.cr0 = cr0;
796} 800}
797 801
@@ -1096,6 +1100,24 @@ static int svm_get_msr(struct kvm_vcpu *vcpu, unsigned ecx, u64 *data)
1096 case MSR_IA32_SYSENTER_ESP: 1100 case MSR_IA32_SYSENTER_ESP:
1097 *data = svm->vmcb->save.sysenter_esp; 1101 *data = svm->vmcb->save.sysenter_esp;
1098 break; 1102 break;
1103 /* Nobody will change the following 5 values in the VMCB so
1104 we can safely return them on rdmsr. They will always be 0
1105 until LBRV is implemented. */
1106 case MSR_IA32_DEBUGCTLMSR:
1107 *data = svm->vmcb->save.dbgctl;
1108 break;
1109 case MSR_IA32_LASTBRANCHFROMIP:
1110 *data = svm->vmcb->save.br_from;
1111 break;
1112 case MSR_IA32_LASTBRANCHTOIP:
1113 *data = svm->vmcb->save.br_to;
1114 break;
1115 case MSR_IA32_LASTINTFROMIP:
1116 *data = svm->vmcb->save.last_excp_from;
1117 break;
1118 case MSR_IA32_LASTINTTOIP:
1119 *data = svm->vmcb->save.last_excp_to;
1120 break;
1099 default: 1121 default:
1100 return kvm_get_msr_common(vcpu, ecx, data); 1122 return kvm_get_msr_common(vcpu, ecx, data);
1101 } 1123 }
@@ -1156,6 +1178,10 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, unsigned ecx, u64 data)
1156 case MSR_IA32_SYSENTER_ESP: 1178 case MSR_IA32_SYSENTER_ESP:
1157 svm->vmcb->save.sysenter_esp = data; 1179 svm->vmcb->save.sysenter_esp = data;
1158 break; 1180 break;
1181 case MSR_IA32_DEBUGCTLMSR:
1182 pr_unimpl(vcpu, "%s: MSR_IA32_DEBUGCTLMSR 0x%llx, nop\n",
1183 __FUNCTION__, data);
1184 break;
1159 case MSR_K7_EVNTSEL0: 1185 case MSR_K7_EVNTSEL0:
1160 case MSR_K7_EVNTSEL1: 1186 case MSR_K7_EVNTSEL1:
1161 case MSR_K7_EVNTSEL2: 1187 case MSR_K7_EVNTSEL2:
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index ad36447e696e..94ea724638fd 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -638,6 +638,7 @@ static void setup_msrs(struct vcpu_vmx *vmx)
638{ 638{
639 int save_nmsrs; 639 int save_nmsrs;
640 640
641 vmx_load_host_state(vmx);
641 save_nmsrs = 0; 642 save_nmsrs = 0;
642#ifdef CONFIG_X86_64 643#ifdef CONFIG_X86_64
643 if (is_long_mode(&vmx->vcpu)) { 644 if (is_long_mode(&vmx->vcpu)) {
@@ -1477,7 +1478,7 @@ static int alloc_apic_access_page(struct kvm *kvm)
1477 struct kvm_userspace_memory_region kvm_userspace_mem; 1478 struct kvm_userspace_memory_region kvm_userspace_mem;
1478 int r = 0; 1479 int r = 0;
1479 1480
1480 down_write(&current->mm->mmap_sem); 1481 down_write(&kvm->slots_lock);
1481 if (kvm->arch.apic_access_page) 1482 if (kvm->arch.apic_access_page)
1482 goto out; 1483 goto out;
1483 kvm_userspace_mem.slot = APIC_ACCESS_PAGE_PRIVATE_MEMSLOT; 1484 kvm_userspace_mem.slot = APIC_ACCESS_PAGE_PRIVATE_MEMSLOT;
@@ -1487,9 +1488,12 @@ static int alloc_apic_access_page(struct kvm *kvm)
1487 r = __kvm_set_memory_region(kvm, &kvm_userspace_mem, 0); 1488 r = __kvm_set_memory_region(kvm, &kvm_userspace_mem, 0);
1488 if (r) 1489 if (r)
1489 goto out; 1490 goto out;
1491
1492 down_read(&current->mm->mmap_sem);
1490 kvm->arch.apic_access_page = gfn_to_page(kvm, 0xfee00); 1493 kvm->arch.apic_access_page = gfn_to_page(kvm, 0xfee00);
1494 up_read(&current->mm->mmap_sem);
1491out: 1495out:
1492 up_write(&current->mm->mmap_sem); 1496 up_write(&kvm->slots_lock);
1493 return r; 1497 return r;
1494} 1498}
1495 1499
@@ -1602,9 +1606,6 @@ static int vmx_vcpu_setup(struct vcpu_vmx *vmx)
1602 vmcs_writel(CR0_GUEST_HOST_MASK, ~0UL); 1606 vmcs_writel(CR0_GUEST_HOST_MASK, ~0UL);
1603 vmcs_writel(CR4_GUEST_HOST_MASK, KVM_GUEST_CR4_MASK); 1607 vmcs_writel(CR4_GUEST_HOST_MASK, KVM_GUEST_CR4_MASK);
1604 1608
1605 if (vm_need_virtualize_apic_accesses(vmx->vcpu.kvm))
1606 if (alloc_apic_access_page(vmx->vcpu.kvm) != 0)
1607 return -ENOMEM;
1608 1609
1609 return 0; 1610 return 0;
1610} 1611}
@@ -2534,6 +2535,9 @@ static struct kvm_vcpu *vmx_create_vcpu(struct kvm *kvm, unsigned int id)
2534 put_cpu(); 2535 put_cpu();
2535 if (err) 2536 if (err)
2536 goto free_vmcs; 2537 goto free_vmcs;
2538 if (vm_need_virtualize_apic_accesses(kvm))
2539 if (alloc_apic_access_page(kvm) != 0)
2540 goto free_vmcs;
2537 2541
2538 return &vmx->vcpu; 2542 return &vmx->vcpu;
2539 2543
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index cf5308148689..6b01552bd1f1 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -46,6 +46,9 @@
46#define VM_STAT(x) offsetof(struct kvm, stat.x), KVM_STAT_VM 46#define VM_STAT(x) offsetof(struct kvm, stat.x), KVM_STAT_VM
47#define VCPU_STAT(x) offsetof(struct kvm_vcpu, stat.x), KVM_STAT_VCPU 47#define VCPU_STAT(x) offsetof(struct kvm_vcpu, stat.x), KVM_STAT_VCPU
48 48
49static int kvm_dev_ioctl_get_supported_cpuid(struct kvm_cpuid2 *cpuid,
50 struct kvm_cpuid_entry2 __user *entries);
51
49struct kvm_x86_ops *kvm_x86_ops; 52struct kvm_x86_ops *kvm_x86_ops;
50 53
51struct kvm_stats_debugfs_item debugfs_entries[] = { 54struct kvm_stats_debugfs_item debugfs_entries[] = {
@@ -181,7 +184,7 @@ int load_pdptrs(struct kvm_vcpu *vcpu, unsigned long cr3)
181 int ret; 184 int ret;
182 u64 pdpte[ARRAY_SIZE(vcpu->arch.pdptrs)]; 185 u64 pdpte[ARRAY_SIZE(vcpu->arch.pdptrs)];
183 186
184 down_read(&current->mm->mmap_sem); 187 down_read(&vcpu->kvm->slots_lock);
185 ret = kvm_read_guest_page(vcpu->kvm, pdpt_gfn, pdpte, 188 ret = kvm_read_guest_page(vcpu->kvm, pdpt_gfn, pdpte,
186 offset * sizeof(u64), sizeof(pdpte)); 189 offset * sizeof(u64), sizeof(pdpte));
187 if (ret < 0) { 190 if (ret < 0) {
@@ -198,7 +201,7 @@ int load_pdptrs(struct kvm_vcpu *vcpu, unsigned long cr3)
198 201
199 memcpy(vcpu->arch.pdptrs, pdpte, sizeof(vcpu->arch.pdptrs)); 202 memcpy(vcpu->arch.pdptrs, pdpte, sizeof(vcpu->arch.pdptrs));
200out: 203out:
201 up_read(&current->mm->mmap_sem); 204 up_read(&vcpu->kvm->slots_lock);
202 205
203 return ret; 206 return ret;
204} 207}
@@ -212,13 +215,13 @@ static bool pdptrs_changed(struct kvm_vcpu *vcpu)
212 if (is_long_mode(vcpu) || !is_pae(vcpu)) 215 if (is_long_mode(vcpu) || !is_pae(vcpu))
213 return false; 216 return false;
214 217
215 down_read(&current->mm->mmap_sem); 218 down_read(&vcpu->kvm->slots_lock);
216 r = kvm_read_guest(vcpu->kvm, vcpu->arch.cr3 & ~31u, pdpte, sizeof(pdpte)); 219 r = kvm_read_guest(vcpu->kvm, vcpu->arch.cr3 & ~31u, pdpte, sizeof(pdpte));
217 if (r < 0) 220 if (r < 0)
218 goto out; 221 goto out;
219 changed = memcmp(pdpte, vcpu->arch.pdptrs, sizeof(pdpte)) != 0; 222 changed = memcmp(pdpte, vcpu->arch.pdptrs, sizeof(pdpte)) != 0;
220out: 223out:
221 up_read(&current->mm->mmap_sem); 224 up_read(&vcpu->kvm->slots_lock);
222 225
223 return changed; 226 return changed;
224} 227}
@@ -356,7 +359,7 @@ void set_cr3(struct kvm_vcpu *vcpu, unsigned long cr3)
356 */ 359 */
357 } 360 }
358 361
359 down_read(&current->mm->mmap_sem); 362 down_read(&vcpu->kvm->slots_lock);
360 /* 363 /*
361 * Does the new cr3 value map to physical memory? (Note, we 364 * Does the new cr3 value map to physical memory? (Note, we
362 * catch an invalid cr3 even in real-mode, because it would 365 * catch an invalid cr3 even in real-mode, because it would
@@ -372,7 +375,7 @@ void set_cr3(struct kvm_vcpu *vcpu, unsigned long cr3)
372 vcpu->arch.cr3 = cr3; 375 vcpu->arch.cr3 = cr3;
373 vcpu->arch.mmu.new_cr3(vcpu); 376 vcpu->arch.mmu.new_cr3(vcpu);
374 } 377 }
375 up_read(&current->mm->mmap_sem); 378 up_read(&vcpu->kvm->slots_lock);
376} 379}
377EXPORT_SYMBOL_GPL(set_cr3); 380EXPORT_SYMBOL_GPL(set_cr3);
378 381
@@ -484,6 +487,10 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
484 pr_unimpl(vcpu, "%s: MSR_IA32_MCG_STATUS 0x%llx, nop\n", 487 pr_unimpl(vcpu, "%s: MSR_IA32_MCG_STATUS 0x%llx, nop\n",
485 __FUNCTION__, data); 488 __FUNCTION__, data);
486 break; 489 break;
490 case MSR_IA32_MCG_CTL:
491 pr_unimpl(vcpu, "%s: MSR_IA32_MCG_CTL 0x%llx, nop\n",
492 __FUNCTION__, data);
493 break;
487 case MSR_IA32_UCODE_REV: 494 case MSR_IA32_UCODE_REV:
488 case MSR_IA32_UCODE_WRITE: 495 case MSR_IA32_UCODE_WRITE:
489 case 0x200 ... 0x2ff: /* MTRRs */ 496 case 0x200 ... 0x2ff: /* MTRRs */
@@ -526,6 +533,7 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata)
526 case MSR_IA32_MC0_CTL: 533 case MSR_IA32_MC0_CTL:
527 case MSR_IA32_MCG_STATUS: 534 case MSR_IA32_MCG_STATUS:
528 case MSR_IA32_MCG_CAP: 535 case MSR_IA32_MCG_CAP:
536 case MSR_IA32_MCG_CTL:
529 case MSR_IA32_MC0_MISC: 537 case MSR_IA32_MC0_MISC:
530 case MSR_IA32_MC0_MISC+4: 538 case MSR_IA32_MC0_MISC+4:
531 case MSR_IA32_MC0_MISC+8: 539 case MSR_IA32_MC0_MISC+8:
@@ -727,6 +735,24 @@ long kvm_arch_dev_ioctl(struct file *filp,
727 r = 0; 735 r = 0;
728 break; 736 break;
729 } 737 }
738 case KVM_GET_SUPPORTED_CPUID: {
739 struct kvm_cpuid2 __user *cpuid_arg = argp;
740 struct kvm_cpuid2 cpuid;
741
742 r = -EFAULT;
743 if (copy_from_user(&cpuid, cpuid_arg, sizeof cpuid))
744 goto out;
745 r = kvm_dev_ioctl_get_supported_cpuid(&cpuid,
746 cpuid_arg->entries);
747 if (r)
748 goto out;
749
750 r = -EFAULT;
751 if (copy_to_user(cpuid_arg, &cpuid, sizeof cpuid))
752 goto out;
753 r = 0;
754 break;
755 }
730 default: 756 default:
731 r = -EINVAL; 757 r = -EINVAL;
732 } 758 }
@@ -974,8 +1000,7 @@ static void do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function,
974 put_cpu(); 1000 put_cpu();
975} 1001}
976 1002
977static int kvm_vm_ioctl_get_supported_cpuid(struct kvm *kvm, 1003static int kvm_dev_ioctl_get_supported_cpuid(struct kvm_cpuid2 *cpuid,
978 struct kvm_cpuid2 *cpuid,
979 struct kvm_cpuid_entry2 __user *entries) 1004 struct kvm_cpuid_entry2 __user *entries)
980{ 1005{
981 struct kvm_cpuid_entry2 *cpuid_entries; 1006 struct kvm_cpuid_entry2 *cpuid_entries;
@@ -1207,12 +1232,12 @@ static int kvm_vm_ioctl_set_nr_mmu_pages(struct kvm *kvm,
1207 if (kvm_nr_mmu_pages < KVM_MIN_ALLOC_MMU_PAGES) 1232 if (kvm_nr_mmu_pages < KVM_MIN_ALLOC_MMU_PAGES)
1208 return -EINVAL; 1233 return -EINVAL;
1209 1234
1210 down_write(&current->mm->mmap_sem); 1235 down_write(&kvm->slots_lock);
1211 1236
1212 kvm_mmu_change_mmu_pages(kvm, kvm_nr_mmu_pages); 1237 kvm_mmu_change_mmu_pages(kvm, kvm_nr_mmu_pages);
1213 kvm->arch.n_requested_mmu_pages = kvm_nr_mmu_pages; 1238 kvm->arch.n_requested_mmu_pages = kvm_nr_mmu_pages;
1214 1239
1215 up_write(&current->mm->mmap_sem); 1240 up_write(&kvm->slots_lock);
1216 return 0; 1241 return 0;
1217} 1242}
1218 1243
@@ -1261,7 +1286,7 @@ static int kvm_vm_ioctl_set_memory_alias(struct kvm *kvm,
1261 < alias->target_phys_addr) 1286 < alias->target_phys_addr)
1262 goto out; 1287 goto out;
1263 1288
1264 down_write(&current->mm->mmap_sem); 1289 down_write(&kvm->slots_lock);
1265 1290
1266 p = &kvm->arch.aliases[alias->slot]; 1291 p = &kvm->arch.aliases[alias->slot];
1267 p->base_gfn = alias->guest_phys_addr >> PAGE_SHIFT; 1292 p->base_gfn = alias->guest_phys_addr >> PAGE_SHIFT;
@@ -1275,7 +1300,7 @@ static int kvm_vm_ioctl_set_memory_alias(struct kvm *kvm,
1275 1300
1276 kvm_mmu_zap_all(kvm); 1301 kvm_mmu_zap_all(kvm);
1277 1302
1278 up_write(&current->mm->mmap_sem); 1303 up_write(&kvm->slots_lock);
1279 1304
1280 return 0; 1305 return 0;
1281 1306
@@ -1351,7 +1376,7 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
1351 struct kvm_memory_slot *memslot; 1376 struct kvm_memory_slot *memslot;
1352 int is_dirty = 0; 1377 int is_dirty = 0;
1353 1378
1354 down_write(&current->mm->mmap_sem); 1379 down_write(&kvm->slots_lock);
1355 1380
1356 r = kvm_get_dirty_log(kvm, log, &is_dirty); 1381 r = kvm_get_dirty_log(kvm, log, &is_dirty);
1357 if (r) 1382 if (r)
@@ -1367,7 +1392,7 @@ int kvm_vm_ioctl_get_dirty_log(struct kvm *kvm,
1367 } 1392 }
1368 r = 0; 1393 r = 0;
1369out: 1394out:
1370 up_write(&current->mm->mmap_sem); 1395 up_write(&kvm->slots_lock);
1371 return r; 1396 return r;
1372} 1397}
1373 1398
@@ -1487,24 +1512,6 @@ long kvm_arch_vm_ioctl(struct file *filp,
1487 r = 0; 1512 r = 0;
1488 break; 1513 break;
1489 } 1514 }
1490 case KVM_GET_SUPPORTED_CPUID: {
1491 struct kvm_cpuid2 __user *cpuid_arg = argp;
1492 struct kvm_cpuid2 cpuid;
1493
1494 r = -EFAULT;
1495 if (copy_from_user(&cpuid, cpuid_arg, sizeof cpuid))
1496 goto out;
1497 r = kvm_vm_ioctl_get_supported_cpuid(kvm, &cpuid,
1498 cpuid_arg->entries);
1499 if (r)
1500 goto out;
1501
1502 r = -EFAULT;
1503 if (copy_to_user(cpuid_arg, &cpuid, sizeof cpuid))
1504 goto out;
1505 r = 0;
1506 break;
1507 }
1508 default: 1515 default:
1509 ; 1516 ;
1510 } 1517 }
@@ -1563,7 +1570,7 @@ int emulator_read_std(unsigned long addr,
1563 void *data = val; 1570 void *data = val;
1564 int r = X86EMUL_CONTINUE; 1571 int r = X86EMUL_CONTINUE;
1565 1572
1566 down_read(&current->mm->mmap_sem); 1573 down_read(&vcpu->kvm->slots_lock);
1567 while (bytes) { 1574 while (bytes) {
1568 gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr); 1575 gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
1569 unsigned offset = addr & (PAGE_SIZE-1); 1576 unsigned offset = addr & (PAGE_SIZE-1);
@@ -1585,7 +1592,7 @@ int emulator_read_std(unsigned long addr,
1585 addr += tocopy; 1592 addr += tocopy;
1586 } 1593 }
1587out: 1594out:
1588 up_read(&current->mm->mmap_sem); 1595 up_read(&vcpu->kvm->slots_lock);
1589 return r; 1596 return r;
1590} 1597}
1591EXPORT_SYMBOL_GPL(emulator_read_std); 1598EXPORT_SYMBOL_GPL(emulator_read_std);
@@ -1604,9 +1611,9 @@ static int emulator_read_emulated(unsigned long addr,
1604 return X86EMUL_CONTINUE; 1611 return X86EMUL_CONTINUE;
1605 } 1612 }
1606 1613
1607 down_read(&current->mm->mmap_sem); 1614 down_read(&vcpu->kvm->slots_lock);
1608 gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr); 1615 gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
1609 up_read(&current->mm->mmap_sem); 1616 up_read(&vcpu->kvm->slots_lock);
1610 1617
1611 /* For APIC access vmexit */ 1618 /* For APIC access vmexit */
1612 if ((gpa & PAGE_MASK) == APIC_DEFAULT_PHYS_BASE) 1619 if ((gpa & PAGE_MASK) == APIC_DEFAULT_PHYS_BASE)
@@ -1644,14 +1651,14 @@ static int emulator_write_phys(struct kvm_vcpu *vcpu, gpa_t gpa,
1644{ 1651{
1645 int ret; 1652 int ret;
1646 1653
1647 down_read(&current->mm->mmap_sem); 1654 down_read(&vcpu->kvm->slots_lock);
1648 ret = kvm_write_guest(vcpu->kvm, gpa, val, bytes); 1655 ret = kvm_write_guest(vcpu->kvm, gpa, val, bytes);
1649 if (ret < 0) { 1656 if (ret < 0) {
1650 up_read(&current->mm->mmap_sem); 1657 up_read(&vcpu->kvm->slots_lock);
1651 return 0; 1658 return 0;
1652 } 1659 }
1653 kvm_mmu_pte_write(vcpu, gpa, val, bytes); 1660 kvm_mmu_pte_write(vcpu, gpa, val, bytes);
1654 up_read(&current->mm->mmap_sem); 1661 up_read(&vcpu->kvm->slots_lock);
1655 return 1; 1662 return 1;
1656} 1663}
1657 1664
@@ -1663,9 +1670,9 @@ static int emulator_write_emulated_onepage(unsigned long addr,
1663 struct kvm_io_device *mmio_dev; 1670 struct kvm_io_device *mmio_dev;
1664 gpa_t gpa; 1671 gpa_t gpa;
1665 1672
1666 down_read(&current->mm->mmap_sem); 1673 down_read(&vcpu->kvm->slots_lock);
1667 gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr); 1674 gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
1668 up_read(&current->mm->mmap_sem); 1675 up_read(&vcpu->kvm->slots_lock);
1669 1676
1670 if (gpa == UNMAPPED_GVA) { 1677 if (gpa == UNMAPPED_GVA) {
1671 kvm_inject_page_fault(vcpu, addr, 2); 1678 kvm_inject_page_fault(vcpu, addr, 2);
@@ -1742,7 +1749,7 @@ static int emulator_cmpxchg_emulated(unsigned long addr,
1742 char *kaddr; 1749 char *kaddr;
1743 u64 val; 1750 u64 val;
1744 1751
1745 down_read(&current->mm->mmap_sem); 1752 down_read(&vcpu->kvm->slots_lock);
1746 gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr); 1753 gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
1747 1754
1748 if (gpa == UNMAPPED_GVA || 1755 if (gpa == UNMAPPED_GVA ||
@@ -1753,13 +1760,17 @@ static int emulator_cmpxchg_emulated(unsigned long addr,
1753 goto emul_write; 1760 goto emul_write;
1754 1761
1755 val = *(u64 *)new; 1762 val = *(u64 *)new;
1763
1764 down_read(&current->mm->mmap_sem);
1756 page = gfn_to_page(vcpu->kvm, gpa >> PAGE_SHIFT); 1765 page = gfn_to_page(vcpu->kvm, gpa >> PAGE_SHIFT);
1766 up_read(&current->mm->mmap_sem);
1767
1757 kaddr = kmap_atomic(page, KM_USER0); 1768 kaddr = kmap_atomic(page, KM_USER0);
1758 set_64bit((u64 *)(kaddr + offset_in_page(gpa)), val); 1769 set_64bit((u64 *)(kaddr + offset_in_page(gpa)), val);
1759 kunmap_atomic(kaddr, KM_USER0); 1770 kunmap_atomic(kaddr, KM_USER0);
1760 kvm_release_page_dirty(page); 1771 kvm_release_page_dirty(page);
1761 emul_write: 1772 emul_write:
1762 up_read(&current->mm->mmap_sem); 1773 up_read(&vcpu->kvm->slots_lock);
1763 } 1774 }
1764#endif 1775#endif
1765 1776
@@ -2152,10 +2163,10 @@ int kvm_emulate_pio_string(struct kvm_vcpu *vcpu, struct kvm_run *run, int in,
2152 kvm_x86_ops->skip_emulated_instruction(vcpu); 2163 kvm_x86_ops->skip_emulated_instruction(vcpu);
2153 2164
2154 for (i = 0; i < nr_pages; ++i) { 2165 for (i = 0; i < nr_pages; ++i) {
2155 down_read(&current->mm->mmap_sem); 2166 down_read(&vcpu->kvm->slots_lock);
2156 page = gva_to_page(vcpu, address + i * PAGE_SIZE); 2167 page = gva_to_page(vcpu, address + i * PAGE_SIZE);
2157 vcpu->arch.pio.guest_pages[i] = page; 2168 vcpu->arch.pio.guest_pages[i] = page;
2158 up_read(&current->mm->mmap_sem); 2169 up_read(&vcpu->kvm->slots_lock);
2159 if (!page) { 2170 if (!page) {
2160 kvm_inject_gp(vcpu, 0); 2171 kvm_inject_gp(vcpu, 0);
2161 free_pio_guest_pages(vcpu); 2172 free_pio_guest_pages(vcpu);
@@ -2478,8 +2489,9 @@ static void vapic_enter(struct kvm_vcpu *vcpu)
2478 2489
2479 down_read(&current->mm->mmap_sem); 2490 down_read(&current->mm->mmap_sem);
2480 page = gfn_to_page(vcpu->kvm, apic->vapic_addr >> PAGE_SHIFT); 2491 page = gfn_to_page(vcpu->kvm, apic->vapic_addr >> PAGE_SHIFT);
2481 vcpu->arch.apic->vapic_page = page;
2482 up_read(&current->mm->mmap_sem); 2492 up_read(&current->mm->mmap_sem);
2493
2494 vcpu->arch.apic->vapic_page = page;
2483} 2495}
2484 2496
2485static void vapic_exit(struct kvm_vcpu *vcpu) 2497static void vapic_exit(struct kvm_vcpu *vcpu)
@@ -2861,8 +2873,8 @@ int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu,
2861 kvm_x86_ops->decache_cr4_guest_bits(vcpu); 2873 kvm_x86_ops->decache_cr4_guest_bits(vcpu);
2862 2874
2863 mmu_reset_needed |= vcpu->arch.cr0 != sregs->cr0; 2875 mmu_reset_needed |= vcpu->arch.cr0 != sregs->cr0;
2864 vcpu->arch.cr0 = sregs->cr0;
2865 kvm_x86_ops->set_cr0(vcpu, sregs->cr0); 2876 kvm_x86_ops->set_cr0(vcpu, sregs->cr0);
2877 vcpu->arch.cr0 = sregs->cr0;
2866 2878
2867 mmu_reset_needed |= vcpu->arch.cr4 != sregs->cr4; 2879 mmu_reset_needed |= vcpu->arch.cr4 != sregs->cr4;
2868 kvm_x86_ops->set_cr4(vcpu, sregs->cr4); 2880 kvm_x86_ops->set_cr4(vcpu, sregs->cr4);
@@ -2952,9 +2964,9 @@ int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu,
2952 gpa_t gpa; 2964 gpa_t gpa;
2953 2965
2954 vcpu_load(vcpu); 2966 vcpu_load(vcpu);
2955 down_read(&current->mm->mmap_sem); 2967 down_read(&vcpu->kvm->slots_lock);
2956 gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, vaddr); 2968 gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, vaddr);
2957 up_read(&current->mm->mmap_sem); 2969 up_read(&vcpu->kvm->slots_lock);
2958 tr->physical_address = gpa; 2970 tr->physical_address = gpa;
2959 tr->valid = gpa != UNMAPPED_GVA; 2971 tr->valid = gpa != UNMAPPED_GVA;
2960 tr->writeable = 1; 2972 tr->writeable = 1;
@@ -3227,11 +3239,13 @@ int kvm_arch_set_memory_region(struct kvm *kvm,
3227 */ 3239 */
3228 if (!user_alloc) { 3240 if (!user_alloc) {
3229 if (npages && !old.rmap) { 3241 if (npages && !old.rmap) {
3242 down_write(&current->mm->mmap_sem);
3230 memslot->userspace_addr = do_mmap(NULL, 0, 3243 memslot->userspace_addr = do_mmap(NULL, 0,
3231 npages * PAGE_SIZE, 3244 npages * PAGE_SIZE,
3232 PROT_READ | PROT_WRITE, 3245 PROT_READ | PROT_WRITE,
3233 MAP_SHARED | MAP_ANONYMOUS, 3246 MAP_SHARED | MAP_ANONYMOUS,
3234 0); 3247 0);
3248 up_write(&current->mm->mmap_sem);
3235 3249
3236 if (IS_ERR((void *)memslot->userspace_addr)) 3250 if (IS_ERR((void *)memslot->userspace_addr))
3237 return PTR_ERR((void *)memslot->userspace_addr); 3251 return PTR_ERR((void *)memslot->userspace_addr);
@@ -3239,8 +3253,10 @@ int kvm_arch_set_memory_region(struct kvm *kvm,
3239 if (!old.user_alloc && old.rmap) { 3253 if (!old.user_alloc && old.rmap) {
3240 int ret; 3254 int ret;
3241 3255
3256 down_write(&current->mm->mmap_sem);
3242 ret = do_munmap(current->mm, old.userspace_addr, 3257 ret = do_munmap(current->mm, old.userspace_addr,
3243 old.npages * PAGE_SIZE); 3258 old.npages * PAGE_SIZE);
3259 up_write(&current->mm->mmap_sem);
3244 if (ret < 0) 3260 if (ret < 0)
3245 printk(KERN_WARNING 3261 printk(KERN_WARNING
3246 "kvm_vm_ioctl_set_memory_region: " 3262 "kvm_vm_ioctl_set_memory_region: "
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
index 5afdde4895dc..a104c532ff70 100644
--- a/arch/x86/lguest/boot.c
+++ b/arch/x86/lguest/boot.c
@@ -57,6 +57,7 @@
57#include <linux/lguest_launcher.h> 57#include <linux/lguest_launcher.h>
58#include <linux/virtio_console.h> 58#include <linux/virtio_console.h>
59#include <linux/pm.h> 59#include <linux/pm.h>
60#include <asm/lguest.h>
60#include <asm/paravirt.h> 61#include <asm/paravirt.h>
61#include <asm/param.h> 62#include <asm/param.h>
62#include <asm/page.h> 63#include <asm/page.h>
@@ -75,15 +76,6 @@
75 * behaving in simplified but equivalent ways. In particular, the Guest is the 76 * behaving in simplified but equivalent ways. In particular, the Guest is the
76 * same kernel as the Host (or at least, built from the same source code). :*/ 77 * same kernel as the Host (or at least, built from the same source code). :*/
77 78
78/* Declarations for definitions in lguest_guest.S */
79extern char lguest_noirq_start[], lguest_noirq_end[];
80extern const char lgstart_cli[], lgend_cli[];
81extern const char lgstart_sti[], lgend_sti[];
82extern const char lgstart_popf[], lgend_popf[];
83extern const char lgstart_pushf[], lgend_pushf[];
84extern const char lgstart_iret[], lgend_iret[];
85extern void lguest_iret(void);
86
87struct lguest_data lguest_data = { 79struct lguest_data lguest_data = {
88 .hcall_status = { [0 ... LHCALL_RING_SIZE-1] = 0xFF }, 80 .hcall_status = { [0 ... LHCALL_RING_SIZE-1] = 0xFF },
89 .noirq_start = (u32)lguest_noirq_start, 81 .noirq_start = (u32)lguest_noirq_start,
@@ -92,7 +84,6 @@ struct lguest_data lguest_data = {
92 .blocked_interrupts = { 1 }, /* Block timer interrupts */ 84 .blocked_interrupts = { 1 }, /* Block timer interrupts */
93 .syscall_vec = SYSCALL_VECTOR, 85 .syscall_vec = SYSCALL_VECTOR,
94}; 86};
95static cycle_t clock_base;
96 87
97/*G:037 async_hcall() is pretty simple: I'm quite proud of it really. We have a 88/*G:037 async_hcall() is pretty simple: I'm quite proud of it really. We have a
98 * ring buffer of stored hypercalls which the Host will run though next time we 89 * ring buffer of stored hypercalls which the Host will run though next time we
@@ -335,8 +326,8 @@ static void lguest_cpuid(unsigned int *ax, unsigned int *bx,
335 case 1: /* Basic feature request. */ 326 case 1: /* Basic feature request. */
336 /* We only allow kernel to see SSE3, CMPXCHG16B and SSSE3 */ 327 /* We only allow kernel to see SSE3, CMPXCHG16B and SSSE3 */
337 *cx &= 0x00002201; 328 *cx &= 0x00002201;
338 /* SSE, SSE2, FXSR, MMX, CMOV, CMPXCHG8B, FPU. */ 329 /* SSE, SSE2, FXSR, MMX, CMOV, CMPXCHG8B, TSC, FPU. */
339 *dx &= 0x07808101; 330 *dx &= 0x07808111;
340 /* The Host can do a nice optimization if it knows that the 331 /* The Host can do a nice optimization if it knows that the
341 * kernel mappings (addresses above 0xC0000000 or whatever 332 * kernel mappings (addresses above 0xC0000000 or whatever
342 * PAGE_OFFSET is set to) haven't changed. But Linux calls 333 * PAGE_OFFSET is set to) haven't changed. But Linux calls
@@ -603,19 +594,25 @@ static unsigned long lguest_get_wallclock(void)
603 return lguest_data.time.tv_sec; 594 return lguest_data.time.tv_sec;
604} 595}
605 596
597/* The TSC is a Time Stamp Counter. The Host tells us what speed it runs at,
598 * or 0 if it's unusable as a reliable clock source. This matches what we want
599 * here: if we return 0 from this function, the x86 TSC clock will not register
600 * itself. */
601static unsigned long lguest_cpu_khz(void)
602{
603 return lguest_data.tsc_khz;
604}
605
606/* If we can't use the TSC, the kernel falls back to our "lguest_clock", where
607 * we read the time value given to us by the Host. */
606static cycle_t lguest_clock_read(void) 608static cycle_t lguest_clock_read(void)
607{ 609{
608 unsigned long sec, nsec; 610 unsigned long sec, nsec;
609 611
610 /* If the Host tells the TSC speed, we can trust that. */ 612 /* Since the time is in two parts (seconds and nanoseconds), we risk
611 if (lguest_data.tsc_khz) 613 * reading it just as it's changing from 99 & 0.999999999 to 100 and 0,
612 return native_read_tsc(); 614 * and getting 99 and 0. As Linux tends to come apart under the stress
613 615 * of time travel, we must be careful: */
614 /* If we can't use the TSC, we read the time value written by the Host.
615 * Since it's in two parts (seconds and nanoseconds), we risk reading
616 * it just as it's changing from 99 & 0.999999999 to 100 and 0, and
617 * getting 99 and 0. As Linux tends to come apart under the stress of
618 * time travel, we must be careful: */
619 do { 616 do {
620 /* First we read the seconds part. */ 617 /* First we read the seconds part. */
621 sec = lguest_data.time.tv_sec; 618 sec = lguest_data.time.tv_sec;
@@ -630,14 +627,14 @@ static cycle_t lguest_clock_read(void)
630 /* Now if the seconds part has changed, try again. */ 627 /* Now if the seconds part has changed, try again. */
631 } while (unlikely(lguest_data.time.tv_sec != sec)); 628 } while (unlikely(lguest_data.time.tv_sec != sec));
632 629
633 /* Our non-TSC clock is in real nanoseconds. */ 630 /* Our lguest clock is in real nanoseconds. */
634 return sec*1000000000ULL + nsec; 631 return sec*1000000000ULL + nsec;
635} 632}
636 633
637/* This is what we tell the kernel is our clocksource. */ 634/* This is the fallback clocksource: lower priority than the TSC clocksource. */
638static struct clocksource lguest_clock = { 635static struct clocksource lguest_clock = {
639 .name = "lguest", 636 .name = "lguest",
640 .rating = 400, 637 .rating = 200,
641 .read = lguest_clock_read, 638 .read = lguest_clock_read,
642 .mask = CLOCKSOURCE_MASK(64), 639 .mask = CLOCKSOURCE_MASK(64),
643 .mult = 1 << 22, 640 .mult = 1 << 22,
@@ -645,12 +642,6 @@ static struct clocksource lguest_clock = {
645 .flags = CLOCK_SOURCE_IS_CONTINUOUS, 642 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
646}; 643};
647 644
648/* The "scheduler clock" is just our real clock, adjusted to start at zero */
649static unsigned long long lguest_sched_clock(void)
650{
651 return cyc2ns(&lguest_clock, lguest_clock_read() - clock_base);
652}
653
654/* We also need a "struct clock_event_device": Linux asks us to set it to go 645/* We also need a "struct clock_event_device": Linux asks us to set it to go
655 * off some time in the future. Actually, James Morris figured all this out, I 646 * off some time in the future. Actually, James Morris figured all this out, I
656 * just applied the patch. */ 647 * just applied the patch. */
@@ -720,19 +711,8 @@ static void lguest_time_init(void)
720 /* Set up the timer interrupt (0) to go to our simple timer routine */ 711 /* Set up the timer interrupt (0) to go to our simple timer routine */
721 set_irq_handler(0, lguest_time_irq); 712 set_irq_handler(0, lguest_time_irq);
722 713
723 /* Our clock structure looks like arch/x86/kernel/tsc_32.c if we can
724 * use the TSC, otherwise it's a dumb nanosecond-resolution clock.
725 * Either way, the "rating" is set so high that it's always chosen over
726 * any other clocksource. */
727 if (lguest_data.tsc_khz)
728 lguest_clock.mult = clocksource_khz2mult(lguest_data.tsc_khz,
729 lguest_clock.shift);
730 clock_base = lguest_clock_read();
731 clocksource_register(&lguest_clock); 714 clocksource_register(&lguest_clock);
732 715
733 /* Now we've set up our clock, we can use it as the scheduler clock */
734 pv_time_ops.sched_clock = lguest_sched_clock;
735
736 /* We can't set cpumask in the initializer: damn C limitations! Set it 716 /* We can't set cpumask in the initializer: damn C limitations! Set it
737 * here and register our timer device. */ 717 * here and register our timer device. */
738 lguest_clockevent.cpumask = cpumask_of_cpu(0); 718 lguest_clockevent.cpumask = cpumask_of_cpu(0);
@@ -1003,6 +983,7 @@ __init void lguest_init(void)
1003 /* time operations */ 983 /* time operations */
1004 pv_time_ops.get_wallclock = lguest_get_wallclock; 984 pv_time_ops.get_wallclock = lguest_get_wallclock;
1005 pv_time_ops.time_init = lguest_time_init; 985 pv_time_ops.time_init = lguest_time_init;
986 pv_time_ops.get_cpu_khz = lguest_cpu_khz;
1006 987
1007 /* Now is a good time to look at the implementations of these functions 988 /* Now is a good time to look at the implementations of these functions
1008 * before returning to the rest of lguest_init(). */ 989 * before returning to the rest of lguest_init(). */
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index bb652f5a93fb..a02a14f0f324 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -172,8 +172,9 @@ set_pte_phys(unsigned long vaddr, unsigned long phys, pgprot_t prot)
172} 172}
173 173
174/* 174/*
175 * The head.S code sets up the kernel high mapping from: 175 * The head.S code sets up the kernel high mapping:
176 * __START_KERNEL_map to __START_KERNEL_map + KERNEL_TEXT_SIZE 176 *
177 * from __START_KERNEL_map to __START_KERNEL_map + size (== _end-_text)
177 * 178 *
178 * phys_addr holds the negative offset to the kernel, which is added 179 * phys_addr holds the negative offset to the kernel, which is added
179 * to the compile time generated pmds. This results in invalid pmds up 180 * to the compile time generated pmds. This results in invalid pmds up
@@ -515,14 +516,6 @@ void __init mem_init(void)
515 516
516 /* clear_bss() already clear the empty_zero_page */ 517 /* clear_bss() already clear the empty_zero_page */
517 518
518 /* temporary debugging - double check it's true: */
519 {
520 int i;
521
522 for (i = 0; i < 1024; i++)
523 WARN_ON_ONCE(empty_zero_page[i]);
524 }
525
526 reservedpages = 0; 519 reservedpages = 0;
527 520
528 /* this will put all low memory onto the freelists */ 521 /* this will put all low memory onto the freelists */
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index 882328efc3db..8fe576baa148 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -134,8 +134,6 @@ static void __iomem *__ioremap(unsigned long phys_addr, unsigned long size,
134 return NULL; 134 return NULL;
135 } 135 }
136 136
137 WARN_ON_ONCE(page_is_ram(pfn));
138
139 switch (mode) { 137 switch (mode) {
140 case IOR_MODE_UNCACHED: 138 case IOR_MODE_UNCACHED:
141 default: 139 default:
@@ -162,7 +160,7 @@ static void __iomem *__ioremap(unsigned long phys_addr, unsigned long size,
162 area->phys_addr = phys_addr; 160 area->phys_addr = phys_addr;
163 vaddr = (unsigned long) area->addr; 161 vaddr = (unsigned long) area->addr;
164 if (ioremap_page_range(vaddr, vaddr + size, phys_addr, prot)) { 162 if (ioremap_page_range(vaddr, vaddr + size, phys_addr, prot)) {
165 remove_vm_area((void *)(vaddr & PAGE_MASK)); 163 free_vm_area(area);
166 return NULL; 164 return NULL;
167 } 165 }
168 166
diff --git a/arch/x86/mm/numa_64.c b/arch/x86/mm/numa_64.c
index 59898fb0a4aa..8ccfee10f5b5 100644
--- a/arch/x86/mm/numa_64.c
+++ b/arch/x86/mm/numa_64.c
@@ -622,13 +622,17 @@ void __init init_cpu_to_node(void)
622 int i; 622 int i;
623 623
624 for (i = 0; i < NR_CPUS; i++) { 624 for (i = 0; i < NR_CPUS; i++) {
625 int node;
625 u16 apicid = x86_cpu_to_apicid_init[i]; 626 u16 apicid = x86_cpu_to_apicid_init[i];
626 627
627 if (apicid == BAD_APICID) 628 if (apicid == BAD_APICID)
628 continue; 629 continue;
629 if (apicid_to_node[apicid] == NUMA_NO_NODE) 630 node = apicid_to_node[apicid];
631 if (node == NUMA_NO_NODE)
630 continue; 632 continue;
631 numa_set_node(i, apicid_to_node[apicid]); 633 if (!node_online(node))
634 continue;
635 numa_set_node(i, node);
632 } 636 }
633} 637}
634 638
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index 464d8fc21ce6..14e48b5a94ba 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -44,6 +44,12 @@ static inline unsigned long highmap_end_pfn(void)
44 44
45#endif 45#endif
46 46
47#ifdef CONFIG_DEBUG_PAGEALLOC
48# define debug_pagealloc 1
49#else
50# define debug_pagealloc 0
51#endif
52
47static inline int 53static inline int
48within(unsigned long addr, unsigned long start, unsigned long end) 54within(unsigned long addr, unsigned long start, unsigned long end)
49{ 55{
@@ -355,45 +361,48 @@ out_unlock:
355 361
356static LIST_HEAD(page_pool); 362static LIST_HEAD(page_pool);
357static unsigned long pool_size, pool_pages, pool_low; 363static unsigned long pool_size, pool_pages, pool_low;
358static unsigned long pool_used, pool_failed, pool_refill; 364static unsigned long pool_used, pool_failed;
359 365
360static void cpa_fill_pool(void) 366static void cpa_fill_pool(struct page **ret)
361{ 367{
362 struct page *p;
363 gfp_t gfp = GFP_KERNEL; 368 gfp_t gfp = GFP_KERNEL;
369 unsigned long flags;
370 struct page *p;
364 371
365 /* Do not allocate from interrupt context */
366 if (in_irq() || irqs_disabled())
367 return;
368 /* 372 /*
369 * Check unlocked. I does not matter when we have one more 373 * Avoid recursion (on debug-pagealloc) and also signal
370 * page in the pool. The bit lock avoids recursive pool 374 * our priority to get to these pagetables:
371 * allocations:
372 */ 375 */
373 if (pool_pages >= pool_size || test_and_set_bit_lock(0, &pool_refill)) 376 if (current->flags & PF_MEMALLOC)
374 return; 377 return;
378 current->flags |= PF_MEMALLOC;
375 379
376#ifdef CONFIG_DEBUG_PAGEALLOC
377 /* 380 /*
378 * We could do: 381 * Allocate atomically from atomic contexts:
379 * gfp = in_atomic() ? GFP_ATOMIC : GFP_KERNEL;
380 * but this fails on !PREEMPT kernels
381 */ 382 */
382 gfp = GFP_ATOMIC | __GFP_NORETRY | __GFP_NOWARN; 383 if (in_atomic() || irqs_disabled() || debug_pagealloc)
383#endif 384 gfp = GFP_ATOMIC | __GFP_NORETRY | __GFP_NOWARN;
384 385
385 while (pool_pages < pool_size) { 386 while (pool_pages < pool_size || (ret && !*ret)) {
386 p = alloc_pages(gfp, 0); 387 p = alloc_pages(gfp, 0);
387 if (!p) { 388 if (!p) {
388 pool_failed++; 389 pool_failed++;
389 break; 390 break;
390 } 391 }
391 spin_lock_irq(&pgd_lock); 392 /*
393 * If the call site needs a page right now, provide it:
394 */
395 if (ret && !*ret) {
396 *ret = p;
397 continue;
398 }
399 spin_lock_irqsave(&pgd_lock, flags);
392 list_add(&p->lru, &page_pool); 400 list_add(&p->lru, &page_pool);
393 pool_pages++; 401 pool_pages++;
394 spin_unlock_irq(&pgd_lock); 402 spin_unlock_irqrestore(&pgd_lock, flags);
395 } 403 }
396 clear_bit_unlock(0, &pool_refill); 404
405 current->flags &= ~PF_MEMALLOC;
397} 406}
398 407
399#define SHIFT_MB (20 - PAGE_SHIFT) 408#define SHIFT_MB (20 - PAGE_SHIFT)
@@ -414,11 +423,15 @@ void __init cpa_init(void)
414 * GiB. Shift MiB to Gib and multiply the result by 423 * GiB. Shift MiB to Gib and multiply the result by
415 * POOL_PAGES_PER_GB: 424 * POOL_PAGES_PER_GB:
416 */ 425 */
417 gb = ((si.totalram >> SHIFT_MB) + ROUND_MB_GB) >> SHIFT_MB_GB; 426 if (debug_pagealloc) {
418 pool_size = POOL_PAGES_PER_GB * gb; 427 gb = ((si.totalram >> SHIFT_MB) + ROUND_MB_GB) >> SHIFT_MB_GB;
428 pool_size = POOL_PAGES_PER_GB * gb;
429 } else {
430 pool_size = 1;
431 }
419 pool_low = pool_size; 432 pool_low = pool_size;
420 433
421 cpa_fill_pool(); 434 cpa_fill_pool(NULL);
422 printk(KERN_DEBUG 435 printk(KERN_DEBUG
423 "CPA: page pool initialized %lu of %lu pages preallocated\n", 436 "CPA: page pool initialized %lu of %lu pages preallocated\n",
424 pool_pages, pool_size); 437 pool_pages, pool_size);
@@ -440,16 +453,20 @@ static int split_large_page(pte_t *kpte, unsigned long address)
440 spin_lock_irqsave(&pgd_lock, flags); 453 spin_lock_irqsave(&pgd_lock, flags);
441 if (list_empty(&page_pool)) { 454 if (list_empty(&page_pool)) {
442 spin_unlock_irqrestore(&pgd_lock, flags); 455 spin_unlock_irqrestore(&pgd_lock, flags);
443 return -ENOMEM; 456 base = NULL;
457 cpa_fill_pool(&base);
458 if (!base)
459 return -ENOMEM;
460 spin_lock_irqsave(&pgd_lock, flags);
461 } else {
462 base = list_first_entry(&page_pool, struct page, lru);
463 list_del(&base->lru);
464 pool_pages--;
465
466 if (pool_pages < pool_low)
467 pool_low = pool_pages;
444 } 468 }
445 469
446 base = list_first_entry(&page_pool, struct page, lru);
447 list_del(&base->lru);
448 pool_pages--;
449
450 if (pool_pages < pool_low)
451 pool_low = pool_pages;
452
453 /* 470 /*
454 * Check for races, another CPU might have split this page 471 * Check for races, another CPU might have split this page
455 * up for us already: 472 * up for us already:
@@ -734,7 +751,8 @@ static int change_page_attr_set_clr(unsigned long addr, int numpages,
734 cpa_flush_all(cache); 751 cpa_flush_all(cache);
735 752
736out: 753out:
737 cpa_fill_pool(); 754 cpa_fill_pool(NULL);
755
738 return ret; 756 return ret;
739} 757}
740 758
@@ -897,7 +915,7 @@ void kernel_map_pages(struct page *page, int numpages, int enable)
897 * Try to refill the page pool here. We can do this only after 915 * Try to refill the page pool here. We can do this only after
898 * the tlb flush. 916 * the tlb flush.
899 */ 917 */
900 cpa_fill_pool(); 918 cpa_fill_pool(NULL);
901} 919}
902 920
903#ifdef CONFIG_HIBERNATION 921#ifdef CONFIG_HIBERNATION
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
index 73aba7125203..2f9e9afcb9f4 100644
--- a/arch/x86/mm/pgtable_32.c
+++ b/arch/x86/mm/pgtable_32.c
@@ -342,12 +342,16 @@ static void pgd_mop_up_pmds(struct mm_struct *mm, pgd_t *pgdp)
342 342
343pgd_t *pgd_alloc(struct mm_struct *mm) 343pgd_t *pgd_alloc(struct mm_struct *mm)
344{ 344{
345 pgd_t *pgd = quicklist_alloc(0, GFP_KERNEL, pgd_ctor); 345 pgd_t *pgd = (pgd_t *)__get_free_page(GFP_KERNEL | __GFP_ZERO);
346 346
347 mm->pgd = pgd; /* so that alloc_pd can use it */ 347 /* so that alloc_pd can use it */
348 mm->pgd = pgd;
349 if (pgd)
350 pgd_ctor(pgd);
348 351
349 if (pgd && !pgd_prepopulate_pmd(mm, pgd)) { 352 if (pgd && !pgd_prepopulate_pmd(mm, pgd)) {
350 quicklist_free(0, pgd_dtor, pgd); 353 pgd_dtor(pgd);
354 free_page((unsigned long)pgd);
351 pgd = NULL; 355 pgd = NULL;
352 } 356 }
353 357
@@ -357,12 +361,8 @@ pgd_t *pgd_alloc(struct mm_struct *mm)
357void pgd_free(struct mm_struct *mm, pgd_t *pgd) 361void pgd_free(struct mm_struct *mm, pgd_t *pgd)
358{ 362{
359 pgd_mop_up_pmds(mm, pgd); 363 pgd_mop_up_pmds(mm, pgd);
360 quicklist_free(0, pgd_dtor, pgd); 364 pgd_dtor(pgd);
361} 365 free_page((unsigned long)pgd);
362
363void check_pgt_cache(void)
364{
365 quicklist_trim(0, pgd_dtor, 25, 16);
366} 366}
367 367
368void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte) 368void __pte_free_tlb(struct mmu_gather *tlb, struct page *pte)
diff --git a/arch/x86/pci/pcbios.c b/arch/x86/pci/pcbios.c
index 10ac8c316c46..2f7109ac4c15 100644
--- a/arch/x86/pci/pcbios.c
+++ b/arch/x86/pci/pcbios.c
@@ -198,6 +198,11 @@ static int pci_bios_read(unsigned int seg, unsigned int bus,
198 "b" (bx), 198 "b" (bx),
199 "D" ((long)reg), 199 "D" ((long)reg),
200 "S" (&pci_indirect)); 200 "S" (&pci_indirect));
201 /*
202 * Zero-extend the result beyond 8 bits, do not trust the
203 * BIOS having done it:
204 */
205 *value &= 0xff;
201 break; 206 break;
202 case 2: 207 case 2:
203 __asm__("lcall *(%%esi); cld\n\t" 208 __asm__("lcall *(%%esi); cld\n\t"
@@ -210,6 +215,11 @@ static int pci_bios_read(unsigned int seg, unsigned int bus,
210 "b" (bx), 215 "b" (bx),
211 "D" ((long)reg), 216 "D" ((long)reg),
212 "S" (&pci_indirect)); 217 "S" (&pci_indirect));
218 /*
219 * Zero-extend the result beyond 16 bits, do not trust the
220 * BIOS having done it:
221 */
222 *value &= 0xffff;
213 break; 223 break;
214 case 4: 224 case 4:
215 __asm__("lcall *(%%esi); cld\n\t" 225 __asm__("lcall *(%%esi); cld\n\t"
diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile
index f385a4b4a484..0a8f4742ef51 100644
--- a/arch/x86/vdso/Makefile
+++ b/arch/x86/vdso/Makefile
@@ -50,7 +50,9 @@ obj-$(VDSO64-y) += vdso-syms.lds
50sed-vdsosym := -e 's/^00*/0/' \ 50sed-vdsosym := -e 's/^00*/0/' \
51 -e 's/^\([0-9a-fA-F]*\) . \(VDSO[a-zA-Z0-9_]*\)$$/\2 = 0x\1;/p' 51 -e 's/^\([0-9a-fA-F]*\) . \(VDSO[a-zA-Z0-9_]*\)$$/\2 = 0x\1;/p'
52quiet_cmd_vdsosym = VDSOSYM $@ 52quiet_cmd_vdsosym = VDSOSYM $@
53 cmd_vdsosym = $(NM) $< | sed -n $(sed-vdsosym) | LC_ALL=C sort > $@ 53define cmd_vdsosym
54 $(NM) $< | LC_ALL=C sed -n $(sed-vdsosym) | LC_ALL=C sort > $@
55endef
54 56
55$(obj)/%-syms.lds: $(obj)/%.so.dbg FORCE 57$(obj)/%-syms.lds: $(obj)/%.so.dbg FORCE
56 $(call if_changed,vdsosym) 58 $(call if_changed,vdsosym)
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 49e5358f481a..8b9ee27805fd 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -153,6 +153,7 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
153 if (*ax == 1) 153 if (*ax == 1)
154 maskedx = ~((1 << X86_FEATURE_APIC) | /* disable APIC */ 154 maskedx = ~((1 << X86_FEATURE_APIC) | /* disable APIC */
155 (1 << X86_FEATURE_ACPI) | /* disable ACPI */ 155 (1 << X86_FEATURE_ACPI) | /* disable ACPI */
156 (1 << X86_FEATURE_SEP) | /* disable SEP */
156 (1 << X86_FEATURE_ACC)); /* thermal monitoring */ 157 (1 << X86_FEATURE_ACC)); /* thermal monitoring */
157 158
158 asm(XEN_EMULATE_PREFIX "cpuid" 159 asm(XEN_EMULATE_PREFIX "cpuid"
diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index 3bad4773a2f3..2341492bf7a0 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -38,7 +38,8 @@ char * __init xen_memory_setup(void)
38 unsigned long max_pfn = xen_start_info->nr_pages; 38 unsigned long max_pfn = xen_start_info->nr_pages;
39 39
40 e820.nr_map = 0; 40 e820.nr_map = 0;
41 add_memory_region(0, PFN_PHYS(max_pfn), E820_RAM); 41 add_memory_region(0, LOWMEMSIZE(), E820_RAM);
42 add_memory_region(HIGH_MEMORY, PFN_PHYS(max_pfn)-HIGH_MEMORY, E820_RAM);
42 43
43 return "Xen"; 44 return "Xen";
44} 45}