aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/Kconfig4
-rw-r--r--arch/alpha/kernel/setup.c6
-rw-r--r--arch/alpha/kernel/time.c11
-rw-r--r--arch/alpha/kernel/vmlinux.lds.S2
-rw-r--r--arch/arm/Kconfig38
-rw-r--r--arch/arm/common/rtctime.c2
-rw-r--r--arch/arm/common/sharpsl_pm.c2
-rw-r--r--arch/arm/kernel/Makefile1
-rw-r--r--arch/arm/kernel/apm.c672
-rw-r--r--arch/arm/kernel/setup.c6
-rw-r--r--arch/arm/kernel/time.c10
-rw-r--r--arch/arm/kernel/vmlinux.lds.S2
-rw-r--r--arch/arm/mach-at91rm9200/clock.c2
-rw-r--r--arch/arm/mach-at91rm9200/gpio.c48
-rw-r--r--arch/arm/mach-pxa/corgi_pm.c2
-rw-r--r--arch/arm/mach-pxa/sharpsl_pm.c2
-rw-r--r--arch/arm/mach-pxa/spitz_pm.c2
-rw-r--r--arch/arm26/Kconfig4
-rw-r--r--arch/arm26/kernel/ecard.c2
-rw-r--r--arch/arm26/kernel/setup.c6
-rw-r--r--arch/arm26/kernel/time.c8
-rw-r--r--arch/arm26/kernel/vmlinux-arm26-xip.lds.in2
-rw-r--r--arch/arm26/kernel/vmlinux-arm26.lds.in2
-rw-r--r--arch/avr32/boards/atstk1000/Makefile2
-rw-r--r--arch/avr32/boards/atstk1000/atstk1002.c53
-rw-r--r--arch/avr32/boards/atstk1000/spi.c27
-rw-r--r--arch/avr32/kernel/cpu.c1
-rw-r--r--arch/avr32/kernel/irq.c1
-rw-r--r--arch/avr32/kernel/setup.c10
-rw-r--r--arch/avr32/kernel/time.c9
-rw-r--r--arch/avr32/kernel/vmlinux.lds.c2
-rw-r--r--arch/avr32/lib/libgcc.h33
-rw-r--r--arch/avr32/lib/longlong.h98
-rw-r--r--arch/avr32/mach-at32ap/Makefile2
-rw-r--r--arch/avr32/mach-at32ap/at32ap7000.c60
-rw-r--r--arch/avr32/mach-at32ap/extint.c36
-rw-r--r--arch/avr32/mach-at32ap/pio.c255
-rw-r--r--arch/avr32/mm/cache.c32
-rw-r--r--arch/avr32/mm/tlb.c2
-rw-r--r--arch/cris/Kconfig7
-rw-r--r--arch/cris/arch-v10/drivers/axisflashmap.c3
-rw-r--r--arch/cris/arch-v10/drivers/ds1302.c2
-rw-r--r--arch/cris/arch-v10/drivers/eeprom.c2
-rw-r--r--arch/cris/arch-v10/drivers/gpio.c2
-rw-r--r--arch/cris/arch-v10/drivers/i2c.c2
-rw-r--r--arch/cris/arch-v10/drivers/pcf8563.c2
-rw-r--r--arch/cris/arch-v10/kernel/time.c1
-rw-r--r--arch/cris/arch-v10/mm/tlb.c9
-rw-r--r--arch/cris/arch-v10/vmlinux.lds.S4
-rw-r--r--arch/cris/arch-v32/drivers/cryptocop.c2
-rw-r--r--arch/cris/arch-v32/drivers/gpio.c2
-rw-r--r--arch/cris/arch-v32/drivers/i2c.c2
-rw-r--r--arch/cris/arch-v32/drivers/pcf8563.c2
-rw-r--r--arch/cris/arch-v32/drivers/sync_serial.c2
-rw-r--r--arch/cris/arch-v32/mm/tlb.c9
-rw-r--r--arch/cris/arch-v32/vmlinux.lds.S2
-rw-r--r--arch/cris/kernel/profile.c2
-rw-r--r--arch/cris/kernel/setup.c6
-rw-r--r--arch/cris/kernel/time.c9
-rw-r--r--arch/cris/mm/tlb.c3
-rw-r--r--arch/frv/Kconfig4
-rw-r--r--arch/frv/kernel/setup.c6
-rw-r--r--arch/frv/kernel/vmlinux.lds.S2
-rw-r--r--arch/h8300/Kconfig7
-rw-r--r--arch/h8300/kernel/Makefile4
-rw-r--r--arch/h8300/kernel/setup.c6
-rw-r--r--arch/h8300/kernel/time.c6
-rw-r--r--arch/h8300/kernel/vmlinux.lds.S2
-rw-r--r--arch/i386/Kconfig4
-rw-r--r--arch/i386/kernel/apm.c2
-rw-r--r--arch/i386/kernel/cpu/mtrr/if.c2
-rw-r--r--arch/i386/kernel/cpuid.c2
-rw-r--r--arch/i386/kernel/head.S2
-rw-r--r--arch/i386/kernel/hpet.c5
-rw-r--r--arch/i386/kernel/io_apic.c2
-rw-r--r--arch/i386/kernel/microcode.c2
-rw-r--r--arch/i386/kernel/msr.c2
-rw-r--r--arch/i386/kernel/setup.c4
-rw-r--r--arch/i386/kernel/sysenter.c53
-rw-r--r--arch/i386/kernel/vmlinux.lds.S2
-rw-r--r--arch/i386/mm/fault.c26
-rw-r--r--arch/i386/mm/highmem.c7
-rw-r--r--arch/i386/mm/pageattr.c2
-rw-r--r--arch/ia64/Kconfig4
-rw-r--r--arch/ia64/hp/common/sba_iommu.c2
-rw-r--r--arch/ia64/ia32/binfmt_elf32.c13
-rw-r--r--arch/ia64/ia32/ia32_entry.S2
-rw-r--r--arch/ia64/ia32/sys_ia32.c68
-rw-r--r--arch/ia64/kernel/crash.c2
-rw-r--r--arch/ia64/kernel/efi.c3
-rw-r--r--arch/ia64/kernel/perfmon.c9
-rw-r--r--arch/ia64/kernel/sal.c3
-rw-r--r--arch/ia64/kernel/salinfo.c4
-rw-r--r--arch/ia64/kernel/setup.c4
-rw-r--r--arch/ia64/kernel/smp.c4
-rw-r--r--arch/ia64/kernel/traps.c30
-rw-r--r--arch/ia64/kernel/vmlinux.lds.S2
-rw-r--r--arch/ia64/mm/contig.c4
-rw-r--r--arch/ia64/mm/discontig.c6
-rw-r--r--arch/ia64/mm/init.c8
-rw-r--r--arch/ia64/sn/kernel/sn2/sn2_smp.c2
-rw-r--r--arch/ia64/sn/kernel/sn2/sn_hwperf.c2
-rw-r--r--arch/ia64/sn/kernel/sn2/sn_proc_fs.c105
-rw-r--r--arch/m32r/Kconfig7
-rw-r--r--arch/m32r/Makefile2
-rw-r--r--arch/m32r/defconfig525
-rw-r--r--arch/m32r/kernel/head.S2
-rw-r--r--arch/m32r/kernel/process.c2
-rw-r--r--arch/m32r/kernel/setup.c6
-rw-r--r--arch/m32r/kernel/signal.c26
-rw-r--r--arch/m32r/kernel/time.c8
-rw-r--r--arch/m32r/kernel/vmlinux.lds.S9
-rw-r--r--arch/m32r/lib/ashxdi3.S3
-rw-r--r--arch/m32r/lib/checksum.S3
-rw-r--r--arch/m32r/lib/delay.c2
-rw-r--r--arch/m32r/lib/memcpy.S2
-rw-r--r--arch/m32r/lib/memset.S2
-rw-r--r--arch/m32r/lib/strlen.S2
-rw-r--r--arch/m32r/m32104ut/defconfig.m32104ut752
-rw-r--r--arch/m32r/m32700ut/defconfig.m32700ut.smp519
-rw-r--r--arch/m32r/m32700ut/defconfig.m32700ut.up516
-rw-r--r--arch/m32r/mappi/defconfig.nommu366
-rw-r--r--arch/m32r/mappi/defconfig.smp382
-rw-r--r--arch/m32r/mappi/defconfig.up380
-rw-r--r--arch/m32r/mappi2/defconfig.opsp883
-rw-r--r--arch/m32r/mappi2/defconfig.vdec2388
-rw-r--r--arch/m32r/mappi3/defconfig.smp373
-rw-r--r--arch/m32r/mm/fault-nommu.c29
-rw-r--r--arch/m32r/mm/fault.c66
-rw-r--r--arch/m32r/mm/mmu.S5
-rw-r--r--arch/m32r/oaks32r/defconfig.nommu348
-rw-r--r--arch/m32r/opsput/defconfig.opsput383
-rw-r--r--arch/m68k/Kconfig7
-rw-r--r--arch/m68k/bvme6000/rtc.c2
-rw-r--r--arch/m68k/kernel/Makefile4
-rw-r--r--arch/m68k/kernel/ptrace.c4
-rw-r--r--arch/m68k/kernel/setup.c2
-rw-r--r--arch/m68k/kernel/time.c9
-rw-r--r--arch/m68k/kernel/traps.c2
-rw-r--r--arch/m68k/kernel/vmlinux-std.lds2
-rw-r--r--arch/m68k/kernel/vmlinux-sun3.lds2
-rw-r--r--arch/m68k/mvme16x/rtc.c2
-rw-r--r--arch/m68knommu/Kconfig7
-rw-r--r--arch/m68knommu/kernel/ptrace.c4
-rw-r--r--arch/m68knommu/kernel/setup.c6
-rw-r--r--arch/m68knommu/kernel/time.c14
-rw-r--r--arch/m68knommu/kernel/traps.c2
-rw-r--r--arch/m68knommu/kernel/vmlinux.lds.S12
-rw-r--r--arch/m68knommu/platform/5206/config.c2
-rw-r--r--arch/m68knommu/platform/5206e/config.c2
-rw-r--r--arch/m68knommu/platform/520x/config.c3
-rw-r--r--arch/m68knommu/platform/523x/config.c2
-rw-r--r--arch/m68knommu/platform/5249/config.c3
-rw-r--r--arch/m68knommu/platform/5272/config.c2
-rw-r--r--arch/m68knommu/platform/527x/config.c2
-rw-r--r--arch/m68knommu/platform/528x/config.c2
-rw-r--r--arch/m68knommu/platform/5307/config.c2
-rw-r--r--arch/m68knommu/platform/5307/pit.c2
-rw-r--r--arch/m68knommu/platform/5307/timers.c5
-rw-r--r--arch/m68knommu/platform/532x/config.c2
-rw-r--r--arch/m68knommu/platform/5407/config.c2
-rw-r--r--arch/m68knommu/platform/68328/config.c2
-rw-r--r--arch/mips/Kconfig44
-rw-r--r--arch/mips/dec/Makefile1
-rw-r--r--arch/mips/dec/prom/identify.c3
-rw-r--r--arch/mips/dec/setup.c2
-rw-r--r--arch/mips/dec/tc.c95
-rw-r--r--arch/mips/kernel/Makefile2
-rw-r--r--arch/mips/kernel/apm.c604
-rw-r--r--arch/mips/kernel/asm-offsets.c1
-rw-r--r--arch/mips/kernel/linux32.c44
-rw-r--r--arch/mips/kernel/mips-mt.c19
-rw-r--r--arch/mips/kernel/rtlx.c25
-rw-r--r--arch/mips/kernel/scall64-n32.S2
-rw-r--r--arch/mips/kernel/scall64-o32.S2
-rw-r--r--arch/mips/kernel/setup.c2
-rw-r--r--arch/mips/kernel/signal-common.h194
-rw-r--r--arch/mips/kernel/signal.c230
-rw-r--r--arch/mips/kernel/signal32.c341
-rw-r--r--arch/mips/kernel/signal_n32.c34
-rw-r--r--arch/mips/kernel/time.c5
-rw-r--r--arch/mips/kernel/vmlinux.lds.S2
-rw-r--r--arch/mips/kernel/vpe.c24
-rw-r--r--arch/mips/mm/cache.c2
-rw-r--r--arch/mips/momentum/jaguar_atx/platform.c2
-rw-r--r--arch/mips/momentum/ocelot_3/platform.c2
-rw-r--r--arch/mips/philips/pnx8550/common/proc.c7
-rw-r--r--arch/mips/sibyte/sb1250/bcm1250_tbprof.c2
-rw-r--r--arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c2
-rw-r--r--arch/parisc/Kconfig3
-rw-r--r--arch/parisc/kernel/perf.c2
-rw-r--r--arch/parisc/kernel/setup.c8
-rw-r--r--arch/parisc/kernel/sys_parisc32.c64
-rw-r--r--arch/parisc/kernel/syscall_table.S2
-rw-r--r--arch/parisc/kernel/time.c11
-rw-r--r--arch/parisc/kernel/vmlinux.lds.S2
-rw-r--r--arch/parisc/mm/init.c7
-rw-r--r--arch/powerpc/Kconfig6
-rw-r--r--arch/powerpc/boot/dts/kuroboxHD.dts148
-rw-r--r--arch/powerpc/boot/dts/lite5200.dts135
-rw-r--r--arch/powerpc/boot/dts/lite5200b.dts135
-rw-r--r--arch/powerpc/boot/dts/mpc8313erdb.dts219
-rw-r--r--arch/powerpc/boot/dts/mpc834x_mds.dts (renamed from arch/powerpc/boot/dts/mpc8349emds.dts)6
-rw-r--r--arch/powerpc/configs/linkstation_defconfig118
-rw-r--r--arch/powerpc/configs/mpc8313_rdb_defconfig1409
-rw-r--r--arch/powerpc/configs/mpc834x_mds_defconfig9
-rw-r--r--arch/powerpc/configs/ps3_defconfig29
-rw-r--r--arch/powerpc/kernel/cputable.c2
-rw-r--r--arch/powerpc/kernel/head_44x.S2
-rw-r--r--arch/powerpc/kernel/legacy_serial.c2
-rw-r--r--arch/powerpc/kernel/lparcfg.c2
-rw-r--r--arch/powerpc/kernel/nvram_64.c2
-rw-r--r--arch/powerpc/kernel/proc_ppc64.c3
-rw-r--r--arch/powerpc/kernel/prom.c2
-rw-r--r--arch/powerpc/kernel/prom_init.c81
-rw-r--r--arch/powerpc/kernel/rtas-proc.c14
-rw-r--r--arch/powerpc/kernel/rtas_flash.c9
-rw-r--r--arch/powerpc/kernel/sys_ppc32.c67
-rw-r--r--arch/powerpc/kernel/udbg.c2
-rw-r--r--arch/powerpc/kernel/vdso.c124
-rw-r--r--arch/powerpc/kernel/vmlinux.lds.S4
-rw-r--r--arch/powerpc/mm/mem.c3
-rw-r--r--arch/powerpc/platforms/52xx/Makefile2
-rw-r--r--arch/powerpc/platforms/52xx/efika-pci.c119
-rw-r--r--arch/powerpc/platforms/52xx/efika-setup.c150
-rw-r--r--arch/powerpc/platforms/52xx/efika.c243
-rw-r--r--arch/powerpc/platforms/52xx/efika.h19
-rw-r--r--arch/powerpc/platforms/52xx/lite5200.c29
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_common.c4
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_pic.c10
-rw-r--r--arch/powerpc/platforms/83xx/Kconfig24
-rw-r--r--arch/powerpc/platforms/83xx/Makefile3
-rw-r--r--arch/powerpc/platforms/83xx/mpc8313_rdb.c99
-rw-r--r--arch/powerpc/platforms/83xx/mpc834x_itx.c2
-rw-r--r--arch/powerpc/platforms/83xx/mpc834x_mds.c (renamed from arch/powerpc/platforms/83xx/mpc834x_sys.c)95
-rw-r--r--arch/powerpc/platforms/83xx/mpc834x_sys.h23
-rw-r--r--arch/powerpc/platforms/83xx/mpc83xx.h18
-rw-r--r--arch/powerpc/platforms/Makefile2
-rw-r--r--arch/powerpc/platforms/cell/iommu.c5
-rw-r--r--arch/powerpc/platforms/cell/spu_manage.c102
-rw-r--r--arch/powerpc/platforms/cell/spufs/context.c12
-rw-r--r--arch/powerpc/platforms/cell/spufs/file.c177
-rw-r--r--arch/powerpc/platforms/cell/spufs/inode.c6
-rw-r--r--arch/powerpc/platforms/cell/spufs/spufs.h4
-rw-r--r--arch/powerpc/platforms/celleb/htab.c19
-rw-r--r--arch/powerpc/platforms/celleb/pci.c12
-rw-r--r--arch/powerpc/platforms/celleb/scc_epci.c56
-rw-r--r--arch/powerpc/platforms/chrp/setup.c4
-rw-r--r--arch/powerpc/platforms/embedded6xx/linkstation.c12
-rw-r--r--arch/powerpc/platforms/iseries/lpevents.c2
-rw-r--r--arch/powerpc/platforms/iseries/mf.c6
-rw-r--r--arch/powerpc/platforms/iseries/proc.c2
-rw-r--r--arch/powerpc/platforms/iseries/viopath.c2
-rw-r--r--arch/powerpc/platforms/powermac/setup.c4
-rw-r--r--arch/powerpc/platforms/ps3/Kconfig11
-rw-r--r--arch/powerpc/platforms/ps3/htab.c6
-rw-r--r--arch/powerpc/platforms/ps3/interrupt.c2
-rw-r--r--arch/powerpc/platforms/ps3/setup.c42
-rw-r--r--arch/powerpc/platforms/ps3/spu.c42
-rw-r--r--arch/powerpc/platforms/ps3/system-bus.c2
-rw-r--r--arch/powerpc/platforms/pseries/eeh.c2
-rw-r--r--arch/powerpc/platforms/pseries/hvCall_inst.c2
-rw-r--r--arch/powerpc/platforms/pseries/pci.c4
-rw-r--r--arch/powerpc/platforms/pseries/reconfig.c3
-rw-r--r--arch/powerpc/platforms/pseries/rtasd.c2
-rw-r--r--arch/powerpc/platforms/pseries/scanlog.c2
-rw-r--r--arch/powerpc/sysdev/fsl_soc.c78
-rw-r--r--arch/powerpc/sysdev/qe_lib/ucc_slow.c6
-rw-r--r--arch/powerpc/xmon/spu-dis.c2
-rw-r--r--arch/ppc/8xx_io/cs4218_tdm.c6
-rw-r--r--arch/ppc/Kconfig4
-rw-r--r--arch/ppc/configs/taishan_defconfig1077
-rw-r--r--arch/ppc/kernel/setup.c2
-rw-r--r--arch/ppc/kernel/vmlinux.lds.S2
-rw-r--r--arch/ppc/platforms/4xx/Kconfig10
-rw-r--r--arch/ppc/platforms/4xx/Makefile1
-rw-r--r--arch/ppc/platforms/4xx/taishan.c395
-rw-r--r--arch/ppc/platforms/4xx/taishan.h67
-rw-r--r--arch/ppc/platforms/lopec.c2
-rw-r--r--arch/ppc/platforms/pplus.c2
-rw-r--r--arch/ppc/platforms/prep_setup.c4
-rw-r--r--arch/ppc/syslib/Makefile1
-rw-r--r--arch/s390/Kconfig7
-rw-r--r--arch/s390/defconfig3
-rw-r--r--arch/s390/hypfs/inode.c4
-rw-r--r--arch/s390/kernel/compat_linux.c45
-rw-r--r--arch/s390/kernel/compat_wrapper.S6
-rw-r--r--arch/s390/kernel/debug.c2
-rw-r--r--arch/s390/kernel/setup.c2
-rw-r--r--arch/s390/kernel/smp.c15
-rw-r--r--arch/s390/kernel/syscalls.S2
-rw-r--r--arch/s390/kernel/vmlinux.lds.S3
-rw-r--r--arch/s390/mm/Makefile2
-rw-r--r--arch/s390/mm/fault.c4
-rw-r--r--arch/s390/mm/ioremap.c58
-rw-r--r--arch/sh/Kconfig7
-rw-r--r--arch/sh/boards/hp6xx/hp6xx_apm.c68
-rw-r--r--arch/sh/boards/landisk/landisk_pwb.c2
-rw-r--r--arch/sh/kernel/Makefile1
-rw-r--r--arch/sh/kernel/apm.c538
-rw-r--r--arch/sh/kernel/setup.c6
-rw-r--r--arch/sh/kernel/time.c8
-rw-r--r--arch/sh/kernel/vmlinux.lds.S4
-rw-r--r--arch/sh/kernel/vsyscall/vsyscall.c58
-rw-r--r--arch/sh/mm/cache-debugfs.c2
-rw-r--r--arch/sh/mm/init.c17
-rw-r--r--arch/sh/mm/pmb.c2
-rw-r--r--arch/sh/oprofile/op_model_sh7750.c2
-rw-r--r--arch/sh64/Kconfig3
-rw-r--r--arch/sh64/kernel/setup.c6
-rw-r--r--arch/sh64/kernel/time.c9
-rw-r--r--arch/sh64/kernel/vmlinux.lds.S4
-rw-r--r--arch/sh64/mm/init.c5
-rw-r--r--arch/sparc/Kconfig4
-rw-r--r--arch/sparc/kernel/Makefile4
-rw-r--r--arch/sparc/kernel/apc.c2
-rw-r--r--arch/sparc/kernel/setup.c2
-rw-r--r--arch/sparc/kernel/sunos_ioctl.c1
-rw-r--r--arch/sparc/kernel/sys_sunos.c10
-rw-r--r--arch/sparc/kernel/time.c9
-rw-r--r--arch/sparc/kernel/vmlinux.lds.S4
-rw-r--r--arch/sparc64/Kconfig4
-rw-r--r--arch/sparc64/defconfig52
-rw-r--r--arch/sparc64/kernel/irq.c146
-rw-r--r--arch/sparc64/kernel/pci.c35
-rw-r--r--arch/sparc64/kernel/pci_common.c25
-rw-r--r--arch/sparc64/kernel/pci_sun4v.c444
-rw-r--r--arch/sparc64/kernel/pci_sun4v.h61
-rw-r--r--arch/sparc64/kernel/pci_sun4v_asm.S266
-rw-r--r--arch/sparc64/kernel/setup.c2
-rw-r--r--arch/sparc64/kernel/sunos_ioctl32.c1
-rw-r--r--arch/sparc64/kernel/sys_sparc32.c64
-rw-r--r--arch/sparc64/kernel/sys_sunos32.c11
-rw-r--r--arch/sparc64/kernel/systbls.S2
-rw-r--r--arch/sparc64/kernel/time.c2
-rw-r--r--arch/sparc64/kernel/vmlinux.lds.S4
-rw-r--r--arch/sparc64/mm/init.c8
-rw-r--r--arch/sparc64/solaris/socksys.c2
-rw-r--r--arch/um/Kconfig3
-rw-r--r--arch/um/drivers/chan_kern.c103
-rw-r--r--arch/um/drivers/harddog_kern.c58
-rw-r--r--arch/um/drivers/harddog_user.c23
-rw-r--r--arch/um/drivers/hostaudio_kern.c169
-rw-r--r--arch/um/drivers/line.c209
-rw-r--r--arch/um/drivers/mconsole_kern.c62
-rw-r--r--arch/um/drivers/mconsole_user.c2
-rw-r--r--arch/um/drivers/net_kern.c172
-rw-r--r--arch/um/drivers/port_kern.c50
-rw-r--r--arch/um/drivers/port_user.c51
-rw-r--r--arch/um/drivers/random.c1
-rw-r--r--arch/um/drivers/ssl.c44
-rw-r--r--arch/um/drivers/stdio_console.c51
-rw-r--r--arch/um/drivers/ubd_kern.c231
-rw-r--r--arch/um/include/chan_kern.h5
-rw-r--r--arch/um/include/chan_user.h21
-rw-r--r--arch/um/include/kern_util.h5
-rw-r--r--arch/um/include/line.h57
-rw-r--r--arch/um/include/mconsole_kern.h17
-rw-r--r--arch/um/include/net_kern.h14
-rw-r--r--arch/um/include/os.h3
-rw-r--r--arch/um/include/sigio.h11
-rw-r--r--arch/um/include/tempfile.h10
-rw-r--r--arch/um/include/umid.h22
-rw-r--r--arch/um/include/user_util.h2
-rw-r--r--arch/um/kernel/Makefile2
-rw-r--r--arch/um/kernel/exec.c2
-rw-r--r--arch/um/kernel/irq.c7
-rw-r--r--arch/um/kernel/mem.c90
-rw-r--r--arch/um/kernel/physmem.c74
-rw-r--r--arch/um/kernel/ptrace.c7
-rw-r--r--arch/um/kernel/resource.c23
-rw-r--r--arch/um/kernel/sigio.c7
-rw-r--r--arch/um/kernel/skas/mem.c6
-rw-r--r--arch/um/kernel/syscall.c16
-rw-r--r--arch/um/kernel/sysrq.c2
-rw-r--r--arch/um/kernel/time.c24
-rw-r--r--arch/um/kernel/trap.c28
-rw-r--r--arch/um/kernel/tt/gdb.c4
-rw-r--r--arch/um/kernel/tt/gdb_kern.c5
-rw-r--r--arch/um/kernel/um_arch.c9
-rw-r--r--arch/um/kernel/umid.c4
-rw-r--r--arch/um/os-Linux/aio.c16
-rw-r--r--arch/um/os-Linux/elf_aux.c3
-rw-r--r--arch/um/os-Linux/file.c19
-rw-r--r--arch/um/os-Linux/irq.c6
-rw-r--r--arch/um/os-Linux/mem.c16
-rw-r--r--arch/um/os-Linux/start_up.c207
-rw-r--r--arch/um/os-Linux/sys-i386/registers.c14
-rw-r--r--arch/um/os-Linux/sys-x86_64/Makefile2
-rw-r--r--arch/um/os-Linux/sys-x86_64/prctl.c12
-rw-r--r--arch/um/os-Linux/sys-x86_64/registers.c6
-rw-r--r--arch/um/os-Linux/umid.c3
-rw-r--r--arch/um/sys-x86_64/ptrace.c5
-rw-r--r--arch/um/sys-x86_64/syscalls.c75
-rw-r--r--arch/um/sys-x86_64/tls.c11
-rw-r--r--arch/v850/Kconfig3
-rw-r--r--arch/v850/kernel/anna.c2
-rw-r--r--arch/v850/kernel/as85ep1.c2
-rw-r--r--arch/v850/kernel/fpga85e2c.c2
-rw-r--r--arch/v850/kernel/gbus_int.c6
-rw-r--r--arch/v850/kernel/ma.c2
-rw-r--r--arch/v850/kernel/me2.c2
-rw-r--r--arch/v850/kernel/rte_cb.c4
-rw-r--r--arch/v850/kernel/rte_cb_leds.c2
-rw-r--r--arch/v850/kernel/rte_mb_a_pci.c3
-rw-r--r--arch/v850/kernel/rte_me2_cb.c3
-rw-r--r--arch/v850/kernel/setup.c6
-rw-r--r--arch/v850/kernel/teg.c2
-rw-r--r--arch/v850/kernel/time.c8
-rw-r--r--arch/v850/kernel/vmlinux.lds.S4
-rw-r--r--arch/x86_64/Kconfig4
-rw-r--r--arch/x86_64/ia32/ia32_binfmt.c4
-rw-r--r--arch/x86_64/ia32/ia32entry.S2
-rw-r--r--arch/x86_64/ia32/sys_ia32.c66
-rw-r--r--arch/x86_64/ia32/syscall32.c59
-rw-r--r--arch/x86_64/kernel/head64.c4
-rw-r--r--arch/x86_64/kernel/mce.c2
-rw-r--r--arch/x86_64/kernel/mce_amd.c2
-rw-r--r--arch/x86_64/kernel/setup.c6
-rw-r--r--arch/x86_64/kernel/vmlinux.lds.S4
-rw-r--r--arch/x86_64/mm/fault.c21
-rw-r--r--arch/xtensa/Kconfig7
-rw-r--r--arch/xtensa/kernel/setup.c6
-rw-r--r--arch/xtensa/kernel/time.c9
-rw-r--r--arch/xtensa/kernel/vmlinux.lds.S2
425 files changed, 12581 insertions, 7270 deletions
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 84caf50725b5..770f717bd250 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -41,6 +41,10 @@ config GENERIC_CALIBRATE_DELAY
41 bool 41 bool
42 default y 42 default y
43 43
44config ZONE_DMA
45 bool
46 default y
47
44config GENERIC_ISA_DMA 48config GENERIC_ISA_DMA
45 bool 49 bool
46 default y 50 default y
diff --git a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c
index 1aea7c7c683c..d352c2b05f1a 100644
--- a/arch/alpha/kernel/setup.c
+++ b/arch/alpha/kernel/setup.c
@@ -122,7 +122,7 @@ static void get_sysnames(unsigned long, unsigned long, unsigned long,
122 char **, char **); 122 char **, char **);
123static void determine_cpu_caches (unsigned int); 123static void determine_cpu_caches (unsigned int);
124 124
125static char command_line[COMMAND_LINE_SIZE]; 125static char __initdata command_line[COMMAND_LINE_SIZE];
126 126
127/* 127/*
128 * The format of "screen_info" is strange, and due to early 128 * The format of "screen_info" is strange, and due to early
@@ -547,7 +547,7 @@ setup_arch(char **cmdline_p)
547 } else { 547 } else {
548 strlcpy(command_line, COMMAND_LINE, sizeof command_line); 548 strlcpy(command_line, COMMAND_LINE, sizeof command_line);
549 } 549 }
550 strcpy(saved_command_line, command_line); 550 strcpy(boot_command_line, command_line);
551 *cmdline_p = command_line; 551 *cmdline_p = command_line;
552 552
553 /* 553 /*
@@ -589,7 +589,7 @@ setup_arch(char **cmdline_p)
589 } 589 }
590 590
591 /* Replace the command line, now that we've killed it with strsep. */ 591 /* Replace the command line, now that we've killed it with strsep. */
592 strcpy(command_line, saved_command_line); 592 strcpy(command_line, boot_command_line);
593 593
594 /* If we want SRM console printk echoing early, do it now. */ 594 /* If we want SRM console printk echoing early, do it now. */
595 if (alpha_using_srm && srmcons_output) { 595 if (alpha_using_srm && srmcons_output) {
diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c
index d7053eb4ffcf..4748e14a28bc 100644
--- a/arch/alpha/kernel/time.c
+++ b/arch/alpha/kernel/time.c
@@ -91,17 +91,6 @@ static inline __u32 rpcc(void)
91} 91}
92 92
93/* 93/*
94 * Scheduler clock - returns current time in nanosec units.
95 *
96 * Copied from ARM code for expediency... ;-}
97 */
98unsigned long long sched_clock(void)
99{
100 return (unsigned long long)jiffies * (1000000000 / HZ);
101}
102
103
104/*
105 * timer_interrupt() needs to keep up the real-time clock, 94 * timer_interrupt() needs to keep up the real-time clock,
106 * as well as call the "do_timer()" routine every clocktick 95 * as well as call the "do_timer()" routine every clocktick
107 */ 96 */
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S
index 76bf071e376c..4cc44bd33d33 100644
--- a/arch/alpha/kernel/vmlinux.lds.S
+++ b/arch/alpha/kernel/vmlinux.lds.S
@@ -52,10 +52,12 @@ SECTIONS
52 } 52 }
53 __initcall_end = .; 53 __initcall_end = .;
54 54
55#ifdef CONFIG_BLK_DEV_INITRD
55 . = ALIGN(8192); 56 . = ALIGN(8192);
56 __initramfs_start = .; 57 __initramfs_start = .;
57 .init.ramfs : { *(.init.ramfs) } 58 .init.ramfs : { *(.init.ramfs) }
58 __initramfs_end = .; 59 __initramfs_end = .;
60#endif
59 61
60 . = ALIGN(8); 62 . = ALIGN(8);
61 .con_initcall.init : { 63 .con_initcall.init : {
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 6783c2e5512d..5c795193ebba 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -9,6 +9,7 @@ config ARM
9 bool 9 bool
10 default y 10 default y
11 select RTC_LIB 11 select RTC_LIB
12 select SYS_SUPPORTS_APM_EMULATION
12 help 13 help
13 The ARM series is a line of low-power-consumption RISC chip designs 14 The ARM series is a line of low-power-consumption RISC chip designs
14 licensed by ARM Ltd and targeted at embedded applications and 15 licensed by ARM Ltd and targeted at embedded applications and
@@ -17,6 +18,9 @@ config ARM
17 Europe. There is an ARM Linux project with a web page at 18 Europe. There is an ARM Linux project with a web page at
18 <http://www.arm.linux.org.uk/>. 19 <http://www.arm.linux.org.uk/>.
19 20
21config SYS_SUPPORTS_APM_EMULATION
22 bool
23
20config GENERIC_TIME 24config GENERIC_TIME
21 bool 25 bool
22 default n 26 default n
@@ -25,6 +29,10 @@ config MMU
25 bool 29 bool
26 default y 30 default y
27 31
32config NO_IOPORT
33 bool
34 default n
35
28config EISA 36config EISA
29 bool 37 bool
30 ---help--- 38 ---help---
@@ -96,6 +104,10 @@ config GENERIC_BUST_SPINLOCK
96config ARCH_MAY_HAVE_PC_FDC 104config ARCH_MAY_HAVE_PC_FDC
97 bool 105 bool
98 106
107config ZONE_DMA
108 bool
109 default y
110
99config GENERIC_ISA_DMA 111config GENERIC_ISA_DMA
100 bool 112 bool
101 113
@@ -290,6 +302,7 @@ config ARCH_RPC
290 select TIMER_ACORN 302 select TIMER_ACORN
291 select ARCH_MAY_HAVE_PC_FDC 303 select ARCH_MAY_HAVE_PC_FDC
292 select ISA_DMA_API 304 select ISA_DMA_API
305 select NO_IOPORT
293 help 306 help
294 On the Acorn Risc-PC, Linux can support the internal IDE disk and 307 On the Acorn Risc-PC, Linux can support the internal IDE disk and
295 CD-ROM interface, serial and parallel port, and the floppy drive. 308 CD-ROM interface, serial and parallel port, and the floppy drive.
@@ -856,31 +869,6 @@ menu "Power management options"
856 869
857source "kernel/power/Kconfig" 870source "kernel/power/Kconfig"
858 871
859config APM
860 tristate "Advanced Power Management Emulation"
861 ---help---
862 APM is a BIOS specification for saving power using several different
863 techniques. This is mostly useful for battery powered laptops with
864 APM compliant BIOSes. If you say Y here, the system time will be
865 reset after a RESUME operation, the /proc/apm device will provide
866 battery status information, and user-space programs will receive
867 notification of APM "events" (e.g. battery status change).
868
869 In order to use APM, you will need supporting software. For location
870 and more information, read <file:Documentation/pm.txt> and the
871 Battery Powered Linux mini-HOWTO, available from
872 <http://www.tldp.org/docs.html#howto>.
873
874 This driver does not spin down disk drives (see the hdparm(8)
875 manpage ("man 8 hdparm") for that), and it doesn't turn off
876 VESA-compliant "green" monitors.
877
878 Generally, if you don't have a battery in your machine, there isn't
879 much point in using this driver and you should say N. If you get
880 random kernel OOPSes or reboots that don't seem to be related to
881 anything, try disabling/enabling this option (or disabling/enabling
882 APM in your BIOS).
883
884endmenu 872endmenu
885 873
886source "net/Kconfig" 874source "net/Kconfig"
diff --git a/arch/arm/common/rtctime.c b/arch/arm/common/rtctime.c
index 4e5445cfb0ea..bf1075e1f571 100644
--- a/arch/arm/common/rtctime.c
+++ b/arch/arm/common/rtctime.c
@@ -329,7 +329,7 @@ static int rtc_fasync(int fd, struct file *file, int on)
329 return fasync_helper(fd, file, on, &rtc_async_queue); 329 return fasync_helper(fd, file, on, &rtc_async_queue);
330} 330}
331 331
332static struct file_operations rtc_fops = { 332static const struct file_operations rtc_fops = {
333 .owner = THIS_MODULE, 333 .owner = THIS_MODULE,
334 .llseek = no_llseek, 334 .llseek = no_llseek,
335 .read = rtc_read, 335 .read = rtc_read,
diff --git a/arch/arm/common/sharpsl_pm.c b/arch/arm/common/sharpsl_pm.c
index b3599743093b..a3b450f8ef17 100644
--- a/arch/arm/common/sharpsl_pm.c
+++ b/arch/arm/common/sharpsl_pm.c
@@ -27,7 +27,7 @@
27#include <asm/hardware.h> 27#include <asm/hardware.h>
28#include <asm/mach-types.h> 28#include <asm/mach-types.h>
29#include <asm/irq.h> 29#include <asm/irq.h>
30#include <asm/apm.h> 30#include <asm/apm-emulation.h>
31#include <asm/arch/pm.h> 31#include <asm/arch/pm.h>
32#include <asm/arch/pxa-regs.h> 32#include <asm/arch/pxa-regs.h>
33#include <asm/arch/sharpsl.h> 33#include <asm/arch/sharpsl.h>
diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile
index ab06a86e85d5..1b935fb94b83 100644
--- a/arch/arm/kernel/Makefile
+++ b/arch/arm/kernel/Makefile
@@ -10,7 +10,6 @@ obj-y := compat.o entry-armv.o entry-common.o irq.o \
10 process.o ptrace.o semaphore.o setup.o signal.o sys_arm.o \ 10 process.o ptrace.o semaphore.o setup.o signal.o sys_arm.o \
11 time.o traps.o 11 time.o traps.o
12 12
13obj-$(CONFIG_APM) += apm.o
14obj-$(CONFIG_ISA_DMA_API) += dma.o 13obj-$(CONFIG_ISA_DMA_API) += dma.o
15obj-$(CONFIG_ARCH_ACORN) += ecard.o 14obj-$(CONFIG_ARCH_ACORN) += ecard.o
16obj-$(CONFIG_FIQ) += fiq.o 15obj-$(CONFIG_FIQ) += fiq.o
diff --git a/arch/arm/kernel/apm.c b/arch/arm/kernel/apm.c
deleted file mode 100644
index 2c37b70b17ab..000000000000
--- a/arch/arm/kernel/apm.c
+++ /dev/null
@@ -1,672 +0,0 @@
1/*
2 * bios-less APM driver for ARM Linux
3 * Jamey Hicks <jamey@crl.dec.com>
4 * adapted from the APM BIOS driver for Linux by Stephen Rothwell (sfr@linuxcare.com)
5 *
6 * APM 1.2 Reference:
7 * Intel Corporation, Microsoft Corporation. Advanced Power Management
8 * (APM) BIOS Interface Specification, Revision 1.2, February 1996.
9 *
10 * [This document is available from Microsoft at:
11 * http://www.microsoft.com/hwdev/busbios/amp_12.htm]
12 */
13#include <linux/module.h>
14#include <linux/poll.h>
15#include <linux/slab.h>
16#include <linux/proc_fs.h>
17#include <linux/miscdevice.h>
18#include <linux/apm_bios.h>
19#include <linux/capability.h>
20#include <linux/sched.h>
21#include <linux/pm.h>
22#include <linux/device.h>
23#include <linux/kernel.h>
24#include <linux/list.h>
25#include <linux/init.h>
26#include <linux/completion.h>
27#include <linux/kthread.h>
28#include <linux/delay.h>
29
30#include <asm/apm.h> /* apm_power_info */
31#include <asm/system.h>
32
33/*
34 * The apm_bios device is one of the misc char devices.
35 * This is its minor number.
36 */
37#define APM_MINOR_DEV 134
38
39/*
40 * See Documentation/Config.help for the configuration options.
41 *
42 * Various options can be changed at boot time as follows:
43 * (We allow underscores for compatibility with the modules code)
44 * apm=on/off enable/disable APM
45 */
46
47/*
48 * Maximum number of events stored
49 */
50#define APM_MAX_EVENTS 16
51
52struct apm_queue {
53 unsigned int event_head;
54 unsigned int event_tail;
55 apm_event_t events[APM_MAX_EVENTS];
56};
57
58/*
59 * The per-file APM data
60 */
61struct apm_user {
62 struct list_head list;
63
64 unsigned int suser: 1;
65 unsigned int writer: 1;
66 unsigned int reader: 1;
67
68 int suspend_result;
69 unsigned int suspend_state;
70#define SUSPEND_NONE 0 /* no suspend pending */
71#define SUSPEND_PENDING 1 /* suspend pending read */
72#define SUSPEND_READ 2 /* suspend read, pending ack */
73#define SUSPEND_ACKED 3 /* suspend acked */
74#define SUSPEND_WAIT 4 /* waiting for suspend */
75#define SUSPEND_DONE 5 /* suspend completed */
76
77 struct apm_queue queue;
78};
79
80/*
81 * Local variables
82 */
83static int suspends_pending;
84static int apm_disabled;
85static struct task_struct *kapmd_tsk;
86
87static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue);
88static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue);
89
90/*
91 * This is a list of everyone who has opened /dev/apm_bios
92 */
93static DECLARE_RWSEM(user_list_lock);
94static LIST_HEAD(apm_user_list);
95
96/*
97 * kapmd info. kapmd provides us a process context to handle
98 * "APM" events within - specifically necessary if we're going
99 * to be suspending the system.
100 */
101static DECLARE_WAIT_QUEUE_HEAD(kapmd_wait);
102static DEFINE_SPINLOCK(kapmd_queue_lock);
103static struct apm_queue kapmd_queue;
104
105static DEFINE_MUTEX(state_lock);
106
107static const char driver_version[] = "1.13"; /* no spaces */
108
109
110
111/*
112 * Compatibility cruft until the IPAQ people move over to the new
113 * interface.
114 */
115static void __apm_get_power_status(struct apm_power_info *info)
116{
117}
118
119/*
120 * This allows machines to provide their own "apm get power status" function.
121 */
122void (*apm_get_power_status)(struct apm_power_info *) = __apm_get_power_status;
123EXPORT_SYMBOL(apm_get_power_status);
124
125
126/*
127 * APM event queue management.
128 */
129static inline int queue_empty(struct apm_queue *q)
130{
131 return q->event_head == q->event_tail;
132}
133
134static inline apm_event_t queue_get_event(struct apm_queue *q)
135{
136 q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS;
137 return q->events[q->event_tail];
138}
139
140static void queue_add_event(struct apm_queue *q, apm_event_t event)
141{
142 q->event_head = (q->event_head + 1) % APM_MAX_EVENTS;
143 if (q->event_head == q->event_tail) {
144 static int notified;
145
146 if (notified++ == 0)
147 printk(KERN_ERR "apm: an event queue overflowed\n");
148 q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS;
149 }
150 q->events[q->event_head] = event;
151}
152
153static void queue_event(apm_event_t event)
154{
155 struct apm_user *as;
156
157 down_read(&user_list_lock);
158 list_for_each_entry(as, &apm_user_list, list) {
159 if (as->reader)
160 queue_add_event(&as->queue, event);
161 }
162 up_read(&user_list_lock);
163 wake_up_interruptible(&apm_waitqueue);
164}
165
166/*
167 * queue_suspend_event - queue an APM suspend event.
168 *
169 * Check that we're in a state where we can suspend. If not,
170 * return -EBUSY. Otherwise, queue an event to all "writer"
171 * users. If there are no "writer" users, return '1' to
172 * indicate that we can immediately suspend.
173 */
174static int queue_suspend_event(apm_event_t event, struct apm_user *sender)
175{
176 struct apm_user *as;
177 int ret = 1;
178
179 mutex_lock(&state_lock);
180 down_read(&user_list_lock);
181
182 /*
183 * If a thread is still processing, we can't suspend, so reject
184 * the request.
185 */
186 list_for_each_entry(as, &apm_user_list, list) {
187 if (as != sender && as->reader && as->writer && as->suser &&
188 as->suspend_state != SUSPEND_NONE) {
189 ret = -EBUSY;
190 goto out;
191 }
192 }
193
194 list_for_each_entry(as, &apm_user_list, list) {
195 if (as != sender && as->reader && as->writer && as->suser) {
196 as->suspend_state = SUSPEND_PENDING;
197 suspends_pending++;
198 queue_add_event(&as->queue, event);
199 ret = 0;
200 }
201 }
202 out:
203 up_read(&user_list_lock);
204 mutex_unlock(&state_lock);
205 wake_up_interruptible(&apm_waitqueue);
206 return ret;
207}
208
209static void apm_suspend(void)
210{
211 struct apm_user *as;
212 int err = pm_suspend(PM_SUSPEND_MEM);
213
214 /*
215 * Anyone on the APM queues will think we're still suspended.
216 * Send a message so everyone knows we're now awake again.
217 */
218 queue_event(APM_NORMAL_RESUME);
219
220 /*
221 * Finally, wake up anyone who is sleeping on the suspend.
222 */
223 mutex_lock(&state_lock);
224 down_read(&user_list_lock);
225 list_for_each_entry(as, &apm_user_list, list) {
226 if (as->suspend_state == SUSPEND_WAIT ||
227 as->suspend_state == SUSPEND_ACKED) {
228 as->suspend_result = err;
229 as->suspend_state = SUSPEND_DONE;
230 }
231 }
232 up_read(&user_list_lock);
233 mutex_unlock(&state_lock);
234
235 wake_up(&apm_suspend_waitqueue);
236}
237
238static ssize_t apm_read(struct file *fp, char __user *buf, size_t count, loff_t *ppos)
239{
240 struct apm_user *as = fp->private_data;
241 apm_event_t event;
242 int i = count, ret = 0;
243
244 if (count < sizeof(apm_event_t))
245 return -EINVAL;
246
247 if (queue_empty(&as->queue) && fp->f_flags & O_NONBLOCK)
248 return -EAGAIN;
249
250 wait_event_interruptible(apm_waitqueue, !queue_empty(&as->queue));
251
252 while ((i >= sizeof(event)) && !queue_empty(&as->queue)) {
253 event = queue_get_event(&as->queue);
254
255 ret = -EFAULT;
256 if (copy_to_user(buf, &event, sizeof(event)))
257 break;
258
259 mutex_lock(&state_lock);
260 if (as->suspend_state == SUSPEND_PENDING &&
261 (event == APM_SYS_SUSPEND || event == APM_USER_SUSPEND))
262 as->suspend_state = SUSPEND_READ;
263 mutex_unlock(&state_lock);
264
265 buf += sizeof(event);
266 i -= sizeof(event);
267 }
268
269 if (i < count)
270 ret = count - i;
271
272 return ret;
273}
274
275static unsigned int apm_poll(struct file *fp, poll_table * wait)
276{
277 struct apm_user *as = fp->private_data;
278
279 poll_wait(fp, &apm_waitqueue, wait);
280 return queue_empty(&as->queue) ? 0 : POLLIN | POLLRDNORM;
281}
282
283/*
284 * apm_ioctl - handle APM ioctl
285 *
286 * APM_IOC_SUSPEND
287 * This IOCTL is overloaded, and performs two functions. It is used to:
288 * - initiate a suspend
289 * - acknowledge a suspend read from /dev/apm_bios.
290 * Only when everyone who has opened /dev/apm_bios with write permission
291 * has acknowledge does the actual suspend happen.
292 */
293static int
294apm_ioctl(struct inode * inode, struct file *filp, u_int cmd, u_long arg)
295{
296 struct apm_user *as = filp->private_data;
297 unsigned long flags;
298 int err = -EINVAL;
299
300 if (!as->suser || !as->writer)
301 return -EPERM;
302
303 switch (cmd) {
304 case APM_IOC_SUSPEND:
305 mutex_lock(&state_lock);
306
307 as->suspend_result = -EINTR;
308
309 if (as->suspend_state == SUSPEND_READ) {
310 int pending;
311
312 /*
313 * If we read a suspend command from /dev/apm_bios,
314 * then the corresponding APM_IOC_SUSPEND ioctl is
315 * interpreted as an acknowledge.
316 */
317 as->suspend_state = SUSPEND_ACKED;
318 suspends_pending--;
319 pending = suspends_pending == 0;
320 mutex_unlock(&state_lock);
321
322 /*
323 * If there are no further acknowledges required,
324 * suspend the system.
325 */
326 if (pending)
327 apm_suspend();
328
329 /*
330 * Wait for the suspend/resume to complete. If there
331 * are pending acknowledges, we wait here for them.
332 *
333 * Note: we need to ensure that the PM subsystem does
334 * not kick us out of the wait when it suspends the
335 * threads.
336 */
337 flags = current->flags;
338 current->flags |= PF_NOFREEZE;
339
340 wait_event(apm_suspend_waitqueue,
341 as->suspend_state == SUSPEND_DONE);
342 } else {
343 as->suspend_state = SUSPEND_WAIT;
344 mutex_unlock(&state_lock);
345
346 /*
347 * Otherwise it is a request to suspend the system.
348 * Queue an event for all readers, and expect an
349 * acknowledge from all writers who haven't already
350 * acknowledged.
351 */
352 err = queue_suspend_event(APM_USER_SUSPEND, as);
353 if (err < 0) {
354 /*
355 * Avoid taking the lock here - this
356 * should be fine.
357 */
358 as->suspend_state = SUSPEND_NONE;
359 break;
360 }
361
362 if (err > 0)
363 apm_suspend();
364
365 /*
366 * Wait for the suspend/resume to complete. If there
367 * are pending acknowledges, we wait here for them.
368 *
369 * Note: we need to ensure that the PM subsystem does
370 * not kick us out of the wait when it suspends the
371 * threads.
372 */
373 flags = current->flags;
374 current->flags |= PF_NOFREEZE;
375
376 wait_event_interruptible(apm_suspend_waitqueue,
377 as->suspend_state == SUSPEND_DONE);
378 }
379
380 current->flags = flags;
381
382 mutex_lock(&state_lock);
383 err = as->suspend_result;
384 as->suspend_state = SUSPEND_NONE;
385 mutex_unlock(&state_lock);
386 break;
387 }
388
389 return err;
390}
391
392static int apm_release(struct inode * inode, struct file * filp)
393{
394 struct apm_user *as = filp->private_data;
395 int pending = 0;
396
397 filp->private_data = NULL;
398
399 down_write(&user_list_lock);
400 list_del(&as->list);
401 up_write(&user_list_lock);
402
403 /*
404 * We are now unhooked from the chain. As far as new
405 * events are concerned, we no longer exist. However, we
406 * need to balance suspends_pending, which means the
407 * possibility of sleeping.
408 */
409 mutex_lock(&state_lock);
410 if (as->suspend_state != SUSPEND_NONE) {
411 suspends_pending -= 1;
412 pending = suspends_pending == 0;
413 }
414 mutex_unlock(&state_lock);
415 if (pending)
416 apm_suspend();
417
418 kfree(as);
419 return 0;
420}
421
422static int apm_open(struct inode * inode, struct file * filp)
423{
424 struct apm_user *as;
425
426 as = kzalloc(sizeof(*as), GFP_KERNEL);
427 if (as) {
428 /*
429 * XXX - this is a tiny bit broken, when we consider BSD
430 * process accounting. If the device is opened by root, we
431 * instantly flag that we used superuser privs. Who knows,
432 * we might close the device immediately without doing a
433 * privileged operation -- cevans
434 */
435 as->suser = capable(CAP_SYS_ADMIN);
436 as->writer = (filp->f_mode & FMODE_WRITE) == FMODE_WRITE;
437 as->reader = (filp->f_mode & FMODE_READ) == FMODE_READ;
438
439 down_write(&user_list_lock);
440 list_add(&as->list, &apm_user_list);
441 up_write(&user_list_lock);
442
443 filp->private_data = as;
444 }
445
446 return as ? 0 : -ENOMEM;
447}
448
449static struct file_operations apm_bios_fops = {
450 .owner = THIS_MODULE,
451 .read = apm_read,
452 .poll = apm_poll,
453 .ioctl = apm_ioctl,
454 .open = apm_open,
455 .release = apm_release,
456};
457
458static struct miscdevice apm_device = {
459 .minor = APM_MINOR_DEV,
460 .name = "apm_bios",
461 .fops = &apm_bios_fops
462};
463
464
465#ifdef CONFIG_PROC_FS
466/*
467 * Arguments, with symbols from linux/apm_bios.h.
468 *
469 * 0) Linux driver version (this will change if format changes)
470 * 1) APM BIOS Version. Usually 1.0, 1.1 or 1.2.
471 * 2) APM flags from APM Installation Check (0x00):
472 * bit 0: APM_16_BIT_SUPPORT
473 * bit 1: APM_32_BIT_SUPPORT
474 * bit 2: APM_IDLE_SLOWS_CLOCK
475 * bit 3: APM_BIOS_DISABLED
476 * bit 4: APM_BIOS_DISENGAGED
477 * 3) AC line status
478 * 0x00: Off-line
479 * 0x01: On-line
480 * 0x02: On backup power (BIOS >= 1.1 only)
481 * 0xff: Unknown
482 * 4) Battery status
483 * 0x00: High
484 * 0x01: Low
485 * 0x02: Critical
486 * 0x03: Charging
487 * 0x04: Selected battery not present (BIOS >= 1.2 only)
488 * 0xff: Unknown
489 * 5) Battery flag
490 * bit 0: High
491 * bit 1: Low
492 * bit 2: Critical
493 * bit 3: Charging
494 * bit 7: No system battery
495 * 0xff: Unknown
496 * 6) Remaining battery life (percentage of charge):
497 * 0-100: valid
498 * -1: Unknown
499 * 7) Remaining battery life (time units):
500 * Number of remaining minutes or seconds
501 * -1: Unknown
502 * 8) min = minutes; sec = seconds
503 */
504static int apm_get_info(char *buf, char **start, off_t fpos, int length)
505{
506 struct apm_power_info info;
507 char *units;
508 int ret;
509
510 info.ac_line_status = 0xff;
511 info.battery_status = 0xff;
512 info.battery_flag = 0xff;
513 info.battery_life = -1;
514 info.time = -1;
515 info.units = -1;
516
517 if (apm_get_power_status)
518 apm_get_power_status(&info);
519
520 switch (info.units) {
521 default: units = "?"; break;
522 case 0: units = "min"; break;
523 case 1: units = "sec"; break;
524 }
525
526 ret = sprintf(buf, "%s 1.2 0x%02x 0x%02x 0x%02x 0x%02x %d%% %d %s\n",
527 driver_version, APM_32_BIT_SUPPORT,
528 info.ac_line_status, info.battery_status,
529 info.battery_flag, info.battery_life,
530 info.time, units);
531
532 return ret;
533}
534#endif
535
536static int kapmd(void *arg)
537{
538 do {
539 apm_event_t event;
540 int ret;
541
542 wait_event_interruptible(kapmd_wait,
543 !queue_empty(&kapmd_queue) || kthread_should_stop());
544
545 if (kthread_should_stop())
546 break;
547
548 spin_lock_irq(&kapmd_queue_lock);
549 event = 0;
550 if (!queue_empty(&kapmd_queue))
551 event = queue_get_event(&kapmd_queue);
552 spin_unlock_irq(&kapmd_queue_lock);
553
554 switch (event) {
555 case 0:
556 break;
557
558 case APM_LOW_BATTERY:
559 case APM_POWER_STATUS_CHANGE:
560 queue_event(event);
561 break;
562
563 case APM_USER_SUSPEND:
564 case APM_SYS_SUSPEND:
565 ret = queue_suspend_event(event, NULL);
566 if (ret < 0) {
567 /*
568 * We were busy. Try again in 50ms.
569 */
570 queue_add_event(&kapmd_queue, event);
571 msleep(50);
572 }
573 if (ret > 0)
574 apm_suspend();
575 break;
576
577 case APM_CRITICAL_SUSPEND:
578 apm_suspend();
579 break;
580 }
581 } while (1);
582
583 return 0;
584}
585
586static int __init apm_init(void)
587{
588 int ret;
589
590 if (apm_disabled) {
591 printk(KERN_NOTICE "apm: disabled on user request.\n");
592 return -ENODEV;
593 }
594
595 kapmd_tsk = kthread_create(kapmd, NULL, "kapmd");
596 if (IS_ERR(kapmd_tsk)) {
597 ret = PTR_ERR(kapmd_tsk);
598 kapmd_tsk = NULL;
599 return ret;
600 }
601 kapmd_tsk->flags |= PF_NOFREEZE;
602 wake_up_process(kapmd_tsk);
603
604#ifdef CONFIG_PROC_FS
605 create_proc_info_entry("apm", 0, NULL, apm_get_info);
606#endif
607
608 ret = misc_register(&apm_device);
609 if (ret != 0) {
610 remove_proc_entry("apm", NULL);
611 kthread_stop(kapmd_tsk);
612 }
613
614 return ret;
615}
616
617static void __exit apm_exit(void)
618{
619 misc_deregister(&apm_device);
620 remove_proc_entry("apm", NULL);
621
622 kthread_stop(kapmd_tsk);
623}
624
625module_init(apm_init);
626module_exit(apm_exit);
627
628MODULE_AUTHOR("Stephen Rothwell");
629MODULE_DESCRIPTION("Advanced Power Management");
630MODULE_LICENSE("GPL");
631
632#ifndef MODULE
633static int __init apm_setup(char *str)
634{
635 while ((str != NULL) && (*str != '\0')) {
636 if (strncmp(str, "off", 3) == 0)
637 apm_disabled = 1;
638 if (strncmp(str, "on", 2) == 0)
639 apm_disabled = 0;
640 str = strchr(str, ',');
641 if (str != NULL)
642 str += strspn(str, ", \t");
643 }
644 return 1;
645}
646
647__setup("apm=", apm_setup);
648#endif
649
650/**
651 * apm_queue_event - queue an APM event for kapmd
652 * @event: APM event
653 *
654 * Queue an APM event for kapmd to process and ultimately take the
655 * appropriate action. Only a subset of events are handled:
656 * %APM_LOW_BATTERY
657 * %APM_POWER_STATUS_CHANGE
658 * %APM_USER_SUSPEND
659 * %APM_SYS_SUSPEND
660 * %APM_CRITICAL_SUSPEND
661 */
662void apm_queue_event(apm_event_t event)
663{
664 unsigned long flags;
665
666 spin_lock_irqsave(&kapmd_queue_lock, flags);
667 queue_add_event(&kapmd_queue, event);
668 spin_unlock_irqrestore(&kapmd_queue_lock, flags);
669
670 wake_up_interruptible(&kapmd_wait);
671}
672EXPORT_SYMBOL(apm_queue_event);
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index bbab134cd82d..ed522151878b 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -106,7 +106,7 @@ unsigned long phys_initrd_size __initdata = 0;
106static struct meminfo meminfo __initdata = { 0, }; 106static struct meminfo meminfo __initdata = { 0, };
107static const char *cpu_name; 107static const char *cpu_name;
108static const char *machine_name; 108static const char *machine_name;
109static char command_line[COMMAND_LINE_SIZE]; 109static char __initdata command_line[COMMAND_LINE_SIZE];
110 110
111static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE; 111static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE;
112static union { char c[4]; unsigned long l; } endian_test __initdata = { { 'l', '?', '?', 'b' } }; 112static union { char c[4]; unsigned long l; } endian_test __initdata = { { 'l', '?', '?', 'b' } };
@@ -803,8 +803,8 @@ void __init setup_arch(char **cmdline_p)
803 init_mm.end_data = (unsigned long) &_edata; 803 init_mm.end_data = (unsigned long) &_edata;
804 init_mm.brk = (unsigned long) &_end; 804 init_mm.brk = (unsigned long) &_end;
805 805
806 memcpy(saved_command_line, from, COMMAND_LINE_SIZE); 806 memcpy(boot_command_line, from, COMMAND_LINE_SIZE);
807 saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; 807 boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
808 parse_cmdline(cmdline_p, from); 808 parse_cmdline(cmdline_p, from);
809 paging_init(&meminfo, mdesc); 809 paging_init(&meminfo, mdesc);
810 request_standard_resources(&meminfo, mdesc); 810 request_standard_resources(&meminfo, mdesc);
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c
index 3c8cdcfe8d4a..ee47c532e210 100644
--- a/arch/arm/kernel/time.c
+++ b/arch/arm/kernel/time.c
@@ -78,16 +78,6 @@ static unsigned long dummy_gettimeoffset(void)
78#endif 78#endif
79 79
80/* 80/*
81 * Scheduler clock - returns current time in nanosec units.
82 * This is the default implementation. Sub-architecture
83 * implementations can override this.
84 */
85unsigned long long __attribute__((weak)) sched_clock(void)
86{
87 return (unsigned long long)jiffies * (1000000000 / HZ);
88}
89
90/*
91 * An implementation of printk_clock() independent from 81 * An implementation of printk_clock() independent from
92 * sched_clock(). This avoids non-bootable kernels when 82 * sched_clock(). This avoids non-bootable kernels when
93 * printk_clock is enabled. 83 * printk_clock is enabled.
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
index a8fa75ea07a9..b929a60f7547 100644
--- a/arch/arm/kernel/vmlinux.lds.S
+++ b/arch/arm/kernel/vmlinux.lds.S
@@ -53,10 +53,12 @@ SECTIONS
53 __security_initcall_start = .; 53 __security_initcall_start = .;
54 *(.security_initcall.init) 54 *(.security_initcall.init)
55 __security_initcall_end = .; 55 __security_initcall_end = .;
56#ifdef CONFIG_BLK_DEV_INITRD
56 . = ALIGN(32); 57 . = ALIGN(32);
57 __initramfs_start = .; 58 __initramfs_start = .;
58 usr/built-in.o(.init.ramfs) 59 usr/built-in.o(.init.ramfs)
59 __initramfs_end = .; 60 __initramfs_end = .;
61#endif
60 . = ALIGN(64); 62 . = ALIGN(64);
61 __per_cpu_start = .; 63 __per_cpu_start = .;
62 *(.data.percpu) 64 *(.data.percpu)
diff --git a/arch/arm/mach-at91rm9200/clock.c b/arch/arm/mach-at91rm9200/clock.c
index 4dee21fefe5a..36a8e4d1cc6d 100644
--- a/arch/arm/mach-at91rm9200/clock.c
+++ b/arch/arm/mach-at91rm9200/clock.c
@@ -407,7 +407,7 @@ static int at91_clk_open(struct inode *inode, struct file *file)
407 return single_open(file, at91_clk_show, NULL); 407 return single_open(file, at91_clk_show, NULL);
408} 408}
409 409
410static struct file_operations at91_clk_operations = { 410static const struct file_operations at91_clk_operations = {
411 .open = at91_clk_open, 411 .open = at91_clk_open,
412 .read = seq_read, 412 .read = seq_read,
413 .llseek = seq_lseek, 413 .llseek = seq_lseek,
diff --git a/arch/arm/mach-at91rm9200/gpio.c b/arch/arm/mach-at91rm9200/gpio.c
index af22659c8a28..15eb5b6b29f2 100644
--- a/arch/arm/mach-at91rm9200/gpio.c
+++ b/arch/arm/mach-at91rm9200/gpio.c
@@ -65,6 +65,24 @@ static inline unsigned pin_to_mask(unsigned pin)
65 65
66 66
67/* 67/*
68 * mux the pin to the "GPIO" peripheral role.
69 */
70int __init_or_module at91_set_GPIO_periph(unsigned pin, int use_pullup)
71{
72 void __iomem *pio = pin_to_controller(pin);
73 unsigned mask = pin_to_mask(pin);
74
75 if (!pio)
76 return -EINVAL;
77 __raw_writel(mask, pio + PIO_IDR);
78 __raw_writel(mask, pio + (use_pullup ? PIO_PUER : PIO_PUDR));
79 __raw_writel(mask, pio + PIO_PER);
80 return 0;
81}
82EXPORT_SYMBOL(at91_set_GPIO_periph);
83
84
85/*
68 * mux the pin to the "A" internal peripheral role. 86 * mux the pin to the "A" internal peripheral role.
69 */ 87 */
70int __init_or_module at91_set_A_periph(unsigned pin, int use_pullup) 88int __init_or_module at91_set_A_periph(unsigned pin, int use_pullup)
@@ -181,6 +199,36 @@ EXPORT_SYMBOL(at91_set_multi_drive);
181 199
182/*--------------------------------------------------------------------------*/ 200/*--------------------------------------------------------------------------*/
183 201
202/* new-style GPIO calls; these expect at91_set_GPIO_periph to have been
203 * called, and maybe at91_set_multi_drive() for putout pins.
204 */
205
206int gpio_direction_input(unsigned pin)
207{
208 void __iomem *pio = pin_to_controller(pin);
209 unsigned mask = pin_to_mask(pin);
210
211 if (!pio || !(__raw_readl(pio + PIO_PSR) & mask))
212 return -EINVAL;
213 __raw_writel(mask, pio + PIO_OER);
214 return 0;
215}
216EXPORT_SYMBOL(gpio_direction_input);
217
218int gpio_direction_output(unsigned pin)
219{
220 void __iomem *pio = pin_to_controller(pin);
221 unsigned mask = pin_to_mask(pin);
222
223 if (!pio || !(__raw_readl(pio + PIO_PSR) & mask))
224 return -EINVAL;
225 __raw_writel(mask, pio + PIO_OER);
226 return 0;
227}
228EXPORT_SYMBOL(gpio_direction_output);
229
230/*--------------------------------------------------------------------------*/
231
184/* 232/*
185 * assuming the pin is muxed as a gpio output, set its value. 233 * assuming the pin is muxed as a gpio output, set its value.
186 */ 234 */
diff --git a/arch/arm/mach-pxa/corgi_pm.c b/arch/arm/mach-pxa/corgi_pm.c
index 4c3de4008a43..165017de8d0d 100644
--- a/arch/arm/mach-pxa/corgi_pm.c
+++ b/arch/arm/mach-pxa/corgi_pm.c
@@ -16,7 +16,7 @@
16#include <linux/delay.h> 16#include <linux/delay.h>
17#include <linux/interrupt.h> 17#include <linux/interrupt.h>
18#include <linux/platform_device.h> 18#include <linux/platform_device.h>
19#include <asm/apm.h> 19#include <asm/apm-emulation.h>
20#include <asm/irq.h> 20#include <asm/irq.h>
21#include <asm/mach-types.h> 21#include <asm/mach-types.h>
22#include <asm/hardware.h> 22#include <asm/hardware.h>
diff --git a/arch/arm/mach-pxa/sharpsl_pm.c b/arch/arm/mach-pxa/sharpsl_pm.c
index db6e8f56a75f..b1d8cfca245a 100644
--- a/arch/arm/mach-pxa/sharpsl_pm.c
+++ b/arch/arm/mach-pxa/sharpsl_pm.c
@@ -23,7 +23,7 @@
23 23
24#include <asm/hardware.h> 24#include <asm/hardware.h>
25#include <asm/mach-types.h> 25#include <asm/mach-types.h>
26#include <asm/apm.h> 26#include <asm/apm-emulation.h>
27#include <asm/arch/pm.h> 27#include <asm/arch/pm.h>
28#include <asm/arch/pxa-regs.h> 28#include <asm/arch/pxa-regs.h>
29#include <asm/arch/sharpsl.h> 29#include <asm/arch/sharpsl.h>
diff --git a/arch/arm/mach-pxa/spitz_pm.c b/arch/arm/mach-pxa/spitz_pm.c
index 40be833079c7..b97d543d9364 100644
--- a/arch/arm/mach-pxa/spitz_pm.c
+++ b/arch/arm/mach-pxa/spitz_pm.c
@@ -16,7 +16,7 @@
16#include <linux/delay.h> 16#include <linux/delay.h>
17#include <linux/interrupt.h> 17#include <linux/interrupt.h>
18#include <linux/platform_device.h> 18#include <linux/platform_device.h>
19#include <asm/apm.h> 19#include <asm/apm-emulation.h>
20#include <asm/irq.h> 20#include <asm/irq.h>
21#include <asm/mach-types.h> 21#include <asm/mach-types.h>
22#include <asm/hardware.h> 22#include <asm/hardware.h>
diff --git a/arch/arm26/Kconfig b/arch/arm26/Kconfig
index 74eba8b5a8ca..989113dce415 100644
--- a/arch/arm26/Kconfig
+++ b/arch/arm26/Kconfig
@@ -60,6 +60,10 @@ config GENERIC_CALIBRATE_DELAY
60config GENERIC_BUST_SPINLOCK 60config GENERIC_BUST_SPINLOCK
61 bool 61 bool
62 62
63config ZONE_DMA
64 bool
65 default y
66
63config GENERIC_ISA_DMA 67config GENERIC_ISA_DMA
64 bool 68 bool
65 69
diff --git a/arch/arm26/kernel/ecard.c b/arch/arm26/kernel/ecard.c
index 9dbc17247c6f..e2bcefc91cc3 100644
--- a/arch/arm26/kernel/ecard.c
+++ b/arch/arm26/kernel/ecard.c
@@ -665,7 +665,7 @@ ecard_probe(int slot, card_type_t type)
665 ec->fiqmask = 4; 665 ec->fiqmask = 4;
666 } 666 }
667 667
668 for (i = 0; i < sizeof(blacklist) / sizeof(*blacklist); i++) 668 for (i = 0; i < ARRAY_SIZE(blacklist); i++)
669 if (blacklist[i].manufacturer == ec->cid.manufacturer && 669 if (blacklist[i].manufacturer == ec->cid.manufacturer &&
670 blacklist[i].product == ec->cid.product) { 670 blacklist[i].product == ec->cid.product) {
671 ec->card_desc = blacklist[i].type; 671 ec->card_desc = blacklist[i].type;
diff --git a/arch/arm26/kernel/setup.c b/arch/arm26/kernel/setup.c
index 466ddb54b44f..0e006c6cd5a0 100644
--- a/arch/arm26/kernel/setup.c
+++ b/arch/arm26/kernel/setup.c
@@ -80,7 +80,7 @@ unsigned long phys_initrd_size __initdata = 0;
80static struct meminfo meminfo __initdata = { 0, }; 80static struct meminfo meminfo __initdata = { 0, };
81static struct proc_info_item proc_info; 81static struct proc_info_item proc_info;
82static const char *machine_name; 82static const char *machine_name;
83static char command_line[COMMAND_LINE_SIZE]; 83static char __initdata command_line[COMMAND_LINE_SIZE];
84 84
85static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE; 85static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE;
86 86
@@ -492,8 +492,8 @@ void __init setup_arch(char **cmdline_p)
492 init_mm.end_data = (unsigned long) &_edata; 492 init_mm.end_data = (unsigned long) &_edata;
493 init_mm.brk = (unsigned long) &_end; 493 init_mm.brk = (unsigned long) &_end;
494 494
495 memcpy(saved_command_line, from, COMMAND_LINE_SIZE); 495 memcpy(boot_command_line, from, COMMAND_LINE_SIZE);
496 saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; 496 boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
497 parse_cmdline(&meminfo, cmdline_p, from); 497 parse_cmdline(&meminfo, cmdline_p, from);
498 bootmem_init(&meminfo); 498 bootmem_init(&meminfo);
499 paging_init(&meminfo); 499 paging_init(&meminfo);
diff --git a/arch/arm26/kernel/time.c b/arch/arm26/kernel/time.c
index 1206469b2b86..0f1d57fbd3d7 100644
--- a/arch/arm26/kernel/time.c
+++ b/arch/arm26/kernel/time.c
@@ -89,14 +89,6 @@ static unsigned long gettimeoffset(void)
89 return (offset + LATCH/2) / LATCH; 89 return (offset + LATCH/2) / LATCH;
90} 90}
91 91
92/*
93 * Scheduler clock - returns current time in nanosec units.
94 */
95unsigned long long sched_clock(void)
96{
97 return (unsigned long long)jiffies * (1000000000 / HZ);
98}
99
100static unsigned long next_rtc_update; 92static unsigned long next_rtc_update;
101 93
102/* 94/*
diff --git a/arch/arm26/kernel/vmlinux-arm26-xip.lds.in b/arch/arm26/kernel/vmlinux-arm26-xip.lds.in
index ca61ec8218fe..046a85054018 100644
--- a/arch/arm26/kernel/vmlinux-arm26-xip.lds.in
+++ b/arch/arm26/kernel/vmlinux-arm26-xip.lds.in
@@ -46,10 +46,12 @@ SECTIONS
46 __con_initcall_start = .; 46 __con_initcall_start = .;
47 *(.con_initcall.init) 47 *(.con_initcall.init)
48 __con_initcall_end = .; 48 __con_initcall_end = .;
49#ifdef CONFIG_BLK_DEV_INITRD
49 . = ALIGN(32); 50 . = ALIGN(32);
50 __initramfs_start = .; 51 __initramfs_start = .;
51 usr/built-in.o(.init.ramfs) 52 usr/built-in.o(.init.ramfs)
52 __initramfs_end = .; 53 __initramfs_end = .;
54#endif
53 . = ALIGN(32768); 55 . = ALIGN(32768);
54 __init_end = .; 56 __init_end = .;
55 } 57 }
diff --git a/arch/arm26/kernel/vmlinux-arm26.lds.in b/arch/arm26/kernel/vmlinux-arm26.lds.in
index d1d3418d7eb6..1d2949e83be8 100644
--- a/arch/arm26/kernel/vmlinux-arm26.lds.in
+++ b/arch/arm26/kernel/vmlinux-arm26.lds.in
@@ -47,10 +47,12 @@ SECTIONS
47 __con_initcall_start = .; 47 __con_initcall_start = .;
48 *(.con_initcall.init) 48 *(.con_initcall.init)
49 __con_initcall_end = .; 49 __con_initcall_end = .;
50#ifdef CONFIG_BLK_DEV_INITRD
50 . = ALIGN(32); 51 . = ALIGN(32);
51 __initramfs_start = .; 52 __initramfs_start = .;
52 usr/built-in.o(.init.ramfs) 53 usr/built-in.o(.init.ramfs)
53 __initramfs_end = .; 54 __initramfs_end = .;
55#endif
54 . = ALIGN(32768); 56 . = ALIGN(32768);
55 __init_end = .; 57 __init_end = .;
56 } 58 }
diff --git a/arch/avr32/boards/atstk1000/Makefile b/arch/avr32/boards/atstk1000/Makefile
index df9499480530..8e0992201bb9 100644
--- a/arch/avr32/boards/atstk1000/Makefile
+++ b/arch/avr32/boards/atstk1000/Makefile
@@ -1,2 +1,2 @@
1obj-y += setup.o spi.o flash.o 1obj-y += setup.o flash.o
2obj-$(CONFIG_BOARD_ATSTK1002) += atstk1002.o 2obj-$(CONFIG_BOARD_ATSTK1002) += atstk1002.o
diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c
index 32b361f31c2c..d47e39f0e971 100644
--- a/arch/avr32/boards/atstk1000/atstk1002.c
+++ b/arch/avr32/boards/atstk1000/atstk1002.c
@@ -8,17 +8,24 @@
8 * published by the Free Software Foundation. 8 * published by the Free Software Foundation.
9 */ 9 */
10#include <linux/clk.h> 10#include <linux/clk.h>
11#include <linux/device.h>
11#include <linux/etherdevice.h> 12#include <linux/etherdevice.h>
12#include <linux/init.h> 13#include <linux/init.h>
13#include <linux/kernel.h> 14#include <linux/kernel.h>
14#include <linux/platform_device.h> 15#include <linux/platform_device.h>
15#include <linux/string.h> 16#include <linux/string.h>
16#include <linux/types.h> 17#include <linux/types.h>
18#include <linux/spi/spi.h>
17 19
18#include <asm/io.h> 20#include <asm/io.h>
19#include <asm/setup.h> 21#include <asm/setup.h>
22#include <asm/arch/at32ap7000.h>
20#include <asm/arch/board.h> 23#include <asm/arch/board.h>
21#include <asm/arch/init.h> 24#include <asm/arch/init.h>
25#include <asm/arch/portmux.h>
26
27
28#define SW2_DEFAULT /* MMCI and UART_A available */
22 29
23struct eth_addr { 30struct eth_addr {
24 u8 addr[6]; 31 u8 addr[6];
@@ -29,6 +36,16 @@ static struct eth_addr __initdata hw_addr[2];
29static struct eth_platform_data __initdata eth_data[2]; 36static struct eth_platform_data __initdata eth_data[2];
30extern struct lcdc_platform_data atstk1000_fb0_data; 37extern struct lcdc_platform_data atstk1000_fb0_data;
31 38
39static struct spi_board_info spi_board_info[] __initdata = {
40 {
41 .modalias = "ltv350qv",
42 .controller_data = (void *)GPIO_PIN_PA(4),
43 .max_speed_hz = 16000000,
44 .bus_num = 0,
45 .chip_select = 1,
46 },
47};
48
32/* 49/*
33 * The next two functions should go away as the boot loader is 50 * The next two functions should go away as the boot loader is
34 * supposed to initialize the macb address registers with a valid 51 * supposed to initialize the macb address registers with a valid
@@ -86,23 +103,53 @@ static void __init set_hw_addr(struct platform_device *pdev)
86 103
87void __init setup_board(void) 104void __init setup_board(void)
88{ 105{
89 at32_map_usart(1, 0); /* /dev/ttyS0 */ 106#ifdef SW2_DEFAULT
90 at32_map_usart(2, 1); /* /dev/ttyS1 */ 107 at32_map_usart(1, 0); /* USART 1/A: /dev/ttyS0, DB9 */
91 at32_map_usart(3, 2); /* /dev/ttyS2 */ 108#else
109 at32_map_usart(0, 1); /* USART 0/B: /dev/ttyS1, IRDA */
110#endif
111 /* USART 2/unused: expansion connector */
112 at32_map_usart(3, 2); /* USART 3/C: /dev/ttyS2, DB9 */
92 113
93 at32_setup_serial_console(0); 114 at32_setup_serial_console(0);
94} 115}
95 116
96static int __init atstk1002_init(void) 117static int __init atstk1002_init(void)
97{ 118{
119 /*
120 * ATSTK1000 uses 32-bit SDRAM interface. Reserve the
121 * SDRAM-specific pins so that nobody messes with them.
122 */
123 at32_reserve_pin(GPIO_PIN_PE(0)); /* DATA[16] */
124 at32_reserve_pin(GPIO_PIN_PE(1)); /* DATA[17] */
125 at32_reserve_pin(GPIO_PIN_PE(2)); /* DATA[18] */
126 at32_reserve_pin(GPIO_PIN_PE(3)); /* DATA[19] */
127 at32_reserve_pin(GPIO_PIN_PE(4)); /* DATA[20] */
128 at32_reserve_pin(GPIO_PIN_PE(5)); /* DATA[21] */
129 at32_reserve_pin(GPIO_PIN_PE(6)); /* DATA[22] */
130 at32_reserve_pin(GPIO_PIN_PE(7)); /* DATA[23] */
131 at32_reserve_pin(GPIO_PIN_PE(8)); /* DATA[24] */
132 at32_reserve_pin(GPIO_PIN_PE(9)); /* DATA[25] */
133 at32_reserve_pin(GPIO_PIN_PE(10)); /* DATA[26] */
134 at32_reserve_pin(GPIO_PIN_PE(11)); /* DATA[27] */
135 at32_reserve_pin(GPIO_PIN_PE(12)); /* DATA[28] */
136 at32_reserve_pin(GPIO_PIN_PE(13)); /* DATA[29] */
137 at32_reserve_pin(GPIO_PIN_PE(14)); /* DATA[30] */
138 at32_reserve_pin(GPIO_PIN_PE(15)); /* DATA[31] */
139 at32_reserve_pin(GPIO_PIN_PE(26)); /* SDCS */
140
98 at32_add_system_devices(); 141 at32_add_system_devices();
99 142
143#ifdef SW2_DEFAULT
100 at32_add_device_usart(0); 144 at32_add_device_usart(0);
145#else
101 at32_add_device_usart(1); 146 at32_add_device_usart(1);
147#endif
102 at32_add_device_usart(2); 148 at32_add_device_usart(2);
103 149
104 set_hw_addr(at32_add_device_eth(0, &eth_data[0])); 150 set_hw_addr(at32_add_device_eth(0, &eth_data[0]));
105 151
152 spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
106 at32_add_device_spi(0); 153 at32_add_device_spi(0);
107 at32_add_device_lcdc(0, &atstk1000_fb0_data); 154 at32_add_device_lcdc(0, &atstk1000_fb0_data);
108 155
diff --git a/arch/avr32/boards/atstk1000/spi.c b/arch/avr32/boards/atstk1000/spi.c
deleted file mode 100644
index 567726c82c6e..000000000000
--- a/arch/avr32/boards/atstk1000/spi.c
+++ /dev/null
@@ -1,27 +0,0 @@
1/*
2 * ATSTK1000 SPI devices
3 *
4 * Copyright (C) 2005 Atmel Norway
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10#include <linux/device.h>
11#include <linux/spi/spi.h>
12
13static struct spi_board_info spi_board_info[] __initdata = {
14 {
15 .modalias = "ltv350qv",
16 .max_speed_hz = 16000000,
17 .bus_num = 0,
18 .chip_select = 1,
19 },
20};
21
22static int board_init_spi(void)
23{
24 spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
25 return 0;
26}
27arch_initcall(board_init_spi);
diff --git a/arch/avr32/kernel/cpu.c b/arch/avr32/kernel/cpu.c
index 342452ba2049..2e72fd2699df 100644
--- a/arch/avr32/kernel/cpu.c
+++ b/arch/avr32/kernel/cpu.c
@@ -9,6 +9,7 @@
9#include <linux/sysdev.h> 9#include <linux/sysdev.h>
10#include <linux/seq_file.h> 10#include <linux/seq_file.h>
11#include <linux/cpu.h> 11#include <linux/cpu.h>
12#include <linux/module.h>
12#include <linux/percpu.h> 13#include <linux/percpu.h>
13#include <linux/param.h> 14#include <linux/param.h>
14#include <linux/errno.h> 15#include <linux/errno.h>
diff --git a/arch/avr32/kernel/irq.c b/arch/avr32/kernel/irq.c
index 856f3548e664..fd311248c143 100644
--- a/arch/avr32/kernel/irq.c
+++ b/arch/avr32/kernel/irq.c
@@ -57,6 +57,7 @@ int show_interrupts(struct seq_file *p, void *v)
57 seq_printf(p, "%3d: ", i); 57 seq_printf(p, "%3d: ", i);
58 for_each_online_cpu(cpu) 58 for_each_online_cpu(cpu)
59 seq_printf(p, "%10u ", kstat_cpu(cpu).irqs[i]); 59 seq_printf(p, "%10u ", kstat_cpu(cpu).irqs[i]);
60 seq_printf(p, " %8s", irq_desc[i].chip->name ? : "-");
60 seq_printf(p, " %s", action->name); 61 seq_printf(p, " %s", action->name);
61 for (action = action->next; action; action = action->next) 62 for (action = action->next; action; action = action->next)
62 seq_printf(p, ", %s", action->name); 63 seq_printf(p, ", %s", action->name);
diff --git a/arch/avr32/kernel/setup.c b/arch/avr32/kernel/setup.c
index a34211601008..a1a7c3c3f522 100644
--- a/arch/avr32/kernel/setup.c
+++ b/arch/avr32/kernel/setup.c
@@ -16,6 +16,7 @@
16#include <linux/module.h> 16#include <linux/module.h>
17#include <linux/root_dev.h> 17#include <linux/root_dev.h>
18#include <linux/cpu.h> 18#include <linux/cpu.h>
19#include <linux/kernel.h>
19 20
20#include <asm/sections.h> 21#include <asm/sections.h>
21#include <asm/processor.h> 22#include <asm/processor.h>
@@ -44,7 +45,7 @@ struct avr32_cpuinfo boot_cpu_data = {
44}; 45};
45EXPORT_SYMBOL(boot_cpu_data); 46EXPORT_SYMBOL(boot_cpu_data);
46 47
47static char command_line[COMMAND_LINE_SIZE]; 48static char __initdata command_line[COMMAND_LINE_SIZE];
48 49
49/* 50/*
50 * Should be more than enough, but if you have a _really_ complex 51 * Should be more than enough, but if you have a _really_ complex
@@ -174,8 +175,7 @@ static int __init parse_tag_mem_range(struct tag *tag,
174 * Copy the data so the bootmem init code doesn't need to care 175 * Copy the data so the bootmem init code doesn't need to care
175 * about it. 176 * about it.
176 */ 177 */
177 if (mem_range_next_free >= 178 if (mem_range_next_free >= ARRAY_SIZE(mem_range_cache))
178 (sizeof(mem_range_cache) / sizeof(mem_range_cache[0])))
179 panic("Physical memory map too complex!\n"); 179 panic("Physical memory map too complex!\n");
180 180
181 new = &mem_range_cache[mem_range_next_free++]; 181 new = &mem_range_cache[mem_range_next_free++];
@@ -202,7 +202,7 @@ __tagtable(ATAG_MEM, parse_tag_mem);
202 202
203static int __init parse_tag_cmdline(struct tag *tag) 203static int __init parse_tag_cmdline(struct tag *tag)
204{ 204{
205 strlcpy(saved_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE); 205 strlcpy(boot_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE);
206 return 0; 206 return 0;
207} 207}
208__tagtable(ATAG_CMDLINE, parse_tag_cmdline); 208__tagtable(ATAG_CMDLINE, parse_tag_cmdline);
@@ -294,7 +294,7 @@ void __init setup_arch (char **cmdline_p)
294 init_mm.end_data = (unsigned long) &_edata; 294 init_mm.end_data = (unsigned long) &_edata;
295 init_mm.brk = (unsigned long) &_end; 295 init_mm.brk = (unsigned long) &_end;
296 296
297 strlcpy(command_line, saved_command_line, COMMAND_LINE_SIZE); 297 strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
298 *cmdline_p = command_line; 298 *cmdline_p = command_line;
299 parse_early_param(); 299 parse_early_param();
300 300
diff --git a/arch/avr32/kernel/time.c b/arch/avr32/kernel/time.c
index 5a247ba71a72..a2f74affaa98 100644
--- a/arch/avr32/kernel/time.c
+++ b/arch/avr32/kernel/time.c
@@ -110,15 +110,6 @@ static void avr32_hpt_init(unsigned int count)
110} 110}
111 111
112/* 112/*
113 * Scheduler clock - returns current time in nanosec units.
114 */
115unsigned long long sched_clock(void)
116{
117 /* There must be better ways...? */
118 return (unsigned long long)jiffies * (1000000000 / HZ);
119}
120
121/*
122 * local_timer_interrupt() does profiling and process accounting on a 113 * local_timer_interrupt() does profiling and process accounting on a
123 * per-CPU basis. 114 * per-CPU basis.
124 * 115 *
diff --git a/arch/avr32/kernel/vmlinux.lds.c b/arch/avr32/kernel/vmlinux.lds.c
index 5c4424e362b5..ef13b7c78935 100644
--- a/arch/avr32/kernel/vmlinux.lds.c
+++ b/arch/avr32/kernel/vmlinux.lds.c
@@ -46,10 +46,12 @@ SECTIONS
46 __security_initcall_start = .; 46 __security_initcall_start = .;
47 *(.security_initcall.init) 47 *(.security_initcall.init)
48 __security_initcall_end = .; 48 __security_initcall_end = .;
49#ifdef CONFIG_BLK_DEV_INITRD
49 . = ALIGN(32); 50 . = ALIGN(32);
50 __initramfs_start = .; 51 __initramfs_start = .;
51 *(.init.ramfs) 52 *(.init.ramfs)
52 __initramfs_end = .; 53 __initramfs_end = .;
54#endif
53 . = ALIGN(4096); 55 . = ALIGN(4096);
54 __init_end = .; 56 __init_end = .;
55 } 57 }
diff --git a/arch/avr32/lib/libgcc.h b/arch/avr32/lib/libgcc.h
deleted file mode 100644
index 5a091b5e3618..000000000000
--- a/arch/avr32/lib/libgcc.h
+++ /dev/null
@@ -1,33 +0,0 @@
1/* Definitions for various functions 'borrowed' from gcc-3.4.3 */
2
3#define BITS_PER_UNIT 8
4
5typedef int QItype __attribute__ ((mode (QI)));
6typedef unsigned int UQItype __attribute__ ((mode (QI)));
7typedef int HItype __attribute__ ((mode (HI)));
8typedef unsigned int UHItype __attribute__ ((mode (HI)));
9typedef int SItype __attribute__ ((mode (SI)));
10typedef unsigned int USItype __attribute__ ((mode (SI)));
11typedef int DItype __attribute__ ((mode (DI)));
12typedef unsigned int UDItype __attribute__ ((mode (DI)));
13typedef float SFtype __attribute__ ((mode (SF)));
14typedef float DFtype __attribute__ ((mode (DF)));
15typedef int word_type __attribute__ ((mode (__word__)));
16
17#define W_TYPE_SIZE (4 * BITS_PER_UNIT)
18#define Wtype SItype
19#define UWtype USItype
20#define HWtype SItype
21#define UHWtype USItype
22#define DWtype DItype
23#define UDWtype UDItype
24#define __NW(a,b) __ ## a ## si ## b
25#define __NDW(a,b) __ ## a ## di ## b
26
27struct DWstruct {Wtype high, low;};
28
29typedef union
30{
31 struct DWstruct s;
32 DWtype ll;
33} DWunion;
diff --git a/arch/avr32/lib/longlong.h b/arch/avr32/lib/longlong.h
deleted file mode 100644
index cd5e369ac437..000000000000
--- a/arch/avr32/lib/longlong.h
+++ /dev/null
@@ -1,98 +0,0 @@
1/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
2 Copyright (C) 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000
3 Free Software Foundation, Inc.
4
5 This definition file is free software; you can redistribute it
6 and/or modify it under the terms of the GNU General Public
7 License as published by the Free Software Foundation; either
8 version 2, or (at your option) any later version.
9
10 This definition file is distributed in the hope that it will be
11 useful, but WITHOUT ANY WARRANTY; without even the implied
12 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 See the GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. */
19
20/* Borrowed from gcc-3.4.3 */
21
22#define __BITS4 (W_TYPE_SIZE / 4)
23#define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2))
24#define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1))
25#define __ll_highpart(t) ((UWtype) (t) >> (W_TYPE_SIZE / 2))
26
27#define count_leading_zeros(count, x) ((count) = __builtin_clz(x))
28
29#define __udiv_qrnnd_c(q, r, n1, n0, d) \
30 do { \
31 UWtype __d1, __d0, __q1, __q0; \
32 UWtype __r1, __r0, __m; \
33 __d1 = __ll_highpart (d); \
34 __d0 = __ll_lowpart (d); \
35 \
36 __r1 = (n1) % __d1; \
37 __q1 = (n1) / __d1; \
38 __m = (UWtype) __q1 * __d0; \
39 __r1 = __r1 * __ll_B | __ll_highpart (n0); \
40 if (__r1 < __m) \
41 { \
42 __q1--, __r1 += (d); \
43 if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\
44 if (__r1 < __m) \
45 __q1--, __r1 += (d); \
46 } \
47 __r1 -= __m; \
48 \
49 __r0 = __r1 % __d1; \
50 __q0 = __r1 / __d1; \
51 __m = (UWtype) __q0 * __d0; \
52 __r0 = __r0 * __ll_B | __ll_lowpart (n0); \
53 if (__r0 < __m) \
54 { \
55 __q0--, __r0 += (d); \
56 if (__r0 >= (d)) \
57 if (__r0 < __m) \
58 __q0--, __r0 += (d); \
59 } \
60 __r0 -= __m; \
61 \
62 (q) = (UWtype) __q1 * __ll_B | __q0; \
63 (r) = __r0; \
64 } while (0)
65
66#define udiv_qrnnd __udiv_qrnnd_c
67
68#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
69 do { \
70 UWtype __x; \
71 __x = (al) - (bl); \
72 (sh) = (ah) - (bh) - (__x > (al)); \
73 (sl) = __x; \
74 } while (0)
75
76#define umul_ppmm(w1, w0, u, v) \
77 do { \
78 UWtype __x0, __x1, __x2, __x3; \
79 UHWtype __ul, __vl, __uh, __vh; \
80 \
81 __ul = __ll_lowpart (u); \
82 __uh = __ll_highpart (u); \
83 __vl = __ll_lowpart (v); \
84 __vh = __ll_highpart (v); \
85 \
86 __x0 = (UWtype) __ul * __vl; \
87 __x1 = (UWtype) __ul * __vh; \
88 __x2 = (UWtype) __uh * __vl; \
89 __x3 = (UWtype) __uh * __vh; \
90 \
91 __x1 += __ll_highpart (__x0);/* this can't give carry */ \
92 __x1 += __x2; /* but this indeed can */ \
93 if (__x1 < __x2) /* did we get it? */ \
94 __x3 += __ll_B; /* yes, add it in the proper pos. */ \
95 \
96 (w1) = __x3 + __ll_highpart (__x1); \
97 (w0) = __ll_lowpart (__x1) * __ll_B + __ll_lowpart (__x0); \
98 } while (0)
diff --git a/arch/avr32/mach-at32ap/Makefile b/arch/avr32/mach-at32ap/Makefile
index f62eb6915510..b21bea9af8b1 100644
--- a/arch/avr32/mach-at32ap/Makefile
+++ b/arch/avr32/mach-at32ap/Makefile
@@ -1,2 +1,2 @@
1obj-y += at32ap.o clock.o pio.o intc.o extint.o hsmc.o 1obj-y += at32ap.o clock.o intc.o extint.o pio.o hsmc.o
2obj-$(CONFIG_CPU_AT32AP7000) += at32ap7000.o 2obj-$(CONFIG_CPU_AT32AP7000) += at32ap7000.o
diff --git a/arch/avr32/mach-at32ap/at32ap7000.c b/arch/avr32/mach-at32ap/at32ap7000.c
index 48f4ef38c70e..c1e477ec7576 100644
--- a/arch/avr32/mach-at32ap/at32ap7000.c
+++ b/arch/avr32/mach-at32ap/at32ap7000.c
@@ -496,9 +496,16 @@ static struct resource pio3_resource[] = {
496DEFINE_DEV(pio, 3); 496DEFINE_DEV(pio, 3);
497DEV_CLK(mck, pio3, pba, 13); 497DEV_CLK(mck, pio3, pba, 13);
498 498
499static struct resource pio4_resource[] = {
500 PBMEM(0xffe03800),
501 IRQ(17),
502};
503DEFINE_DEV(pio, 4);
504DEV_CLK(mck, pio4, pba, 14);
505
499void __init at32_add_system_devices(void) 506void __init at32_add_system_devices(void)
500{ 507{
501 system_manager.eim_first_irq = NR_INTERNAL_IRQS; 508 system_manager.eim_first_irq = EIM_IRQ_BASE;
502 509
503 platform_device_register(&at32_sm_device); 510 platform_device_register(&at32_sm_device);
504 platform_device_register(&at32_intc0_device); 511 platform_device_register(&at32_intc0_device);
@@ -509,6 +516,7 @@ void __init at32_add_system_devices(void)
509 platform_device_register(&pio1_device); 516 platform_device_register(&pio1_device);
510 platform_device_register(&pio2_device); 517 platform_device_register(&pio2_device);
511 platform_device_register(&pio3_device); 518 platform_device_register(&pio3_device);
519 platform_device_register(&pio4_device);
512} 520}
513 521
514/* -------------------------------------------------------------------- 522/* --------------------------------------------------------------------
@@ -521,7 +529,7 @@ static struct atmel_uart_data atmel_usart0_data = {
521}; 529};
522static struct resource atmel_usart0_resource[] = { 530static struct resource atmel_usart0_resource[] = {
523 PBMEM(0xffe00c00), 531 PBMEM(0xffe00c00),
524 IRQ(7), 532 IRQ(6),
525}; 533};
526DEFINE_DEV_DATA(atmel_usart, 0); 534DEFINE_DEV_DATA(atmel_usart, 0);
527DEV_CLK(usart, atmel_usart0, pba, 4); 535DEV_CLK(usart, atmel_usart0, pba, 4);
@@ -583,7 +591,7 @@ static inline void configure_usart3_pins(void)
583 select_peripheral(PB(17), PERIPH_B, 0); /* TXD */ 591 select_peripheral(PB(17), PERIPH_B, 0); /* TXD */
584} 592}
585 593
586static struct platform_device *at32_usarts[4]; 594static struct platform_device *__initdata at32_usarts[4];
587 595
588void __init at32_map_usart(unsigned int hw_id, unsigned int line) 596void __init at32_map_usart(unsigned int hw_id, unsigned int line)
589{ 597{
@@ -728,12 +736,19 @@ at32_add_device_eth(unsigned int id, struct eth_platform_data *data)
728/* -------------------------------------------------------------------- 736/* --------------------------------------------------------------------
729 * SPI 737 * SPI
730 * -------------------------------------------------------------------- */ 738 * -------------------------------------------------------------------- */
731static struct resource spi0_resource[] = { 739static struct resource atmel_spi0_resource[] = {
732 PBMEM(0xffe00000), 740 PBMEM(0xffe00000),
733 IRQ(3), 741 IRQ(3),
734}; 742};
735DEFINE_DEV(spi, 0); 743DEFINE_DEV(atmel_spi, 0);
736DEV_CLK(mck, spi0, pba, 0); 744DEV_CLK(spi_clk, atmel_spi0, pba, 0);
745
746static struct resource atmel_spi1_resource[] = {
747 PBMEM(0xffe00400),
748 IRQ(4),
749};
750DEFINE_DEV(atmel_spi, 1);
751DEV_CLK(spi_clk, atmel_spi1, pba, 1);
737 752
738struct platform_device *__init at32_add_device_spi(unsigned int id) 753struct platform_device *__init at32_add_device_spi(unsigned int id)
739{ 754{
@@ -741,13 +756,33 @@ struct platform_device *__init at32_add_device_spi(unsigned int id)
741 756
742 switch (id) { 757 switch (id) {
743 case 0: 758 case 0:
744 pdev = &spi0_device; 759 pdev = &atmel_spi0_device;
745 select_peripheral(PA(0), PERIPH_A, 0); /* MISO */ 760 select_peripheral(PA(0), PERIPH_A, 0); /* MISO */
746 select_peripheral(PA(1), PERIPH_A, 0); /* MOSI */ 761 select_peripheral(PA(1), PERIPH_A, 0); /* MOSI */
747 select_peripheral(PA(2), PERIPH_A, 0); /* SCK */ 762 select_peripheral(PA(2), PERIPH_A, 0); /* SCK */
748 select_peripheral(PA(3), PERIPH_A, 0); /* NPCS0 */ 763
749 select_peripheral(PA(4), PERIPH_A, 0); /* NPCS1 */ 764 /* NPCS[2:0] */
750 select_peripheral(PA(5), PERIPH_A, 0); /* NPCS2 */ 765 at32_select_gpio(GPIO_PIN_PA(3),
766 AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
767 at32_select_gpio(GPIO_PIN_PA(4),
768 AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
769 at32_select_gpio(GPIO_PIN_PA(5),
770 AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
771 break;
772
773 case 1:
774 pdev = &atmel_spi1_device;
775 select_peripheral(PB(0), PERIPH_B, 0); /* MISO */
776 select_peripheral(PB(1), PERIPH_B, 0); /* MOSI */
777 select_peripheral(PB(5), PERIPH_B, 0); /* SCK */
778
779 /* NPCS[2:0] */
780 at32_select_gpio(GPIO_PIN_PB(2),
781 AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
782 at32_select_gpio(GPIO_PIN_PB(3),
783 AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
784 at32_select_gpio(GPIO_PIN_PB(4),
785 AT32_GPIOF_OUTPUT | AT32_GPIOF_HIGH);
751 break; 786 break;
752 787
753 default: 788 default:
@@ -860,6 +895,7 @@ struct clk *at32_clock_list[] = {
860 &pio1_mck, 895 &pio1_mck,
861 &pio2_mck, 896 &pio2_mck,
862 &pio3_mck, 897 &pio3_mck,
898 &pio4_mck,
863 &atmel_usart0_usart, 899 &atmel_usart0_usart,
864 &atmel_usart1_usart, 900 &atmel_usart1_usart,
865 &atmel_usart2_usart, 901 &atmel_usart2_usart,
@@ -868,7 +904,8 @@ struct clk *at32_clock_list[] = {
868 &macb0_pclk, 904 &macb0_pclk,
869 &macb1_hclk, 905 &macb1_hclk,
870 &macb1_pclk, 906 &macb1_pclk,
871 &spi0_mck, 907 &atmel_spi0_spi_clk,
908 &atmel_spi1_spi_clk,
872 &lcdc0_hclk, 909 &lcdc0_hclk,
873 &lcdc0_pixclk, 910 &lcdc0_pixclk,
874}; 911};
@@ -880,6 +917,7 @@ void __init at32_portmux_init(void)
880 at32_init_pio(&pio1_device); 917 at32_init_pio(&pio1_device);
881 at32_init_pio(&pio2_device); 918 at32_init_pio(&pio2_device);
882 at32_init_pio(&pio3_device); 919 at32_init_pio(&pio3_device);
920 at32_init_pio(&pio4_device);
883} 921}
884 922
885void __init at32_clock_init(void) 923void __init at32_clock_init(void)
diff --git a/arch/avr32/mach-at32ap/extint.c b/arch/avr32/mach-at32ap/extint.c
index b59272e81b9a..4a60eccfebd2 100644
--- a/arch/avr32/mach-at32ap/extint.c
+++ b/arch/avr32/mach-at32ap/extint.c
@@ -55,20 +55,11 @@ static int eim_set_irq_type(unsigned int irq, unsigned int flow_type)
55 unsigned long flags; 55 unsigned long flags;
56 int ret = 0; 56 int ret = 0;
57 57
58 flow_type &= IRQ_TYPE_SENSE_MASK;
58 if (flow_type == IRQ_TYPE_NONE) 59 if (flow_type == IRQ_TYPE_NONE)
59 flow_type = IRQ_TYPE_LEVEL_LOW; 60 flow_type = IRQ_TYPE_LEVEL_LOW;
60 61
61 desc = &irq_desc[irq]; 62 desc = &irq_desc[irq];
62 desc->status &= ~(IRQ_TYPE_SENSE_MASK | IRQ_LEVEL);
63 desc->status |= flow_type & IRQ_TYPE_SENSE_MASK;
64
65 if (flow_type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) {
66 desc->status |= IRQ_LEVEL;
67 set_irq_handler(irq, handle_level_irq);
68 } else {
69 set_irq_handler(irq, handle_edge_irq);
70 }
71
72 spin_lock_irqsave(&sm->lock, flags); 63 spin_lock_irqsave(&sm->lock, flags);
73 64
74 mode = sm_readl(sm, EIM_MODE); 65 mode = sm_readl(sm, EIM_MODE);
@@ -97,9 +88,16 @@ static int eim_set_irq_type(unsigned int irq, unsigned int flow_type)
97 break; 88 break;
98 } 89 }
99 90
100 sm_writel(sm, EIM_MODE, mode); 91 if (ret == 0) {
101 sm_writel(sm, EIM_EDGE, edge); 92 sm_writel(sm, EIM_MODE, mode);
102 sm_writel(sm, EIM_LEVEL, level); 93 sm_writel(sm, EIM_EDGE, edge);
94 sm_writel(sm, EIM_LEVEL, level);
95
96 if (flow_type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH))
97 flow_type |= IRQ_LEVEL;
98 desc->status &= ~(IRQ_TYPE_SENSE_MASK | IRQ_LEVEL);
99 desc->status |= flow_type;
100 }
103 101
104 spin_unlock_irqrestore(&sm->lock, flags); 102 spin_unlock_irqrestore(&sm->lock, flags);
105 103
@@ -122,8 +120,6 @@ static void demux_eim_irq(unsigned int irq, struct irq_desc *desc)
122 unsigned long status, pending; 120 unsigned long status, pending;
123 unsigned int i, ext_irq; 121 unsigned int i, ext_irq;
124 122
125 spin_lock(&sm->lock);
126
127 status = sm_readl(sm, EIM_ISR); 123 status = sm_readl(sm, EIM_ISR);
128 pending = status & sm_readl(sm, EIM_IMR); 124 pending = status & sm_readl(sm, EIM_IMR);
129 125
@@ -133,10 +129,11 @@ static void demux_eim_irq(unsigned int irq, struct irq_desc *desc)
133 129
134 ext_irq = i + sm->eim_first_irq; 130 ext_irq = i + sm->eim_first_irq;
135 ext_desc = irq_desc + ext_irq; 131 ext_desc = irq_desc + ext_irq;
136 ext_desc->handle_irq(ext_irq, ext_desc); 132 if (ext_desc->status & IRQ_LEVEL)
133 handle_level_irq(ext_irq, ext_desc);
134 else
135 handle_edge_irq(ext_irq, ext_desc);
137 } 136 }
138
139 spin_unlock(&sm->lock);
140} 137}
141 138
142static int __init eim_init(void) 139static int __init eim_init(void)
@@ -168,8 +165,9 @@ static int __init eim_init(void)
168 sm->eim_chip = &eim_chip; 165 sm->eim_chip = &eim_chip;
169 166
170 for (i = 0; i < nr_irqs; i++) { 167 for (i = 0; i < nr_irqs; i++) {
168 /* NOTE the handler we set here is ignored by the demux */
171 set_irq_chip_and_handler(sm->eim_first_irq + i, &eim_chip, 169 set_irq_chip_and_handler(sm->eim_first_irq + i, &eim_chip,
172 handle_edge_irq); 170 handle_level_irq);
173 set_irq_chip_data(sm->eim_first_irq + i, sm); 171 set_irq_chip_data(sm->eim_first_irq + i, sm);
174 } 172 }
175 173
diff --git a/arch/avr32/mach-at32ap/pio.c b/arch/avr32/mach-at32ap/pio.c
index f1280ed8ed6d..9ba5654cde11 100644
--- a/arch/avr32/mach-at32ap/pio.c
+++ b/arch/avr32/mach-at32ap/pio.c
@@ -12,7 +12,9 @@
12#include <linux/debugfs.h> 12#include <linux/debugfs.h>
13#include <linux/fs.h> 13#include <linux/fs.h>
14#include <linux/platform_device.h> 14#include <linux/platform_device.h>
15#include <linux/irq.h>
15 16
17#include <asm/gpio.h>
16#include <asm/io.h> 18#include <asm/io.h>
17 19
18#include <asm/arch/portmux.h> 20#include <asm/arch/portmux.h>
@@ -26,7 +28,8 @@ struct pio_device {
26 const struct platform_device *pdev; 28 const struct platform_device *pdev;
27 struct clk *clk; 29 struct clk *clk;
28 u32 pinmux_mask; 30 u32 pinmux_mask;
29 char name[32]; 31 u32 gpio_mask;
32 char name[8];
30}; 33};
31 34
32static struct pio_device pio_dev[MAX_NR_PIO_DEVICES]; 35static struct pio_device pio_dev[MAX_NR_PIO_DEVICES];
@@ -76,6 +79,9 @@ void __init at32_select_periph(unsigned int pin, unsigned int periph,
76 if (!(flags & AT32_GPIOF_PULLUP)) 79 if (!(flags & AT32_GPIOF_PULLUP))
77 pio_writel(pio, PUDR, mask); 80 pio_writel(pio, PUDR, mask);
78 81
82 /* gpio_request NOT allowed */
83 set_bit(pin_index, &pio->gpio_mask);
84
79 return; 85 return;
80 86
81fail: 87fail:
@@ -99,19 +105,52 @@ void __init at32_select_gpio(unsigned int pin, unsigned long flags)
99 goto fail; 105 goto fail;
100 } 106 }
101 107
102 pio_writel(pio, PUER, mask); 108 if (flags & AT32_GPIOF_OUTPUT) {
103 if (flags & AT32_GPIOF_HIGH) 109 if (flags & AT32_GPIOF_HIGH)
104 pio_writel(pio, SODR, mask); 110 pio_writel(pio, SODR, mask);
105 else 111 else
106 pio_writel(pio, CODR, mask); 112 pio_writel(pio, CODR, mask);
107 if (flags & AT32_GPIOF_OUTPUT) 113 pio_writel(pio, PUDR, mask);
108 pio_writel(pio, OER, mask); 114 pio_writel(pio, OER, mask);
109 else 115 } else {
116 if (flags & AT32_GPIOF_PULLUP)
117 pio_writel(pio, PUER, mask);
118 else
119 pio_writel(pio, PUDR, mask);
120 if (flags & AT32_GPIOF_DEGLITCH)
121 pio_writel(pio, IFER, mask);
122 else
123 pio_writel(pio, IFDR, mask);
110 pio_writel(pio, ODR, mask); 124 pio_writel(pio, ODR, mask);
125 }
111 126
112 pio_writel(pio, PER, mask); 127 pio_writel(pio, PER, mask);
113 if (!(flags & AT32_GPIOF_PULLUP)) 128
114 pio_writel(pio, PUDR, mask); 129 /* gpio_request now allowed */
130 clear_bit(pin_index, &pio->gpio_mask);
131
132 return;
133
134fail:
135 dump_stack();
136}
137
138/* Reserve a pin, preventing anyone else from changing its configuration. */
139void __init at32_reserve_pin(unsigned int pin)
140{
141 struct pio_device *pio;
142 unsigned int pin_index = pin & 0x1f;
143
144 pio = gpio_to_pio(pin);
145 if (unlikely(!pio)) {
146 printk("pio: invalid pin %u\n", pin);
147 goto fail;
148 }
149
150 if (unlikely(test_and_set_bit(pin_index, &pio->pinmux_mask))) {
151 printk("%s: pin %u is busy\n", pio->name, pin_index);
152 goto fail;
153 }
115 154
116 return; 155 return;
117 156
@@ -119,20 +158,197 @@ fail:
119 dump_stack(); 158 dump_stack();
120} 159}
121 160
161/*--------------------------------------------------------------------------*/
162
163/* GPIO API */
164
165int gpio_request(unsigned int gpio, const char *label)
166{
167 struct pio_device *pio;
168 unsigned int pin;
169
170 pio = gpio_to_pio(gpio);
171 if (!pio)
172 return -ENODEV;
173
174 pin = gpio & 0x1f;
175 if (test_and_set_bit(pin, &pio->gpio_mask))
176 return -EBUSY;
177
178 return 0;
179}
180EXPORT_SYMBOL(gpio_request);
181
182void gpio_free(unsigned int gpio)
183{
184 struct pio_device *pio;
185 unsigned int pin;
186
187 pio = gpio_to_pio(gpio);
188 if (!pio) {
189 printk(KERN_ERR
190 "gpio: attempted to free invalid pin %u\n", gpio);
191 return;
192 }
193
194 pin = gpio & 0x1f;
195 if (!test_and_clear_bit(pin, &pio->gpio_mask))
196 printk(KERN_ERR "gpio: freeing free or non-gpio pin %s-%u\n",
197 pio->name, pin);
198}
199EXPORT_SYMBOL(gpio_free);
200
201int gpio_direction_input(unsigned int gpio)
202{
203 struct pio_device *pio;
204 unsigned int pin;
205
206 pio = gpio_to_pio(gpio);
207 if (!pio)
208 return -ENODEV;
209
210 pin = gpio & 0x1f;
211 pio_writel(pio, ODR, 1 << pin);
212
213 return 0;
214}
215EXPORT_SYMBOL(gpio_direction_input);
216
217int gpio_direction_output(unsigned int gpio)
218{
219 struct pio_device *pio;
220 unsigned int pin;
221
222 pio = gpio_to_pio(gpio);
223 if (!pio)
224 return -ENODEV;
225
226 pin = gpio & 0x1f;
227 pio_writel(pio, OER, 1 << pin);
228
229 return 0;
230}
231EXPORT_SYMBOL(gpio_direction_output);
232
233int gpio_get_value(unsigned int gpio)
234{
235 struct pio_device *pio = &pio_dev[gpio >> 5];
236
237 return (pio_readl(pio, PDSR) >> (gpio & 0x1f)) & 1;
238}
239EXPORT_SYMBOL(gpio_get_value);
240
241void gpio_set_value(unsigned int gpio, int value)
242{
243 struct pio_device *pio = &pio_dev[gpio >> 5];
244 u32 mask;
245
246 mask = 1 << (gpio & 0x1f);
247 if (value)
248 pio_writel(pio, SODR, mask);
249 else
250 pio_writel(pio, CODR, mask);
251}
252EXPORT_SYMBOL(gpio_set_value);
253
254/*--------------------------------------------------------------------------*/
255
256/* GPIO IRQ support */
257
258static void gpio_irq_mask(unsigned irq)
259{
260 unsigned gpio = irq_to_gpio(irq);
261 struct pio_device *pio = &pio_dev[gpio >> 5];
262
263 pio_writel(pio, IDR, 1 << (gpio & 0x1f));
264}
265
266static void gpio_irq_unmask(unsigned irq)
267{
268 unsigned gpio = irq_to_gpio(irq);
269 struct pio_device *pio = &pio_dev[gpio >> 5];
270
271 pio_writel(pio, IER, 1 << (gpio & 0x1f));
272}
273
274static int gpio_irq_type(unsigned irq, unsigned type)
275{
276 if (type != IRQ_TYPE_EDGE_BOTH && type != IRQ_TYPE_NONE)
277 return -EINVAL;
278
279 return 0;
280}
281
282static struct irq_chip gpio_irqchip = {
283 .name = "gpio",
284 .mask = gpio_irq_mask,
285 .unmask = gpio_irq_unmask,
286 .set_type = gpio_irq_type,
287};
288
289static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
290{
291 struct pio_device *pio = get_irq_chip_data(irq);
292 unsigned gpio_irq;
293
294 gpio_irq = (unsigned) get_irq_data(irq);
295 for (;;) {
296 u32 isr;
297 struct irq_desc *d;
298
299 /* ack pending GPIO interrupts */
300 isr = pio_readl(pio, ISR) & pio_readl(pio, IMR);
301 if (!isr)
302 break;
303 do {
304 int i;
305
306 i = ffs(isr) - 1;
307 isr &= ~(1 << i);
308
309 i += gpio_irq;
310 d = &irq_desc[i];
311
312 d->handle_irq(i, d);
313 } while (isr);
314 }
315}
316
317static void __init
318gpio_irq_setup(struct pio_device *pio, int irq, int gpio_irq)
319{
320 unsigned i;
321
322 set_irq_chip_data(irq, pio);
323 set_irq_data(irq, (void *) gpio_irq);
324
325 for (i = 0; i < 32; i++, gpio_irq++) {
326 set_irq_chip_data(gpio_irq, pio);
327 set_irq_chip_and_handler(gpio_irq, &gpio_irqchip,
328 handle_simple_irq);
329 }
330
331 set_irq_chained_handler(irq, gpio_irq_handler);
332}
333
334/*--------------------------------------------------------------------------*/
335
122static int __init pio_probe(struct platform_device *pdev) 336static int __init pio_probe(struct platform_device *pdev)
123{ 337{
124 struct pio_device *pio = NULL; 338 struct pio_device *pio = NULL;
339 int irq = platform_get_irq(pdev, 0);
340 int gpio_irq_base = GPIO_IRQ_BASE + pdev->id * 32;
125 341
126 BUG_ON(pdev->id >= MAX_NR_PIO_DEVICES); 342 BUG_ON(pdev->id >= MAX_NR_PIO_DEVICES);
127 pio = &pio_dev[pdev->id]; 343 pio = &pio_dev[pdev->id];
128 BUG_ON(!pio->regs); 344 BUG_ON(!pio->regs);
129 345
130 /* TODO: Interrupts */ 346 gpio_irq_setup(pio, irq, gpio_irq_base);
131 347
132 platform_set_drvdata(pdev, pio); 348 platform_set_drvdata(pdev, pio);
133 349
134 printk(KERN_INFO "%s: Atmel Port Multiplexer at 0x%p (irq %d)\n", 350 printk(KERN_DEBUG "%s: base 0x%p, irq %d chains %d..%d\n",
135 pio->name, pio->regs, platform_get_irq(pdev, 0)); 351 pio->name, pio->regs, irq, gpio_irq_base, gpio_irq_base + 31);
136 352
137 return 0; 353 return 0;
138} 354}
@@ -148,7 +364,7 @@ static int __init pio_init(void)
148{ 364{
149 return platform_driver_register(&pio_driver); 365 return platform_driver_register(&pio_driver);
150} 366}
151subsys_initcall(pio_init); 367postcore_initcall(pio_init);
152 368
153void __init at32_init_pio(struct platform_device *pdev) 369void __init at32_init_pio(struct platform_device *pdev)
154{ 370{
@@ -184,6 +400,13 @@ void __init at32_init_pio(struct platform_device *pdev)
184 pio->pdev = pdev; 400 pio->pdev = pdev;
185 pio->regs = ioremap(regs->start, regs->end - regs->start + 1); 401 pio->regs = ioremap(regs->start, regs->end - regs->start + 1);
186 402
187 pio_writel(pio, ODR, ~0UL); 403 /*
188 pio_writel(pio, PER, ~0UL); 404 * request_gpio() is only valid for pins that have been
405 * explicitly configured as GPIO and not previously requested
406 */
407 pio->gpio_mask = ~0UL;
408
409 /* start with irqs disabled and acked */
410 pio_writel(pio, IDR, ~0UL);
411 (void) pio_readl(pio, ISR);
189} 412}
diff --git a/arch/avr32/mm/cache.c b/arch/avr32/mm/cache.c
index 450515b245a0..fb13f72e9a02 100644
--- a/arch/avr32/mm/cache.c
+++ b/arch/avr32/mm/cache.c
@@ -22,18 +22,34 @@
22 22
23void invalidate_dcache_region(void *start, size_t size) 23void invalidate_dcache_region(void *start, size_t size)
24{ 24{
25 unsigned long v, begin, end, linesz; 25 unsigned long v, begin, end, linesz, mask;
26 int flush = 0;
26 27
27 linesz = boot_cpu_data.dcache.linesz; 28 linesz = boot_cpu_data.dcache.linesz;
29 mask = linesz - 1;
30
31 /* when first and/or last cachelines are shared, flush them
32 * instead of invalidating ... never discard valid data!
33 */
34 begin = (unsigned long)start;
35 end = begin + size - 1;
36
37 if (begin & mask) {
38 flush_dcache_line(start);
39 begin += linesz;
40 flush = 1;
41 }
42 if ((end & mask) != mask) {
43 flush_dcache_line((void *)end);
44 end -= linesz;
45 flush = 1;
46 }
28 47
29 //printk("invalidate dcache: %p + %u\n", start, size); 48 /* remaining cachelines only need invalidation */
30 49 for (v = begin; v <= end; v += linesz)
31 /* You asked for it, you got it */
32 begin = (unsigned long)start & ~(linesz - 1);
33 end = ((unsigned long)start + size + linesz - 1) & ~(linesz - 1);
34
35 for (v = begin; v < end; v += linesz)
36 invalidate_dcache_line((void *)v); 50 invalidate_dcache_line((void *)v);
51 if (flush)
52 flush_write_buffer();
37} 53}
38 54
39void clean_dcache_region(void *start, size_t size) 55void clean_dcache_region(void *start, size_t size)
diff --git a/arch/avr32/mm/tlb.c b/arch/avr32/mm/tlb.c
index 7b073052203d..56672018e42f 100644
--- a/arch/avr32/mm/tlb.c
+++ b/arch/avr32/mm/tlb.c
@@ -360,7 +360,7 @@ static int tlb_open(struct inode *inode, struct file *file)
360 return seq_open(file, &tlb_ops); 360 return seq_open(file, &tlb_ops);
361} 361}
362 362
363static struct file_operations proc_tlb_operations = { 363static const struct file_operations proc_tlb_operations = {
364 .open = tlb_open, 364 .open = tlb_open,
365 .read = seq_read, 365 .read = seq_read,
366 .llseek = seq_lseek, 366 .llseek = seq_lseek,
diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig
index 3474309e049c..4b41248b61ad 100644
--- a/arch/cris/Kconfig
+++ b/arch/cris/Kconfig
@@ -9,6 +9,10 @@ config MMU
9 bool 9 bool
10 default y 10 default y
11 11
12config ZONE_DMA
13 bool
14 default y
15
12config RWSEM_GENERIC_SPINLOCK 16config RWSEM_GENERIC_SPINLOCK
13 bool 17 bool
14 default y 18 default y
@@ -40,6 +44,9 @@ config IRQ_PER_CPU
40 bool 44 bool
41 default y 45 default y
42 46
47config NO_IOPORT
48 def_bool y
49
43config CRIS 50config CRIS
44 bool 51 bool
45 default y 52 default y
diff --git a/arch/cris/arch-v10/drivers/axisflashmap.c b/arch/cris/arch-v10/drivers/axisflashmap.c
index ffade19a14e6..efd7b0f3a910 100644
--- a/arch/cris/arch-v10/drivers/axisflashmap.c
+++ b/arch/cris/arch-v10/drivers/axisflashmap.c
@@ -359,8 +359,7 @@ static struct mtd_info *flash_probe(void)
359 * So we use the MTD concatenation layer instead of further 359 * So we use the MTD concatenation layer instead of further
360 * complicating the probing procedure. 360 * complicating the probing procedure.
361 */ 361 */
362 mtd_cse = mtd_concat_create(mtds, 362 mtd_cse = mtd_concat_create(mtds, ARRAY_SIZE(mtds),
363 sizeof(mtds) / sizeof(mtds[0]),
364 "cse0+cse1"); 363 "cse0+cse1");
365#else 364#else
366 printk(KERN_ERR "%s and %s: Cannot concatenate due to kernel " 365 printk(KERN_ERR "%s and %s: Cannot concatenate due to kernel "
diff --git a/arch/cris/arch-v10/drivers/ds1302.c b/arch/cris/arch-v10/drivers/ds1302.c
index 3cf4f23de1d0..88eff7f54ea6 100644
--- a/arch/cris/arch-v10/drivers/ds1302.c
+++ b/arch/cris/arch-v10/drivers/ds1302.c
@@ -499,7 +499,7 @@ print_rtc_status(void)
499 499
500/* The various file operations we support. */ 500/* The various file operations we support. */
501 501
502static struct file_operations rtc_fops = { 502static const struct file_operations rtc_fops = {
503 .owner = THIS_MODULE, 503 .owner = THIS_MODULE,
504 .ioctl = rtc_ioctl, 504 .ioctl = rtc_ioctl,
505}; 505};
diff --git a/arch/cris/arch-v10/drivers/eeprom.c b/arch/cris/arch-v10/drivers/eeprom.c
index 284ebfda03f0..be35a70798aa 100644
--- a/arch/cris/arch-v10/drivers/eeprom.c
+++ b/arch/cris/arch-v10/drivers/eeprom.c
@@ -172,7 +172,7 @@ static const char eeprom_name[] = "eeprom";
172static struct eeprom_type eeprom; 172static struct eeprom_type eeprom;
173 173
174/* This is the exported file-operations structure for this device. */ 174/* This is the exported file-operations structure for this device. */
175struct file_operations eeprom_fops = 175const struct file_operations eeprom_fops =
176{ 176{
177 .llseek = eeprom_lseek, 177 .llseek = eeprom_lseek,
178 .read = eeprom_read, 178 .read = eeprom_read,
diff --git a/arch/cris/arch-v10/drivers/gpio.c b/arch/cris/arch-v10/drivers/gpio.c
index 9aba18b931dd..f389ed6998fe 100644
--- a/arch/cris/arch-v10/drivers/gpio.c
+++ b/arch/cris/arch-v10/drivers/gpio.c
@@ -838,7 +838,7 @@ gpio_leds_ioctl(unsigned int cmd, unsigned long arg)
838 return 0; 838 return 0;
839} 839}
840 840
841struct file_operations gpio_fops = { 841const struct file_operations gpio_fops = {
842 .owner = THIS_MODULE, 842 .owner = THIS_MODULE,
843 .poll = gpio_poll, 843 .poll = gpio_poll,
844 .ioctl = gpio_ioctl, 844 .ioctl = gpio_ioctl,
diff --git a/arch/cris/arch-v10/drivers/i2c.c b/arch/cris/arch-v10/drivers/i2c.c
index 092c724a645f..aca81ddaf60f 100644
--- a/arch/cris/arch-v10/drivers/i2c.c
+++ b/arch/cris/arch-v10/drivers/i2c.c
@@ -692,7 +692,7 @@ i2c_ioctl(struct inode *inode, struct file *file,
692 return 0; 692 return 0;
693} 693}
694 694
695static struct file_operations i2c_fops = { 695static const struct file_operations i2c_fops = {
696 .owner = THIS_MODULE, 696 .owner = THIS_MODULE,
697 .ioctl = i2c_ioctl, 697 .ioctl = i2c_ioctl,
698 .open = i2c_open, 698 .open = i2c_open,
diff --git a/arch/cris/arch-v10/drivers/pcf8563.c b/arch/cris/arch-v10/drivers/pcf8563.c
index 8c830eefc89c..107796e50149 100644
--- a/arch/cris/arch-v10/drivers/pcf8563.c
+++ b/arch/cris/arch-v10/drivers/pcf8563.c
@@ -56,7 +56,7 @@ static const unsigned char days_in_month[] =
56 56
57int pcf8563_ioctl(struct inode *, struct file *, unsigned int, unsigned long); 57int pcf8563_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
58 58
59static struct file_operations pcf8563_fops = { 59static const struct file_operations pcf8563_fops = {
60 .owner = THIS_MODULE, 60 .owner = THIS_MODULE,
61 .ioctl = pcf8563_ioctl, 61 .ioctl = pcf8563_ioctl,
62}; 62};
diff --git a/arch/cris/arch-v10/kernel/time.c b/arch/cris/arch-v10/kernel/time.c
index ebacf1457d91..077e973c33f0 100644
--- a/arch/cris/arch-v10/kernel/time.c
+++ b/arch/cris/arch-v10/kernel/time.c
@@ -38,7 +38,6 @@ unsigned long get_ns_in_jiffie(void)
38 unsigned long flags; 38 unsigned long flags;
39 39
40 local_irq_save(flags); 40 local_irq_save(flags);
41 local_irq_disable();
42 timer_count = *R_TIMER0_DATA; 41 timer_count = *R_TIMER0_DATA;
43 presc_count = *R_TIM_PRESC_STATUS; 42 presc_count = *R_TIM_PRESC_STATUS;
44 /* presc_count might be wrapped */ 43 /* presc_count might be wrapped */
diff --git a/arch/cris/arch-v10/mm/tlb.c b/arch/cris/arch-v10/mm/tlb.c
index 70a5523eff78..7d9fec88dee5 100644
--- a/arch/cris/arch-v10/mm/tlb.c
+++ b/arch/cris/arch-v10/mm/tlb.c
@@ -42,8 +42,7 @@ flush_tlb_all(void)
42 * in the same 4-way entry group. details.. 42 * in the same 4-way entry group. details..
43 */ 43 */
44 44
45 local_save_flags(flags); 45 local_irq_save(flags);
46 local_irq_disable();
47 for(i = 0; i < NUM_TLB_ENTRIES; i++) { 46 for(i = 0; i < NUM_TLB_ENTRIES; i++) {
48 *R_TLB_SELECT = ( IO_FIELD(R_TLB_SELECT, index, i) ); 47 *R_TLB_SELECT = ( IO_FIELD(R_TLB_SELECT, index, i) );
49 *R_TLB_HI = ( IO_FIELD(R_TLB_HI, page_id, INVALID_PAGEID ) | 48 *R_TLB_HI = ( IO_FIELD(R_TLB_HI, page_id, INVALID_PAGEID ) |
@@ -78,8 +77,7 @@ flush_tlb_mm(struct mm_struct *mm)
78 * global pages. is it worth the extra I/O ? 77 * global pages. is it worth the extra I/O ?
79 */ 78 */
80 79
81 local_save_flags(flags); 80 local_irq_save(flags);
82 local_irq_disable();
83 for(i = 0; i < NUM_TLB_ENTRIES; i++) { 81 for(i = 0; i < NUM_TLB_ENTRIES; i++) {
84 *R_TLB_SELECT = IO_FIELD(R_TLB_SELECT, index, i); 82 *R_TLB_SELECT = IO_FIELD(R_TLB_SELECT, index, i);
85 if (IO_EXTRACT(R_TLB_HI, page_id, *R_TLB_HI) == page_id) { 83 if (IO_EXTRACT(R_TLB_HI, page_id, *R_TLB_HI) == page_id) {
@@ -118,8 +116,7 @@ flush_tlb_page(struct vm_area_struct *vma,
118 * and the virtual address requested 116 * and the virtual address requested
119 */ 117 */
120 118
121 local_save_flags(flags); 119 local_irq_save(flags);
122 local_irq_disable();
123 for(i = 0; i < NUM_TLB_ENTRIES; i++) { 120 for(i = 0; i < NUM_TLB_ENTRIES; i++) {
124 unsigned long tlb_hi; 121 unsigned long tlb_hi;
125 *R_TLB_SELECT = IO_FIELD(R_TLB_SELECT, index, i); 122 *R_TLB_SELECT = IO_FIELD(R_TLB_SELECT, index, i);
diff --git a/arch/cris/arch-v10/vmlinux.lds.S b/arch/cris/arch-v10/vmlinux.lds.S
index 689729a7e66e..4b348b38cf33 100644
--- a/arch/cris/arch-v10/vmlinux.lds.S
+++ b/arch/cris/arch-v10/vmlinux.lds.S
@@ -82,7 +82,8 @@ SECTIONS
82 __con_initcall_end = .; 82 __con_initcall_end = .;
83 } 83 }
84 SECURITY_INIT 84 SECURITY_INIT
85 85
86#ifdef CONFIG_BLK_DEV_INITRD
86 .init.ramfs : { 87 .init.ramfs : {
87 __initramfs_start = .; 88 __initramfs_start = .;
88 *(.init.ramfs) 89 *(.init.ramfs)
@@ -93,6 +94,7 @@ SECTIONS
93 FILL (0); 94 FILL (0);
94 . = ALIGN (8192); 95 . = ALIGN (8192);
95 } 96 }
97#endif
96 98
97 __vmlinux_end = .; /* last address of the physical file */ 99 __vmlinux_end = .; /* last address of the physical file */
98 __init_end = .; 100 __init_end = .;
diff --git a/arch/cris/arch-v32/drivers/cryptocop.c b/arch/cris/arch-v32/drivers/cryptocop.c
index 2449637e6fc0..1a071f17446d 100644
--- a/arch/cris/arch-v32/drivers/cryptocop.c
+++ b/arch/cris/arch-v32/drivers/cryptocop.c
@@ -266,7 +266,7 @@ static void print_user_dma_lists(struct cryptocop_dma_list_operation *dma_op);
266 266
267 267
268 268
269struct file_operations cryptocop_fops = { 269const struct file_operations cryptocop_fops = {
270 owner: THIS_MODULE, 270 owner: THIS_MODULE,
271 open: cryptocop_open, 271 open: cryptocop_open,
272 release: cryptocop_release, 272 release: cryptocop_release,
diff --git a/arch/cris/arch-v32/drivers/gpio.c b/arch/cris/arch-v32/drivers/gpio.c
index 08d36f0955c6..d82c5c561135 100644
--- a/arch/cris/arch-v32/drivers/gpio.c
+++ b/arch/cris/arch-v32/drivers/gpio.c
@@ -705,7 +705,7 @@ gpio_leds_ioctl(unsigned int cmd, unsigned long arg)
705 return 0; 705 return 0;
706} 706}
707 707
708struct file_operations gpio_fops = { 708const struct file_operations gpio_fops = {
709 .owner = THIS_MODULE, 709 .owner = THIS_MODULE,
710 .poll = gpio_poll, 710 .poll = gpio_poll,
711 .ioctl = gpio_ioctl, 711 .ioctl = gpio_ioctl,
diff --git a/arch/cris/arch-v32/drivers/i2c.c b/arch/cris/arch-v32/drivers/i2c.c
index 95f00188c628..5d6c52737df3 100644
--- a/arch/cris/arch-v32/drivers/i2c.c
+++ b/arch/cris/arch-v32/drivers/i2c.c
@@ -573,7 +573,7 @@ i2c_ioctl(struct inode *inode, struct file *file,
573 return 0; 573 return 0;
574} 574}
575 575
576static struct file_operations i2c_fops = { 576static const struct file_operations i2c_fops = {
577 owner: THIS_MODULE, 577 owner: THIS_MODULE,
578 ioctl: i2c_ioctl, 578 ioctl: i2c_ioctl,
579 open: i2c_open, 579 open: i2c_open,
diff --git a/arch/cris/arch-v32/drivers/pcf8563.c b/arch/cris/arch-v32/drivers/pcf8563.c
index 2fc7d75a35de..544ab0179411 100644
--- a/arch/cris/arch-v32/drivers/pcf8563.c
+++ b/arch/cris/arch-v32/drivers/pcf8563.c
@@ -50,7 +50,7 @@ int pcf8563_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
50int pcf8563_open(struct inode *, struct file *); 50int pcf8563_open(struct inode *, struct file *);
51int pcf8563_release(struct inode *, struct file *); 51int pcf8563_release(struct inode *, struct file *);
52 52
53static struct file_operations pcf8563_fops = { 53static const struct file_operations pcf8563_fops = {
54 owner: THIS_MODULE, 54 owner: THIS_MODULE,
55 ioctl: pcf8563_ioctl, 55 ioctl: pcf8563_ioctl,
56 open: pcf8563_open, 56 open: pcf8563_open,
diff --git a/arch/cris/arch-v32/drivers/sync_serial.c b/arch/cris/arch-v32/drivers/sync_serial.c
index 424eb0eb1cd5..df89298aafc4 100644
--- a/arch/cris/arch-v32/drivers/sync_serial.c
+++ b/arch/cris/arch-v32/drivers/sync_serial.c
@@ -187,7 +187,7 @@ static struct sync_port ports[]=
187 187
188#define NUMBER_OF_PORTS (sizeof(ports)/sizeof(sync_port)) 188#define NUMBER_OF_PORTS (sizeof(ports)/sizeof(sync_port))
189 189
190static struct file_operations sync_serial_fops = { 190static const struct file_operations sync_serial_fops = {
191 .owner = THIS_MODULE, 191 .owner = THIS_MODULE,
192 .write = sync_serial_write, 192 .write = sync_serial_write,
193 .read = sync_serial_read, 193 .read = sync_serial_read,
diff --git a/arch/cris/arch-v32/mm/tlb.c b/arch/cris/arch-v32/mm/tlb.c
index 9d75d7692303..c2d12e9c40d7 100644
--- a/arch/cris/arch-v32/mm/tlb.c
+++ b/arch/cris/arch-v32/mm/tlb.c
@@ -54,8 +54,7 @@ __flush_tlb_all(void)
54 * Mask with 0xf so similar TLB entries aren't written in the same 4-way 54 * Mask with 0xf so similar TLB entries aren't written in the same 4-way
55 * entry group. 55 * entry group.
56 */ 56 */
57 local_save_flags(flags); 57 local_irq_save(flags);
58 local_irq_disable();
59 58
60 for (mmu = 1; mmu <= 2; mmu++) { 59 for (mmu = 1; mmu <= 2; mmu++) {
61 SUPP_BANK_SEL(mmu); /* Select the MMU */ 60 SUPP_BANK_SEL(mmu); /* Select the MMU */
@@ -92,8 +91,7 @@ __flush_tlb_mm(struct mm_struct *mm)
92 return; 91 return;
93 92
94 /* Mark the TLB entries that match the page_id as invalid. */ 93 /* Mark the TLB entries that match the page_id as invalid. */
95 local_save_flags(flags); 94 local_irq_save(flags);
96 local_irq_disable();
97 95
98 for (mmu = 1; mmu <= 2; mmu++) { 96 for (mmu = 1; mmu <= 2; mmu++) {
99 SUPP_BANK_SEL(mmu); 97 SUPP_BANK_SEL(mmu);
@@ -140,8 +138,7 @@ __flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
140 * Invalidate those TLB entries that match both the mm context and the 138 * Invalidate those TLB entries that match both the mm context and the
141 * requested virtual address. 139 * requested virtual address.
142 */ 140 */
143 local_save_flags(flags); 141 local_irq_save(flags);
144 local_irq_disable();
145 142
146 for (mmu = 1; mmu <= 2; mmu++) { 143 for (mmu = 1; mmu <= 2; mmu++) {
147 SUPP_BANK_SEL(mmu); 144 SUPP_BANK_SEL(mmu);
diff --git a/arch/cris/arch-v32/vmlinux.lds.S b/arch/cris/arch-v32/vmlinux.lds.S
index 472d4b3c4cf4..e124fcd766d5 100644
--- a/arch/cris/arch-v32/vmlinux.lds.S
+++ b/arch/cris/arch-v32/vmlinux.lds.S
@@ -95,6 +95,7 @@ SECTIONS
95 .data.percpu : { *(.data.percpu) } 95 .data.percpu : { *(.data.percpu) }
96 __per_cpu_end = .; 96 __per_cpu_end = .;
97 97
98#ifdef CONFIG_BLK_DEV_INITRD
98 .init.ramfs : { 99 .init.ramfs : {
99 __initramfs_start = .; 100 __initramfs_start = .;
100 *(.init.ramfs) 101 *(.init.ramfs)
@@ -107,6 +108,7 @@ SECTIONS
107 FILL (0); 108 FILL (0);
108 . = ALIGN (8192); 109 . = ALIGN (8192);
109 } 110 }
111#endif
110 112
111 __vmlinux_end = .; /* Last address of the physical file. */ 113 __vmlinux_end = .; /* Last address of the physical file. */
112 __init_end = .; 114 __init_end = .;
diff --git a/arch/cris/kernel/profile.c b/arch/cris/kernel/profile.c
index f60ab785f235..4cfcae620507 100644
--- a/arch/cris/kernel/profile.c
+++ b/arch/cris/kernel/profile.c
@@ -50,7 +50,7 @@ write_cris_profile(struct file *file, const char __user *buf,
50 memset(sample_buffer, 0, SAMPLE_BUFFER_SIZE); 50 memset(sample_buffer, 0, SAMPLE_BUFFER_SIZE);
51} 51}
52 52
53static struct file_operations cris_proc_profile_operations = { 53static const struct file_operations cris_proc_profile_operations = {
54 .read = read_cris_profile, 54 .read = read_cris_profile,
55 .write = write_cris_profile, 55 .write = write_cris_profile,
56}; 56};
diff --git a/arch/cris/kernel/setup.c b/arch/cris/kernel/setup.c
index ca8b45a0fe2e..65466c49d7a9 100644
--- a/arch/cris/kernel/setup.c
+++ b/arch/cris/kernel/setup.c
@@ -29,7 +29,7 @@ struct screen_info screen_info;
29extern int root_mountflags; 29extern int root_mountflags;
30extern char _etext, _edata, _end; 30extern char _etext, _edata, _end;
31 31
32char cris_command_line[COMMAND_LINE_SIZE] = { 0, }; 32char __initdata cris_command_line[COMMAND_LINE_SIZE] = { 0, };
33 33
34extern const unsigned long text_start, edata; /* set by the linker script */ 34extern const unsigned long text_start, edata; /* set by the linker script */
35extern unsigned long dram_start, dram_end; 35extern unsigned long dram_start, dram_end;
@@ -153,8 +153,8 @@ setup_arch(char **cmdline_p)
153#endif 153#endif
154 154
155 /* Save command line for future references. */ 155 /* Save command line for future references. */
156 memcpy(saved_command_line, cris_command_line, COMMAND_LINE_SIZE); 156 memcpy(boot_command_line, cris_command_line, COMMAND_LINE_SIZE);
157 saved_command_line[COMMAND_LINE_SIZE - 1] = '\0'; 157 boot_command_line[COMMAND_LINE_SIZE - 1] = '\0';
158 158
159 /* give credit for the CRIS port */ 159 /* give credit for the CRIS port */
160 show_etrax_copyright(); 160 show_etrax_copyright();
diff --git a/arch/cris/kernel/time.c b/arch/cris/kernel/time.c
index 0f9213cbd48e..acfd04559405 100644
--- a/arch/cris/kernel/time.c
+++ b/arch/cris/kernel/time.c
@@ -55,7 +55,6 @@ void do_gettimeofday(struct timeval *tv)
55 unsigned long flags; 55 unsigned long flags;
56 signed long usec, sec; 56 signed long usec, sec;
57 local_irq_save(flags); 57 local_irq_save(flags);
58 local_irq_disable();
59 usec = do_gettimeoffset(); 58 usec = do_gettimeoffset();
60 59
61 /* 60 /*
@@ -217,14 +216,6 @@ cris_do_profile(struct pt_regs* regs)
217#endif 216#endif
218} 217}
219 218
220/*
221 * Scheduler clock - returns current time in nanosec units.
222 */
223unsigned long long sched_clock(void)
224{
225 return (unsigned long long)jiffies * (1000000000 / HZ);
226}
227
228static int 219static int
229__init init_udelay(void) 220__init init_udelay(void)
230{ 221{
diff --git a/arch/cris/mm/tlb.c b/arch/cris/mm/tlb.c
index 0df390a656cd..c4a98e2e529e 100644
--- a/arch/cris/mm/tlb.c
+++ b/arch/cris/mm/tlb.c
@@ -8,6 +8,7 @@
8 */ 8 */
9 9
10#include <linux/init.h> 10#include <linux/init.h>
11#include <linux/kernel.h>
11#include <asm/tlb.h> 12#include <asm/tlb.h>
12 13
13#define D(x) 14#define D(x)
@@ -100,7 +101,7 @@ tlb_init(void)
100 101
101 /* clear the page_id map */ 102 /* clear the page_id map */
102 103
103 for (i = 1; i < sizeof (page_id_map) / sizeof (page_id_map[0]); i++) 104 for (i = 1; i < ARRAY_SIZE(page_id_map); i++)
104 page_id_map[i] = NULL; 105 page_id_map[i] = NULL;
105 106
106 /* invalidate the entire TLB */ 107 /* invalidate the entire TLB */
diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig
index 7561d7b72e75..cea237413aa2 100644
--- a/arch/frv/Kconfig
+++ b/arch/frv/Kconfig
@@ -6,6 +6,10 @@ config FRV
6 bool 6 bool
7 default y 7 default y
8 8
9config ZONE_DMA
10 bool
11 default y
12
9config RWSEM_GENERIC_SPINLOCK 13config RWSEM_GENERIC_SPINLOCK
10 bool 14 bool
11 default y 15 default y
diff --git a/arch/frv/kernel/setup.c b/arch/frv/kernel/setup.c
index 1a5eb6c301c9..8ea3ca2aba62 100644
--- a/arch/frv/kernel/setup.c
+++ b/arch/frv/kernel/setup.c
@@ -110,7 +110,7 @@ unsigned long __initdata num_mappedpages;
110 110
111struct cpuinfo_frv __nongprelbss boot_cpu_data; 111struct cpuinfo_frv __nongprelbss boot_cpu_data;
112 112
113char command_line[COMMAND_LINE_SIZE]; 113char __initdata command_line[COMMAND_LINE_SIZE];
114char __initdata redboot_command_line[COMMAND_LINE_SIZE]; 114char __initdata redboot_command_line[COMMAND_LINE_SIZE];
115 115
116#ifdef CONFIG_PM 116#ifdef CONFIG_PM
@@ -762,7 +762,7 @@ void __init setup_arch(char **cmdline_p)
762 printk("uClinux FR-V port done by Red Hat Inc <dhowells@redhat.com>\n"); 762 printk("uClinux FR-V port done by Red Hat Inc <dhowells@redhat.com>\n");
763#endif 763#endif
764 764
765 memcpy(saved_command_line, redboot_command_line, COMMAND_LINE_SIZE); 765 memcpy(boot_command_line, redboot_command_line, COMMAND_LINE_SIZE);
766 766
767 determine_cpu(); 767 determine_cpu();
768 determine_clocks(1); 768 determine_clocks(1);
@@ -803,7 +803,7 @@ void __init setup_arch(char **cmdline_p)
803#endif 803#endif
804 804
805 /* deal with the command line - RedBoot may have passed one to the kernel */ 805 /* deal with the command line - RedBoot may have passed one to the kernel */
806 memcpy(command_line, saved_command_line, sizeof(command_line)); 806 memcpy(command_line, boot_command_line, sizeof(command_line));
807 *cmdline_p = &command_line[0]; 807 *cmdline_p = &command_line[0];
808 parse_cmdline_early(command_line); 808 parse_cmdline_early(command_line);
809 809
diff --git a/arch/frv/kernel/vmlinux.lds.S b/arch/frv/kernel/vmlinux.lds.S
index 9c1fb12367fa..97910e016825 100644
--- a/arch/frv/kernel/vmlinux.lds.S
+++ b/arch/frv/kernel/vmlinux.lds.S
@@ -61,10 +61,12 @@ SECTIONS
61 .data.percpu : { *(.data.percpu) } 61 .data.percpu : { *(.data.percpu) }
62 __per_cpu_end = .; 62 __per_cpu_end = .;
63 63
64#ifdef CONFIG_BLK_DEV_INITRD
64 . = ALIGN(4096); 65 . = ALIGN(4096);
65 __initramfs_start = .; 66 __initramfs_start = .;
66 .init.ramfs : { *(.init.ramfs) } 67 .init.ramfs : { *(.init.ramfs) }
67 __initramfs_end = .; 68 __initramfs_end = .;
69#endif
68 70
69 . = ALIGN(THREAD_SIZE); 71 . = ALIGN(THREAD_SIZE);
70 __init_end = .; 72 __init_end = .;
diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
index 34a84bc4baf5..1734d96422c6 100644
--- a/arch/h8300/Kconfig
+++ b/arch/h8300/Kconfig
@@ -17,6 +17,10 @@ config SWAP
17 bool 17 bool
18 default n 18 default n
19 19
20config ZONE_DMA
21 bool
22 default y
23
20config FPU 24config FPU
21 bool 25 bool
22 default n 26 default n
@@ -53,6 +57,9 @@ config TIME_LOW_RES
53 bool 57 bool
54 default y 58 default y
55 59
60config NO_IOPORT
61 def_bool y
62
56config ISA 63config ISA
57 bool 64 bool
58 default y 65 default y
diff --git a/arch/h8300/kernel/Makefile b/arch/h8300/kernel/Makefile
index 71b6131e98b8..4edbc2ef6ca2 100644
--- a/arch/h8300/kernel/Makefile
+++ b/arch/h8300/kernel/Makefile
@@ -6,6 +6,8 @@ extra-y := vmlinux.lds
6 6
7obj-y := process.o traps.o ptrace.o ints.o \ 7obj-y := process.o traps.o ptrace.o ints.o \
8 sys_h8300.o time.o semaphore.o signal.o \ 8 sys_h8300.o time.o semaphore.o signal.o \
9 setup.o gpio.o init_task.o syscalls.o 9 setup.o gpio.o init_task.o syscalls.o devres.o
10
11devres-y = ../../../kernel/irq/devres.o
10 12
11obj-$(CONFIG_MODULES) += module.o h8300_ksyms.o 13obj-$(CONFIG_MODULES) += module.o h8300_ksyms.o
diff --git a/arch/h8300/kernel/setup.c b/arch/h8300/kernel/setup.c
index 6adf8f41d2a1..313cd8081044 100644
--- a/arch/h8300/kernel/setup.c
+++ b/arch/h8300/kernel/setup.c
@@ -54,7 +54,7 @@ unsigned long rom_length;
54unsigned long memory_start; 54unsigned long memory_start;
55unsigned long memory_end; 55unsigned long memory_end;
56 56
57char command_line[COMMAND_LINE_SIZE]; 57char __initdata command_line[COMMAND_LINE_SIZE];
58 58
59extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end; 59extern int _stext, _etext, _sdata, _edata, _sbss, _ebss, _end;
60extern int _ramstart, _ramend; 60extern int _ramstart, _ramend;
@@ -154,8 +154,8 @@ void __init setup_arch(char **cmdline_p)
154#endif 154#endif
155 /* Keep a copy of command line */ 155 /* Keep a copy of command line */
156 *cmdline_p = &command_line[0]; 156 *cmdline_p = &command_line[0];
157 memcpy(saved_command_line, command_line, COMMAND_LINE_SIZE); 157 memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
158 saved_command_line[COMMAND_LINE_SIZE-1] = 0; 158 boot_command_line[COMMAND_LINE_SIZE-1] = 0;
159 159
160#ifdef DEBUG 160#ifdef DEBUG
161 if (strlen(*cmdline_p)) 161 if (strlen(*cmdline_p))
diff --git a/arch/h8300/kernel/time.c b/arch/h8300/kernel/time.c
index 8abab3bc2b6f..d1ef615ba895 100644
--- a/arch/h8300/kernel/time.c
+++ b/arch/h8300/kernel/time.c
@@ -118,9 +118,3 @@ int do_settimeofday(struct timespec *tv)
118} 118}
119 119
120EXPORT_SYMBOL(do_settimeofday); 120EXPORT_SYMBOL(do_settimeofday);
121
122unsigned long long sched_clock(void)
123{
124 return (unsigned long long)jiffies * (1000000000 / HZ);
125
126}
diff --git a/arch/h8300/kernel/vmlinux.lds.S b/arch/h8300/kernel/vmlinux.lds.S
index f05288be8878..65f1cdc5ee04 100644
--- a/arch/h8300/kernel/vmlinux.lds.S
+++ b/arch/h8300/kernel/vmlinux.lds.S
@@ -126,10 +126,12 @@ SECTIONS
126 ___con_initcall_end = .; 126 ___con_initcall_end = .;
127 *(.exit.text) 127 *(.exit.text)
128 *(.exit.data) 128 *(.exit.data)
129#if defined(CONFIG_BLK_DEV_INITRD)
129 . = ALIGN(4); 130 . = ALIGN(4);
130 ___initramfs_start = .; 131 ___initramfs_start = .;
131 *(.init.ramfs) 132 *(.init.ramfs)
132 ___initramfs_end = .; 133 ___initramfs_end = .;
134#endif
133 . = ALIGN(0x4) ; 135 . = ALIGN(0x4) ;
134 ___init_end = .; 136 ___init_end = .;
135 __edata = . ; 137 __edata = . ;
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index 0dfee812811a..63d5e841caf5 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -38,6 +38,10 @@ config MMU
38 bool 38 bool
39 default y 39 default y
40 40
41config ZONE_DMA
42 bool
43 default y
44
41config SBUS 45config SBUS
42 bool 46 bool
43 47
diff --git a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c
index 199016927541..db99a8948dae 100644
--- a/arch/i386/kernel/apm.c
+++ b/arch/i386/kernel/apm.c
@@ -1894,7 +1894,7 @@ static int __init apm_setup(char *str)
1894__setup("apm=", apm_setup); 1894__setup("apm=", apm_setup);
1895#endif 1895#endif
1896 1896
1897static struct file_operations apm_bios_fops = { 1897static const struct file_operations apm_bios_fops = {
1898 .owner = THIS_MODULE, 1898 .owner = THIS_MODULE,
1899 .read = do_read, 1899 .read = do_read,
1900 .poll = do_poll, 1900 .poll = do_poll,
diff --git a/arch/i386/kernel/cpu/mtrr/if.c b/arch/i386/kernel/cpu/mtrr/if.c
index 5ae1705eafa6..ee771f305f96 100644
--- a/arch/i386/kernel/cpu/mtrr/if.c
+++ b/arch/i386/kernel/cpu/mtrr/if.c
@@ -339,7 +339,7 @@ static int mtrr_open(struct inode *inode, struct file *file)
339 return single_open(file, mtrr_seq_show, NULL); 339 return single_open(file, mtrr_seq_show, NULL);
340} 340}
341 341
342static struct file_operations mtrr_fops = { 342static const struct file_operations mtrr_fops = {
343 .owner = THIS_MODULE, 343 .owner = THIS_MODULE,
344 .open = mtrr_open, 344 .open = mtrr_open,
345 .read = seq_read, 345 .read = seq_read,
diff --git a/arch/i386/kernel/cpuid.c b/arch/i386/kernel/cpuid.c
index 51130b39cd2e..4da75fa3208d 100644
--- a/arch/i386/kernel/cpuid.c
+++ b/arch/i386/kernel/cpuid.c
@@ -148,7 +148,7 @@ static int cpuid_open(struct inode *inode, struct file *file)
148/* 148/*
149 * File operations we support 149 * File operations we support
150 */ 150 */
151static struct file_operations cpuid_fops = { 151static const struct file_operations cpuid_fops = {
152 .owner = THIS_MODULE, 152 .owner = THIS_MODULE,
153 .llseek = cpuid_seek, 153 .llseek = cpuid_seek,
154 .read = cpuid_read, 154 .read = cpuid_read,
diff --git a/arch/i386/kernel/head.S b/arch/i386/kernel/head.S
index edef5084ce17..cb9abdfced9b 100644
--- a/arch/i386/kernel/head.S
+++ b/arch/i386/kernel/head.S
@@ -103,7 +103,7 @@ ENTRY(startup_32)
103 movzwl OLD_CL_OFFSET,%esi 103 movzwl OLD_CL_OFFSET,%esi
104 addl $(OLD_CL_BASE_ADDR),%esi 104 addl $(OLD_CL_BASE_ADDR),%esi
1052: 1052:
106 movl $(saved_command_line - __PAGE_OFFSET),%edi 106 movl $(boot_command_line - __PAGE_OFFSET),%edi
107 movl $(COMMAND_LINE_SIZE/4),%ecx 107 movl $(COMMAND_LINE_SIZE/4),%ecx
108 rep 108 rep
109 movsl 109 movsl
diff --git a/arch/i386/kernel/hpet.c b/arch/i386/kernel/hpet.c
index 45a8685bb60b..0b29d41322a2 100644
--- a/arch/i386/kernel/hpet.c
+++ b/arch/i386/kernel/hpet.c
@@ -12,7 +12,7 @@
12/* FSEC = 10^-15 NSEC = 10^-9 */ 12/* FSEC = 10^-15 NSEC = 10^-9 */
13#define FSEC_PER_NSEC 1000000 13#define FSEC_PER_NSEC 1000000
14 14
15static void *hpet_ptr; 15static void __iomem *hpet_ptr;
16 16
17static cycle_t read_hpet(void) 17static cycle_t read_hpet(void)
18{ 18{
@@ -40,8 +40,7 @@ static int __init init_hpet_clocksource(void)
40 return -ENODEV; 40 return -ENODEV;
41 41
42 /* calculate the hpet address: */ 42 /* calculate the hpet address: */
43 hpet_base = 43 hpet_base = ioremap_nocache(hpet_address, HPET_MMAP_SIZE);
44 (void __iomem*)ioremap_nocache(hpet_address, HPET_MMAP_SIZE);
45 hpet_ptr = hpet_base + HPET_COUNTER; 44 hpet_ptr = hpet_base + HPET_COUNTER;
46 45
47 /* calculate the frequency: */ 46 /* calculate the frequency: */
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
index 5592fa6e1fa1..ba8d302a0b72 100644
--- a/arch/i386/kernel/io_apic.c
+++ b/arch/i386/kernel/io_apic.c
@@ -126,7 +126,7 @@ static inline void io_apic_write(unsigned int apic, unsigned int reg, unsigned i
126 */ 126 */
127static inline void io_apic_modify(unsigned int apic, unsigned int reg, unsigned int value) 127static inline void io_apic_modify(unsigned int apic, unsigned int reg, unsigned int value)
128{ 128{
129 volatile struct io_apic *io_apic = io_apic_base(apic); 129 volatile struct io_apic __iomem *io_apic = io_apic_base(apic);
130 if (sis_apic_bug) 130 if (sis_apic_bug)
131 writel(reg, &io_apic->index); 131 writel(reg, &io_apic->index);
132 writel(value, &io_apic->data); 132 writel(value, &io_apic->data);
diff --git a/arch/i386/kernel/microcode.c b/arch/i386/kernel/microcode.c
index c8fa13721bcb..381252bae3d8 100644
--- a/arch/i386/kernel/microcode.c
+++ b/arch/i386/kernel/microcode.c
@@ -451,7 +451,7 @@ static ssize_t microcode_write (struct file *file, const char __user *buf, size_
451 return ret; 451 return ret;
452} 452}
453 453
454static struct file_operations microcode_fops = { 454static const struct file_operations microcode_fops = {
455 .owner = THIS_MODULE, 455 .owner = THIS_MODULE,
456 .write = microcode_write, 456 .write = microcode_write,
457 .open = microcode_open, 457 .open = microcode_open,
diff --git a/arch/i386/kernel/msr.c b/arch/i386/kernel/msr.c
index 4a472a17d1c6..4e14264f392a 100644
--- a/arch/i386/kernel/msr.c
+++ b/arch/i386/kernel/msr.c
@@ -230,7 +230,7 @@ static int msr_open(struct inode *inode, struct file *file)
230/* 230/*
231 * File operations we support 231 * File operations we support
232 */ 232 */
233static struct file_operations msr_fops = { 233static const struct file_operations msr_fops = {
234 .owner = THIS_MODULE, 234 .owner = THIS_MODULE,
235 .llseek = msr_seek, 235 .llseek = msr_seek,
236 .read = msr_read, 236 .read = msr_read,
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
index 4b31ad70c1ac..4694ac980cd2 100644
--- a/arch/i386/kernel/setup.c
+++ b/arch/i386/kernel/setup.c
@@ -132,7 +132,7 @@ unsigned long saved_videomode;
132#define RAMDISK_PROMPT_FLAG 0x8000 132#define RAMDISK_PROMPT_FLAG 0x8000
133#define RAMDISK_LOAD_FLAG 0x4000 133#define RAMDISK_LOAD_FLAG 0x4000
134 134
135static char command_line[COMMAND_LINE_SIZE]; 135static char __initdata command_line[COMMAND_LINE_SIZE];
136 136
137unsigned char __initdata boot_params[PARAM_SIZE]; 137unsigned char __initdata boot_params[PARAM_SIZE];
138 138
@@ -576,7 +576,7 @@ void __init setup_arch(char **cmdline_p)
576 print_memory_map("user"); 576 print_memory_map("user");
577 } 577 }
578 578
579 strlcpy(command_line, saved_command_line, COMMAND_LINE_SIZE); 579 strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
580 *cmdline_p = command_line; 580 *cmdline_p = command_line;
581 581
582 max_low_pfn = setup_memory(); 582 max_low_pfn = setup_memory();
diff --git a/arch/i386/kernel/sysenter.c b/arch/i386/kernel/sysenter.c
index 5da744204d10..bc882a2b1db6 100644
--- a/arch/i386/kernel/sysenter.c
+++ b/arch/i386/kernel/sysenter.c
@@ -70,11 +70,12 @@ void enable_sep_cpu(void)
70 */ 70 */
71extern const char vsyscall_int80_start, vsyscall_int80_end; 71extern const char vsyscall_int80_start, vsyscall_int80_end;
72extern const char vsyscall_sysenter_start, vsyscall_sysenter_end; 72extern const char vsyscall_sysenter_start, vsyscall_sysenter_end;
73static void *syscall_page; 73static struct page *syscall_pages[1];
74 74
75int __init sysenter_setup(void) 75int __init sysenter_setup(void)
76{ 76{
77 syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); 77 void *syscall_page = (void *)get_zeroed_page(GFP_ATOMIC);
78 syscall_pages[0] = virt_to_page(syscall_page);
78 79
79#ifdef CONFIG_COMPAT_VDSO 80#ifdef CONFIG_COMPAT_VDSO
80 __set_fixmap(FIX_VDSO, __pa(syscall_page), PAGE_READONLY); 81 __set_fixmap(FIX_VDSO, __pa(syscall_page), PAGE_READONLY);
@@ -96,31 +97,12 @@ int __init sysenter_setup(void)
96} 97}
97 98
98#ifndef CONFIG_COMPAT_VDSO 99#ifndef CONFIG_COMPAT_VDSO
99static struct page *syscall_nopage(struct vm_area_struct *vma,
100 unsigned long adr, int *type)
101{
102 struct page *p = virt_to_page(adr - vma->vm_start + syscall_page);
103 get_page(p);
104 return p;
105}
106
107/* Prevent VMA merging */
108static void syscall_vma_close(struct vm_area_struct *vma)
109{
110}
111
112static struct vm_operations_struct syscall_vm_ops = {
113 .close = syscall_vma_close,
114 .nopage = syscall_nopage,
115};
116
117/* Defined in vsyscall-sysenter.S */ 100/* Defined in vsyscall-sysenter.S */
118extern void SYSENTER_RETURN; 101extern void SYSENTER_RETURN;
119 102
120/* Setup a VMA at program startup for the vsyscall page */ 103/* Setup a VMA at program startup for the vsyscall page */
121int arch_setup_additional_pages(struct linux_binprm *bprm, int exstack) 104int arch_setup_additional_pages(struct linux_binprm *bprm, int exstack)
122{ 105{
123 struct vm_area_struct *vma;
124 struct mm_struct *mm = current->mm; 106 struct mm_struct *mm = current->mm;
125 unsigned long addr; 107 unsigned long addr;
126 int ret; 108 int ret;
@@ -132,38 +114,25 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int exstack)
132 goto up_fail; 114 goto up_fail;
133 } 115 }
134 116
135 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
136 if (!vma) {
137 ret = -ENOMEM;
138 goto up_fail;
139 }
140
141 vma->vm_start = addr;
142 vma->vm_end = addr + PAGE_SIZE;
143 /* MAYWRITE to allow gdb to COW and set breakpoints */
144 vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYEXEC|VM_MAYWRITE;
145 /* 117 /*
118 * MAYWRITE to allow gdb to COW and set breakpoints
119 *
146 * Make sure the vDSO gets into every core dump. 120 * Make sure the vDSO gets into every core dump.
147 * Dumping its contents makes post-mortem fully interpretable later 121 * Dumping its contents makes post-mortem fully interpretable later
148 * without matching up the same kernel and hardware config to see 122 * without matching up the same kernel and hardware config to see
149 * what PC values meant. 123 * what PC values meant.
150 */ 124 */
151 vma->vm_flags |= VM_ALWAYSDUMP; 125 ret = install_special_mapping(mm, addr, PAGE_SIZE,
152 vma->vm_flags |= mm->def_flags; 126 VM_READ|VM_EXEC|
153 vma->vm_page_prot = protection_map[vma->vm_flags & 7]; 127 VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC|
154 vma->vm_ops = &syscall_vm_ops; 128 VM_ALWAYSDUMP,
155 vma->vm_mm = mm; 129 syscall_pages);
156 130 if (ret)
157 ret = insert_vm_struct(mm, vma);
158 if (unlikely(ret)) {
159 kmem_cache_free(vm_area_cachep, vma);
160 goto up_fail; 131 goto up_fail;
161 }
162 132
163 current->mm->context.vdso = (void *)addr; 133 current->mm->context.vdso = (void *)addr;
164 current_thread_info()->sysenter_return = 134 current_thread_info()->sysenter_return =
165 (void *)VDSO_SYM(&SYSENTER_RETURN); 135 (void *)VDSO_SYM(&SYSENTER_RETURN);
166 mm->total_vm++;
167up_fail: 136up_fail:
168 up_write(&mm->mmap_sem); 137 up_write(&mm->mmap_sem);
169 return ret; 138 return ret;
diff --git a/arch/i386/kernel/vmlinux.lds.S b/arch/i386/kernel/vmlinux.lds.S
index a53c8b1854b5..5038a73d554e 100644
--- a/arch/i386/kernel/vmlinux.lds.S
+++ b/arch/i386/kernel/vmlinux.lds.S
@@ -181,12 +181,14 @@ SECTIONS
181 from .altinstructions and .eh_frame */ 181 from .altinstructions and .eh_frame */
182 .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.exit.text) } 182 .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.exit.text) }
183 .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { *(.exit.data) } 183 .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { *(.exit.data) }
184#if defined(CONFIG_BLK_DEV_INITRD)
184 . = ALIGN(4096); 185 . = ALIGN(4096);
185 .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { 186 .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) {
186 __initramfs_start = .; 187 __initramfs_start = .;
187 *(.init.ramfs) 188 *(.init.ramfs)
188 __initramfs_end = .; 189 __initramfs_end = .;
189 } 190 }
191#endif
190 . = ALIGN(L1_CACHE_BYTES); 192 . = ALIGN(L1_CACHE_BYTES);
191 .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { 193 .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) {
192 __per_cpu_start = .; 194 __per_cpu_start = .;
diff --git a/arch/i386/mm/fault.c b/arch/i386/mm/fault.c
index aaaa4d225f7e..cba9b3894a33 100644
--- a/arch/i386/mm/fault.c
+++ b/arch/i386/mm/fault.c
@@ -60,32 +60,6 @@ static inline int notify_page_fault(enum die_val val, const char *str,
60} 60}
61 61
62/* 62/*
63 * Unlock any spinlocks which will prevent us from getting the
64 * message out
65 */
66void bust_spinlocks(int yes)
67{
68 int loglevel_save = console_loglevel;
69
70 if (yes) {
71 oops_in_progress = 1;
72 return;
73 }
74#ifdef CONFIG_VT
75 unblank_screen();
76#endif
77 oops_in_progress = 0;
78 /*
79 * OK, the message is on the console. Now we call printk()
80 * without oops_in_progress set so that printk will give klogd
81 * a poke. Hold onto your hats...
82 */
83 console_loglevel = 15; /* NMI oopser may have shut the console up */
84 printk(" ");
85 console_loglevel = loglevel_save;
86}
87
88/*
89 * Return EIP plus the CS segment base. The segment limit is also 63 * Return EIP plus the CS segment base. The segment limit is also
90 * adjusted, clamped to the kernel/user address space (whichever is 64 * adjusted, clamped to the kernel/user address space (whichever is
91 * appropriate), and returned in *eip_limit. 65 * appropriate), and returned in *eip_limit.
diff --git a/arch/i386/mm/highmem.c b/arch/i386/mm/highmem.c
index e0fa6cb655a8..bb2de1089add 100644
--- a/arch/i386/mm/highmem.c
+++ b/arch/i386/mm/highmem.c
@@ -33,13 +33,14 @@ void *kmap_atomic(struct page *page, enum km_type type)
33 33
34 /* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */ 34 /* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */
35 pagefault_disable(); 35 pagefault_disable();
36
37 idx = type + KM_TYPE_NR*smp_processor_id();
38 BUG_ON(!pte_none(*(kmap_pte-idx)));
39
36 if (!PageHighMem(page)) 40 if (!PageHighMem(page))
37 return page_address(page); 41 return page_address(page);
38 42
39 idx = type + KM_TYPE_NR*smp_processor_id();
40 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); 43 vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
41 if (!pte_none(*(kmap_pte-idx)))
42 BUG();
43 set_pte(kmap_pte-idx, mk_pte(page, kmap_prot)); 44 set_pte(kmap_pte-idx, mk_pte(page, kmap_prot));
44 45
45 return (void*) vaddr; 46 return (void*) vaddr;
diff --git a/arch/i386/mm/pageattr.c b/arch/i386/mm/pageattr.c
index ad91528bdc14..e223b1d4981c 100644
--- a/arch/i386/mm/pageattr.c
+++ b/arch/i386/mm/pageattr.c
@@ -224,7 +224,7 @@ void global_flush_tlb(void)
224 list_replace_init(&df_list, &l); 224 list_replace_init(&df_list, &l);
225 spin_unlock_irq(&cpa_lock); 225 spin_unlock_irq(&cpa_lock);
226 if (!cpu_has_clflush) 226 if (!cpu_has_clflush)
227 flush_map(0); 227 flush_map(NULL);
228 list_for_each_entry_safe(pg, next, &l, lru) { 228 list_for_each_entry_safe(pg, next, &l, lru) {
229 if (cpu_has_clflush) 229 if (cpu_has_clflush)
230 flush_map(page_address(pg)); 230 flush_map(page_address(pg));
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index f1d2899e9a62..db185f34e341 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -24,6 +24,10 @@ config 64BIT
24 bool 24 bool
25 default y 25 default y
26 26
27config ZONE_DMA
28 def_bool y
29 depends on !IA64_SGI_SN2
30
27config MMU 31config MMU
28 bool 32 bool
29 default y 33 default y
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c
index ce49fe3a3b56..c1dca226b479 100644
--- a/arch/ia64/hp/common/sba_iommu.c
+++ b/arch/ia64/hp/common/sba_iommu.c
@@ -1881,7 +1881,7 @@ ioc_open(struct inode *inode, struct file *file)
1881 return seq_open(file, &ioc_seq_ops); 1881 return seq_open(file, &ioc_seq_ops);
1882} 1882}
1883 1883
1884static struct file_operations ioc_fops = { 1884static const struct file_operations ioc_fops = {
1885 .open = ioc_open, 1885 .open = ioc_open,
1886 .read = seq_read, 1886 .read = seq_read,
1887 .llseek = seq_lseek, 1887 .llseek = seq_lseek,
diff --git a/arch/ia64/ia32/binfmt_elf32.c b/arch/ia64/ia32/binfmt_elf32.c
index 578737ec7629..c05bda662364 100644
--- a/arch/ia64/ia32/binfmt_elf32.c
+++ b/arch/ia64/ia32/binfmt_elf32.c
@@ -91,9 +91,8 @@ ia64_elf32_init (struct pt_regs *regs)
91 * it with privilege level 3 because the IVE uses non-privileged accesses to these 91 * it with privilege level 3 because the IVE uses non-privileged accesses to these
92 * tables. IA-32 segmentation is used to protect against IA-32 accesses to them. 92 * tables. IA-32 segmentation is used to protect against IA-32 accesses to them.
93 */ 93 */
94 vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); 94 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
95 if (vma) { 95 if (vma) {
96 memset(vma, 0, sizeof(*vma));
97 vma->vm_mm = current->mm; 96 vma->vm_mm = current->mm;
98 vma->vm_start = IA32_GDT_OFFSET; 97 vma->vm_start = IA32_GDT_OFFSET;
99 vma->vm_end = vma->vm_start + PAGE_SIZE; 98 vma->vm_end = vma->vm_start + PAGE_SIZE;
@@ -117,9 +116,8 @@ ia64_elf32_init (struct pt_regs *regs)
117 * code is locked in specific gate page, which is pointed by pretcode 116 * code is locked in specific gate page, which is pointed by pretcode
118 * when setup_frame_ia32 117 * when setup_frame_ia32
119 */ 118 */
120 vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); 119 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
121 if (vma) { 120 if (vma) {
122 memset(vma, 0, sizeof(*vma));
123 vma->vm_mm = current->mm; 121 vma->vm_mm = current->mm;
124 vma->vm_start = IA32_GATE_OFFSET; 122 vma->vm_start = IA32_GATE_OFFSET;
125 vma->vm_end = vma->vm_start + PAGE_SIZE; 123 vma->vm_end = vma->vm_start + PAGE_SIZE;
@@ -142,9 +140,8 @@ ia64_elf32_init (struct pt_regs *regs)
142 * Install LDT as anonymous memory. This gives us all-zero segment descriptors 140 * Install LDT as anonymous memory. This gives us all-zero segment descriptors
143 * until a task modifies them via modify_ldt(). 141 * until a task modifies them via modify_ldt().
144 */ 142 */
145 vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); 143 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
146 if (vma) { 144 if (vma) {
147 memset(vma, 0, sizeof(*vma));
148 vma->vm_mm = current->mm; 145 vma->vm_mm = current->mm;
149 vma->vm_start = IA32_LDT_OFFSET; 146 vma->vm_start = IA32_LDT_OFFSET;
150 vma->vm_end = vma->vm_start + PAGE_ALIGN(IA32_LDT_ENTRIES*IA32_LDT_ENTRY_SIZE); 147 vma->vm_end = vma->vm_start + PAGE_ALIGN(IA32_LDT_ENTRIES*IA32_LDT_ENTRY_SIZE);
@@ -214,12 +211,10 @@ ia32_setup_arg_pages (struct linux_binprm *bprm, int executable_stack)
214 bprm->loader += stack_base; 211 bprm->loader += stack_base;
215 bprm->exec += stack_base; 212 bprm->exec += stack_base;
216 213
217 mpnt = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); 214 mpnt = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
218 if (!mpnt) 215 if (!mpnt)
219 return -ENOMEM; 216 return -ENOMEM;
220 217
221 memset(mpnt, 0, sizeof(*mpnt));
222
223 down_write(&current->mm->mmap_sem); 218 down_write(&current->mm->mmap_sem);
224 { 219 {
225 mpnt->vm_mm = current->mm; 220 mpnt->vm_mm = current->mm;
diff --git a/arch/ia64/ia32/ia32_entry.S b/arch/ia64/ia32/ia32_entry.S
index a32cd59b81ed..687e5fdc9683 100644
--- a/arch/ia64/ia32/ia32_entry.S
+++ b/arch/ia64/ia32/ia32_entry.S
@@ -326,7 +326,7 @@ ia32_syscall_table:
326 data8 sys_ni_syscall 326 data8 sys_ni_syscall
327 data8 compat_sys_wait4 327 data8 compat_sys_wait4
328 data8 sys_swapoff /* 115 */ 328 data8 sys_swapoff /* 115 */
329 data8 sys32_sysinfo 329 data8 compat_sys_sysinfo
330 data8 sys32_ipc 330 data8 sys32_ipc
331 data8 sys_fsync 331 data8 sys_fsync
332 data8 sys32_sigreturn 332 data8 sys32_sigreturn
diff --git a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c
index 957681c39ad9..d430d36ae49d 100644
--- a/arch/ia64/ia32/sys_ia32.c
+++ b/arch/ia64/ia32/sys_ia32.c
@@ -2209,74 +2209,6 @@ sys32_fstat64 (unsigned int fd, struct stat64 __user *statbuf)
2209 return ret; 2209 return ret;
2210} 2210}
2211 2211
2212struct sysinfo32 {
2213 s32 uptime;
2214 u32 loads[3];
2215 u32 totalram;
2216 u32 freeram;
2217 u32 sharedram;
2218 u32 bufferram;
2219 u32 totalswap;
2220 u32 freeswap;
2221 u16 procs;
2222 u16 pad;
2223 u32 totalhigh;
2224 u32 freehigh;
2225 u32 mem_unit;
2226 char _f[8];
2227};
2228
2229asmlinkage long
2230sys32_sysinfo (struct sysinfo32 __user *info)
2231{
2232 struct sysinfo s;
2233 long ret, err;
2234 int bitcount = 0;
2235 mm_segment_t old_fs = get_fs();
2236
2237 set_fs(KERNEL_DS);
2238 ret = sys_sysinfo((struct sysinfo __user *) &s);
2239 set_fs(old_fs);
2240 /* Check to see if any memory value is too large for 32-bit and
2241 * scale down if needed.
2242 */
2243 if ((s.totalram >> 32) || (s.totalswap >> 32)) {
2244 while (s.mem_unit < PAGE_SIZE) {
2245 s.mem_unit <<= 1;
2246 bitcount++;
2247 }
2248 s.totalram >>= bitcount;
2249 s.freeram >>= bitcount;
2250 s.sharedram >>= bitcount;
2251 s.bufferram >>= bitcount;
2252 s.totalswap >>= bitcount;
2253 s.freeswap >>= bitcount;
2254 s.totalhigh >>= bitcount;
2255 s.freehigh >>= bitcount;
2256 }
2257
2258 if (!access_ok(VERIFY_WRITE, info, sizeof(*info)))
2259 return -EFAULT;
2260
2261 err = __put_user(s.uptime, &info->uptime);
2262 err |= __put_user(s.loads[0], &info->loads[0]);
2263 err |= __put_user(s.loads[1], &info->loads[1]);
2264 err |= __put_user(s.loads[2], &info->loads[2]);
2265 err |= __put_user(s.totalram, &info->totalram);
2266 err |= __put_user(s.freeram, &info->freeram);
2267 err |= __put_user(s.sharedram, &info->sharedram);
2268 err |= __put_user(s.bufferram, &info->bufferram);
2269 err |= __put_user(s.totalswap, &info->totalswap);
2270 err |= __put_user(s.freeswap, &info->freeswap);
2271 err |= __put_user(s.procs, &info->procs);
2272 err |= __put_user (s.totalhigh, &info->totalhigh);
2273 err |= __put_user (s.freehigh, &info->freehigh);
2274 err |= __put_user (s.mem_unit, &info->mem_unit);
2275 if (err)
2276 return -EFAULT;
2277 return ret;
2278}
2279
2280asmlinkage long 2212asmlinkage long
2281sys32_sched_rr_get_interval (pid_t pid, struct compat_timespec __user *interval) 2213sys32_sched_rr_get_interval (pid_t pid, struct compat_timespec __user *interval)
2282{ 2214{
diff --git a/arch/ia64/kernel/crash.c b/arch/ia64/kernel/crash.c
index 9d92097ce96d..37bb16f07fc3 100644
--- a/arch/ia64/kernel/crash.c
+++ b/arch/ia64/kernel/crash.c
@@ -52,7 +52,7 @@ extern void ia64_dump_cpu_regs(void *);
52static DEFINE_PER_CPU(struct elf_prstatus, elf_prstatus); 52static DEFINE_PER_CPU(struct elf_prstatus, elf_prstatus);
53 53
54void 54void
55crash_save_this_cpu() 55crash_save_this_cpu(void)
56{ 56{
57 void *buf; 57 void *buf;
58 unsigned long cfm, sof, sol; 58 unsigned long cfm, sof, sol;
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index 6c03928544c2..772ba6fe110f 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -413,11 +413,10 @@ efi_init (void)
413 efi_char16_t *c16; 413 efi_char16_t *c16;
414 u64 efi_desc_size; 414 u64 efi_desc_size;
415 char *cp, vendor[100] = "unknown"; 415 char *cp, vendor[100] = "unknown";
416 extern char saved_command_line[];
417 int i; 416 int i;
418 417
419 /* it's too early to be able to use the standard kernel command line support... */ 418 /* it's too early to be able to use the standard kernel command line support... */
420 for (cp = saved_command_line; *cp; ) { 419 for (cp = boot_command_line; *cp; ) {
421 if (memcmp(cp, "mem=", 4) == 0) { 420 if (memcmp(cp, "mem=", 4) == 0) {
422 mem_limit = memparse(cp + 4, &cp); 421 mem_limit = memparse(cp + 4, &cp);
423 } else if (memcmp(cp, "max_addr=", 9) == 0) { 422 } else if (memcmp(cp, "max_addr=", 9) == 0) {
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
index aa94f60fa8e7..9860794a68fb 100644
--- a/arch/ia64/kernel/perfmon.c
+++ b/arch/ia64/kernel/perfmon.c
@@ -621,7 +621,7 @@ EXPORT_PER_CPU_SYMBOL_GPL(pfm_syst_info);
621 621
622 622
623/* forward declaration */ 623/* forward declaration */
624static struct file_operations pfm_file_ops; 624static const struct file_operations pfm_file_ops;
625 625
626/* 626/*
627 * forward declarations 627 * forward declarations
@@ -2126,7 +2126,7 @@ pfm_no_open(struct inode *irrelevant, struct file *dontcare)
2126 2126
2127 2127
2128 2128
2129static struct file_operations pfm_file_ops = { 2129static const struct file_operations pfm_file_ops = {
2130 .llseek = no_llseek, 2130 .llseek = no_llseek,
2131 .read = pfm_read, 2131 .read = pfm_read,
2132 .write = pfm_write, 2132 .write = pfm_write,
@@ -2301,12 +2301,11 @@ pfm_smpl_buffer_alloc(struct task_struct *task, pfm_context_t *ctx, unsigned lon
2301 DPRINT(("smpl_buf @%p\n", smpl_buf)); 2301 DPRINT(("smpl_buf @%p\n", smpl_buf));
2302 2302
2303 /* allocate vma */ 2303 /* allocate vma */
2304 vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); 2304 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
2305 if (!vma) { 2305 if (!vma) {
2306 DPRINT(("Cannot allocate vma\n")); 2306 DPRINT(("Cannot allocate vma\n"));
2307 goto error_kmem; 2307 goto error_kmem;
2308 } 2308 }
2309 memset(vma, 0, sizeof(*vma));
2310 2309
2311 /* 2310 /*
2312 * partially initialize the vma for the sampling buffer 2311 * partially initialize the vma for the sampling buffer
@@ -6597,7 +6596,7 @@ found:
6597 return 0; 6596 return 0;
6598} 6597}
6599 6598
6600static struct file_operations pfm_proc_fops = { 6599static const struct file_operations pfm_proc_fops = {
6601 .open = pfm_proc_open, 6600 .open = pfm_proc_open,
6602 .read = seq_read, 6601 .read = seq_read,
6603 .llseek = seq_lseek, 6602 .llseek = seq_lseek,
diff --git a/arch/ia64/kernel/sal.c b/arch/ia64/kernel/sal.c
index 20bad78b5073..37c876f95dba 100644
--- a/arch/ia64/kernel/sal.c
+++ b/arch/ia64/kernel/sal.c
@@ -194,9 +194,8 @@ static void __init
194chk_nointroute_opt(void) 194chk_nointroute_opt(void)
195{ 195{
196 char *cp; 196 char *cp;
197 extern char saved_command_line[];
198 197
199 for (cp = saved_command_line; *cp; ) { 198 for (cp = boot_command_line; *cp; ) {
200 if (memcmp(cp, "nointroute", 10) == 0) { 199 if (memcmp(cp, "nointroute", 10) == 0) {
201 no_int_routing = 1; 200 no_int_routing = 1;
202 printk ("no_int_routing on\n"); 201 printk ("no_int_routing on\n");
diff --git a/arch/ia64/kernel/salinfo.c b/arch/ia64/kernel/salinfo.c
index e375a2f0f2c3..af9f8754d847 100644
--- a/arch/ia64/kernel/salinfo.c
+++ b/arch/ia64/kernel/salinfo.c
@@ -352,7 +352,7 @@ retry:
352 return size; 352 return size;
353} 353}
354 354
355static struct file_operations salinfo_event_fops = { 355static const struct file_operations salinfo_event_fops = {
356 .open = salinfo_event_open, 356 .open = salinfo_event_open,
357 .read = salinfo_event_read, 357 .read = salinfo_event_read,
358}; 358};
@@ -568,7 +568,7 @@ salinfo_log_write(struct file *file, const char __user *buffer, size_t count, lo
568 return count; 568 return count;
569} 569}
570 570
571static struct file_operations salinfo_data_fops = { 571static const struct file_operations salinfo_data_fops = {
572 .open = salinfo_log_open, 572 .open = salinfo_log_open,
573 .release = salinfo_log_release, 573 .release = salinfo_log_release,
574 .read = salinfo_log_read, 574 .read = salinfo_log_read,
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index 83c2629e1c4c..5fa09d141ab7 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -262,7 +262,7 @@ reserve_memory (void)
262 * appropriate after a kernel panic. 262 * appropriate after a kernel panic.
263 */ 263 */
264 { 264 {
265 char *from = strstr(saved_command_line, "crashkernel="); 265 char *from = strstr(boot_command_line, "crashkernel=");
266 unsigned long base, size; 266 unsigned long base, size;
267 if (from) { 267 if (from) {
268 size = memparse(from + 12, &from); 268 size = memparse(from + 12, &from);
@@ -463,7 +463,7 @@ setup_arch (char **cmdline_p)
463 ia64_patch_vtop((u64) __start___vtop_patchlist, (u64) __end___vtop_patchlist); 463 ia64_patch_vtop((u64) __start___vtop_patchlist, (u64) __end___vtop_patchlist);
464 464
465 *cmdline_p = __va(ia64_boot_param->command_line); 465 *cmdline_p = __va(ia64_boot_param->command_line);
466 strlcpy(saved_command_line, *cmdline_p, COMMAND_LINE_SIZE); 466 strlcpy(boot_command_line, *cmdline_p, COMMAND_LINE_SIZE);
467 467
468 efi_init(); 468 efi_init();
469 io_port_init(); 469 io_port_init();
diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c
index f4c7f7769cf7..55ddd809b02d 100644
--- a/arch/ia64/kernel/smp.c
+++ b/arch/ia64/kernel/smp.c
@@ -221,13 +221,13 @@ send_IPI_self (int op)
221 221
222#ifdef CONFIG_KEXEC 222#ifdef CONFIG_KEXEC
223void 223void
224kdump_smp_send_stop() 224kdump_smp_send_stop(void)
225{ 225{
226 send_IPI_allbutself(IPI_KDUMP_CPU_STOP); 226 send_IPI_allbutself(IPI_KDUMP_CPU_STOP);
227} 227}
228 228
229void 229void
230kdump_smp_send_init() 230kdump_smp_send_init(void)
231{ 231{
232 unsigned int cpu, self_cpu; 232 unsigned int cpu, self_cpu;
233 self_cpu = smp_processor_id(); 233 self_cpu = smp_processor_id();
diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c
index ab684747036f..765cbe5ba6ae 100644
--- a/arch/ia64/kernel/traps.c
+++ b/arch/ia64/kernel/traps.c
@@ -24,8 +24,6 @@
24#include <asm/uaccess.h> 24#include <asm/uaccess.h>
25#include <asm/kdebug.h> 25#include <asm/kdebug.h>
26 26
27extern spinlock_t timerlist_lock;
28
29fpswa_interface_t *fpswa_interface; 27fpswa_interface_t *fpswa_interface;
30EXPORT_SYMBOL(fpswa_interface); 28EXPORT_SYMBOL(fpswa_interface);
31 29
@@ -53,34 +51,6 @@ trap_init (void)
53 fpswa_interface = __va(ia64_boot_param->fpswa); 51 fpswa_interface = __va(ia64_boot_param->fpswa);
54} 52}
55 53
56/*
57 * Unlock any spinlocks which will prevent us from getting the message out (timerlist_lock
58 * is acquired through the console unblank code)
59 */
60void
61bust_spinlocks (int yes)
62{
63 int loglevel_save = console_loglevel;
64
65 if (yes) {
66 oops_in_progress = 1;
67 return;
68 }
69
70#ifdef CONFIG_VT
71 unblank_screen();
72#endif
73 oops_in_progress = 0;
74 /*
75 * OK, the message is on the console. Now we call printk() without
76 * oops_in_progress set so that printk will give klogd a poke. Hold onto
77 * your hats...
78 */
79 console_loglevel = 15; /* NMI oopser may have shut the console up */
80 printk(" ");
81 console_loglevel = loglevel_save;
82}
83
84void 54void
85die (const char *str, struct pt_regs *regs, long err) 55die (const char *str, struct pt_regs *regs, long err)
86{ 56{
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S
index 8f3d0066f446..25dd55e4db24 100644
--- a/arch/ia64/kernel/vmlinux.lds.S
+++ b/arch/ia64/kernel/vmlinux.lds.S
@@ -111,12 +111,14 @@ SECTIONS
111 .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) 111 .init.data : AT(ADDR(.init.data) - LOAD_OFFSET)
112 { *(.init.data) } 112 { *(.init.data) }
113 113
114#ifdef CONFIG_BLK_DEV_INITRD
114 .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) 115 .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET)
115 { 116 {
116 __initramfs_start = .; 117 __initramfs_start = .;
117 *(.init.ramfs) 118 *(.init.ramfs)
118 __initramfs_end = .; 119 __initramfs_end = .;
119 } 120 }
121#endif
120 122
121 . = ALIGN(16); 123 . = ALIGN(16);
122 .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) 124 .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET)
diff --git a/arch/ia64/mm/contig.c b/arch/ia64/mm/contig.c
index 63e6d49c5813..ca4d41e5f177 100644
--- a/arch/ia64/mm/contig.c
+++ b/arch/ia64/mm/contig.c
@@ -259,9 +259,11 @@ paging_init (void)
259 num_physpages = 0; 259 num_physpages = 0;
260 efi_memmap_walk(count_pages, &num_physpages); 260 efi_memmap_walk(count_pages, &num_physpages);
261 261
262 max_dma = virt_to_phys((void *) MAX_DMA_ADDRESS) >> PAGE_SHIFT;
263 memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); 262 memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
263#ifdef CONFIG_ZONE_DMA
264 max_dma = virt_to_phys((void *) MAX_DMA_ADDRESS) >> PAGE_SHIFT;
264 max_zone_pfns[ZONE_DMA] = max_dma; 265 max_zone_pfns[ZONE_DMA] = max_dma;
266#endif
265 max_zone_pfns[ZONE_NORMAL] = max_low_pfn; 267 max_zone_pfns[ZONE_NORMAL] = max_low_pfn;
266 268
267#ifdef CONFIG_VIRTUAL_MEM_MAP 269#ifdef CONFIG_VIRTUAL_MEM_MAP
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
index 6eae596c509d..16835108bb5b 100644
--- a/arch/ia64/mm/discontig.c
+++ b/arch/ia64/mm/discontig.c
@@ -37,7 +37,9 @@ struct early_node_data {
37 unsigned long pernode_size; 37 unsigned long pernode_size;
38 struct bootmem_data bootmem_data; 38 struct bootmem_data bootmem_data;
39 unsigned long num_physpages; 39 unsigned long num_physpages;
40#ifdef CONFIG_ZONE_DMA
40 unsigned long num_dma_physpages; 41 unsigned long num_dma_physpages;
42#endif
41 unsigned long min_pfn; 43 unsigned long min_pfn;
42 unsigned long max_pfn; 44 unsigned long max_pfn;
43}; 45};
@@ -633,9 +635,11 @@ static __init int count_node_pages(unsigned long start, unsigned long len, int n
633 unsigned long end = start + len; 635 unsigned long end = start + len;
634 636
635 mem_data[node].num_physpages += len >> PAGE_SHIFT; 637 mem_data[node].num_physpages += len >> PAGE_SHIFT;
638#ifdef CONFIG_ZONE_DMA
636 if (start <= __pa(MAX_DMA_ADDRESS)) 639 if (start <= __pa(MAX_DMA_ADDRESS))
637 mem_data[node].num_dma_physpages += 640 mem_data[node].num_dma_physpages +=
638 (min(end, __pa(MAX_DMA_ADDRESS)) - start) >>PAGE_SHIFT; 641 (min(end, __pa(MAX_DMA_ADDRESS)) - start) >>PAGE_SHIFT;
642#endif
639 start = GRANULEROUNDDOWN(start); 643 start = GRANULEROUNDDOWN(start);
640 start = ORDERROUNDDOWN(start); 644 start = ORDERROUNDDOWN(start);
641 end = GRANULEROUNDUP(end); 645 end = GRANULEROUNDUP(end);
@@ -688,7 +692,9 @@ void __init paging_init(void)
688 } 692 }
689 693
690 memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); 694 memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
695#ifdef CONFIG_ZONE_DMA
691 max_zone_pfns[ZONE_DMA] = max_dma; 696 max_zone_pfns[ZONE_DMA] = max_dma;
697#endif
692 max_zone_pfns[ZONE_NORMAL] = max_pfn; 698 max_zone_pfns[ZONE_NORMAL] = max_pfn;
693 free_area_init_nodes(max_zone_pfns); 699 free_area_init_nodes(max_zone_pfns);
694 700
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c
index faaca21a3718..f225dd72968b 100644
--- a/arch/ia64/mm/init.c
+++ b/arch/ia64/mm/init.c
@@ -68,7 +68,7 @@ max_pgt_pages(void)
68#ifndef CONFIG_NUMA 68#ifndef CONFIG_NUMA
69 node_free_pages = nr_free_pages(); 69 node_free_pages = nr_free_pages();
70#else 70#else
71 node_free_pages = nr_free_pages_pgdat(NODE_DATA(numa_node_id())); 71 node_free_pages = node_page_state(numa_node_id(), NR_FREE_PAGES);
72#endif 72#endif
73 max_pgt_pages = node_free_pages / PGT_FRACTION_OF_NODE_MEM; 73 max_pgt_pages = node_free_pages / PGT_FRACTION_OF_NODE_MEM;
74 max_pgt_pages = max(max_pgt_pages, MIN_PGT_PAGES); 74 max_pgt_pages = max(max_pgt_pages, MIN_PGT_PAGES);
@@ -176,9 +176,8 @@ ia64_init_addr_space (void)
176 * the problem. When the process attempts to write to the register backing store 176 * the problem. When the process attempts to write to the register backing store
177 * for the first time, it will get a SEGFAULT in this case. 177 * for the first time, it will get a SEGFAULT in this case.
178 */ 178 */
179 vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); 179 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
180 if (vma) { 180 if (vma) {
181 memset(vma, 0, sizeof(*vma));
182 vma->vm_mm = current->mm; 181 vma->vm_mm = current->mm;
183 vma->vm_start = current->thread.rbs_bot & PAGE_MASK; 182 vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
184 vma->vm_end = vma->vm_start + PAGE_SIZE; 183 vma->vm_end = vma->vm_start + PAGE_SIZE;
@@ -195,9 +194,8 @@ ia64_init_addr_space (void)
195 194
196 /* map NaT-page at address zero to speed up speculative dereferencing of NULL: */ 195 /* map NaT-page at address zero to speed up speculative dereferencing of NULL: */
197 if (!(current->personality & MMAP_PAGE_ZERO)) { 196 if (!(current->personality & MMAP_PAGE_ZERO)) {
198 vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); 197 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
199 if (vma) { 198 if (vma) {
200 memset(vma, 0, sizeof(*vma));
201 vma->vm_mm = current->mm; 199 vma->vm_mm = current->mm;
202 vma->vm_end = PAGE_SIZE; 200 vma->vm_end = PAGE_SIZE;
203 vma->vm_page_prot = __pgprot(pgprot_val(PAGE_READONLY) | _PAGE_MA_NAT); 201 vma->vm_page_prot = __pgprot(pgprot_val(PAGE_READONLY) | _PAGE_MA_NAT);
diff --git a/arch/ia64/sn/kernel/sn2/sn2_smp.c b/arch/ia64/sn/kernel/sn2/sn2_smp.c
index d9d306c79f2d..601747b1e22a 100644
--- a/arch/ia64/sn/kernel/sn2/sn2_smp.c
+++ b/arch/ia64/sn/kernel/sn2/sn2_smp.c
@@ -455,7 +455,7 @@ static int sn2_ptc_proc_open(struct inode *inode, struct file *file)
455 return seq_open(file, &sn2_ptc_seq_ops); 455 return seq_open(file, &sn2_ptc_seq_ops);
456} 456}
457 457
458static struct file_operations proc_sn2_ptc_operations = { 458static const struct file_operations proc_sn2_ptc_operations = {
459 .open = sn2_ptc_proc_open, 459 .open = sn2_ptc_proc_open,
460 .read = seq_read, 460 .read = seq_read,
461 .llseek = seq_lseek, 461 .llseek = seq_lseek,
diff --git a/arch/ia64/sn/kernel/sn2/sn_hwperf.c b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
index 33367996d72d..6da9854751cd 100644
--- a/arch/ia64/sn/kernel/sn2/sn_hwperf.c
+++ b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
@@ -865,7 +865,7 @@ error:
865 return r; 865 return r;
866} 866}
867 867
868static struct file_operations sn_hwperf_fops = { 868static const struct file_operations sn_hwperf_fops = {
869 .ioctl = sn_hwperf_ioctl, 869 .ioctl = sn_hwperf_ioctl,
870}; 870};
871 871
diff --git a/arch/ia64/sn/kernel/sn2/sn_proc_fs.c b/arch/ia64/sn/kernel/sn2/sn_proc_fs.c
index 43ddc2eccb96..62b3e9a496ac 100644
--- a/arch/ia64/sn/kernel/sn2/sn_proc_fs.c
+++ b/arch/ia64/sn/kernel/sn2/sn_proc_fs.c
@@ -89,61 +89,80 @@ static int coherence_id_open(struct inode *inode, struct file *file)
89 return single_open(file, coherence_id_show, NULL); 89 return single_open(file, coherence_id_show, NULL);
90} 90}
91 91
92static struct proc_dir_entry
93*sn_procfs_create_entry(const char *name, struct proc_dir_entry *parent,
94 int (*openfunc)(struct inode *, struct file *),
95 int (*releasefunc)(struct inode *, struct file *),
96 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *))
97{
98 struct proc_dir_entry *e = create_proc_entry(name, 0444, parent);
99
100 if (e) {
101 struct file_operations *f;
102
103 f = kzalloc(sizeof(*f), GFP_KERNEL);
104 if (f) {
105 f->open = openfunc;
106 f->read = seq_read;
107 f->llseek = seq_lseek;
108 f->release = releasefunc;
109 f->write = write;
110 e->proc_fops = f;
111 }
112 }
113
114 return e;
115}
116
117/* /proc/sgi_sn/sn_topology uses seq_file, see sn_hwperf.c */ 92/* /proc/sgi_sn/sn_topology uses seq_file, see sn_hwperf.c */
118extern int sn_topology_open(struct inode *, struct file *); 93extern int sn_topology_open(struct inode *, struct file *);
119extern int sn_topology_release(struct inode *, struct file *); 94extern int sn_topology_release(struct inode *, struct file *);
120 95
96static const struct file_operations proc_partition_id_fops = {
97 .open = partition_id_open,
98 .read = seq_read,
99 .llseek = seq_lseek,
100 .release = single_release,
101};
102
103static const struct file_operations proc_system_sn_fops = {
104 .open = system_serial_number_open,
105 .read = seq_read,
106 .llseek = seq_lseek,
107 .release = single_release,
108};
109
110static const struct file_operations proc_license_id_fops = {
111 .open = licenseID_open,
112 .read = seq_read,
113 .llseek = seq_lseek,
114 .release = single_release,
115};
116
117static const struct file_operations proc_sn_force_intr_fops = {
118 .open = sn_force_interrupt_open,
119 .read = seq_read,
120 .write = sn_force_interrupt_write_proc,
121 .llseek = seq_lseek,
122 .release = single_release,
123};
124
125static const struct file_operations proc_coherence_id_fops = {
126 .open = coherence_id_open,
127 .read = seq_read,
128 .llseek = seq_lseek,
129 .release = single_release,
130};
131
132static const struct file_operations proc_sn_topo_fops = {
133 .open = sn_topology_open,
134 .read = seq_read,
135 .llseek = seq_lseek,
136 .release = sn_topology_release,
137};
138
121void register_sn_procfs(void) 139void register_sn_procfs(void)
122{ 140{
123 static struct proc_dir_entry *sgi_proc_dir = NULL; 141 static struct proc_dir_entry *sgi_proc_dir = NULL;
142 struct proc_dir_entry *pde;
124 143
125 BUG_ON(sgi_proc_dir != NULL); 144 BUG_ON(sgi_proc_dir != NULL);
126 if (!(sgi_proc_dir = proc_mkdir("sgi_sn", NULL))) 145 if (!(sgi_proc_dir = proc_mkdir("sgi_sn", NULL)))
127 return; 146 return;
128 147
129 sn_procfs_create_entry("partition_id", sgi_proc_dir, 148 pde = create_proc_entry("partition_id", 0444, sgi_proc_dir);
130 partition_id_open, single_release, NULL); 149 if (pde)
131 150 pde->proc_fops = &proc_partition_id_fops;
132 sn_procfs_create_entry("system_serial_number", sgi_proc_dir, 151 pde = create_proc_entry("system_serial_number", 0444, sgi_proc_dir);
133 system_serial_number_open, single_release, NULL); 152 if (pde)
134 153 pde->proc_fops = &proc_system_sn_fops;
135 sn_procfs_create_entry("licenseID", sgi_proc_dir, 154 pde = create_proc_entry("licenseID", 0444, sgi_proc_dir);
136 licenseID_open, single_release, NULL); 155 if (pde)
137 156 pde->proc_fops = &proc_license_id_fops;
138 sn_procfs_create_entry("sn_force_interrupt", sgi_proc_dir, 157 pde = create_proc_entry("sn_force_interrupt", 0644, sgi_proc_dir);
139 sn_force_interrupt_open, single_release, 158 if (pde)
140 sn_force_interrupt_write_proc); 159 pde->proc_fops = &proc_sn_force_intr_fops;
141 160 pde = create_proc_entry("coherence_id", 0444, sgi_proc_dir);
142 sn_procfs_create_entry("coherence_id", sgi_proc_dir, 161 if (pde)
143 coherence_id_open, single_release, NULL); 162 pde->proc_fops = &proc_coherence_id_fops;
144 163 pde = create_proc_entry("sn_topology", 0444, sgi_proc_dir);
145 sn_procfs_create_entry("sn_topology", sgi_proc_dir, 164 if (pde)
146 sn_topology_open, sn_topology_release, NULL); 165 pde->proc_fops = &proc_sn_topo_fops;
147} 166}
148 167
149#endif /* CONFIG_PROC_FS */ 168#endif /* CONFIG_PROC_FS */
diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig
index f383dab973f5..9740d6b8ae11 100644
--- a/arch/m32r/Kconfig
+++ b/arch/m32r/Kconfig
@@ -16,6 +16,10 @@ config GENERIC_ISA_DMA
16 bool 16 bool
17 default y 17 default y
18 18
19config ZONE_DMA
20 bool
21 default y
22
19config GENERIC_HARDIRQS 23config GENERIC_HARDIRQS
20 bool 24 bool
21 default y 25 default y
@@ -24,6 +28,9 @@ config GENERIC_IRQ_PROBE
24 bool 28 bool
25 default y 29 default y
26 30
31config NO_IOPORT
32 def_bool y
33
27source "init/Kconfig" 34source "init/Kconfig"
28 35
29 36
diff --git a/arch/m32r/Makefile b/arch/m32r/Makefile
index f219c47d334f..cdf63b210c53 100644
--- a/arch/m32r/Makefile
+++ b/arch/m32r/Makefile
@@ -7,7 +7,7 @@
7 7
8LDFLAGS := 8LDFLAGS :=
9OBJCOPYFLAGS := -O binary -R .note -R .comment -S 9OBJCOPYFLAGS := -O binary -R .note -R .comment -S
10LDFLAGS_vmlinux := -e startup_32 10LDFLAGS_vmlinux :=
11 11
12CFLAGS += -pipe -fno-schedule-insns 12CFLAGS += -pipe -fno-schedule-insns
13CFLAGS_KERNEL += -mmodel=medium 13CFLAGS_KERNEL += -mmodel=medium
diff --git a/arch/m32r/defconfig b/arch/m32r/defconfig
index 853093093168..13579917afef 100644
--- a/arch/m32r/defconfig
+++ b/arch/m32r/defconfig
@@ -1,20 +1,18 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.12-rc5 3# Linux kernel version: 2.6.19
4# Fri Jun 3 16:20:11 2005 4# Tue Dec 12 17:52:38 2006
5# 5#
6CONFIG_M32R=y 6CONFIG_M32R=y
7# CONFIG_UID16 is not set
8CONFIG_GENERIC_ISA_DMA=y 7CONFIG_GENERIC_ISA_DMA=y
9CONFIG_GENERIC_HARDIRQS=y 8CONFIG_GENERIC_HARDIRQS=y
10CONFIG_GENERIC_IRQ_PROBE=y 9CONFIG_GENERIC_IRQ_PROBE=y
10CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11 11
12# 12#
13# Code maturity level options 13# Code maturity level options
14# 14#
15CONFIG_EXPERIMENTAL=y 15CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_BROKEN_ON_SMP=y
18CONFIG_LOCK_KERNEL=y 16CONFIG_LOCK_KERNEL=y
19CONFIG_INIT_ENV_ARG_LIMIT=32 17CONFIG_INIT_ENV_ARG_LIMIT=32
20 18
@@ -22,32 +20,40 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
22# General setup 20# General setup
23# 21#
24CONFIG_LOCALVERSION="" 22CONFIG_LOCALVERSION=""
23CONFIG_LOCALVERSION_AUTO=y
25CONFIG_SWAP=y 24CONFIG_SWAP=y
26CONFIG_SYSVIPC=y 25CONFIG_SYSVIPC=y
26# CONFIG_IPC_NS is not set
27# CONFIG_POSIX_MQUEUE is not set 27# CONFIG_POSIX_MQUEUE is not set
28CONFIG_BSD_PROCESS_ACCT=y 28CONFIG_BSD_PROCESS_ACCT=y
29# CONFIG_BSD_PROCESS_ACCT_V3 is not set 29# CONFIG_BSD_PROCESS_ACCT_V3 is not set
30CONFIG_SYSCTL=y 30# CONFIG_TASKSTATS is not set
31# CONFIG_UTS_NS is not set
31# CONFIG_AUDIT is not set 32# CONFIG_AUDIT is not set
32CONFIG_HOTPLUG=y
33CONFIG_KOBJECT_UEVENT=y
34CONFIG_IKCONFIG=y 33CONFIG_IKCONFIG=y
35# CONFIG_IKCONFIG_PROC is not set 34CONFIG_IKCONFIG_PROC=y
35# CONFIG_CPUSETS is not set
36CONFIG_SYSFS_DEPRECATED=y
37# CONFIG_RELAY is not set
38CONFIG_INITRAMFS_SOURCE=""
39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
40CONFIG_SYSCTL=y
36CONFIG_EMBEDDED=y 41CONFIG_EMBEDDED=y
42CONFIG_SYSCTL_SYSCALL=y
37# CONFIG_KALLSYMS is not set 43# CONFIG_KALLSYMS is not set
44CONFIG_HOTPLUG=y
38CONFIG_PRINTK=y 45CONFIG_PRINTK=y
39CONFIG_BUG=y 46CONFIG_BUG=y
47CONFIG_ELF_CORE=y
40CONFIG_BASE_FULL=y 48CONFIG_BASE_FULL=y
41# CONFIG_FUTEX is not set 49# CONFIG_FUTEX is not set
42# CONFIG_EPOLL is not set 50# CONFIG_EPOLL is not set
43# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
44CONFIG_SHMEM=y 51CONFIG_SHMEM=y
45CONFIG_CC_ALIGN_FUNCTIONS=0 52CONFIG_SLAB=y
46CONFIG_CC_ALIGN_LABELS=0 53CONFIG_VM_EVENT_COUNTERS=y
47CONFIG_CC_ALIGN_LOOPS=0
48CONFIG_CC_ALIGN_JUMPS=0
49# CONFIG_TINY_SHMEM is not set 54# CONFIG_TINY_SHMEM is not set
50CONFIG_BASE_SMALL=0 55CONFIG_BASE_SMALL=0
56# CONFIG_SLOB is not set
51 57
52# 58#
53# Loadable module support 59# Loadable module support
@@ -55,10 +61,29 @@ CONFIG_BASE_SMALL=0
55CONFIG_MODULES=y 61CONFIG_MODULES=y
56CONFIG_MODULE_UNLOAD=y 62CONFIG_MODULE_UNLOAD=y
57# CONFIG_MODULE_FORCE_UNLOAD is not set 63# CONFIG_MODULE_FORCE_UNLOAD is not set
58CONFIG_OBSOLETE_MODPARM=y
59# CONFIG_MODVERSIONS is not set 64# CONFIG_MODVERSIONS is not set
60# CONFIG_MODULE_SRCVERSION_ALL is not set 65# CONFIG_MODULE_SRCVERSION_ALL is not set
61CONFIG_KMOD=y 66CONFIG_KMOD=y
67CONFIG_STOP_MACHINE=y
68
69#
70# Block layer
71#
72CONFIG_BLOCK=y
73# CONFIG_BLK_DEV_IO_TRACE is not set
74
75#
76# IO Schedulers
77#
78CONFIG_IOSCHED_NOOP=y
79# CONFIG_IOSCHED_AS is not set
80CONFIG_IOSCHED_DEADLINE=y
81CONFIG_IOSCHED_CFQ=y
82# CONFIG_DEFAULT_AS is not set
83# CONFIG_DEFAULT_DEADLINE is not set
84CONFIG_DEFAULT_CFQ=y
85# CONFIG_DEFAULT_NOOP is not set
86CONFIG_DEFAULT_IOSCHED="cfq"
62 87
63# 88#
64# Processor type and features 89# Processor type and features
@@ -70,8 +95,10 @@ CONFIG_PLAT_M32700UT=y
70# CONFIG_PLAT_OAKS32R is not set 95# CONFIG_PLAT_OAKS32R is not set
71# CONFIG_PLAT_MAPPI2 is not set 96# CONFIG_PLAT_MAPPI2 is not set
72# CONFIG_PLAT_MAPPI3 is not set 97# CONFIG_PLAT_MAPPI3 is not set
98# CONFIG_PLAT_M32104UT is not set
73CONFIG_CHIP_M32700=y 99CONFIG_CHIP_M32700=y
74# CONFIG_CHIP_M32102 is not set 100# CONFIG_CHIP_M32102 is not set
101# CONFIG_CHIP_M32104 is not set
75# CONFIG_CHIP_VDEC2 is not set 102# CONFIG_CHIP_VDEC2 is not set
76# CONFIG_CHIP_OPSP is not set 103# CONFIG_CHIP_OPSP is not set
77CONFIG_MMU=y 104CONFIG_MMU=y
@@ -85,34 +112,39 @@ CONFIG_TIMER_DIVIDE=128
85CONFIG_MEMORY_START=0x08000000 112CONFIG_MEMORY_START=0x08000000
86CONFIG_MEMORY_SIZE=0x01000000 113CONFIG_MEMORY_SIZE=0x01000000
87CONFIG_NOHIGHMEM=y 114CONFIG_NOHIGHMEM=y
88# CONFIG_DISCONTIGMEM is not set 115CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
116CONFIG_SELECT_MEMORY_MODEL=y
117# CONFIG_FLATMEM_MANUAL is not set
118CONFIG_DISCONTIGMEM_MANUAL=y
119# CONFIG_SPARSEMEM_MANUAL is not set
120CONFIG_DISCONTIGMEM=y
121CONFIG_FLAT_NODE_MEM_MAP=y
122CONFIG_NEED_MULTIPLE_NODES=y
123# CONFIG_SPARSEMEM_STATIC is not set
124CONFIG_SPLIT_PTLOCK_CPUS=4
125# CONFIG_RESOURCES_64BIT is not set
126CONFIG_IRAM_START=0x00f00000
127CONFIG_IRAM_SIZE=0x00080000
89CONFIG_RWSEM_GENERIC_SPINLOCK=y 128CONFIG_RWSEM_GENERIC_SPINLOCK=y
90# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 129# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
130CONFIG_GENERIC_FIND_NEXT_BIT=y
131CONFIG_GENERIC_HWEIGHT=y
91CONFIG_GENERIC_CALIBRATE_DELAY=y 132CONFIG_GENERIC_CALIBRATE_DELAY=y
92CONFIG_PREEMPT=y 133CONFIG_PREEMPT=y
93# CONFIG_HAVE_DEC_LOCK is not set 134CONFIG_SMP=y
94# CONFIG_SMP is not set 135# CONFIG_CHIP_M32700_TS1 is not set
136CONFIG_NR_CPUS=2
137CONFIG_NODES_SHIFT=1
95 138
96# 139#
97# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 140# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
98# 141#
99# CONFIG_PCI is not set
100# CONFIG_ISA is not set 142# CONFIG_ISA is not set
101 143
102# 144#
103# PCCARD (PCMCIA/CardBus) support 145# PCCARD (PCMCIA/CardBus) support
104# 146#
105CONFIG_PCCARD=y 147# CONFIG_PCCARD is not set
106# CONFIG_PCMCIA_DEBUG is not set
107CONFIG_PCMCIA=y
108
109#
110# PC-card bridges
111#
112# CONFIG_TCIC is not set
113# CONFIG_M32R_PCC is not set
114CONFIG_M32R_CFC=y
115CONFIG_M32R_CFC_NUM=1
116 148
117# 149#
118# PCI Hotplug Support 150# PCI Hotplug Support
@@ -125,6 +157,94 @@ CONFIG_BINFMT_ELF=y
125# CONFIG_BINFMT_MISC is not set 157# CONFIG_BINFMT_MISC is not set
126 158
127# 159#
160# Networking
161#
162CONFIG_NET=y
163
164#
165# Networking options
166#
167# CONFIG_NETDEBUG is not set
168CONFIG_PACKET=y
169# CONFIG_PACKET_MMAP is not set
170CONFIG_UNIX=y
171CONFIG_XFRM=y
172# CONFIG_XFRM_USER is not set
173# CONFIG_XFRM_SUB_POLICY is not set
174# CONFIG_NET_KEY is not set
175CONFIG_INET=y
176# CONFIG_IP_MULTICAST is not set
177# CONFIG_IP_ADVANCED_ROUTER is not set
178CONFIG_IP_FIB_HASH=y
179CONFIG_IP_PNP=y
180CONFIG_IP_PNP_DHCP=y
181# CONFIG_IP_PNP_BOOTP is not set
182# CONFIG_IP_PNP_RARP is not set
183# CONFIG_NET_IPIP is not set
184# CONFIG_NET_IPGRE is not set
185# CONFIG_ARPD is not set
186# CONFIG_SYN_COOKIES is not set
187# CONFIG_INET_AH is not set
188# CONFIG_INET_ESP is not set
189# CONFIG_INET_IPCOMP is not set
190# CONFIG_INET_XFRM_TUNNEL is not set
191# CONFIG_INET_TUNNEL is not set
192CONFIG_INET_XFRM_MODE_TRANSPORT=y
193CONFIG_INET_XFRM_MODE_TUNNEL=y
194CONFIG_INET_XFRM_MODE_BEET=y
195CONFIG_INET_DIAG=y
196CONFIG_INET_TCP_DIAG=y
197# CONFIG_TCP_CONG_ADVANCED is not set
198CONFIG_TCP_CONG_CUBIC=y
199CONFIG_DEFAULT_TCP_CONG="cubic"
200# CONFIG_TCP_MD5SIG is not set
201# CONFIG_IPV6 is not set
202# CONFIG_INET6_XFRM_TUNNEL is not set
203# CONFIG_INET6_TUNNEL is not set
204# CONFIG_NETWORK_SECMARK is not set
205# CONFIG_NETFILTER is not set
206
207#
208# DCCP Configuration (EXPERIMENTAL)
209#
210# CONFIG_IP_DCCP is not set
211
212#
213# SCTP Configuration (EXPERIMENTAL)
214#
215# CONFIG_IP_SCTP is not set
216
217#
218# TIPC Configuration (EXPERIMENTAL)
219#
220# CONFIG_TIPC is not set
221# CONFIG_ATM is not set
222# CONFIG_BRIDGE is not set
223# CONFIG_VLAN_8021Q is not set
224# CONFIG_DECNET is not set
225# CONFIG_LLC2 is not set
226# CONFIG_IPX is not set
227# CONFIG_ATALK is not set
228# CONFIG_X25 is not set
229# CONFIG_LAPB is not set
230# CONFIG_ECONET is not set
231# CONFIG_WAN_ROUTER is not set
232
233#
234# QoS and/or fair queueing
235#
236# CONFIG_NET_SCHED is not set
237
238#
239# Network testing
240#
241# CONFIG_NET_PKTGEN is not set
242# CONFIG_HAMRADIO is not set
243# CONFIG_IRDA is not set
244# CONFIG_BT is not set
245# CONFIG_IEEE80211 is not set
246
247#
128# Device Drivers 248# Device Drivers
129# 249#
130 250
@@ -133,12 +253,100 @@ CONFIG_BINFMT_ELF=y
133# 253#
134CONFIG_STANDALONE=y 254CONFIG_STANDALONE=y
135CONFIG_PREVENT_FIRMWARE_BUILD=y 255CONFIG_PREVENT_FIRMWARE_BUILD=y
136# CONFIG_FW_LOADER is not set 256CONFIG_FW_LOADER=y
257# CONFIG_SYS_HYPERVISOR is not set
258
259#
260# Connector - unified userspace <-> kernelspace linker
261#
262# CONFIG_CONNECTOR is not set
137 263
138# 264#
139# Memory Technology Devices (MTD) 265# Memory Technology Devices (MTD)
140# 266#
141# CONFIG_MTD is not set 267CONFIG_MTD=y
268# CONFIG_MTD_DEBUG is not set
269# CONFIG_MTD_CONCAT is not set
270CONFIG_MTD_PARTITIONS=y
271CONFIG_MTD_REDBOOT_PARTS=y
272CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
273# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
274# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
275# CONFIG_MTD_CMDLINE_PARTS is not set
276
277#
278# User Modules And Translation Layers
279#
280# CONFIG_MTD_CHAR is not set
281CONFIG_MTD_BLOCK=y
282# CONFIG_FTL is not set
283# CONFIG_NFTL is not set
284# CONFIG_INFTL is not set
285# CONFIG_RFD_FTL is not set
286# CONFIG_SSFDC is not set
287
288#
289# RAM/ROM/Flash chip drivers
290#
291CONFIG_MTD_CFI=m
292CONFIG_MTD_JEDECPROBE=m
293CONFIG_MTD_GEN_PROBE=m
294CONFIG_MTD_CFI_ADV_OPTIONS=y
295# CONFIG_MTD_CFI_NOSWAP is not set
296CONFIG_MTD_CFI_BE_BYTE_SWAP=y
297# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
298CONFIG_MTD_CFI_GEOMETRY=y
299CONFIG_MTD_MAP_BANK_WIDTH_1=y
300CONFIG_MTD_MAP_BANK_WIDTH_2=y
301CONFIG_MTD_MAP_BANK_WIDTH_4=y
302# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
303# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
304# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
305CONFIG_MTD_CFI_I1=y
306# CONFIG_MTD_CFI_I2 is not set
307# CONFIG_MTD_CFI_I4 is not set
308# CONFIG_MTD_CFI_I8 is not set
309# CONFIG_MTD_OTP is not set
310# CONFIG_MTD_CFI_INTELEXT is not set
311CONFIG_MTD_CFI_AMDSTD=m
312# CONFIG_MTD_CFI_STAA is not set
313CONFIG_MTD_CFI_UTIL=m
314# CONFIG_MTD_RAM is not set
315# CONFIG_MTD_ROM is not set
316# CONFIG_MTD_ABSENT is not set
317# CONFIG_MTD_OBSOLETE_CHIPS is not set
318
319#
320# Mapping drivers for chip access
321#
322# CONFIG_MTD_COMPLEX_MAPPINGS is not set
323# CONFIG_MTD_PHYSMAP is not set
324# CONFIG_MTD_PLATRAM is not set
325
326#
327# Self-contained MTD device drivers
328#
329# CONFIG_MTD_SLRAM is not set
330# CONFIG_MTD_PHRAM is not set
331# CONFIG_MTD_MTDRAM is not set
332# CONFIG_MTD_BLOCK2MTD is not set
333
334#
335# Disk-On-Chip Device Drivers
336#
337# CONFIG_MTD_DOC2000 is not set
338# CONFIG_MTD_DOC2001 is not set
339# CONFIG_MTD_DOC2001PLUS is not set
340
341#
342# NAND Flash Device Drivers
343#
344# CONFIG_MTD_NAND is not set
345
346#
347# OneNAND Flash Device Drivers
348#
349# CONFIG_MTD_ONENAND is not set
142 350
143# 351#
144# Parallel port support 352# Parallel port support
@@ -152,7 +360,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
152# 360#
153# Block devices 361# Block devices
154# 362#
155# CONFIG_BLK_DEV_FD is not set
156# CONFIG_BLK_DEV_COW_COMMON is not set 363# CONFIG_BLK_DEV_COW_COMMON is not set
157CONFIG_BLK_DEV_LOOP=y 364CONFIG_BLK_DEV_LOOP=y
158# CONFIG_BLK_DEV_CRYPTOLOOP is not set 365# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -160,23 +367,21 @@ CONFIG_BLK_DEV_NBD=y
160CONFIG_BLK_DEV_RAM=y 367CONFIG_BLK_DEV_RAM=y
161CONFIG_BLK_DEV_RAM_COUNT=16 368CONFIG_BLK_DEV_RAM_COUNT=16
162CONFIG_BLK_DEV_RAM_SIZE=4096 369CONFIG_BLK_DEV_RAM_SIZE=4096
370CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
163# CONFIG_BLK_DEV_INITRD is not set 371# CONFIG_BLK_DEV_INITRD is not set
164CONFIG_INITRAMFS_SOURCE=""
165# CONFIG_CDROM_PKTCDVD is not set 372# CONFIG_CDROM_PKTCDVD is not set
373CONFIG_ATA_OVER_ETH=m
166 374
167# 375#
168# IO Schedulers 376# Misc devices
169# 377#
170CONFIG_IOSCHED_NOOP=y 378# CONFIG_TIFM_CORE is not set
171# CONFIG_IOSCHED_AS is not set
172CONFIG_IOSCHED_DEADLINE=y
173CONFIG_IOSCHED_CFQ=y
174# CONFIG_ATA_OVER_ETH is not set
175 379
176# 380#
177# ATA/ATAPI/MFM/RLL support 381# ATA/ATAPI/MFM/RLL support
178# 382#
179CONFIG_IDE=y 383CONFIG_IDE=y
384CONFIG_IDE_MAX_HWIFS=4
180CONFIG_BLK_DEV_IDE=y 385CONFIG_BLK_DEV_IDE=y
181 386
182# 387#
@@ -185,7 +390,6 @@ CONFIG_BLK_DEV_IDE=y
185# CONFIG_BLK_DEV_IDE_SATA is not set 390# CONFIG_BLK_DEV_IDE_SATA is not set
186CONFIG_BLK_DEV_IDEDISK=y 391CONFIG_BLK_DEV_IDEDISK=y
187# CONFIG_IDEDISK_MULTI_MODE is not set 392# CONFIG_IDEDISK_MULTI_MODE is not set
188CONFIG_BLK_DEV_IDECS=y
189CONFIG_BLK_DEV_IDECD=m 393CONFIG_BLK_DEV_IDECD=m
190# CONFIG_BLK_DEV_IDETAPE is not set 394# CONFIG_BLK_DEV_IDETAPE is not set
191# CONFIG_BLK_DEV_IDEFLOPPY is not set 395# CONFIG_BLK_DEV_IDEFLOPPY is not set
@@ -204,7 +408,9 @@ CONFIG_IDE_GENERIC=y
204# 408#
205# SCSI device support 409# SCSI device support
206# 410#
411# CONFIG_RAID_ATTRS is not set
207CONFIG_SCSI=m 412CONFIG_SCSI=m
413# CONFIG_SCSI_NETLINK is not set
208CONFIG_SCSI_PROC_FS=y 414CONFIG_SCSI_PROC_FS=y
209 415
210# 416#
@@ -216,6 +422,7 @@ CONFIG_BLK_DEV_SD=m
216CONFIG_BLK_DEV_SR=m 422CONFIG_BLK_DEV_SR=m
217# CONFIG_BLK_DEV_SR_VENDOR is not set 423# CONFIG_BLK_DEV_SR_VENDOR is not set
218CONFIG_CHR_DEV_SG=m 424CONFIG_CHR_DEV_SG=m
425# CONFIG_CHR_DEV_SCH is not set
219 426
220# 427#
221# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 428# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -225,26 +432,23 @@ CONFIG_SCSI_MULTI_LUN=y
225# CONFIG_SCSI_LOGGING is not set 432# CONFIG_SCSI_LOGGING is not set
226 433
227# 434#
228# SCSI Transport Attributes 435# SCSI Transports
229# 436#
230# CONFIG_SCSI_SPI_ATTRS is not set 437# CONFIG_SCSI_SPI_ATTRS is not set
231# CONFIG_SCSI_FC_ATTRS is not set 438# CONFIG_SCSI_FC_ATTRS is not set
232# CONFIG_SCSI_ISCSI_ATTRS is not set 439# CONFIG_SCSI_ISCSI_ATTRS is not set
440# CONFIG_SCSI_SAS_ATTRS is not set
441# CONFIG_SCSI_SAS_LIBSAS is not set
233 442
234# 443#
235# SCSI low-level drivers 444# SCSI low-level drivers
236# 445#
237# CONFIG_SCSI_SATA is not set 446# CONFIG_ISCSI_TCP is not set
238# CONFIG_SCSI_DEBUG is not set 447# CONFIG_SCSI_DEBUG is not set
239 448
240# 449#
241# PCMCIA SCSI adapter support 450# Serial ATA (prod) and Parallel ATA (experimental) drivers
242# 451#
243# CONFIG_PCMCIA_AHA152X is not set
244# CONFIG_PCMCIA_FDOMAIN is not set
245# CONFIG_PCMCIA_NINJA_SCSI is not set
246# CONFIG_PCMCIA_QLOGIC is not set
247# CONFIG_PCMCIA_SYM53C500 is not set
248 452
249# 453#
250# Multi-device support (RAID and LVM) 454# Multi-device support (RAID and LVM)
@@ -254,6 +458,7 @@ CONFIG_SCSI_MULTI_LUN=y
254# 458#
255# Fusion MPT device support 459# Fusion MPT device support
256# 460#
461# CONFIG_FUSION is not set
257 462
258# 463#
259# IEEE 1394 (FireWire) support 464# IEEE 1394 (FireWire) support
@@ -264,69 +469,8 @@ CONFIG_SCSI_MULTI_LUN=y
264# 469#
265 470
266# 471#
267# Networking support 472# Network device support
268#
269CONFIG_NET=y
270
271#
272# Networking options
273#
274CONFIG_PACKET=y
275# CONFIG_PACKET_MMAP is not set
276CONFIG_UNIX=y
277# CONFIG_NET_KEY is not set
278CONFIG_INET=y
279# CONFIG_IP_MULTICAST is not set
280# CONFIG_IP_ADVANCED_ROUTER is not set
281CONFIG_IP_PNP=y
282CONFIG_IP_PNP_DHCP=y
283# CONFIG_IP_PNP_BOOTP is not set
284# CONFIG_IP_PNP_RARP is not set
285# CONFIG_NET_IPIP is not set
286# CONFIG_NET_IPGRE is not set
287# CONFIG_ARPD is not set
288# CONFIG_SYN_COOKIES is not set
289# CONFIG_INET_AH is not set
290# CONFIG_INET_ESP is not set
291# CONFIG_INET_IPCOMP is not set
292# CONFIG_INET_TUNNEL is not set
293CONFIG_IP_TCPDIAG=y
294# CONFIG_IP_TCPDIAG_IPV6 is not set
295# CONFIG_IPV6 is not set
296# CONFIG_NETFILTER is not set
297
298#
299# SCTP Configuration (EXPERIMENTAL)
300#
301# CONFIG_IP_SCTP is not set
302# CONFIG_ATM is not set
303# CONFIG_BRIDGE is not set
304# CONFIG_VLAN_8021Q is not set
305# CONFIG_DECNET is not set
306# CONFIG_LLC2 is not set
307# CONFIG_IPX is not set
308# CONFIG_ATALK is not set
309# CONFIG_X25 is not set
310# CONFIG_LAPB is not set
311# CONFIG_NET_DIVERT is not set
312# CONFIG_ECONET is not set
313# CONFIG_WAN_ROUTER is not set
314
315#
316# QoS and/or fair queueing
317#
318# CONFIG_NET_SCHED is not set
319# CONFIG_NET_CLS_ROUTE is not set
320
321#
322# Network testing
323# 473#
324# CONFIG_NET_PKTGEN is not set
325# CONFIG_NETPOLL is not set
326# CONFIG_NET_POLL_CONTROLLER is not set
327# CONFIG_HAMRADIO is not set
328# CONFIG_IRDA is not set
329# CONFIG_BT is not set
330CONFIG_NETDEVICES=y 474CONFIG_NETDEVICES=y
331# CONFIG_DUMMY is not set 475# CONFIG_DUMMY is not set
332# CONFIG_BONDING is not set 476# CONFIG_BONDING is not set
@@ -334,6 +478,11 @@ CONFIG_NETDEVICES=y
334# CONFIG_TUN is not set 478# CONFIG_TUN is not set
335 479
336# 480#
481# PHY device support
482#
483# CONFIG_PHYLIB is not set
484
485#
337# Ethernet (10 or 100Mbit) 486# Ethernet (10 or 100Mbit)
338# 487#
339CONFIG_NET_ETHERNET=y 488CONFIG_NET_ETHERNET=y
@@ -359,11 +508,6 @@ CONFIG_SMC91X=y
359# CONFIG_NET_RADIO is not set 508# CONFIG_NET_RADIO is not set
360 509
361# 510#
362# PCMCIA network device support
363#
364# CONFIG_NET_PCMCIA is not set
365
366#
367# Wan interfaces 511# Wan interfaces
368# 512#
369# CONFIG_WAN is not set 513# CONFIG_WAN is not set
@@ -371,6 +515,8 @@ CONFIG_SMC91X=y
371# CONFIG_SLIP is not set 515# CONFIG_SLIP is not set
372# CONFIG_SHAPER is not set 516# CONFIG_SHAPER is not set
373# CONFIG_NETCONSOLE is not set 517# CONFIG_NETCONSOLE is not set
518# CONFIG_NETPOLL is not set
519# CONFIG_NET_POLL_CONTROLLER is not set
374 520
375# 521#
376# ISDN subsystem 522# ISDN subsystem
@@ -386,6 +532,7 @@ CONFIG_SMC91X=y
386# Input device support 532# Input device support
387# 533#
388CONFIG_INPUT=y 534CONFIG_INPUT=y
535# CONFIG_INPUT_FF_MEMLESS is not set
389 536
390# 537#
391# Userland interfaces 538# Userland interfaces
@@ -414,7 +561,6 @@ CONFIG_SERIO_SERPORT=y
414# CONFIG_SERIO_LIBPS2 is not set 561# CONFIG_SERIO_LIBPS2 is not set
415# CONFIG_SERIO_RAW is not set 562# CONFIG_SERIO_RAW is not set
416# CONFIG_GAMEPORT is not set 563# CONFIG_GAMEPORT is not set
417CONFIG_SOUND_GAMEPORT=y
418 564
419# 565#
420# Character devices 566# Character devices
@@ -422,6 +568,7 @@ CONFIG_SOUND_GAMEPORT=y
422CONFIG_VT=y 568CONFIG_VT=y
423CONFIG_VT_CONSOLE=y 569CONFIG_VT_CONSOLE=y
424CONFIG_HW_CONSOLE=y 570CONFIG_HW_CONSOLE=y
571# CONFIG_VT_HW_CONSOLE_BINDING is not set
425# CONFIG_SERIAL_NONSTANDARD is not set 572# CONFIG_SERIAL_NONSTANDARD is not set
426 573
427# 574#
@@ -450,8 +597,8 @@ CONFIG_LEGACY_PTY_COUNT=256
450# Watchdog Cards 597# Watchdog Cards
451# 598#
452# CONFIG_WATCHDOG is not set 599# CONFIG_WATCHDOG is not set
600CONFIG_HW_RANDOM=y
453# CONFIG_RTC is not set 601# CONFIG_RTC is not set
454# CONFIG_GEN_RTC is not set
455CONFIG_DS1302=y 602CONFIG_DS1302=y
456# CONFIG_DTLK is not set 603# CONFIG_DTLK is not set
457# CONFIG_R3964 is not set 604# CONFIG_R3964 is not set
@@ -459,17 +606,12 @@ CONFIG_DS1302=y
459# 606#
460# Ftape, the floppy tape device driver 607# Ftape, the floppy tape device driver
461# 608#
462# CONFIG_DRM is not set
463
464#
465# PCMCIA character devices
466#
467# CONFIG_SYNCLINK_CS is not set
468# CONFIG_RAW_DRIVER is not set 609# CONFIG_RAW_DRIVER is not set
469 610
470# 611#
471# TPM devices 612# TPM devices
472# 613#
614# CONFIG_TCG_TPM is not set
473 615
474# 616#
475# I2C support 617# I2C support
@@ -477,34 +619,51 @@ CONFIG_DS1302=y
477# CONFIG_I2C is not set 619# CONFIG_I2C is not set
478 620
479# 621#
622# SPI support
623#
624# CONFIG_SPI is not set
625# CONFIG_SPI_MASTER is not set
626
627#
480# Dallas's 1-wire bus 628# Dallas's 1-wire bus
481# 629#
482# CONFIG_W1 is not set 630# CONFIG_W1 is not set
483 631
484# 632#
485# Misc devices 633# Hardware Monitoring support
486# 634#
635CONFIG_HWMON=y
636# CONFIG_HWMON_VID is not set
637# CONFIG_SENSORS_ABITUGURU is not set
638# CONFIG_SENSORS_F71805F is not set
639# CONFIG_SENSORS_VT1211 is not set
640# CONFIG_HWMON_DEBUG_CHIP is not set
487 641
488# 642#
489# Multimedia devices 643# Multimedia devices
490# 644#
491CONFIG_VIDEO_DEV=y 645CONFIG_VIDEO_DEV=m
646CONFIG_VIDEO_V4L1=y
647CONFIG_VIDEO_V4L1_COMPAT=y
648CONFIG_VIDEO_V4L2=y
492 649
493# 650#
494# Video For Linux 651# Video Capture Adapters
495# 652#
496 653
497# 654#
498# Video Adapters 655# Video Capture Adapters
499# 656#
657# CONFIG_VIDEO_ADV_DEBUG is not set
658CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
659# CONFIG_VIDEO_VIVI is not set
500# CONFIG_VIDEO_CPIA is not set 660# CONFIG_VIDEO_CPIA is not set
501CONFIG_VIDEO_M32R_AR=y 661CONFIG_VIDEO_M32R_AR=m
502CONFIG_VIDEO_M32R_AR_M64278=y 662CONFIG_VIDEO_M32R_AR_M64278=m
503 663
504# 664#
505# Radio Adapters 665# Radio Adapters
506# 666#
507# CONFIG_RADIO_MAESTRO is not set
508 667
509# 668#
510# Digital Video Broadcasting Devices 669# Digital Video Broadcasting Devices
@@ -514,15 +673,16 @@ CONFIG_VIDEO_M32R_AR_M64278=y
514# 673#
515# Graphics support 674# Graphics support
516# 675#
676CONFIG_FIRMWARE_EDID=y
517CONFIG_FB=y 677CONFIG_FB=y
518# CONFIG_FB_CFB_FILLRECT is not set 678CONFIG_FB_CFB_FILLRECT=y
519# CONFIG_FB_CFB_COPYAREA is not set 679CONFIG_FB_CFB_COPYAREA=y
520# CONFIG_FB_CFB_IMAGEBLIT is not set 680CONFIG_FB_CFB_IMAGEBLIT=y
521# CONFIG_FB_SOFT_CURSOR is not set
522# CONFIG_FB_MACMODES is not set 681# CONFIG_FB_MACMODES is not set
682# CONFIG_FB_BACKLIGHT is not set
523# CONFIG_FB_MODE_HELPERS is not set 683# CONFIG_FB_MODE_HELPERS is not set
524# CONFIG_FB_TILEBLITTING is not set 684# CONFIG_FB_TILEBLITTING is not set
525# CONFIG_FB_S1D13XXX is not set 685CONFIG_FB_S1D13XXX=y
526# CONFIG_FB_VIRTUAL is not set 686# CONFIG_FB_VIRTUAL is not set
527 687
528# 688#
@@ -531,6 +691,7 @@ CONFIG_FB=y
531# CONFIG_VGA_CONSOLE is not set 691# CONFIG_VGA_CONSOLE is not set
532CONFIG_DUMMY_CONSOLE=y 692CONFIG_DUMMY_CONSOLE=y
533CONFIG_FRAMEBUFFER_CONSOLE=y 693CONFIG_FRAMEBUFFER_CONSOLE=y
694# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
534# CONFIG_FONTS is not set 695# CONFIG_FONTS is not set
535CONFIG_FONT_8x8=y 696CONFIG_FONT_8x8=y
536CONFIG_FONT_8x16=y 697CONFIG_FONT_8x16=y
@@ -542,6 +703,7 @@ CONFIG_LOGO=y
542CONFIG_LOGO_LINUX_MONO=y 703CONFIG_LOGO_LINUX_MONO=y
543CONFIG_LOGO_LINUX_VGA16=y 704CONFIG_LOGO_LINUX_VGA16=y
544CONFIG_LOGO_LINUX_CLUT224=y 705CONFIG_LOGO_LINUX_CLUT224=y
706CONFIG_LOGO_M32R_CLUT224=y
545# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 707# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
546 708
547# 709#
@@ -554,6 +716,11 @@ CONFIG_LOGO_LINUX_CLUT224=y
554# 716#
555# CONFIG_USB_ARCH_HAS_HCD is not set 717# CONFIG_USB_ARCH_HAS_HCD is not set
556# CONFIG_USB_ARCH_HAS_OHCI is not set 718# CONFIG_USB_ARCH_HAS_OHCI is not set
719# CONFIG_USB_ARCH_HAS_EHCI is not set
720
721#
722# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
723#
557 724
558# 725#
559# USB Gadget Support 726# USB Gadget Support
@@ -563,23 +730,62 @@ CONFIG_LOGO_LINUX_CLUT224=y
563# 730#
564# MMC/SD Card support 731# MMC/SD Card support
565# 732#
566# CONFIG_MMC is not set 733CONFIG_MMC=y
734CONFIG_MMC_DEBUG=y
735CONFIG_MMC_BLOCK=y
736# CONFIG_MMC_TIFM_SD is not set
737
738#
739# LED devices
740#
741# CONFIG_NEW_LEDS is not set
742
743#
744# LED drivers
745#
746
747#
748# LED Triggers
749#
567 750
568# 751#
569# InfiniBand support 752# InfiniBand support
570# 753#
571# CONFIG_INFINIBAND is not set 754
755#
756# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
757#
758
759#
760# Real Time Clock
761#
762# CONFIG_RTC_CLASS is not set
763
764#
765# DMA Engine support
766#
767# CONFIG_DMA_ENGINE is not set
768
769#
770# DMA Clients
771#
772
773#
774# DMA Devices
775#
572 776
573# 777#
574# File systems 778# File systems
575# 779#
576CONFIG_EXT2_FS=y 780CONFIG_EXT2_FS=y
577# CONFIG_EXT2_FS_XATTR is not set 781# CONFIG_EXT2_FS_XATTR is not set
578CONFIG_EXT3_FS=m 782# CONFIG_EXT2_FS_XIP is not set
783CONFIG_EXT3_FS=y
579CONFIG_EXT3_FS_XATTR=y 784CONFIG_EXT3_FS_XATTR=y
580# CONFIG_EXT3_FS_POSIX_ACL is not set 785# CONFIG_EXT3_FS_POSIX_ACL is not set
581# CONFIG_EXT3_FS_SECURITY is not set 786# CONFIG_EXT3_FS_SECURITY is not set
582CONFIG_JBD=m 787# CONFIG_EXT4DEV_FS is not set
788CONFIG_JBD=y
583CONFIG_JBD_DEBUG=y 789CONFIG_JBD_DEBUG=y
584CONFIG_FS_MBCACHE=y 790CONFIG_FS_MBCACHE=y
585CONFIG_REISERFS_FS=m 791CONFIG_REISERFS_FS=m
@@ -587,17 +793,19 @@ CONFIG_REISERFS_FS=m
587# CONFIG_REISERFS_PROC_INFO is not set 793# CONFIG_REISERFS_PROC_INFO is not set
588# CONFIG_REISERFS_FS_XATTR is not set 794# CONFIG_REISERFS_FS_XATTR is not set
589# CONFIG_JFS_FS is not set 795# CONFIG_JFS_FS is not set
590 796# CONFIG_FS_POSIX_ACL is not set
591#
592# XFS support
593#
594# CONFIG_XFS_FS is not set 797# CONFIG_XFS_FS is not set
798# CONFIG_GFS2_FS is not set
799# CONFIG_OCFS2_FS is not set
595# CONFIG_MINIX_FS is not set 800# CONFIG_MINIX_FS is not set
596# CONFIG_ROMFS_FS is not set 801# CONFIG_ROMFS_FS is not set
802CONFIG_INOTIFY=y
803CONFIG_INOTIFY_USER=y
597# CONFIG_QUOTA is not set 804# CONFIG_QUOTA is not set
598CONFIG_DNOTIFY=y 805CONFIG_DNOTIFY=y
599# CONFIG_AUTOFS_FS is not set 806# CONFIG_AUTOFS_FS is not set
600# CONFIG_AUTOFS4_FS is not set 807# CONFIG_AUTOFS4_FS is not set
808# CONFIG_FUSE_FS is not set
601 809
602# 810#
603# CD-ROM/DVD Filesystems 811# CD-ROM/DVD Filesystems
@@ -623,15 +831,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
623# 831#
624CONFIG_PROC_FS=y 832CONFIG_PROC_FS=y
625CONFIG_PROC_KCORE=y 833CONFIG_PROC_KCORE=y
834CONFIG_PROC_SYSCTL=y
626CONFIG_SYSFS=y 835CONFIG_SYSFS=y
627CONFIG_DEVFS_FS=y
628CONFIG_DEVFS_MOUNT=y
629# CONFIG_DEVFS_DEBUG is not set
630# CONFIG_DEVPTS_FS_XATTR is not set
631CONFIG_TMPFS=y 836CONFIG_TMPFS=y
632# CONFIG_TMPFS_XATTR is not set 837# CONFIG_TMPFS_POSIX_ACL is not set
633# CONFIG_HUGETLB_PAGE is not set 838# CONFIG_HUGETLB_PAGE is not set
634CONFIG_RAMFS=y 839CONFIG_RAMFS=y
840# CONFIG_CONFIGFS_FS is not set
635 841
636# 842#
637# Miscellaneous filesystems 843# Miscellaneous filesystems
@@ -643,6 +849,8 @@ CONFIG_RAMFS=y
643# CONFIG_BEFS_FS is not set 849# CONFIG_BEFS_FS is not set
644# CONFIG_BFS_FS is not set 850# CONFIG_BFS_FS is not set
645# CONFIG_EFS_FS is not set 851# CONFIG_EFS_FS is not set
852# CONFIG_JFFS_FS is not set
853# CONFIG_JFFS2_FS is not set
646# CONFIG_CRAMFS is not set 854# CONFIG_CRAMFS is not set
647# CONFIG_VXFS_FS is not set 855# CONFIG_VXFS_FS is not set
648# CONFIG_HPFS_FS is not set 856# CONFIG_HPFS_FS is not set
@@ -655,12 +863,14 @@ CONFIG_RAMFS=y
655# 863#
656CONFIG_NFS_FS=y 864CONFIG_NFS_FS=y
657CONFIG_NFS_V3=y 865CONFIG_NFS_V3=y
866# CONFIG_NFS_V3_ACL is not set
658# CONFIG_NFS_V4 is not set 867# CONFIG_NFS_V4 is not set
659# CONFIG_NFS_DIRECTIO is not set 868# CONFIG_NFS_DIRECTIO is not set
660# CONFIG_NFSD is not set 869# CONFIG_NFSD is not set
661CONFIG_ROOT_NFS=y 870CONFIG_ROOT_NFS=y
662CONFIG_LOCKD=y 871CONFIG_LOCKD=y
663CONFIG_LOCKD_V4=y 872CONFIG_LOCKD_V4=y
873CONFIG_NFS_COMMON=y
664CONFIG_SUNRPC=y 874CONFIG_SUNRPC=y
665# CONFIG_RPCSEC_GSS_KRB5 is not set 875# CONFIG_RPCSEC_GSS_KRB5 is not set
666# CONFIG_RPCSEC_GSS_SPKM3 is not set 876# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -669,6 +879,7 @@ CONFIG_SUNRPC=y
669# CONFIG_NCP_FS is not set 879# CONFIG_NCP_FS is not set
670# CONFIG_CODA_FS is not set 880# CONFIG_CODA_FS is not set
671# CONFIG_AFS_FS is not set 881# CONFIG_AFS_FS is not set
882# CONFIG_9P_FS is not set
672 883
673# 884#
674# Partition Types 885# Partition Types
@@ -723,16 +934,23 @@ CONFIG_NLS_DEFAULT="iso8859-1"
723# 934#
724# Profiling support 935# Profiling support
725# 936#
726# CONFIG_PROFILING is not set 937CONFIG_PROFILING=y
938CONFIG_OPROFILE=y
727 939
728# 940#
729# Kernel hacking 941# Kernel hacking
730# 942#
731# CONFIG_PRINTK_TIME is not set 943# CONFIG_PRINTK_TIME is not set
944CONFIG_ENABLE_MUST_CHECK=y
945# CONFIG_MAGIC_SYSRQ is not set
946# CONFIG_UNUSED_SYMBOLS is not set
732# CONFIG_DEBUG_KERNEL is not set 947# CONFIG_DEBUG_KERNEL is not set
733CONFIG_LOG_BUF_SHIFT=14 948CONFIG_LOG_BUF_SHIFT=15
734# CONFIG_DEBUG_BUGVERBOSE is not set 949# CONFIG_DEBUG_BUGVERBOSE is not set
950# CONFIG_DEBUG_FS is not set
735# CONFIG_FRAME_POINTER is not set 951# CONFIG_FRAME_POINTER is not set
952# CONFIG_UNWIND_INFO is not set
953# CONFIG_HEADERS_CHECK is not set
736 954
737# 955#
738# Security options 956# Security options
@@ -746,12 +964,9 @@ CONFIG_LOG_BUF_SHIFT=14
746# CONFIG_CRYPTO is not set 964# CONFIG_CRYPTO is not set
747 965
748# 966#
749# Hardware crypto devices
750#
751
752#
753# Library routines 967# Library routines
754# 968#
755# CONFIG_CRC_CCITT is not set 969# CONFIG_CRC_CCITT is not set
970# CONFIG_CRC16 is not set
756CONFIG_CRC32=y 971CONFIG_CRC32=y
757# CONFIG_LIBCRC32C is not set 972# CONFIG_LIBCRC32C is not set
diff --git a/arch/m32r/kernel/head.S b/arch/m32r/kernel/head.S
index 0d3c8ee0e03d..dab7436d7bbe 100644
--- a/arch/m32r/kernel/head.S
+++ b/arch/m32r/kernel/head.S
@@ -7,8 +7,6 @@
7 * Hitoshi Yamamoto 7 * Hitoshi Yamamoto
8 */ 8 */
9 9
10/* $Id$ */
11
12#include <linux/init.h> 10#include <linux/init.h>
13__INIT 11__INIT
14__INITDATA 12__INITDATA
diff --git a/arch/m32r/kernel/process.c b/arch/m32r/kernel/process.c
index 44cbe0ce0f8f..a689e2978b6e 100644
--- a/arch/m32r/kernel/process.c
+++ b/arch/m32r/kernel/process.c
@@ -174,7 +174,7 @@ void show_regs(struct pt_regs * regs)
174 regs->acc1h, regs->acc1l); 174 regs->acc1h, regs->acc1l);
175#elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R) 175#elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R)
176 printk("ACCH[%08lx]:ACCL[%08lx]\n", \ 176 printk("ACCH[%08lx]:ACCL[%08lx]\n", \
177 regs->acch, regs->accl); 177 regs->acc0h, regs->acc0l);
178#else 178#else
179#error unknown isa configuration 179#error unknown isa configuration
180#endif 180#endif
diff --git a/arch/m32r/kernel/setup.c b/arch/m32r/kernel/setup.c
index 936205f7aba0..d64814385d70 100644
--- a/arch/m32r/kernel/setup.c
+++ b/arch/m32r/kernel/setup.c
@@ -64,7 +64,7 @@ struct screen_info screen_info = {
64 64
65extern int root_mountflags; 65extern int root_mountflags;
66 66
67static char command_line[COMMAND_LINE_SIZE]; 67static char __initdata command_line[COMMAND_LINE_SIZE];
68 68
69static struct resource data_resource = { 69static struct resource data_resource = {
70 .name = "Kernel data", 70 .name = "Kernel data",
@@ -95,8 +95,8 @@ static __inline__ void parse_mem_cmdline(char ** cmdline_p)
95 int usermem = 0; 95 int usermem = 0;
96 96
97 /* Save unparsed command line copy for /proc/cmdline */ 97 /* Save unparsed command line copy for /proc/cmdline */
98 memcpy(saved_command_line, COMMAND_LINE, COMMAND_LINE_SIZE); 98 memcpy(boot_command_line, COMMAND_LINE, COMMAND_LINE_SIZE);
99 saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; 99 boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
100 100
101 memory_start = (unsigned long)CONFIG_MEMORY_START+PAGE_OFFSET; 101 memory_start = (unsigned long)CONFIG_MEMORY_START+PAGE_OFFSET;
102 memory_end = memory_start+(unsigned long)CONFIG_MEMORY_SIZE; 102 memory_end = memory_start+(unsigned long)CONFIG_MEMORY_SIZE;
diff --git a/arch/m32r/kernel/signal.c b/arch/m32r/kernel/signal.c
index 092ea86bb079..4b156054baa6 100644
--- a/arch/m32r/kernel/signal.c
+++ b/arch/m32r/kernel/signal.c
@@ -109,19 +109,10 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc,
109 COPY(r10); 109 COPY(r10);
110 COPY(r11); 110 COPY(r11);
111 COPY(r12); 111 COPY(r12);
112#if defined(CONFIG_ISA_M32R2) && defined(CONFIG_ISA_DSP_LEVEL2)
113 COPY(acc0h); 112 COPY(acc0h);
114 COPY(acc0l); 113 COPY(acc0l);
115 COPY(acc1h); 114 COPY(acc1h); /* ISA_DSP_LEVEL2 only */
116 COPY(acc1l); 115 COPY(acc1l); /* ISA_DSP_LEVEL2 only */
117#elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R)
118 COPY(acch);
119 COPY(accl);
120 COPY(dummy_acc1h);
121 COPY(dummy_acc1l);
122#else
123#error unknown isa configuration
124#endif
125 COPY(psw); 116 COPY(psw);
126 COPY(bpc); 117 COPY(bpc);
127 COPY(bbpsw); 118 COPY(bbpsw);
@@ -196,19 +187,10 @@ setup_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs,
196 COPY(r10); 187 COPY(r10);
197 COPY(r11); 188 COPY(r11);
198 COPY(r12); 189 COPY(r12);
199#if defined(CONFIG_ISA_M32R2) && defined(CONFIG_ISA_DSP_LEVEL2)
200 COPY(acc0h); 190 COPY(acc0h);
201 COPY(acc0l); 191 COPY(acc0l);
202 COPY(acc1h); 192 COPY(acc1h); /* ISA_DSP_LEVEL2 only */
203 COPY(acc1l); 193 COPY(acc1l); /* ISA_DSP_LEVEL2 only */
204#elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R)
205 COPY(acch);
206 COPY(accl);
207 COPY(dummy_acc1h);
208 COPY(dummy_acc1l);
209#else
210#error unknown isa configuration
211#endif
212 COPY(psw); 194 COPY(psw);
213 COPY(bpc); 195 COPY(bpc);
214 COPY(bbpsw); 196 COPY(bbpsw);
diff --git a/arch/m32r/kernel/time.c b/arch/m32r/kernel/time.c
index a09038282c78..3858c9f39ba5 100644
--- a/arch/m32r/kernel/time.c
+++ b/arch/m32r/kernel/time.c
@@ -286,11 +286,3 @@ void __init time_init(void)
286#error no chip configuration 286#error no chip configuration
287#endif 287#endif
288} 288}
289
290/*
291 * Scheduler clock - returns current time in nanosec units.
292 */
293unsigned long long sched_clock(void)
294{
295 return (unsigned long long)jiffies * (1000000000 / HZ);
296}
diff --git a/arch/m32r/kernel/vmlinux.lds.S b/arch/m32r/kernel/vmlinux.lds.S
index 358b9cee2c65..439cc257cd1d 100644
--- a/arch/m32r/kernel/vmlinux.lds.S
+++ b/arch/m32r/kernel/vmlinux.lds.S
@@ -6,12 +6,15 @@
6#include <asm/page.h> 6#include <asm/page.h>
7 7
8OUTPUT_ARCH(m32r) 8OUTPUT_ARCH(m32r)
9ENTRY(startup_32)
10#if defined(__LITTLE_ENDIAN__) 9#if defined(__LITTLE_ENDIAN__)
11 jiffies = jiffies_64; 10 jiffies = jiffies_64;
12#else 11#else
13 jiffies = jiffies_64 + 4; 12 jiffies = jiffies_64 + 4;
14#endif 13#endif
14
15kernel_entry = boot - 0x80000000;
16ENTRY(kernel_entry)
17
15SECTIONS 18SECTIONS
16{ 19{
17 . = CONFIG_MEMORY_START + __PAGE_OFFSET; 20 . = CONFIG_MEMORY_START + __PAGE_OFFSET;
@@ -99,10 +102,14 @@ SECTIONS
99 from .altinstructions and .eh_frame */ 102 from .altinstructions and .eh_frame */
100 .exit.text : { *(.exit.text) } 103 .exit.text : { *(.exit.text) }
101 .exit.data : { *(.exit.data) } 104 .exit.data : { *(.exit.data) }
105
106#ifdef CONFIG_BLK_DEV_INITRD
102 . = ALIGN(4096); 107 . = ALIGN(4096);
103 __initramfs_start = .; 108 __initramfs_start = .;
104 .init.ramfs : { *(.init.ramfs) } 109 .init.ramfs : { *(.init.ramfs) }
105 __initramfs_end = .; 110 __initramfs_end = .;
111#endif
112
106 . = ALIGN(32); 113 . = ALIGN(32);
107 __per_cpu_start = .; 114 __per_cpu_start = .;
108 .data.percpu : { *(.data.percpu) } 115 .data.percpu : { *(.data.percpu) }
diff --git a/arch/m32r/lib/ashxdi3.S b/arch/m32r/lib/ashxdi3.S
index 107594b65d58..7fc0c19801ba 100644
--- a/arch/m32r/lib/ashxdi3.S
+++ b/arch/m32r/lib/ashxdi3.S
@@ -4,8 +4,6 @@
4 * Copyright (C) 2001,2002 Hiroyuki Kondo, and Hirokazu Takata 4 * Copyright (C) 2001,2002 Hiroyuki Kondo, and Hirokazu Takata
5 * 5 *
6 */ 6 */
7/* $Id$ */
8
9 7
10; 8;
11; input (r0,r1) src 9; input (r0,r1) src
@@ -293,4 +291,3 @@ __lshrdi3:
293#endif /* not CONFIG_ISA_DUAL_ISSUE */ 291#endif /* not CONFIG_ISA_DUAL_ISSUE */
294 292
295 .end 293 .end
296
diff --git a/arch/m32r/lib/checksum.S b/arch/m32r/lib/checksum.S
index cfbe00e5184a..0af0360c76d9 100644
--- a/arch/m32r/lib/checksum.S
+++ b/arch/m32r/lib/checksum.S
@@ -25,8 +25,6 @@
25 * as published by the Free Software Foundation; either version 25 * as published by the Free Software Foundation; either version
26 * 2 of the License, or (at your option) any later version. 26 * 2 of the License, or (at your option) any later version.
27 */ 27 */
28/* $Id$ */
29
30 28
31#include <linux/linkage.h> 29#include <linux/linkage.h>
32#include <asm/assembler.h> 30#include <asm/assembler.h>
@@ -319,3 +317,4 @@ ENTRY(csum_partial_copy_generic)
319 nop 317 nop
320 nop 318 nop
321 319
320 .end
diff --git a/arch/m32r/lib/delay.c b/arch/m32r/lib/delay.c
index 06382a38c318..59bfc34e0d9f 100644
--- a/arch/m32r/lib/delay.c
+++ b/arch/m32r/lib/delay.c
@@ -5,8 +5,6 @@
5 * Copyright (c) 2004 Hirokazu Takata 5 * Copyright (c) 2004 Hirokazu Takata
6 */ 6 */
7 7
8/* $Id$ */
9
10#include <linux/param.h> 8#include <linux/param.h>
11#ifdef CONFIG_SMP 9#ifdef CONFIG_SMP
12#include <linux/sched.h> 10#include <linux/sched.h>
diff --git a/arch/m32r/lib/memcpy.S b/arch/m32r/lib/memcpy.S
index 2089a215314e..05987cd639ef 100644
--- a/arch/m32r/lib/memcpy.S
+++ b/arch/m32r/lib/memcpy.S
@@ -10,8 +10,6 @@
10 * src: r1 10 * src: r1
11 * n : r2 11 * n : r2
12 */ 12 */
13/* $Id$ */
14
15 13
16 .text 14 .text
17#include <linux/linkage.h> 15#include <linux/linkage.h>
diff --git a/arch/m32r/lib/memset.S b/arch/m32r/lib/memset.S
index b47fa3537aa4..2b2831a37927 100644
--- a/arch/m32r/lib/memset.S
+++ b/arch/m32r/lib/memset.S
@@ -12,8 +12,6 @@
12 * ret: r0 12 * ret: r0
13 * 13 *
14 */ 14 */
15/* $Id$ */
16
17 15
18 .text 16 .text
19 .global memset 17 .global memset
diff --git a/arch/m32r/lib/strlen.S b/arch/m32r/lib/strlen.S
index 5f41aacd7b3e..916de9e8f801 100644
--- a/arch/m32r/lib/strlen.S
+++ b/arch/m32r/lib/strlen.S
@@ -6,8 +6,6 @@
6 * size_t strlen(const char *s); 6 * size_t strlen(const char *s);
7 * 7 *
8 */ 8 */
9/* $Id$ */
10
11 9
12#include <linux/linkage.h> 10#include <linux/linkage.h>
13#include <asm/assembler.h> 11#include <asm/assembler.h>
diff --git a/arch/m32r/m32104ut/defconfig.m32104ut b/arch/m32r/m32104ut/defconfig.m32104ut
index 454de336803a..7b68fe8d921e 100644
--- a/arch/m32r/m32104ut/defconfig.m32104ut
+++ b/arch/m32r/m32104ut/defconfig.m32104ut
@@ -1,20 +1,20 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14 3# Linux kernel version: 2.6.19
4# Wed Nov 9 16:04:51 2005 4# Wed Dec 13 17:22:20 2006
5# 5#
6CONFIG_M32R=y 6CONFIG_M32R=y
7# CONFIG_UID16 is not set
8CONFIG_GENERIC_ISA_DMA=y 7CONFIG_GENERIC_ISA_DMA=y
9CONFIG_GENERIC_HARDIRQS=y 8CONFIG_GENERIC_HARDIRQS=y
10CONFIG_GENERIC_IRQ_PROBE=y 9CONFIG_GENERIC_IRQ_PROBE=y
10CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11 11
12# 12#
13# Code maturity level options 13# Code maturity level options
14# 14#
15CONFIG_EXPERIMENTAL=y 15CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_BROKEN_ON_SMP=y 16CONFIG_BROKEN_ON_SMP=y
17CONFIG_LOCK_KERNEL=y
18CONFIG_INIT_ENV_ARG_LIMIT=32 18CONFIG_INIT_ENV_ARG_LIMIT=32
19 19
20# 20#
@@ -22,33 +22,66 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
22# 22#
23CONFIG_LOCALVERSION="" 23CONFIG_LOCALVERSION=""
24CONFIG_LOCALVERSION_AUTO=y 24CONFIG_LOCALVERSION_AUTO=y
25CONFIG_SYSVIPC=y
26# CONFIG_IPC_NS is not set
25# CONFIG_POSIX_MQUEUE is not set 27# CONFIG_POSIX_MQUEUE is not set
26# CONFIG_BSD_PROCESS_ACCT is not set 28# CONFIG_BSD_PROCESS_ACCT is not set
27CONFIG_SYSCTL=y 29# CONFIG_TASKSTATS is not set
30# CONFIG_UTS_NS is not set
28# CONFIG_AUDIT is not set 31# CONFIG_AUDIT is not set
29CONFIG_HOTPLUG=y 32CONFIG_IKCONFIG=y
30# CONFIG_KOBJECT_UEVENT is not set 33CONFIG_IKCONFIG_PROC=y
31# CONFIG_IKCONFIG is not set 34CONFIG_SYSFS_DEPRECATED=y
35# CONFIG_RELAY is not set
32CONFIG_INITRAMFS_SOURCE="" 36CONFIG_INITRAMFS_SOURCE=""
33CONFIG_EMBEDDED=y 37CONFIG_CC_OPTIMIZE_FOR_SIZE=y
34# CONFIG_KALLSYMS is not set 38CONFIG_SYSCTL=y
39# CONFIG_EMBEDDED is not set
40CONFIG_SYSCTL_SYSCALL=y
41CONFIG_KALLSYMS=y
42# CONFIG_KALLSYMS_EXTRA_PASS is not set
43CONFIG_HOTPLUG=y
35CONFIG_PRINTK=y 44CONFIG_PRINTK=y
36CONFIG_BUG=y 45CONFIG_BUG=y
46CONFIG_ELF_CORE=y
37CONFIG_BASE_FULL=y 47CONFIG_BASE_FULL=y
38# CONFIG_FUTEX is not set 48CONFIG_FUTEX=y
39# CONFIG_EPOLL is not set 49CONFIG_EPOLL=y
40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 50CONFIG_SLAB=y
41CONFIG_CC_ALIGN_FUNCTIONS=0 51CONFIG_VM_EVENT_COUNTERS=y
42CONFIG_CC_ALIGN_LABELS=0 52CONFIG_RT_MUTEXES=y
43CONFIG_CC_ALIGN_LOOPS=0
44CONFIG_CC_ALIGN_JUMPS=0
45CONFIG_TINY_SHMEM=y 53CONFIG_TINY_SHMEM=y
46CONFIG_BASE_SMALL=0 54CONFIG_BASE_SMALL=0
55# CONFIG_SLOB is not set
47 56
48# 57#
49# Loadable module support 58# Loadable module support
50# 59#
51# CONFIG_MODULES is not set 60CONFIG_MODULES=y
61CONFIG_MODULE_UNLOAD=y
62CONFIG_MODULE_FORCE_UNLOAD=y
63# CONFIG_MODVERSIONS is not set
64# CONFIG_MODULE_SRCVERSION_ALL is not set
65CONFIG_KMOD=y
66
67#
68# Block layer
69#
70CONFIG_BLOCK=y
71# CONFIG_BLK_DEV_IO_TRACE is not set
72
73#
74# IO Schedulers
75#
76CONFIG_IOSCHED_NOOP=y
77CONFIG_IOSCHED_AS=y
78CONFIG_IOSCHED_DEADLINE=y
79CONFIG_IOSCHED_CFQ=y
80CONFIG_DEFAULT_AS=y
81# CONFIG_DEFAULT_DEADLINE is not set
82# CONFIG_DEFAULT_CFQ is not set
83# CONFIG_DEFAULT_NOOP is not set
84CONFIG_DEFAULT_IOSCHED="anticipatory"
52 85
53# 86#
54# Processor type and features 87# Processor type and features
@@ -70,40 +103,40 @@ CONFIG_ISA_M32R=y
70CONFIG_BUS_CLOCK=54000000 103CONFIG_BUS_CLOCK=54000000
71CONFIG_TIMER_DIVIDE=128 104CONFIG_TIMER_DIVIDE=128
72# CONFIG_CPU_LITTLE_ENDIAN is not set 105# CONFIG_CPU_LITTLE_ENDIAN is not set
73CONFIG_MEMORY_START=04000000 106CONFIG_MEMORY_START=0x04000000
74CONFIG_MEMORY_SIZE=01000000 107CONFIG_MEMORY_SIZE=0x01000000
75CONFIG_NOHIGHMEM=y 108CONFIG_NOHIGHMEM=y
76# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set 109CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
77CONFIG_SELECT_MEMORY_MODEL=y 110CONFIG_SELECT_MEMORY_MODEL=y
78CONFIG_FLATMEM_MANUAL=y 111# CONFIG_FLATMEM_MANUAL is not set
79# CONFIG_DISCONTIGMEM_MANUAL is not set 112CONFIG_DISCONTIGMEM_MANUAL=y
80# CONFIG_SPARSEMEM_MANUAL is not set 113# CONFIG_SPARSEMEM_MANUAL is not set
81CONFIG_FLATMEM=y 114CONFIG_DISCONTIGMEM=y
82CONFIG_FLAT_NODE_MEM_MAP=y 115CONFIG_FLAT_NODE_MEM_MAP=y
116CONFIG_NEED_MULTIPLE_NODES=y
83# CONFIG_SPARSEMEM_STATIC is not set 117# CONFIG_SPARSEMEM_STATIC is not set
118CONFIG_SPLIT_PTLOCK_CPUS=4
119# CONFIG_RESOURCES_64BIT is not set
120CONFIG_IRAM_START=0x00700000
121CONFIG_IRAM_SIZE=0x00010000
84CONFIG_RWSEM_GENERIC_SPINLOCK=y 122CONFIG_RWSEM_GENERIC_SPINLOCK=y
85# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 123# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
124CONFIG_GENERIC_FIND_NEXT_BIT=y
125CONFIG_GENERIC_HWEIGHT=y
86CONFIG_GENERIC_CALIBRATE_DELAY=y 126CONFIG_GENERIC_CALIBRATE_DELAY=y
87# CONFIG_PREEMPT is not set 127CONFIG_PREEMPT=y
88# CONFIG_SMP is not set 128# CONFIG_SMP is not set
129CONFIG_NODES_SHIFT=1
89 130
90# 131#
91# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 132# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
92# 133#
93# CONFIG_ISA is not set 134CONFIG_ISA=y
94 135
95# 136#
96# PCCARD (PCMCIA/CardBus) support 137# PCCARD (PCMCIA/CardBus) support
97# 138#
98CONFIG_PCCARD=y 139# CONFIG_PCCARD is not set
99# CONFIG_PCMCIA_DEBUG is not set
100CONFIG_PCMCIA=y
101CONFIG_PCMCIA_LOAD_CIS=y
102CONFIG_PCMCIA_IOCTL=y
103
104#
105# PC-card bridges
106#
107 140
108# 141#
109# PCI Hotplug Support 142# PCI Hotplug Support
@@ -112,10 +145,8 @@ CONFIG_PCMCIA_IOCTL=y
112# 145#
113# Executable file formats 146# Executable file formats
114# 147#
115CONFIG_BINFMT_FLAT=y 148# CONFIG_BINFMT_FLAT is not set
116# CONFIG_BINFMT_ZFLAT is not set 149CONFIG_BINFMT_MISC=y
117# CONFIG_BINFMT_SHARED_FLAT is not set
118# CONFIG_BINFMT_MISC is not set
119 150
120# 151#
121# Networking 152# Networking
@@ -125,17 +156,19 @@ CONFIG_NET=y
125# 156#
126# Networking options 157# Networking options
127# 158#
128# CONFIG_PACKET is not set 159# CONFIG_NETDEBUG is not set
160CONFIG_PACKET=y
161# CONFIG_PACKET_MMAP is not set
129CONFIG_UNIX=y 162CONFIG_UNIX=y
163CONFIG_XFRM=y
164# CONFIG_XFRM_USER is not set
165# CONFIG_XFRM_SUB_POLICY is not set
130# CONFIG_NET_KEY is not set 166# CONFIG_NET_KEY is not set
131CONFIG_INET=y 167CONFIG_INET=y
132# CONFIG_IP_MULTICAST is not set 168# CONFIG_IP_MULTICAST is not set
133# CONFIG_IP_ADVANCED_ROUTER is not set 169# CONFIG_IP_ADVANCED_ROUTER is not set
134CONFIG_IP_FIB_HASH=y 170CONFIG_IP_FIB_HASH=y
135CONFIG_IP_PNP=y 171# CONFIG_IP_PNP is not set
136CONFIG_IP_PNP_DHCP=y
137# CONFIG_IP_PNP_BOOTP is not set
138# CONFIG_IP_PNP_RARP is not set
139# CONFIG_NET_IPIP is not set 172# CONFIG_NET_IPIP is not set
140# CONFIG_NET_IPGRE is not set 173# CONFIG_NET_IPGRE is not set
141# CONFIG_ARPD is not set 174# CONFIG_ARPD is not set
@@ -143,13 +176,87 @@ CONFIG_IP_PNP_DHCP=y
143# CONFIG_INET_AH is not set 176# CONFIG_INET_AH is not set
144# CONFIG_INET_ESP is not set 177# CONFIG_INET_ESP is not set
145# CONFIG_INET_IPCOMP is not set 178# CONFIG_INET_IPCOMP is not set
179# CONFIG_INET_XFRM_TUNNEL is not set
146# CONFIG_INET_TUNNEL is not set 180# CONFIG_INET_TUNNEL is not set
181CONFIG_INET_XFRM_MODE_TRANSPORT=y
182CONFIG_INET_XFRM_MODE_TUNNEL=y
183CONFIG_INET_XFRM_MODE_BEET=y
147CONFIG_INET_DIAG=y 184CONFIG_INET_DIAG=y
148CONFIG_INET_TCP_DIAG=y 185CONFIG_INET_TCP_DIAG=y
149# CONFIG_TCP_CONG_ADVANCED is not set 186# CONFIG_TCP_CONG_ADVANCED is not set
150CONFIG_TCP_CONG_BIC=y 187CONFIG_TCP_CONG_CUBIC=y
188CONFIG_DEFAULT_TCP_CONG="cubic"
189# CONFIG_TCP_MD5SIG is not set
190
191#
192# IP: Virtual Server Configuration
193#
194# CONFIG_IP_VS is not set
151# CONFIG_IPV6 is not set 195# CONFIG_IPV6 is not set
152# CONFIG_NETFILTER is not set 196# CONFIG_INET6_XFRM_TUNNEL is not set
197# CONFIG_INET6_TUNNEL is not set
198# CONFIG_NETWORK_SECMARK is not set
199CONFIG_NETFILTER=y
200# CONFIG_NETFILTER_DEBUG is not set
201
202#
203# Core Netfilter Configuration
204#
205CONFIG_NETFILTER_NETLINK=m
206CONFIG_NETFILTER_NETLINK_QUEUE=m
207CONFIG_NETFILTER_NETLINK_LOG=m
208# CONFIG_NF_CONNTRACK_ENABLED is not set
209CONFIG_NETFILTER_XTABLES=m
210CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
211# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
212CONFIG_NETFILTER_XT_TARGET_MARK=m
213CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
214# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
215CONFIG_NETFILTER_XT_MATCH_COMMENT=m
216CONFIG_NETFILTER_XT_MATCH_DCCP=m
217# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
218# CONFIG_NETFILTER_XT_MATCH_ESP is not set
219CONFIG_NETFILTER_XT_MATCH_LENGTH=m
220CONFIG_NETFILTER_XT_MATCH_LIMIT=m
221CONFIG_NETFILTER_XT_MATCH_MAC=m
222CONFIG_NETFILTER_XT_MATCH_MARK=m
223# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
224# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
225CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
226# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
227CONFIG_NETFILTER_XT_MATCH_REALM=m
228CONFIG_NETFILTER_XT_MATCH_SCTP=m
229# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
230CONFIG_NETFILTER_XT_MATCH_STRING=m
231CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
232# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
233
234#
235# IP: Netfilter Configuration
236#
237CONFIG_IP_NF_QUEUE=m
238CONFIG_IP_NF_IPTABLES=m
239CONFIG_IP_NF_MATCH_IPRANGE=m
240CONFIG_IP_NF_MATCH_TOS=m
241CONFIG_IP_NF_MATCH_RECENT=m
242CONFIG_IP_NF_MATCH_ECN=m
243# CONFIG_IP_NF_MATCH_AH is not set
244CONFIG_IP_NF_MATCH_TTL=m
245CONFIG_IP_NF_MATCH_OWNER=m
246CONFIG_IP_NF_MATCH_ADDRTYPE=m
247CONFIG_IP_NF_FILTER=m
248CONFIG_IP_NF_TARGET_REJECT=m
249CONFIG_IP_NF_TARGET_LOG=m
250CONFIG_IP_NF_TARGET_ULOG=m
251CONFIG_IP_NF_TARGET_TCPMSS=m
252CONFIG_IP_NF_MANGLE=m
253CONFIG_IP_NF_TARGET_TOS=m
254CONFIG_IP_NF_TARGET_ECN=m
255CONFIG_IP_NF_TARGET_TTL=m
256CONFIG_IP_NF_RAW=m
257CONFIG_IP_NF_ARPTABLES=m
258CONFIG_IP_NF_ARPFILTER=m
259CONFIG_IP_NF_ARP_MANGLE=m
153 260
154# 261#
155# DCCP Configuration (EXPERIMENTAL) 262# DCCP Configuration (EXPERIMENTAL)
@@ -160,6 +267,11 @@ CONFIG_TCP_CONG_BIC=y
160# SCTP Configuration (EXPERIMENTAL) 267# SCTP Configuration (EXPERIMENTAL)
161# 268#
162# CONFIG_IP_SCTP is not set 269# CONFIG_IP_SCTP is not set
270
271#
272# TIPC Configuration (EXPERIMENTAL)
273#
274# CONFIG_TIPC is not set
163# CONFIG_ATM is not set 275# CONFIG_ATM is not set
164# CONFIG_BRIDGE is not set 276# CONFIG_BRIDGE is not set
165# CONFIG_VLAN_8021Q is not set 277# CONFIG_VLAN_8021Q is not set
@@ -169,11 +281,14 @@ CONFIG_TCP_CONG_BIC=y
169# CONFIG_ATALK is not set 281# CONFIG_ATALK is not set
170# CONFIG_X25 is not set 282# CONFIG_X25 is not set
171# CONFIG_LAPB is not set 283# CONFIG_LAPB is not set
172# CONFIG_NET_DIVERT is not set
173# CONFIG_ECONET is not set 284# CONFIG_ECONET is not set
174# CONFIG_WAN_ROUTER is not set 285# CONFIG_WAN_ROUTER is not set
286
287#
288# QoS and/or fair queueing
289#
175# CONFIG_NET_SCHED is not set 290# CONFIG_NET_SCHED is not set
176# CONFIG_NET_CLS_ROUTE is not set 291CONFIG_NET_CLS_ROUTE=y
177 292
178# 293#
179# Network testing 294# Network testing
@@ -193,8 +308,8 @@ CONFIG_TCP_CONG_BIC=y
193# 308#
194CONFIG_STANDALONE=y 309CONFIG_STANDALONE=y
195CONFIG_PREVENT_FIRMWARE_BUILD=y 310CONFIG_PREVENT_FIRMWARE_BUILD=y
196CONFIG_FW_LOADER=y 311# CONFIG_FW_LOADER is not set
197# CONFIG_DEBUG_DRIVER is not set 312# CONFIG_SYS_HYPERVISOR is not set
198 313
199# 314#
200# Connector - unified userspace <-> kernelspace linker 315# Connector - unified userspace <-> kernelspace linker
@@ -209,11 +324,21 @@ CONFIG_FW_LOADER=y
209# 324#
210# Parallel port support 325# Parallel port support
211# 326#
212# CONFIG_PARPORT is not set 327CONFIG_PARPORT=m
328# CONFIG_PARPORT_GSC is not set
329# CONFIG_PARPORT_AX88796 is not set
330CONFIG_PARPORT_1284=y
213 331
214# 332#
215# Plug and Play support 333# Plug and Play support
216# 334#
335CONFIG_PNP=y
336# CONFIG_PNP_DEBUG is not set
337
338#
339# Protocols
340#
341CONFIG_ISAPNP=y
217 342
218# 343#
219# Block devices 344# Block devices
@@ -221,37 +346,130 @@ CONFIG_FW_LOADER=y
221# CONFIG_BLK_DEV_COW_COMMON is not set 346# CONFIG_BLK_DEV_COW_COMMON is not set
222CONFIG_BLK_DEV_LOOP=y 347CONFIG_BLK_DEV_LOOP=y
223# CONFIG_BLK_DEV_CRYPTOLOOP is not set 348# CONFIG_BLK_DEV_CRYPTOLOOP is not set
224CONFIG_BLK_DEV_NBD=y 349CONFIG_BLK_DEV_NBD=m
225CONFIG_BLK_DEV_RAM=y 350# CONFIG_BLK_DEV_RAM is not set
226CONFIG_BLK_DEV_RAM_COUNT=16 351# CONFIG_BLK_DEV_INITRD is not set
227CONFIG_BLK_DEV_RAM_SIZE=4096 352CONFIG_CDROM_PKTCDVD=m
228CONFIG_BLK_DEV_INITRD=y 353CONFIG_CDROM_PKTCDVD_BUFFERS=8
229# CONFIG_CDROM_PKTCDVD is not set 354CONFIG_CDROM_PKTCDVD_WCACHE=y
355# CONFIG_ATA_OVER_ETH is not set
230 356
231# 357#
232# IO Schedulers 358# Misc devices
233# 359#
234CONFIG_IOSCHED_NOOP=y 360# CONFIG_TIFM_CORE is not set
235# CONFIG_IOSCHED_AS is not set
236# CONFIG_IOSCHED_DEADLINE is not set
237# CONFIG_IOSCHED_CFQ is not set
238# CONFIG_ATA_OVER_ETH is not set
239 361
240# 362#
241# ATA/ATAPI/MFM/RLL support 363# ATA/ATAPI/MFM/RLL support
242# 364#
243# CONFIG_IDE is not set 365CONFIG_IDE=y
366CONFIG_BLK_DEV_IDE=y
367
368#
369# Please see Documentation/ide.txt for help/info on IDE drives
370#
371# CONFIG_BLK_DEV_IDE_SATA is not set
372CONFIG_BLK_DEV_IDEDISK=y
373# CONFIG_IDEDISK_MULTI_MODE is not set
374CONFIG_BLK_DEV_IDECD=y
375# CONFIG_BLK_DEV_IDETAPE is not set
376# CONFIG_BLK_DEV_IDEFLOPPY is not set
377# CONFIG_BLK_DEV_IDESCSI is not set
378# CONFIG_IDE_TASK_IOCTL is not set
379
380#
381# IDE chipset support/bugfixes
382#
383CONFIG_IDE_GENERIC=y
384# CONFIG_BLK_DEV_IDEPNP is not set
385# CONFIG_IDE_ARM is not set
386# CONFIG_IDE_CHIPSETS is not set
387# CONFIG_BLK_DEV_IDEDMA is not set
388# CONFIG_IDEDMA_AUTO is not set
389# CONFIG_BLK_DEV_HD is not set
244 390
245# 391#
246# SCSI device support 392# SCSI device support
247# 393#
248# CONFIG_RAID_ATTRS is not set 394# CONFIG_RAID_ATTRS is not set
249# CONFIG_SCSI is not set 395CONFIG_SCSI=y
396# CONFIG_SCSI_NETLINK is not set
397CONFIG_SCSI_PROC_FS=y
398
399#
400# SCSI support type (disk, tape, CD-ROM)
401#
402CONFIG_BLK_DEV_SD=y
403CONFIG_CHR_DEV_ST=m
404# CONFIG_CHR_DEV_OSST is not set
405CONFIG_BLK_DEV_SR=m
406# CONFIG_BLK_DEV_SR_VENDOR is not set
407CONFIG_CHR_DEV_SG=m
408# CONFIG_CHR_DEV_SCH is not set
409
410#
411# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
412#
413CONFIG_SCSI_MULTI_LUN=y
414CONFIG_SCSI_CONSTANTS=y
415# CONFIG_SCSI_LOGGING is not set
416
417#
418# SCSI Transports
419#
420CONFIG_SCSI_SPI_ATTRS=y
421# CONFIG_SCSI_FC_ATTRS is not set
422# CONFIG_SCSI_ISCSI_ATTRS is not set
423# CONFIG_SCSI_SAS_ATTRS is not set
424# CONFIG_SCSI_SAS_LIBSAS is not set
425
426#
427# SCSI low-level drivers
428#
429# CONFIG_ISCSI_TCP is not set
430# CONFIG_SCSI_AHA152X is not set
431# CONFIG_SCSI_AIC7XXX_OLD is not set
432# CONFIG_SCSI_IN2000 is not set
433# CONFIG_SCSI_DTC3280 is not set
434# CONFIG_SCSI_FUTURE_DOMAIN is not set
435# CONFIG_SCSI_GENERIC_NCR5380 is not set
436# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
437# CONFIG_SCSI_NCR53C406A is not set
438# CONFIG_SCSI_PAS16 is not set
439# CONFIG_SCSI_PSI240I is not set
440# CONFIG_SCSI_QLOGIC_FAS is not set
441# CONFIG_SCSI_SYM53C416 is not set
442# CONFIG_SCSI_T128 is not set
443# CONFIG_SCSI_DEBUG is not set
444
445#
446# Serial ATA (prod) and Parallel ATA (experimental) drivers
447#
448
449#
450# Old CD-ROM drivers (not SCSI, not IDE)
451#
452# CONFIG_CD_NO_IDESCSI is not set
250 453
251# 454#
252# Multi-device support (RAID and LVM) 455# Multi-device support (RAID and LVM)
253# 456#
254# CONFIG_MD is not set 457CONFIG_MD=y
458CONFIG_BLK_DEV_MD=y
459# CONFIG_MD_LINEAR is not set
460# CONFIG_MD_RAID0 is not set
461CONFIG_MD_RAID1=y
462# CONFIG_MD_RAID10 is not set
463# CONFIG_MD_RAID456 is not set
464# CONFIG_MD_MULTIPATH is not set
465# CONFIG_MD_FAULTY is not set
466CONFIG_BLK_DEV_DM=m
467# CONFIG_DM_DEBUG is not set
468CONFIG_DM_CRYPT=m
469CONFIG_DM_SNAPSHOT=m
470# CONFIG_DM_MIRROR is not set
471# CONFIG_DM_ZERO is not set
472# CONFIG_DM_MULTIPATH is not set
255 473
256# 474#
257# Fusion MPT device support 475# Fusion MPT device support
@@ -270,10 +488,16 @@ CONFIG_IOSCHED_NOOP=y
270# Network device support 488# Network device support
271# 489#
272CONFIG_NETDEVICES=y 490CONFIG_NETDEVICES=y
273CONFIG_DUMMY=y 491CONFIG_DUMMY=m
274# CONFIG_BONDING is not set 492# CONFIG_BONDING is not set
275# CONFIG_EQUALIZER is not set 493# CONFIG_EQUALIZER is not set
276# CONFIG_TUN is not set 494# CONFIG_TUN is not set
495# CONFIG_NET_SB1000 is not set
496
497#
498# ARCnet devices
499#
500# CONFIG_ARCNET is not set
277 501
278# 502#
279# PHY device support 503# PHY device support
@@ -285,8 +509,33 @@ CONFIG_DUMMY=y
285# 509#
286CONFIG_NET_ETHERNET=y 510CONFIG_NET_ETHERNET=y
287CONFIG_MII=y 511CONFIG_MII=y
288CONFIG_SMC91X=y 512CONFIG_NET_VENDOR_3COM=y
289# CONFIG_NE2000 is not set 513# CONFIG_EL1 is not set
514# CONFIG_EL2 is not set
515# CONFIG_EL16 is not set
516# CONFIG_EL3 is not set
517# CONFIG_NET_VENDOR_SMC is not set
518# CONFIG_SMC91X is not set
519# CONFIG_NET_VENDOR_RACAL is not set
520# CONFIG_AT1700 is not set
521# CONFIG_DEPCA is not set
522# CONFIG_HP100 is not set
523CONFIG_NET_ISA=y
524# CONFIG_E2100 is not set
525# CONFIG_EWRK3 is not set
526# CONFIG_EEXPRESS is not set
527# CONFIG_EEXPRESS_PRO is not set
528# CONFIG_HPLAN_PLUS is not set
529# CONFIG_HPLAN is not set
530# CONFIG_LP486E is not set
531# CONFIG_ETH16I is not set
532CONFIG_NE2000=m
533# CONFIG_SEEQ8005 is not set
534CONFIG_NET_PCI=y
535# CONFIG_AC3200 is not set
536# CONFIG_APRICOT is not set
537# CONFIG_CS89x0 is not set
538# CONFIG_NET_POCKET is not set
290 539
291# 540#
292# Ethernet (1000 Mbit) 541# Ethernet (1000 Mbit)
@@ -299,6 +548,7 @@ CONFIG_SMC91X=y
299# 548#
300# Token Ring devices 549# Token Ring devices
301# 550#
551# CONFIG_TR is not set
302 552
303# 553#
304# Wireless LAN (non-hamradio) 554# Wireless LAN (non-hamradio)
@@ -306,14 +556,10 @@ CONFIG_SMC91X=y
306# CONFIG_NET_RADIO is not set 556# CONFIG_NET_RADIO is not set
307 557
308# 558#
309# PCMCIA network device support
310#
311# CONFIG_NET_PCMCIA is not set
312
313#
314# Wan interfaces 559# Wan interfaces
315# 560#
316# CONFIG_WAN is not set 561# CONFIG_WAN is not set
562# CONFIG_PLIP is not set
317# CONFIG_PPP is not set 563# CONFIG_PPP is not set
318# CONFIG_SLIP is not set 564# CONFIG_SLIP is not set
319# CONFIG_SHAPER is not set 565# CONFIG_SHAPER is not set
@@ -334,35 +580,83 @@ CONFIG_SMC91X=y
334# 580#
335# Input device support 581# Input device support
336# 582#
337# CONFIG_INPUT is not set 583CONFIG_INPUT=y
584# CONFIG_INPUT_FF_MEMLESS is not set
585
586#
587# Userland interfaces
588#
589CONFIG_INPUT_MOUSEDEV=y
590CONFIG_INPUT_MOUSEDEV_PSAUX=y
591CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
592CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
593# CONFIG_INPUT_JOYDEV is not set
594# CONFIG_INPUT_TSDEV is not set
595# CONFIG_INPUT_EVDEV is not set
596# CONFIG_INPUT_EVBUG is not set
597
598#
599# Input Device Drivers
600#
601CONFIG_INPUT_KEYBOARD=y
602CONFIG_KEYBOARD_ATKBD=y
603# CONFIG_KEYBOARD_SUNKBD is not set
604# CONFIG_KEYBOARD_LKKBD is not set
605# CONFIG_KEYBOARD_XTKBD is not set
606# CONFIG_KEYBOARD_NEWTON is not set
607# CONFIG_KEYBOARD_STOWAWAY is not set
608CONFIG_INPUT_MOUSE=y
609CONFIG_MOUSE_PS2=y
610# CONFIG_MOUSE_SERIAL is not set
611# CONFIG_MOUSE_INPORT is not set
612# CONFIG_MOUSE_LOGIBM is not set
613# CONFIG_MOUSE_PC110PAD is not set
614# CONFIG_MOUSE_VSXXXAA is not set
615# CONFIG_INPUT_JOYSTICK is not set
616# CONFIG_INPUT_TOUCHSCREEN is not set
617# CONFIG_INPUT_MISC is not set
338 618
339# 619#
340# Hardware I/O ports 620# Hardware I/O ports
341# 621#
342# CONFIG_SERIO is not set 622CONFIG_SERIO=y
623CONFIG_SERIO_I8042=y
624CONFIG_SERIO_SERPORT=y
625# CONFIG_SERIO_PARKBD is not set
626CONFIG_SERIO_LIBPS2=y
627# CONFIG_SERIO_RAW is not set
343# CONFIG_GAMEPORT is not set 628# CONFIG_GAMEPORT is not set
344 629
345# 630#
346# Character devices 631# Character devices
347# 632#
348# CONFIG_VT is not set 633CONFIG_VT=y
634CONFIG_VT_CONSOLE=y
635CONFIG_HW_CONSOLE=y
636# CONFIG_VT_HW_CONSOLE_BINDING is not set
349# CONFIG_SERIAL_NONSTANDARD is not set 637# CONFIG_SERIAL_NONSTANDARD is not set
350 638
351# 639#
352# Serial drivers 640# Serial drivers
353# 641#
354# CONFIG_SERIAL_8250 is not set 642CONFIG_SERIAL_8250=m
643CONFIG_SERIAL_8250_PNP=m
644CONFIG_SERIAL_8250_NR_UARTS=4
645CONFIG_SERIAL_8250_RUNTIME_UARTS=4
646# CONFIG_SERIAL_8250_EXTENDED is not set
355 647
356# 648#
357# Non-8250 serial port support 649# Non-8250 serial port support
358# 650#
359CONFIG_SERIAL_CORE=y 651CONFIG_SERIAL_CORE=y
360CONFIG_SERIAL_CORE_CONSOLE=y
361CONFIG_SERIAL_M32R_SIO=y 652CONFIG_SERIAL_M32R_SIO=y
362CONFIG_SERIAL_M32R_SIO_CONSOLE=y 653# CONFIG_SERIAL_M32R_SIO_CONSOLE is not set
363CONFIG_UNIX98_PTYS=y 654CONFIG_UNIX98_PTYS=y
364CONFIG_LEGACY_PTYS=y 655CONFIG_LEGACY_PTYS=y
365CONFIG_LEGACY_PTY_COUNT=256 656CONFIG_LEGACY_PTY_COUNT=256
657# CONFIG_PRINTER is not set
658# CONFIG_PPDEV is not set
659# CONFIG_TIPAR is not set
366 660
367# 661#
368# IPMI 662# IPMI
@@ -372,13 +666,8 @@ CONFIG_LEGACY_PTY_COUNT=256
372# 666#
373# Watchdog Cards 667# Watchdog Cards
374# 668#
375CONFIG_WATCHDOG=y 669# CONFIG_WATCHDOG is not set
376# CONFIG_WATCHDOG_NOWAYOUT is not set 670# CONFIG_HW_RANDOM is not set
377
378#
379# Watchdog Device Drivers
380#
381CONFIG_SOFT_WATCHDOG=y
382# CONFIG_RTC is not set 671# CONFIG_RTC is not set
383# CONFIG_DTLK is not set 672# CONFIG_DTLK is not set
384# CONFIG_R3964 is not set 673# CONFIG_R3964 is not set
@@ -386,21 +675,57 @@ CONFIG_SOFT_WATCHDOG=y
386# 675#
387# Ftape, the floppy tape device driver 676# Ftape, the floppy tape device driver
388# 677#
389
390#
391# PCMCIA character devices
392#
393# CONFIG_SYNCLINK_CS is not set
394# CONFIG_RAW_DRIVER is not set 678# CONFIG_RAW_DRIVER is not set
395 679
396# 680#
397# TPM devices 681# TPM devices
398# 682#
683# CONFIG_TCG_TPM is not set
399 684
400# 685#
401# I2C support 686# I2C support
402# 687#
403# CONFIG_I2C is not set 688CONFIG_I2C=m
689CONFIG_I2C_CHARDEV=m
690
691#
692# I2C Algorithms
693#
694CONFIG_I2C_ALGOBIT=m
695CONFIG_I2C_ALGOPCF=m
696# CONFIG_I2C_ALGOPCA is not set
697
698#
699# I2C Hardware Bus support
700#
701CONFIG_I2C_ELEKTOR=m
702CONFIG_I2C_ISA=m
703# CONFIG_I2C_OCORES is not set
704# CONFIG_I2C_PARPORT is not set
705# CONFIG_I2C_PARPORT_LIGHT is not set
706# CONFIG_I2C_STUB is not set
707# CONFIG_I2C_PCA_ISA is not set
708
709#
710# Miscellaneous I2C Chip support
711#
712# CONFIG_SENSORS_DS1337 is not set
713# CONFIG_SENSORS_DS1374 is not set
714# CONFIG_SENSORS_EEPROM is not set
715# CONFIG_SENSORS_PCF8574 is not set
716# CONFIG_SENSORS_PCA9539 is not set
717# CONFIG_SENSORS_PCF8591 is not set
718# CONFIG_SENSORS_MAX6875 is not set
719# CONFIG_I2C_DEBUG_CORE is not set
720# CONFIG_I2C_DEBUG_ALGO is not set
721# CONFIG_I2C_DEBUG_BUS is not set
722# CONFIG_I2C_DEBUG_CHIP is not set
723
724#
725# SPI support
726#
727# CONFIG_SPI is not set
728# CONFIG_SPI_MASTER is not set
404 729
405# 730#
406# Dallas's 1-wire bus 731# Dallas's 1-wire bus
@@ -410,21 +735,89 @@ CONFIG_SOFT_WATCHDOG=y
410# 735#
411# Hardware Monitoring support 736# Hardware Monitoring support
412# 737#
413# CONFIG_HWMON is not set 738CONFIG_HWMON=y
414# CONFIG_HWMON_VID is not set 739CONFIG_HWMON_VID=m
740# CONFIG_SENSORS_ABITUGURU is not set
741CONFIG_SENSORS_ADM1021=m
742CONFIG_SENSORS_ADM1025=m
743# CONFIG_SENSORS_ADM1026 is not set
744CONFIG_SENSORS_ADM1031=m
745# CONFIG_SENSORS_ADM9240 is not set
746CONFIG_SENSORS_ASB100=m
747# CONFIG_SENSORS_ATXP1 is not set
748CONFIG_SENSORS_DS1621=m
749# CONFIG_SENSORS_F71805F is not set
750CONFIG_SENSORS_FSCHER=m
751# CONFIG_SENSORS_FSCPOS is not set
752CONFIG_SENSORS_GL518SM=m
753# CONFIG_SENSORS_GL520SM is not set
754CONFIG_SENSORS_IT87=m
755# CONFIG_SENSORS_LM63 is not set
756CONFIG_SENSORS_LM75=m
757CONFIG_SENSORS_LM77=m
758CONFIG_SENSORS_LM78=m
759CONFIG_SENSORS_LM80=m
760CONFIG_SENSORS_LM83=m
761CONFIG_SENSORS_LM85=m
762# CONFIG_SENSORS_LM87 is not set
763CONFIG_SENSORS_LM90=m
764# CONFIG_SENSORS_LM92 is not set
765CONFIG_SENSORS_MAX1619=m
766# CONFIG_SENSORS_PC87360 is not set
767CONFIG_SENSORS_SMSC47M1=m
768# CONFIG_SENSORS_SMSC47M192 is not set
769# CONFIG_SENSORS_SMSC47B397 is not set
770# CONFIG_SENSORS_VT1211 is not set
771CONFIG_SENSORS_W83781D=m
772# CONFIG_SENSORS_W83791D is not set
773# CONFIG_SENSORS_W83792D is not set
774CONFIG_SENSORS_W83L785TS=m
775CONFIG_SENSORS_W83627HF=m
776# CONFIG_SENSORS_W83627EHF is not set
777# CONFIG_HWMON_DEBUG_CHIP is not set
415 778
416# 779#
417# Misc devices 780# Multimedia devices
418# 781#
782CONFIG_VIDEO_DEV=m
783CONFIG_VIDEO_V4L1=y
784CONFIG_VIDEO_V4L1_COMPAT=y
785CONFIG_VIDEO_V4L2=y
419 786
420# 787#
421# Multimedia Capabilities Port drivers 788# Video Capture Adapters
422# 789#
423 790
424# 791#
425# Multimedia devices 792# Video Capture Adapters
426# 793#
427# CONFIG_VIDEO_DEV is not set 794# CONFIG_VIDEO_ADV_DEBUG is not set
795CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
796# CONFIG_VIDEO_VIVI is not set
797# CONFIG_VIDEO_PMS is not set
798CONFIG_VIDEO_BWQCAM=m
799CONFIG_VIDEO_CQCAM=m
800# CONFIG_VIDEO_W9966 is not set
801# CONFIG_VIDEO_CPIA is not set
802# CONFIG_VIDEO_SAA5246A is not set
803# CONFIG_VIDEO_SAA5249 is not set
804# CONFIG_TUNER_3036 is not set
805# CONFIG_VIDEO_M32R_AR is not set
806
807#
808# Radio Adapters
809#
810# CONFIG_RADIO_CADET is not set
811# CONFIG_RADIO_RTRACK is not set
812# CONFIG_RADIO_RTRACK2 is not set
813# CONFIG_RADIO_AZTECH is not set
814# CONFIG_RADIO_GEMTEK is not set
815# CONFIG_RADIO_SF16FMI is not set
816# CONFIG_RADIO_SF16FMR2 is not set
817# CONFIG_RADIO_TERRATEC is not set
818# CONFIG_RADIO_TRUST is not set
819# CONFIG_RADIO_TYPHOON is not set
820# CONFIG_RADIO_ZOLTRIX is not set
428 821
429# 822#
430# Digital Video Broadcasting Devices 823# Digital Video Broadcasting Devices
@@ -434,9 +827,19 @@ CONFIG_SOFT_WATCHDOG=y
434# 827#
435# Graphics support 828# Graphics support
436# 829#
830CONFIG_FIRMWARE_EDID=y
437# CONFIG_FB is not set 831# CONFIG_FB is not set
438 832
439# 833#
834# Console display driver support
835#
836CONFIG_VGA_CONSOLE=y
837# CONFIG_VGACON_SOFT_SCROLLBACK is not set
838# CONFIG_MDA_CONSOLE is not set
839CONFIG_DUMMY_CONSOLE=y
840# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
841
842#
440# Sound 843# Sound
441# 844#
442# CONFIG_SOUND is not set 845# CONFIG_SOUND is not set
@@ -446,6 +849,11 @@ CONFIG_SOFT_WATCHDOG=y
446# 849#
447# CONFIG_USB_ARCH_HAS_HCD is not set 850# CONFIG_USB_ARCH_HAS_HCD is not set
448# CONFIG_USB_ARCH_HAS_OHCI is not set 851# CONFIG_USB_ARCH_HAS_OHCI is not set
852# CONFIG_USB_ARCH_HAS_EHCI is not set
853
854#
855# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
856#
449 857
450# 858#
451# USB Gadget Support 859# USB Gadget Support
@@ -458,33 +866,69 @@ CONFIG_SOFT_WATCHDOG=y
458# CONFIG_MMC is not set 866# CONFIG_MMC is not set
459 867
460# 868#
869# LED devices
870#
871# CONFIG_NEW_LEDS is not set
872
873#
874# LED drivers
875#
876
877#
878# LED Triggers
879#
880
881#
461# InfiniBand support 882# InfiniBand support
462# 883#
463 884
464# 885#
465# SN Devices 886# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
887#
888
889#
890# Real Time Clock
891#
892# CONFIG_RTC_CLASS is not set
893
894#
895# DMA Engine support
896#
897# CONFIG_DMA_ENGINE is not set
898
899#
900# DMA Clients
901#
902
903#
904# DMA Devices
466# 905#
467 906
468# 907#
469# File systems 908# File systems
470# 909#
471CONFIG_EXT2_FS=y 910CONFIG_EXT2_FS=y
472# CONFIG_EXT2_FS_XATTR is not set 911CONFIG_EXT2_FS_XATTR=y
473# CONFIG_EXT2_FS_XIP is not set 912CONFIG_EXT2_FS_POSIX_ACL=y
913CONFIG_EXT2_FS_SECURITY=y
474CONFIG_EXT3_FS=y 914CONFIG_EXT3_FS=y
475CONFIG_EXT3_FS_XATTR=y 915CONFIG_EXT3_FS_XATTR=y
476CONFIG_EXT3_FS_POSIX_ACL=y 916CONFIG_EXT3_FS_POSIX_ACL=y
477# CONFIG_EXT3_FS_SECURITY is not set 917CONFIG_EXT3_FS_SECURITY=y
918# CONFIG_EXT4DEV_FS is not set
478CONFIG_JBD=y 919CONFIG_JBD=y
479# CONFIG_JBD_DEBUG is not set 920CONFIG_JBD_DEBUG=y
480CONFIG_FS_MBCACHE=y 921CONFIG_FS_MBCACHE=y
481# CONFIG_REISERFS_FS is not set 922# CONFIG_REISERFS_FS is not set
482# CONFIG_JFS_FS is not set 923# CONFIG_JFS_FS is not set
483CONFIG_FS_POSIX_ACL=y 924CONFIG_FS_POSIX_ACL=y
484# CONFIG_XFS_FS is not set 925# CONFIG_XFS_FS is not set
926# CONFIG_GFS2_FS is not set
927# CONFIG_OCFS2_FS is not set
485# CONFIG_MINIX_FS is not set 928# CONFIG_MINIX_FS is not set
486# CONFIG_ROMFS_FS is not set 929CONFIG_ROMFS_FS=y
487# CONFIG_INOTIFY is not set 930CONFIG_INOTIFY=y
931CONFIG_INOTIFY_USER=y
488# CONFIG_QUOTA is not set 932# CONFIG_QUOTA is not set
489CONFIG_DNOTIFY=y 933CONFIG_DNOTIFY=y
490# CONFIG_AUTOFS_FS is not set 934# CONFIG_AUTOFS_FS is not set
@@ -494,8 +938,11 @@ CONFIG_DNOTIFY=y
494# 938#
495# CD-ROM/DVD Filesystems 939# CD-ROM/DVD Filesystems
496# 940#
497# CONFIG_ISO9660_FS is not set 941CONFIG_ISO9660_FS=y
498# CONFIG_UDF_FS is not set 942CONFIG_JOLIET=y
943# CONFIG_ZISOFS is not set
944CONFIG_UDF_FS=m
945CONFIG_UDF_NLS=y
499 946
500# 947#
501# DOS/FAT/NT Filesystems 948# DOS/FAT/NT Filesystems
@@ -503,7 +950,7 @@ CONFIG_DNOTIFY=y
503CONFIG_FAT_FS=y 950CONFIG_FAT_FS=y
504CONFIG_MSDOS_FS=y 951CONFIG_MSDOS_FS=y
505CONFIG_VFAT_FS=y 952CONFIG_VFAT_FS=y
506CONFIG_FAT_DEFAULT_CODEPAGE=932 953CONFIG_FAT_DEFAULT_CODEPAGE=437
507CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" 954CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
508# CONFIG_NTFS_FS is not set 955# CONFIG_NTFS_FS is not set
509 956
@@ -511,11 +958,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
511# Pseudo filesystems 958# Pseudo filesystems
512# 959#
513CONFIG_PROC_FS=y 960CONFIG_PROC_FS=y
961CONFIG_PROC_SYSCTL=y
514CONFIG_SYSFS=y 962CONFIG_SYSFS=y
515CONFIG_TMPFS=y 963CONFIG_TMPFS=y
964# CONFIG_TMPFS_POSIX_ACL is not set
516# CONFIG_HUGETLB_PAGE is not set 965# CONFIG_HUGETLB_PAGE is not set
517CONFIG_RAMFS=y 966CONFIG_RAMFS=y
518# CONFIG_RELAYFS_FS is not set 967CONFIG_CONFIGFS_FS=m
519 968
520# 969#
521# Miscellaneous filesystems 970# Miscellaneous filesystems
@@ -527,7 +976,7 @@ CONFIG_RAMFS=y
527# CONFIG_BEFS_FS is not set 976# CONFIG_BEFS_FS is not set
528# CONFIG_BFS_FS is not set 977# CONFIG_BFS_FS is not set
529# CONFIG_EFS_FS is not set 978# CONFIG_EFS_FS is not set
530CONFIG_CRAMFS=y 979# CONFIG_CRAMFS is not set
531# CONFIG_VXFS_FS is not set 980# CONFIG_VXFS_FS is not set
532# CONFIG_HPFS_FS is not set 981# CONFIG_HPFS_FS is not set
533# CONFIG_QNX4FS_FS is not set 982# CONFIG_QNX4FS_FS is not set
@@ -542,10 +991,14 @@ CONFIG_NFS_V3=y
542# CONFIG_NFS_V3_ACL is not set 991# CONFIG_NFS_V3_ACL is not set
543# CONFIG_NFS_V4 is not set 992# CONFIG_NFS_V4 is not set
544# CONFIG_NFS_DIRECTIO is not set 993# CONFIG_NFS_DIRECTIO is not set
545# CONFIG_NFSD is not set 994CONFIG_NFSD=m
546CONFIG_ROOT_NFS=y 995CONFIG_NFSD_V3=y
996# CONFIG_NFSD_V3_ACL is not set
997# CONFIG_NFSD_V4 is not set
998# CONFIG_NFSD_TCP is not set
547CONFIG_LOCKD=y 999CONFIG_LOCKD=y
548CONFIG_LOCKD_V4=y 1000CONFIG_LOCKD_V4=y
1001CONFIG_EXPORTFS=m
549CONFIG_NFS_COMMON=y 1002CONFIG_NFS_COMMON=y
550CONFIG_SUNRPC=y 1003CONFIG_SUNRPC=y
551# CONFIG_RPCSEC_GSS_KRB5 is not set 1004# CONFIG_RPCSEC_GSS_KRB5 is not set
@@ -567,7 +1020,7 @@ CONFIG_MSDOS_PARTITION=y
567# Native Language Support 1020# Native Language Support
568# 1021#
569CONFIG_NLS=y 1022CONFIG_NLS=y
570CONFIG_NLS_DEFAULT="iso8859-1" 1023CONFIG_NLS_DEFAULT="cp437"
571CONFIG_NLS_CODEPAGE_437=y 1024CONFIG_NLS_CODEPAGE_437=y
572# CONFIG_NLS_CODEPAGE_737 is not set 1025# CONFIG_NLS_CODEPAGE_737 is not set
573# CONFIG_NLS_CODEPAGE_775 is not set 1026# CONFIG_NLS_CODEPAGE_775 is not set
@@ -592,7 +1045,7 @@ CONFIG_NLS_CODEPAGE_932=y
592# CONFIG_NLS_CODEPAGE_1250 is not set 1045# CONFIG_NLS_CODEPAGE_1250 is not set
593# CONFIG_NLS_CODEPAGE_1251 is not set 1046# CONFIG_NLS_CODEPAGE_1251 is not set
594# CONFIG_NLS_ASCII is not set 1047# CONFIG_NLS_ASCII is not set
595# CONFIG_NLS_ISO8859_1 is not set 1048CONFIG_NLS_ISO8859_1=y
596# CONFIG_NLS_ISO8859_2 is not set 1049# CONFIG_NLS_ISO8859_2 is not set
597# CONFIG_NLS_ISO8859_3 is not set 1050# CONFIG_NLS_ISO8859_3 is not set
598# CONFIG_NLS_ISO8859_4 is not set 1051# CONFIG_NLS_ISO8859_4 is not set
@@ -605,32 +1058,28 @@ CONFIG_NLS_CODEPAGE_932=y
605# CONFIG_NLS_ISO8859_15 is not set 1058# CONFIG_NLS_ISO8859_15 is not set
606# CONFIG_NLS_KOI8_R is not set 1059# CONFIG_NLS_KOI8_R is not set
607# CONFIG_NLS_KOI8_U is not set 1060# CONFIG_NLS_KOI8_U is not set
608CONFIG_NLS_UTF8=y 1061# CONFIG_NLS_UTF8 is not set
609 1062
610# 1063#
611# Profiling support 1064# Profiling support
612# 1065#
613# CONFIG_PROFILING is not set 1066CONFIG_PROFILING=y
1067CONFIG_OPROFILE=m
614 1068
615# 1069#
616# Kernel hacking 1070# Kernel hacking
617# 1071#
618# CONFIG_PRINTK_TIME is not set 1072# CONFIG_PRINTK_TIME is not set
619CONFIG_DEBUG_KERNEL=y 1073CONFIG_ENABLE_MUST_CHECK=y
620CONFIG_MAGIC_SYSRQ=y 1074# CONFIG_MAGIC_SYSRQ is not set
1075# CONFIG_UNUSED_SYMBOLS is not set
1076# CONFIG_DEBUG_KERNEL is not set
621CONFIG_LOG_BUF_SHIFT=14 1077CONFIG_LOG_BUF_SHIFT=14
622CONFIG_DETECT_SOFTLOCKUP=y 1078CONFIG_DEBUG_BUGVERBOSE=y
623# CONFIG_SCHEDSTATS is not set
624# CONFIG_DEBUG_SLAB is not set
625# CONFIG_DEBUG_SPINLOCK is not set
626# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
627# CONFIG_DEBUG_KOBJECT is not set
628# CONFIG_DEBUG_BUGVERBOSE is not set
629CONFIG_DEBUG_INFO=y
630# CONFIG_DEBUG_FS is not set 1079# CONFIG_DEBUG_FS is not set
631# CONFIG_FRAME_POINTER is not set 1080# CONFIG_FRAME_POINTER is not set
632# CONFIG_DEBUG_STACKOVERFLOW is not set 1081# CONFIG_UNWIND_INFO is not set
633# CONFIG_DEBUG_STACK_USAGE is not set 1082# CONFIG_HEADERS_CHECK is not set
634 1083
635# 1084#
636# Security options 1085# Security options
@@ -641,7 +1090,38 @@ CONFIG_DEBUG_INFO=y
641# 1090#
642# Cryptographic options 1091# Cryptographic options
643# 1092#
644# CONFIG_CRYPTO is not set 1093CONFIG_CRYPTO=y
1094CONFIG_CRYPTO_ALGAPI=y
1095CONFIG_CRYPTO_BLKCIPHER=m
1096CONFIG_CRYPTO_HASH=y
1097CONFIG_CRYPTO_MANAGER=y
1098CONFIG_CRYPTO_HMAC=y
1099CONFIG_CRYPTO_NULL=m
1100CONFIG_CRYPTO_MD4=m
1101CONFIG_CRYPTO_MD5=m
1102CONFIG_CRYPTO_SHA1=m
1103CONFIG_CRYPTO_SHA256=m
1104CONFIG_CRYPTO_SHA512=m
1105CONFIG_CRYPTO_WP512=m
1106# CONFIG_CRYPTO_TGR192 is not set
1107CONFIG_CRYPTO_ECB=m
1108CONFIG_CRYPTO_CBC=m
1109CONFIG_CRYPTO_DES=m
1110CONFIG_CRYPTO_BLOWFISH=m
1111CONFIG_CRYPTO_TWOFISH=m
1112CONFIG_CRYPTO_TWOFISH_COMMON=m
1113CONFIG_CRYPTO_SERPENT=m
1114CONFIG_CRYPTO_AES=m
1115# CONFIG_CRYPTO_CAST5 is not set
1116# CONFIG_CRYPTO_CAST6 is not set
1117# CONFIG_CRYPTO_TEA is not set
1118# CONFIG_CRYPTO_ARC4 is not set
1119# CONFIG_CRYPTO_KHAZAD is not set
1120# CONFIG_CRYPTO_ANUBIS is not set
1121# CONFIG_CRYPTO_DEFLATE is not set
1122# CONFIG_CRYPTO_MICHAEL_MIC is not set
1123CONFIG_CRYPTO_CRC32C=m
1124# CONFIG_CRYPTO_TEST is not set
645 1125
646# 1126#
647# Hardware crypto devices 1127# Hardware crypto devices
@@ -650,8 +1130,12 @@ CONFIG_DEBUG_INFO=y
650# 1130#
651# Library routines 1131# Library routines
652# 1132#
653# CONFIG_CRC_CCITT is not set 1133CONFIG_CRC_CCITT=m
654# CONFIG_CRC16 is not set 1134CONFIG_CRC16=m
655CONFIG_CRC32=y 1135CONFIG_CRC32=y
656CONFIG_LIBCRC32C=y 1136CONFIG_LIBCRC32C=m
657CONFIG_ZLIB_INFLATE=y 1137CONFIG_TEXTSEARCH=y
1138CONFIG_TEXTSEARCH_KMP=m
1139CONFIG_TEXTSEARCH_BM=m
1140CONFIG_TEXTSEARCH_FSM=m
1141CONFIG_PLIST=y
diff --git a/arch/m32r/m32700ut/defconfig.m32700ut.smp b/arch/m32r/m32700ut/defconfig.m32700ut.smp
index 3e607d90b5f4..13579917afef 100644
--- a/arch/m32r/m32700ut/defconfig.m32700ut.smp
+++ b/arch/m32r/m32700ut/defconfig.m32700ut.smp
@@ -1,19 +1,18 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.12-rc5 3# Linux kernel version: 2.6.19
4# Fri Jun 3 16:20:58 2005 4# Tue Dec 12 17:52:38 2006
5# 5#
6CONFIG_M32R=y 6CONFIG_M32R=y
7# CONFIG_UID16 is not set
8CONFIG_GENERIC_ISA_DMA=y 7CONFIG_GENERIC_ISA_DMA=y
9CONFIG_GENERIC_HARDIRQS=y 8CONFIG_GENERIC_HARDIRQS=y
10CONFIG_GENERIC_IRQ_PROBE=y 9CONFIG_GENERIC_IRQ_PROBE=y
10CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11 11
12# 12#
13# Code maturity level options 13# Code maturity level options
14# 14#
15CONFIG_EXPERIMENTAL=y 15CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_LOCK_KERNEL=y 16CONFIG_LOCK_KERNEL=y
18CONFIG_INIT_ENV_ARG_LIMIT=32 17CONFIG_INIT_ENV_ARG_LIMIT=32
19 18
@@ -21,33 +20,40 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
21# General setup 20# General setup
22# 21#
23CONFIG_LOCALVERSION="" 22CONFIG_LOCALVERSION=""
23CONFIG_LOCALVERSION_AUTO=y
24CONFIG_SWAP=y 24CONFIG_SWAP=y
25CONFIG_SYSVIPC=y 25CONFIG_SYSVIPC=y
26# CONFIG_IPC_NS is not set
26# CONFIG_POSIX_MQUEUE is not set 27# CONFIG_POSIX_MQUEUE is not set
27CONFIG_BSD_PROCESS_ACCT=y 28CONFIG_BSD_PROCESS_ACCT=y
28# CONFIG_BSD_PROCESS_ACCT_V3 is not set 29# CONFIG_BSD_PROCESS_ACCT_V3 is not set
29CONFIG_SYSCTL=y 30# CONFIG_TASKSTATS is not set
31# CONFIG_UTS_NS is not set
30# CONFIG_AUDIT is not set 32# CONFIG_AUDIT is not set
31CONFIG_HOTPLUG=y
32CONFIG_KOBJECT_UEVENT=y
33CONFIG_IKCONFIG=y 33CONFIG_IKCONFIG=y
34# CONFIG_IKCONFIG_PROC is not set 34CONFIG_IKCONFIG_PROC=y
35# CONFIG_CPUSETS is not set 35# CONFIG_CPUSETS is not set
36CONFIG_SYSFS_DEPRECATED=y
37# CONFIG_RELAY is not set
38CONFIG_INITRAMFS_SOURCE=""
39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
40CONFIG_SYSCTL=y
36CONFIG_EMBEDDED=y 41CONFIG_EMBEDDED=y
42CONFIG_SYSCTL_SYSCALL=y
37# CONFIG_KALLSYMS is not set 43# CONFIG_KALLSYMS is not set
44CONFIG_HOTPLUG=y
38CONFIG_PRINTK=y 45CONFIG_PRINTK=y
39CONFIG_BUG=y 46CONFIG_BUG=y
47CONFIG_ELF_CORE=y
40CONFIG_BASE_FULL=y 48CONFIG_BASE_FULL=y
41# CONFIG_FUTEX is not set 49# CONFIG_FUTEX is not set
42# CONFIG_EPOLL is not set 50# CONFIG_EPOLL is not set
43# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
44CONFIG_SHMEM=y 51CONFIG_SHMEM=y
45CONFIG_CC_ALIGN_FUNCTIONS=0 52CONFIG_SLAB=y
46CONFIG_CC_ALIGN_LABELS=0 53CONFIG_VM_EVENT_COUNTERS=y
47CONFIG_CC_ALIGN_LOOPS=0
48CONFIG_CC_ALIGN_JUMPS=0
49# CONFIG_TINY_SHMEM is not set 54# CONFIG_TINY_SHMEM is not set
50CONFIG_BASE_SMALL=0 55CONFIG_BASE_SMALL=0
56# CONFIG_SLOB is not set
51 57
52# 58#
53# Loadable module support 59# Loadable module support
@@ -55,13 +61,31 @@ CONFIG_BASE_SMALL=0
55CONFIG_MODULES=y 61CONFIG_MODULES=y
56CONFIG_MODULE_UNLOAD=y 62CONFIG_MODULE_UNLOAD=y
57# CONFIG_MODULE_FORCE_UNLOAD is not set 63# CONFIG_MODULE_FORCE_UNLOAD is not set
58CONFIG_OBSOLETE_MODPARM=y
59# CONFIG_MODVERSIONS is not set 64# CONFIG_MODVERSIONS is not set
60# CONFIG_MODULE_SRCVERSION_ALL is not set 65# CONFIG_MODULE_SRCVERSION_ALL is not set
61CONFIG_KMOD=y 66CONFIG_KMOD=y
62CONFIG_STOP_MACHINE=y 67CONFIG_STOP_MACHINE=y
63 68
64# 69#
70# Block layer
71#
72CONFIG_BLOCK=y
73# CONFIG_BLK_DEV_IO_TRACE is not set
74
75#
76# IO Schedulers
77#
78CONFIG_IOSCHED_NOOP=y
79# CONFIG_IOSCHED_AS is not set
80CONFIG_IOSCHED_DEADLINE=y
81CONFIG_IOSCHED_CFQ=y
82# CONFIG_DEFAULT_AS is not set
83# CONFIG_DEFAULT_DEADLINE is not set
84CONFIG_DEFAULT_CFQ=y
85# CONFIG_DEFAULT_NOOP is not set
86CONFIG_DEFAULT_IOSCHED="cfq"
87
88#
65# Processor type and features 89# Processor type and features
66# 90#
67# CONFIG_PLAT_MAPPI is not set 91# CONFIG_PLAT_MAPPI is not set
@@ -71,8 +95,10 @@ CONFIG_PLAT_M32700UT=y
71# CONFIG_PLAT_OAKS32R is not set 95# CONFIG_PLAT_OAKS32R is not set
72# CONFIG_PLAT_MAPPI2 is not set 96# CONFIG_PLAT_MAPPI2 is not set
73# CONFIG_PLAT_MAPPI3 is not set 97# CONFIG_PLAT_MAPPI3 is not set
98# CONFIG_PLAT_M32104UT is not set
74CONFIG_CHIP_M32700=y 99CONFIG_CHIP_M32700=y
75# CONFIG_CHIP_M32102 is not set 100# CONFIG_CHIP_M32102 is not set
101# CONFIG_CHIP_M32104 is not set
76# CONFIG_CHIP_VDEC2 is not set 102# CONFIG_CHIP_VDEC2 is not set
77# CONFIG_CHIP_OPSP is not set 103# CONFIG_CHIP_OPSP is not set
78CONFIG_MMU=y 104CONFIG_MMU=y
@@ -86,37 +112,39 @@ CONFIG_TIMER_DIVIDE=128
86CONFIG_MEMORY_START=0x08000000 112CONFIG_MEMORY_START=0x08000000
87CONFIG_MEMORY_SIZE=0x01000000 113CONFIG_MEMORY_SIZE=0x01000000
88CONFIG_NOHIGHMEM=y 114CONFIG_NOHIGHMEM=y
89# CONFIG_DISCONTIGMEM is not set 115CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
116CONFIG_SELECT_MEMORY_MODEL=y
117# CONFIG_FLATMEM_MANUAL is not set
118CONFIG_DISCONTIGMEM_MANUAL=y
119# CONFIG_SPARSEMEM_MANUAL is not set
120CONFIG_DISCONTIGMEM=y
121CONFIG_FLAT_NODE_MEM_MAP=y
122CONFIG_NEED_MULTIPLE_NODES=y
123# CONFIG_SPARSEMEM_STATIC is not set
124CONFIG_SPLIT_PTLOCK_CPUS=4
125# CONFIG_RESOURCES_64BIT is not set
126CONFIG_IRAM_START=0x00f00000
127CONFIG_IRAM_SIZE=0x00080000
90CONFIG_RWSEM_GENERIC_SPINLOCK=y 128CONFIG_RWSEM_GENERIC_SPINLOCK=y
91# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 129# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
130CONFIG_GENERIC_FIND_NEXT_BIT=y
131CONFIG_GENERIC_HWEIGHT=y
92CONFIG_GENERIC_CALIBRATE_DELAY=y 132CONFIG_GENERIC_CALIBRATE_DELAY=y
93CONFIG_PREEMPT=y 133CONFIG_PREEMPT=y
94# CONFIG_HAVE_DEC_LOCK is not set
95CONFIG_SMP=y 134CONFIG_SMP=y
96CONFIG_CHIP_M32700_TS1=y 135# CONFIG_CHIP_M32700_TS1 is not set
97CONFIG_NR_CPUS=2 136CONFIG_NR_CPUS=2
98# CONFIG_NUMA is not set 137CONFIG_NODES_SHIFT=1
99 138
100# 139#
101# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 140# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
102# 141#
103# CONFIG_PCI is not set
104# CONFIG_ISA is not set 142# CONFIG_ISA is not set
105 143
106# 144#
107# PCCARD (PCMCIA/CardBus) support 145# PCCARD (PCMCIA/CardBus) support
108# 146#
109CONFIG_PCCARD=y 147# CONFIG_PCCARD is not set
110# CONFIG_PCMCIA_DEBUG is not set
111CONFIG_PCMCIA=y
112
113#
114# PC-card bridges
115#
116# CONFIG_TCIC is not set
117# CONFIG_M32R_PCC is not set
118CONFIG_M32R_CFC=y
119CONFIG_M32R_CFC_NUM=1
120 148
121# 149#
122# PCI Hotplug Support 150# PCI Hotplug Support
@@ -129,6 +157,94 @@ CONFIG_BINFMT_ELF=y
129# CONFIG_BINFMT_MISC is not set 157# CONFIG_BINFMT_MISC is not set
130 158
131# 159#
160# Networking
161#
162CONFIG_NET=y
163
164#
165# Networking options
166#
167# CONFIG_NETDEBUG is not set
168CONFIG_PACKET=y
169# CONFIG_PACKET_MMAP is not set
170CONFIG_UNIX=y
171CONFIG_XFRM=y
172# CONFIG_XFRM_USER is not set
173# CONFIG_XFRM_SUB_POLICY is not set
174# CONFIG_NET_KEY is not set
175CONFIG_INET=y
176# CONFIG_IP_MULTICAST is not set
177# CONFIG_IP_ADVANCED_ROUTER is not set
178CONFIG_IP_FIB_HASH=y
179CONFIG_IP_PNP=y
180CONFIG_IP_PNP_DHCP=y
181# CONFIG_IP_PNP_BOOTP is not set
182# CONFIG_IP_PNP_RARP is not set
183# CONFIG_NET_IPIP is not set
184# CONFIG_NET_IPGRE is not set
185# CONFIG_ARPD is not set
186# CONFIG_SYN_COOKIES is not set
187# CONFIG_INET_AH is not set
188# CONFIG_INET_ESP is not set
189# CONFIG_INET_IPCOMP is not set
190# CONFIG_INET_XFRM_TUNNEL is not set
191# CONFIG_INET_TUNNEL is not set
192CONFIG_INET_XFRM_MODE_TRANSPORT=y
193CONFIG_INET_XFRM_MODE_TUNNEL=y
194CONFIG_INET_XFRM_MODE_BEET=y
195CONFIG_INET_DIAG=y
196CONFIG_INET_TCP_DIAG=y
197# CONFIG_TCP_CONG_ADVANCED is not set
198CONFIG_TCP_CONG_CUBIC=y
199CONFIG_DEFAULT_TCP_CONG="cubic"
200# CONFIG_TCP_MD5SIG is not set
201# CONFIG_IPV6 is not set
202# CONFIG_INET6_XFRM_TUNNEL is not set
203# CONFIG_INET6_TUNNEL is not set
204# CONFIG_NETWORK_SECMARK is not set
205# CONFIG_NETFILTER is not set
206
207#
208# DCCP Configuration (EXPERIMENTAL)
209#
210# CONFIG_IP_DCCP is not set
211
212#
213# SCTP Configuration (EXPERIMENTAL)
214#
215# CONFIG_IP_SCTP is not set
216
217#
218# TIPC Configuration (EXPERIMENTAL)
219#
220# CONFIG_TIPC is not set
221# CONFIG_ATM is not set
222# CONFIG_BRIDGE is not set
223# CONFIG_VLAN_8021Q is not set
224# CONFIG_DECNET is not set
225# CONFIG_LLC2 is not set
226# CONFIG_IPX is not set
227# CONFIG_ATALK is not set
228# CONFIG_X25 is not set
229# CONFIG_LAPB is not set
230# CONFIG_ECONET is not set
231# CONFIG_WAN_ROUTER is not set
232
233#
234# QoS and/or fair queueing
235#
236# CONFIG_NET_SCHED is not set
237
238#
239# Network testing
240#
241# CONFIG_NET_PKTGEN is not set
242# CONFIG_HAMRADIO is not set
243# CONFIG_IRDA is not set
244# CONFIG_BT is not set
245# CONFIG_IEEE80211 is not set
246
247#
132# Device Drivers 248# Device Drivers
133# 249#
134 250
@@ -137,12 +253,100 @@ CONFIG_BINFMT_ELF=y
137# 253#
138CONFIG_STANDALONE=y 254CONFIG_STANDALONE=y
139CONFIG_PREVENT_FIRMWARE_BUILD=y 255CONFIG_PREVENT_FIRMWARE_BUILD=y
140# CONFIG_FW_LOADER is not set 256CONFIG_FW_LOADER=y
257# CONFIG_SYS_HYPERVISOR is not set
258
259#
260# Connector - unified userspace <-> kernelspace linker
261#
262# CONFIG_CONNECTOR is not set
141 263
142# 264#
143# Memory Technology Devices (MTD) 265# Memory Technology Devices (MTD)
144# 266#
145# CONFIG_MTD is not set 267CONFIG_MTD=y
268# CONFIG_MTD_DEBUG is not set
269# CONFIG_MTD_CONCAT is not set
270CONFIG_MTD_PARTITIONS=y
271CONFIG_MTD_REDBOOT_PARTS=y
272CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
273# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
274# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
275# CONFIG_MTD_CMDLINE_PARTS is not set
276
277#
278# User Modules And Translation Layers
279#
280# CONFIG_MTD_CHAR is not set
281CONFIG_MTD_BLOCK=y
282# CONFIG_FTL is not set
283# CONFIG_NFTL is not set
284# CONFIG_INFTL is not set
285# CONFIG_RFD_FTL is not set
286# CONFIG_SSFDC is not set
287
288#
289# RAM/ROM/Flash chip drivers
290#
291CONFIG_MTD_CFI=m
292CONFIG_MTD_JEDECPROBE=m
293CONFIG_MTD_GEN_PROBE=m
294CONFIG_MTD_CFI_ADV_OPTIONS=y
295# CONFIG_MTD_CFI_NOSWAP is not set
296CONFIG_MTD_CFI_BE_BYTE_SWAP=y
297# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
298CONFIG_MTD_CFI_GEOMETRY=y
299CONFIG_MTD_MAP_BANK_WIDTH_1=y
300CONFIG_MTD_MAP_BANK_WIDTH_2=y
301CONFIG_MTD_MAP_BANK_WIDTH_4=y
302# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
303# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
304# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
305CONFIG_MTD_CFI_I1=y
306# CONFIG_MTD_CFI_I2 is not set
307# CONFIG_MTD_CFI_I4 is not set
308# CONFIG_MTD_CFI_I8 is not set
309# CONFIG_MTD_OTP is not set
310# CONFIG_MTD_CFI_INTELEXT is not set
311CONFIG_MTD_CFI_AMDSTD=m
312# CONFIG_MTD_CFI_STAA is not set
313CONFIG_MTD_CFI_UTIL=m
314# CONFIG_MTD_RAM is not set
315# CONFIG_MTD_ROM is not set
316# CONFIG_MTD_ABSENT is not set
317# CONFIG_MTD_OBSOLETE_CHIPS is not set
318
319#
320# Mapping drivers for chip access
321#
322# CONFIG_MTD_COMPLEX_MAPPINGS is not set
323# CONFIG_MTD_PHYSMAP is not set
324# CONFIG_MTD_PLATRAM is not set
325
326#
327# Self-contained MTD device drivers
328#
329# CONFIG_MTD_SLRAM is not set
330# CONFIG_MTD_PHRAM is not set
331# CONFIG_MTD_MTDRAM is not set
332# CONFIG_MTD_BLOCK2MTD is not set
333
334#
335# Disk-On-Chip Device Drivers
336#
337# CONFIG_MTD_DOC2000 is not set
338# CONFIG_MTD_DOC2001 is not set
339# CONFIG_MTD_DOC2001PLUS is not set
340
341#
342# NAND Flash Device Drivers
343#
344# CONFIG_MTD_NAND is not set
345
346#
347# OneNAND Flash Device Drivers
348#
349# CONFIG_MTD_ONENAND is not set
146 350
147# 351#
148# Parallel port support 352# Parallel port support
@@ -156,7 +360,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
156# 360#
157# Block devices 361# Block devices
158# 362#
159# CONFIG_BLK_DEV_FD is not set
160# CONFIG_BLK_DEV_COW_COMMON is not set 363# CONFIG_BLK_DEV_COW_COMMON is not set
161CONFIG_BLK_DEV_LOOP=y 364CONFIG_BLK_DEV_LOOP=y
162# CONFIG_BLK_DEV_CRYPTOLOOP is not set 365# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -164,23 +367,21 @@ CONFIG_BLK_DEV_NBD=y
164CONFIG_BLK_DEV_RAM=y 367CONFIG_BLK_DEV_RAM=y
165CONFIG_BLK_DEV_RAM_COUNT=16 368CONFIG_BLK_DEV_RAM_COUNT=16
166CONFIG_BLK_DEV_RAM_SIZE=4096 369CONFIG_BLK_DEV_RAM_SIZE=4096
370CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
167# CONFIG_BLK_DEV_INITRD is not set 371# CONFIG_BLK_DEV_INITRD is not set
168CONFIG_INITRAMFS_SOURCE=""
169# CONFIG_CDROM_PKTCDVD is not set 372# CONFIG_CDROM_PKTCDVD is not set
373CONFIG_ATA_OVER_ETH=m
170 374
171# 375#
172# IO Schedulers 376# Misc devices
173# 377#
174CONFIG_IOSCHED_NOOP=y 378# CONFIG_TIFM_CORE is not set
175# CONFIG_IOSCHED_AS is not set
176CONFIG_IOSCHED_DEADLINE=y
177CONFIG_IOSCHED_CFQ=y
178# CONFIG_ATA_OVER_ETH is not set
179 379
180# 380#
181# ATA/ATAPI/MFM/RLL support 381# ATA/ATAPI/MFM/RLL support
182# 382#
183CONFIG_IDE=y 383CONFIG_IDE=y
384CONFIG_IDE_MAX_HWIFS=4
184CONFIG_BLK_DEV_IDE=y 385CONFIG_BLK_DEV_IDE=y
185 386
186# 387#
@@ -189,7 +390,6 @@ CONFIG_BLK_DEV_IDE=y
189# CONFIG_BLK_DEV_IDE_SATA is not set 390# CONFIG_BLK_DEV_IDE_SATA is not set
190CONFIG_BLK_DEV_IDEDISK=y 391CONFIG_BLK_DEV_IDEDISK=y
191# CONFIG_IDEDISK_MULTI_MODE is not set 392# CONFIG_IDEDISK_MULTI_MODE is not set
192CONFIG_BLK_DEV_IDECS=y
193CONFIG_BLK_DEV_IDECD=m 393CONFIG_BLK_DEV_IDECD=m
194# CONFIG_BLK_DEV_IDETAPE is not set 394# CONFIG_BLK_DEV_IDETAPE is not set
195# CONFIG_BLK_DEV_IDEFLOPPY is not set 395# CONFIG_BLK_DEV_IDEFLOPPY is not set
@@ -208,7 +408,9 @@ CONFIG_IDE_GENERIC=y
208# 408#
209# SCSI device support 409# SCSI device support
210# 410#
411# CONFIG_RAID_ATTRS is not set
211CONFIG_SCSI=m 412CONFIG_SCSI=m
413# CONFIG_SCSI_NETLINK is not set
212CONFIG_SCSI_PROC_FS=y 414CONFIG_SCSI_PROC_FS=y
213 415
214# 416#
@@ -220,6 +422,7 @@ CONFIG_BLK_DEV_SD=m
220CONFIG_BLK_DEV_SR=m 422CONFIG_BLK_DEV_SR=m
221# CONFIG_BLK_DEV_SR_VENDOR is not set 423# CONFIG_BLK_DEV_SR_VENDOR is not set
222CONFIG_CHR_DEV_SG=m 424CONFIG_CHR_DEV_SG=m
425# CONFIG_CHR_DEV_SCH is not set
223 426
224# 427#
225# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 428# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -229,26 +432,23 @@ CONFIG_SCSI_MULTI_LUN=y
229# CONFIG_SCSI_LOGGING is not set 432# CONFIG_SCSI_LOGGING is not set
230 433
231# 434#
232# SCSI Transport Attributes 435# SCSI Transports
233# 436#
234# CONFIG_SCSI_SPI_ATTRS is not set 437# CONFIG_SCSI_SPI_ATTRS is not set
235# CONFIG_SCSI_FC_ATTRS is not set 438# CONFIG_SCSI_FC_ATTRS is not set
236# CONFIG_SCSI_ISCSI_ATTRS is not set 439# CONFIG_SCSI_ISCSI_ATTRS is not set
440# CONFIG_SCSI_SAS_ATTRS is not set
441# CONFIG_SCSI_SAS_LIBSAS is not set
237 442
238# 443#
239# SCSI low-level drivers 444# SCSI low-level drivers
240# 445#
241# CONFIG_SCSI_SATA is not set 446# CONFIG_ISCSI_TCP is not set
242# CONFIG_SCSI_DEBUG is not set 447# CONFIG_SCSI_DEBUG is not set
243 448
244# 449#
245# PCMCIA SCSI adapter support 450# Serial ATA (prod) and Parallel ATA (experimental) drivers
246# 451#
247# CONFIG_PCMCIA_AHA152X is not set
248# CONFIG_PCMCIA_FDOMAIN is not set
249# CONFIG_PCMCIA_NINJA_SCSI is not set
250# CONFIG_PCMCIA_QLOGIC is not set
251# CONFIG_PCMCIA_SYM53C500 is not set
252 452
253# 453#
254# Multi-device support (RAID and LVM) 454# Multi-device support (RAID and LVM)
@@ -258,6 +458,7 @@ CONFIG_SCSI_MULTI_LUN=y
258# 458#
259# Fusion MPT device support 459# Fusion MPT device support
260# 460#
461# CONFIG_FUSION is not set
261 462
262# 463#
263# IEEE 1394 (FireWire) support 464# IEEE 1394 (FireWire) support
@@ -268,69 +469,8 @@ CONFIG_SCSI_MULTI_LUN=y
268# 469#
269 470
270# 471#
271# Networking support 472# Network device support
272#
273CONFIG_NET=y
274
275#
276# Networking options
277#
278CONFIG_PACKET=y
279# CONFIG_PACKET_MMAP is not set
280CONFIG_UNIX=y
281# CONFIG_NET_KEY is not set
282CONFIG_INET=y
283# CONFIG_IP_MULTICAST is not set
284# CONFIG_IP_ADVANCED_ROUTER is not set
285CONFIG_IP_PNP=y
286CONFIG_IP_PNP_DHCP=y
287# CONFIG_IP_PNP_BOOTP is not set
288# CONFIG_IP_PNP_RARP is not set
289# CONFIG_NET_IPIP is not set
290# CONFIG_NET_IPGRE is not set
291# CONFIG_ARPD is not set
292# CONFIG_SYN_COOKIES is not set
293# CONFIG_INET_AH is not set
294# CONFIG_INET_ESP is not set
295# CONFIG_INET_IPCOMP is not set
296# CONFIG_INET_TUNNEL is not set
297CONFIG_IP_TCPDIAG=y
298# CONFIG_IP_TCPDIAG_IPV6 is not set
299# CONFIG_IPV6 is not set
300# CONFIG_NETFILTER is not set
301
302#
303# SCTP Configuration (EXPERIMENTAL)
304#
305# CONFIG_IP_SCTP is not set
306# CONFIG_ATM is not set
307# CONFIG_BRIDGE is not set
308# CONFIG_VLAN_8021Q is not set
309# CONFIG_DECNET is not set
310# CONFIG_LLC2 is not set
311# CONFIG_IPX is not set
312# CONFIG_ATALK is not set
313# CONFIG_X25 is not set
314# CONFIG_LAPB is not set
315# CONFIG_NET_DIVERT is not set
316# CONFIG_ECONET is not set
317# CONFIG_WAN_ROUTER is not set
318
319#
320# QoS and/or fair queueing
321#
322# CONFIG_NET_SCHED is not set
323# CONFIG_NET_CLS_ROUTE is not set
324
325#
326# Network testing
327# 473#
328# CONFIG_NET_PKTGEN is not set
329# CONFIG_NETPOLL is not set
330# CONFIG_NET_POLL_CONTROLLER is not set
331# CONFIG_HAMRADIO is not set
332# CONFIG_IRDA is not set
333# CONFIG_BT is not set
334CONFIG_NETDEVICES=y 474CONFIG_NETDEVICES=y
335# CONFIG_DUMMY is not set 475# CONFIG_DUMMY is not set
336# CONFIG_BONDING is not set 476# CONFIG_BONDING is not set
@@ -338,6 +478,11 @@ CONFIG_NETDEVICES=y
338# CONFIG_TUN is not set 478# CONFIG_TUN is not set
339 479
340# 480#
481# PHY device support
482#
483# CONFIG_PHYLIB is not set
484
485#
341# Ethernet (10 or 100Mbit) 486# Ethernet (10 or 100Mbit)
342# 487#
343CONFIG_NET_ETHERNET=y 488CONFIG_NET_ETHERNET=y
@@ -363,11 +508,6 @@ CONFIG_SMC91X=y
363# CONFIG_NET_RADIO is not set 508# CONFIG_NET_RADIO is not set
364 509
365# 510#
366# PCMCIA network device support
367#
368# CONFIG_NET_PCMCIA is not set
369
370#
371# Wan interfaces 511# Wan interfaces
372# 512#
373# CONFIG_WAN is not set 513# CONFIG_WAN is not set
@@ -375,6 +515,8 @@ CONFIG_SMC91X=y
375# CONFIG_SLIP is not set 515# CONFIG_SLIP is not set
376# CONFIG_SHAPER is not set 516# CONFIG_SHAPER is not set
377# CONFIG_NETCONSOLE is not set 517# CONFIG_NETCONSOLE is not set
518# CONFIG_NETPOLL is not set
519# CONFIG_NET_POLL_CONTROLLER is not set
378 520
379# 521#
380# ISDN subsystem 522# ISDN subsystem
@@ -390,6 +532,7 @@ CONFIG_SMC91X=y
390# Input device support 532# Input device support
391# 533#
392CONFIG_INPUT=y 534CONFIG_INPUT=y
535# CONFIG_INPUT_FF_MEMLESS is not set
393 536
394# 537#
395# Userland interfaces 538# Userland interfaces
@@ -418,7 +561,6 @@ CONFIG_SERIO_SERPORT=y
418# CONFIG_SERIO_LIBPS2 is not set 561# CONFIG_SERIO_LIBPS2 is not set
419# CONFIG_SERIO_RAW is not set 562# CONFIG_SERIO_RAW is not set
420# CONFIG_GAMEPORT is not set 563# CONFIG_GAMEPORT is not set
421CONFIG_SOUND_GAMEPORT=y
422 564
423# 565#
424# Character devices 566# Character devices
@@ -426,6 +568,7 @@ CONFIG_SOUND_GAMEPORT=y
426CONFIG_VT=y 568CONFIG_VT=y
427CONFIG_VT_CONSOLE=y 569CONFIG_VT_CONSOLE=y
428CONFIG_HW_CONSOLE=y 570CONFIG_HW_CONSOLE=y
571# CONFIG_VT_HW_CONSOLE_BINDING is not set
429# CONFIG_SERIAL_NONSTANDARD is not set 572# CONFIG_SERIAL_NONSTANDARD is not set
430 573
431# 574#
@@ -454,8 +597,8 @@ CONFIG_LEGACY_PTY_COUNT=256
454# Watchdog Cards 597# Watchdog Cards
455# 598#
456# CONFIG_WATCHDOG is not set 599# CONFIG_WATCHDOG is not set
600CONFIG_HW_RANDOM=y
457# CONFIG_RTC is not set 601# CONFIG_RTC is not set
458# CONFIG_GEN_RTC is not set
459CONFIG_DS1302=y 602CONFIG_DS1302=y
460# CONFIG_DTLK is not set 603# CONFIG_DTLK is not set
461# CONFIG_R3964 is not set 604# CONFIG_R3964 is not set
@@ -463,17 +606,12 @@ CONFIG_DS1302=y
463# 606#
464# Ftape, the floppy tape device driver 607# Ftape, the floppy tape device driver
465# 608#
466# CONFIG_DRM is not set
467
468#
469# PCMCIA character devices
470#
471# CONFIG_SYNCLINK_CS is not set
472# CONFIG_RAW_DRIVER is not set 609# CONFIG_RAW_DRIVER is not set
473 610
474# 611#
475# TPM devices 612# TPM devices
476# 613#
614# CONFIG_TCG_TPM is not set
477 615
478# 616#
479# I2C support 617# I2C support
@@ -481,34 +619,51 @@ CONFIG_DS1302=y
481# CONFIG_I2C is not set 619# CONFIG_I2C is not set
482 620
483# 621#
622# SPI support
623#
624# CONFIG_SPI is not set
625# CONFIG_SPI_MASTER is not set
626
627#
484# Dallas's 1-wire bus 628# Dallas's 1-wire bus
485# 629#
486# CONFIG_W1 is not set 630# CONFIG_W1 is not set
487 631
488# 632#
489# Misc devices 633# Hardware Monitoring support
490# 634#
635CONFIG_HWMON=y
636# CONFIG_HWMON_VID is not set
637# CONFIG_SENSORS_ABITUGURU is not set
638# CONFIG_SENSORS_F71805F is not set
639# CONFIG_SENSORS_VT1211 is not set
640# CONFIG_HWMON_DEBUG_CHIP is not set
491 641
492# 642#
493# Multimedia devices 643# Multimedia devices
494# 644#
495CONFIG_VIDEO_DEV=y 645CONFIG_VIDEO_DEV=m
646CONFIG_VIDEO_V4L1=y
647CONFIG_VIDEO_V4L1_COMPAT=y
648CONFIG_VIDEO_V4L2=y
496 649
497# 650#
498# Video For Linux 651# Video Capture Adapters
499# 652#
500 653
501# 654#
502# Video Adapters 655# Video Capture Adapters
503# 656#
657# CONFIG_VIDEO_ADV_DEBUG is not set
658CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
659# CONFIG_VIDEO_VIVI is not set
504# CONFIG_VIDEO_CPIA is not set 660# CONFIG_VIDEO_CPIA is not set
505CONFIG_VIDEO_M32R_AR=y 661CONFIG_VIDEO_M32R_AR=m
506CONFIG_VIDEO_M32R_AR_M64278=y 662CONFIG_VIDEO_M32R_AR_M64278=m
507 663
508# 664#
509# Radio Adapters 665# Radio Adapters
510# 666#
511# CONFIG_RADIO_MAESTRO is not set
512 667
513# 668#
514# Digital Video Broadcasting Devices 669# Digital Video Broadcasting Devices
@@ -518,15 +673,16 @@ CONFIG_VIDEO_M32R_AR_M64278=y
518# 673#
519# Graphics support 674# Graphics support
520# 675#
676CONFIG_FIRMWARE_EDID=y
521CONFIG_FB=y 677CONFIG_FB=y
522# CONFIG_FB_CFB_FILLRECT is not set 678CONFIG_FB_CFB_FILLRECT=y
523# CONFIG_FB_CFB_COPYAREA is not set 679CONFIG_FB_CFB_COPYAREA=y
524# CONFIG_FB_CFB_IMAGEBLIT is not set 680CONFIG_FB_CFB_IMAGEBLIT=y
525# CONFIG_FB_SOFT_CURSOR is not set
526# CONFIG_FB_MACMODES is not set 681# CONFIG_FB_MACMODES is not set
682# CONFIG_FB_BACKLIGHT is not set
527# CONFIG_FB_MODE_HELPERS is not set 683# CONFIG_FB_MODE_HELPERS is not set
528# CONFIG_FB_TILEBLITTING is not set 684# CONFIG_FB_TILEBLITTING is not set
529# CONFIG_FB_S1D13XXX is not set 685CONFIG_FB_S1D13XXX=y
530# CONFIG_FB_VIRTUAL is not set 686# CONFIG_FB_VIRTUAL is not set
531 687
532# 688#
@@ -535,6 +691,7 @@ CONFIG_FB=y
535# CONFIG_VGA_CONSOLE is not set 691# CONFIG_VGA_CONSOLE is not set
536CONFIG_DUMMY_CONSOLE=y 692CONFIG_DUMMY_CONSOLE=y
537CONFIG_FRAMEBUFFER_CONSOLE=y 693CONFIG_FRAMEBUFFER_CONSOLE=y
694# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
538# CONFIG_FONTS is not set 695# CONFIG_FONTS is not set
539CONFIG_FONT_8x8=y 696CONFIG_FONT_8x8=y
540CONFIG_FONT_8x16=y 697CONFIG_FONT_8x16=y
@@ -546,6 +703,7 @@ CONFIG_LOGO=y
546CONFIG_LOGO_LINUX_MONO=y 703CONFIG_LOGO_LINUX_MONO=y
547CONFIG_LOGO_LINUX_VGA16=y 704CONFIG_LOGO_LINUX_VGA16=y
548CONFIG_LOGO_LINUX_CLUT224=y 705CONFIG_LOGO_LINUX_CLUT224=y
706CONFIG_LOGO_M32R_CLUT224=y
549# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 707# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
550 708
551# 709#
@@ -558,6 +716,11 @@ CONFIG_LOGO_LINUX_CLUT224=y
558# 716#
559# CONFIG_USB_ARCH_HAS_HCD is not set 717# CONFIG_USB_ARCH_HAS_HCD is not set
560# CONFIG_USB_ARCH_HAS_OHCI is not set 718# CONFIG_USB_ARCH_HAS_OHCI is not set
719# CONFIG_USB_ARCH_HAS_EHCI is not set
720
721#
722# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
723#
561 724
562# 725#
563# USB Gadget Support 726# USB Gadget Support
@@ -567,23 +730,62 @@ CONFIG_LOGO_LINUX_CLUT224=y
567# 730#
568# MMC/SD Card support 731# MMC/SD Card support
569# 732#
570# CONFIG_MMC is not set 733CONFIG_MMC=y
734CONFIG_MMC_DEBUG=y
735CONFIG_MMC_BLOCK=y
736# CONFIG_MMC_TIFM_SD is not set
737
738#
739# LED devices
740#
741# CONFIG_NEW_LEDS is not set
742
743#
744# LED drivers
745#
746
747#
748# LED Triggers
749#
571 750
572# 751#
573# InfiniBand support 752# InfiniBand support
574# 753#
575# CONFIG_INFINIBAND is not set 754
755#
756# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
757#
758
759#
760# Real Time Clock
761#
762# CONFIG_RTC_CLASS is not set
763
764#
765# DMA Engine support
766#
767# CONFIG_DMA_ENGINE is not set
768
769#
770# DMA Clients
771#
772
773#
774# DMA Devices
775#
576 776
577# 777#
578# File systems 778# File systems
579# 779#
580CONFIG_EXT2_FS=y 780CONFIG_EXT2_FS=y
581# CONFIG_EXT2_FS_XATTR is not set 781# CONFIG_EXT2_FS_XATTR is not set
582CONFIG_EXT3_FS=m 782# CONFIG_EXT2_FS_XIP is not set
783CONFIG_EXT3_FS=y
583CONFIG_EXT3_FS_XATTR=y 784CONFIG_EXT3_FS_XATTR=y
584# CONFIG_EXT3_FS_POSIX_ACL is not set 785# CONFIG_EXT3_FS_POSIX_ACL is not set
585# CONFIG_EXT3_FS_SECURITY is not set 786# CONFIG_EXT3_FS_SECURITY is not set
586CONFIG_JBD=m 787# CONFIG_EXT4DEV_FS is not set
788CONFIG_JBD=y
587CONFIG_JBD_DEBUG=y 789CONFIG_JBD_DEBUG=y
588CONFIG_FS_MBCACHE=y 790CONFIG_FS_MBCACHE=y
589CONFIG_REISERFS_FS=m 791CONFIG_REISERFS_FS=m
@@ -591,17 +793,19 @@ CONFIG_REISERFS_FS=m
591# CONFIG_REISERFS_PROC_INFO is not set 793# CONFIG_REISERFS_PROC_INFO is not set
592# CONFIG_REISERFS_FS_XATTR is not set 794# CONFIG_REISERFS_FS_XATTR is not set
593# CONFIG_JFS_FS is not set 795# CONFIG_JFS_FS is not set
594 796# CONFIG_FS_POSIX_ACL is not set
595#
596# XFS support
597#
598# CONFIG_XFS_FS is not set 797# CONFIG_XFS_FS is not set
798# CONFIG_GFS2_FS is not set
799# CONFIG_OCFS2_FS is not set
599# CONFIG_MINIX_FS is not set 800# CONFIG_MINIX_FS is not set
600# CONFIG_ROMFS_FS is not set 801# CONFIG_ROMFS_FS is not set
802CONFIG_INOTIFY=y
803CONFIG_INOTIFY_USER=y
601# CONFIG_QUOTA is not set 804# CONFIG_QUOTA is not set
602CONFIG_DNOTIFY=y 805CONFIG_DNOTIFY=y
603# CONFIG_AUTOFS_FS is not set 806# CONFIG_AUTOFS_FS is not set
604# CONFIG_AUTOFS4_FS is not set 807# CONFIG_AUTOFS4_FS is not set
808# CONFIG_FUSE_FS is not set
605 809
606# 810#
607# CD-ROM/DVD Filesystems 811# CD-ROM/DVD Filesystems
@@ -627,15 +831,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
627# 831#
628CONFIG_PROC_FS=y 832CONFIG_PROC_FS=y
629CONFIG_PROC_KCORE=y 833CONFIG_PROC_KCORE=y
834CONFIG_PROC_SYSCTL=y
630CONFIG_SYSFS=y 835CONFIG_SYSFS=y
631CONFIG_DEVFS_FS=y
632CONFIG_DEVFS_MOUNT=y
633# CONFIG_DEVFS_DEBUG is not set
634# CONFIG_DEVPTS_FS_XATTR is not set
635CONFIG_TMPFS=y 836CONFIG_TMPFS=y
636# CONFIG_TMPFS_XATTR is not set 837# CONFIG_TMPFS_POSIX_ACL is not set
637# CONFIG_HUGETLB_PAGE is not set 838# CONFIG_HUGETLB_PAGE is not set
638CONFIG_RAMFS=y 839CONFIG_RAMFS=y
840# CONFIG_CONFIGFS_FS is not set
639 841
640# 842#
641# Miscellaneous filesystems 843# Miscellaneous filesystems
@@ -647,6 +849,8 @@ CONFIG_RAMFS=y
647# CONFIG_BEFS_FS is not set 849# CONFIG_BEFS_FS is not set
648# CONFIG_BFS_FS is not set 850# CONFIG_BFS_FS is not set
649# CONFIG_EFS_FS is not set 851# CONFIG_EFS_FS is not set
852# CONFIG_JFFS_FS is not set
853# CONFIG_JFFS2_FS is not set
650# CONFIG_CRAMFS is not set 854# CONFIG_CRAMFS is not set
651# CONFIG_VXFS_FS is not set 855# CONFIG_VXFS_FS is not set
652# CONFIG_HPFS_FS is not set 856# CONFIG_HPFS_FS is not set
@@ -659,12 +863,14 @@ CONFIG_RAMFS=y
659# 863#
660CONFIG_NFS_FS=y 864CONFIG_NFS_FS=y
661CONFIG_NFS_V3=y 865CONFIG_NFS_V3=y
866# CONFIG_NFS_V3_ACL is not set
662# CONFIG_NFS_V4 is not set 867# CONFIG_NFS_V4 is not set
663# CONFIG_NFS_DIRECTIO is not set 868# CONFIG_NFS_DIRECTIO is not set
664# CONFIG_NFSD is not set 869# CONFIG_NFSD is not set
665CONFIG_ROOT_NFS=y 870CONFIG_ROOT_NFS=y
666CONFIG_LOCKD=y 871CONFIG_LOCKD=y
667CONFIG_LOCKD_V4=y 872CONFIG_LOCKD_V4=y
873CONFIG_NFS_COMMON=y
668CONFIG_SUNRPC=y 874CONFIG_SUNRPC=y
669# CONFIG_RPCSEC_GSS_KRB5 is not set 875# CONFIG_RPCSEC_GSS_KRB5 is not set
670# CONFIG_RPCSEC_GSS_SPKM3 is not set 876# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -673,6 +879,7 @@ CONFIG_SUNRPC=y
673# CONFIG_NCP_FS is not set 879# CONFIG_NCP_FS is not set
674# CONFIG_CODA_FS is not set 880# CONFIG_CODA_FS is not set
675# CONFIG_AFS_FS is not set 881# CONFIG_AFS_FS is not set
882# CONFIG_9P_FS is not set
676 883
677# 884#
678# Partition Types 885# Partition Types
@@ -727,16 +934,23 @@ CONFIG_NLS_DEFAULT="iso8859-1"
727# 934#
728# Profiling support 935# Profiling support
729# 936#
730# CONFIG_PROFILING is not set 937CONFIG_PROFILING=y
938CONFIG_OPROFILE=y
731 939
732# 940#
733# Kernel hacking 941# Kernel hacking
734# 942#
735# CONFIG_PRINTK_TIME is not set 943# CONFIG_PRINTK_TIME is not set
944CONFIG_ENABLE_MUST_CHECK=y
945# CONFIG_MAGIC_SYSRQ is not set
946# CONFIG_UNUSED_SYMBOLS is not set
736# CONFIG_DEBUG_KERNEL is not set 947# CONFIG_DEBUG_KERNEL is not set
737CONFIG_LOG_BUF_SHIFT=15 948CONFIG_LOG_BUF_SHIFT=15
738# CONFIG_DEBUG_BUGVERBOSE is not set 949# CONFIG_DEBUG_BUGVERBOSE is not set
950# CONFIG_DEBUG_FS is not set
739# CONFIG_FRAME_POINTER is not set 951# CONFIG_FRAME_POINTER is not set
952# CONFIG_UNWIND_INFO is not set
953# CONFIG_HEADERS_CHECK is not set
740 954
741# 955#
742# Security options 956# Security options
@@ -750,12 +964,9 @@ CONFIG_LOG_BUF_SHIFT=15
750# CONFIG_CRYPTO is not set 964# CONFIG_CRYPTO is not set
751 965
752# 966#
753# Hardware crypto devices
754#
755
756#
757# Library routines 967# Library routines
758# 968#
759# CONFIG_CRC_CCITT is not set 969# CONFIG_CRC_CCITT is not set
970# CONFIG_CRC16 is not set
760CONFIG_CRC32=y 971CONFIG_CRC32=y
761# CONFIG_LIBCRC32C is not set 972# CONFIG_LIBCRC32C is not set
diff --git a/arch/m32r/m32700ut/defconfig.m32700ut.up b/arch/m32r/m32700ut/defconfig.m32700ut.up
index 2d3e7cda8f46..190f961d33e2 100644
--- a/arch/m32r/m32700ut/defconfig.m32700ut.up
+++ b/arch/m32r/m32700ut/defconfig.m32700ut.up
@@ -1,19 +1,18 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.12-rc5 3# Linux kernel version: 2.6.19
4# Fri Jun 3 16:21:34 2005 4# Tue Dec 12 12:07:08 2006
5# 5#
6CONFIG_M32R=y 6CONFIG_M32R=y
7# CONFIG_UID16 is not set
8CONFIG_GENERIC_ISA_DMA=y 7CONFIG_GENERIC_ISA_DMA=y
9CONFIG_GENERIC_HARDIRQS=y 8CONFIG_GENERIC_HARDIRQS=y
10CONFIG_GENERIC_IRQ_PROBE=y 9CONFIG_GENERIC_IRQ_PROBE=y
10CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11 11
12# 12#
13# Code maturity level options 13# Code maturity level options
14# 14#
15CONFIG_EXPERIMENTAL=y 15CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_BROKEN_ON_SMP=y 16CONFIG_BROKEN_ON_SMP=y
18CONFIG_LOCK_KERNEL=y 17CONFIG_LOCK_KERNEL=y
19CONFIG_INIT_ENV_ARG_LIMIT=32 18CONFIG_INIT_ENV_ARG_LIMIT=32
@@ -22,32 +21,39 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
22# General setup 21# General setup
23# 22#
24CONFIG_LOCALVERSION="" 23CONFIG_LOCALVERSION=""
24CONFIG_LOCALVERSION_AUTO=y
25CONFIG_SWAP=y 25CONFIG_SWAP=y
26CONFIG_SYSVIPC=y 26CONFIG_SYSVIPC=y
27# CONFIG_IPC_NS is not set
27# CONFIG_POSIX_MQUEUE is not set 28# CONFIG_POSIX_MQUEUE is not set
28CONFIG_BSD_PROCESS_ACCT=y 29CONFIG_BSD_PROCESS_ACCT=y
29# CONFIG_BSD_PROCESS_ACCT_V3 is not set 30# CONFIG_BSD_PROCESS_ACCT_V3 is not set
30CONFIG_SYSCTL=y 31# CONFIG_TASKSTATS is not set
32# CONFIG_UTS_NS is not set
31# CONFIG_AUDIT is not set 33# CONFIG_AUDIT is not set
32CONFIG_HOTPLUG=y
33CONFIG_KOBJECT_UEVENT=y
34CONFIG_IKCONFIG=y 34CONFIG_IKCONFIG=y
35# CONFIG_IKCONFIG_PROC is not set 35CONFIG_IKCONFIG_PROC=y
36CONFIG_SYSFS_DEPRECATED=y
37# CONFIG_RELAY is not set
38CONFIG_INITRAMFS_SOURCE=""
39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
40CONFIG_SYSCTL=y
36CONFIG_EMBEDDED=y 41CONFIG_EMBEDDED=y
42CONFIG_SYSCTL_SYSCALL=y
37# CONFIG_KALLSYMS is not set 43# CONFIG_KALLSYMS is not set
44CONFIG_HOTPLUG=y
38CONFIG_PRINTK=y 45CONFIG_PRINTK=y
39CONFIG_BUG=y 46CONFIG_BUG=y
47CONFIG_ELF_CORE=y
40CONFIG_BASE_FULL=y 48CONFIG_BASE_FULL=y
41# CONFIG_FUTEX is not set 49# CONFIG_FUTEX is not set
42# CONFIG_EPOLL is not set 50# CONFIG_EPOLL is not set
43# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
44CONFIG_SHMEM=y 51CONFIG_SHMEM=y
45CONFIG_CC_ALIGN_FUNCTIONS=0 52CONFIG_SLAB=y
46CONFIG_CC_ALIGN_LABELS=0 53CONFIG_VM_EVENT_COUNTERS=y
47CONFIG_CC_ALIGN_LOOPS=0
48CONFIG_CC_ALIGN_JUMPS=0
49# CONFIG_TINY_SHMEM is not set 54# CONFIG_TINY_SHMEM is not set
50CONFIG_BASE_SMALL=0 55CONFIG_BASE_SMALL=0
56# CONFIG_SLOB is not set
51 57
52# 58#
53# Loadable module support 59# Loadable module support
@@ -55,12 +61,30 @@ CONFIG_BASE_SMALL=0
55CONFIG_MODULES=y 61CONFIG_MODULES=y
56CONFIG_MODULE_UNLOAD=y 62CONFIG_MODULE_UNLOAD=y
57# CONFIG_MODULE_FORCE_UNLOAD is not set 63# CONFIG_MODULE_FORCE_UNLOAD is not set
58CONFIG_OBSOLETE_MODPARM=y
59# CONFIG_MODVERSIONS is not set 64# CONFIG_MODVERSIONS is not set
60# CONFIG_MODULE_SRCVERSION_ALL is not set 65# CONFIG_MODULE_SRCVERSION_ALL is not set
61CONFIG_KMOD=y 66CONFIG_KMOD=y
62 67
63# 68#
69# Block layer
70#
71CONFIG_BLOCK=y
72# CONFIG_BLK_DEV_IO_TRACE is not set
73
74#
75# IO Schedulers
76#
77CONFIG_IOSCHED_NOOP=y
78# CONFIG_IOSCHED_AS is not set
79CONFIG_IOSCHED_DEADLINE=y
80CONFIG_IOSCHED_CFQ=y
81# CONFIG_DEFAULT_AS is not set
82# CONFIG_DEFAULT_DEADLINE is not set
83CONFIG_DEFAULT_CFQ=y
84# CONFIG_DEFAULT_NOOP is not set
85CONFIG_DEFAULT_IOSCHED="cfq"
86
87#
64# Processor type and features 88# Processor type and features
65# 89#
66# CONFIG_PLAT_MAPPI is not set 90# CONFIG_PLAT_MAPPI is not set
@@ -70,8 +94,10 @@ CONFIG_PLAT_M32700UT=y
70# CONFIG_PLAT_OAKS32R is not set 94# CONFIG_PLAT_OAKS32R is not set
71# CONFIG_PLAT_MAPPI2 is not set 95# CONFIG_PLAT_MAPPI2 is not set
72# CONFIG_PLAT_MAPPI3 is not set 96# CONFIG_PLAT_MAPPI3 is not set
97# CONFIG_PLAT_M32104UT is not set
73CONFIG_CHIP_M32700=y 98CONFIG_CHIP_M32700=y
74# CONFIG_CHIP_M32102 is not set 99# CONFIG_CHIP_M32102 is not set
100# CONFIG_CHIP_M32104 is not set
75# CONFIG_CHIP_VDEC2 is not set 101# CONFIG_CHIP_VDEC2 is not set
76# CONFIG_CHIP_OPSP is not set 102# CONFIG_CHIP_OPSP is not set
77CONFIG_MMU=y 103CONFIG_MMU=y
@@ -85,34 +111,37 @@ CONFIG_TIMER_DIVIDE=128
85CONFIG_MEMORY_START=0x08000000 111CONFIG_MEMORY_START=0x08000000
86CONFIG_MEMORY_SIZE=0x01000000 112CONFIG_MEMORY_SIZE=0x01000000
87CONFIG_NOHIGHMEM=y 113CONFIG_NOHIGHMEM=y
88# CONFIG_DISCONTIGMEM is not set 114CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
115CONFIG_SELECT_MEMORY_MODEL=y
116# CONFIG_FLATMEM_MANUAL is not set
117CONFIG_DISCONTIGMEM_MANUAL=y
118# CONFIG_SPARSEMEM_MANUAL is not set
119CONFIG_DISCONTIGMEM=y
120CONFIG_FLAT_NODE_MEM_MAP=y
121CONFIG_NEED_MULTIPLE_NODES=y
122# CONFIG_SPARSEMEM_STATIC is not set
123CONFIG_SPLIT_PTLOCK_CPUS=4
124# CONFIG_RESOURCES_64BIT is not set
125CONFIG_IRAM_START=0x00f00000
126CONFIG_IRAM_SIZE=0x00080000
89CONFIG_RWSEM_GENERIC_SPINLOCK=y 127CONFIG_RWSEM_GENERIC_SPINLOCK=y
90# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 128# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
129CONFIG_GENERIC_FIND_NEXT_BIT=y
130CONFIG_GENERIC_HWEIGHT=y
91CONFIG_GENERIC_CALIBRATE_DELAY=y 131CONFIG_GENERIC_CALIBRATE_DELAY=y
92CONFIG_PREEMPT=y 132CONFIG_PREEMPT=y
93# CONFIG_HAVE_DEC_LOCK is not set
94# CONFIG_SMP is not set 133# CONFIG_SMP is not set
134CONFIG_NODES_SHIFT=1
95 135
96# 136#
97# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 137# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
98# 138#
99# CONFIG_PCI is not set
100# CONFIG_ISA is not set 139# CONFIG_ISA is not set
101 140
102# 141#
103# PCCARD (PCMCIA/CardBus) support 142# PCCARD (PCMCIA/CardBus) support
104# 143#
105CONFIG_PCCARD=y 144# CONFIG_PCCARD is not set
106# CONFIG_PCMCIA_DEBUG is not set
107CONFIG_PCMCIA=y
108
109#
110# PC-card bridges
111#
112# CONFIG_TCIC is not set
113# CONFIG_M32R_PCC is not set
114CONFIG_M32R_CFC=y
115CONFIG_M32R_CFC_NUM=1
116 145
117# 146#
118# PCI Hotplug Support 147# PCI Hotplug Support
@@ -125,6 +154,94 @@ CONFIG_BINFMT_ELF=y
125# CONFIG_BINFMT_MISC is not set 154# CONFIG_BINFMT_MISC is not set
126 155
127# 156#
157# Networking
158#
159CONFIG_NET=y
160
161#
162# Networking options
163#
164# CONFIG_NETDEBUG is not set
165CONFIG_PACKET=y
166# CONFIG_PACKET_MMAP is not set
167CONFIG_UNIX=y
168CONFIG_XFRM=y
169# CONFIG_XFRM_USER is not set
170# CONFIG_XFRM_SUB_POLICY is not set
171# CONFIG_NET_KEY is not set
172CONFIG_INET=y
173# CONFIG_IP_MULTICAST is not set
174# CONFIG_IP_ADVANCED_ROUTER is not set
175CONFIG_IP_FIB_HASH=y
176CONFIG_IP_PNP=y
177CONFIG_IP_PNP_DHCP=y
178# CONFIG_IP_PNP_BOOTP is not set
179# CONFIG_IP_PNP_RARP is not set
180# CONFIG_NET_IPIP is not set
181# CONFIG_NET_IPGRE is not set
182# CONFIG_ARPD is not set
183# CONFIG_SYN_COOKIES is not set
184# CONFIG_INET_AH is not set
185# CONFIG_INET_ESP is not set
186# CONFIG_INET_IPCOMP is not set
187# CONFIG_INET_XFRM_TUNNEL is not set
188# CONFIG_INET_TUNNEL is not set
189CONFIG_INET_XFRM_MODE_TRANSPORT=y
190CONFIG_INET_XFRM_MODE_TUNNEL=y
191CONFIG_INET_XFRM_MODE_BEET=y
192CONFIG_INET_DIAG=y
193CONFIG_INET_TCP_DIAG=y
194# CONFIG_TCP_CONG_ADVANCED is not set
195CONFIG_TCP_CONG_CUBIC=y
196CONFIG_DEFAULT_TCP_CONG="cubic"
197# CONFIG_TCP_MD5SIG is not set
198# CONFIG_IPV6 is not set
199# CONFIG_INET6_XFRM_TUNNEL is not set
200# CONFIG_INET6_TUNNEL is not set
201# CONFIG_NETWORK_SECMARK is not set
202# CONFIG_NETFILTER is not set
203
204#
205# DCCP Configuration (EXPERIMENTAL)
206#
207# CONFIG_IP_DCCP is not set
208
209#
210# SCTP Configuration (EXPERIMENTAL)
211#
212# CONFIG_IP_SCTP is not set
213
214#
215# TIPC Configuration (EXPERIMENTAL)
216#
217# CONFIG_TIPC is not set
218# CONFIG_ATM is not set
219# CONFIG_BRIDGE is not set
220# CONFIG_VLAN_8021Q is not set
221# CONFIG_DECNET is not set
222# CONFIG_LLC2 is not set
223# CONFIG_IPX is not set
224# CONFIG_ATALK is not set
225# CONFIG_X25 is not set
226# CONFIG_LAPB is not set
227# CONFIG_ECONET is not set
228# CONFIG_WAN_ROUTER is not set
229
230#
231# QoS and/or fair queueing
232#
233# CONFIG_NET_SCHED is not set
234
235#
236# Network testing
237#
238# CONFIG_NET_PKTGEN is not set
239# CONFIG_HAMRADIO is not set
240# CONFIG_IRDA is not set
241# CONFIG_BT is not set
242# CONFIG_IEEE80211 is not set
243
244#
128# Device Drivers 245# Device Drivers
129# 246#
130 247
@@ -133,12 +250,100 @@ CONFIG_BINFMT_ELF=y
133# 250#
134CONFIG_STANDALONE=y 251CONFIG_STANDALONE=y
135CONFIG_PREVENT_FIRMWARE_BUILD=y 252CONFIG_PREVENT_FIRMWARE_BUILD=y
136# CONFIG_FW_LOADER is not set 253CONFIG_FW_LOADER=y
254# CONFIG_SYS_HYPERVISOR is not set
255
256#
257# Connector - unified userspace <-> kernelspace linker
258#
259# CONFIG_CONNECTOR is not set
137 260
138# 261#
139# Memory Technology Devices (MTD) 262# Memory Technology Devices (MTD)
140# 263#
141# CONFIG_MTD is not set 264CONFIG_MTD=y
265# CONFIG_MTD_DEBUG is not set
266# CONFIG_MTD_CONCAT is not set
267CONFIG_MTD_PARTITIONS=y
268CONFIG_MTD_REDBOOT_PARTS=y
269CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
270# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
271# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
272# CONFIG_MTD_CMDLINE_PARTS is not set
273
274#
275# User Modules And Translation Layers
276#
277# CONFIG_MTD_CHAR is not set
278CONFIG_MTD_BLOCK=y
279# CONFIG_FTL is not set
280# CONFIG_NFTL is not set
281# CONFIG_INFTL is not set
282# CONFIG_RFD_FTL is not set
283# CONFIG_SSFDC is not set
284
285#
286# RAM/ROM/Flash chip drivers
287#
288CONFIG_MTD_CFI=m
289CONFIG_MTD_JEDECPROBE=m
290CONFIG_MTD_GEN_PROBE=m
291CONFIG_MTD_CFI_ADV_OPTIONS=y
292# CONFIG_MTD_CFI_NOSWAP is not set
293CONFIG_MTD_CFI_BE_BYTE_SWAP=y
294# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
295CONFIG_MTD_CFI_GEOMETRY=y
296CONFIG_MTD_MAP_BANK_WIDTH_1=y
297CONFIG_MTD_MAP_BANK_WIDTH_2=y
298CONFIG_MTD_MAP_BANK_WIDTH_4=y
299# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
300# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
301# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
302CONFIG_MTD_CFI_I1=y
303# CONFIG_MTD_CFI_I2 is not set
304# CONFIG_MTD_CFI_I4 is not set
305# CONFIG_MTD_CFI_I8 is not set
306# CONFIG_MTD_OTP is not set
307# CONFIG_MTD_CFI_INTELEXT is not set
308CONFIG_MTD_CFI_AMDSTD=m
309# CONFIG_MTD_CFI_STAA is not set
310CONFIG_MTD_CFI_UTIL=m
311# CONFIG_MTD_RAM is not set
312# CONFIG_MTD_ROM is not set
313# CONFIG_MTD_ABSENT is not set
314# CONFIG_MTD_OBSOLETE_CHIPS is not set
315
316#
317# Mapping drivers for chip access
318#
319# CONFIG_MTD_COMPLEX_MAPPINGS is not set
320# CONFIG_MTD_PHYSMAP is not set
321# CONFIG_MTD_PLATRAM is not set
322
323#
324# Self-contained MTD device drivers
325#
326# CONFIG_MTD_SLRAM is not set
327# CONFIG_MTD_PHRAM is not set
328# CONFIG_MTD_MTDRAM is not set
329# CONFIG_MTD_BLOCK2MTD is not set
330
331#
332# Disk-On-Chip Device Drivers
333#
334# CONFIG_MTD_DOC2000 is not set
335# CONFIG_MTD_DOC2001 is not set
336# CONFIG_MTD_DOC2001PLUS is not set
337
338#
339# NAND Flash Device Drivers
340#
341# CONFIG_MTD_NAND is not set
342
343#
344# OneNAND Flash Device Drivers
345#
346# CONFIG_MTD_ONENAND is not set
142 347
143# 348#
144# Parallel port support 349# Parallel port support
@@ -152,7 +357,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
152# 357#
153# Block devices 358# Block devices
154# 359#
155# CONFIG_BLK_DEV_FD is not set
156# CONFIG_BLK_DEV_COW_COMMON is not set 360# CONFIG_BLK_DEV_COW_COMMON is not set
157CONFIG_BLK_DEV_LOOP=y 361CONFIG_BLK_DEV_LOOP=y
158# CONFIG_BLK_DEV_CRYPTOLOOP is not set 362# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -160,23 +364,21 @@ CONFIG_BLK_DEV_NBD=y
160CONFIG_BLK_DEV_RAM=y 364CONFIG_BLK_DEV_RAM=y
161CONFIG_BLK_DEV_RAM_COUNT=16 365CONFIG_BLK_DEV_RAM_COUNT=16
162CONFIG_BLK_DEV_RAM_SIZE=4096 366CONFIG_BLK_DEV_RAM_SIZE=4096
367CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
163# CONFIG_BLK_DEV_INITRD is not set 368# CONFIG_BLK_DEV_INITRD is not set
164CONFIG_INITRAMFS_SOURCE=""
165# CONFIG_CDROM_PKTCDVD is not set 369# CONFIG_CDROM_PKTCDVD is not set
370CONFIG_ATA_OVER_ETH=m
166 371
167# 372#
168# IO Schedulers 373# Misc devices
169# 374#
170CONFIG_IOSCHED_NOOP=y 375# CONFIG_TIFM_CORE is not set
171# CONFIG_IOSCHED_AS is not set
172CONFIG_IOSCHED_DEADLINE=y
173CONFIG_IOSCHED_CFQ=y
174# CONFIG_ATA_OVER_ETH is not set
175 376
176# 377#
177# ATA/ATAPI/MFM/RLL support 378# ATA/ATAPI/MFM/RLL support
178# 379#
179CONFIG_IDE=y 380CONFIG_IDE=y
381CONFIG_IDE_MAX_HWIFS=4
180CONFIG_BLK_DEV_IDE=y 382CONFIG_BLK_DEV_IDE=y
181 383
182# 384#
@@ -185,7 +387,6 @@ CONFIG_BLK_DEV_IDE=y
185# CONFIG_BLK_DEV_IDE_SATA is not set 387# CONFIG_BLK_DEV_IDE_SATA is not set
186CONFIG_BLK_DEV_IDEDISK=y 388CONFIG_BLK_DEV_IDEDISK=y
187# CONFIG_IDEDISK_MULTI_MODE is not set 389# CONFIG_IDEDISK_MULTI_MODE is not set
188CONFIG_BLK_DEV_IDECS=y
189CONFIG_BLK_DEV_IDECD=m 390CONFIG_BLK_DEV_IDECD=m
190# CONFIG_BLK_DEV_IDETAPE is not set 391# CONFIG_BLK_DEV_IDETAPE is not set
191# CONFIG_BLK_DEV_IDEFLOPPY is not set 392# CONFIG_BLK_DEV_IDEFLOPPY is not set
@@ -204,7 +405,9 @@ CONFIG_IDE_GENERIC=y
204# 405#
205# SCSI device support 406# SCSI device support
206# 407#
408# CONFIG_RAID_ATTRS is not set
207CONFIG_SCSI=m 409CONFIG_SCSI=m
410# CONFIG_SCSI_NETLINK is not set
208CONFIG_SCSI_PROC_FS=y 411CONFIG_SCSI_PROC_FS=y
209 412
210# 413#
@@ -216,6 +419,7 @@ CONFIG_BLK_DEV_SD=m
216CONFIG_BLK_DEV_SR=m 419CONFIG_BLK_DEV_SR=m
217# CONFIG_BLK_DEV_SR_VENDOR is not set 420# CONFIG_BLK_DEV_SR_VENDOR is not set
218CONFIG_CHR_DEV_SG=m 421CONFIG_CHR_DEV_SG=m
422# CONFIG_CHR_DEV_SCH is not set
219 423
220# 424#
221# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 425# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -225,26 +429,23 @@ CONFIG_SCSI_MULTI_LUN=y
225# CONFIG_SCSI_LOGGING is not set 429# CONFIG_SCSI_LOGGING is not set
226 430
227# 431#
228# SCSI Transport Attributes 432# SCSI Transports
229# 433#
230# CONFIG_SCSI_SPI_ATTRS is not set 434# CONFIG_SCSI_SPI_ATTRS is not set
231# CONFIG_SCSI_FC_ATTRS is not set 435# CONFIG_SCSI_FC_ATTRS is not set
232# CONFIG_SCSI_ISCSI_ATTRS is not set 436# CONFIG_SCSI_ISCSI_ATTRS is not set
437# CONFIG_SCSI_SAS_ATTRS is not set
438# CONFIG_SCSI_SAS_LIBSAS is not set
233 439
234# 440#
235# SCSI low-level drivers 441# SCSI low-level drivers
236# 442#
237# CONFIG_SCSI_SATA is not set 443# CONFIG_ISCSI_TCP is not set
238# CONFIG_SCSI_DEBUG is not set 444# CONFIG_SCSI_DEBUG is not set
239 445
240# 446#
241# PCMCIA SCSI adapter support 447# Serial ATA (prod) and Parallel ATA (experimental) drivers
242# 448#
243# CONFIG_PCMCIA_AHA152X is not set
244# CONFIG_PCMCIA_FDOMAIN is not set
245# CONFIG_PCMCIA_NINJA_SCSI is not set
246# CONFIG_PCMCIA_QLOGIC is not set
247# CONFIG_PCMCIA_SYM53C500 is not set
248 449
249# 450#
250# Multi-device support (RAID and LVM) 451# Multi-device support (RAID and LVM)
@@ -254,6 +455,7 @@ CONFIG_SCSI_MULTI_LUN=y
254# 455#
255# Fusion MPT device support 456# Fusion MPT device support
256# 457#
458# CONFIG_FUSION is not set
257 459
258# 460#
259# IEEE 1394 (FireWire) support 461# IEEE 1394 (FireWire) support
@@ -264,69 +466,8 @@ CONFIG_SCSI_MULTI_LUN=y
264# 466#
265 467
266# 468#
267# Networking support 469# Network device support
268#
269CONFIG_NET=y
270
271#
272# Networking options
273#
274CONFIG_PACKET=y
275# CONFIG_PACKET_MMAP is not set
276CONFIG_UNIX=y
277# CONFIG_NET_KEY is not set
278CONFIG_INET=y
279# CONFIG_IP_MULTICAST is not set
280# CONFIG_IP_ADVANCED_ROUTER is not set
281CONFIG_IP_PNP=y
282CONFIG_IP_PNP_DHCP=y
283# CONFIG_IP_PNP_BOOTP is not set
284# CONFIG_IP_PNP_RARP is not set
285# CONFIG_NET_IPIP is not set
286# CONFIG_NET_IPGRE is not set
287# CONFIG_ARPD is not set
288# CONFIG_SYN_COOKIES is not set
289# CONFIG_INET_AH is not set
290# CONFIG_INET_ESP is not set
291# CONFIG_INET_IPCOMP is not set
292# CONFIG_INET_TUNNEL is not set
293CONFIG_IP_TCPDIAG=y
294# CONFIG_IP_TCPDIAG_IPV6 is not set
295# CONFIG_IPV6 is not set
296# CONFIG_NETFILTER is not set
297
298#
299# SCTP Configuration (EXPERIMENTAL)
300#
301# CONFIG_IP_SCTP is not set
302# CONFIG_ATM is not set
303# CONFIG_BRIDGE is not set
304# CONFIG_VLAN_8021Q is not set
305# CONFIG_DECNET is not set
306# CONFIG_LLC2 is not set
307# CONFIG_IPX is not set
308# CONFIG_ATALK is not set
309# CONFIG_X25 is not set
310# CONFIG_LAPB is not set
311# CONFIG_NET_DIVERT is not set
312# CONFIG_ECONET is not set
313# CONFIG_WAN_ROUTER is not set
314
315#
316# QoS and/or fair queueing
317#
318# CONFIG_NET_SCHED is not set
319# CONFIG_NET_CLS_ROUTE is not set
320
321#
322# Network testing
323# 470#
324# CONFIG_NET_PKTGEN is not set
325# CONFIG_NETPOLL is not set
326# CONFIG_NET_POLL_CONTROLLER is not set
327# CONFIG_HAMRADIO is not set
328# CONFIG_IRDA is not set
329# CONFIG_BT is not set
330CONFIG_NETDEVICES=y 471CONFIG_NETDEVICES=y
331# CONFIG_DUMMY is not set 472# CONFIG_DUMMY is not set
332# CONFIG_BONDING is not set 473# CONFIG_BONDING is not set
@@ -334,6 +475,11 @@ CONFIG_NETDEVICES=y
334# CONFIG_TUN is not set 475# CONFIG_TUN is not set
335 476
336# 477#
478# PHY device support
479#
480# CONFIG_PHYLIB is not set
481
482#
337# Ethernet (10 or 100Mbit) 483# Ethernet (10 or 100Mbit)
338# 484#
339CONFIG_NET_ETHERNET=y 485CONFIG_NET_ETHERNET=y
@@ -359,11 +505,6 @@ CONFIG_SMC91X=y
359# CONFIG_NET_RADIO is not set 505# CONFIG_NET_RADIO is not set
360 506
361# 507#
362# PCMCIA network device support
363#
364# CONFIG_NET_PCMCIA is not set
365
366#
367# Wan interfaces 508# Wan interfaces
368# 509#
369# CONFIG_WAN is not set 510# CONFIG_WAN is not set
@@ -371,6 +512,8 @@ CONFIG_SMC91X=y
371# CONFIG_SLIP is not set 512# CONFIG_SLIP is not set
372# CONFIG_SHAPER is not set 513# CONFIG_SHAPER is not set
373# CONFIG_NETCONSOLE is not set 514# CONFIG_NETCONSOLE is not set
515# CONFIG_NETPOLL is not set
516# CONFIG_NET_POLL_CONTROLLER is not set
374 517
375# 518#
376# ISDN subsystem 519# ISDN subsystem
@@ -386,6 +529,7 @@ CONFIG_SMC91X=y
386# Input device support 529# Input device support
387# 530#
388CONFIG_INPUT=y 531CONFIG_INPUT=y
532# CONFIG_INPUT_FF_MEMLESS is not set
389 533
390# 534#
391# Userland interfaces 535# Userland interfaces
@@ -414,7 +558,6 @@ CONFIG_SERIO_SERPORT=y
414# CONFIG_SERIO_LIBPS2 is not set 558# CONFIG_SERIO_LIBPS2 is not set
415# CONFIG_SERIO_RAW is not set 559# CONFIG_SERIO_RAW is not set
416# CONFIG_GAMEPORT is not set 560# CONFIG_GAMEPORT is not set
417CONFIG_SOUND_GAMEPORT=y
418 561
419# 562#
420# Character devices 563# Character devices
@@ -422,6 +565,7 @@ CONFIG_SOUND_GAMEPORT=y
422CONFIG_VT=y 565CONFIG_VT=y
423CONFIG_VT_CONSOLE=y 566CONFIG_VT_CONSOLE=y
424CONFIG_HW_CONSOLE=y 567CONFIG_HW_CONSOLE=y
568# CONFIG_VT_HW_CONSOLE_BINDING is not set
425# CONFIG_SERIAL_NONSTANDARD is not set 569# CONFIG_SERIAL_NONSTANDARD is not set
426 570
427# 571#
@@ -450,8 +594,8 @@ CONFIG_LEGACY_PTY_COUNT=256
450# Watchdog Cards 594# Watchdog Cards
451# 595#
452# CONFIG_WATCHDOG is not set 596# CONFIG_WATCHDOG is not set
597CONFIG_HW_RANDOM=y
453# CONFIG_RTC is not set 598# CONFIG_RTC is not set
454# CONFIG_GEN_RTC is not set
455CONFIG_DS1302=y 599CONFIG_DS1302=y
456# CONFIG_DTLK is not set 600# CONFIG_DTLK is not set
457# CONFIG_R3964 is not set 601# CONFIG_R3964 is not set
@@ -459,17 +603,12 @@ CONFIG_DS1302=y
459# 603#
460# Ftape, the floppy tape device driver 604# Ftape, the floppy tape device driver
461# 605#
462# CONFIG_DRM is not set
463
464#
465# PCMCIA character devices
466#
467# CONFIG_SYNCLINK_CS is not set
468# CONFIG_RAW_DRIVER is not set 606# CONFIG_RAW_DRIVER is not set
469 607
470# 608#
471# TPM devices 609# TPM devices
472# 610#
611# CONFIG_TCG_TPM is not set
473 612
474# 613#
475# I2C support 614# I2C support
@@ -477,34 +616,51 @@ CONFIG_DS1302=y
477# CONFIG_I2C is not set 616# CONFIG_I2C is not set
478 617
479# 618#
619# SPI support
620#
621# CONFIG_SPI is not set
622# CONFIG_SPI_MASTER is not set
623
624#
480# Dallas's 1-wire bus 625# Dallas's 1-wire bus
481# 626#
482# CONFIG_W1 is not set 627# CONFIG_W1 is not set
483 628
484# 629#
485# Misc devices 630# Hardware Monitoring support
486# 631#
632CONFIG_HWMON=y
633# CONFIG_HWMON_VID is not set
634# CONFIG_SENSORS_ABITUGURU is not set
635# CONFIG_SENSORS_F71805F is not set
636# CONFIG_SENSORS_VT1211 is not set
637# CONFIG_HWMON_DEBUG_CHIP is not set
487 638
488# 639#
489# Multimedia devices 640# Multimedia devices
490# 641#
491CONFIG_VIDEO_DEV=y 642CONFIG_VIDEO_DEV=m
643CONFIG_VIDEO_V4L1=y
644CONFIG_VIDEO_V4L1_COMPAT=y
645CONFIG_VIDEO_V4L2=y
492 646
493# 647#
494# Video For Linux 648# Video Capture Adapters
495# 649#
496 650
497# 651#
498# Video Adapters 652# Video Capture Adapters
499# 653#
654# CONFIG_VIDEO_ADV_DEBUG is not set
655CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
656# CONFIG_VIDEO_VIVI is not set
500# CONFIG_VIDEO_CPIA is not set 657# CONFIG_VIDEO_CPIA is not set
501CONFIG_VIDEO_M32R_AR=y 658CONFIG_VIDEO_M32R_AR=m
502CONFIG_VIDEO_M32R_AR_M64278=y 659CONFIG_VIDEO_M32R_AR_M64278=m
503 660
504# 661#
505# Radio Adapters 662# Radio Adapters
506# 663#
507# CONFIG_RADIO_MAESTRO is not set
508 664
509# 665#
510# Digital Video Broadcasting Devices 666# Digital Video Broadcasting Devices
@@ -514,15 +670,16 @@ CONFIG_VIDEO_M32R_AR_M64278=y
514# 670#
515# Graphics support 671# Graphics support
516# 672#
673CONFIG_FIRMWARE_EDID=y
517CONFIG_FB=y 674CONFIG_FB=y
518# CONFIG_FB_CFB_FILLRECT is not set 675CONFIG_FB_CFB_FILLRECT=y
519# CONFIG_FB_CFB_COPYAREA is not set 676CONFIG_FB_CFB_COPYAREA=y
520# CONFIG_FB_CFB_IMAGEBLIT is not set 677CONFIG_FB_CFB_IMAGEBLIT=y
521# CONFIG_FB_SOFT_CURSOR is not set
522# CONFIG_FB_MACMODES is not set 678# CONFIG_FB_MACMODES is not set
679# CONFIG_FB_BACKLIGHT is not set
523# CONFIG_FB_MODE_HELPERS is not set 680# CONFIG_FB_MODE_HELPERS is not set
524# CONFIG_FB_TILEBLITTING is not set 681# CONFIG_FB_TILEBLITTING is not set
525# CONFIG_FB_S1D13XXX is not set 682CONFIG_FB_S1D13XXX=y
526# CONFIG_FB_VIRTUAL is not set 683# CONFIG_FB_VIRTUAL is not set
527 684
528# 685#
@@ -531,6 +688,7 @@ CONFIG_FB=y
531# CONFIG_VGA_CONSOLE is not set 688# CONFIG_VGA_CONSOLE is not set
532CONFIG_DUMMY_CONSOLE=y 689CONFIG_DUMMY_CONSOLE=y
533CONFIG_FRAMEBUFFER_CONSOLE=y 690CONFIG_FRAMEBUFFER_CONSOLE=y
691# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
534# CONFIG_FONTS is not set 692# CONFIG_FONTS is not set
535CONFIG_FONT_8x8=y 693CONFIG_FONT_8x8=y
536CONFIG_FONT_8x16=y 694CONFIG_FONT_8x16=y
@@ -542,6 +700,7 @@ CONFIG_LOGO=y
542CONFIG_LOGO_LINUX_MONO=y 700CONFIG_LOGO_LINUX_MONO=y
543CONFIG_LOGO_LINUX_VGA16=y 701CONFIG_LOGO_LINUX_VGA16=y
544CONFIG_LOGO_LINUX_CLUT224=y 702CONFIG_LOGO_LINUX_CLUT224=y
703CONFIG_LOGO_M32R_CLUT224=y
545# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 704# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
546 705
547# 706#
@@ -554,6 +713,11 @@ CONFIG_LOGO_LINUX_CLUT224=y
554# 713#
555# CONFIG_USB_ARCH_HAS_HCD is not set 714# CONFIG_USB_ARCH_HAS_HCD is not set
556# CONFIG_USB_ARCH_HAS_OHCI is not set 715# CONFIG_USB_ARCH_HAS_OHCI is not set
716# CONFIG_USB_ARCH_HAS_EHCI is not set
717
718#
719# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
720#
557 721
558# 722#
559# USB Gadget Support 723# USB Gadget Support
@@ -563,23 +727,62 @@ CONFIG_LOGO_LINUX_CLUT224=y
563# 727#
564# MMC/SD Card support 728# MMC/SD Card support
565# 729#
566# CONFIG_MMC is not set 730CONFIG_MMC=y
731CONFIG_MMC_DEBUG=y
732CONFIG_MMC_BLOCK=y
733# CONFIG_MMC_TIFM_SD is not set
734
735#
736# LED devices
737#
738# CONFIG_NEW_LEDS is not set
739
740#
741# LED drivers
742#
743
744#
745# LED Triggers
746#
567 747
568# 748#
569# InfiniBand support 749# InfiniBand support
570# 750#
571# CONFIG_INFINIBAND is not set 751
752#
753# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
754#
755
756#
757# Real Time Clock
758#
759# CONFIG_RTC_CLASS is not set
760
761#
762# DMA Engine support
763#
764# CONFIG_DMA_ENGINE is not set
765
766#
767# DMA Clients
768#
769
770#
771# DMA Devices
772#
572 773
573# 774#
574# File systems 775# File systems
575# 776#
576CONFIG_EXT2_FS=y 777CONFIG_EXT2_FS=y
577# CONFIG_EXT2_FS_XATTR is not set 778# CONFIG_EXT2_FS_XATTR is not set
578CONFIG_EXT3_FS=m 779# CONFIG_EXT2_FS_XIP is not set
780CONFIG_EXT3_FS=y
579CONFIG_EXT3_FS_XATTR=y 781CONFIG_EXT3_FS_XATTR=y
580# CONFIG_EXT3_FS_POSIX_ACL is not set 782# CONFIG_EXT3_FS_POSIX_ACL is not set
581# CONFIG_EXT3_FS_SECURITY is not set 783# CONFIG_EXT3_FS_SECURITY is not set
582CONFIG_JBD=m 784# CONFIG_EXT4DEV_FS is not set
785CONFIG_JBD=y
583CONFIG_JBD_DEBUG=y 786CONFIG_JBD_DEBUG=y
584CONFIG_FS_MBCACHE=y 787CONFIG_FS_MBCACHE=y
585CONFIG_REISERFS_FS=m 788CONFIG_REISERFS_FS=m
@@ -587,17 +790,19 @@ CONFIG_REISERFS_FS=m
587# CONFIG_REISERFS_PROC_INFO is not set 790# CONFIG_REISERFS_PROC_INFO is not set
588# CONFIG_REISERFS_FS_XATTR is not set 791# CONFIG_REISERFS_FS_XATTR is not set
589# CONFIG_JFS_FS is not set 792# CONFIG_JFS_FS is not set
590 793# CONFIG_FS_POSIX_ACL is not set
591#
592# XFS support
593#
594# CONFIG_XFS_FS is not set 794# CONFIG_XFS_FS is not set
795# CONFIG_GFS2_FS is not set
796# CONFIG_OCFS2_FS is not set
595# CONFIG_MINIX_FS is not set 797# CONFIG_MINIX_FS is not set
596# CONFIG_ROMFS_FS is not set 798# CONFIG_ROMFS_FS is not set
799CONFIG_INOTIFY=y
800CONFIG_INOTIFY_USER=y
597# CONFIG_QUOTA is not set 801# CONFIG_QUOTA is not set
598CONFIG_DNOTIFY=y 802CONFIG_DNOTIFY=y
599# CONFIG_AUTOFS_FS is not set 803# CONFIG_AUTOFS_FS is not set
600# CONFIG_AUTOFS4_FS is not set 804# CONFIG_AUTOFS4_FS is not set
805# CONFIG_FUSE_FS is not set
601 806
602# 807#
603# CD-ROM/DVD Filesystems 808# CD-ROM/DVD Filesystems
@@ -623,15 +828,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
623# 828#
624CONFIG_PROC_FS=y 829CONFIG_PROC_FS=y
625CONFIG_PROC_KCORE=y 830CONFIG_PROC_KCORE=y
831CONFIG_PROC_SYSCTL=y
626CONFIG_SYSFS=y 832CONFIG_SYSFS=y
627CONFIG_DEVFS_FS=y
628CONFIG_DEVFS_MOUNT=y
629# CONFIG_DEVFS_DEBUG is not set
630# CONFIG_DEVPTS_FS_XATTR is not set
631CONFIG_TMPFS=y 833CONFIG_TMPFS=y
632# CONFIG_TMPFS_XATTR is not set 834# CONFIG_TMPFS_POSIX_ACL is not set
633# CONFIG_HUGETLB_PAGE is not set 835# CONFIG_HUGETLB_PAGE is not set
634CONFIG_RAMFS=y 836CONFIG_RAMFS=y
837# CONFIG_CONFIGFS_FS is not set
635 838
636# 839#
637# Miscellaneous filesystems 840# Miscellaneous filesystems
@@ -643,6 +846,8 @@ CONFIG_RAMFS=y
643# CONFIG_BEFS_FS is not set 846# CONFIG_BEFS_FS is not set
644# CONFIG_BFS_FS is not set 847# CONFIG_BFS_FS is not set
645# CONFIG_EFS_FS is not set 848# CONFIG_EFS_FS is not set
849# CONFIG_JFFS_FS is not set
850# CONFIG_JFFS2_FS is not set
646# CONFIG_CRAMFS is not set 851# CONFIG_CRAMFS is not set
647# CONFIG_VXFS_FS is not set 852# CONFIG_VXFS_FS is not set
648# CONFIG_HPFS_FS is not set 853# CONFIG_HPFS_FS is not set
@@ -655,12 +860,14 @@ CONFIG_RAMFS=y
655# 860#
656CONFIG_NFS_FS=y 861CONFIG_NFS_FS=y
657CONFIG_NFS_V3=y 862CONFIG_NFS_V3=y
863# CONFIG_NFS_V3_ACL is not set
658# CONFIG_NFS_V4 is not set 864# CONFIG_NFS_V4 is not set
659# CONFIG_NFS_DIRECTIO is not set 865# CONFIG_NFS_DIRECTIO is not set
660# CONFIG_NFSD is not set 866# CONFIG_NFSD is not set
661CONFIG_ROOT_NFS=y 867CONFIG_ROOT_NFS=y
662CONFIG_LOCKD=y 868CONFIG_LOCKD=y
663CONFIG_LOCKD_V4=y 869CONFIG_LOCKD_V4=y
870CONFIG_NFS_COMMON=y
664CONFIG_SUNRPC=y 871CONFIG_SUNRPC=y
665# CONFIG_RPCSEC_GSS_KRB5 is not set 872# CONFIG_RPCSEC_GSS_KRB5 is not set
666# CONFIG_RPCSEC_GSS_SPKM3 is not set 873# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -669,6 +876,7 @@ CONFIG_SUNRPC=y
669# CONFIG_NCP_FS is not set 876# CONFIG_NCP_FS is not set
670# CONFIG_CODA_FS is not set 877# CONFIG_CODA_FS is not set
671# CONFIG_AFS_FS is not set 878# CONFIG_AFS_FS is not set
879# CONFIG_9P_FS is not set
672 880
673# 881#
674# Partition Types 882# Partition Types
@@ -723,16 +931,23 @@ CONFIG_NLS_DEFAULT="iso8859-1"
723# 931#
724# Profiling support 932# Profiling support
725# 933#
726# CONFIG_PROFILING is not set 934CONFIG_PROFILING=y
935CONFIG_OPROFILE=y
727 936
728# 937#
729# Kernel hacking 938# Kernel hacking
730# 939#
731# CONFIG_PRINTK_TIME is not set 940# CONFIG_PRINTK_TIME is not set
941CONFIG_ENABLE_MUST_CHECK=y
942# CONFIG_MAGIC_SYSRQ is not set
943# CONFIG_UNUSED_SYMBOLS is not set
732# CONFIG_DEBUG_KERNEL is not set 944# CONFIG_DEBUG_KERNEL is not set
733CONFIG_LOG_BUF_SHIFT=14 945CONFIG_LOG_BUF_SHIFT=14
734# CONFIG_DEBUG_BUGVERBOSE is not set 946# CONFIG_DEBUG_BUGVERBOSE is not set
947# CONFIG_DEBUG_FS is not set
735# CONFIG_FRAME_POINTER is not set 948# CONFIG_FRAME_POINTER is not set
949# CONFIG_UNWIND_INFO is not set
950# CONFIG_HEADERS_CHECK is not set
736 951
737# 952#
738# Security options 953# Security options
@@ -746,12 +961,9 @@ CONFIG_LOG_BUF_SHIFT=14
746# CONFIG_CRYPTO is not set 961# CONFIG_CRYPTO is not set
747 962
748# 963#
749# Hardware crypto devices
750#
751
752#
753# Library routines 964# Library routines
754# 965#
755# CONFIG_CRC_CCITT is not set 966# CONFIG_CRC_CCITT is not set
967# CONFIG_CRC16 is not set
756CONFIG_CRC32=y 968CONFIG_CRC32=y
757# CONFIG_LIBCRC32C is not set 969# CONFIG_LIBCRC32C is not set
diff --git a/arch/m32r/mappi/defconfig.nommu b/arch/m32r/mappi/defconfig.nommu
index a8425fba340b..fbf6c384c9d0 100644
--- a/arch/m32r/mappi/defconfig.nommu
+++ b/arch/m32r/mappi/defconfig.nommu
@@ -1,19 +1,18 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.12-rc5 3# Linux kernel version: 2.6.19
4# Fri Jun 3 16:21:46 2005 4# Wed Dec 13 17:57:45 2006
5# 5#
6CONFIG_M32R=y 6CONFIG_M32R=y
7# CONFIG_UID16 is not set
8CONFIG_GENERIC_ISA_DMA=y 7CONFIG_GENERIC_ISA_DMA=y
9CONFIG_GENERIC_HARDIRQS=y 8CONFIG_GENERIC_HARDIRQS=y
10CONFIG_GENERIC_IRQ_PROBE=y 9CONFIG_GENERIC_IRQ_PROBE=y
10CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11 11
12# 12#
13# Code maturity level options 13# Code maturity level options
14# 14#
15CONFIG_EXPERIMENTAL=y 15CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_BROKEN_ON_SMP=y 16CONFIG_BROKEN_ON_SMP=y
18CONFIG_LOCK_KERNEL=y 17CONFIG_LOCK_KERNEL=y
19CONFIG_INIT_ENV_ARG_LIMIT=32 18CONFIG_INIT_ENV_ARG_LIMIT=32
@@ -22,29 +21,36 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
22# General setup 21# General setup
23# 22#
24CONFIG_LOCALVERSION="" 23CONFIG_LOCALVERSION=""
24CONFIG_LOCALVERSION_AUTO=y
25# CONFIG_SYSVIPC is not set
25# CONFIG_POSIX_MQUEUE is not set 26# CONFIG_POSIX_MQUEUE is not set
26CONFIG_BSD_PROCESS_ACCT=y 27CONFIG_BSD_PROCESS_ACCT=y
27# CONFIG_BSD_PROCESS_ACCT_V3 is not set 28# CONFIG_BSD_PROCESS_ACCT_V3 is not set
28CONFIG_SYSCTL=y 29# CONFIG_TASKSTATS is not set
30# CONFIG_UTS_NS is not set
29# CONFIG_AUDIT is not set 31# CONFIG_AUDIT is not set
30CONFIG_HOTPLUG=y
31CONFIG_KOBJECT_UEVENT=y
32CONFIG_IKCONFIG=y 32CONFIG_IKCONFIG=y
33# CONFIG_IKCONFIG_PROC is not set 33# CONFIG_IKCONFIG_PROC is not set
34CONFIG_SYSFS_DEPRECATED=y
35# CONFIG_RELAY is not set
36CONFIG_INITRAMFS_SOURCE=""
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
38CONFIG_SYSCTL=y
34CONFIG_EMBEDDED=y 39CONFIG_EMBEDDED=y
40CONFIG_SYSCTL_SYSCALL=y
35# CONFIG_KALLSYMS is not set 41# CONFIG_KALLSYMS is not set
42CONFIG_HOTPLUG=y
36CONFIG_PRINTK=y 43CONFIG_PRINTK=y
37CONFIG_BUG=y 44CONFIG_BUG=y
45CONFIG_ELF_CORE=y
38CONFIG_BASE_FULL=y 46CONFIG_BASE_FULL=y
39# CONFIG_FUTEX is not set 47# CONFIG_FUTEX is not set
40# CONFIG_EPOLL is not set 48# CONFIG_EPOLL is not set
41# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 49CONFIG_SLAB=y
42CONFIG_CC_ALIGN_FUNCTIONS=0 50CONFIG_VM_EVENT_COUNTERS=y
43CONFIG_CC_ALIGN_LABELS=0
44CONFIG_CC_ALIGN_LOOPS=0
45CONFIG_CC_ALIGN_JUMPS=0
46CONFIG_TINY_SHMEM=y 51CONFIG_TINY_SHMEM=y
47CONFIG_BASE_SMALL=0 52CONFIG_BASE_SMALL=0
53# CONFIG_SLOB is not set
48 54
49# 55#
50# Loadable module support 56# Loadable module support
@@ -52,12 +58,30 @@ CONFIG_BASE_SMALL=0
52CONFIG_MODULES=y 58CONFIG_MODULES=y
53CONFIG_MODULE_UNLOAD=y 59CONFIG_MODULE_UNLOAD=y
54# CONFIG_MODULE_FORCE_UNLOAD is not set 60# CONFIG_MODULE_FORCE_UNLOAD is not set
55CONFIG_OBSOLETE_MODPARM=y
56# CONFIG_MODVERSIONS is not set 61# CONFIG_MODVERSIONS is not set
57# CONFIG_MODULE_SRCVERSION_ALL is not set 62# CONFIG_MODULE_SRCVERSION_ALL is not set
58CONFIG_KMOD=y 63CONFIG_KMOD=y
59 64
60# 65#
66# Block layer
67#
68CONFIG_BLOCK=y
69# CONFIG_BLK_DEV_IO_TRACE is not set
70
71#
72# IO Schedulers
73#
74CONFIG_IOSCHED_NOOP=y
75# CONFIG_IOSCHED_AS is not set
76CONFIG_IOSCHED_DEADLINE=y
77CONFIG_IOSCHED_CFQ=y
78# CONFIG_DEFAULT_AS is not set
79# CONFIG_DEFAULT_DEADLINE is not set
80CONFIG_DEFAULT_CFQ=y
81# CONFIG_DEFAULT_NOOP is not set
82CONFIG_DEFAULT_IOSCHED="cfq"
83
84#
61# Processor type and features 85# Processor type and features
62# 86#
63CONFIG_PLAT_MAPPI=y 87CONFIG_PLAT_MAPPI=y
@@ -67,8 +91,10 @@ CONFIG_PLAT_MAPPI=y
67# CONFIG_PLAT_OAKS32R is not set 91# CONFIG_PLAT_OAKS32R is not set
68# CONFIG_PLAT_MAPPI2 is not set 92# CONFIG_PLAT_MAPPI2 is not set
69# CONFIG_PLAT_MAPPI3 is not set 93# CONFIG_PLAT_MAPPI3 is not set
94# CONFIG_PLAT_M32104UT is not set
70CONFIG_CHIP_M32700=y 95CONFIG_CHIP_M32700=y
71# CONFIG_CHIP_M32102 is not set 96# CONFIG_CHIP_M32102 is not set
97# CONFIG_CHIP_M32104 is not set
72# CONFIG_CHIP_VDEC2 is not set 98# CONFIG_CHIP_VDEC2 is not set
73# CONFIG_CHIP_OPSP is not set 99# CONFIG_CHIP_OPSP is not set
74# CONFIG_MMU is not set 100# CONFIG_MMU is not set
@@ -82,18 +108,31 @@ CONFIG_TIMER_DIVIDE=128
82CONFIG_MEMORY_START=0x00000000 108CONFIG_MEMORY_START=0x00000000
83CONFIG_MEMORY_SIZE=0x00E00000 109CONFIG_MEMORY_SIZE=0x00E00000
84CONFIG_NOHIGHMEM=y 110CONFIG_NOHIGHMEM=y
85# CONFIG_DISCONTIGMEM is not set 111CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
112CONFIG_SELECT_MEMORY_MODEL=y
113# CONFIG_FLATMEM_MANUAL is not set
114CONFIG_DISCONTIGMEM_MANUAL=y
115# CONFIG_SPARSEMEM_MANUAL is not set
116CONFIG_DISCONTIGMEM=y
117CONFIG_FLAT_NODE_MEM_MAP=y
118CONFIG_NEED_MULTIPLE_NODES=y
119# CONFIG_SPARSEMEM_STATIC is not set
120CONFIG_SPLIT_PTLOCK_CPUS=4
121# CONFIG_RESOURCES_64BIT is not set
122CONFIG_IRAM_START=0x00f00000
123CONFIG_IRAM_SIZE=0x00080000
86CONFIG_RWSEM_GENERIC_SPINLOCK=y 124CONFIG_RWSEM_GENERIC_SPINLOCK=y
87# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 125# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
126CONFIG_GENERIC_FIND_NEXT_BIT=y
127CONFIG_GENERIC_HWEIGHT=y
88CONFIG_GENERIC_CALIBRATE_DELAY=y 128CONFIG_GENERIC_CALIBRATE_DELAY=y
89CONFIG_PREEMPT=y 129CONFIG_PREEMPT=y
90# CONFIG_HAVE_DEC_LOCK is not set
91# CONFIG_SMP is not set 130# CONFIG_SMP is not set
131CONFIG_NODES_SHIFT=1
92 132
93# 133#
94# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 134# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
95# 135#
96# CONFIG_PCI is not set
97# CONFIG_ISA is not set 136# CONFIG_ISA is not set
98 137
99# 138#
@@ -102,12 +141,14 @@ CONFIG_PREEMPT=y
102CONFIG_PCCARD=y 141CONFIG_PCCARD=y
103# CONFIG_PCMCIA_DEBUG is not set 142# CONFIG_PCMCIA_DEBUG is not set
104CONFIG_PCMCIA=y 143CONFIG_PCMCIA=y
144CONFIG_PCMCIA_LOAD_CIS=y
145CONFIG_PCMCIA_IOCTL=y
105 146
106# 147#
107# PC-card bridges 148# PC-card bridges
108# 149#
109# CONFIG_TCIC is not set
110CONFIG_M32R_PCC=y 150CONFIG_M32R_PCC=y
151CONFIG_PCCARD_NONSTATIC=y
111 152
112# 153#
113# PCI Hotplug Support 154# PCI Hotplug Support
@@ -122,6 +163,94 @@ CONFIG_BINFMT_FLAT=y
122# CONFIG_BINFMT_MISC is not set 163# CONFIG_BINFMT_MISC is not set
123 164
124# 165#
166# Networking
167#
168CONFIG_NET=y
169
170#
171# Networking options
172#
173# CONFIG_NETDEBUG is not set
174CONFIG_PACKET=y
175# CONFIG_PACKET_MMAP is not set
176CONFIG_UNIX=y
177CONFIG_XFRM=y
178# CONFIG_XFRM_USER is not set
179# CONFIG_XFRM_SUB_POLICY is not set
180# CONFIG_NET_KEY is not set
181CONFIG_INET=y
182# CONFIG_IP_MULTICAST is not set
183# CONFIG_IP_ADVANCED_ROUTER is not set
184CONFIG_IP_FIB_HASH=y
185CONFIG_IP_PNP=y
186CONFIG_IP_PNP_DHCP=y
187# CONFIG_IP_PNP_BOOTP is not set
188# CONFIG_IP_PNP_RARP is not set
189# CONFIG_NET_IPIP is not set
190# CONFIG_NET_IPGRE is not set
191# CONFIG_ARPD is not set
192# CONFIG_SYN_COOKIES is not set
193# CONFIG_INET_AH is not set
194# CONFIG_INET_ESP is not set
195# CONFIG_INET_IPCOMP is not set
196# CONFIG_INET_XFRM_TUNNEL is not set
197# CONFIG_INET_TUNNEL is not set
198CONFIG_INET_XFRM_MODE_TRANSPORT=y
199CONFIG_INET_XFRM_MODE_TUNNEL=y
200CONFIG_INET_XFRM_MODE_BEET=y
201CONFIG_INET_DIAG=y
202CONFIG_INET_TCP_DIAG=y
203# CONFIG_TCP_CONG_ADVANCED is not set
204CONFIG_TCP_CONG_CUBIC=y
205CONFIG_DEFAULT_TCP_CONG="cubic"
206# CONFIG_TCP_MD5SIG is not set
207# CONFIG_IPV6 is not set
208# CONFIG_INET6_XFRM_TUNNEL is not set
209# CONFIG_INET6_TUNNEL is not set
210# CONFIG_NETWORK_SECMARK is not set
211# CONFIG_NETFILTER is not set
212
213#
214# DCCP Configuration (EXPERIMENTAL)
215#
216# CONFIG_IP_DCCP is not set
217
218#
219# SCTP Configuration (EXPERIMENTAL)
220#
221# CONFIG_IP_SCTP is not set
222
223#
224# TIPC Configuration (EXPERIMENTAL)
225#
226# CONFIG_TIPC is not set
227# CONFIG_ATM is not set
228# CONFIG_BRIDGE is not set
229# CONFIG_VLAN_8021Q is not set
230# CONFIG_DECNET is not set
231# CONFIG_LLC2 is not set
232# CONFIG_IPX is not set
233# CONFIG_ATALK is not set
234# CONFIG_X25 is not set
235# CONFIG_LAPB is not set
236# CONFIG_ECONET is not set
237# CONFIG_WAN_ROUTER is not set
238
239#
240# QoS and/or fair queueing
241#
242# CONFIG_NET_SCHED is not set
243
244#
245# Network testing
246#
247# CONFIG_NET_PKTGEN is not set
248# CONFIG_HAMRADIO is not set
249# CONFIG_IRDA is not set
250# CONFIG_BT is not set
251# CONFIG_IEEE80211 is not set
252
253#
125# Device Drivers 254# Device Drivers
126# 255#
127 256
@@ -130,7 +259,13 @@ CONFIG_BINFMT_FLAT=y
130# 259#
131CONFIG_STANDALONE=y 260CONFIG_STANDALONE=y
132CONFIG_PREVENT_FIRMWARE_BUILD=y 261CONFIG_PREVENT_FIRMWARE_BUILD=y
133# CONFIG_FW_LOADER is not set 262CONFIG_FW_LOADER=y
263# CONFIG_SYS_HYPERVISOR is not set
264
265#
266# Connector - unified userspace <-> kernelspace linker
267#
268# CONFIG_CONNECTOR is not set
134 269
135# 270#
136# Memory Technology Devices (MTD) 271# Memory Technology Devices (MTD)
@@ -149,7 +284,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
149# 284#
150# Block devices 285# Block devices
151# 286#
152# CONFIG_BLK_DEV_FD is not set
153# CONFIG_BLK_DEV_COW_COMMON is not set 287# CONFIG_BLK_DEV_COW_COMMON is not set
154CONFIG_BLK_DEV_LOOP=y 288CONFIG_BLK_DEV_LOOP=y
155# CONFIG_BLK_DEV_CRYPTOLOOP is not set 289# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -157,18 +291,15 @@ CONFIG_BLK_DEV_NBD=y
157CONFIG_BLK_DEV_RAM=y 291CONFIG_BLK_DEV_RAM=y
158CONFIG_BLK_DEV_RAM_COUNT=16 292CONFIG_BLK_DEV_RAM_COUNT=16
159CONFIG_BLK_DEV_RAM_SIZE=4096 293CONFIG_BLK_DEV_RAM_SIZE=4096
294CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
160# CONFIG_BLK_DEV_INITRD is not set 295# CONFIG_BLK_DEV_INITRD is not set
161CONFIG_INITRAMFS_SOURCE=""
162# CONFIG_CDROM_PKTCDVD is not set 296# CONFIG_CDROM_PKTCDVD is not set
297# CONFIG_ATA_OVER_ETH is not set
163 298
164# 299#
165# IO Schedulers 300# Misc devices
166# 301#
167CONFIG_IOSCHED_NOOP=y 302# CONFIG_TIFM_CORE is not set
168# CONFIG_IOSCHED_AS is not set
169CONFIG_IOSCHED_DEADLINE=y
170CONFIG_IOSCHED_CFQ=y
171# CONFIG_ATA_OVER_ETH is not set
172 303
173# 304#
174# ATA/ATAPI/MFM/RLL support 305# ATA/ATAPI/MFM/RLL support
@@ -178,7 +309,13 @@ CONFIG_IOSCHED_CFQ=y
178# 309#
179# SCSI device support 310# SCSI device support
180# 311#
312# CONFIG_RAID_ATTRS is not set
181# CONFIG_SCSI is not set 313# CONFIG_SCSI is not set
314# CONFIG_SCSI_NETLINK is not set
315
316#
317# Serial ATA (prod) and Parallel ATA (experimental) drivers
318#
182 319
183# 320#
184# Multi-device support (RAID and LVM) 321# Multi-device support (RAID and LVM)
@@ -188,6 +325,7 @@ CONFIG_IOSCHED_CFQ=y
188# 325#
189# Fusion MPT device support 326# Fusion MPT device support
190# 327#
328# CONFIG_FUSION is not set
191 329
192# 330#
193# IEEE 1394 (FireWire) support 331# IEEE 1394 (FireWire) support
@@ -198,69 +336,8 @@ CONFIG_IOSCHED_CFQ=y
198# 336#
199 337
200# 338#
201# Networking support 339# Network device support
202#
203CONFIG_NET=y
204
205#
206# Networking options
207#
208CONFIG_PACKET=y
209# CONFIG_PACKET_MMAP is not set
210CONFIG_UNIX=y
211# CONFIG_NET_KEY is not set
212CONFIG_INET=y
213# CONFIG_IP_MULTICAST is not set
214# CONFIG_IP_ADVANCED_ROUTER is not set
215CONFIG_IP_PNP=y
216CONFIG_IP_PNP_DHCP=y
217# CONFIG_IP_PNP_BOOTP is not set
218# CONFIG_IP_PNP_RARP is not set
219# CONFIG_NET_IPIP is not set
220# CONFIG_NET_IPGRE is not set
221# CONFIG_ARPD is not set
222# CONFIG_SYN_COOKIES is not set
223# CONFIG_INET_AH is not set
224# CONFIG_INET_ESP is not set
225# CONFIG_INET_IPCOMP is not set
226# CONFIG_INET_TUNNEL is not set
227CONFIG_IP_TCPDIAG=y
228# CONFIG_IP_TCPDIAG_IPV6 is not set
229# CONFIG_IPV6 is not set
230# CONFIG_NETFILTER is not set
231
232#
233# SCTP Configuration (EXPERIMENTAL)
234#
235# CONFIG_IP_SCTP is not set
236# CONFIG_ATM is not set
237# CONFIG_BRIDGE is not set
238# CONFIG_VLAN_8021Q is not set
239# CONFIG_DECNET is not set
240# CONFIG_LLC2 is not set
241# CONFIG_IPX is not set
242# CONFIG_ATALK is not set
243# CONFIG_X25 is not set
244# CONFIG_LAPB is not set
245# CONFIG_NET_DIVERT is not set
246# CONFIG_ECONET is not set
247# CONFIG_WAN_ROUTER is not set
248
249#
250# QoS and/or fair queueing
251#
252# CONFIG_NET_SCHED is not set
253# CONFIG_NET_CLS_ROUTE is not set
254
255#
256# Network testing
257# 340#
258# CONFIG_NET_PKTGEN is not set
259# CONFIG_NETPOLL is not set
260# CONFIG_NET_POLL_CONTROLLER is not set
261# CONFIG_HAMRADIO is not set
262# CONFIG_IRDA is not set
263# CONFIG_BT is not set
264CONFIG_NETDEVICES=y 341CONFIG_NETDEVICES=y
265# CONFIG_DUMMY is not set 342# CONFIG_DUMMY is not set
266# CONFIG_BONDING is not set 343# CONFIG_BONDING is not set
@@ -268,6 +345,10 @@ CONFIG_NETDEVICES=y
268# CONFIG_TUN is not set 345# CONFIG_TUN is not set
269 346
270# 347#
348# PHY device support
349#
350
351#
271# Ethernet (10 or 100Mbit) 352# Ethernet (10 or 100Mbit)
272# 353#
273# CONFIG_NET_ETHERNET is not set 354# CONFIG_NET_ETHERNET is not set
@@ -303,6 +384,8 @@ CONFIG_NE2000=y
303# CONFIG_SLIP is not set 384# CONFIG_SLIP is not set
304# CONFIG_SHAPER is not set 385# CONFIG_SHAPER is not set
305# CONFIG_NETCONSOLE is not set 386# CONFIG_NETCONSOLE is not set
387# CONFIG_NETPOLL is not set
388# CONFIG_NET_POLL_CONTROLLER is not set
306 389
307# 390#
308# ISDN subsystem 391# ISDN subsystem
@@ -318,6 +401,7 @@ CONFIG_NE2000=y
318# Input device support 401# Input device support
319# 402#
320CONFIG_INPUT=y 403CONFIG_INPUT=y
404# CONFIG_INPUT_FF_MEMLESS is not set
321 405
322# 406#
323# Userland interfaces 407# Userland interfaces
@@ -346,7 +430,6 @@ CONFIG_SERIO_SERPORT=y
346# CONFIG_SERIO_LIBPS2 is not set 430# CONFIG_SERIO_LIBPS2 is not set
347# CONFIG_SERIO_RAW is not set 431# CONFIG_SERIO_RAW is not set
348# CONFIG_GAMEPORT is not set 432# CONFIG_GAMEPORT is not set
349CONFIG_SOUND_GAMEPORT=y
350 433
351# 434#
352# Character devices 435# Character devices
@@ -366,7 +449,6 @@ CONFIG_SERIAL_CORE=y
366CONFIG_SERIAL_CORE_CONSOLE=y 449CONFIG_SERIAL_CORE_CONSOLE=y
367CONFIG_SERIAL_M32R_SIO=y 450CONFIG_SERIAL_M32R_SIO=y
368CONFIG_SERIAL_M32R_SIO_CONSOLE=y 451CONFIG_SERIAL_M32R_SIO_CONSOLE=y
369# CONFIG_SERIAL_M32R_PLDSIO is not set
370CONFIG_UNIX98_PTYS=y 452CONFIG_UNIX98_PTYS=y
371CONFIG_LEGACY_PTYS=y 453CONFIG_LEGACY_PTYS=y
372CONFIG_LEGACY_PTY_COUNT=256 454CONFIG_LEGACY_PTY_COUNT=256
@@ -380,25 +462,27 @@ CONFIG_LEGACY_PTY_COUNT=256
380# Watchdog Cards 462# Watchdog Cards
381# 463#
382# CONFIG_WATCHDOG is not set 464# CONFIG_WATCHDOG is not set
465CONFIG_HW_RANDOM=y
383# CONFIG_RTC is not set 466# CONFIG_RTC is not set
384# CONFIG_GEN_RTC is not set
385# CONFIG_DTLK is not set 467# CONFIG_DTLK is not set
386# CONFIG_R3964 is not set 468# CONFIG_R3964 is not set
387 469
388# 470#
389# Ftape, the floppy tape device driver 471# Ftape, the floppy tape device driver
390# 472#
391# CONFIG_DRM is not set
392 473
393# 474#
394# PCMCIA character devices 475# PCMCIA character devices
395# 476#
396# CONFIG_SYNCLINK_CS is not set 477# CONFIG_SYNCLINK_CS is not set
478# CONFIG_CARDMAN_4000 is not set
479# CONFIG_CARDMAN_4040 is not set
397# CONFIG_RAW_DRIVER is not set 480# CONFIG_RAW_DRIVER is not set
398 481
399# 482#
400# TPM devices 483# TPM devices
401# 484#
485# CONFIG_TCG_TPM is not set
402 486
403# 487#
404# I2C support 488# I2C support
@@ -406,13 +490,25 @@ CONFIG_LEGACY_PTY_COUNT=256
406# CONFIG_I2C is not set 490# CONFIG_I2C is not set
407 491
408# 492#
493# SPI support
494#
495# CONFIG_SPI is not set
496# CONFIG_SPI_MASTER is not set
497
498#
409# Dallas's 1-wire bus 499# Dallas's 1-wire bus
410# 500#
411# CONFIG_W1 is not set 501# CONFIG_W1 is not set
412 502
413# 503#
414# Misc devices 504# Hardware Monitoring support
415# 505#
506CONFIG_HWMON=y
507# CONFIG_HWMON_VID is not set
508# CONFIG_SENSORS_ABITUGURU is not set
509# CONFIG_SENSORS_F71805F is not set
510# CONFIG_SENSORS_VT1211 is not set
511# CONFIG_HWMON_DEBUG_CHIP is not set
416 512
417# 513#
418# Multimedia devices 514# Multimedia devices
@@ -427,7 +523,9 @@ CONFIG_LEGACY_PTY_COUNT=256
427# 523#
428# Graphics support 524# Graphics support
429# 525#
526CONFIG_FIRMWARE_EDID=y
430# CONFIG_FB is not set 527# CONFIG_FB is not set
528# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
431 529
432# 530#
433# Sound 531# Sound
@@ -439,6 +537,11 @@ CONFIG_LEGACY_PTY_COUNT=256
439# 537#
440# CONFIG_USB_ARCH_HAS_HCD is not set 538# CONFIG_USB_ARCH_HAS_HCD is not set
441# CONFIG_USB_ARCH_HAS_OHCI is not set 539# CONFIG_USB_ARCH_HAS_OHCI is not set
540# CONFIG_USB_ARCH_HAS_EHCI is not set
541
542#
543# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
544#
442 545
443# 546#
444# USB Gadget Support 547# USB Gadget Support
@@ -451,30 +554,72 @@ CONFIG_LEGACY_PTY_COUNT=256
451# CONFIG_MMC is not set 554# CONFIG_MMC is not set
452 555
453# 556#
557# LED devices
558#
559# CONFIG_NEW_LEDS is not set
560
561#
562# LED drivers
563#
564
565#
566# LED Triggers
567#
568
569#
454# InfiniBand support 570# InfiniBand support
455# 571#
456# CONFIG_INFINIBAND is not set 572
573#
574# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
575#
576
577#
578# Real Time Clock
579#
580# CONFIG_RTC_CLASS is not set
581
582#
583# DMA Engine support
584#
585# CONFIG_DMA_ENGINE is not set
586
587#
588# DMA Clients
589#
590
591#
592# DMA Devices
593#
457 594
458# 595#
459# File systems 596# File systems
460# 597#
461CONFIG_EXT2_FS=y 598CONFIG_EXT2_FS=y
462# CONFIG_EXT2_FS_XATTR is not set 599# CONFIG_EXT2_FS_XATTR is not set
463# CONFIG_EXT3_FS is not set 600CONFIG_EXT3_FS=y
464# CONFIG_JBD is not set 601CONFIG_EXT3_FS_XATTR=y
602# CONFIG_EXT3_FS_POSIX_ACL is not set
603# CONFIG_EXT3_FS_SECURITY is not set
604# CONFIG_EXT4DEV_FS is not set
605CONFIG_JBD=y
606# CONFIG_JBD_DEBUG is not set
607CONFIG_FS_MBCACHE=y
465# CONFIG_REISERFS_FS is not set 608# CONFIG_REISERFS_FS is not set
466# CONFIG_JFS_FS is not set 609# CONFIG_JFS_FS is not set
467 610# CONFIG_FS_POSIX_ACL is not set
468#
469# XFS support
470#
471# CONFIG_XFS_FS is not set 611# CONFIG_XFS_FS is not set
612# CONFIG_GFS2_FS is not set
613# CONFIG_OCFS2_FS is not set
472# CONFIG_MINIX_FS is not set 614# CONFIG_MINIX_FS is not set
473# CONFIG_ROMFS_FS is not set 615# CONFIG_ROMFS_FS is not set
616CONFIG_INOTIFY=y
617CONFIG_INOTIFY_USER=y
474# CONFIG_QUOTA is not set 618# CONFIG_QUOTA is not set
475CONFIG_DNOTIFY=y 619CONFIG_DNOTIFY=y
476# CONFIG_AUTOFS_FS is not set 620# CONFIG_AUTOFS_FS is not set
477# CONFIG_AUTOFS4_FS is not set 621# CONFIG_AUTOFS4_FS is not set
622# CONFIG_FUSE_FS is not set
478 623
479# 624#
480# CD-ROM/DVD Filesystems 625# CD-ROM/DVD Filesystems
@@ -493,15 +638,12 @@ CONFIG_DNOTIFY=y
493# Pseudo filesystems 638# Pseudo filesystems
494# 639#
495CONFIG_PROC_FS=y 640CONFIG_PROC_FS=y
641CONFIG_PROC_SYSCTL=y
496CONFIG_SYSFS=y 642CONFIG_SYSFS=y
497CONFIG_DEVFS_FS=y
498CONFIG_DEVFS_MOUNT=y
499# CONFIG_DEVFS_DEBUG is not set
500CONFIG_DEVPTS_FS_XATTR=y
501CONFIG_DEVPTS_FS_SECURITY=y
502# CONFIG_TMPFS is not set 643# CONFIG_TMPFS is not set
503# CONFIG_HUGETLB_PAGE is not set 644# CONFIG_HUGETLB_PAGE is not set
504CONFIG_RAMFS=y 645CONFIG_RAMFS=y
646# CONFIG_CONFIGFS_FS is not set
505 647
506# 648#
507# Miscellaneous filesystems 649# Miscellaneous filesystems
@@ -525,12 +667,14 @@ CONFIG_RAMFS=y
525# 667#
526CONFIG_NFS_FS=y 668CONFIG_NFS_FS=y
527CONFIG_NFS_V3=y 669CONFIG_NFS_V3=y
670# CONFIG_NFS_V3_ACL is not set
528# CONFIG_NFS_V4 is not set 671# CONFIG_NFS_V4 is not set
529# CONFIG_NFS_DIRECTIO is not set 672# CONFIG_NFS_DIRECTIO is not set
530# CONFIG_NFSD is not set 673# CONFIG_NFSD is not set
531CONFIG_ROOT_NFS=y 674CONFIG_ROOT_NFS=y
532CONFIG_LOCKD=y 675CONFIG_LOCKD=y
533CONFIG_LOCKD_V4=y 676CONFIG_LOCKD_V4=y
677CONFIG_NFS_COMMON=y
534CONFIG_SUNRPC=y 678CONFIG_SUNRPC=y
535# CONFIG_RPCSEC_GSS_KRB5 is not set 679# CONFIG_RPCSEC_GSS_KRB5 is not set
536# CONFIG_RPCSEC_GSS_SPKM3 is not set 680# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -539,6 +683,7 @@ CONFIG_SUNRPC=y
539# CONFIG_NCP_FS is not set 683# CONFIG_NCP_FS is not set
540# CONFIG_CODA_FS is not set 684# CONFIG_CODA_FS is not set
541# CONFIG_AFS_FS is not set 685# CONFIG_AFS_FS is not set
686# CONFIG_9P_FS is not set
542 687
543# 688#
544# Partition Types 689# Partition Types
@@ -599,10 +744,16 @@ CONFIG_NLS_DEFAULT="iso8859-1"
599# Kernel hacking 744# Kernel hacking
600# 745#
601# CONFIG_PRINTK_TIME is not set 746# CONFIG_PRINTK_TIME is not set
747CONFIG_ENABLE_MUST_CHECK=y
748# CONFIG_MAGIC_SYSRQ is not set
749# CONFIG_UNUSED_SYMBOLS is not set
602# CONFIG_DEBUG_KERNEL is not set 750# CONFIG_DEBUG_KERNEL is not set
603CONFIG_LOG_BUF_SHIFT=14 751CONFIG_LOG_BUF_SHIFT=14
604# CONFIG_DEBUG_BUGVERBOSE is not set 752# CONFIG_DEBUG_BUGVERBOSE is not set
753# CONFIG_DEBUG_FS is not set
605# CONFIG_FRAME_POINTER is not set 754# CONFIG_FRAME_POINTER is not set
755# CONFIG_UNWIND_INFO is not set
756# CONFIG_HEADERS_CHECK is not set
606 757
607# 758#
608# Security options 759# Security options
@@ -616,12 +767,9 @@ CONFIG_LOG_BUF_SHIFT=14
616# CONFIG_CRYPTO is not set 767# CONFIG_CRYPTO is not set
617 768
618# 769#
619# Hardware crypto devices
620#
621
622#
623# Library routines 770# Library routines
624# 771#
625# CONFIG_CRC_CCITT is not set 772# CONFIG_CRC_CCITT is not set
773# CONFIG_CRC16 is not set
626CONFIG_CRC32=y 774CONFIG_CRC32=y
627# CONFIG_LIBCRC32C is not set 775# CONFIG_LIBCRC32C is not set
diff --git a/arch/m32r/mappi/defconfig.smp b/arch/m32r/mappi/defconfig.smp
index 1a7f3cd42246..168669202b94 100644
--- a/arch/m32r/mappi/defconfig.smp
+++ b/arch/m32r/mappi/defconfig.smp
@@ -1,21 +1,18 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.12-rc5 3# Linux kernel version: 2.6.19
4# Fri Jun 3 16:21:52 2005 4# Wed Dec 13 17:50:59 2006
5# 5#
6CONFIG_M32R=y 6CONFIG_M32R=y
7# CONFIG_UID16 is not set
8CONFIG_GENERIC_ISA_DMA=y 7CONFIG_GENERIC_ISA_DMA=y
9CONFIG_GENERIC_HARDIRQS=y 8CONFIG_GENERIC_HARDIRQS=y
10CONFIG_GENERIC_IRQ_PROBE=y 9CONFIG_GENERIC_IRQ_PROBE=y
10CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11 11
12# 12#
13# Code maturity level options 13# Code maturity level options
14# 14#
15CONFIG_EXPERIMENTAL=y 15CONFIG_EXPERIMENTAL=y
16# CONFIG_CLEAN_COMPILE is not set
17CONFIG_BROKEN=y
18CONFIG_BROKEN_ON_SMP=y
19CONFIG_LOCK_KERNEL=y 16CONFIG_LOCK_KERNEL=y
20CONFIG_INIT_ENV_ARG_LIMIT=32 17CONFIG_INIT_ENV_ARG_LIMIT=32
21 18
@@ -23,32 +20,39 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
23# General setup 20# General setup
24# 21#
25CONFIG_LOCALVERSION="" 22CONFIG_LOCALVERSION=""
23CONFIG_LOCALVERSION_AUTO=y
26CONFIG_SWAP=y 24CONFIG_SWAP=y
27CONFIG_SYSVIPC=y 25CONFIG_SYSVIPC=y
26# CONFIG_IPC_NS is not set
28# CONFIG_POSIX_MQUEUE is not set 27# CONFIG_POSIX_MQUEUE is not set
29# CONFIG_BSD_PROCESS_ACCT is not set 28# CONFIG_BSD_PROCESS_ACCT is not set
30CONFIG_SYSCTL=y 29# CONFIG_TASKSTATS is not set
30# CONFIG_UTS_NS is not set
31# CONFIG_AUDIT is not set 31# CONFIG_AUDIT is not set
32CONFIG_HOTPLUG=y
33CONFIG_KOBJECT_UEVENT=y
34CONFIG_IKCONFIG=y 32CONFIG_IKCONFIG=y
35CONFIG_IKCONFIG_PROC=y 33CONFIG_IKCONFIG_PROC=y
36# CONFIG_CPUSETS is not set 34# CONFIG_CPUSETS is not set
35CONFIG_SYSFS_DEPRECATED=y
36# CONFIG_RELAY is not set
37CONFIG_INITRAMFS_SOURCE=""
38# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
39CONFIG_SYSCTL=y
37CONFIG_EMBEDDED=y 40CONFIG_EMBEDDED=y
41CONFIG_SYSCTL_SYSCALL=y
38# CONFIG_KALLSYMS is not set 42# CONFIG_KALLSYMS is not set
43CONFIG_HOTPLUG=y
39CONFIG_PRINTK=y 44CONFIG_PRINTK=y
40CONFIG_BUG=y 45CONFIG_BUG=y
46CONFIG_ELF_CORE=y
41CONFIG_BASE_FULL=y 47CONFIG_BASE_FULL=y
42# CONFIG_FUTEX is not set 48# CONFIG_FUTEX is not set
43# CONFIG_EPOLL is not set 49# CONFIG_EPOLL is not set
44# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
45CONFIG_SHMEM=y 50CONFIG_SHMEM=y
46CONFIG_CC_ALIGN_FUNCTIONS=0 51CONFIG_SLAB=y
47CONFIG_CC_ALIGN_LABELS=0 52CONFIG_VM_EVENT_COUNTERS=y
48CONFIG_CC_ALIGN_LOOPS=0
49CONFIG_CC_ALIGN_JUMPS=0
50# CONFIG_TINY_SHMEM is not set 53# CONFIG_TINY_SHMEM is not set
51CONFIG_BASE_SMALL=0 54CONFIG_BASE_SMALL=0
55# CONFIG_SLOB is not set
52 56
53# 57#
54# Loadable module support 58# Loadable module support
@@ -56,13 +60,31 @@ CONFIG_BASE_SMALL=0
56CONFIG_MODULES=y 60CONFIG_MODULES=y
57CONFIG_MODULE_UNLOAD=y 61CONFIG_MODULE_UNLOAD=y
58# CONFIG_MODULE_FORCE_UNLOAD is not set 62# CONFIG_MODULE_FORCE_UNLOAD is not set
59CONFIG_OBSOLETE_MODPARM=y
60# CONFIG_MODVERSIONS is not set 63# CONFIG_MODVERSIONS is not set
61# CONFIG_MODULE_SRCVERSION_ALL is not set 64# CONFIG_MODULE_SRCVERSION_ALL is not set
62CONFIG_KMOD=y 65CONFIG_KMOD=y
63CONFIG_STOP_MACHINE=y 66CONFIG_STOP_MACHINE=y
64 67
65# 68#
69# Block layer
70#
71CONFIG_BLOCK=y
72# CONFIG_BLK_DEV_IO_TRACE is not set
73
74#
75# IO Schedulers
76#
77CONFIG_IOSCHED_NOOP=y
78# CONFIG_IOSCHED_AS is not set
79CONFIG_IOSCHED_DEADLINE=y
80CONFIG_IOSCHED_CFQ=y
81# CONFIG_DEFAULT_AS is not set
82# CONFIG_DEFAULT_DEADLINE is not set
83CONFIG_DEFAULT_CFQ=y
84# CONFIG_DEFAULT_NOOP is not set
85CONFIG_DEFAULT_IOSCHED="cfq"
86
87#
66# Processor type and features 88# Processor type and features
67# 89#
68CONFIG_PLAT_MAPPI=y 90CONFIG_PLAT_MAPPI=y
@@ -72,8 +94,10 @@ CONFIG_PLAT_MAPPI=y
72# CONFIG_PLAT_OAKS32R is not set 94# CONFIG_PLAT_OAKS32R is not set
73# CONFIG_PLAT_MAPPI2 is not set 95# CONFIG_PLAT_MAPPI2 is not set
74# CONFIG_PLAT_MAPPI3 is not set 96# CONFIG_PLAT_MAPPI3 is not set
97# CONFIG_PLAT_M32104UT is not set
75CONFIG_CHIP_M32700=y 98CONFIG_CHIP_M32700=y
76# CONFIG_CHIP_M32102 is not set 99# CONFIG_CHIP_M32102 is not set
100# CONFIG_CHIP_M32104 is not set
77# CONFIG_CHIP_VDEC2 is not set 101# CONFIG_CHIP_VDEC2 is not set
78# CONFIG_CHIP_OPSP is not set 102# CONFIG_CHIP_OPSP is not set
79CONFIG_MMU=y 103CONFIG_MMU=y
@@ -87,23 +111,33 @@ CONFIG_TIMER_DIVIDE=128
87CONFIG_MEMORY_START=0x08000000 111CONFIG_MEMORY_START=0x08000000
88CONFIG_MEMORY_SIZE=0x04000000 112CONFIG_MEMORY_SIZE=0x04000000
89CONFIG_NOHIGHMEM=y 113CONFIG_NOHIGHMEM=y
114CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
115CONFIG_SELECT_MEMORY_MODEL=y
116# CONFIG_FLATMEM_MANUAL is not set
117CONFIG_DISCONTIGMEM_MANUAL=y
118# CONFIG_SPARSEMEM_MANUAL is not set
90CONFIG_DISCONTIGMEM=y 119CONFIG_DISCONTIGMEM=y
120CONFIG_FLAT_NODE_MEM_MAP=y
121CONFIG_NEED_MULTIPLE_NODES=y
122# CONFIG_SPARSEMEM_STATIC is not set
123CONFIG_SPLIT_PTLOCK_CPUS=4
124# CONFIG_RESOURCES_64BIT is not set
91CONFIG_IRAM_START=0x00f00000 125CONFIG_IRAM_START=0x00f00000
92CONFIG_IRAM_SIZE=0x00080000 126CONFIG_IRAM_SIZE=0x00080000
93CONFIG_RWSEM_GENERIC_SPINLOCK=y 127CONFIG_RWSEM_GENERIC_SPINLOCK=y
94# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 128# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
129CONFIG_GENERIC_FIND_NEXT_BIT=y
130CONFIG_GENERIC_HWEIGHT=y
95CONFIG_GENERIC_CALIBRATE_DELAY=y 131CONFIG_GENERIC_CALIBRATE_DELAY=y
96CONFIG_PREEMPT=y 132CONFIG_PREEMPT=y
97# CONFIG_HAVE_DEC_LOCK is not set
98CONFIG_SMP=y 133CONFIG_SMP=y
99CONFIG_CHIP_M32700_TS1=y 134CONFIG_CHIP_M32700_TS1=y
100CONFIG_NR_CPUS=2 135CONFIG_NR_CPUS=2
101# CONFIG_NUMA is not set 136CONFIG_NODES_SHIFT=1
102 137
103# 138#
104# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 139# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
105# 140#
106# CONFIG_PCI is not set
107# CONFIG_ISA is not set 141# CONFIG_ISA is not set
108 142
109# 143#
@@ -112,12 +146,14 @@ CONFIG_NR_CPUS=2
112CONFIG_PCCARD=y 146CONFIG_PCCARD=y
113# CONFIG_PCMCIA_DEBUG is not set 147# CONFIG_PCMCIA_DEBUG is not set
114CONFIG_PCMCIA=y 148CONFIG_PCMCIA=y
149CONFIG_PCMCIA_LOAD_CIS=y
150CONFIG_PCMCIA_IOCTL=y
115 151
116# 152#
117# PC-card bridges 153# PC-card bridges
118# 154#
119# CONFIG_TCIC is not set
120CONFIG_M32R_PCC=y 155CONFIG_M32R_PCC=y
156CONFIG_PCCARD_NONSTATIC=y
121 157
122# 158#
123# PCI Hotplug Support 159# PCI Hotplug Support
@@ -130,6 +166,93 @@ CONFIG_BINFMT_ELF=y
130# CONFIG_BINFMT_MISC is not set 166# CONFIG_BINFMT_MISC is not set
131 167
132# 168#
169# Networking
170#
171CONFIG_NET=y
172
173#
174# Networking options
175#
176# CONFIG_NETDEBUG is not set
177# CONFIG_PACKET is not set
178CONFIG_UNIX=y
179CONFIG_XFRM=y
180# CONFIG_XFRM_USER is not set
181# CONFIG_XFRM_SUB_POLICY is not set
182# CONFIG_NET_KEY is not set
183CONFIG_INET=y
184# CONFIG_IP_MULTICAST is not set
185# CONFIG_IP_ADVANCED_ROUTER is not set
186CONFIG_IP_FIB_HASH=y
187CONFIG_IP_PNP=y
188CONFIG_IP_PNP_DHCP=y
189# CONFIG_IP_PNP_BOOTP is not set
190# CONFIG_IP_PNP_RARP is not set
191# CONFIG_NET_IPIP is not set
192# CONFIG_NET_IPGRE is not set
193# CONFIG_ARPD is not set
194# CONFIG_SYN_COOKIES is not set
195# CONFIG_INET_AH is not set
196# CONFIG_INET_ESP is not set
197# CONFIG_INET_IPCOMP is not set
198# CONFIG_INET_XFRM_TUNNEL is not set
199# CONFIG_INET_TUNNEL is not set
200CONFIG_INET_XFRM_MODE_TRANSPORT=y
201CONFIG_INET_XFRM_MODE_TUNNEL=y
202CONFIG_INET_XFRM_MODE_BEET=y
203CONFIG_INET_DIAG=y
204CONFIG_INET_TCP_DIAG=y
205# CONFIG_TCP_CONG_ADVANCED is not set
206CONFIG_TCP_CONG_CUBIC=y
207CONFIG_DEFAULT_TCP_CONG="cubic"
208# CONFIG_TCP_MD5SIG is not set
209# CONFIG_IPV6 is not set
210# CONFIG_INET6_XFRM_TUNNEL is not set
211# CONFIG_INET6_TUNNEL is not set
212# CONFIG_NETWORK_SECMARK is not set
213# CONFIG_NETFILTER is not set
214
215#
216# DCCP Configuration (EXPERIMENTAL)
217#
218# CONFIG_IP_DCCP is not set
219
220#
221# SCTP Configuration (EXPERIMENTAL)
222#
223# CONFIG_IP_SCTP is not set
224
225#
226# TIPC Configuration (EXPERIMENTAL)
227#
228# CONFIG_TIPC is not set
229# CONFIG_ATM is not set
230# CONFIG_BRIDGE is not set
231# CONFIG_VLAN_8021Q is not set
232# CONFIG_DECNET is not set
233# CONFIG_LLC2 is not set
234# CONFIG_IPX is not set
235# CONFIG_ATALK is not set
236# CONFIG_X25 is not set
237# CONFIG_LAPB is not set
238# CONFIG_ECONET is not set
239# CONFIG_WAN_ROUTER is not set
240
241#
242# QoS and/or fair queueing
243#
244# CONFIG_NET_SCHED is not set
245
246#
247# Network testing
248#
249# CONFIG_NET_PKTGEN is not set
250# CONFIG_HAMRADIO is not set
251# CONFIG_IRDA is not set
252# CONFIG_BT is not set
253# CONFIG_IEEE80211 is not set
254
255#
133# Device Drivers 256# Device Drivers
134# 257#
135 258
@@ -138,7 +261,13 @@ CONFIG_BINFMT_ELF=y
138# 261#
139# CONFIG_STANDALONE is not set 262# CONFIG_STANDALONE is not set
140CONFIG_PREVENT_FIRMWARE_BUILD=y 263CONFIG_PREVENT_FIRMWARE_BUILD=y
141# CONFIG_FW_LOADER is not set 264CONFIG_FW_LOADER=y
265# CONFIG_SYS_HYPERVISOR is not set
266
267#
268# Connector - unified userspace <-> kernelspace linker
269#
270# CONFIG_CONNECTOR is not set
142 271
143# 272#
144# Memory Technology Devices (MTD) 273# Memory Technology Devices (MTD)
@@ -161,6 +290,8 @@ CONFIG_MTD_BLOCK=y
161# CONFIG_FTL is not set 290# CONFIG_FTL is not set
162# CONFIG_NFTL is not set 291# CONFIG_NFTL is not set
163# CONFIG_INFTL is not set 292# CONFIG_INFTL is not set
293# CONFIG_RFD_FTL is not set
294# CONFIG_SSFDC is not set
164 295
165# 296#
166# RAM/ROM/Flash chip drivers 297# RAM/ROM/Flash chip drivers
@@ -186,6 +317,7 @@ CONFIG_MTD_CFI_I2=y
186# Mapping drivers for chip access 317# Mapping drivers for chip access
187# 318#
188# CONFIG_MTD_COMPLEX_MAPPINGS is not set 319# CONFIG_MTD_COMPLEX_MAPPINGS is not set
320# CONFIG_MTD_PLATRAM is not set
189 321
190# 322#
191# Self-contained MTD device drivers 323# Self-contained MTD device drivers
@@ -193,7 +325,6 @@ CONFIG_MTD_CFI_I2=y
193# CONFIG_MTD_SLRAM is not set 325# CONFIG_MTD_SLRAM is not set
194# CONFIG_MTD_PHRAM is not set 326# CONFIG_MTD_PHRAM is not set
195# CONFIG_MTD_MTDRAM is not set 327# CONFIG_MTD_MTDRAM is not set
196# CONFIG_MTD_BLKMTD is not set
197# CONFIG_MTD_BLOCK2MTD is not set 328# CONFIG_MTD_BLOCK2MTD is not set
198 329
199# 330#
@@ -209,6 +340,11 @@ CONFIG_MTD_CFI_I2=y
209# CONFIG_MTD_NAND is not set 340# CONFIG_MTD_NAND is not set
210 341
211# 342#
343# OneNAND Flash Device Drivers
344#
345# CONFIG_MTD_ONENAND is not set
346
347#
212# Parallel port support 348# Parallel port support
213# 349#
214# CONFIG_PARPORT is not set 350# CONFIG_PARPORT is not set
@@ -220,7 +356,6 @@ CONFIG_MTD_CFI_I2=y
220# 356#
221# Block devices 357# Block devices
222# 358#
223# CONFIG_BLK_DEV_FD is not set
224# CONFIG_BLK_DEV_COW_COMMON is not set 359# CONFIG_BLK_DEV_COW_COMMON is not set
225CONFIG_BLK_DEV_LOOP=y 360CONFIG_BLK_DEV_LOOP=y
226# CONFIG_BLK_DEV_CRYPTOLOOP is not set 361# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -228,23 +363,21 @@ CONFIG_BLK_DEV_NBD=m
228CONFIG_BLK_DEV_RAM=y 363CONFIG_BLK_DEV_RAM=y
229CONFIG_BLK_DEV_RAM_COUNT=16 364CONFIG_BLK_DEV_RAM_COUNT=16
230CONFIG_BLK_DEV_RAM_SIZE=4096 365CONFIG_BLK_DEV_RAM_SIZE=4096
366CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
231CONFIG_BLK_DEV_INITRD=y 367CONFIG_BLK_DEV_INITRD=y
232CONFIG_INITRAMFS_SOURCE=""
233# CONFIG_CDROM_PKTCDVD is not set 368# CONFIG_CDROM_PKTCDVD is not set
369# CONFIG_ATA_OVER_ETH is not set
234 370
235# 371#
236# IO Schedulers 372# Misc devices
237# 373#
238CONFIG_IOSCHED_NOOP=y 374# CONFIG_TIFM_CORE is not set
239# CONFIG_IOSCHED_AS is not set
240CONFIG_IOSCHED_DEADLINE=y
241CONFIG_IOSCHED_CFQ=y
242# CONFIG_ATA_OVER_ETH is not set
243 375
244# 376#
245# ATA/ATAPI/MFM/RLL support 377# ATA/ATAPI/MFM/RLL support
246# 378#
247CONFIG_IDE=m 379CONFIG_IDE=m
380CONFIG_IDE_MAX_HWIFS=4
248CONFIG_BLK_DEV_IDE=m 381CONFIG_BLK_DEV_IDE=m
249 382
250# 383#
@@ -271,7 +404,13 @@ CONFIG_IDE_GENERIC=m
271# 404#
272# SCSI device support 405# SCSI device support
273# 406#
407# CONFIG_RAID_ATTRS is not set
274# CONFIG_SCSI is not set 408# CONFIG_SCSI is not set
409# CONFIG_SCSI_NETLINK is not set
410
411#
412# Serial ATA (prod) and Parallel ATA (experimental) drivers
413#
275 414
276# 415#
277# Multi-device support (RAID and LVM) 416# Multi-device support (RAID and LVM)
@@ -281,79 +420,19 @@ CONFIG_IDE_GENERIC=m
281# 420#
282# Fusion MPT device support 421# Fusion MPT device support
283# 422#
423# CONFIG_FUSION is not set
284 424
285# 425#
286# IEEE 1394 (FireWire) support 426# IEEE 1394 (FireWire) support
287# 427#
288# CONFIG_IEEE1394 is not set
289 428
290# 429#
291# I2O device support 430# I2O device support
292# 431#
293 432
294# 433#
295# Networking support 434# Network device support
296# 435#
297CONFIG_NET=y
298
299#
300# Networking options
301#
302# CONFIG_PACKET is not set
303CONFIG_UNIX=y
304# CONFIG_NET_KEY is not set
305CONFIG_INET=y
306# CONFIG_IP_MULTICAST is not set
307# CONFIG_IP_ADVANCED_ROUTER is not set
308CONFIG_IP_PNP=y
309CONFIG_IP_PNP_DHCP=y
310# CONFIG_IP_PNP_BOOTP is not set
311# CONFIG_IP_PNP_RARP is not set
312# CONFIG_NET_IPIP is not set
313# CONFIG_NET_IPGRE is not set
314# CONFIG_ARPD is not set
315# CONFIG_SYN_COOKIES is not set
316# CONFIG_INET_AH is not set
317# CONFIG_INET_ESP is not set
318# CONFIG_INET_IPCOMP is not set
319# CONFIG_INET_TUNNEL is not set
320CONFIG_IP_TCPDIAG=y
321# CONFIG_IP_TCPDIAG_IPV6 is not set
322# CONFIG_IPV6 is not set
323# CONFIG_NETFILTER is not set
324
325#
326# SCTP Configuration (EXPERIMENTAL)
327#
328# CONFIG_IP_SCTP is not set
329# CONFIG_ATM is not set
330# CONFIG_BRIDGE is not set
331# CONFIG_VLAN_8021Q is not set
332# CONFIG_DECNET is not set
333# CONFIG_LLC2 is not set
334# CONFIG_IPX is not set
335# CONFIG_ATALK is not set
336# CONFIG_X25 is not set
337# CONFIG_LAPB is not set
338# CONFIG_NET_DIVERT is not set
339# CONFIG_ECONET is not set
340# CONFIG_WAN_ROUTER is not set
341
342#
343# QoS and/or fair queueing
344#
345# CONFIG_NET_SCHED is not set
346# CONFIG_NET_CLS_ROUTE is not set
347
348#
349# Network testing
350#
351# CONFIG_NET_PKTGEN is not set
352# CONFIG_NETPOLL is not set
353# CONFIG_NET_POLL_CONTROLLER is not set
354# CONFIG_HAMRADIO is not set
355# CONFIG_IRDA is not set
356# CONFIG_BT is not set
357CONFIG_NETDEVICES=y 436CONFIG_NETDEVICES=y
358# CONFIG_DUMMY is not set 437# CONFIG_DUMMY is not set
359# CONFIG_BONDING is not set 438# CONFIG_BONDING is not set
@@ -361,6 +440,10 @@ CONFIG_NETDEVICES=y
361# CONFIG_TUN is not set 440# CONFIG_TUN is not set
362 441
363# 442#
443# PHY device support
444#
445
446#
364# Ethernet (10 or 100Mbit) 447# Ethernet (10 or 100Mbit)
365# 448#
366# CONFIG_NET_ETHERNET is not set 449# CONFIG_NET_ETHERNET is not set
@@ -396,6 +479,8 @@ CONFIG_NE2000=y
396# CONFIG_SLIP is not set 479# CONFIG_SLIP is not set
397# CONFIG_SHAPER is not set 480# CONFIG_SHAPER is not set
398# CONFIG_NETCONSOLE is not set 481# CONFIG_NETCONSOLE is not set
482# CONFIG_NETPOLL is not set
483# CONFIG_NET_POLL_CONTROLLER is not set
399 484
400# 485#
401# ISDN subsystem 486# ISDN subsystem
@@ -411,6 +496,7 @@ CONFIG_NE2000=y
411# Input device support 496# Input device support
412# 497#
413CONFIG_INPUT=y 498CONFIG_INPUT=y
499# CONFIG_INPUT_FF_MEMLESS is not set
414 500
415# 501#
416# Userland interfaces 502# Userland interfaces
@@ -442,7 +528,6 @@ CONFIG_SERIO=y
442# CONFIG_SERIO_LIBPS2 is not set 528# CONFIG_SERIO_LIBPS2 is not set
443# CONFIG_SERIO_RAW is not set 529# CONFIG_SERIO_RAW is not set
444# CONFIG_GAMEPORT is not set 530# CONFIG_GAMEPORT is not set
445CONFIG_SOUND_GAMEPORT=y
446 531
447# 532#
448# Character devices 533# Character devices
@@ -462,7 +547,6 @@ CONFIG_SERIAL_CORE=y
462CONFIG_SERIAL_CORE_CONSOLE=y 547CONFIG_SERIAL_CORE_CONSOLE=y
463CONFIG_SERIAL_M32R_SIO=y 548CONFIG_SERIAL_M32R_SIO=y
464CONFIG_SERIAL_M32R_SIO_CONSOLE=y 549CONFIG_SERIAL_M32R_SIO_CONSOLE=y
465# CONFIG_SERIAL_M32R_PLDSIO is not set
466CONFIG_UNIX98_PTYS=y 550CONFIG_UNIX98_PTYS=y
467CONFIG_LEGACY_PTYS=y 551CONFIG_LEGACY_PTYS=y
468CONFIG_LEGACY_PTY_COUNT=256 552CONFIG_LEGACY_PTY_COUNT=256
@@ -476,25 +560,27 @@ CONFIG_LEGACY_PTY_COUNT=256
476# Watchdog Cards 560# Watchdog Cards
477# 561#
478# CONFIG_WATCHDOG is not set 562# CONFIG_WATCHDOG is not set
563CONFIG_HW_RANDOM=y
479# CONFIG_RTC is not set 564# CONFIG_RTC is not set
480# CONFIG_GEN_RTC is not set
481# CONFIG_DTLK is not set 565# CONFIG_DTLK is not set
482# CONFIG_R3964 is not set 566# CONFIG_R3964 is not set
483 567
484# 568#
485# Ftape, the floppy tape device driver 569# Ftape, the floppy tape device driver
486# 570#
487# CONFIG_DRM is not set
488 571
489# 572#
490# PCMCIA character devices 573# PCMCIA character devices
491# 574#
492# CONFIG_SYNCLINK_CS is not set 575# CONFIG_SYNCLINK_CS is not set
576# CONFIG_CARDMAN_4000 is not set
577# CONFIG_CARDMAN_4040 is not set
493# CONFIG_RAW_DRIVER is not set 578# CONFIG_RAW_DRIVER is not set
494 579
495# 580#
496# TPM devices 581# TPM devices
497# 582#
583# CONFIG_TCG_TPM is not set
498 584
499# 585#
500# I2C support 586# I2C support
@@ -502,13 +588,25 @@ CONFIG_LEGACY_PTY_COUNT=256
502# CONFIG_I2C is not set 588# CONFIG_I2C is not set
503 589
504# 590#
591# SPI support
592#
593# CONFIG_SPI is not set
594# CONFIG_SPI_MASTER is not set
595
596#
505# Dallas's 1-wire bus 597# Dallas's 1-wire bus
506# 598#
507# CONFIG_W1 is not set 599# CONFIG_W1 is not set
508 600
509# 601#
510# Misc devices 602# Hardware Monitoring support
511# 603#
604CONFIG_HWMON=y
605# CONFIG_HWMON_VID is not set
606# CONFIG_SENSORS_ABITUGURU is not set
607# CONFIG_SENSORS_F71805F is not set
608# CONFIG_SENSORS_VT1211 is not set
609# CONFIG_HWMON_DEBUG_CHIP is not set
512 610
513# 611#
514# Multimedia devices 612# Multimedia devices
@@ -523,7 +621,9 @@ CONFIG_LEGACY_PTY_COUNT=256
523# 621#
524# Graphics support 622# Graphics support
525# 623#
624CONFIG_FIRMWARE_EDID=y
526# CONFIG_FB is not set 625# CONFIG_FB is not set
626# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
527 627
528# 628#
529# Sound 629# Sound
@@ -535,6 +635,11 @@ CONFIG_LEGACY_PTY_COUNT=256
535# 635#
536# CONFIG_USB_ARCH_HAS_HCD is not set 636# CONFIG_USB_ARCH_HAS_HCD is not set
537# CONFIG_USB_ARCH_HAS_OHCI is not set 637# CONFIG_USB_ARCH_HAS_OHCI is not set
638# CONFIG_USB_ARCH_HAS_EHCI is not set
639
640#
641# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
642#
538 643
539# 644#
540# USB Gadget Support 645# USB Gadget Support
@@ -547,30 +652,73 @@ CONFIG_LEGACY_PTY_COUNT=256
547# CONFIG_MMC is not set 652# CONFIG_MMC is not set
548 653
549# 654#
655# LED devices
656#
657# CONFIG_NEW_LEDS is not set
658
659#
660# LED drivers
661#
662
663#
664# LED Triggers
665#
666
667#
550# InfiniBand support 668# InfiniBand support
551# 669#
552# CONFIG_INFINIBAND is not set 670
671#
672# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
673#
674
675#
676# Real Time Clock
677#
678# CONFIG_RTC_CLASS is not set
679
680#
681# DMA Engine support
682#
683# CONFIG_DMA_ENGINE is not set
684
685#
686# DMA Clients
687#
688
689#
690# DMA Devices
691#
553 692
554# 693#
555# File systems 694# File systems
556# 695#
557CONFIG_EXT2_FS=y 696CONFIG_EXT2_FS=y
558# CONFIG_EXT2_FS_XATTR is not set 697# CONFIG_EXT2_FS_XATTR is not set
559# CONFIG_EXT3_FS is not set 698# CONFIG_EXT2_FS_XIP is not set
560# CONFIG_JBD is not set 699CONFIG_EXT3_FS=y
700CONFIG_EXT3_FS_XATTR=y
701# CONFIG_EXT3_FS_POSIX_ACL is not set
702# CONFIG_EXT3_FS_SECURITY is not set
703# CONFIG_EXT4DEV_FS is not set
704CONFIG_JBD=y
705# CONFIG_JBD_DEBUG is not set
706CONFIG_FS_MBCACHE=y
561# CONFIG_REISERFS_FS is not set 707# CONFIG_REISERFS_FS is not set
562# CONFIG_JFS_FS is not set 708# CONFIG_JFS_FS is not set
563 709# CONFIG_FS_POSIX_ACL is not set
564#
565# XFS support
566#
567# CONFIG_XFS_FS is not set 710# CONFIG_XFS_FS is not set
711# CONFIG_GFS2_FS is not set
712# CONFIG_OCFS2_FS is not set
568# CONFIG_MINIX_FS is not set 713# CONFIG_MINIX_FS is not set
569CONFIG_ROMFS_FS=y 714CONFIG_ROMFS_FS=y
715CONFIG_INOTIFY=y
716CONFIG_INOTIFY_USER=y
570# CONFIG_QUOTA is not set 717# CONFIG_QUOTA is not set
571CONFIG_DNOTIFY=y 718CONFIG_DNOTIFY=y
572# CONFIG_AUTOFS_FS is not set 719# CONFIG_AUTOFS_FS is not set
573# CONFIG_AUTOFS4_FS is not set 720# CONFIG_AUTOFS4_FS is not set
721# CONFIG_FUSE_FS is not set
574 722
575# 723#
576# CD-ROM/DVD Filesystems 724# CD-ROM/DVD Filesystems
@@ -595,16 +743,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
595# 743#
596CONFIG_PROC_FS=y 744CONFIG_PROC_FS=y
597CONFIG_PROC_KCORE=y 745CONFIG_PROC_KCORE=y
746CONFIG_PROC_SYSCTL=y
598CONFIG_SYSFS=y 747CONFIG_SYSFS=y
599CONFIG_DEVFS_FS=y
600CONFIG_DEVFS_MOUNT=y
601# CONFIG_DEVFS_DEBUG is not set
602# CONFIG_DEVPTS_FS_XATTR is not set
603CONFIG_TMPFS=y 748CONFIG_TMPFS=y
604# CONFIG_TMPFS_XATTR is not set 749# CONFIG_TMPFS_POSIX_ACL is not set
605# CONFIG_HUGETLBFS is not set
606# CONFIG_HUGETLB_PAGE is not set 750# CONFIG_HUGETLB_PAGE is not set
607CONFIG_RAMFS=y 751CONFIG_RAMFS=y
752# CONFIG_CONFIGFS_FS is not set
608 753
609# 754#
610# Miscellaneous filesystems 755# Miscellaneous filesystems
@@ -621,8 +766,9 @@ CONFIG_JFFS_FS_VERBOSE=0
621CONFIG_JFFS_PROC_FS=y 766CONFIG_JFFS_PROC_FS=y
622CONFIG_JFFS2_FS=y 767CONFIG_JFFS2_FS=y
623CONFIG_JFFS2_FS_DEBUG=0 768CONFIG_JFFS2_FS_DEBUG=0
624# CONFIG_JFFS2_FS_NAND is not set 769CONFIG_JFFS2_FS_WRITEBUFFER=y
625# CONFIG_JFFS2_FS_NOR_ECC is not set 770# CONFIG_JFFS2_SUMMARY is not set
771# CONFIG_JFFS2_FS_XATTR is not set
626# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set 772# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
627CONFIG_JFFS2_ZLIB=y 773CONFIG_JFFS2_ZLIB=y
628CONFIG_JFFS2_RTIME=y 774CONFIG_JFFS2_RTIME=y
@@ -639,12 +785,14 @@ CONFIG_JFFS2_RTIME=y
639# 785#
640CONFIG_NFS_FS=y 786CONFIG_NFS_FS=y
641CONFIG_NFS_V3=y 787CONFIG_NFS_V3=y
788# CONFIG_NFS_V3_ACL is not set
642# CONFIG_NFS_V4 is not set 789# CONFIG_NFS_V4 is not set
643# CONFIG_NFS_DIRECTIO is not set 790# CONFIG_NFS_DIRECTIO is not set
644# CONFIG_NFSD is not set 791# CONFIG_NFSD is not set
645CONFIG_ROOT_NFS=y 792CONFIG_ROOT_NFS=y
646CONFIG_LOCKD=y 793CONFIG_LOCKD=y
647CONFIG_LOCKD_V4=y 794CONFIG_LOCKD_V4=y
795CONFIG_NFS_COMMON=y
648CONFIG_SUNRPC=y 796CONFIG_SUNRPC=y
649# CONFIG_RPCSEC_GSS_KRB5 is not set 797# CONFIG_RPCSEC_GSS_KRB5 is not set
650# CONFIG_RPCSEC_GSS_SPKM3 is not set 798# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -653,6 +801,7 @@ CONFIG_SUNRPC=y
653# CONFIG_NCP_FS is not set 801# CONFIG_NCP_FS is not set
654# CONFIG_CODA_FS is not set 802# CONFIG_CODA_FS is not set
655# CONFIG_AFS_FS is not set 803# CONFIG_AFS_FS is not set
804# CONFIG_9P_FS is not set
656 805
657# 806#
658# Partition Types 807# Partition Types
@@ -713,10 +862,16 @@ CONFIG_NLS_DEFAULT="iso8859-1"
713# Kernel hacking 862# Kernel hacking
714# 863#
715# CONFIG_PRINTK_TIME is not set 864# CONFIG_PRINTK_TIME is not set
865CONFIG_ENABLE_MUST_CHECK=y
866# CONFIG_MAGIC_SYSRQ is not set
867# CONFIG_UNUSED_SYMBOLS is not set
716# CONFIG_DEBUG_KERNEL is not set 868# CONFIG_DEBUG_KERNEL is not set
717CONFIG_LOG_BUF_SHIFT=15 869CONFIG_LOG_BUF_SHIFT=15
718# CONFIG_DEBUG_BUGVERBOSE is not set 870# CONFIG_DEBUG_BUGVERBOSE is not set
871# CONFIG_DEBUG_FS is not set
719# CONFIG_FRAME_POINTER is not set 872# CONFIG_FRAME_POINTER is not set
873# CONFIG_UNWIND_INFO is not set
874# CONFIG_HEADERS_CHECK is not set
720 875
721# 876#
722# Security options 877# Security options
@@ -730,13 +885,10 @@ CONFIG_LOG_BUF_SHIFT=15
730# CONFIG_CRYPTO is not set 885# CONFIG_CRYPTO is not set
731 886
732# 887#
733# Hardware crypto devices
734#
735
736#
737# Library routines 888# Library routines
738# 889#
739# CONFIG_CRC_CCITT is not set 890# CONFIG_CRC_CCITT is not set
891# CONFIG_CRC16 is not set
740CONFIG_CRC32=y 892CONFIG_CRC32=y
741# CONFIG_LIBCRC32C is not set 893# CONFIG_LIBCRC32C is not set
742CONFIG_ZLIB_INFLATE=y 894CONFIG_ZLIB_INFLATE=y
diff --git a/arch/m32r/mappi/defconfig.up b/arch/m32r/mappi/defconfig.up
index 38910fb76692..5ba00603c1a0 100644
--- a/arch/m32r/mappi/defconfig.up
+++ b/arch/m32r/mappi/defconfig.up
@@ -1,20 +1,18 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.12-rc5 3# Linux kernel version: 2.6.19
4# Fri Jun 3 16:21:59 2005 4# Wed Dec 13 17:51:20 2006
5# 5#
6CONFIG_M32R=y 6CONFIG_M32R=y
7# CONFIG_UID16 is not set
8CONFIG_GENERIC_ISA_DMA=y 7CONFIG_GENERIC_ISA_DMA=y
9CONFIG_GENERIC_HARDIRQS=y 8CONFIG_GENERIC_HARDIRQS=y
10CONFIG_GENERIC_IRQ_PROBE=y 9CONFIG_GENERIC_IRQ_PROBE=y
10CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11 11
12# 12#
13# Code maturity level options 13# Code maturity level options
14# 14#
15CONFIG_EXPERIMENTAL=y 15CONFIG_EXPERIMENTAL=y
16# CONFIG_CLEAN_COMPILE is not set
17CONFIG_BROKEN=y
18CONFIG_BROKEN_ON_SMP=y 16CONFIG_BROKEN_ON_SMP=y
19CONFIG_LOCK_KERNEL=y 17CONFIG_LOCK_KERNEL=y
20CONFIG_INIT_ENV_ARG_LIMIT=32 18CONFIG_INIT_ENV_ARG_LIMIT=32
@@ -23,31 +21,38 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
23# General setup 21# General setup
24# 22#
25CONFIG_LOCALVERSION="" 23CONFIG_LOCALVERSION=""
24CONFIG_LOCALVERSION_AUTO=y
26CONFIG_SWAP=y 25CONFIG_SWAP=y
27CONFIG_SYSVIPC=y 26CONFIG_SYSVIPC=y
27# CONFIG_IPC_NS is not set
28# CONFIG_POSIX_MQUEUE is not set 28# CONFIG_POSIX_MQUEUE is not set
29# CONFIG_BSD_PROCESS_ACCT is not set 29# CONFIG_BSD_PROCESS_ACCT is not set
30CONFIG_SYSCTL=y 30# CONFIG_TASKSTATS is not set
31# CONFIG_UTS_NS is not set
31# CONFIG_AUDIT is not set 32# CONFIG_AUDIT is not set
32CONFIG_HOTPLUG=y
33CONFIG_KOBJECT_UEVENT=y
34CONFIG_IKCONFIG=y 33CONFIG_IKCONFIG=y
35CONFIG_IKCONFIG_PROC=y 34CONFIG_IKCONFIG_PROC=y
35CONFIG_SYSFS_DEPRECATED=y
36# CONFIG_RELAY is not set
37CONFIG_INITRAMFS_SOURCE=""
38# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
39CONFIG_SYSCTL=y
36CONFIG_EMBEDDED=y 40CONFIG_EMBEDDED=y
41CONFIG_SYSCTL_SYSCALL=y
37# CONFIG_KALLSYMS is not set 42# CONFIG_KALLSYMS is not set
43CONFIG_HOTPLUG=y
38CONFIG_PRINTK=y 44CONFIG_PRINTK=y
39CONFIG_BUG=y 45CONFIG_BUG=y
46CONFIG_ELF_CORE=y
40CONFIG_BASE_FULL=y 47CONFIG_BASE_FULL=y
41# CONFIG_FUTEX is not set 48# CONFIG_FUTEX is not set
42# CONFIG_EPOLL is not set 49# CONFIG_EPOLL is not set
43# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
44CONFIG_SHMEM=y 50CONFIG_SHMEM=y
45CONFIG_CC_ALIGN_FUNCTIONS=0 51CONFIG_SLAB=y
46CONFIG_CC_ALIGN_LABELS=0 52CONFIG_VM_EVENT_COUNTERS=y
47CONFIG_CC_ALIGN_LOOPS=0
48CONFIG_CC_ALIGN_JUMPS=0
49# CONFIG_TINY_SHMEM is not set 53# CONFIG_TINY_SHMEM is not set
50CONFIG_BASE_SMALL=0 54CONFIG_BASE_SMALL=0
55# CONFIG_SLOB is not set
51 56
52# 57#
53# Loadable module support 58# Loadable module support
@@ -55,12 +60,30 @@ CONFIG_BASE_SMALL=0
55CONFIG_MODULES=y 60CONFIG_MODULES=y
56CONFIG_MODULE_UNLOAD=y 61CONFIG_MODULE_UNLOAD=y
57# CONFIG_MODULE_FORCE_UNLOAD is not set 62# CONFIG_MODULE_FORCE_UNLOAD is not set
58CONFIG_OBSOLETE_MODPARM=y
59# CONFIG_MODVERSIONS is not set 63# CONFIG_MODVERSIONS is not set
60# CONFIG_MODULE_SRCVERSION_ALL is not set 64# CONFIG_MODULE_SRCVERSION_ALL is not set
61CONFIG_KMOD=y 65CONFIG_KMOD=y
62 66
63# 67#
68# Block layer
69#
70CONFIG_BLOCK=y
71# CONFIG_BLK_DEV_IO_TRACE is not set
72
73#
74# IO Schedulers
75#
76CONFIG_IOSCHED_NOOP=y
77# CONFIG_IOSCHED_AS is not set
78CONFIG_IOSCHED_DEADLINE=y
79CONFIG_IOSCHED_CFQ=y
80# CONFIG_DEFAULT_AS is not set
81# CONFIG_DEFAULT_DEADLINE is not set
82CONFIG_DEFAULT_CFQ=y
83# CONFIG_DEFAULT_NOOP is not set
84CONFIG_DEFAULT_IOSCHED="cfq"
85
86#
64# Processor type and features 87# Processor type and features
65# 88#
66CONFIG_PLAT_MAPPI=y 89CONFIG_PLAT_MAPPI=y
@@ -70,8 +93,10 @@ CONFIG_PLAT_MAPPI=y
70# CONFIG_PLAT_OAKS32R is not set 93# CONFIG_PLAT_OAKS32R is not set
71# CONFIG_PLAT_MAPPI2 is not set 94# CONFIG_PLAT_MAPPI2 is not set
72# CONFIG_PLAT_MAPPI3 is not set 95# CONFIG_PLAT_MAPPI3 is not set
96# CONFIG_PLAT_M32104UT is not set
73CONFIG_CHIP_M32700=y 97CONFIG_CHIP_M32700=y
74# CONFIG_CHIP_M32102 is not set 98# CONFIG_CHIP_M32102 is not set
99# CONFIG_CHIP_M32104 is not set
75# CONFIG_CHIP_VDEC2 is not set 100# CONFIG_CHIP_VDEC2 is not set
76# CONFIG_CHIP_OPSP is not set 101# CONFIG_CHIP_OPSP is not set
77CONFIG_MMU=y 102CONFIG_MMU=y
@@ -85,20 +110,31 @@ CONFIG_TIMER_DIVIDE=128
85CONFIG_MEMORY_START=0x08000000 110CONFIG_MEMORY_START=0x08000000
86CONFIG_MEMORY_SIZE=0x04000000 111CONFIG_MEMORY_SIZE=0x04000000
87CONFIG_NOHIGHMEM=y 112CONFIG_NOHIGHMEM=y
113CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
114CONFIG_SELECT_MEMORY_MODEL=y
115# CONFIG_FLATMEM_MANUAL is not set
116CONFIG_DISCONTIGMEM_MANUAL=y
117# CONFIG_SPARSEMEM_MANUAL is not set
88CONFIG_DISCONTIGMEM=y 118CONFIG_DISCONTIGMEM=y
119CONFIG_FLAT_NODE_MEM_MAP=y
120CONFIG_NEED_MULTIPLE_NODES=y
121# CONFIG_SPARSEMEM_STATIC is not set
122CONFIG_SPLIT_PTLOCK_CPUS=4
123# CONFIG_RESOURCES_64BIT is not set
89CONFIG_IRAM_START=0x00f00000 124CONFIG_IRAM_START=0x00f00000
90CONFIG_IRAM_SIZE=0x00080000 125CONFIG_IRAM_SIZE=0x00080000
91CONFIG_RWSEM_GENERIC_SPINLOCK=y 126CONFIG_RWSEM_GENERIC_SPINLOCK=y
92# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 127# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
128CONFIG_GENERIC_FIND_NEXT_BIT=y
129CONFIG_GENERIC_HWEIGHT=y
93CONFIG_GENERIC_CALIBRATE_DELAY=y 130CONFIG_GENERIC_CALIBRATE_DELAY=y
94CONFIG_PREEMPT=y 131CONFIG_PREEMPT=y
95# CONFIG_HAVE_DEC_LOCK is not set
96# CONFIG_SMP is not set 132# CONFIG_SMP is not set
133CONFIG_NODES_SHIFT=1
97 134
98# 135#
99# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 136# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
100# 137#
101# CONFIG_PCI is not set
102# CONFIG_ISA is not set 138# CONFIG_ISA is not set
103 139
104# 140#
@@ -107,12 +143,14 @@ CONFIG_PREEMPT=y
107CONFIG_PCCARD=y 143CONFIG_PCCARD=y
108# CONFIG_PCMCIA_DEBUG is not set 144# CONFIG_PCMCIA_DEBUG is not set
109CONFIG_PCMCIA=y 145CONFIG_PCMCIA=y
146CONFIG_PCMCIA_LOAD_CIS=y
147CONFIG_PCMCIA_IOCTL=y
110 148
111# 149#
112# PC-card bridges 150# PC-card bridges
113# 151#
114# CONFIG_TCIC is not set
115CONFIG_M32R_PCC=y 152CONFIG_M32R_PCC=y
153CONFIG_PCCARD_NONSTATIC=y
116 154
117# 155#
118# PCI Hotplug Support 156# PCI Hotplug Support
@@ -125,6 +163,93 @@ CONFIG_BINFMT_ELF=y
125# CONFIG_BINFMT_MISC is not set 163# CONFIG_BINFMT_MISC is not set
126 164
127# 165#
166# Networking
167#
168CONFIG_NET=y
169
170#
171# Networking options
172#
173# CONFIG_NETDEBUG is not set
174# CONFIG_PACKET is not set
175CONFIG_UNIX=y
176CONFIG_XFRM=y
177# CONFIG_XFRM_USER is not set
178# CONFIG_XFRM_SUB_POLICY is not set
179# CONFIG_NET_KEY is not set
180CONFIG_INET=y
181# CONFIG_IP_MULTICAST is not set
182# CONFIG_IP_ADVANCED_ROUTER is not set
183CONFIG_IP_FIB_HASH=y
184CONFIG_IP_PNP=y
185CONFIG_IP_PNP_DHCP=y
186# CONFIG_IP_PNP_BOOTP is not set
187# CONFIG_IP_PNP_RARP is not set
188# CONFIG_NET_IPIP is not set
189# CONFIG_NET_IPGRE is not set
190# CONFIG_ARPD is not set
191# CONFIG_SYN_COOKIES is not set
192# CONFIG_INET_AH is not set
193# CONFIG_INET_ESP is not set
194# CONFIG_INET_IPCOMP is not set
195# CONFIG_INET_XFRM_TUNNEL is not set
196# CONFIG_INET_TUNNEL is not set
197CONFIG_INET_XFRM_MODE_TRANSPORT=y
198CONFIG_INET_XFRM_MODE_TUNNEL=y
199CONFIG_INET_XFRM_MODE_BEET=y
200CONFIG_INET_DIAG=y
201CONFIG_INET_TCP_DIAG=y
202# CONFIG_TCP_CONG_ADVANCED is not set
203CONFIG_TCP_CONG_CUBIC=y
204CONFIG_DEFAULT_TCP_CONG="cubic"
205# CONFIG_TCP_MD5SIG is not set
206# CONFIG_IPV6 is not set
207# CONFIG_INET6_XFRM_TUNNEL is not set
208# CONFIG_INET6_TUNNEL is not set
209# CONFIG_NETWORK_SECMARK is not set
210# CONFIG_NETFILTER is not set
211
212#
213# DCCP Configuration (EXPERIMENTAL)
214#
215# CONFIG_IP_DCCP is not set
216
217#
218# SCTP Configuration (EXPERIMENTAL)
219#
220# CONFIG_IP_SCTP is not set
221
222#
223# TIPC Configuration (EXPERIMENTAL)
224#
225# CONFIG_TIPC is not set
226# CONFIG_ATM is not set
227# CONFIG_BRIDGE is not set
228# CONFIG_VLAN_8021Q is not set
229# CONFIG_DECNET is not set
230# CONFIG_LLC2 is not set
231# CONFIG_IPX is not set
232# CONFIG_ATALK is not set
233# CONFIG_X25 is not set
234# CONFIG_LAPB is not set
235# CONFIG_ECONET is not set
236# CONFIG_WAN_ROUTER is not set
237
238#
239# QoS and/or fair queueing
240#
241# CONFIG_NET_SCHED is not set
242
243#
244# Network testing
245#
246# CONFIG_NET_PKTGEN is not set
247# CONFIG_HAMRADIO is not set
248# CONFIG_IRDA is not set
249# CONFIG_BT is not set
250# CONFIG_IEEE80211 is not set
251
252#
128# Device Drivers 253# Device Drivers
129# 254#
130 255
@@ -133,7 +258,13 @@ CONFIG_BINFMT_ELF=y
133# 258#
134# CONFIG_STANDALONE is not set 259# CONFIG_STANDALONE is not set
135CONFIG_PREVENT_FIRMWARE_BUILD=y 260CONFIG_PREVENT_FIRMWARE_BUILD=y
136# CONFIG_FW_LOADER is not set 261CONFIG_FW_LOADER=y
262# CONFIG_SYS_HYPERVISOR is not set
263
264#
265# Connector - unified userspace <-> kernelspace linker
266#
267# CONFIG_CONNECTOR is not set
137 268
138# 269#
139# Memory Technology Devices (MTD) 270# Memory Technology Devices (MTD)
@@ -156,6 +287,8 @@ CONFIG_MTD_BLOCK=y
156# CONFIG_FTL is not set 287# CONFIG_FTL is not set
157# CONFIG_NFTL is not set 288# CONFIG_NFTL is not set
158# CONFIG_INFTL is not set 289# CONFIG_INFTL is not set
290# CONFIG_RFD_FTL is not set
291# CONFIG_SSFDC is not set
159 292
160# 293#
161# RAM/ROM/Flash chip drivers 294# RAM/ROM/Flash chip drivers
@@ -181,6 +314,7 @@ CONFIG_MTD_CFI_I2=y
181# Mapping drivers for chip access 314# Mapping drivers for chip access
182# 315#
183# CONFIG_MTD_COMPLEX_MAPPINGS is not set 316# CONFIG_MTD_COMPLEX_MAPPINGS is not set
317# CONFIG_MTD_PLATRAM is not set
184 318
185# 319#
186# Self-contained MTD device drivers 320# Self-contained MTD device drivers
@@ -188,7 +322,6 @@ CONFIG_MTD_CFI_I2=y
188# CONFIG_MTD_SLRAM is not set 322# CONFIG_MTD_SLRAM is not set
189# CONFIG_MTD_PHRAM is not set 323# CONFIG_MTD_PHRAM is not set
190# CONFIG_MTD_MTDRAM is not set 324# CONFIG_MTD_MTDRAM is not set
191# CONFIG_MTD_BLKMTD is not set
192# CONFIG_MTD_BLOCK2MTD is not set 325# CONFIG_MTD_BLOCK2MTD is not set
193 326
194# 327#
@@ -204,6 +337,11 @@ CONFIG_MTD_CFI_I2=y
204# CONFIG_MTD_NAND is not set 337# CONFIG_MTD_NAND is not set
205 338
206# 339#
340# OneNAND Flash Device Drivers
341#
342# CONFIG_MTD_ONENAND is not set
343
344#
207# Parallel port support 345# Parallel port support
208# 346#
209# CONFIG_PARPORT is not set 347# CONFIG_PARPORT is not set
@@ -215,7 +353,6 @@ CONFIG_MTD_CFI_I2=y
215# 353#
216# Block devices 354# Block devices
217# 355#
218# CONFIG_BLK_DEV_FD is not set
219# CONFIG_BLK_DEV_COW_COMMON is not set 356# CONFIG_BLK_DEV_COW_COMMON is not set
220CONFIG_BLK_DEV_LOOP=y 357CONFIG_BLK_DEV_LOOP=y
221# CONFIG_BLK_DEV_CRYPTOLOOP is not set 358# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -223,23 +360,21 @@ CONFIG_BLK_DEV_NBD=m
223CONFIG_BLK_DEV_RAM=y 360CONFIG_BLK_DEV_RAM=y
224CONFIG_BLK_DEV_RAM_COUNT=16 361CONFIG_BLK_DEV_RAM_COUNT=16
225CONFIG_BLK_DEV_RAM_SIZE=4096 362CONFIG_BLK_DEV_RAM_SIZE=4096
363CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
226CONFIG_BLK_DEV_INITRD=y 364CONFIG_BLK_DEV_INITRD=y
227CONFIG_INITRAMFS_SOURCE=""
228# CONFIG_CDROM_PKTCDVD is not set 365# CONFIG_CDROM_PKTCDVD is not set
366# CONFIG_ATA_OVER_ETH is not set
229 367
230# 368#
231# IO Schedulers 369# Misc devices
232# 370#
233CONFIG_IOSCHED_NOOP=y 371# CONFIG_TIFM_CORE is not set
234# CONFIG_IOSCHED_AS is not set
235CONFIG_IOSCHED_DEADLINE=y
236CONFIG_IOSCHED_CFQ=y
237# CONFIG_ATA_OVER_ETH is not set
238 372
239# 373#
240# ATA/ATAPI/MFM/RLL support 374# ATA/ATAPI/MFM/RLL support
241# 375#
242CONFIG_IDE=m 376CONFIG_IDE=m
377CONFIG_IDE_MAX_HWIFS=4
243CONFIG_BLK_DEV_IDE=m 378CONFIG_BLK_DEV_IDE=m
244 379
245# 380#
@@ -266,7 +401,13 @@ CONFIG_IDE_GENERIC=m
266# 401#
267# SCSI device support 402# SCSI device support
268# 403#
404# CONFIG_RAID_ATTRS is not set
269# CONFIG_SCSI is not set 405# CONFIG_SCSI is not set
406# CONFIG_SCSI_NETLINK is not set
407
408#
409# Serial ATA (prod) and Parallel ATA (experimental) drivers
410#
270 411
271# 412#
272# Multi-device support (RAID and LVM) 413# Multi-device support (RAID and LVM)
@@ -276,79 +417,19 @@ CONFIG_IDE_GENERIC=m
276# 417#
277# Fusion MPT device support 418# Fusion MPT device support
278# 419#
420# CONFIG_FUSION is not set
279 421
280# 422#
281# IEEE 1394 (FireWire) support 423# IEEE 1394 (FireWire) support
282# 424#
283# CONFIG_IEEE1394 is not set
284 425
285# 426#
286# I2O device support 427# I2O device support
287# 428#
288 429
289# 430#
290# Networking support 431# Network device support
291# 432#
292CONFIG_NET=y
293
294#
295# Networking options
296#
297# CONFIG_PACKET is not set
298CONFIG_UNIX=y
299# CONFIG_NET_KEY is not set
300CONFIG_INET=y
301# CONFIG_IP_MULTICAST is not set
302# CONFIG_IP_ADVANCED_ROUTER is not set
303CONFIG_IP_PNP=y
304CONFIG_IP_PNP_DHCP=y
305# CONFIG_IP_PNP_BOOTP is not set
306# CONFIG_IP_PNP_RARP is not set
307# CONFIG_NET_IPIP is not set
308# CONFIG_NET_IPGRE is not set
309# CONFIG_ARPD is not set
310# CONFIG_SYN_COOKIES is not set
311# CONFIG_INET_AH is not set
312# CONFIG_INET_ESP is not set
313# CONFIG_INET_IPCOMP is not set
314# CONFIG_INET_TUNNEL is not set
315CONFIG_IP_TCPDIAG=y
316# CONFIG_IP_TCPDIAG_IPV6 is not set
317# CONFIG_IPV6 is not set
318# CONFIG_NETFILTER is not set
319
320#
321# SCTP Configuration (EXPERIMENTAL)
322#
323# CONFIG_IP_SCTP is not set
324# CONFIG_ATM is not set
325# CONFIG_BRIDGE is not set
326# CONFIG_VLAN_8021Q is not set
327# CONFIG_DECNET is not set
328# CONFIG_LLC2 is not set
329# CONFIG_IPX is not set
330# CONFIG_ATALK is not set
331# CONFIG_X25 is not set
332# CONFIG_LAPB is not set
333# CONFIG_NET_DIVERT is not set
334# CONFIG_ECONET is not set
335# CONFIG_WAN_ROUTER is not set
336
337#
338# QoS and/or fair queueing
339#
340# CONFIG_NET_SCHED is not set
341# CONFIG_NET_CLS_ROUTE is not set
342
343#
344# Network testing
345#
346# CONFIG_NET_PKTGEN is not set
347# CONFIG_NETPOLL is not set
348# CONFIG_NET_POLL_CONTROLLER is not set
349# CONFIG_HAMRADIO is not set
350# CONFIG_IRDA is not set
351# CONFIG_BT is not set
352CONFIG_NETDEVICES=y 433CONFIG_NETDEVICES=y
353# CONFIG_DUMMY is not set 434# CONFIG_DUMMY is not set
354# CONFIG_BONDING is not set 435# CONFIG_BONDING is not set
@@ -356,6 +437,10 @@ CONFIG_NETDEVICES=y
356# CONFIG_TUN is not set 437# CONFIG_TUN is not set
357 438
358# 439#
440# PHY device support
441#
442
443#
359# Ethernet (10 or 100Mbit) 444# Ethernet (10 or 100Mbit)
360# 445#
361# CONFIG_NET_ETHERNET is not set 446# CONFIG_NET_ETHERNET is not set
@@ -391,6 +476,8 @@ CONFIG_NE2000=y
391# CONFIG_SLIP is not set 476# CONFIG_SLIP is not set
392# CONFIG_SHAPER is not set 477# CONFIG_SHAPER is not set
393# CONFIG_NETCONSOLE is not set 478# CONFIG_NETCONSOLE is not set
479# CONFIG_NETPOLL is not set
480# CONFIG_NET_POLL_CONTROLLER is not set
394 481
395# 482#
396# ISDN subsystem 483# ISDN subsystem
@@ -406,6 +493,7 @@ CONFIG_NE2000=y
406# Input device support 493# Input device support
407# 494#
408CONFIG_INPUT=y 495CONFIG_INPUT=y
496# CONFIG_INPUT_FF_MEMLESS is not set
409 497
410# 498#
411# Userland interfaces 499# Userland interfaces
@@ -437,7 +525,6 @@ CONFIG_SERIO=y
437# CONFIG_SERIO_LIBPS2 is not set 525# CONFIG_SERIO_LIBPS2 is not set
438# CONFIG_SERIO_RAW is not set 526# CONFIG_SERIO_RAW is not set
439# CONFIG_GAMEPORT is not set 527# CONFIG_GAMEPORT is not set
440CONFIG_SOUND_GAMEPORT=y
441 528
442# 529#
443# Character devices 530# Character devices
@@ -457,7 +544,6 @@ CONFIG_SERIAL_CORE=y
457CONFIG_SERIAL_CORE_CONSOLE=y 544CONFIG_SERIAL_CORE_CONSOLE=y
458CONFIG_SERIAL_M32R_SIO=y 545CONFIG_SERIAL_M32R_SIO=y
459CONFIG_SERIAL_M32R_SIO_CONSOLE=y 546CONFIG_SERIAL_M32R_SIO_CONSOLE=y
460# CONFIG_SERIAL_M32R_PLDSIO is not set
461CONFIG_UNIX98_PTYS=y 547CONFIG_UNIX98_PTYS=y
462CONFIG_LEGACY_PTYS=y 548CONFIG_LEGACY_PTYS=y
463CONFIG_LEGACY_PTY_COUNT=256 549CONFIG_LEGACY_PTY_COUNT=256
@@ -471,25 +557,27 @@ CONFIG_LEGACY_PTY_COUNT=256
471# Watchdog Cards 557# Watchdog Cards
472# 558#
473# CONFIG_WATCHDOG is not set 559# CONFIG_WATCHDOG is not set
560CONFIG_HW_RANDOM=y
474# CONFIG_RTC is not set 561# CONFIG_RTC is not set
475# CONFIG_GEN_RTC is not set
476# CONFIG_DTLK is not set 562# CONFIG_DTLK is not set
477# CONFIG_R3964 is not set 563# CONFIG_R3964 is not set
478 564
479# 565#
480# Ftape, the floppy tape device driver 566# Ftape, the floppy tape device driver
481# 567#
482# CONFIG_DRM is not set
483 568
484# 569#
485# PCMCIA character devices 570# PCMCIA character devices
486# 571#
487# CONFIG_SYNCLINK_CS is not set 572# CONFIG_SYNCLINK_CS is not set
573# CONFIG_CARDMAN_4000 is not set
574# CONFIG_CARDMAN_4040 is not set
488# CONFIG_RAW_DRIVER is not set 575# CONFIG_RAW_DRIVER is not set
489 576
490# 577#
491# TPM devices 578# TPM devices
492# 579#
580# CONFIG_TCG_TPM is not set
493 581
494# 582#
495# I2C support 583# I2C support
@@ -497,13 +585,25 @@ CONFIG_LEGACY_PTY_COUNT=256
497# CONFIG_I2C is not set 585# CONFIG_I2C is not set
498 586
499# 587#
588# SPI support
589#
590# CONFIG_SPI is not set
591# CONFIG_SPI_MASTER is not set
592
593#
500# Dallas's 1-wire bus 594# Dallas's 1-wire bus
501# 595#
502# CONFIG_W1 is not set 596# CONFIG_W1 is not set
503 597
504# 598#
505# Misc devices 599# Hardware Monitoring support
506# 600#
601CONFIG_HWMON=y
602# CONFIG_HWMON_VID is not set
603# CONFIG_SENSORS_ABITUGURU is not set
604# CONFIG_SENSORS_F71805F is not set
605# CONFIG_SENSORS_VT1211 is not set
606# CONFIG_HWMON_DEBUG_CHIP is not set
507 607
508# 608#
509# Multimedia devices 609# Multimedia devices
@@ -518,7 +618,9 @@ CONFIG_LEGACY_PTY_COUNT=256
518# 618#
519# Graphics support 619# Graphics support
520# 620#
621CONFIG_FIRMWARE_EDID=y
521# CONFIG_FB is not set 622# CONFIG_FB is not set
623# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
522 624
523# 625#
524# Sound 626# Sound
@@ -530,6 +632,11 @@ CONFIG_LEGACY_PTY_COUNT=256
530# 632#
531# CONFIG_USB_ARCH_HAS_HCD is not set 633# CONFIG_USB_ARCH_HAS_HCD is not set
532# CONFIG_USB_ARCH_HAS_OHCI is not set 634# CONFIG_USB_ARCH_HAS_OHCI is not set
635# CONFIG_USB_ARCH_HAS_EHCI is not set
636
637#
638# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
639#
533 640
534# 641#
535# USB Gadget Support 642# USB Gadget Support
@@ -542,30 +649,73 @@ CONFIG_LEGACY_PTY_COUNT=256
542# CONFIG_MMC is not set 649# CONFIG_MMC is not set
543 650
544# 651#
652# LED devices
653#
654# CONFIG_NEW_LEDS is not set
655
656#
657# LED drivers
658#
659
660#
661# LED Triggers
662#
663
664#
545# InfiniBand support 665# InfiniBand support
546# 666#
547# CONFIG_INFINIBAND is not set 667
668#
669# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
670#
671
672#
673# Real Time Clock
674#
675# CONFIG_RTC_CLASS is not set
676
677#
678# DMA Engine support
679#
680# CONFIG_DMA_ENGINE is not set
681
682#
683# DMA Clients
684#
685
686#
687# DMA Devices
688#
548 689
549# 690#
550# File systems 691# File systems
551# 692#
552CONFIG_EXT2_FS=y 693CONFIG_EXT2_FS=y
553# CONFIG_EXT2_FS_XATTR is not set 694# CONFIG_EXT2_FS_XATTR is not set
554# CONFIG_EXT3_FS is not set 695# CONFIG_EXT2_FS_XIP is not set
555# CONFIG_JBD is not set 696CONFIG_EXT3_FS=y
697CONFIG_EXT3_FS_XATTR=y
698# CONFIG_EXT3_FS_POSIX_ACL is not set
699# CONFIG_EXT3_FS_SECURITY is not set
700# CONFIG_EXT4DEV_FS is not set
701CONFIG_JBD=y
702# CONFIG_JBD_DEBUG is not set
703CONFIG_FS_MBCACHE=y
556# CONFIG_REISERFS_FS is not set 704# CONFIG_REISERFS_FS is not set
557# CONFIG_JFS_FS is not set 705# CONFIG_JFS_FS is not set
558 706# CONFIG_FS_POSIX_ACL is not set
559#
560# XFS support
561#
562# CONFIG_XFS_FS is not set 707# CONFIG_XFS_FS is not set
708# CONFIG_GFS2_FS is not set
709# CONFIG_OCFS2_FS is not set
563# CONFIG_MINIX_FS is not set 710# CONFIG_MINIX_FS is not set
564CONFIG_ROMFS_FS=y 711CONFIG_ROMFS_FS=y
712CONFIG_INOTIFY=y
713CONFIG_INOTIFY_USER=y
565# CONFIG_QUOTA is not set 714# CONFIG_QUOTA is not set
566CONFIG_DNOTIFY=y 715CONFIG_DNOTIFY=y
567# CONFIG_AUTOFS_FS is not set 716# CONFIG_AUTOFS_FS is not set
568# CONFIG_AUTOFS4_FS is not set 717# CONFIG_AUTOFS4_FS is not set
718# CONFIG_FUSE_FS is not set
569 719
570# 720#
571# CD-ROM/DVD Filesystems 721# CD-ROM/DVD Filesystems
@@ -590,16 +740,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
590# 740#
591CONFIG_PROC_FS=y 741CONFIG_PROC_FS=y
592CONFIG_PROC_KCORE=y 742CONFIG_PROC_KCORE=y
743CONFIG_PROC_SYSCTL=y
593CONFIG_SYSFS=y 744CONFIG_SYSFS=y
594CONFIG_DEVFS_FS=y
595CONFIG_DEVFS_MOUNT=y
596# CONFIG_DEVFS_DEBUG is not set
597# CONFIG_DEVPTS_FS_XATTR is not set
598CONFIG_TMPFS=y 745CONFIG_TMPFS=y
599# CONFIG_TMPFS_XATTR is not set 746# CONFIG_TMPFS_POSIX_ACL is not set
600# CONFIG_HUGETLBFS is not set
601# CONFIG_HUGETLB_PAGE is not set 747# CONFIG_HUGETLB_PAGE is not set
602CONFIG_RAMFS=y 748CONFIG_RAMFS=y
749# CONFIG_CONFIGFS_FS is not set
603 750
604# 751#
605# Miscellaneous filesystems 752# Miscellaneous filesystems
@@ -616,8 +763,9 @@ CONFIG_JFFS_FS_VERBOSE=0
616CONFIG_JFFS_PROC_FS=y 763CONFIG_JFFS_PROC_FS=y
617CONFIG_JFFS2_FS=y 764CONFIG_JFFS2_FS=y
618CONFIG_JFFS2_FS_DEBUG=0 765CONFIG_JFFS2_FS_DEBUG=0
619# CONFIG_JFFS2_FS_NAND is not set 766CONFIG_JFFS2_FS_WRITEBUFFER=y
620# CONFIG_JFFS2_FS_NOR_ECC is not set 767# CONFIG_JFFS2_SUMMARY is not set
768# CONFIG_JFFS2_FS_XATTR is not set
621# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set 769# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
622CONFIG_JFFS2_ZLIB=y 770CONFIG_JFFS2_ZLIB=y
623CONFIG_JFFS2_RTIME=y 771CONFIG_JFFS2_RTIME=y
@@ -634,12 +782,14 @@ CONFIG_JFFS2_RTIME=y
634# 782#
635CONFIG_NFS_FS=y 783CONFIG_NFS_FS=y
636CONFIG_NFS_V3=y 784CONFIG_NFS_V3=y
785# CONFIG_NFS_V3_ACL is not set
637# CONFIG_NFS_V4 is not set 786# CONFIG_NFS_V4 is not set
638# CONFIG_NFS_DIRECTIO is not set 787# CONFIG_NFS_DIRECTIO is not set
639# CONFIG_NFSD is not set 788# CONFIG_NFSD is not set
640CONFIG_ROOT_NFS=y 789CONFIG_ROOT_NFS=y
641CONFIG_LOCKD=y 790CONFIG_LOCKD=y
642CONFIG_LOCKD_V4=y 791CONFIG_LOCKD_V4=y
792CONFIG_NFS_COMMON=y
643CONFIG_SUNRPC=y 793CONFIG_SUNRPC=y
644# CONFIG_RPCSEC_GSS_KRB5 is not set 794# CONFIG_RPCSEC_GSS_KRB5 is not set
645# CONFIG_RPCSEC_GSS_SPKM3 is not set 795# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -648,6 +798,7 @@ CONFIG_SUNRPC=y
648# CONFIG_NCP_FS is not set 798# CONFIG_NCP_FS is not set
649# CONFIG_CODA_FS is not set 799# CONFIG_CODA_FS is not set
650# CONFIG_AFS_FS is not set 800# CONFIG_AFS_FS is not set
801# CONFIG_9P_FS is not set
651 802
652# 803#
653# Partition Types 804# Partition Types
@@ -708,10 +859,16 @@ CONFIG_NLS_DEFAULT="iso8859-1"
708# Kernel hacking 859# Kernel hacking
709# 860#
710# CONFIG_PRINTK_TIME is not set 861# CONFIG_PRINTK_TIME is not set
862CONFIG_ENABLE_MUST_CHECK=y
863# CONFIG_MAGIC_SYSRQ is not set
864# CONFIG_UNUSED_SYMBOLS is not set
711# CONFIG_DEBUG_KERNEL is not set 865# CONFIG_DEBUG_KERNEL is not set
712CONFIG_LOG_BUF_SHIFT=14 866CONFIG_LOG_BUF_SHIFT=14
713# CONFIG_DEBUG_BUGVERBOSE is not set 867# CONFIG_DEBUG_BUGVERBOSE is not set
868# CONFIG_DEBUG_FS is not set
714# CONFIG_FRAME_POINTER is not set 869# CONFIG_FRAME_POINTER is not set
870# CONFIG_UNWIND_INFO is not set
871# CONFIG_HEADERS_CHECK is not set
715 872
716# 873#
717# Security options 874# Security options
@@ -725,13 +882,10 @@ CONFIG_LOG_BUF_SHIFT=14
725# CONFIG_CRYPTO is not set 882# CONFIG_CRYPTO is not set
726 883
727# 884#
728# Hardware crypto devices
729#
730
731#
732# Library routines 885# Library routines
733# 886#
734# CONFIG_CRC_CCITT is not set 887# CONFIG_CRC_CCITT is not set
888# CONFIG_CRC16 is not set
735CONFIG_CRC32=y 889CONFIG_CRC32=y
736# CONFIG_LIBCRC32C is not set 890# CONFIG_LIBCRC32C is not set
737CONFIG_ZLIB_INFLATE=y 891CONFIG_ZLIB_INFLATE=y
diff --git a/arch/m32r/mappi2/defconfig.opsp b/arch/m32r/mappi2/defconfig.opsp
new file mode 100644
index 000000000000..b379ae96e6a7
--- /dev/null
+++ b/arch/m32r/mappi2/defconfig.opsp
@@ -0,0 +1,883 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19
4# Wed Dec 13 19:40:30 2006
5#
6CONFIG_M32R=y
7CONFIG_GENERIC_ISA_DMA=y
8CONFIG_GENERIC_HARDIRQS=y
9CONFIG_GENERIC_IRQ_PROBE=y
10CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11
12#
13# Code maturity level options
14#
15CONFIG_EXPERIMENTAL=y
16CONFIG_BROKEN_ON_SMP=y
17CONFIG_LOCK_KERNEL=y
18CONFIG_INIT_ENV_ARG_LIMIT=32
19
20#
21# General setup
22#
23CONFIG_LOCALVERSION=""
24CONFIG_LOCALVERSION_AUTO=y
25CONFIG_SWAP=y
26CONFIG_SYSVIPC=y
27# CONFIG_IPC_NS is not set
28# CONFIG_POSIX_MQUEUE is not set
29CONFIG_BSD_PROCESS_ACCT=y
30# CONFIG_BSD_PROCESS_ACCT_V3 is not set
31# CONFIG_TASKSTATS is not set
32# CONFIG_UTS_NS is not set
33# CONFIG_AUDIT is not set
34CONFIG_IKCONFIG=y
35# CONFIG_IKCONFIG_PROC is not set
36CONFIG_SYSFS_DEPRECATED=y
37# CONFIG_RELAY is not set
38CONFIG_INITRAMFS_SOURCE=""
39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
40CONFIG_SYSCTL=y
41CONFIG_EMBEDDED=y
42CONFIG_SYSCTL_SYSCALL=y
43# CONFIG_KALLSYMS is not set
44CONFIG_HOTPLUG=y
45CONFIG_PRINTK=y
46CONFIG_BUG=y
47CONFIG_ELF_CORE=y
48CONFIG_BASE_FULL=y
49# CONFIG_FUTEX is not set
50# CONFIG_EPOLL is not set
51CONFIG_SHMEM=y
52CONFIG_SLAB=y
53CONFIG_VM_EVENT_COUNTERS=y
54# CONFIG_TINY_SHMEM is not set
55CONFIG_BASE_SMALL=0
56# CONFIG_SLOB is not set
57
58#
59# Loadable module support
60#
61CONFIG_MODULES=y
62CONFIG_MODULE_UNLOAD=y
63# CONFIG_MODULE_FORCE_UNLOAD is not set
64# CONFIG_MODVERSIONS is not set
65# CONFIG_MODULE_SRCVERSION_ALL is not set
66CONFIG_KMOD=y
67
68#
69# Block layer
70#
71CONFIG_BLOCK=y
72# CONFIG_BLK_DEV_IO_TRACE is not set
73
74#
75# IO Schedulers
76#
77CONFIG_IOSCHED_NOOP=y
78# CONFIG_IOSCHED_AS is not set
79CONFIG_IOSCHED_DEADLINE=y
80CONFIG_IOSCHED_CFQ=y
81# CONFIG_DEFAULT_AS is not set
82# CONFIG_DEFAULT_DEADLINE is not set
83CONFIG_DEFAULT_CFQ=y
84# CONFIG_DEFAULT_NOOP is not set
85CONFIG_DEFAULT_IOSCHED="cfq"
86
87#
88# Processor type and features
89#
90# CONFIG_PLAT_MAPPI is not set
91# CONFIG_PLAT_USRV is not set
92# CONFIG_PLAT_M32700UT is not set
93# CONFIG_PLAT_OPSPUT is not set
94# CONFIG_PLAT_OAKS32R is not set
95CONFIG_PLAT_MAPPI2=y
96# CONFIG_PLAT_MAPPI3 is not set
97# CONFIG_PLAT_M32104UT is not set
98# CONFIG_CHIP_M32700 is not set
99# CONFIG_CHIP_M32102 is not set
100# CONFIG_CHIP_M32104 is not set
101# CONFIG_CHIP_VDEC2 is not set
102CONFIG_CHIP_OPSP=y
103CONFIG_MMU=y
104CONFIG_TLB_ENTRIES=16
105CONFIG_ISA_M32R2=y
106CONFIG_ISA_DSP_LEVEL2=y
107CONFIG_ISA_DUAL_ISSUE=y
108CONFIG_BUS_CLOCK=50000000
109CONFIG_TIMER_DIVIDE=128
110# CONFIG_CPU_LITTLE_ENDIAN is not set
111CONFIG_MEMORY_START=0x08000000
112CONFIG_MEMORY_SIZE=0x01000000
113CONFIG_NOHIGHMEM=y
114CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
115CONFIG_SELECT_MEMORY_MODEL=y
116# CONFIG_FLATMEM_MANUAL is not set
117CONFIG_DISCONTIGMEM_MANUAL=y
118# CONFIG_SPARSEMEM_MANUAL is not set
119CONFIG_DISCONTIGMEM=y
120CONFIG_FLAT_NODE_MEM_MAP=y
121CONFIG_NEED_MULTIPLE_NODES=y
122# CONFIG_SPARSEMEM_STATIC is not set
123CONFIG_SPLIT_PTLOCK_CPUS=4
124# CONFIG_RESOURCES_64BIT is not set
125CONFIG_IRAM_START=0x00f00000
126CONFIG_IRAM_SIZE=0x00008000
127CONFIG_RWSEM_GENERIC_SPINLOCK=y
128# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
129CONFIG_GENERIC_FIND_NEXT_BIT=y
130CONFIG_GENERIC_HWEIGHT=y
131CONFIG_GENERIC_CALIBRATE_DELAY=y
132CONFIG_PREEMPT=y
133# CONFIG_SMP is not set
134CONFIG_NODES_SHIFT=1
135
136#
137# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
138#
139# CONFIG_ISA is not set
140
141#
142# PCCARD (PCMCIA/CardBus) support
143#
144CONFIG_PCCARD=y
145# CONFIG_PCMCIA_DEBUG is not set
146CONFIG_PCMCIA=y
147CONFIG_PCMCIA_LOAD_CIS=y
148CONFIG_PCMCIA_IOCTL=y
149
150#
151# PC-card bridges
152#
153# CONFIG_M32R_CFC is not set
154
155#
156# PCI Hotplug Support
157#
158
159#
160# Executable file formats
161#
162CONFIG_BINFMT_ELF=y
163# CONFIG_BINFMT_MISC is not set
164
165#
166# Networking
167#
168CONFIG_NET=y
169
170#
171# Networking options
172#
173# CONFIG_NETDEBUG is not set
174CONFIG_PACKET=y
175# CONFIG_PACKET_MMAP is not set
176CONFIG_UNIX=y
177CONFIG_XFRM=y
178# CONFIG_XFRM_USER is not set
179# CONFIG_XFRM_SUB_POLICY is not set
180# CONFIG_NET_KEY is not set
181CONFIG_INET=y
182# CONFIG_IP_MULTICAST is not set
183# CONFIG_IP_ADVANCED_ROUTER is not set
184CONFIG_IP_FIB_HASH=y
185CONFIG_IP_PNP=y
186CONFIG_IP_PNP_DHCP=y
187# CONFIG_IP_PNP_BOOTP is not set
188# CONFIG_IP_PNP_RARP is not set
189# CONFIG_NET_IPIP is not set
190# CONFIG_NET_IPGRE is not set
191# CONFIG_ARPD is not set
192# CONFIG_SYN_COOKIES is not set
193# CONFIG_INET_AH is not set
194# CONFIG_INET_ESP is not set
195# CONFIG_INET_IPCOMP is not set
196# CONFIG_INET_XFRM_TUNNEL is not set
197# CONFIG_INET_TUNNEL is not set
198CONFIG_INET_XFRM_MODE_TRANSPORT=y
199CONFIG_INET_XFRM_MODE_TUNNEL=y
200CONFIG_INET_XFRM_MODE_BEET=y
201CONFIG_INET_DIAG=y
202CONFIG_INET_TCP_DIAG=y
203# CONFIG_TCP_CONG_ADVANCED is not set
204CONFIG_TCP_CONG_CUBIC=y
205CONFIG_DEFAULT_TCP_CONG="cubic"
206# CONFIG_TCP_MD5SIG is not set
207# CONFIG_IPV6 is not set
208# CONFIG_INET6_XFRM_TUNNEL is not set
209# CONFIG_INET6_TUNNEL is not set
210# CONFIG_NETWORK_SECMARK is not set
211# CONFIG_NETFILTER is not set
212
213#
214# DCCP Configuration (EXPERIMENTAL)
215#
216# CONFIG_IP_DCCP is not set
217
218#
219# SCTP Configuration (EXPERIMENTAL)
220#
221# CONFIG_IP_SCTP is not set
222
223#
224# TIPC Configuration (EXPERIMENTAL)
225#
226# CONFIG_TIPC is not set
227# CONFIG_ATM is not set
228# CONFIG_BRIDGE is not set
229# CONFIG_VLAN_8021Q is not set
230# CONFIG_DECNET is not set
231# CONFIG_LLC2 is not set
232# CONFIG_IPX is not set
233# CONFIG_ATALK is not set
234# CONFIG_X25 is not set
235# CONFIG_LAPB is not set
236# CONFIG_ECONET is not set
237# CONFIG_WAN_ROUTER is not set
238
239#
240# QoS and/or fair queueing
241#
242# CONFIG_NET_SCHED is not set
243
244#
245# Network testing
246#
247# CONFIG_NET_PKTGEN is not set
248# CONFIG_HAMRADIO is not set
249# CONFIG_IRDA is not set
250# CONFIG_BT is not set
251# CONFIG_IEEE80211 is not set
252
253#
254# Device Drivers
255#
256
257#
258# Generic Driver Options
259#
260CONFIG_STANDALONE=y
261CONFIG_PREVENT_FIRMWARE_BUILD=y
262CONFIG_FW_LOADER=y
263# CONFIG_SYS_HYPERVISOR is not set
264
265#
266# Connector - unified userspace <-> kernelspace linker
267#
268# CONFIG_CONNECTOR is not set
269
270#
271# Memory Technology Devices (MTD)
272#
273# CONFIG_MTD is not set
274
275#
276# Parallel port support
277#
278# CONFIG_PARPORT is not set
279
280#
281# Plug and Play support
282#
283
284#
285# Block devices
286#
287# CONFIG_BLK_DEV_COW_COMMON is not set
288CONFIG_BLK_DEV_LOOP=y
289# CONFIG_BLK_DEV_CRYPTOLOOP is not set
290CONFIG_BLK_DEV_NBD=y
291CONFIG_BLK_DEV_RAM=y
292CONFIG_BLK_DEV_RAM_COUNT=16
293CONFIG_BLK_DEV_RAM_SIZE=4096
294CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
295# CONFIG_BLK_DEV_INITRD is not set
296# CONFIG_CDROM_PKTCDVD is not set
297# CONFIG_ATA_OVER_ETH is not set
298
299#
300# Misc devices
301#
302# CONFIG_TIFM_CORE is not set
303
304#
305# ATA/ATAPI/MFM/RLL support
306#
307CONFIG_IDE=y
308CONFIG_IDE_MAX_HWIFS=4
309CONFIG_BLK_DEV_IDE=y
310
311#
312# Please see Documentation/ide.txt for help/info on IDE drives
313#
314# CONFIG_BLK_DEV_IDE_SATA is not set
315CONFIG_BLK_DEV_IDEDISK=y
316# CONFIG_IDEDISK_MULTI_MODE is not set
317CONFIG_BLK_DEV_IDECS=y
318CONFIG_BLK_DEV_IDECD=m
319# CONFIG_BLK_DEV_IDETAPE is not set
320# CONFIG_BLK_DEV_IDEFLOPPY is not set
321# CONFIG_BLK_DEV_IDESCSI is not set
322# CONFIG_IDE_TASK_IOCTL is not set
323
324#
325# IDE chipset support/bugfixes
326#
327CONFIG_IDE_GENERIC=y
328# CONFIG_IDE_ARM is not set
329# CONFIG_BLK_DEV_IDEDMA is not set
330# CONFIG_IDEDMA_AUTO is not set
331# CONFIG_BLK_DEV_HD is not set
332
333#
334# SCSI device support
335#
336# CONFIG_RAID_ATTRS is not set
337CONFIG_SCSI=m
338# CONFIG_SCSI_NETLINK is not set
339CONFIG_SCSI_PROC_FS=y
340
341#
342# SCSI support type (disk, tape, CD-ROM)
343#
344CONFIG_BLK_DEV_SD=m
345# CONFIG_CHR_DEV_ST is not set
346# CONFIG_CHR_DEV_OSST is not set
347CONFIG_BLK_DEV_SR=m
348# CONFIG_BLK_DEV_SR_VENDOR is not set
349CONFIG_CHR_DEV_SG=m
350# CONFIG_CHR_DEV_SCH is not set
351
352#
353# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
354#
355CONFIG_SCSI_MULTI_LUN=y
356# CONFIG_SCSI_CONSTANTS is not set
357# CONFIG_SCSI_LOGGING is not set
358
359#
360# SCSI Transports
361#
362# CONFIG_SCSI_SPI_ATTRS is not set
363# CONFIG_SCSI_FC_ATTRS is not set
364# CONFIG_SCSI_ISCSI_ATTRS is not set
365# CONFIG_SCSI_SAS_ATTRS is not set
366# CONFIG_SCSI_SAS_LIBSAS is not set
367
368#
369# SCSI low-level drivers
370#
371# CONFIG_ISCSI_TCP is not set
372# CONFIG_SCSI_DEBUG is not set
373
374#
375# PCMCIA SCSI adapter support
376#
377# CONFIG_PCMCIA_AHA152X is not set
378# CONFIG_PCMCIA_FDOMAIN is not set
379# CONFIG_PCMCIA_NINJA_SCSI is not set
380# CONFIG_PCMCIA_QLOGIC is not set
381# CONFIG_PCMCIA_SYM53C500 is not set
382
383#
384# Serial ATA (prod) and Parallel ATA (experimental) drivers
385#
386
387#
388# Multi-device support (RAID and LVM)
389#
390# CONFIG_MD is not set
391
392#
393# Fusion MPT device support
394#
395# CONFIG_FUSION is not set
396
397#
398# IEEE 1394 (FireWire) support
399#
400
401#
402# I2O device support
403#
404
405#
406# Network device support
407#
408CONFIG_NETDEVICES=y
409# CONFIG_DUMMY is not set
410# CONFIG_BONDING is not set
411# CONFIG_EQUALIZER is not set
412# CONFIG_TUN is not set
413
414#
415# PHY device support
416#
417# CONFIG_PHYLIB is not set
418
419#
420# Ethernet (10 or 100Mbit)
421#
422CONFIG_NET_ETHERNET=y
423CONFIG_MII=y
424CONFIG_SMC91X=y
425# CONFIG_NE2000 is not set
426
427#
428# Ethernet (1000 Mbit)
429#
430
431#
432# Ethernet (10000 Mbit)
433#
434
435#
436# Token Ring devices
437#
438
439#
440# Wireless LAN (non-hamradio)
441#
442# CONFIG_NET_RADIO is not set
443
444#
445# PCMCIA network device support
446#
447# CONFIG_NET_PCMCIA is not set
448
449#
450# Wan interfaces
451#
452# CONFIG_WAN is not set
453# CONFIG_PPP is not set
454# CONFIG_SLIP is not set
455# CONFIG_SHAPER is not set
456# CONFIG_NETCONSOLE is not set
457# CONFIG_NETPOLL is not set
458# CONFIG_NET_POLL_CONTROLLER is not set
459
460#
461# ISDN subsystem
462#
463# CONFIG_ISDN is not set
464
465#
466# Telephony Support
467#
468# CONFIG_PHONE is not set
469
470#
471# Input device support
472#
473CONFIG_INPUT=y
474# CONFIG_INPUT_FF_MEMLESS is not set
475
476#
477# Userland interfaces
478#
479# CONFIG_INPUT_MOUSEDEV is not set
480# CONFIG_INPUT_JOYDEV is not set
481# CONFIG_INPUT_TSDEV is not set
482# CONFIG_INPUT_EVDEV is not set
483# CONFIG_INPUT_EVBUG is not set
484
485#
486# Input Device Drivers
487#
488# CONFIG_INPUT_KEYBOARD is not set
489# CONFIG_INPUT_MOUSE is not set
490# CONFIG_INPUT_JOYSTICK is not set
491# CONFIG_INPUT_TOUCHSCREEN is not set
492# CONFIG_INPUT_MISC is not set
493
494#
495# Hardware I/O ports
496#
497CONFIG_SERIO=y
498# CONFIG_SERIO_I8042 is not set
499CONFIG_SERIO_SERPORT=y
500# CONFIG_SERIO_LIBPS2 is not set
501# CONFIG_SERIO_RAW is not set
502# CONFIG_GAMEPORT is not set
503
504#
505# Character devices
506#
507CONFIG_VT=y
508CONFIG_VT_CONSOLE=y
509CONFIG_HW_CONSOLE=y
510# CONFIG_VT_HW_CONSOLE_BINDING is not set
511# CONFIG_SERIAL_NONSTANDARD is not set
512
513#
514# Serial drivers
515#
516# CONFIG_SERIAL_8250 is not set
517
518#
519# Non-8250 serial port support
520#
521CONFIG_SERIAL_CORE=y
522CONFIG_SERIAL_CORE_CONSOLE=y
523CONFIG_SERIAL_M32R_SIO=y
524CONFIG_SERIAL_M32R_SIO_CONSOLE=y
525CONFIG_UNIX98_PTYS=y
526CONFIG_LEGACY_PTYS=y
527CONFIG_LEGACY_PTY_COUNT=256
528
529#
530# IPMI
531#
532# CONFIG_IPMI_HANDLER is not set
533
534#
535# Watchdog Cards
536#
537# CONFIG_WATCHDOG is not set
538CONFIG_HW_RANDOM=y
539# CONFIG_RTC is not set
540# CONFIG_DTLK is not set
541# CONFIG_R3964 is not set
542
543#
544# Ftape, the floppy tape device driver
545#
546
547#
548# PCMCIA character devices
549#
550# CONFIG_SYNCLINK_CS is not set
551# CONFIG_CARDMAN_4000 is not set
552# CONFIG_CARDMAN_4040 is not set
553# CONFIG_RAW_DRIVER is not set
554
555#
556# TPM devices
557#
558# CONFIG_TCG_TPM is not set
559
560#
561# I2C support
562#
563# CONFIG_I2C is not set
564
565#
566# SPI support
567#
568# CONFIG_SPI is not set
569# CONFIG_SPI_MASTER is not set
570
571#
572# Dallas's 1-wire bus
573#
574# CONFIG_W1 is not set
575
576#
577# Hardware Monitoring support
578#
579CONFIG_HWMON=y
580# CONFIG_HWMON_VID is not set
581# CONFIG_SENSORS_ABITUGURU is not set
582# CONFIG_SENSORS_F71805F is not set
583# CONFIG_SENSORS_VT1211 is not set
584# CONFIG_HWMON_DEBUG_CHIP is not set
585
586#
587# Multimedia devices
588#
589CONFIG_VIDEO_DEV=y
590CONFIG_VIDEO_V4L1=y
591CONFIG_VIDEO_V4L1_COMPAT=y
592CONFIG_VIDEO_V4L2=y
593
594#
595# Video Capture Adapters
596#
597
598#
599# Video Capture Adapters
600#
601# CONFIG_VIDEO_ADV_DEBUG is not set
602CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
603# CONFIG_VIDEO_VIVI is not set
604# CONFIG_VIDEO_CPIA is not set
605# CONFIG_VIDEO_M32R_AR is not set
606
607#
608# Radio Adapters
609#
610
611#
612# Digital Video Broadcasting Devices
613#
614# CONFIG_DVB is not set
615
616#
617# Graphics support
618#
619CONFIG_FIRMWARE_EDID=y
620# CONFIG_FB is not set
621
622#
623# Console display driver support
624#
625# CONFIG_VGA_CONSOLE is not set
626CONFIG_DUMMY_CONSOLE=y
627# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
628
629#
630# Sound
631#
632# CONFIG_SOUND is not set
633
634#
635# USB support
636#
637# CONFIG_USB_ARCH_HAS_HCD is not set
638# CONFIG_USB_ARCH_HAS_OHCI is not set
639# CONFIG_USB_ARCH_HAS_EHCI is not set
640
641#
642# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
643#
644
645#
646# USB Gadget Support
647#
648# CONFIG_USB_GADGET is not set
649
650#
651# MMC/SD Card support
652#
653# CONFIG_MMC is not set
654
655#
656# LED devices
657#
658# CONFIG_NEW_LEDS is not set
659
660#
661# LED drivers
662#
663
664#
665# LED Triggers
666#
667
668#
669# InfiniBand support
670#
671
672#
673# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
674#
675
676#
677# Real Time Clock
678#
679# CONFIG_RTC_CLASS is not set
680
681#
682# DMA Engine support
683#
684# CONFIG_DMA_ENGINE is not set
685
686#
687# DMA Clients
688#
689
690#
691# DMA Devices
692#
693
694#
695# File systems
696#
697CONFIG_EXT2_FS=y
698# CONFIG_EXT2_FS_XATTR is not set
699# CONFIG_EXT2_FS_XIP is not set
700CONFIG_EXT3_FS=y
701CONFIG_EXT3_FS_XATTR=y
702# CONFIG_EXT3_FS_POSIX_ACL is not set
703# CONFIG_EXT3_FS_SECURITY is not set
704# CONFIG_EXT4DEV_FS is not set
705CONFIG_JBD=y
706CONFIG_JBD_DEBUG=y
707CONFIG_FS_MBCACHE=y
708# CONFIG_REISERFS_FS is not set
709# CONFIG_JFS_FS is not set
710# CONFIG_FS_POSIX_ACL is not set
711# CONFIG_XFS_FS is not set
712# CONFIG_GFS2_FS is not set
713# CONFIG_OCFS2_FS is not set
714# CONFIG_MINIX_FS is not set
715# CONFIG_ROMFS_FS is not set
716CONFIG_INOTIFY=y
717CONFIG_INOTIFY_USER=y
718# CONFIG_QUOTA is not set
719CONFIG_DNOTIFY=y
720# CONFIG_AUTOFS_FS is not set
721# CONFIG_AUTOFS4_FS is not set
722# CONFIG_FUSE_FS is not set
723
724#
725# CD-ROM/DVD Filesystems
726#
727CONFIG_ISO9660_FS=m
728CONFIG_JOLIET=y
729# CONFIG_ZISOFS is not set
730CONFIG_UDF_FS=m
731CONFIG_UDF_NLS=y
732
733#
734# DOS/FAT/NT Filesystems
735#
736CONFIG_FAT_FS=m
737CONFIG_MSDOS_FS=m
738CONFIG_VFAT_FS=m
739CONFIG_FAT_DEFAULT_CODEPAGE=437
740CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
741# CONFIG_NTFS_FS is not set
742
743#
744# Pseudo filesystems
745#
746CONFIG_PROC_FS=y
747CONFIG_PROC_KCORE=y
748CONFIG_PROC_SYSCTL=y
749CONFIG_SYSFS=y
750CONFIG_TMPFS=y
751# CONFIG_TMPFS_POSIX_ACL is not set
752# CONFIG_HUGETLB_PAGE is not set
753CONFIG_RAMFS=y
754# CONFIG_CONFIGFS_FS is not set
755
756#
757# Miscellaneous filesystems
758#
759# CONFIG_ADFS_FS is not set
760# CONFIG_AFFS_FS is not set
761# CONFIG_HFS_FS is not set
762# CONFIG_HFSPLUS_FS is not set
763# CONFIG_BEFS_FS is not set
764# CONFIG_BFS_FS is not set
765# CONFIG_EFS_FS is not set
766# CONFIG_CRAMFS is not set
767# CONFIG_VXFS_FS is not set
768# CONFIG_HPFS_FS is not set
769# CONFIG_QNX4FS_FS is not set
770# CONFIG_SYSV_FS is not set
771# CONFIG_UFS_FS is not set
772
773#
774# Network File Systems
775#
776CONFIG_NFS_FS=y
777CONFIG_NFS_V3=y
778# CONFIG_NFS_V3_ACL is not set
779# CONFIG_NFS_V4 is not set
780# CONFIG_NFS_DIRECTIO is not set
781# CONFIG_NFSD is not set
782CONFIG_ROOT_NFS=y
783CONFIG_LOCKD=y
784CONFIG_LOCKD_V4=y
785CONFIG_NFS_COMMON=y
786CONFIG_SUNRPC=y
787# CONFIG_RPCSEC_GSS_KRB5 is not set
788# CONFIG_RPCSEC_GSS_SPKM3 is not set
789# CONFIG_SMB_FS is not set
790# CONFIG_CIFS is not set
791# CONFIG_NCP_FS is not set
792# CONFIG_CODA_FS is not set
793# CONFIG_AFS_FS is not set
794# CONFIG_9P_FS is not set
795
796#
797# Partition Types
798#
799# CONFIG_PARTITION_ADVANCED is not set
800CONFIG_MSDOS_PARTITION=y
801
802#
803# Native Language Support
804#
805CONFIG_NLS=y
806CONFIG_NLS_DEFAULT="iso8859-1"
807# CONFIG_NLS_CODEPAGE_437 is not set
808# CONFIG_NLS_CODEPAGE_737 is not set
809# CONFIG_NLS_CODEPAGE_775 is not set
810# CONFIG_NLS_CODEPAGE_850 is not set
811# CONFIG_NLS_CODEPAGE_852 is not set
812# CONFIG_NLS_CODEPAGE_855 is not set
813# CONFIG_NLS_CODEPAGE_857 is not set
814# CONFIG_NLS_CODEPAGE_860 is not set
815# CONFIG_NLS_CODEPAGE_861 is not set
816# CONFIG_NLS_CODEPAGE_862 is not set
817# CONFIG_NLS_CODEPAGE_863 is not set
818# CONFIG_NLS_CODEPAGE_864 is not set
819# CONFIG_NLS_CODEPAGE_865 is not set
820# CONFIG_NLS_CODEPAGE_866 is not set
821# CONFIG_NLS_CODEPAGE_869 is not set
822# CONFIG_NLS_CODEPAGE_936 is not set
823# CONFIG_NLS_CODEPAGE_950 is not set
824# CONFIG_NLS_CODEPAGE_932 is not set
825# CONFIG_NLS_CODEPAGE_949 is not set
826# CONFIG_NLS_CODEPAGE_874 is not set
827# CONFIG_NLS_ISO8859_8 is not set
828# CONFIG_NLS_CODEPAGE_1250 is not set
829# CONFIG_NLS_CODEPAGE_1251 is not set
830# CONFIG_NLS_ASCII is not set
831# CONFIG_NLS_ISO8859_1 is not set
832# CONFIG_NLS_ISO8859_2 is not set
833# CONFIG_NLS_ISO8859_3 is not set
834# CONFIG_NLS_ISO8859_4 is not set
835# CONFIG_NLS_ISO8859_5 is not set
836# CONFIG_NLS_ISO8859_6 is not set
837# CONFIG_NLS_ISO8859_7 is not set
838# CONFIG_NLS_ISO8859_9 is not set
839# CONFIG_NLS_ISO8859_13 is not set
840# CONFIG_NLS_ISO8859_14 is not set
841# CONFIG_NLS_ISO8859_15 is not set
842# CONFIG_NLS_KOI8_R is not set
843# CONFIG_NLS_KOI8_U is not set
844# CONFIG_NLS_UTF8 is not set
845
846#
847# Profiling support
848#
849# CONFIG_PROFILING is not set
850
851#
852# Kernel hacking
853#
854# CONFIG_PRINTK_TIME is not set
855CONFIG_ENABLE_MUST_CHECK=y
856# CONFIG_MAGIC_SYSRQ is not set
857# CONFIG_UNUSED_SYMBOLS is not set
858# CONFIG_DEBUG_KERNEL is not set
859CONFIG_LOG_BUF_SHIFT=14
860# CONFIG_DEBUG_BUGVERBOSE is not set
861# CONFIG_DEBUG_FS is not set
862# CONFIG_FRAME_POINTER is not set
863# CONFIG_UNWIND_INFO is not set
864# CONFIG_HEADERS_CHECK is not set
865
866#
867# Security options
868#
869# CONFIG_KEYS is not set
870# CONFIG_SECURITY is not set
871
872#
873# Cryptographic options
874#
875# CONFIG_CRYPTO is not set
876
877#
878# Library routines
879#
880# CONFIG_CRC_CCITT is not set
881# CONFIG_CRC16 is not set
882CONFIG_CRC32=y
883# CONFIG_LIBCRC32C is not set
diff --git a/arch/m32r/mappi2/defconfig.vdec2 b/arch/m32r/mappi2/defconfig.vdec2
index 56f287b65898..fe5b2a63cd68 100644
--- a/arch/m32r/mappi2/defconfig.vdec2
+++ b/arch/m32r/mappi2/defconfig.vdec2
@@ -1,19 +1,18 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.12-rc5 3# Linux kernel version: 2.6.19
4# Fri Jun 3 16:22:02 2005 4# Wed Dec 13 19:31:44 2006
5# 5#
6CONFIG_M32R=y 6CONFIG_M32R=y
7# CONFIG_UID16 is not set
8CONFIG_GENERIC_ISA_DMA=y 7CONFIG_GENERIC_ISA_DMA=y
9CONFIG_GENERIC_HARDIRQS=y 8CONFIG_GENERIC_HARDIRQS=y
10CONFIG_GENERIC_IRQ_PROBE=y 9CONFIG_GENERIC_IRQ_PROBE=y
10CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11 11
12# 12#
13# Code maturity level options 13# Code maturity level options
14# 14#
15CONFIG_EXPERIMENTAL=y 15CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_BROKEN_ON_SMP=y 16CONFIG_BROKEN_ON_SMP=y
18CONFIG_LOCK_KERNEL=y 17CONFIG_LOCK_KERNEL=y
19CONFIG_INIT_ENV_ARG_LIMIT=32 18CONFIG_INIT_ENV_ARG_LIMIT=32
@@ -22,32 +21,39 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
22# General setup 21# General setup
23# 22#
24CONFIG_LOCALVERSION="" 23CONFIG_LOCALVERSION=""
24CONFIG_LOCALVERSION_AUTO=y
25CONFIG_SWAP=y 25CONFIG_SWAP=y
26CONFIG_SYSVIPC=y 26CONFIG_SYSVIPC=y
27# CONFIG_IPC_NS is not set
27# CONFIG_POSIX_MQUEUE is not set 28# CONFIG_POSIX_MQUEUE is not set
28CONFIG_BSD_PROCESS_ACCT=y 29CONFIG_BSD_PROCESS_ACCT=y
29# CONFIG_BSD_PROCESS_ACCT_V3 is not set 30# CONFIG_BSD_PROCESS_ACCT_V3 is not set
30CONFIG_SYSCTL=y 31# CONFIG_TASKSTATS is not set
32# CONFIG_UTS_NS is not set
31# CONFIG_AUDIT is not set 33# CONFIG_AUDIT is not set
32CONFIG_HOTPLUG=y
33CONFIG_KOBJECT_UEVENT=y
34CONFIG_IKCONFIG=y 34CONFIG_IKCONFIG=y
35# CONFIG_IKCONFIG_PROC is not set 35# CONFIG_IKCONFIG_PROC is not set
36CONFIG_SYSFS_DEPRECATED=y
37# CONFIG_RELAY is not set
38CONFIG_INITRAMFS_SOURCE=""
39# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
40CONFIG_SYSCTL=y
36CONFIG_EMBEDDED=y 41CONFIG_EMBEDDED=y
42CONFIG_SYSCTL_SYSCALL=y
37# CONFIG_KALLSYMS is not set 43# CONFIG_KALLSYMS is not set
44CONFIG_HOTPLUG=y
38CONFIG_PRINTK=y 45CONFIG_PRINTK=y
39CONFIG_BUG=y 46CONFIG_BUG=y
47CONFIG_ELF_CORE=y
40CONFIG_BASE_FULL=y 48CONFIG_BASE_FULL=y
41# CONFIG_FUTEX is not set 49# CONFIG_FUTEX is not set
42# CONFIG_EPOLL is not set 50# CONFIG_EPOLL is not set
43# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
44CONFIG_SHMEM=y 51CONFIG_SHMEM=y
45CONFIG_CC_ALIGN_FUNCTIONS=0 52CONFIG_SLAB=y
46CONFIG_CC_ALIGN_LABELS=0 53CONFIG_VM_EVENT_COUNTERS=y
47CONFIG_CC_ALIGN_LOOPS=0
48CONFIG_CC_ALIGN_JUMPS=0
49# CONFIG_TINY_SHMEM is not set 54# CONFIG_TINY_SHMEM is not set
50CONFIG_BASE_SMALL=0 55CONFIG_BASE_SMALL=0
56# CONFIG_SLOB is not set
51 57
52# 58#
53# Loadable module support 59# Loadable module support
@@ -55,12 +61,30 @@ CONFIG_BASE_SMALL=0
55CONFIG_MODULES=y 61CONFIG_MODULES=y
56CONFIG_MODULE_UNLOAD=y 62CONFIG_MODULE_UNLOAD=y
57# CONFIG_MODULE_FORCE_UNLOAD is not set 63# CONFIG_MODULE_FORCE_UNLOAD is not set
58CONFIG_OBSOLETE_MODPARM=y
59# CONFIG_MODVERSIONS is not set 64# CONFIG_MODVERSIONS is not set
60# CONFIG_MODULE_SRCVERSION_ALL is not set 65# CONFIG_MODULE_SRCVERSION_ALL is not set
61CONFIG_KMOD=y 66CONFIG_KMOD=y
62 67
63# 68#
69# Block layer
70#
71CONFIG_BLOCK=y
72# CONFIG_BLK_DEV_IO_TRACE is not set
73
74#
75# IO Schedulers
76#
77CONFIG_IOSCHED_NOOP=y
78# CONFIG_IOSCHED_AS is not set
79CONFIG_IOSCHED_DEADLINE=y
80CONFIG_IOSCHED_CFQ=y
81# CONFIG_DEFAULT_AS is not set
82# CONFIG_DEFAULT_DEADLINE is not set
83CONFIG_DEFAULT_CFQ=y
84# CONFIG_DEFAULT_NOOP is not set
85CONFIG_DEFAULT_IOSCHED="cfq"
86
87#
64# Processor type and features 88# Processor type and features
65# 89#
66# CONFIG_PLAT_MAPPI is not set 90# CONFIG_PLAT_MAPPI is not set
@@ -70,8 +94,10 @@ CONFIG_KMOD=y
70# CONFIG_PLAT_OAKS32R is not set 94# CONFIG_PLAT_OAKS32R is not set
71CONFIG_PLAT_MAPPI2=y 95CONFIG_PLAT_MAPPI2=y
72# CONFIG_PLAT_MAPPI3 is not set 96# CONFIG_PLAT_MAPPI3 is not set
97# CONFIG_PLAT_M32104UT is not set
73# CONFIG_CHIP_M32700 is not set 98# CONFIG_CHIP_M32700 is not set
74# CONFIG_CHIP_M32102 is not set 99# CONFIG_CHIP_M32102 is not set
100# CONFIG_CHIP_M32104 is not set
75CONFIG_CHIP_VDEC2=y 101CONFIG_CHIP_VDEC2=y
76# CONFIG_CHIP_OPSP is not set 102# CONFIG_CHIP_OPSP is not set
77CONFIG_MMU=y 103CONFIG_MMU=y
@@ -83,18 +109,31 @@ CONFIG_TIMER_DIVIDE=128
83CONFIG_MEMORY_START=0x08000000 109CONFIG_MEMORY_START=0x08000000
84CONFIG_MEMORY_SIZE=0x01000000 110CONFIG_MEMORY_SIZE=0x01000000
85CONFIG_NOHIGHMEM=y 111CONFIG_NOHIGHMEM=y
86# CONFIG_DISCONTIGMEM is not set 112CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
113CONFIG_SELECT_MEMORY_MODEL=y
114# CONFIG_FLATMEM_MANUAL is not set
115CONFIG_DISCONTIGMEM_MANUAL=y
116# CONFIG_SPARSEMEM_MANUAL is not set
117CONFIG_DISCONTIGMEM=y
118CONFIG_FLAT_NODE_MEM_MAP=y
119CONFIG_NEED_MULTIPLE_NODES=y
120# CONFIG_SPARSEMEM_STATIC is not set
121CONFIG_SPLIT_PTLOCK_CPUS=4
122# CONFIG_RESOURCES_64BIT is not set
123CONFIG_IRAM_START=0x00f00000
124CONFIG_IRAM_SIZE=0x00008000
87CONFIG_RWSEM_GENERIC_SPINLOCK=y 125CONFIG_RWSEM_GENERIC_SPINLOCK=y
88# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 126# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
127CONFIG_GENERIC_FIND_NEXT_BIT=y
128CONFIG_GENERIC_HWEIGHT=y
89CONFIG_GENERIC_CALIBRATE_DELAY=y 129CONFIG_GENERIC_CALIBRATE_DELAY=y
90CONFIG_PREEMPT=y 130CONFIG_PREEMPT=y
91# CONFIG_HAVE_DEC_LOCK is not set
92# CONFIG_SMP is not set 131# CONFIG_SMP is not set
132CONFIG_NODES_SHIFT=1
93 133
94# 134#
95# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 135# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
96# 136#
97# CONFIG_PCI is not set
98# CONFIG_ISA is not set 137# CONFIG_ISA is not set
99 138
100# 139#
@@ -103,11 +142,12 @@ CONFIG_PREEMPT=y
103CONFIG_PCCARD=y 142CONFIG_PCCARD=y
104# CONFIG_PCMCIA_DEBUG is not set 143# CONFIG_PCMCIA_DEBUG is not set
105CONFIG_PCMCIA=y 144CONFIG_PCMCIA=y
145CONFIG_PCMCIA_LOAD_CIS=y
146CONFIG_PCMCIA_IOCTL=y
106 147
107# 148#
108# PC-card bridges 149# PC-card bridges
109# 150#
110# CONFIG_TCIC is not set
111# CONFIG_M32R_CFC is not set 151# CONFIG_M32R_CFC is not set
112 152
113# 153#
@@ -121,6 +161,94 @@ CONFIG_BINFMT_ELF=y
121# CONFIG_BINFMT_MISC is not set 161# CONFIG_BINFMT_MISC is not set
122 162
123# 163#
164# Networking
165#
166CONFIG_NET=y
167
168#
169# Networking options
170#
171# CONFIG_NETDEBUG is not set
172CONFIG_PACKET=y
173# CONFIG_PACKET_MMAP is not set
174CONFIG_UNIX=y
175CONFIG_XFRM=y
176# CONFIG_XFRM_USER is not set
177# CONFIG_XFRM_SUB_POLICY is not set
178# CONFIG_NET_KEY is not set
179CONFIG_INET=y
180# CONFIG_IP_MULTICAST is not set
181# CONFIG_IP_ADVANCED_ROUTER is not set
182CONFIG_IP_FIB_HASH=y
183CONFIG_IP_PNP=y
184CONFIG_IP_PNP_DHCP=y
185# CONFIG_IP_PNP_BOOTP is not set
186# CONFIG_IP_PNP_RARP is not set
187# CONFIG_NET_IPIP is not set
188# CONFIG_NET_IPGRE is not set
189# CONFIG_ARPD is not set
190# CONFIG_SYN_COOKIES is not set
191# CONFIG_INET_AH is not set
192# CONFIG_INET_ESP is not set
193# CONFIG_INET_IPCOMP is not set
194# CONFIG_INET_XFRM_TUNNEL is not set
195# CONFIG_INET_TUNNEL is not set
196CONFIG_INET_XFRM_MODE_TRANSPORT=y
197CONFIG_INET_XFRM_MODE_TUNNEL=y
198CONFIG_INET_XFRM_MODE_BEET=y
199CONFIG_INET_DIAG=y
200CONFIG_INET_TCP_DIAG=y
201# CONFIG_TCP_CONG_ADVANCED is not set
202CONFIG_TCP_CONG_CUBIC=y
203CONFIG_DEFAULT_TCP_CONG="cubic"
204# CONFIG_TCP_MD5SIG is not set
205# CONFIG_IPV6 is not set
206# CONFIG_INET6_XFRM_TUNNEL is not set
207# CONFIG_INET6_TUNNEL is not set
208# CONFIG_NETWORK_SECMARK is not set
209# CONFIG_NETFILTER is not set
210
211#
212# DCCP Configuration (EXPERIMENTAL)
213#
214# CONFIG_IP_DCCP is not set
215
216#
217# SCTP Configuration (EXPERIMENTAL)
218#
219# CONFIG_IP_SCTP is not set
220
221#
222# TIPC Configuration (EXPERIMENTAL)
223#
224# CONFIG_TIPC is not set
225# CONFIG_ATM is not set
226# CONFIG_BRIDGE is not set
227# CONFIG_VLAN_8021Q is not set
228# CONFIG_DECNET is not set
229# CONFIG_LLC2 is not set
230# CONFIG_IPX is not set
231# CONFIG_ATALK is not set
232# CONFIG_X25 is not set
233# CONFIG_LAPB is not set
234# CONFIG_ECONET is not set
235# CONFIG_WAN_ROUTER is not set
236
237#
238# QoS and/or fair queueing
239#
240# CONFIG_NET_SCHED is not set
241
242#
243# Network testing
244#
245# CONFIG_NET_PKTGEN is not set
246# CONFIG_HAMRADIO is not set
247# CONFIG_IRDA is not set
248# CONFIG_BT is not set
249# CONFIG_IEEE80211 is not set
250
251#
124# Device Drivers 252# Device Drivers
125# 253#
126 254
@@ -129,7 +257,13 @@ CONFIG_BINFMT_ELF=y
129# 257#
130CONFIG_STANDALONE=y 258CONFIG_STANDALONE=y
131CONFIG_PREVENT_FIRMWARE_BUILD=y 259CONFIG_PREVENT_FIRMWARE_BUILD=y
132# CONFIG_FW_LOADER is not set 260CONFIG_FW_LOADER=y
261# CONFIG_SYS_HYPERVISOR is not set
262
263#
264# Connector - unified userspace <-> kernelspace linker
265#
266# CONFIG_CONNECTOR is not set
133 267
134# 268#
135# Memory Technology Devices (MTD) 269# Memory Technology Devices (MTD)
@@ -148,7 +282,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
148# 282#
149# Block devices 283# Block devices
150# 284#
151# CONFIG_BLK_DEV_FD is not set
152# CONFIG_BLK_DEV_COW_COMMON is not set 285# CONFIG_BLK_DEV_COW_COMMON is not set
153CONFIG_BLK_DEV_LOOP=y 286CONFIG_BLK_DEV_LOOP=y
154# CONFIG_BLK_DEV_CRYPTOLOOP is not set 287# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -156,23 +289,21 @@ CONFIG_BLK_DEV_NBD=y
156CONFIG_BLK_DEV_RAM=y 289CONFIG_BLK_DEV_RAM=y
157CONFIG_BLK_DEV_RAM_COUNT=16 290CONFIG_BLK_DEV_RAM_COUNT=16
158CONFIG_BLK_DEV_RAM_SIZE=4096 291CONFIG_BLK_DEV_RAM_SIZE=4096
292CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
159# CONFIG_BLK_DEV_INITRD is not set 293# CONFIG_BLK_DEV_INITRD is not set
160CONFIG_INITRAMFS_SOURCE=""
161# CONFIG_CDROM_PKTCDVD is not set 294# CONFIG_CDROM_PKTCDVD is not set
295# CONFIG_ATA_OVER_ETH is not set
162 296
163# 297#
164# IO Schedulers 298# Misc devices
165# 299#
166CONFIG_IOSCHED_NOOP=y 300# CONFIG_TIFM_CORE is not set
167# CONFIG_IOSCHED_AS is not set
168CONFIG_IOSCHED_DEADLINE=y
169CONFIG_IOSCHED_CFQ=y
170# CONFIG_ATA_OVER_ETH is not set
171 301
172# 302#
173# ATA/ATAPI/MFM/RLL support 303# ATA/ATAPI/MFM/RLL support
174# 304#
175CONFIG_IDE=y 305CONFIG_IDE=y
306CONFIG_IDE_MAX_HWIFS=4
176CONFIG_BLK_DEV_IDE=y 307CONFIG_BLK_DEV_IDE=y
177 308
178# 309#
@@ -200,7 +331,9 @@ CONFIG_IDE_GENERIC=y
200# 331#
201# SCSI device support 332# SCSI device support
202# 333#
334# CONFIG_RAID_ATTRS is not set
203CONFIG_SCSI=m 335CONFIG_SCSI=m
336# CONFIG_SCSI_NETLINK is not set
204CONFIG_SCSI_PROC_FS=y 337CONFIG_SCSI_PROC_FS=y
205 338
206# 339#
@@ -212,6 +345,7 @@ CONFIG_BLK_DEV_SD=m
212CONFIG_BLK_DEV_SR=m 345CONFIG_BLK_DEV_SR=m
213# CONFIG_BLK_DEV_SR_VENDOR is not set 346# CONFIG_BLK_DEV_SR_VENDOR is not set
214CONFIG_CHR_DEV_SG=m 347CONFIG_CHR_DEV_SG=m
348# CONFIG_CHR_DEV_SCH is not set
215 349
216# 350#
217# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 351# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -221,16 +355,18 @@ CONFIG_SCSI_MULTI_LUN=y
221# CONFIG_SCSI_LOGGING is not set 355# CONFIG_SCSI_LOGGING is not set
222 356
223# 357#
224# SCSI Transport Attributes 358# SCSI Transports
225# 359#
226# CONFIG_SCSI_SPI_ATTRS is not set 360# CONFIG_SCSI_SPI_ATTRS is not set
227# CONFIG_SCSI_FC_ATTRS is not set 361# CONFIG_SCSI_FC_ATTRS is not set
228# CONFIG_SCSI_ISCSI_ATTRS is not set 362# CONFIG_SCSI_ISCSI_ATTRS is not set
363# CONFIG_SCSI_SAS_ATTRS is not set
364# CONFIG_SCSI_SAS_LIBSAS is not set
229 365
230# 366#
231# SCSI low-level drivers 367# SCSI low-level drivers
232# 368#
233# CONFIG_SCSI_SATA is not set 369# CONFIG_ISCSI_TCP is not set
234# CONFIG_SCSI_DEBUG is not set 370# CONFIG_SCSI_DEBUG is not set
235 371
236# 372#
@@ -243,6 +379,10 @@ CONFIG_SCSI_MULTI_LUN=y
243# CONFIG_PCMCIA_SYM53C500 is not set 379# CONFIG_PCMCIA_SYM53C500 is not set
244 380
245# 381#
382# Serial ATA (prod) and Parallel ATA (experimental) drivers
383#
384
385#
246# Multi-device support (RAID and LVM) 386# Multi-device support (RAID and LVM)
247# 387#
248# CONFIG_MD is not set 388# CONFIG_MD is not set
@@ -250,6 +390,7 @@ CONFIG_SCSI_MULTI_LUN=y
250# 390#
251# Fusion MPT device support 391# Fusion MPT device support
252# 392#
393# CONFIG_FUSION is not set
253 394
254# 395#
255# IEEE 1394 (FireWire) support 396# IEEE 1394 (FireWire) support
@@ -260,69 +401,8 @@ CONFIG_SCSI_MULTI_LUN=y
260# 401#
261 402
262# 403#
263# Networking support 404# Network device support
264#
265CONFIG_NET=y
266
267#
268# Networking options
269#
270CONFIG_PACKET=y
271# CONFIG_PACKET_MMAP is not set
272CONFIG_UNIX=y
273# CONFIG_NET_KEY is not set
274CONFIG_INET=y
275# CONFIG_IP_MULTICAST is not set
276# CONFIG_IP_ADVANCED_ROUTER is not set
277CONFIG_IP_PNP=y
278CONFIG_IP_PNP_DHCP=y
279# CONFIG_IP_PNP_BOOTP is not set
280# CONFIG_IP_PNP_RARP is not set
281# CONFIG_NET_IPIP is not set
282# CONFIG_NET_IPGRE is not set
283# CONFIG_ARPD is not set
284# CONFIG_SYN_COOKIES is not set
285# CONFIG_INET_AH is not set
286# CONFIG_INET_ESP is not set
287# CONFIG_INET_IPCOMP is not set
288# CONFIG_INET_TUNNEL is not set
289CONFIG_IP_TCPDIAG=y
290# CONFIG_IP_TCPDIAG_IPV6 is not set
291# CONFIG_IPV6 is not set
292# CONFIG_NETFILTER is not set
293
294#
295# SCTP Configuration (EXPERIMENTAL)
296#
297# CONFIG_IP_SCTP is not set
298# CONFIG_ATM is not set
299# CONFIG_BRIDGE is not set
300# CONFIG_VLAN_8021Q is not set
301# CONFIG_DECNET is not set
302# CONFIG_LLC2 is not set
303# CONFIG_IPX is not set
304# CONFIG_ATALK is not set
305# CONFIG_X25 is not set
306# CONFIG_LAPB is not set
307# CONFIG_NET_DIVERT is not set
308# CONFIG_ECONET is not set
309# CONFIG_WAN_ROUTER is not set
310
311#
312# QoS and/or fair queueing
313#
314# CONFIG_NET_SCHED is not set
315# CONFIG_NET_CLS_ROUTE is not set
316
317#
318# Network testing
319# 405#
320# CONFIG_NET_PKTGEN is not set
321# CONFIG_NETPOLL is not set
322# CONFIG_NET_POLL_CONTROLLER is not set
323# CONFIG_HAMRADIO is not set
324# CONFIG_IRDA is not set
325# CONFIG_BT is not set
326CONFIG_NETDEVICES=y 406CONFIG_NETDEVICES=y
327# CONFIG_DUMMY is not set 407# CONFIG_DUMMY is not set
328# CONFIG_BONDING is not set 408# CONFIG_BONDING is not set
@@ -330,6 +410,11 @@ CONFIG_NETDEVICES=y
330# CONFIG_TUN is not set 410# CONFIG_TUN is not set
331 411
332# 412#
413# PHY device support
414#
415# CONFIG_PHYLIB is not set
416
417#
333# Ethernet (10 or 100Mbit) 418# Ethernet (10 or 100Mbit)
334# 419#
335CONFIG_NET_ETHERNET=y 420CONFIG_NET_ETHERNET=y
@@ -367,6 +452,8 @@ CONFIG_SMC91X=y
367# CONFIG_SLIP is not set 452# CONFIG_SLIP is not set
368# CONFIG_SHAPER is not set 453# CONFIG_SHAPER is not set
369# CONFIG_NETCONSOLE is not set 454# CONFIG_NETCONSOLE is not set
455# CONFIG_NETPOLL is not set
456# CONFIG_NET_POLL_CONTROLLER is not set
370 457
371# 458#
372# ISDN subsystem 459# ISDN subsystem
@@ -382,6 +469,7 @@ CONFIG_SMC91X=y
382# Input device support 469# Input device support
383# 470#
384CONFIG_INPUT=y 471CONFIG_INPUT=y
472# CONFIG_INPUT_FF_MEMLESS is not set
385 473
386# 474#
387# Userland interfaces 475# Userland interfaces
@@ -410,7 +498,6 @@ CONFIG_SERIO_SERPORT=y
410# CONFIG_SERIO_LIBPS2 is not set 498# CONFIG_SERIO_LIBPS2 is not set
411# CONFIG_SERIO_RAW is not set 499# CONFIG_SERIO_RAW is not set
412# CONFIG_GAMEPORT is not set 500# CONFIG_GAMEPORT is not set
413CONFIG_SOUND_GAMEPORT=y
414 501
415# 502#
416# Character devices 503# Character devices
@@ -418,6 +505,7 @@ CONFIG_SOUND_GAMEPORT=y
418CONFIG_VT=y 505CONFIG_VT=y
419CONFIG_VT_CONSOLE=y 506CONFIG_VT_CONSOLE=y
420CONFIG_HW_CONSOLE=y 507CONFIG_HW_CONSOLE=y
508# CONFIG_VT_HW_CONSOLE_BINDING is not set
421# CONFIG_SERIAL_NONSTANDARD is not set 509# CONFIG_SERIAL_NONSTANDARD is not set
422 510
423# 511#
@@ -432,7 +520,6 @@ CONFIG_SERIAL_CORE=y
432CONFIG_SERIAL_CORE_CONSOLE=y 520CONFIG_SERIAL_CORE_CONSOLE=y
433CONFIG_SERIAL_M32R_SIO=y 521CONFIG_SERIAL_M32R_SIO=y
434CONFIG_SERIAL_M32R_SIO_CONSOLE=y 522CONFIG_SERIAL_M32R_SIO_CONSOLE=y
435# CONFIG_SERIAL_M32R_PLDSIO is not set
436CONFIG_UNIX98_PTYS=y 523CONFIG_UNIX98_PTYS=y
437CONFIG_LEGACY_PTYS=y 524CONFIG_LEGACY_PTYS=y
438CONFIG_LEGACY_PTY_COUNT=256 525CONFIG_LEGACY_PTY_COUNT=256
@@ -446,25 +533,27 @@ CONFIG_LEGACY_PTY_COUNT=256
446# Watchdog Cards 533# Watchdog Cards
447# 534#
448# CONFIG_WATCHDOG is not set 535# CONFIG_WATCHDOG is not set
536CONFIG_HW_RANDOM=y
449# CONFIG_RTC is not set 537# CONFIG_RTC is not set
450# CONFIG_GEN_RTC is not set
451# CONFIG_DTLK is not set 538# CONFIG_DTLK is not set
452# CONFIG_R3964 is not set 539# CONFIG_R3964 is not set
453 540
454# 541#
455# Ftape, the floppy tape device driver 542# Ftape, the floppy tape device driver
456# 543#
457# CONFIG_DRM is not set
458 544
459# 545#
460# PCMCIA character devices 546# PCMCIA character devices
461# 547#
462# CONFIG_SYNCLINK_CS is not set 548# CONFIG_SYNCLINK_CS is not set
549# CONFIG_CARDMAN_4000 is not set
550# CONFIG_CARDMAN_4040 is not set
463# CONFIG_RAW_DRIVER is not set 551# CONFIG_RAW_DRIVER is not set
464 552
465# 553#
466# TPM devices 554# TPM devices
467# 555#
556# CONFIG_TCG_TPM is not set
468 557
469# 558#
470# I2C support 559# I2C support
@@ -472,33 +561,50 @@ CONFIG_LEGACY_PTY_COUNT=256
472# CONFIG_I2C is not set 561# CONFIG_I2C is not set
473 562
474# 563#
564# SPI support
565#
566# CONFIG_SPI is not set
567# CONFIG_SPI_MASTER is not set
568
569#
475# Dallas's 1-wire bus 570# Dallas's 1-wire bus
476# 571#
477# CONFIG_W1 is not set 572# CONFIG_W1 is not set
478 573
479# 574#
480# Misc devices 575# Hardware Monitoring support
481# 576#
577CONFIG_HWMON=y
578# CONFIG_HWMON_VID is not set
579# CONFIG_SENSORS_ABITUGURU is not set
580# CONFIG_SENSORS_F71805F is not set
581# CONFIG_SENSORS_VT1211 is not set
582# CONFIG_HWMON_DEBUG_CHIP is not set
482 583
483# 584#
484# Multimedia devices 585# Multimedia devices
485# 586#
486CONFIG_VIDEO_DEV=y 587CONFIG_VIDEO_DEV=y
588CONFIG_VIDEO_V4L1=y
589CONFIG_VIDEO_V4L1_COMPAT=y
590CONFIG_VIDEO_V4L2=y
487 591
488# 592#
489# Video For Linux 593# Video Capture Adapters
490# 594#
491 595
492# 596#
493# Video Adapters 597# Video Capture Adapters
494# 598#
599# CONFIG_VIDEO_ADV_DEBUG is not set
600CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
601# CONFIG_VIDEO_VIVI is not set
495# CONFIG_VIDEO_CPIA is not set 602# CONFIG_VIDEO_CPIA is not set
496# CONFIG_VIDEO_M32R_AR is not set 603# CONFIG_VIDEO_M32R_AR is not set
497 604
498# 605#
499# Radio Adapters 606# Radio Adapters
500# 607#
501# CONFIG_RADIO_MAESTRO is not set
502 608
503# 609#
504# Digital Video Broadcasting Devices 610# Digital Video Broadcasting Devices
@@ -508,6 +614,7 @@ CONFIG_VIDEO_DEV=y
508# 614#
509# Graphics support 615# Graphics support
510# 616#
617CONFIG_FIRMWARE_EDID=y
511# CONFIG_FB is not set 618# CONFIG_FB is not set
512 619
513# 620#
@@ -515,6 +622,7 @@ CONFIG_VIDEO_DEV=y
515# 622#
516# CONFIG_VGA_CONSOLE is not set 623# CONFIG_VGA_CONSOLE is not set
517CONFIG_DUMMY_CONSOLE=y 624CONFIG_DUMMY_CONSOLE=y
625# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
518 626
519# 627#
520# Sound 628# Sound
@@ -526,6 +634,11 @@ CONFIG_DUMMY_CONSOLE=y
526# 634#
527# CONFIG_USB_ARCH_HAS_HCD is not set 635# CONFIG_USB_ARCH_HAS_HCD is not set
528# CONFIG_USB_ARCH_HAS_OHCI is not set 636# CONFIG_USB_ARCH_HAS_OHCI is not set
637# CONFIG_USB_ARCH_HAS_EHCI is not set
638
639#
640# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
641#
529 642
530# 643#
531# USB Gadget Support 644# USB Gadget Support
@@ -538,38 +651,73 @@ CONFIG_DUMMY_CONSOLE=y
538# CONFIG_MMC is not set 651# CONFIG_MMC is not set
539 652
540# 653#
654# LED devices
655#
656# CONFIG_NEW_LEDS is not set
657
658#
659# LED drivers
660#
661
662#
663# LED Triggers
664#
665
666#
541# InfiniBand support 667# InfiniBand support
542# 668#
543# CONFIG_INFINIBAND is not set 669
670#
671# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
672#
673
674#
675# Real Time Clock
676#
677# CONFIG_RTC_CLASS is not set
678
679#
680# DMA Engine support
681#
682# CONFIG_DMA_ENGINE is not set
683
684#
685# DMA Clients
686#
687
688#
689# DMA Devices
690#
544 691
545# 692#
546# File systems 693# File systems
547# 694#
548CONFIG_EXT2_FS=y 695CONFIG_EXT2_FS=y
549# CONFIG_EXT2_FS_XATTR is not set 696# CONFIG_EXT2_FS_XATTR is not set
550CONFIG_EXT3_FS=m 697# CONFIG_EXT2_FS_XIP is not set
698CONFIG_EXT3_FS=y
551CONFIG_EXT3_FS_XATTR=y 699CONFIG_EXT3_FS_XATTR=y
552# CONFIG_EXT3_FS_POSIX_ACL is not set 700# CONFIG_EXT3_FS_POSIX_ACL is not set
553# CONFIG_EXT3_FS_SECURITY is not set 701# CONFIG_EXT3_FS_SECURITY is not set
554CONFIG_JBD=m 702# CONFIG_EXT4DEV_FS is not set
703CONFIG_JBD=y
555CONFIG_JBD_DEBUG=y 704CONFIG_JBD_DEBUG=y
556CONFIG_FS_MBCACHE=y 705CONFIG_FS_MBCACHE=y
557CONFIG_REISERFS_FS=m 706# CONFIG_REISERFS_FS is not set
558# CONFIG_REISERFS_CHECK is not set
559# CONFIG_REISERFS_PROC_INFO is not set
560# CONFIG_REISERFS_FS_XATTR is not set
561# CONFIG_JFS_FS is not set 707# CONFIG_JFS_FS is not set
562 708# CONFIG_FS_POSIX_ACL is not set
563#
564# XFS support
565#
566# CONFIG_XFS_FS is not set 709# CONFIG_XFS_FS is not set
710# CONFIG_GFS2_FS is not set
711# CONFIG_OCFS2_FS is not set
567# CONFIG_MINIX_FS is not set 712# CONFIG_MINIX_FS is not set
568# CONFIG_ROMFS_FS is not set 713# CONFIG_ROMFS_FS is not set
714CONFIG_INOTIFY=y
715CONFIG_INOTIFY_USER=y
569# CONFIG_QUOTA is not set 716# CONFIG_QUOTA is not set
570CONFIG_DNOTIFY=y 717CONFIG_DNOTIFY=y
571# CONFIG_AUTOFS_FS is not set 718# CONFIG_AUTOFS_FS is not set
572# CONFIG_AUTOFS4_FS is not set 719# CONFIG_AUTOFS4_FS is not set
720# CONFIG_FUSE_FS is not set
573 721
574# 722#
575# CD-ROM/DVD Filesystems 723# CD-ROM/DVD Filesystems
@@ -595,15 +743,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
595# 743#
596CONFIG_PROC_FS=y 744CONFIG_PROC_FS=y
597CONFIG_PROC_KCORE=y 745CONFIG_PROC_KCORE=y
746CONFIG_PROC_SYSCTL=y
598CONFIG_SYSFS=y 747CONFIG_SYSFS=y
599CONFIG_DEVFS_FS=y
600CONFIG_DEVFS_MOUNT=y
601# CONFIG_DEVFS_DEBUG is not set
602# CONFIG_DEVPTS_FS_XATTR is not set
603CONFIG_TMPFS=y 748CONFIG_TMPFS=y
604# CONFIG_TMPFS_XATTR is not set 749# CONFIG_TMPFS_POSIX_ACL is not set
605# CONFIG_HUGETLB_PAGE is not set 750# CONFIG_HUGETLB_PAGE is not set
606CONFIG_RAMFS=y 751CONFIG_RAMFS=y
752# CONFIG_CONFIGFS_FS is not set
607 753
608# 754#
609# Miscellaneous filesystems 755# Miscellaneous filesystems
@@ -627,12 +773,14 @@ CONFIG_RAMFS=y
627# 773#
628CONFIG_NFS_FS=y 774CONFIG_NFS_FS=y
629CONFIG_NFS_V3=y 775CONFIG_NFS_V3=y
776# CONFIG_NFS_V3_ACL is not set
630# CONFIG_NFS_V4 is not set 777# CONFIG_NFS_V4 is not set
631# CONFIG_NFS_DIRECTIO is not set 778# CONFIG_NFS_DIRECTIO is not set
632# CONFIG_NFSD is not set 779# CONFIG_NFSD is not set
633CONFIG_ROOT_NFS=y 780CONFIG_ROOT_NFS=y
634CONFIG_LOCKD=y 781CONFIG_LOCKD=y
635CONFIG_LOCKD_V4=y 782CONFIG_LOCKD_V4=y
783CONFIG_NFS_COMMON=y
636CONFIG_SUNRPC=y 784CONFIG_SUNRPC=y
637# CONFIG_RPCSEC_GSS_KRB5 is not set 785# CONFIG_RPCSEC_GSS_KRB5 is not set
638# CONFIG_RPCSEC_GSS_SPKM3 is not set 786# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -641,6 +789,7 @@ CONFIG_SUNRPC=y
641# CONFIG_NCP_FS is not set 789# CONFIG_NCP_FS is not set
642# CONFIG_CODA_FS is not set 790# CONFIG_CODA_FS is not set
643# CONFIG_AFS_FS is not set 791# CONFIG_AFS_FS is not set
792# CONFIG_9P_FS is not set
644 793
645# 794#
646# Partition Types 795# Partition Types
@@ -701,10 +850,16 @@ CONFIG_NLS_DEFAULT="iso8859-1"
701# Kernel hacking 850# Kernel hacking
702# 851#
703# CONFIG_PRINTK_TIME is not set 852# CONFIG_PRINTK_TIME is not set
853CONFIG_ENABLE_MUST_CHECK=y
854# CONFIG_MAGIC_SYSRQ is not set
855# CONFIG_UNUSED_SYMBOLS is not set
704# CONFIG_DEBUG_KERNEL is not set 856# CONFIG_DEBUG_KERNEL is not set
705CONFIG_LOG_BUF_SHIFT=14 857CONFIG_LOG_BUF_SHIFT=14
706# CONFIG_DEBUG_BUGVERBOSE is not set 858# CONFIG_DEBUG_BUGVERBOSE is not set
859# CONFIG_DEBUG_FS is not set
707# CONFIG_FRAME_POINTER is not set 860# CONFIG_FRAME_POINTER is not set
861# CONFIG_UNWIND_INFO is not set
862# CONFIG_HEADERS_CHECK is not set
708 863
709# 864#
710# Security options 865# Security options
@@ -718,12 +873,9 @@ CONFIG_LOG_BUF_SHIFT=14
718# CONFIG_CRYPTO is not set 873# CONFIG_CRYPTO is not set
719 874
720# 875#
721# Hardware crypto devices
722#
723
724#
725# Library routines 876# Library routines
726# 877#
727# CONFIG_CRC_CCITT is not set 878# CONFIG_CRC_CCITT is not set
879# CONFIG_CRC16 is not set
728CONFIG_CRC32=y 880CONFIG_CRC32=y
729# CONFIG_LIBCRC32C is not set 881# CONFIG_LIBCRC32C is not set
diff --git a/arch/m32r/mappi3/defconfig.smp b/arch/m32r/mappi3/defconfig.smp
index 2eebe75fc071..2f352267a6d9 100644
--- a/arch/m32r/mappi3/defconfig.smp
+++ b/arch/m32r/mappi3/defconfig.smp
@@ -1,21 +1,18 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.12-rc5 3# Linux kernel version: 2.6.19
4# Tue May 31 17:55:34 2005 4# Mon Dec 11 19:57:33 2006
5# 5#
6CONFIG_M32R=y 6CONFIG_M32R=y
7# CONFIG_UID16 is not set
8CONFIG_GENERIC_ISA_DMA=y 7CONFIG_GENERIC_ISA_DMA=y
9CONFIG_GENERIC_HARDIRQS=y 8CONFIG_GENERIC_HARDIRQS=y
10CONFIG_GENERIC_IRQ_PROBE=y 9CONFIG_GENERIC_IRQ_PROBE=y
10CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11 11
12# 12#
13# Code maturity level options 13# Code maturity level options
14# 14#
15CONFIG_EXPERIMENTAL=y 15CONFIG_EXPERIMENTAL=y
16# CONFIG_CLEAN_COMPILE is not set
17CONFIG_BROKEN=y
18CONFIG_BROKEN_ON_SMP=y
19CONFIG_LOCK_KERNEL=y 16CONFIG_LOCK_KERNEL=y
20CONFIG_INIT_ENV_ARG_LIMIT=32 17CONFIG_INIT_ENV_ARG_LIMIT=32
21 18
@@ -23,32 +20,39 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
23# General setup 20# General setup
24# 21#
25CONFIG_LOCALVERSION="" 22CONFIG_LOCALVERSION=""
23CONFIG_LOCALVERSION_AUTO=y
26CONFIG_SWAP=y 24CONFIG_SWAP=y
27CONFIG_SYSVIPC=y 25CONFIG_SYSVIPC=y
26# CONFIG_IPC_NS is not set
28# CONFIG_POSIX_MQUEUE is not set 27# CONFIG_POSIX_MQUEUE is not set
29# CONFIG_BSD_PROCESS_ACCT is not set 28# CONFIG_BSD_PROCESS_ACCT is not set
30CONFIG_SYSCTL=y 29# CONFIG_TASKSTATS is not set
30# CONFIG_UTS_NS is not set
31# CONFIG_AUDIT is not set 31# CONFIG_AUDIT is not set
32CONFIG_HOTPLUG=y
33CONFIG_KOBJECT_UEVENT=y
34CONFIG_IKCONFIG=y 32CONFIG_IKCONFIG=y
35CONFIG_IKCONFIG_PROC=y 33CONFIG_IKCONFIG_PROC=y
36# CONFIG_CPUSETS is not set 34# CONFIG_CPUSETS is not set
35CONFIG_SYSFS_DEPRECATED=y
36# CONFIG_RELAY is not set
37CONFIG_INITRAMFS_SOURCE=""
38# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
39CONFIG_SYSCTL=y
37CONFIG_EMBEDDED=y 40CONFIG_EMBEDDED=y
41CONFIG_SYSCTL_SYSCALL=y
38# CONFIG_KALLSYMS is not set 42# CONFIG_KALLSYMS is not set
43CONFIG_HOTPLUG=y
39CONFIG_PRINTK=y 44CONFIG_PRINTK=y
40CONFIG_BUG=y 45CONFIG_BUG=y
46CONFIG_ELF_CORE=y
41CONFIG_BASE_FULL=y 47CONFIG_BASE_FULL=y
42# CONFIG_FUTEX is not set 48# CONFIG_FUTEX is not set
43# CONFIG_EPOLL is not set 49# CONFIG_EPOLL is not set
44# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
45CONFIG_SHMEM=y 50CONFIG_SHMEM=y
46CONFIG_CC_ALIGN_FUNCTIONS=0 51CONFIG_SLAB=y
47CONFIG_CC_ALIGN_LABELS=0 52CONFIG_VM_EVENT_COUNTERS=y
48CONFIG_CC_ALIGN_LOOPS=0
49CONFIG_CC_ALIGN_JUMPS=0
50# CONFIG_TINY_SHMEM is not set 53# CONFIG_TINY_SHMEM is not set
51CONFIG_BASE_SMALL=0 54CONFIG_BASE_SMALL=0
55# CONFIG_SLOB is not set
52 56
53# 57#
54# Loadable module support 58# Loadable module support
@@ -56,13 +60,31 @@ CONFIG_BASE_SMALL=0
56CONFIG_MODULES=y 60CONFIG_MODULES=y
57CONFIG_MODULE_UNLOAD=y 61CONFIG_MODULE_UNLOAD=y
58# CONFIG_MODULE_FORCE_UNLOAD is not set 62# CONFIG_MODULE_FORCE_UNLOAD is not set
59CONFIG_OBSOLETE_MODPARM=y
60# CONFIG_MODVERSIONS is not set 63# CONFIG_MODVERSIONS is not set
61# CONFIG_MODULE_SRCVERSION_ALL is not set 64# CONFIG_MODULE_SRCVERSION_ALL is not set
62CONFIG_KMOD=y 65CONFIG_KMOD=y
63CONFIG_STOP_MACHINE=y 66CONFIG_STOP_MACHINE=y
64 67
65# 68#
69# Block layer
70#
71CONFIG_BLOCK=y
72# CONFIG_BLK_DEV_IO_TRACE is not set
73
74#
75# IO Schedulers
76#
77CONFIG_IOSCHED_NOOP=y
78# CONFIG_IOSCHED_AS is not set
79CONFIG_IOSCHED_DEADLINE=y
80CONFIG_IOSCHED_CFQ=y
81# CONFIG_DEFAULT_AS is not set
82# CONFIG_DEFAULT_DEADLINE is not set
83CONFIG_DEFAULT_CFQ=y
84# CONFIG_DEFAULT_NOOP is not set
85CONFIG_DEFAULT_IOSCHED="cfq"
86
87#
66# Processor type and features 88# Processor type and features
67# 89#
68# CONFIG_PLAT_MAPPI is not set 90# CONFIG_PLAT_MAPPI is not set
@@ -72,8 +94,10 @@ CONFIG_STOP_MACHINE=y
72# CONFIG_PLAT_OAKS32R is not set 94# CONFIG_PLAT_OAKS32R is not set
73# CONFIG_PLAT_MAPPI2 is not set 95# CONFIG_PLAT_MAPPI2 is not set
74CONFIG_PLAT_MAPPI3=y 96CONFIG_PLAT_MAPPI3=y
97# CONFIG_PLAT_M32104UT is not set
75CONFIG_CHIP_M32700=y 98CONFIG_CHIP_M32700=y
76# CONFIG_CHIP_M32102 is not set 99# CONFIG_CHIP_M32102 is not set
100# CONFIG_CHIP_M32104 is not set
77# CONFIG_CHIP_VDEC2 is not set 101# CONFIG_CHIP_VDEC2 is not set
78# CONFIG_CHIP_OPSP is not set 102# CONFIG_CHIP_OPSP is not set
79CONFIG_MMU=y 103CONFIG_MMU=y
@@ -87,23 +111,33 @@ CONFIG_TIMER_DIVIDE=128
87CONFIG_MEMORY_START=0x08000000 111CONFIG_MEMORY_START=0x08000000
88CONFIG_MEMORY_SIZE=0x08000000 112CONFIG_MEMORY_SIZE=0x08000000
89CONFIG_NOHIGHMEM=y 113CONFIG_NOHIGHMEM=y
114CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
115CONFIG_SELECT_MEMORY_MODEL=y
116# CONFIG_FLATMEM_MANUAL is not set
117CONFIG_DISCONTIGMEM_MANUAL=y
118# CONFIG_SPARSEMEM_MANUAL is not set
90CONFIG_DISCONTIGMEM=y 119CONFIG_DISCONTIGMEM=y
120CONFIG_FLAT_NODE_MEM_MAP=y
121CONFIG_NEED_MULTIPLE_NODES=y
122# CONFIG_SPARSEMEM_STATIC is not set
123CONFIG_SPLIT_PTLOCK_CPUS=4
124# CONFIG_RESOURCES_64BIT is not set
91CONFIG_IRAM_START=0x00f00000 125CONFIG_IRAM_START=0x00f00000
92CONFIG_IRAM_SIZE=0x00080000 126CONFIG_IRAM_SIZE=0x00080000
93CONFIG_RWSEM_GENERIC_SPINLOCK=y 127CONFIG_RWSEM_GENERIC_SPINLOCK=y
94# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 128# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
129CONFIG_GENERIC_FIND_NEXT_BIT=y
130CONFIG_GENERIC_HWEIGHT=y
95CONFIG_GENERIC_CALIBRATE_DELAY=y 131CONFIG_GENERIC_CALIBRATE_DELAY=y
96CONFIG_PREEMPT=y 132CONFIG_PREEMPT=y
97# CONFIG_HAVE_DEC_LOCK is not set
98CONFIG_SMP=y 133CONFIG_SMP=y
99# CONFIG_CHIP_M32700_TS1 is not set 134# CONFIG_CHIP_M32700_TS1 is not set
100CONFIG_NR_CPUS=2 135CONFIG_NR_CPUS=2
101# CONFIG_NUMA is not set 136CONFIG_NODES_SHIFT=1
102 137
103# 138#
104# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 139# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
105# 140#
106# CONFIG_PCI is not set
107# CONFIG_ISA is not set 141# CONFIG_ISA is not set
108 142
109# 143#
@@ -112,11 +146,12 @@ CONFIG_NR_CPUS=2
112CONFIG_PCCARD=y 146CONFIG_PCCARD=y
113# CONFIG_PCMCIA_DEBUG is not set 147# CONFIG_PCMCIA_DEBUG is not set
114CONFIG_PCMCIA=y 148CONFIG_PCMCIA=y
149CONFIG_PCMCIA_LOAD_CIS=y
150CONFIG_PCMCIA_IOCTL=y
115 151
116# 152#
117# PC-card bridges 153# PC-card bridges
118# 154#
119# CONFIG_TCIC is not set
120# CONFIG_M32R_PCC is not set 155# CONFIG_M32R_PCC is not set
121# CONFIG_M32R_CFC is not set 156# CONFIG_M32R_CFC is not set
122 157
@@ -131,6 +166,93 @@ CONFIG_BINFMT_ELF=y
131# CONFIG_BINFMT_MISC is not set 166# CONFIG_BINFMT_MISC is not set
132 167
133# 168#
169# Networking
170#
171CONFIG_NET=y
172
173#
174# Networking options
175#
176# CONFIG_NETDEBUG is not set
177# CONFIG_PACKET is not set
178CONFIG_UNIX=y
179CONFIG_XFRM=y
180# CONFIG_XFRM_USER is not set
181# CONFIG_XFRM_SUB_POLICY is not set
182# CONFIG_NET_KEY is not set
183CONFIG_INET=y
184# CONFIG_IP_MULTICAST is not set
185# CONFIG_IP_ADVANCED_ROUTER is not set
186CONFIG_IP_FIB_HASH=y
187CONFIG_IP_PNP=y
188CONFIG_IP_PNP_DHCP=y
189# CONFIG_IP_PNP_BOOTP is not set
190# CONFIG_IP_PNP_RARP is not set
191# CONFIG_NET_IPIP is not set
192# CONFIG_NET_IPGRE is not set
193# CONFIG_ARPD is not set
194# CONFIG_SYN_COOKIES is not set
195# CONFIG_INET_AH is not set
196# CONFIG_INET_ESP is not set
197# CONFIG_INET_IPCOMP is not set
198# CONFIG_INET_XFRM_TUNNEL is not set
199# CONFIG_INET_TUNNEL is not set
200CONFIG_INET_XFRM_MODE_TRANSPORT=y
201CONFIG_INET_XFRM_MODE_TUNNEL=y
202CONFIG_INET_XFRM_MODE_BEET=y
203CONFIG_INET_DIAG=y
204CONFIG_INET_TCP_DIAG=y
205# CONFIG_TCP_CONG_ADVANCED is not set
206CONFIG_TCP_CONG_CUBIC=y
207CONFIG_DEFAULT_TCP_CONG="cubic"
208# CONFIG_TCP_MD5SIG is not set
209# CONFIG_IPV6 is not set
210# CONFIG_INET6_XFRM_TUNNEL is not set
211# CONFIG_INET6_TUNNEL is not set
212# CONFIG_NETWORK_SECMARK is not set
213# CONFIG_NETFILTER is not set
214
215#
216# DCCP Configuration (EXPERIMENTAL)
217#
218# CONFIG_IP_DCCP is not set
219
220#
221# SCTP Configuration (EXPERIMENTAL)
222#
223# CONFIG_IP_SCTP is not set
224
225#
226# TIPC Configuration (EXPERIMENTAL)
227#
228# CONFIG_TIPC is not set
229# CONFIG_ATM is not set
230# CONFIG_BRIDGE is not set
231# CONFIG_VLAN_8021Q is not set
232# CONFIG_DECNET is not set
233# CONFIG_LLC2 is not set
234# CONFIG_IPX is not set
235# CONFIG_ATALK is not set
236# CONFIG_X25 is not set
237# CONFIG_LAPB is not set
238# CONFIG_ECONET is not set
239# CONFIG_WAN_ROUTER is not set
240
241#
242# QoS and/or fair queueing
243#
244# CONFIG_NET_SCHED is not set
245
246#
247# Network testing
248#
249# CONFIG_NET_PKTGEN is not set
250# CONFIG_HAMRADIO is not set
251# CONFIG_IRDA is not set
252# CONFIG_BT is not set
253# CONFIG_IEEE80211 is not set
254
255#
134# Device Drivers 256# Device Drivers
135# 257#
136 258
@@ -140,6 +262,12 @@ CONFIG_BINFMT_ELF=y
140CONFIG_STANDALONE=y 262CONFIG_STANDALONE=y
141CONFIG_PREVENT_FIRMWARE_BUILD=y 263CONFIG_PREVENT_FIRMWARE_BUILD=y
142CONFIG_FW_LOADER=y 264CONFIG_FW_LOADER=y
265# CONFIG_SYS_HYPERVISOR is not set
266
267#
268# Connector - unified userspace <-> kernelspace linker
269#
270# CONFIG_CONNECTOR is not set
143 271
144# 272#
145# Memory Technology Devices (MTD) 273# Memory Technology Devices (MTD)
@@ -162,6 +290,8 @@ CONFIG_MTD_BLOCK=y
162# CONFIG_FTL is not set 290# CONFIG_FTL is not set
163# CONFIG_NFTL is not set 291# CONFIG_NFTL is not set
164# CONFIG_INFTL is not set 292# CONFIG_INFTL is not set
293# CONFIG_RFD_FTL is not set
294# CONFIG_SSFDC is not set
165 295
166# 296#
167# RAM/ROM/Flash chip drivers 297# RAM/ROM/Flash chip drivers
@@ -187,6 +317,7 @@ CONFIG_MTD_CFI_I2=y
187# Mapping drivers for chip access 317# Mapping drivers for chip access
188# 318#
189# CONFIG_MTD_COMPLEX_MAPPINGS is not set 319# CONFIG_MTD_COMPLEX_MAPPINGS is not set
320# CONFIG_MTD_PLATRAM is not set
190 321
191# 322#
192# Self-contained MTD device drivers 323# Self-contained MTD device drivers
@@ -194,7 +325,6 @@ CONFIG_MTD_CFI_I2=y
194# CONFIG_MTD_SLRAM is not set 325# CONFIG_MTD_SLRAM is not set
195# CONFIG_MTD_PHRAM is not set 326# CONFIG_MTD_PHRAM is not set
196# CONFIG_MTD_MTDRAM is not set 327# CONFIG_MTD_MTDRAM is not set
197# CONFIG_MTD_BLKMTD is not set
198# CONFIG_MTD_BLOCK2MTD is not set 328# CONFIG_MTD_BLOCK2MTD is not set
199 329
200# 330#
@@ -210,6 +340,11 @@ CONFIG_MTD_CFI_I2=y
210# CONFIG_MTD_NAND is not set 340# CONFIG_MTD_NAND is not set
211 341
212# 342#
343# OneNAND Flash Device Drivers
344#
345# CONFIG_MTD_ONENAND is not set
346
347#
213# Parallel port support 348# Parallel port support
214# 349#
215# CONFIG_PARPORT is not set 350# CONFIG_PARPORT is not set
@@ -221,7 +356,6 @@ CONFIG_MTD_CFI_I2=y
221# 356#
222# Block devices 357# Block devices
223# 358#
224# CONFIG_BLK_DEV_FD is not set
225# CONFIG_BLK_DEV_COW_COMMON is not set 359# CONFIG_BLK_DEV_COW_COMMON is not set
226CONFIG_BLK_DEV_LOOP=y 360CONFIG_BLK_DEV_LOOP=y
227# CONFIG_BLK_DEV_CRYPTOLOOP is not set 361# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -229,23 +363,21 @@ CONFIG_BLK_DEV_NBD=m
229CONFIG_BLK_DEV_RAM=y 363CONFIG_BLK_DEV_RAM=y
230CONFIG_BLK_DEV_RAM_COUNT=16 364CONFIG_BLK_DEV_RAM_COUNT=16
231CONFIG_BLK_DEV_RAM_SIZE=4096 365CONFIG_BLK_DEV_RAM_SIZE=4096
366CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
232CONFIG_BLK_DEV_INITRD=y 367CONFIG_BLK_DEV_INITRD=y
233CONFIG_INITRAMFS_SOURCE=""
234# CONFIG_CDROM_PKTCDVD is not set 368# CONFIG_CDROM_PKTCDVD is not set
369# CONFIG_ATA_OVER_ETH is not set
235 370
236# 371#
237# IO Schedulers 372# Misc devices
238# 373#
239CONFIG_IOSCHED_NOOP=y 374# CONFIG_TIFM_CORE is not set
240# CONFIG_IOSCHED_AS is not set
241CONFIG_IOSCHED_DEADLINE=y
242CONFIG_IOSCHED_CFQ=y
243# CONFIG_ATA_OVER_ETH is not set
244 375
245# 376#
246# ATA/ATAPI/MFM/RLL support 377# ATA/ATAPI/MFM/RLL support
247# 378#
248CONFIG_IDE=y 379CONFIG_IDE=y
380CONFIG_IDE_MAX_HWIFS=4
249CONFIG_BLK_DEV_IDE=y 381CONFIG_BLK_DEV_IDE=y
250 382
251# 383#
@@ -254,7 +386,7 @@ CONFIG_BLK_DEV_IDE=y
254# CONFIG_BLK_DEV_IDE_SATA is not set 386# CONFIG_BLK_DEV_IDE_SATA is not set
255CONFIG_BLK_DEV_IDEDISK=y 387CONFIG_BLK_DEV_IDEDISK=y
256# CONFIG_IDEDISK_MULTI_MODE is not set 388# CONFIG_IDEDISK_MULTI_MODE is not set
257CONFIG_BLK_DEV_IDECS=y 389CONFIG_BLK_DEV_IDECS=m
258CONFIG_BLK_DEV_IDECD=m 390CONFIG_BLK_DEV_IDECD=m
259# CONFIG_BLK_DEV_IDETAPE is not set 391# CONFIG_BLK_DEV_IDETAPE is not set
260# CONFIG_BLK_DEV_IDEFLOPPY is not set 392# CONFIG_BLK_DEV_IDEFLOPPY is not set
@@ -272,7 +404,13 @@ CONFIG_IDE_GENERIC=y
272# 404#
273# SCSI device support 405# SCSI device support
274# 406#
407# CONFIG_RAID_ATTRS is not set
275# CONFIG_SCSI is not set 408# CONFIG_SCSI is not set
409# CONFIG_SCSI_NETLINK is not set
410
411#
412# Serial ATA (prod) and Parallel ATA (experimental) drivers
413#
276 414
277# 415#
278# Multi-device support (RAID and LVM) 416# Multi-device support (RAID and LVM)
@@ -282,79 +420,19 @@ CONFIG_IDE_GENERIC=y
282# 420#
283# Fusion MPT device support 421# Fusion MPT device support
284# 422#
423# CONFIG_FUSION is not set
285 424
286# 425#
287# IEEE 1394 (FireWire) support 426# IEEE 1394 (FireWire) support
288# 427#
289# CONFIG_IEEE1394 is not set
290 428
291# 429#
292# I2O device support 430# I2O device support
293# 431#
294 432
295# 433#
296# Networking support 434# Network device support
297# 435#
298CONFIG_NET=y
299
300#
301# Networking options
302#
303# CONFIG_PACKET is not set
304CONFIG_UNIX=y
305# CONFIG_NET_KEY is not set
306CONFIG_INET=y
307# CONFIG_IP_MULTICAST is not set
308# CONFIG_IP_ADVANCED_ROUTER is not set
309CONFIG_IP_PNP=y
310CONFIG_IP_PNP_DHCP=y
311# CONFIG_IP_PNP_BOOTP is not set
312# CONFIG_IP_PNP_RARP is not set
313# CONFIG_NET_IPIP is not set
314# CONFIG_NET_IPGRE is not set
315# CONFIG_ARPD is not set
316# CONFIG_SYN_COOKIES is not set
317# CONFIG_INET_AH is not set
318# CONFIG_INET_ESP is not set
319# CONFIG_INET_IPCOMP is not set
320# CONFIG_INET_TUNNEL is not set
321CONFIG_IP_TCPDIAG=y
322# CONFIG_IP_TCPDIAG_IPV6 is not set
323# CONFIG_IPV6 is not set
324# CONFIG_NETFILTER is not set
325
326#
327# SCTP Configuration (EXPERIMENTAL)
328#
329# CONFIG_IP_SCTP is not set
330# CONFIG_ATM is not set
331# CONFIG_BRIDGE is not set
332# CONFIG_VLAN_8021Q is not set
333# CONFIG_DECNET is not set
334# CONFIG_LLC2 is not set
335# CONFIG_IPX is not set
336# CONFIG_ATALK is not set
337# CONFIG_X25 is not set
338# CONFIG_LAPB is not set
339# CONFIG_NET_DIVERT is not set
340# CONFIG_ECONET is not set
341# CONFIG_WAN_ROUTER is not set
342
343#
344# QoS and/or fair queueing
345#
346# CONFIG_NET_SCHED is not set
347# CONFIG_NET_CLS_ROUTE is not set
348
349#
350# Network testing
351#
352# CONFIG_NET_PKTGEN is not set
353# CONFIG_NETPOLL is not set
354# CONFIG_NET_POLL_CONTROLLER is not set
355# CONFIG_HAMRADIO is not set
356# CONFIG_IRDA is not set
357# CONFIG_BT is not set
358CONFIG_NETDEVICES=y 436CONFIG_NETDEVICES=y
359# CONFIG_DUMMY is not set 437# CONFIG_DUMMY is not set
360# CONFIG_BONDING is not set 438# CONFIG_BONDING is not set
@@ -362,6 +440,11 @@ CONFIG_NETDEVICES=y
362# CONFIG_TUN is not set 440# CONFIG_TUN is not set
363 441
364# 442#
443# PHY device support
444#
445# CONFIG_PHYLIB is not set
446
447#
365# Ethernet (10 or 100Mbit) 448# Ethernet (10 or 100Mbit)
366# 449#
367CONFIG_NET_ETHERNET=y 450CONFIG_NET_ETHERNET=y
@@ -399,6 +482,8 @@ CONFIG_SMC91X=y
399# CONFIG_SLIP is not set 482# CONFIG_SLIP is not set
400# CONFIG_SHAPER is not set 483# CONFIG_SHAPER is not set
401# CONFIG_NETCONSOLE is not set 484# CONFIG_NETCONSOLE is not set
485# CONFIG_NETPOLL is not set
486# CONFIG_NET_POLL_CONTROLLER is not set
402 487
403# 488#
404# ISDN subsystem 489# ISDN subsystem
@@ -414,6 +499,7 @@ CONFIG_SMC91X=y
414# Input device support 499# Input device support
415# 500#
416CONFIG_INPUT=y 501CONFIG_INPUT=y
502# CONFIG_INPUT_FF_MEMLESS is not set
417 503
418# 504#
419# Userland interfaces 505# Userland interfaces
@@ -445,7 +531,6 @@ CONFIG_SERIO=y
445# CONFIG_SERIO_LIBPS2 is not set 531# CONFIG_SERIO_LIBPS2 is not set
446# CONFIG_SERIO_RAW is not set 532# CONFIG_SERIO_RAW is not set
447# CONFIG_GAMEPORT is not set 533# CONFIG_GAMEPORT is not set
448CONFIG_SOUND_GAMEPORT=y
449 534
450# 535#
451# Character devices 536# Character devices
@@ -465,7 +550,6 @@ CONFIG_SERIAL_CORE=y
465CONFIG_SERIAL_CORE_CONSOLE=y 550CONFIG_SERIAL_CORE_CONSOLE=y
466CONFIG_SERIAL_M32R_SIO=y 551CONFIG_SERIAL_M32R_SIO=y
467CONFIG_SERIAL_M32R_SIO_CONSOLE=y 552CONFIG_SERIAL_M32R_SIO_CONSOLE=y
468# CONFIG_SERIAL_M32R_PLDSIO is not set
469CONFIG_UNIX98_PTYS=y 553CONFIG_UNIX98_PTYS=y
470CONFIG_LEGACY_PTYS=y 554CONFIG_LEGACY_PTYS=y
471CONFIG_LEGACY_PTY_COUNT=256 555CONFIG_LEGACY_PTY_COUNT=256
@@ -479,25 +563,27 @@ CONFIG_LEGACY_PTY_COUNT=256
479# Watchdog Cards 563# Watchdog Cards
480# 564#
481# CONFIG_WATCHDOG is not set 565# CONFIG_WATCHDOG is not set
566CONFIG_HW_RANDOM=y
482# CONFIG_RTC is not set 567# CONFIG_RTC is not set
483# CONFIG_GEN_RTC is not set
484# CONFIG_DTLK is not set 568# CONFIG_DTLK is not set
485# CONFIG_R3964 is not set 569# CONFIG_R3964 is not set
486 570
487# 571#
488# Ftape, the floppy tape device driver 572# Ftape, the floppy tape device driver
489# 573#
490# CONFIG_DRM is not set
491 574
492# 575#
493# PCMCIA character devices 576# PCMCIA character devices
494# 577#
495# CONFIG_SYNCLINK_CS is not set 578# CONFIG_SYNCLINK_CS is not set
579# CONFIG_CARDMAN_4000 is not set
580# CONFIG_CARDMAN_4040 is not set
496# CONFIG_RAW_DRIVER is not set 581# CONFIG_RAW_DRIVER is not set
497 582
498# 583#
499# TPM devices 584# TPM devices
500# 585#
586# CONFIG_TCG_TPM is not set
501 587
502# 588#
503# I2C support 589# I2C support
@@ -505,13 +591,25 @@ CONFIG_LEGACY_PTY_COUNT=256
505# CONFIG_I2C is not set 591# CONFIG_I2C is not set
506 592
507# 593#
594# SPI support
595#
596# CONFIG_SPI is not set
597# CONFIG_SPI_MASTER is not set
598
599#
508# Dallas's 1-wire bus 600# Dallas's 1-wire bus
509# 601#
510# CONFIG_W1 is not set 602# CONFIG_W1 is not set
511 603
512# 604#
513# Misc devices 605# Hardware Monitoring support
514# 606#
607CONFIG_HWMON=y
608# CONFIG_HWMON_VID is not set
609# CONFIG_SENSORS_ABITUGURU is not set
610# CONFIG_SENSORS_F71805F is not set
611# CONFIG_SENSORS_VT1211 is not set
612# CONFIG_HWMON_DEBUG_CHIP is not set
515 613
516# 614#
517# Multimedia devices 615# Multimedia devices
@@ -526,7 +624,9 @@ CONFIG_LEGACY_PTY_COUNT=256
526# 624#
527# Graphics support 625# Graphics support
528# 626#
627CONFIG_FIRMWARE_EDID=y
529# CONFIG_FB is not set 628# CONFIG_FB is not set
629# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
530 630
531# 631#
532# Sound 632# Sound
@@ -538,6 +638,11 @@ CONFIG_LEGACY_PTY_COUNT=256
538# 638#
539# CONFIG_USB_ARCH_HAS_HCD is not set 639# CONFIG_USB_ARCH_HAS_HCD is not set
540# CONFIG_USB_ARCH_HAS_OHCI is not set 640# CONFIG_USB_ARCH_HAS_OHCI is not set
641# CONFIG_USB_ARCH_HAS_EHCI is not set
642
643#
644# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
645#
541 646
542# 647#
543# USB Gadget Support 648# USB Gadget Support
@@ -550,35 +655,73 @@ CONFIG_LEGACY_PTY_COUNT=256
550# CONFIG_MMC is not set 655# CONFIG_MMC is not set
551 656
552# 657#
658# LED devices
659#
660# CONFIG_NEW_LEDS is not set
661
662#
663# LED drivers
664#
665
666#
667# LED Triggers
668#
669
670#
553# InfiniBand support 671# InfiniBand support
554# 672#
555# CONFIG_INFINIBAND is not set 673
674#
675# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
676#
677
678#
679# Real Time Clock
680#
681# CONFIG_RTC_CLASS is not set
682
683#
684# DMA Engine support
685#
686# CONFIG_DMA_ENGINE is not set
687
688#
689# DMA Clients
690#
691
692#
693# DMA Devices
694#
556 695
557# 696#
558# File systems 697# File systems
559# 698#
560CONFIG_EXT2_FS=y 699CONFIG_EXT2_FS=y
561# CONFIG_EXT2_FS_XATTR is not set 700# CONFIG_EXT2_FS_XATTR is not set
701# CONFIG_EXT2_FS_XIP is not set
562CONFIG_EXT3_FS=y 702CONFIG_EXT3_FS=y
563CONFIG_EXT3_FS_XATTR=y 703CONFIG_EXT3_FS_XATTR=y
564# CONFIG_EXT3_FS_POSIX_ACL is not set 704# CONFIG_EXT3_FS_POSIX_ACL is not set
565# CONFIG_EXT3_FS_SECURITY is not set 705# CONFIG_EXT3_FS_SECURITY is not set
706# CONFIG_EXT4DEV_FS is not set
566CONFIG_JBD=y 707CONFIG_JBD=y
567# CONFIG_JBD_DEBUG is not set 708# CONFIG_JBD_DEBUG is not set
568CONFIG_FS_MBCACHE=y 709CONFIG_FS_MBCACHE=y
569# CONFIG_REISERFS_FS is not set 710# CONFIG_REISERFS_FS is not set
570# CONFIG_JFS_FS is not set 711# CONFIG_JFS_FS is not set
571 712# CONFIG_FS_POSIX_ACL is not set
572#
573# XFS support
574#
575# CONFIG_XFS_FS is not set 713# CONFIG_XFS_FS is not set
714# CONFIG_GFS2_FS is not set
715# CONFIG_OCFS2_FS is not set
576# CONFIG_MINIX_FS is not set 716# CONFIG_MINIX_FS is not set
577CONFIG_ROMFS_FS=y 717CONFIG_ROMFS_FS=y
718CONFIG_INOTIFY=y
719CONFIG_INOTIFY_USER=y
578# CONFIG_QUOTA is not set 720# CONFIG_QUOTA is not set
579CONFIG_DNOTIFY=y 721CONFIG_DNOTIFY=y
580# CONFIG_AUTOFS_FS is not set 722# CONFIG_AUTOFS_FS is not set
581# CONFIG_AUTOFS4_FS is not set 723# CONFIG_AUTOFS4_FS is not set
724# CONFIG_FUSE_FS is not set
582 725
583# 726#
584# CD-ROM/DVD Filesystems 727# CD-ROM/DVD Filesystems
@@ -603,16 +746,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
603# 746#
604CONFIG_PROC_FS=y 747CONFIG_PROC_FS=y
605CONFIG_PROC_KCORE=y 748CONFIG_PROC_KCORE=y
749CONFIG_PROC_SYSCTL=y
606CONFIG_SYSFS=y 750CONFIG_SYSFS=y
607CONFIG_DEVFS_FS=y
608CONFIG_DEVFS_MOUNT=y
609# CONFIG_DEVFS_DEBUG is not set
610# CONFIG_DEVPTS_FS_XATTR is not set
611CONFIG_TMPFS=y 751CONFIG_TMPFS=y
612# CONFIG_TMPFS_XATTR is not set 752# CONFIG_TMPFS_POSIX_ACL is not set
613# CONFIG_HUGETLBFS is not set
614# CONFIG_HUGETLB_PAGE is not set 753# CONFIG_HUGETLB_PAGE is not set
615CONFIG_RAMFS=y 754CONFIG_RAMFS=y
755# CONFIG_CONFIGFS_FS is not set
616 756
617# 757#
618# Miscellaneous filesystems 758# Miscellaneous filesystems
@@ -629,8 +769,9 @@ CONFIG_JFFS_FS_VERBOSE=0
629CONFIG_JFFS_PROC_FS=y 769CONFIG_JFFS_PROC_FS=y
630CONFIG_JFFS2_FS=y 770CONFIG_JFFS2_FS=y
631CONFIG_JFFS2_FS_DEBUG=0 771CONFIG_JFFS2_FS_DEBUG=0
632# CONFIG_JFFS2_FS_NAND is not set 772CONFIG_JFFS2_FS_WRITEBUFFER=y
633# CONFIG_JFFS2_FS_NOR_ECC is not set 773# CONFIG_JFFS2_SUMMARY is not set
774# CONFIG_JFFS2_FS_XATTR is not set
634# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set 775# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
635CONFIG_JFFS2_ZLIB=y 776CONFIG_JFFS2_ZLIB=y
636CONFIG_JFFS2_RTIME=y 777CONFIG_JFFS2_RTIME=y
@@ -647,12 +788,14 @@ CONFIG_JFFS2_RTIME=y
647# 788#
648CONFIG_NFS_FS=y 789CONFIG_NFS_FS=y
649CONFIG_NFS_V3=y 790CONFIG_NFS_V3=y
791# CONFIG_NFS_V3_ACL is not set
650# CONFIG_NFS_V4 is not set 792# CONFIG_NFS_V4 is not set
651# CONFIG_NFS_DIRECTIO is not set 793# CONFIG_NFS_DIRECTIO is not set
652# CONFIG_NFSD is not set 794# CONFIG_NFSD is not set
653CONFIG_ROOT_NFS=y 795CONFIG_ROOT_NFS=y
654CONFIG_LOCKD=y 796CONFIG_LOCKD=y
655CONFIG_LOCKD_V4=y 797CONFIG_LOCKD_V4=y
798CONFIG_NFS_COMMON=y
656CONFIG_SUNRPC=y 799CONFIG_SUNRPC=y
657# CONFIG_RPCSEC_GSS_KRB5 is not set 800# CONFIG_RPCSEC_GSS_KRB5 is not set
658# CONFIG_RPCSEC_GSS_SPKM3 is not set 801# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -661,6 +804,7 @@ CONFIG_SUNRPC=y
661# CONFIG_NCP_FS is not set 804# CONFIG_NCP_FS is not set
662# CONFIG_CODA_FS is not set 805# CONFIG_CODA_FS is not set
663# CONFIG_AFS_FS is not set 806# CONFIG_AFS_FS is not set
807# CONFIG_9P_FS is not set
664 808
665# 809#
666# Partition Types 810# Partition Types
@@ -721,10 +865,16 @@ CONFIG_NLS_DEFAULT="iso8859-1"
721# Kernel hacking 865# Kernel hacking
722# 866#
723# CONFIG_PRINTK_TIME is not set 867# CONFIG_PRINTK_TIME is not set
868CONFIG_ENABLE_MUST_CHECK=y
869# CONFIG_MAGIC_SYSRQ is not set
870# CONFIG_UNUSED_SYMBOLS is not set
724# CONFIG_DEBUG_KERNEL is not set 871# CONFIG_DEBUG_KERNEL is not set
725CONFIG_LOG_BUF_SHIFT=15 872CONFIG_LOG_BUF_SHIFT=15
726# CONFIG_DEBUG_BUGVERBOSE is not set 873# CONFIG_DEBUG_BUGVERBOSE is not set
874# CONFIG_DEBUG_FS is not set
727# CONFIG_FRAME_POINTER is not set 875# CONFIG_FRAME_POINTER is not set
876# CONFIG_UNWIND_INFO is not set
877# CONFIG_HEADERS_CHECK is not set
728 878
729# 879#
730# Security options 880# Security options
@@ -738,13 +888,10 @@ CONFIG_LOG_BUF_SHIFT=15
738# CONFIG_CRYPTO is not set 888# CONFIG_CRYPTO is not set
739 889
740# 890#
741# Hardware crypto devices
742#
743
744#
745# Library routines 891# Library routines
746# 892#
747# CONFIG_CRC_CCITT is not set 893# CONFIG_CRC_CCITT is not set
894# CONFIG_CRC16 is not set
748CONFIG_CRC32=y 895CONFIG_CRC32=y
749# CONFIG_LIBCRC32C is not set 896# CONFIG_LIBCRC32C is not set
750CONFIG_ZLIB_INFLATE=y 897CONFIG_ZLIB_INFLATE=y
diff --git a/arch/m32r/mm/fault-nommu.c b/arch/m32r/mm/fault-nommu.c
index 03fc4c858e0e..9880abac3f54 100644
--- a/arch/m32r/mm/fault-nommu.c
+++ b/arch/m32r/mm/fault-nommu.c
@@ -7,8 +7,6 @@
7 * Copyright (C) 1995 Linus Torvalds 7 * Copyright (C) 1995 Linus Torvalds
8 */ 8 */
9 9
10/* $Id: fault-nommu.c,v 1.1 2004/03/30 06:40:59 sakugawa Exp $ */
11
12#include <linux/signal.h> 10#include <linux/signal.h>
13#include <linux/sched.h> 11#include <linux/sched.h>
14#include <linux/kernel.h> 12#include <linux/kernel.h>
@@ -46,32 +44,6 @@ unsigned int tlb_entry_d_dat[NR_CPUS];
46#define tlb_entry_d tlb_entry_d_dat[smp_processor_id()] 44#define tlb_entry_d tlb_entry_d_dat[smp_processor_id()]
47#endif 45#endif
48 46
49/*
50 * Unlock any spinlocks which will prevent us from getting the
51 * message out
52 */
53void bust_spinlocks(int yes)
54{
55 int loglevel_save = console_loglevel;
56
57 if (yes) {
58 oops_in_progress = 1;
59 return;
60 }
61#ifdef CONFIG_VT
62 unblank_screen();
63#endif
64 oops_in_progress = 0;
65 /*
66 * OK, the message is on the console. Now we call printk()
67 * without oops_in_progress set so that printk will give klogd
68 * a poke. Hold onto your hats...
69 */
70 console_loglevel = 15; /* NMI oopser may have shut the console up */
71 printk(" ");
72 console_loglevel = loglevel_save;
73}
74
75void do_BUG(const char *file, int line) 47void do_BUG(const char *file, int line)
76{ 48{
77 bust_spinlocks(1); 49 bust_spinlocks(1);
@@ -161,4 +133,3 @@ void local_flush_tlb_all(void)
161{ 133{
162 BUG(); 134 BUG();
163} 135}
164
diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
index 9b9feb0f1610..037d58e82fb5 100644
--- a/arch/m32r/mm/fault.c
+++ b/arch/m32r/mm/fault.c
@@ -49,32 +49,6 @@ unsigned int tlb_entry_d_dat[NR_CPUS];
49 49
50extern void init_tlb(void); 50extern void init_tlb(void);
51 51
52/*
53 * Unlock any spinlocks which will prevent us from getting the
54 * message out
55 */
56void bust_spinlocks(int yes)
57{
58 int loglevel_save = console_loglevel;
59
60 if (yes) {
61 oops_in_progress = 1;
62 return;
63 }
64#ifdef CONFIG_VT
65 unblank_screen();
66#endif
67 oops_in_progress = 0;
68 /*
69 * OK, the message is on the console. Now we call printk()
70 * without oops_in_progress set so that printk will give klogd
71 * a poke. Hold onto your hats...
72 */
73 console_loglevel = 15; /* NMI oopser may have shut the console up */
74 printk(" ");
75 console_loglevel = loglevel_save;
76}
77
78/*======================================================================* 52/*======================================================================*
79 * do_page_fault() 53 * do_page_fault()
80 *======================================================================* 54 *======================================================================*
@@ -362,8 +336,10 @@ vmalloc_fault:
362 if (!pte_present(*pte_k)) 336 if (!pte_present(*pte_k))
363 goto no_context; 337 goto no_context;
364 338
365 addr = (address & PAGE_MASK) | (error_code & ACE_INSTRUCTION); 339 addr = (address & PAGE_MASK);
340 set_thread_fault_code(error_code);
366 update_mmu_cache(NULL, addr, *pte_k); 341 update_mmu_cache(NULL, addr, *pte_k);
342 set_thread_fault_code(0);
367 return; 343 return;
368 } 344 }
369} 345}
@@ -377,7 +353,7 @@ vmalloc_fault:
377void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr, 353void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr,
378 pte_t pte) 354 pte_t pte)
379{ 355{
380 unsigned long *entry1, *entry2; 356 volatile unsigned long *entry1, *entry2;
381 unsigned long pte_data, flags; 357 unsigned long pte_data, flags;
382 unsigned int *entry_dat; 358 unsigned int *entry_dat;
383 int inst = get_thread_fault_code() & ACE_INSTRUCTION; 359 int inst = get_thread_fault_code() & ACE_INSTRUCTION;
@@ -391,30 +367,26 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr,
391 367
392 vaddr = (vaddr & PAGE_MASK) | get_asid(); 368 vaddr = (vaddr & PAGE_MASK) | get_asid();
393 369
370 pte_data = pte_val(pte);
371
394#ifdef CONFIG_CHIP_OPSP 372#ifdef CONFIG_CHIP_OPSP
395 entry1 = (unsigned long *)ITLB_BASE; 373 entry1 = (unsigned long *)ITLB_BASE;
396 for(i = 0 ; i < NR_TLB_ENTRIES; i++) { 374 for (i = 0; i < NR_TLB_ENTRIES; i++) {
397 if(*entry1++ == vaddr) { 375 if (*entry1++ == vaddr) {
398 pte_data = pte_val(pte); 376 set_tlb_data(entry1, pte_data);
399 set_tlb_data(entry1, pte_data); 377 break;
400 break; 378 }
401 } 379 entry1++;
402 entry1++;
403 } 380 }
404 entry2 = (unsigned long *)DTLB_BASE; 381 entry2 = (unsigned long *)DTLB_BASE;
405 for(i = 0 ; i < NR_TLB_ENTRIES ; i++) { 382 for (i = 0; i < NR_TLB_ENTRIES; i++) {
406 if(*entry2++ == vaddr) { 383 if (*entry2++ == vaddr) {
407 pte_data = pte_val(pte); 384 set_tlb_data(entry2, pte_data);
408 set_tlb_data(entry2, pte_data); 385 break;
409 break; 386 }
410 } 387 entry2++;
411 entry2++;
412 } 388 }
413 local_irq_restore(flags);
414 return;
415#else 389#else
416 pte_data = pte_val(pte);
417
418 /* 390 /*
419 * Update TLB entries 391 * Update TLB entries
420 * entry1: ITLB entry address 392 * entry1: ITLB entry address
@@ -439,6 +411,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr,
439 "i" (MSVA_offset), "i" (MTOP_offset), "i" (MIDXI_offset) 411 "i" (MSVA_offset), "i" (MTOP_offset), "i" (MIDXI_offset)
440 : "r4", "memory" 412 : "r4", "memory"
441 ); 413 );
414#endif
442 415
443 if ((!inst && entry2 >= DTLB_END) || (inst && entry1 >= ITLB_END)) 416 if ((!inst && entry2 >= DTLB_END) || (inst && entry1 >= ITLB_END))
444 goto notfound; 417 goto notfound;
@@ -482,7 +455,6 @@ notfound:
482 set_tlb_data(entry1, pte_data); 455 set_tlb_data(entry1, pte_data);
483 456
484 goto found; 457 goto found;
485#endif
486} 458}
487 459
488/*======================================================================* 460/*======================================================================*
diff --git a/arch/m32r/mm/mmu.S b/arch/m32r/mm/mmu.S
index 9a4d40b3d6a2..8bb74b10dca7 100644
--- a/arch/m32r/mm/mmu.S
+++ b/arch/m32r/mm/mmu.S
@@ -4,8 +4,6 @@
4 * Copyright (C) 2001 by Hiroyuki Kondo 4 * Copyright (C) 2001 by Hiroyuki Kondo
5 */ 5 */
6 6
7/* $Id: mmu.S,v 1.15 2004/03/16 02:56:27 takata Exp $ */
8
9#include <linux/linkage.h> 7#include <linux/linkage.h>
10#include <asm/assembler.h> 8#include <asm/assembler.h>
11#include <asm/smp.h> 9#include <asm/smp.h>
@@ -345,5 +343,4 @@ ENTRY(m32r_otlb_entrys)
345 343
346#endif /* CONFIG_MMU */ 344#endif /* CONFIG_MMU */
347 345
348.end 346 .end
349
diff --git a/arch/m32r/oaks32r/defconfig.nommu b/arch/m32r/oaks32r/defconfig.nommu
index 3f9fe519acb2..aaa00828e0d3 100644
--- a/arch/m32r/oaks32r/defconfig.nommu
+++ b/arch/m32r/oaks32r/defconfig.nommu
@@ -1,19 +1,18 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.12-rc5 3# Linux kernel version: 2.6.19
4# Fri Jun 3 16:22:04 2005 4# Tue Dec 12 12:09:17 2006
5# 5#
6CONFIG_M32R=y 6CONFIG_M32R=y
7# CONFIG_UID16 is not set
8CONFIG_GENERIC_ISA_DMA=y 7CONFIG_GENERIC_ISA_DMA=y
9CONFIG_GENERIC_HARDIRQS=y 8CONFIG_GENERIC_HARDIRQS=y
10CONFIG_GENERIC_IRQ_PROBE=y 9CONFIG_GENERIC_IRQ_PROBE=y
10CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11 11
12# 12#
13# Code maturity level options 13# Code maturity level options
14# 14#
15CONFIG_EXPERIMENTAL=y 15CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_BROKEN_ON_SMP=y 16CONFIG_BROKEN_ON_SMP=y
18CONFIG_LOCK_KERNEL=y 17CONFIG_LOCK_KERNEL=y
19CONFIG_INIT_ENV_ARG_LIMIT=32 18CONFIG_INIT_ENV_ARG_LIMIT=32
@@ -22,28 +21,35 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
22# General setup 21# General setup
23# 22#
24CONFIG_LOCALVERSION="" 23CONFIG_LOCALVERSION=""
24CONFIG_LOCALVERSION_AUTO=y
25# CONFIG_SYSVIPC is not set
25# CONFIG_POSIX_MQUEUE is not set 26# CONFIG_POSIX_MQUEUE is not set
26CONFIG_BSD_PROCESS_ACCT=y 27CONFIG_BSD_PROCESS_ACCT=y
27# CONFIG_BSD_PROCESS_ACCT_V3 is not set 28# CONFIG_BSD_PROCESS_ACCT_V3 is not set
28CONFIG_SYSCTL=y 29# CONFIG_TASKSTATS is not set
30# CONFIG_UTS_NS is not set
29# CONFIG_AUDIT is not set 31# CONFIG_AUDIT is not set
30CONFIG_HOTPLUG=y
31CONFIG_KOBJECT_UEVENT=y
32# CONFIG_IKCONFIG is not set 32# CONFIG_IKCONFIG is not set
33CONFIG_SYSFS_DEPRECATED=y
34# CONFIG_RELAY is not set
35CONFIG_INITRAMFS_SOURCE=""
36# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
37CONFIG_SYSCTL=y
33CONFIG_EMBEDDED=y 38CONFIG_EMBEDDED=y
39CONFIG_SYSCTL_SYSCALL=y
34# CONFIG_KALLSYMS is not set 40# CONFIG_KALLSYMS is not set
41CONFIG_HOTPLUG=y
35CONFIG_PRINTK=y 42CONFIG_PRINTK=y
36CONFIG_BUG=y 43CONFIG_BUG=y
44CONFIG_ELF_CORE=y
37CONFIG_BASE_FULL=y 45CONFIG_BASE_FULL=y
38# CONFIG_FUTEX is not set 46# CONFIG_FUTEX is not set
39# CONFIG_EPOLL is not set 47# CONFIG_EPOLL is not set
40# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 48CONFIG_SLAB=y
41CONFIG_CC_ALIGN_FUNCTIONS=0 49CONFIG_VM_EVENT_COUNTERS=y
42CONFIG_CC_ALIGN_LABELS=0
43CONFIG_CC_ALIGN_LOOPS=0
44CONFIG_CC_ALIGN_JUMPS=0
45CONFIG_TINY_SHMEM=y 50CONFIG_TINY_SHMEM=y
46CONFIG_BASE_SMALL=0 51CONFIG_BASE_SMALL=0
52# CONFIG_SLOB is not set
47 53
48# 54#
49# Loadable module support 55# Loadable module support
@@ -51,12 +57,30 @@ CONFIG_BASE_SMALL=0
51CONFIG_MODULES=y 57CONFIG_MODULES=y
52CONFIG_MODULE_UNLOAD=y 58CONFIG_MODULE_UNLOAD=y
53# CONFIG_MODULE_FORCE_UNLOAD is not set 59# CONFIG_MODULE_FORCE_UNLOAD is not set
54CONFIG_OBSOLETE_MODPARM=y
55# CONFIG_MODVERSIONS is not set 60# CONFIG_MODVERSIONS is not set
56# CONFIG_MODULE_SRCVERSION_ALL is not set 61# CONFIG_MODULE_SRCVERSION_ALL is not set
57CONFIG_KMOD=y 62CONFIG_KMOD=y
58 63
59# 64#
65# Block layer
66#
67CONFIG_BLOCK=y
68# CONFIG_BLK_DEV_IO_TRACE is not set
69
70#
71# IO Schedulers
72#
73CONFIG_IOSCHED_NOOP=y
74# CONFIG_IOSCHED_AS is not set
75CONFIG_IOSCHED_DEADLINE=y
76CONFIG_IOSCHED_CFQ=y
77# CONFIG_DEFAULT_AS is not set
78# CONFIG_DEFAULT_DEADLINE is not set
79CONFIG_DEFAULT_CFQ=y
80# CONFIG_DEFAULT_NOOP is not set
81CONFIG_DEFAULT_IOSCHED="cfq"
82
83#
60# Processor type and features 84# Processor type and features
61# 85#
62# CONFIG_PLAT_MAPPI is not set 86# CONFIG_PLAT_MAPPI is not set
@@ -66,8 +90,10 @@ CONFIG_KMOD=y
66CONFIG_PLAT_OAKS32R=y 90CONFIG_PLAT_OAKS32R=y
67# CONFIG_PLAT_MAPPI2 is not set 91# CONFIG_PLAT_MAPPI2 is not set
68# CONFIG_PLAT_MAPPI3 is not set 92# CONFIG_PLAT_MAPPI3 is not set
93# CONFIG_PLAT_M32104UT is not set
69# CONFIG_CHIP_M32700 is not set 94# CONFIG_CHIP_M32700 is not set
70CONFIG_CHIP_M32102=y 95CONFIG_CHIP_M32102=y
96# CONFIG_CHIP_M32104 is not set
71# CONFIG_CHIP_VDEC2 is not set 97# CONFIG_CHIP_VDEC2 is not set
72# CONFIG_CHIP_OPSP is not set 98# CONFIG_CHIP_OPSP is not set
73CONFIG_ISA_M32R=y 99CONFIG_ISA_M32R=y
@@ -77,18 +103,31 @@ CONFIG_TIMER_DIVIDE=128
77CONFIG_MEMORY_START=0x01000000 103CONFIG_MEMORY_START=0x01000000
78CONFIG_MEMORY_SIZE=0x00800000 104CONFIG_MEMORY_SIZE=0x00800000
79CONFIG_NOHIGHMEM=y 105CONFIG_NOHIGHMEM=y
80# CONFIG_DISCONTIGMEM is not set 106CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
107CONFIG_SELECT_MEMORY_MODEL=y
108# CONFIG_FLATMEM_MANUAL is not set
109CONFIG_DISCONTIGMEM_MANUAL=y
110# CONFIG_SPARSEMEM_MANUAL is not set
111CONFIG_DISCONTIGMEM=y
112CONFIG_FLAT_NODE_MEM_MAP=y
113CONFIG_NEED_MULTIPLE_NODES=y
114# CONFIG_SPARSEMEM_STATIC is not set
115CONFIG_SPLIT_PTLOCK_CPUS=4
116# CONFIG_RESOURCES_64BIT is not set
117CONFIG_IRAM_START=0x00f00000
118CONFIG_IRAM_SIZE=0x00010000
81CONFIG_RWSEM_GENERIC_SPINLOCK=y 119CONFIG_RWSEM_GENERIC_SPINLOCK=y
82# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 120# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
121CONFIG_GENERIC_FIND_NEXT_BIT=y
122CONFIG_GENERIC_HWEIGHT=y
83CONFIG_GENERIC_CALIBRATE_DELAY=y 123CONFIG_GENERIC_CALIBRATE_DELAY=y
84CONFIG_PREEMPT=y 124CONFIG_PREEMPT=y
85# CONFIG_HAVE_DEC_LOCK is not set
86# CONFIG_SMP is not set 125# CONFIG_SMP is not set
126CONFIG_NODES_SHIFT=1
87 127
88# 128#
89# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 129# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
90# 130#
91# CONFIG_PCI is not set
92# CONFIG_ISA is not set 131# CONFIG_ISA is not set
93 132
94# 133#
@@ -109,6 +148,94 @@ CONFIG_BINFMT_FLAT=y
109# CONFIG_BINFMT_MISC is not set 148# CONFIG_BINFMT_MISC is not set
110 149
111# 150#
151# Networking
152#
153CONFIG_NET=y
154
155#
156# Networking options
157#
158# CONFIG_NETDEBUG is not set
159CONFIG_PACKET=y
160# CONFIG_PACKET_MMAP is not set
161CONFIG_UNIX=y
162CONFIG_XFRM=y
163# CONFIG_XFRM_USER is not set
164# CONFIG_XFRM_SUB_POLICY is not set
165# CONFIG_NET_KEY is not set
166CONFIG_INET=y
167# CONFIG_IP_MULTICAST is not set
168# CONFIG_IP_ADVANCED_ROUTER is not set
169CONFIG_IP_FIB_HASH=y
170CONFIG_IP_PNP=y
171CONFIG_IP_PNP_DHCP=y
172# CONFIG_IP_PNP_BOOTP is not set
173# CONFIG_IP_PNP_RARP is not set
174# CONFIG_NET_IPIP is not set
175# CONFIG_NET_IPGRE is not set
176# CONFIG_ARPD is not set
177# CONFIG_SYN_COOKIES is not set
178# CONFIG_INET_AH is not set
179# CONFIG_INET_ESP is not set
180# CONFIG_INET_IPCOMP is not set
181# CONFIG_INET_XFRM_TUNNEL is not set
182# CONFIG_INET_TUNNEL is not set
183CONFIG_INET_XFRM_MODE_TRANSPORT=y
184CONFIG_INET_XFRM_MODE_TUNNEL=y
185CONFIG_INET_XFRM_MODE_BEET=y
186CONFIG_INET_DIAG=y
187CONFIG_INET_TCP_DIAG=y
188# CONFIG_TCP_CONG_ADVANCED is not set
189CONFIG_TCP_CONG_CUBIC=y
190CONFIG_DEFAULT_TCP_CONG="cubic"
191# CONFIG_TCP_MD5SIG is not set
192# CONFIG_IPV6 is not set
193# CONFIG_INET6_XFRM_TUNNEL is not set
194# CONFIG_INET6_TUNNEL is not set
195# CONFIG_NETWORK_SECMARK is not set
196# CONFIG_NETFILTER is not set
197
198#
199# DCCP Configuration (EXPERIMENTAL)
200#
201# CONFIG_IP_DCCP is not set
202
203#
204# SCTP Configuration (EXPERIMENTAL)
205#
206# CONFIG_IP_SCTP is not set
207
208#
209# TIPC Configuration (EXPERIMENTAL)
210#
211# CONFIG_TIPC is not set
212# CONFIG_ATM is not set
213# CONFIG_BRIDGE is not set
214# CONFIG_VLAN_8021Q is not set
215# CONFIG_DECNET is not set
216# CONFIG_LLC2 is not set
217# CONFIG_IPX is not set
218# CONFIG_ATALK is not set
219# CONFIG_X25 is not set
220# CONFIG_LAPB is not set
221# CONFIG_ECONET is not set
222# CONFIG_WAN_ROUTER is not set
223
224#
225# QoS and/or fair queueing
226#
227# CONFIG_NET_SCHED is not set
228
229#
230# Network testing
231#
232# CONFIG_NET_PKTGEN is not set
233# CONFIG_HAMRADIO is not set
234# CONFIG_IRDA is not set
235# CONFIG_BT is not set
236# CONFIG_IEEE80211 is not set
237
238#
112# Device Drivers 239# Device Drivers
113# 240#
114 241
@@ -118,6 +245,12 @@ CONFIG_BINFMT_FLAT=y
118CONFIG_STANDALONE=y 245CONFIG_STANDALONE=y
119CONFIG_PREVENT_FIRMWARE_BUILD=y 246CONFIG_PREVENT_FIRMWARE_BUILD=y
120# CONFIG_FW_LOADER is not set 247# CONFIG_FW_LOADER is not set
248# CONFIG_SYS_HYPERVISOR is not set
249
250#
251# Connector - unified userspace <-> kernelspace linker
252#
253# CONFIG_CONNECTOR is not set
121 254
122# 255#
123# Memory Technology Devices (MTD) 256# Memory Technology Devices (MTD)
@@ -136,7 +269,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
136# 269#
137# Block devices 270# Block devices
138# 271#
139# CONFIG_BLK_DEV_FD is not set
140# CONFIG_BLK_DEV_COW_COMMON is not set 272# CONFIG_BLK_DEV_COW_COMMON is not set
141CONFIG_BLK_DEV_LOOP=y 273CONFIG_BLK_DEV_LOOP=y
142# CONFIG_BLK_DEV_CRYPTOLOOP is not set 274# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -144,18 +276,15 @@ CONFIG_BLK_DEV_NBD=y
144CONFIG_BLK_DEV_RAM=y 276CONFIG_BLK_DEV_RAM=y
145CONFIG_BLK_DEV_RAM_COUNT=16 277CONFIG_BLK_DEV_RAM_COUNT=16
146CONFIG_BLK_DEV_RAM_SIZE=4096 278CONFIG_BLK_DEV_RAM_SIZE=4096
279CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
147# CONFIG_BLK_DEV_INITRD is not set 280# CONFIG_BLK_DEV_INITRD is not set
148CONFIG_INITRAMFS_SOURCE=""
149# CONFIG_CDROM_PKTCDVD is not set 281# CONFIG_CDROM_PKTCDVD is not set
282# CONFIG_ATA_OVER_ETH is not set
150 283
151# 284#
152# IO Schedulers 285# Misc devices
153# 286#
154CONFIG_IOSCHED_NOOP=y 287# CONFIG_TIFM_CORE is not set
155# CONFIG_IOSCHED_AS is not set
156CONFIG_IOSCHED_DEADLINE=y
157CONFIG_IOSCHED_CFQ=y
158# CONFIG_ATA_OVER_ETH is not set
159 288
160# 289#
161# ATA/ATAPI/MFM/RLL support 290# ATA/ATAPI/MFM/RLL support
@@ -165,7 +294,13 @@ CONFIG_IOSCHED_CFQ=y
165# 294#
166# SCSI device support 295# SCSI device support
167# 296#
297# CONFIG_RAID_ATTRS is not set
168# CONFIG_SCSI is not set 298# CONFIG_SCSI is not set
299# CONFIG_SCSI_NETLINK is not set
300
301#
302# Serial ATA (prod) and Parallel ATA (experimental) drivers
303#
169 304
170# 305#
171# Multi-device support (RAID and LVM) 306# Multi-device support (RAID and LVM)
@@ -175,6 +310,7 @@ CONFIG_IOSCHED_CFQ=y
175# 310#
176# Fusion MPT device support 311# Fusion MPT device support
177# 312#
313# CONFIG_FUSION is not set
178 314
179# 315#
180# IEEE 1394 (FireWire) support 316# IEEE 1394 (FireWire) support
@@ -185,69 +321,8 @@ CONFIG_IOSCHED_CFQ=y
185# 321#
186 322
187# 323#
188# Networking support 324# Network device support
189#
190CONFIG_NET=y
191
192#
193# Networking options
194#
195CONFIG_PACKET=y
196# CONFIG_PACKET_MMAP is not set
197CONFIG_UNIX=y
198# CONFIG_NET_KEY is not set
199CONFIG_INET=y
200# CONFIG_IP_MULTICAST is not set
201# CONFIG_IP_ADVANCED_ROUTER is not set
202CONFIG_IP_PNP=y
203CONFIG_IP_PNP_DHCP=y
204# CONFIG_IP_PNP_BOOTP is not set
205# CONFIG_IP_PNP_RARP is not set
206# CONFIG_NET_IPIP is not set
207# CONFIG_NET_IPGRE is not set
208# CONFIG_ARPD is not set
209# CONFIG_SYN_COOKIES is not set
210# CONFIG_INET_AH is not set
211# CONFIG_INET_ESP is not set
212# CONFIG_INET_IPCOMP is not set
213# CONFIG_INET_TUNNEL is not set
214CONFIG_IP_TCPDIAG=y
215# CONFIG_IP_TCPDIAG_IPV6 is not set
216# CONFIG_IPV6 is not set
217# CONFIG_NETFILTER is not set
218
219#
220# SCTP Configuration (EXPERIMENTAL)
221#
222# CONFIG_IP_SCTP is not set
223# CONFIG_ATM is not set
224# CONFIG_BRIDGE is not set
225# CONFIG_VLAN_8021Q is not set
226# CONFIG_DECNET is not set
227# CONFIG_LLC2 is not set
228# CONFIG_IPX is not set
229# CONFIG_ATALK is not set
230# CONFIG_X25 is not set
231# CONFIG_LAPB is not set
232# CONFIG_NET_DIVERT is not set
233# CONFIG_ECONET is not set
234# CONFIG_WAN_ROUTER is not set
235
236#
237# QoS and/or fair queueing
238#
239# CONFIG_NET_SCHED is not set
240# CONFIG_NET_CLS_ROUTE is not set
241
242#
243# Network testing
244# 325#
245# CONFIG_NET_PKTGEN is not set
246# CONFIG_NETPOLL is not set
247# CONFIG_NET_POLL_CONTROLLER is not set
248# CONFIG_HAMRADIO is not set
249# CONFIG_IRDA is not set
250# CONFIG_BT is not set
251CONFIG_NETDEVICES=y 326CONFIG_NETDEVICES=y
252# CONFIG_DUMMY is not set 327# CONFIG_DUMMY is not set
253# CONFIG_BONDING is not set 328# CONFIG_BONDING is not set
@@ -255,6 +330,10 @@ CONFIG_NETDEVICES=y
255# CONFIG_TUN is not set 330# CONFIG_TUN is not set
256 331
257# 332#
333# PHY device support
334#
335
336#
258# Ethernet (10 or 100Mbit) 337# Ethernet (10 or 100Mbit)
259# 338#
260# CONFIG_NET_ETHERNET is not set 339# CONFIG_NET_ETHERNET is not set
@@ -285,6 +364,8 @@ CONFIG_NE2000=y
285# CONFIG_SLIP is not set 364# CONFIG_SLIP is not set
286# CONFIG_SHAPER is not set 365# CONFIG_SHAPER is not set
287# CONFIG_NETCONSOLE is not set 366# CONFIG_NETCONSOLE is not set
367# CONFIG_NETPOLL is not set
368# CONFIG_NET_POLL_CONTROLLER is not set
288 369
289# 370#
290# ISDN subsystem 371# ISDN subsystem
@@ -300,6 +381,7 @@ CONFIG_NE2000=y
300# Input device support 381# Input device support
301# 382#
302CONFIG_INPUT=y 383CONFIG_INPUT=y
384# CONFIG_INPUT_FF_MEMLESS is not set
303 385
304# 386#
305# Userland interfaces 387# Userland interfaces
@@ -328,7 +410,6 @@ CONFIG_SERIO_SERPORT=y
328# CONFIG_SERIO_LIBPS2 is not set 410# CONFIG_SERIO_LIBPS2 is not set
329# CONFIG_SERIO_RAW is not set 411# CONFIG_SERIO_RAW is not set
330# CONFIG_GAMEPORT is not set 412# CONFIG_GAMEPORT is not set
331CONFIG_SOUND_GAMEPORT=y
332 413
333# 414#
334# Character devices 415# Character devices
@@ -348,7 +429,6 @@ CONFIG_SERIAL_CORE=y
348CONFIG_SERIAL_CORE_CONSOLE=y 429CONFIG_SERIAL_CORE_CONSOLE=y
349CONFIG_SERIAL_M32R_SIO=y 430CONFIG_SERIAL_M32R_SIO=y
350CONFIG_SERIAL_M32R_SIO_CONSOLE=y 431CONFIG_SERIAL_M32R_SIO_CONSOLE=y
351# CONFIG_SERIAL_M32R_PLDSIO is not set
352CONFIG_UNIX98_PTYS=y 432CONFIG_UNIX98_PTYS=y
353CONFIG_LEGACY_PTYS=y 433CONFIG_LEGACY_PTYS=y
354CONFIG_LEGACY_PTY_COUNT=256 434CONFIG_LEGACY_PTY_COUNT=256
@@ -362,20 +442,20 @@ CONFIG_LEGACY_PTY_COUNT=256
362# Watchdog Cards 442# Watchdog Cards
363# 443#
364# CONFIG_WATCHDOG is not set 444# CONFIG_WATCHDOG is not set
445CONFIG_HW_RANDOM=y
365# CONFIG_RTC is not set 446# CONFIG_RTC is not set
366# CONFIG_GEN_RTC is not set
367# CONFIG_DTLK is not set 447# CONFIG_DTLK is not set
368# CONFIG_R3964 is not set 448# CONFIG_R3964 is not set
369 449
370# 450#
371# Ftape, the floppy tape device driver 451# Ftape, the floppy tape device driver
372# 452#
373# CONFIG_DRM is not set
374# CONFIG_RAW_DRIVER is not set 453# CONFIG_RAW_DRIVER is not set
375 454
376# 455#
377# TPM devices 456# TPM devices
378# 457#
458# CONFIG_TCG_TPM is not set
379 459
380# 460#
381# I2C support 461# I2C support
@@ -383,13 +463,25 @@ CONFIG_LEGACY_PTY_COUNT=256
383# CONFIG_I2C is not set 463# CONFIG_I2C is not set
384 464
385# 465#
466# SPI support
467#
468# CONFIG_SPI is not set
469# CONFIG_SPI_MASTER is not set
470
471#
386# Dallas's 1-wire bus 472# Dallas's 1-wire bus
387# 473#
388# CONFIG_W1 is not set 474# CONFIG_W1 is not set
389 475
390# 476#
391# Misc devices 477# Hardware Monitoring support
392# 478#
479CONFIG_HWMON=y
480# CONFIG_HWMON_VID is not set
481# CONFIG_SENSORS_ABITUGURU is not set
482# CONFIG_SENSORS_F71805F is not set
483# CONFIG_SENSORS_VT1211 is not set
484# CONFIG_HWMON_DEBUG_CHIP is not set
393 485
394# 486#
395# Multimedia devices 487# Multimedia devices
@@ -404,7 +496,9 @@ CONFIG_LEGACY_PTY_COUNT=256
404# 496#
405# Graphics support 497# Graphics support
406# 498#
499CONFIG_FIRMWARE_EDID=y
407# CONFIG_FB is not set 500# CONFIG_FB is not set
501# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
408 502
409# 503#
410# Sound 504# Sound
@@ -416,6 +510,11 @@ CONFIG_LEGACY_PTY_COUNT=256
416# 510#
417# CONFIG_USB_ARCH_HAS_HCD is not set 511# CONFIG_USB_ARCH_HAS_HCD is not set
418# CONFIG_USB_ARCH_HAS_OHCI is not set 512# CONFIG_USB_ARCH_HAS_OHCI is not set
513# CONFIG_USB_ARCH_HAS_EHCI is not set
514
515#
516# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
517#
419 518
420# 519#
421# USB Gadget Support 520# USB Gadget Support
@@ -428,9 +527,43 @@ CONFIG_LEGACY_PTY_COUNT=256
428# CONFIG_MMC is not set 527# CONFIG_MMC is not set
429 528
430# 529#
530# LED devices
531#
532# CONFIG_NEW_LEDS is not set
533
534#
535# LED drivers
536#
537
538#
539# LED Triggers
540#
541
542#
431# InfiniBand support 543# InfiniBand support
432# 544#
433# CONFIG_INFINIBAND is not set 545
546#
547# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
548#
549
550#
551# Real Time Clock
552#
553# CONFIG_RTC_CLASS is not set
554
555#
556# DMA Engine support
557#
558# CONFIG_DMA_ENGINE is not set
559
560#
561# DMA Clients
562#
563
564#
565# DMA Devices
566#
434 567
435# 568#
436# File systems 569# File systems
@@ -438,20 +571,22 @@ CONFIG_LEGACY_PTY_COUNT=256
438CONFIG_EXT2_FS=y 571CONFIG_EXT2_FS=y
439# CONFIG_EXT2_FS_XATTR is not set 572# CONFIG_EXT2_FS_XATTR is not set
440# CONFIG_EXT3_FS is not set 573# CONFIG_EXT3_FS is not set
441# CONFIG_JBD is not set 574# CONFIG_EXT4DEV_FS is not set
442# CONFIG_REISERFS_FS is not set 575# CONFIG_REISERFS_FS is not set
443# CONFIG_JFS_FS is not set 576# CONFIG_JFS_FS is not set
444 577# CONFIG_FS_POSIX_ACL is not set
445#
446# XFS support
447#
448# CONFIG_XFS_FS is not set 578# CONFIG_XFS_FS is not set
579# CONFIG_GFS2_FS is not set
580# CONFIG_OCFS2_FS is not set
449# CONFIG_MINIX_FS is not set 581# CONFIG_MINIX_FS is not set
450# CONFIG_ROMFS_FS is not set 582# CONFIG_ROMFS_FS is not set
583CONFIG_INOTIFY=y
584CONFIG_INOTIFY_USER=y
451# CONFIG_QUOTA is not set 585# CONFIG_QUOTA is not set
452CONFIG_DNOTIFY=y 586CONFIG_DNOTIFY=y
453# CONFIG_AUTOFS_FS is not set 587# CONFIG_AUTOFS_FS is not set
454# CONFIG_AUTOFS4_FS is not set 588# CONFIG_AUTOFS4_FS is not set
589# CONFIG_FUSE_FS is not set
455 590
456# 591#
457# CD-ROM/DVD Filesystems 592# CD-ROM/DVD Filesystems
@@ -470,13 +605,12 @@ CONFIG_DNOTIFY=y
470# Pseudo filesystems 605# Pseudo filesystems
471# 606#
472CONFIG_PROC_FS=y 607CONFIG_PROC_FS=y
608CONFIG_PROC_SYSCTL=y
473CONFIG_SYSFS=y 609CONFIG_SYSFS=y
474# CONFIG_DEVFS_FS is not set
475CONFIG_DEVPTS_FS_XATTR=y
476CONFIG_DEVPTS_FS_SECURITY=y
477# CONFIG_TMPFS is not set 610# CONFIG_TMPFS is not set
478# CONFIG_HUGETLB_PAGE is not set 611# CONFIG_HUGETLB_PAGE is not set
479CONFIG_RAMFS=y 612CONFIG_RAMFS=y
613# CONFIG_CONFIGFS_FS is not set
480 614
481# 615#
482# Miscellaneous filesystems 616# Miscellaneous filesystems
@@ -500,12 +634,14 @@ CONFIG_RAMFS=y
500# 634#
501CONFIG_NFS_FS=y 635CONFIG_NFS_FS=y
502CONFIG_NFS_V3=y 636CONFIG_NFS_V3=y
637# CONFIG_NFS_V3_ACL is not set
503# CONFIG_NFS_V4 is not set 638# CONFIG_NFS_V4 is not set
504# CONFIG_NFS_DIRECTIO is not set 639# CONFIG_NFS_DIRECTIO is not set
505# CONFIG_NFSD is not set 640# CONFIG_NFSD is not set
506CONFIG_ROOT_NFS=y 641CONFIG_ROOT_NFS=y
507CONFIG_LOCKD=y 642CONFIG_LOCKD=y
508CONFIG_LOCKD_V4=y 643CONFIG_LOCKD_V4=y
644CONFIG_NFS_COMMON=y
509CONFIG_SUNRPC=y 645CONFIG_SUNRPC=y
510# CONFIG_RPCSEC_GSS_KRB5 is not set 646# CONFIG_RPCSEC_GSS_KRB5 is not set
511# CONFIG_RPCSEC_GSS_SPKM3 is not set 647# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -514,6 +650,7 @@ CONFIG_SUNRPC=y
514# CONFIG_NCP_FS is not set 650# CONFIG_NCP_FS is not set
515# CONFIG_CODA_FS is not set 651# CONFIG_CODA_FS is not set
516# CONFIG_AFS_FS is not set 652# CONFIG_AFS_FS is not set
653# CONFIG_9P_FS is not set
517 654
518# 655#
519# Partition Types 656# Partition Types
@@ -574,10 +711,16 @@ CONFIG_NLS_DEFAULT="iso8859-1"
574# Kernel hacking 711# Kernel hacking
575# 712#
576# CONFIG_PRINTK_TIME is not set 713# CONFIG_PRINTK_TIME is not set
714CONFIG_ENABLE_MUST_CHECK=y
715# CONFIG_MAGIC_SYSRQ is not set
716# CONFIG_UNUSED_SYMBOLS is not set
577# CONFIG_DEBUG_KERNEL is not set 717# CONFIG_DEBUG_KERNEL is not set
578CONFIG_LOG_BUF_SHIFT=14 718CONFIG_LOG_BUF_SHIFT=14
579# CONFIG_DEBUG_BUGVERBOSE is not set 719# CONFIG_DEBUG_BUGVERBOSE is not set
720# CONFIG_DEBUG_FS is not set
580# CONFIG_FRAME_POINTER is not set 721# CONFIG_FRAME_POINTER is not set
722# CONFIG_UNWIND_INFO is not set
723# CONFIG_HEADERS_CHECK is not set
581 724
582# 725#
583# Security options 726# Security options
@@ -591,12 +734,9 @@ CONFIG_LOG_BUF_SHIFT=14
591# CONFIG_CRYPTO is not set 734# CONFIG_CRYPTO is not set
592 735
593# 736#
594# Hardware crypto devices
595#
596
597#
598# Library routines 737# Library routines
599# 738#
600# CONFIG_CRC_CCITT is not set 739# CONFIG_CRC_CCITT is not set
740# CONFIG_CRC16 is not set
601CONFIG_CRC32=y 741CONFIG_CRC32=y
602# CONFIG_LIBCRC32C is not set 742# CONFIG_LIBCRC32C is not set
diff --git a/arch/m32r/opsput/defconfig.opsput b/arch/m32r/opsput/defconfig.opsput
index 66adec6a701a..461f95e72d17 100644
--- a/arch/m32r/opsput/defconfig.opsput
+++ b/arch/m32r/opsput/defconfig.opsput
@@ -1,19 +1,18 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.12-rc5 3# Linux kernel version: 2.6.19
4# Fri Jun 3 16:22:06 2005 4# Wed Dec 13 18:34:36 2006
5# 5#
6CONFIG_M32R=y 6CONFIG_M32R=y
7# CONFIG_UID16 is not set
8CONFIG_GENERIC_ISA_DMA=y 7CONFIG_GENERIC_ISA_DMA=y
9CONFIG_GENERIC_HARDIRQS=y 8CONFIG_GENERIC_HARDIRQS=y
10CONFIG_GENERIC_IRQ_PROBE=y 9CONFIG_GENERIC_IRQ_PROBE=y
10CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
11 11
12# 12#
13# Code maturity level options 13# Code maturity level options
14# 14#
15CONFIG_EXPERIMENTAL=y 15CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_BROKEN_ON_SMP=y 16CONFIG_BROKEN_ON_SMP=y
18CONFIG_INIT_ENV_ARG_LIMIT=32 17CONFIG_INIT_ENV_ARG_LIMIT=32
19 18
@@ -21,32 +20,39 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
21# General setup 20# General setup
22# 21#
23CONFIG_LOCALVERSION="" 22CONFIG_LOCALVERSION=""
23CONFIG_LOCALVERSION_AUTO=y
24CONFIG_SWAP=y 24CONFIG_SWAP=y
25CONFIG_SYSVIPC=y 25CONFIG_SYSVIPC=y
26# CONFIG_IPC_NS is not set
26# CONFIG_POSIX_MQUEUE is not set 27# CONFIG_POSIX_MQUEUE is not set
27CONFIG_BSD_PROCESS_ACCT=y 28CONFIG_BSD_PROCESS_ACCT=y
28# CONFIG_BSD_PROCESS_ACCT_V3 is not set 29# CONFIG_BSD_PROCESS_ACCT_V3 is not set
29CONFIG_SYSCTL=y 30# CONFIG_TASKSTATS is not set
31# CONFIG_UTS_NS is not set
30# CONFIG_AUDIT is not set 32# CONFIG_AUDIT is not set
31CONFIG_HOTPLUG=y
32CONFIG_KOBJECT_UEVENT=y
33CONFIG_IKCONFIG=y 33CONFIG_IKCONFIG=y
34# CONFIG_IKCONFIG_PROC is not set 34# CONFIG_IKCONFIG_PROC is not set
35CONFIG_SYSFS_DEPRECATED=y
36# CONFIG_RELAY is not set
37CONFIG_INITRAMFS_SOURCE=""
38# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
39CONFIG_SYSCTL=y
35CONFIG_EMBEDDED=y 40CONFIG_EMBEDDED=y
41CONFIG_SYSCTL_SYSCALL=y
36# CONFIG_KALLSYMS is not set 42# CONFIG_KALLSYMS is not set
43CONFIG_HOTPLUG=y
37CONFIG_PRINTK=y 44CONFIG_PRINTK=y
38CONFIG_BUG=y 45CONFIG_BUG=y
46CONFIG_ELF_CORE=y
39CONFIG_BASE_FULL=y 47CONFIG_BASE_FULL=y
40# CONFIG_FUTEX is not set 48# CONFIG_FUTEX is not set
41# CONFIG_EPOLL is not set 49# CONFIG_EPOLL is not set
42# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
43CONFIG_SHMEM=y 50CONFIG_SHMEM=y
44CONFIG_CC_ALIGN_FUNCTIONS=0 51CONFIG_SLAB=y
45CONFIG_CC_ALIGN_LABELS=0 52CONFIG_VM_EVENT_COUNTERS=y
46CONFIG_CC_ALIGN_LOOPS=0
47CONFIG_CC_ALIGN_JUMPS=0
48# CONFIG_TINY_SHMEM is not set 53# CONFIG_TINY_SHMEM is not set
49CONFIG_BASE_SMALL=0 54CONFIG_BASE_SMALL=0
55# CONFIG_SLOB is not set
50 56
51# 57#
52# Loadable module support 58# Loadable module support
@@ -54,12 +60,30 @@ CONFIG_BASE_SMALL=0
54CONFIG_MODULES=y 60CONFIG_MODULES=y
55CONFIG_MODULE_UNLOAD=y 61CONFIG_MODULE_UNLOAD=y
56# CONFIG_MODULE_FORCE_UNLOAD is not set 62# CONFIG_MODULE_FORCE_UNLOAD is not set
57CONFIG_OBSOLETE_MODPARM=y
58# CONFIG_MODVERSIONS is not set 63# CONFIG_MODVERSIONS is not set
59# CONFIG_MODULE_SRCVERSION_ALL is not set 64# CONFIG_MODULE_SRCVERSION_ALL is not set
60CONFIG_KMOD=y 65CONFIG_KMOD=y
61 66
62# 67#
68# Block layer
69#
70CONFIG_BLOCK=y
71# CONFIG_BLK_DEV_IO_TRACE is not set
72
73#
74# IO Schedulers
75#
76CONFIG_IOSCHED_NOOP=y
77# CONFIG_IOSCHED_AS is not set
78CONFIG_IOSCHED_DEADLINE=y
79CONFIG_IOSCHED_CFQ=y
80# CONFIG_DEFAULT_AS is not set
81# CONFIG_DEFAULT_DEADLINE is not set
82CONFIG_DEFAULT_CFQ=y
83# CONFIG_DEFAULT_NOOP is not set
84CONFIG_DEFAULT_IOSCHED="cfq"
85
86#
63# Processor type and features 87# Processor type and features
64# 88#
65# CONFIG_PLAT_MAPPI is not set 89# CONFIG_PLAT_MAPPI is not set
@@ -69,8 +93,10 @@ CONFIG_PLAT_OPSPUT=y
69# CONFIG_PLAT_OAKS32R is not set 93# CONFIG_PLAT_OAKS32R is not set
70# CONFIG_PLAT_MAPPI2 is not set 94# CONFIG_PLAT_MAPPI2 is not set
71# CONFIG_PLAT_MAPPI3 is not set 95# CONFIG_PLAT_MAPPI3 is not set
96# CONFIG_PLAT_M32104UT is not set
72# CONFIG_CHIP_M32700 is not set 97# CONFIG_CHIP_M32700 is not set
73# CONFIG_CHIP_M32102 is not set 98# CONFIG_CHIP_M32102 is not set
99# CONFIG_CHIP_M32104 is not set
74# CONFIG_CHIP_VDEC2 is not set 100# CONFIG_CHIP_VDEC2 is not set
75CONFIG_CHIP_OPSP=y 101CONFIG_CHIP_OPSP=y
76CONFIG_MMU=y 102CONFIG_MMU=y
@@ -84,17 +110,31 @@ CONFIG_TIMER_DIVIDE=128
84CONFIG_MEMORY_START=0x08000000 110CONFIG_MEMORY_START=0x08000000
85CONFIG_MEMORY_SIZE=0x01000000 111CONFIG_MEMORY_SIZE=0x01000000
86CONFIG_NOHIGHMEM=y 112CONFIG_NOHIGHMEM=y
87# CONFIG_DISCONTIGMEM is not set 113CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
114CONFIG_SELECT_MEMORY_MODEL=y
115# CONFIG_FLATMEM_MANUAL is not set
116CONFIG_DISCONTIGMEM_MANUAL=y
117# CONFIG_SPARSEMEM_MANUAL is not set
118CONFIG_DISCONTIGMEM=y
119CONFIG_FLAT_NODE_MEM_MAP=y
120CONFIG_NEED_MULTIPLE_NODES=y
121# CONFIG_SPARSEMEM_STATIC is not set
122CONFIG_SPLIT_PTLOCK_CPUS=4
123# CONFIG_RESOURCES_64BIT is not set
124CONFIG_IRAM_START=0x00f00000
125CONFIG_IRAM_SIZE=0x00010000
88CONFIG_RWSEM_GENERIC_SPINLOCK=y 126CONFIG_RWSEM_GENERIC_SPINLOCK=y
89# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 127# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
128CONFIG_GENERIC_FIND_NEXT_BIT=y
129CONFIG_GENERIC_HWEIGHT=y
90CONFIG_GENERIC_CALIBRATE_DELAY=y 130CONFIG_GENERIC_CALIBRATE_DELAY=y
91# CONFIG_PREEMPT is not set 131# CONFIG_PREEMPT is not set
92# CONFIG_SMP is not set 132# CONFIG_SMP is not set
133CONFIG_NODES_SHIFT=1
93 134
94# 135#
95# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 136# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
96# 137#
97# CONFIG_PCI is not set
98# CONFIG_ISA is not set 138# CONFIG_ISA is not set
99 139
100# 140#
@@ -103,13 +143,15 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
103CONFIG_PCCARD=y 143CONFIG_PCCARD=y
104# CONFIG_PCMCIA_DEBUG is not set 144# CONFIG_PCMCIA_DEBUG is not set
105CONFIG_PCMCIA=y 145CONFIG_PCMCIA=y
146CONFIG_PCMCIA_LOAD_CIS=y
147CONFIG_PCMCIA_IOCTL=y
106 148
107# 149#
108# PC-card bridges 150# PC-card bridges
109# 151#
110# CONFIG_TCIC is not set
111CONFIG_M32R_CFC=y 152CONFIG_M32R_CFC=y
112CONFIG_M32R_CFC_NUM=1 153CONFIG_M32R_CFC_NUM=1
154CONFIG_PCCARD_NONSTATIC=y
113 155
114# 156#
115# PCI Hotplug Support 157# PCI Hotplug Support
@@ -122,6 +164,94 @@ CONFIG_BINFMT_ELF=y
122# CONFIG_BINFMT_MISC is not set 164# CONFIG_BINFMT_MISC is not set
123 165
124# 166#
167# Networking
168#
169CONFIG_NET=y
170
171#
172# Networking options
173#
174# CONFIG_NETDEBUG is not set
175CONFIG_PACKET=y
176# CONFIG_PACKET_MMAP is not set
177CONFIG_UNIX=y
178CONFIG_XFRM=y
179# CONFIG_XFRM_USER is not set
180# CONFIG_XFRM_SUB_POLICY is not set
181# CONFIG_NET_KEY is not set
182CONFIG_INET=y
183# CONFIG_IP_MULTICAST is not set
184# CONFIG_IP_ADVANCED_ROUTER is not set
185CONFIG_IP_FIB_HASH=y
186CONFIG_IP_PNP=y
187CONFIG_IP_PNP_DHCP=y
188# CONFIG_IP_PNP_BOOTP is not set
189# CONFIG_IP_PNP_RARP is not set
190# CONFIG_NET_IPIP is not set
191# CONFIG_NET_IPGRE is not set
192# CONFIG_ARPD is not set
193# CONFIG_SYN_COOKIES is not set
194# CONFIG_INET_AH is not set
195# CONFIG_INET_ESP is not set
196# CONFIG_INET_IPCOMP is not set
197# CONFIG_INET_XFRM_TUNNEL is not set
198# CONFIG_INET_TUNNEL is not set
199CONFIG_INET_XFRM_MODE_TRANSPORT=y
200CONFIG_INET_XFRM_MODE_TUNNEL=y
201CONFIG_INET_XFRM_MODE_BEET=y
202CONFIG_INET_DIAG=y
203CONFIG_INET_TCP_DIAG=y
204# CONFIG_TCP_CONG_ADVANCED is not set
205CONFIG_TCP_CONG_CUBIC=y
206CONFIG_DEFAULT_TCP_CONG="cubic"
207# CONFIG_TCP_MD5SIG is not set
208# CONFIG_IPV6 is not set
209# CONFIG_INET6_XFRM_TUNNEL is not set
210# CONFIG_INET6_TUNNEL is not set
211# CONFIG_NETWORK_SECMARK is not set
212# CONFIG_NETFILTER is not set
213
214#
215# DCCP Configuration (EXPERIMENTAL)
216#
217# CONFIG_IP_DCCP is not set
218
219#
220# SCTP Configuration (EXPERIMENTAL)
221#
222# CONFIG_IP_SCTP is not set
223
224#
225# TIPC Configuration (EXPERIMENTAL)
226#
227# CONFIG_TIPC is not set
228# CONFIG_ATM is not set
229# CONFIG_BRIDGE is not set
230# CONFIG_VLAN_8021Q is not set
231# CONFIG_DECNET is not set
232# CONFIG_LLC2 is not set
233# CONFIG_IPX is not set
234# CONFIG_ATALK is not set
235# CONFIG_X25 is not set
236# CONFIG_LAPB is not set
237# CONFIG_ECONET is not set
238# CONFIG_WAN_ROUTER is not set
239
240#
241# QoS and/or fair queueing
242#
243# CONFIG_NET_SCHED is not set
244
245#
246# Network testing
247#
248# CONFIG_NET_PKTGEN is not set
249# CONFIG_HAMRADIO is not set
250# CONFIG_IRDA is not set
251# CONFIG_BT is not set
252# CONFIG_IEEE80211 is not set
253
254#
125# Device Drivers 255# Device Drivers
126# 256#
127 257
@@ -130,8 +260,14 @@ CONFIG_BINFMT_ELF=y
130# 260#
131CONFIG_STANDALONE=y 261CONFIG_STANDALONE=y
132CONFIG_PREVENT_FIRMWARE_BUILD=y 262CONFIG_PREVENT_FIRMWARE_BUILD=y
133# CONFIG_FW_LOADER is not set 263CONFIG_FW_LOADER=y
134# CONFIG_DEBUG_DRIVER is not set 264# CONFIG_DEBUG_DRIVER is not set
265# CONFIG_SYS_HYPERVISOR is not set
266
267#
268# Connector - unified userspace <-> kernelspace linker
269#
270# CONFIG_CONNECTOR is not set
135 271
136# 272#
137# Memory Technology Devices (MTD) 273# Memory Technology Devices (MTD)
@@ -150,7 +286,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
150# 286#
151# Block devices 287# Block devices
152# 288#
153# CONFIG_BLK_DEV_FD is not set
154# CONFIG_BLK_DEV_COW_COMMON is not set 289# CONFIG_BLK_DEV_COW_COMMON is not set
155CONFIG_BLK_DEV_LOOP=y 290CONFIG_BLK_DEV_LOOP=y
156# CONFIG_BLK_DEV_CRYPTOLOOP is not set 291# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -158,18 +293,15 @@ CONFIG_BLK_DEV_LOOP=y
158CONFIG_BLK_DEV_RAM=y 293CONFIG_BLK_DEV_RAM=y
159CONFIG_BLK_DEV_RAM_COUNT=16 294CONFIG_BLK_DEV_RAM_COUNT=16
160CONFIG_BLK_DEV_RAM_SIZE=4096 295CONFIG_BLK_DEV_RAM_SIZE=4096
296CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
161# CONFIG_BLK_DEV_INITRD is not set 297# CONFIG_BLK_DEV_INITRD is not set
162CONFIG_INITRAMFS_SOURCE=""
163# CONFIG_CDROM_PKTCDVD is not set 298# CONFIG_CDROM_PKTCDVD is not set
299# CONFIG_ATA_OVER_ETH is not set
164 300
165# 301#
166# IO Schedulers 302# Misc devices
167# 303#
168CONFIG_IOSCHED_NOOP=y 304# CONFIG_TIFM_CORE is not set
169# CONFIG_IOSCHED_AS is not set
170CONFIG_IOSCHED_DEADLINE=y
171CONFIG_IOSCHED_CFQ=y
172# CONFIG_ATA_OVER_ETH is not set
173 305
174# 306#
175# ATA/ATAPI/MFM/RLL support 307# ATA/ATAPI/MFM/RLL support
@@ -179,7 +311,9 @@ CONFIG_IOSCHED_CFQ=y
179# 311#
180# SCSI device support 312# SCSI device support
181# 313#
314# CONFIG_RAID_ATTRS is not set
182CONFIG_SCSI=m 315CONFIG_SCSI=m
316# CONFIG_SCSI_NETLINK is not set
183CONFIG_SCSI_PROC_FS=y 317CONFIG_SCSI_PROC_FS=y
184 318
185# 319#
@@ -191,6 +325,7 @@ CONFIG_BLK_DEV_SD=m
191CONFIG_BLK_DEV_SR=m 325CONFIG_BLK_DEV_SR=m
192# CONFIG_BLK_DEV_SR_VENDOR is not set 326# CONFIG_BLK_DEV_SR_VENDOR is not set
193CONFIG_CHR_DEV_SG=m 327CONFIG_CHR_DEV_SG=m
328# CONFIG_CHR_DEV_SCH is not set
194 329
195# 330#
196# Some SCSI devices (e.g. CD jukebox) support multiple LUNs 331# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
@@ -200,16 +335,18 @@ CONFIG_SCSI_MULTI_LUN=y
200# CONFIG_SCSI_LOGGING is not set 335# CONFIG_SCSI_LOGGING is not set
201 336
202# 337#
203# SCSI Transport Attributes 338# SCSI Transports
204# 339#
205# CONFIG_SCSI_SPI_ATTRS is not set 340# CONFIG_SCSI_SPI_ATTRS is not set
206# CONFIG_SCSI_FC_ATTRS is not set 341# CONFIG_SCSI_FC_ATTRS is not set
207# CONFIG_SCSI_ISCSI_ATTRS is not set 342# CONFIG_SCSI_ISCSI_ATTRS is not set
343# CONFIG_SCSI_SAS_ATTRS is not set
344# CONFIG_SCSI_SAS_LIBSAS is not set
208 345
209# 346#
210# SCSI low-level drivers 347# SCSI low-level drivers
211# 348#
212# CONFIG_SCSI_SATA is not set 349# CONFIG_ISCSI_TCP is not set
213# CONFIG_SCSI_DEBUG is not set 350# CONFIG_SCSI_DEBUG is not set
214 351
215# 352#
@@ -222,6 +359,10 @@ CONFIG_SCSI_MULTI_LUN=y
222# CONFIG_PCMCIA_SYM53C500 is not set 359# CONFIG_PCMCIA_SYM53C500 is not set
223 360
224# 361#
362# Serial ATA (prod) and Parallel ATA (experimental) drivers
363#
364
365#
225# Multi-device support (RAID and LVM) 366# Multi-device support (RAID and LVM)
226# 367#
227# CONFIG_MD is not set 368# CONFIG_MD is not set
@@ -229,6 +370,7 @@ CONFIG_SCSI_MULTI_LUN=y
229# 370#
230# Fusion MPT device support 371# Fusion MPT device support
231# 372#
373# CONFIG_FUSION is not set
232 374
233# 375#
234# IEEE 1394 (FireWire) support 376# IEEE 1394 (FireWire) support
@@ -239,69 +381,8 @@ CONFIG_SCSI_MULTI_LUN=y
239# 381#
240 382
241# 383#
242# Networking support 384# Network device support
243#
244CONFIG_NET=y
245
246#
247# Networking options
248#
249CONFIG_PACKET=y
250# CONFIG_PACKET_MMAP is not set
251CONFIG_UNIX=y
252# CONFIG_NET_KEY is not set
253CONFIG_INET=y
254# CONFIG_IP_MULTICAST is not set
255# CONFIG_IP_ADVANCED_ROUTER is not set
256CONFIG_IP_PNP=y
257CONFIG_IP_PNP_DHCP=y
258# CONFIG_IP_PNP_BOOTP is not set
259# CONFIG_IP_PNP_RARP is not set
260# CONFIG_NET_IPIP is not set
261# CONFIG_NET_IPGRE is not set
262# CONFIG_ARPD is not set
263# CONFIG_SYN_COOKIES is not set
264# CONFIG_INET_AH is not set
265# CONFIG_INET_ESP is not set
266# CONFIG_INET_IPCOMP is not set
267# CONFIG_INET_TUNNEL is not set
268CONFIG_IP_TCPDIAG=y
269# CONFIG_IP_TCPDIAG_IPV6 is not set
270# CONFIG_IPV6 is not set
271# CONFIG_NETFILTER is not set
272
273#
274# SCTP Configuration (EXPERIMENTAL)
275# 385#
276# CONFIG_IP_SCTP is not set
277# CONFIG_ATM is not set
278# CONFIG_BRIDGE is not set
279# CONFIG_VLAN_8021Q is not set
280# CONFIG_DECNET is not set
281# CONFIG_LLC2 is not set
282# CONFIG_IPX is not set
283# CONFIG_ATALK is not set
284# CONFIG_X25 is not set
285# CONFIG_LAPB is not set
286# CONFIG_NET_DIVERT is not set
287# CONFIG_ECONET is not set
288# CONFIG_WAN_ROUTER is not set
289
290#
291# QoS and/or fair queueing
292#
293# CONFIG_NET_SCHED is not set
294# CONFIG_NET_CLS_ROUTE is not set
295
296#
297# Network testing
298#
299# CONFIG_NET_PKTGEN is not set
300# CONFIG_NETPOLL is not set
301# CONFIG_NET_POLL_CONTROLLER is not set
302# CONFIG_HAMRADIO is not set
303# CONFIG_IRDA is not set
304# CONFIG_BT is not set
305CONFIG_NETDEVICES=y 386CONFIG_NETDEVICES=y
306# CONFIG_DUMMY is not set 387# CONFIG_DUMMY is not set
307# CONFIG_BONDING is not set 388# CONFIG_BONDING is not set
@@ -309,6 +390,11 @@ CONFIG_NETDEVICES=y
309# CONFIG_TUN is not set 390# CONFIG_TUN is not set
310 391
311# 392#
393# PHY device support
394#
395# CONFIG_PHYLIB is not set
396
397#
312# Ethernet (10 or 100Mbit) 398# Ethernet (10 or 100Mbit)
313# 399#
314CONFIG_NET_ETHERNET=y 400CONFIG_NET_ETHERNET=y
@@ -346,6 +432,8 @@ CONFIG_SMC91X=y
346# CONFIG_SLIP is not set 432# CONFIG_SLIP is not set
347# CONFIG_SHAPER is not set 433# CONFIG_SHAPER is not set
348# CONFIG_NETCONSOLE is not set 434# CONFIG_NETCONSOLE is not set
435# CONFIG_NETPOLL is not set
436# CONFIG_NET_POLL_CONTROLLER is not set
349 437
350# 438#
351# ISDN subsystem 439# ISDN subsystem
@@ -361,6 +449,7 @@ CONFIG_SMC91X=y
361# Input device support 449# Input device support
362# 450#
363CONFIG_INPUT=y 451CONFIG_INPUT=y
452# CONFIG_INPUT_FF_MEMLESS is not set
364 453
365# 454#
366# Userland interfaces 455# Userland interfaces
@@ -389,7 +478,6 @@ CONFIG_SERIO_SERPORT=y
389# CONFIG_SERIO_LIBPS2 is not set 478# CONFIG_SERIO_LIBPS2 is not set
390# CONFIG_SERIO_RAW is not set 479# CONFIG_SERIO_RAW is not set
391# CONFIG_GAMEPORT is not set 480# CONFIG_GAMEPORT is not set
392CONFIG_SOUND_GAMEPORT=y
393 481
394# 482#
395# Character devices 483# Character devices
@@ -423,8 +511,8 @@ CONFIG_LEGACY_PTY_COUNT=256
423# Watchdog Cards 511# Watchdog Cards
424# 512#
425# CONFIG_WATCHDOG is not set 513# CONFIG_WATCHDOG is not set
514CONFIG_HW_RANDOM=y
426# CONFIG_RTC is not set 515# CONFIG_RTC is not set
427# CONFIG_GEN_RTC is not set
428CONFIG_DS1302=y 516CONFIG_DS1302=y
429# CONFIG_DTLK is not set 517# CONFIG_DTLK is not set
430# CONFIG_R3964 is not set 518# CONFIG_R3964 is not set
@@ -432,17 +520,19 @@ CONFIG_DS1302=y
432# 520#
433# Ftape, the floppy tape device driver 521# Ftape, the floppy tape device driver
434# 522#
435# CONFIG_DRM is not set
436 523
437# 524#
438# PCMCIA character devices 525# PCMCIA character devices
439# 526#
440# CONFIG_SYNCLINK_CS is not set 527# CONFIG_SYNCLINK_CS is not set
528# CONFIG_CARDMAN_4000 is not set
529# CONFIG_CARDMAN_4040 is not set
441# CONFIG_RAW_DRIVER is not set 530# CONFIG_RAW_DRIVER is not set
442 531
443# 532#
444# TPM devices 533# TPM devices
445# 534#
535# CONFIG_TCG_TPM is not set
446 536
447# 537#
448# I2C support 538# I2C support
@@ -450,13 +540,25 @@ CONFIG_DS1302=y
450# CONFIG_I2C is not set 540# CONFIG_I2C is not set
451 541
452# 542#
543# SPI support
544#
545# CONFIG_SPI is not set
546# CONFIG_SPI_MASTER is not set
547
548#
453# Dallas's 1-wire bus 549# Dallas's 1-wire bus
454# 550#
455# CONFIG_W1 is not set 551# CONFIG_W1 is not set
456 552
457# 553#
458# Misc devices 554# Hardware Monitoring support
459# 555#
556CONFIG_HWMON=y
557# CONFIG_HWMON_VID is not set
558# CONFIG_SENSORS_ABITUGURU is not set
559# CONFIG_SENSORS_F71805F is not set
560# CONFIG_SENSORS_VT1211 is not set
561# CONFIG_HWMON_DEBUG_CHIP is not set
460 562
461# 563#
462# Multimedia devices 564# Multimedia devices
@@ -471,7 +573,9 @@ CONFIG_DS1302=y
471# 573#
472# Graphics support 574# Graphics support
473# 575#
576CONFIG_FIRMWARE_EDID=y
474# CONFIG_FB is not set 577# CONFIG_FB is not set
578# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
475 579
476# 580#
477# Sound 581# Sound
@@ -483,6 +587,11 @@ CONFIG_DS1302=y
483# 587#
484# CONFIG_USB_ARCH_HAS_HCD is not set 588# CONFIG_USB_ARCH_HAS_HCD is not set
485# CONFIG_USB_ARCH_HAS_OHCI is not set 589# CONFIG_USB_ARCH_HAS_OHCI is not set
590# CONFIG_USB_ARCH_HAS_EHCI is not set
591
592#
593# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
594#
486 595
487# 596#
488# USB Gadget Support 597# USB Gadget Support
@@ -495,38 +604,73 @@ CONFIG_DS1302=y
495# CONFIG_MMC is not set 604# CONFIG_MMC is not set
496 605
497# 606#
607# LED devices
608#
609# CONFIG_NEW_LEDS is not set
610
611#
612# LED drivers
613#
614
615#
616# LED Triggers
617#
618
619#
498# InfiniBand support 620# InfiniBand support
499# 621#
500# CONFIG_INFINIBAND is not set 622
623#
624# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
625#
626
627#
628# Real Time Clock
629#
630# CONFIG_RTC_CLASS is not set
631
632#
633# DMA Engine support
634#
635# CONFIG_DMA_ENGINE is not set
636
637#
638# DMA Clients
639#
640
641#
642# DMA Devices
643#
501 644
502# 645#
503# File systems 646# File systems
504# 647#
505CONFIG_EXT2_FS=y 648CONFIG_EXT2_FS=y
506# CONFIG_EXT2_FS_XATTR is not set 649# CONFIG_EXT2_FS_XATTR is not set
507CONFIG_EXT3_FS=m 650# CONFIG_EXT2_FS_XIP is not set
651CONFIG_EXT3_FS=y
508CONFIG_EXT3_FS_XATTR=y 652CONFIG_EXT3_FS_XATTR=y
509# CONFIG_EXT3_FS_POSIX_ACL is not set 653# CONFIG_EXT3_FS_POSIX_ACL is not set
510# CONFIG_EXT3_FS_SECURITY is not set 654# CONFIG_EXT3_FS_SECURITY is not set
511CONFIG_JBD=m 655# CONFIG_EXT4DEV_FS is not set
656CONFIG_JBD=y
512CONFIG_JBD_DEBUG=y 657CONFIG_JBD_DEBUG=y
513CONFIG_FS_MBCACHE=y 658CONFIG_FS_MBCACHE=y
514CONFIG_REISERFS_FS=m 659# CONFIG_REISERFS_FS is not set
515# CONFIG_REISERFS_CHECK is not set
516# CONFIG_REISERFS_PROC_INFO is not set
517# CONFIG_REISERFS_FS_XATTR is not set
518# CONFIG_JFS_FS is not set 660# CONFIG_JFS_FS is not set
519 661# CONFIG_FS_POSIX_ACL is not set
520#
521# XFS support
522#
523# CONFIG_XFS_FS is not set 662# CONFIG_XFS_FS is not set
663# CONFIG_GFS2_FS is not set
664# CONFIG_OCFS2_FS is not set
524# CONFIG_MINIX_FS is not set 665# CONFIG_MINIX_FS is not set
525# CONFIG_ROMFS_FS is not set 666# CONFIG_ROMFS_FS is not set
667CONFIG_INOTIFY=y
668CONFIG_INOTIFY_USER=y
526# CONFIG_QUOTA is not set 669# CONFIG_QUOTA is not set
527CONFIG_DNOTIFY=y 670CONFIG_DNOTIFY=y
528# CONFIG_AUTOFS_FS is not set 671# CONFIG_AUTOFS_FS is not set
529# CONFIG_AUTOFS4_FS is not set 672# CONFIG_AUTOFS4_FS is not set
673# CONFIG_FUSE_FS is not set
530 674
531# 675#
532# CD-ROM/DVD Filesystems 676# CD-ROM/DVD Filesystems
@@ -552,15 +696,13 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
552# 696#
553CONFIG_PROC_FS=y 697CONFIG_PROC_FS=y
554CONFIG_PROC_KCORE=y 698CONFIG_PROC_KCORE=y
699CONFIG_PROC_SYSCTL=y
555CONFIG_SYSFS=y 700CONFIG_SYSFS=y
556CONFIG_DEVFS_FS=y
557CONFIG_DEVFS_MOUNT=y
558# CONFIG_DEVFS_DEBUG is not set
559# CONFIG_DEVPTS_FS_XATTR is not set
560CONFIG_TMPFS=y 701CONFIG_TMPFS=y
561# CONFIG_TMPFS_XATTR is not set 702# CONFIG_TMPFS_POSIX_ACL is not set
562# CONFIG_HUGETLB_PAGE is not set 703# CONFIG_HUGETLB_PAGE is not set
563CONFIG_RAMFS=y 704CONFIG_RAMFS=y
705# CONFIG_CONFIGFS_FS is not set
564 706
565# 707#
566# Miscellaneous filesystems 708# Miscellaneous filesystems
@@ -584,12 +726,14 @@ CONFIG_RAMFS=y
584# 726#
585CONFIG_NFS_FS=y 727CONFIG_NFS_FS=y
586CONFIG_NFS_V3=y 728CONFIG_NFS_V3=y
729# CONFIG_NFS_V3_ACL is not set
587# CONFIG_NFS_V4 is not set 730# CONFIG_NFS_V4 is not set
588# CONFIG_NFS_DIRECTIO is not set 731# CONFIG_NFS_DIRECTIO is not set
589# CONFIG_NFSD is not set 732# CONFIG_NFSD is not set
590CONFIG_ROOT_NFS=y 733CONFIG_ROOT_NFS=y
591CONFIG_LOCKD=y 734CONFIG_LOCKD=y
592CONFIG_LOCKD_V4=y 735CONFIG_LOCKD_V4=y
736CONFIG_NFS_COMMON=y
593CONFIG_SUNRPC=y 737CONFIG_SUNRPC=y
594# CONFIG_RPCSEC_GSS_KRB5 is not set 738# CONFIG_RPCSEC_GSS_KRB5 is not set
595# CONFIG_RPCSEC_GSS_SPKM3 is not set 739# CONFIG_RPCSEC_GSS_SPKM3 is not set
@@ -598,6 +742,7 @@ CONFIG_SUNRPC=y
598# CONFIG_NCP_FS is not set 742# CONFIG_NCP_FS is not set
599# CONFIG_CODA_FS is not set 743# CONFIG_CODA_FS is not set
600# CONFIG_AFS_FS is not set 744# CONFIG_AFS_FS is not set
745# CONFIG_9P_FS is not set
601 746
602# 747#
603# Partition Types 748# Partition Types
@@ -658,21 +803,32 @@ CONFIG_NLS_DEFAULT="iso8859-1"
658# Kernel hacking 803# Kernel hacking
659# 804#
660# CONFIG_PRINTK_TIME is not set 805# CONFIG_PRINTK_TIME is not set
661CONFIG_DEBUG_KERNEL=y 806CONFIG_ENABLE_MUST_CHECK=y
662# CONFIG_MAGIC_SYSRQ is not set 807# CONFIG_MAGIC_SYSRQ is not set
808# CONFIG_UNUSED_SYMBOLS is not set
809CONFIG_DEBUG_KERNEL=y
663CONFIG_LOG_BUF_SHIFT=14 810CONFIG_LOG_BUF_SHIFT=14
811CONFIG_DETECT_SOFTLOCKUP=y
664# CONFIG_SCHEDSTATS is not set 812# CONFIG_SCHEDSTATS is not set
665# CONFIG_DEBUG_SLAB is not set 813# CONFIG_DEBUG_SLAB is not set
666# CONFIG_DEBUG_SPINLOCK is not set 814# CONFIG_DEBUG_SPINLOCK is not set
815# CONFIG_DEBUG_MUTEXES is not set
816# CONFIG_DEBUG_RWSEMS is not set
667# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 817# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
818# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
668# CONFIG_DEBUG_KOBJECT is not set 819# CONFIG_DEBUG_KOBJECT is not set
669# CONFIG_DEBUG_BUGVERBOSE is not set 820# CONFIG_DEBUG_BUGVERBOSE is not set
670CONFIG_DEBUG_INFO=y 821CONFIG_DEBUG_INFO=y
671# CONFIG_DEBUG_FS is not set 822# CONFIG_DEBUG_FS is not set
823# CONFIG_DEBUG_VM is not set
824# CONFIG_DEBUG_LIST is not set
672# CONFIG_FRAME_POINTER is not set 825# CONFIG_FRAME_POINTER is not set
826# CONFIG_UNWIND_INFO is not set
827CONFIG_FORCED_INLINING=y
828# CONFIG_HEADERS_CHECK is not set
829# CONFIG_RCU_TORTURE_TEST is not set
673# CONFIG_DEBUG_STACKOVERFLOW is not set 830# CONFIG_DEBUG_STACKOVERFLOW is not set
674# CONFIG_DEBUG_STACK_USAGE is not set 831# CONFIG_DEBUG_STACK_USAGE is not set
675# CONFIG_DEBUG_PAGEALLOC is not set
676 832
677# 833#
678# Security options 834# Security options
@@ -686,12 +842,9 @@ CONFIG_DEBUG_INFO=y
686# CONFIG_CRYPTO is not set 842# CONFIG_CRYPTO is not set
687 843
688# 844#
689# Hardware crypto devices
690#
691
692#
693# Library routines 845# Library routines
694# 846#
695# CONFIG_CRC_CCITT is not set 847# CONFIG_CRC_CCITT is not set
848# CONFIG_CRC16 is not set
696CONFIG_CRC32=y 849CONFIG_CRC32=y
697# CONFIG_LIBCRC32C is not set 850# CONFIG_LIBCRC32C is not set
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
index 70a577c89c7c..a8e1e604dfa8 100644
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -42,6 +42,9 @@ config ARCH_MAY_HAVE_PC_FDC
42 depends on Q40 || (BROKEN && SUN3X) 42 depends on Q40 || (BROKEN && SUN3X)
43 default y 43 default y
44 44
45config NO_IOPORT
46 def_bool y
47
45mainmenu "Linux/68k Kernel Configuration" 48mainmenu "Linux/68k Kernel Configuration"
46 49
47source "init/Kconfig" 50source "init/Kconfig"
@@ -439,6 +442,10 @@ config GENERIC_ISA_DMA
439 depends on Q40 || AMIGA_PCMCIA || GG2 442 depends on Q40 || AMIGA_PCMCIA || GG2
440 default y 443 default y
441 444
445config ZONE_DMA
446 bool
447 default y
448
442source "drivers/pci/Kconfig" 449source "drivers/pci/Kconfig"
443 450
444source "drivers/zorro/Kconfig" 451source "drivers/zorro/Kconfig"
diff --git a/arch/m68k/bvme6000/rtc.c b/arch/m68k/bvme6000/rtc.c
index 15c16b62dff5..a812d03879f8 100644
--- a/arch/m68k/bvme6000/rtc.c
+++ b/arch/m68k/bvme6000/rtc.c
@@ -159,7 +159,7 @@ static int rtc_release(struct inode *inode, struct file *file)
159 * The various file operations we support. 159 * The various file operations we support.
160 */ 160 */
161 161
162static struct file_operations rtc_fops = { 162static const struct file_operations rtc_fops = {
163 .ioctl = rtc_ioctl, 163 .ioctl = rtc_ioctl,
164 .open = rtc_open, 164 .open = rtc_open,
165 .release = rtc_release, 165 .release = rtc_release,
diff --git a/arch/m68k/kernel/Makefile b/arch/m68k/kernel/Makefile
index 1c9ecaa473d5..0b68ab8d63d1 100644
--- a/arch/m68k/kernel/Makefile
+++ b/arch/m68k/kernel/Makefile
@@ -10,7 +10,9 @@ endif
10extra-y += vmlinux.lds 10extra-y += vmlinux.lds
11 11
12obj-y := entry.o process.o traps.o ints.o signal.o ptrace.o \ 12obj-y := entry.o process.o traps.o ints.o signal.o ptrace.o \
13 sys_m68k.o time.o semaphore.o setup.o m68k_ksyms.o 13 sys_m68k.o time.o semaphore.o setup.o m68k_ksyms.o devres.o
14
15devres-y = ../../../kernel/irq/devres.o
14 16
15obj-$(CONFIG_PCI) += bios32.o 17obj-$(CONFIG_PCI) += bios32.o
16obj-$(CONFIG_MODULES) += module.o 18obj-$(CONFIG_MODULES) += module.o
diff --git a/arch/m68k/kernel/ptrace.c b/arch/m68k/kernel/ptrace.c
index ef89060ea328..7fd2720c3841 100644
--- a/arch/m68k/kernel/ptrace.c
+++ b/arch/m68k/kernel/ptrace.c
@@ -76,7 +76,7 @@ static inline long get_reg(struct task_struct *task, int regno)
76 76
77 if (regno == PT_USP) 77 if (regno == PT_USP)
78 addr = &task->thread.usp; 78 addr = &task->thread.usp;
79 else if (regno < sizeof(regoff)/sizeof(regoff[0])) 79 else if (regno < ARRAY_SIZE(regoff))
80 addr = (unsigned long *)(task->thread.esp0 + regoff[regno]); 80 addr = (unsigned long *)(task->thread.esp0 + regoff[regno]);
81 else 81 else
82 return 0; 82 return 0;
@@ -93,7 +93,7 @@ static inline int put_reg(struct task_struct *task, int regno,
93 93
94 if (regno == PT_USP) 94 if (regno == PT_USP)
95 addr = &task->thread.usp; 95 addr = &task->thread.usp;
96 else if (regno < sizeof(regoff)/sizeof(regoff[0])) 96 else if (regno < ARRAY_SIZE(regoff))
97 addr = (unsigned long *)(task->thread.esp0 + regoff[regno]); 97 addr = (unsigned long *)(task->thread.esp0 + regoff[regno]);
98 else 98 else
99 return -1; 99 return -1;
diff --git a/arch/m68k/kernel/setup.c b/arch/m68k/kernel/setup.c
index 9af3ee0e555d..42b8fd09ea8f 100644
--- a/arch/m68k/kernel/setup.c
+++ b/arch/m68k/kernel/setup.c
@@ -256,7 +256,7 @@ void __init setup_arch(char **cmdline_p)
256 init_mm.brk = (unsigned long) &_end; 256 init_mm.brk = (unsigned long) &_end;
257 257
258 *cmdline_p = m68k_command_line; 258 *cmdline_p = m68k_command_line;
259 memcpy(saved_command_line, *cmdline_p, CL_SIZE); 259 memcpy(boot_command_line, *cmdline_p, CL_SIZE);
260 260
261 /* Parse the command line for arch-specific options. 261 /* Parse the command line for arch-specific options.
262 * For the m68k, this is currently only "debug=xxx" to enable printing 262 * For the m68k, this is currently only "debug=xxx" to enable printing
diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c
index 2a599c3ed787..4c065f9ceffc 100644
--- a/arch/m68k/kernel/time.c
+++ b/arch/m68k/kernel/time.c
@@ -159,12 +159,3 @@ int do_settimeofday(struct timespec *tv)
159} 159}
160 160
161EXPORT_SYMBOL(do_settimeofday); 161EXPORT_SYMBOL(do_settimeofday);
162
163/*
164 * Scheduler clock - returns current time in ns units.
165 */
166unsigned long long sched_clock(void)
167{
168 return (unsigned long long)jiffies*(1000000000/HZ);
169}
170
diff --git a/arch/m68k/kernel/traps.c b/arch/m68k/kernel/traps.c
index 759fa244e6cd..a27a4fa33296 100644
--- a/arch/m68k/kernel/traps.c
+++ b/arch/m68k/kernel/traps.c
@@ -1011,7 +1011,7 @@ EXPORT_SYMBOL(dump_stack);
1011void bad_super_trap (struct frame *fp) 1011void bad_super_trap (struct frame *fp)
1012{ 1012{
1013 console_verbose(); 1013 console_verbose();
1014 if (fp->ptregs.vector < 4*sizeof(vec_names)/sizeof(vec_names[0])) 1014 if (fp->ptregs.vector < 4 * ARRAY_SIZE(vec_names))
1015 printk ("*** %s *** FORMAT=%X\n", 1015 printk ("*** %s *** FORMAT=%X\n",
1016 vec_names[(fp->ptregs.vector) >> 2], 1016 vec_names[(fp->ptregs.vector) >> 2],
1017 fp->ptregs.format); 1017 fp->ptregs.format);
diff --git a/arch/m68k/kernel/vmlinux-std.lds b/arch/m68k/kernel/vmlinux-std.lds
index d2794452b195..437b4f8d86c5 100644
--- a/arch/m68k/kernel/vmlinux-std.lds
+++ b/arch/m68k/kernel/vmlinux-std.lds
@@ -61,10 +61,12 @@ SECTIONS
61 .con_initcall.init : { *(.con_initcall.init) } 61 .con_initcall.init : { *(.con_initcall.init) }
62 __con_initcall_end = .; 62 __con_initcall_end = .;
63 SECURITY_INIT 63 SECURITY_INIT
64#ifdef CONFIG_BLK_DEV_INITRD
64 . = ALIGN(8192); 65 . = ALIGN(8192);
65 __initramfs_start = .; 66 __initramfs_start = .;
66 .init.ramfs : { *(.init.ramfs) } 67 .init.ramfs : { *(.init.ramfs) }
67 __initramfs_end = .; 68 __initramfs_end = .;
69#endif
68 . = ALIGN(8192); 70 . = ALIGN(8192);
69 __init_end = .; 71 __init_end = .;
70 72
diff --git a/arch/m68k/kernel/vmlinux-sun3.lds b/arch/m68k/kernel/vmlinux-sun3.lds
index 8c7eccbfc982..2868e206fc76 100644
--- a/arch/m68k/kernel/vmlinux-sun3.lds
+++ b/arch/m68k/kernel/vmlinux-sun3.lds
@@ -55,10 +55,12 @@ __init_begin = .;
55 .con_initcall.init : { *(.con_initcall.init) } 55 .con_initcall.init : { *(.con_initcall.init) }
56 __con_initcall_end = .; 56 __con_initcall_end = .;
57 SECURITY_INIT 57 SECURITY_INIT
58#ifdef CONFIG_BLK_DEV_INITRD
58 . = ALIGN(8192); 59 . = ALIGN(8192);
59 __initramfs_start = .; 60 __initramfs_start = .;
60 .init.ramfs : { *(.init.ramfs) } 61 .init.ramfs : { *(.init.ramfs) }
61 __initramfs_end = .; 62 __initramfs_end = .;
63#endif
62 . = ALIGN(8192); 64 . = ALIGN(8192);
63 __init_end = .; 65 __init_end = .;
64 .data.init.task : { *(.data.init_task) } 66 .data.init.task : { *(.data.init_task) }
diff --git a/arch/m68k/mvme16x/rtc.c b/arch/m68k/mvme16x/rtc.c
index b0e4c084df8a..272d47eac58d 100644
--- a/arch/m68k/mvme16x/rtc.c
+++ b/arch/m68k/mvme16x/rtc.c
@@ -147,7 +147,7 @@ static int rtc_release(struct inode *inode, struct file *file)
147 * The various file operations we support. 147 * The various file operations we support.
148 */ 148 */
149 149
150static struct file_operations rtc_fops = { 150static const struct file_operations rtc_fops = {
151 .ioctl = rtc_ioctl, 151 .ioctl = rtc_ioctl,
152 .open = rtc_open, 152 .open = rtc_open,
153 .release = rtc_release, 153 .release = rtc_release,
diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig
index 25993c2a8fbb..823f73736bb5 100644
--- a/arch/m68knommu/Kconfig
+++ b/arch/m68knommu/Kconfig
@@ -17,6 +17,10 @@ config FPU
17 bool 17 bool
18 default n 18 default n
19 19
20config ZONE_DMA
21 bool
22 default y
23
20config RWSEM_GENERIC_SPINLOCK 24config RWSEM_GENERIC_SPINLOCK
21 bool 25 bool
22 default y 26 default y
@@ -49,6 +53,9 @@ config TIME_LOW_RES
49 bool 53 bool
50 default y 54 default y
51 55
56config NO_IOPORT
57 def_bool y
58
52source "init/Kconfig" 59source "init/Kconfig"
53 60
54menu "Processor type and features" 61menu "Processor type and features"
diff --git a/arch/m68knommu/kernel/ptrace.c b/arch/m68knommu/kernel/ptrace.c
index 9130119537b9..72d349623575 100644
--- a/arch/m68knommu/kernel/ptrace.c
+++ b/arch/m68knommu/kernel/ptrace.c
@@ -62,7 +62,7 @@ static inline long get_reg(struct task_struct *task, int regno)
62 62
63 if (regno == PT_USP) 63 if (regno == PT_USP)
64 addr = &task->thread.usp; 64 addr = &task->thread.usp;
65 else if (regno < sizeof(regoff)/sizeof(regoff[0])) 65 else if (regno < ARRAY_SIZE(regoff))
66 addr = (unsigned long *)(task->thread.esp0 + regoff[regno]); 66 addr = (unsigned long *)(task->thread.esp0 + regoff[regno]);
67 else 67 else
68 return 0; 68 return 0;
@@ -79,7 +79,7 @@ static inline int put_reg(struct task_struct *task, int regno,
79 79
80 if (regno == PT_USP) 80 if (regno == PT_USP)
81 addr = &task->thread.usp; 81 addr = &task->thread.usp;
82 else if (regno < sizeof(regoff)/sizeof(regoff[0])) 82 else if (regno < ARRAY_SIZE(regoff))
83 addr = (unsigned long *) (task->thread.esp0 + regoff[regno]); 83 addr = (unsigned long *) (task->thread.esp0 + regoff[regno]);
84 else 84 else
85 return -1; 85 return -1;
diff --git a/arch/m68knommu/kernel/setup.c b/arch/m68knommu/kernel/setup.c
index 9cf2e4d1fc77..d5c25d27b64d 100644
--- a/arch/m68knommu/kernel/setup.c
+++ b/arch/m68knommu/kernel/setup.c
@@ -44,7 +44,7 @@ unsigned long memory_end;
44EXPORT_SYMBOL(memory_start); 44EXPORT_SYMBOL(memory_start);
45EXPORT_SYMBOL(memory_end); 45EXPORT_SYMBOL(memory_end);
46 46
47char command_line[COMMAND_LINE_SIZE]; 47char __initdata command_line[COMMAND_LINE_SIZE];
48 48
49/* setup some dummy routines */ 49/* setup some dummy routines */
50static void dummy_waitbut(void) 50static void dummy_waitbut(void)
@@ -231,8 +231,8 @@ void setup_arch(char **cmdline_p)
231 231
232 /* Keep a copy of command line */ 232 /* Keep a copy of command line */
233 *cmdline_p = &command_line[0]; 233 *cmdline_p = &command_line[0];
234 memcpy(saved_command_line, command_line, COMMAND_LINE_SIZE); 234 memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
235 saved_command_line[COMMAND_LINE_SIZE-1] = 0; 235 boot_command_line[COMMAND_LINE_SIZE-1] = 0;
236 236
237#ifdef DEBUG 237#ifdef DEBUG
238 if (strlen(*cmdline_p)) 238 if (strlen(*cmdline_p))
diff --git a/arch/m68knommu/kernel/time.c b/arch/m68knommu/kernel/time.c
index 9226264abf1a..467053da2d08 100644
--- a/arch/m68knommu/kernel/time.c
+++ b/arch/m68knommu/kernel/time.c
@@ -23,6 +23,7 @@
23 23
24#include <asm/machdep.h> 24#include <asm/machdep.h>
25#include <asm/io.h> 25#include <asm/io.h>
26#include <asm/irq_regs.h>
26 27
27#define TICK_SIZE (tick_nsec / 1000) 28#define TICK_SIZE (tick_nsec / 1000)
28 29
@@ -38,7 +39,7 @@ static inline int set_rtc_mmss(unsigned long nowtime)
38 * timer_interrupt() needs to keep up the real-time clock, 39 * timer_interrupt() needs to keep up the real-time clock,
39 * as well as call the "do_timer()" routine every clocktick 40 * as well as call the "do_timer()" routine every clocktick
40 */ 41 */
41static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs * regs) 42static irqreturn_t timer_interrupt(int irq, void *dummy)
42{ 43{
43 /* last time the cmos clock got updated */ 44 /* last time the cmos clock got updated */
44 static long last_rtc_update=0; 45 static long last_rtc_update=0;
@@ -51,7 +52,7 @@ static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs * regs)
51 52
52 do_timer(1); 53 do_timer(1);
53#ifndef CONFIG_SMP 54#ifndef CONFIG_SMP
54 update_process_times(user_mode(regs)); 55 update_process_times(user_mode(get_irq_regs()));
55#endif 56#endif
56 if (current->pid) 57 if (current->pid)
57 profile_tick(CPU_PROFILING); 58 profile_tick(CPU_PROFILING);
@@ -173,13 +174,4 @@ int do_settimeofday(struct timespec *tv)
173 clock_was_set(); 174 clock_was_set();
174 return 0; 175 return 0;
175} 176}
176
177/*
178 * Scheduler clock - returns current time in nanosec units.
179 */
180unsigned long long sched_clock(void)
181{
182 return (unsigned long long)jiffies * (1000000000 / HZ);
183}
184
185EXPORT_SYMBOL(do_settimeofday); 177EXPORT_SYMBOL(do_settimeofday);
diff --git a/arch/m68knommu/kernel/traps.c b/arch/m68knommu/kernel/traps.c
index 9129b3a5258b..bed5f47bf568 100644
--- a/arch/m68knommu/kernel/traps.c
+++ b/arch/m68knommu/kernel/traps.c
@@ -158,7 +158,7 @@ void show_stack(struct task_struct *task, unsigned long *stack)
158void bad_super_trap(struct frame *fp) 158void bad_super_trap(struct frame *fp)
159{ 159{
160 console_verbose(); 160 console_verbose();
161 if (fp->ptregs.vector < 4*sizeof(vec_names)/sizeof(vec_names[0])) 161 if (fp->ptregs.vector < 4 * ARRAY_SIZE(vec_names))
162 printk (KERN_WARNING "*** %s *** FORMAT=%X\n", 162 printk (KERN_WARNING "*** %s *** FORMAT=%X\n",
163 vec_names[(fp->ptregs.vector) >> 2], 163 vec_names[(fp->ptregs.vector) >> 2],
164 fp->ptregs.format); 164 fp->ptregs.format);
diff --git a/arch/m68knommu/kernel/vmlinux.lds.S b/arch/m68knommu/kernel/vmlinux.lds.S
index 2b2a10da64a4..c86a1bf589d4 100644
--- a/arch/m68knommu/kernel/vmlinux.lds.S
+++ b/arch/m68knommu/kernel/vmlinux.lds.S
@@ -87,6 +87,16 @@ SECTIONS {
87 *(__ksymtab_gpl) 87 *(__ksymtab_gpl)
88 __stop___ksymtab_gpl = .; 88 __stop___ksymtab_gpl = .;
89 89
90 /* Kernel symbol table: Normal unused symbols */
91 __start___ksymtab_unused = .;
92 *(__ksymtab_unused)
93 __stop___ksymtab_unused = .;
94
95 /* Kernel symbol table: GPL-only unused symbols */
96 __start___ksymtab_unused_gpl = .;
97 *(__ksymtab_unused_gpl)
98 __stop___ksymtab_unused_gpl = .;
99
90 /* Kernel symbol table: GPL-future symbols */ 100 /* Kernel symbol table: GPL-future symbols */
91 __start___ksymtab_gpl_future = .; 101 __start___ksymtab_gpl_future = .;
92 *(__ksymtab_gpl_future) 102 *(__ksymtab_gpl_future)
@@ -149,10 +159,12 @@ SECTIONS {
149 __security_initcall_start = .; 159 __security_initcall_start = .;
150 *(.security_initcall.init) 160 *(.security_initcall.init)
151 __security_initcall_end = .; 161 __security_initcall_end = .;
162#ifdef CONFIG_BLK_DEV_INITRD
152 . = ALIGN(4); 163 . = ALIGN(4);
153 __initramfs_start = .; 164 __initramfs_start = .;
154 *(.init.ramfs) 165 *(.init.ramfs)
155 __initramfs_end = .; 166 __initramfs_end = .;
167#endif
156 . = ALIGN(4096); 168 . = ALIGN(4096);
157 __init_end = .; 169 __init_end = .;
158 } > INIT 170 } > INIT
diff --git a/arch/m68knommu/platform/5206/config.c b/arch/m68knommu/platform/5206/config.c
index 34657f85e702..3343830aad10 100644
--- a/arch/m68knommu/platform/5206/config.c
+++ b/arch/m68knommu/platform/5206/config.c
@@ -26,7 +26,7 @@
26/***************************************************************************/ 26/***************************************************************************/
27 27
28void coldfire_tick(void); 28void coldfire_tick(void);
29void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 29void coldfire_timer_init(irq_handler_t handler);
30unsigned long coldfire_timer_offset(void); 30unsigned long coldfire_timer_offset(void);
31void coldfire_trap_init(void); 31void coldfire_trap_init(void);
32void coldfire_reset(void); 32void coldfire_reset(void);
diff --git a/arch/m68knommu/platform/5206e/config.c b/arch/m68knommu/platform/5206e/config.c
index 48e4d6266507..0f67320b4031 100644
--- a/arch/m68knommu/platform/5206e/config.c
+++ b/arch/m68knommu/platform/5206e/config.c
@@ -25,7 +25,7 @@
25/***************************************************************************/ 25/***************************************************************************/
26 26
27void coldfire_tick(void); 27void coldfire_tick(void);
28void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 28void coldfire_timer_init(irq_handler_t handler);
29unsigned long coldfire_timer_offset(void); 29unsigned long coldfire_timer_offset(void);
30void coldfire_trap_init(void); 30void coldfire_trap_init(void);
31void coldfire_reset(void); 31void coldfire_reset(void);
diff --git a/arch/m68knommu/platform/520x/config.c b/arch/m68knommu/platform/520x/config.c
index 823f561f35b0..58b2878deb61 100644
--- a/arch/m68knommu/platform/520x/config.c
+++ b/arch/m68knommu/platform/520x/config.c
@@ -13,6 +13,7 @@
13 13
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/param.h> 15#include <linux/param.h>
16#include <linux/interrupt.h>
16#include <asm/machdep.h> 17#include <asm/machdep.h>
17#include <asm/dma.h> 18#include <asm/dma.h>
18 19
@@ -27,7 +28,7 @@ unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS];
27/***************************************************************************/ 28/***************************************************************************/
28 29
29void coldfire_pit_tick(void); 30void coldfire_pit_tick(void);
30void coldfire_pit_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 31void coldfire_pit_init(irq_handler_t handler);
31unsigned long coldfire_pit_offset(void); 32unsigned long coldfire_pit_offset(void);
32void coldfire_trap_init(void); 33void coldfire_trap_init(void);
33void coldfire_reset(void); 34void coldfire_reset(void);
diff --git a/arch/m68knommu/platform/523x/config.c b/arch/m68knommu/platform/523x/config.c
index 85de817e9ec5..9b054e6caee2 100644
--- a/arch/m68knommu/platform/523x/config.c
+++ b/arch/m68knommu/platform/523x/config.c
@@ -27,7 +27,7 @@
27/***************************************************************************/ 27/***************************************************************************/
28 28
29void coldfire_pit_tick(void); 29void coldfire_pit_tick(void);
30void coldfire_pit_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 30void coldfire_pit_init(irq_handler_t handler);
31unsigned long coldfire_pit_offset(void); 31unsigned long coldfire_pit_offset(void);
32void coldfire_trap_init(void); 32void coldfire_trap_init(void);
33void coldfire_reset(void); 33void coldfire_reset(void);
diff --git a/arch/m68knommu/platform/5249/config.c b/arch/m68knommu/platform/5249/config.c
index 9d19d5bdb8af..d6706079d64a 100644
--- a/arch/m68knommu/platform/5249/config.c
+++ b/arch/m68knommu/platform/5249/config.c
@@ -12,6 +12,7 @@
12#include <linux/sched.h> 12#include <linux/sched.h>
13#include <linux/param.h> 13#include <linux/param.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/interrupt.h>
15#include <asm/irq.h> 16#include <asm/irq.h>
16#include <asm/dma.h> 17#include <asm/dma.h>
17#include <asm/traps.h> 18#include <asm/traps.h>
@@ -24,7 +25,7 @@
24/***************************************************************************/ 25/***************************************************************************/
25 26
26void coldfire_tick(void); 27void coldfire_tick(void);
27void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 28void coldfire_timer_init(irq_handler_t handler);
28unsigned long coldfire_timer_offset(void); 29unsigned long coldfire_timer_offset(void);
29void coldfire_trap_init(void); 30void coldfire_trap_init(void);
30void coldfire_reset(void); 31void coldfire_reset(void);
diff --git a/arch/m68knommu/platform/5272/config.c b/arch/m68knommu/platform/5272/config.c
index d500e27eda57..6b437cc97776 100644
--- a/arch/m68knommu/platform/5272/config.c
+++ b/arch/m68knommu/platform/5272/config.c
@@ -26,7 +26,7 @@
26/***************************************************************************/ 26/***************************************************************************/
27 27
28void coldfire_tick(void); 28void coldfire_tick(void);
29void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 29void coldfire_timer_init(irq_handler_t handler);
30unsigned long coldfire_timer_offset(void); 30unsigned long coldfire_timer_offset(void);
31void coldfire_trap_init(void); 31void coldfire_trap_init(void);
32void coldfire_reset(void); 32void coldfire_reset(void);
diff --git a/arch/m68knommu/platform/527x/config.c b/arch/m68knommu/platform/527x/config.c
index bbae51597457..28e7d964eef1 100644
--- a/arch/m68knommu/platform/527x/config.c
+++ b/arch/m68knommu/platform/527x/config.c
@@ -27,7 +27,7 @@
27/***************************************************************************/ 27/***************************************************************************/
28 28
29void coldfire_pit_tick(void); 29void coldfire_pit_tick(void);
30void coldfire_pit_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 30void coldfire_pit_init(irq_handler_t handler);
31unsigned long coldfire_pit_offset(void); 31unsigned long coldfire_pit_offset(void);
32void coldfire_trap_init(void); 32void coldfire_trap_init(void);
33void coldfire_reset(void); 33void coldfire_reset(void);
diff --git a/arch/m68knommu/platform/528x/config.c b/arch/m68knommu/platform/528x/config.c
index 18dad9046144..805b4f74ff19 100644
--- a/arch/m68knommu/platform/528x/config.c
+++ b/arch/m68knommu/platform/528x/config.c
@@ -27,7 +27,7 @@
27/***************************************************************************/ 27/***************************************************************************/
28 28
29void coldfire_pit_tick(void); 29void coldfire_pit_tick(void);
30void coldfire_pit_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 30void coldfire_pit_init(irq_handler_t handler);
31unsigned long coldfire_pit_offset(void); 31unsigned long coldfire_pit_offset(void);
32void coldfire_trap_init(void); 32void coldfire_trap_init(void);
33void coldfire_reset(void); 33void coldfire_reset(void);
diff --git a/arch/m68knommu/platform/5307/config.c b/arch/m68knommu/platform/5307/config.c
index 8074ac56f479..e04b84deb57d 100644
--- a/arch/m68knommu/platform/5307/config.c
+++ b/arch/m68knommu/platform/5307/config.c
@@ -27,7 +27,7 @@
27/***************************************************************************/ 27/***************************************************************************/
28 28
29void coldfire_tick(void); 29void coldfire_tick(void);
30void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 30void coldfire_timer_init(irq_handler_t handler);
31unsigned long coldfire_timer_offset(void); 31unsigned long coldfire_timer_offset(void);
32void coldfire_trap_init(void); 32void coldfire_trap_init(void);
33void coldfire_reset(void); 33void coldfire_reset(void);
diff --git a/arch/m68knommu/platform/5307/pit.c b/arch/m68knommu/platform/5307/pit.c
index 9dc5688f71b5..aa15beeb36ca 100644
--- a/arch/m68knommu/platform/5307/pit.c
+++ b/arch/m68knommu/platform/5307/pit.c
@@ -43,7 +43,7 @@ void coldfire_pit_tick(void)
43 43
44/***************************************************************************/ 44/***************************************************************************/
45 45
46void coldfire_pit_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)) 46void coldfire_pit_init(irq_handler_t handler)
47{ 47{
48 volatile unsigned char *icrp; 48 volatile unsigned char *icrp;
49 volatile unsigned long *imrp; 49 volatile unsigned long *imrp;
diff --git a/arch/m68knommu/platform/5307/timers.c b/arch/m68knommu/platform/5307/timers.c
index e5668af19789..87b112b363a6 100644
--- a/arch/m68knommu/platform/5307/timers.c
+++ b/arch/m68knommu/platform/5307/timers.c
@@ -62,7 +62,7 @@ void coldfire_tick(void)
62 62
63/***************************************************************************/ 63/***************************************************************************/
64 64
65void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)) 65void coldfire_timer_init(irq_handler_t handler)
66{ 66{
67 __raw_writew(MCFTIMER_TMR_DISABLE, TA(MCFTIMER_TMR)); 67 __raw_writew(MCFTIMER_TMR_DISABLE, TA(MCFTIMER_TMR));
68 __raw_writetrr(((MCF_BUSCLK / 16) / HZ), TA(MCFTIMER_TRR)); 68 __raw_writetrr(((MCF_BUSCLK / 16) / HZ), TA(MCFTIMER_TRR));
@@ -111,12 +111,13 @@ unsigned long coldfire_timer_offset(void)
111/* 111/*
112 * Use the other timer to provide high accuracy profiling info. 112 * Use the other timer to provide high accuracy profiling info.
113 */ 113 */
114void coldfire_profile_tick(int irq, void *dummy, struct pt_regs *regs) 114irqreturn_t coldfire_profile_tick(int irq, void *dummy)
115{ 115{
116 /* Reset ColdFire timer2 */ 116 /* Reset ColdFire timer2 */
117 __raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, PA(MCFTIMER_TER)); 117 __raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, PA(MCFTIMER_TER));
118 if (current->pid) 118 if (current->pid)
119 profile_tick(CPU_PROFILING, regs); 119 profile_tick(CPU_PROFILING, regs);
120 return IRQ_HANDLED;
120} 121}
121 122
122/***************************************************************************/ 123/***************************************************************************/
diff --git a/arch/m68knommu/platform/532x/config.c b/arch/m68knommu/platform/532x/config.c
index c7d6ad513820..664c3a12b0c1 100644
--- a/arch/m68knommu/platform/532x/config.c
+++ b/arch/m68knommu/platform/532x/config.c
@@ -35,7 +35,7 @@
35/***************************************************************************/ 35/***************************************************************************/
36 36
37void coldfire_tick(void); 37void coldfire_tick(void);
38void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 38void coldfire_timer_init(irq_handler_t handler);
39unsigned long coldfire_timer_offset(void); 39unsigned long coldfire_timer_offset(void);
40void coldfire_trap_init(void); 40void coldfire_trap_init(void);
41void coldfire_reset(void); 41void coldfire_reset(void);
diff --git a/arch/m68knommu/platform/5407/config.c b/arch/m68knommu/platform/5407/config.c
index 5aad2645f0f1..036f62876241 100644
--- a/arch/m68knommu/platform/5407/config.c
+++ b/arch/m68knommu/platform/5407/config.c
@@ -26,7 +26,7 @@
26/***************************************************************************/ 26/***************************************************************************/
27 27
28void coldfire_tick(void); 28void coldfire_tick(void);
29void coldfire_timer_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); 29void coldfire_timer_init(irq_handler_t handler);
30unsigned long coldfire_timer_offset(void); 30unsigned long coldfire_timer_offset(void);
31void coldfire_trap_init(void); 31void coldfire_trap_init(void);
32void coldfire_reset(void); 32void coldfire_reset(void);
diff --git a/arch/m68knommu/platform/68328/config.c b/arch/m68knommu/platform/68328/config.c
index 26ffeba28642..e5c537d14dfb 100644
--- a/arch/m68knommu/platform/68328/config.c
+++ b/arch/m68knommu/platform/68328/config.c
@@ -34,7 +34,7 @@
34 34
35/***************************************************************************/ 35/***************************************************************************/
36 36
37void m68328_timer_init(irqreturn_t (*timer_routine) (int, void *, struct pt_regs *)); 37void m68328_timer_init(irq_handler_t timer_routine);
38void m68328_timer_tick(void); 38void m68328_timer_tick(void);
39unsigned long m68328_timer_gettimeoffset(void); 39unsigned long m68328_timer_gettimeoffset(void);
40void m68328_timer_gettod(int *year, int *mon, int *day, int *hour, int *min, int *sec); 40void m68328_timer_gettod(int *year, int *mon, int *day, int *hour, int *min, int *sec);
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 44a0224c32dd..5fe195a41a80 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -8,6 +8,10 @@ mainmenu "Linux/MIPS Kernel Configuration"
8 8
9menu "Machine selection" 9menu "Machine selection"
10 10
11config ZONE_DMA
12 bool
13 default y
14
11choice 15choice
12 prompt "System type" 16 prompt "System type"
13 default SGI_IP22 17 default SGI_IP22
@@ -753,6 +757,7 @@ config TOSHIBA_JMR3927
753 select SWAP_IO_SPACE 757 select SWAP_IO_SPACE
754 select SYS_HAS_CPU_TX39XX 758 select SYS_HAS_CPU_TX39XX
755 select SYS_SUPPORTS_32BIT_KERNEL 759 select SYS_SUPPORTS_32BIT_KERNEL
760 select SYS_SUPPORTS_LITTLE_ENDIAN
756 select SYS_SUPPORTS_BIG_ENDIAN 761 select SYS_SUPPORTS_BIG_ENDIAN
757 select TOSHIBA_BOARDS 762 select TOSHIBA_BOARDS
758 763
@@ -767,6 +772,7 @@ config TOSHIBA_RBTX4927
767 select SYS_HAS_CPU_TX49XX 772 select SYS_HAS_CPU_TX49XX
768 select SYS_SUPPORTS_32BIT_KERNEL 773 select SYS_SUPPORTS_32BIT_KERNEL
769 select SYS_SUPPORTS_64BIT_KERNEL 774 select SYS_SUPPORTS_64BIT_KERNEL
775 select SYS_SUPPORTS_LITTLE_ENDIAN
770 select SYS_SUPPORTS_BIG_ENDIAN 776 select SYS_SUPPORTS_BIG_ENDIAN
771 select TOSHIBA_BOARDS 777 select TOSHIBA_BOARDS
772 select GENERIC_HARDIRQS_NO__DO_IRQ 778 select GENERIC_HARDIRQS_NO__DO_IRQ
@@ -934,6 +940,9 @@ config CPU_LITTLE_ENDIAN
934 940
935endchoice 941endchoice
936 942
943config SYS_SUPPORTS_APM_EMULATION
944 bool
945
937config SYS_SUPPORTS_BIG_ENDIAN 946config SYS_SUPPORTS_BIG_ENDIAN
938 bool 947 bool
939 948
@@ -1001,6 +1010,7 @@ config SOC_AU1X00
1001 bool 1010 bool
1002 select SYS_HAS_CPU_MIPS32_R1 1011 select SYS_HAS_CPU_MIPS32_R1
1003 select SYS_SUPPORTS_32BIT_KERNEL 1012 select SYS_SUPPORTS_32BIT_KERNEL
1013 select SYS_SUPPORTS_APM_EMULATION
1004 1014
1005config PNX8550 1015config PNX8550
1006 bool 1016 bool
@@ -2071,35 +2081,11 @@ config BINFMT_ELF32
2071 bool 2081 bool
2072 default y if MIPS32_O32 || MIPS32_N32 2082 default y if MIPS32_O32 || MIPS32_N32
2073 2083
2074config PM 2084endmenu
2075 bool "Power Management support (EXPERIMENTAL)" 2085
2076 depends on EXPERIMENTAL && SOC_AU1X00 2086menu "Power management options"
2077 2087
2078config APM 2088source "kernel/power/Kconfig"
2079 tristate "Advanced Power Management Emulation"
2080 depends on PM
2081 ---help---
2082 APM is a BIOS specification for saving power using several different
2083 techniques. This is mostly useful for battery powered systems with
2084 APM compliant BIOSes. If you say Y here, the system time will be
2085 reset after a RESUME operation, the /proc/apm device will provide
2086 battery status information, and user-space programs will receive
2087 notification of APM "events" (e.g. battery status change).
2088
2089 In order to use APM, you will need supporting software. For location
2090 and more information, read <file:Documentation/pm.txt> and the
2091 Battery Powered Linux mini-HOWTO, available from
2092 <http://www.tldp.org/docs.html#howto>.
2093
2094 This driver does not spin down disk drives (see the hdparm(8)
2095 manpage ("man 8 hdparm") for that), and it doesn't turn off
2096 VESA-compliant "green" monitors.
2097
2098 Generally, if you don't have a battery in your machine, there isn't
2099 much point in using this driver and you should say N. If you get
2100 random kernel OOPSes or reboots that don't seem to be related to
2101 anything, try disabling/enabling this option (or disabling/enabling
2102 APM in your BIOS).
2103 2089
2104endmenu 2090endmenu
2105 2091
diff --git a/arch/mips/dec/Makefile b/arch/mips/dec/Makefile
index ed181fdc3ac9..8b790c2900d5 100644
--- a/arch/mips/dec/Makefile
+++ b/arch/mips/dec/Makefile
@@ -6,6 +6,7 @@ obj-y := ecc-berr.o int-handler.o ioasic-irq.o kn01-berr.o \
6 kn02-irq.o kn02xa-berr.o reset.o setup.o time.o 6 kn02-irq.o kn02xa-berr.o reset.o setup.o time.o
7 7
8obj-$(CONFIG_PROM_CONSOLE) += promcon.o 8obj-$(CONFIG_PROM_CONSOLE) += promcon.o
9obj-$(CONFIG_TC) += tc.o
9obj-$(CONFIG_CPU_HAS_WB) += wbflush.o 10obj-$(CONFIG_CPU_HAS_WB) += wbflush.o
10 11
11EXTRA_AFLAGS := $(CFLAGS) 12EXTRA_AFLAGS := $(CFLAGS)
diff --git a/arch/mips/dec/prom/identify.c b/arch/mips/dec/prom/identify.c
index 81d5e878ddce..c4e3c1ea0d48 100644
--- a/arch/mips/dec/prom/identify.c
+++ b/arch/mips/dec/prom/identify.c
@@ -88,6 +88,7 @@ static inline void prom_init_kn02(void)
88{ 88{
89 dec_kn_slot_base = KN02_SLOT_BASE; 89 dec_kn_slot_base = KN02_SLOT_BASE;
90 dec_kn_slot_size = KN02_SLOT_SIZE; 90 dec_kn_slot_size = KN02_SLOT_SIZE;
91 dec_tc_bus = 1;
91 92
92 dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + KN02_RTC); 93 dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + KN02_RTC);
93} 94}
@@ -96,6 +97,7 @@ static inline void prom_init_kn02xa(void)
96{ 97{
97 dec_kn_slot_base = KN02XA_SLOT_BASE; 98 dec_kn_slot_base = KN02XA_SLOT_BASE;
98 dec_kn_slot_size = IOASIC_SLOT_SIZE; 99 dec_kn_slot_size = IOASIC_SLOT_SIZE;
100 dec_tc_bus = 1;
99 101
100 ioasic_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_IOCTL); 102 ioasic_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_IOCTL);
101 dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_TOY); 103 dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_TOY);
@@ -105,6 +107,7 @@ static inline void prom_init_kn03(void)
105{ 107{
106 dec_kn_slot_base = KN03_SLOT_BASE; 108 dec_kn_slot_base = KN03_SLOT_BASE;
107 dec_kn_slot_size = IOASIC_SLOT_SIZE; 109 dec_kn_slot_size = IOASIC_SLOT_SIZE;
110 dec_tc_bus = 1;
108 111
109 ioasic_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_IOCTL); 112 ioasic_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_IOCTL);
110 dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_TOY); 113 dec_rtc_base = (void *)CKSEG1ADDR(dec_kn_slot_base + IOASIC_TOY);
diff --git a/arch/mips/dec/setup.c b/arch/mips/dec/setup.c
index 1058e2f409bb..b8a5e75ba0ab 100644
--- a/arch/mips/dec/setup.c
+++ b/arch/mips/dec/setup.c
@@ -53,6 +53,8 @@ unsigned long dec_kn_slot_base, dec_kn_slot_size;
53EXPORT_SYMBOL(dec_kn_slot_base); 53EXPORT_SYMBOL(dec_kn_slot_base);
54EXPORT_SYMBOL(dec_kn_slot_size); 54EXPORT_SYMBOL(dec_kn_slot_size);
55 55
56int dec_tc_bus;
57
56spinlock_t ioasic_ssr_lock; 58spinlock_t ioasic_ssr_lock;
57 59
58volatile u32 *ioasic_base; 60volatile u32 *ioasic_base;
diff --git a/arch/mips/dec/tc.c b/arch/mips/dec/tc.c
new file mode 100644
index 000000000000..732027c79834
--- /dev/null
+++ b/arch/mips/dec/tc.c
@@ -0,0 +1,95 @@
1/*
2 * TURBOchannel architecture calls.
3 *
4 * Copyright (c) Harald Koerfgen, 1998
5 * Copyright (c) 2001, 2003, 2005, 2006 Maciej W. Rozycki
6 * Copyright (c) 2005 James Simmons
7 *
8 * This file is subject to the terms and conditions of the GNU
9 * General Public License. See the file "COPYING" in the main
10 * directory of this archive for more details.
11 */
12#include <linux/compiler.h>
13#include <linux/errno.h>
14#include <linux/init.h>
15#include <linux/string.h>
16#include <linux/tc.h>
17#include <linux/types.h>
18
19#include <asm/addrspace.h>
20#include <asm/bootinfo.h>
21#include <asm/paccess.h>
22
23#include <asm/dec/interrupts.h>
24#include <asm/dec/prom.h>
25#include <asm/dec/system.h>
26
27/*
28 * Protected read byte from TURBOchannel slot space.
29 */
30int tc_preadb(u8 *valp, void __iomem *addr)
31{
32 return get_dbe(*valp, (u8 *)addr);
33}
34
35/*
36 * Get TURBOchannel bus information as specified by the spec, plus
37 * the slot space base address and the number of slots.
38 */
39int __init tc_bus_get_info(struct tc_bus *tbus)
40{
41 if (!dec_tc_bus)
42 return -ENXIO;
43
44 memcpy(&tbus->info, rex_gettcinfo(), sizeof(tbus->info));
45 tbus->slot_base = CPHYSADDR((long)rex_slot_address(0));
46
47 switch (mips_machtype) {
48 case MACH_DS5000_200:
49 tbus->num_tcslots = 7;
50 break;
51 case MACH_DS5000_2X0:
52 case MACH_DS5900:
53 tbus->ext_slot_base = 0x20000000;
54 tbus->ext_slot_size = 0x20000000;
55 /* fall through */
56 case MACH_DS5000_1XX:
57 tbus->num_tcslots = 3;
58 break;
59 case MACH_DS5000_XX:
60 tbus->num_tcslots = 2;
61 default:
62 break;
63 }
64 return 0;
65}
66
67/*
68 * Get the IRQ for the specified slot.
69 */
70void __init tc_device_get_irq(struct tc_dev *tdev)
71{
72 switch (tdev->slot) {
73 case 0:
74 tdev->interrupt = dec_interrupt[DEC_IRQ_TC0];
75 break;
76 case 1:
77 tdev->interrupt = dec_interrupt[DEC_IRQ_TC1];
78 break;
79 case 2:
80 tdev->interrupt = dec_interrupt[DEC_IRQ_TC2];
81 break;
82 /*
83 * Yuck! DS5000/200 onboard devices
84 */
85 case 5:
86 tdev->interrupt = dec_interrupt[DEC_IRQ_TC5];
87 break;
88 case 6:
89 tdev->interrupt = dec_interrupt[DEC_IRQ_TC6];
90 break;
91 default:
92 tdev->interrupt = -1;
93 break;
94 }
95}
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile
index bbbb8d7cb89b..1bf2c8448912 100644
--- a/arch/mips/kernel/Makefile
+++ b/arch/mips/kernel/Makefile
@@ -14,8 +14,6 @@ binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \
14obj-$(CONFIG_STACKTRACE) += stacktrace.o 14obj-$(CONFIG_STACKTRACE) += stacktrace.o
15obj-$(CONFIG_MODULES) += mips_ksyms.o module.o 15obj-$(CONFIG_MODULES) += mips_ksyms.o module.o
16 16
17obj-$(CONFIG_APM) += apm.o
18
19obj-$(CONFIG_CPU_R3000) += r2300_fpu.o r2300_switch.o 17obj-$(CONFIG_CPU_R3000) += r2300_fpu.o r2300_switch.o
20obj-$(CONFIG_CPU_TX39XX) += r2300_fpu.o r2300_switch.o 18obj-$(CONFIG_CPU_TX39XX) += r2300_fpu.o r2300_switch.o
21obj-$(CONFIG_CPU_TX49XX) += r4k_fpu.o r4k_switch.o 19obj-$(CONFIG_CPU_TX49XX) += r4k_fpu.o r4k_switch.o
diff --git a/arch/mips/kernel/apm.c b/arch/mips/kernel/apm.c
deleted file mode 100644
index ba16d07588cb..000000000000
--- a/arch/mips/kernel/apm.c
+++ /dev/null
@@ -1,604 +0,0 @@
1/*
2 * bios-less APM driver for MIPS Linux
3 * Jamey Hicks <jamey@crl.dec.com>
4 * adapted from the APM BIOS driver for Linux by Stephen Rothwell (sfr@linuxcare.com)
5 *
6 * APM 1.2 Reference:
7 * Intel Corporation, Microsoft Corporation. Advanced Power Management
8 * (APM) BIOS Interface Specification, Revision 1.2, February 1996.
9 *
10 * [This document is available from Microsoft at:
11 * http://www.microsoft.com/hwdev/busbios/amp_12.htm]
12 */
13#include <linux/module.h>
14#include <linux/poll.h>
15#include <linux/timer.h>
16#include <linux/slab.h>
17#include <linux/proc_fs.h>
18#include <linux/miscdevice.h>
19#include <linux/apm_bios.h>
20#include <linux/capability.h>
21#include <linux/sched.h>
22#include <linux/pm.h>
23#include <linux/device.h>
24#include <linux/kernel.h>
25#include <linux/list.h>
26#include <linux/init.h>
27#include <linux/completion.h>
28
29#include <asm/apm.h> /* apm_power_info */
30#include <asm/system.h>
31
32/*
33 * The apm_bios device is one of the misc char devices.
34 * This is its minor number.
35 */
36#define APM_MINOR_DEV 134
37
38/*
39 * See Documentation/Config.help for the configuration options.
40 *
41 * Various options can be changed at boot time as follows:
42 * (We allow underscores for compatibility with the modules code)
43 * apm=on/off enable/disable APM
44 */
45
46/*
47 * Maximum number of events stored
48 */
49#define APM_MAX_EVENTS 16
50
51struct apm_queue {
52 unsigned int event_head;
53 unsigned int event_tail;
54 apm_event_t events[APM_MAX_EVENTS];
55};
56
57/*
58 * The per-file APM data
59 */
60struct apm_user {
61 struct list_head list;
62
63 unsigned int suser: 1;
64 unsigned int writer: 1;
65 unsigned int reader: 1;
66
67 int suspend_result;
68 unsigned int suspend_state;
69#define SUSPEND_NONE 0 /* no suspend pending */
70#define SUSPEND_PENDING 1 /* suspend pending read */
71#define SUSPEND_READ 2 /* suspend read, pending ack */
72#define SUSPEND_ACKED 3 /* suspend acked */
73#define SUSPEND_DONE 4 /* suspend completed */
74
75 struct apm_queue queue;
76};
77
78/*
79 * Local variables
80 */
81static int suspends_pending;
82static int apm_disabled;
83static int mips_apm_active;
84
85static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue);
86static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue);
87
88/*
89 * This is a list of everyone who has opened /dev/apm_bios
90 */
91static DECLARE_RWSEM(user_list_lock);
92static LIST_HEAD(apm_user_list);
93
94/*
95 * kapmd info. kapmd provides us a process context to handle
96 * "APM" events within - specifically necessary if we're going
97 * to be suspending the system.
98 */
99static DECLARE_WAIT_QUEUE_HEAD(kapmd_wait);
100static DECLARE_COMPLETION(kapmd_exit);
101static DEFINE_SPINLOCK(kapmd_queue_lock);
102static struct apm_queue kapmd_queue;
103
104
105static const char driver_version[] = "1.13"; /* no spaces */
106
107
108
109/*
110 * Compatibility cruft until the IPAQ people move over to the new
111 * interface.
112 */
113static void __apm_get_power_status(struct apm_power_info *info)
114{
115}
116
117/*
118 * This allows machines to provide their own "apm get power status" function.
119 */
120void (*apm_get_power_status)(struct apm_power_info *) = __apm_get_power_status;
121EXPORT_SYMBOL(apm_get_power_status);
122
123
124/*
125 * APM event queue management.
126 */
127static inline int queue_empty(struct apm_queue *q)
128{
129 return q->event_head == q->event_tail;
130}
131
132static inline apm_event_t queue_get_event(struct apm_queue *q)
133{
134 q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS;
135 return q->events[q->event_tail];
136}
137
138static void queue_add_event(struct apm_queue *q, apm_event_t event)
139{
140 q->event_head = (q->event_head + 1) % APM_MAX_EVENTS;
141 if (q->event_head == q->event_tail) {
142 static int notified;
143
144 if (notified++ == 0)
145 printk(KERN_ERR "apm: an event queue overflowed\n");
146 q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS;
147 }
148 q->events[q->event_head] = event;
149}
150
151static void queue_event_one_user(struct apm_user *as, apm_event_t event)
152{
153 if (as->suser && as->writer) {
154 switch (event) {
155 case APM_SYS_SUSPEND:
156 case APM_USER_SUSPEND:
157 /*
158 * If this user already has a suspend pending,
159 * don't queue another one.
160 */
161 if (as->suspend_state != SUSPEND_NONE)
162 return;
163
164 as->suspend_state = SUSPEND_PENDING;
165 suspends_pending++;
166 break;
167 }
168 }
169 queue_add_event(&as->queue, event);
170}
171
172static void queue_event(apm_event_t event, struct apm_user *sender)
173{
174 struct apm_user *as;
175
176 down_read(&user_list_lock);
177 list_for_each_entry(as, &apm_user_list, list) {
178 if (as != sender && as->reader)
179 queue_event_one_user(as, event);
180 }
181 up_read(&user_list_lock);
182 wake_up_interruptible(&apm_waitqueue);
183}
184
185static void apm_suspend(void)
186{
187 struct apm_user *as;
188 int err = pm_suspend(PM_SUSPEND_MEM);
189
190 /*
191 * Anyone on the APM queues will think we're still suspended.
192 * Send a message so everyone knows we're now awake again.
193 */
194 queue_event(APM_NORMAL_RESUME, NULL);
195
196 /*
197 * Finally, wake up anyone who is sleeping on the suspend.
198 */
199 down_read(&user_list_lock);
200 list_for_each_entry(as, &apm_user_list, list) {
201 as->suspend_result = err;
202 as->suspend_state = SUSPEND_DONE;
203 }
204 up_read(&user_list_lock);
205
206 wake_up(&apm_suspend_waitqueue);
207}
208
209static ssize_t apm_read(struct file *fp, char __user *buf, size_t count, loff_t *ppos)
210{
211 struct apm_user *as = fp->private_data;
212 apm_event_t event;
213 int i = count, ret = 0;
214
215 if (count < sizeof(apm_event_t))
216 return -EINVAL;
217
218 if (queue_empty(&as->queue) && fp->f_flags & O_NONBLOCK)
219 return -EAGAIN;
220
221 wait_event_interruptible(apm_waitqueue, !queue_empty(&as->queue));
222
223 while ((i >= sizeof(event)) && !queue_empty(&as->queue)) {
224 event = queue_get_event(&as->queue);
225
226 ret = -EFAULT;
227 if (copy_to_user(buf, &event, sizeof(event)))
228 break;
229
230 if (event == APM_SYS_SUSPEND || event == APM_USER_SUSPEND)
231 as->suspend_state = SUSPEND_READ;
232
233 buf += sizeof(event);
234 i -= sizeof(event);
235 }
236
237 if (i < count)
238 ret = count - i;
239
240 return ret;
241}
242
243static unsigned int apm_poll(struct file *fp, poll_table * wait)
244{
245 struct apm_user *as = fp->private_data;
246
247 poll_wait(fp, &apm_waitqueue, wait);
248 return queue_empty(&as->queue) ? 0 : POLLIN | POLLRDNORM;
249}
250
251/*
252 * apm_ioctl - handle APM ioctl
253 *
254 * APM_IOC_SUSPEND
255 * This IOCTL is overloaded, and performs two functions. It is used to:
256 * - initiate a suspend
257 * - acknowledge a suspend read from /dev/apm_bios.
258 * Only when everyone who has opened /dev/apm_bios with write permission
259 * has acknowledge does the actual suspend happen.
260 */
261static int
262apm_ioctl(struct inode * inode, struct file *filp, unsigned int cmd, unsigned long arg)
263{
264 struct apm_user *as = filp->private_data;
265 unsigned long flags;
266 int err = -EINVAL;
267
268 if (!as->suser || !as->writer)
269 return -EPERM;
270
271 switch (cmd) {
272 case APM_IOC_SUSPEND:
273 as->suspend_result = -EINTR;
274
275 if (as->suspend_state == SUSPEND_READ) {
276 /*
277 * If we read a suspend command from /dev/apm_bios,
278 * then the corresponding APM_IOC_SUSPEND ioctl is
279 * interpreted as an acknowledge.
280 */
281 as->suspend_state = SUSPEND_ACKED;
282 suspends_pending--;
283 } else {
284 /*
285 * Otherwise it is a request to suspend the system.
286 * Queue an event for all readers, and expect an
287 * acknowledge from all writers who haven't already
288 * acknowledged.
289 */
290 queue_event(APM_USER_SUSPEND, as);
291 }
292
293 /*
294 * If there are no further acknowledges required, suspend
295 * the system.
296 */
297 if (suspends_pending == 0)
298 apm_suspend();
299
300 /*
301 * Wait for the suspend/resume to complete. If there are
302 * pending acknowledges, we wait here for them.
303 *
304 * Note that we need to ensure that the PM subsystem does
305 * not kick us out of the wait when it suspends the threads.
306 */
307 flags = current->flags;
308 current->flags |= PF_NOFREEZE;
309
310 /*
311 * Note: do not allow a thread which is acking the suspend
312 * to escape until the resume is complete.
313 */
314 if (as->suspend_state == SUSPEND_ACKED)
315 wait_event(apm_suspend_waitqueue,
316 as->suspend_state == SUSPEND_DONE);
317 else
318 wait_event_interruptible(apm_suspend_waitqueue,
319 as->suspend_state == SUSPEND_DONE);
320
321 current->flags = flags;
322 err = as->suspend_result;
323 as->suspend_state = SUSPEND_NONE;
324 break;
325 }
326
327 return err;
328}
329
330static int apm_release(struct inode * inode, struct file * filp)
331{
332 struct apm_user *as = filp->private_data;
333 filp->private_data = NULL;
334
335 down_write(&user_list_lock);
336 list_del(&as->list);
337 up_write(&user_list_lock);
338
339 /*
340 * We are now unhooked from the chain. As far as new
341 * events are concerned, we no longer exist. However, we
342 * need to balance suspends_pending, which means the
343 * possibility of sleeping.
344 */
345 if (as->suspend_state != SUSPEND_NONE) {
346 suspends_pending -= 1;
347 if (suspends_pending == 0)
348 apm_suspend();
349 }
350
351 kfree(as);
352 return 0;
353}
354
355static int apm_open(struct inode * inode, struct file * filp)
356{
357 struct apm_user *as;
358
359 as = kzalloc(sizeof(*as), GFP_KERNEL);
360 if (as) {
361 /*
362 * XXX - this is a tiny bit broken, when we consider BSD
363 * process accounting. If the device is opened by root, we
364 * instantly flag that we used superuser privs. Who knows,
365 * we might close the device immediately without doing a
366 * privileged operation -- cevans
367 */
368 as->suser = capable(CAP_SYS_ADMIN);
369 as->writer = (filp->f_mode & FMODE_WRITE) == FMODE_WRITE;
370 as->reader = (filp->f_mode & FMODE_READ) == FMODE_READ;
371
372 down_write(&user_list_lock);
373 list_add(&as->list, &apm_user_list);
374 up_write(&user_list_lock);
375
376 filp->private_data = as;
377 }
378
379 return as ? 0 : -ENOMEM;
380}
381
382static struct file_operations apm_bios_fops = {
383 .owner = THIS_MODULE,
384 .read = apm_read,
385 .poll = apm_poll,
386 .ioctl = apm_ioctl,
387 .open = apm_open,
388 .release = apm_release,
389};
390
391static struct miscdevice apm_device = {
392 .minor = APM_MINOR_DEV,
393 .name = "apm_bios",
394 .fops = &apm_bios_fops
395};
396
397
398#ifdef CONFIG_PROC_FS
399/*
400 * Arguments, with symbols from linux/apm_bios.h.
401 *
402 * 0) Linux driver version (this will change if format changes)
403 * 1) APM BIOS Version. Usually 1.0, 1.1 or 1.2.
404 * 2) APM flags from APM Installation Check (0x00):
405 * bit 0: APM_16_BIT_SUPPORT
406 * bit 1: APM_32_BIT_SUPPORT
407 * bit 2: APM_IDLE_SLOWS_CLOCK
408 * bit 3: APM_BIOS_DISABLED
409 * bit 4: APM_BIOS_DISENGAGED
410 * 3) AC line status
411 * 0x00: Off-line
412 * 0x01: On-line
413 * 0x02: On backup power (BIOS >= 1.1 only)
414 * 0xff: Unknown
415 * 4) Battery status
416 * 0x00: High
417 * 0x01: Low
418 * 0x02: Critical
419 * 0x03: Charging
420 * 0x04: Selected battery not present (BIOS >= 1.2 only)
421 * 0xff: Unknown
422 * 5) Battery flag
423 * bit 0: High
424 * bit 1: Low
425 * bit 2: Critical
426 * bit 3: Charging
427 * bit 7: No system battery
428 * 0xff: Unknown
429 * 6) Remaining battery life (percentage of charge):
430 * 0-100: valid
431 * -1: Unknown
432 * 7) Remaining battery life (time units):
433 * Number of remaining minutes or seconds
434 * -1: Unknown
435 * 8) min = minutes; sec = seconds
436 */
437static int apm_get_info(char *buf, char **start, off_t fpos, int length)
438{
439 struct apm_power_info info;
440 char *units;
441 int ret;
442
443 info.ac_line_status = 0xff;
444 info.battery_status = 0xff;
445 info.battery_flag = 0xff;
446 info.battery_life = -1;
447 info.time = -1;
448 info.units = -1;
449
450 if (apm_get_power_status)
451 apm_get_power_status(&info);
452
453 switch (info.units) {
454 default: units = "?"; break;
455 case 0: units = "min"; break;
456 case 1: units = "sec"; break;
457 }
458
459 ret = sprintf(buf, "%s 1.2 0x%02x 0x%02x 0x%02x 0x%02x %d%% %d %s\n",
460 driver_version, APM_32_BIT_SUPPORT,
461 info.ac_line_status, info.battery_status,
462 info.battery_flag, info.battery_life,
463 info.time, units);
464
465 return ret;
466}
467#endif
468
469static int kapmd(void *arg)
470{
471 daemonize("kapmd");
472 current->flags |= PF_NOFREEZE;
473
474 do {
475 apm_event_t event;
476
477 wait_event_interruptible(kapmd_wait,
478 !queue_empty(&kapmd_queue) || !mips_apm_active);
479
480 if (!mips_apm_active)
481 break;
482
483 spin_lock_irq(&kapmd_queue_lock);
484 event = 0;
485 if (!queue_empty(&kapmd_queue))
486 event = queue_get_event(&kapmd_queue);
487 spin_unlock_irq(&kapmd_queue_lock);
488
489 switch (event) {
490 case 0:
491 break;
492
493 case APM_LOW_BATTERY:
494 case APM_POWER_STATUS_CHANGE:
495 queue_event(event, NULL);
496 break;
497
498 case APM_USER_SUSPEND:
499 case APM_SYS_SUSPEND:
500 queue_event(event, NULL);
501 if (suspends_pending == 0)
502 apm_suspend();
503 break;
504
505 case APM_CRITICAL_SUSPEND:
506 apm_suspend();
507 break;
508 }
509 } while (1);
510
511 complete_and_exit(&kapmd_exit, 0);
512}
513
514static int __init apm_init(void)
515{
516 int ret;
517
518 if (apm_disabled) {
519 printk(KERN_NOTICE "apm: disabled on user request.\n");
520 return -ENODEV;
521 }
522
523 mips_apm_active = 1;
524
525 ret = kernel_thread(kapmd, NULL, CLONE_KERNEL);
526 if (ret < 0) {
527 mips_apm_active = 0;
528 return ret;
529 }
530
531#ifdef CONFIG_PROC_FS
532 create_proc_info_entry("apm", 0, NULL, apm_get_info);
533#endif
534
535 ret = misc_register(&apm_device);
536 if (ret != 0) {
537 remove_proc_entry("apm", NULL);
538
539 mips_apm_active = 0;
540 wake_up(&kapmd_wait);
541 wait_for_completion(&kapmd_exit);
542 }
543
544 return ret;
545}
546
547static void __exit apm_exit(void)
548{
549 misc_deregister(&apm_device);
550 remove_proc_entry("apm", NULL);
551
552 mips_apm_active = 0;
553 wake_up(&kapmd_wait);
554 wait_for_completion(&kapmd_exit);
555}
556
557module_init(apm_init);
558module_exit(apm_exit);
559
560MODULE_AUTHOR("Stephen Rothwell");
561MODULE_DESCRIPTION("Advanced Power Management");
562MODULE_LICENSE("GPL");
563
564#ifndef MODULE
565static int __init apm_setup(char *str)
566{
567 while ((str != NULL) && (*str != '\0')) {
568 if (strncmp(str, "off", 3) == 0)
569 apm_disabled = 1;
570 if (strncmp(str, "on", 2) == 0)
571 apm_disabled = 0;
572 str = strchr(str, ',');
573 if (str != NULL)
574 str += strspn(str, ", \t");
575 }
576 return 1;
577}
578
579__setup("apm=", apm_setup);
580#endif
581
582/**
583 * apm_queue_event - queue an APM event for kapmd
584 * @event: APM event
585 *
586 * Queue an APM event for kapmd to process and ultimately take the
587 * appropriate action. Only a subset of events are handled:
588 * %APM_LOW_BATTERY
589 * %APM_POWER_STATUS_CHANGE
590 * %APM_USER_SUSPEND
591 * %APM_SYS_SUSPEND
592 * %APM_CRITICAL_SUSPEND
593 */
594void apm_queue_event(apm_event_t event)
595{
596 unsigned long flags;
597
598 spin_lock_irqsave(&kapmd_queue_lock, flags);
599 queue_add_event(&kapmd_queue, event);
600 spin_unlock_irqrestore(&kapmd_queue_lock, flags);
601
602 wake_up_interruptible(&kapmd_wait);
603}
604EXPORT_SYMBOL(apm_queue_event);
diff --git a/arch/mips/kernel/asm-offsets.c b/arch/mips/kernel/asm-offsets.c
index ea7df4b8da33..c0b089d47181 100644
--- a/arch/mips/kernel/asm-offsets.c
+++ b/arch/mips/kernel/asm-offsets.c
@@ -249,7 +249,6 @@ void output_sc_defines(void)
249 offset("#define SC_MDHI ", struct sigcontext, sc_mdhi); 249 offset("#define SC_MDHI ", struct sigcontext, sc_mdhi);
250 offset("#define SC_MDLO ", struct sigcontext, sc_mdlo); 250 offset("#define SC_MDLO ", struct sigcontext, sc_mdlo);
251 offset("#define SC_PC ", struct sigcontext, sc_pc); 251 offset("#define SC_PC ", struct sigcontext, sc_pc);
252 offset("#define SC_STATUS ", struct sigcontext, sc_status);
253 offset("#define SC_FPC_CSR ", struct sigcontext, sc_fpc_csr); 252 offset("#define SC_FPC_CSR ", struct sigcontext, sc_fpc_csr);
254 offset("#define SC_FPC_EIR ", struct sigcontext, sc_fpc_eir); 253 offset("#define SC_FPC_EIR ", struct sigcontext, sc_fpc_eir);
255 offset("#define SC_HI1 ", struct sigcontext, sc_hi1); 254 offset("#define SC_HI1 ", struct sigcontext, sc_hi1);
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
index 0b8ce59429a8..ca7ad78f4def 100644
--- a/arch/mips/kernel/linux32.c
+++ b/arch/mips/kernel/linux32.c
@@ -193,50 +193,6 @@ sysn32_waitid(int which, compat_pid_t pid,
193 return ret; 193 return ret;
194} 194}
195 195
196struct sysinfo32 {
197 s32 uptime;
198 u32 loads[3];
199 u32 totalram;
200 u32 freeram;
201 u32 sharedram;
202 u32 bufferram;
203 u32 totalswap;
204 u32 freeswap;
205 u16 procs;
206 u32 totalhigh;
207 u32 freehigh;
208 u32 mem_unit;
209 char _f[8];
210};
211
212asmlinkage int sys32_sysinfo(struct sysinfo32 __user *info)
213{
214 struct sysinfo s;
215 int ret, err;
216 mm_segment_t old_fs = get_fs ();
217
218 set_fs (KERNEL_DS);
219 ret = sys_sysinfo((struct sysinfo __user *)&s);
220 set_fs (old_fs);
221 err = put_user (s.uptime, &info->uptime);
222 err |= __put_user (s.loads[0], &info->loads[0]);
223 err |= __put_user (s.loads[1], &info->loads[1]);
224 err |= __put_user (s.loads[2], &info->loads[2]);
225 err |= __put_user (s.totalram, &info->totalram);
226 err |= __put_user (s.freeram, &info->freeram);
227 err |= __put_user (s.sharedram, &info->sharedram);
228 err |= __put_user (s.bufferram, &info->bufferram);
229 err |= __put_user (s.totalswap, &info->totalswap);
230 err |= __put_user (s.freeswap, &info->freeswap);
231 err |= __put_user (s.procs, &info->procs);
232 err |= __put_user (s.totalhigh, &info->totalhigh);
233 err |= __put_user (s.freehigh, &info->freehigh);
234 err |= __put_user (s.mem_unit, &info->mem_unit);
235 if (err)
236 return -EFAULT;
237 return ret;
238}
239
240#define RLIM_INFINITY32 0x7fffffff 196#define RLIM_INFINITY32 0x7fffffff
241#define RESOURCE32(x) ((x > RLIM_INFINITY32) ? RLIM_INFINITY32 : x) 197#define RESOURCE32(x) ((x > RLIM_INFINITY32) ? RLIM_INFINITY32 : x)
242 198
diff --git a/arch/mips/kernel/mips-mt.c b/arch/mips/kernel/mips-mt.c
index a32f6797353a..ba01800b6018 100644
--- a/arch/mips/kernel/mips-mt.c
+++ b/arch/mips/kernel/mips-mt.c
@@ -3,9 +3,11 @@
3 * Copyright (C) 2005 Mips Technologies, Inc 3 * Copyright (C) 2005 Mips Technologies, Inc
4 */ 4 */
5 5
6#include <linux/device.h>
6#include <linux/kernel.h> 7#include <linux/kernel.h>
7#include <linux/sched.h> 8#include <linux/sched.h>
8#include <linux/cpumask.h> 9#include <linux/cpumask.h>
10#include <linux/module.h>
9#include <linux/interrupt.h> 11#include <linux/interrupt.h>
10#include <linux/security.h> 12#include <linux/security.h>
11 13
@@ -453,3 +455,20 @@ void mt_cflush_release(void)
453#endif /* CONFIG_MIPS_MT_SMTC */ 455#endif /* CONFIG_MIPS_MT_SMTC */
454 /* FILL IN VSMP and AP/SP VERSIONS HERE */ 456 /* FILL IN VSMP and AP/SP VERSIONS HERE */
455} 457}
458
459struct class *mt_class;
460
461static int __init mt_init(void)
462{
463 struct class *mtc;
464
465 mtc = class_create(THIS_MODULE, "mt");
466 if (IS_ERR(mtc))
467 return PTR_ERR(mtc);
468
469 mt_class = mtc;
470
471 return 0;
472}
473
474subsys_initcall(mt_init);
diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c
index 8610f4a925e9..d92c48e0d7a6 100644
--- a/arch/mips/kernel/rtlx.c
+++ b/arch/mips/kernel/rtlx.c
@@ -17,6 +17,7 @@
17 * 17 *
18 */ 18 */
19 19
20#include <linux/device.h>
20#include <linux/kernel.h> 21#include <linux/kernel.h>
21#include <linux/module.h> 22#include <linux/module.h>
22#include <linux/fs.h> 23#include <linux/fs.h>
@@ -34,6 +35,7 @@
34#include <linux/sched.h> 35#include <linux/sched.h>
35#include <linux/wait.h> 36#include <linux/wait.h>
36#include <asm/mipsmtregs.h> 37#include <asm/mipsmtregs.h>
38#include <asm/mips_mt.h>
37#include <asm/cacheflush.h> 39#include <asm/cacheflush.h>
38#include <asm/atomic.h> 40#include <asm/atomic.h>
39#include <asm/cpu.h> 41#include <asm/cpu.h>
@@ -476,7 +478,7 @@ static ssize_t file_write(struct file *file, const char __user * buffer,
476 return rtlx_write(minor, (void *)buffer, count, 1); 478 return rtlx_write(minor, (void *)buffer, count, 1);
477} 479}
478 480
479static struct file_operations rtlx_fops = { 481static const struct file_operations rtlx_fops = {
480 .owner = THIS_MODULE, 482 .owner = THIS_MODULE,
481 .open = file_open, 483 .open = file_open,
482 .release = file_release, 484 .release = file_release,
@@ -498,7 +500,8 @@ static char register_chrdev_failed[] __initdata =
498 500
499static int rtlx_module_init(void) 501static int rtlx_module_init(void)
500{ 502{
501 int i; 503 struct device *dev;
504 int i, err;
502 505
503 major = register_chrdev(0, module_name, &rtlx_fops); 506 major = register_chrdev(0, module_name, &rtlx_fops);
504 if (major < 0) { 507 if (major < 0) {
@@ -511,6 +514,13 @@ static int rtlx_module_init(void)
511 init_waitqueue_head(&channel_wqs[i].rt_queue); 514 init_waitqueue_head(&channel_wqs[i].rt_queue);
512 init_waitqueue_head(&channel_wqs[i].lx_queue); 515 init_waitqueue_head(&channel_wqs[i].lx_queue);
513 channel_wqs[i].in_open = 0; 516 channel_wqs[i].in_open = 0;
517
518 dev = device_create(mt_class, NULL, MKDEV(major, i),
519 "%s%d", module_name, i);
520 if (IS_ERR(dev)) {
521 err = PTR_ERR(dev);
522 goto out_chrdev;
523 }
514 } 524 }
515 525
516 /* set up notifiers */ 526 /* set up notifiers */
@@ -525,10 +535,21 @@ static int rtlx_module_init(void)
525 setup_irq(rtlx_irq_num, &rtlx_irq); 535 setup_irq(rtlx_irq_num, &rtlx_irq);
526 536
527 return 0; 537 return 0;
538
539out_chrdev:
540 for (i = 0; i < RTLX_CHANNELS; i++)
541 device_destroy(mt_class, MKDEV(major, i));
542
543 return err;
528} 544}
529 545
530static void __exit rtlx_module_exit(void) 546static void __exit rtlx_module_exit(void)
531{ 547{
548 int i;
549
550 for (i = 0; i < RTLX_CHANNELS; i++)
551 device_destroy(mt_class, MKDEV(major, i));
552
532 unregister_chrdev(major, module_name); 553 unregister_chrdev(major, module_name);
533} 554}
534 555
diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
index 39add2341aa2..ee8802b59758 100644
--- a/arch/mips/kernel/scall64-n32.S
+++ b/arch/mips/kernel/scall64-n32.S
@@ -217,7 +217,7 @@ EXPORT(sysn32_call_table)
217 PTR sys32_gettimeofday 217 PTR sys32_gettimeofday
218 PTR compat_sys_getrlimit /* 6095 */ 218 PTR compat_sys_getrlimit /* 6095 */
219 PTR compat_sys_getrusage 219 PTR compat_sys_getrusage
220 PTR sys32_sysinfo 220 PTR compat_sys_sysinfo
221 PTR compat_sys_times 221 PTR compat_sys_times
222 PTR sys32_ptrace 222 PTR sys32_ptrace
223 PTR sys_getuid /* 6100 */ 223 PTR sys_getuid /* 6100 */
diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S
index c58b8e0105ea..c5f590ca99b0 100644
--- a/arch/mips/kernel/scall64-o32.S
+++ b/arch/mips/kernel/scall64-o32.S
@@ -321,7 +321,7 @@ sys_call_table:
321 PTR sys_ni_syscall /* sys_vm86 */ 321 PTR sys_ni_syscall /* sys_vm86 */
322 PTR compat_sys_wait4 322 PTR compat_sys_wait4
323 PTR sys_swapoff /* 4115 */ 323 PTR sys_swapoff /* 4115 */
324 PTR sys32_sysinfo 324 PTR compat_sys_sysinfo
325 PTR sys32_ipc 325 PTR sys32_ipc
326 PTR sys_fsync 326 PTR sys_fsync
327 PTR sys32_sigreturn 327 PTR sys32_sigreturn
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
index d2e01e7167b8..394540fad769 100644
--- a/arch/mips/kernel/setup.c
+++ b/arch/mips/kernel/setup.c
@@ -452,7 +452,7 @@ static void __init arch_mem_init(char **cmdline_p)
452 print_memory_map(); 452 print_memory_map();
453 453
454 strlcpy(command_line, arcs_cmdline, sizeof(command_line)); 454 strlcpy(command_line, arcs_cmdline, sizeof(command_line));
455 strlcpy(saved_command_line, command_line, COMMAND_LINE_SIZE); 455 strlcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
456 456
457 *cmdline_p = command_line; 457 *cmdline_p = command_line;
458 458
diff --git a/arch/mips/kernel/signal-common.h b/arch/mips/kernel/signal-common.h
index b1f09d54ebe6..9a8abd67ec5c 100644
--- a/arch/mips/kernel/signal-common.h
+++ b/arch/mips/kernel/signal-common.h
@@ -8,169 +8,57 @@
8 * Copyright (C) 1999, 2000 Silicon Graphics, Inc. 8 * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
9 */ 9 */
10 10
11#ifndef __SIGNAL_COMMON_H
12#define __SIGNAL_COMMON_H
11 13
12static inline int 14/* #define DEBUG_SIG */
13setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc)
14{
15 int err = 0;
16 15
17 err |= __put_user(regs->cp0_epc, &sc->sc_pc); 16#ifdef DEBUG_SIG
17# define DEBUGP(fmt, args...) printk("%s: " fmt, __FUNCTION__ , ##args)
18#else
19# define DEBUGP(fmt, args...)
20#endif
18 21
19#define save_gp_reg(i) do { \ 22/*
20 err |= __put_user(regs->regs[i], &sc->sc_regs[i]); \ 23 * Horribly complicated - with the bloody RM9000 workarounds enabled
21} while(0) 24 * the signal trampolines is moving to the end of the structure so we can
22 __put_user(0, &sc->sc_regs[0]); save_gp_reg(1); save_gp_reg(2); 25 * increase the alignment without breaking software compatibility.
23 save_gp_reg(3); save_gp_reg(4); save_gp_reg(5); save_gp_reg(6); 26 */
24 save_gp_reg(7); save_gp_reg(8); save_gp_reg(9); save_gp_reg(10); 27#if ICACHE_REFILLS_WORKAROUND_WAR == 0
25 save_gp_reg(11); save_gp_reg(12); save_gp_reg(13); save_gp_reg(14);
26 save_gp_reg(15); save_gp_reg(16); save_gp_reg(17); save_gp_reg(18);
27 save_gp_reg(19); save_gp_reg(20); save_gp_reg(21); save_gp_reg(22);
28 save_gp_reg(23); save_gp_reg(24); save_gp_reg(25); save_gp_reg(26);
29 save_gp_reg(27); save_gp_reg(28); save_gp_reg(29); save_gp_reg(30);
30 save_gp_reg(31);
31#undef save_gp_reg
32
33 err |= __put_user(regs->hi, &sc->sc_mdhi);
34 err |= __put_user(regs->lo, &sc->sc_mdlo);
35 if (cpu_has_dsp) {
36 err |= __put_user(mfhi1(), &sc->sc_hi1);
37 err |= __put_user(mflo1(), &sc->sc_lo1);
38 err |= __put_user(mfhi2(), &sc->sc_hi2);
39 err |= __put_user(mflo2(), &sc->sc_lo2);
40 err |= __put_user(mfhi3(), &sc->sc_hi3);
41 err |= __put_user(mflo3(), &sc->sc_lo3);
42 err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp);
43 }
44
45 err |= __put_user(!!used_math(), &sc->sc_used_math);
46
47 if (!used_math())
48 goto out;
49
50 /*
51 * Save FPU state to signal context. Signal handler will "inherit"
52 * current FPU state.
53 */
54 preempt_disable();
55
56 if (!is_fpu_owner()) {
57 own_fpu();
58 restore_fp(current);
59 }
60 err |= save_fp_context(sc);
61
62 preempt_enable();
63
64out:
65 return err;
66}
67
68static inline int
69restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc)
70{
71 unsigned int used_math;
72 unsigned long treg;
73 int err = 0;
74
75 /* Always make any pending restarted system calls return -EINTR */
76 current_thread_info()->restart_block.fn = do_no_restart_syscall;
77
78 err |= __get_user(regs->cp0_epc, &sc->sc_pc);
79 err |= __get_user(regs->hi, &sc->sc_mdhi);
80 err |= __get_user(regs->lo, &sc->sc_mdlo);
81 if (cpu_has_dsp) {
82 err |= __get_user(treg, &sc->sc_hi1); mthi1(treg);
83 err |= __get_user(treg, &sc->sc_lo1); mtlo1(treg);
84 err |= __get_user(treg, &sc->sc_hi2); mthi2(treg);
85 err |= __get_user(treg, &sc->sc_lo2); mtlo2(treg);
86 err |= __get_user(treg, &sc->sc_hi3); mthi3(treg);
87 err |= __get_user(treg, &sc->sc_lo3); mtlo3(treg);
88 err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK);
89 }
90
91#define restore_gp_reg(i) do { \
92 err |= __get_user(regs->regs[i], &sc->sc_regs[i]); \
93} while(0)
94 restore_gp_reg( 1); restore_gp_reg( 2); restore_gp_reg( 3);
95 restore_gp_reg( 4); restore_gp_reg( 5); restore_gp_reg( 6);
96 restore_gp_reg( 7); restore_gp_reg( 8); restore_gp_reg( 9);
97 restore_gp_reg(10); restore_gp_reg(11); restore_gp_reg(12);
98 restore_gp_reg(13); restore_gp_reg(14); restore_gp_reg(15);
99 restore_gp_reg(16); restore_gp_reg(17); restore_gp_reg(18);
100 restore_gp_reg(19); restore_gp_reg(20); restore_gp_reg(21);
101 restore_gp_reg(22); restore_gp_reg(23); restore_gp_reg(24);
102 restore_gp_reg(25); restore_gp_reg(26); restore_gp_reg(27);
103 restore_gp_reg(28); restore_gp_reg(29); restore_gp_reg(30);
104 restore_gp_reg(31);
105#undef restore_gp_reg
106 28
107 err |= __get_user(used_math, &sc->sc_used_math); 29struct sigframe {
108 conditional_used_math(used_math); 30 u32 sf_ass[4]; /* argument save space for o32 */
31 u32 sf_code[2]; /* signal trampoline */
32 struct sigcontext sf_sc;
33 sigset_t sf_mask;
34};
109 35
110 preempt_disable(); 36#else /* ICACHE_REFILLS_WORKAROUND_WAR */
111 37
112 if (used_math()) { 38struct sigframe {
113 /* restore fpu context if we have used it before */ 39 u32 sf_ass[4]; /* argument save space for o32 */
114 own_fpu(); 40 u32 sf_pad[2];
115 err |= restore_fp_context(sc); 41 struct sigcontext sf_sc; /* hw context */
116 } else { 42 sigset_t sf_mask;
117 /* signal handler may have used FPU. Give it up. */ 43 u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */
118 lose_fpu(); 44};
119 }
120 45
121 preempt_enable(); 46#endif /* !ICACHE_REFILLS_WORKAROUND_WAR */
122 47
123 return err; 48/*
124} 49 * handle hardware context
50 */
51extern int setup_sigcontext(struct pt_regs *, struct sigcontext __user *);
52extern int restore_sigcontext(struct pt_regs *, struct sigcontext __user *);
125 53
126/* 54/*
127 * Determine which stack to use.. 55 * Determine which stack to use..
128 */ 56 */
129static inline void __user * 57extern void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
130get_sigframe(struct k_sigaction *ka, struct pt_regs *regs, size_t frame_size) 58 size_t frame_size);
131{ 59/*
132 unsigned long sp; 60 * install trampoline code to get back from the sig handler
133 61 */
134 /* Default to using normal stack */ 62extern int install_sigtramp(unsigned int __user *tramp, unsigned int syscall);
135 sp = regs->regs[29];
136
137 /*
138 * FPU emulator may have it's own trampoline active just
139 * above the user stack, 16-bytes before the next lowest
140 * 16 byte boundary. Try to avoid trashing it.
141 */
142 sp -= 32;
143
144 /* This is the X/Open sanctioned signal stack switching. */
145 if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags (sp) == 0))
146 sp = current->sas_ss_sp + current->sas_ss_size;
147
148 return (void __user *)((sp - frame_size) & (ICACHE_REFILLS_WORKAROUND_WAR ? ~(cpu_icache_line_size()-1) : ALMASK));
149}
150
151static inline int install_sigtramp(unsigned int __user *tramp,
152 unsigned int syscall)
153{
154 int err;
155
156 /*
157 * Set up the return code ...
158 *
159 * li v0, __NR__foo_sigreturn
160 * syscall
161 */
162
163 err = __put_user(0x24020000 + syscall, tramp + 0);
164 err |= __put_user(0x0000000c , tramp + 1);
165 if (ICACHE_REFILLS_WORKAROUND_WAR) {
166 err |= __put_user(0, tramp + 2);
167 err |= __put_user(0, tramp + 3);
168 err |= __put_user(0, tramp + 4);
169 err |= __put_user(0, tramp + 5);
170 err |= __put_user(0, tramp + 6);
171 err |= __put_user(0, tramp + 7);
172 }
173 flush_cache_sigtramp((unsigned long) tramp);
174 63
175 return err; 64#endif /* __SIGNAL_COMMON_H */
176}
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c
index 9a44053cd9f1..54398af2371f 100644
--- a/arch/mips/kernel/signal.c
+++ b/arch/mips/kernel/signal.c
@@ -34,18 +34,174 @@
34 34
35#include "signal-common.h" 35#include "signal-common.h"
36 36
37#define DEBUG_SIG 0
38
39#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 37#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
40 38
39#if ICACHE_REFILLS_WORKAROUND_WAR == 0
40
41struct rt_sigframe {
42 u32 rs_ass[4]; /* argument save space for o32 */
43 u32 rs_code[2]; /* signal trampoline */
44 struct siginfo rs_info;
45 struct ucontext rs_uc;
46};
47
48#else
49
50struct rt_sigframe {
51 u32 rs_ass[4]; /* argument save space for o32 */
52 u32 rs_pad[2];
53 struct siginfo rs_info;
54 struct ucontext rs_uc;
55 u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */
56};
57
58#endif
59
60/*
61 * Helper routines
62 */
63int setup_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc)
64{
65 int err = 0;
66 int i;
67
68 err |= __put_user(regs->cp0_epc, &sc->sc_pc);
69
70 err |= __put_user(0, &sc->sc_regs[0]);
71 for (i = 1; i < 32; i++)
72 err |= __put_user(regs->regs[i], &sc->sc_regs[i]);
73
74 err |= __put_user(regs->hi, &sc->sc_mdhi);
75 err |= __put_user(regs->lo, &sc->sc_mdlo);
76 if (cpu_has_dsp) {
77 err |= __put_user(mfhi1(), &sc->sc_hi1);
78 err |= __put_user(mflo1(), &sc->sc_lo1);
79 err |= __put_user(mfhi2(), &sc->sc_hi2);
80 err |= __put_user(mflo2(), &sc->sc_lo2);
81 err |= __put_user(mfhi3(), &sc->sc_hi3);
82 err |= __put_user(mflo3(), &sc->sc_lo3);
83 err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp);
84 }
85
86 err |= __put_user(!!used_math(), &sc->sc_used_math);
87
88 if (used_math()) {
89 /*
90 * Save FPU state to signal context. Signal handler
91 * will "inherit" current FPU state.
92 */
93 preempt_disable();
94
95 if (!is_fpu_owner()) {
96 own_fpu();
97 restore_fp(current);
98 }
99 err |= save_fp_context(sc);
100
101 preempt_enable();
102 }
103 return err;
104}
105
106int restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc)
107{
108 unsigned int used_math;
109 unsigned long treg;
110 int err = 0;
111 int i;
112
113 /* Always make any pending restarted system calls return -EINTR */
114 current_thread_info()->restart_block.fn = do_no_restart_syscall;
115
116 err |= __get_user(regs->cp0_epc, &sc->sc_pc);
117 err |= __get_user(regs->hi, &sc->sc_mdhi);
118 err |= __get_user(regs->lo, &sc->sc_mdlo);
119 if (cpu_has_dsp) {
120 err |= __get_user(treg, &sc->sc_hi1); mthi1(treg);
121 err |= __get_user(treg, &sc->sc_lo1); mtlo1(treg);
122 err |= __get_user(treg, &sc->sc_hi2); mthi2(treg);
123 err |= __get_user(treg, &sc->sc_lo2); mtlo2(treg);
124 err |= __get_user(treg, &sc->sc_hi3); mthi3(treg);
125 err |= __get_user(treg, &sc->sc_lo3); mtlo3(treg);
126 err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK);
127 }
128
129 for (i = 1; i < 32; i++)
130 err |= __get_user(regs->regs[i], &sc->sc_regs[i]);
131
132 err |= __get_user(used_math, &sc->sc_used_math);
133 conditional_used_math(used_math);
134
135 preempt_disable();
136
137 if (used_math()) {
138 /* restore fpu context if we have used it before */
139 own_fpu();
140 err |= restore_fp_context(sc);
141 } else {
142 /* signal handler may have used FPU. Give it up. */
143 lose_fpu();
144 }
145
146 preempt_enable();
147
148 return err;
149}
150
151void __user *get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
152 size_t frame_size)
153{
154 unsigned long sp;
155
156 /* Default to using normal stack */
157 sp = regs->regs[29];
158
159 /*
160 * FPU emulator may have it's own trampoline active just
161 * above the user stack, 16-bytes before the next lowest
162 * 16 byte boundary. Try to avoid trashing it.
163 */
164 sp -= 32;
165
166 /* This is the X/Open sanctioned signal stack switching. */
167 if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags (sp) == 0))
168 sp = current->sas_ss_sp + current->sas_ss_size;
169
170 return (void __user *)((sp - frame_size) & (ICACHE_REFILLS_WORKAROUND_WAR ? ~(cpu_icache_line_size()-1) : ALMASK));
171}
172
173int install_sigtramp(unsigned int __user *tramp, unsigned int syscall)
174{
175 int err;
176
177 /*
178 * Set up the return code ...
179 *
180 * li v0, __NR__foo_sigreturn
181 * syscall
182 */
183
184 err = __put_user(0x24020000 + syscall, tramp + 0);
185 err |= __put_user(0x0000000c , tramp + 1);
186 if (ICACHE_REFILLS_WORKAROUND_WAR) {
187 err |= __put_user(0, tramp + 2);
188 err |= __put_user(0, tramp + 3);
189 err |= __put_user(0, tramp + 4);
190 err |= __put_user(0, tramp + 5);
191 err |= __put_user(0, tramp + 6);
192 err |= __put_user(0, tramp + 7);
193 }
194 flush_cache_sigtramp((unsigned long) tramp);
195
196 return err;
197}
198
41/* 199/*
42 * Atomically swap in the new signal mask, and wait for a signal. 200 * Atomically swap in the new signal mask, and wait for a signal.
43 */ 201 */
44 202
45#ifdef CONFIG_TRAD_SIGNALS 203#ifdef CONFIG_TRAD_SIGNALS
46save_static_function(sys_sigsuspend); 204asmlinkage int sys_sigsuspend(nabi_no_regargs struct pt_regs regs)
47__attribute_used__ noinline static int
48_sys_sigsuspend(nabi_no_regargs struct pt_regs regs)
49{ 205{
50 sigset_t newset; 206 sigset_t newset;
51 sigset_t __user *uset; 207 sigset_t __user *uset;
@@ -68,9 +224,7 @@ _sys_sigsuspend(nabi_no_regargs struct pt_regs regs)
68} 224}
69#endif 225#endif
70 226
71save_static_function(sys_rt_sigsuspend); 227asmlinkage int sys_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
72__attribute_used__ noinline static int
73_sys_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
74{ 228{
75 sigset_t newset; 229 sigset_t newset;
76 sigset_t __user *unewset; 230 sigset_t __user *unewset;
@@ -148,45 +302,8 @@ asmlinkage int sys_sigaltstack(nabi_no_regargs struct pt_regs regs)
148 return do_sigaltstack(uss, uoss, usp); 302 return do_sigaltstack(uss, uoss, usp);
149} 303}
150 304
151/*
152 * Horribly complicated - with the bloody RM9000 workarounds enabled
153 * the signal trampolines is moving to the end of the structure so we can
154 * increase the alignment without breaking software compatibility.
155 */
156#ifdef CONFIG_TRAD_SIGNALS 305#ifdef CONFIG_TRAD_SIGNALS
157struct sigframe { 306asmlinkage void sys_sigreturn(nabi_no_regargs struct pt_regs regs)
158 u32 sf_ass[4]; /* argument save space for o32 */
159#if ICACHE_REFILLS_WORKAROUND_WAR
160 u32 sf_pad[2];
161#else
162 u32 sf_code[2]; /* signal trampoline */
163#endif
164 struct sigcontext sf_sc;
165 sigset_t sf_mask;
166#if ICACHE_REFILLS_WORKAROUND_WAR
167 u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */
168#endif
169};
170#endif
171
172struct rt_sigframe {
173 u32 rs_ass[4]; /* argument save space for o32 */
174#if ICACHE_REFILLS_WORKAROUND_WAR
175 u32 rs_pad[2];
176#else
177 u32 rs_code[2]; /* signal trampoline */
178#endif
179 struct siginfo rs_info;
180 struct ucontext rs_uc;
181#if ICACHE_REFILLS_WORKAROUND_WAR
182 u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */
183#endif
184};
185
186#ifdef CONFIG_TRAD_SIGNALS
187save_static_function(sys_sigreturn);
188__attribute_used__ noinline static void
189_sys_sigreturn(nabi_no_regargs struct pt_regs regs)
190{ 307{
191 struct sigframe __user *frame; 308 struct sigframe __user *frame;
192 sigset_t blocked; 309 sigset_t blocked;
@@ -221,9 +338,7 @@ badframe:
221} 338}
222#endif /* CONFIG_TRAD_SIGNALS */ 339#endif /* CONFIG_TRAD_SIGNALS */
223 340
224save_static_function(sys_rt_sigreturn); 341asmlinkage void sys_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
225__attribute_used__ noinline static void
226_sys_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
227{ 342{
228 struct rt_sigframe __user *frame; 343 struct rt_sigframe __user *frame;
229 sigset_t set; 344 sigset_t set;
@@ -275,7 +390,7 @@ int setup_frame(struct k_sigaction * ka, struct pt_regs *regs,
275 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 390 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
276 goto give_sigsegv; 391 goto give_sigsegv;
277 392
278 install_sigtramp(frame->sf_code, __NR_sigreturn); 393 err |= install_sigtramp(frame->sf_code, __NR_sigreturn);
279 394
280 err |= setup_sigcontext(regs, &frame->sf_sc); 395 err |= setup_sigcontext(regs, &frame->sf_sc);
281 err |= __copy_to_user(&frame->sf_mask, set, sizeof(*set)); 396 err |= __copy_to_user(&frame->sf_mask, set, sizeof(*set));
@@ -299,11 +414,9 @@ int setup_frame(struct k_sigaction * ka, struct pt_regs *regs,
299 regs->regs[31] = (unsigned long) frame->sf_code; 414 regs->regs[31] = (unsigned long) frame->sf_code;
300 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; 415 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler;
301 416
302#if DEBUG_SIG 417 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n",
303 printk("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%p\n",
304 current->comm, current->pid, 418 current->comm, current->pid,
305 frame, regs->cp0_epc, frame->regs[31]); 419 frame, regs->cp0_epc, regs->regs[31]);
306#endif
307 return 0; 420 return 0;
308 421
309give_sigsegv: 422give_sigsegv:
@@ -322,7 +435,7 @@ int setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs,
322 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 435 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
323 goto give_sigsegv; 436 goto give_sigsegv;
324 437
325 install_sigtramp(frame->rs_code, __NR_rt_sigreturn); 438 err |= install_sigtramp(frame->rs_code, __NR_rt_sigreturn);
326 439
327 /* Create siginfo. */ 440 /* Create siginfo. */
328 err |= copy_siginfo_to_user(&frame->rs_info, info); 441 err |= copy_siginfo_to_user(&frame->rs_info, info);
@@ -359,11 +472,10 @@ int setup_rt_frame(struct k_sigaction * ka, struct pt_regs *regs,
359 regs->regs[31] = (unsigned long) frame->rs_code; 472 regs->regs[31] = (unsigned long) frame->rs_code;
360 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; 473 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler;
361 474
362#if DEBUG_SIG 475 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n",
363 printk("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%p\n",
364 current->comm, current->pid, 476 current->comm, current->pid,
365 frame, regs->cp0_epc, regs->regs[31]); 477 frame, regs->cp0_epc, regs->regs[31]);
366#endif 478
367 return 0; 479 return 0;
368 480
369give_sigsegv: 481give_sigsegv:
@@ -371,7 +483,7 @@ give_sigsegv:
371 return -EFAULT; 483 return -EFAULT;
372} 484}
373 485
374static inline int handle_signal(unsigned long sig, siginfo_t *info, 486static int handle_signal(unsigned long sig, siginfo_t *info,
375 struct k_sigaction *ka, sigset_t *oldset, struct pt_regs *regs) 487 struct k_sigaction *ka, sigset_t *oldset, struct pt_regs *regs)
376{ 488{
377 int ret; 489 int ret;
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c
index c86a5ddff050..183fc7e55f34 100644
--- a/arch/mips/kernel/signal32.c
+++ b/arch/mips/kernel/signal32.c
@@ -33,6 +33,8 @@
33#include <asm/fpu.h> 33#include <asm/fpu.h>
34#include <asm/war.h> 34#include <asm/war.h>
35 35
36#include "signal-common.h"
37
36#define SI_PAD_SIZE32 ((SI_MAX_SIZE/sizeof(int)) - 3) 38#define SI_PAD_SIZE32 ((SI_MAX_SIZE/sizeof(int)) - 3)
37 39
38typedef struct compat_siginfo { 40typedef struct compat_siginfo {
@@ -102,8 +104,6 @@ typedef struct compat_siginfo {
102#define __NR_O32_rt_sigreturn 4193 104#define __NR_O32_rt_sigreturn 4193
103#define __NR_O32_restart_syscall 4253 105#define __NR_O32_restart_syscall 4253
104 106
105#define DEBUG_SIG 0
106
107#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 107#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
108 108
109/* 32-bit compatibility types */ 109/* 32-bit compatibility types */
@@ -139,6 +139,123 @@ struct ucontext32 {
139 sigset_t32 uc_sigmask; /* mask last for extensibility */ 139 sigset_t32 uc_sigmask; /* mask last for extensibility */
140}; 140};
141 141
142#if ICACHE_REFILLS_WORKAROUND_WAR == 0
143
144struct rt_sigframe32 {
145 u32 rs_ass[4]; /* argument save space for o32 */
146 u32 rs_code[2]; /* signal trampoline */
147 compat_siginfo_t rs_info;
148 struct ucontext32 rs_uc;
149};
150
151#else /* ICACHE_REFILLS_WORKAROUND_WAR */
152
153struct rt_sigframe32 {
154 u32 rs_ass[4]; /* argument save space for o32 */
155 u32 rs_pad[2];
156 compat_siginfo_t rs_info;
157 struct ucontext32 rs_uc;
158 u32 rs_code[8] __attribute__((aligned(32))); /* signal trampoline */
159};
160
161#endif /* !ICACHE_REFILLS_WORKAROUND_WAR */
162
163/*
164 * sigcontext handlers
165 */
166static int setup_sigcontext32(struct pt_regs *regs,
167 struct sigcontext32 __user *sc)
168{
169 int err = 0;
170 int i;
171
172 err |= __put_user(regs->cp0_epc, &sc->sc_pc);
173
174 err |= __put_user(0, &sc->sc_regs[0]);
175 for (i = 1; i < 32; i++)
176 err |= __put_user(regs->regs[i], &sc->sc_regs[i]);
177
178 err |= __put_user(regs->hi, &sc->sc_mdhi);
179 err |= __put_user(regs->lo, &sc->sc_mdlo);
180 if (cpu_has_dsp) {
181 err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp);
182 err |= __put_user(mfhi1(), &sc->sc_hi1);
183 err |= __put_user(mflo1(), &sc->sc_lo1);
184 err |= __put_user(mfhi2(), &sc->sc_hi2);
185 err |= __put_user(mflo2(), &sc->sc_lo2);
186 err |= __put_user(mfhi3(), &sc->sc_hi3);
187 err |= __put_user(mflo3(), &sc->sc_lo3);
188 }
189
190 err |= __put_user(!!used_math(), &sc->sc_used_math);
191
192 if (used_math()) {
193 /*
194 * Save FPU state to signal context. Signal handler
195 * will "inherit" current FPU state.
196 */
197 preempt_disable();
198
199 if (!is_fpu_owner()) {
200 own_fpu();
201 restore_fp(current);
202 }
203 err |= save_fp_context32(sc);
204
205 preempt_enable();
206 }
207 return err;
208}
209
210static int restore_sigcontext32(struct pt_regs *regs,
211 struct sigcontext32 __user *sc)
212{
213 u32 used_math;
214 int err = 0;
215 s32 treg;
216 int i;
217
218 /* Always make any pending restarted system calls return -EINTR */
219 current_thread_info()->restart_block.fn = do_no_restart_syscall;
220
221 err |= __get_user(regs->cp0_epc, &sc->sc_pc);
222 err |= __get_user(regs->hi, &sc->sc_mdhi);
223 err |= __get_user(regs->lo, &sc->sc_mdlo);
224 if (cpu_has_dsp) {
225 err |= __get_user(treg, &sc->sc_hi1); mthi1(treg);
226 err |= __get_user(treg, &sc->sc_lo1); mtlo1(treg);
227 err |= __get_user(treg, &sc->sc_hi2); mthi2(treg);
228 err |= __get_user(treg, &sc->sc_lo2); mtlo2(treg);
229 err |= __get_user(treg, &sc->sc_hi3); mthi3(treg);
230 err |= __get_user(treg, &sc->sc_lo3); mtlo3(treg);
231 err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK);
232 }
233
234 for (i = 1; i < 32; i++)
235 err |= __get_user(regs->regs[i], &sc->sc_regs[i]);
236
237 err |= __get_user(used_math, &sc->sc_used_math);
238 conditional_used_math(used_math);
239
240 preempt_disable();
241
242 if (used_math()) {
243 /* restore fpu context if we have used it before */
244 own_fpu();
245 err |= restore_fp_context32(sc);
246 } else {
247 /* signal handler may have used FPU. Give it up. */
248 lose_fpu();
249 }
250
251 preempt_enable();
252
253 return err;
254}
255
256/*
257 *
258 */
142extern void __put_sigset_unknown_nsig(void); 259extern void __put_sigset_unknown_nsig(void);
143extern void __get_sigset_unknown_nsig(void); 260extern void __get_sigset_unknown_nsig(void);
144 261
@@ -191,9 +308,7 @@ static inline int get_sigset(sigset_t *kbuf, const compat_sigset_t __user *ubuf)
191 * Atomically swap in the new signal mask, and wait for a signal. 308 * Atomically swap in the new signal mask, and wait for a signal.
192 */ 309 */
193 310
194save_static_function(sys32_sigsuspend); 311asmlinkage int sys32_sigsuspend(nabi_no_regargs struct pt_regs regs)
195__attribute_used__ noinline static int
196_sys32_sigsuspend(nabi_no_regargs struct pt_regs regs)
197{ 312{
198 compat_sigset_t __user *uset; 313 compat_sigset_t __user *uset;
199 sigset_t newset; 314 sigset_t newset;
@@ -215,9 +330,7 @@ _sys32_sigsuspend(nabi_no_regargs struct pt_regs regs)
215 return -ERESTARTNOHAND; 330 return -ERESTARTNOHAND;
216} 331}
217 332
218save_static_function(sys32_rt_sigsuspend); 333asmlinkage int sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
219__attribute_used__ noinline static int
220_sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
221{ 334{
222 compat_sigset_t __user *uset; 335 compat_sigset_t __user *uset;
223 sigset_t newset; 336 sigset_t newset;
@@ -326,91 +439,6 @@ asmlinkage int sys32_sigaltstack(nabi_no_regargs struct pt_regs regs)
326 return ret; 439 return ret;
327} 440}
328 441
329static int restore_sigcontext32(struct pt_regs *regs, struct sigcontext32 __user *sc)
330{
331 u32 used_math;
332 int err = 0;
333 s32 treg;
334
335 /* Always make any pending restarted system calls return -EINTR */
336 current_thread_info()->restart_block.fn = do_no_restart_syscall;
337
338 err |= __get_user(regs->cp0_epc, &sc->sc_pc);
339 err |= __get_user(regs->hi, &sc->sc_mdhi);
340 err |= __get_user(regs->lo, &sc->sc_mdlo);
341 if (cpu_has_dsp) {
342 err |= __get_user(treg, &sc->sc_hi1); mthi1(treg);
343 err |= __get_user(treg, &sc->sc_lo1); mtlo1(treg);
344 err |= __get_user(treg, &sc->sc_hi2); mthi2(treg);
345 err |= __get_user(treg, &sc->sc_lo2); mtlo2(treg);
346 err |= __get_user(treg, &sc->sc_hi3); mthi3(treg);
347 err |= __get_user(treg, &sc->sc_lo3); mtlo3(treg);
348 err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK);
349 }
350
351#define restore_gp_reg(i) do { \
352 err |= __get_user(regs->regs[i], &sc->sc_regs[i]); \
353} while(0)
354 restore_gp_reg( 1); restore_gp_reg( 2); restore_gp_reg( 3);
355 restore_gp_reg( 4); restore_gp_reg( 5); restore_gp_reg( 6);
356 restore_gp_reg( 7); restore_gp_reg( 8); restore_gp_reg( 9);
357 restore_gp_reg(10); restore_gp_reg(11); restore_gp_reg(12);
358 restore_gp_reg(13); restore_gp_reg(14); restore_gp_reg(15);
359 restore_gp_reg(16); restore_gp_reg(17); restore_gp_reg(18);
360 restore_gp_reg(19); restore_gp_reg(20); restore_gp_reg(21);
361 restore_gp_reg(22); restore_gp_reg(23); restore_gp_reg(24);
362 restore_gp_reg(25); restore_gp_reg(26); restore_gp_reg(27);
363 restore_gp_reg(28); restore_gp_reg(29); restore_gp_reg(30);
364 restore_gp_reg(31);
365#undef restore_gp_reg
366
367 err |= __get_user(used_math, &sc->sc_used_math);
368 conditional_used_math(used_math);
369
370 preempt_disable();
371
372 if (used_math()) {
373 /* restore fpu context if we have used it before */
374 own_fpu();
375 err |= restore_fp_context32(sc);
376 } else {
377 /* signal handler may have used FPU. Give it up. */
378 lose_fpu();
379 }
380
381 preempt_enable();
382
383 return err;
384}
385
386struct sigframe {
387 u32 sf_ass[4]; /* argument save space for o32 */
388#if ICACHE_REFILLS_WORKAROUND_WAR
389 u32 sf_pad[2];
390#else
391 u32 sf_code[2]; /* signal trampoline */
392#endif
393 struct sigcontext32 sf_sc;
394 sigset_t sf_mask;
395#if ICACHE_REFILLS_WORKAROUND_WAR
396 u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */
397#endif
398};
399
400struct rt_sigframe32 {
401 u32 rs_ass[4]; /* argument save space for o32 */
402#if ICACHE_REFILLS_WORKAROUND_WAR
403 u32 rs_pad[2];
404#else
405 u32 rs_code[2]; /* signal trampoline */
406#endif
407 compat_siginfo_t rs_info;
408 struct ucontext32 rs_uc;
409#if ICACHE_REFILLS_WORKAROUND_WAR
410 u32 rs_code[8] __attribute__((aligned(32))); /* signal trampoline */
411#endif
412};
413
414int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from) 442int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from)
415{ 443{
416 int err; 444 int err;
@@ -463,9 +491,7 @@ int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from)
463 return err; 491 return err;
464} 492}
465 493
466save_static_function(sys32_sigreturn); 494asmlinkage void sys32_sigreturn(nabi_no_regargs struct pt_regs regs)
467__attribute_used__ noinline static void
468_sys32_sigreturn(nabi_no_regargs struct pt_regs regs)
469{ 495{
470 struct sigframe __user *frame; 496 struct sigframe __user *frame;
471 sigset_t blocked; 497 sigset_t blocked;
@@ -499,9 +525,7 @@ badframe:
499 force_sig(SIGSEGV, current); 525 force_sig(SIGSEGV, current);
500} 526}
501 527
502save_static_function(sys32_rt_sigreturn); 528asmlinkage void sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
503__attribute_used__ noinline static void
504_sys32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
505{ 529{
506 struct rt_sigframe32 __user *frame; 530 struct rt_sigframe32 __user *frame;
507 mm_segment_t old_fs; 531 mm_segment_t old_fs;
@@ -554,89 +578,6 @@ badframe:
554 force_sig(SIGSEGV, current); 578 force_sig(SIGSEGV, current);
555} 579}
556 580
557static inline int setup_sigcontext32(struct pt_regs *regs,
558 struct sigcontext32 __user *sc)
559{
560 int err = 0;
561
562 err |= __put_user(regs->cp0_epc, &sc->sc_pc);
563 err |= __put_user(regs->cp0_status, &sc->sc_status);
564
565#define save_gp_reg(i) { \
566 err |= __put_user(regs->regs[i], &sc->sc_regs[i]); \
567} while(0)
568 __put_user(0, &sc->sc_regs[0]); save_gp_reg(1); save_gp_reg(2);
569 save_gp_reg(3); save_gp_reg(4); save_gp_reg(5); save_gp_reg(6);
570 save_gp_reg(7); save_gp_reg(8); save_gp_reg(9); save_gp_reg(10);
571 save_gp_reg(11); save_gp_reg(12); save_gp_reg(13); save_gp_reg(14);
572 save_gp_reg(15); save_gp_reg(16); save_gp_reg(17); save_gp_reg(18);
573 save_gp_reg(19); save_gp_reg(20); save_gp_reg(21); save_gp_reg(22);
574 save_gp_reg(23); save_gp_reg(24); save_gp_reg(25); save_gp_reg(26);
575 save_gp_reg(27); save_gp_reg(28); save_gp_reg(29); save_gp_reg(30);
576 save_gp_reg(31);
577#undef save_gp_reg
578
579 err |= __put_user(regs->hi, &sc->sc_mdhi);
580 err |= __put_user(regs->lo, &sc->sc_mdlo);
581 if (cpu_has_dsp) {
582 err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp);
583 err |= __put_user(mfhi1(), &sc->sc_hi1);
584 err |= __put_user(mflo1(), &sc->sc_lo1);
585 err |= __put_user(mfhi2(), &sc->sc_hi2);
586 err |= __put_user(mflo2(), &sc->sc_lo2);
587 err |= __put_user(mfhi3(), &sc->sc_hi3);
588 err |= __put_user(mflo3(), &sc->sc_lo3);
589 }
590
591 err |= __put_user(!!used_math(), &sc->sc_used_math);
592
593 if (!used_math())
594 goto out;
595
596 /*
597 * Save FPU state to signal context. Signal handler will "inherit"
598 * current FPU state.
599 */
600 preempt_disable();
601
602 if (!is_fpu_owner()) {
603 own_fpu();
604 restore_fp(current);
605 }
606 err |= save_fp_context32(sc);
607
608 preempt_enable();
609
610out:
611 return err;
612}
613
614/*
615 * Determine which stack to use..
616 */
617static inline void __user *get_sigframe(struct k_sigaction *ka,
618 struct pt_regs *regs,
619 size_t frame_size)
620{
621 unsigned long sp;
622
623 /* Default to using normal stack */
624 sp = regs->regs[29];
625
626 /*
627 * FPU emulator may have it's own trampoline active just
628 * above the user stack, 16-bytes before the next lowest
629 * 16 byte boundary. Try to avoid trashing it.
630 */
631 sp -= 32;
632
633 /* This is the X/Open sanctioned signal stack switching. */
634 if ((ka->sa.sa_flags & SA_ONSTACK) && (sas_ss_flags (sp) == 0))
635 sp = current->sas_ss_sp + current->sas_ss_size;
636
637 return (void __user *)((sp - frame_size) & ALMASK);
638}
639
640int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs, 581int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
641 int signr, sigset_t *set) 582 int signr, sigset_t *set)
642{ 583{
@@ -647,15 +588,7 @@ int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
647 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 588 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
648 goto give_sigsegv; 589 goto give_sigsegv;
649 590
650 /* 591 err |= install_sigtramp(frame->sf_code, __NR_O32_sigreturn);
651 * Set up the return code ...
652 *
653 * li v0, __NR_O32_sigreturn
654 * syscall
655 */
656 err |= __put_user(0x24020000 + __NR_O32_sigreturn, frame->sf_code + 0);
657 err |= __put_user(0x0000000c , frame->sf_code + 1);
658 flush_cache_sigtramp((unsigned long) frame->sf_code);
659 592
660 err |= setup_sigcontext32(regs, &frame->sf_sc); 593 err |= setup_sigcontext32(regs, &frame->sf_sc);
661 err |= __copy_to_user(&frame->sf_mask, set, sizeof(*set)); 594 err |= __copy_to_user(&frame->sf_mask, set, sizeof(*set));
@@ -679,11 +612,10 @@ int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
679 regs->regs[31] = (unsigned long) frame->sf_code; 612 regs->regs[31] = (unsigned long) frame->sf_code;
680 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; 613 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler;
681 614
682#if DEBUG_SIG 615 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n",
683 printk("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%p\n",
684 current->comm, current->pid, 616 current->comm, current->pid,
685 frame, regs->cp0_epc, frame->sf_code); 617 frame, regs->cp0_epc, regs->regs[31]);
686#endif 618
687 return 0; 619 return 0;
688 620
689give_sigsegv: 621give_sigsegv:
@@ -702,17 +634,7 @@ int setup_rt_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
702 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame))) 634 if (!access_ok(VERIFY_WRITE, frame, sizeof (*frame)))
703 goto give_sigsegv; 635 goto give_sigsegv;
704 636
705 /* Set up to return from userspace. If provided, use a stub already 637 err |= install_sigtramp(frame->rs_code, __NR_O32_rt_sigreturn);
706 in userspace. */
707 /*
708 * Set up the return code ...
709 *
710 * li v0, __NR_O32_rt_sigreturn
711 * syscall
712 */
713 err |= __put_user(0x24020000 + __NR_O32_rt_sigreturn, frame->rs_code + 0);
714 err |= __put_user(0x0000000c , frame->rs_code + 1);
715 flush_cache_sigtramp((unsigned long) frame->rs_code);
716 638
717 /* Convert (siginfo_t -> compat_siginfo_t) and copy to user. */ 639 /* Convert (siginfo_t -> compat_siginfo_t) and copy to user. */
718 err |= copy_siginfo_to_user32(&frame->rs_info, info); 640 err |= copy_siginfo_to_user32(&frame->rs_info, info);
@@ -750,11 +672,10 @@ int setup_rt_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
750 regs->regs[31] = (unsigned long) frame->rs_code; 672 regs->regs[31] = (unsigned long) frame->rs_code;
751 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; 673 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler;
752 674
753#if DEBUG_SIG 675 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n",
754 printk("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%p\n",
755 current->comm, current->pid, 676 current->comm, current->pid,
756 frame, regs->cp0_epc, frame->rs_code); 677 frame, regs->cp0_epc, regs->regs[31]);
757#endif 678
758 return 0; 679 return 0;
759 680
760give_sigsegv: 681give_sigsegv:
diff --git a/arch/mips/kernel/signal_n32.c b/arch/mips/kernel/signal_n32.c
index b28646b3ceae..57456e6a0c62 100644
--- a/arch/mips/kernel/signal_n32.c
+++ b/arch/mips/kernel/signal_n32.c
@@ -47,8 +47,6 @@
47#define __NR_N32_rt_sigreturn 6211 47#define __NR_N32_rt_sigreturn 6211
48#define __NR_N32_restart_syscall 6214 48#define __NR_N32_restart_syscall 6214
49 49
50#define DEBUG_SIG 0
51
52#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) 50#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
53 51
54/* IRIX compatible stack_t */ 52/* IRIX compatible stack_t */
@@ -66,25 +64,30 @@ struct ucontextn32 {
66 sigset_t uc_sigmask; /* mask last for extensibility */ 64 sigset_t uc_sigmask; /* mask last for extensibility */
67}; 65};
68 66
67#if ICACHE_REFILLS_WORKAROUND_WAR == 0
68
69struct rt_sigframe_n32 { 69struct rt_sigframe_n32 {
70 u32 rs_ass[4]; /* argument save space for o32 */ 70 u32 rs_ass[4]; /* argument save space for o32 */
71#if ICACHE_REFILLS_WORKAROUND_WAR
72 u32 rs_pad[2];
73#else
74 u32 rs_code[2]; /* signal trampoline */ 71 u32 rs_code[2]; /* signal trampoline */
75#endif
76 struct siginfo rs_info; 72 struct siginfo rs_info;
77 struct ucontextn32 rs_uc; 73 struct ucontextn32 rs_uc;
78#if ICACHE_REFILLS_WORKAROUND_WAR 74};
75
76#else /* ICACHE_REFILLS_WORKAROUND_WAR */
77
78struct rt_sigframe_n32 {
79 u32 rs_ass[4]; /* argument save space for o32 */
80 u32 rs_pad[2];
81 struct siginfo rs_info;
82 struct ucontextn32 rs_uc;
79 u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */ 83 u32 rs_code[8] ____cacheline_aligned; /* signal trampoline */
80#endif
81}; 84};
82 85
86#endif /* !ICACHE_REFILLS_WORKAROUND_WAR */
87
83extern void sigset_from_compat (sigset_t *set, compat_sigset_t *compat); 88extern void sigset_from_compat (sigset_t *set, compat_sigset_t *compat);
84 89
85save_static_function(sysn32_rt_sigsuspend); 90asmlinkage int sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
86__attribute_used__ noinline static int
87_sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
88{ 91{
89 compat_sigset_t __user *unewset; 92 compat_sigset_t __user *unewset;
90 compat_sigset_t uset; 93 compat_sigset_t uset;
@@ -114,9 +117,7 @@ _sysn32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
114 return -ERESTARTNOHAND; 117 return -ERESTARTNOHAND;
115} 118}
116 119
117save_static_function(sysn32_rt_sigreturn); 120asmlinkage void sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
118__attribute_used__ noinline static void
119_sysn32_rt_sigreturn(nabi_no_regargs struct pt_regs regs)
120{ 121{
121 struct rt_sigframe_n32 __user *frame; 122 struct rt_sigframe_n32 __user *frame;
122 sigset_t set; 123 sigset_t set;
@@ -214,11 +215,10 @@ int setup_rt_frame_n32(struct k_sigaction * ka,
214 regs->regs[31] = (unsigned long) frame->rs_code; 215 regs->regs[31] = (unsigned long) frame->rs_code;
215 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler; 216 regs->cp0_epc = regs->regs[25] = (unsigned long) ka->sa.sa_handler;
216 217
217#if DEBUG_SIG 218 DEBUGP("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%lx\n",
218 printk("SIG deliver (%s:%d): sp=0x%p pc=0x%lx ra=0x%p\n",
219 current->comm, current->pid, 219 current->comm, current->pid,
220 frame, regs->cp0_epc, regs->regs[31]); 220 frame, regs->cp0_epc, regs->regs[31]);
221#endif 221
222 return 0; 222 return 0;
223 223
224give_sigsegv: 224give_sigsegv:
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c
index 8aa544f73a5e..545fcbc8cea2 100644
--- a/arch/mips/kernel/time.c
+++ b/arch/mips/kernel/time.c
@@ -455,8 +455,3 @@ EXPORT_SYMBOL(rtc_lock);
455EXPORT_SYMBOL(to_tm); 455EXPORT_SYMBOL(to_tm);
456EXPORT_SYMBOL(rtc_mips_set_time); 456EXPORT_SYMBOL(rtc_mips_set_time);
457EXPORT_SYMBOL(rtc_mips_get_time); 457EXPORT_SYMBOL(rtc_mips_get_time);
458
459unsigned long long sched_clock(void)
460{
461 return (unsigned long long)jiffies*(1000000000/HZ);
462}
diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S
index cecff24cc972..c76b793310c2 100644
--- a/arch/mips/kernel/vmlinux.lds.S
+++ b/arch/mips/kernel/vmlinux.lds.S
@@ -113,10 +113,12 @@ SECTIONS
113 references from .rodata */ 113 references from .rodata */
114 .exit.text : { *(.exit.text) } 114 .exit.text : { *(.exit.text) }
115 .exit.data : { *(.exit.data) } 115 .exit.data : { *(.exit.data) }
116#if defined(CONFIG_BLK_DEV_INITRD)
116 . = ALIGN(_PAGE_SIZE); 117 . = ALIGN(_PAGE_SIZE);
117 __initramfs_start = .; 118 __initramfs_start = .;
118 .init.ramfs : { *(.init.ramfs) } 119 .init.ramfs : { *(.init.ramfs) }
119 __initramfs_end = .; 120 __initramfs_end = .;
121#endif
120 . = ALIGN(32); 122 . = ALIGN(32);
121 __per_cpu_start = .; 123 __per_cpu_start = .;
122 .data.percpu : { *(.data.percpu) } 124 .data.percpu : { *(.data.percpu) }
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c
index 459624969c99..9aca871a307f 100644
--- a/arch/mips/kernel/vpe.c
+++ b/arch/mips/kernel/vpe.c
@@ -29,6 +29,7 @@
29 */ 29 */
30 30
31#include <linux/kernel.h> 31#include <linux/kernel.h>
32#include <linux/device.h>
32#include <linux/module.h> 33#include <linux/module.h>
33#include <linux/fs.h> 34#include <linux/fs.h>
34#include <linux/init.h> 35#include <linux/init.h>
@@ -48,6 +49,7 @@
48#include <asm/cacheflush.h> 49#include <asm/cacheflush.h>
49#include <asm/atomic.h> 50#include <asm/atomic.h>
50#include <asm/cpu.h> 51#include <asm/cpu.h>
52#include <asm/mips_mt.h>
51#include <asm/processor.h> 53#include <asm/processor.h>
52#include <asm/system.h> 54#include <asm/system.h>
53#include <asm/vpe.h> 55#include <asm/vpe.h>
@@ -64,6 +66,7 @@ typedef void *vpe_handle;
64 66
65static char module_name[] = "vpe"; 67static char module_name[] = "vpe";
66static int major; 68static int major;
69static const int minor = 1; /* fixed for now */
67 70
68#ifdef CONFIG_MIPS_APSP_KSPD 71#ifdef CONFIG_MIPS_APSP_KSPD
69 static struct kspd_notifications kspd_events; 72 static struct kspd_notifications kspd_events;
@@ -1205,7 +1208,7 @@ static ssize_t vpe_write(struct file *file, const char __user * buffer,
1205 return ret; 1208 return ret;
1206} 1209}
1207 1210
1208static struct file_operations vpe_fops = { 1211static const struct file_operations vpe_fops = {
1209 .owner = THIS_MODULE, 1212 .owner = THIS_MODULE,
1210 .open = vpe_open, 1213 .open = vpe_open,
1211 .release = vpe_release, 1214 .release = vpe_release,
@@ -1365,12 +1368,15 @@ static void kspd_sp_exit( int sp_id)
1365} 1368}
1366#endif 1369#endif
1367 1370
1371static struct device *vpe_dev;
1372
1368static int __init vpe_module_init(void) 1373static int __init vpe_module_init(void)
1369{ 1374{
1370 struct vpe *v = NULL; 1375 struct vpe *v = NULL;
1376 struct device *dev;
1371 struct tc *t; 1377 struct tc *t;
1372 unsigned long val; 1378 unsigned long val;
1373 int i; 1379 int i, err;
1374 1380
1375 if (!cpu_has_mipsmt) { 1381 if (!cpu_has_mipsmt) {
1376 printk("VPE loader: not a MIPS MT capable processor\n"); 1382 printk("VPE loader: not a MIPS MT capable processor\n");
@@ -1383,6 +1389,14 @@ static int __init vpe_module_init(void)
1383 return major; 1389 return major;
1384 } 1390 }
1385 1391
1392 dev = device_create(mt_class, NULL, MKDEV(major, minor),
1393 "tc%d", minor);
1394 if (IS_ERR(dev)) {
1395 err = PTR_ERR(dev);
1396 goto out_chrdev;
1397 }
1398 vpe_dev = dev;
1399
1386 dmt(); 1400 dmt();
1387 dvpe(); 1401 dvpe();
1388 1402
@@ -1478,6 +1492,11 @@ static int __init vpe_module_init(void)
1478 kspd_events.kspd_sp_exit = kspd_sp_exit; 1492 kspd_events.kspd_sp_exit = kspd_sp_exit;
1479#endif 1493#endif
1480 return 0; 1494 return 0;
1495
1496out_chrdev:
1497 unregister_chrdev(major, module_name);
1498
1499 return err;
1481} 1500}
1482 1501
1483static void __exit vpe_module_exit(void) 1502static void __exit vpe_module_exit(void)
@@ -1490,6 +1509,7 @@ static void __exit vpe_module_exit(void)
1490 } 1509 }
1491 } 1510 }
1492 1511
1512 device_destroy(mt_class, MKDEV(major, minor));
1493 unregister_chrdev(major, module_name); 1513 unregister_chrdev(major, module_name);
1494} 1514}
1495 1515
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
index 1f954a238a63..31819c58bffa 100644
--- a/arch/mips/mm/cache.c
+++ b/arch/mips/mm/cache.c
@@ -107,8 +107,6 @@ void __update_cache(struct vm_area_struct *vma, unsigned long address,
107 } 107 }
108} 108}
109 109
110#define __weak __attribute__((weak))
111
112static char cache_panic[] __initdata = "Yeee, unsupported cache architecture."; 110static char cache_panic[] __initdata = "Yeee, unsupported cache architecture.";
113 111
114void __init cpu_cache_init(void) 112void __init cpu_cache_init(void)
diff --git a/arch/mips/momentum/jaguar_atx/platform.c b/arch/mips/momentum/jaguar_atx/platform.c
index 035ea5137c71..81037709ba0d 100644
--- a/arch/mips/momentum/jaguar_atx/platform.c
+++ b/arch/mips/momentum/jaguar_atx/platform.c
@@ -129,7 +129,7 @@ static struct mv643xx_eth_platform_data eth2_pd = {
129 129
130static struct platform_device eth2_device = { 130static struct platform_device eth2_device = {
131 .name = MV643XX_ETH_NAME, 131 .name = MV643XX_ETH_NAME,
132 .id = 1, 132 .id = 2,
133 .num_resources = ARRAY_SIZE(mv64x60_eth2_resources), 133 .num_resources = ARRAY_SIZE(mv64x60_eth2_resources),
134 .resource = mv64x60_eth2_resources, 134 .resource = mv64x60_eth2_resources,
135 .dev = { 135 .dev = {
diff --git a/arch/mips/momentum/ocelot_3/platform.c b/arch/mips/momentum/ocelot_3/platform.c
index eefe5841fbb2..57cfe5c6e4a8 100644
--- a/arch/mips/momentum/ocelot_3/platform.c
+++ b/arch/mips/momentum/ocelot_3/platform.c
@@ -129,7 +129,7 @@ static struct mv643xx_eth_platform_data eth2_pd = {
129 129
130static struct platform_device eth2_device = { 130static struct platform_device eth2_device = {
131 .name = MV643XX_ETH_NAME, 131 .name = MV643XX_ETH_NAME,
132 .id = 1, 132 .id = 2,
133 .num_resources = ARRAY_SIZE(mv64x60_eth2_resources), 133 .num_resources = ARRAY_SIZE(mv64x60_eth2_resources),
134 .resource = mv64x60_eth2_resources, 134 .resource = mv64x60_eth2_resources,
135 .dev = { 135 .dev = {
diff --git a/arch/mips/philips/pnx8550/common/proc.c b/arch/mips/philips/pnx8550/common/proc.c
index 72a016767e09..3f097558ef13 100644
--- a/arch/mips/philips/pnx8550/common/proc.c
+++ b/arch/mips/philips/pnx8550/common/proc.c
@@ -79,10 +79,7 @@ static int pnx8550_proc_init( void )
79 79
80 // Create /proc/pnx8550 80 // Create /proc/pnx8550
81 pnx8550_dir = create_proc_entry("pnx8550", S_IFDIR|S_IRUGO, NULL); 81 pnx8550_dir = create_proc_entry("pnx8550", S_IFDIR|S_IRUGO, NULL);
82 if (pnx8550_dir){ 82 if (!pnx8550_dir) {
83 pnx8550_dir->nlink = 1;
84 }
85 else {
86 printk(KERN_ERR "Can't create pnx8550 proc dir\n"); 83 printk(KERN_ERR "Can't create pnx8550 proc dir\n");
87 return -1; 84 return -1;
88 } 85 }
@@ -90,7 +87,6 @@ static int pnx8550_proc_init( void )
90 // Create /proc/pnx8550/timers 87 // Create /proc/pnx8550/timers
91 pnx8550_timers = create_proc_entry("timers", S_IFREG|S_IRUGO, pnx8550_dir ); 88 pnx8550_timers = create_proc_entry("timers", S_IFREG|S_IRUGO, pnx8550_dir );
92 if (pnx8550_timers){ 89 if (pnx8550_timers){
93 pnx8550_timers->nlink = 1;
94 pnx8550_timers->read_proc = pnx8550_timers_read; 90 pnx8550_timers->read_proc = pnx8550_timers_read;
95 } 91 }
96 else { 92 else {
@@ -100,7 +96,6 @@ static int pnx8550_proc_init( void )
100 // Create /proc/pnx8550/registers 96 // Create /proc/pnx8550/registers
101 pnx8550_registers = create_proc_entry("registers", S_IFREG|S_IRUGO, pnx8550_dir ); 97 pnx8550_registers = create_proc_entry("registers", S_IFREG|S_IRUGO, pnx8550_dir );
102 if (pnx8550_registers){ 98 if (pnx8550_registers){
103 pnx8550_registers->nlink = 1;
104 pnx8550_registers->read_proc = pnx8550_registers_read; 99 pnx8550_registers->read_proc = pnx8550_registers_read;
105 } 100 }
106 else { 101 else {
diff --git a/arch/mips/sibyte/sb1250/bcm1250_tbprof.c b/arch/mips/sibyte/sb1250/bcm1250_tbprof.c
index d1a906e683b2..212547c57310 100644
--- a/arch/mips/sibyte/sb1250/bcm1250_tbprof.c
+++ b/arch/mips/sibyte/sb1250/bcm1250_tbprof.c
@@ -374,7 +374,7 @@ static long sbprof_tb_ioctl(struct file *filp,
374 return error; 374 return error;
375} 375}
376 376
377static struct file_operations sbprof_tb_fops = { 377static const struct file_operations sbprof_tb_fops = {
378 .owner = THIS_MODULE, 378 .owner = THIS_MODULE,
379 .open = sbprof_tb_open, 379 .open = sbprof_tb_open,
380 .release = sbprof_tb_release, 380 .release = sbprof_tb_release,
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
index 735cb8778f4c..7316a78fdd68 100644
--- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
+++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
@@ -137,6 +137,8 @@ int tx4927_using_backplane = 0;
137extern void gt64120_time_init(void); 137extern void gt64120_time_init(void);
138extern void toshiba_rbtx4927_irq_setup(void); 138extern void toshiba_rbtx4927_irq_setup(void);
139 139
140char *prom_getcmdline(void);
141
140#ifdef CONFIG_PCI 142#ifdef CONFIG_PCI
141#define CONFIG_TX4927BUG_WORKAROUND 143#define CONFIG_TX4927BUG_WORKAROUND
142#undef TX4927_SUPPORT_COMMAND_IO 144#undef TX4927_SUPPORT_COMMAND_IO
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index 0f9ff618c6d7..28da4e71c443 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -50,9 +50,6 @@ config TIME_LOW_RES
50 depends on SMP 50 depends on SMP
51 default y 51 default y
52 52
53config GENERIC_ISA_DMA
54 bool
55
56config GENERIC_HARDIRQS 53config GENERIC_HARDIRQS
57 def_bool y 54 def_bool y
58 55
diff --git a/arch/parisc/kernel/perf.c b/arch/parisc/kernel/perf.c
index ac8ee205c351..a46bc62b643e 100644
--- a/arch/parisc/kernel/perf.c
+++ b/arch/parisc/kernel/perf.c
@@ -479,7 +479,7 @@ static long perf_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
479 return error; 479 return error;
480} 480}
481 481
482static struct file_operations perf_fops = { 482static const struct file_operations perf_fops = {
483 .llseek = no_llseek, 483 .llseek = no_llseek,
484 .read = perf_read, 484 .read = perf_read,
485 .write = perf_write, 485 .write = perf_write,
diff --git a/arch/parisc/kernel/setup.c b/arch/parisc/kernel/setup.c
index 3c7a3faf78ed..74b3686dd1e0 100644
--- a/arch/parisc/kernel/setup.c
+++ b/arch/parisc/kernel/setup.c
@@ -45,7 +45,7 @@
45#include <asm/io.h> 45#include <asm/io.h>
46#include <asm/setup.h> 46#include <asm/setup.h>
47 47
48char command_line[COMMAND_LINE_SIZE] __read_mostly; 48char __initdata command_line[COMMAND_LINE_SIZE] __read_mostly;
49 49
50/* Intended for ccio/sba/cpu statistics under /proc/bus/{runway|gsc} */ 50/* Intended for ccio/sba/cpu statistics under /proc/bus/{runway|gsc} */
51struct proc_dir_entry * proc_runway_root __read_mostly = NULL; 51struct proc_dir_entry * proc_runway_root __read_mostly = NULL;
@@ -71,9 +71,9 @@ void __init setup_cmdline(char **cmdline_p)
71 /* boot_args[0] is free-mem start, boot_args[1] is ptr to command line */ 71 /* boot_args[0] is free-mem start, boot_args[1] is ptr to command line */
72 if (boot_args[0] < 64) { 72 if (boot_args[0] < 64) {
73 /* called from hpux boot loader */ 73 /* called from hpux boot loader */
74 saved_command_line[0] = '\0'; 74 boot_command_line[0] = '\0';
75 } else { 75 } else {
76 strcpy(saved_command_line, (char *)__va(boot_args[1])); 76 strcpy(boot_command_line, (char *)__va(boot_args[1]));
77 77
78#ifdef CONFIG_BLK_DEV_INITRD 78#ifdef CONFIG_BLK_DEV_INITRD
79 if (boot_args[2] != 0) /* did palo pass us a ramdisk? */ 79 if (boot_args[2] != 0) /* did palo pass us a ramdisk? */
@@ -84,7 +84,7 @@ void __init setup_cmdline(char **cmdline_p)
84#endif 84#endif
85 } 85 }
86 86
87 strcpy(command_line, saved_command_line); 87 strcpy(command_line, boot_command_line);
88 *cmdline_p = command_line; 88 *cmdline_p = command_line;
89} 89}
90 90
diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c
index 29be4377aca6..ce3245f87fdd 100644
--- a/arch/parisc/kernel/sys_parisc32.c
+++ b/arch/parisc/kernel/sys_parisc32.c
@@ -579,70 +579,6 @@ asmlinkage int sys32_sendfile64(int out_fd, int in_fd, compat_loff_t __user *off
579} 579}
580 580
581 581
582struct sysinfo32 {
583 s32 uptime;
584 u32 loads[3];
585 u32 totalram;
586 u32 freeram;
587 u32 sharedram;
588 u32 bufferram;
589 u32 totalswap;
590 u32 freeswap;
591 unsigned short procs;
592 u32 totalhigh;
593 u32 freehigh;
594 u32 mem_unit;
595 char _f[12];
596};
597
598/* We used to call sys_sysinfo and translate the result. But sys_sysinfo
599 * undoes the good work done elsewhere, and rather than undoing the
600 * damage, I decided to just duplicate the code from sys_sysinfo here.
601 */
602
603asmlinkage int sys32_sysinfo(struct sysinfo32 __user *info)
604{
605 struct sysinfo val;
606 int err;
607 unsigned long seq;
608
609 /* We don't need a memset here because we copy the
610 * struct to userspace once element at a time.
611 */
612
613 do {
614 seq = read_seqbegin(&xtime_lock);
615 val.uptime = jiffies / HZ;
616
617 val.loads[0] = avenrun[0] << (SI_LOAD_SHIFT - FSHIFT);
618 val.loads[1] = avenrun[1] << (SI_LOAD_SHIFT - FSHIFT);
619 val.loads[2] = avenrun[2] << (SI_LOAD_SHIFT - FSHIFT);
620
621 val.procs = nr_threads;
622 } while (read_seqretry(&xtime_lock, seq));
623
624
625 si_meminfo(&val);
626 si_swapinfo(&val);
627
628 err = put_user (val.uptime, &info->uptime);
629 err |= __put_user (val.loads[0], &info->loads[0]);
630 err |= __put_user (val.loads[1], &info->loads[1]);
631 err |= __put_user (val.loads[2], &info->loads[2]);
632 err |= __put_user (val.totalram, &info->totalram);
633 err |= __put_user (val.freeram, &info->freeram);
634 err |= __put_user (val.sharedram, &info->sharedram);
635 err |= __put_user (val.bufferram, &info->bufferram);
636 err |= __put_user (val.totalswap, &info->totalswap);
637 err |= __put_user (val.freeswap, &info->freeswap);
638 err |= __put_user (val.procs, &info->procs);
639 err |= __put_user (val.totalhigh, &info->totalhigh);
640 err |= __put_user (val.freehigh, &info->freehigh);
641 err |= __put_user (val.mem_unit, &info->mem_unit);
642 return err ? -EFAULT : 0;
643}
644
645
646/* lseek() needs a wrapper because 'offset' can be negative, but the top 582/* lseek() needs a wrapper because 'offset' can be negative, but the top
647 * half of the argument has been zeroed by syscall.S. 583 * half of the argument has been zeroed by syscall.S.
648 */ 584 */
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S
index 701d66a596e8..be8eb9a0d24a 100644
--- a/arch/parisc/kernel/syscall_table.S
+++ b/arch/parisc/kernel/syscall_table.S
@@ -197,7 +197,7 @@
197 /* struct rusage contains longs... */ 197 /* struct rusage contains longs... */
198 ENTRY_COMP(wait4) 198 ENTRY_COMP(wait4)
199 ENTRY_SAME(swapoff) /* 115 */ 199 ENTRY_SAME(swapoff) /* 115 */
200 ENTRY_DIFF(sysinfo) 200 ENTRY_COMP(sysinfo)
201 ENTRY_SAME(shutdown) 201 ENTRY_SAME(shutdown)
202 ENTRY_SAME(fsync) 202 ENTRY_SAME(fsync)
203 ENTRY_SAME(madvise) 203 ENTRY_SAME(madvise)
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c
index bad7d1eb62b9..5f1b51af06a9 100644
--- a/arch/parisc/kernel/time.c
+++ b/arch/parisc/kernel/time.c
@@ -288,17 +288,6 @@ do_settimeofday (struct timespec *tv)
288} 288}
289EXPORT_SYMBOL(do_settimeofday); 289EXPORT_SYMBOL(do_settimeofday);
290 290
291/*
292 * XXX: We can do better than this.
293 * Returns nanoseconds
294 */
295
296unsigned long long sched_clock(void)
297{
298 return (unsigned long long)jiffies * (1000000000 / HZ);
299}
300
301
302void __init start_cpu_itimer(void) 291void __init start_cpu_itimer(void)
303{ 292{
304 unsigned int cpu = smp_processor_id(); 293 unsigned int cpu = smp_processor_id();
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S
index 7b943b45f7cd..3b78c2794c36 100644
--- a/arch/parisc/kernel/vmlinux.lds.S
+++ b/arch/parisc/kernel/vmlinux.lds.S
@@ -173,10 +173,12 @@ SECTIONS
173 from .altinstructions and .eh_frame */ 173 from .altinstructions and .eh_frame */
174 .exit.text : { *(.exit.text) } 174 .exit.text : { *(.exit.text) }
175 .exit.data : { *(.exit.data) } 175 .exit.data : { *(.exit.data) }
176#ifdef CONFIG_BLK_DEV_INITRD
176 . = ALIGN(ASM_PAGE_SIZE); 177 . = ALIGN(ASM_PAGE_SIZE);
177 __initramfs_start = .; 178 __initramfs_start = .;
178 .init.ramfs : { *(.init.ramfs) } 179 .init.ramfs : { *(.init.ramfs) }
179 __initramfs_end = .; 180 __initramfs_end = .;
181#endif
180 . = ALIGN(32); 182 . = ALIGN(32);
181 __per_cpu_start = .; 183 __per_cpu_start = .;
182 .data.percpu : { *(.data.percpu) } 184 .data.percpu : { *(.data.percpu) }
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c
index 0667f2b4f977..12117db0043b 100644
--- a/arch/parisc/mm/init.c
+++ b/arch/parisc/mm/init.c
@@ -77,12 +77,11 @@ static void __init mem_limit_func(void)
77{ 77{
78 char *cp, *end; 78 char *cp, *end;
79 unsigned long limit; 79 unsigned long limit;
80 extern char saved_command_line[];
81 80
82 /* We need this before __setup() functions are called */ 81 /* We need this before __setup() functions are called */
83 82
84 limit = MAX_MEM; 83 limit = MAX_MEM;
85 for (cp = saved_command_line; *cp; ) { 84 for (cp = boot_command_line; *cp; ) {
86 if (memcmp(cp, "mem=", 4) == 0) { 85 if (memcmp(cp, "mem=", 4) == 0) {
87 cp += 4; 86 cp += 4;
88 limit = memparse(cp, &end); 87 limit = memparse(cp, &end);
@@ -808,9 +807,7 @@ void __init paging_init(void)
808 for (i = 0; i < npmem_ranges; i++) { 807 for (i = 0; i < npmem_ranges; i++) {
809 unsigned long zones_size[MAX_NR_ZONES] = { 0, }; 808 unsigned long zones_size[MAX_NR_ZONES] = { 0, };
810 809
811 /* We have an IOMMU, so all memory can go into a single 810 zones_size[ZONE_NORMAL] = pmem_ranges[i].pages;
812 ZONE_DMA zone. */
813 zones_size[ZONE_DMA] = pmem_ranges[i].pages;
814 811
815#ifdef CONFIG_DISCONTIGMEM 812#ifdef CONFIG_DISCONTIGMEM
816 /* Need to initialize the pfnnid_map before we can initialize 813 /* Need to initialize the pfnnid_map before we can initialize
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index f08e80a0bf0a..340d9beab6d1 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -876,7 +876,7 @@ config ARCH_SPARSEMEM_ENABLE
876 876
877config ARCH_SPARSEMEM_DEFAULT 877config ARCH_SPARSEMEM_DEFAULT
878 def_bool y 878 def_bool y
879 depends on (SMP && PPC_PSERIES) || PPC_CELL 879 depends on (SMP && PPC_PSERIES) || PPC_PS3
880 880
881config ARCH_POPULATES_NODE_MAP 881config ARCH_POPULATES_NODE_MAP
882 def_bool y 882 def_bool y
@@ -977,6 +977,10 @@ config ISA
977 have an IBM RS/6000 or pSeries machine or a PReP machine, say Y. If 977 have an IBM RS/6000 or pSeries machine or a PReP machine, say Y. If
978 you have an embedded board, consult your board documentation. 978 you have an embedded board, consult your board documentation.
979 979
980config ZONE_DMA
981 bool
982 default y
983
980config GENERIC_ISA_DMA 984config GENERIC_ISA_DMA
981 bool 985 bool
982 depends on PPC64 || POWER4 || 6xx && !CPM2 986 depends on PPC64 || POWER4 || 6xx && !CPM2
diff --git a/arch/powerpc/boot/dts/kuroboxHD.dts b/arch/powerpc/boot/dts/kuroboxHD.dts
new file mode 100644
index 000000000000..096e94ac415f
--- /dev/null
+++ b/arch/powerpc/boot/dts/kuroboxHD.dts
@@ -0,0 +1,148 @@
1/*
2 * Device Tree Souce for Buffalo KuroboxHD
3 *
4 * Choose CONFIG_LINKSTATION to build a kernel for KuroboxHD, or use
5 * the default configuration linkstation_defconfig.
6 *
7 * Based on sandpoint.dts
8 *
9 * 2006 (c) G. Liakhovetski <g.liakhovetski@gmx.de>
10 *
11 * This file is licensed under
12 * the terms of the GNU General Public License version 2. This program
13 * is licensed "as is" without any warranty of any kind, whether express
14 * or implied.
15
16XXXX add flash parts, rtc, ??
17
18build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts"
19
20
21 */
22
23/ {
24 linux,phandle = <1000>;
25 model = "KuroboxHD";
26 compatible = "linkstation";
27 #address-cells = <1>;
28 #size-cells = <1>;
29
30 cpus {
31 linux,phandle = <2000>;
32 #cpus = <1>;
33 #address-cells = <1>;
34 #size-cells = <0>;
35
36 PowerPC,603e { /* Really 8241 */
37 linux,phandle = <2100>;
38 linux,boot-cpu;
39 device_type = "cpu";
40 reg = <0>;
41 clock-frequency = <bebc200>; /* Fixed by bootwrapper */
42 timebase-frequency = <1743000>; /* Fixed by bootwrapper */
43 bus-frequency = <0>; /* From bootloader */
44 /* Following required by dtc but not used */
45 i-cache-line-size = <0>;
46 d-cache-line-size = <0>;
47 i-cache-size = <4000>;
48 d-cache-size = <4000>;
49 };
50 };
51
52 memory {
53 linux,phandle = <3000>;
54 device_type = "memory";
55 reg = <00000000 04000000>;
56 };
57
58 soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */
59 linux,phandle = <4000>;
60 #address-cells = <1>;
61 #size-cells = <1>;
62 #interrupt-cells = <2>;
63 device_type = "soc";
64 compatible = "mpc10x";
65 store-gathering = <0>; /* 0 == off, !0 == on */
66 reg = <80000000 00100000>;
67 ranges = <80000000 80000000 70000000 /* pci mem space */
68 fc000000 fc000000 00100000 /* EUMB */
69 fe000000 fe000000 00c00000 /* pci i/o space */
70 fec00000 fec00000 00300000 /* pci cfg regs */
71 fef00000 fef00000 00100000>; /* pci iack */
72
73 i2c@80003000 {
74 linux,phandle = <4300>;
75 device_type = "i2c";
76 compatible = "fsl-i2c";
77 reg = <80003000 1000>;
78 interrupts = <5 2>;
79 interrupt-parent = <4400>;
80 };
81
82 serial@80004500 {
83 linux,phandle = <4511>;
84 device_type = "serial";
85 compatible = "ns16550";
86 reg = <80004500 8>;
87 clock-frequency = <5d08d88>;
88 current-speed = <2580>;
89 interrupts = <9 2>;
90 interrupt-parent = <4400>;
91 };
92
93 serial@80004600 {
94 linux,phandle = <4512>;
95 device_type = "serial";
96 compatible = "ns16550";
97 reg = <80004600 8>;
98 clock-frequency = <5d08d88>;
99 current-speed = <e100>;
100 interrupts = <a 0>;
101 interrupt-parent = <4400>;
102 };
103
104 pic@80040000 {
105 linux,phandle = <4400>;
106 #interrupt-cells = <2>;
107 #address-cells = <0>;
108 device_type = "open-pic";
109 compatible = "chrp,open-pic";
110 interrupt-controller;
111 reg = <80040000 40000>;
112 built-in;
113 };
114
115 pci@fec00000 {
116 linux,phandle = <4500>;
117 #address-cells = <3>;
118 #size-cells = <2>;
119 #interrupt-cells = <1>;
120 device_type = "pci";
121 compatible = "mpc10x-pci";
122 reg = <fec00000 400000>;
123 ranges = <01000000 0 0 fe000000 0 00c00000
124 02000000 0 80000000 80000000 0 70000000>;
125 bus-range = <0 ff>;
126 clock-frequency = <7f28155>;
127 interrupt-parent = <4400>;
128 interrupt-map-mask = <f800 0 0 7>;
129 interrupt-map = <
130 /* IDSEL 0x11 - IRQ0 ETH */
131 5800 0 0 1 4400 0 1
132 5800 0 0 2 4400 1 1
133 5800 0 0 3 4400 2 1
134 5800 0 0 4 4400 3 1
135 /* IDSEL 0x12 - IRQ1 IDE0 */
136 6000 0 0 1 4400 1 1
137 6000 0 0 2 4400 2 1
138 6000 0 0 3 4400 3 1
139 6000 0 0 4 4400 0 1
140 /* IDSEL 0x14 - IRQ3 USB2.0 */
141 7000 0 0 1 4400 3 1
142 7000 0 0 2 4400 3 1
143 7000 0 0 3 4400 3 1
144 7000 0 0 4 4400 3 1
145 >;
146 };
147 };
148};
diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts
index 186870704ad9..c03103c63285 100644
--- a/arch/powerpc/boot/dts/lite5200.dts
+++ b/arch/powerpc/boot/dts/lite5200.dts
@@ -1,7 +1,7 @@
1/* 1/*
2 * Lite5200 board Device Tree Source 2 * Lite5200 board Device Tree Source
3 * 3 *
4 * Copyright 2006 Secret Lab Technologies Ltd. 4 * Copyright 2006-2007 Secret Lab Technologies Ltd.
5 * Grant Likely <grant.likely@secretlab.ca> 5 * Grant Likely <grant.likely@secretlab.ca>
6 * 6 *
7 * This program is free software; you can redistribute it and/or modify it 7 * This program is free software; you can redistribute it and/or modify it
@@ -17,8 +17,9 @@
17 */ 17 */
18 18
19/ { 19/ {
20 model = "Lite5200"; 20 model = "fsl,lite5200";
21 compatible = "lite5200\0lite52xx\0mpc5200\0mpc52xx"; 21 // revision = "1.0";
22 compatible = "fsl,lite5200\0generic-mpc5200";
22 #address-cells = <1>; 23 #address-cells = <1>;
23 #size-cells = <1>; 24 #size-cells = <1>;
24 25
@@ -47,14 +48,17 @@
47 }; 48 };
48 49
49 soc5200@f0000000 { 50 soc5200@f0000000 {
51 model = "fsl,mpc5200";
52 revision = "" // from bootloader
50 #interrupt-cells = <3>; 53 #interrupt-cells = <3>;
51 device_type = "soc"; 54 device_type = "soc";
52 ranges = <0 f0000000 f0010000>; 55 ranges = <0 f0000000 f0010000>;
53 reg = <f0000000 00010000>; 56 reg = <f0000000 00010000>;
54 bus-frequency = <0>; // from bootloader 57 bus-frequency = <0>; // from bootloader
58 system-frequency = <0>; // from bootloader
55 59
56 cdm@200 { 60 cdm@200 {
57 compatible = "mpc5200-cdm\0mpc52xx-cdm"; 61 compatible = "mpc5200-cdm";
58 reg = <200 38>; 62 reg = <200 38>;
59 }; 63 };
60 64
@@ -64,77 +68,86 @@
64 interrupt-controller; 68 interrupt-controller;
65 #interrupt-cells = <3>; 69 #interrupt-cells = <3>;
66 device_type = "interrupt-controller"; 70 device_type = "interrupt-controller";
67 compatible = "mpc5200-pic\0mpc52xx-pic"; 71 compatible = "mpc5200-pic";
68 reg = <500 80>; 72 reg = <500 80>;
69 built-in; 73 built-in;
70 }; 74 };
71 75
72 gpt@600 { // General Purpose Timer 76 gpt@600 { // General Purpose Timer
73 compatible = "mpc5200-gpt\0mpc52xx-gpt"; 77 compatible = "mpc5200-gpt";
74 device_type = "gpt"; 78 device_type = "gpt";
79 cell-index = <0>;
75 reg = <600 10>; 80 reg = <600 10>;
76 interrupts = <1 9 0>; 81 interrupts = <1 9 0>;
77 interrupt-parent = <500>; 82 interrupt-parent = <500>;
83 has-wdt;
78 }; 84 };
79 85
80 gpt@610 { // General Purpose Timer 86 gpt@610 { // General Purpose Timer
81 compatible = "mpc5200-gpt\0mpc52xx-gpt"; 87 compatible = "mpc5200-gpt";
82 device_type = "gpt"; 88 device_type = "gpt";
89 cell-index = <1>;
83 reg = <610 10>; 90 reg = <610 10>;
84 interrupts = <1 a 0>; 91 interrupts = <1 a 0>;
85 interrupt-parent = <500>; 92 interrupt-parent = <500>;
86 }; 93 };
87 94
88 gpt@620 { // General Purpose Timer 95 gpt@620 { // General Purpose Timer
89 compatible = "mpc5200-gpt\0mpc52xx-gpt"; 96 compatible = "mpc5200-gpt";
90 device_type = "gpt"; 97 device_type = "gpt";
98 cell-index = <2>;
91 reg = <620 10>; 99 reg = <620 10>;
92 interrupts = <1 b 0>; 100 interrupts = <1 b 0>;
93 interrupt-parent = <500>; 101 interrupt-parent = <500>;
94 }; 102 };
95 103
96 gpt@630 { // General Purpose Timer 104 gpt@630 { // General Purpose Timer
97 compatible = "mpc5200-gpt\0mpc52xx-gpt"; 105 compatible = "mpc5200-gpt";
98 device_type = "gpt"; 106 device_type = "gpt";
107 cell-index = <3>;
99 reg = <630 10>; 108 reg = <630 10>;
100 interrupts = <1 c 0>; 109 interrupts = <1 c 0>;
101 interrupt-parent = <500>; 110 interrupt-parent = <500>;
102 }; 111 };
103 112
104 gpt@640 { // General Purpose Timer 113 gpt@640 { // General Purpose Timer
105 compatible = "mpc5200-gpt\0mpc52xx-gpt"; 114 compatible = "mpc5200-gpt";
106 device_type = "gpt"; 115 device_type = "gpt";
116 cell-index = <4>;
107 reg = <640 10>; 117 reg = <640 10>;
108 interrupts = <1 d 0>; 118 interrupts = <1 d 0>;
109 interrupt-parent = <500>; 119 interrupt-parent = <500>;
110 }; 120 };
111 121
112 gpt@650 { // General Purpose Timer 122 gpt@650 { // General Purpose Timer
113 compatible = "mpc5200-gpt\0mpc52xx-gpt"; 123 compatible = "mpc5200-gpt";
114 device_type = "gpt"; 124 device_type = "gpt";
125 cell-index = <5>;
115 reg = <650 10>; 126 reg = <650 10>;
116 interrupts = <1 e 0>; 127 interrupts = <1 e 0>;
117 interrupt-parent = <500>; 128 interrupt-parent = <500>;
118 }; 129 };
119 130
120 gpt@660 { // General Purpose Timer 131 gpt@660 { // General Purpose Timer
121 compatible = "mpc5200-gpt\0mpc52xx-gpt"; 132 compatible = "mpc5200-gpt";
122 device_type = "gpt"; 133 device_type = "gpt";
134 cell-index = <6>;
123 reg = <660 10>; 135 reg = <660 10>;
124 interrupts = <1 f 0>; 136 interrupts = <1 f 0>;
125 interrupt-parent = <500>; 137 interrupt-parent = <500>;
126 }; 138 };
127 139
128 gpt@670 { // General Purpose Timer 140 gpt@670 { // General Purpose Timer
129 compatible = "mpc5200-gpt\0mpc52xx-gpt"; 141 compatible = "mpc5200-gpt";
130 device_type = "gpt"; 142 device_type = "gpt";
143 cell-index = <7>;
131 reg = <670 10>; 144 reg = <670 10>;
132 interrupts = <1 10 0>; 145 interrupts = <1 10 0>;
133 interrupt-parent = <500>; 146 interrupt-parent = <500>;
134 }; 147 };
135 148
136 rtc@800 { // Real time clock 149 rtc@800 { // Real time clock
137 compatible = "mpc5200-rtc\0mpc52xx-rtc"; 150 compatible = "mpc5200-rtc";
138 device_type = "rtc"; 151 device_type = "rtc";
139 reg = <800 100>; 152 reg = <800 100>;
140 interrupts = <1 5 0 1 6 0>; 153 interrupts = <1 5 0 1 6 0>;
@@ -143,7 +156,8 @@
143 156
144 mscan@900 { 157 mscan@900 {
145 device_type = "mscan"; 158 device_type = "mscan";
146 compatible = "mpc5200-mscan\0mpc52xx-mscan"; 159 compatible = "mpc5200-mscan";
160 cell-index = <0>;
147 interrupts = <2 11 0>; 161 interrupts = <2 11 0>;
148 interrupt-parent = <500>; 162 interrupt-parent = <500>;
149 reg = <900 80>; 163 reg = <900 80>;
@@ -151,21 +165,22 @@
151 165
152 mscan@980 { 166 mscan@980 {
153 device_type = "mscan"; 167 device_type = "mscan";
154 compatible = "mpc5200-mscan\0mpc52xx-mscan"; 168 compatible = "mpc5200-mscan";
169 cell-index = <1>;
155 interrupts = <1 12 0>; 170 interrupts = <1 12 0>;
156 interrupt-parent = <500>; 171 interrupt-parent = <500>;
157 reg = <980 80>; 172 reg = <980 80>;
158 }; 173 };
159 174
160 gpio@b00 { 175 gpio@b00 {
161 compatible = "mpc5200-gpio\0mpc52xx-gpio"; 176 compatible = "mpc5200-gpio";
162 reg = <b00 40>; 177 reg = <b00 40>;
163 interrupts = <1 7 0>; 178 interrupts = <1 7 0>;
164 interrupt-parent = <500>; 179 interrupt-parent = <500>;
165 }; 180 };
166 181
167 gpio-wkup@b00 { 182 gpio-wkup@b00 {
168 compatible = "mpc5200-gpio-wkup\0mpc52xx-gpio-wkup"; 183 compatible = "mpc5200-gpio-wkup";
169 reg = <c00 40>; 184 reg = <c00 40>;
170 interrupts = <1 8 0 0 3 0>; 185 interrupts = <1 8 0 0 3 0>;
171 interrupt-parent = <500>; 186 interrupt-parent = <500>;
@@ -176,7 +191,7 @@
176 #size-cells = <2>; 191 #size-cells = <2>;
177 #address-cells = <3>; 192 #address-cells = <3>;
178 device_type = "pci"; 193 device_type = "pci";
179 compatible = "mpc5200-pci\0mpc52xx-pci"; 194 compatible = "mpc5200-pci";
180 reg = <d00 100>; 195 reg = <d00 100>;
181 interrupt-map-mask = <f800 0 0 7>; 196 interrupt-map-mask = <f800 0 0 7>;
182 interrupt-map = <c000 0 0 1 500 0 0 3 197 interrupt-map = <c000 0 0 1 500 0 0 3
@@ -194,7 +209,7 @@
194 209
195 spi@f00 { 210 spi@f00 {
196 device_type = "spi"; 211 device_type = "spi";
197 compatible = "mpc5200-spi\0mpc52xx-spi"; 212 compatible = "mpc5200-spi";
198 reg = <f00 20>; 213 reg = <f00 20>;
199 interrupts = <2 d 0 2 e 0>; 214 interrupts = <2 d 0 2 e 0>;
200 interrupt-parent = <500>; 215 interrupt-parent = <500>;
@@ -202,7 +217,7 @@
202 217
203 usb@1000 { 218 usb@1000 {
204 device_type = "usb-ohci-be"; 219 device_type = "usb-ohci-be";
205 compatible = "mpc5200-ohci\0mpc52xx-ohci\0ohci-be"; 220 compatible = "mpc5200-ohci\0ohci-be";
206 reg = <1000 ff>; 221 reg = <1000 ff>;
207 interrupts = <2 6 0>; 222 interrupts = <2 6 0>;
208 interrupt-parent = <500>; 223 interrupt-parent = <500>;
@@ -210,7 +225,7 @@
210 225
211 bestcomm@1200 { 226 bestcomm@1200 {
212 device_type = "dma-controller"; 227 device_type = "dma-controller";
213 compatible = "mpc5200-bestcomm\0mpc52xx-bestcomm"; 228 compatible = "mpc5200-bestcomm";
214 reg = <1200 80>; 229 reg = <1200 80>;
215 interrupts = <3 0 0 3 1 0 3 2 0 3 3 0 230 interrupts = <3 0 0 3 1 0 3 2 0 3 3 0
216 3 4 0 3 5 0 3 6 0 3 7 0 231 3 4 0 3 5 0 3 6 0 3 7 0
@@ -220,67 +235,73 @@
220 }; 235 };
221 236
222 xlb@1f00 { 237 xlb@1f00 {
223 compatible = "mpc5200-xlb\0mpc52xx-xlb"; 238 compatible = "mpc5200-xlb";
224 reg = <1f00 100>; 239 reg = <1f00 100>;
225 }; 240 };
226 241
227 serial@2000 { // PSC1 242 serial@2000 { // PSC1
228 device_type = "serial"; 243 device_type = "serial";
229 compatible = "mpc5200-psc-uart\0mpc52xx-psc-uart"; 244 compatible = "mpc5200-psc-uart";
230 port-number = <0>; // Logical port assignment 245 port-number = <0>; // Logical port assignment
246 cell-index = <0>;
231 reg = <2000 100>; 247 reg = <2000 100>;
232 interrupts = <2 1 0>; 248 interrupts = <2 1 0>;
233 interrupt-parent = <500>; 249 interrupt-parent = <500>;
234 }; 250 };
235 251
236 // PSC2 in spi mode example 252 // PSC2 in ac97 mode example
237 spi@2200 { // PSC2 253 //ac97@2200 { // PSC2
238 device_type = "spi"; 254 // device_type = "sound";
239 compatible = "mpc5200-psc-spi\0mpc52xx-psc-spi"; 255 // compatible = "mpc5200-psc-ac97";
240 reg = <2200 100>; 256 // cell-index = <1>;
241 interrupts = <2 2 0>; 257 // reg = <2200 100>;
242 interrupt-parent = <500>; 258 // interrupts = <2 2 0>;
243 }; 259 // interrupt-parent = <500>;
260 //};
244 261
245 // PSC3 in CODEC mode example 262 // PSC3 in CODEC mode example
246 i2s@2400 { // PSC3 263 //i2s@2400 { // PSC3
247 device_type = "sound"; 264 // device_type = "sound";
248 compatible = "mpc5200-psc-i2s\0mpc52xx-psc-i2s"; 265 // compatible = "mpc5200-psc-i2s";
249 reg = <2400 100>; 266 // cell-index = <2>;
250 interrupts = <2 3 0>; 267 // reg = <2400 100>;
251 interrupt-parent = <500>; 268 // interrupts = <2 3 0>;
252 }; 269 // interrupt-parent = <500>;
270 //};
253 271
254 // PSC4 unconfigured 272 // PSC4 in uart mode example
255 //serial@2600 { // PSC4 273 //serial@2600 { // PSC4
256 // device_type = "serial"; 274 // device_type = "serial";
257 // compatible = "mpc5200-psc-uart\0mpc52xx-psc-uart"; 275 // compatible = "mpc5200-psc-uart";
276 // cell-index = <3>;
258 // reg = <2600 100>; 277 // reg = <2600 100>;
259 // interrupts = <2 b 0>; 278 // interrupts = <2 b 0>;
260 // interrupt-parent = <500>; 279 // interrupt-parent = <500>;
261 //}; 280 //};
262 281
263 // PSC5 unconfigured 282 // PSC5 in uart mode example
264 //serial@2800 { // PSC5 283 //serial@2800 { // PSC5
265 // device_type = "serial"; 284 // device_type = "serial";
266 // compatible = "mpc5200-psc-uart\0mpc52xx-psc-uart"; 285 // compatible = "mpc5200-psc-uart";
286 // cell-index = <4>;
267 // reg = <2800 100>; 287 // reg = <2800 100>;
268 // interrupts = <2 c 0>; 288 // interrupts = <2 c 0>;
269 // interrupt-parent = <500>; 289 // interrupt-parent = <500>;
270 //}; 290 //};
271 291
272 // PSC6 in AC97 mode example 292 // PSC6 in spi mode example
273 ac97@2c00 { // PSC6 293 //spi@2c00 { // PSC6
274 device_type = "sound"; 294 // device_type = "spi";
275 compatible = "mpc5200-psc-ac97\0mpc52xx-psc-ac97"; 295 // compatible = "mpc5200-psc-spi";
276 reg = <2c00 100>; 296 // cell-index = <5>;
277 interrupts = <2 4 0>; 297 // reg = <2c00 100>;
278 interrupt-parent = <500>; 298 // interrupts = <2 4 0>;
279 }; 299 // interrupt-parent = <500>;
300 //};
280 301
281 ethernet@3000 { 302 ethernet@3000 {
282 device_type = "network"; 303 device_type = "network";
283 compatible = "mpc5200-fec\0mpc52xx-fec"; 304 compatible = "mpc5200-fec";
284 reg = <3000 800>; 305 reg = <3000 800>;
285 mac-address = [ 02 03 04 05 06 07 ]; // Bad! 306 mac-address = [ 02 03 04 05 06 07 ]; // Bad!
286 interrupts = <2 5 0>; 307 interrupts = <2 5 0>;
@@ -289,7 +310,7 @@
289 310
290 ata@3a00 { 311 ata@3a00 {
291 device_type = "ata"; 312 device_type = "ata";
292 compatible = "mpc5200-ata\0mpc52xx-ata"; 313 compatible = "mpc5200-ata";
293 reg = <3a00 100>; 314 reg = <3a00 100>;
294 interrupts = <2 7 0>; 315 interrupts = <2 7 0>;
295 interrupt-parent = <500>; 316 interrupt-parent = <500>;
@@ -297,7 +318,8 @@
297 318
298 i2c@3d00 { 319 i2c@3d00 {
299 device_type = "i2c"; 320 device_type = "i2c";
300 compatible = "mpc5200-i2c\0mpc52xx-i2c"; 321 compatible = "mpc5200-i2c";
322 cell-index = <0>;
301 reg = <3d00 40>; 323 reg = <3d00 40>;
302 interrupts = <2 f 0>; 324 interrupts = <2 f 0>;
303 interrupt-parent = <500>; 325 interrupt-parent = <500>;
@@ -305,14 +327,15 @@
305 327
306 i2c@3d40 { 328 i2c@3d40 {
307 device_type = "i2c"; 329 device_type = "i2c";
308 compatible = "mpc5200-i2c\0mpc52xx-i2c"; 330 compatible = "mpc5200-i2c";
331 cell-index = <1>;
309 reg = <3d40 40>; 332 reg = <3d40 40>;
310 interrupts = <2 10 0>; 333 interrupts = <2 10 0>;
311 interrupt-parent = <500>; 334 interrupt-parent = <500>;
312 }; 335 };
313 sram@8000 { 336 sram@8000 {
314 device_type = "sram"; 337 device_type = "sram";
315 compatible = "mpc5200-sram\0mpc52xx-sram\0sram"; 338 compatible = "mpc5200-sram\0sram";
316 reg = <8000 4000>; 339 reg = <8000 4000>;
317 }; 340 };
318 }; 341 };
diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts
index 5bb2760d7c30..3875ca9a9a62 100644
--- a/arch/powerpc/boot/dts/lite5200b.dts
+++ b/arch/powerpc/boot/dts/lite5200b.dts
@@ -1,7 +1,7 @@
1/* 1/*
2 * Lite5200B board Device Tree Source 2 * Lite5200B board Device Tree Source
3 * 3 *
4 * Copyright 2006 Secret Lab Technologies Ltd. 4 * Copyright 2006-2007 Secret Lab Technologies Ltd.
5 * Grant Likely <grant.likely@secretlab.ca> 5 * Grant Likely <grant.likely@secretlab.ca>
6 * 6 *
7 * This program is free software; you can redistribute it and/or modify it 7 * This program is free software; you can redistribute it and/or modify it
@@ -17,8 +17,9 @@
17 */ 17 */
18 18
19/ { 19/ {
20 model = "Lite5200b"; 20 model = "fsl,lite5200b";
21 compatible = "lite5200b\0lite52xx\0mpc5200b\0mpc52xx"; 21 // revision = "1.0";
22 compatible = "fsl,lite5200b\0generic-mpc5200";
22 #address-cells = <1>; 23 #address-cells = <1>;
23 #size-cells = <1>; 24 #size-cells = <1>;
24 25
@@ -47,14 +48,17 @@
47 }; 48 };
48 49
49 soc5200@f0000000 { 50 soc5200@f0000000 {
51 model = "fsl,mpc5200b";
52 revision = ""; // from bootloader
50 #interrupt-cells = <3>; 53 #interrupt-cells = <3>;
51 device_type = "soc"; 54 device_type = "soc";
52 ranges = <0 f0000000 f0010000>; 55 ranges = <0 f0000000 f0010000>;
53 reg = <f0000000 00010000>; 56 reg = <f0000000 00010000>;
54 bus-frequency = <0>; // from bootloader 57 bus-frequency = <0>; // from bootloader
58 system-frequency = <0>; // from bootloader
55 59
56 cdm@200 { 60 cdm@200 {
57 compatible = "mpc5200b-cdm\0mpc52xx-cdm"; 61 compatible = "mpc5200b-cdm\0mpc5200-cdm";
58 reg = <200 38>; 62 reg = <200 38>;
59 }; 63 };
60 64
@@ -64,77 +68,86 @@
64 interrupt-controller; 68 interrupt-controller;
65 #interrupt-cells = <3>; 69 #interrupt-cells = <3>;
66 device_type = "interrupt-controller"; 70 device_type = "interrupt-controller";
67 compatible = "mpc5200b-pic\0mpc52xx-pic"; 71 compatible = "mpc5200b-pic\0mpc5200-pic";
68 reg = <500 80>; 72 reg = <500 80>;
69 built-in; 73 built-in;
70 }; 74 };
71 75
72 gpt@600 { // General Purpose Timer 76 gpt@600 { // General Purpose Timer
73 compatible = "mpc5200b-gpt\0mpc52xx-gpt"; 77 compatible = "mpc5200b-gpt\0mpc5200-gpt";
74 device_type = "gpt"; 78 device_type = "gpt";
79 cell-index = <0>;
75 reg = <600 10>; 80 reg = <600 10>;
76 interrupts = <1 9 0>; 81 interrupts = <1 9 0>;
77 interrupt-parent = <500>; 82 interrupt-parent = <500>;
83 has-wdt;
78 }; 84 };
79 85
80 gpt@610 { // General Purpose Timer 86 gpt@610 { // General Purpose Timer
81 compatible = "mpc5200b-gpt\0mpc52xx-gpt"; 87 compatible = "mpc5200b-gpt\0mpc5200-gpt";
82 device_type = "gpt"; 88 device_type = "gpt";
89 cell-index = <1>;
83 reg = <610 10>; 90 reg = <610 10>;
84 interrupts = <1 a 0>; 91 interrupts = <1 a 0>;
85 interrupt-parent = <500>; 92 interrupt-parent = <500>;
86 }; 93 };
87 94
88 gpt@620 { // General Purpose Timer 95 gpt@620 { // General Purpose Timer
89 compatible = "mpc5200b-gpt\0mpc52xx-gpt"; 96 compatible = "mpc5200b-gpt\0mpc5200-gpt";
90 device_type = "gpt"; 97 device_type = "gpt";
98 cell-index = <2>;
91 reg = <620 10>; 99 reg = <620 10>;
92 interrupts = <1 b 0>; 100 interrupts = <1 b 0>;
93 interrupt-parent = <500>; 101 interrupt-parent = <500>;
94 }; 102 };
95 103
96 gpt@630 { // General Purpose Timer 104 gpt@630 { // General Purpose Timer
97 compatible = "mpc5200b-gpt\0mpc52xx-gpt"; 105 compatible = "mpc5200b-gpt\0mpc5200-gpt";
98 device_type = "gpt"; 106 device_type = "gpt";
107 cell-index = <3>;
99 reg = <630 10>; 108 reg = <630 10>;
100 interrupts = <1 c 0>; 109 interrupts = <1 c 0>;
101 interrupt-parent = <500>; 110 interrupt-parent = <500>;
102 }; 111 };
103 112
104 gpt@640 { // General Purpose Timer 113 gpt@640 { // General Purpose Timer
105 compatible = "mpc5200b-gpt\0mpc52xx-gpt"; 114 compatible = "mpc5200b-gpt\0mpc5200-gpt";
106 device_type = "gpt"; 115 device_type = "gpt";
116 cell-index = <4>;
107 reg = <640 10>; 117 reg = <640 10>;
108 interrupts = <1 d 0>; 118 interrupts = <1 d 0>;
109 interrupt-parent = <500>; 119 interrupt-parent = <500>;
110 }; 120 };
111 121
112 gpt@650 { // General Purpose Timer 122 gpt@650 { // General Purpose Timer
113 compatible = "mpc5200b-gpt\0mpc52xx-gpt"; 123 compatible = "mpc5200b-gpt\0mpc5200-gpt";
114 device_type = "gpt"; 124 device_type = "gpt";
125 cell-index = <5>;
115 reg = <650 10>; 126 reg = <650 10>;
116 interrupts = <1 e 0>; 127 interrupts = <1 e 0>;
117 interrupt-parent = <500>; 128 interrupt-parent = <500>;
118 }; 129 };
119 130
120 gpt@660 { // General Purpose Timer 131 gpt@660 { // General Purpose Timer
121 compatible = "mpc5200b-gpt\0mpc52xx-gpt"; 132 compatible = "mpc5200b-gpt\0mpc5200-gpt";
122 device_type = "gpt"; 133 device_type = "gpt";
134 cell-index = <6>;
123 reg = <660 10>; 135 reg = <660 10>;
124 interrupts = <1 f 0>; 136 interrupts = <1 f 0>;
125 interrupt-parent = <500>; 137 interrupt-parent = <500>;
126 }; 138 };
127 139
128 gpt@670 { // General Purpose Timer 140 gpt@670 { // General Purpose Timer
129 compatible = "mpc5200b-gpt\0mpc52xx-gpt"; 141 compatible = "mpc5200b-gpt\0mpc5200-gpt";
130 device_type = "gpt"; 142 device_type = "gpt";
143 cell-index = <7>;
131 reg = <670 10>; 144 reg = <670 10>;
132 interrupts = <1 10 0>; 145 interrupts = <1 10 0>;
133 interrupt-parent = <500>; 146 interrupt-parent = <500>;
134 }; 147 };
135 148
136 rtc@800 { // Real time clock 149 rtc@800 { // Real time clock
137 compatible = "mpc5200b-rtc\0mpc52xx-rtc"; 150 compatible = "mpc5200b-rtc\0mpc5200-rtc";
138 device_type = "rtc"; 151 device_type = "rtc";
139 reg = <800 100>; 152 reg = <800 100>;
140 interrupts = <1 5 0 1 6 0>; 153 interrupts = <1 5 0 1 6 0>;
@@ -143,7 +156,8 @@
143 156
144 mscan@900 { 157 mscan@900 {
145 device_type = "mscan"; 158 device_type = "mscan";
146 compatible = "mpc5200b-mscan\0mpc52xx-mscan"; 159 compatible = "mpc5200b-mscan\0mpc5200-mscan";
160 cell-index = <0>;
147 interrupts = <2 11 0>; 161 interrupts = <2 11 0>;
148 interrupt-parent = <500>; 162 interrupt-parent = <500>;
149 reg = <900 80>; 163 reg = <900 80>;
@@ -151,21 +165,22 @@
151 165
152 mscan@980 { 166 mscan@980 {
153 device_type = "mscan"; 167 device_type = "mscan";
154 compatible = "mpc5200b-mscan\0mpc52xx-mscan"; 168 compatible = "mpc5200b-mscan\0mpc5200-mscan";
169 cell-index = <1>;
155 interrupts = <1 12 0>; 170 interrupts = <1 12 0>;
156 interrupt-parent = <500>; 171 interrupt-parent = <500>;
157 reg = <980 80>; 172 reg = <980 80>;
158 }; 173 };
159 174
160 gpio@b00 { 175 gpio@b00 {
161 compatible = "mpc5200b-gpio\0mpc52xx-gpio"; 176 compatible = "mpc5200b-gpio\0mpc5200-gpio";
162 reg = <b00 40>; 177 reg = <b00 40>;
163 interrupts = <1 7 0>; 178 interrupts = <1 7 0>;
164 interrupt-parent = <500>; 179 interrupt-parent = <500>;
165 }; 180 };
166 181
167 gpio-wkup@b00 { 182 gpio-wkup@b00 {
168 compatible = "mpc5200b-gpio-wkup\0mpc52xx-gpio-wkup"; 183 compatible = "mpc5200b-gpio-wkup\0mpc5200-gpio-wkup";
169 reg = <c00 40>; 184 reg = <c00 40>;
170 interrupts = <1 8 0 0 3 0>; 185 interrupts = <1 8 0 0 3 0>;
171 interrupt-parent = <500>; 186 interrupt-parent = <500>;
@@ -176,7 +191,7 @@
176 #size-cells = <2>; 191 #size-cells = <2>;
177 #address-cells = <3>; 192 #address-cells = <3>;
178 device_type = "pci"; 193 device_type = "pci";
179 compatible = "mpc5200b-pci\0mpc52xx-pci"; 194 compatible = "mpc5200b-pci\0mpc5200-pci";
180 reg = <d00 100>; 195 reg = <d00 100>;
181 interrupt-map-mask = <f800 0 0 7>; 196 interrupt-map-mask = <f800 0 0 7>;
182 interrupt-map = <c000 0 0 1 500 0 0 3 // 1st slot 197 interrupt-map = <c000 0 0 1 500 0 0 3 // 1st slot
@@ -199,7 +214,7 @@
199 214
200 spi@f00 { 215 spi@f00 {
201 device_type = "spi"; 216 device_type = "spi";
202 compatible = "mpc5200b-spi\0mpc52xx-spi"; 217 compatible = "mpc5200b-spi\0mpc5200-spi";
203 reg = <f00 20>; 218 reg = <f00 20>;
204 interrupts = <2 d 0 2 e 0>; 219 interrupts = <2 d 0 2 e 0>;
205 interrupt-parent = <500>; 220 interrupt-parent = <500>;
@@ -207,7 +222,7 @@
207 222
208 usb@1000 { 223 usb@1000 {
209 device_type = "usb-ohci-be"; 224 device_type = "usb-ohci-be";
210 compatible = "mpc5200b-ohci\0mpc52xx-ohci\0ohci-be"; 225 compatible = "mpc5200b-ohci\0mpc5200-ohci\0ohci-be";
211 reg = <1000 ff>; 226 reg = <1000 ff>;
212 interrupts = <2 6 0>; 227 interrupts = <2 6 0>;
213 interrupt-parent = <500>; 228 interrupt-parent = <500>;
@@ -215,7 +230,7 @@
215 230
216 bestcomm@1200 { 231 bestcomm@1200 {
217 device_type = "dma-controller"; 232 device_type = "dma-controller";
218 compatible = "mpc5200b-bestcomm\0mpc52xx-bestcomm"; 233 compatible = "mpc5200b-bestcomm\0mpc5200-bestcomm";
219 reg = <1200 80>; 234 reg = <1200 80>;
220 interrupts = <3 0 0 3 1 0 3 2 0 3 3 0 235 interrupts = <3 0 0 3 1 0 3 2 0 3 3 0
221 3 4 0 3 5 0 3 6 0 3 7 0 236 3 4 0 3 5 0 3 6 0 3 7 0
@@ -225,67 +240,73 @@
225 }; 240 };
226 241
227 xlb@1f00 { 242 xlb@1f00 {
228 compatible = "mpc5200b-xlb\0mpc52xx-xlb"; 243 compatible = "mpc5200b-xlb\0mpc5200-xlb";
229 reg = <1f00 100>; 244 reg = <1f00 100>;
230 }; 245 };
231 246
232 serial@2000 { // PSC1 247 serial@2000 { // PSC1
233 device_type = "serial"; 248 device_type = "serial";
234 compatible = "mpc5200b-psc-uart\0mpc52xx-psc-uart"; 249 compatible = "mpc5200b-psc-uart\0mpc5200-psc-uart";
235 port-number = <0>; // Logical port assignment 250 port-number = <0>; // Logical port assignment
251 cell-index = <0>;
236 reg = <2000 100>; 252 reg = <2000 100>;
237 interrupts = <2 1 0>; 253 interrupts = <2 1 0>;
238 interrupt-parent = <500>; 254 interrupt-parent = <500>;
239 }; 255 };
240 256
241 // PSC2 in spi mode example 257 // PSC2 in ac97 mode example
242 spi@2200 { // PSC2 258 //ac97@2200 { // PSC2
243 device_type = "spi"; 259 // device_type = "sound";
244 compatible = "mpc5200b-psc-spi\0mpc52xx-psc-spi"; 260 // compatible = "mpc5200b-psc-ac97\0mpc5200-psc-ac97";
245 reg = <2200 100>; 261 // cell-index = <1>;
246 interrupts = <2 2 0>; 262 // reg = <2200 100>;
247 interrupt-parent = <500>; 263 // interrupts = <2 2 0>;
248 }; 264 // interrupt-parent = <500>;
265 //};
249 266
250 // PSC3 in CODEC mode example 267 // PSC3 in CODEC mode example
251 i2s@2400 { // PSC3 268 //i2s@2400 { // PSC3
252 device_type = "sound"; 269 // device_type = "sound";
253 compatible = "mpc5200b-psc-i2s\0mpc52xx-psc-i2s"; 270 // compatible = "mpc5200b-psc-i2s"; //not 5200 compatible
254 reg = <2400 100>; 271 // cell-index = <2>;
255 interrupts = <2 3 0>; 272 // reg = <2400 100>;
256 interrupt-parent = <500>; 273 // interrupts = <2 3 0>;
257 }; 274 // interrupt-parent = <500>;
275 //};
258 276
259 // PSC4 unconfigured 277 // PSC4 in uart mode example
260 //serial@2600 { // PSC4 278 //serial@2600 { // PSC4
261 // device_type = "serial"; 279 // device_type = "serial";
262 // compatible = "mpc5200b-psc-uart\0mpc52xx-psc-uart"; 280 // compatible = "mpc5200b-psc-uart\0mpc5200-psc-uart";
281 // cell-index = <3>;
263 // reg = <2600 100>; 282 // reg = <2600 100>;
264 // interrupts = <2 b 0>; 283 // interrupts = <2 b 0>;
265 // interrupt-parent = <500>; 284 // interrupt-parent = <500>;
266 //}; 285 //};
267 286
268 // PSC5 unconfigured 287 // PSC5 in uart mode example
269 //serial@2800 { // PSC5 288 //serial@2800 { // PSC5
270 // device_type = "serial"; 289 // device_type = "serial";
271 // compatible = "mpc5200b-psc-uart\0mpc52xx-psc-uart"; 290 // compatible = "mpc5200b-psc-uart\0mpc5200-psc-uart";
291 // cell-index = <4>;
272 // reg = <2800 100>; 292 // reg = <2800 100>;
273 // interrupts = <2 c 0>; 293 // interrupts = <2 c 0>;
274 // interrupt-parent = <500>; 294 // interrupt-parent = <500>;
275 //}; 295 //};
276 296
277 // PSC6 in AC97 mode example 297 // PSC6 in spi mode example
278 ac97@2c00 { // PSC6 298 //spi@2c00 { // PSC6
279 device_type = "sound"; 299 // device_type = "spi";
280 compatible = "mpc5200b-psc-ac97\0mpc52xx-psc-ac97"; 300 // compatible = "mpc5200b-psc-spi\0mpc5200-psc-spi";
281 reg = <2c00 100>; 301 // cell-index = <5>;
282 interrupts = <2 4 0>; 302 // reg = <2c00 100>;
283 interrupt-parent = <500>; 303 // interrupts = <2 4 0>;
284 }; 304 // interrupt-parent = <500>;
305 //};
285 306
286 ethernet@3000 { 307 ethernet@3000 {
287 device_type = "network"; 308 device_type = "network";
288 compatible = "mpc5200b-fec\0mpc52xx-fec"; 309 compatible = "mpc5200b-fec\0mpc5200-fec";
289 reg = <3000 800>; 310 reg = <3000 800>;
290 mac-address = [ 02 03 04 05 06 07 ]; // Bad! 311 mac-address = [ 02 03 04 05 06 07 ]; // Bad!
291 interrupts = <2 5 0>; 312 interrupts = <2 5 0>;
@@ -294,7 +315,7 @@
294 315
295 ata@3a00 { 316 ata@3a00 {
296 device_type = "ata"; 317 device_type = "ata";
297 compatible = "mpc5200b-ata\0mpc52xx-ata"; 318 compatible = "mpc5200b-ata\0mpc5200-ata";
298 reg = <3a00 100>; 319 reg = <3a00 100>;
299 interrupts = <2 7 0>; 320 interrupts = <2 7 0>;
300 interrupt-parent = <500>; 321 interrupt-parent = <500>;
@@ -302,7 +323,8 @@
302 323
303 i2c@3d00 { 324 i2c@3d00 {
304 device_type = "i2c"; 325 device_type = "i2c";
305 compatible = "mpc5200b-i2c\0mpc52xx-i2c"; 326 compatible = "mpc5200b-i2c\0mpc5200-i2c";
327 cell-index = <0>;
306 reg = <3d00 40>; 328 reg = <3d00 40>;
307 interrupts = <2 f 0>; 329 interrupts = <2 f 0>;
308 interrupt-parent = <500>; 330 interrupt-parent = <500>;
@@ -310,14 +332,15 @@
310 332
311 i2c@3d40 { 333 i2c@3d40 {
312 device_type = "i2c"; 334 device_type = "i2c";
313 compatible = "mpc5200b-i2c\0mpc52xx-i2c"; 335 compatible = "mpc5200b-i2c\0mpc5200-i2c";
336 cell-index = <1>;
314 reg = <3d40 40>; 337 reg = <3d40 40>;
315 interrupts = <2 10 0>; 338 interrupts = <2 10 0>;
316 interrupt-parent = <500>; 339 interrupt-parent = <500>;
317 }; 340 };
318 sram@8000 { 341 sram@8000 {
319 device_type = "sram"; 342 device_type = "sram";
320 compatible = "mpc5200b-sram\0mpc52xx-sram\0sram"; 343 compatible = "mpc5200b-sram\0mpc5200-sram\0sram";
321 reg = <8000 4000>; 344 reg = <8000 4000>;
322 }; 345 };
323 }; 346 };
diff --git a/arch/powerpc/boot/dts/mpc8313erdb.dts b/arch/powerpc/boot/dts/mpc8313erdb.dts
new file mode 100644
index 000000000000..3d2f5a06df3f
--- /dev/null
+++ b/arch/powerpc/boot/dts/mpc8313erdb.dts
@@ -0,0 +1,219 @@
1/*
2 * MPC8313E RDB Device Tree Source
3 *
4 * Copyright 2005, 2006, 2007 Freescale Semiconductor Inc.
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 */
11
12/ {
13 model = "MPC8313ERDB";
14 compatible = "MPC83xx";
15 #address-cells = <1>;
16 #size-cells = <1>;
17
18 cpus {
19 #cpus = <1>;
20 #address-cells = <1>;
21 #size-cells = <0>;
22
23 PowerPC,8313@0 {
24 device_type = "cpu";
25 reg = <0>;
26 d-cache-line-size = <20>; // 32 bytes
27 i-cache-line-size = <20>; // 32 bytes
28 d-cache-size = <4000>; // L1, 16K
29 i-cache-size = <4000>; // L1, 16K
30 timebase-frequency = <0>; // from bootloader
31 bus-frequency = <0>; // from bootloader
32 clock-frequency = <0>; // from bootloader
33 32-bit;
34 };
35 };
36
37 memory {
38 device_type = "memory";
39 reg = <00000000 08000000>; // 128MB at 0
40 };
41
42 soc8313@e0000000 {
43 #address-cells = <1>;
44 #size-cells = <1>;
45 #interrupt-cells = <2>;
46 device_type = "soc";
47 ranges = <0 e0000000 00100000>;
48 reg = <e0000000 00000200>;
49 bus-frequency = <0>;
50
51 wdt@200 {
52 device_type = "watchdog";
53 compatible = "mpc83xx_wdt";
54 reg = <200 100>;
55 };
56
57 i2c@3000 {
58 device_type = "i2c";
59 compatible = "fsl-i2c";
60 reg = <3000 100>;
61 interrupts = <e 8>;
62 interrupt-parent = <700>;
63 dfsrr;
64 };
65
66 i2c@3100 {
67 device_type = "i2c";
68 compatible = "fsl-i2c";
69 reg = <3100 100>;
70 interrupts = <f 8>;
71 interrupt-parent = <700>;
72 dfsrr;
73 };
74
75 spi@7000 {
76 device_type = "spi";
77 compatible = "mpc83xx_spi";
78 reg = <7000 1000>;
79 interrupts = <10 8>;
80 interrupt-parent = <700>;
81 mode = <0>;
82 };
83
84 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
85 usb@23000 {
86 device_type = "usb";
87 compatible = "fsl-usb2-dr";
88 reg = <23000 1000>;
89 #address-cells = <1>;
90 #size-cells = <0>;
91 interrupt-parent = <700>;
92 interrupts = <26 2>;
93 phy_type = "utmi_wide";
94 };
95
96 mdio@24520 {
97 device_type = "mdio";
98 compatible = "gianfar";
99 reg = <24520 20>;
100 #address-cells = <1>;
101 #size-cells = <0>;
102 linux,phandle = <24520>;
103 ethernet-phy@1 {
104 linux,phandle = <2452001>;
105 interrupt-parent = <700>;
106 interrupts = <13 2>;
107 reg = <1>;
108 device_type = "ethernet-phy";
109 };
110 ethernet-phy@4 {
111 linux,phandle = <2452004>;
112 interrupt-parent = <700>;
113 interrupts = <14 2>;
114 reg = <4>;
115 device_type = "ethernet-phy";
116 };
117 };
118
119 ethernet@24000 {
120 device_type = "network";
121 model = "eTSEC";
122 compatible = "gianfar";
123 reg = <24000 1000>;
124 local-mac-address = [ 00 00 00 00 00 00 ];
125 interrupts = <25 8 24 8 23 8>;
126 interrupt-parent = <700>;
127 phy-handle = <2452001>;
128 };
129
130 ethernet@25000 {
131 device_type = "network";
132 model = "eTSEC";
133 compatible = "gianfar";
134 reg = <25000 1000>;
135 local-mac-address = [ 00 00 00 00 00 00 ];
136 interrupts = <22 8 21 8 20 8>;
137 interrupt-parent = <700>;
138 phy-handle = <2452004>;
139 };
140
141 serial@4500 {
142 device_type = "serial";
143 compatible = "ns16550";
144 reg = <4500 100>;
145 clock-frequency = <0>;
146 interrupts = <9 8>;
147 interrupt-parent = <700>;
148 };
149
150 serial@4600 {
151 device_type = "serial";
152 compatible = "ns16550";
153 reg = <4600 100>;
154 clock-frequency = <0>;
155 interrupts = <a 8>;
156 interrupt-parent = <700>;
157 };
158
159 pci@8500 {
160 interrupt-map-mask = <f800 0 0 7>;
161 interrupt-map = <
162
163 /* IDSEL 0x0E -mini PCI */
164 7000 0 0 1 700 12 8
165 7000 0 0 2 700 12 8
166 7000 0 0 3 700 12 8
167 7000 0 0 4 700 12 8
168
169 /* IDSEL 0x0F - PCI slot */
170 7800 0 0 1 700 11 8
171 7800 0 0 2 700 12 8
172 7800 0 0 3 700 11 8
173 7800 0 0 4 700 12 8>;
174 interrupt-parent = <700>;
175 interrupts = <42 8>;
176 bus-range = <0 0>;
177 ranges = <02000000 0 90000000 90000000 0 10000000
178 42000000 0 80000000 80000000 0 10000000
179 01000000 0 00000000 e2000000 0 00100000>;
180 clock-frequency = <3f940aa>;
181 #interrupt-cells = <1>;
182 #size-cells = <2>;
183 #address-cells = <3>;
184 reg = <8500 100>;
185 compatible = "83xx";
186 device_type = "pci";
187 };
188
189 crypto@30000 {
190 device_type = "crypto";
191 model = "SEC2";
192 compatible = "talitos";
193 reg = <30000 7000>;
194 interrupts = <b 8>;
195 interrupt-parent = <700>;
196 /* Rev. 2.2 */
197 num-channels = <1>;
198 channel-fifo-len = <18>;
199 exec-units-mask = <0000004c>;
200 descriptor-types-mask = <0122003f>;
201 };
202
203 /* IPIC
204 * interrupts cell = <intr #, sense>
205 * sense values match linux IORESOURCE_IRQ_* defines:
206 * sense == 8: Level, low assertion
207 * sense == 2: Edge, high-to-low change
208 */
209 pic@700 {
210 linux,phandle = <700>;
211 interrupt-controller;
212 #address-cells = <0>;
213 #interrupt-cells = <2>;
214 reg = <700 100>;
215 built-in;
216 device_type = "ipic";
217 };
218 };
219};
diff --git a/arch/powerpc/boot/dts/mpc8349emds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts
index efceb3432653..dc121b3cb4a9 100644
--- a/arch/powerpc/boot/dts/mpc8349emds.dts
+++ b/arch/powerpc/boot/dts/mpc834x_mds.dts
@@ -39,6 +39,11 @@
39 reg = <00000000 10000000>; // 256MB at 0 39 reg = <00000000 10000000>; // 256MB at 0
40 }; 40 };
41 41
42 bcsr@e2400000 {
43 device_type = "board-control";
44 reg = <e2400000 8000>;
45 };
46
42 soc8349@e0000000 { 47 soc8349@e0000000 {
43 #address-cells = <1>; 48 #address-cells = <1>;
44 #size-cells = <1>; 49 #size-cells = <1>;
@@ -103,6 +108,7 @@
103 #size-cells = <0>; 108 #size-cells = <0>;
104 interrupt-parent = <700>; 109 interrupt-parent = <700>;
105 interrupts = <26 2>; 110 interrupts = <26 2>;
111 dr_mode = "otg";
106 phy_type = "ulpi"; 112 phy_type = "ulpi";
107 }; 113 };
108 114
diff --git a/arch/powerpc/configs/linkstation_defconfig b/arch/powerpc/configs/linkstation_defconfig
index 405c1c908213..dde66a597a8d 100644
--- a/arch/powerpc/configs/linkstation_defconfig
+++ b/arch/powerpc/configs/linkstation_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.20-rc5 3# Linux kernel version: 2.6.20-rc6
4# Mon Jan 22 22:17:58 2007 4# Sun Jan 28 23:13:56 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -58,7 +58,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
58# 58#
59# General setup 59# General setup
60# 60#
61CONFIG_LOCALVERSION="-kuroboxHG" 61CONFIG_LOCALVERSION=""
62CONFIG_LOCALVERSION_AUTO=y 62CONFIG_LOCALVERSION_AUTO=y
63CONFIG_SWAP=y 63CONFIG_SWAP=y
64CONFIG_SYSVIPC=y 64CONFIG_SYSVIPC=y
@@ -206,7 +206,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
206CONFIG_PROC_DEVICETREE=y 206CONFIG_PROC_DEVICETREE=y
207# CONFIG_CMDLINE_BOOL is not set 207# CONFIG_CMDLINE_BOOL is not set
208# CONFIG_PM is not set 208# CONFIG_PM is not set
209# CONFIG_SECCOMP is not set 209CONFIG_SECCOMP=y
210CONFIG_ISA_DMA_API=y 210CONFIG_ISA_DMA_API=y
211 211
212# 212#
@@ -312,39 +312,40 @@ CONFIG_NF_CONNTRACK=m
312# CONFIG_NF_CT_ACCT is not set 312# CONFIG_NF_CT_ACCT is not set
313# CONFIG_NF_CONNTRACK_MARK is not set 313# CONFIG_NF_CONNTRACK_MARK is not set
314# CONFIG_NF_CONNTRACK_EVENTS is not set 314# CONFIG_NF_CONNTRACK_EVENTS is not set
315# CONFIG_NF_CT_PROTO_SCTP is not set 315CONFIG_NF_CT_PROTO_GRE=m
316# CONFIG_NF_CONNTRACK_AMANDA is not set 316CONFIG_NF_CT_PROTO_SCTP=m
317CONFIG_NF_CONNTRACK_AMANDA=m
317CONFIG_NF_CONNTRACK_FTP=m 318CONFIG_NF_CONNTRACK_FTP=m
318# CONFIG_NF_CONNTRACK_H323 is not set 319CONFIG_NF_CONNTRACK_H323=m
319CONFIG_NF_CONNTRACK_IRC=m 320CONFIG_NF_CONNTRACK_IRC=m
320# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set 321CONFIG_NF_CONNTRACK_NETBIOS_NS=m
321# CONFIG_NF_CONNTRACK_PPTP is not set 322CONFIG_NF_CONNTRACK_PPTP=m
322# CONFIG_NF_CONNTRACK_SIP is not set 323CONFIG_NF_CONNTRACK_SIP=m
323CONFIG_NF_CONNTRACK_TFTP=m 324CONFIG_NF_CONNTRACK_TFTP=m
324CONFIG_NETFILTER_XTABLES=m 325CONFIG_NETFILTER_XTABLES=m
325CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m 326# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
326# CONFIG_NETFILTER_XT_TARGET_DSCP is not set 327# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
327CONFIG_NETFILTER_XT_TARGET_MARK=m 328# CONFIG_NETFILTER_XT_TARGET_MARK is not set
328# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set 329# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
329CONFIG_NETFILTER_XT_TARGET_NFLOG=m 330# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
330# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set 331# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
331# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set 332# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
332CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 333# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
333# CONFIG_NETFILTER_XT_MATCH_DCCP is not set 334# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
334# CONFIG_NETFILTER_XT_MATCH_DSCP is not set 335# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
335CONFIG_NETFILTER_XT_MATCH_ESP=m 336# CONFIG_NETFILTER_XT_MATCH_ESP is not set
336CONFIG_NETFILTER_XT_MATCH_HELPER=m 337# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
337CONFIG_NETFILTER_XT_MATCH_LENGTH=m 338# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
338CONFIG_NETFILTER_XT_MATCH_LIMIT=m 339# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
339CONFIG_NETFILTER_XT_MATCH_MAC=m 340CONFIG_NETFILTER_XT_MATCH_MAC=m
340CONFIG_NETFILTER_XT_MATCH_MARK=m 341# CONFIG_NETFILTER_XT_MATCH_MARK is not set
341# CONFIG_NETFILTER_XT_MATCH_POLICY is not set 342# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
342CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m 343# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
343CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 344CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
344# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set 345# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
345# CONFIG_NETFILTER_XT_MATCH_REALM is not set 346# CONFIG_NETFILTER_XT_MATCH_REALM is not set
346# CONFIG_NETFILTER_XT_MATCH_SCTP is not set 347# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
347# CONFIG_NETFILTER_XT_MATCH_STATE is not set 348CONFIG_NETFILTER_XT_MATCH_STATE=m
348# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set 349# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
349# CONFIG_NETFILTER_XT_MATCH_STRING is not set 350# CONFIG_NETFILTER_XT_MATCH_STRING is not set
350# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set 351# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
@@ -359,12 +360,12 @@ CONFIG_NF_CONNTRACK_PROC_COMPAT=y
359CONFIG_IP_NF_IPTABLES=m 360CONFIG_IP_NF_IPTABLES=m
360CONFIG_IP_NF_MATCH_IPRANGE=m 361CONFIG_IP_NF_MATCH_IPRANGE=m
361# CONFIG_IP_NF_MATCH_TOS is not set 362# CONFIG_IP_NF_MATCH_TOS is not set
362# CONFIG_IP_NF_MATCH_RECENT is not set 363CONFIG_IP_NF_MATCH_RECENT=m
363# CONFIG_IP_NF_MATCH_ECN is not set 364# CONFIG_IP_NF_MATCH_ECN is not set
364# CONFIG_IP_NF_MATCH_AH is not set 365# CONFIG_IP_NF_MATCH_AH is not set
365# CONFIG_IP_NF_MATCH_TTL is not set 366# CONFIG_IP_NF_MATCH_TTL is not set
366# CONFIG_IP_NF_MATCH_OWNER is not set 367CONFIG_IP_NF_MATCH_OWNER=m
367# CONFIG_IP_NF_MATCH_ADDRTYPE is not set 368CONFIG_IP_NF_MATCH_ADDRTYPE=m
368CONFIG_IP_NF_FILTER=m 369CONFIG_IP_NF_FILTER=m
369CONFIG_IP_NF_TARGET_REJECT=m 370CONFIG_IP_NF_TARGET_REJECT=m
370# CONFIG_IP_NF_TARGET_LOG is not set 371# CONFIG_IP_NF_TARGET_LOG is not set
@@ -374,16 +375,17 @@ CONFIG_NF_NAT=m
374CONFIG_NF_NAT_NEEDED=y 375CONFIG_NF_NAT_NEEDED=y
375CONFIG_IP_NF_TARGET_MASQUERADE=m 376CONFIG_IP_NF_TARGET_MASQUERADE=m
376CONFIG_IP_NF_TARGET_REDIRECT=m 377CONFIG_IP_NF_TARGET_REDIRECT=m
377CONFIG_IP_NF_TARGET_NETMAP=m 378# CONFIG_IP_NF_TARGET_NETMAP is not set
378CONFIG_IP_NF_TARGET_SAME=m 379# CONFIG_IP_NF_TARGET_SAME is not set
379# CONFIG_NF_NAT_SNMP_BASIC is not set 380# CONFIG_NF_NAT_SNMP_BASIC is not set
381CONFIG_NF_NAT_PROTO_GRE=m
380CONFIG_NF_NAT_FTP=m 382CONFIG_NF_NAT_FTP=m
381CONFIG_NF_NAT_IRC=m 383CONFIG_NF_NAT_IRC=m
382CONFIG_NF_NAT_TFTP=m 384CONFIG_NF_NAT_TFTP=m
383# CONFIG_NF_NAT_AMANDA is not set 385CONFIG_NF_NAT_AMANDA=m
384# CONFIG_NF_NAT_PPTP is not set 386CONFIG_NF_NAT_PPTP=m
385# CONFIG_NF_NAT_H323 is not set 387CONFIG_NF_NAT_H323=m
386# CONFIG_NF_NAT_SIP is not set 388CONFIG_NF_NAT_SIP=m
387CONFIG_IP_NF_MANGLE=m 389CONFIG_IP_NF_MANGLE=m
388CONFIG_IP_NF_TARGET_TOS=m 390CONFIG_IP_NF_TARGET_TOS=m
389CONFIG_IP_NF_TARGET_ECN=m 391CONFIG_IP_NF_TARGET_ECN=m
@@ -472,6 +474,7 @@ CONFIG_MTD_PARTITIONS=y
472# User Modules And Translation Layers 474# User Modules And Translation Layers
473# 475#
474CONFIG_MTD_CHAR=y 476CONFIG_MTD_CHAR=y
477CONFIG_MTD_BLKDEVS=y
475CONFIG_MTD_BLOCK=y 478CONFIG_MTD_BLOCK=y
476# CONFIG_FTL is not set 479# CONFIG_FTL is not set
477# CONFIG_NFTL is not set 480# CONFIG_NFTL is not set
@@ -518,6 +521,7 @@ CONFIG_MTD_PHYSMAP=y
518CONFIG_MTD_PHYSMAP_START=0xffc00000 521CONFIG_MTD_PHYSMAP_START=0xffc00000
519CONFIG_MTD_PHYSMAP_LEN=0x400000 522CONFIG_MTD_PHYSMAP_LEN=0x400000
520CONFIG_MTD_PHYSMAP_BANKWIDTH=1 523CONFIG_MTD_PHYSMAP_BANKWIDTH=1
524# CONFIG_MTD_PHYSMAP_OF is not set
521# CONFIG_MTD_PLATRAM is not set 525# CONFIG_MTD_PLATRAM is not set
522 526
523# 527#
@@ -540,6 +544,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=1
540# NAND Flash Device Drivers 544# NAND Flash Device Drivers
541# 545#
542# CONFIG_MTD_NAND is not set 546# CONFIG_MTD_NAND is not set
547# CONFIG_MTD_NAND_CAFE is not set
543 548
544# 549#
545# OneNAND Flash Device Drivers 550# OneNAND Flash Device Drivers
@@ -696,7 +701,7 @@ CONFIG_ATA=y
696# CONFIG_PATA_HPT37X is not set 701# CONFIG_PATA_HPT37X is not set
697# CONFIG_PATA_HPT3X2N is not set 702# CONFIG_PATA_HPT3X2N is not set
698# CONFIG_PATA_HPT3X3 is not set 703# CONFIG_PATA_HPT3X3 is not set
699# CONFIG_PATA_IT821X is not set 704CONFIG_PATA_IT821X=y
700# CONFIG_PATA_JMICRON is not set 705# CONFIG_PATA_JMICRON is not set
701# CONFIG_PATA_TRIFLEX is not set 706# CONFIG_PATA_TRIFLEX is not set
702# CONFIG_PATA_MARVELL is not set 707# CONFIG_PATA_MARVELL is not set
@@ -763,11 +768,33 @@ CONFIG_TUN=m
763# 768#
764# PHY device support 769# PHY device support
765# 770#
771# CONFIG_PHYLIB is not set
766 772
767# 773#
768# Ethernet (10 or 100Mbit) 774# Ethernet (10 or 100Mbit)
769# 775#
770# CONFIG_NET_ETHERNET is not set 776CONFIG_NET_ETHERNET=y
777# CONFIG_MII is not set
778# CONFIG_HAPPYMEAL is not set
779# CONFIG_SUNGEM is not set
780# CONFIG_CASSINI is not set
781# CONFIG_NET_VENDOR_3COM is not set
782
783#
784# Tulip family network device support
785#
786CONFIG_NET_TULIP=y
787# CONFIG_DE2104X is not set
788CONFIG_TULIP=y
789# CONFIG_TULIP_MWI is not set
790CONFIG_TULIP_MMIO=y
791# CONFIG_TULIP_NAPI is not set
792# CONFIG_DE4X5 is not set
793# CONFIG_WINBOND_840 is not set
794# CONFIG_DM9102 is not set
795# CONFIG_ULI526X is not set
796# CONFIG_HP100 is not set
797# CONFIG_NET_PCI is not set
771 798
772# 799#
773# Ethernet (1000 Mbit) 800# Ethernet (1000 Mbit)
@@ -829,7 +856,8 @@ CONFIG_NET_RADIO=y
829# CONFIG_USB_ZD1201 is not set 856# CONFIG_USB_ZD1201 is not set
830# CONFIG_HOSTAP is not set 857# CONFIG_HOSTAP is not set
831# CONFIG_BCM43XX is not set 858# CONFIG_BCM43XX is not set
832# CONFIG_ZD1211RW is not set 859CONFIG_ZD1211RW=m
860# CONFIG_ZD1211RW_DEBUG is not set
833CONFIG_NET_WIRELESS=y 861CONFIG_NET_WIRELESS=y
834 862
835# 863#
@@ -1098,7 +1126,7 @@ CONFIG_DUMMY_CONSOLE=y
1098# 1126#
1099# HID Devices 1127# HID Devices
1100# 1128#
1101CONFIG_HID=y 1129CONFIG_HID=m
1102 1130
1103# 1131#
1104# USB support 1132# USB support
@@ -1115,7 +1143,6 @@ CONFIG_USB=y
1115CONFIG_USB_DEVICEFS=y 1143CONFIG_USB_DEVICEFS=y
1116# CONFIG_USB_BANDWIDTH is not set 1144# CONFIG_USB_BANDWIDTH is not set
1117# CONFIG_USB_DYNAMIC_MINORS is not set 1145# CONFIG_USB_DYNAMIC_MINORS is not set
1118# CONFIG_USB_MULTITHREAD_PROBE is not set
1119# CONFIG_USB_OTG is not set 1146# CONFIG_USB_OTG is not set
1120 1147
1121# 1148#
@@ -1136,7 +1163,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1136# USB Device Class drivers 1163# USB Device Class drivers
1137# 1164#
1138# CONFIG_USB_ACM is not set 1165# CONFIG_USB_ACM is not set
1139# CONFIG_USB_PRINTER is not set 1166CONFIG_USB_PRINTER=m
1140 1167
1141# 1168#
1142# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 1169# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -1371,7 +1398,11 @@ CONFIG_FS_MBCACHE=y
1371# CONFIG_REISERFS_FS is not set 1398# CONFIG_REISERFS_FS is not set
1372# CONFIG_JFS_FS is not set 1399# CONFIG_JFS_FS is not set
1373CONFIG_FS_POSIX_ACL=y 1400CONFIG_FS_POSIX_ACL=y
1374# CONFIG_XFS_FS is not set 1401CONFIG_XFS_FS=m
1402# CONFIG_XFS_QUOTA is not set
1403# CONFIG_XFS_SECURITY is not set
1404# CONFIG_XFS_POSIX_ACL is not set
1405# CONFIG_XFS_RT is not set
1375# CONFIG_GFS2_FS is not set 1406# CONFIG_GFS2_FS is not set
1376# CONFIG_OCFS2_FS is not set 1407# CONFIG_OCFS2_FS is not set
1377# CONFIG_MINIX_FS is not set 1408# CONFIG_MINIX_FS is not set
@@ -1461,7 +1492,12 @@ CONFIG_SUNRPC_GSS=y
1461CONFIG_RPCSEC_GSS_KRB5=y 1492CONFIG_RPCSEC_GSS_KRB5=y
1462# CONFIG_RPCSEC_GSS_SPKM3 is not set 1493# CONFIG_RPCSEC_GSS_SPKM3 is not set
1463# CONFIG_SMB_FS is not set 1494# CONFIG_SMB_FS is not set
1464# CONFIG_CIFS is not set 1495CONFIG_CIFS=m
1496# CONFIG_CIFS_STATS is not set
1497# CONFIG_CIFS_WEAK_PW_HASH is not set
1498# CONFIG_CIFS_XATTR is not set
1499# CONFIG_CIFS_DEBUG2 is not set
1500# CONFIG_CIFS_EXPERIMENTAL is not set
1465# CONFIG_NCP_FS is not set 1501# CONFIG_NCP_FS is not set
1466# CONFIG_CODA_FS is not set 1502# CONFIG_CODA_FS is not set
1467# CONFIG_AFS_FS is not set 1503# CONFIG_AFS_FS is not set
@@ -1495,7 +1531,7 @@ CONFIG_NLS_CODEPAGE_437=m
1495# CONFIG_NLS_CODEPAGE_869 is not set 1531# CONFIG_NLS_CODEPAGE_869 is not set
1496# CONFIG_NLS_CODEPAGE_936 is not set 1532# CONFIG_NLS_CODEPAGE_936 is not set
1497# CONFIG_NLS_CODEPAGE_950 is not set 1533# CONFIG_NLS_CODEPAGE_950 is not set
1498# CONFIG_NLS_CODEPAGE_932 is not set 1534CONFIG_NLS_CODEPAGE_932=m
1499# CONFIG_NLS_CODEPAGE_949 is not set 1535# CONFIG_NLS_CODEPAGE_949 is not set
1500# CONFIG_NLS_CODEPAGE_874 is not set 1536# CONFIG_NLS_CODEPAGE_874 is not set
1501# CONFIG_NLS_ISO8859_8 is not set 1537# CONFIG_NLS_ISO8859_8 is not set
@@ -1526,12 +1562,14 @@ CONFIG_NLS_UTF8=m
1526# Library routines 1562# Library routines
1527# 1563#
1528CONFIG_BITREVERSE=y 1564CONFIG_BITREVERSE=y
1529# CONFIG_CRC_CCITT is not set 1565CONFIG_CRC_CCITT=m
1530# CONFIG_CRC16 is not set 1566# CONFIG_CRC16 is not set
1531CONFIG_CRC32=y 1567CONFIG_CRC32=y
1532CONFIG_LIBCRC32C=m 1568CONFIG_LIBCRC32C=m
1533CONFIG_ZLIB_INFLATE=m 1569CONFIG_ZLIB_INFLATE=m
1534CONFIG_ZLIB_DEFLATE=m 1570CONFIG_ZLIB_DEFLATE=m
1571CONFIG_TEXTSEARCH=y
1572CONFIG_TEXTSEARCH_KMP=m
1535CONFIG_PLIST=y 1573CONFIG_PLIST=y
1536CONFIG_IOMAP_COPY=y 1574CONFIG_IOMAP_COPY=y
1537 1575
diff --git a/arch/powerpc/configs/mpc8313_rdb_defconfig b/arch/powerpc/configs/mpc8313_rdb_defconfig
new file mode 100644
index 000000000000..f87523716c44
--- /dev/null
+++ b/arch/powerpc/configs/mpc8313_rdb_defconfig
@@ -0,0 +1,1409 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.20
4# Wed Feb 7 22:08:04 2007
5#
6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y
8CONFIG_PPC_MERGE=y
9CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_IRQ_PER_CPU=y
12CONFIG_RWSEM_XCHGADD_ALGORITHM=y
13CONFIG_ARCH_HAS_ILOG2_U32=y
14CONFIG_GENERIC_HWEIGHT=y
15CONFIG_GENERIC_CALIBRATE_DELAY=y
16CONFIG_GENERIC_FIND_NEXT_BIT=y
17CONFIG_PPC=y
18CONFIG_EARLY_PRINTK=y
19CONFIG_GENERIC_NVRAM=y
20CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
21CONFIG_ARCH_MAY_HAVE_PC_FDC=y
22CONFIG_PPC_OF=y
23CONFIG_PPC_UDBG_16550=y
24# CONFIG_GENERIC_TBSYNC is not set
25CONFIG_AUDIT_ARCH=y
26CONFIG_GENERIC_BUG=y
27CONFIG_DEFAULT_UIMAGE=y
28
29#
30# Processor support
31#
32# CONFIG_CLASSIC32 is not set
33# CONFIG_PPC_82xx is not set
34CONFIG_PPC_83xx=y
35# CONFIG_PPC_85xx is not set
36# CONFIG_PPC_86xx is not set
37# CONFIG_PPC_8xx is not set
38# CONFIG_40x is not set
39# CONFIG_44x is not set
40# CONFIG_E200 is not set
41CONFIG_6xx=y
42CONFIG_83xx=y
43CONFIG_PPC_FPU=y
44# CONFIG_PPC_DCR_NATIVE is not set
45# CONFIG_PPC_DCR_MMIO is not set
46CONFIG_PPC_STD_MMU=y
47CONFIG_PPC_STD_MMU_32=y
48# CONFIG_SMP is not set
49CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
50
51#
52# Code maturity level options
53#
54CONFIG_EXPERIMENTAL=y
55CONFIG_BROKEN_ON_SMP=y
56CONFIG_INIT_ENV_ARG_LIMIT=32
57
58#
59# General setup
60#
61CONFIG_LOCALVERSION=""
62CONFIG_LOCALVERSION_AUTO=y
63CONFIG_SWAP=y
64CONFIG_SYSVIPC=y
65# CONFIG_IPC_NS is not set
66# CONFIG_POSIX_MQUEUE is not set
67# CONFIG_BSD_PROCESS_ACCT is not set
68# CONFIG_TASKSTATS is not set
69# CONFIG_UTS_NS is not set
70# CONFIG_AUDIT is not set
71# CONFIG_IKCONFIG is not set
72CONFIG_SYSFS_DEPRECATED=y
73# CONFIG_RELAY is not set
74CONFIG_INITRAMFS_SOURCE=""
75# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
76CONFIG_SYSCTL=y
77CONFIG_EMBEDDED=y
78CONFIG_SYSCTL_SYSCALL=y
79# CONFIG_KALLSYMS is not set
80CONFIG_HOTPLUG=y
81CONFIG_PRINTK=y
82CONFIG_BUG=y
83CONFIG_ELF_CORE=y
84CONFIG_BASE_FULL=y
85CONFIG_FUTEX=y
86# CONFIG_EPOLL is not set
87CONFIG_SHMEM=y
88CONFIG_SLAB=y
89CONFIG_VM_EVENT_COUNTERS=y
90CONFIG_RT_MUTEXES=y
91# CONFIG_TINY_SHMEM is not set
92CONFIG_BASE_SMALL=0
93# CONFIG_SLOB is not set
94
95#
96# Loadable module support
97#
98CONFIG_MODULES=y
99CONFIG_MODULE_UNLOAD=y
100# CONFIG_MODULE_FORCE_UNLOAD is not set
101# CONFIG_MODVERSIONS is not set
102# CONFIG_MODULE_SRCVERSION_ALL is not set
103# CONFIG_KMOD is not set
104
105#
106# Block layer
107#
108CONFIG_BLOCK=y
109# CONFIG_LBD is not set
110# CONFIG_BLK_DEV_IO_TRACE is not set
111# CONFIG_LSF is not set
112
113#
114# IO Schedulers
115#
116CONFIG_IOSCHED_NOOP=y
117CONFIG_IOSCHED_AS=y
118CONFIG_IOSCHED_DEADLINE=y
119CONFIG_IOSCHED_CFQ=y
120CONFIG_DEFAULT_AS=y
121# CONFIG_DEFAULT_DEADLINE is not set
122# CONFIG_DEFAULT_CFQ is not set
123# CONFIG_DEFAULT_NOOP is not set
124CONFIG_DEFAULT_IOSCHED="anticipatory"
125CONFIG_PPC_GEN550=y
126# CONFIG_WANT_EARLY_SERIAL is not set
127
128#
129# Platform support
130#
131CONFIG_MPC8313_RDB=y
132# CONFIG_MPC832x_MDS is not set
133# CONFIG_MPC834x_SYS is not set
134# CONFIG_MPC834x_ITX is not set
135# CONFIG_MPC8360E_PB is not set
136CONFIG_PPC_MPC831x=y
137# CONFIG_MPIC is not set
138
139#
140# Kernel options
141#
142# CONFIG_HIGHMEM is not set
143# CONFIG_HZ_100 is not set
144CONFIG_HZ_250=y
145# CONFIG_HZ_300 is not set
146# CONFIG_HZ_1000 is not set
147CONFIG_HZ=250
148CONFIG_PREEMPT_NONE=y
149# CONFIG_PREEMPT_VOLUNTARY is not set
150# CONFIG_PREEMPT is not set
151CONFIG_BINFMT_ELF=y
152# CONFIG_BINFMT_MISC is not set
153CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
154CONFIG_ARCH_FLATMEM_ENABLE=y
155CONFIG_ARCH_POPULATES_NODE_MAP=y
156CONFIG_SELECT_MEMORY_MODEL=y
157CONFIG_FLATMEM_MANUAL=y
158# CONFIG_DISCONTIGMEM_MANUAL is not set
159# CONFIG_SPARSEMEM_MANUAL is not set
160CONFIG_FLATMEM=y
161CONFIG_FLAT_NODE_MEM_MAP=y
162# CONFIG_SPARSEMEM_STATIC is not set
163CONFIG_SPLIT_PTLOCK_CPUS=4
164# CONFIG_RESOURCES_64BIT is not set
165CONFIG_PROC_DEVICETREE=y
166# CONFIG_CMDLINE_BOOL is not set
167# CONFIG_PM is not set
168CONFIG_SECCOMP=y
169CONFIG_ISA_DMA_API=y
170
171#
172# Bus options
173#
174CONFIG_GENERIC_ISA_DMA=y
175# CONFIG_MPIC_WEIRD is not set
176# CONFIG_PPC_I8259 is not set
177CONFIG_PPC_INDIRECT_PCI=y
178CONFIG_FSL_SOC=y
179CONFIG_PCI=y
180CONFIG_PCI_DOMAINS=y
181# CONFIG_PCIEPORTBUS is not set
182# CONFIG_PCI_DEBUG is not set
183
184#
185# PCCARD (PCMCIA/CardBus) support
186#
187# CONFIG_PCCARD is not set
188
189#
190# PCI Hotplug Support
191#
192# CONFIG_HOTPLUG_PCI is not set
193
194#
195# Advanced setup
196#
197# CONFIG_ADVANCED_OPTIONS is not set
198
199#
200# Default settings for advanced configuration options are used
201#
202CONFIG_HIGHMEM_START=0xfe000000
203CONFIG_LOWMEM_SIZE=0x30000000
204CONFIG_KERNEL_START=0xc0000000
205CONFIG_TASK_SIZE=0x80000000
206CONFIG_BOOT_LOAD=0x00800000
207
208#
209# Networking
210#
211CONFIG_NET=y
212
213#
214# Networking options
215#
216# CONFIG_NETDEBUG is not set
217CONFIG_PACKET=y
218# CONFIG_PACKET_MMAP is not set
219CONFIG_UNIX=y
220CONFIG_XFRM=y
221# CONFIG_XFRM_USER is not set
222# CONFIG_XFRM_SUB_POLICY is not set
223# CONFIG_NET_KEY is not set
224CONFIG_INET=y
225CONFIG_IP_MULTICAST=y
226# CONFIG_IP_ADVANCED_ROUTER is not set
227CONFIG_IP_FIB_HASH=y
228CONFIG_IP_PNP=y
229CONFIG_IP_PNP_DHCP=y
230CONFIG_IP_PNP_BOOTP=y
231# CONFIG_IP_PNP_RARP is not set
232# CONFIG_NET_IPIP is not set
233# CONFIG_NET_IPGRE is not set
234# CONFIG_IP_MROUTE is not set
235# CONFIG_ARPD is not set
236CONFIG_SYN_COOKIES=y
237# CONFIG_INET_AH is not set
238# CONFIG_INET_ESP is not set
239# CONFIG_INET_IPCOMP is not set
240# CONFIG_INET_XFRM_TUNNEL is not set
241# CONFIG_INET_TUNNEL is not set
242CONFIG_INET_XFRM_MODE_TRANSPORT=y
243CONFIG_INET_XFRM_MODE_TUNNEL=y
244CONFIG_INET_XFRM_MODE_BEET=y
245CONFIG_INET_DIAG=y
246CONFIG_INET_TCP_DIAG=y
247# CONFIG_TCP_CONG_ADVANCED is not set
248CONFIG_TCP_CONG_CUBIC=y
249CONFIG_DEFAULT_TCP_CONG="cubic"
250# CONFIG_TCP_MD5SIG is not set
251# CONFIG_IPV6 is not set
252# CONFIG_INET6_XFRM_TUNNEL is not set
253# CONFIG_INET6_TUNNEL is not set
254# CONFIG_NETWORK_SECMARK is not set
255# CONFIG_NETFILTER is not set
256
257#
258# DCCP Configuration (EXPERIMENTAL)
259#
260# CONFIG_IP_DCCP is not set
261
262#
263# SCTP Configuration (EXPERIMENTAL)
264#
265# CONFIG_IP_SCTP is not set
266
267#
268# TIPC Configuration (EXPERIMENTAL)
269#
270# CONFIG_TIPC is not set
271# CONFIG_ATM is not set
272# CONFIG_BRIDGE is not set
273# CONFIG_VLAN_8021Q is not set
274# CONFIG_DECNET is not set
275# CONFIG_LLC2 is not set
276# CONFIG_IPX is not set
277# CONFIG_ATALK is not set
278# CONFIG_X25 is not set
279# CONFIG_LAPB is not set
280# CONFIG_ECONET is not set
281# CONFIG_WAN_ROUTER is not set
282
283#
284# QoS and/or fair queueing
285#
286# CONFIG_NET_SCHED is not set
287
288#
289# Network testing
290#
291# CONFIG_NET_PKTGEN is not set
292# CONFIG_HAMRADIO is not set
293# CONFIG_IRDA is not set
294# CONFIG_BT is not set
295# CONFIG_IEEE80211 is not set
296
297#
298# Device Drivers
299#
300
301#
302# Generic Driver Options
303#
304CONFIG_STANDALONE=y
305CONFIG_PREVENT_FIRMWARE_BUILD=y
306# CONFIG_FW_LOADER is not set
307# CONFIG_DEBUG_DRIVER is not set
308# CONFIG_SYS_HYPERVISOR is not set
309
310#
311# Connector - unified userspace <-> kernelspace linker
312#
313# CONFIG_CONNECTOR is not set
314
315#
316# Memory Technology Devices (MTD)
317#
318CONFIG_MTD=y
319# CONFIG_MTD_DEBUG is not set
320# CONFIG_MTD_CONCAT is not set
321# CONFIG_MTD_PARTITIONS is not set
322
323#
324# User Modules And Translation Layers
325#
326CONFIG_MTD_CHAR=y
327# CONFIG_MTD_BLKDEVS is not set
328# CONFIG_MTD_BLOCK is not set
329# CONFIG_MTD_BLOCK_RO is not set
330# CONFIG_FTL is not set
331# CONFIG_NFTL is not set
332# CONFIG_INFTL is not set
333# CONFIG_RFD_FTL is not set
334# CONFIG_SSFDC is not set
335
336#
337# RAM/ROM/Flash chip drivers
338#
339CONFIG_MTD_CFI=y
340# CONFIG_MTD_JEDECPROBE is not set
341CONFIG_MTD_GEN_PROBE=y
342# CONFIG_MTD_CFI_ADV_OPTIONS is not set
343CONFIG_MTD_MAP_BANK_WIDTH_1=y
344CONFIG_MTD_MAP_BANK_WIDTH_2=y
345CONFIG_MTD_MAP_BANK_WIDTH_4=y
346# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
347# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
348# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
349CONFIG_MTD_CFI_I1=y
350CONFIG_MTD_CFI_I2=y
351# CONFIG_MTD_CFI_I4 is not set
352# CONFIG_MTD_CFI_I8 is not set
353# CONFIG_MTD_CFI_INTELEXT is not set
354CONFIG_MTD_CFI_AMDSTD=y
355# CONFIG_MTD_CFI_STAA is not set
356CONFIG_MTD_CFI_UTIL=y
357# CONFIG_MTD_RAM is not set
358# CONFIG_MTD_ROM is not set
359# CONFIG_MTD_ABSENT is not set
360# CONFIG_MTD_OBSOLETE_CHIPS is not set
361
362#
363# Mapping drivers for chip access
364#
365# CONFIG_MTD_COMPLEX_MAPPINGS is not set
366CONFIG_MTD_PHYSMAP=y
367CONFIG_MTD_PHYSMAP_START=0xfe000000
368CONFIG_MTD_PHYSMAP_LEN=0x1000000
369CONFIG_MTD_PHYSMAP_BANKWIDTH=2
370# CONFIG_MTD_PHYSMAP_OF is not set
371# CONFIG_MTD_PLATRAM is not set
372
373#
374# Self-contained MTD device drivers
375#
376# CONFIG_MTD_PMC551 is not set
377# CONFIG_MTD_DATAFLASH is not set
378# CONFIG_MTD_M25P80 is not set
379# CONFIG_MTD_SLRAM is not set
380# CONFIG_MTD_PHRAM is not set
381# CONFIG_MTD_MTDRAM is not set
382# CONFIG_MTD_BLOCK2MTD is not set
383
384#
385# Disk-On-Chip Device Drivers
386#
387# CONFIG_MTD_DOC2000 is not set
388# CONFIG_MTD_DOC2001 is not set
389# CONFIG_MTD_DOC2001PLUS is not set
390
391#
392# NAND Flash Device Drivers
393#
394# CONFIG_MTD_NAND is not set
395# CONFIG_MTD_NAND_CAFE is not set
396
397#
398# OneNAND Flash Device Drivers
399#
400# CONFIG_MTD_ONENAND is not set
401
402#
403# Parallel port support
404#
405# CONFIG_PARPORT is not set
406
407#
408# Plug and Play support
409#
410
411#
412# Block devices
413#
414# CONFIG_BLK_DEV_FD is not set
415# CONFIG_BLK_CPQ_DA is not set
416# CONFIG_BLK_CPQ_CISS_DA is not set
417# CONFIG_BLK_DEV_DAC960 is not set
418# CONFIG_BLK_DEV_UMEM is not set
419# CONFIG_BLK_DEV_COW_COMMON is not set
420CONFIG_BLK_DEV_LOOP=y
421# CONFIG_BLK_DEV_CRYPTOLOOP is not set
422# CONFIG_BLK_DEV_NBD is not set
423# CONFIG_BLK_DEV_SX8 is not set
424# CONFIG_BLK_DEV_UB is not set
425CONFIG_BLK_DEV_RAM=y
426CONFIG_BLK_DEV_RAM_COUNT=16
427CONFIG_BLK_DEV_RAM_SIZE=32768
428CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
429CONFIG_BLK_DEV_INITRD=y
430# CONFIG_CDROM_PKTCDVD is not set
431# CONFIG_ATA_OVER_ETH is not set
432
433#
434# Misc devices
435#
436# CONFIG_SGI_IOC4 is not set
437# CONFIG_TIFM_CORE is not set
438
439#
440# ATA/ATAPI/MFM/RLL support
441#
442# CONFIG_IDE is not set
443
444#
445# SCSI device support
446#
447# CONFIG_RAID_ATTRS is not set
448CONFIG_SCSI=y
449# CONFIG_SCSI_TGT is not set
450# CONFIG_SCSI_NETLINK is not set
451CONFIG_SCSI_PROC_FS=y
452
453#
454# SCSI support type (disk, tape, CD-ROM)
455#
456# CONFIG_BLK_DEV_SD is not set
457# CONFIG_CHR_DEV_ST is not set
458# CONFIG_CHR_DEV_OSST is not set
459# CONFIG_BLK_DEV_SR is not set
460CONFIG_CHR_DEV_SG=y
461# CONFIG_CHR_DEV_SCH is not set
462
463#
464# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
465#
466# CONFIG_SCSI_MULTI_LUN is not set
467# CONFIG_SCSI_CONSTANTS is not set
468# CONFIG_SCSI_LOGGING is not set
469# CONFIG_SCSI_SCAN_ASYNC is not set
470
471#
472# SCSI Transports
473#
474CONFIG_SCSI_SPI_ATTRS=y
475# CONFIG_SCSI_FC_ATTRS is not set
476# CONFIG_SCSI_ISCSI_ATTRS is not set
477# CONFIG_SCSI_SAS_ATTRS is not set
478# CONFIG_SCSI_SAS_LIBSAS is not set
479
480#
481# SCSI low-level drivers
482#
483# CONFIG_ISCSI_TCP is not set
484# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
485# CONFIG_SCSI_3W_9XXX is not set
486# CONFIG_SCSI_ACARD is not set
487# CONFIG_SCSI_AACRAID is not set
488# CONFIG_SCSI_AIC7XXX is not set
489# CONFIG_SCSI_AIC7XXX_OLD is not set
490# CONFIG_SCSI_AIC79XX is not set
491# CONFIG_SCSI_AIC94XX is not set
492# CONFIG_SCSI_DPT_I2O is not set
493# CONFIG_SCSI_ARCMSR is not set
494# CONFIG_MEGARAID_NEWGEN is not set
495# CONFIG_MEGARAID_LEGACY is not set
496# CONFIG_MEGARAID_SAS is not set
497# CONFIG_SCSI_HPTIOP is not set
498# CONFIG_SCSI_BUSLOGIC is not set
499# CONFIG_SCSI_DMX3191D is not set
500# CONFIG_SCSI_EATA is not set
501# CONFIG_SCSI_FUTURE_DOMAIN is not set
502# CONFIG_SCSI_GDTH is not set
503# CONFIG_SCSI_IPS is not set
504# CONFIG_SCSI_INITIO is not set
505# CONFIG_SCSI_INIA100 is not set
506# CONFIG_SCSI_STEX is not set
507# CONFIG_SCSI_SYM53C8XX_2 is not set
508# CONFIG_SCSI_QLOGIC_1280 is not set
509# CONFIG_SCSI_QLA_FC is not set
510# CONFIG_SCSI_QLA_ISCSI is not set
511# CONFIG_SCSI_LPFC is not set
512# CONFIG_SCSI_DC395x is not set
513# CONFIG_SCSI_DC390T is not set
514# CONFIG_SCSI_NSP32 is not set
515# CONFIG_SCSI_DEBUG is not set
516# CONFIG_SCSI_SRP is not set
517
518#
519# Serial ATA (prod) and Parallel ATA (experimental) drivers
520#
521# CONFIG_ATA is not set
522
523#
524# Multi-device support (RAID and LVM)
525#
526CONFIG_MD=y
527CONFIG_BLK_DEV_MD=y
528CONFIG_MD_LINEAR=y
529CONFIG_MD_RAID0=y
530CONFIG_MD_RAID1=y
531# CONFIG_MD_RAID10 is not set
532# CONFIG_MD_RAID456 is not set
533# CONFIG_MD_MULTIPATH is not set
534# CONFIG_MD_FAULTY is not set
535# CONFIG_BLK_DEV_DM is not set
536
537#
538# Fusion MPT device support
539#
540# CONFIG_FUSION is not set
541# CONFIG_FUSION_SPI is not set
542# CONFIG_FUSION_FC is not set
543# CONFIG_FUSION_SAS is not set
544
545#
546# IEEE 1394 (FireWire) support
547#
548# CONFIG_IEEE1394 is not set
549
550#
551# I2O device support
552#
553# CONFIG_I2O is not set
554
555#
556# Macintosh device drivers
557#
558# CONFIG_MAC_EMUMOUSEBTN is not set
559# CONFIG_WINDFARM is not set
560
561#
562# Network device support
563#
564CONFIG_NETDEVICES=y
565# CONFIG_DUMMY is not set
566# CONFIG_BONDING is not set
567# CONFIG_EQUALIZER is not set
568# CONFIG_TUN is not set
569
570#
571# ARCnet devices
572#
573# CONFIG_ARCNET is not set
574
575#
576# PHY device support
577#
578CONFIG_PHYLIB=y
579
580#
581# MII PHY device drivers
582#
583# CONFIG_MARVELL_PHY is not set
584# CONFIG_DAVICOM_PHY is not set
585# CONFIG_QSEMI_PHY is not set
586# CONFIG_LXT_PHY is not set
587CONFIG_CICADA_PHY=y
588# CONFIG_VITESSE_PHY is not set
589# CONFIG_SMSC_PHY is not set
590# CONFIG_BROADCOM_PHY is not set
591# CONFIG_FIXED_PHY is not set
592
593#
594# Ethernet (10 or 100Mbit)
595#
596CONFIG_NET_ETHERNET=y
597CONFIG_MII=y
598# CONFIG_HAPPYMEAL is not set
599# CONFIG_SUNGEM is not set
600# CONFIG_CASSINI is not set
601# CONFIG_NET_VENDOR_3COM is not set
602
603#
604# Tulip family network device support
605#
606# CONFIG_NET_TULIP is not set
607# CONFIG_HP100 is not set
608CONFIG_NET_PCI=y
609# CONFIG_PCNET32 is not set
610# CONFIG_AMD8111_ETH is not set
611# CONFIG_ADAPTEC_STARFIRE is not set
612# CONFIG_B44 is not set
613# CONFIG_FORCEDETH is not set
614# CONFIG_DGRS is not set
615# CONFIG_EEPRO100 is not set
616CONFIG_E100=y
617# CONFIG_FEALNX is not set
618# CONFIG_NATSEMI is not set
619# CONFIG_NE2K_PCI is not set
620# CONFIG_8139CP is not set
621# CONFIG_8139TOO is not set
622# CONFIG_SIS900 is not set
623# CONFIG_EPIC100 is not set
624# CONFIG_SUNDANCE is not set
625# CONFIG_TLAN is not set
626# CONFIG_VIA_RHINE is not set
627
628#
629# Ethernet (1000 Mbit)
630#
631# CONFIG_ACENIC is not set
632# CONFIG_DL2K is not set
633# CONFIG_E1000 is not set
634# CONFIG_NS83820 is not set
635# CONFIG_HAMACHI is not set
636# CONFIG_YELLOWFIN is not set
637# CONFIG_R8169 is not set
638# CONFIG_SIS190 is not set
639# CONFIG_SKGE is not set
640# CONFIG_SKY2 is not set
641# CONFIG_SK98LIN is not set
642# CONFIG_VIA_VELOCITY is not set
643# CONFIG_TIGON3 is not set
644# CONFIG_BNX2 is not set
645CONFIG_GIANFAR=y
646CONFIG_GFAR_NAPI=y
647# CONFIG_QLA3XXX is not set
648
649#
650# Ethernet (10000 Mbit)
651#
652# CONFIG_CHELSIO_T1 is not set
653# CONFIG_IXGB is not set
654# CONFIG_S2IO is not set
655# CONFIG_MYRI10GE is not set
656# CONFIG_NETXEN_NIC is not set
657
658#
659# Token Ring devices
660#
661# CONFIG_TR is not set
662
663#
664# Wireless LAN (non-hamradio)
665#
666# CONFIG_NET_RADIO is not set
667
668#
669# Wan interfaces
670#
671# CONFIG_WAN is not set
672# CONFIG_FDDI is not set
673# CONFIG_HIPPI is not set
674# CONFIG_PPP is not set
675# CONFIG_SLIP is not set
676# CONFIG_NET_FC is not set
677# CONFIG_SHAPER is not set
678# CONFIG_NETCONSOLE is not set
679# CONFIG_NETPOLL is not set
680# CONFIG_NET_POLL_CONTROLLER is not set
681
682#
683# ISDN subsystem
684#
685# CONFIG_ISDN is not set
686
687#
688# Telephony Support
689#
690# CONFIG_PHONE is not set
691
692#
693# Input device support
694#
695CONFIG_INPUT=y
696# CONFIG_INPUT_FF_MEMLESS is not set
697
698#
699# Userland interfaces
700#
701# CONFIG_INPUT_MOUSEDEV is not set
702# CONFIG_INPUT_JOYDEV is not set
703# CONFIG_INPUT_TSDEV is not set
704# CONFIG_INPUT_EVDEV is not set
705# CONFIG_INPUT_EVBUG is not set
706
707#
708# Input Device Drivers
709#
710# CONFIG_INPUT_KEYBOARD is not set
711# CONFIG_INPUT_MOUSE is not set
712# CONFIG_INPUT_JOYSTICK is not set
713# CONFIG_INPUT_TOUCHSCREEN is not set
714# CONFIG_INPUT_MISC is not set
715
716#
717# Hardware I/O ports
718#
719# CONFIG_SERIO is not set
720# CONFIG_GAMEPORT is not set
721
722#
723# Character devices
724#
725# CONFIG_VT is not set
726# CONFIG_SERIAL_NONSTANDARD is not set
727
728#
729# Serial drivers
730#
731CONFIG_SERIAL_8250=y
732CONFIG_SERIAL_8250_CONSOLE=y
733CONFIG_SERIAL_8250_PCI=y
734CONFIG_SERIAL_8250_NR_UARTS=4
735CONFIG_SERIAL_8250_RUNTIME_UARTS=4
736# CONFIG_SERIAL_8250_EXTENDED is not set
737
738#
739# Non-8250 serial port support
740#
741# CONFIG_SERIAL_UARTLITE is not set
742CONFIG_SERIAL_CORE=y
743CONFIG_SERIAL_CORE_CONSOLE=y
744# CONFIG_SERIAL_JSM is not set
745CONFIG_UNIX98_PTYS=y
746CONFIG_LEGACY_PTYS=y
747CONFIG_LEGACY_PTY_COUNT=256
748
749#
750# IPMI
751#
752# CONFIG_IPMI_HANDLER is not set
753
754#
755# Watchdog Cards
756#
757CONFIG_WATCHDOG=y
758# CONFIG_WATCHDOG_NOWAYOUT is not set
759
760#
761# Watchdog Device Drivers
762#
763# CONFIG_SOFT_WATCHDOG is not set
764CONFIG_83xx_WDT=y
765
766#
767# PCI-based Watchdog Cards
768#
769# CONFIG_PCIPCWATCHDOG is not set
770# CONFIG_WDTPCI is not set
771
772#
773# USB-based Watchdog Cards
774#
775# CONFIG_USBPCWATCHDOG is not set
776CONFIG_HW_RANDOM=y
777# CONFIG_NVRAM is not set
778# CONFIG_GEN_RTC is not set
779# CONFIG_DTLK is not set
780# CONFIG_R3964 is not set
781# CONFIG_APPLICOM is not set
782# CONFIG_AGP is not set
783# CONFIG_DRM is not set
784# CONFIG_RAW_DRIVER is not set
785
786#
787# TPM devices
788#
789# CONFIG_TCG_TPM is not set
790
791#
792# I2C support
793#
794CONFIG_I2C=y
795CONFIG_I2C_CHARDEV=y
796
797#
798# I2C Algorithms
799#
800# CONFIG_I2C_ALGOBIT is not set
801# CONFIG_I2C_ALGOPCF is not set
802# CONFIG_I2C_ALGOPCA is not set
803
804#
805# I2C Hardware Bus support
806#
807# CONFIG_I2C_ALI1535 is not set
808# CONFIG_I2C_ALI1563 is not set
809# CONFIG_I2C_ALI15X3 is not set
810# CONFIG_I2C_AMD756 is not set
811# CONFIG_I2C_AMD8111 is not set
812# CONFIG_I2C_I801 is not set
813# CONFIG_I2C_I810 is not set
814# CONFIG_I2C_PIIX4 is not set
815CONFIG_I2C_MPC=y
816# CONFIG_I2C_NFORCE2 is not set
817# CONFIG_I2C_OCORES is not set
818# CONFIG_I2C_PARPORT_LIGHT is not set
819# CONFIG_I2C_PROSAVAGE is not set
820# CONFIG_I2C_SAVAGE4 is not set
821# CONFIG_I2C_SIS5595 is not set
822# CONFIG_I2C_SIS630 is not set
823# CONFIG_I2C_SIS96X is not set
824# CONFIG_I2C_STUB is not set
825# CONFIG_I2C_VIA is not set
826# CONFIG_I2C_VIAPRO is not set
827# CONFIG_I2C_VOODOO3 is not set
828# CONFIG_I2C_PCA_ISA is not set
829
830#
831# Miscellaneous I2C Chip support
832#
833# CONFIG_SENSORS_DS1337 is not set
834# CONFIG_SENSORS_DS1374 is not set
835# CONFIG_SENSORS_EEPROM is not set
836# CONFIG_SENSORS_PCF8574 is not set
837# CONFIG_SENSORS_PCA9539 is not set
838# CONFIG_SENSORS_PCF8591 is not set
839# CONFIG_SENSORS_M41T00 is not set
840# CONFIG_SENSORS_MAX6875 is not set
841# CONFIG_I2C_DEBUG_CORE is not set
842# CONFIG_I2C_DEBUG_ALGO is not set
843# CONFIG_I2C_DEBUG_BUS is not set
844# CONFIG_I2C_DEBUG_CHIP is not set
845
846#
847# SPI support
848#
849CONFIG_SPI=y
850# CONFIG_SPI_DEBUG is not set
851CONFIG_SPI_MASTER=y
852
853#
854# SPI Master Controller Drivers
855#
856CONFIG_SPI_BITBANG=y
857CONFIG_SPI_MPC83xx=y
858
859#
860# SPI Protocol Masters
861#
862
863#
864# Dallas's 1-wire bus
865#
866# CONFIG_W1 is not set
867
868#
869# Hardware Monitoring support
870#
871CONFIG_HWMON=y
872# CONFIG_HWMON_VID is not set
873# CONFIG_SENSORS_ABITUGURU is not set
874# CONFIG_SENSORS_ADM1021 is not set
875# CONFIG_SENSORS_ADM1025 is not set
876# CONFIG_SENSORS_ADM1026 is not set
877# CONFIG_SENSORS_ADM1031 is not set
878# CONFIG_SENSORS_ADM9240 is not set
879# CONFIG_SENSORS_ASB100 is not set
880# CONFIG_SENSORS_ATXP1 is not set
881# CONFIG_SENSORS_DS1621 is not set
882# CONFIG_SENSORS_F71805F is not set
883# CONFIG_SENSORS_FSCHER is not set
884# CONFIG_SENSORS_FSCPOS is not set
885# CONFIG_SENSORS_GL518SM is not set
886# CONFIG_SENSORS_GL520SM is not set
887# CONFIG_SENSORS_IT87 is not set
888# CONFIG_SENSORS_LM63 is not set
889# CONFIG_SENSORS_LM70 is not set
890# CONFIG_SENSORS_LM75 is not set
891# CONFIG_SENSORS_LM77 is not set
892# CONFIG_SENSORS_LM78 is not set
893# CONFIG_SENSORS_LM80 is not set
894# CONFIG_SENSORS_LM83 is not set
895# CONFIG_SENSORS_LM85 is not set
896# CONFIG_SENSORS_LM87 is not set
897# CONFIG_SENSORS_LM90 is not set
898# CONFIG_SENSORS_LM92 is not set
899# CONFIG_SENSORS_MAX1619 is not set
900# CONFIG_SENSORS_PC87360 is not set
901# CONFIG_SENSORS_PC87427 is not set
902# CONFIG_SENSORS_SIS5595 is not set
903# CONFIG_SENSORS_SMSC47M1 is not set
904# CONFIG_SENSORS_SMSC47M192 is not set
905# CONFIG_SENSORS_SMSC47B397 is not set
906# CONFIG_SENSORS_VIA686A is not set
907# CONFIG_SENSORS_VT1211 is not set
908# CONFIG_SENSORS_VT8231 is not set
909# CONFIG_SENSORS_W83781D is not set
910# CONFIG_SENSORS_W83791D is not set
911# CONFIG_SENSORS_W83792D is not set
912# CONFIG_SENSORS_W83793 is not set
913# CONFIG_SENSORS_W83L785TS is not set
914# CONFIG_SENSORS_W83627HF is not set
915# CONFIG_SENSORS_W83627EHF is not set
916# CONFIG_HWMON_DEBUG_CHIP is not set
917
918#
919# Multimedia devices
920#
921# CONFIG_VIDEO_DEV is not set
922
923#
924# Digital Video Broadcasting Devices
925#
926# CONFIG_DVB is not set
927# CONFIG_USB_DABUSB is not set
928
929#
930# Graphics support
931#
932CONFIG_FIRMWARE_EDID=y
933# CONFIG_FB is not set
934# CONFIG_FB_IBM_GXT4500 is not set
935# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
936
937#
938# Sound
939#
940# CONFIG_SOUND is not set
941
942#
943# HID Devices
944#
945CONFIG_HID=y
946
947#
948# USB support
949#
950CONFIG_USB_ARCH_HAS_HCD=y
951CONFIG_USB_ARCH_HAS_OHCI=y
952CONFIG_USB_ARCH_HAS_EHCI=y
953CONFIG_USB=y
954# CONFIG_USB_DEBUG is not set
955
956#
957# Miscellaneous USB options
958#
959CONFIG_USB_DEVICEFS=y
960# CONFIG_USB_BANDWIDTH is not set
961# CONFIG_USB_DYNAMIC_MINORS is not set
962# CONFIG_USB_OTG is not set
963
964#
965# USB Host Controller Drivers
966#
967CONFIG_USB_EHCI_HCD=y
968# CONFIG_USB_EHCI_SPLIT_ISO is not set
969# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
970# CONFIG_USB_EHCI_TT_NEWSCHED is not set
971# CONFIG_USB_ISP116X_HCD is not set
972CONFIG_USB_OHCI_HCD=y
973# CONFIG_USB_OHCI_BIG_ENDIAN is not set
974CONFIG_USB_OHCI_LITTLE_ENDIAN=y
975CONFIG_USB_UHCI_HCD=y
976# CONFIG_USB_SL811_HCD is not set
977
978#
979# USB Device Class drivers
980#
981# CONFIG_USB_ACM is not set
982# CONFIG_USB_PRINTER is not set
983
984#
985# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
986#
987
988#
989# may also be needed; see USB_STORAGE Help for more information
990#
991CONFIG_USB_STORAGE=y
992# CONFIG_USB_STORAGE_DEBUG is not set
993# CONFIG_USB_STORAGE_DATAFAB is not set
994# CONFIG_USB_STORAGE_FREECOM is not set
995# CONFIG_USB_STORAGE_DPCM is not set
996# CONFIG_USB_STORAGE_USBAT is not set
997# CONFIG_USB_STORAGE_SDDR09 is not set
998# CONFIG_USB_STORAGE_SDDR55 is not set
999# CONFIG_USB_STORAGE_JUMPSHOT is not set
1000# CONFIG_USB_STORAGE_ALAUDA is not set
1001# CONFIG_USB_STORAGE_KARMA is not set
1002# CONFIG_USB_LIBUSUAL is not set
1003
1004#
1005# USB Input Devices
1006#
1007# CONFIG_USB_HID is not set
1008
1009#
1010# USB HID Boot Protocol drivers
1011#
1012# CONFIG_USB_KBD is not set
1013# CONFIG_USB_MOUSE is not set
1014# CONFIG_USB_AIPTEK is not set
1015# CONFIG_USB_WACOM is not set
1016# CONFIG_USB_ACECAD is not set
1017# CONFIG_USB_KBTAB is not set
1018# CONFIG_USB_POWERMATE is not set
1019# CONFIG_USB_TOUCHSCREEN is not set
1020# CONFIG_USB_YEALINK is not set
1021# CONFIG_USB_XPAD is not set
1022# CONFIG_USB_ATI_REMOTE is not set
1023# CONFIG_USB_ATI_REMOTE2 is not set
1024# CONFIG_USB_KEYSPAN_REMOTE is not set
1025# CONFIG_USB_APPLETOUCH is not set
1026
1027#
1028# USB Imaging devices
1029#
1030# CONFIG_USB_MDC800 is not set
1031# CONFIG_USB_MICROTEK is not set
1032
1033#
1034# USB Network Adapters
1035#
1036# CONFIG_USB_CATC is not set
1037# CONFIG_USB_KAWETH is not set
1038# CONFIG_USB_PEGASUS is not set
1039# CONFIG_USB_RTL8150 is not set
1040# CONFIG_USB_USBNET_MII is not set
1041# CONFIG_USB_USBNET is not set
1042CONFIG_USB_MON=y
1043
1044#
1045# USB port drivers
1046#
1047
1048#
1049# USB Serial Converter support
1050#
1051# CONFIG_USB_SERIAL is not set
1052
1053#
1054# USB Miscellaneous drivers
1055#
1056# CONFIG_USB_EMI62 is not set
1057# CONFIG_USB_EMI26 is not set
1058# CONFIG_USB_ADUTUX is not set
1059# CONFIG_USB_AUERSWALD is not set
1060# CONFIG_USB_RIO500 is not set
1061# CONFIG_USB_LEGOTOWER is not set
1062# CONFIG_USB_LCD is not set
1063# CONFIG_USB_LED is not set
1064# CONFIG_USB_CYPRESS_CY7C63 is not set
1065# CONFIG_USB_CYTHERM is not set
1066# CONFIG_USB_PHIDGET is not set
1067# CONFIG_USB_IDMOUSE is not set
1068# CONFIG_USB_FTDI_ELAN is not set
1069# CONFIG_USB_APPLEDISPLAY is not set
1070# CONFIG_USB_SISUSBVGA is not set
1071# CONFIG_USB_LD is not set
1072# CONFIG_USB_TRANCEVIBRATOR is not set
1073# CONFIG_USB_TEST is not set
1074
1075#
1076# USB DSL modem support
1077#
1078
1079#
1080# USB Gadget Support
1081#
1082CONFIG_USB_GADGET=y
1083# CONFIG_USB_GADGET_DEBUG_FILES is not set
1084CONFIG_USB_GADGET_SELECTED=y
1085CONFIG_USB_GADGET_NET2280=y
1086CONFIG_USB_NET2280=y
1087# CONFIG_USB_GADGET_PXA2XX is not set
1088# CONFIG_USB_GADGET_GOKU is not set
1089# CONFIG_USB_GADGET_LH7A40X is not set
1090# CONFIG_USB_GADGET_OMAP is not set
1091# CONFIG_USB_GADGET_AT91 is not set
1092# CONFIG_USB_GADGET_DUMMY_HCD is not set
1093CONFIG_USB_GADGET_DUALSPEED=y
1094# CONFIG_USB_ZERO is not set
1095CONFIG_USB_ETH=y
1096CONFIG_USB_ETH_RNDIS=y
1097# CONFIG_USB_GADGETFS is not set
1098# CONFIG_USB_FILE_STORAGE is not set
1099# CONFIG_USB_G_SERIAL is not set
1100# CONFIG_USB_MIDI_GADGET is not set
1101
1102#
1103# MMC/SD Card support
1104#
1105# CONFIG_MMC is not set
1106
1107#
1108# LED devices
1109#
1110# CONFIG_NEW_LEDS is not set
1111
1112#
1113# LED drivers
1114#
1115
1116#
1117# LED Triggers
1118#
1119
1120#
1121# InfiniBand support
1122#
1123# CONFIG_INFINIBAND is not set
1124
1125#
1126# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1127#
1128
1129#
1130# Real Time Clock
1131#
1132CONFIG_RTC_LIB=y
1133CONFIG_RTC_CLASS=y
1134CONFIG_RTC_HCTOSYS=y
1135CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
1136# CONFIG_RTC_DEBUG is not set
1137
1138#
1139# RTC interfaces
1140#
1141CONFIG_RTC_INTF_SYSFS=y
1142CONFIG_RTC_INTF_PROC=y
1143CONFIG_RTC_INTF_DEV=y
1144CONFIG_RTC_INTF_DEV_UIE_EMUL=y
1145
1146#
1147# RTC drivers
1148#
1149# CONFIG_RTC_DRV_X1205 is not set
1150CONFIG_RTC_DRV_DS1307=y
1151# CONFIG_RTC_DRV_DS1553 is not set
1152# CONFIG_RTC_DRV_ISL1208 is not set
1153# CONFIG_RTC_DRV_DS1672 is not set
1154# CONFIG_RTC_DRV_DS1742 is not set
1155# CONFIG_RTC_DRV_PCF8563 is not set
1156# CONFIG_RTC_DRV_PCF8583 is not set
1157# CONFIG_RTC_DRV_RS5C348 is not set
1158# CONFIG_RTC_DRV_RS5C372 is not set
1159# CONFIG_RTC_DRV_M48T86 is not set
1160# CONFIG_RTC_DRV_TEST is not set
1161# CONFIG_RTC_DRV_MAX6902 is not set
1162# CONFIG_RTC_DRV_V3020 is not set
1163
1164#
1165# DMA Engine support
1166#
1167CONFIG_DMA_ENGINE=y
1168
1169#
1170# DMA Clients
1171#
1172CONFIG_NET_DMA=y
1173
1174#
1175# DMA Devices
1176#
1177CONFIG_INTEL_IOATDMA=y
1178
1179#
1180# Virtualization
1181#
1182
1183#
1184# File systems
1185#
1186CONFIG_EXT2_FS=y
1187# CONFIG_EXT2_FS_XATTR is not set
1188# CONFIG_EXT2_FS_XIP is not set
1189CONFIG_EXT3_FS=y
1190CONFIG_EXT3_FS_XATTR=y
1191# CONFIG_EXT3_FS_POSIX_ACL is not set
1192# CONFIG_EXT3_FS_SECURITY is not set
1193# CONFIG_EXT4DEV_FS is not set
1194CONFIG_JBD=y
1195# CONFIG_JBD_DEBUG is not set
1196CONFIG_FS_MBCACHE=y
1197# CONFIG_REISERFS_FS is not set
1198# CONFIG_JFS_FS is not set
1199# CONFIG_FS_POSIX_ACL is not set
1200# CONFIG_XFS_FS is not set
1201# CONFIG_GFS2_FS is not set
1202# CONFIG_OCFS2_FS is not set
1203# CONFIG_MINIX_FS is not set
1204# CONFIG_ROMFS_FS is not set
1205CONFIG_INOTIFY=y
1206CONFIG_INOTIFY_USER=y
1207# CONFIG_QUOTA is not set
1208CONFIG_DNOTIFY=y
1209# CONFIG_AUTOFS_FS is not set
1210# CONFIG_AUTOFS4_FS is not set
1211# CONFIG_FUSE_FS is not set
1212
1213#
1214# CD-ROM/DVD Filesystems
1215#
1216# CONFIG_ISO9660_FS is not set
1217# CONFIG_UDF_FS is not set
1218
1219#
1220# DOS/FAT/NT Filesystems
1221#
1222# CONFIG_MSDOS_FS is not set
1223# CONFIG_VFAT_FS is not set
1224# CONFIG_NTFS_FS is not set
1225
1226#
1227# Pseudo filesystems
1228#
1229CONFIG_PROC_FS=y
1230CONFIG_PROC_KCORE=y
1231CONFIG_PROC_SYSCTL=y
1232CONFIG_SYSFS=y
1233CONFIG_TMPFS=y
1234# CONFIG_TMPFS_POSIX_ACL is not set
1235# CONFIG_HUGETLB_PAGE is not set
1236CONFIG_RAMFS=y
1237# CONFIG_CONFIGFS_FS is not set
1238
1239#
1240# Miscellaneous filesystems
1241#
1242# CONFIG_ADFS_FS is not set
1243# CONFIG_AFFS_FS is not set
1244# CONFIG_HFS_FS is not set
1245# CONFIG_HFSPLUS_FS is not set
1246# CONFIG_BEFS_FS is not set
1247# CONFIG_BFS_FS is not set
1248# CONFIG_EFS_FS is not set
1249# CONFIG_JFFS2_FS is not set
1250# CONFIG_CRAMFS is not set
1251# CONFIG_VXFS_FS is not set
1252# CONFIG_HPFS_FS is not set
1253# CONFIG_QNX4FS_FS is not set
1254# CONFIG_SYSV_FS is not set
1255# CONFIG_UFS_FS is not set
1256
1257#
1258# Network File Systems
1259#
1260CONFIG_NFS_FS=y
1261CONFIG_NFS_V3=y
1262# CONFIG_NFS_V3_ACL is not set
1263CONFIG_NFS_V4=y
1264# CONFIG_NFS_DIRECTIO is not set
1265# CONFIG_NFSD is not set
1266CONFIG_ROOT_NFS=y
1267CONFIG_LOCKD=y
1268CONFIG_LOCKD_V4=y
1269CONFIG_NFS_COMMON=y
1270CONFIG_SUNRPC=y
1271CONFIG_SUNRPC_GSS=y
1272CONFIG_RPCSEC_GSS_KRB5=y
1273# CONFIG_RPCSEC_GSS_SPKM3 is not set
1274# CONFIG_SMB_FS is not set
1275# CONFIG_CIFS is not set
1276# CONFIG_NCP_FS is not set
1277# CONFIG_CODA_FS is not set
1278# CONFIG_AFS_FS is not set
1279# CONFIG_9P_FS is not set
1280
1281#
1282# Partition Types
1283#
1284CONFIG_PARTITION_ADVANCED=y
1285# CONFIG_ACORN_PARTITION is not set
1286# CONFIG_OSF_PARTITION is not set
1287# CONFIG_AMIGA_PARTITION is not set
1288# CONFIG_ATARI_PARTITION is not set
1289# CONFIG_MAC_PARTITION is not set
1290CONFIG_MSDOS_PARTITION=y
1291# CONFIG_BSD_DISKLABEL is not set
1292# CONFIG_MINIX_SUBPARTITION is not set
1293# CONFIG_SOLARIS_X86_PARTITION is not set
1294# CONFIG_UNIXWARE_DISKLABEL is not set
1295# CONFIG_LDM_PARTITION is not set
1296# CONFIG_SGI_PARTITION is not set
1297# CONFIG_ULTRIX_PARTITION is not set
1298# CONFIG_SUN_PARTITION is not set
1299# CONFIG_KARMA_PARTITION is not set
1300# CONFIG_EFI_PARTITION is not set
1301
1302#
1303# Native Language Support
1304#
1305# CONFIG_NLS is not set
1306
1307#
1308# Distributed Lock Manager
1309#
1310# CONFIG_DLM is not set
1311
1312#
1313# Library routines
1314#
1315CONFIG_BITREVERSE=y
1316# CONFIG_CRC_CCITT is not set
1317# CONFIG_CRC16 is not set
1318CONFIG_CRC32=y
1319# CONFIG_LIBCRC32C is not set
1320CONFIG_PLIST=y
1321CONFIG_IOMAP_COPY=y
1322
1323#
1324# Instrumentation Support
1325#
1326# CONFIG_PROFILING is not set
1327
1328#
1329# Kernel hacking
1330#
1331# CONFIG_PRINTK_TIME is not set
1332CONFIG_ENABLE_MUST_CHECK=y
1333# CONFIG_MAGIC_SYSRQ is not set
1334# CONFIG_UNUSED_SYMBOLS is not set
1335# CONFIG_DEBUG_FS is not set
1336# CONFIG_HEADERS_CHECK is not set
1337CONFIG_DEBUG_KERNEL=y
1338CONFIG_LOG_BUF_SHIFT=14
1339CONFIG_DETECT_SOFTLOCKUP=y
1340# CONFIG_SCHEDSTATS is not set
1341# CONFIG_DEBUG_SLAB is not set
1342# CONFIG_DEBUG_RT_MUTEXES is not set
1343# CONFIG_RT_MUTEX_TESTER is not set
1344# CONFIG_DEBUG_SPINLOCK is not set
1345# CONFIG_DEBUG_MUTEXES is not set
1346# CONFIG_DEBUG_RWSEMS is not set
1347# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1348# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1349# CONFIG_DEBUG_KOBJECT is not set
1350# CONFIG_DEBUG_BUGVERBOSE is not set
1351# CONFIG_DEBUG_INFO is not set
1352# CONFIG_DEBUG_VM is not set
1353# CONFIG_DEBUG_LIST is not set
1354CONFIG_FORCED_INLINING=y
1355# CONFIG_RCU_TORTURE_TEST is not set
1356# CONFIG_DEBUG_STACKOVERFLOW is not set
1357# CONFIG_DEBUG_STACK_USAGE is not set
1358# CONFIG_DEBUGGER is not set
1359# CONFIG_BDI_SWITCH is not set
1360# CONFIG_BOOTX_TEXT is not set
1361# CONFIG_SERIAL_TEXT_DEBUG is not set
1362# CONFIG_PPC_EARLY_DEBUG is not set
1363
1364#
1365# Security options
1366#
1367# CONFIG_KEYS is not set
1368# CONFIG_SECURITY is not set
1369
1370#
1371# Cryptographic options
1372#
1373CONFIG_CRYPTO=y
1374CONFIG_CRYPTO_ALGAPI=y
1375CONFIG_CRYPTO_BLKCIPHER=y
1376CONFIG_CRYPTO_MANAGER=y
1377# CONFIG_CRYPTO_HMAC is not set
1378# CONFIG_CRYPTO_XCBC is not set
1379# CONFIG_CRYPTO_NULL is not set
1380# CONFIG_CRYPTO_MD4 is not set
1381CONFIG_CRYPTO_MD5=y
1382# CONFIG_CRYPTO_SHA1 is not set
1383# CONFIG_CRYPTO_SHA256 is not set
1384# CONFIG_CRYPTO_SHA512 is not set
1385# CONFIG_CRYPTO_WP512 is not set
1386# CONFIG_CRYPTO_TGR192 is not set
1387# CONFIG_CRYPTO_GF128MUL is not set
1388# CONFIG_CRYPTO_ECB is not set
1389CONFIG_CRYPTO_CBC=y
1390# CONFIG_CRYPTO_LRW is not set
1391CONFIG_CRYPTO_DES=y
1392# CONFIG_CRYPTO_BLOWFISH is not set
1393# CONFIG_CRYPTO_TWOFISH is not set
1394# CONFIG_CRYPTO_SERPENT is not set
1395# CONFIG_CRYPTO_AES is not set
1396# CONFIG_CRYPTO_CAST5 is not set
1397# CONFIG_CRYPTO_CAST6 is not set
1398# CONFIG_CRYPTO_TEA is not set
1399# CONFIG_CRYPTO_ARC4 is not set
1400# CONFIG_CRYPTO_KHAZAD is not set
1401# CONFIG_CRYPTO_ANUBIS is not set
1402# CONFIG_CRYPTO_DEFLATE is not set
1403# CONFIG_CRYPTO_MICHAEL_MIC is not set
1404# CONFIG_CRYPTO_CRC32C is not set
1405# CONFIG_CRYPTO_TEST is not set
1406
1407#
1408# Hardware crypto devices
1409#
diff --git a/arch/powerpc/configs/mpc834x_mds_defconfig b/arch/powerpc/configs/mpc834x_mds_defconfig
index 9eaed3a36983..2e3f8efb6ab1 100644
--- a/arch/powerpc/configs/mpc834x_mds_defconfig
+++ b/arch/powerpc/configs/mpc834x_mds_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.20-rc5 3# Linux kernel version: 2.6.20
4# Fri Jan 26 00:19:27 2007 4# Thu Feb 8 01:00:48 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7CONFIG_PPC32=y 7CONFIG_PPC32=y
@@ -34,9 +34,9 @@ CONFIG_DEFAULT_UIMAGE=y
34CONFIG_PPC_83xx=y 34CONFIG_PPC_83xx=y
35# CONFIG_PPC_85xx is not set 35# CONFIG_PPC_85xx is not set
36# CONFIG_PPC_86xx is not set 36# CONFIG_PPC_86xx is not set
37# CONFIG_PPC_8xx is not set
37# CONFIG_40x is not set 38# CONFIG_40x is not set
38# CONFIG_44x is not set 39# CONFIG_44x is not set
39# CONFIG_8xx is not set
40# CONFIG_E200 is not set 40# CONFIG_E200 is not set
41CONFIG_6xx=y 41CONFIG_6xx=y
42CONFIG_83xx=y 42CONFIG_83xx=y
@@ -128,8 +128,9 @@ CONFIG_PPC_GEN550=y
128# 128#
129# Platform support 129# Platform support
130# 130#
131# CONFIG_MPC8313_RDB is not set
131# CONFIG_MPC832x_MDS is not set 132# CONFIG_MPC832x_MDS is not set
132CONFIG_MPC834x_SYS=y 133CONFIG_MPC834x_MDS=y
133# CONFIG_MPC834x_ITX is not set 134# CONFIG_MPC834x_ITX is not set
134# CONFIG_MPC8360E_PB is not set 135# CONFIG_MPC8360E_PB is not set
135CONFIG_MPC834x=y 136CONFIG_MPC834x=y
diff --git a/arch/powerpc/configs/ps3_defconfig b/arch/powerpc/configs/ps3_defconfig
index ec644b34a082..0345a2ceec59 100644
--- a/arch/powerpc/configs/ps3_defconfig
+++ b/arch/powerpc/configs/ps3_defconfig
@@ -163,6 +163,7 @@ CONFIG_PS3_HTAB_SIZE=20
163# CONFIG_PS3_DYNAMIC_DMA is not set 163# CONFIG_PS3_DYNAMIC_DMA is not set
164CONFIG_PS3_USE_LPAR_ADDR=y 164CONFIG_PS3_USE_LPAR_ADDR=y
165CONFIG_PS3_VUART=y 165CONFIG_PS3_VUART=y
166CONFIG_PS3_PS3AV=y
166 167
167# 168#
168# Kernel options 169# Kernel options
@@ -611,14 +612,40 @@ CONFIG_GEN_RTC=y
611# Graphics support 612# Graphics support
612# 613#
613# CONFIG_FIRMWARE_EDID is not set 614# CONFIG_FIRMWARE_EDID is not set
614# CONFIG_FB is not set 615CONFIG_FB=y
616CONFIG_FB_CFB_FILLRECT=y
617CONFIG_FB_CFB_COPYAREA=y
618CONFIG_FB_CFB_IMAGEBLIT=y
619# CONFIG_FB_MACMODES is not set
620# CONFIG_FB_BACKLIGHT is not set
621# CONFIG_FB_MODE_HELPERS is not set
622# CONFIG_FB_TILEBLITTING is not set
623# CONFIG_FB_OF is not set
624# CONFIG_FB_VGA16 is not set
625# CONFIG_FB_S1D13XXX is not set
615# CONFIG_FB_IBM_GXT4500 is not set 626# CONFIG_FB_IBM_GXT4500 is not set
627CONFIG_FB_PS3=y
628CONFIG_FB_PS3_DEFAULT_SIZE_M=18
629# CONFIG_FB_VIRTUAL is not set
616 630
617# 631#
618# Console display driver support 632# Console display driver support
619# 633#
620# CONFIG_VGA_CONSOLE is not set 634# CONFIG_VGA_CONSOLE is not set
621CONFIG_DUMMY_CONSOLE=y 635CONFIG_DUMMY_CONSOLE=y
636CONFIG_FRAMEBUFFER_CONSOLE=y
637# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
638# CONFIG_FONTS is not set
639CONFIG_FONT_8x8=y
640CONFIG_FONT_8x16=y
641
642#
643# Logo configuration
644#
645CONFIG_LOGO=y
646# CONFIG_LOGO_LINUX_MONO is not set
647# CONFIG_LOGO_LINUX_VGA16 is not set
648CONFIG_LOGO_LINUX_CLUT224=y
622# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 649# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
623 650
624# 651#
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index dd17dffbf058..7ec4ac77c0fa 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -44,7 +44,7 @@ extern void __setup_cpu_745x(unsigned long offset, struct cpu_spec* spec);
44extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec); 44extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
45extern void __setup_cpu_ppc970MP(unsigned long offset, struct cpu_spec* spec); 45extern void __setup_cpu_ppc970MP(unsigned long offset, struct cpu_spec* spec);
46extern void __setup_cpu_pa6t(unsigned long offset, struct cpu_spec* spec); 46extern void __setup_cpu_pa6t(unsigned long offset, struct cpu_spec* spec);
47extern void __restore_cpu_pa6t(unsigned long offset, struct cpu_spec* spec); 47extern void __restore_cpu_pa6t(void);
48extern void __restore_cpu_ppc970(void); 48extern void __restore_cpu_ppc970(void);
49#endif /* CONFIG_PPC64 */ 49#endif /* CONFIG_PPC64 */
50 50
diff --git a/arch/powerpc/kernel/head_44x.S b/arch/powerpc/kernel/head_44x.S
index accb39d49911..a15d4b8cce48 100644
--- a/arch/powerpc/kernel/head_44x.S
+++ b/arch/powerpc/kernel/head_44x.S
@@ -32,8 +32,6 @@
32#include <asm/page.h> 32#include <asm/page.h>
33#include <asm/mmu.h> 33#include <asm/mmu.h>
34#include <asm/pgtable.h> 34#include <asm/pgtable.h>
35#include <asm/ibm4xx.h>
36#include <asm/ibm44x.h>
37#include <asm/cputable.h> 35#include <asm/cputable.h>
38#include <asm/thread_info.h> 36#include <asm/thread_info.h>
39#include <asm/ppc_asm.h> 37#include <asm/ppc_asm.h>
diff --git a/arch/powerpc/kernel/legacy_serial.c b/arch/powerpc/kernel/legacy_serial.c
index 5e6ddfa474c0..89f46f377922 100644
--- a/arch/powerpc/kernel/legacy_serial.c
+++ b/arch/powerpc/kernel/legacy_serial.c
@@ -498,7 +498,7 @@ static int __init check_legacy_serial_console(void)
498 DBG(" -> check_legacy_serial_console()\n"); 498 DBG(" -> check_legacy_serial_console()\n");
499 499
500 /* The user has requested a console so this is already set up. */ 500 /* The user has requested a console so this is already set up. */
501 if (strstr(saved_command_line, "console=")) { 501 if (strstr(boot_command_line, "console=")) {
502 DBG(" console was specified !\n"); 502 DBG(" console was specified !\n");
503 return -EBUSY; 503 return -EBUSY;
504 } 504 }
diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c
index 0de5a08cf9b0..89486b631284 100644
--- a/arch/powerpc/kernel/lparcfg.c
+++ b/arch/powerpc/kernel/lparcfg.c
@@ -571,7 +571,7 @@ static int lparcfg_open(struct inode *inode, struct file *file)
571 return single_open(file, lparcfg_data, NULL); 571 return single_open(file, lparcfg_data, NULL);
572} 572}
573 573
574struct file_operations lparcfg_fops = { 574const struct file_operations lparcfg_fops = {
575 .owner = THIS_MODULE, 575 .owner = THIS_MODULE,
576 .read = seq_read, 576 .read = seq_read,
577 .write = lparcfg_write, 577 .write = lparcfg_write,
diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c
index 869cebbba967..f9676f52c6d8 100644
--- a/arch/powerpc/kernel/nvram_64.c
+++ b/arch/powerpc/kernel/nvram_64.c
@@ -179,7 +179,7 @@ static int dev_nvram_ioctl(struct inode *inode, struct file *file,
179 } 179 }
180} 180}
181 181
182struct file_operations nvram_fops = { 182const struct file_operations nvram_fops = {
183 .owner = THIS_MODULE, 183 .owner = THIS_MODULE,
184 .llseek = dev_nvram_llseek, 184 .llseek = dev_nvram_llseek,
185 .read = dev_nvram_read, 185 .read = dev_nvram_read,
diff --git a/arch/powerpc/kernel/proc_ppc64.c b/arch/powerpc/kernel/proc_ppc64.c
index dd7001cacf75..f78dfce1b771 100644
--- a/arch/powerpc/kernel/proc_ppc64.c
+++ b/arch/powerpc/kernel/proc_ppc64.c
@@ -33,7 +33,7 @@ static ssize_t page_map_read( struct file *file, char __user *buf, size_t nbytes
33 loff_t *ppos); 33 loff_t *ppos);
34static int page_map_mmap( struct file *file, struct vm_area_struct *vma ); 34static int page_map_mmap( struct file *file, struct vm_area_struct *vma );
35 35
36static struct file_operations page_map_fops = { 36static const struct file_operations page_map_fops = {
37 .llseek = page_map_seek, 37 .llseek = page_map_seek,
38 .read = page_map_read, 38 .read = page_map_read,
39 .mmap = page_map_mmap 39 .mmap = page_map_mmap
@@ -71,7 +71,6 @@ static int __init proc_ppc64_init(void)
71 pde = create_proc_entry("ppc64/systemcfg", S_IFREG|S_IRUGO, NULL); 71 pde = create_proc_entry("ppc64/systemcfg", S_IFREG|S_IRUGO, NULL);
72 if (!pde) 72 if (!pde)
73 return 1; 73 return 1;
74 pde->nlink = 1;
75 pde->data = vdso_data; 74 pde->data = vdso_data;
76 pde->size = PAGE_SIZE; 75 pde->size = PAGE_SIZE;
77 pde->proc_fops = &page_map_fops; 76 pde->proc_fops = &page_map_fops;
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index 3be52d693eca..3e86e6e0f778 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -991,7 +991,7 @@ void __init early_init_devtree(void *params)
991 of_scan_flat_dt(early_init_dt_scan_memory, NULL); 991 of_scan_flat_dt(early_init_dt_scan_memory, NULL);
992 992
993 /* Save command line for /proc/cmdline and then parse parameters */ 993 /* Save command line for /proc/cmdline and then parse parameters */
994 strlcpy(saved_command_line, cmd_line, COMMAND_LINE_SIZE); 994 strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE);
995 parse_early_param(); 995 parse_early_param();
996 996
997 /* Reserve LMB regions used by kernel, initrd, dt, etc... */ 997 /* Reserve LMB regions used by kernel, initrd, dt, etc... */
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c
index 520ef42f642e..4fb5938ce6d3 100644
--- a/arch/powerpc/kernel/prom_init.c
+++ b/arch/powerpc/kernel/prom_init.c
@@ -2117,11 +2117,92 @@ static void __init fixup_device_tree_pmac(void)
2117#define fixup_device_tree_pmac() 2117#define fixup_device_tree_pmac()
2118#endif 2118#endif
2119 2119
2120#ifdef CONFIG_PPC_EFIKA
2121/* The current fw of the Efika has a device tree needs quite a few
2122 * fixups to be compliant with the mpc52xx bindings. It's currently
2123 * unknown if it will ever be compliant (come on bPlan ...) so we do fixups.
2124 * NOTE that we (barely) tolerate it because the EFIKA was out before
2125 * the bindings were finished, for any new boards -> RTFM ! */
2126
2127struct subst_entry {
2128 char *path;
2129 char *property;
2130 void *value;
2131 int value_len;
2132};
2133
2134static void __init fixup_device_tree_efika(void)
2135{
2136 /* Substitution table */
2137 #define prop_cstr(x) x, sizeof(x)
2138 int prop_sound_irq[3] = { 2, 2, 0 };
2139 int prop_bcomm_irq[3*16] = { 3,0,0, 3,1,0, 3,2,0, 3,3,0,
2140 3,4,0, 3,5,0, 3,6,0, 3,7,0,
2141 3,8,0, 3,9,0, 3,10,0, 3,11,0,
2142 3,12,0, 3,13,0, 3,14,0, 3,15,0 };
2143 struct subst_entry efika_subst_table[] = {
2144 { "/", "device_type", prop_cstr("efika") },
2145 { "/builtin", "compatible", prop_cstr("soc") },
2146 { "/builtin/ata", "compatible", prop_cstr("mpc5200b-ata\0mpc5200-ata"), },
2147 { "/builtin/bestcomm", "compatible", prop_cstr("mpc5200b-bestcomm\0mpc5200-bestcomm") },
2148 { "/builtin/bestcomm", "interrupts", prop_bcomm_irq, sizeof(prop_bcomm_irq) },
2149 { "/builtin/ethernet", "compatible", prop_cstr("mpc5200b-fec\0mpc5200-fec") },
2150 { "/builtin/pic", "compatible", prop_cstr("mpc5200b-pic\0mpc5200-pic") },
2151 { "/builtin/serial", "compatible", prop_cstr("mpc5200b-psc-uart\0mpc5200-psc-uart") },
2152 { "/builtin/sound", "compatible", prop_cstr("mpc5200b-psc-ac97\0mpc5200-psc-ac97") },
2153 { "/builtin/sound", "interrupts", prop_sound_irq, sizeof(prop_sound_irq) },
2154 { "/builtin/sram", "compatible", prop_cstr("mpc5200b-sram\0mpc5200-sram") },
2155 { "/builtin/sram", "device_type", prop_cstr("sram") },
2156 {}
2157 };
2158 #undef prop_cstr
2159
2160 /* Vars */
2161 u32 node;
2162 char prop[64];
2163 int rv, i;
2164
2165 /* Check if we're really running on a EFIKA */
2166 node = call_prom("finddevice", 1, 1, ADDR("/"));
2167 if (!PHANDLE_VALID(node))
2168 return;
2169
2170 rv = prom_getprop(node, "model", prop, sizeof(prop));
2171 if (rv == PROM_ERROR)
2172 return;
2173 if (strcmp(prop, "EFIKA5K2"))
2174 return;
2175
2176 prom_printf("Applying EFIKA device tree fixups\n");
2177
2178 /* Process substitution table */
2179 for (i=0; efika_subst_table[i].path; i++) {
2180 struct subst_entry *se = &efika_subst_table[i];
2181
2182 node = call_prom("finddevice", 1, 1, ADDR(se->path));
2183 if (!PHANDLE_VALID(node)) {
2184 prom_printf("fixup_device_tree_efika: ",
2185 "skipped entry %x - not found\n", i);
2186 continue;
2187 }
2188
2189 rv = prom_setprop(node, se->path, se->property,
2190 se->value, se->value_len );
2191 if (rv == PROM_ERROR)
2192 prom_printf("fixup_device_tree_efika: ",
2193 "skipped entry %x - setprop error\n", i);
2194 }
2195}
2196#else
2197#define fixup_device_tree_efika()
2198#endif
2199
2120static void __init fixup_device_tree(void) 2200static void __init fixup_device_tree(void)
2121{ 2201{
2122 fixup_device_tree_maple(); 2202 fixup_device_tree_maple();
2123 fixup_device_tree_chrp(); 2203 fixup_device_tree_chrp();
2124 fixup_device_tree_pmac(); 2204 fixup_device_tree_pmac();
2205 fixup_device_tree_efika();
2125} 2206}
2126 2207
2127static void __init prom_find_boot_cpu(void) 2208static void __init prom_find_boot_cpu(void)
diff --git a/arch/powerpc/kernel/rtas-proc.c b/arch/powerpc/kernel/rtas-proc.c
index 2fe82abf1c52..6cbf2ae5d7aa 100644
--- a/arch/powerpc/kernel/rtas-proc.c
+++ b/arch/powerpc/kernel/rtas-proc.c
@@ -160,7 +160,7 @@ static int sensors_open(struct inode *inode, struct file *file)
160 return single_open(file, ppc_rtas_sensors_show, NULL); 160 return single_open(file, ppc_rtas_sensors_show, NULL);
161} 161}
162 162
163struct file_operations ppc_rtas_sensors_operations = { 163const struct file_operations ppc_rtas_sensors_operations = {
164 .open = sensors_open, 164 .open = sensors_open,
165 .read = seq_read, 165 .read = seq_read,
166 .llseek = seq_lseek, 166 .llseek = seq_lseek,
@@ -172,7 +172,7 @@ static int poweron_open(struct inode *inode, struct file *file)
172 return single_open(file, ppc_rtas_poweron_show, NULL); 172 return single_open(file, ppc_rtas_poweron_show, NULL);
173} 173}
174 174
175struct file_operations ppc_rtas_poweron_operations = { 175const struct file_operations ppc_rtas_poweron_operations = {
176 .open = poweron_open, 176 .open = poweron_open,
177 .read = seq_read, 177 .read = seq_read,
178 .llseek = seq_lseek, 178 .llseek = seq_lseek,
@@ -185,7 +185,7 @@ static int progress_open(struct inode *inode, struct file *file)
185 return single_open(file, ppc_rtas_progress_show, NULL); 185 return single_open(file, ppc_rtas_progress_show, NULL);
186} 186}
187 187
188struct file_operations ppc_rtas_progress_operations = { 188const struct file_operations ppc_rtas_progress_operations = {
189 .open = progress_open, 189 .open = progress_open,
190 .read = seq_read, 190 .read = seq_read,
191 .llseek = seq_lseek, 191 .llseek = seq_lseek,
@@ -198,7 +198,7 @@ static int clock_open(struct inode *inode, struct file *file)
198 return single_open(file, ppc_rtas_clock_show, NULL); 198 return single_open(file, ppc_rtas_clock_show, NULL);
199} 199}
200 200
201struct file_operations ppc_rtas_clock_operations = { 201const struct file_operations ppc_rtas_clock_operations = {
202 .open = clock_open, 202 .open = clock_open,
203 .read = seq_read, 203 .read = seq_read,
204 .llseek = seq_lseek, 204 .llseek = seq_lseek,
@@ -211,7 +211,7 @@ static int tone_freq_open(struct inode *inode, struct file *file)
211 return single_open(file, ppc_rtas_tone_freq_show, NULL); 211 return single_open(file, ppc_rtas_tone_freq_show, NULL);
212} 212}
213 213
214struct file_operations ppc_rtas_tone_freq_operations = { 214const struct file_operations ppc_rtas_tone_freq_operations = {
215 .open = tone_freq_open, 215 .open = tone_freq_open,
216 .read = seq_read, 216 .read = seq_read,
217 .llseek = seq_lseek, 217 .llseek = seq_lseek,
@@ -224,7 +224,7 @@ static int tone_volume_open(struct inode *inode, struct file *file)
224 return single_open(file, ppc_rtas_tone_volume_show, NULL); 224 return single_open(file, ppc_rtas_tone_volume_show, NULL);
225} 225}
226 226
227struct file_operations ppc_rtas_tone_volume_operations = { 227const struct file_operations ppc_rtas_tone_volume_operations = {
228 .open = tone_volume_open, 228 .open = tone_volume_open,
229 .read = seq_read, 229 .read = seq_read,
230 .llseek = seq_lseek, 230 .llseek = seq_lseek,
@@ -237,7 +237,7 @@ static int rmo_buf_open(struct inode *inode, struct file *file)
237 return single_open(file, ppc_rtas_rmo_buf_show, NULL); 237 return single_open(file, ppc_rtas_rmo_buf_show, NULL);
238} 238}
239 239
240struct file_operations ppc_rtas_rmo_buf_ops = { 240const struct file_operations ppc_rtas_rmo_buf_ops = {
241 .open = rmo_buf_open, 241 .open = rmo_buf_open,
242 .read = seq_read, 242 .read = seq_read,
243 .llseek = seq_lseek, 243 .llseek = seq_lseek,
diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c
index 0c4fcd34bfe5..f72118c0844f 100644
--- a/arch/powerpc/kernel/rtas_flash.c
+++ b/arch/powerpc/kernel/rtas_flash.c
@@ -702,13 +702,12 @@ static int initialize_flash_pde_data(const char *rtas_call_name,
702} 702}
703 703
704static struct proc_dir_entry *create_flash_pde(const char *filename, 704static struct proc_dir_entry *create_flash_pde(const char *filename,
705 struct file_operations *fops) 705 const struct file_operations *fops)
706{ 706{
707 struct proc_dir_entry *ent = NULL; 707 struct proc_dir_entry *ent = NULL;
708 708
709 ent = create_proc_entry(filename, S_IRUSR | S_IWUSR, NULL); 709 ent = create_proc_entry(filename, S_IRUSR | S_IWUSR, NULL);
710 if (ent != NULL) { 710 if (ent != NULL) {
711 ent->nlink = 1;
712 ent->proc_fops = fops; 711 ent->proc_fops = fops;
713 ent->owner = THIS_MODULE; 712 ent->owner = THIS_MODULE;
714 } 713 }
@@ -716,21 +715,21 @@ static struct proc_dir_entry *create_flash_pde(const char *filename,
716 return ent; 715 return ent;
717} 716}
718 717
719static struct file_operations rtas_flash_operations = { 718static const struct file_operations rtas_flash_operations = {
720 .read = rtas_flash_read, 719 .read = rtas_flash_read,
721 .write = rtas_flash_write, 720 .write = rtas_flash_write,
722 .open = rtas_excl_open, 721 .open = rtas_excl_open,
723 .release = rtas_flash_release, 722 .release = rtas_flash_release,
724}; 723};
725 724
726static struct file_operations manage_flash_operations = { 725static const struct file_operations manage_flash_operations = {
727 .read = manage_flash_read, 726 .read = manage_flash_read,
728 .write = manage_flash_write, 727 .write = manage_flash_write,
729 .open = rtas_excl_open, 728 .open = rtas_excl_open,
730 .release = rtas_excl_release, 729 .release = rtas_excl_release,
731}; 730};
732 731
733static struct file_operations validate_flash_operations = { 732static const struct file_operations validate_flash_operations = {
734 .read = validate_flash_read, 733 .read = validate_flash_read,
735 .write = validate_flash_write, 734 .write = validate_flash_write,
736 .open = rtas_excl_open, 735 .open = rtas_excl_open,
diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c
index 03a2a2f30d66..673e8d9df7f5 100644
--- a/arch/powerpc/kernel/sys_ppc32.c
+++ b/arch/powerpc/kernel/sys_ppc32.c
@@ -198,73 +198,6 @@ static inline long put_tv32(struct compat_timeval __user *o, struct timeval *i)
198 __put_user(i->tv_usec, &o->tv_usec))); 198 __put_user(i->tv_usec, &o->tv_usec)));
199} 199}
200 200
201struct sysinfo32 {
202 s32 uptime;
203 u32 loads[3];
204 u32 totalram;
205 u32 freeram;
206 u32 sharedram;
207 u32 bufferram;
208 u32 totalswap;
209 u32 freeswap;
210 unsigned short procs;
211 unsigned short pad;
212 u32 totalhigh;
213 u32 freehigh;
214 u32 mem_unit;
215 char _f[20-2*sizeof(int)-sizeof(int)];
216};
217
218asmlinkage long compat_sys_sysinfo(struct sysinfo32 __user *info)
219{
220 struct sysinfo s;
221 int ret, err;
222 int bitcount=0;
223 mm_segment_t old_fs = get_fs ();
224
225 /* The __user cast is valid due to set_fs() */
226 set_fs (KERNEL_DS);
227 ret = sys_sysinfo((struct sysinfo __user *)&s);
228 set_fs (old_fs);
229
230 /* Check to see if any memory value is too large for 32-bit and
231 * scale down if needed.
232 */
233 if ((s.totalram >> 32) || (s.totalswap >> 32)) {
234 while (s.mem_unit < PAGE_SIZE) {
235 s.mem_unit <<= 1;
236 bitcount++;
237 }
238 s.totalram >>=bitcount;
239 s.freeram >>= bitcount;
240 s.sharedram >>= bitcount;
241 s.bufferram >>= bitcount;
242 s.totalswap >>= bitcount;
243 s.freeswap >>= bitcount;
244 s.totalhigh >>= bitcount;
245 s.freehigh >>= bitcount;
246 }
247
248 err = put_user (s.uptime, &info->uptime);
249 err |= __put_user (s.loads[0], &info->loads[0]);
250 err |= __put_user (s.loads[1], &info->loads[1]);
251 err |= __put_user (s.loads[2], &info->loads[2]);
252 err |= __put_user (s.totalram, &info->totalram);
253 err |= __put_user (s.freeram, &info->freeram);
254 err |= __put_user (s.sharedram, &info->sharedram);
255 err |= __put_user (s.bufferram, &info->bufferram);
256 err |= __put_user (s.totalswap, &info->totalswap);
257 err |= __put_user (s.freeswap, &info->freeswap);
258 err |= __put_user (s.procs, &info->procs);
259 err |= __put_user (s.totalhigh, &info->totalhigh);
260 err |= __put_user (s.freehigh, &info->freehigh);
261 err |= __put_user (s.mem_unit, &info->mem_unit);
262 if (err)
263 return -EFAULT;
264
265 return ret;
266}
267
268 201
269 202
270 203
diff --git a/arch/powerpc/kernel/udbg.c b/arch/powerpc/kernel/udbg.c
index 8f5afdbad0d5..194a93eeb3e7 100644
--- a/arch/powerpc/kernel/udbg.c
+++ b/arch/powerpc/kernel/udbg.c
@@ -150,7 +150,7 @@ void __init disable_early_printk(void)
150{ 150{
151 if (!early_console_initialized) 151 if (!early_console_initialized)
152 return; 152 return;
153 if (strstr(saved_command_line, "udbg-immortal")) { 153 if (strstr(boot_command_line, "udbg-immortal")) {
154 printk(KERN_INFO "early console immortal !\n"); 154 printk(KERN_INFO "early console immortal !\n");
155 return; 155 return;
156 } 156 }
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
index ae0ede19879d..e46c31b36641 100644
--- a/arch/powerpc/kernel/vdso.c
+++ b/arch/powerpc/kernel/vdso.c
@@ -51,17 +51,21 @@
51 51
52extern char vdso32_start, vdso32_end; 52extern char vdso32_start, vdso32_end;
53static void *vdso32_kbase = &vdso32_start; 53static void *vdso32_kbase = &vdso32_start;
54unsigned int vdso32_pages; 54static unsigned int vdso32_pages;
55static struct page **vdso32_pagelist;
55unsigned long vdso32_sigtramp; 56unsigned long vdso32_sigtramp;
56unsigned long vdso32_rt_sigtramp; 57unsigned long vdso32_rt_sigtramp;
57 58
58#ifdef CONFIG_PPC64 59#ifdef CONFIG_PPC64
59extern char vdso64_start, vdso64_end; 60extern char vdso64_start, vdso64_end;
60static void *vdso64_kbase = &vdso64_start; 61static void *vdso64_kbase = &vdso64_start;
61unsigned int vdso64_pages; 62static unsigned int vdso64_pages;
63static struct page **vdso64_pagelist;
62unsigned long vdso64_rt_sigtramp; 64unsigned long vdso64_rt_sigtramp;
63#endif /* CONFIG_PPC64 */ 65#endif /* CONFIG_PPC64 */
64 66
67static int vdso_ready;
68
65/* 69/*
66 * The vdso data page (aka. systemcfg for old ppc64 fans) is here. 70 * The vdso data page (aka. systemcfg for old ppc64 fans) is here.
67 * Once the early boot kernel code no longer needs to muck around 71 * Once the early boot kernel code no longer needs to muck around
@@ -165,55 +169,6 @@ static void dump_vdso_pages(struct vm_area_struct * vma)
165#endif /* DEBUG */ 169#endif /* DEBUG */
166 170
167/* 171/*
168 * Keep a dummy vma_close for now, it will prevent VMA merging.
169 */
170static void vdso_vma_close(struct vm_area_struct * vma)
171{
172}
173
174/*
175 * Our nopage() function, maps in the actual vDSO kernel pages, they will
176 * be mapped read-only by do_no_page(), and eventually COW'ed, either
177 * right away for an initial write access, or by do_wp_page().
178 */
179static struct page * vdso_vma_nopage(struct vm_area_struct * vma,
180 unsigned long address, int *type)
181{
182 unsigned long offset = address - vma->vm_start;
183 struct page *pg;
184#ifdef CONFIG_PPC64
185 void *vbase = (vma->vm_mm->task_size > TASK_SIZE_USER32) ?
186 vdso64_kbase : vdso32_kbase;
187#else
188 void *vbase = vdso32_kbase;
189#endif
190
191 DBG("vdso_vma_nopage(current: %s, address: %016lx, off: %lx)\n",
192 current->comm, address, offset);
193
194 if (address < vma->vm_start || address > vma->vm_end)
195 return NOPAGE_SIGBUS;
196
197 /*
198 * Last page is systemcfg.
199 */
200 if ((vma->vm_end - address) <= PAGE_SIZE)
201 pg = virt_to_page(vdso_data);
202 else
203 pg = virt_to_page(vbase + offset);
204
205 get_page(pg);
206 DBG(" ->page count: %d\n", page_count(pg));
207
208 return pg;
209}
210
211static struct vm_operations_struct vdso_vmops = {
212 .close = vdso_vma_close,
213 .nopage = vdso_vma_nopage,
214};
215
216/*
217 * This is called from binfmt_elf, we create the special vma for the 172 * This is called from binfmt_elf, we create the special vma for the
218 * vDSO and insert it into the mm struct tree 173 * vDSO and insert it into the mm struct tree
219 */ 174 */
@@ -221,20 +176,26 @@ int arch_setup_additional_pages(struct linux_binprm *bprm,
221 int executable_stack) 176 int executable_stack)
222{ 177{
223 struct mm_struct *mm = current->mm; 178 struct mm_struct *mm = current->mm;
224 struct vm_area_struct *vma; 179 struct page **vdso_pagelist;
225 unsigned long vdso_pages; 180 unsigned long vdso_pages;
226 unsigned long vdso_base; 181 unsigned long vdso_base;
227 int rc; 182 int rc;
228 183
184 if (!vdso_ready)
185 return 0;
186
229#ifdef CONFIG_PPC64 187#ifdef CONFIG_PPC64
230 if (test_thread_flag(TIF_32BIT)) { 188 if (test_thread_flag(TIF_32BIT)) {
189 vdso_pagelist = vdso32_pagelist;
231 vdso_pages = vdso32_pages; 190 vdso_pages = vdso32_pages;
232 vdso_base = VDSO32_MBASE; 191 vdso_base = VDSO32_MBASE;
233 } else { 192 } else {
193 vdso_pagelist = vdso64_pagelist;
234 vdso_pages = vdso64_pages; 194 vdso_pages = vdso64_pages;
235 vdso_base = VDSO64_MBASE; 195 vdso_base = VDSO64_MBASE;
236 } 196 }
237#else 197#else
198 vdso_pagelist = vdso32_pagelist;
238 vdso_pages = vdso32_pages; 199 vdso_pages = vdso32_pages;
239 vdso_base = VDSO32_MBASE; 200 vdso_base = VDSO32_MBASE;
240#endif 201#endif
@@ -262,17 +223,6 @@ int arch_setup_additional_pages(struct linux_binprm *bprm,
262 goto fail_mmapsem; 223 goto fail_mmapsem;
263 } 224 }
264 225
265
266 /* Allocate a VMA structure and fill it up */
267 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
268 if (vma == NULL) {
269 rc = -ENOMEM;
270 goto fail_mmapsem;
271 }
272 vma->vm_mm = mm;
273 vma->vm_start = vdso_base;
274 vma->vm_end = vma->vm_start + (vdso_pages << PAGE_SHIFT);
275
276 /* 226 /*
277 * our vma flags don't have VM_WRITE so by default, the process isn't 227 * our vma flags don't have VM_WRITE so by default, the process isn't
278 * allowed to write those pages. 228 * allowed to write those pages.
@@ -282,32 +232,26 @@ int arch_setup_additional_pages(struct linux_binprm *bprm,
282 * and your nice userland gettimeofday will be totally dead. 232 * and your nice userland gettimeofday will be totally dead.
283 * It's fine to use that for setting breakpoints in the vDSO code 233 * It's fine to use that for setting breakpoints in the vDSO code
284 * pages though 234 * pages though
285 */ 235 *
286 vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC;
287 /*
288 * Make sure the vDSO gets into every core dump. 236 * Make sure the vDSO gets into every core dump.
289 * Dumping its contents makes post-mortem fully interpretable later 237 * Dumping its contents makes post-mortem fully interpretable later
290 * without matching up the same kernel and hardware config to see 238 * without matching up the same kernel and hardware config to see
291 * what PC values meant. 239 * what PC values meant.
292 */ 240 */
293 vma->vm_flags |= VM_ALWAYSDUMP; 241 rc = install_special_mapping(mm, vdso_base, vdso_pages << PAGE_SHIFT,
294 vma->vm_flags |= mm->def_flags; 242 VM_READ|VM_EXEC|
295 vma->vm_page_prot = protection_map[vma->vm_flags & 0x7]; 243 VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC|
296 vma->vm_ops = &vdso_vmops; 244 VM_ALWAYSDUMP,
297 245 vdso_pagelist);
298 /* Insert new VMA */
299 rc = insert_vm_struct(mm, vma);
300 if (rc) 246 if (rc)
301 goto fail_vma; 247 goto fail_mmapsem;
302 248
303 /* Put vDSO base into mm struct and account for memory usage */ 249 /* Put vDSO base into mm struct */
304 current->mm->context.vdso_base = vdso_base; 250 current->mm->context.vdso_base = vdso_base;
305 mm->total_vm += (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; 251
306 up_write(&mm->mmap_sem); 252 up_write(&mm->mmap_sem);
307 return 0; 253 return 0;
308 254
309 fail_vma:
310 kmem_cache_free(vm_area_cachep, vma);
311 fail_mmapsem: 255 fail_mmapsem:
312 up_write(&mm->mmap_sem); 256 up_write(&mm->mmap_sem);
313 return rc; 257 return rc;
@@ -719,7 +663,7 @@ static void __init vdso_setup_syscall_map(void)
719} 663}
720 664
721 665
722void __init vdso_init(void) 666static int __init vdso_init(void)
723{ 667{
724 int i; 668 int i;
725 669
@@ -774,26 +718,44 @@ void __init vdso_init(void)
774#ifdef CONFIG_PPC64 718#ifdef CONFIG_PPC64
775 vdso64_pages = 0; 719 vdso64_pages = 0;
776#endif 720#endif
777 return; 721 return 0;
778 } 722 }
779 723
780 /* Make sure pages are in the correct state */ 724 /* Make sure pages are in the correct state */
725 vdso32_pagelist = kzalloc(sizeof(struct page *) * (vdso32_pages + 2),
726 GFP_KERNEL);
727 BUG_ON(vdso32_pagelist == NULL);
781 for (i = 0; i < vdso32_pages; i++) { 728 for (i = 0; i < vdso32_pages; i++) {
782 struct page *pg = virt_to_page(vdso32_kbase + i*PAGE_SIZE); 729 struct page *pg = virt_to_page(vdso32_kbase + i*PAGE_SIZE);
783 ClearPageReserved(pg); 730 ClearPageReserved(pg);
784 get_page(pg); 731 get_page(pg);
785 732 vdso32_pagelist[i] = pg;
786 } 733 }
734 vdso32_pagelist[i++] = virt_to_page(vdso_data);
735 vdso32_pagelist[i] = NULL;
736
787#ifdef CONFIG_PPC64 737#ifdef CONFIG_PPC64
738 vdso64_pagelist = kzalloc(sizeof(struct page *) * (vdso64_pages + 2),
739 GFP_KERNEL);
740 BUG_ON(vdso64_pagelist == NULL);
788 for (i = 0; i < vdso64_pages; i++) { 741 for (i = 0; i < vdso64_pages; i++) {
789 struct page *pg = virt_to_page(vdso64_kbase + i*PAGE_SIZE); 742 struct page *pg = virt_to_page(vdso64_kbase + i*PAGE_SIZE);
790 ClearPageReserved(pg); 743 ClearPageReserved(pg);
791 get_page(pg); 744 get_page(pg);
745 vdso64_pagelist[i] = pg;
792 } 746 }
747 vdso64_pagelist[i++] = virt_to_page(vdso_data);
748 vdso64_pagelist[i] = NULL;
793#endif /* CONFIG_PPC64 */ 749#endif /* CONFIG_PPC64 */
794 750
795 get_page(virt_to_page(vdso_data)); 751 get_page(virt_to_page(vdso_data));
752
753 smp_wmb();
754 vdso_ready = 1;
755
756 return 0;
796} 757}
758arch_initcall(vdso_init);
797 759
798int in_gate_area_no_task(unsigned long addr) 760int in_gate_area_no_task(unsigned long addr)
799{ 761{
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index 04b8e71bf5b0..7eefeb4a30e7 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -131,14 +131,14 @@ SECTIONS
131 __stop___fw_ftr_fixup = .; 131 __stop___fw_ftr_fixup = .;
132 } 132 }
133#endif 133#endif
134 134#ifdef CONFIG_BLK_DEV_INITRD
135 . = ALIGN(PAGE_SIZE); 135 . = ALIGN(PAGE_SIZE);
136 .init.ramfs : { 136 .init.ramfs : {
137 __initramfs_start = .; 137 __initramfs_start = .;
138 *(.init.ramfs) 138 *(.init.ramfs)
139 __initramfs_end = .; 139 __initramfs_end = .;
140 } 140 }
141 141#endif
142#ifdef CONFIG_PPC32 142#ifdef CONFIG_PPC32
143 . = ALIGN(32); 143 . = ALIGN(32);
144#else 144#else
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index 77b4637097e9..52f397c108a7 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -384,9 +384,6 @@ void __init mem_init(void)
384 initsize >> 10); 384 initsize >> 10);
385 385
386 mem_init_done = 1; 386 mem_init_done = 1;
387
388 /* Initialize the vDSO */
389 vdso_init();
390} 387}
391 388
392/* 389/*
diff --git a/arch/powerpc/platforms/52xx/Makefile b/arch/powerpc/platforms/52xx/Makefile
index 795b713ec9ee..07cdbcacf156 100644
--- a/arch/powerpc/platforms/52xx/Makefile
+++ b/arch/powerpc/platforms/52xx/Makefile
@@ -6,5 +6,5 @@ obj-y += mpc52xx_pic.o mpc52xx_common.o
6obj-$(CONFIG_PCI) += mpc52xx_pci.o 6obj-$(CONFIG_PCI) += mpc52xx_pci.o
7endif 7endif
8 8
9obj-$(CONFIG_PPC_EFIKA) += efika-setup.o efika-pci.o 9obj-$(CONFIG_PPC_EFIKA) += efika.o
10obj-$(CONFIG_PPC_LITE5200) += lite5200.o 10obj-$(CONFIG_PPC_LITE5200) += lite5200.o
diff --git a/arch/powerpc/platforms/52xx/efika-pci.c b/arch/powerpc/platforms/52xx/efika-pci.c
deleted file mode 100644
index 62e05b2a9227..000000000000
--- a/arch/powerpc/platforms/52xx/efika-pci.c
+++ /dev/null
@@ -1,119 +0,0 @@
1
2#include <linux/kernel.h>
3#include <linux/pci.h>
4#include <linux/string.h>
5#include <linux/init.h>
6
7#include <asm/io.h>
8#include <asm/irq.h>
9#include <asm/prom.h>
10#include <asm/machdep.h>
11#include <asm/sections.h>
12#include <asm/pci-bridge.h>
13#include <asm/rtas.h>
14
15#include "efika.h"
16
17#ifdef CONFIG_PCI
18/*
19 * Access functions for PCI config space using RTAS calls.
20 */
21static int rtas_read_config(struct pci_bus *bus, unsigned int devfn, int offset,
22 int len, u32 * val)
23{
24 struct pci_controller *hose = bus->sysdata;
25 unsigned long addr = (offset & 0xff) | ((devfn & 0xff) << 8)
26 | (((bus->number - hose->first_busno) & 0xff) << 16)
27 | (hose->index << 24);
28 int ret = -1;
29 int rval;
30
31 rval = rtas_call(rtas_token("read-pci-config"), 2, 2, &ret, addr, len);
32 *val = ret;
33 return rval ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL;
34}
35
36static int rtas_write_config(struct pci_bus *bus, unsigned int devfn,
37 int offset, int len, u32 val)
38{
39 struct pci_controller *hose = bus->sysdata;
40 unsigned long addr = (offset & 0xff) | ((devfn & 0xff) << 8)
41 | (((bus->number - hose->first_busno) & 0xff) << 16)
42 | (hose->index << 24);
43 int rval;
44
45 rval = rtas_call(rtas_token("write-pci-config"), 3, 1, NULL,
46 addr, len, val);
47 return rval ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL;
48}
49
50static struct pci_ops rtas_pci_ops = {
51 rtas_read_config,
52 rtas_write_config
53};
54
55void __init efika_pcisetup(void)
56{
57 const int *bus_range;
58 int len;
59 struct pci_controller *hose;
60 struct device_node *root;
61 struct device_node *pcictrl;
62
63 root = of_find_node_by_path("/");
64 if (root == NULL) {
65 printk(KERN_WARNING EFIKA_PLATFORM_NAME
66 ": Unable to find the root node\n");
67 return;
68 }
69
70 for (pcictrl = NULL;;) {
71 pcictrl = of_get_next_child(root, pcictrl);
72 if ((pcictrl == NULL) || (strcmp(pcictrl->name, "pci") == 0))
73 break;
74 }
75
76 of_node_put(root);
77
78 if (pcictrl == NULL) {
79 printk(KERN_WARNING EFIKA_PLATFORM_NAME
80 ": Unable to find the PCI bridge node\n");
81 return;
82 }
83
84 bus_range = get_property(pcictrl, "bus-range", &len);
85 if (bus_range == NULL || len < 2 * sizeof(int)) {
86 printk(KERN_WARNING EFIKA_PLATFORM_NAME
87 ": Can't get bus-range for %s\n", pcictrl->full_name);
88 return;
89 }
90
91 if (bus_range[1] == bus_range[0])
92 printk(KERN_INFO EFIKA_PLATFORM_NAME ": PCI bus %d",
93 bus_range[0]);
94 else
95 printk(KERN_INFO EFIKA_PLATFORM_NAME ": PCI buses %d..%d",
96 bus_range[0], bus_range[1]);
97 printk(" controlled by %s\n", pcictrl->full_name);
98 printk("\n");
99
100 hose = pcibios_alloc_controller();
101 if (!hose) {
102 printk(KERN_WARNING EFIKA_PLATFORM_NAME
103 ": Can't allocate PCI controller structure for %s\n",
104 pcictrl->full_name);
105 return;
106 }
107
108 hose->arch_data = of_node_get(pcictrl);
109 hose->first_busno = bus_range[0];
110 hose->last_busno = bus_range[1];
111 hose->ops = &rtas_pci_ops;
112
113 pci_process_bridge_OF_ranges(hose, pcictrl, 0);
114}
115
116#else
117void __init efika_pcisetup(void)
118{}
119#endif
diff --git a/arch/powerpc/platforms/52xx/efika-setup.c b/arch/powerpc/platforms/52xx/efika-setup.c
deleted file mode 100644
index 110c980ed1e0..000000000000
--- a/arch/powerpc/platforms/52xx/efika-setup.c
+++ /dev/null
@@ -1,150 +0,0 @@
1/*
2 *
3 * Efika 5K2 platform setup
4 * Some code really inspired from the lite5200b platform.
5 *
6 * Copyright (C) 2006 bplan GmbH
7 *
8 * This file is licensed under the terms of the GNU General Public License
9 * version 2. This program is licensed "as is" without any warranty of any
10 * kind, whether express or implied.
11 *
12 */
13
14#include <linux/errno.h>
15#include <linux/kernel.h>
16#include <linux/slab.h>
17#include <linux/reboot.h>
18#include <linux/init.h>
19#include <linux/utsrelease.h>
20#include <linux/seq_file.h>
21#include <linux/root_dev.h>
22#include <linux/initrd.h>
23#include <linux/timer.h>
24#include <linux/pci.h>
25
26#include <asm/pgtable.h>
27#include <asm/prom.h>
28#include <asm/time.h>
29#include <asm/machdep.h>
30#include <asm/rtas.h>
31#include <asm/of_device.h>
32#include <asm/of_platform.h>
33#include <asm/mpc52xx.h>
34
35#include "efika.h"
36
37static void efika_show_cpuinfo(struct seq_file *m)
38{
39 struct device_node *root;
40 const char *revision = NULL;
41 const char *codegendescription = NULL;
42 const char *codegenvendor = NULL;
43
44 root = of_find_node_by_path("/");
45 if (root) {
46 revision = get_property(root, "revision", NULL);
47 codegendescription =
48 get_property(root, "CODEGEN,description", NULL);
49 codegenvendor = get_property(root, "CODEGEN,vendor", NULL);
50
51 of_node_put(root);
52 }
53
54 if (codegendescription)
55 seq_printf(m, "machine\t\t: %s\n", codegendescription);
56 else
57 seq_printf(m, "machine\t\t: Efika\n");
58
59 if (revision)
60 seq_printf(m, "revision\t: %s\n", revision);
61
62 if (codegenvendor)
63 seq_printf(m, "vendor\t\t: %s\n", codegenvendor);
64
65 of_node_put(root);
66}
67
68static void __init efika_setup_arch(void)
69{
70 rtas_initialize();
71
72#ifdef CONFIG_BLK_DEV_INITRD
73 initrd_below_start_ok = 1;
74
75 if (initrd_start)
76 ROOT_DEV = Root_RAM0;
77 else
78#endif
79 ROOT_DEV = Root_SDA2; /* sda2 (sda1 is for the kernel) */
80
81 efika_pcisetup();
82
83 if (ppc_md.progress)
84 ppc_md.progress("Linux/PPC " UTS_RELEASE " runnung on Efika ;-)\n", 0x0);
85}
86
87static void __init efika_init(void)
88{
89 struct device_node *np;
90 struct device_node *cnp = NULL;
91 const u32 *base;
92
93 /* Find every child of the SOC node and add it to of_platform */
94 np = of_find_node_by_name(NULL, "builtin");
95 if (np) {
96 char name[BUS_ID_SIZE];
97 while ((cnp = of_get_next_child(np, cnp))) {
98 strcpy(name, cnp->name);
99
100 base = get_property(cnp, "reg", NULL);
101 if (base == NULL)
102 continue;
103
104 snprintf(name+strlen(name), BUS_ID_SIZE, "@%x", *base);
105 of_platform_device_create(cnp, name, NULL);
106
107 printk(KERN_INFO EFIKA_PLATFORM_NAME" : Added %s (type '%s' at '%s') to the known devices\n", name, cnp->type, cnp->full_name);
108 }
109 }
110
111 if (ppc_md.progress)
112 ppc_md.progress(" Have fun with your Efika! ", 0x7777);
113}
114
115static int __init efika_probe(void)
116{
117 char *model = of_get_flat_dt_prop(of_get_flat_dt_root(),
118 "model", NULL);
119
120 if (model == NULL)
121 return 0;
122 if (strcmp(model, "EFIKA5K2"))
123 return 0;
124
125 ISA_DMA_THRESHOLD = ~0L;
126 DMA_MODE_READ = 0x44;
127 DMA_MODE_WRITE = 0x48;
128
129 return 1;
130}
131
132define_machine(efika)
133{
134 .name = EFIKA_PLATFORM_NAME,
135 .probe = efika_probe,
136 .setup_arch = efika_setup_arch,
137 .init = efika_init,
138 .show_cpuinfo = efika_show_cpuinfo,
139 .init_IRQ = mpc52xx_init_irq,
140 .get_irq = mpc52xx_get_irq,
141 .restart = rtas_restart,
142 .power_off = rtas_power_off,
143 .halt = rtas_halt,
144 .set_rtc_time = rtas_set_rtc_time,
145 .get_rtc_time = rtas_get_rtc_time,
146 .progress = rtas_progress,
147 .get_boot_time = rtas_get_boot_time,
148 .calibrate_decr = generic_calibrate_decr,
149 .phys_mem_access_prot = pci_phys_mem_access_prot,
150};
diff --git a/arch/powerpc/platforms/52xx/efika.c b/arch/powerpc/platforms/52xx/efika.c
new file mode 100644
index 000000000000..8de034116681
--- /dev/null
+++ b/arch/powerpc/platforms/52xx/efika.c
@@ -0,0 +1,243 @@
1/*
2 * Efika 5K2 platform code
3 * Some code really inspired from the lite5200b platform.
4 *
5 * Copyright (C) 2006 bplan GmbH
6 *
7 * This file is licensed under the terms of the GNU General Public License
8 * version 2. This program is licensed "as is" without any warranty of any
9 * kind, whether express or implied.
10 */
11
12#include <linux/errno.h>
13#include <linux/kernel.h>
14#include <linux/slab.h>
15#include <linux/reboot.h>
16#include <linux/init.h>
17#include <linux/utsrelease.h>
18#include <linux/seq_file.h>
19#include <linux/string.h>
20#include <linux/root_dev.h>
21#include <linux/initrd.h>
22#include <linux/timer.h>
23#include <linux/pci.h>
24
25#include <asm/io.h>
26#include <asm/irq.h>
27#include <asm/sections.h>
28#include <asm/pci-bridge.h>
29#include <asm/pgtable.h>
30#include <asm/prom.h>
31#include <asm/time.h>
32#include <asm/machdep.h>
33#include <asm/rtas.h>
34#include <asm/of_device.h>
35#include <asm/of_platform.h>
36#include <asm/mpc52xx.h>
37
38
39#define EFIKA_PLATFORM_NAME "Efika"
40
41
42/* ------------------------------------------------------------------------ */
43/* PCI accesses thru RTAS */
44/* ------------------------------------------------------------------------ */
45
46#ifdef CONFIG_PCI
47
48/*
49 * Access functions for PCI config space using RTAS calls.
50 */
51static int rtas_read_config(struct pci_bus *bus, unsigned int devfn, int offset,
52 int len, u32 * val)
53{
54 struct pci_controller *hose = bus->sysdata;
55 unsigned long addr = (offset & 0xff) | ((devfn & 0xff) << 8)
56 | (((bus->number - hose->first_busno) & 0xff) << 16)
57 | (hose->index << 24);
58 int ret = -1;
59 int rval;
60
61 rval = rtas_call(rtas_token("read-pci-config"), 2, 2, &ret, addr, len);
62 *val = ret;
63 return rval ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL;
64}
65
66static int rtas_write_config(struct pci_bus *bus, unsigned int devfn,
67 int offset, int len, u32 val)
68{
69 struct pci_controller *hose = bus->sysdata;
70 unsigned long addr = (offset & 0xff) | ((devfn & 0xff) << 8)
71 | (((bus->number - hose->first_busno) & 0xff) << 16)
72 | (hose->index << 24);
73 int rval;
74
75 rval = rtas_call(rtas_token("write-pci-config"), 3, 1, NULL,
76 addr, len, val);
77 return rval ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL;
78}
79
80static struct pci_ops rtas_pci_ops = {
81 rtas_read_config,
82 rtas_write_config
83};
84
85
86void __init efika_pcisetup(void)
87{
88 const int *bus_range;
89 int len;
90 struct pci_controller *hose;
91 struct device_node *root;
92 struct device_node *pcictrl;
93
94 root = of_find_node_by_path("/");
95 if (root == NULL) {
96 printk(KERN_WARNING EFIKA_PLATFORM_NAME
97 ": Unable to find the root node\n");
98 return;
99 }
100
101 for (pcictrl = NULL;;) {
102 pcictrl = of_get_next_child(root, pcictrl);
103 if ((pcictrl == NULL) || (strcmp(pcictrl->name, "pci") == 0))
104 break;
105 }
106
107 of_node_put(root);
108
109 if (pcictrl == NULL) {
110 printk(KERN_WARNING EFIKA_PLATFORM_NAME
111 ": Unable to find the PCI bridge node\n");
112 return;
113 }
114
115 bus_range = get_property(pcictrl, "bus-range", &len);
116 if (bus_range == NULL || len < 2 * sizeof(int)) {
117 printk(KERN_WARNING EFIKA_PLATFORM_NAME
118 ": Can't get bus-range for %s\n", pcictrl->full_name);
119 return;
120 }
121
122 if (bus_range[1] == bus_range[0])
123 printk(KERN_INFO EFIKA_PLATFORM_NAME ": PCI bus %d",
124 bus_range[0]);
125 else
126 printk(KERN_INFO EFIKA_PLATFORM_NAME ": PCI buses %d..%d",
127 bus_range[0], bus_range[1]);
128 printk(" controlled by %s\n", pcictrl->full_name);
129 printk("\n");
130
131 hose = pcibios_alloc_controller();
132 if (!hose) {
133 printk(KERN_WARNING EFIKA_PLATFORM_NAME
134 ": Can't allocate PCI controller structure for %s\n",
135 pcictrl->full_name);
136 return;
137 }
138
139 hose->arch_data = of_node_get(pcictrl);
140 hose->first_busno = bus_range[0];
141 hose->last_busno = bus_range[1];
142 hose->ops = &rtas_pci_ops;
143
144 pci_process_bridge_OF_ranges(hose, pcictrl, 0);
145}
146
147#else
148void __init efika_pcisetup(void)
149{}
150#endif
151
152
153
154/* ------------------------------------------------------------------------ */
155/* Platform setup */
156/* ------------------------------------------------------------------------ */
157
158static void efika_show_cpuinfo(struct seq_file *m)
159{
160 struct device_node *root;
161 const char *revision = NULL;
162 const char *codegendescription = NULL;
163 const char *codegenvendor = NULL;
164
165 root = of_find_node_by_path("/");
166 if (!root)
167 return;
168
169 revision = get_property(root, "revision", NULL);
170 codegendescription =
171 get_property(root, "CODEGEN,description", NULL);
172 codegenvendor = get_property(root, "CODEGEN,vendor", NULL);
173
174 if (codegendescription)
175 seq_printf(m, "machine\t\t: %s\n", codegendescription);
176 else
177 seq_printf(m, "machine\t\t: Efika\n");
178
179 if (revision)
180 seq_printf(m, "revision\t: %s\n", revision);
181
182 if (codegenvendor)
183 seq_printf(m, "vendor\t\t: %s\n", codegenvendor);
184
185 of_node_put(root);
186}
187
188static void __init efika_setup_arch(void)
189{
190 rtas_initialize();
191
192#ifdef CONFIG_BLK_DEV_INITRD
193 initrd_below_start_ok = 1;
194
195 if (initrd_start)
196 ROOT_DEV = Root_RAM0;
197 else
198#endif
199 ROOT_DEV = Root_SDA2; /* sda2 (sda1 is for the kernel) */
200
201 efika_pcisetup();
202
203 if (ppc_md.progress)
204 ppc_md.progress("Linux/PPC " UTS_RELEASE " running on Efika ;-)\n", 0x0);
205}
206
207static int __init efika_probe(void)
208{
209 char *model = of_get_flat_dt_prop(of_get_flat_dt_root(),
210 "model", NULL);
211
212 if (model == NULL)
213 return 0;
214 if (strcmp(model, "EFIKA5K2"))
215 return 0;
216
217 ISA_DMA_THRESHOLD = ~0L;
218 DMA_MODE_READ = 0x44;
219 DMA_MODE_WRITE = 0x48;
220
221 return 1;
222}
223
224define_machine(efika)
225{
226 .name = EFIKA_PLATFORM_NAME,
227 .probe = efika_probe,
228 .setup_arch = efika_setup_arch,
229 .init = mpc52xx_declare_of_platform_devices,
230 .show_cpuinfo = efika_show_cpuinfo,
231 .init_IRQ = mpc52xx_init_irq,
232 .get_irq = mpc52xx_get_irq,
233 .restart = rtas_restart,
234 .power_off = rtas_power_off,
235 .halt = rtas_halt,
236 .set_rtc_time = rtas_set_rtc_time,
237 .get_rtc_time = rtas_get_rtc_time,
238 .progress = rtas_progress,
239 .get_boot_time = rtas_get_boot_time,
240 .calibrate_decr = generic_calibrate_decr,
241 .phys_mem_access_prot = pci_phys_mem_access_prot,
242};
243
diff --git a/arch/powerpc/platforms/52xx/efika.h b/arch/powerpc/platforms/52xx/efika.h
deleted file mode 100644
index 2f060fd097d7..000000000000
--- a/arch/powerpc/platforms/52xx/efika.h
+++ /dev/null
@@ -1,19 +0,0 @@
1/*
2 * Efika 5K2 platform setup - Header file
3 *
4 * Copyright (C) 2006 bplan GmbH
5 *
6 * This file is licensed under the terms of the GNU General Public License
7 * version 2. This program is licensed "as is" without any warranty of any
8 * kind, whether express or implied.
9 *
10 */
11
12#ifndef __ARCH_POWERPC_EFIKA__
13#define __ARCH_POWERPC_EFIKA__
14
15#define EFIKA_PLATFORM_NAME "Efika"
16
17extern void __init efika_pcisetup(void);
18
19#endif
diff --git a/arch/powerpc/platforms/52xx/lite5200.c b/arch/powerpc/platforms/52xx/lite5200.c
index cdb16bfa6ca6..cc3b40de21dd 100644
--- a/arch/powerpc/platforms/52xx/lite5200.c
+++ b/arch/powerpc/platforms/52xx/lite5200.c
@@ -51,13 +51,13 @@
51 */ 51 */
52 52
53static void __init 53static void __init
54lite52xx_setup_cpu(void) 54lite5200_setup_cpu(void)
55{ 55{
56 struct mpc52xx_gpio __iomem *gpio; 56 struct mpc52xx_gpio __iomem *gpio;
57 u32 port_config; 57 u32 port_config;
58 58
59 /* Map zones */ 59 /* Map zones */
60 gpio = mpc52xx_find_and_map("mpc52xx-gpio"); 60 gpio = mpc52xx_find_and_map("mpc5200-gpio");
61 if (!gpio) { 61 if (!gpio) {
62 printk(KERN_ERR __FILE__ ": " 62 printk(KERN_ERR __FILE__ ": "
63 "Error while mapping GPIO register for port config. " 63 "Error while mapping GPIO register for port config. "
@@ -85,12 +85,12 @@ error:
85 iounmap(gpio); 85 iounmap(gpio);
86} 86}
87 87
88static void __init lite52xx_setup_arch(void) 88static void __init lite5200_setup_arch(void)
89{ 89{
90 struct device_node *np; 90 struct device_node *np;
91 91
92 if (ppc_md.progress) 92 if (ppc_md.progress)
93 ppc_md.progress("lite52xx_setup_arch()", 0); 93 ppc_md.progress("lite5200_setup_arch()", 0);
94 94
95 np = of_find_node_by_type(NULL, "cpu"); 95 np = of_find_node_by_type(NULL, "cpu");
96 if (np) { 96 if (np) {
@@ -105,7 +105,7 @@ static void __init lite52xx_setup_arch(void)
105 105
106 /* CPU & Port mux setup */ 106 /* CPU & Port mux setup */
107 mpc52xx_setup_cpu(); /* Generic */ 107 mpc52xx_setup_cpu(); /* Generic */
108 lite52xx_setup_cpu(); /* Platorm specific */ 108 lite5200_setup_cpu(); /* Platorm specific */
109 109
110#ifdef CONFIG_PCI 110#ifdef CONFIG_PCI
111 np = of_find_node_by_type(np, "pci"); 111 np = of_find_node_by_type(np, "pci");
@@ -126,7 +126,7 @@ static void __init lite52xx_setup_arch(void)
126 126
127} 127}
128 128
129void lite52xx_show_cpuinfo(struct seq_file *m) 129void lite5200_show_cpuinfo(struct seq_file *m)
130{ 130{
131 struct device_node* np = of_find_all_nodes(NULL); 131 struct device_node* np = of_find_all_nodes(NULL);
132 const char *model = NULL; 132 const char *model = NULL;
@@ -143,25 +143,26 @@ void lite52xx_show_cpuinfo(struct seq_file *m)
143/* 143/*
144 * Called very early, MMU is off, device-tree isn't unflattened 144 * Called very early, MMU is off, device-tree isn't unflattened
145 */ 145 */
146static int __init lite52xx_probe(void) 146static int __init lite5200_probe(void)
147{ 147{
148 unsigned long node = of_get_flat_dt_root(); 148 unsigned long node = of_get_flat_dt_root();
149 const char *model = of_get_flat_dt_prop(node, "model", NULL); 149 const char *model = of_get_flat_dt_prop(node, "model", NULL);
150 150
151 if (!of_flat_dt_is_compatible(node, "lite52xx")) 151 if (!of_flat_dt_is_compatible(node, "fsl,lite5200") &&
152 !of_flat_dt_is_compatible(node, "fsl,lite5200b"))
152 return 0; 153 return 0;
153 pr_debug("%s board w/ mpc52xx found\n", model ? model : "unknown"); 154 pr_debug("%s board found\n", model ? model : "unknown");
154 155
155 return 1; 156 return 1;
156} 157}
157 158
158define_machine(lite52xx) { 159define_machine(lite5200) {
159 .name = "lite52xx", 160 .name = "lite5200",
160 .probe = lite52xx_probe, 161 .probe = lite5200_probe,
161 .setup_arch = lite52xx_setup_arch, 162 .setup_arch = lite5200_setup_arch,
162 .init = mpc52xx_declare_of_platform_devices, 163 .init = mpc52xx_declare_of_platform_devices,
163 .init_IRQ = mpc52xx_init_irq, 164 .init_IRQ = mpc52xx_init_irq,
164 .get_irq = mpc52xx_get_irq, 165 .get_irq = mpc52xx_get_irq,
165 .show_cpuinfo = lite52xx_show_cpuinfo, 166 .show_cpuinfo = lite5200_show_cpuinfo,
166 .calibrate_decr = generic_calibrate_decr, 167 .calibrate_decr = generic_calibrate_decr,
167}; 168};
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c
index cc40889074bd..ed0cb694aea8 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_common.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c
@@ -83,8 +83,8 @@ mpc52xx_setup_cpu(void)
83 struct mpc52xx_xlb __iomem *xlb; 83 struct mpc52xx_xlb __iomem *xlb;
84 84
85 /* Map zones */ 85 /* Map zones */
86 cdm = mpc52xx_find_and_map("mpc52xx-cdm"); 86 cdm = mpc52xx_find_and_map("mpc5200-cdm");
87 xlb = mpc52xx_find_and_map("mpc52xx-xlb"); 87 xlb = mpc52xx_find_and_map("mpc5200-xlb");
88 88
89 if (!cdm || !xlb) { 89 if (!cdm || !xlb) {
90 printk(KERN_ERR __FILE__ ": " 90 printk(KERN_ERR __FILE__ ": "
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_pic.c b/arch/powerpc/platforms/52xx/mpc52xx_pic.c
index cd91a6c3aafa..c75192567e55 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_pic.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_pic.c
@@ -383,16 +383,16 @@ void __init mpc52xx_init_irq(void)
383 struct device_node *picnode; 383 struct device_node *picnode;
384 384
385 /* Remap the necessary zones */ 385 /* Remap the necessary zones */
386 picnode = of_find_compatible_node(NULL, NULL, "mpc52xx-pic"); 386 picnode = of_find_compatible_node(NULL, NULL, "mpc5200-pic");
387 387
388 intr = mpc52xx_find_and_map("mpc52xx-pic"); 388 intr = mpc52xx_find_and_map("mpc5200-pic");
389 if (!intr) 389 if (!intr)
390 panic(__FILE__ ": find_and_map failed on 'mpc52xx-pic'. " 390 panic(__FILE__ ": find_and_map failed on 'mpc5200-pic'. "
391 "Check node !"); 391 "Check node !");
392 392
393 sdma = mpc52xx_find_and_map("mpc52xx-bestcomm"); 393 sdma = mpc52xx_find_and_map("mpc5200-bestcomm");
394 if (!sdma) 394 if (!sdma)
395 panic(__FILE__ ": find_and_map failed on 'mpc52xx-bestcomm'. " 395 panic(__FILE__ ": find_and_map failed on 'mpc5200-bestcomm'. "
396 "Check node !"); 396 "Check node !");
397 397
398 /* Disable all interrupt sources. */ 398 /* Disable all interrupt sources. */
diff --git a/arch/powerpc/platforms/83xx/Kconfig b/arch/powerpc/platforms/83xx/Kconfig
index edcd5b875b66..1aea1e69ff31 100644
--- a/arch/powerpc/platforms/83xx/Kconfig
+++ b/arch/powerpc/platforms/83xx/Kconfig
@@ -3,7 +3,13 @@ menu "Platform support"
3 3
4choice 4choice
5 prompt "Machine Type" 5 prompt "Machine Type"
6 default MPC834x_SYS 6 default MPC834x_MDS
7
8config MPC8313_RDB
9 bool "Freescale MPC8313 RDB"
10 select DEFAULT_UIMAGE
11 help
12 This option enables support for the MPC8313 RDB board.
7 13
8config MPC832x_MDS 14config MPC832x_MDS
9 bool "Freescale MPC832x MDS" 15 bool "Freescale MPC832x MDS"
@@ -12,13 +18,13 @@ config MPC832x_MDS
12 help 18 help
13 This option enables support for the MPC832x MDS evaluation board. 19 This option enables support for the MPC832x MDS evaluation board.
14 20
15config MPC834x_SYS 21config MPC834x_MDS
16 bool "Freescale MPC834x SYS" 22 bool "Freescale MPC834x MDS"
17 select DEFAULT_UIMAGE 23 select DEFAULT_UIMAGE
18 help 24 help
19 This option enables support for the MPC 834x SYS evaluation board. 25 This option enables support for the MPC 834x MDS evaluation board.
20 26
21 Be aware that PCI buses can only function when SYS board is plugged 27 Be aware that PCI buses can only function when MDS board is plugged
22 into the PIB (Platform IO Board) board from Freescale which provide 28 into the PIB (Platform IO Board) board from Freescale which provide
23 3 PCI slots. The PIBs PCI initialization is the bootloader's 29 3 PCI slots. The PIBs PCI initialization is the bootloader's
24 responsibility. 30 responsibility.
@@ -41,6 +47,12 @@ config MPC8360E_PB
41 47
42endchoice 48endchoice
43 49
50config PPC_MPC831x
51 bool
52 select PPC_UDBG_16550
53 select PPC_INDIRECT_PCI
54 default y if MPC8313_RDB
55
44config PPC_MPC832x 56config PPC_MPC832x
45 bool 57 bool
46 select PPC_UDBG_16550 58 select PPC_UDBG_16550
@@ -51,7 +63,7 @@ config MPC834x
51 bool 63 bool
52 select PPC_UDBG_16550 64 select PPC_UDBG_16550
53 select PPC_INDIRECT_PCI 65 select PPC_INDIRECT_PCI
54 default y if MPC834x_SYS || MPC834x_ITX 66 default y if MPC834x_MDS || MPC834x_ITX
55 67
56config PPC_MPC836x 68config PPC_MPC836x
57 bool 69 bool
diff --git a/arch/powerpc/platforms/83xx/Makefile b/arch/powerpc/platforms/83xx/Makefile
index f1aa7e24a938..6c8199c4c382 100644
--- a/arch/powerpc/platforms/83xx/Makefile
+++ b/arch/powerpc/platforms/83xx/Makefile
@@ -3,7 +3,8 @@
3# 3#
4obj-y := misc.o 4obj-y := misc.o
5obj-$(CONFIG_PCI) += pci.o 5obj-$(CONFIG_PCI) += pci.o
6obj-$(CONFIG_MPC834x_SYS) += mpc834x_sys.o 6obj-$(CONFIG_MPC8313_RDB) += mpc8313_rdb.o
7obj-$(CONFIG_MPC834x_MDS) += mpc834x_mds.o
7obj-$(CONFIG_MPC834x_ITX) += mpc834x_itx.o 8obj-$(CONFIG_MPC834x_ITX) += mpc834x_itx.o
8obj-$(CONFIG_MPC8360E_PB) += mpc8360e_pb.o 9obj-$(CONFIG_MPC8360E_PB) += mpc8360e_pb.o
9obj-$(CONFIG_MPC832x_MDS) += mpc832x_mds.o 10obj-$(CONFIG_MPC832x_MDS) += mpc832x_mds.o
diff --git a/arch/powerpc/platforms/83xx/mpc8313_rdb.c b/arch/powerpc/platforms/83xx/mpc8313_rdb.c
new file mode 100644
index 000000000000..c3b98c34eb6b
--- /dev/null
+++ b/arch/powerpc/platforms/83xx/mpc8313_rdb.c
@@ -0,0 +1,99 @@
1/*
2 * arch/powerpc/platforms/83xx/mpc8313_rdb.c
3 *
4 * Description: MPC8313x RDB board specific routines.
5 * This file is based on mpc834x_sys.c
6 * Author: Lo Wlison <r43300@freescale.com>
7 *
8 * Copyright (C) Freescale Semiconductor, Inc. 2006. All rights reserved.
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the
12 * Free Software Foundation; either version 2 of the License, or (at your
13 * option) any later version.
14 */
15
16#include <linux/pci.h>
17
18#include <asm/time.h>
19#include <asm/ipic.h>
20#include <asm/udbg.h>
21
22#include "mpc83xx.h"
23
24#undef DEBUG
25#ifdef DEBUG
26#define DBG(fmt...) udbg_printf(fmt)
27#else
28#define DBG(fmt...)
29#endif
30
31#ifndef CONFIG_PCI
32unsigned long isa_io_base = 0;
33unsigned long isa_mem_base = 0;
34#endif
35
36/* ************************************************************************
37 *
38 * Setup the architecture
39 *
40 */
41static void __init mpc8313_rdb_setup_arch(void)
42{
43 struct device_node *np;
44
45 if (ppc_md.progress)
46 ppc_md.progress("mpc8313_rdb_setup_arch()", 0);
47
48#ifdef CONFIG_PCI
49 for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
50 add_bridge(np);
51
52 ppc_md.pci_exclude_device = mpc83xx_exclude_device;
53#endif
54}
55
56void __init mpc8313_rdb_init_IRQ(void)
57{
58 struct device_node *np;
59
60 np = of_find_node_by_type(NULL, "ipic");
61 if (!np)
62 return;
63
64 ipic_init(np, 0);
65
66 /* Initialize the default interrupt mapping priorities,
67 * in case the boot rom changed something on us.
68 */
69 ipic_set_default_priority();
70}
71
72/*
73 * Called very early, MMU is off, device-tree isn't unflattened
74 */
75static int __init mpc8313_rdb_probe(void)
76{
77 char *model = of_get_flat_dt_prop(of_get_flat_dt_root(),
78 "model", NULL);
79 if (model == NULL)
80 return 0;
81 if (strcmp(model, "MPC8313ERDB"))
82 return 0;
83
84 DBG("MPC8313 RDB found\n");
85
86 return 1;
87}
88
89define_machine(mpc8313_rdb) {
90 .name = "MPC8313 RDB",
91 .probe = mpc8313_rdb_probe,
92 .setup_arch = mpc8313_rdb_setup_arch,
93 .init_IRQ = mpc8313_rdb_init_IRQ,
94 .get_irq = ipic_get_irq,
95 .restart = mpc83xx_restart,
96 .time_init = mpc83xx_time_init,
97 .calibrate_decr = generic_calibrate_decr,
98 .progress = udbg_progress,
99};
diff --git a/arch/powerpc/platforms/83xx/mpc834x_itx.c b/arch/powerpc/platforms/83xx/mpc834x_itx.c
index 2446dea9407e..443a3172f370 100644
--- a/arch/powerpc/platforms/83xx/mpc834x_itx.c
+++ b/arch/powerpc/platforms/83xx/mpc834x_itx.c
@@ -38,8 +38,6 @@
38 38
39#include "mpc83xx.h" 39#include "mpc83xx.h"
40 40
41#include <platforms/83xx/mpc834x_sys.h>
42
43#ifndef CONFIG_PCI 41#ifndef CONFIG_PCI
44unsigned long isa_io_base = 0; 42unsigned long isa_io_base = 0;
45unsigned long isa_mem_base = 0; 43unsigned long isa_mem_base = 0;
diff --git a/arch/powerpc/platforms/83xx/mpc834x_sys.c b/arch/powerpc/platforms/83xx/mpc834x_mds.c
index f30393f0b832..d2736da76c46 100644
--- a/arch/powerpc/platforms/83xx/mpc834x_sys.c
+++ b/arch/powerpc/platforms/83xx/mpc834x_mds.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * arch/powerpc/platforms/83xx/mpc834x_sys.c 2 * arch/powerpc/platforms/83xx/mpc834x_mds.c
3 * 3 *
4 * MPC834x SYS board specific routines 4 * MPC834x MDS board specific routines
5 * 5 *
6 * Maintainer: Kumar Gala <galak@kernel.crashing.org> 6 * Maintainer: Kumar Gala <galak@kernel.crashing.org>
7 * 7 *
@@ -43,17 +43,87 @@ unsigned long isa_io_base = 0;
43unsigned long isa_mem_base = 0; 43unsigned long isa_mem_base = 0;
44#endif 44#endif
45 45
46#define BCSR5_INT_USB 0x02
47/* Note: This is only for PB, not for PB+PIB
48 * On PB only port0 is connected using ULPI */
49static int mpc834x_usb_cfg(void)
50{
51 unsigned long sccr, sicrl;
52 void __iomem *immap;
53 void __iomem *bcsr_regs = NULL;
54 u8 bcsr5;
55 struct device_node *np = NULL;
56 int port0_is_dr = 0;
57
58 if ((np = of_find_compatible_node(np, "usb", "fsl-usb2-dr")) != NULL)
59 port0_is_dr = 1;
60 if ((np = of_find_compatible_node(np, "usb", "fsl-usb2-mph")) != NULL){
61 if (port0_is_dr) {
62 printk(KERN_WARNING
63 "There is only one USB port on PB board! \n");
64 return -1;
65 } else if (!port0_is_dr)
66 /* No usb port enabled */
67 return -1;
68 }
69
70 immap = ioremap(get_immrbase(), 0x1000);
71 if (!immap)
72 return -1;
73
74 /* Configure clock */
75 sccr = in_be32(immap + MPC83XX_SCCR_OFFS);
76 if (port0_is_dr)
77 sccr |= MPC83XX_SCCR_USB_DRCM_11; /* 1:3 */
78 else
79 sccr |= MPC83XX_SCCR_USB_MPHCM_11; /* 1:3 */
80 out_be32(immap + MPC83XX_SCCR_OFFS, sccr);
81
82 /* Configure Pin */
83 sicrl = in_be32(immap + MPC83XX_SICRL_OFFS);
84 /* set port0 only */
85 if (port0_is_dr)
86 sicrl |= MPC83XX_SICRL_USB0;
87 else
88 sicrl &= ~(MPC83XX_SICRL_USB0);
89 out_be32(immap + MPC83XX_SICRL_OFFS, sicrl);
90
91 iounmap(immap);
92
93 /* Map BCSR area */
94 np = of_find_node_by_name(NULL, "bcsr");
95 if (np != 0) {
96 struct resource res;
97
98 of_address_to_resource(np, 0, &res);
99 bcsr_regs = ioremap(res.start, res.end - res.start + 1);
100 of_node_put(np);
101 }
102 if (!bcsr_regs)
103 return -1;
104
105 /*
106 * if MDS board is plug into PIB board,
107 * force to use the PHY on MDS board
108 */
109 bcsr5 = in_8(bcsr_regs + 5);
110 if (!(bcsr5 & BCSR5_INT_USB))
111 out_8(bcsr_regs + 5, (bcsr5 | BCSR5_INT_USB));
112 iounmap(bcsr_regs);
113 return 0;
114}
115
46/* ************************************************************************ 116/* ************************************************************************
47 * 117 *
48 * Setup the architecture 118 * Setup the architecture
49 * 119 *
50 */ 120 */
51static void __init mpc834x_sys_setup_arch(void) 121static void __init mpc834x_mds_setup_arch(void)
52{ 122{
53 struct device_node *np; 123 struct device_node *np;
54 124
55 if (ppc_md.progress) 125 if (ppc_md.progress)
56 ppc_md.progress("mpc834x_sys_setup_arch()", 0); 126 ppc_md.progress("mpc834x_mds_setup_arch()", 0);
57 127
58 np = of_find_node_by_type(NULL, "cpu"); 128 np = of_find_node_by_type(NULL, "cpu");
59 if (np != 0) { 129 if (np != 0) {
@@ -65,6 +135,7 @@ static void __init mpc834x_sys_setup_arch(void)
65 loops_per_jiffy = 50000000 / HZ; 135 loops_per_jiffy = 50000000 / HZ;
66 of_node_put(np); 136 of_node_put(np);
67 } 137 }
138
68#ifdef CONFIG_PCI 139#ifdef CONFIG_PCI
69 for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;) 140 for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
70 add_bridge(np); 141 add_bridge(np);
@@ -72,6 +143,8 @@ static void __init mpc834x_sys_setup_arch(void)
72 ppc_md.pci_exclude_device = mpc83xx_exclude_device; 143 ppc_md.pci_exclude_device = mpc83xx_exclude_device;
73#endif 144#endif
74 145
146 mpc834x_usb_cfg();
147
75#ifdef CONFIG_ROOT_NFS 148#ifdef CONFIG_ROOT_NFS
76 ROOT_DEV = Root_NFS; 149 ROOT_DEV = Root_NFS;
77#else 150#else
@@ -79,7 +152,7 @@ static void __init mpc834x_sys_setup_arch(void)
79#endif 152#endif
80} 153}
81 154
82static void __init mpc834x_sys_init_IRQ(void) 155static void __init mpc834x_mds_init_IRQ(void)
83{ 156{
84 struct device_node *np; 157 struct device_node *np;
85 158
@@ -119,7 +192,7 @@ late_initcall(mpc834x_rtc_hookup);
119/* 192/*
120 * Called very early, MMU is off, device-tree isn't unflattened 193 * Called very early, MMU is off, device-tree isn't unflattened
121 */ 194 */
122static int __init mpc834x_sys_probe(void) 195static int __init mpc834x_mds_probe(void)
123{ 196{
124 /* We always match for now, eventually we should look at the flat 197 /* We always match for now, eventually we should look at the flat
125 dev tree to ensure this is the board we are suppose to run on 198 dev tree to ensure this is the board we are suppose to run on
@@ -127,11 +200,11 @@ static int __init mpc834x_sys_probe(void)
127 return 1; 200 return 1;
128} 201}
129 202
130define_machine(mpc834x_sys) { 203define_machine(mpc834x_mds) {
131 .name = "MPC834x SYS", 204 .name = "MPC834x MDS",
132 .probe = mpc834x_sys_probe, 205 .probe = mpc834x_mds_probe,
133 .setup_arch = mpc834x_sys_setup_arch, 206 .setup_arch = mpc834x_mds_setup_arch,
134 .init_IRQ = mpc834x_sys_init_IRQ, 207 .init_IRQ = mpc834x_mds_init_IRQ,
135 .get_irq = ipic_get_irq, 208 .get_irq = ipic_get_irq,
136 .restart = mpc83xx_restart, 209 .restart = mpc83xx_restart,
137 .time_init = mpc83xx_time_init, 210 .time_init = mpc83xx_time_init,
diff --git a/arch/powerpc/platforms/83xx/mpc834x_sys.h b/arch/powerpc/platforms/83xx/mpc834x_sys.h
deleted file mode 100644
index 7d5bbef084e7..000000000000
--- a/arch/powerpc/platforms/83xx/mpc834x_sys.h
+++ /dev/null
@@ -1,23 +0,0 @@
1/*
2 * arch/powerpc/platforms/83xx/mpc834x_sys.h
3 *
4 * MPC834X SYS common board definitions
5 *
6 * Maintainer: Kumar Gala <galak@kernel.crashing.org>
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
12 *
13 */
14
15#ifndef __MACH_MPC83XX_SYS_H__
16#define __MACH_MPC83XX_SYS_H__
17
18#define PIRQA MPC83xx_IRQ_EXT4
19#define PIRQB MPC83xx_IRQ_EXT5
20#define PIRQC MPC83xx_IRQ_EXT6
21#define PIRQD MPC83xx_IRQ_EXT7
22
23#endif /* __MACH_MPC83XX_SYS_H__ */
diff --git a/arch/powerpc/platforms/83xx/mpc83xx.h b/arch/powerpc/platforms/83xx/mpc83xx.h
index 01cae106912b..9cd03b59c8f4 100644
--- a/arch/powerpc/platforms/83xx/mpc83xx.h
+++ b/arch/powerpc/platforms/83xx/mpc83xx.h
@@ -4,6 +4,24 @@
4#include <linux/init.h> 4#include <linux/init.h>
5#include <linux/device.h> 5#include <linux/device.h>
6 6
7/* System Clock Control Register */
8#define MPC83XX_SCCR_OFFS 0xA08
9#define MPC83XX_SCCR_USB_MPHCM_11 0x00c00000
10#define MPC83XX_SCCR_USB_MPHCM_01 0x00400000
11#define MPC83XX_SCCR_USB_MPHCM_10 0x00800000
12#define MPC83XX_SCCR_USB_DRCM_11 0x00300000
13#define MPC83XX_SCCR_USB_DRCM_01 0x00100000
14#define MPC83XX_SCCR_USB_DRCM_10 0x00200000
15
16/* system i/o configuration register low */
17#define MPC83XX_SICRL_OFFS 0x114
18#define MPC83XX_SICRL_USB0 0x40000000
19#define MPC83XX_SICRL_USB1 0x20000000
20
21/* system i/o configuration register high */
22#define MPC83XX_SICRH_OFFS 0x118
23#define MPC83XX_SICRH_USB_UTMI 0x00020000
24
7/* 25/*
8 * Declaration for the various functions exported by the 26 * Declaration for the various functions exported by the
9 * mpc83xx_* files. Mostly for use by mpc83xx_setup 27 * mpc83xx_* files. Mostly for use by mpc83xx_setup
diff --git a/arch/powerpc/platforms/Makefile b/arch/powerpc/platforms/Makefile
index 65e612315b9b..452004283f17 100644
--- a/arch/powerpc/platforms/Makefile
+++ b/arch/powerpc/platforms/Makefile
@@ -5,9 +5,9 @@ ifeq ($(CONFIG_PPC64),y)
5obj-$(CONFIG_PPC_PMAC) += powermac/ 5obj-$(CONFIG_PPC_PMAC) += powermac/
6endif 6endif
7endif 7endif
8obj-$(CONFIG_PPC_MPC52xx) += 52xx/
9obj-$(CONFIG_PPC_CHRP) += chrp/ 8obj-$(CONFIG_PPC_CHRP) += chrp/
10obj-$(CONFIG_4xx) += 4xx/ 9obj-$(CONFIG_4xx) += 4xx/
10obj-$(CONFIG_PPC_MPC52xx) += 52xx/
11obj-$(CONFIG_PPC_8xx) += 8xx/ 11obj-$(CONFIG_PPC_8xx) += 8xx/
12obj-$(CONFIG_PPC_82xx) += 82xx/ 12obj-$(CONFIG_PPC_82xx) += 82xx/
13obj-$(CONFIG_PPC_83xx) += 83xx/ 13obj-$(CONFIG_PPC_83xx) += 83xx/
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c
index b43466ba8096..67d617b60a23 100644
--- a/arch/powerpc/platforms/cell/iommu.c
+++ b/arch/powerpc/platforms/cell/iommu.c
@@ -149,7 +149,8 @@ static int cbe_nr_iommus;
149static void invalidate_tce_cache(struct cbe_iommu *iommu, unsigned long *pte, 149static void invalidate_tce_cache(struct cbe_iommu *iommu, unsigned long *pte,
150 long n_ptes) 150 long n_ptes)
151{ 151{
152 unsigned long *reg, val; 152 unsigned long __iomem *reg;
153 unsigned long val;
153 long n; 154 long n;
154 155
155 reg = iommu->xlate_regs + IOC_IOPT_CacheInvd; 156 reg = iommu->xlate_regs + IOC_IOPT_CacheInvd;
@@ -592,7 +593,7 @@ static void __init cell_iommu_init_one(struct device_node *np, unsigned long off
592 /* Init base fields */ 593 /* Init base fields */
593 i = cbe_nr_iommus++; 594 i = cbe_nr_iommus++;
594 iommu = &iommus[i]; 595 iommu = &iommus[i];
595 iommu->stab = 0; 596 iommu->stab = NULL;
596 iommu->nid = nid; 597 iommu->nid = nid;
597 snprintf(iommu->name, sizeof(iommu->name), "iommu%d", i); 598 snprintf(iommu->name, sizeof(iommu->name), "iommu%d", i);
598 INIT_LIST_HEAD(&iommu->windows); 599 INIT_LIST_HEAD(&iommu->windows);
diff --git a/arch/powerpc/platforms/cell/spu_manage.c b/arch/powerpc/platforms/cell/spu_manage.c
index d8b39fe39cdd..e34599f53d28 100644
--- a/arch/powerpc/platforms/cell/spu_manage.c
+++ b/arch/powerpc/platforms/cell/spu_manage.c
@@ -59,63 +59,6 @@ static u64 __init find_spu_unit_number(struct device_node *spe)
59 return 0; 59 return 0;
60} 60}
61 61
62static int __init cell_spuprop_present(struct spu *spu, struct device_node *spe,
63 const char *prop)
64{
65 const struct address_prop {
66 unsigned long address;
67 unsigned int len;
68 } __attribute__((packed)) *p;
69 int proplen;
70
71 unsigned long start_pfn, nr_pages;
72 struct pglist_data *pgdata;
73 struct zone *zone;
74 int ret;
75
76 p = get_property(spe, prop, &proplen);
77 WARN_ON(proplen != sizeof (*p));
78
79 start_pfn = p->address >> PAGE_SHIFT;
80 nr_pages = ((unsigned long)p->len + PAGE_SIZE - 1) >> PAGE_SHIFT;
81
82 pgdata = NODE_DATA(spu->node);
83 zone = pgdata->node_zones;
84
85 ret = __add_pages(zone, start_pfn, nr_pages);
86
87 return ret;
88}
89
90static void __iomem * __init map_spe_prop(struct spu *spu,
91 struct device_node *n, const char *name)
92{
93 const struct address_prop {
94 unsigned long address;
95 unsigned int len;
96 } __attribute__((packed)) *prop;
97
98 const void *p;
99 int proplen;
100 void __iomem *ret = NULL;
101 int err = 0;
102
103 p = get_property(n, name, &proplen);
104 if (proplen != sizeof (struct address_prop))
105 return NULL;
106
107 prop = p;
108
109 err = cell_spuprop_present(spu, n, name);
110 if (err && (err != -EEXIST))
111 goto out;
112
113 ret = ioremap(prop->address, prop->len);
114
115 out:
116 return ret;
117}
118
119static void spu_unmap(struct spu *spu) 62static void spu_unmap(struct spu *spu)
120{ 63{
121 if (!firmware_has_feature(FW_FEATURE_LPAR)) 64 if (!firmware_has_feature(FW_FEATURE_LPAR))
@@ -157,6 +100,23 @@ static int __init spu_map_interrupts_old(struct spu *spu,
157 return spu->irqs[2] == NO_IRQ ? -EINVAL : 0; 100 return spu->irqs[2] == NO_IRQ ? -EINVAL : 0;
158} 101}
159 102
103static void __iomem * __init spu_map_prop_old(struct spu *spu,
104 struct device_node *n,
105 const char *name)
106{
107 const struct address_prop {
108 unsigned long address;
109 unsigned int len;
110 } __attribute__((packed)) *prop;
111 int proplen;
112
113 prop = get_property(n, name, &proplen);
114 if (prop == NULL || proplen != sizeof (struct address_prop))
115 return NULL;
116
117 return ioremap(prop->address, prop->len);
118}
119
160static int __init spu_map_device_old(struct spu *spu) 120static int __init spu_map_device_old(struct spu *spu)
161{ 121{
162 struct device_node *node = spu->devnode; 122 struct device_node *node = spu->devnode;
@@ -175,7 +135,7 @@ static int __init spu_map_device_old(struct spu *spu)
175 135
176 /* we use local store as ram, not io memory */ 136 /* we use local store as ram, not io memory */
177 spu->local_store = (void __force *) 137 spu->local_store = (void __force *)
178 map_spe_prop(spu, node, "local-store"); 138 spu_map_prop_old(spu, node, "local-store");
179 if (!spu->local_store) 139 if (!spu->local_store)
180 goto out; 140 goto out;
181 141
@@ -184,16 +144,16 @@ static int __init spu_map_device_old(struct spu *spu)
184 goto out_unmap; 144 goto out_unmap;
185 spu->problem_phys = *(unsigned long *)prop; 145 spu->problem_phys = *(unsigned long *)prop;
186 146
187 spu->problem = map_spe_prop(spu, node, "problem"); 147 spu->problem = spu_map_prop_old(spu, node, "problem");
188 if (!spu->problem) 148 if (!spu->problem)
189 goto out_unmap; 149 goto out_unmap;
190 150
191 spu->priv2 = map_spe_prop(spu, node, "priv2"); 151 spu->priv2 = spu_map_prop_old(spu, node, "priv2");
192 if (!spu->priv2) 152 if (!spu->priv2)
193 goto out_unmap; 153 goto out_unmap;
194 154
195 if (!firmware_has_feature(FW_FEATURE_LPAR)) { 155 if (!firmware_has_feature(FW_FEATURE_LPAR)) {
196 spu->priv1 = map_spe_prop(spu, node, "priv1"); 156 spu->priv1 = spu_map_prop_old(spu, node, "priv1");
197 if (!spu->priv1) 157 if (!spu->priv1)
198 goto out_unmap; 158 goto out_unmap;
199 } 159 }
@@ -245,34 +205,20 @@ static int spu_map_resource(struct spu *spu, int nr,
245 void __iomem** virt, unsigned long *phys) 205 void __iomem** virt, unsigned long *phys)
246{ 206{
247 struct device_node *np = spu->devnode; 207 struct device_node *np = spu->devnode;
248 unsigned long start_pfn, nr_pages;
249 struct pglist_data *pgdata;
250 struct zone *zone;
251 struct resource resource = { }; 208 struct resource resource = { };
252 unsigned long len; 209 unsigned long len;
253 int ret; 210 int ret;
254 211
255 ret = of_address_to_resource(np, nr, &resource); 212 ret = of_address_to_resource(np, nr, &resource);
256 if (ret) 213 if (ret)
257 goto out; 214 return ret;
258
259 if (phys) 215 if (phys)
260 *phys = resource.start; 216 *phys = resource.start;
261 len = resource.end - resource.start + 1; 217 len = resource.end - resource.start + 1;
262 *virt = ioremap(resource.start, len); 218 *virt = ioremap(resource.start, len);
263 if (!*virt) 219 if (!*virt)
264 ret = -EINVAL; 220 return -EINVAL;
265 221 return 0;
266 start_pfn = resource.start >> PAGE_SHIFT;
267 nr_pages = (len + PAGE_SIZE - 1) >> PAGE_SHIFT;
268
269 pgdata = NODE_DATA(spu->node);
270 zone = pgdata->node_zones;
271
272 ret = __add_pages(zone, start_pfn, nr_pages);
273
274out:
275 return ret;
276} 222}
277 223
278static int __init spu_map_device(struct spu *spu) 224static int __init spu_map_device(struct spu *spu)
diff --git a/arch/powerpc/platforms/cell/spufs/context.c b/arch/powerpc/platforms/cell/spufs/context.c
index 0870009f56db..28c718ca3b51 100644
--- a/arch/powerpc/platforms/cell/spufs/context.c
+++ b/arch/powerpc/platforms/cell/spufs/context.c
@@ -111,13 +111,17 @@ void spu_unmap_mappings(struct spu_context *ctx)
111 if (ctx->local_store) 111 if (ctx->local_store)
112 unmap_mapping_range(ctx->local_store, 0, LS_SIZE, 1); 112 unmap_mapping_range(ctx->local_store, 0, LS_SIZE, 1);
113 if (ctx->mfc) 113 if (ctx->mfc)
114 unmap_mapping_range(ctx->mfc, 0, 0x4000, 1); 114 unmap_mapping_range(ctx->mfc, 0, 0x1000, 1);
115 if (ctx->cntl) 115 if (ctx->cntl)
116 unmap_mapping_range(ctx->cntl, 0, 0x4000, 1); 116 unmap_mapping_range(ctx->cntl, 0, 0x1000, 1);
117 if (ctx->signal1) 117 if (ctx->signal1)
118 unmap_mapping_range(ctx->signal1, 0, 0x4000, 1); 118 unmap_mapping_range(ctx->signal1, 0, PAGE_SIZE, 1);
119 if (ctx->signal2) 119 if (ctx->signal2)
120 unmap_mapping_range(ctx->signal2, 0, 0x4000, 1); 120 unmap_mapping_range(ctx->signal2, 0, PAGE_SIZE, 1);
121 if (ctx->mss)
122 unmap_mapping_range(ctx->mss, 0, 0x1000, 1);
123 if (ctx->psmap)
124 unmap_mapping_range(ctx->psmap, 0, 0x20000, 1);
121} 125}
122 126
123int spu_acquire_exclusive(struct spu_context *ctx) 127int spu_acquire_exclusive(struct spu_context *ctx)
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c
index 347eff56fcbd..a528020baa18 100644
--- a/arch/powerpc/platforms/cell/spufs/file.c
+++ b/arch/powerpc/platforms/cell/spufs/file.c
@@ -45,8 +45,8 @@ spufs_mem_open(struct inode *inode, struct file *file)
45 struct spufs_inode_info *i = SPUFS_I(inode); 45 struct spufs_inode_info *i = SPUFS_I(inode);
46 struct spu_context *ctx = i->i_ctx; 46 struct spu_context *ctx = i->i_ctx;
47 file->private_data = ctx; 47 file->private_data = ctx;
48 file->f_mapping = inode->i_mapping;
49 ctx->local_store = inode->i_mapping; 48 ctx->local_store = inode->i_mapping;
49 smp_wmb();
50 return 0; 50 return 0;
51} 51}
52 52
@@ -95,14 +95,12 @@ spufs_mem_write(struct file *file, const char __user *buffer,
95 return ret; 95 return ret;
96} 96}
97 97
98static struct page * 98static unsigned long spufs_mem_mmap_nopfn(struct vm_area_struct *vma,
99spufs_mem_mmap_nopage(struct vm_area_struct *vma, 99 unsigned long address)
100 unsigned long address, int *type)
101{ 100{
102 struct page *page = NOPAGE_SIGBUS;
103
104 struct spu_context *ctx = vma->vm_file->private_data; 101 struct spu_context *ctx = vma->vm_file->private_data;
105 unsigned long offset = address - vma->vm_start; 102 unsigned long pfn, offset = address - vma->vm_start;
103
106 offset += vma->vm_pgoff << PAGE_SHIFT; 104 offset += vma->vm_pgoff << PAGE_SHIFT;
107 105
108 spu_acquire(ctx); 106 spu_acquire(ctx);
@@ -110,24 +108,22 @@ spufs_mem_mmap_nopage(struct vm_area_struct *vma,
110 if (ctx->state == SPU_STATE_SAVED) { 108 if (ctx->state == SPU_STATE_SAVED) {
111 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) 109 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot)
112 & ~_PAGE_NO_CACHE); 110 & ~_PAGE_NO_CACHE);
113 page = vmalloc_to_page(ctx->csa.lscsa->ls + offset); 111 pfn = vmalloc_to_pfn(ctx->csa.lscsa->ls + offset);
114 } else { 112 } else {
115 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) 113 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot)
116 | _PAGE_NO_CACHE); 114 | _PAGE_NO_CACHE);
117 page = pfn_to_page((ctx->spu->local_store_phys + offset) 115 pfn = (ctx->spu->local_store_phys + offset) >> PAGE_SHIFT;
118 >> PAGE_SHIFT);
119 } 116 }
120 spu_release(ctx); 117 vm_insert_pfn(vma, address, pfn);
121 118
122 if (type) 119 spu_release(ctx);
123 *type = VM_FAULT_MINOR;
124 120
125 page_cache_get(page); 121 return NOPFN_REFAULT;
126 return page;
127} 122}
128 123
124
129static struct vm_operations_struct spufs_mem_mmap_vmops = { 125static struct vm_operations_struct spufs_mem_mmap_vmops = {
130 .nopage = spufs_mem_mmap_nopage, 126 .nopfn = spufs_mem_mmap_nopfn,
131}; 127};
132 128
133static int 129static int
@@ -136,7 +132,7 @@ spufs_mem_mmap(struct file *file, struct vm_area_struct *vma)
136 if (!(vma->vm_flags & VM_SHARED)) 132 if (!(vma->vm_flags & VM_SHARED))
137 return -EINVAL; 133 return -EINVAL;
138 134
139 vma->vm_flags |= VM_IO; 135 vma->vm_flags |= VM_IO | VM_PFNMAP;
140 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) 136 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot)
141 | _PAGE_NO_CACHE); 137 | _PAGE_NO_CACHE);
142 138
@@ -144,7 +140,7 @@ spufs_mem_mmap(struct file *file, struct vm_area_struct *vma)
144 return 0; 140 return 0;
145} 141}
146 142
147static struct file_operations spufs_mem_fops = { 143static const struct file_operations spufs_mem_fops = {
148 .open = spufs_mem_open, 144 .open = spufs_mem_open,
149 .read = spufs_mem_read, 145 .read = spufs_mem_read,
150 .write = spufs_mem_write, 146 .write = spufs_mem_write,
@@ -152,49 +148,42 @@ static struct file_operations spufs_mem_fops = {
152 .mmap = spufs_mem_mmap, 148 .mmap = spufs_mem_mmap,
153}; 149};
154 150
155static struct page *spufs_ps_nopage(struct vm_area_struct *vma, 151static unsigned long spufs_ps_nopfn(struct vm_area_struct *vma,
156 unsigned long address, 152 unsigned long address,
157 int *type, unsigned long ps_offs, 153 unsigned long ps_offs,
158 unsigned long ps_size) 154 unsigned long ps_size)
159{ 155{
160 struct page *page = NOPAGE_SIGBUS;
161 int fault_type = VM_FAULT_SIGBUS;
162 struct spu_context *ctx = vma->vm_file->private_data; 156 struct spu_context *ctx = vma->vm_file->private_data;
163 unsigned long offset = address - vma->vm_start; 157 unsigned long area, offset = address - vma->vm_start;
164 unsigned long area;
165 int ret; 158 int ret;
166 159
167 offset += vma->vm_pgoff << PAGE_SHIFT; 160 offset += vma->vm_pgoff << PAGE_SHIFT;
168 if (offset >= ps_size) 161 if (offset >= ps_size)
169 goto out; 162 return NOPFN_SIGBUS;
170 163
164 /* error here usually means a signal.. we might want to test
165 * the error code more precisely though
166 */
171 ret = spu_acquire_runnable(ctx); 167 ret = spu_acquire_runnable(ctx);
172 if (ret) 168 if (ret)
173 goto out; 169 return NOPFN_REFAULT;
174 170
175 area = ctx->spu->problem_phys + ps_offs; 171 area = ctx->spu->problem_phys + ps_offs;
176 page = pfn_to_page((area + offset) >> PAGE_SHIFT); 172 vm_insert_pfn(vma, address, (area + offset) >> PAGE_SHIFT);
177 fault_type = VM_FAULT_MINOR;
178 page_cache_get(page);
179
180 spu_release(ctx); 173 spu_release(ctx);
181 174
182 out: 175 return NOPFN_REFAULT;
183 if (type)
184 *type = fault_type;
185
186 return page;
187} 176}
188 177
189#if SPUFS_MMAP_4K 178#if SPUFS_MMAP_4K
190static struct page *spufs_cntl_mmap_nopage(struct vm_area_struct *vma, 179static unsigned long spufs_cntl_mmap_nopfn(struct vm_area_struct *vma,
191 unsigned long address, int *type) 180 unsigned long address)
192{ 181{
193 return spufs_ps_nopage(vma, address, type, 0x4000, 0x1000); 182 return spufs_ps_nopfn(vma, address, 0x4000, 0x1000);
194} 183}
195 184
196static struct vm_operations_struct spufs_cntl_mmap_vmops = { 185static struct vm_operations_struct spufs_cntl_mmap_vmops = {
197 .nopage = spufs_cntl_mmap_nopage, 186 .nopfn = spufs_cntl_mmap_nopfn,
198}; 187};
199 188
200/* 189/*
@@ -205,7 +194,7 @@ static int spufs_cntl_mmap(struct file *file, struct vm_area_struct *vma)
205 if (!(vma->vm_flags & VM_SHARED)) 194 if (!(vma->vm_flags & VM_SHARED))
206 return -EINVAL; 195 return -EINVAL;
207 196
208 vma->vm_flags |= VM_IO; 197 vma->vm_flags |= VM_IO | VM_PFNMAP;
209 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) 198 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot)
210 | _PAGE_NO_CACHE | _PAGE_GUARDED); 199 | _PAGE_NO_CACHE | _PAGE_GUARDED);
211 200
@@ -243,13 +232,13 @@ static int spufs_cntl_open(struct inode *inode, struct file *file)
243 struct spu_context *ctx = i->i_ctx; 232 struct spu_context *ctx = i->i_ctx;
244 233
245 file->private_data = ctx; 234 file->private_data = ctx;
246 file->f_mapping = inode->i_mapping;
247 ctx->cntl = inode->i_mapping; 235 ctx->cntl = inode->i_mapping;
236 smp_wmb();
248 return simple_attr_open(inode, file, spufs_cntl_get, 237 return simple_attr_open(inode, file, spufs_cntl_get,
249 spufs_cntl_set, "0x%08lx"); 238 spufs_cntl_set, "0x%08lx");
250} 239}
251 240
252static struct file_operations spufs_cntl_fops = { 241static const struct file_operations spufs_cntl_fops = {
253 .open = spufs_cntl_open, 242 .open = spufs_cntl_open,
254 .release = simple_attr_close, 243 .release = simple_attr_close,
255 .read = simple_attr_read, 244 .read = simple_attr_read,
@@ -309,7 +298,7 @@ spufs_regs_write(struct file *file, const char __user *buffer,
309 return ret; 298 return ret;
310} 299}
311 300
312static struct file_operations spufs_regs_fops = { 301static const struct file_operations spufs_regs_fops = {
313 .open = spufs_regs_open, 302 .open = spufs_regs_open,
314 .read = spufs_regs_read, 303 .read = spufs_regs_read,
315 .write = spufs_regs_write, 304 .write = spufs_regs_write,
@@ -360,7 +349,7 @@ spufs_fpcr_write(struct file *file, const char __user * buffer,
360 return ret; 349 return ret;
361} 350}
362 351
363static struct file_operations spufs_fpcr_fops = { 352static const struct file_operations spufs_fpcr_fops = {
364 .open = spufs_regs_open, 353 .open = spufs_regs_open,
365 .read = spufs_fpcr_read, 354 .read = spufs_fpcr_read,
366 .write = spufs_fpcr_write, 355 .write = spufs_fpcr_write,
@@ -426,7 +415,7 @@ static ssize_t spufs_mbox_read(struct file *file, char __user *buf,
426 return count; 415 return count;
427} 416}
428 417
429static struct file_operations spufs_mbox_fops = { 418static const struct file_operations spufs_mbox_fops = {
430 .open = spufs_pipe_open, 419 .open = spufs_pipe_open,
431 .read = spufs_mbox_read, 420 .read = spufs_mbox_read,
432}; 421};
@@ -452,7 +441,7 @@ static ssize_t spufs_mbox_stat_read(struct file *file, char __user *buf,
452 return 4; 441 return 4;
453} 442}
454 443
455static struct file_operations spufs_mbox_stat_fops = { 444static const struct file_operations spufs_mbox_stat_fops = {
456 .open = spufs_pipe_open, 445 .open = spufs_pipe_open,
457 .read = spufs_mbox_stat_read, 446 .read = spufs_mbox_stat_read,
458}; 447};
@@ -559,7 +548,7 @@ static unsigned int spufs_ibox_poll(struct file *file, poll_table *wait)
559 return mask; 548 return mask;
560} 549}
561 550
562static struct file_operations spufs_ibox_fops = { 551static const struct file_operations spufs_ibox_fops = {
563 .open = spufs_pipe_open, 552 .open = spufs_pipe_open,
564 .read = spufs_ibox_read, 553 .read = spufs_ibox_read,
565 .poll = spufs_ibox_poll, 554 .poll = spufs_ibox_poll,
@@ -585,7 +574,7 @@ static ssize_t spufs_ibox_stat_read(struct file *file, char __user *buf,
585 return 4; 574 return 4;
586} 575}
587 576
588static struct file_operations spufs_ibox_stat_fops = { 577static const struct file_operations spufs_ibox_stat_fops = {
589 .open = spufs_pipe_open, 578 .open = spufs_pipe_open,
590 .read = spufs_ibox_stat_read, 579 .read = spufs_ibox_stat_read,
591}; 580};
@@ -692,7 +681,7 @@ static unsigned int spufs_wbox_poll(struct file *file, poll_table *wait)
692 return mask; 681 return mask;
693} 682}
694 683
695static struct file_operations spufs_wbox_fops = { 684static const struct file_operations spufs_wbox_fops = {
696 .open = spufs_pipe_open, 685 .open = spufs_pipe_open,
697 .write = spufs_wbox_write, 686 .write = spufs_wbox_write,
698 .poll = spufs_wbox_poll, 687 .poll = spufs_wbox_poll,
@@ -718,7 +707,7 @@ static ssize_t spufs_wbox_stat_read(struct file *file, char __user *buf,
718 return 4; 707 return 4;
719} 708}
720 709
721static struct file_operations spufs_wbox_stat_fops = { 710static const struct file_operations spufs_wbox_stat_fops = {
722 .open = spufs_pipe_open, 711 .open = spufs_pipe_open,
723 .read = spufs_wbox_stat_read, 712 .read = spufs_wbox_stat_read,
724}; 713};
@@ -728,8 +717,8 @@ static int spufs_signal1_open(struct inode *inode, struct file *file)
728 struct spufs_inode_info *i = SPUFS_I(inode); 717 struct spufs_inode_info *i = SPUFS_I(inode);
729 struct spu_context *ctx = i->i_ctx; 718 struct spu_context *ctx = i->i_ctx;
730 file->private_data = ctx; 719 file->private_data = ctx;
731 file->f_mapping = inode->i_mapping;
732 ctx->signal1 = inode->i_mapping; 720 ctx->signal1 = inode->i_mapping;
721 smp_wmb();
733 return nonseekable_open(inode, file); 722 return nonseekable_open(inode, file);
734} 723}
735 724
@@ -791,23 +780,23 @@ static ssize_t spufs_signal1_write(struct file *file, const char __user *buf,
791 return 4; 780 return 4;
792} 781}
793 782
794static struct page *spufs_signal1_mmap_nopage(struct vm_area_struct *vma, 783static unsigned long spufs_signal1_mmap_nopfn(struct vm_area_struct *vma,
795 unsigned long address, int *type) 784 unsigned long address)
796{ 785{
797#if PAGE_SIZE == 0x1000 786#if PAGE_SIZE == 0x1000
798 return spufs_ps_nopage(vma, address, type, 0x14000, 0x1000); 787 return spufs_ps_nopfn(vma, address, 0x14000, 0x1000);
799#elif PAGE_SIZE == 0x10000 788#elif PAGE_SIZE == 0x10000
800 /* For 64k pages, both signal1 and signal2 can be used to mmap the whole 789 /* For 64k pages, both signal1 and signal2 can be used to mmap the whole
801 * signal 1 and 2 area 790 * signal 1 and 2 area
802 */ 791 */
803 return spufs_ps_nopage(vma, address, type, 0x10000, 0x10000); 792 return spufs_ps_nopfn(vma, address, 0x10000, 0x10000);
804#else 793#else
805#error unsupported page size 794#error unsupported page size
806#endif 795#endif
807} 796}
808 797
809static struct vm_operations_struct spufs_signal1_mmap_vmops = { 798static struct vm_operations_struct spufs_signal1_mmap_vmops = {
810 .nopage = spufs_signal1_mmap_nopage, 799 .nopfn = spufs_signal1_mmap_nopfn,
811}; 800};
812 801
813static int spufs_signal1_mmap(struct file *file, struct vm_area_struct *vma) 802static int spufs_signal1_mmap(struct file *file, struct vm_area_struct *vma)
@@ -815,7 +804,7 @@ static int spufs_signal1_mmap(struct file *file, struct vm_area_struct *vma)
815 if (!(vma->vm_flags & VM_SHARED)) 804 if (!(vma->vm_flags & VM_SHARED))
816 return -EINVAL; 805 return -EINVAL;
817 806
818 vma->vm_flags |= VM_IO; 807 vma->vm_flags |= VM_IO | VM_PFNMAP;
819 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) 808 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot)
820 | _PAGE_NO_CACHE | _PAGE_GUARDED); 809 | _PAGE_NO_CACHE | _PAGE_GUARDED);
821 810
@@ -823,7 +812,7 @@ static int spufs_signal1_mmap(struct file *file, struct vm_area_struct *vma)
823 return 0; 812 return 0;
824} 813}
825 814
826static struct file_operations spufs_signal1_fops = { 815static const struct file_operations spufs_signal1_fops = {
827 .open = spufs_signal1_open, 816 .open = spufs_signal1_open,
828 .read = spufs_signal1_read, 817 .read = spufs_signal1_read,
829 .write = spufs_signal1_write, 818 .write = spufs_signal1_write,
@@ -835,8 +824,8 @@ static int spufs_signal2_open(struct inode *inode, struct file *file)
835 struct spufs_inode_info *i = SPUFS_I(inode); 824 struct spufs_inode_info *i = SPUFS_I(inode);
836 struct spu_context *ctx = i->i_ctx; 825 struct spu_context *ctx = i->i_ctx;
837 file->private_data = ctx; 826 file->private_data = ctx;
838 file->f_mapping = inode->i_mapping;
839 ctx->signal2 = inode->i_mapping; 827 ctx->signal2 = inode->i_mapping;
828 smp_wmb();
840 return nonseekable_open(inode, file); 829 return nonseekable_open(inode, file);
841} 830}
842 831
@@ -899,23 +888,23 @@ static ssize_t spufs_signal2_write(struct file *file, const char __user *buf,
899} 888}
900 889
901#if SPUFS_MMAP_4K 890#if SPUFS_MMAP_4K
902static struct page *spufs_signal2_mmap_nopage(struct vm_area_struct *vma, 891static unsigned long spufs_signal2_mmap_nopfn(struct vm_area_struct *vma,
903 unsigned long address, int *type) 892 unsigned long address)
904{ 893{
905#if PAGE_SIZE == 0x1000 894#if PAGE_SIZE == 0x1000
906 return spufs_ps_nopage(vma, address, type, 0x1c000, 0x1000); 895 return spufs_ps_nopfn(vma, address, 0x1c000, 0x1000);
907#elif PAGE_SIZE == 0x10000 896#elif PAGE_SIZE == 0x10000
908 /* For 64k pages, both signal1 and signal2 can be used to mmap the whole 897 /* For 64k pages, both signal1 and signal2 can be used to mmap the whole
909 * signal 1 and 2 area 898 * signal 1 and 2 area
910 */ 899 */
911 return spufs_ps_nopage(vma, address, type, 0x10000, 0x10000); 900 return spufs_ps_nopfn(vma, address, 0x10000, 0x10000);
912#else 901#else
913#error unsupported page size 902#error unsupported page size
914#endif 903#endif
915} 904}
916 905
917static struct vm_operations_struct spufs_signal2_mmap_vmops = { 906static struct vm_operations_struct spufs_signal2_mmap_vmops = {
918 .nopage = spufs_signal2_mmap_nopage, 907 .nopfn = spufs_signal2_mmap_nopfn,
919}; 908};
920 909
921static int spufs_signal2_mmap(struct file *file, struct vm_area_struct *vma) 910static int spufs_signal2_mmap(struct file *file, struct vm_area_struct *vma)
@@ -923,7 +912,7 @@ static int spufs_signal2_mmap(struct file *file, struct vm_area_struct *vma)
923 if (!(vma->vm_flags & VM_SHARED)) 912 if (!(vma->vm_flags & VM_SHARED))
924 return -EINVAL; 913 return -EINVAL;
925 914
926 vma->vm_flags |= VM_IO; 915 vma->vm_flags |= VM_IO | VM_PFNMAP;
927 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) 916 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot)
928 | _PAGE_NO_CACHE | _PAGE_GUARDED); 917 | _PAGE_NO_CACHE | _PAGE_GUARDED);
929 918
@@ -934,7 +923,7 @@ static int spufs_signal2_mmap(struct file *file, struct vm_area_struct *vma)
934#define spufs_signal2_mmap NULL 923#define spufs_signal2_mmap NULL
935#endif /* !SPUFS_MMAP_4K */ 924#endif /* !SPUFS_MMAP_4K */
936 925
937static struct file_operations spufs_signal2_fops = { 926static const struct file_operations spufs_signal2_fops = {
938 .open = spufs_signal2_open, 927 .open = spufs_signal2_open,
939 .read = spufs_signal2_read, 928 .read = spufs_signal2_read,
940 .write = spufs_signal2_write, 929 .write = spufs_signal2_write,
@@ -1000,14 +989,14 @@ DEFINE_SIMPLE_ATTRIBUTE(spufs_signal2_type, spufs_signal2_type_get,
1000 spufs_signal2_type_set, "%llu"); 989 spufs_signal2_type_set, "%llu");
1001 990
1002#if SPUFS_MMAP_4K 991#if SPUFS_MMAP_4K
1003static struct page *spufs_mss_mmap_nopage(struct vm_area_struct *vma, 992static unsigned long spufs_mss_mmap_nopfn(struct vm_area_struct *vma,
1004 unsigned long address, int *type) 993 unsigned long address)
1005{ 994{
1006 return spufs_ps_nopage(vma, address, type, 0x0000, 0x1000); 995 return spufs_ps_nopfn(vma, address, 0x0000, 0x1000);
1007} 996}
1008 997
1009static struct vm_operations_struct spufs_mss_mmap_vmops = { 998static struct vm_operations_struct spufs_mss_mmap_vmops = {
1010 .nopage = spufs_mss_mmap_nopage, 999 .nopfn = spufs_mss_mmap_nopfn,
1011}; 1000};
1012 1001
1013/* 1002/*
@@ -1018,7 +1007,7 @@ static int spufs_mss_mmap(struct file *file, struct vm_area_struct *vma)
1018 if (!(vma->vm_flags & VM_SHARED)) 1007 if (!(vma->vm_flags & VM_SHARED))
1019 return -EINVAL; 1008 return -EINVAL;
1020 1009
1021 vma->vm_flags |= VM_IO; 1010 vma->vm_flags |= VM_IO | VM_PFNMAP;
1022 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) 1011 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot)
1023 | _PAGE_NO_CACHE | _PAGE_GUARDED); 1012 | _PAGE_NO_CACHE | _PAGE_GUARDED);
1024 1013
@@ -1032,24 +1021,27 @@ static int spufs_mss_mmap(struct file *file, struct vm_area_struct *vma)
1032static int spufs_mss_open(struct inode *inode, struct file *file) 1021static int spufs_mss_open(struct inode *inode, struct file *file)
1033{ 1022{
1034 struct spufs_inode_info *i = SPUFS_I(inode); 1023 struct spufs_inode_info *i = SPUFS_I(inode);
1024 struct spu_context *ctx = i->i_ctx;
1035 1025
1036 file->private_data = i->i_ctx; 1026 file->private_data = i->i_ctx;
1027 ctx->mss = inode->i_mapping;
1028 smp_wmb();
1037 return nonseekable_open(inode, file); 1029 return nonseekable_open(inode, file);
1038} 1030}
1039 1031
1040static struct file_operations spufs_mss_fops = { 1032static const struct file_operations spufs_mss_fops = {
1041 .open = spufs_mss_open, 1033 .open = spufs_mss_open,
1042 .mmap = spufs_mss_mmap, 1034 .mmap = spufs_mss_mmap,
1043}; 1035};
1044 1036
1045static struct page *spufs_psmap_mmap_nopage(struct vm_area_struct *vma, 1037static unsigned long spufs_psmap_mmap_nopfn(struct vm_area_struct *vma,
1046 unsigned long address, int *type) 1038 unsigned long address)
1047{ 1039{
1048 return spufs_ps_nopage(vma, address, type, 0x0000, 0x20000); 1040 return spufs_ps_nopfn(vma, address, 0x0000, 0x20000);
1049} 1041}
1050 1042
1051static struct vm_operations_struct spufs_psmap_mmap_vmops = { 1043static struct vm_operations_struct spufs_psmap_mmap_vmops = {
1052 .nopage = spufs_psmap_mmap_nopage, 1044 .nopfn = spufs_psmap_mmap_nopfn,
1053}; 1045};
1054 1046
1055/* 1047/*
@@ -1060,7 +1052,7 @@ static int spufs_psmap_mmap(struct file *file, struct vm_area_struct *vma)
1060 if (!(vma->vm_flags & VM_SHARED)) 1052 if (!(vma->vm_flags & VM_SHARED))
1061 return -EINVAL; 1053 return -EINVAL;
1062 1054
1063 vma->vm_flags |= VM_IO; 1055 vma->vm_flags |= VM_IO | VM_PFNMAP;
1064 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) 1056 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot)
1065 | _PAGE_NO_CACHE | _PAGE_GUARDED); 1057 | _PAGE_NO_CACHE | _PAGE_GUARDED);
1066 1058
@@ -1071,26 +1063,29 @@ static int spufs_psmap_mmap(struct file *file, struct vm_area_struct *vma)
1071static int spufs_psmap_open(struct inode *inode, struct file *file) 1063static int spufs_psmap_open(struct inode *inode, struct file *file)
1072{ 1064{
1073 struct spufs_inode_info *i = SPUFS_I(inode); 1065 struct spufs_inode_info *i = SPUFS_I(inode);
1066 struct spu_context *ctx = i->i_ctx;
1074 1067
1075 file->private_data = i->i_ctx; 1068 file->private_data = i->i_ctx;
1069 ctx->psmap = inode->i_mapping;
1070 smp_wmb();
1076 return nonseekable_open(inode, file); 1071 return nonseekable_open(inode, file);
1077} 1072}
1078 1073
1079static struct file_operations spufs_psmap_fops = { 1074static const struct file_operations spufs_psmap_fops = {
1080 .open = spufs_psmap_open, 1075 .open = spufs_psmap_open,
1081 .mmap = spufs_psmap_mmap, 1076 .mmap = spufs_psmap_mmap,
1082}; 1077};
1083 1078
1084 1079
1085#if SPUFS_MMAP_4K 1080#if SPUFS_MMAP_4K
1086static struct page *spufs_mfc_mmap_nopage(struct vm_area_struct *vma, 1081static unsigned long spufs_mfc_mmap_nopfn(struct vm_area_struct *vma,
1087 unsigned long address, int *type) 1082 unsigned long address)
1088{ 1083{
1089 return spufs_ps_nopage(vma, address, type, 0x3000, 0x1000); 1084 return spufs_ps_nopfn(vma, address, 0x3000, 0x1000);
1090} 1085}
1091 1086
1092static struct vm_operations_struct spufs_mfc_mmap_vmops = { 1087static struct vm_operations_struct spufs_mfc_mmap_vmops = {
1093 .nopage = spufs_mfc_mmap_nopage, 1088 .nopfn = spufs_mfc_mmap_nopfn,
1094}; 1089};
1095 1090
1096/* 1091/*
@@ -1101,7 +1096,7 @@ static int spufs_mfc_mmap(struct file *file, struct vm_area_struct *vma)
1101 if (!(vma->vm_flags & VM_SHARED)) 1096 if (!(vma->vm_flags & VM_SHARED))
1102 return -EINVAL; 1097 return -EINVAL;
1103 1098
1104 vma->vm_flags |= VM_IO; 1099 vma->vm_flags |= VM_IO | VM_PFNMAP;
1105 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot) 1100 vma->vm_page_prot = __pgprot(pgprot_val(vma->vm_page_prot)
1106 | _PAGE_NO_CACHE | _PAGE_GUARDED); 1101 | _PAGE_NO_CACHE | _PAGE_GUARDED);
1107 1102
@@ -1125,6 +1120,8 @@ static int spufs_mfc_open(struct inode *inode, struct file *file)
1125 return -EBUSY; 1120 return -EBUSY;
1126 1121
1127 file->private_data = ctx; 1122 file->private_data = ctx;
1123 ctx->mfc = inode->i_mapping;
1124 smp_wmb();
1128 return nonseekable_open(inode, file); 1125 return nonseekable_open(inode, file);
1129} 1126}
1130 1127
@@ -1393,7 +1390,7 @@ static int spufs_mfc_fasync(int fd, struct file *file, int on)
1393 return fasync_helper(fd, file, on, &ctx->mfc_fasync); 1390 return fasync_helper(fd, file, on, &ctx->mfc_fasync);
1394} 1391}
1395 1392
1396static struct file_operations spufs_mfc_fops = { 1393static const struct file_operations spufs_mfc_fops = {
1397 .open = spufs_mfc_open, 1394 .open = spufs_mfc_open,
1398 .read = spufs_mfc_read, 1395 .read = spufs_mfc_read,
1399 .write = spufs_mfc_write, 1396 .write = spufs_mfc_write,
@@ -1650,7 +1647,7 @@ static ssize_t spufs_mbox_info_read(struct file *file, char __user *buf,
1650 return ret; 1647 return ret;
1651} 1648}
1652 1649
1653static struct file_operations spufs_mbox_info_fops = { 1650static const struct file_operations spufs_mbox_info_fops = {
1654 .open = spufs_info_open, 1651 .open = spufs_info_open,
1655 .read = spufs_mbox_info_read, 1652 .read = spufs_mbox_info_read,
1656 .llseek = generic_file_llseek, 1653 .llseek = generic_file_llseek,
@@ -1688,7 +1685,7 @@ static ssize_t spufs_ibox_info_read(struct file *file, char __user *buf,
1688 return ret; 1685 return ret;
1689} 1686}
1690 1687
1691static struct file_operations spufs_ibox_info_fops = { 1688static const struct file_operations spufs_ibox_info_fops = {
1692 .open = spufs_info_open, 1689 .open = spufs_info_open,
1693 .read = spufs_ibox_info_read, 1690 .read = spufs_ibox_info_read,
1694 .llseek = generic_file_llseek, 1691 .llseek = generic_file_llseek,
@@ -1729,7 +1726,7 @@ static ssize_t spufs_wbox_info_read(struct file *file, char __user *buf,
1729 return ret; 1726 return ret;
1730} 1727}
1731 1728
1732static struct file_operations spufs_wbox_info_fops = { 1729static const struct file_operations spufs_wbox_info_fops = {
1733 .open = spufs_info_open, 1730 .open = spufs_info_open,
1734 .read = spufs_wbox_info_read, 1731 .read = spufs_wbox_info_read,
1735 .llseek = generic_file_llseek, 1732 .llseek = generic_file_llseek,
@@ -1779,7 +1776,7 @@ static ssize_t spufs_dma_info_read(struct file *file, char __user *buf,
1779 return ret; 1776 return ret;
1780} 1777}
1781 1778
1782static struct file_operations spufs_dma_info_fops = { 1779static const struct file_operations spufs_dma_info_fops = {
1783 .open = spufs_info_open, 1780 .open = spufs_info_open,
1784 .read = spufs_dma_info_read, 1781 .read = spufs_dma_info_read,
1785}; 1782};
@@ -1830,7 +1827,7 @@ static ssize_t spufs_proxydma_info_read(struct file *file, char __user *buf,
1830 return ret; 1827 return ret;
1831} 1828}
1832 1829
1833static struct file_operations spufs_proxydma_info_fops = { 1830static const struct file_operations spufs_proxydma_info_fops = {
1834 .open = spufs_info_open, 1831 .open = spufs_info_open,
1835 .read = spufs_proxydma_info_read, 1832 .read = spufs_proxydma_info_read,
1836}; 1833};
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
index 738b9244382f..8079983ef94f 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -220,11 +220,11 @@ static int spufs_dir_close(struct inode *inode, struct file *file)
220 return dcache_dir_close(inode, file); 220 return dcache_dir_close(inode, file);
221} 221}
222 222
223struct inode_operations spufs_dir_inode_operations = { 223const struct inode_operations spufs_dir_inode_operations = {
224 .lookup = simple_lookup, 224 .lookup = simple_lookup,
225}; 225};
226 226
227struct file_operations spufs_context_fops = { 227const struct file_operations spufs_context_fops = {
228 .open = dcache_dir_open, 228 .open = dcache_dir_open,
229 .release = spufs_dir_close, 229 .release = spufs_dir_close,
230 .llseek = dcache_dir_lseek, 230 .llseek = dcache_dir_lseek,
@@ -372,7 +372,7 @@ static int spufs_gang_close(struct inode *inode, struct file *file)
372 return dcache_dir_close(inode, file); 372 return dcache_dir_close(inode, file);
373} 373}
374 374
375struct file_operations spufs_gang_fops = { 375const struct file_operations spufs_gang_fops = {
376 .open = dcache_dir_open, 376 .open = dcache_dir_open,
377 .release = spufs_gang_close, 377 .release = spufs_gang_close,
378 .llseek = dcache_dir_lseek, 378 .llseek = dcache_dir_lseek,
diff --git a/arch/powerpc/platforms/cell/spufs/spufs.h b/arch/powerpc/platforms/cell/spufs/spufs.h
index 70fb13395c04..0941c56df9b5 100644
--- a/arch/powerpc/platforms/cell/spufs/spufs.h
+++ b/arch/powerpc/platforms/cell/spufs/spufs.h
@@ -51,6 +51,8 @@ struct spu_context {
51 struct address_space *cntl; /* 'control' area mappings. */ 51 struct address_space *cntl; /* 'control' area mappings. */
52 struct address_space *signal1; /* 'signal1' area mappings. */ 52 struct address_space *signal1; /* 'signal1' area mappings. */
53 struct address_space *signal2; /* 'signal2' area mappings. */ 53 struct address_space *signal2; /* 'signal2' area mappings. */
54 struct address_space *mss; /* 'mss' area mappings. */
55 struct address_space *psmap; /* 'psmap' area mappings. */
54 u64 object_id; /* user space pointer for oprofile */ 56 u64 object_id; /* user space pointer for oprofile */
55 57
56 enum { SPU_STATE_RUNNABLE, SPU_STATE_SAVED } state; 58 enum { SPU_STATE_RUNNABLE, SPU_STATE_SAVED } state;
@@ -149,7 +151,7 @@ long spufs_run_spu(struct file *file,
149 struct spu_context *ctx, u32 *npc, u32 *status); 151 struct spu_context *ctx, u32 *npc, u32 *status);
150long spufs_create(struct nameidata *nd, 152long spufs_create(struct nameidata *nd,
151 unsigned int flags, mode_t mode); 153 unsigned int flags, mode_t mode);
152extern struct file_operations spufs_context_fops; 154extern const struct file_operations spufs_context_fops;
153 155
154/* gang management */ 156/* gang management */
155struct spu_gang *alloc_spu_gang(void); 157struct spu_gang *alloc_spu_gang(void);
diff --git a/arch/powerpc/platforms/celleb/htab.c b/arch/powerpc/platforms/celleb/htab.c
index ffa7c2c2030d..279d7339e170 100644
--- a/arch/powerpc/platforms/celleb/htab.c
+++ b/arch/powerpc/platforms/celleb/htab.c
@@ -95,7 +95,6 @@ static long beat_lpar_hpte_insert(unsigned long hpte_group,
95 unsigned long lpar_rc; 95 unsigned long lpar_rc;
96 unsigned long slot; 96 unsigned long slot;
97 unsigned long hpte_v, hpte_r; 97 unsigned long hpte_v, hpte_r;
98 unsigned long flags;
99 98
100 /* same as iseries */ 99 /* same as iseries */
101 if (vflags & HPTE_V_SECONDARY) 100 if (vflags & HPTE_V_SECONDARY)
@@ -115,17 +114,17 @@ static long beat_lpar_hpte_insert(unsigned long hpte_group,
115 if (rflags & (_PAGE_GUARDED|_PAGE_NO_CACHE)) 114 if (rflags & (_PAGE_GUARDED|_PAGE_NO_CACHE))
116 hpte_r &= ~_PAGE_COHERENT; 115 hpte_r &= ~_PAGE_COHERENT;
117 116
118 spin_lock_irqsave(&beat_htab_lock, flags); 117 spin_lock(&beat_htab_lock);
119 if ((lpar_rc = beat_read_mask(hpte_group)) == 0) { 118 if ((lpar_rc = beat_read_mask(hpte_group)) == 0) {
120 if (!(vflags & HPTE_V_BOLTED)) 119 if (!(vflags & HPTE_V_BOLTED))
121 DBG_LOW(" full\n"); 120 DBG_LOW(" full\n");
122 spin_unlock_irqrestore(&beat_htab_lock, flags); 121 spin_unlock(&beat_htab_lock);
123 return -1; 122 return -1;
124 } 123 }
125 124
126 lpar_rc = beat_insert_htab_entry(0, hpte_group, lpar_rc << 48, 125 lpar_rc = beat_insert_htab_entry(0, hpte_group, lpar_rc << 48,
127 hpte_v, hpte_r, &slot); 126 hpte_v, hpte_r, &slot);
128 spin_unlock_irqrestore(&beat_htab_lock, flags); 127 spin_unlock(&beat_htab_lock);
129 128
130 /* 129 /*
131 * Since we try and ioremap PHBs we don't own, the pte insert 130 * Since we try and ioremap PHBs we don't own, the pte insert
@@ -189,7 +188,6 @@ static long beat_lpar_hpte_updatepp(unsigned long slot,
189{ 188{
190 unsigned long lpar_rc; 189 unsigned long lpar_rc;
191 unsigned long dummy0, dummy1, want_v; 190 unsigned long dummy0, dummy1, want_v;
192 unsigned long flags;
193 191
194 want_v = hpte_encode_v(va, psize); 192 want_v = hpte_encode_v(va, psize);
195 193
@@ -197,17 +195,17 @@ static long beat_lpar_hpte_updatepp(unsigned long slot,
197 "avpnv=%016lx, slot=%016lx, psize: %d, newpp %016lx ... ", 195 "avpnv=%016lx, slot=%016lx, psize: %d, newpp %016lx ... ",
198 want_v & HPTE_V_AVPN, slot, psize, newpp); 196 want_v & HPTE_V_AVPN, slot, psize, newpp);
199 197
200 spin_lock_irqsave(&beat_htab_lock, flags); 198 spin_lock(&beat_htab_lock);
201 dummy0 = beat_lpar_hpte_getword0(slot); 199 dummy0 = beat_lpar_hpte_getword0(slot);
202 if ((dummy0 & ~0x7FUL) != (want_v & ~0x7FUL)) { 200 if ((dummy0 & ~0x7FUL) != (want_v & ~0x7FUL)) {
203 DBG_LOW("not found !\n"); 201 DBG_LOW("not found !\n");
204 spin_unlock_irqrestore(&beat_htab_lock, flags); 202 spin_unlock(&beat_htab_lock);
205 return -1; 203 return -1;
206 } 204 }
207 205
208 lpar_rc = beat_write_htab_entry(0, slot, 0, newpp, 0, 7, &dummy0, 206 lpar_rc = beat_write_htab_entry(0, slot, 0, newpp, 0, 7, &dummy0,
209 &dummy1); 207 &dummy1);
210 spin_unlock_irqrestore(&beat_htab_lock, flags); 208 spin_unlock(&beat_htab_lock);
211 if (lpar_rc != 0 || dummy0 == 0) { 209 if (lpar_rc != 0 || dummy0 == 0) {
212 DBG_LOW("not found !\n"); 210 DBG_LOW("not found !\n");
213 return -1; 211 return -1;
@@ -256,18 +254,17 @@ static void beat_lpar_hpte_updateboltedpp(unsigned long newpp,
256 int psize) 254 int psize)
257{ 255{
258 unsigned long lpar_rc, slot, vsid, va, dummy0, dummy1; 256 unsigned long lpar_rc, slot, vsid, va, dummy0, dummy1;
259 unsigned long flags;
260 257
261 vsid = get_kernel_vsid(ea); 258 vsid = get_kernel_vsid(ea);
262 va = (vsid << 28) | (ea & 0x0fffffff); 259 va = (vsid << 28) | (ea & 0x0fffffff);
263 260
264 spin_lock_irqsave(&beat_htab_lock, flags); 261 spin_lock(&beat_htab_lock);
265 slot = beat_lpar_hpte_find(va, psize); 262 slot = beat_lpar_hpte_find(va, psize);
266 BUG_ON(slot == -1); 263 BUG_ON(slot == -1);
267 264
268 lpar_rc = beat_write_htab_entry(0, slot, 0, newpp, 0, 7, 265 lpar_rc = beat_write_htab_entry(0, slot, 0, newpp, 0, 7,
269 &dummy0, &dummy1); 266 &dummy0, &dummy1);
270 spin_unlock_irqrestore(&beat_htab_lock, flags); 267 spin_unlock(&beat_htab_lock);
271 268
272 BUG_ON(lpar_rc != 0); 269 BUG_ON(lpar_rc != 0);
273} 270}
diff --git a/arch/powerpc/platforms/celleb/pci.c b/arch/powerpc/platforms/celleb/pci.c
index 867f83a7d0c9..98de836dfed3 100644
--- a/arch/powerpc/platforms/celleb/pci.c
+++ b/arch/powerpc/platforms/celleb/pci.c
@@ -65,13 +65,13 @@ static inline u8 celleb_fake_config_readb(void *addr)
65 65
66static inline u16 celleb_fake_config_readw(void *addr) 66static inline u16 celleb_fake_config_readw(void *addr)
67{ 67{
68 u16 *p = addr; 68 __le16 *p = addr;
69 return le16_to_cpu(*p); 69 return le16_to_cpu(*p);
70} 70}
71 71
72static inline u32 celleb_fake_config_readl(void *addr) 72static inline u32 celleb_fake_config_readl(void *addr)
73{ 73{
74 u32 *p = addr; 74 __le32 *p = addr;
75 return le32_to_cpu(*p); 75 return le32_to_cpu(*p);
76} 76}
77 77
@@ -83,16 +83,16 @@ static inline void celleb_fake_config_writeb(u32 val, void *addr)
83 83
84static inline void celleb_fake_config_writew(u32 val, void *addr) 84static inline void celleb_fake_config_writew(u32 val, void *addr)
85{ 85{
86 u16 val16; 86 __le16 val16;
87 u16 *p = addr; 87 __le16 *p = addr;
88 val16 = cpu_to_le16(val); 88 val16 = cpu_to_le16(val);
89 *p = val16; 89 *p = val16;
90} 90}
91 91
92static inline void celleb_fake_config_writel(u32 val, void *addr) 92static inline void celleb_fake_config_writel(u32 val, void *addr)
93{ 93{
94 u32 val32; 94 __le32 val32;
95 u32 *p = addr; 95 __le32 *p = addr;
96 val32 = cpu_to_le32(val); 96 val32 = cpu_to_le32(val);
97 *p = val32; 97 *p = val32;
98} 98}
diff --git a/arch/powerpc/platforms/celleb/scc_epci.c b/arch/powerpc/platforms/celleb/scc_epci.c
index 0edbc0c4f338..c11b39c3776a 100644
--- a/arch/powerpc/platforms/celleb/scc_epci.c
+++ b/arch/powerpc/platforms/celleb/scc_epci.c
@@ -47,7 +47,7 @@
47#if 0 /* test code for epci dummy read */ 47#if 0 /* test code for epci dummy read */
48static void celleb_epci_dummy_read(struct pci_dev *dev) 48static void celleb_epci_dummy_read(struct pci_dev *dev)
49{ 49{
50 void *epci_base; 50 void __iomem *epci_base;
51 struct device_node *node; 51 struct device_node *node;
52 struct pci_controller *hose; 52 struct pci_controller *hose;
53 u32 val; 53 u32 val;
@@ -58,7 +58,7 @@ static void celleb_epci_dummy_read(struct pci_dev *dev)
58 if (!hose) 58 if (!hose)
59 return; 59 return;
60 60
61 epci_base = (void *)hose->cfg_addr; 61 epci_base = hose->cfg_addr;
62 62
63 val = in_be32(epci_base + SCC_EPCI_WATRP); 63 val = in_be32(epci_base + SCC_EPCI_WATRP);
64 iosync(); 64 iosync();
@@ -71,18 +71,18 @@ static inline void clear_and_disable_master_abort_interrupt(
71 struct pci_controller *hose) 71 struct pci_controller *hose)
72{ 72{
73 void __iomem *addr; 73 void __iomem *addr;
74 addr = (void *)hose->cfg_addr + PCI_COMMAND; 74 addr = hose->cfg_addr + PCI_COMMAND;
75 out_be32(addr, in_be32(addr) | (PCI_STATUS_REC_MASTER_ABORT << 16)); 75 out_be32(addr, in_be32(addr) | (PCI_STATUS_REC_MASTER_ABORT << 16));
76} 76}
77 77
78static int celleb_epci_check_abort(struct pci_controller *hose, 78static int celleb_epci_check_abort(struct pci_controller *hose,
79 unsigned long addr) 79 void __iomem *addr)
80{ 80{
81 void __iomem *reg, *epci_base; 81 void __iomem *reg, *epci_base;
82 u32 val; 82 u32 val;
83 83
84 iob(); 84 iob();
85 epci_base = (void *)hose->cfg_addr; 85 epci_base = hose->cfg_addr;
86 86
87 reg = epci_base + PCI_COMMAND; 87 reg = epci_base + PCI_COMMAND;
88 val = in_be32(reg); 88 val = in_be32(reg);
@@ -108,23 +108,23 @@ static int celleb_epci_check_abort(struct pci_controller *hose,
108 return PCIBIOS_SUCCESSFUL; 108 return PCIBIOS_SUCCESSFUL;
109} 109}
110 110
111static unsigned long celleb_epci_make_config_addr(struct pci_controller *hose, 111static void __iomem *celleb_epci_make_config_addr(struct pci_controller *hose,
112 unsigned int devfn, int where) 112 unsigned int devfn, int where)
113{ 113{
114 unsigned long addr; 114 void __iomem *addr;
115 struct pci_bus *bus = hose->bus; 115 struct pci_bus *bus = hose->bus;
116 116
117 if (bus->self) 117 if (bus->self)
118 addr = (unsigned long)hose->cfg_data + 118 addr = hose->cfg_data +
119 (((bus->number & 0xff) << 16) 119 (((bus->number & 0xff) << 16)
120 | ((devfn & 0xff) << 8) 120 | ((devfn & 0xff) << 8)
121 | (where & 0xff) 121 | (where & 0xff)
122 | 0x01000000); 122 | 0x01000000);
123 else 123 else
124 addr = (unsigned long)hose->cfg_data + 124 addr = hose->cfg_data +
125 (((devfn & 0xff) << 8) | (where & 0xff)); 125 (((devfn & 0xff) << 8) | (where & 0xff));
126 126
127 pr_debug("EPCI: config_addr = 0x%016lx\n", addr); 127 pr_debug("EPCI: config_addr = 0x%p\n", addr);
128 128
129 return addr; 129 return addr;
130} 130}
@@ -132,7 +132,7 @@ static unsigned long celleb_epci_make_config_addr(struct pci_controller *hose,
132static int celleb_epci_read_config(struct pci_bus *bus, 132static int celleb_epci_read_config(struct pci_bus *bus,
133 unsigned int devfn, int where, int size, u32 * val) 133 unsigned int devfn, int where, int size, u32 * val)
134{ 134{
135 unsigned long addr; 135 void __iomem *addr;
136 struct device_node *node; 136 struct device_node *node;
137 struct pci_controller *hose; 137 struct pci_controller *hose;
138 138
@@ -148,17 +148,17 @@ static int celleb_epci_read_config(struct pci_bus *bus,
148 if (bus->number == hose->first_busno && devfn == 0) { 148 if (bus->number == hose->first_busno && devfn == 0) {
149 /* EPCI controller self */ 149 /* EPCI controller self */
150 150
151 addr = (unsigned long)hose->cfg_addr + where; 151 addr = hose->cfg_addr + where;
152 152
153 switch (size) { 153 switch (size) {
154 case 1: 154 case 1:
155 *val = in_8((u8 *)addr); 155 *val = in_8(addr);
156 break; 156 break;
157 case 2: 157 case 2:
158 *val = in_be16((u16 *)addr); 158 *val = in_be16(addr);
159 break; 159 break;
160 case 4: 160 case 4:
161 *val = in_be32((u32 *)addr); 161 *val = in_be32(addr);
162 break; 162 break;
163 default: 163 default:
164 return PCIBIOS_DEVICE_NOT_FOUND; 164 return PCIBIOS_DEVICE_NOT_FOUND;
@@ -171,13 +171,13 @@ static int celleb_epci_read_config(struct pci_bus *bus,
171 171
172 switch (size) { 172 switch (size) {
173 case 1: 173 case 1:
174 *val = in_8((u8 *)addr); 174 *val = in_8(addr);
175 break; 175 break;
176 case 2: 176 case 2:
177 *val = in_le16((u16 *)addr); 177 *val = in_le16(addr);
178 break; 178 break;
179 case 4: 179 case 4:
180 *val = in_le32((u32 *)addr); 180 *val = in_le32(addr);
181 break; 181 break;
182 default: 182 default:
183 return PCIBIOS_DEVICE_NOT_FOUND; 183 return PCIBIOS_DEVICE_NOT_FOUND;
@@ -188,13 +188,13 @@ static int celleb_epci_read_config(struct pci_bus *bus,
188 "addr=0x%lx, devfn=0x%x, where=0x%x, size=0x%x, val=0x%x\n", 188 "addr=0x%lx, devfn=0x%x, where=0x%x, size=0x%x, val=0x%x\n",
189 addr, devfn, where, size, *val); 189 addr, devfn, where, size, *val);
190 190
191 return celleb_epci_check_abort(hose, 0); 191 return celleb_epci_check_abort(hose, NULL);
192} 192}
193 193
194static int celleb_epci_write_config(struct pci_bus *bus, 194static int celleb_epci_write_config(struct pci_bus *bus,
195 unsigned int devfn, int where, int size, u32 val) 195 unsigned int devfn, int where, int size, u32 val)
196{ 196{
197 unsigned long addr; 197 void __iomem *addr;
198 struct device_node *node; 198 struct device_node *node;
199 struct pci_controller *hose; 199 struct pci_controller *hose;
200 200
@@ -210,17 +210,17 @@ static int celleb_epci_write_config(struct pci_bus *bus,
210 if (bus->number == hose->first_busno && devfn == 0) { 210 if (bus->number == hose->first_busno && devfn == 0) {
211 /* EPCI controller self */ 211 /* EPCI controller self */
212 212
213 addr = (unsigned long)hose->cfg_addr + where; 213 addr = hose->cfg_addr + where;
214 214
215 switch (size) { 215 switch (size) {
216 case 1: 216 case 1:
217 out_8((u8 *)addr, val); 217 out_8(addr, val);
218 break; 218 break;
219 case 2: 219 case 2:
220 out_be16((u16 *)addr, val); 220 out_be16(addr, val);
221 break; 221 break;
222 case 4: 222 case 4:
223 out_be32((u32 *)addr, val); 223 out_be32(addr, val);
224 break; 224 break;
225 default: 225 default:
226 return PCIBIOS_DEVICE_NOT_FOUND; 226 return PCIBIOS_DEVICE_NOT_FOUND;
@@ -233,13 +233,13 @@ static int celleb_epci_write_config(struct pci_bus *bus,
233 233
234 switch (size) { 234 switch (size) {
235 case 1: 235 case 1:
236 out_8((u8 *)addr, val); 236 out_8(addr, val);
237 break; 237 break;
238 case 2: 238 case 2:
239 out_le16((u16 *)addr, val); 239 out_le16(addr, val);
240 break; 240 break;
241 case 4: 241 case 4:
242 out_le32((u32 *)addr, val); 242 out_le32(addr, val);
243 break; 243 break;
244 default: 244 default:
245 return PCIBIOS_DEVICE_NOT_FOUND; 245 return PCIBIOS_DEVICE_NOT_FOUND;
@@ -261,7 +261,7 @@ static int __devinit celleb_epci_init(struct pci_controller *hose)
261 void __iomem *reg, *epci_base; 261 void __iomem *reg, *epci_base;
262 int hwres = 0; 262 int hwres = 0;
263 263
264 epci_base = (void *)hose->cfg_addr; 264 epci_base = hose->cfg_addr;
265 265
266 /* PCI core reset(Internal bus and PCI clock) */ 266 /* PCI core reset(Internal bus and PCI clock) */
267 reg = epci_base + SCC_EPCI_CKCTRL; 267 reg = epci_base + SCC_EPCI_CKCTRL;
diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c
index e1f51d455984..117c9a0055bd 100644
--- a/arch/powerpc/platforms/chrp/setup.c
+++ b/arch/powerpc/platforms/chrp/setup.c
@@ -75,7 +75,7 @@ extern irqreturn_t xmon_irq(int, void *);
75extern unsigned long loops_per_jiffy; 75extern unsigned long loops_per_jiffy;
76 76
77/* To be replaced by RTAS when available */ 77/* To be replaced by RTAS when available */
78static unsigned int *briq_SPOR; 78static unsigned int __iomem *briq_SPOR;
79 79
80#ifdef CONFIG_SMP 80#ifdef CONFIG_SMP
81extern struct smp_ops_t chrp_smp_ops; 81extern struct smp_ops_t chrp_smp_ops;
@@ -267,7 +267,7 @@ void __init chrp_setup_arch(void)
267 } else if (machine && strncmp(machine, "TotalImpact,BRIQ-1", 18) == 0) { 267 } else if (machine && strncmp(machine, "TotalImpact,BRIQ-1", 18) == 0) {
268 _chrp_type = _CHRP_briq; 268 _chrp_type = _CHRP_briq;
269 /* Map the SPOR register on briq and change the restart hook */ 269 /* Map the SPOR register on briq and change the restart hook */
270 briq_SPOR = (unsigned int *)ioremap(0xff0000e8, 4); 270 briq_SPOR = ioremap(0xff0000e8, 4);
271 ppc_md.restart = briq_restart; 271 ppc_md.restart = briq_restart;
272 } else { 272 } else {
273 /* Let's assume it is an IBM chrp if all else fails */ 273 /* Let's assume it is an IBM chrp if all else fails */
diff --git a/arch/powerpc/platforms/embedded6xx/linkstation.c b/arch/powerpc/platforms/embedded6xx/linkstation.c
index 61599d919ea8..3f6c4114f908 100644
--- a/arch/powerpc/platforms/embedded6xx/linkstation.c
+++ b/arch/powerpc/platforms/embedded6xx/linkstation.c
@@ -13,7 +13,6 @@
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/pci.h> 14#include <linux/pci.h>
15#include <linux/initrd.h> 15#include <linux/initrd.h>
16#include <linux/root_dev.h>
17#include <linux/mtd/physmap.h> 16#include <linux/mtd/physmap.h>
18 17
19#include <asm/time.h> 18#include <asm/time.h>
@@ -91,17 +90,6 @@ static void __init linkstation_setup_arch(void)
91 ARRAY_SIZE(linkstation_physmap_partitions)); 90 ARRAY_SIZE(linkstation_physmap_partitions));
92#endif 91#endif
93 92
94#ifdef CONFIG_BLK_DEV_INITRD
95 if (initrd_start)
96 ROOT_DEV = Root_RAM0;
97 else
98#endif
99#ifdef CONFIG_ROOT_NFS
100 ROOT_DEV = Root_NFS;
101#else
102 ROOT_DEV = Root_HDA1;
103#endif
104
105 /* Lookup PCI host bridges */ 93 /* Lookup PCI host bridges */
106 for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;) 94 for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
107 add_bridge(np); 95 add_bridge(np);
diff --git a/arch/powerpc/platforms/iseries/lpevents.c b/arch/powerpc/platforms/iseries/lpevents.c
index c1f4502a3c6a..91df52a1899a 100644
--- a/arch/powerpc/platforms/iseries/lpevents.c
+++ b/arch/powerpc/platforms/iseries/lpevents.c
@@ -308,7 +308,7 @@ static int proc_lpevents_open(struct inode *inode, struct file *file)
308 return single_open(file, proc_lpevents_show, NULL); 308 return single_open(file, proc_lpevents_show, NULL);
309} 309}
310 310
311static struct file_operations proc_lpevents_operations = { 311static const struct file_operations proc_lpevents_operations = {
312 .open = proc_lpevents_open, 312 .open = proc_lpevents_open,
313 .read = seq_read, 313 .read = seq_read,
314 .llseek = seq_lseek, 314 .llseek = seq_lseek,
diff --git a/arch/powerpc/platforms/iseries/mf.c b/arch/powerpc/platforms/iseries/mf.c
index 1ad0e4aaad1a..b1187d95e3b2 100644
--- a/arch/powerpc/platforms/iseries/mf.c
+++ b/arch/powerpc/platforms/iseries/mf.c
@@ -1224,7 +1224,7 @@ out:
1224 return rc; 1224 return rc;
1225} 1225}
1226 1226
1227static struct file_operations proc_vmlinux_operations = { 1227static const struct file_operations proc_vmlinux_operations = {
1228 .write = proc_mf_change_vmlinux, 1228 .write = proc_mf_change_vmlinux,
1229}; 1229};
1230 1230
@@ -1253,7 +1253,6 @@ static int __init mf_proc_init(void)
1253 ent = create_proc_entry("cmdline", S_IFREG|S_IRUSR|S_IWUSR, mf); 1253 ent = create_proc_entry("cmdline", S_IFREG|S_IRUSR|S_IWUSR, mf);
1254 if (!ent) 1254 if (!ent)
1255 return 1; 1255 return 1;
1256 ent->nlink = 1;
1257 ent->data = (void *)(long)i; 1256 ent->data = (void *)(long)i;
1258 ent->read_proc = proc_mf_dump_cmdline; 1257 ent->read_proc = proc_mf_dump_cmdline;
1259 ent->write_proc = proc_mf_change_cmdline; 1258 ent->write_proc = proc_mf_change_cmdline;
@@ -1264,7 +1263,6 @@ static int __init mf_proc_init(void)
1264 ent = create_proc_entry("vmlinux", S_IFREG|S_IWUSR, mf); 1263 ent = create_proc_entry("vmlinux", S_IFREG|S_IWUSR, mf);
1265 if (!ent) 1264 if (!ent)
1266 return 1; 1265 return 1;
1267 ent->nlink = 1;
1268 ent->data = (void *)(long)i; 1266 ent->data = (void *)(long)i;
1269 ent->proc_fops = &proc_vmlinux_operations; 1267 ent->proc_fops = &proc_vmlinux_operations;
1270 } 1268 }
@@ -1272,7 +1270,6 @@ static int __init mf_proc_init(void)
1272 ent = create_proc_entry("side", S_IFREG|S_IRUSR|S_IWUSR, mf_proc_root); 1270 ent = create_proc_entry("side", S_IFREG|S_IRUSR|S_IWUSR, mf_proc_root);
1273 if (!ent) 1271 if (!ent)
1274 return 1; 1272 return 1;
1275 ent->nlink = 1;
1276 ent->data = (void *)0; 1273 ent->data = (void *)0;
1277 ent->read_proc = proc_mf_dump_side; 1274 ent->read_proc = proc_mf_dump_side;
1278 ent->write_proc = proc_mf_change_side; 1275 ent->write_proc = proc_mf_change_side;
@@ -1280,7 +1277,6 @@ static int __init mf_proc_init(void)
1280 ent = create_proc_entry("src", S_IFREG|S_IRUSR|S_IWUSR, mf_proc_root); 1277 ent = create_proc_entry("src", S_IFREG|S_IRUSR|S_IWUSR, mf_proc_root);
1281 if (!ent) 1278 if (!ent)
1282 return 1; 1279 return 1;
1283 ent->nlink = 1;
1284 ent->data = (void *)0; 1280 ent->data = (void *)0;
1285 ent->read_proc = proc_mf_dump_src; 1281 ent->read_proc = proc_mf_dump_src;
1286 ent->write_proc = proc_mf_change_src; 1282 ent->write_proc = proc_mf_change_src;
diff --git a/arch/powerpc/platforms/iseries/proc.c b/arch/powerpc/platforms/iseries/proc.c
index b54e37101e69..f2cde4180204 100644
--- a/arch/powerpc/platforms/iseries/proc.c
+++ b/arch/powerpc/platforms/iseries/proc.c
@@ -101,7 +101,7 @@ static int proc_titantod_open(struct inode *inode, struct file *file)
101 return single_open(file, proc_titantod_show, NULL); 101 return single_open(file, proc_titantod_show, NULL);
102} 102}
103 103
104static struct file_operations proc_titantod_operations = { 104static const struct file_operations proc_titantod_operations = {
105 .open = proc_titantod_open, 105 .open = proc_titantod_open,
106 .read = seq_read, 106 .read = seq_read,
107 .llseek = seq_lseek, 107 .llseek = seq_lseek,
diff --git a/arch/powerpc/platforms/iseries/viopath.c b/arch/powerpc/platforms/iseries/viopath.c
index a6799ed34a66..e2100ece9c65 100644
--- a/arch/powerpc/platforms/iseries/viopath.c
+++ b/arch/powerpc/platforms/iseries/viopath.c
@@ -173,7 +173,7 @@ static int proc_viopath_open(struct inode *inode, struct file *file)
173 return single_open(file, proc_viopath_show, NULL); 173 return single_open(file, proc_viopath_show, NULL);
174} 174}
175 175
176static struct file_operations proc_viopath_operations = { 176static const struct file_operations proc_viopath_operations = {
177 .open = proc_viopath_open, 177 .open = proc_viopath_open,
178 .read = seq_read, 178 .read = seq_read,
179 .llseek = seq_lseek, 179 .llseek = seq_lseek,
diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c
index d949e9df41ef..651fa424ea06 100644
--- a/arch/powerpc/platforms/powermac/setup.c
+++ b/arch/powerpc/platforms/powermac/setup.c
@@ -506,8 +506,8 @@ void note_bootable_part(dev_t dev, int part, int goodness)
506 if ((goodness <= current_root_goodness) && 506 if ((goodness <= current_root_goodness) &&
507 ROOT_DEV != DEFAULT_ROOT_DEVICE) 507 ROOT_DEV != DEFAULT_ROOT_DEVICE)
508 return; 508 return;
509 p = strstr(saved_command_line, "root="); 509 p = strstr(boot_command_line, "root=");
510 if (p != NULL && (p == saved_command_line || p[-1] == ' ')) 510 if (p != NULL && (p == boot_command_line || p[-1] == ' '))
511 return; 511 return;
512 512
513 if (!found_boot) { 513 if (!found_boot) {
diff --git a/arch/powerpc/platforms/ps3/Kconfig b/arch/powerpc/platforms/ps3/Kconfig
index de52ec4e9e58..4be3943d1c0d 100644
--- a/arch/powerpc/platforms/ps3/Kconfig
+++ b/arch/powerpc/platforms/ps3/Kconfig
@@ -51,4 +51,15 @@ config PS3_VUART
51 including the System Manager and AV Settings. In 51 including the System Manager and AV Settings. In
52 general, all users will say Y. 52 general, all users will say Y.
53 53
54config PS3_PS3AV
55 tristate "PS3 AV settings driver"
56 depends on PPC_PS3
57 select PS3_VUART
58 default y
59 help
60 Include support for the PS3 AV Settings driver.
61
62 This support is required for graphics and sound. In
63 general, all users will say Y or M.
64
54endmenu 65endmenu
diff --git a/arch/powerpc/platforms/ps3/htab.c b/arch/powerpc/platforms/ps3/htab.c
index a4b5a1bc60f4..e12e59fea13a 100644
--- a/arch/powerpc/platforms/ps3/htab.c
+++ b/arch/powerpc/platforms/ps3/htab.c
@@ -2,7 +2,7 @@
2 * PS3 pagetable management routines. 2 * PS3 pagetable management routines.
3 * 3 *
4 * Copyright (C) 2006 Sony Computer Entertainment Inc. 4 * Copyright (C) 2006 Sony Computer Entertainment Inc.
5 * Copyright 2006 Sony Corp. 5 * Copyright 2006, 2007 Sony Corporation
6 * 6 *
7 * This program is free software; you can redistribute it and/or modify 7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by 8 * it under the terms of the GNU General Public License as published by
@@ -24,6 +24,7 @@
24#include <asm/lmb.h> 24#include <asm/lmb.h>
25#include <asm/udbg.h> 25#include <asm/udbg.h>
26#include <asm/lv1call.h> 26#include <asm/lv1call.h>
27#include <asm/ps3fb.h>
27 28
28#include "platform.h" 29#include "platform.h"
29 30
@@ -233,6 +234,9 @@ static void ps3_hpte_invalidate(unsigned long slot, unsigned long va,
233 234
234static void ps3_hpte_clear(void) 235static void ps3_hpte_clear(void)
235{ 236{
237 /* Make sure to clean up the frame buffer device first */
238 ps3fb_cleanup();
239
236 lv1_unmap_htab(htab_addr); 240 lv1_unmap_htab(htab_addr);
237} 241}
238 242
diff --git a/arch/powerpc/platforms/ps3/interrupt.c b/arch/powerpc/platforms/ps3/interrupt.c
index bb17283275aa..631c30095617 100644
--- a/arch/powerpc/platforms/ps3/interrupt.c
+++ b/arch/powerpc/platforms/ps3/interrupt.c
@@ -194,6 +194,7 @@ int ps3_alloc_io_irq(enum ps3_cpu_binding cpu, unsigned int interrupt_id,
194 194
195 return result; 195 return result;
196} 196}
197EXPORT_SYMBOL_GPL(ps3_alloc_io_irq);
197 198
198int ps3_free_io_irq(unsigned int virq) 199int ps3_free_io_irq(unsigned int virq)
199{ 200{
@@ -209,6 +210,7 @@ int ps3_free_io_irq(unsigned int virq)
209 210
210 return result; 211 return result;
211} 212}
213EXPORT_SYMBOL_GPL(ps3_free_io_irq);
212 214
213/** 215/**
214 * ps3_alloc_event_irq - Allocate a virq for use with a system event. 216 * ps3_alloc_event_irq - Allocate a virq for use with a system event.
diff --git a/arch/powerpc/platforms/ps3/setup.c b/arch/powerpc/platforms/ps3/setup.c
index e62505e18813..13d669a8ecae 100644
--- a/arch/powerpc/platforms/ps3/setup.c
+++ b/arch/powerpc/platforms/ps3/setup.c
@@ -24,6 +24,7 @@
24#include <linux/root_dev.h> 24#include <linux/root_dev.h>
25#include <linux/console.h> 25#include <linux/console.h>
26#include <linux/kexec.h> 26#include <linux/kexec.h>
27#include <linux/bootmem.h>
27 28
28#include <asm/machdep.h> 29#include <asm/machdep.h>
29#include <asm/firmware.h> 30#include <asm/firmware.h>
@@ -80,6 +81,46 @@ static void ps3_panic(char *str)
80 for (;;) ; 81 for (;;) ;
81} 82}
82 83
84
85static void prealloc(struct ps3_prealloc *p)
86{
87 if (!p->size)
88 return;
89
90 p->address = __alloc_bootmem(p->size, p->align, __pa(MAX_DMA_ADDRESS));
91 if (!p->address) {
92 printk(KERN_ERR "%s: Cannot allocate %s\n", __FUNCTION__,
93 p->name);
94 return;
95 }
96
97 printk(KERN_INFO "%s: %lu bytes at %p\n", p->name, p->size,
98 p->address);
99}
100
101#ifdef CONFIG_FB_PS3
102struct ps3_prealloc ps3fb_videomemory = {
103 .name = "ps3fb videomemory",
104 .size = CONFIG_FB_PS3_DEFAULT_SIZE_M*1024*1024,
105 .align = 1024*1024 /* the GPU requires 1 MiB alignment */
106};
107#define prealloc_ps3fb_videomemory() prealloc(&ps3fb_videomemory)
108
109static int __init early_parse_ps3fb(char *p)
110{
111 if (!p)
112 return 1;
113
114 ps3fb_videomemory.size = _ALIGN_UP(memparse(p, &p),
115 ps3fb_videomemory.align);
116 return 0;
117}
118early_param("ps3fb", early_parse_ps3fb);
119#else
120#define prealloc_ps3fb_videomemory() do { } while (0)
121#endif
122
123
83static void __init ps3_setup_arch(void) 124static void __init ps3_setup_arch(void)
84{ 125{
85 union ps3_firmware_version v; 126 union ps3_firmware_version v;
@@ -101,6 +142,7 @@ static void __init ps3_setup_arch(void)
101 conswitchp = &dummy_con; 142 conswitchp = &dummy_con;
102#endif 143#endif
103 144
145 prealloc_ps3fb_videomemory();
104 ppc_md.power_save = ps3_power_save; 146 ppc_md.power_save = ps3_power_save;
105 147
106 DBG(" <- %s:%d\n", __func__, __LINE__); 148 DBG(" <- %s:%d\n", __func__, __LINE__);
diff --git a/arch/powerpc/platforms/ps3/spu.c b/arch/powerpc/platforms/ps3/spu.c
index d1929721b0e4..a397e4e17c13 100644
--- a/arch/powerpc/platforms/ps3/spu.c
+++ b/arch/powerpc/platforms/ps3/spu.c
@@ -170,31 +170,6 @@ static int __init construct_spu(struct spu *spu)
170 return result; 170 return result;
171} 171}
172 172
173static int __init add_spu_pages(unsigned long start_addr, unsigned long size)
174{
175 int result;
176 unsigned long start_pfn;
177 unsigned long nr_pages;
178 struct pglist_data *pgdata;
179 struct zone *zone;
180
181 BUG_ON(!mem_init_done);
182
183 start_pfn = start_addr >> PAGE_SHIFT;
184 nr_pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
185
186 pgdata = NODE_DATA(0);
187 zone = pgdata->node_zones;
188
189 result = __add_pages(zone, start_pfn, nr_pages);
190
191 if (result)
192 pr_debug("%s:%d: __add_pages failed: (%d)\n",
193 __func__, __LINE__, result);
194
195 return result;
196}
197
198static void spu_unmap(struct spu *spu) 173static void spu_unmap(struct spu *spu)
199{ 174{
200 iounmap(spu->priv2); 175 iounmap(spu->priv2);
@@ -206,19 +181,6 @@ static void spu_unmap(struct spu *spu)
206static int __init setup_areas(struct spu *spu) 181static int __init setup_areas(struct spu *spu)
207{ 182{
208 struct table {char* name; unsigned long addr; unsigned long size;}; 183 struct table {char* name; unsigned long addr; unsigned long size;};
209 int result;
210
211 /* setup pages */
212
213 result = add_spu_pages(spu->local_store_phys, LS_SIZE);
214 if (result)
215 goto fail_add;
216
217 result = add_spu_pages(spu->problem_phys, sizeof(struct spu_problem));
218 if (result)
219 goto fail_add;
220
221 /* ioremap */
222 184
223 spu_pdata(spu)->shadow = __ioremap( 185 spu_pdata(spu)->shadow = __ioremap(
224 spu_pdata(spu)->shadow_addr, sizeof(struct spe_shadow), 186 spu_pdata(spu)->shadow_addr, sizeof(struct spe_shadow),
@@ -260,8 +222,8 @@ static int __init setup_areas(struct spu *spu)
260 222
261fail_ioremap: 223fail_ioremap:
262 spu_unmap(spu); 224 spu_unmap(spu);
263fail_add: 225
264 return result; 226 return -ENOMEM;
265} 227}
266 228
267static int __init setup_interrupts(struct spu *spu) 229static int __init setup_interrupts(struct spu *spu)
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c
index bce6136cbce7..a9f7e4a39a2a 100644
--- a/arch/powerpc/platforms/ps3/system-bus.c
+++ b/arch/powerpc/platforms/ps3/system-bus.c
@@ -57,6 +57,7 @@ int ps3_mmio_region_create(struct ps3_mmio_region *r)
57 dump_mmio_region(r); 57 dump_mmio_region(r);
58 return result; 58 return result;
59} 59}
60EXPORT_SYMBOL_GPL(ps3_mmio_region_create);
60 61
61int ps3_free_mmio_region(struct ps3_mmio_region *r) 62int ps3_free_mmio_region(struct ps3_mmio_region *r)
62{ 63{
@@ -72,6 +73,7 @@ int ps3_free_mmio_region(struct ps3_mmio_region *r)
72 r->lpar_addr = 0; 73 r->lpar_addr = 0;
73 return result; 74 return result;
74} 75}
76EXPORT_SYMBOL_GPL(ps3_free_mmio_region);
75 77
76static int ps3_system_bus_match(struct device *_dev, 78static int ps3_system_bus_match(struct device *_dev,
77 struct device_driver *_drv) 79 struct device_driver *_drv)
diff --git a/arch/powerpc/platforms/pseries/eeh.c b/arch/powerpc/platforms/pseries/eeh.c
index 9437f48cc9e7..6cedbc002e0f 100644
--- a/arch/powerpc/platforms/pseries/eeh.c
+++ b/arch/powerpc/platforms/pseries/eeh.c
@@ -1078,7 +1078,7 @@ static int proc_eeh_open(struct inode *inode, struct file *file)
1078 return single_open(file, proc_eeh_show, NULL); 1078 return single_open(file, proc_eeh_show, NULL);
1079} 1079}
1080 1080
1081static struct file_operations proc_eeh_operations = { 1081static const struct file_operations proc_eeh_operations = {
1082 .open = proc_eeh_open, 1082 .open = proc_eeh_open,
1083 .read = seq_read, 1083 .read = seq_read,
1084 .llseek = seq_lseek, 1084 .llseek = seq_lseek,
diff --git a/arch/powerpc/platforms/pseries/hvCall_inst.c b/arch/powerpc/platforms/pseries/hvCall_inst.c
index 3ddc04925d50..eae51ef9af24 100644
--- a/arch/powerpc/platforms/pseries/hvCall_inst.c
+++ b/arch/powerpc/platforms/pseries/hvCall_inst.c
@@ -90,7 +90,7 @@ static int hcall_inst_seq_open(struct inode *inode, struct file *file)
90 return rc; 90 return rc;
91} 91}
92 92
93static struct file_operations hcall_inst_seq_fops = { 93static const struct file_operations hcall_inst_seq_fops = {
94 .open = hcall_inst_seq_open, 94 .open = hcall_inst_seq_open,
95 .read = seq_read, 95 .read = seq_read,
96 .llseek = seq_lseek, 96 .llseek = seq_lseek,
diff --git a/arch/powerpc/platforms/pseries/pci.c b/arch/powerpc/platforms/pseries/pci.c
index c69bd15ced9c..fa59124ce3fe 100644
--- a/arch/powerpc/platforms/pseries/pci.c
+++ b/arch/powerpc/platforms/pseries/pci.c
@@ -98,6 +98,10 @@ static void fixup_winbond_82c105(struct pci_dev* dev)
98 if (dev->resource[i].flags & IORESOURCE_IO 98 if (dev->resource[i].flags & IORESOURCE_IO
99 && dev->bus->number == 0 && dev->devfn == 0x81) 99 && dev->bus->number == 0 && dev->devfn == 0x81)
100 dev->resource[i].flags &= ~IORESOURCE_IO; 100 dev->resource[i].flags &= ~IORESOURCE_IO;
101 if (dev->resource[i].start == 0 && dev->resource[i].end) {
102 dev->resource[i].flags = 0;
103 dev->resource[i].end = 0;
104 }
101 } 105 }
102} 106}
103DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105, 107DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105,
diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c
index 4ad33e41b008..5aa97aff3391 100644
--- a/arch/powerpc/platforms/pseries/reconfig.c
+++ b/arch/powerpc/platforms/pseries/reconfig.c
@@ -499,7 +499,7 @@ out:
499 return rv ? rv : count; 499 return rv ? rv : count;
500} 500}
501 501
502static struct file_operations ofdt_fops = { 502static const struct file_operations ofdt_fops = {
503 .write = ofdt_write 503 .write = ofdt_write
504}; 504};
505 505
@@ -513,7 +513,6 @@ static int proc_ppc64_create_ofdt(void)
513 513
514 ent = create_proc_entry("ppc64/ofdt", S_IWUSR, NULL); 514 ent = create_proc_entry("ppc64/ofdt", S_IWUSR, NULL);
515 if (ent) { 515 if (ent) {
516 ent->nlink = 1;
517 ent->data = NULL; 516 ent->data = NULL;
518 ent->size = 0; 517 ent->size = 0;
519 ent->proc_fops = &ofdt_fops; 518 ent->proc_fops = &ofdt_fops;
diff --git a/arch/powerpc/platforms/pseries/rtasd.c b/arch/powerpc/platforms/pseries/rtasd.c
index 8ca2612221d6..77d0937d5c07 100644
--- a/arch/powerpc/platforms/pseries/rtasd.c
+++ b/arch/powerpc/platforms/pseries/rtasd.c
@@ -331,7 +331,7 @@ static unsigned int rtas_log_poll(struct file *file, poll_table * wait)
331 return 0; 331 return 0;
332} 332}
333 333
334struct file_operations proc_rtas_log_operations = { 334const struct file_operations proc_rtas_log_operations = {
335 .read = rtas_log_read, 335 .read = rtas_log_read,
336 .poll = rtas_log_poll, 336 .poll = rtas_log_poll,
337 .open = rtas_log_open, 337 .open = rtas_log_open,
diff --git a/arch/powerpc/platforms/pseries/scanlog.c b/arch/powerpc/platforms/pseries/scanlog.c
index 45368a57d7dd..8e1ef168e2dd 100644
--- a/arch/powerpc/platforms/pseries/scanlog.c
+++ b/arch/powerpc/platforms/pseries/scanlog.c
@@ -184,7 +184,7 @@ static int scanlog_release(struct inode * inode, struct file * file)
184 return 0; 184 return 0;
185} 185}
186 186
187struct file_operations scanlog_fops = { 187const struct file_operations scanlog_fops = {
188 .owner = THIS_MODULE, 188 .owner = THIS_MODULE,
189 .read = scanlog_read, 189 .read = scanlog_read,
190 .write = scanlog_write, 190 .write = scanlog_write,
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c
index 9f2a9a444bfb..34161bc5a02f 100644
--- a/arch/powerpc/sysdev/fsl_soc.c
+++ b/arch/powerpc/sysdev/fsl_soc.c
@@ -441,7 +441,8 @@ static int __init fsl_usb_of_init(void)
441{ 441{
442 struct device_node *np; 442 struct device_node *np;
443 unsigned int i; 443 unsigned int i;
444 struct platform_device *usb_dev_mph = NULL, *usb_dev_dr = NULL; 444 struct platform_device *usb_dev_mph = NULL, *usb_dev_dr_host = NULL,
445 *usb_dev_dr_client = NULL;
445 int ret; 446 int ret;
446 447
447 for (np = NULL, i = 0; 448 for (np = NULL, i = 0;
@@ -507,33 +508,72 @@ static int __init fsl_usb_of_init(void)
507 508
508 of_irq_to_resource(np, 0, &r[1]); 509 of_irq_to_resource(np, 0, &r[1]);
509 510
510 usb_dev_dr = 511 prop = get_property(np, "dr_mode", NULL);
511 platform_device_register_simple("fsl-ehci", i, r, 2); 512
512 if (IS_ERR(usb_dev_dr)) { 513 if (!prop || !strcmp(prop, "host")) {
513 ret = PTR_ERR(usb_dev_dr); 514 usb_data.operating_mode = FSL_USB2_DR_HOST;
515 usb_dev_dr_host = platform_device_register_simple(
516 "fsl-ehci", i, r, 2);
517 if (IS_ERR(usb_dev_dr_host)) {
518 ret = PTR_ERR(usb_dev_dr_host);
519 goto err;
520 }
521 } else if (prop && !strcmp(prop, "peripheral")) {
522 usb_data.operating_mode = FSL_USB2_DR_DEVICE;
523 usb_dev_dr_client = platform_device_register_simple(
524 "fsl-usb2-udc", i, r, 2);
525 if (IS_ERR(usb_dev_dr_client)) {
526 ret = PTR_ERR(usb_dev_dr_client);
527 goto err;
528 }
529 } else if (prop && !strcmp(prop, "otg")) {
530 usb_data.operating_mode = FSL_USB2_DR_OTG;
531 usb_dev_dr_host = platform_device_register_simple(
532 "fsl-ehci", i, r, 2);
533 if (IS_ERR(usb_dev_dr_host)) {
534 ret = PTR_ERR(usb_dev_dr_host);
535 goto err;
536 }
537 usb_dev_dr_client = platform_device_register_simple(
538 "fsl-usb2-udc", i, r, 2);
539 if (IS_ERR(usb_dev_dr_client)) {
540 ret = PTR_ERR(usb_dev_dr_client);
541 goto err;
542 }
543 } else {
544 ret = -EINVAL;
514 goto err; 545 goto err;
515 } 546 }
516 547
517 usb_dev_dr->dev.coherent_dma_mask = 0xffffffffUL;
518 usb_dev_dr->dev.dma_mask = &usb_dev_dr->dev.coherent_dma_mask;
519
520 usb_data.operating_mode = FSL_USB2_DR_HOST;
521
522 prop = get_property(np, "phy_type", NULL); 548 prop = get_property(np, "phy_type", NULL);
523 usb_data.phy_mode = determine_usb_phy(prop); 549 usb_data.phy_mode = determine_usb_phy(prop);
524 550
525 ret = 551 if (usb_dev_dr_host) {
526 platform_device_add_data(usb_dev_dr, &usb_data, 552 usb_dev_dr_host->dev.coherent_dma_mask = 0xffffffffUL;
527 sizeof(struct 553 usb_dev_dr_host->dev.dma_mask = &usb_dev_dr_host->
528 fsl_usb2_platform_data)); 554 dev.coherent_dma_mask;
529 if (ret) 555 if ((ret = platform_device_add_data(usb_dev_dr_host,
530 goto unreg_dr; 556 &usb_data, sizeof(struct
557 fsl_usb2_platform_data))))
558 goto unreg_dr;
559 }
560 if (usb_dev_dr_client) {
561 usb_dev_dr_client->dev.coherent_dma_mask = 0xffffffffUL;
562 usb_dev_dr_client->dev.dma_mask = &usb_dev_dr_client->
563 dev.coherent_dma_mask;
564 if ((ret = platform_device_add_data(usb_dev_dr_client,
565 &usb_data, sizeof(struct
566 fsl_usb2_platform_data))))
567 goto unreg_dr;
568 }
531 } 569 }
532 return 0; 570 return 0;
533 571
534unreg_dr: 572unreg_dr:
535 if (usb_dev_dr) 573 if (usb_dev_dr_host)
536 platform_device_unregister(usb_dev_dr); 574 platform_device_unregister(usb_dev_dr_host);
575 if (usb_dev_dr_client)
576 platform_device_unregister(usb_dev_dr_client);
537unreg_mph: 577unreg_mph:
538 if (usb_dev_mph) 578 if (usb_dev_mph)
539 platform_device_unregister(usb_dev_mph); 579 platform_device_unregister(usb_dev_mph);
@@ -699,7 +739,7 @@ static int __init fs_enet_of_init(void)
699 if (ret) 739 if (ret)
700 goto unreg; 740 goto unreg;
701 } 741 }
702 742
703 of_node_put(phy); 743 of_node_put(phy);
704 of_node_put(mdio); 744 of_node_put(mdio);
705 745
diff --git a/arch/powerpc/sysdev/qe_lib/ucc_slow.c b/arch/powerpc/sysdev/qe_lib/ucc_slow.c
index 47b56203f47e..0e97e5c94f8a 100644
--- a/arch/powerpc/sysdev/qe_lib/ucc_slow.c
+++ b/arch/powerpc/sysdev/qe_lib/ucc_slow.c
@@ -179,7 +179,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc
179 uccs->us_info = us_info; 179 uccs->us_info = us_info;
180 uccs->saved_uccm = 0; 180 uccs->saved_uccm = 0;
181 uccs->p_rx_frame = 0; 181 uccs->p_rx_frame = 0;
182 uccs->us_regs = us_info->us_regs; 182 uccs->us_regs = us_info->regs;
183 us_regs = uccs->us_regs; 183 us_regs = uccs->us_regs;
184 uccs->p_ucce = (u16 *) & (us_regs->ucce); 184 uccs->p_ucce = (u16 *) & (us_regs->ucce);
185 uccs->p_uccm = (u16 *) & (us_regs->uccm); 185 uccs->p_uccm = (u16 *) & (us_regs->uccm);
@@ -206,7 +206,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc
206 uccs->us_pram = qe_muram_addr(uccs->us_pram_offset); 206 uccs->us_pram = qe_muram_addr(uccs->us_pram_offset);
207 207
208 /* Init Guemr register */ 208 /* Init Guemr register */
209 if ((ret = ucc_init_guemr((struct ucc_common *) (us_info->us_regs)))) { 209 if ((ret = ucc_init_guemr((struct ucc_common *) (us_info->regs)))) {
210 uccs_err("ucc_slow_init: Could not init the guemr register."); 210 uccs_err("ucc_slow_init: Could not init the guemr register.");
211 ucc_slow_free(uccs); 211 ucc_slow_free(uccs);
212 return ret; 212 return ret;
@@ -214,7 +214,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc
214 214
215 /* Set UCC to slow type */ 215 /* Set UCC to slow type */
216 if ((ret = ucc_set_type(us_info->ucc_num, 216 if ((ret = ucc_set_type(us_info->ucc_num,
217 (struct ucc_common *) (us_info->us_regs), 217 (struct ucc_common *) (us_info->regs),
218 UCC_SPEED_TYPE_SLOW))) { 218 UCC_SPEED_TYPE_SLOW))) {
219 uccs_err("ucc_slow_init: Could not init the guemr register."); 219 uccs_err("ucc_slow_init: Could not init the guemr register.");
220 ucc_slow_free(uccs); 220 ucc_slow_free(uccs);
diff --git a/arch/powerpc/xmon/spu-dis.c b/arch/powerpc/xmon/spu-dis.c
index ee929c641bf3..e5f89837c82e 100644
--- a/arch/powerpc/xmon/spu-dis.c
+++ b/arch/powerpc/xmon/spu-dis.c
@@ -85,7 +85,7 @@ get_index_for_opcode (unsigned int insn)
85 if ((index = spu_disassemble_table[opcode & 0x7ff]) != 0) 85 if ((index = spu_disassemble_table[opcode & 0x7ff]) != 0)
86 return index; 86 return index;
87 87
88 return 0; 88 return NULL;
89} 89}
90 90
91/* Print a Spu instruction. */ 91/* Print a Spu instruction. */
diff --git a/arch/ppc/8xx_io/cs4218_tdm.c b/arch/ppc/8xx_io/cs4218_tdm.c
index 684ed04eb8b8..a956f28ab162 100644
--- a/arch/ppc/8xx_io/cs4218_tdm.c
+++ b/arch/ppc/8xx_io/cs4218_tdm.c
@@ -1711,7 +1711,7 @@ static int mixer_ioctl(struct inode *inode, struct file *file, u_int cmd,
1711} 1711}
1712 1712
1713 1713
1714static struct file_operations mixer_fops = 1714static const struct file_operations mixer_fops =
1715{ 1715{
1716 .owner = THIS_MODULE, 1716 .owner = THIS_MODULE,
1717 .llseek = sound_lseek, 1717 .llseek = sound_lseek,
@@ -2298,7 +2298,7 @@ static int sq_ioctl(struct inode *inode, struct file *file, u_int cmd,
2298 2298
2299 2299
2300 2300
2301static struct file_operations sq_fops = 2301static const struct file_operations sq_fops =
2302{ 2302{
2303 .owner = THIS_MODULE, 2303 .owner = THIS_MODULE,
2304 .llseek = sound_lseek, 2304 .llseek = sound_lseek,
@@ -2433,7 +2433,7 @@ static ssize_t state_read(struct file *file, char *buf, size_t count,
2433} 2433}
2434 2434
2435 2435
2436static struct file_operations state_fops = 2436static const struct file_operations state_fops =
2437{ 2437{
2438 .owner = THIS_MODULE, 2438 .owner = THIS_MODULE,
2439 .llseek = sound_lseek, 2439 .llseek = sound_lseek,
diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig
index c22e60619d9b..0df9c33629fd 100644
--- a/arch/ppc/Kconfig
+++ b/arch/ppc/Kconfig
@@ -1177,6 +1177,10 @@ config ISA
1177 have an IBM RS/6000 or pSeries machine or a PReP machine, say Y. If 1177 have an IBM RS/6000 or pSeries machine or a PReP machine, say Y. If
1178 you have an embedded board, consult your board documentation. 1178 you have an embedded board, consult your board documentation.
1179 1179
1180config ZONE_DMA
1181 bool
1182 default y
1183
1180config GENERIC_ISA_DMA 1184config GENERIC_ISA_DMA
1181 bool 1185 bool
1182 depends on 6xx && !CPM2 1186 depends on 6xx && !CPM2
diff --git a/arch/ppc/configs/taishan_defconfig b/arch/ppc/configs/taishan_defconfig
new file mode 100644
index 000000000000..1ca0204267b1
--- /dev/null
+++ b/arch/ppc/configs/taishan_defconfig
@@ -0,0 +1,1077 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.20
4# Mon Feb 12 11:11:58 2007
5#
6CONFIG_MMU=y
7CONFIG_GENERIC_HARDIRQS=y
8CONFIG_RWSEM_XCHGADD_ALGORITHM=y
9CONFIG_ARCH_HAS_ILOG2_U32=y
10# CONFIG_ARCH_HAS_ILOG2_U64 is not set
11CONFIG_GENERIC_HWEIGHT=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y
13CONFIG_PPC=y
14CONFIG_PPC32=y
15CONFIG_GENERIC_NVRAM=y
16CONFIG_GENERIC_FIND_NEXT_BIT=y
17CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
18CONFIG_ARCH_MAY_HAVE_PC_FDC=y
19CONFIG_GENERIC_BUG=y
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
21
22#
23# Code maturity level options
24#
25CONFIG_EXPERIMENTAL=y
26CONFIG_BROKEN_ON_SMP=y
27CONFIG_INIT_ENV_ARG_LIMIT=32
28
29#
30# General setup
31#
32CONFIG_LOCALVERSION=""
33CONFIG_LOCALVERSION_AUTO=y
34CONFIG_SWAP=y
35CONFIG_SYSVIPC=y
36# CONFIG_IPC_NS is not set
37# CONFIG_POSIX_MQUEUE is not set
38# CONFIG_BSD_PROCESS_ACCT is not set
39# CONFIG_TASKSTATS is not set
40# CONFIG_UTS_NS is not set
41# CONFIG_AUDIT is not set
42# CONFIG_IKCONFIG is not set
43CONFIG_SYSFS_DEPRECATED=y
44# CONFIG_RELAY is not set
45CONFIG_INITRAMFS_SOURCE=""
46# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
47CONFIG_SYSCTL=y
48CONFIG_EMBEDDED=y
49CONFIG_SYSCTL_SYSCALL=y
50CONFIG_KALLSYMS=y
51# CONFIG_KALLSYMS_ALL is not set
52# CONFIG_KALLSYMS_EXTRA_PASS is not set
53# CONFIG_HOTPLUG is not set
54CONFIG_PRINTK=y
55CONFIG_BUG=y
56CONFIG_ELF_CORE=y
57CONFIG_BASE_FULL=y
58CONFIG_FUTEX=y
59CONFIG_EPOLL=y
60CONFIG_SHMEM=y
61CONFIG_SLAB=y
62CONFIG_VM_EVENT_COUNTERS=y
63CONFIG_RT_MUTEXES=y
64# CONFIG_TINY_SHMEM is not set
65CONFIG_BASE_SMALL=0
66# CONFIG_SLOB is not set
67
68#
69# Loadable module support
70#
71CONFIG_MODULES=y
72CONFIG_MODULE_UNLOAD=y
73# CONFIG_MODULE_FORCE_UNLOAD is not set
74# CONFIG_MODVERSIONS is not set
75# CONFIG_MODULE_SRCVERSION_ALL is not set
76CONFIG_KMOD=y
77
78#
79# Block layer
80#
81CONFIG_BLOCK=y
82# CONFIG_LBD is not set
83# CONFIG_BLK_DEV_IO_TRACE is not set
84# CONFIG_LSF is not set
85
86#
87# IO Schedulers
88#
89CONFIG_IOSCHED_NOOP=y
90CONFIG_IOSCHED_AS=y
91CONFIG_IOSCHED_DEADLINE=y
92CONFIG_IOSCHED_CFQ=y
93CONFIG_DEFAULT_AS=y
94# CONFIG_DEFAULT_DEADLINE is not set
95# CONFIG_DEFAULT_CFQ is not set
96# CONFIG_DEFAULT_NOOP is not set
97CONFIG_DEFAULT_IOSCHED="anticipatory"
98
99#
100# Processor
101#
102# CONFIG_6xx is not set
103# CONFIG_40x is not set
104CONFIG_44x=y
105# CONFIG_8xx is not set
106# CONFIG_E200 is not set
107# CONFIG_E500 is not set
108CONFIG_PPC_DCR_NATIVE=y
109CONFIG_PPC_DCR=y
110CONFIG_BOOKE=y
111CONFIG_PTE_64BIT=y
112CONFIG_PHYS_64BIT=y
113# CONFIG_MATH_EMULATION is not set
114# CONFIG_KEXEC is not set
115# CONFIG_CPU_FREQ is not set
116CONFIG_4xx=y
117CONFIG_WANT_EARLY_SERIAL=y
118
119#
120# IBM 4xx options
121#
122# CONFIG_BAMBOO is not set
123# CONFIG_EBONY is not set
124# CONFIG_LUAN is not set
125# CONFIG_YUCCA is not set
126# CONFIG_OCOTEA is not set
127CONFIG_TAISHAN=y
128CONFIG_440GX=y
129CONFIG_440A=y
130CONFIG_IBM_OCP=y
131CONFIG_IBM_EMAC4=y
132CONFIG_PPC4xx_DMA=y
133CONFIG_PPC4xx_EDMA=y
134CONFIG_PPC_GEN550=y
135CONFIG_NOT_COHERENT_CACHE=y
136
137#
138# Platform options
139#
140# CONFIG_PC_KEYBOARD is not set
141# CONFIG_HIGHMEM is not set
142CONFIG_ARCH_POPULATES_NODE_MAP=y
143# CONFIG_HZ_100 is not set
144CONFIG_HZ_250=y
145# CONFIG_HZ_300 is not set
146# CONFIG_HZ_1000 is not set
147CONFIG_HZ=250
148CONFIG_PREEMPT_NONE=y
149# CONFIG_PREEMPT_VOLUNTARY is not set
150# CONFIG_PREEMPT is not set
151CONFIG_SELECT_MEMORY_MODEL=y
152CONFIG_FLATMEM_MANUAL=y
153# CONFIG_DISCONTIGMEM_MANUAL is not set
154# CONFIG_SPARSEMEM_MANUAL is not set
155CONFIG_FLATMEM=y
156CONFIG_FLAT_NODE_MEM_MAP=y
157# CONFIG_SPARSEMEM_STATIC is not set
158CONFIG_SPLIT_PTLOCK_CPUS=4
159CONFIG_RESOURCES_64BIT=y
160CONFIG_ZONE_DMA_FLAG=1
161CONFIG_BINFMT_ELF=y
162# CONFIG_BINFMT_MISC is not set
163CONFIG_CMDLINE_BOOL=y
164CONFIG_CMDLINE="ip=on console=ttyS0,115200"
165CONFIG_SECCOMP=y
166CONFIG_ISA_DMA_API=y
167
168#
169# Bus options
170#
171CONFIG_ZONE_DMA=y
172# CONFIG_PPC_I8259 is not set
173CONFIG_PPC_INDIRECT_PCI=y
174CONFIG_PCI=y
175CONFIG_PCI_DOMAINS=y
176# CONFIG_PCI_DEBUG is not set
177
178#
179# PCCARD (PCMCIA/CardBus) support
180#
181
182#
183# Advanced setup
184#
185# CONFIG_ADVANCED_OPTIONS is not set
186
187#
188# Default settings for advanced configuration options are used
189#
190CONFIG_HIGHMEM_START=0xfe000000
191CONFIG_LOWMEM_SIZE=0x30000000
192CONFIG_KERNEL_START=0xc0000000
193CONFIG_TASK_SIZE=0x80000000
194CONFIG_CONSISTENT_START=0xff100000
195CONFIG_CONSISTENT_SIZE=0x00200000
196CONFIG_BOOT_LOAD=0x01000000
197
198#
199# Networking
200#
201CONFIG_NET=y
202
203#
204# Networking options
205#
206# CONFIG_NETDEBUG is not set
207CONFIG_PACKET=y
208# CONFIG_PACKET_MMAP is not set
209CONFIG_UNIX=y
210CONFIG_XFRM=y
211# CONFIG_XFRM_USER is not set
212# CONFIG_XFRM_SUB_POLICY is not set
213# CONFIG_XFRM_MIGRATE is not set
214# CONFIG_NET_KEY is not set
215CONFIG_INET=y
216# CONFIG_IP_MULTICAST is not set
217CONFIG_IP_ADVANCED_ROUTER=y
218CONFIG_ASK_IP_FIB_HASH=y
219# CONFIG_IP_FIB_TRIE is not set
220CONFIG_IP_FIB_HASH=y
221# CONFIG_IP_MULTIPLE_TABLES is not set
222# CONFIG_IP_ROUTE_MULTIPATH is not set
223# CONFIG_IP_ROUTE_VERBOSE is not set
224CONFIG_IP_PNP=y
225# CONFIG_IP_PNP_DHCP is not set
226CONFIG_IP_PNP_BOOTP=y
227# CONFIG_IP_PNP_RARP is not set
228# CONFIG_NET_IPIP is not set
229# CONFIG_NET_IPGRE is not set
230# CONFIG_ARPD is not set
231# CONFIG_SYN_COOKIES is not set
232# CONFIG_INET_AH is not set
233# CONFIG_INET_ESP is not set
234# CONFIG_INET_IPCOMP is not set
235# CONFIG_INET_XFRM_TUNNEL is not set
236# CONFIG_INET_TUNNEL is not set
237CONFIG_INET_XFRM_MODE_TRANSPORT=y
238CONFIG_INET_XFRM_MODE_TUNNEL=y
239CONFIG_INET_XFRM_MODE_BEET=y
240CONFIG_INET_DIAG=y
241CONFIG_INET_TCP_DIAG=y
242# CONFIG_TCP_CONG_ADVANCED is not set
243CONFIG_TCP_CONG_CUBIC=y
244CONFIG_DEFAULT_TCP_CONG="cubic"
245# CONFIG_TCP_MD5SIG is not set
246# CONFIG_IPV6 is not set
247# CONFIG_INET6_XFRM_TUNNEL is not set
248# CONFIG_INET6_TUNNEL is not set
249# CONFIG_NETWORK_SECMARK is not set
250# CONFIG_NETFILTER is not set
251
252#
253# DCCP Configuration (EXPERIMENTAL)
254#
255# CONFIG_IP_DCCP is not set
256
257#
258# SCTP Configuration (EXPERIMENTAL)
259#
260# CONFIG_IP_SCTP is not set
261
262#
263# TIPC Configuration (EXPERIMENTAL)
264#
265# CONFIG_TIPC is not set
266# CONFIG_ATM is not set
267CONFIG_BRIDGE=y
268# CONFIG_VLAN_8021Q is not set
269# CONFIG_DECNET is not set
270CONFIG_LLC=y
271# CONFIG_LLC2 is not set
272# CONFIG_IPX is not set
273# CONFIG_ATALK is not set
274# CONFIG_X25 is not set
275# CONFIG_LAPB is not set
276# CONFIG_ECONET is not set
277# CONFIG_WAN_ROUTER is not set
278
279#
280# QoS and/or fair queueing
281#
282# CONFIG_NET_SCHED is not set
283
284#
285# Network testing
286#
287# CONFIG_NET_PKTGEN is not set
288# CONFIG_HAMRADIO is not set
289# CONFIG_IRDA is not set
290# CONFIG_BT is not set
291# CONFIG_IEEE80211 is not set
292
293#
294# Device Drivers
295#
296
297#
298# Generic Driver Options
299#
300# CONFIG_STANDALONE is not set
301CONFIG_PREVENT_FIRMWARE_BUILD=y
302# CONFIG_DEBUG_DRIVER is not set
303# CONFIG_DEBUG_DEVRES is not set
304# CONFIG_SYS_HYPERVISOR is not set
305
306#
307# Connector - unified userspace <-> kernelspace linker
308#
309# CONFIG_CONNECTOR is not set
310
311#
312# Memory Technology Devices (MTD)
313#
314CONFIG_MTD=y
315# CONFIG_MTD_DEBUG is not set
316CONFIG_MTD_CONCAT=y
317CONFIG_MTD_PARTITIONS=y
318# CONFIG_MTD_REDBOOT_PARTS is not set
319CONFIG_MTD_CMDLINE_PARTS=y
320
321#
322# User Modules And Translation Layers
323#
324CONFIG_MTD_CHAR=y
325CONFIG_MTD_BLKDEVS=y
326CONFIG_MTD_BLOCK=y
327# CONFIG_FTL is not set
328# CONFIG_NFTL is not set
329# CONFIG_INFTL is not set
330# CONFIG_RFD_FTL is not set
331# CONFIG_SSFDC is not set
332
333#
334# RAM/ROM/Flash chip drivers
335#
336CONFIG_MTD_CFI=y
337CONFIG_MTD_JEDECPROBE=y
338CONFIG_MTD_GEN_PROBE=y
339CONFIG_MTD_CFI_ADV_OPTIONS=y
340CONFIG_MTD_CFI_NOSWAP=y
341# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
342# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
343# CONFIG_MTD_CFI_GEOMETRY is not set
344CONFIG_MTD_MAP_BANK_WIDTH_1=y
345CONFIG_MTD_MAP_BANK_WIDTH_2=y
346CONFIG_MTD_MAP_BANK_WIDTH_4=y
347# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
348# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
349# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
350CONFIG_MTD_CFI_I1=y
351CONFIG_MTD_CFI_I2=y
352# CONFIG_MTD_CFI_I4 is not set
353# CONFIG_MTD_CFI_I8 is not set
354# CONFIG_MTD_OTP is not set
355# CONFIG_MTD_CFI_INTELEXT is not set
356CONFIG_MTD_CFI_AMDSTD=y
357# CONFIG_MTD_CFI_STAA is not set
358CONFIG_MTD_CFI_UTIL=y
359# CONFIG_MTD_RAM is not set
360# CONFIG_MTD_ROM is not set
361# CONFIG_MTD_ABSENT is not set
362# CONFIG_MTD_OBSOLETE_CHIPS is not set
363
364#
365# Mapping drivers for chip access
366#
367CONFIG_MTD_COMPLEX_MAPPINGS=y
368CONFIG_MTD_PHYSMAP=y
369CONFIG_MTD_PHYSMAP_START=0x8000000
370CONFIG_MTD_PHYSMAP_LEN=0x0
371CONFIG_MTD_PHYSMAP_BANKWIDTH=2
372# CONFIG_MTD_PCI is not set
373# CONFIG_MTD_PLATRAM is not set
374
375#
376# Self-contained MTD device drivers
377#
378# CONFIG_MTD_PMC551 is not set
379# CONFIG_MTD_SLRAM is not set
380# CONFIG_MTD_PHRAM is not set
381# CONFIG_MTD_MTDRAM is not set
382# CONFIG_MTD_BLOCK2MTD is not set
383
384#
385# Disk-On-Chip Device Drivers
386#
387# CONFIG_MTD_DOC2000 is not set
388# CONFIG_MTD_DOC2001 is not set
389# CONFIG_MTD_DOC2001PLUS is not set
390
391#
392# NAND Flash Device Drivers
393#
394# CONFIG_MTD_NAND is not set
395# CONFIG_MTD_NAND_CAFE is not set
396
397#
398# OneNAND Flash Device Drivers
399#
400# CONFIG_MTD_ONENAND is not set
401
402#
403# Parallel port support
404#
405# CONFIG_PARPORT is not set
406
407#
408# Plug and Play support
409#
410
411#
412# Block devices
413#
414# CONFIG_BLK_DEV_FD is not set
415# CONFIG_BLK_CPQ_DA is not set
416# CONFIG_BLK_CPQ_CISS_DA is not set
417# CONFIG_BLK_DEV_DAC960 is not set
418# CONFIG_BLK_DEV_UMEM is not set
419# CONFIG_BLK_DEV_COW_COMMON is not set
420# CONFIG_BLK_DEV_LOOP is not set
421# CONFIG_BLK_DEV_NBD is not set
422# CONFIG_BLK_DEV_SX8 is not set
423CONFIG_BLK_DEV_RAM=y
424CONFIG_BLK_DEV_RAM_COUNT=16
425CONFIG_BLK_DEV_RAM_SIZE=65536
426CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
427CONFIG_BLK_DEV_INITRD=y
428# CONFIG_CDROM_PKTCDVD is not set
429# CONFIG_ATA_OVER_ETH is not set
430
431#
432# Misc devices
433#
434# CONFIG_SGI_IOC4 is not set
435# CONFIG_TIFM_CORE is not set
436
437#
438# ATA/ATAPI/MFM/RLL support
439#
440# CONFIG_IDE is not set
441
442#
443# SCSI device support
444#
445# CONFIG_RAID_ATTRS is not set
446# CONFIG_SCSI is not set
447# CONFIG_SCSI_NETLINK is not set
448
449#
450# Serial ATA (prod) and Parallel ATA (experimental) drivers
451#
452# CONFIG_ATA is not set
453
454#
455# Multi-device support (RAID and LVM)
456#
457# CONFIG_MD is not set
458
459#
460# Fusion MPT device support
461#
462# CONFIG_FUSION is not set
463
464#
465# IEEE 1394 (FireWire) support
466#
467# CONFIG_IEEE1394 is not set
468
469#
470# I2O device support
471#
472# CONFIG_I2O is not set
473
474#
475# Macintosh device drivers
476#
477# CONFIG_MAC_EMUMOUSEBTN is not set
478# CONFIG_WINDFARM is not set
479
480#
481# Network device support
482#
483CONFIG_NETDEVICES=y
484# CONFIG_DUMMY is not set
485# CONFIG_BONDING is not set
486# CONFIG_EQUALIZER is not set
487# CONFIG_TUN is not set
488
489#
490# ARCnet devices
491#
492# CONFIG_ARCNET is not set
493
494#
495# PHY device support
496#
497# CONFIG_PHYLIB is not set
498
499#
500# Ethernet (10 or 100Mbit)
501#
502CONFIG_NET_ETHERNET=y
503CONFIG_MII=y
504# CONFIG_HAPPYMEAL is not set
505# CONFIG_SUNGEM is not set
506# CONFIG_CASSINI is not set
507# CONFIG_NET_VENDOR_3COM is not set
508
509#
510# Tulip family network device support
511#
512# CONFIG_NET_TULIP is not set
513# CONFIG_HP100 is not set
514CONFIG_IBM_EMAC=y
515CONFIG_IBM_EMAC_RXB=128
516CONFIG_IBM_EMAC_TXB=128
517CONFIG_IBM_EMAC_POLL_WEIGHT=32
518CONFIG_IBM_EMAC_RX_COPY_THRESHOLD=256
519CONFIG_IBM_EMAC_RX_SKB_HEADROOM=0
520CONFIG_IBM_EMAC_PHY_RX_CLK_FIX=y
521# CONFIG_IBM_EMAC_DEBUG is not set
522CONFIG_IBM_EMAC_ZMII=y
523CONFIG_IBM_EMAC_RGMII=y
524CONFIG_IBM_EMAC_TAH=y
525CONFIG_NET_PCI=y
526# CONFIG_PCNET32 is not set
527# CONFIG_AMD8111_ETH is not set
528# CONFIG_ADAPTEC_STARFIRE is not set
529# CONFIG_B44 is not set
530# CONFIG_FORCEDETH is not set
531# CONFIG_DGRS is not set
532# CONFIG_EEPRO100 is not set
533CONFIG_E100=y
534# CONFIG_FEALNX is not set
535# CONFIG_NATSEMI is not set
536# CONFIG_NE2K_PCI is not set
537# CONFIG_8139CP is not set
538# CONFIG_8139TOO is not set
539# CONFIG_SIS900 is not set
540# CONFIG_EPIC100 is not set
541# CONFIG_SUNDANCE is not set
542# CONFIG_TLAN is not set
543# CONFIG_VIA_RHINE is not set
544# CONFIG_SC92031 is not set
545
546#
547# Ethernet (1000 Mbit)
548#
549# CONFIG_ACENIC is not set
550# CONFIG_DL2K is not set
551# CONFIG_E1000 is not set
552# CONFIG_NS83820 is not set
553# CONFIG_HAMACHI is not set
554# CONFIG_YELLOWFIN is not set
555# CONFIG_R8169 is not set
556# CONFIG_SIS190 is not set
557# CONFIG_SKGE is not set
558# CONFIG_SKY2 is not set
559# CONFIG_SK98LIN is not set
560# CONFIG_VIA_VELOCITY is not set
561# CONFIG_TIGON3 is not set
562# CONFIG_BNX2 is not set
563# CONFIG_QLA3XXX is not set
564# CONFIG_ATL1 is not set
565
566#
567# Ethernet (10000 Mbit)
568#
569# CONFIG_CHELSIO_T1 is not set
570# CONFIG_CHELSIO_T3 is not set
571# CONFIG_IXGB is not set
572# CONFIG_S2IO is not set
573# CONFIG_MYRI10GE is not set
574# CONFIG_NETXEN_NIC is not set
575
576#
577# Token Ring devices
578#
579# CONFIG_TR is not set
580
581#
582# Wireless LAN (non-hamradio)
583#
584# CONFIG_NET_RADIO is not set
585
586#
587# Wan interfaces
588#
589# CONFIG_WAN is not set
590# CONFIG_FDDI is not set
591# CONFIG_HIPPI is not set
592CONFIG_PPP=y
593# CONFIG_PPP_MULTILINK is not set
594# CONFIG_PPP_FILTER is not set
595# CONFIG_PPP_ASYNC is not set
596# CONFIG_PPP_SYNC_TTY is not set
597# CONFIG_PPP_DEFLATE is not set
598# CONFIG_PPP_BSDCOMP is not set
599# CONFIG_PPP_MPPE is not set
600CONFIG_PPPOE=y
601# CONFIG_SLIP is not set
602CONFIG_SLHC=y
603# CONFIG_SHAPER is not set
604# CONFIG_NETCONSOLE is not set
605# CONFIG_NETPOLL is not set
606# CONFIG_NET_POLL_CONTROLLER is not set
607
608#
609# ISDN subsystem
610#
611# CONFIG_ISDN is not set
612
613#
614# Telephony Support
615#
616# CONFIG_PHONE is not set
617
618#
619# Input device support
620#
621# CONFIG_INPUT is not set
622
623#
624# Hardware I/O ports
625#
626CONFIG_SERIO=y
627# CONFIG_SERIO_I8042 is not set
628# CONFIG_SERIO_SERPORT is not set
629# CONFIG_SERIO_PCIPS2 is not set
630# CONFIG_SERIO_LIBPS2 is not set
631# CONFIG_SERIO_RAW is not set
632# CONFIG_GAMEPORT is not set
633
634#
635# Character devices
636#
637# CONFIG_VT is not set
638# CONFIG_SERIAL_NONSTANDARD is not set
639
640#
641# Serial drivers
642#
643CONFIG_SERIAL_8250=y
644CONFIG_SERIAL_8250_CONSOLE=y
645CONFIG_SERIAL_8250_PCI=y
646CONFIG_SERIAL_8250_NR_UARTS=4
647CONFIG_SERIAL_8250_RUNTIME_UARTS=4
648CONFIG_SERIAL_8250_EXTENDED=y
649# CONFIG_SERIAL_8250_MANY_PORTS is not set
650CONFIG_SERIAL_8250_SHARE_IRQ=y
651# CONFIG_SERIAL_8250_DETECT_IRQ is not set
652# CONFIG_SERIAL_8250_RSA is not set
653
654#
655# Non-8250 serial port support
656#
657# CONFIG_SERIAL_UARTLITE is not set
658CONFIG_SERIAL_CORE=y
659CONFIG_SERIAL_CORE_CONSOLE=y
660# CONFIG_SERIAL_JSM is not set
661CONFIG_UNIX98_PTYS=y
662CONFIG_LEGACY_PTYS=y
663CONFIG_LEGACY_PTY_COUNT=256
664
665#
666# IPMI
667#
668# CONFIG_IPMI_HANDLER is not set
669
670#
671# Watchdog Cards
672#
673# CONFIG_WATCHDOG is not set
674CONFIG_HW_RANDOM=m
675# CONFIG_NVRAM is not set
676# CONFIG_GEN_RTC is not set
677# CONFIG_DTLK is not set
678# CONFIG_R3964 is not set
679# CONFIG_APPLICOM is not set
680# CONFIG_AGP is not set
681# CONFIG_DRM is not set
682# CONFIG_RAW_DRIVER is not set
683
684#
685# TPM devices
686#
687# CONFIG_TCG_TPM is not set
688
689#
690# I2C support
691#
692CONFIG_I2C=y
693CONFIG_I2C_CHARDEV=y
694
695#
696# I2C Algorithms
697#
698# CONFIG_I2C_ALGOBIT is not set
699# CONFIG_I2C_ALGOPCF is not set
700# CONFIG_I2C_ALGOPCA is not set
701
702#
703# I2C Hardware Bus support
704#
705# CONFIG_I2C_ALI1535 is not set
706# CONFIG_I2C_ALI1563 is not set
707# CONFIG_I2C_ALI15X3 is not set
708# CONFIG_I2C_AMD756 is not set
709# CONFIG_I2C_AMD8111 is not set
710# CONFIG_I2C_I801 is not set
711# CONFIG_I2C_I810 is not set
712# CONFIG_I2C_PIIX4 is not set
713CONFIG_I2C_IBM_IIC=y
714# CONFIG_I2C_MPC is not set
715# CONFIG_I2C_NFORCE2 is not set
716# CONFIG_I2C_OCORES is not set
717# CONFIG_I2C_PARPORT_LIGHT is not set
718# CONFIG_I2C_PROSAVAGE is not set
719# CONFIG_I2C_SAVAGE4 is not set
720# CONFIG_I2C_SIS5595 is not set
721# CONFIG_I2C_SIS630 is not set
722# CONFIG_I2C_SIS96X is not set
723# CONFIG_I2C_STUB is not set
724# CONFIG_I2C_VIA is not set
725# CONFIG_I2C_VIAPRO is not set
726# CONFIG_I2C_VOODOO3 is not set
727# CONFIG_I2C_PCA_ISA is not set
728
729#
730# Miscellaneous I2C Chip support
731#
732# CONFIG_SENSORS_DS1337 is not set
733# CONFIG_SENSORS_DS1374 is not set
734CONFIG_SENSORS_EEPROM=y
735# CONFIG_SENSORS_PCF8574 is not set
736# CONFIG_SENSORS_PCA9539 is not set
737# CONFIG_SENSORS_PCF8591 is not set
738# CONFIG_SENSORS_M41T00 is not set
739# CONFIG_SENSORS_MAX6875 is not set
740# CONFIG_I2C_DEBUG_CORE is not set
741# CONFIG_I2C_DEBUG_ALGO is not set
742# CONFIG_I2C_DEBUG_BUS is not set
743# CONFIG_I2C_DEBUG_CHIP is not set
744
745#
746# SPI support
747#
748# CONFIG_SPI is not set
749# CONFIG_SPI_MASTER is not set
750
751#
752# Dallas's 1-wire bus
753#
754# CONFIG_W1 is not set
755
756#
757# Hardware Monitoring support
758#
759CONFIG_HWMON=y
760# CONFIG_HWMON_VID is not set
761# CONFIG_SENSORS_ABITUGURU is not set
762# CONFIG_SENSORS_ADM1021 is not set
763# CONFIG_SENSORS_ADM1025 is not set
764# CONFIG_SENSORS_ADM1026 is not set
765# CONFIG_SENSORS_ADM1031 is not set
766# CONFIG_SENSORS_ADM9240 is not set
767# CONFIG_SENSORS_ASB100 is not set
768# CONFIG_SENSORS_ATXP1 is not set
769# CONFIG_SENSORS_DS1621 is not set
770# CONFIG_SENSORS_F71805F is not set
771# CONFIG_SENSORS_FSCHER is not set
772# CONFIG_SENSORS_FSCPOS is not set
773# CONFIG_SENSORS_GL518SM is not set
774# CONFIG_SENSORS_GL520SM is not set
775# CONFIG_SENSORS_IT87 is not set
776# CONFIG_SENSORS_LM63 is not set
777# CONFIG_SENSORS_LM75 is not set
778# CONFIG_SENSORS_LM77 is not set
779# CONFIG_SENSORS_LM78 is not set
780# CONFIG_SENSORS_LM80 is not set
781# CONFIG_SENSORS_LM83 is not set
782# CONFIG_SENSORS_LM85 is not set
783# CONFIG_SENSORS_LM87 is not set
784# CONFIG_SENSORS_LM90 is not set
785# CONFIG_SENSORS_LM92 is not set
786# CONFIG_SENSORS_MAX1619 is not set
787# CONFIG_SENSORS_PC87360 is not set
788# CONFIG_SENSORS_PC87427 is not set
789# CONFIG_SENSORS_SIS5595 is not set
790# CONFIG_SENSORS_SMSC47M1 is not set
791# CONFIG_SENSORS_SMSC47M192 is not set
792# CONFIG_SENSORS_SMSC47B397 is not set
793# CONFIG_SENSORS_VIA686A is not set
794# CONFIG_SENSORS_VT1211 is not set
795# CONFIG_SENSORS_VT8231 is not set
796# CONFIG_SENSORS_W83781D is not set
797# CONFIG_SENSORS_W83791D is not set
798# CONFIG_SENSORS_W83792D is not set
799# CONFIG_SENSORS_W83793 is not set
800# CONFIG_SENSORS_W83L785TS is not set
801# CONFIG_SENSORS_W83627HF is not set
802# CONFIG_SENSORS_W83627EHF is not set
803# CONFIG_HWMON_DEBUG_CHIP is not set
804
805#
806# Multimedia devices
807#
808# CONFIG_VIDEO_DEV is not set
809
810#
811# Digital Video Broadcasting Devices
812#
813# CONFIG_DVB is not set
814
815#
816# Graphics support
817#
818CONFIG_FIRMWARE_EDID=y
819# CONFIG_FB is not set
820# CONFIG_FB_IBM_GXT4500 is not set
821# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
822
823#
824# Sound
825#
826# CONFIG_SOUND is not set
827
828#
829# USB support
830#
831CONFIG_USB_ARCH_HAS_HCD=y
832CONFIG_USB_ARCH_HAS_OHCI=y
833CONFIG_USB_ARCH_HAS_EHCI=y
834# CONFIG_USB is not set
835
836#
837# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
838#
839
840#
841# USB Gadget Support
842#
843# CONFIG_USB_GADGET is not set
844
845#
846# MMC/SD Card support
847#
848# CONFIG_MMC is not set
849
850#
851# LED devices
852#
853# CONFIG_NEW_LEDS is not set
854
855#
856# LED drivers
857#
858
859#
860# LED Triggers
861#
862
863#
864# InfiniBand support
865#
866# CONFIG_INFINIBAND is not set
867
868#
869# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
870#
871
872#
873# Real Time Clock
874#
875# CONFIG_RTC_CLASS is not set
876
877#
878# DMA Engine support
879#
880# CONFIG_DMA_ENGINE is not set
881
882#
883# DMA Clients
884#
885
886#
887# DMA Devices
888#
889
890#
891# Auxiliary Display support
892#
893
894#
895# Virtualization
896#
897
898#
899# File systems
900#
901CONFIG_EXT2_FS=y
902CONFIG_EXT2_FS_XATTR=y
903CONFIG_EXT2_FS_POSIX_ACL=y
904CONFIG_EXT2_FS_SECURITY=y
905CONFIG_EXT2_FS_XIP=y
906CONFIG_FS_XIP=y
907CONFIG_EXT3_FS=y
908CONFIG_EXT3_FS_XATTR=y
909CONFIG_EXT3_FS_POSIX_ACL=y
910CONFIG_EXT3_FS_SECURITY=y
911# CONFIG_EXT4DEV_FS is not set
912CONFIG_JBD=y
913CONFIG_JBD_DEBUG=y
914CONFIG_FS_MBCACHE=y
915# CONFIG_REISERFS_FS is not set
916# CONFIG_JFS_FS is not set
917CONFIG_FS_POSIX_ACL=y
918# CONFIG_XFS_FS is not set
919# CONFIG_GFS2_FS is not set
920# CONFIG_OCFS2_FS is not set
921# CONFIG_MINIX_FS is not set
922# CONFIG_ROMFS_FS is not set
923CONFIG_INOTIFY=y
924CONFIG_INOTIFY_USER=y
925# CONFIG_QUOTA is not set
926CONFIG_DNOTIFY=y
927# CONFIG_AUTOFS_FS is not set
928# CONFIG_AUTOFS4_FS is not set
929# CONFIG_FUSE_FS is not set
930
931#
932# CD-ROM/DVD Filesystems
933#
934# CONFIG_ISO9660_FS is not set
935# CONFIG_UDF_FS is not set
936
937#
938# DOS/FAT/NT Filesystems
939#
940# CONFIG_MSDOS_FS is not set
941# CONFIG_VFAT_FS is not set
942# CONFIG_NTFS_FS is not set
943
944#
945# Pseudo filesystems
946#
947CONFIG_PROC_FS=y
948CONFIG_PROC_KCORE=y
949CONFIG_PROC_SYSCTL=y
950CONFIG_SYSFS=y
951CONFIG_TMPFS=y
952# CONFIG_TMPFS_POSIX_ACL is not set
953# CONFIG_HUGETLB_PAGE is not set
954CONFIG_RAMFS=y
955# CONFIG_CONFIGFS_FS is not set
956
957#
958# Miscellaneous filesystems
959#
960# CONFIG_ADFS_FS is not set
961# CONFIG_AFFS_FS is not set
962# CONFIG_HFS_FS is not set
963# CONFIG_HFSPLUS_FS is not set
964# CONFIG_BEFS_FS is not set
965# CONFIG_BFS_FS is not set
966# CONFIG_EFS_FS is not set
967CONFIG_JFFS2_FS=y
968CONFIG_JFFS2_FS_DEBUG=0
969CONFIG_JFFS2_FS_WRITEBUFFER=y
970CONFIG_JFFS2_SUMMARY=y
971# CONFIG_JFFS2_FS_XATTR is not set
972# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
973CONFIG_JFFS2_ZLIB=y
974CONFIG_JFFS2_RTIME=y
975# CONFIG_JFFS2_RUBIN is not set
976# CONFIG_CRAMFS is not set
977# CONFIG_VXFS_FS is not set
978# CONFIG_HPFS_FS is not set
979# CONFIG_QNX4FS_FS is not set
980# CONFIG_SYSV_FS is not set
981# CONFIG_UFS_FS is not set
982
983#
984# Network File Systems
985#
986CONFIG_NFS_FS=y
987# CONFIG_NFS_V3 is not set
988# CONFIG_NFS_V4 is not set
989# CONFIG_NFS_DIRECTIO is not set
990# CONFIG_NFSD is not set
991CONFIG_ROOT_NFS=y
992CONFIG_LOCKD=y
993CONFIG_NFS_COMMON=y
994CONFIG_SUNRPC=y
995# CONFIG_RPCSEC_GSS_KRB5 is not set
996# CONFIG_RPCSEC_GSS_SPKM3 is not set
997# CONFIG_SMB_FS is not set
998# CONFIG_CIFS is not set
999# CONFIG_NCP_FS is not set
1000# CONFIG_CODA_FS is not set
1001# CONFIG_AFS_FS is not set
1002# CONFIG_9P_FS is not set
1003
1004#
1005# Partition Types
1006#
1007# CONFIG_PARTITION_ADVANCED is not set
1008CONFIG_MSDOS_PARTITION=y
1009
1010#
1011# Native Language Support
1012#
1013# CONFIG_NLS is not set
1014
1015#
1016# Distributed Lock Manager
1017#
1018# CONFIG_DLM is not set
1019
1020#
1021# Library routines
1022#
1023CONFIG_BITREVERSE=y
1024# CONFIG_CRC_CCITT is not set
1025# CONFIG_CRC16 is not set
1026CONFIG_CRC32=y
1027# CONFIG_LIBCRC32C is not set
1028CONFIG_ZLIB_INFLATE=y
1029CONFIG_ZLIB_DEFLATE=y
1030CONFIG_PLIST=y
1031CONFIG_HAS_IOMEM=y
1032CONFIG_HAS_IOPORT=y
1033# CONFIG_PROFILING is not set
1034
1035#
1036# Kernel hacking
1037#
1038# CONFIG_PRINTK_TIME is not set
1039CONFIG_ENABLE_MUST_CHECK=y
1040# CONFIG_MAGIC_SYSRQ is not set
1041# CONFIG_UNUSED_SYMBOLS is not set
1042CONFIG_DEBUG_FS=y
1043# CONFIG_HEADERS_CHECK is not set
1044CONFIG_DEBUG_KERNEL=y
1045CONFIG_LOG_BUF_SHIFT=14
1046CONFIG_DETECT_SOFTLOCKUP=y
1047# CONFIG_SCHEDSTATS is not set
1048# CONFIG_DEBUG_SLAB is not set
1049# CONFIG_DEBUG_RT_MUTEXES is not set
1050# CONFIG_RT_MUTEX_TESTER is not set
1051# CONFIG_DEBUG_SPINLOCK is not set
1052CONFIG_DEBUG_MUTEXES=y
1053# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1054# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1055# CONFIG_DEBUG_KOBJECT is not set
1056# CONFIG_DEBUG_BUGVERBOSE is not set
1057CONFIG_DEBUG_INFO=y
1058# CONFIG_DEBUG_VM is not set
1059# CONFIG_DEBUG_LIST is not set
1060CONFIG_FORCED_INLINING=y
1061# CONFIG_RCU_TORTURE_TEST is not set
1062# CONFIG_KGDB is not set
1063# CONFIG_XMON is not set
1064CONFIG_BDI_SWITCH=y
1065# CONFIG_SERIAL_TEXT_DEBUG is not set
1066CONFIG_PPC_OCP=y
1067
1068#
1069# Security options
1070#
1071# CONFIG_KEYS is not set
1072# CONFIG_SECURITY is not set
1073
1074#
1075# Cryptographic options
1076#
1077# CONFIG_CRYPTO is not set
diff --git a/arch/ppc/kernel/setup.c b/arch/ppc/kernel/setup.c
index 3c506af19880..c79704f5409c 100644
--- a/arch/ppc/kernel/setup.c
+++ b/arch/ppc/kernel/setup.c
@@ -543,7 +543,7 @@ void __init setup_arch(char **cmdline_p)
543 init_mm.brk = (unsigned long) klimit; 543 init_mm.brk = (unsigned long) klimit;
544 544
545 /* Save unparsed command line copy for /proc/cmdline */ 545 /* Save unparsed command line copy for /proc/cmdline */
546 strlcpy(saved_command_line, cmd_line, COMMAND_LINE_SIZE); 546 strlcpy(boot_command_line, cmd_line, COMMAND_LINE_SIZE);
547 *cmdline_p = cmd_line; 547 *cmdline_p = cmd_line;
548 548
549 parse_early_param(); 549 parse_early_param();
diff --git a/arch/ppc/kernel/vmlinux.lds.S b/arch/ppc/kernel/vmlinux.lds.S
index 61921268a0d0..a0625562a44b 100644
--- a/arch/ppc/kernel/vmlinux.lds.S
+++ b/arch/ppc/kernel/vmlinux.lds.S
@@ -135,10 +135,12 @@ SECTIONS
135 .data.percpu : { *(.data.percpu) } 135 .data.percpu : { *(.data.percpu) }
136 __per_cpu_end = .; 136 __per_cpu_end = .;
137 137
138#ifdef CONFIG_BLK_DEV_INITRD
138 . = ALIGN(4096); 139 . = ALIGN(4096);
139 __initramfs_start = .; 140 __initramfs_start = .;
140 .init.ramfs : { *(.init.ramfs) } 141 .init.ramfs : { *(.init.ramfs) }
141 __initramfs_end = .; 142 __initramfs_end = .;
143#endif
142 144
143 . = ALIGN(4096); 145 . = ALIGN(4096);
144 __init_end = .; 146 __init_end = .;
diff --git a/arch/ppc/platforms/4xx/Kconfig b/arch/ppc/platforms/4xx/Kconfig
index 6980de420e92..705ae56016f0 100644
--- a/arch/ppc/platforms/4xx/Kconfig
+++ b/arch/ppc/platforms/4xx/Kconfig
@@ -98,6 +98,12 @@ config OCOTEA
98 help 98 help
99 This option enables support for the IBM PPC440GX evaluation board. 99 This option enables support for the IBM PPC440GX evaluation board.
100 100
101config TAISHAN
102 bool "Taishan"
103 select WANT_EARLY_SERIAL
104 help
105 This option enables support for the AMCC PPC440GX evaluation board.
106
101endchoice 107endchoice
102 108
103config EP405PC 109config EP405PC
@@ -126,7 +132,7 @@ config 440GP
126 132
127config 440GX 133config 440GX
128 bool 134 bool
129 depends on OCOTEA 135 depends on OCOTEA || TAISHAN
130 default y 136 default y
131 137
132config 440SP 138config 440SP
@@ -173,7 +179,7 @@ config BOOKE
173 179
174config IBM_OCP 180config IBM_OCP
175 bool 181 bool
176 depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT 182 depends on ASH || BAMBOO || BUBINGA || CPCI405 || EBONY || EP405 || LUAN || YUCCA || OCOTEA || REDWOOD_5 || REDWOOD_6 || SYCAMORE || TAISHAN || WALNUT
177 default y 183 default y
178 184
179config IBM_EMAC4 185config IBM_EMAC4
diff --git a/arch/ppc/platforms/4xx/Makefile b/arch/ppc/platforms/4xx/Makefile
index a04a0d0a0f5c..fa6610bccaf9 100644
--- a/arch/ppc/platforms/4xx/Makefile
+++ b/arch/ppc/platforms/4xx/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_OCOTEA) += ocotea.o
12obj-$(CONFIG_REDWOOD_5) += redwood5.o 12obj-$(CONFIG_REDWOOD_5) += redwood5.o
13obj-$(CONFIG_REDWOOD_6) += redwood6.o 13obj-$(CONFIG_REDWOOD_6) += redwood6.o
14obj-$(CONFIG_SYCAMORE) += sycamore.o 14obj-$(CONFIG_SYCAMORE) += sycamore.o
15obj-$(CONFIG_TAISHAN) += taishan.o
15obj-$(CONFIG_WALNUT) += walnut.o 16obj-$(CONFIG_WALNUT) += walnut.o
16obj-$(CONFIG_XILINX_ML300) += xilinx_ml300.o 17obj-$(CONFIG_XILINX_ML300) += xilinx_ml300.o
17obj-$(CONFIG_XILINX_ML403) += xilinx_ml403.o 18obj-$(CONFIG_XILINX_ML403) += xilinx_ml403.o
diff --git a/arch/ppc/platforms/4xx/taishan.c b/arch/ppc/platforms/4xx/taishan.c
new file mode 100644
index 000000000000..bb0253eef45a
--- /dev/null
+++ b/arch/ppc/platforms/4xx/taishan.c
@@ -0,0 +1,395 @@
1/*
2 * arch/ppc/platforms/4xx/taishan.c
3 *
4 * AMCC Taishan board specific routines
5 *
6 * Copyright 2007 DENX Software Engineering, Stefan Roese <sr@denx.de>
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
12 */
13
14#include <linux/stddef.h>
15#include <linux/kernel.h>
16#include <linux/init.h>
17#include <linux/errno.h>
18#include <linux/reboot.h>
19#include <linux/pci.h>
20#include <linux/kdev_t.h>
21#include <linux/types.h>
22#include <linux/major.h>
23#include <linux/blkdev.h>
24#include <linux/console.h>
25#include <linux/delay.h>
26#include <linux/ide.h>
27#include <linux/initrd.h>
28#include <linux/seq_file.h>
29#include <linux/root_dev.h>
30#include <linux/tty.h>
31#include <linux/serial.h>
32#include <linux/serial_core.h>
33#include <linux/platform_device.h>
34#include <linux/mtd/partitions.h>
35#include <linux/mtd/nand.h>
36#include <linux/mtd/ndfc.h>
37#include <linux/mtd/physmap.h>
38
39#include <asm/machdep.h>
40#include <asm/ocp.h>
41#include <asm/bootinfo.h>
42#include <asm/ppcboot.h>
43
44#include <syslib/gen550.h>
45#include <syslib/ibm440gx_common.h>
46
47extern bd_t __res;
48
49static struct ibm44x_clocks clocks __initdata;
50
51/*
52 * NOR FLASH configuration (using mtd physmap driver)
53 */
54
55/* start will be added dynamically, end is always fixed */
56static struct resource taishan_nor_resource = {
57 .start = TAISHAN_FLASH_ADDR,
58 .end = 0x1ffffffffULL,
59 .flags = IORESOURCE_MEM,
60};
61
62#define RW_PART0_OF 0
63#define RW_PART0_SZ 0x180000
64#define RW_PART1_SZ 0x200000
65/* Partition 2 will be autosized dynamically... */
66#define RW_PART3_SZ 0x80000
67#define RW_PART4_SZ 0x40000
68
69static struct mtd_partition taishan_nor_parts[] = {
70 {
71 .name = "kernel",
72 .offset = 0,
73 .size = RW_PART0_SZ
74 },
75 {
76 .name = "root",
77 .offset = MTDPART_OFS_APPEND,
78 .size = RW_PART1_SZ,
79 },
80 {
81 .name = "user",
82 .offset = MTDPART_OFS_APPEND,
83/* .size = RW_PART2_SZ */ /* will be adjusted dynamically */
84 },
85 {
86 .name = "env",
87 .offset = MTDPART_OFS_APPEND,
88 .size = RW_PART3_SZ,
89 },
90 {
91 .name = "u-boot",
92 .offset = MTDPART_OFS_APPEND,
93 .size = RW_PART4_SZ,
94 }
95};
96
97static struct physmap_flash_data taishan_nor_data = {
98 .width = 4,
99 .parts = taishan_nor_parts,
100 .nr_parts = ARRAY_SIZE(taishan_nor_parts),
101};
102
103static struct platform_device taishan_nor_device = {
104 .name = "physmap-flash",
105 .id = 0,
106 .dev = {
107 .platform_data = &taishan_nor_data,
108 },
109 .num_resources = 1,
110 .resource = &taishan_nor_resource,
111};
112
113static int taishan_setup_flash(void)
114{
115 /*
116 * Adjust partition 2 to flash size
117 */
118 taishan_nor_parts[2].size = __res.bi_flashsize -
119 RW_PART0_SZ - RW_PART1_SZ - RW_PART3_SZ - RW_PART4_SZ;
120
121 platform_device_register(&taishan_nor_device);
122
123 return 0;
124}
125arch_initcall(taishan_setup_flash);
126
127static void __init
128taishan_calibrate_decr(void)
129{
130 unsigned int freq;
131
132 if (mfspr(SPRN_CCR1) & CCR1_TCS)
133 freq = TAISHAN_TMR_CLK;
134 else
135 freq = clocks.cpu;
136
137 ibm44x_calibrate_decr(freq);
138}
139
140static int
141taishan_show_cpuinfo(struct seq_file *m)
142{
143 seq_printf(m, "vendor\t\t: AMCC\n");
144 seq_printf(m, "machine\t\t: PPC440GX EVB (Taishan)\n");
145 ibm440gx_show_cpuinfo(m);
146 return 0;
147}
148
149static inline int
150taishan_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
151{
152 static char pci_irq_table[][4] =
153 /*
154 * PCI IDSEL/INTPIN->INTLINE
155 * A B C D
156 */
157 {
158 { 23, 24, 25, 26 }, /* IDSEL 1 - PCI Slot 0 */
159 { 24, 25, 26, 23 }, /* IDSEL 2 - PCI Slot 1 */
160 };
161
162 const long min_idsel = 1, max_idsel = 2, irqs_per_slot = 4;
163 return PCI_IRQ_TABLE_LOOKUP;
164}
165
166static void __init taishan_set_emacdata(void)
167{
168 struct ocp_def *def;
169 struct ocp_func_emac_data *emacdata;
170 int i;
171
172 /* Set phy_map, phy_mode, and mac_addr for each EMAC */
173 for (i=2; i<4; i++) {
174 def = ocp_get_one_device(OCP_VENDOR_IBM, OCP_FUNC_EMAC, i);
175 emacdata = def->additions;
176 if (i < 2) {
177 emacdata->phy_map = 0x00000001; /* Skip 0x00 */
178 emacdata->phy_mode = PHY_MODE_SMII;
179 } else {
180 emacdata->phy_map = 0x00000001; /* Skip 0x00 */
181 emacdata->phy_mode = PHY_MODE_RGMII;
182 }
183 if (i == 0)
184 memcpy(emacdata->mac_addr, "\0\0\0\0\0\0", 6);
185 else if (i == 1)
186 memcpy(emacdata->mac_addr, "\0\0\0\0\0\0", 6);
187 else if (i == 2)
188 memcpy(emacdata->mac_addr, __res.bi_enetaddr, 6);
189 else if (i == 3)
190 memcpy(emacdata->mac_addr, __res.bi_enet1addr, 6);
191 }
192}
193
194#define PCIX_READW(offset) \
195 (readw(pcix_reg_base+offset))
196
197#define PCIX_WRITEW(value, offset) \
198 (writew(value, pcix_reg_base+offset))
199
200#define PCIX_WRITEL(value, offset) \
201 (writel(value, pcix_reg_base+offset))
202
203/*
204 * FIXME: This is only here to "make it work". This will move
205 * to a ibm_pcix.c which will contain a generic IBM PCIX bridge
206 * configuration library. -Matt
207 */
208static void __init
209taishan_setup_pcix(void)
210{
211 void *pcix_reg_base;
212
213 pcix_reg_base = ioremap64(PCIX0_REG_BASE, PCIX_REG_SIZE);
214
215 /* Enable PCIX0 I/O, Mem, and Busmaster cycles */
216 PCIX_WRITEW(PCIX_READW(PCIX0_COMMAND) | PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER, PCIX0_COMMAND);
217
218 /* Disable all windows */
219 PCIX_WRITEL(0, PCIX0_POM0SA);
220 PCIX_WRITEL(0, PCIX0_POM1SA);
221 PCIX_WRITEL(0, PCIX0_POM2SA);
222 PCIX_WRITEL(0, PCIX0_PIM0SA);
223 PCIX_WRITEL(0, PCIX0_PIM0SAH);
224 PCIX_WRITEL(0, PCIX0_PIM1SA);
225 PCIX_WRITEL(0, PCIX0_PIM2SA);
226 PCIX_WRITEL(0, PCIX0_PIM2SAH);
227
228 /* Setup 2GB PLB->PCI outbound mem window (3_8000_0000->0_8000_0000) */
229 PCIX_WRITEL(0x00000003, PCIX0_POM0LAH);
230 PCIX_WRITEL(0x80000000, PCIX0_POM0LAL);
231 PCIX_WRITEL(0x00000000, PCIX0_POM0PCIAH);
232 PCIX_WRITEL(0x80000000, PCIX0_POM0PCIAL);
233 PCIX_WRITEL(0x80000001, PCIX0_POM0SA);
234
235 /* Setup 2GB PCI->PLB inbound memory window at 0, enable MSIs */
236 PCIX_WRITEL(0x00000000, PCIX0_PIM0LAH);
237 PCIX_WRITEL(0x00000000, PCIX0_PIM0LAL);
238 PCIX_WRITEL(0xe0000007, PCIX0_PIM0SA);
239 PCIX_WRITEL(0xffffffff, PCIX0_PIM0SAH);
240
241 iounmap(pcix_reg_base);
242
243 eieio();
244}
245
246static void __init
247taishan_setup_hose(void)
248{
249 struct pci_controller *hose;
250
251 /* Configure windows on the PCI-X host bridge */
252 taishan_setup_pcix();
253
254 hose = pcibios_alloc_controller();
255
256 if (!hose)
257 return;
258
259 hose->first_busno = 0;
260 hose->last_busno = 0xff;
261
262 hose->pci_mem_offset = TAISHAN_PCI_MEM_OFFSET;
263
264 pci_init_resource(&hose->io_resource,
265 TAISHAN_PCI_LOWER_IO,
266 TAISHAN_PCI_UPPER_IO,
267 IORESOURCE_IO,
268 "PCI host bridge");
269
270 pci_init_resource(&hose->mem_resources[0],
271 TAISHAN_PCI_LOWER_MEM,
272 TAISHAN_PCI_UPPER_MEM,
273 IORESOURCE_MEM,
274 "PCI host bridge");
275
276 hose->io_space.start = TAISHAN_PCI_LOWER_IO;
277 hose->io_space.end = TAISHAN_PCI_UPPER_IO;
278 hose->mem_space.start = TAISHAN_PCI_LOWER_MEM;
279 hose->mem_space.end = TAISHAN_PCI_UPPER_MEM;
280 hose->io_base_virt = ioremap64(TAISHAN_PCI_IO_BASE, TAISHAN_PCI_IO_SIZE);
281 isa_io_base = (unsigned long) hose->io_base_virt;
282
283 setup_indirect_pci(hose,
284 TAISHAN_PCI_CFGA_PLB32,
285 TAISHAN_PCI_CFGD_PLB32);
286 hose->set_cfg_type = 1;
287
288 hose->last_busno = pciauto_bus_scan(hose, hose->first_busno);
289
290 ppc_md.pci_swizzle = common_swizzle;
291 ppc_md.pci_map_irq = taishan_map_irq;
292}
293
294
295static void __init
296taishan_early_serial_map(void)
297{
298 struct uart_port port;
299
300 /* Setup ioremapped serial port access */
301 memset(&port, 0, sizeof(port));
302 port.membase = ioremap64(PPC440GX_UART0_ADDR, 8);
303 port.irq = UART0_INT;
304 port.uartclk = clocks.uart0;
305 port.regshift = 0;
306 port.iotype = UPIO_MEM;
307 port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST;
308 port.line = 0;
309
310 if (early_serial_setup(&port) != 0)
311 printk("Early serial init of port 0 failed\n");
312
313#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
314 /* Configure debug serial access */
315 gen550_init(0, &port);
316
317 /* Purge TLB entry added in head_44x.S for early serial access */
318 _tlbie(UART0_IO_BASE);
319#endif
320
321 port.membase = ioremap64(PPC440GX_UART1_ADDR, 8);
322 port.irq = UART1_INT;
323 port.uartclk = clocks.uart1;
324 port.line = 1;
325
326 if (early_serial_setup(&port) != 0)
327 printk("Early serial init of port 1 failed\n");
328
329#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
330 /* Configure debug serial access */
331 gen550_init(1, &port);
332#endif
333}
334
335static void __init
336taishan_setup_arch(void)
337{
338 taishan_set_emacdata();
339
340 ibm440gx_tah_enable();
341
342 /*
343 * Determine various clocks.
344 * To be completely correct we should get SysClk
345 * from FPGA, because it can be changed by on-board switches
346 * --ebs
347 */
348 ibm440gx_get_clocks(&clocks, 33333333, 6 * 1843200);
349 ocp_sys_info.opb_bus_freq = clocks.opb;
350
351 /* init to some ~sane value until calibrate_delay() runs */
352 loops_per_jiffy = 50000000/HZ;
353
354 /* Setup PCI host bridge */
355 taishan_setup_hose();
356
357#ifdef CONFIG_BLK_DEV_INITRD
358 if (initrd_start)
359 ROOT_DEV = Root_RAM0;
360 else
361#endif
362#ifdef CONFIG_ROOT_NFS
363 ROOT_DEV = Root_NFS;
364#else
365 ROOT_DEV = Root_HDA1;
366#endif
367
368 taishan_early_serial_map();
369
370 /* Identify the system */
371 printk("AMCC PowerPC 440GX Taishan Platform\n");
372}
373
374static void __init taishan_init(void)
375{
376 ibm440gx_l2c_setup(&clocks);
377}
378
379void __init platform_init(unsigned long r3, unsigned long r4,
380 unsigned long r5, unsigned long r6, unsigned long r7)
381{
382 ibm44x_platform_init(r3, r4, r5, r6, r7);
383
384 ppc_md.setup_arch = taishan_setup_arch;
385 ppc_md.show_cpuinfo = taishan_show_cpuinfo;
386 ppc_md.get_irq = NULL; /* Set in ppc4xx_pic_init() */
387
388 ppc_md.calibrate_decr = taishan_calibrate_decr;
389
390#ifdef CONFIG_KGDB
391 ppc_md.early_serial_map = taishan_early_serial_map;
392#endif
393 ppc_md.init = taishan_init;
394}
395
diff --git a/arch/ppc/platforms/4xx/taishan.h b/arch/ppc/platforms/4xx/taishan.h
new file mode 100644
index 000000000000..ea7561a80457
--- /dev/null
+++ b/arch/ppc/platforms/4xx/taishan.h
@@ -0,0 +1,67 @@
1/*
2 * arch/ppc/platforms/4xx/taishan.h
3 *
4 * AMCC Taishan board definitions
5 *
6 * Copyright 2007 DENX Software Engineering, Stefan Roese <sr@denx.de>
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
12 *
13 */
14
15#ifdef __KERNEL__
16#ifndef __ASM_TAISHAN_H__
17#define __ASM_TAISHAN_H__
18
19#include <platforms/4xx/ibm440gx.h>
20
21/* External timer clock frequency */
22#define TAISHAN_TMR_CLK 25000000
23
24/* Flash */
25#define TAISHAN_FPGA_ADDR 0x0000000141000000ULL
26#define TAISHAN_LCM_ADDR 0x0000000142000000ULL
27#define TAISHAN_FLASH_ADDR 0x00000001fc000000ULL
28#define TAISHAN_FLASH_SIZE 0x4000000
29
30/*
31 * Serial port defines
32 */
33#define RS_TABLE_SIZE 2
34
35/* head_44x.S created UART mapping, used before early_serial_setup.
36 * We cannot use default OpenBIOS UART mappings because they
37 * don't work for configurations with more than 512M RAM. --ebs
38 */
39#define UART0_IO_BASE 0xF0000200
40#define UART1_IO_BASE 0xF0000300
41
42#define BASE_BAUD 11059200/16
43#define STD_UART_OP(num) \
44 { 0, BASE_BAUD, 0, UART##num##_INT, \
45 (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST), \
46 iomem_base: (void*)UART##num##_IO_BASE, \
47 io_type: SERIAL_IO_MEM},
48
49#define SERIAL_PORT_DFNS \
50 STD_UART_OP(0) \
51 STD_UART_OP(1)
52
53/* PCI support */
54#define TAISHAN_PCI_LOWER_IO 0x00000000
55#define TAISHAN_PCI_UPPER_IO 0x0000ffff
56#define TAISHAN_PCI_LOWER_MEM 0x80000000
57#define TAISHAN_PCI_UPPER_MEM 0xffffefff
58
59#define TAISHAN_PCI_CFGA_PLB32 0x0ec00000
60#define TAISHAN_PCI_CFGD_PLB32 0x0ec00004
61
62#define TAISHAN_PCI_IO_BASE 0x0000000208000000ULL
63#define TAISHAN_PCI_IO_SIZE 0x00010000
64#define TAISHAN_PCI_MEM_OFFSET 0x00000000
65
66#endif /* __ASM_TAISHAN_H__ */
67#endif /* __KERNEL__ */
diff --git a/arch/ppc/platforms/lopec.c b/arch/ppc/platforms/lopec.c
index 18dc6e8dd4f4..b947c774f524 100644
--- a/arch/ppc/platforms/lopec.c
+++ b/arch/ppc/platforms/lopec.c
@@ -344,7 +344,7 @@ lopec_setup_arch(void)
344 if (bootargs != NULL) { 344 if (bootargs != NULL) {
345 strcpy(cmd_line, bootargs); 345 strcpy(cmd_line, bootargs);
346 /* again.. */ 346 /* again.. */
347 strcpy(saved_command_line, cmd_line); 347 strcpy(boot_command_line, cmd_line);
348 } 348 }
349 } 349 }
350#endif 350#endif
diff --git a/arch/ppc/platforms/pplus.c b/arch/ppc/platforms/pplus.c
index 9778105d4dfe..8a1788c48155 100644
--- a/arch/ppc/platforms/pplus.c
+++ b/arch/ppc/platforms/pplus.c
@@ -592,7 +592,7 @@ static void __init pplus_setup_arch(void)
592 if (bootargs != NULL) { 592 if (bootargs != NULL) {
593 strcpy(cmd_line, bootargs); 593 strcpy(cmd_line, bootargs);
594 /* again.. */ 594 /* again.. */
595 strcpy(saved_command_line, cmd_line); 595 strcpy(boot_command_line, cmd_line);
596 } 596 }
597 } 597 }
598#endif 598#endif
diff --git a/arch/ppc/platforms/prep_setup.c b/arch/ppc/platforms/prep_setup.c
index 1cb75a1f825e..f166299571d6 100644
--- a/arch/ppc/platforms/prep_setup.c
+++ b/arch/ppc/platforms/prep_setup.c
@@ -634,7 +634,7 @@ static void __init prep_init_sound(void)
634 /* 634 /*
635 * Find a way to push these informations to the cs4232 driver 635 * Find a way to push these informations to the cs4232 driver
636 * Give it out with printk, when not in cmd_line? 636 * Give it out with printk, when not in cmd_line?
637 * Append it to cmd_line and saved_command_line? 637 * Append it to cmd_line and boot_command_line?
638 * Format is cs4232=io,irq,dma,dma2 638 * Format is cs4232=io,irq,dma,dma2
639 */ 639 */
640} 640}
@@ -897,7 +897,7 @@ prep_setup_arch(void)
897 if (bootargs != NULL) { 897 if (bootargs != NULL) {
898 strcpy(cmd_line, bootargs); 898 strcpy(cmd_line, bootargs);
899 /* again.. */ 899 /* again.. */
900 strcpy(saved_command_line, cmd_line); 900 strcpy(boot_command_line, cmd_line);
901 } 901 }
902 } 902 }
903 903
diff --git a/arch/ppc/syslib/Makefile b/arch/ppc/syslib/Makefile
index d84f04666972..09911118c675 100644
--- a/arch/ppc/syslib/Makefile
+++ b/arch/ppc/syslib/Makefile
@@ -69,6 +69,7 @@ obj-$(CONFIG_SANDPOINT) += pci_auto.o todc_time.o
69obj-$(CONFIG_SBC82xx) += todc_time.o 69obj-$(CONFIG_SBC82xx) += todc_time.o
70obj-$(CONFIG_SPRUCE) += cpc700_pic.o pci_auto.o \ 70obj-$(CONFIG_SPRUCE) += cpc700_pic.o pci_auto.o \
71 todc_time.o 71 todc_time.o
72obj-$(CONFIG_TAISHAN) += pci_auto.o
72obj-$(CONFIG_8260) += m8260_setup.o pq2_devices.o pq2_sys.o \ 73obj-$(CONFIG_8260) += m8260_setup.o pq2_devices.o pq2_sys.o \
73 ppc_sys.o 74 ppc_sys.o
74obj-$(CONFIG_PCI_8260) += m82xx_pci.o pci_auto.o 75obj-$(CONFIG_PCI_8260) += m82xx_pci.o pci_auto.o
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index eaed402ad346..eaaac3788110 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -7,6 +7,10 @@ config MMU
7 bool 7 bool
8 default y 8 default y
9 9
10config ZONE_DMA
11 bool
12 default y
13
10config LOCKDEP_SUPPORT 14config LOCKDEP_SUPPORT
11 bool 15 bool
12 default y 16 default y
@@ -37,6 +41,9 @@ config GENERIC_HWEIGHT
37config GENERIC_TIME 41config GENERIC_TIME
38 def_bool y 42 def_bool y
39 43
44config NO_IOMEM
45 def_bool y
46
40mainmenu "Linux Kernel Configuration" 47mainmenu "Linux Kernel Configuration"
41 48
42config S390 49config S390
diff --git a/arch/s390/defconfig b/arch/s390/defconfig
index 7c621b8ef683..1406400bf3ea 100644
--- a/arch/s390/defconfig
+++ b/arch/s390/defconfig
@@ -179,6 +179,8 @@ CONFIG_XFRM=y
179# CONFIG_XFRM_USER is not set 179# CONFIG_XFRM_USER is not set
180# CONFIG_XFRM_SUB_POLICY is not set 180# CONFIG_XFRM_SUB_POLICY is not set
181CONFIG_NET_KEY=y 181CONFIG_NET_KEY=y
182CONFIG_IUCV=m
183CONFIG_AFIUCV=m
182CONFIG_INET=y 184CONFIG_INET=y
183CONFIG_IP_MULTICAST=y 185CONFIG_IP_MULTICAST=y
184# CONFIG_IP_ADVANCED_ROUTER is not set 186# CONFIG_IP_ADVANCED_ROUTER is not set
@@ -508,7 +510,6 @@ CONFIG_NET_ETHERNET=y
508# 510#
509CONFIG_LCS=m 511CONFIG_LCS=m
510CONFIG_CTC=m 512CONFIG_CTC=m
511CONFIG_IUCV=m
512# CONFIG_NETIUCV is not set 513# CONFIG_NETIUCV is not set
513# CONFIG_SMSGIUCV is not set 514# CONFIG_SMSGIUCV is not set
514# CONFIG_CLAW is not set 515# CONFIG_CLAW is not set
diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c
index a4fda7b53640..ba5d3167df0d 100644
--- a/arch/s390/hypfs/inode.c
+++ b/arch/s390/hypfs/inode.c
@@ -34,7 +34,7 @@ struct hypfs_sb_info {
34 struct mutex lock; /* lock to protect update process */ 34 struct mutex lock; /* lock to protect update process */
35}; 35};
36 36
37static struct file_operations hypfs_file_ops; 37static const struct file_operations hypfs_file_ops;
38static struct file_system_type hypfs_type; 38static struct file_system_type hypfs_type;
39static struct super_operations hypfs_s_ops; 39static struct super_operations hypfs_s_ops;
40 40
@@ -440,7 +440,7 @@ struct dentry *hypfs_create_str(struct super_block *sb, struct dentry *dir,
440 return dentry; 440 return dentry;
441} 441}
442 442
443static struct file_operations hypfs_file_ops = { 443static const struct file_operations hypfs_file_ops = {
444 .open = hypfs_open, 444 .open = hypfs_open,
445 .release = hypfs_release, 445 .release = hypfs_release,
446 .read = do_sync_read, 446 .read = do_sync_read,
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c
index 666bb6daa148..664c669b1856 100644
--- a/arch/s390/kernel/compat_linux.c
+++ b/arch/s390/kernel/compat_linux.c
@@ -398,51 +398,6 @@ int cp_compat_stat(struct kstat *stat, struct compat_stat __user *statbuf)
398 return err; 398 return err;
399} 399}
400 400
401struct sysinfo32 {
402 s32 uptime;
403 u32 loads[3];
404 u32 totalram;
405 u32 freeram;
406 u32 sharedram;
407 u32 bufferram;
408 u32 totalswap;
409 u32 freeswap;
410 unsigned short procs;
411 unsigned short pads;
412 u32 totalhigh;
413 u32 freehigh;
414 unsigned int mem_unit;
415 char _f[8];
416};
417
418asmlinkage long sys32_sysinfo(struct sysinfo32 __user *info)
419{
420 struct sysinfo s;
421 int ret, err;
422 mm_segment_t old_fs = get_fs ();
423
424 set_fs (KERNEL_DS);
425 ret = sys_sysinfo((struct sysinfo __force __user *) &s);
426 set_fs (old_fs);
427 err = put_user (s.uptime, &info->uptime);
428 err |= __put_user (s.loads[0], &info->loads[0]);
429 err |= __put_user (s.loads[1], &info->loads[1]);
430 err |= __put_user (s.loads[2], &info->loads[2]);
431 err |= __put_user (s.totalram, &info->totalram);
432 err |= __put_user (s.freeram, &info->freeram);
433 err |= __put_user (s.sharedram, &info->sharedram);
434 err |= __put_user (s.bufferram, &info->bufferram);
435 err |= __put_user (s.totalswap, &info->totalswap);
436 err |= __put_user (s.freeswap, &info->freeswap);
437 err |= __put_user (s.procs, &info->procs);
438 err |= __put_user (s.totalhigh, &info->totalhigh);
439 err |= __put_user (s.freehigh, &info->freehigh);
440 err |= __put_user (s.mem_unit, &info->mem_unit);
441 if (err)
442 return -EFAULT;
443 return ret;
444}
445
446asmlinkage long sys32_sched_rr_get_interval(compat_pid_t pid, 401asmlinkage long sys32_sched_rr_get_interval(compat_pid_t pid,
447 struct compat_timespec __user *interval) 402 struct compat_timespec __user *interval)
448{ 403{
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
index 71e54ef0931e..97901296894e 100644
--- a/arch/s390/kernel/compat_wrapper.S
+++ b/arch/s390/kernel/compat_wrapper.S
@@ -517,10 +517,10 @@ sys32_swapoff_wrapper:
517 llgtr %r2,%r2 # const char * 517 llgtr %r2,%r2 # const char *
518 jg sys_swapoff # branch to system call 518 jg sys_swapoff # branch to system call
519 519
520 .globl sys32_sysinfo_wrapper 520 .globl compat_sys_sysinfo_wrapper
521sys32_sysinfo_wrapper: 521compat_sys_sysinfo_wrapper:
522 llgtr %r2,%r2 # struct sysinfo_emu31 * 522 llgtr %r2,%r2 # struct sysinfo_emu31 *
523 jg sys32_sysinfo # branch to system call 523 jg compat_sys_sysinfo # branch to system call
524 524
525 .globl sys32_ipc_wrapper 525 .globl sys32_ipc_wrapper
526sys32_ipc_wrapper: 526sys32_ipc_wrapper:
diff --git a/arch/s390/kernel/debug.c b/arch/s390/kernel/debug.c
index f4b62df02aa2..51653d82d7df 100644
--- a/arch/s390/kernel/debug.c
+++ b/arch/s390/kernel/debug.c
@@ -167,7 +167,7 @@ static DECLARE_MUTEX(debug_lock);
167 167
168static int initialized; 168static int initialized;
169 169
170static struct file_operations debug_file_ops = { 170static const struct file_operations debug_file_ops = {
171 .owner = THIS_MODULE, 171 .owner = THIS_MODULE,
172 .read = debug_output, 172 .read = debug_output,
173 .write = debug_input, 173 .write = debug_input,
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
index 03739813d3bf..50c5210fbc64 100644
--- a/arch/s390/kernel/setup.c
+++ b/arch/s390/kernel/setup.c
@@ -740,7 +740,7 @@ setup_arch(char **cmdline_p)
740#endif /* CONFIG_64BIT */ 740#endif /* CONFIG_64BIT */
741 741
742 /* Save unparsed command line copy for /proc/cmdline */ 742 /* Save unparsed command line copy for /proc/cmdline */
743 strlcpy(saved_command_line, COMMAND_LINE, COMMAND_LINE_SIZE); 743 strlcpy(boot_command_line, COMMAND_LINE, COMMAND_LINE_SIZE);
744 744
745 *cmdline_p = COMMAND_LINE; 745 *cmdline_p = COMMAND_LINE;
746 *(*cmdline_p + COMMAND_LINE_SIZE - 1) = '\0'; 746 *(*cmdline_p + COMMAND_LINE_SIZE - 1) = '\0';
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 65b52320d145..83a4ea6e3d60 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -57,7 +57,7 @@ static void smp_ext_bitcall(int, ec_bit_sig);
57static void smp_ext_bitcall_others(ec_bit_sig); 57static void smp_ext_bitcall_others(ec_bit_sig);
58 58
59/* 59/*
605B * Structure and data for smp_call_function(). This is designed to minimise 60 * Structure and data for smp_call_function(). This is designed to minimise
61 * static memory requirements. It also looks cleaner. 61 * static memory requirements. It also looks cleaner.
62 */ 62 */
63static DEFINE_SPINLOCK(call_lock); 63static DEFINE_SPINLOCK(call_lock);
@@ -104,7 +104,7 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
104 * remote CPUs are nearly ready to execute <<func>> or are or have executed. 104 * remote CPUs are nearly ready to execute <<func>> or are or have executed.
105 * 105 *
106 * You must not call this function with disabled interrupts or from a 106 * You must not call this function with disabled interrupts or from a
107 * hardware interrupt handler or from a bottom half handler. 107 * hardware interrupt handler.
108 */ 108 */
109{ 109{
110 struct call_data_struct data; 110 struct call_data_struct data;
@@ -113,8 +113,8 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
113 if (cpus <= 0) 113 if (cpus <= 0)
114 return 0; 114 return 0;
115 115
116 /* Can deadlock when called with interrupts disabled */ 116 /* Can deadlock when interrupts are disabled or if in wrong context */
117 WARN_ON(irqs_disabled()); 117 WARN_ON(irqs_disabled() || in_irq());
118 118
119 data.func = func; 119 data.func = func;
120 data.info = info; 120 data.info = info;
@@ -123,7 +123,7 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
123 if (wait) 123 if (wait)
124 atomic_set(&data.finished, 0); 124 atomic_set(&data.finished, 0);
125 125
126 spin_lock(&call_lock); 126 spin_lock_bh(&call_lock);
127 call_data = &data; 127 call_data = &data;
128 /* Send a message to all other CPUs and wait for them to respond */ 128 /* Send a message to all other CPUs and wait for them to respond */
129 smp_ext_bitcall_others(ec_call_function); 129 smp_ext_bitcall_others(ec_call_function);
@@ -135,7 +135,7 @@ int smp_call_function (void (*func) (void *info), void *info, int nonatomic,
135 if (wait) 135 if (wait)
136 while (atomic_read(&data.finished) != cpus) 136 while (atomic_read(&data.finished) != cpus)
137 cpu_relax(); 137 cpu_relax();
138 spin_unlock(&call_lock); 138 spin_unlock_bh(&call_lock);
139 139
140 return 0; 140 return 0;
141} 141}
@@ -159,6 +159,9 @@ int smp_call_function_on(void (*func) (void *info), void *info,
159 if (!cpu_online(cpu)) 159 if (!cpu_online(cpu))
160 return -EINVAL; 160 return -EINVAL;
161 161
162 /* Can deadlock when interrupts are disabled or if in wrong context */
163 WARN_ON(irqs_disabled() || in_irq());
164
162 /* disable preemption for local function call */ 165 /* disable preemption for local function call */
163 curr_cpu = get_cpu(); 166 curr_cpu = get_cpu();
164 167
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
index a4ceae3dbcf1..a52c44455bf0 100644
--- a/arch/s390/kernel/syscalls.S
+++ b/arch/s390/kernel/syscalls.S
@@ -124,7 +124,7 @@ NI_SYSCALL /* old "idle" system call */
124NI_SYSCALL /* vm86old for i386 */ 124NI_SYSCALL /* vm86old for i386 */
125SYSCALL(sys_wait4,sys_wait4,compat_sys_wait4_wrapper) 125SYSCALL(sys_wait4,sys_wait4,compat_sys_wait4_wrapper)
126SYSCALL(sys_swapoff,sys_swapoff,sys32_swapoff_wrapper) /* 115 */ 126SYSCALL(sys_swapoff,sys_swapoff,sys32_swapoff_wrapper) /* 115 */
127SYSCALL(sys_sysinfo,sys_sysinfo,sys32_sysinfo_wrapper) 127SYSCALL(sys_sysinfo,sys_sysinfo,compat_sys_sysinfo_wrapper)
128SYSCALL(sys_ipc,sys_ipc,sys32_ipc_wrapper) 128SYSCALL(sys_ipc,sys_ipc,sys32_ipc_wrapper)
129SYSCALL(sys_fsync,sys_fsync,sys32_fsync_wrapper) 129SYSCALL(sys_fsync,sys_fsync,sys32_fsync_wrapper)
130SYSCALL(sys_sigreturn_glue,sys_sigreturn_glue,sys32_sigreturn_glue) 130SYSCALL(sys_sigreturn_glue,sys_sigreturn_glue,sys32_sigreturn_glue)
diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S
index a48907392522..c30716ae130c 100644
--- a/arch/s390/kernel/vmlinux.lds.S
+++ b/arch/s390/kernel/vmlinux.lds.S
@@ -91,11 +91,14 @@ SECTIONS
91 .con_initcall.init : { *(.con_initcall.init) } 91 .con_initcall.init : { *(.con_initcall.init) }
92 __con_initcall_end = .; 92 __con_initcall_end = .;
93 SECURITY_INIT 93 SECURITY_INIT
94
95#ifdef CONFIG_BLK_DEV_INITRD
94 . = ALIGN(256); 96 . = ALIGN(256);
95 __initramfs_start = .; 97 __initramfs_start = .;
96 .init.ramfs : { *(.init.initramfs) } 98 .init.ramfs : { *(.init.initramfs) }
97 . = ALIGN(2); 99 . = ALIGN(2);
98 __initramfs_end = .; 100 __initramfs_end = .;
101#endif
99 . = ALIGN(256); 102 . = ALIGN(256);
100 __per_cpu_start = .; 103 __per_cpu_start = .;
101 .data.percpu : { *(.data.percpu) } 104 .data.percpu : { *(.data.percpu) }
diff --git a/arch/s390/mm/Makefile b/arch/s390/mm/Makefile
index 8e09db1edbb9..f95449b29fa5 100644
--- a/arch/s390/mm/Makefile
+++ b/arch/s390/mm/Makefile
@@ -2,6 +2,6 @@
2# Makefile for the linux s390-specific parts of the memory manager. 2# Makefile for the linux s390-specific parts of the memory manager.
3# 3#
4 4
5obj-y := init.o fault.o ioremap.o extmem.o mmap.o vmem.o 5obj-y := init.o fault.o extmem.o mmap.o vmem.o
6obj-$(CONFIG_CMM) += cmm.o 6obj-$(CONFIG_CMM) += cmm.o
7 7
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index 9ff143e87746..641aef36ccc4 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -83,12 +83,10 @@ static inline int notify_page_fault(enum die_val val, const char *str,
83} 83}
84#endif 84#endif
85 85
86extern spinlock_t timerlist_lock;
87 86
88/* 87/*
89 * Unlock any spinlocks which will prevent us from getting the 88 * Unlock any spinlocks which will prevent us from getting the
90 * message out (timerlist_lock is acquired through the 89 * message out.
91 * console unblank code)
92 */ 90 */
93void bust_spinlocks(int yes) 91void bust_spinlocks(int yes)
94{ 92{
diff --git a/arch/s390/mm/ioremap.c b/arch/s390/mm/ioremap.c
deleted file mode 100644
index 3d2100a4e209..000000000000
--- a/arch/s390/mm/ioremap.c
+++ /dev/null
@@ -1,58 +0,0 @@
1/*
2 * arch/s390/mm/ioremap.c
3 *
4 * S390 version
5 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
6 * Author(s): Hartmut Penner (hp@de.ibm.com)
7 *
8 * Derived from "arch/i386/mm/extable.c"
9 * (C) Copyright 1995 1996 Linus Torvalds
10 *
11 * Re-map IO memory to kernel address space so that we can access it.
12 * This is needed for high PCI addresses that aren't mapped in the
13 * 640k-1MB IO memory area on PC's
14 */
15
16#include <linux/vmalloc.h>
17#include <linux/mm.h>
18#include <linux/io.h>
19#include <asm/pgalloc.h>
20
21/*
22 * Generic mapping function (not visible outside):
23 */
24
25/*
26 * Remap an arbitrary physical address space into the kernel virtual
27 * address space. Needed when the kernel wants to access high addresses
28 * directly.
29 */
30void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)
31{
32 void * addr;
33 struct vm_struct * area;
34
35 if (phys_addr < virt_to_phys(high_memory))
36 return phys_to_virt(phys_addr);
37 if (phys_addr & ~PAGE_MASK)
38 return NULL;
39 size = PAGE_ALIGN(size);
40 if (!size || size > phys_addr + size)
41 return NULL;
42 area = get_vm_area(size, VM_IOREMAP);
43 if (!area)
44 return NULL;
45 addr = area->addr;
46 if (ioremap_page_range((unsigned long)addr, (unsigned long)addr + size,
47 phys_addr, __pgprot(flags))) {
48 vfree(addr);
49 return NULL;
50 }
51 return addr;
52}
53
54void iounmap(void *addr)
55{
56 if (addr > high_memory)
57 vfree(addr);
58}
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 3aa3b885ab36..4f3891215b87 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -48,6 +48,9 @@ config GENERIC_IOMAP
48config GENERIC_TIME 48config GENERIC_TIME
49 def_bool n 49 def_bool n
50 50
51config SYS_SUPPORTS_APM_EMULATION
52 bool
53
51config ARCH_MAY_HAVE_PC_FDC 54config ARCH_MAY_HAVE_PC_FDC
52 bool 55 bool
53 56
@@ -126,6 +129,7 @@ config SH_7751_SYSTEMH
126 129
127config SH_HP6XX 130config SH_HP6XX
128 bool "HP6XX" 131 bool "HP6XX"
132 select SYS_SUPPORTS_APM_EMULATION
129 help 133 help
130 Select HP6XX if configuring for a HP jornada HP6xx. 134 Select HP6XX if configuring for a HP jornada HP6xx.
131 More information (hardware only) at 135 More information (hardware only) at
@@ -694,9 +698,6 @@ depends on EXPERIMENTAL
694 698
695source kernel/power/Kconfig 699source kernel/power/Kconfig
696 700
697config APM
698 bool "Advanced Power Management Emulation"
699 depends on PM
700endmenu 701endmenu
701 702
702source "net/Kconfig" 703source "net/Kconfig"
diff --git a/arch/sh/boards/hp6xx/hp6xx_apm.c b/arch/sh/boards/hp6xx/hp6xx_apm.c
index d146cdaa0b8b..d1c1460c8a06 100644
--- a/arch/sh/boards/hp6xx/hp6xx_apm.c
+++ b/arch/sh/boards/hp6xx/hp6xx_apm.c
@@ -7,12 +7,11 @@
7 * modify it under the terms of the GNU General Public License. 7 * modify it under the terms of the GNU General Public License.
8 */ 8 */
9#include <linux/module.h> 9#include <linux/module.h>
10#include <linux/apm_bios.h>
11#include <linux/kernel.h> 10#include <linux/kernel.h>
12#include <linux/init.h> 11#include <linux/init.h>
13#include <linux/interrupt.h> 12#include <linux/interrupt.h>
14#include <asm/io.h> 13#include <linux/apm-emulation.h>
15#include <asm/apm.h> 14#include <linux/io.h>
16#include <asm/adc.h> 15#include <asm/adc.h>
17#include <asm/hp6xx.h> 16#include <asm/hp6xx.h>
18 17
@@ -27,60 +26,41 @@
27 26
28#define MODNAME "hp6x0_apm" 27#define MODNAME "hp6x0_apm"
29 28
30static int hp6x0_apm_get_info(char *buf, char **start, off_t fpos, int length) 29static void hp6x0_apm_get_power_status(struct apm_power_info *info)
31{ 30{
31 int battery, backup, charging, percentage;
32 u8 pgdr; 32 u8 pgdr;
33 char *p;
34 int battery_status;
35 int battery_flag;
36 int ac_line_status;
37 int time_units = APM_BATTERY_LIFE_UNKNOWN;
38 33
39 int battery = adc_single(ADC_CHANNEL_BATTERY); 34 battery = adc_single(ADC_CHANNEL_BATTERY);
40 int backup = adc_single(ADC_CHANNEL_BACKUP); 35 backup = adc_single(ADC_CHANNEL_BACKUP);
41 int charging = adc_single(ADC_CHANNEL_CHARGE); 36 charging = adc_single(ADC_CHANNEL_CHARGE);
42 int percentage;
43 37
44 percentage = 100 * (battery - HP680_BATTERY_MIN) / 38 percentage = 100 * (battery - HP680_BATTERY_MIN) /
45 (HP680_BATTERY_MAX - HP680_BATTERY_MIN); 39 (HP680_BATTERY_MAX - HP680_BATTERY_MIN);
46 40
47 ac_line_status = (battery > HP680_BATTERY_AC_ON) ? 41 info->ac_line_status = (battery > HP680_BATTERY_AC_ON) ?
48 APM_AC_ONLINE : APM_AC_OFFLINE; 42 APM_AC_ONLINE : APM_AC_OFFLINE;
49 43
50 p = buf;
51
52 pgdr = ctrl_inb(SH7709_PGDR); 44 pgdr = ctrl_inb(SH7709_PGDR);
53 if (pgdr & PGDR_MAIN_BATTERY_OUT) { 45 if (pgdr & PGDR_MAIN_BATTERY_OUT) {
54 battery_status = APM_BATTERY_STATUS_NOT_PRESENT; 46 info->battery_status = APM_BATTERY_STATUS_NOT_PRESENT;
55 battery_flag = 0x80; 47 info->battery_flag = 0x80;
56 percentage = -1; 48 } else if (charging < 8) {
57 } else if (charging < 8 ) { 49 info->battery_status = APM_BATTERY_STATUS_CHARGING;
58 battery_status = APM_BATTERY_STATUS_CHARGING; 50 info->battery_flag = 0x08;
59 battery_flag = 0x08; 51 info->ac_line_status = 0xff;
60 ac_line_status = 0xff;
61 } else if (percentage <= APM_CRITICAL) { 52 } else if (percentage <= APM_CRITICAL) {
62 battery_status = APM_BATTERY_STATUS_CRITICAL; 53 info->battery_status = APM_BATTERY_STATUS_CRITICAL;
63 battery_flag = 0x04; 54 info->battery_flag = 0x04;
64 } else if (percentage <= APM_LOW) { 55 } else if (percentage <= APM_LOW) {
65 battery_status = APM_BATTERY_STATUS_LOW; 56 info->battery_status = APM_BATTERY_STATUS_LOW;
66 battery_flag = 0x02; 57 info->battery_flag = 0x02;
67 } else { 58 } else {
68 battery_status = APM_BATTERY_STATUS_HIGH; 59 info->battery_status = APM_BATTERY_STATUS_HIGH;
69 battery_flag = 0x01; 60 info->battery_flag = 0x01;
70 } 61 }
71 62
72 p += sprintf(p, "1.0 1.2 0x%02x 0x%02x 0x%02x 0x%02x %d%% %d %s\n", 63 info->units = 0;
73 APM_32_BIT_SUPPORT,
74 ac_line_status,
75 battery_status,
76 battery_flag,
77 percentage,
78 time_units,
79 "min");
80 p += sprintf(p, "bat=%d backup=%d charge=%d\n",
81 battery, backup, charging);
82
83 return p - buf;
84} 64}
85 65
86static irqreturn_t hp6x0_apm_interrupt(int irq, void *dev) 66static irqreturn_t hp6x0_apm_interrupt(int irq, void *dev)
@@ -96,14 +76,14 @@ static int __init hp6x0_apm_init(void)
96 int ret; 76 int ret;
97 77
98 ret = request_irq(HP680_BTN_IRQ, hp6x0_apm_interrupt, 78 ret = request_irq(HP680_BTN_IRQ, hp6x0_apm_interrupt,
99 IRQF_DISABLED, MODNAME, 0); 79 IRQF_DISABLED, MODNAME, NULL);
100 if (unlikely(ret < 0)) { 80 if (unlikely(ret < 0)) {
101 printk(KERN_ERR MODNAME ": IRQ %d request failed\n", 81 printk(KERN_ERR MODNAME ": IRQ %d request failed\n",
102 HP680_BTN_IRQ); 82 HP680_BTN_IRQ);
103 return ret; 83 return ret;
104 } 84 }
105 85
106 apm_get_info = hp6x0_apm_get_info; 86 apm_get_power_status = hp6x0_apm_get_power_status;
107 87
108 return ret; 88 return ret;
109} 89}
@@ -111,7 +91,7 @@ static int __init hp6x0_apm_init(void)
111static void __exit hp6x0_apm_exit(void) 91static void __exit hp6x0_apm_exit(void)
112{ 92{
113 free_irq(HP680_BTN_IRQ, 0); 93 free_irq(HP680_BTN_IRQ, 0);
114 apm_get_info = 0; 94 apm_get_info = NULL;
115} 95}
116 96
117module_init(hp6x0_apm_init); 97module_init(hp6x0_apm_init);
diff --git a/arch/sh/boards/landisk/landisk_pwb.c b/arch/sh/boards/landisk/landisk_pwb.c
index e62524978160..47a63c6617ed 100644
--- a/arch/sh/boards/landisk/landisk_pwb.c
+++ b/arch/sh/boards/landisk/landisk_pwb.c
@@ -150,7 +150,7 @@ static irqreturn_t sw_interrupt(int irq, void *dev_id)
150 return IRQ_HANDLED; 150 return IRQ_HANDLED;
151} 151}
152 152
153static struct file_operations swdrv_fops = { 153static const struct file_operations swdrv_fops = {
154 .read = swdrv_read, /* read */ 154 .read = swdrv_read, /* read */
155 .write = swdrv_write, /* write */ 155 .write = swdrv_write, /* write */
156 .open = swdrv_open, /* open */ 156 .open = swdrv_open, /* open */
diff --git a/arch/sh/kernel/Makefile b/arch/sh/kernel/Makefile
index 99c7e5249f7a..2f6d2bcb1c93 100644
--- a/arch/sh/kernel/Makefile
+++ b/arch/sh/kernel/Makefile
@@ -19,6 +19,5 @@ obj-$(CONFIG_SH_CPU_FREQ) += cpufreq.o
19obj-$(CONFIG_MODULES) += module.o 19obj-$(CONFIG_MODULES) += module.o
20obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 20obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
21obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o 21obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o
22obj-$(CONFIG_APM) += apm.o
23obj-$(CONFIG_PM) += pm.o 22obj-$(CONFIG_PM) += pm.o
24obj-$(CONFIG_STACKTRACE) += stacktrace.o 23obj-$(CONFIG_STACKTRACE) += stacktrace.o
diff --git a/arch/sh/kernel/apm.c b/arch/sh/kernel/apm.c
deleted file mode 100644
index 4f66f91b1006..000000000000
--- a/arch/sh/kernel/apm.c
+++ /dev/null
@@ -1,538 +0,0 @@
1/*
2 * bios-less APM driver for hp680
3 *
4 * Copyright 2005 (c) Andriy Skulysh <askulysh@gmail.com>
5 *
6 * based on ARM APM driver by
7 * Jamey Hicks <jamey@crl.dec.com>
8 *
9 * adapted from the APM BIOS driver for Linux by
10 * Stephen Rothwell (sfr@linuxcare.com)
11 *
12 * APM 1.2 Reference:
13 * Intel Corporation, Microsoft Corporation. Advanced Power Management
14 * (APM) BIOS Interface Specification, Revision 1.2, February 1996.
15 *
16 * [This document is available from Microsoft at:
17 * http://www.microsoft.com/hwdev/busbios/amp_12.htm]
18 */
19#include <linux/module.h>
20#include <linux/poll.h>
21#include <linux/timer.h>
22#include <linux/slab.h>
23#include <linux/proc_fs.h>
24#include <linux/miscdevice.h>
25#include <linux/apm_bios.h>
26#include <linux/pm.h>
27#include <linux/pm_legacy.h>
28#include <asm/apm.h>
29
30#define MODNAME "apm"
31
32/*
33 * The apm_bios device is one of the misc char devices.
34 * This is its minor number.
35 */
36#define APM_MINOR_DEV 134
37
38/*
39 * Maximum number of events stored
40 */
41#define APM_MAX_EVENTS 16
42
43struct apm_queue {
44 unsigned int event_head;
45 unsigned int event_tail;
46 apm_event_t events[APM_MAX_EVENTS];
47};
48
49/*
50 * The per-file APM data
51 */
52struct apm_user {
53 struct list_head list;
54
55 unsigned int suser: 1;
56 unsigned int writer: 1;
57 unsigned int reader: 1;
58
59 int suspend_result;
60 unsigned int suspend_state;
61#define SUSPEND_NONE 0 /* no suspend pending */
62#define SUSPEND_PENDING 1 /* suspend pending read */
63#define SUSPEND_READ 2 /* suspend read, pending ack */
64#define SUSPEND_ACKED 3 /* suspend acked */
65#define SUSPEND_DONE 4 /* suspend completed */
66
67 struct apm_queue queue;
68};
69
70/*
71 * Local variables
72 */
73static int suspends_pending;
74
75static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue);
76static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue);
77
78/*
79 * This is a list of everyone who has opened /dev/apm_bios
80 */
81static DECLARE_RWSEM(user_list_lock);
82static LIST_HEAD(apm_user_list);
83
84/*
85 * kapmd info. kapmd provides us a process context to handle
86 * "APM" events within - specifically necessary if we're going
87 * to be suspending the system.
88 */
89static DECLARE_WAIT_QUEUE_HEAD(kapmd_wait);
90static DECLARE_COMPLETION(kapmd_exit);
91static DEFINE_SPINLOCK(kapmd_queue_lock);
92static struct apm_queue kapmd_queue;
93
94int apm_suspended;
95EXPORT_SYMBOL(apm_suspended);
96
97/* Platform-specific apm_read_proc(). */
98int (*apm_get_info)(char *buf, char **start, off_t fpos, int length);
99EXPORT_SYMBOL(apm_get_info);
100
101/*
102 * APM event queue management.
103 */
104static inline int queue_empty(struct apm_queue *q)
105{
106 return q->event_head == q->event_tail;
107}
108
109static inline apm_event_t queue_get_event(struct apm_queue *q)
110{
111 q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS;
112 return q->events[q->event_tail];
113}
114
115static void queue_add_event(struct apm_queue *q, apm_event_t event)
116{
117 q->event_head = (q->event_head + 1) % APM_MAX_EVENTS;
118 if (q->event_head == q->event_tail) {
119 static int notified;
120
121 if (notified++ == 0)
122 printk(KERN_ERR "apm: an event queue overflowed\n");
123
124 q->event_tail = (q->event_tail + 1) % APM_MAX_EVENTS;
125 }
126 q->events[q->event_head] = event;
127}
128
129static void queue_event_one_user(struct apm_user *as, apm_event_t event)
130{
131 if (as->suser && as->writer) {
132 switch (event) {
133 case APM_SYS_SUSPEND:
134 case APM_USER_SUSPEND:
135 /*
136 * If this user already has a suspend pending,
137 * don't queue another one.
138 */
139 if (as->suspend_state != SUSPEND_NONE)
140 return;
141
142 as->suspend_state = SUSPEND_PENDING;
143 suspends_pending++;
144 break;
145 }
146 }
147 queue_add_event(&as->queue, event);
148}
149
150static void queue_event(apm_event_t event, struct apm_user *sender)
151{
152 struct apm_user *as;
153
154 down_read(&user_list_lock);
155
156 list_for_each_entry(as, &apm_user_list, list)
157 if (as != sender && as->reader)
158 queue_event_one_user(as, event);
159
160 up_read(&user_list_lock);
161 wake_up_interruptible(&apm_waitqueue);
162}
163
164/**
165 * apm_queue_event - queue an APM event for kapmd
166 * @event: APM event
167 *
168 * Queue an APM event for kapmd to process and ultimately take the
169 * appropriate action. Only a subset of events are handled:
170 * %APM_LOW_BATTERY
171 * %APM_POWER_STATUS_CHANGE
172 * %APM_USER_SUSPEND
173 * %APM_SYS_SUSPEND
174 * %APM_CRITICAL_SUSPEND
175 */
176void apm_queue_event(apm_event_t event)
177{
178 spin_lock_irq(&kapmd_queue_lock);
179 queue_add_event(&kapmd_queue, event);
180 spin_unlock_irq(&kapmd_queue_lock);
181
182 wake_up_interruptible(&kapmd_wait);
183}
184EXPORT_SYMBOL(apm_queue_event);
185
186static void apm_suspend(void)
187{
188 struct apm_user *as;
189 int err;
190
191 apm_suspended = 1;
192 err = pm_suspend(PM_SUSPEND_MEM);
193
194 /*
195 * Anyone on the APM queues will think we're still suspended.
196 * Send a message so everyone knows we're now awake again.
197 */
198 queue_event(APM_NORMAL_RESUME, NULL);
199
200 /*
201 * Finally, wake up anyone who is sleeping on the suspend.
202 */
203 down_read(&user_list_lock);
204 list_for_each_entry(as, &apm_user_list, list) {
205 as->suspend_result = err;
206 as->suspend_state = SUSPEND_DONE;
207 }
208 up_read(&user_list_lock);
209
210 wake_up(&apm_suspend_waitqueue);
211 apm_suspended = 0;
212}
213
214static ssize_t apm_read(struct file *fp, char __user *buf,
215 size_t count, loff_t *ppos)
216{
217 struct apm_user *as = fp->private_data;
218 apm_event_t event;
219 int i = count, ret = 0;
220
221 if (count < sizeof(apm_event_t))
222 return -EINVAL;
223
224 if (queue_empty(&as->queue) && fp->f_flags & O_NONBLOCK)
225 return -EAGAIN;
226
227 wait_event_interruptible(apm_waitqueue, !queue_empty(&as->queue));
228
229 while ((i >= sizeof(event)) && !queue_empty(&as->queue)) {
230 event = queue_get_event(&as->queue);
231
232 ret = -EFAULT;
233 if (copy_to_user(buf, &event, sizeof(event)))
234 break;
235
236 if (event == APM_SYS_SUSPEND || event == APM_USER_SUSPEND)
237 as->suspend_state = SUSPEND_READ;
238
239 buf += sizeof(event);
240 i -= sizeof(event);
241 }
242
243 if (i < count)
244 ret = count - i;
245
246 return ret;
247}
248
249static unsigned int apm_poll(struct file *fp, poll_table * wait)
250{
251 struct apm_user *as = fp->private_data;
252
253 poll_wait(fp, &apm_waitqueue, wait);
254 return queue_empty(&as->queue) ? 0 : POLLIN | POLLRDNORM;
255}
256
257/*
258 * apm_ioctl - handle APM ioctl
259 *
260 * APM_IOC_SUSPEND
261 * This IOCTL is overloaded, and performs two functions. It is used to:
262 * - initiate a suspend
263 * - acknowledge a suspend read from /dev/apm_bios.
264 * Only when everyone who has opened /dev/apm_bios with write permission
265 * has acknowledge does the actual suspend happen.
266 */
267static int
268apm_ioctl(struct inode * inode, struct file *filp, u_int cmd, u_long arg)
269{
270 struct apm_user *as = filp->private_data;
271 unsigned long flags;
272 int err = -EINVAL;
273
274 if (!as->suser || !as->writer)
275 return -EPERM;
276
277 switch (cmd) {
278 case APM_IOC_SUSPEND:
279 as->suspend_result = -EINTR;
280
281 if (as->suspend_state == SUSPEND_READ) {
282 /*
283 * If we read a suspend command from /dev/apm_bios,
284 * then the corresponding APM_IOC_SUSPEND ioctl is
285 * interpreted as an acknowledge.
286 */
287 as->suspend_state = SUSPEND_ACKED;
288 suspends_pending--;
289 } else {
290 /*
291 * Otherwise it is a request to suspend the system.
292 * Queue an event for all readers, and expect an
293 * acknowledge from all writers who haven't already
294 * acknowledged.
295 */
296 queue_event(APM_USER_SUSPEND, as);
297 }
298
299 /*
300 * If there are no further acknowledges required, suspend
301 * the system.
302 */
303 if (suspends_pending == 0)
304 apm_suspend();
305
306 /*
307 * Wait for the suspend/resume to complete. If there are
308 * pending acknowledges, we wait here for them.
309 *
310 * Note that we need to ensure that the PM subsystem does
311 * not kick us out of the wait when it suspends the threads.
312 */
313 flags = current->flags;
314 current->flags |= PF_NOFREEZE;
315
316 /*
317 * Note: do not allow a thread which is acking the suspend
318 * to escape until the resume is complete.
319 */
320 if (as->suspend_state == SUSPEND_ACKED)
321 wait_event(apm_suspend_waitqueue,
322 as->suspend_state == SUSPEND_DONE);
323 else
324 wait_event_interruptible(apm_suspend_waitqueue,
325 as->suspend_state == SUSPEND_DONE);
326
327 current->flags = flags;
328 err = as->suspend_result;
329 as->suspend_state = SUSPEND_NONE;
330 break;
331 }
332
333 return err;
334}
335
336static int apm_release(struct inode * inode, struct file * filp)
337{
338 struct apm_user *as = filp->private_data;
339 filp->private_data = NULL;
340
341 down_write(&user_list_lock);
342 list_del(&as->list);
343 up_write(&user_list_lock);
344
345 /*
346 * We are now unhooked from the chain. As far as new
347 * events are concerned, we no longer exist. However, we
348 * need to balance suspends_pending, which means the
349 * possibility of sleeping.
350 */
351 if (as->suspend_state != SUSPEND_NONE) {
352 suspends_pending -= 1;
353 if (suspends_pending == 0)
354 apm_suspend();
355 }
356
357 kfree(as);
358 return 0;
359}
360
361static int apm_open(struct inode * inode, struct file * filp)
362{
363 struct apm_user *as;
364
365 as = kzalloc(sizeof(*as), GFP_KERNEL);
366 if (as) {
367 /*
368 * XXX - this is a tiny bit broken, when we consider BSD
369 * process accounting. If the device is opened by root, we
370 * instantly flag that we used superuser privs. Who knows,
371 * we might close the device immediately without doing a
372 * privileged operation -- cevans
373 */
374 as->suser = capable(CAP_SYS_ADMIN);
375 as->writer = (filp->f_mode & FMODE_WRITE) == FMODE_WRITE;
376 as->reader = (filp->f_mode & FMODE_READ) == FMODE_READ;
377
378 down_write(&user_list_lock);
379 list_add(&as->list, &apm_user_list);
380 up_write(&user_list_lock);
381
382 filp->private_data = as;
383 }
384
385 return as ? 0 : -ENOMEM;
386}
387
388static struct file_operations apm_bios_fops = {
389 .owner = THIS_MODULE,
390 .read = apm_read,
391 .poll = apm_poll,
392 .ioctl = apm_ioctl,
393 .open = apm_open,
394 .release = apm_release,
395};
396
397static struct miscdevice apm_device = {
398 .minor = APM_MINOR_DEV,
399 .name = "apm_bios",
400 .fops = &apm_bios_fops
401};
402
403
404#ifdef CONFIG_PROC_FS
405/*
406 * Arguments, with symbols from linux/apm_bios.h.
407 *
408 * 0) Linux driver version (this will change if format changes)
409 * 1) APM BIOS Version. Usually 1.0, 1.1 or 1.2.
410 * 2) APM flags from APM Installation Check (0x00):
411 * bit 0: APM_16_BIT_SUPPORT
412 * bit 1: APM_32_BIT_SUPPORT
413 * bit 2: APM_IDLE_SLOWS_CLOCK
414 * bit 3: APM_BIOS_DISABLED
415 * bit 4: APM_BIOS_DISENGAGED
416 * 3) AC line status
417 * 0x00: Off-line
418 * 0x01: On-line
419 * 0x02: On backup power (BIOS >= 1.1 only)
420 * 0xff: Unknown
421 * 4) Battery status
422 * 0x00: High
423 * 0x01: Low
424 * 0x02: Critical
425 * 0x03: Charging
426 * 0x04: Selected battery not present (BIOS >= 1.2 only)
427 * 0xff: Unknown
428 * 5) Battery flag
429 * bit 0: High
430 * bit 1: Low
431 * bit 2: Critical
432 * bit 3: Charging
433 * bit 7: No system battery
434 * 0xff: Unknown
435 * 6) Remaining battery life (percentage of charge):
436 * 0-100: valid
437 * -1: Unknown
438 * 7) Remaining battery life (time units):
439 * Number of remaining minutes or seconds
440 * -1: Unknown
441 * 8) min = minutes; sec = seconds
442 */
443static int apm_read_proc(char *buf, char **start, off_t fpos, int length)
444{
445 if (likely(apm_get_info))
446 return apm_get_info(buf, start, fpos, length);
447
448 return -EINVAL;
449}
450#endif
451
452static int kapmd(void *arg)
453{
454 daemonize("kapmd");
455 current->flags |= PF_NOFREEZE;
456
457 do {
458 apm_event_t event;
459
460 wait_event_interruptible(kapmd_wait,
461 !queue_empty(&kapmd_queue) || !pm_active);
462
463 if (!pm_active)
464 break;
465
466 spin_lock_irq(&kapmd_queue_lock);
467 event = 0;
468 if (!queue_empty(&kapmd_queue))
469 event = queue_get_event(&kapmd_queue);
470 spin_unlock_irq(&kapmd_queue_lock);
471
472 switch (event) {
473 case 0:
474 break;
475
476 case APM_LOW_BATTERY:
477 case APM_POWER_STATUS_CHANGE:
478 queue_event(event, NULL);
479 break;
480
481 case APM_USER_SUSPEND:
482 case APM_SYS_SUSPEND:
483 queue_event(event, NULL);
484 if (suspends_pending == 0)
485 apm_suspend();
486 break;
487
488 case APM_CRITICAL_SUSPEND:
489 apm_suspend();
490 break;
491 }
492 } while (1);
493
494 complete_and_exit(&kapmd_exit, 0);
495}
496
497static int __init apm_init(void)
498{
499 int ret;
500
501 pm_active = 1;
502
503 ret = kernel_thread(kapmd, NULL, CLONE_KERNEL);
504 if (unlikely(ret < 0)) {
505 pm_active = 0;
506 return ret;
507 }
508
509 create_proc_info_entry("apm", 0, NULL, apm_read_proc);
510
511 ret = misc_register(&apm_device);
512 if (unlikely(ret != 0)) {
513 remove_proc_entry("apm", NULL);
514
515 pm_active = 0;
516 wake_up(&kapmd_wait);
517 wait_for_completion(&kapmd_exit);
518 }
519
520 return ret;
521}
522
523static void __exit apm_exit(void)
524{
525 misc_deregister(&apm_device);
526 remove_proc_entry("apm", NULL);
527
528 pm_active = 0;
529 wake_up(&kapmd_wait);
530 wait_for_completion(&kapmd_exit);
531}
532
533module_init(apm_init);
534module_exit(apm_exit);
535
536MODULE_AUTHOR("Stephen Rothwell, Andriy Skulysh");
537MODULE_DESCRIPTION("Advanced Power Management");
538MODULE_LICENSE("GPL");
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c
index 225f9ea5cdd7..d6b817aa568f 100644
--- a/arch/sh/kernel/setup.c
+++ b/arch/sh/kernel/setup.c
@@ -75,7 +75,7 @@ static struct sh_machine_vector* __init get_mv_byname(const char* name);
75#define RAMDISK_PROMPT_FLAG 0x8000 75#define RAMDISK_PROMPT_FLAG 0x8000
76#define RAMDISK_LOAD_FLAG 0x4000 76#define RAMDISK_LOAD_FLAG 0x4000
77 77
78static char command_line[COMMAND_LINE_SIZE] = { 0, }; 78static char __initdata command_line[COMMAND_LINE_SIZE] = { 0, };
79 79
80static struct resource code_resource = { .name = "Kernel code", }; 80static struct resource code_resource = { .name = "Kernel code", };
81static struct resource data_resource = { .name = "Kernel data", }; 81static struct resource data_resource = { .name = "Kernel data", };
@@ -90,8 +90,8 @@ static inline void parse_cmdline (char ** cmdline_p, char mv_name[MV_NAME_SIZE],
90 int len = 0; 90 int len = 0;
91 91
92 /* Save unparsed command line copy for /proc/cmdline */ 92 /* Save unparsed command line copy for /proc/cmdline */
93 memcpy(saved_command_line, COMMAND_LINE, COMMAND_LINE_SIZE); 93 memcpy(boot_command_line, COMMAND_LINE, COMMAND_LINE_SIZE);
94 saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; 94 boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
95 95
96 memory_start = (unsigned long)PAGE_OFFSET+__MEMORY_START; 96 memory_start = (unsigned long)PAGE_OFFSET+__MEMORY_START;
97 memory_end = memory_start + __MEMORY_SIZE; 97 memory_end = memory_start + __MEMORY_SIZE;
diff --git a/arch/sh/kernel/time.c b/arch/sh/kernel/time.c
index c206c9504c4b..d47e775962e9 100644
--- a/arch/sh/kernel/time.c
+++ b/arch/sh/kernel/time.c
@@ -41,14 +41,6 @@ static int null_rtc_set_time(const time_t secs)
41void (*rtc_sh_get_time)(struct timespec *) = null_rtc_get_time; 41void (*rtc_sh_get_time)(struct timespec *) = null_rtc_get_time;
42int (*rtc_sh_set_time)(const time_t) = null_rtc_set_time; 42int (*rtc_sh_set_time)(const time_t) = null_rtc_set_time;
43 43
44/*
45 * Scheduler clock - returns current time in nanosec units.
46 */
47unsigned long long __attribute__ ((weak)) sched_clock(void)
48{
49 return (unsigned long long)jiffies * (1000000000 / HZ);
50}
51
52#ifndef CONFIG_GENERIC_TIME 44#ifndef CONFIG_GENERIC_TIME
53void do_gettimeofday(struct timeval *tv) 45void do_gettimeofday(struct timeval *tv)
54{ 46{
diff --git a/arch/sh/kernel/vmlinux.lds.S b/arch/sh/kernel/vmlinux.lds.S
index f34bdcc33a7d..75de165867a0 100644
--- a/arch/sh/kernel/vmlinux.lds.S
+++ b/arch/sh/kernel/vmlinux.lds.S
@@ -83,9 +83,13 @@ SECTIONS
83 .con_initcall.init : { *(.con_initcall.init) } 83 .con_initcall.init : { *(.con_initcall.init) }
84 __con_initcall_end = .; 84 __con_initcall_end = .;
85 SECURITY_INIT 85 SECURITY_INIT
86
87#ifdef CONFIG_BLK_DEV_INITRD
86 __initramfs_start = .; 88 __initramfs_start = .;
87 .init.ramfs : { *(.init.ramfs) } 89 .init.ramfs : { *(.init.ramfs) }
88 __initramfs_end = .; 90 __initramfs_end = .;
91#endif
92
89 __machvec_start = .; 93 __machvec_start = .;
90 .init.machvec : { *(.init.machvec) } 94 .init.machvec : { *(.init.machvec) }
91 __machvec_end = .; 95 __machvec_end = .;
diff --git a/arch/sh/kernel/vsyscall/vsyscall.c b/arch/sh/kernel/vsyscall/vsyscall.c
index deb46941f315..7b0f66f03319 100644
--- a/arch/sh/kernel/vsyscall/vsyscall.c
+++ b/arch/sh/kernel/vsyscall/vsyscall.c
@@ -37,11 +37,12 @@ __setup("vdso=", vdso_setup);
37 * of the ELF DSO images included therein. 37 * of the ELF DSO images included therein.
38 */ 38 */
39extern const char vsyscall_trapa_start, vsyscall_trapa_end; 39extern const char vsyscall_trapa_start, vsyscall_trapa_end;
40static void *syscall_page; 40static struct page *syscall_pages[1];
41 41
42int __init vsyscall_init(void) 42int __init vsyscall_init(void)
43{ 43{
44 syscall_page = (void *)get_zeroed_page(GFP_ATOMIC); 44 void *syscall_page = (void *)get_zeroed_page(GFP_ATOMIC);
45 syscall_pages[0] = virt_to_page(syscall_page);
45 46
46 /* 47 /*
47 * XXX: Map this page to a fixmap entry if we get around 48 * XXX: Map this page to a fixmap entry if we get around
@@ -55,37 +56,10 @@ int __init vsyscall_init(void)
55 return 0; 56 return 0;
56} 57}
57 58
58static struct page *syscall_vma_nopage(struct vm_area_struct *vma,
59 unsigned long address, int *type)
60{
61 unsigned long offset = address - vma->vm_start;
62 struct page *page;
63
64 if (address < vma->vm_start || address > vma->vm_end)
65 return NOPAGE_SIGBUS;
66
67 page = virt_to_page(syscall_page + offset);
68
69 get_page(page);
70
71 return page;
72}
73
74/* Prevent VMA merging */
75static void syscall_vma_close(struct vm_area_struct *vma)
76{
77}
78
79static struct vm_operations_struct syscall_vm_ops = {
80 .nopage = syscall_vma_nopage,
81 .close = syscall_vma_close,
82};
83
84/* Setup a VMA at program startup for the vsyscall page */ 59/* Setup a VMA at program startup for the vsyscall page */
85int arch_setup_additional_pages(struct linux_binprm *bprm, 60int arch_setup_additional_pages(struct linux_binprm *bprm,
86 int executable_stack) 61 int executable_stack)
87{ 62{
88 struct vm_area_struct *vma;
89 struct mm_struct *mm = current->mm; 63 struct mm_struct *mm = current->mm;
90 unsigned long addr; 64 unsigned long addr;
91 int ret; 65 int ret;
@@ -97,30 +71,16 @@ int arch_setup_additional_pages(struct linux_binprm *bprm,
97 goto up_fail; 71 goto up_fail;
98 } 72 }
99 73
100 vma = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL); 74 ret = install_special_mapping(mm, addr, PAGE_SIZE,
101 if (!vma) { 75 VM_READ | VM_EXEC |
102 ret = -ENOMEM; 76 VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC |
77 VM_ALWAYSDUMP,
78 syscall_pages);
79 if (unlikely(ret))
103 goto up_fail; 80 goto up_fail;
104 }
105
106 vma->vm_start = addr;
107 vma->vm_end = addr + PAGE_SIZE;
108 /* MAYWRITE to allow gdb to COW and set breakpoints */
109 vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYEXEC|VM_MAYWRITE;
110 vma->vm_flags |= mm->def_flags;
111 vma->vm_page_prot = protection_map[vma->vm_flags & 7];
112 vma->vm_ops = &syscall_vm_ops;
113 vma->vm_mm = mm;
114
115 ret = insert_vm_struct(mm, vma);
116 if (unlikely(ret)) {
117 kmem_cache_free(vm_area_cachep, vma);
118 goto up_fail;
119 }
120 81
121 current->mm->context.vdso = (void *)addr; 82 current->mm->context.vdso = (void *)addr;
122 83
123 mm->total_vm++;
124up_fail: 84up_fail:
125 up_write(&mm->mmap_sem); 85 up_write(&mm->mmap_sem);
126 return ret; 86 return ret;
diff --git a/arch/sh/mm/cache-debugfs.c b/arch/sh/mm/cache-debugfs.c
index e0122bd33ddb..909dcfa8c8c6 100644
--- a/arch/sh/mm/cache-debugfs.c
+++ b/arch/sh/mm/cache-debugfs.c
@@ -114,7 +114,7 @@ static int cache_debugfs_open(struct inode *inode, struct file *file)
114 return single_open(file, cache_seq_show, inode->i_private); 114 return single_open(file, cache_seq_show, inode->i_private);
115} 115}
116 116
117static struct file_operations cache_debugfs_fops = { 117static const struct file_operations cache_debugfs_fops = {
118 .owner = THIS_MODULE, 118 .owner = THIS_MODULE,
119 .open = cache_debugfs_open, 119 .open = cache_debugfs_open,
120 .read = seq_read, 120 .read = seq_read,
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index 29bd37b1488e..bf0c263cb6fd 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -158,7 +158,6 @@ void __init paging_init(void)
158 * Setup some defaults for the zone sizes.. these should be safe 158 * Setup some defaults for the zone sizes.. these should be safe
159 * regardless of distcontiguous memory or MMU settings. 159 * regardless of distcontiguous memory or MMU settings.
160 */ 160 */
161 zones_size[ZONE_DMA] = 0 >> PAGE_SHIFT;
162 zones_size[ZONE_NORMAL] = __MEMORY_SIZE >> PAGE_SHIFT; 161 zones_size[ZONE_NORMAL] = __MEMORY_SIZE >> PAGE_SHIFT;
163#ifdef CONFIG_HIGHMEM 162#ifdef CONFIG_HIGHMEM
164 zones_size[ZONE_HIGHMEM] = 0 >> PAGE_SHIFT; 163 zones_size[ZONE_HIGHMEM] = 0 >> PAGE_SHIFT;
@@ -170,8 +169,6 @@ void __init paging_init(void)
170 * the zone sizes accordingly, in addition to turning it on. 169 * the zone sizes accordingly, in addition to turning it on.
171 */ 170 */
172 { 171 {
173 unsigned long max_dma, low, start_pfn;
174
175 /* We don't need to map the kernel through the TLB, as 172 /* We don't need to map the kernel through the TLB, as
176 * it is permanatly mapped using P1. So clear the 173 * it is permanatly mapped using P1. So clear the
177 * entire pgd. */ 174 * entire pgd. */
@@ -179,19 +176,7 @@ void __init paging_init(void)
179 176
180 /* Turn on the MMU */ 177 /* Turn on the MMU */
181 enable_mmu(); 178 enable_mmu();
182 179 zones_size[ZONE_NORMAL] = MAX_LOW_PFN - START_PFN;
183 /* Fixup the zone sizes */
184 start_pfn = START_PFN;
185 max_dma = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT;
186 low = MAX_LOW_PFN;
187
188 if (low < max_dma) {
189 zones_size[ZONE_DMA] = low - start_pfn;
190 zones_size[ZONE_NORMAL] = 0;
191 } else {
192 zones_size[ZONE_DMA] = max_dma - start_pfn;
193 zones_size[ZONE_NORMAL] = low - max_dma;
194 }
195 } 180 }
196 181
197 /* Set an initial value for the MMU.TTB so we don't have to 182 /* Set an initial value for the MMU.TTB so we don't have to
diff --git a/arch/sh/mm/pmb.c b/arch/sh/mm/pmb.c
index b60ad83a7635..d0d45e2e0ab3 100644
--- a/arch/sh/mm/pmb.c
+++ b/arch/sh/mm/pmb.c
@@ -378,7 +378,7 @@ static int pmb_debugfs_open(struct inode *inode, struct file *file)
378 return single_open(file, pmb_seq_show, NULL); 378 return single_open(file, pmb_seq_show, NULL);
379} 379}
380 380
381static struct file_operations pmb_debugfs_fops = { 381static const struct file_operations pmb_debugfs_fops = {
382 .owner = THIS_MODULE, 382 .owner = THIS_MODULE,
383 .open = pmb_debugfs_open, 383 .open = pmb_debugfs_open,
384 .read = seq_read, 384 .read = seq_read,
diff --git a/arch/sh/oprofile/op_model_sh7750.c b/arch/sh/oprofile/op_model_sh7750.c
index 60402eec4b4d..0104e44bc76a 100644
--- a/arch/sh/oprofile/op_model_sh7750.c
+++ b/arch/sh/oprofile/op_model_sh7750.c
@@ -187,7 +187,7 @@ static ssize_t sh7750_write_count(struct file *file, const char __user *buf,
187 return count; 187 return count;
188} 188}
189 189
190static struct file_operations count_fops = { 190static const struct file_operations count_fops = {
191 .read = sh7750_read_count, 191 .read = sh7750_read_count,
192 .write = sh7750_write_count, 192 .write = sh7750_write_count,
193}; 193};
diff --git a/arch/sh64/Kconfig b/arch/sh64/Kconfig
index 7bc0744b7ab6..e14b533558c8 100644
--- a/arch/sh64/Kconfig
+++ b/arch/sh64/Kconfig
@@ -36,9 +36,6 @@ config GENERIC_CALIBRATE_DELAY
36config RWSEM_XCHGADD_ALGORITHM 36config RWSEM_XCHGADD_ALGORITHM
37 bool 37 bool
38 38
39config GENERIC_ISA_DMA
40 bool
41
42config ARCH_HAS_ILOG2_U32 39config ARCH_HAS_ILOG2_U32
43 bool 40 bool
44 default n 41 default n
diff --git a/arch/sh64/kernel/setup.c b/arch/sh64/kernel/setup.c
index b9e7d54d7b85..53e9d20a874a 100644
--- a/arch/sh64/kernel/setup.c
+++ b/arch/sh64/kernel/setup.c
@@ -83,7 +83,7 @@ extern int sh64_tlb_init(void);
83#define RAMDISK_PROMPT_FLAG 0x8000 83#define RAMDISK_PROMPT_FLAG 0x8000
84#define RAMDISK_LOAD_FLAG 0x4000 84#define RAMDISK_LOAD_FLAG 0x4000
85 85
86static char command_line[COMMAND_LINE_SIZE] = { 0, }; 86static char __initdata command_line[COMMAND_LINE_SIZE] = { 0, };
87unsigned long long memory_start = CONFIG_MEMORY_START; 87unsigned long long memory_start = CONFIG_MEMORY_START;
88unsigned long long memory_end = CONFIG_MEMORY_START + (CONFIG_MEMORY_SIZE_IN_MB * 1024 * 1024); 88unsigned long long memory_end = CONFIG_MEMORY_START + (CONFIG_MEMORY_SIZE_IN_MB * 1024 * 1024);
89 89
@@ -95,8 +95,8 @@ static inline void parse_mem_cmdline (char ** cmdline_p)
95 int len = 0; 95 int len = 0;
96 96
97 /* Save unparsed command line copy for /proc/cmdline */ 97 /* Save unparsed command line copy for /proc/cmdline */
98 memcpy(saved_command_line, COMMAND_LINE, COMMAND_LINE_SIZE); 98 memcpy(boot_command_line, COMMAND_LINE, COMMAND_LINE_SIZE);
99 saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; 99 boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
100 100
101 for (;;) { 101 for (;;) {
102 /* 102 /*
diff --git a/arch/sh64/kernel/time.c b/arch/sh64/kernel/time.c
index 9c4a38a8698c..390b40de7cef 100644
--- a/arch/sh64/kernel/time.c
+++ b/arch/sh64/kernel/time.c
@@ -579,12 +579,3 @@ void enter_deep_standby(void)
579 asm __volatile__ ("nop"); 579 asm __volatile__ ("nop");
580 panic("Unexpected wakeup!\n"); 580 panic("Unexpected wakeup!\n");
581} 581}
582
583/*
584 * Scheduler clock - returns current time in nanosec units.
585 */
586unsigned long long sched_clock(void)
587{
588 return (unsigned long long)jiffies * (1000000000 / HZ);
589}
590
diff --git a/arch/sh64/kernel/vmlinux.lds.S b/arch/sh64/kernel/vmlinux.lds.S
index 95c4d753e357..a59c5e998131 100644
--- a/arch/sh64/kernel/vmlinux.lds.S
+++ b/arch/sh64/kernel/vmlinux.lds.S
@@ -115,9 +115,13 @@ SECTIONS
115 .con_initcall.init : C_PHYS(.con_initcall.init) { *(.con_initcall.init) } 115 .con_initcall.init : C_PHYS(.con_initcall.init) { *(.con_initcall.init) }
116 __con_initcall_end = .; 116 __con_initcall_end = .;
117 SECURITY_INIT 117 SECURITY_INIT
118
119#ifdef CONFIG_BLK_DEV_INITRD
118 __initramfs_start = .; 120 __initramfs_start = .;
119 .init.ramfs : C_PHYS(.init.ramfs) { *(.init.ramfs) } 121 .init.ramfs : C_PHYS(.init.ramfs) { *(.init.ramfs) }
120 __initramfs_end = .; 122 __initramfs_end = .;
123#endif
124
121 . = ALIGN(PAGE_SIZE); 125 . = ALIGN(PAGE_SIZE);
122 __init_end = .; 126 __init_end = .;
123 127
diff --git a/arch/sh64/mm/init.c b/arch/sh64/mm/init.c
index 83295bd21aa7..5dc08787259c 100644
--- a/arch/sh64/mm/init.c
+++ b/arch/sh64/mm/init.c
@@ -118,10 +118,7 @@ void __init paging_init(void)
118 118
119 mmu_context_cache = MMU_CONTEXT_FIRST_VERSION; 119 mmu_context_cache = MMU_CONTEXT_FIRST_VERSION;
120 120
121 /* 121 zones_size[ZONE_NORMAL] = MAX_LOW_PFN - START_PFN;
122 * All memory is good as ZONE_NORMAL (fall-through) and ZONE_DMA.
123 */
124 zones_size[ZONE_DMA] = MAX_LOW_PFN - START_PFN;
125 NODE_DATA(0)->node_mem_map = NULL; 122 NODE_DATA(0)->node_mem_map = NULL;
126 free_area_init_node(0, NODE_DATA(0), zones_size, __MEMORY_START >> PAGE_SHIFT, 0); 123 free_area_init_node(0, NODE_DATA(0), zones_size, __MEMORY_START >> PAGE_SHIFT, 0);
127} 124}
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
index d0dec1ea2eed..bd992c0048f0 100644
--- a/arch/sparc/Kconfig
+++ b/arch/sparc/Kconfig
@@ -13,6 +13,10 @@ config HIGHMEM
13 bool 13 bool
14 default y 14 default y
15 15
16config ZONE_DMA
17 bool
18 default y
19
16config GENERIC_ISA_DMA 20config GENERIC_ISA_DMA
17 bool 21 bool
18 default y 22 default y
diff --git a/arch/sparc/kernel/Makefile b/arch/sparc/kernel/Makefile
index 6616ee05c313..e795f282dece 100644
--- a/arch/sparc/kernel/Makefile
+++ b/arch/sparc/kernel/Makefile
@@ -12,7 +12,9 @@ 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 15 unaligned.o muldiv.o semaphore.o prom.o of_device.o devres.o
16
17devres-y = ../../../kernel/irq/devres.o
16 18
17obj-$(CONFIG_PCI) += pcic.o 19obj-$(CONFIG_PCI) += pcic.o
18obj-$(CONFIG_SUN4) += sun4setup.o 20obj-$(CONFIG_SUN4) += sun4setup.o
diff --git a/arch/sparc/kernel/apc.c b/arch/sparc/kernel/apc.c
index 406dd94afb45..d06a405ca718 100644
--- a/arch/sparc/kernel/apc.c
+++ b/arch/sparc/kernel/apc.c
@@ -127,7 +127,7 @@ static int apc_ioctl(struct inode *inode, struct file *f,
127 return 0; 127 return 0;
128} 128}
129 129
130static struct file_operations apc_fops = { 130static const struct file_operations apc_fops = {
131 .ioctl = apc_ioctl, 131 .ioctl = apc_ioctl,
132 .open = apc_open, 132 .open = apc_open,
133 .release = apc_release, 133 .release = apc_release,
diff --git a/arch/sparc/kernel/setup.c b/arch/sparc/kernel/setup.c
index 383526ad94fc..eccd8e87f529 100644
--- a/arch/sparc/kernel/setup.c
+++ b/arch/sparc/kernel/setup.c
@@ -246,7 +246,7 @@ void __init setup_arch(char **cmdline_p)
246 246
247 /* Initialize PROM console and command line. */ 247 /* Initialize PROM console and command line. */
248 *cmdline_p = prom_getbootargs(); 248 *cmdline_p = prom_getbootargs();
249 strcpy(saved_command_line, *cmdline_p); 249 strcpy(boot_command_line, *cmdline_p);
250 250
251 /* Set sparc_cpu_model */ 251 /* Set sparc_cpu_model */
252 sparc_cpu_model = sun_unknown; 252 sparc_cpu_model = sun_unknown;
diff --git a/arch/sparc/kernel/sunos_ioctl.c b/arch/sparc/kernel/sunos_ioctl.c
index a6ba3d26222c..32e8274e4357 100644
--- a/arch/sparc/kernel/sunos_ioctl.c
+++ b/arch/sparc/kernel/sunos_ioctl.c
@@ -11,6 +11,7 @@
11#include <linux/errno.h> 11#include <linux/errno.h>
12#include <linux/string.h> 12#include <linux/string.h>
13#include <linux/termios.h> 13#include <linux/termios.h>
14#include <linux/tty.h>
14#include <linux/ioctl.h> 15#include <linux/ioctl.h>
15#include <linux/route.h> 16#include <linux/route.h>
16#include <linux/sockios.h> 17#include <linux/sockios.h>
diff --git a/arch/sparc/kernel/sys_sunos.c b/arch/sparc/kernel/sys_sunos.c
index 0bf8c165fc92..da6606f0cffc 100644
--- a/arch/sparc/kernel/sys_sunos.c
+++ b/arch/sparc/kernel/sys_sunos.c
@@ -859,14 +859,16 @@ asmlinkage int sunos_wait4(pid_t pid, unsigned int __user *stat_addr,
859 return ret; 859 return ret;
860} 860}
861 861
862extern int kill_pg(int, int, int);
863asmlinkage int sunos_killpg(int pgrp, int sig) 862asmlinkage int sunos_killpg(int pgrp, int sig)
864{ 863{
865 int ret; 864 int ret;
866 865
867 lock_kernel(); 866 rcu_read_lock();
868 ret = kill_pg(pgrp, sig, 0); 867 ret = -EINVAL;
869 unlock_kernel(); 868 if (pgrp > 0)
869 ret = kill_pgrp(find_pid(pgrp), sig, 0);
870 rcu_read_unlock();
871
870 return ret; 872 return ret;
871} 873}
872 874
diff --git a/arch/sparc/kernel/time.c b/arch/sparc/kernel/time.c
index 2fcce000d877..9bb1240aaf8a 100644
--- a/arch/sparc/kernel/time.c
+++ b/arch/sparc/kernel/time.c
@@ -436,15 +436,6 @@ static inline unsigned long do_gettimeoffset(void)
436 return (*master_l10_counter >> 10) & 0x1fffff; 436 return (*master_l10_counter >> 10) & 0x1fffff;
437} 437}
438 438
439/*
440 * Returns nanoseconds
441 * XXX This is a suboptimal implementation.
442 */
443unsigned long long sched_clock(void)
444{
445 return (unsigned long long)jiffies * (1000000000 / HZ);
446}
447
448/* Ok, my cute asm atomicity trick doesn't work anymore. 439/* Ok, my cute asm atomicity trick doesn't work anymore.
449 * There are just too many variables that need to be protected 440 * There are just too many variables that need to be protected
450 * now (both members of xtime, et al.) 441 * now (both members of xtime, et al.)
diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S
index b73e6b9067ed..e5c24e0521de 100644
--- a/arch/sparc/kernel/vmlinux.lds.S
+++ b/arch/sparc/kernel/vmlinux.lds.S
@@ -57,10 +57,14 @@ SECTIONS
57 .con_initcall.init : { *(.con_initcall.init) } 57 .con_initcall.init : { *(.con_initcall.init) }
58 __con_initcall_end = .; 58 __con_initcall_end = .;
59 SECURITY_INIT 59 SECURITY_INIT
60
61#ifdef CONFIG_BLK_DEV_INITRD
60 . = ALIGN(4096); 62 . = ALIGN(4096);
61 __initramfs_start = .; 63 __initramfs_start = .;
62 .init.ramfs : { *(.init.ramfs) } 64 .init.ramfs : { *(.init.ramfs) }
63 __initramfs_end = .; 65 __initramfs_end = .;
66#endif
67
64 . = ALIGN(32); 68 . = ALIGN(32);
65 __per_cpu_start = .; 69 __per_cpu_start = .;
66 .data.percpu : { *(.data.percpu) } 70 .data.percpu : { *(.data.percpu) }
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
index d41f66ac7fff..f75a686ba644 100644
--- a/arch/sparc64/Kconfig
+++ b/arch/sparc64/Kconfig
@@ -232,10 +232,6 @@ config LARGE_ALLOCS
232 232
233source "mm/Kconfig" 233source "mm/Kconfig"
234 234
235config GENERIC_ISA_DMA
236 bool
237 default y
238
239config ISA 235config ISA
240 bool 236 bool
241 help 237 help
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig
index 5a9e68b13e60..0f44a6a6675f 100644
--- a/arch/sparc64/defconfig
+++ b/arch/sparc64/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.20-rc2 3# Linux kernel version: 2.6.20
4# Thu Dec 28 15:09:49 2006 4# Sun Feb 11 23:47:40 2007
5# 5#
6CONFIG_SPARC=y 6CONFIG_SPARC=y
7CONFIG_SPARC64=y 7CONFIG_SPARC64=y
@@ -49,7 +49,6 @@ CONFIG_POSIX_MQUEUE=y
49# CONFIG_IKCONFIG is not set 49# CONFIG_IKCONFIG is not set
50CONFIG_SYSFS_DEPRECATED=y 50CONFIG_SYSFS_DEPRECATED=y
51CONFIG_RELAY=y 51CONFIG_RELAY=y
52CONFIG_INITRAMFS_SOURCE=""
53CONFIG_CC_OPTIMIZE_FOR_SIZE=y 52CONFIG_CC_OPTIMIZE_FOR_SIZE=y
54CONFIG_SYSCTL=y 53CONFIG_SYSCTL=y
55# CONFIG_EMBEDDED is not set 54# CONFIG_EMBEDDED is not set
@@ -144,14 +143,14 @@ CONFIG_HAVE_MEMORY_PRESENT=y
144CONFIG_SPARSEMEM_EXTREME=y 143CONFIG_SPARSEMEM_EXTREME=y
145CONFIG_SPLIT_PTLOCK_CPUS=4 144CONFIG_SPLIT_PTLOCK_CPUS=4
146CONFIG_RESOURCES_64BIT=y 145CONFIG_RESOURCES_64BIT=y
147CONFIG_GENERIC_ISA_DMA=y 146CONFIG_ZONE_DMA_FLAG=0
148CONFIG_SBUS=y 147CONFIG_SBUS=y
149CONFIG_SBUSCHAR=y 148CONFIG_SBUSCHAR=y
150CONFIG_SUN_AUXIO=y 149CONFIG_SUN_AUXIO=y
151CONFIG_SUN_IO=y 150CONFIG_SUN_IO=y
152CONFIG_PCI=y 151CONFIG_PCI=y
153CONFIG_PCI_DOMAINS=y 152CONFIG_PCI_DOMAINS=y
154# CONFIG_PCI_MULTITHREAD_PROBE is not set 153CONFIG_PCI_MSI=y
155# CONFIG_PCI_DEBUG is not set 154# CONFIG_PCI_DEBUG is not set
156CONFIG_SUN_OPENPROMFS=m 155CONFIG_SUN_OPENPROMFS=m
157CONFIG_SPARC32_COMPAT=y 156CONFIG_SPARC32_COMPAT=y
@@ -182,7 +181,9 @@ CONFIG_UNIX=y
182CONFIG_XFRM=y 181CONFIG_XFRM=y
183CONFIG_XFRM_USER=m 182CONFIG_XFRM_USER=m
184# CONFIG_XFRM_SUB_POLICY is not set 183# CONFIG_XFRM_SUB_POLICY is not set
184CONFIG_XFRM_MIGRATE=y
185CONFIG_NET_KEY=m 185CONFIG_NET_KEY=m
186CONFIG_NET_KEY_MIGRATE=y
186CONFIG_INET=y 187CONFIG_INET=y
187CONFIG_IP_MULTICAST=y 188CONFIG_IP_MULTICAST=y
188# CONFIG_IP_ADVANCED_ROUTER is not set 189# CONFIG_IP_ADVANCED_ROUTER is not set
@@ -300,6 +301,7 @@ CONFIG_STANDALONE=y
300# CONFIG_PREVENT_FIRMWARE_BUILD is not set 301# CONFIG_PREVENT_FIRMWARE_BUILD is not set
301CONFIG_FW_LOADER=y 302CONFIG_FW_LOADER=y
302# CONFIG_DEBUG_DRIVER is not set 303# CONFIG_DEBUG_DRIVER is not set
304# CONFIG_DEBUG_DEVRES is not set
303# CONFIG_SYS_HYPERVISOR is not set 305# CONFIG_SYS_HYPERVISOR is not set
304 306
305# 307#
@@ -393,6 +395,7 @@ CONFIG_BLK_DEV_ALI15X3=y
393# CONFIG_BLK_DEV_JMICRON is not set 395# CONFIG_BLK_DEV_JMICRON is not set
394# CONFIG_BLK_DEV_SC1200 is not set 396# CONFIG_BLK_DEV_SC1200 is not set
395# CONFIG_BLK_DEV_PIIX is not set 397# CONFIG_BLK_DEV_PIIX is not set
398# CONFIG_BLK_DEV_IT8213 is not set
396# CONFIG_BLK_DEV_IT821X is not set 399# CONFIG_BLK_DEV_IT821X is not set
397# CONFIG_BLK_DEV_NS87415 is not set 400# CONFIG_BLK_DEV_NS87415 is not set
398# CONFIG_BLK_DEV_PDC202XX_OLD is not set 401# CONFIG_BLK_DEV_PDC202XX_OLD is not set
@@ -402,6 +405,7 @@ CONFIG_BLK_DEV_ALI15X3=y
402# CONFIG_BLK_DEV_SLC90E66 is not set 405# CONFIG_BLK_DEV_SLC90E66 is not set
403# CONFIG_BLK_DEV_TRM290 is not set 406# CONFIG_BLK_DEV_TRM290 is not set
404# CONFIG_BLK_DEV_VIA82CXXX is not set 407# CONFIG_BLK_DEV_VIA82CXXX is not set
408# CONFIG_BLK_DEV_TC86C001 is not set
405# CONFIG_IDE_ARM is not set 409# CONFIG_IDE_ARM is not set
406CONFIG_BLK_DEV_IDEDMA=y 410CONFIG_BLK_DEV_IDEDMA=y
407# CONFIG_IDEDMA_IVB is not set 411# CONFIG_IDEDMA_IVB is not set
@@ -579,6 +583,7 @@ CONFIG_NET_PCI=y
579# CONFIG_EPIC100 is not set 583# CONFIG_EPIC100 is not set
580# CONFIG_SUNDANCE is not set 584# CONFIG_SUNDANCE is not set
581# CONFIG_VIA_RHINE is not set 585# CONFIG_VIA_RHINE is not set
586# CONFIG_SC92031 is not set
582 587
583# 588#
584# Ethernet (1000 Mbit) 589# Ethernet (1000 Mbit)
@@ -601,11 +606,13 @@ CONFIG_E1000_NAPI=y
601CONFIG_TIGON3=m 606CONFIG_TIGON3=m
602CONFIG_BNX2=m 607CONFIG_BNX2=m
603# CONFIG_QLA3XXX is not set 608# CONFIG_QLA3XXX is not set
609# CONFIG_ATL1 is not set
604 610
605# 611#
606# Ethernet (10000 Mbit) 612# Ethernet (10000 Mbit)
607# 613#
608# CONFIG_CHELSIO_T1 is not set 614# CONFIG_CHELSIO_T1 is not set
615# CONFIG_CHELSIO_T3 is not set
609# CONFIG_IXGB is not set 616# CONFIG_IXGB is not set
610# CONFIG_S2IO is not set 617# CONFIG_S2IO is not set
611# CONFIG_MYRI10GE is not set 618# CONFIG_MYRI10GE is not set
@@ -627,8 +634,17 @@ CONFIG_BNX2=m
627# CONFIG_WAN is not set 634# CONFIG_WAN is not set
628# CONFIG_FDDI is not set 635# CONFIG_FDDI is not set
629# CONFIG_HIPPI is not set 636# CONFIG_HIPPI is not set
630# CONFIG_PPP is not set 637CONFIG_PPP=m
638CONFIG_PPP_MULTILINK=y
639CONFIG_PPP_FILTER=y
640CONFIG_PPP_ASYNC=m
641CONFIG_PPP_SYNC_TTY=m
642CONFIG_PPP_DEFLATE=m
643CONFIG_PPP_BSDCOMP=m
644CONFIG_PPP_MPPE=m
645CONFIG_PPPOE=m
631# CONFIG_SLIP is not set 646# CONFIG_SLIP is not set
647CONFIG_SLHC=m
632# CONFIG_NET_FC is not set 648# CONFIG_NET_FC is not set
633# CONFIG_SHAPER is not set 649# CONFIG_SHAPER is not set
634# CONFIG_NETCONSOLE is not set 650# CONFIG_NETCONSOLE is not set
@@ -1043,6 +1059,11 @@ CONFIG_SND_SUN_CS4231=m
1043# CONFIG_SND_SUN_DBRI is not set 1059# CONFIG_SND_SUN_DBRI is not set
1044 1060
1045# 1061#
1062# SoC audio support
1063#
1064# CONFIG_SND_SOC is not set
1065
1066#
1046# Open Sound System 1067# Open Sound System
1047# 1068#
1048# CONFIG_SOUND_PRIME is not set 1069# CONFIG_SOUND_PRIME is not set
@@ -1052,6 +1073,7 @@ CONFIG_AC97_BUS=m
1052# HID Devices 1073# HID Devices
1053# 1074#
1054CONFIG_HID=y 1075CONFIG_HID=y
1076# CONFIG_HID_DEBUG is not set
1055 1077
1056# 1078#
1057# USB support 1079# USB support
@@ -1066,9 +1088,7 @@ CONFIG_USB=y
1066# Miscellaneous USB options 1088# Miscellaneous USB options
1067# 1089#
1068CONFIG_USB_DEVICEFS=y 1090CONFIG_USB_DEVICEFS=y
1069# CONFIG_USB_BANDWIDTH is not set
1070# CONFIG_USB_DYNAMIC_MINORS is not set 1091# CONFIG_USB_DYNAMIC_MINORS is not set
1071# CONFIG_USB_MULTITHREAD_PROBE is not set
1072# CONFIG_USB_OTG is not set 1092# CONFIG_USB_OTG is not set
1073 1093
1074# 1094#
@@ -1078,9 +1098,11 @@ CONFIG_USB_EHCI_HCD=m
1078# CONFIG_USB_EHCI_SPLIT_ISO is not set 1098# CONFIG_USB_EHCI_SPLIT_ISO is not set
1079# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1099# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1080# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1100# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1101# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
1081# CONFIG_USB_ISP116X_HCD is not set 1102# CONFIG_USB_ISP116X_HCD is not set
1082CONFIG_USB_OHCI_HCD=y 1103CONFIG_USB_OHCI_HCD=y
1083# CONFIG_USB_OHCI_BIG_ENDIAN is not set 1104# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1105# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
1084CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1106CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1085CONFIG_USB_UHCI_HCD=m 1107CONFIG_USB_UHCI_HCD=m
1086# CONFIG_USB_SL811_HCD is not set 1108# CONFIG_USB_SL811_HCD is not set
@@ -1132,6 +1154,7 @@ CONFIG_USB_HIDDEV=y
1132# CONFIG_USB_ATI_REMOTE2 is not set 1154# CONFIG_USB_ATI_REMOTE2 is not set
1133# CONFIG_USB_KEYSPAN_REMOTE is not set 1155# CONFIG_USB_KEYSPAN_REMOTE is not set
1134# CONFIG_USB_APPLETOUCH is not set 1156# CONFIG_USB_APPLETOUCH is not set
1157# CONFIG_USB_GTCO is not set
1135 1158
1136# 1159#
1137# USB Imaging devices 1160# USB Imaging devices
@@ -1236,6 +1259,10 @@ CONFIG_USB_HIDDEV=y
1236# 1259#
1237 1260
1238# 1261#
1262# Auxiliary Display support
1263#
1264
1265#
1239# Virtualization 1266# Virtualization
1240# 1267#
1241 1268
@@ -1426,7 +1453,6 @@ CONFIG_SCHEDSTATS=y
1426# CONFIG_RT_MUTEX_TESTER is not set 1453# CONFIG_RT_MUTEX_TESTER is not set
1427# CONFIG_DEBUG_SPINLOCK is not set 1454# CONFIG_DEBUG_SPINLOCK is not set
1428# CONFIG_DEBUG_MUTEXES is not set 1455# CONFIG_DEBUG_MUTEXES is not set
1429# CONFIG_DEBUG_RWSEMS is not set
1430# CONFIG_DEBUG_LOCK_ALLOC is not set 1456# CONFIG_DEBUG_LOCK_ALLOC is not set
1431# CONFIG_PROVE_LOCKING is not set 1457# CONFIG_PROVE_LOCKING is not set
1432# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1458# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
@@ -1473,8 +1499,10 @@ CONFIG_CRYPTO_TGR192=m
1473CONFIG_CRYPTO_GF128MUL=m 1499CONFIG_CRYPTO_GF128MUL=m
1474CONFIG_CRYPTO_ECB=m 1500CONFIG_CRYPTO_ECB=m
1475CONFIG_CRYPTO_CBC=y 1501CONFIG_CRYPTO_CBC=y
1502CONFIG_CRYPTO_PCBC=m
1476CONFIG_CRYPTO_LRW=m 1503CONFIG_CRYPTO_LRW=m
1477CONFIG_CRYPTO_DES=y 1504CONFIG_CRYPTO_DES=y
1505CONFIG_CRYPTO_FCRYPT=m
1478CONFIG_CRYPTO_BLOWFISH=m 1506CONFIG_CRYPTO_BLOWFISH=m
1479CONFIG_CRYPTO_TWOFISH=m 1507CONFIG_CRYPTO_TWOFISH=m
1480CONFIG_CRYPTO_TWOFISH_COMMON=m 1508CONFIG_CRYPTO_TWOFISH_COMMON=m
@@ -1489,6 +1517,7 @@ CONFIG_CRYPTO_ANUBIS=m
1489CONFIG_CRYPTO_DEFLATE=y 1517CONFIG_CRYPTO_DEFLATE=y
1490CONFIG_CRYPTO_MICHAEL_MIC=m 1518CONFIG_CRYPTO_MICHAEL_MIC=m
1491CONFIG_CRYPTO_CRC32C=m 1519CONFIG_CRYPTO_CRC32C=m
1520CONFIG_CRYPTO_CAMELLIA=m
1492CONFIG_CRYPTO_TEST=m 1521CONFIG_CRYPTO_TEST=m
1493 1522
1494# 1523#
@@ -1506,4 +1535,5 @@ CONFIG_LIBCRC32C=m
1506CONFIG_ZLIB_INFLATE=y 1535CONFIG_ZLIB_INFLATE=y
1507CONFIG_ZLIB_DEFLATE=y 1536CONFIG_ZLIB_DEFLATE=y
1508CONFIG_PLIST=y 1537CONFIG_PLIST=y
1509CONFIG_IOMAP_COPY=y 1538CONFIG_HAS_IOMEM=y
1539CONFIG_HAS_IOPORT=y
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c
index c3d068c7a412..b5ff3ee5ace1 100644
--- a/arch/sparc64/kernel/irq.c
+++ b/arch/sparc64/kernel/irq.c
@@ -22,6 +22,7 @@
22#include <linux/seq_file.h> 22#include <linux/seq_file.h>
23#include <linux/bootmem.h> 23#include <linux/bootmem.h>
24#include <linux/irq.h> 24#include <linux/irq.h>
25#include <linux/msi.h>
25 26
26#include <asm/ptrace.h> 27#include <asm/ptrace.h>
27#include <asm/processor.h> 28#include <asm/processor.h>
@@ -87,7 +88,6 @@ struct ino_bucket ivector_table[NUM_IVECS] __attribute__ ((aligned (SMP_CACHE_BY
87#define irq_work(__cpu) &(trap_block[(__cpu)].irq_worklist) 88#define irq_work(__cpu) &(trap_block[(__cpu)].irq_worklist)
88 89
89static unsigned int virt_to_real_irq_table[NR_IRQS]; 90static unsigned int virt_to_real_irq_table[NR_IRQS];
90static unsigned char virt_irq_cur = 1;
91 91
92static unsigned char virt_irq_alloc(unsigned int real_irq) 92static unsigned char virt_irq_alloc(unsigned int real_irq)
93{ 93{
@@ -95,26 +95,32 @@ static unsigned char virt_irq_alloc(unsigned int real_irq)
95 95
96 BUILD_BUG_ON(NR_IRQS >= 256); 96 BUILD_BUG_ON(NR_IRQS >= 256);
97 97
98 ent = virt_irq_cur; 98 for (ent = 1; ent < NR_IRQS; ent++) {
99 if (!virt_to_real_irq_table[ent])
100 break;
101 }
99 if (ent >= NR_IRQS) { 102 if (ent >= NR_IRQS) {
100 printk(KERN_ERR "IRQ: Out of virtual IRQs.\n"); 103 printk(KERN_ERR "IRQ: Out of virtual IRQs.\n");
101 return 0; 104 return 0;
102 } 105 }
103 106
104 virt_irq_cur = ent + 1;
105 virt_to_real_irq_table[ent] = real_irq; 107 virt_to_real_irq_table[ent] = real_irq;
106 108
107 return ent; 109 return ent;
108} 110}
109 111
110#if 0 /* Currently unused. */ 112static void virt_irq_free(unsigned int virt_irq)
111static unsigned char real_to_virt_irq(unsigned int real_irq)
112{ 113{
113 struct ino_bucket *bucket = __bucket(real_irq); 114 unsigned int real_irq;
114 115
115 return bucket->virt_irq; 116 if (virt_irq >= NR_IRQS)
117 return;
118
119 real_irq = virt_to_real_irq_table[virt_irq];
120 virt_to_real_irq_table[virt_irq] = 0;
121
122 __bucket(real_irq)->virt_irq = 0;
116} 123}
117#endif
118 124
119static unsigned int virt_to_real_irq(unsigned char virt_irq) 125static unsigned int virt_to_real_irq(unsigned char virt_irq)
120{ 126{
@@ -268,8 +274,7 @@ static int irq_choose_cpu(unsigned int virt_irq)
268 274
269static void sun4u_irq_enable(unsigned int virt_irq) 275static void sun4u_irq_enable(unsigned int virt_irq)
270{ 276{
271 irq_desc_t *desc = irq_desc + virt_irq; 277 struct irq_handler_data *data = get_irq_chip_data(virt_irq);
272 struct irq_handler_data *data = desc->handler_data;
273 278
274 if (likely(data)) { 279 if (likely(data)) {
275 unsigned long cpuid, imap; 280 unsigned long cpuid, imap;
@@ -286,8 +291,7 @@ static void sun4u_irq_enable(unsigned int virt_irq)
286 291
287static void sun4u_irq_disable(unsigned int virt_irq) 292static void sun4u_irq_disable(unsigned int virt_irq)
288{ 293{
289 irq_desc_t *desc = irq_desc + virt_irq; 294 struct irq_handler_data *data = get_irq_chip_data(virt_irq);
290 struct irq_handler_data *data = desc->handler_data;
291 295
292 if (likely(data)) { 296 if (likely(data)) {
293 unsigned long imap = data->imap; 297 unsigned long imap = data->imap;
@@ -300,8 +304,7 @@ static void sun4u_irq_disable(unsigned int virt_irq)
300 304
301static void sun4u_irq_end(unsigned int virt_irq) 305static void sun4u_irq_end(unsigned int virt_irq)
302{ 306{
303 irq_desc_t *desc = irq_desc + virt_irq; 307 struct irq_handler_data *data = get_irq_chip_data(virt_irq);
304 struct irq_handler_data *data = desc->handler_data;
305 308
306 if (likely(data)) 309 if (likely(data))
307 upa_writel(ICLR_IDLE, data->iclr); 310 upa_writel(ICLR_IDLE, data->iclr);
@@ -344,6 +347,20 @@ static void sun4v_irq_disable(unsigned int virt_irq)
344 } 347 }
345} 348}
346 349
350#ifdef CONFIG_PCI_MSI
351static void sun4v_msi_enable(unsigned int virt_irq)
352{
353 sun4v_irq_enable(virt_irq);
354 unmask_msi_irq(virt_irq);
355}
356
357static void sun4v_msi_disable(unsigned int virt_irq)
358{
359 mask_msi_irq(virt_irq);
360 sun4v_irq_disable(virt_irq);
361}
362#endif
363
347static void sun4v_irq_end(unsigned int virt_irq) 364static void sun4v_irq_end(unsigned int virt_irq)
348{ 365{
349 struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); 366 struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq);
@@ -362,8 +379,7 @@ static void sun4v_irq_end(unsigned int virt_irq)
362static void run_pre_handler(unsigned int virt_irq) 379static void run_pre_handler(unsigned int virt_irq)
363{ 380{
364 struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); 381 struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq);
365 irq_desc_t *desc = irq_desc + virt_irq; 382 struct irq_handler_data *data = get_irq_chip_data(virt_irq);
366 struct irq_handler_data *data = desc->handler_data;
367 383
368 if (likely(data->pre_handler)) { 384 if (likely(data->pre_handler)) {
369 data->pre_handler(__irq_ino(__irq(bucket)), 385 data->pre_handler(__irq_ino(__irq(bucket)),
@@ -402,30 +418,47 @@ static struct irq_chip sun4v_irq_ack = {
402 .end = sun4v_irq_end, 418 .end = sun4v_irq_end,
403}; 419};
404 420
421#ifdef CONFIG_PCI_MSI
422static struct irq_chip sun4v_msi = {
423 .typename = "sun4v+msi",
424 .mask = mask_msi_irq,
425 .unmask = unmask_msi_irq,
426 .enable = sun4v_msi_enable,
427 .disable = sun4v_msi_disable,
428 .ack = run_pre_handler,
429 .end = sun4v_irq_end,
430};
431#endif
432
405void irq_install_pre_handler(int virt_irq, 433void irq_install_pre_handler(int virt_irq,
406 void (*func)(unsigned int, void *, void *), 434 void (*func)(unsigned int, void *, void *),
407 void *arg1, void *arg2) 435 void *arg1, void *arg2)
408{ 436{
409 irq_desc_t *desc = irq_desc + virt_irq; 437 struct irq_handler_data *data = get_irq_chip_data(virt_irq);
410 struct irq_handler_data *data = desc->handler_data; 438 struct irq_chip *chip;
411 439
412 data->pre_handler = func; 440 data->pre_handler = func;
413 data->pre_handler_arg1 = arg1; 441 data->pre_handler_arg1 = arg1;
414 data->pre_handler_arg2 = arg2; 442 data->pre_handler_arg2 = arg2;
415 443
416 if (desc->chip == &sun4u_irq_ack || 444 chip = get_irq_chip(virt_irq);
417 desc->chip == &sun4v_irq_ack) 445 if (chip == &sun4u_irq_ack ||
446 chip == &sun4v_irq_ack
447#ifdef CONFIG_PCI_MSI
448 || chip == &sun4v_msi
449#endif
450 )
418 return; 451 return;
419 452
420 desc->chip = (desc->chip == &sun4u_irq ? 453 chip = (chip == &sun4u_irq ?
421 &sun4u_irq_ack : &sun4v_irq_ack); 454 &sun4u_irq_ack : &sun4v_irq_ack);
455 set_irq_chip(virt_irq, chip);
422} 456}
423 457
424unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap) 458unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
425{ 459{
426 struct ino_bucket *bucket; 460 struct ino_bucket *bucket;
427 struct irq_handler_data *data; 461 struct irq_handler_data *data;
428 irq_desc_t *desc;
429 int ino; 462 int ino;
430 463
431 BUG_ON(tlb_type == hypervisor); 464 BUG_ON(tlb_type == hypervisor);
@@ -434,11 +467,11 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
434 bucket = &ivector_table[ino]; 467 bucket = &ivector_table[ino];
435 if (!bucket->virt_irq) { 468 if (!bucket->virt_irq) {
436 bucket->virt_irq = virt_irq_alloc(__irq(bucket)); 469 bucket->virt_irq = virt_irq_alloc(__irq(bucket));
437 irq_desc[bucket->virt_irq].chip = &sun4u_irq; 470 set_irq_chip(bucket->virt_irq, &sun4u_irq);
438 } 471 }
439 472
440 desc = irq_desc + bucket->virt_irq; 473 data = get_irq_chip_data(bucket->virt_irq);
441 if (unlikely(desc->handler_data)) 474 if (unlikely(data))
442 goto out; 475 goto out;
443 476
444 data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); 477 data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
@@ -446,7 +479,7 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
446 prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n"); 479 prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n");
447 prom_halt(); 480 prom_halt();
448 } 481 }
449 desc->handler_data = data; 482 set_irq_chip_data(bucket->virt_irq, data);
450 483
451 data->imap = imap; 484 data->imap = imap;
452 data->iclr = iclr; 485 data->iclr = iclr;
@@ -460,7 +493,6 @@ unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino)
460 struct ino_bucket *bucket; 493 struct ino_bucket *bucket;
461 struct irq_handler_data *data; 494 struct irq_handler_data *data;
462 unsigned long sysino; 495 unsigned long sysino;
463 irq_desc_t *desc;
464 496
465 BUG_ON(tlb_type != hypervisor); 497 BUG_ON(tlb_type != hypervisor);
466 498
@@ -468,11 +500,11 @@ unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino)
468 bucket = &ivector_table[sysino]; 500 bucket = &ivector_table[sysino];
469 if (!bucket->virt_irq) { 501 if (!bucket->virt_irq) {
470 bucket->virt_irq = virt_irq_alloc(__irq(bucket)); 502 bucket->virt_irq = virt_irq_alloc(__irq(bucket));
471 irq_desc[bucket->virt_irq].chip = &sun4v_irq; 503 set_irq_chip(bucket->virt_irq, &sun4v_irq);
472 } 504 }
473 505
474 desc = irq_desc + bucket->virt_irq; 506 data = get_irq_chip_data(bucket->virt_irq);
475 if (unlikely(desc->handler_data)) 507 if (unlikely(data))
476 goto out; 508 goto out;
477 509
478 data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); 510 data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
@@ -480,7 +512,7 @@ unsigned int sun4v_build_irq(u32 devhandle, unsigned int devino)
480 prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n"); 512 prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n");
481 prom_halt(); 513 prom_halt();
482 } 514 }
483 desc->handler_data = data; 515 set_irq_chip_data(bucket->virt_irq, data);
484 516
485 /* Catch accidental accesses to these things. IMAP/ICLR handling 517 /* Catch accidental accesses to these things. IMAP/ICLR handling
486 * is done by hypervisor calls on sun4v platforms, not by direct 518 * is done by hypervisor calls on sun4v platforms, not by direct
@@ -493,6 +525,56 @@ out:
493 return bucket->virt_irq; 525 return bucket->virt_irq;
494} 526}
495 527
528#ifdef CONFIG_PCI_MSI
529unsigned int sun4v_build_msi(u32 devhandle, unsigned int *virt_irq_p,
530 unsigned int msi_start, unsigned int msi_end)
531{
532 struct ino_bucket *bucket;
533 struct irq_handler_data *data;
534 unsigned long sysino;
535 unsigned int devino;
536
537 BUG_ON(tlb_type != hypervisor);
538
539 /* Find a free devino in the given range. */
540 for (devino = msi_start; devino < msi_end; devino++) {
541 sysino = sun4v_devino_to_sysino(devhandle, devino);
542 bucket = &ivector_table[sysino];
543 if (!bucket->virt_irq)
544 break;
545 }
546 if (devino >= msi_end)
547 return 0;
548
549 sysino = sun4v_devino_to_sysino(devhandle, devino);
550 bucket = &ivector_table[sysino];
551 bucket->virt_irq = virt_irq_alloc(__irq(bucket));
552 *virt_irq_p = bucket->virt_irq;
553 set_irq_chip(bucket->virt_irq, &sun4v_msi);
554
555 data = get_irq_chip_data(bucket->virt_irq);
556 if (unlikely(data))
557 return devino;
558
559 data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
560 if (unlikely(!data)) {
561 prom_printf("IRQ: kzalloc(irq_handler_data) failed.\n");
562 prom_halt();
563 }
564 set_irq_chip_data(bucket->virt_irq, data);
565
566 data->imap = ~0UL;
567 data->iclr = ~0UL;
568
569 return devino;
570}
571
572void sun4v_destroy_msi(unsigned int virt_irq)
573{
574 virt_irq_free(virt_irq);
575}
576#endif
577
496void ack_bad_irq(unsigned int virt_irq) 578void ack_bad_irq(unsigned int virt_irq)
497{ 579{
498 struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); 580 struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq);
diff --git a/arch/sparc64/kernel/pci.c b/arch/sparc64/kernel/pci.c
index dfc41cd4bb5d..6b740eb6fe7e 100644
--- a/arch/sparc64/kernel/pci.c
+++ b/arch/sparc64/kernel/pci.c
@@ -13,6 +13,8 @@
13#include <linux/capability.h> 13#include <linux/capability.h>
14#include <linux/errno.h> 14#include <linux/errno.h>
15#include <linux/smp_lock.h> 15#include <linux/smp_lock.h>
16#include <linux/msi.h>
17#include <linux/irq.h>
16#include <linux/init.h> 18#include <linux/init.h>
17 19
18#include <asm/uaccess.h> 20#include <asm/uaccess.h>
@@ -646,4 +648,37 @@ int pci_domain_nr(struct pci_bus *pbus)
646} 648}
647EXPORT_SYMBOL(pci_domain_nr); 649EXPORT_SYMBOL(pci_domain_nr);
648 650
651#ifdef CONFIG_PCI_MSI
652int arch_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc)
653{
654 struct pcidev_cookie *pcp = pdev->sysdata;
655 struct pci_pbm_info *pbm = pcp->pbm;
656 struct pci_controller_info *p = pbm->parent;
657 int virt_irq, err;
658
659 if (!pbm->msi_num || !p->setup_msi_irq)
660 return -EINVAL;
661
662 err = p->setup_msi_irq(&virt_irq, pdev, desc);
663 if (err < 0)
664 return err;
665
666 return virt_irq;
667}
668
669void arch_teardown_msi_irq(unsigned int virt_irq)
670{
671 struct msi_desc *entry = get_irq_data(virt_irq);
672 struct pci_dev *pdev = entry->dev;
673 struct pcidev_cookie *pcp = pdev->sysdata;
674 struct pci_pbm_info *pbm = pcp->pbm;
675 struct pci_controller_info *p = pbm->parent;
676
677 if (!pbm->msi_num || !p->setup_msi_irq)
678 return;
679
680 return p->teardown_msi_irq(virt_irq, pdev);
681}
682#endif /* !(CONFIG_PCI_MSI) */
683
649#endif /* !(CONFIG_PCI) */ 684#endif /* !(CONFIG_PCI) */
diff --git a/arch/sparc64/kernel/pci_common.c b/arch/sparc64/kernel/pci_common.c
index 827ae30aa497..5a92cb90ebe0 100644
--- a/arch/sparc64/kernel/pci_common.c
+++ b/arch/sparc64/kernel/pci_common.c
@@ -7,6 +7,8 @@
7#include <linux/string.h> 7#include <linux/string.h>
8#include <linux/slab.h> 8#include <linux/slab.h>
9#include <linux/init.h> 9#include <linux/init.h>
10#include <linux/pci.h>
11#include <linux/device.h>
10 12
11#include <asm/pbm.h> 13#include <asm/pbm.h>
12#include <asm/prom.h> 14#include <asm/prom.h>
@@ -129,6 +131,20 @@ static void __init fixup_obp_assignments(struct pci_dev *pdev,
129 } 131 }
130} 132}
131 133
134static ssize_t
135show_pciobppath_attr(struct device * dev, struct device_attribute * attr, char * buf)
136{
137 struct pci_dev *pdev;
138 struct pcidev_cookie *sysdata;
139
140 pdev = to_pci_dev(dev);
141 sysdata = pdev->sysdata;
142
143 return snprintf (buf, PAGE_SIZE, "%s\n", sysdata->prom_node->full_name);
144}
145
146static DEVICE_ATTR(obppath, S_IRUSR | S_IRGRP | S_IROTH, show_pciobppath_attr, NULL);
147
132/* Fill in the PCI device cookie sysdata for the given 148/* Fill in the PCI device cookie sysdata for the given
133 * PCI device. This cookie is the means by which one 149 * PCI device. This cookie is the means by which one
134 * can get to OBP and PCI controller specific information 150 * can get to OBP and PCI controller specific information
@@ -142,7 +158,7 @@ static void __init pdev_cookie_fillin(struct pci_pbm_info *pbm,
142 struct pcidev_cookie *pcp; 158 struct pcidev_cookie *pcp;
143 struct device_node *dp; 159 struct device_node *dp;
144 struct property *prop; 160 struct property *prop;
145 int nregs, len; 161 int nregs, len, err;
146 162
147 dp = find_device_prom_node(pbm, pdev, bus_node, 163 dp = find_device_prom_node(pbm, pdev, bus_node,
148 &pregs, &nregs); 164 &pregs, &nregs);
@@ -215,6 +231,13 @@ static void __init pdev_cookie_fillin(struct pci_pbm_info *pbm,
215 fixup_obp_assignments(pdev, pcp); 231 fixup_obp_assignments(pdev, pcp);
216 232
217 pdev->sysdata = pcp; 233 pdev->sysdata = pcp;
234
235 /* we don't really care if we can create this file or not,
236 * but we need to assign the result of the call or the world will fall
237 * under alien invasion and everybody will be frozen on a spaceship
238 * ready to be eaten on alpha centauri by some green and jelly humanoid.
239 */
240 err = sysfs_create_file(&pdev->dev.kobj, &dev_attr_obppath.attr);
218} 241}
219 242
220void __init pci_fill_in_pbm_cookies(struct pci_bus *pbus, 243void __init pci_fill_in_pbm_cookies(struct pci_bus *pbus,
diff --git a/arch/sparc64/kernel/pci_sun4v.c b/arch/sparc64/kernel/pci_sun4v.c
index 6b04794b7a97..ec22cd61ec8c 100644
--- a/arch/sparc64/kernel/pci_sun4v.c
+++ b/arch/sparc64/kernel/pci_sun4v.c
@@ -10,6 +10,8 @@
10#include <linux/slab.h> 10#include <linux/slab.h>
11#include <linux/interrupt.h> 11#include <linux/interrupt.h>
12#include <linux/percpu.h> 12#include <linux/percpu.h>
13#include <linux/irq.h>
14#include <linux/msi.h>
13 15
14#include <asm/pbm.h> 16#include <asm/pbm.h>
15#include <asm/iommu.h> 17#include <asm/iommu.h>
@@ -1074,6 +1076,443 @@ static void pci_sun4v_get_bus_range(struct pci_pbm_info *pbm)
1074 1076
1075} 1077}
1076 1078
1079#ifdef CONFIG_PCI_MSI
1080struct pci_sun4v_msiq_entry {
1081 u64 version_type;
1082#define MSIQ_VERSION_MASK 0xffffffff00000000UL
1083#define MSIQ_VERSION_SHIFT 32
1084#define MSIQ_TYPE_MASK 0x00000000000000ffUL
1085#define MSIQ_TYPE_SHIFT 0
1086#define MSIQ_TYPE_NONE 0x00
1087#define MSIQ_TYPE_MSG 0x01
1088#define MSIQ_TYPE_MSI32 0x02
1089#define MSIQ_TYPE_MSI64 0x03
1090#define MSIQ_TYPE_INTX 0x08
1091#define MSIQ_TYPE_NONE2 0xff
1092
1093 u64 intx_sysino;
1094 u64 reserved1;
1095 u64 stick;
1096 u64 req_id; /* bus/device/func */
1097#define MSIQ_REQID_BUS_MASK 0xff00UL
1098#define MSIQ_REQID_BUS_SHIFT 8
1099#define MSIQ_REQID_DEVICE_MASK 0x00f8UL
1100#define MSIQ_REQID_DEVICE_SHIFT 3
1101#define MSIQ_REQID_FUNC_MASK 0x0007UL
1102#define MSIQ_REQID_FUNC_SHIFT 0
1103
1104 u64 msi_address;
1105
1106 /* The format of this value is message type dependant.
1107 * For MSI bits 15:0 are the data from the MSI packet.
1108 * For MSI-X bits 31:0 are the data from the MSI packet.
1109 * For MSG, the message code and message routing code where:
1110 * bits 39:32 is the bus/device/fn of the msg target-id
1111 * bits 18:16 is the message routing code
1112 * bits 7:0 is the message code
1113 * For INTx the low order 2-bits are:
1114 * 00 - INTA
1115 * 01 - INTB
1116 * 10 - INTC
1117 * 11 - INTD
1118 */
1119 u64 msi_data;
1120
1121 u64 reserved2;
1122};
1123
1124/* For now this just runs as a pre-handler for the real interrupt handler.
1125 * So we just walk through the queue and ACK all the entries, update the
1126 * head pointer, and return.
1127 *
1128 * In the longer term it would be nice to do something more integrated
1129 * wherein we can pass in some of this MSI info to the drivers. This
1130 * would be most useful for PCIe fabric error messages, although we could
1131 * invoke those directly from the loop here in order to pass the info around.
1132 */
1133static void pci_sun4v_msi_prehandler(unsigned int ino, void *data1, void *data2)
1134{
1135 struct pci_pbm_info *pbm = data1;
1136 struct pci_sun4v_msiq_entry *base, *ep;
1137 unsigned long msiqid, orig_head, head, type, err;
1138
1139 msiqid = (unsigned long) data2;
1140
1141 head = 0xdeadbeef;
1142 err = pci_sun4v_msiq_gethead(pbm->devhandle, msiqid, &head);
1143 if (unlikely(err))
1144 goto hv_error_get;
1145
1146 if (unlikely(head >= (pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry))))
1147 goto bad_offset;
1148
1149 head /= sizeof(struct pci_sun4v_msiq_entry);
1150 orig_head = head;
1151 base = (pbm->msi_queues + ((msiqid - pbm->msiq_first) *
1152 (pbm->msiq_ent_count *
1153 sizeof(struct pci_sun4v_msiq_entry))));
1154 ep = &base[head];
1155 while ((ep->version_type & MSIQ_TYPE_MASK) != 0) {
1156 type = (ep->version_type & MSIQ_TYPE_MASK) >> MSIQ_TYPE_SHIFT;
1157 if (unlikely(type != MSIQ_TYPE_MSI32 &&
1158 type != MSIQ_TYPE_MSI64))
1159 goto bad_type;
1160
1161 pci_sun4v_msi_setstate(pbm->devhandle,
1162 ep->msi_data /* msi_num */,
1163 HV_MSISTATE_IDLE);
1164
1165 /* Clear the entry. */
1166 ep->version_type &= ~MSIQ_TYPE_MASK;
1167
1168 /* Go to next entry in ring. */
1169 head++;
1170 if (head >= pbm->msiq_ent_count)
1171 head = 0;
1172 ep = &base[head];
1173 }
1174
1175 if (likely(head != orig_head)) {
1176 /* ACK entries by updating head pointer. */
1177 head *= sizeof(struct pci_sun4v_msiq_entry);
1178 err = pci_sun4v_msiq_sethead(pbm->devhandle, msiqid, head);
1179 if (unlikely(err))
1180 goto hv_error_set;
1181 }
1182 return;
1183
1184hv_error_set:
1185 printk(KERN_EMERG "MSI: Hypervisor set head gives error %lu\n", err);
1186 goto hv_error_cont;
1187
1188hv_error_get:
1189 printk(KERN_EMERG "MSI: Hypervisor get head gives error %lu\n", err);
1190
1191hv_error_cont:
1192 printk(KERN_EMERG "MSI: devhandle[%x] msiqid[%lx] head[%lu]\n",
1193 pbm->devhandle, msiqid, head);
1194 return;
1195
1196bad_offset:
1197 printk(KERN_EMERG "MSI: Hypervisor gives bad offset %lx max(%lx)\n",
1198 head, pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry));
1199 return;
1200
1201bad_type:
1202 printk(KERN_EMERG "MSI: Entry has bad type %lx\n", type);
1203 return;
1204}
1205
1206static int msi_bitmap_alloc(struct pci_pbm_info *pbm)
1207{
1208 unsigned long size, bits_per_ulong;
1209
1210 bits_per_ulong = sizeof(unsigned long) * 8;
1211 size = (pbm->msi_num + (bits_per_ulong - 1)) & ~(bits_per_ulong - 1);
1212 size /= 8;
1213 BUG_ON(size % sizeof(unsigned long));
1214
1215 pbm->msi_bitmap = kzalloc(size, GFP_KERNEL);
1216 if (!pbm->msi_bitmap)
1217 return -ENOMEM;
1218
1219 return 0;
1220}
1221
1222static void msi_bitmap_free(struct pci_pbm_info *pbm)
1223{
1224 kfree(pbm->msi_bitmap);
1225 pbm->msi_bitmap = NULL;
1226}
1227
1228static int msi_queue_alloc(struct pci_pbm_info *pbm)
1229{
1230 unsigned long q_size, alloc_size, pages, order;
1231 int i;
1232
1233 q_size = pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry);
1234 alloc_size = (pbm->msiq_num * q_size);
1235 order = get_order(alloc_size);
1236 pages = __get_free_pages(GFP_KERNEL | __GFP_COMP, order);
1237 if (pages == 0UL) {
1238 printk(KERN_ERR "MSI: Cannot allocate MSI queues (o=%lu).\n",
1239 order);
1240 return -ENOMEM;
1241 }
1242 memset((char *)pages, 0, PAGE_SIZE << order);
1243 pbm->msi_queues = (void *) pages;
1244
1245 for (i = 0; i < pbm->msiq_num; i++) {
1246 unsigned long err, base = __pa(pages + (i * q_size));
1247 unsigned long ret1, ret2;
1248
1249 err = pci_sun4v_msiq_conf(pbm->devhandle,
1250 pbm->msiq_first + i,
1251 base, pbm->msiq_ent_count);
1252 if (err) {
1253 printk(KERN_ERR "MSI: msiq register fails (err=%lu)\n",
1254 err);
1255 goto h_error;
1256 }
1257
1258 err = pci_sun4v_msiq_info(pbm->devhandle,
1259 pbm->msiq_first + i,
1260 &ret1, &ret2);
1261 if (err) {
1262 printk(KERN_ERR "MSI: Cannot read msiq (err=%lu)\n",
1263 err);
1264 goto h_error;
1265 }
1266 if (ret1 != base || ret2 != pbm->msiq_ent_count) {
1267 printk(KERN_ERR "MSI: Bogus qconf "
1268 "expected[%lx:%x] got[%lx:%lx]\n",
1269 base, pbm->msiq_ent_count,
1270 ret1, ret2);
1271 goto h_error;
1272 }
1273 }
1274
1275 return 0;
1276
1277h_error:
1278 free_pages(pages, order);
1279 return -EINVAL;
1280}
1281
1282static void pci_sun4v_msi_init(struct pci_pbm_info *pbm)
1283{
1284 u32 *val;
1285 int len;
1286
1287 val = of_get_property(pbm->prom_node, "#msi-eqs", &len);
1288 if (!val || len != 4)
1289 goto no_msi;
1290 pbm->msiq_num = *val;
1291 if (pbm->msiq_num) {
1292 struct msiq_prop {
1293 u32 first_msiq;
1294 u32 num_msiq;
1295 u32 first_devino;
1296 } *mqp;
1297 struct msi_range_prop {
1298 u32 first_msi;
1299 u32 num_msi;
1300 } *mrng;
1301 struct addr_range_prop {
1302 u32 msi32_high;
1303 u32 msi32_low;
1304 u32 msi32_len;
1305 u32 msi64_high;
1306 u32 msi64_low;
1307 u32 msi64_len;
1308 } *arng;
1309
1310 val = of_get_property(pbm->prom_node, "msi-eq-size", &len);
1311 if (!val || len != 4)
1312 goto no_msi;
1313
1314 pbm->msiq_ent_count = *val;
1315
1316 mqp = of_get_property(pbm->prom_node,
1317 "msi-eq-to-devino", &len);
1318 if (!mqp || len != sizeof(struct msiq_prop))
1319 goto no_msi;
1320
1321 pbm->msiq_first = mqp->first_msiq;
1322 pbm->msiq_first_devino = mqp->first_devino;
1323
1324 val = of_get_property(pbm->prom_node, "#msi", &len);
1325 if (!val || len != 4)
1326 goto no_msi;
1327 pbm->msi_num = *val;
1328
1329 mrng = of_get_property(pbm->prom_node, "msi-ranges", &len);
1330 if (!mrng || len != sizeof(struct msi_range_prop))
1331 goto no_msi;
1332 pbm->msi_first = mrng->first_msi;
1333
1334 val = of_get_property(pbm->prom_node, "msi-data-mask", &len);
1335 if (!val || len != 4)
1336 goto no_msi;
1337 pbm->msi_data_mask = *val;
1338
1339 val = of_get_property(pbm->prom_node, "msix-data-width", &len);
1340 if (!val || len != 4)
1341 goto no_msi;
1342 pbm->msix_data_width = *val;
1343
1344 arng = of_get_property(pbm->prom_node, "msi-address-ranges",
1345 &len);
1346 if (!arng || len != sizeof(struct addr_range_prop))
1347 goto no_msi;
1348 pbm->msi32_start = ((u64)arng->msi32_high << 32) |
1349 (u64) arng->msi32_low;
1350 pbm->msi64_start = ((u64)arng->msi64_high << 32) |
1351 (u64) arng->msi64_low;
1352 pbm->msi32_len = arng->msi32_len;
1353 pbm->msi64_len = arng->msi64_len;
1354
1355 if (msi_bitmap_alloc(pbm))
1356 goto no_msi;
1357
1358 if (msi_queue_alloc(pbm)) {
1359 msi_bitmap_free(pbm);
1360 goto no_msi;
1361 }
1362
1363 printk(KERN_INFO "%s: MSI Queue first[%u] num[%u] count[%u] "
1364 "devino[0x%x]\n",
1365 pbm->name,
1366 pbm->msiq_first, pbm->msiq_num,
1367 pbm->msiq_ent_count,
1368 pbm->msiq_first_devino);
1369 printk(KERN_INFO "%s: MSI first[%u] num[%u] mask[0x%x] "
1370 "width[%u]\n",
1371 pbm->name,
1372 pbm->msi_first, pbm->msi_num, pbm->msi_data_mask,
1373 pbm->msix_data_width);
1374 printk(KERN_INFO "%s: MSI addr32[0x%lx:0x%x] "
1375 "addr64[0x%lx:0x%x]\n",
1376 pbm->name,
1377 pbm->msi32_start, pbm->msi32_len,
1378 pbm->msi64_start, pbm->msi64_len);
1379 printk(KERN_INFO "%s: MSI queues at RA [%p]\n",
1380 pbm->name,
1381 pbm->msi_queues);
1382 }
1383
1384 return;
1385
1386no_msi:
1387 pbm->msiq_num = 0;
1388 printk(KERN_INFO "%s: No MSI support.\n", pbm->name);
1389}
1390
1391static int alloc_msi(struct pci_pbm_info *pbm)
1392{
1393 int i;
1394
1395 for (i = 0; i < pbm->msi_num; i++) {
1396 if (!test_and_set_bit(i, pbm->msi_bitmap))
1397 return i + pbm->msi_first;
1398 }
1399
1400 return -ENOENT;
1401}
1402
1403static void free_msi(struct pci_pbm_info *pbm, int msi_num)
1404{
1405 msi_num -= pbm->msi_first;
1406 clear_bit(msi_num, pbm->msi_bitmap);
1407}
1408
1409static int pci_sun4v_setup_msi_irq(unsigned int *virt_irq_p,
1410 struct pci_dev *pdev,
1411 struct msi_desc *entry)
1412{
1413 struct pcidev_cookie *pcp = pdev->sysdata;
1414 struct pci_pbm_info *pbm = pcp->pbm;
1415 unsigned long devino, msiqid;
1416 struct msi_msg msg;
1417 int msi_num, err;
1418
1419 *virt_irq_p = 0;
1420
1421 msi_num = alloc_msi(pbm);
1422 if (msi_num < 0)
1423 return msi_num;
1424
1425 devino = sun4v_build_msi(pbm->devhandle, virt_irq_p,
1426 pbm->msiq_first_devino,
1427 (pbm->msiq_first_devino +
1428 pbm->msiq_num));
1429 err = -ENOMEM;
1430 if (!devino)
1431 goto out_err;
1432
1433 set_irq_msi(*virt_irq_p, entry);
1434
1435 msiqid = ((devino - pbm->msiq_first_devino) +
1436 pbm->msiq_first);
1437
1438 err = -EINVAL;
1439 if (pci_sun4v_msiq_setstate(pbm->devhandle, msiqid, HV_MSIQSTATE_IDLE))
1440 if (err)
1441 goto out_err;
1442
1443 if (pci_sun4v_msiq_setvalid(pbm->devhandle, msiqid, HV_MSIQ_VALID))
1444 goto out_err;
1445
1446 if (pci_sun4v_msi_setmsiq(pbm->devhandle,
1447 msi_num, msiqid,
1448 (entry->msi_attrib.is_64 ?
1449 HV_MSITYPE_MSI64 : HV_MSITYPE_MSI32)))
1450 goto out_err;
1451
1452 if (pci_sun4v_msi_setstate(pbm->devhandle, msi_num, HV_MSISTATE_IDLE))
1453 goto out_err;
1454
1455 if (pci_sun4v_msi_setvalid(pbm->devhandle, msi_num, HV_MSIVALID_VALID))
1456 goto out_err;
1457
1458 pcp->msi_num = msi_num;
1459
1460 if (entry->msi_attrib.is_64) {
1461 msg.address_hi = pbm->msi64_start >> 32;
1462 msg.address_lo = pbm->msi64_start & 0xffffffff;
1463 } else {
1464 msg.address_hi = 0;
1465 msg.address_lo = pbm->msi32_start;
1466 }
1467 msg.data = msi_num;
1468 write_msi_msg(*virt_irq_p, &msg);
1469
1470 irq_install_pre_handler(*virt_irq_p,
1471 pci_sun4v_msi_prehandler,
1472 pbm, (void *) msiqid);
1473
1474 return 0;
1475
1476out_err:
1477 free_msi(pbm, msi_num);
1478 sun4v_destroy_msi(*virt_irq_p);
1479 *virt_irq_p = 0;
1480 return err;
1481
1482}
1483
1484static void pci_sun4v_teardown_msi_irq(unsigned int virt_irq,
1485 struct pci_dev *pdev)
1486{
1487 struct pcidev_cookie *pcp = pdev->sysdata;
1488 struct pci_pbm_info *pbm = pcp->pbm;
1489 unsigned long msiqid, err;
1490 unsigned int msi_num;
1491
1492 msi_num = pcp->msi_num;
1493 err = pci_sun4v_msi_getmsiq(pbm->devhandle, msi_num, &msiqid);
1494 if (err) {
1495 printk(KERN_ERR "%s: getmsiq gives error %lu\n",
1496 pbm->name, err);
1497 return;
1498 }
1499
1500 pci_sun4v_msi_setvalid(pbm->devhandle, msi_num, HV_MSIVALID_INVALID);
1501 pci_sun4v_msiq_setvalid(pbm->devhandle, msiqid, HV_MSIQ_INVALID);
1502
1503 free_msi(pbm, msi_num);
1504
1505 /* The sun4v_destroy_msi() will liberate the devino and thus the MSIQ
1506 * allocation.
1507 */
1508 sun4v_destroy_msi(virt_irq);
1509}
1510#else /* CONFIG_PCI_MSI */
1511static void pci_sun4v_msi_init(struct pci_pbm_info *pbm)
1512{
1513}
1514#endif /* !(CONFIG_PCI_MSI) */
1515
1077static void pci_sun4v_pbm_init(struct pci_controller_info *p, struct device_node *dp, u32 devhandle) 1516static void pci_sun4v_pbm_init(struct pci_controller_info *p, struct device_node *dp, u32 devhandle)
1078{ 1517{
1079 struct pci_pbm_info *pbm; 1518 struct pci_pbm_info *pbm;
@@ -1119,6 +1558,7 @@ static void pci_sun4v_pbm_init(struct pci_controller_info *p, struct device_node
1119 1558
1120 pci_sun4v_get_bus_range(pbm); 1559 pci_sun4v_get_bus_range(pbm);
1121 pci_sun4v_iommu_init(pbm); 1560 pci_sun4v_iommu_init(pbm);
1561 pci_sun4v_msi_init(pbm);
1122 1562
1123 pdev_htab_populate(pbm); 1563 pdev_htab_populate(pbm);
1124} 1564}
@@ -1187,6 +1627,10 @@ void sun4v_pci_init(struct device_node *dp, char *model_name)
1187 p->scan_bus = pci_sun4v_scan_bus; 1627 p->scan_bus = pci_sun4v_scan_bus;
1188 p->base_address_update = pci_sun4v_base_address_update; 1628 p->base_address_update = pci_sun4v_base_address_update;
1189 p->resource_adjust = pci_sun4v_resource_adjust; 1629 p->resource_adjust = pci_sun4v_resource_adjust;
1630#ifdef CONFIG_PCI_MSI
1631 p->setup_msi_irq = pci_sun4v_setup_msi_irq;
1632 p->teardown_msi_irq = pci_sun4v_teardown_msi_irq;
1633#endif
1190 p->pci_ops = &pci_sun4v_ops; 1634 p->pci_ops = &pci_sun4v_ops;
1191 1635
1192 /* Like PSYCHO and SCHIZO we have a 2GB aligned area 1636 /* Like PSYCHO and SCHIZO we have a 2GB aligned area
diff --git a/arch/sparc64/kernel/pci_sun4v.h b/arch/sparc64/kernel/pci_sun4v.h
index 884d25f6158d..8e9fc3a5b4f5 100644
--- a/arch/sparc64/kernel/pci_sun4v.h
+++ b/arch/sparc64/kernel/pci_sun4v.h
@@ -28,4 +28,65 @@ extern int pci_sun4v_config_put(unsigned long devhandle,
28 unsigned long size, 28 unsigned long size,
29 unsigned long data); 29 unsigned long data);
30 30
31extern unsigned long pci_sun4v_msiq_conf(unsigned long devhandle,
32 unsigned long msiqid,
33 unsigned long msiq_paddr,
34 unsigned long num_entries);
35extern unsigned long pci_sun4v_msiq_info(unsigned long devhandle,
36 unsigned long msiqid,
37 unsigned long *msiq_paddr,
38 unsigned long *num_entries);
39extern unsigned long pci_sun4v_msiq_getvalid(unsigned long devhandle,
40 unsigned long msiqid,
41 unsigned long *valid);
42extern unsigned long pci_sun4v_msiq_setvalid(unsigned long devhandle,
43 unsigned long msiqid,
44 unsigned long valid);
45extern unsigned long pci_sun4v_msiq_getstate(unsigned long devhandle,
46 unsigned long msiqid,
47 unsigned long *state);
48extern unsigned long pci_sun4v_msiq_setstate(unsigned long devhandle,
49 unsigned long msiqid,
50 unsigned long state);
51extern unsigned long pci_sun4v_msiq_gethead(unsigned long devhandle,
52 unsigned long msiqid,
53 unsigned long *head);
54extern unsigned long pci_sun4v_msiq_sethead(unsigned long devhandle,
55 unsigned long msiqid,
56 unsigned long head);
57extern unsigned long pci_sun4v_msiq_gettail(unsigned long devhandle,
58 unsigned long msiqid,
59 unsigned long *head);
60extern unsigned long pci_sun4v_msi_getvalid(unsigned long devhandle,
61 unsigned long msinum,
62 unsigned long *valid);
63extern unsigned long pci_sun4v_msi_setvalid(unsigned long devhandle,
64 unsigned long msinum,
65 unsigned long valid);
66extern unsigned long pci_sun4v_msi_getmsiq(unsigned long devhandle,
67 unsigned long msinum,
68 unsigned long *msiq);
69extern unsigned long pci_sun4v_msi_setmsiq(unsigned long devhandle,
70 unsigned long msinum,
71 unsigned long msiq,
72 unsigned long msitype);
73extern unsigned long pci_sun4v_msi_getstate(unsigned long devhandle,
74 unsigned long msinum,
75 unsigned long *state);
76extern unsigned long pci_sun4v_msi_setstate(unsigned long devhandle,
77 unsigned long msinum,
78 unsigned long state);
79extern unsigned long pci_sun4v_msg_getmsiq(unsigned long devhandle,
80 unsigned long msinum,
81 unsigned long *msiq);
82extern unsigned long pci_sun4v_msg_setmsiq(unsigned long devhandle,
83 unsigned long msinum,
84 unsigned long msiq);
85extern unsigned long pci_sun4v_msg_getvalid(unsigned long devhandle,
86 unsigned long msinum,
87 unsigned long *valid);
88extern unsigned long pci_sun4v_msg_setvalid(unsigned long devhandle,
89 unsigned long msinum,
90 unsigned long valid);
91
31#endif /* !(_PCI_SUN4V_H) */ 92#endif /* !(_PCI_SUN4V_H) */
diff --git a/arch/sparc64/kernel/pci_sun4v_asm.S b/arch/sparc64/kernel/pci_sun4v_asm.S
index 6604fdbf746c..ecb81f389b06 100644
--- a/arch/sparc64/kernel/pci_sun4v_asm.S
+++ b/arch/sparc64/kernel/pci_sun4v_asm.S
@@ -93,3 +93,269 @@ pci_sun4v_config_put:
93 mov -1, %o1 93 mov -1, %o1
941: retl 941: retl
95 mov %o1, %o0 95 mov %o1, %o0
96
97 /* %o0: devhandle
98 * %o1: msiqid
99 * %o2: msiq phys address
100 * %o3: num entries
101 *
102 * returns %o0: status
103 *
104 * status will be zero if the operation completed
105 * successfully, else -1 if not
106 */
107 .globl pci_sun4v_msiq_conf
108pci_sun4v_msiq_conf:
109 mov HV_FAST_PCI_MSIQ_CONF, %o5
110 ta HV_FAST_TRAP
111 retl
112 mov %o0, %o0
113
114 /* %o0: devhandle
115 * %o1: msiqid
116 * %o2: &msiq_phys_addr
117 * %o3: &msiq_num_entries
118 *
119 * returns %o0: status
120 */
121 .globl pci_sun4v_msiq_info
122pci_sun4v_msiq_info:
123 mov %o2, %o4
124 mov HV_FAST_PCI_MSIQ_INFO, %o5
125 ta HV_FAST_TRAP
126 stx %o1, [%o4]
127 stx %o2, [%o3]
128 retl
129 mov %o0, %o0
130
131 /* %o0: devhandle
132 * %o1: msiqid
133 * %o2: &valid
134 *
135 * returns %o0: status
136 */
137 .globl pci_sun4v_msiq_getvalid
138pci_sun4v_msiq_getvalid:
139 mov HV_FAST_PCI_MSIQ_GETVALID, %o5
140 ta HV_FAST_TRAP
141 stx %o1, [%o2]
142 retl
143 mov %o0, %o0
144
145 /* %o0: devhandle
146 * %o1: msiqid
147 * %o2: valid
148 *
149 * returns %o0: status
150 */
151 .globl pci_sun4v_msiq_setvalid
152pci_sun4v_msiq_setvalid:
153 mov HV_FAST_PCI_MSIQ_SETVALID, %o5
154 ta HV_FAST_TRAP
155 retl
156 mov %o0, %o0
157
158 /* %o0: devhandle
159 * %o1: msiqid
160 * %o2: &state
161 *
162 * returns %o0: status
163 */
164 .globl pci_sun4v_msiq_getstate
165pci_sun4v_msiq_getstate:
166 mov HV_FAST_PCI_MSIQ_GETSTATE, %o5
167 ta HV_FAST_TRAP
168 stx %o1, [%o2]
169 retl
170 mov %o0, %o0
171
172 /* %o0: devhandle
173 * %o1: msiqid
174 * %o2: state
175 *
176 * returns %o0: status
177 */
178 .globl pci_sun4v_msiq_setstate
179pci_sun4v_msiq_setstate:
180 mov HV_FAST_PCI_MSIQ_SETSTATE, %o5
181 ta HV_FAST_TRAP
182 retl
183 mov %o0, %o0
184
185 /* %o0: devhandle
186 * %o1: msiqid
187 * %o2: &head
188 *
189 * returns %o0: status
190 */
191 .globl pci_sun4v_msiq_gethead
192pci_sun4v_msiq_gethead:
193 mov HV_FAST_PCI_MSIQ_GETHEAD, %o5
194 ta HV_FAST_TRAP
195 stx %o1, [%o2]
196 retl
197 mov %o0, %o0
198
199 /* %o0: devhandle
200 * %o1: msiqid
201 * %o2: head
202 *
203 * returns %o0: status
204 */
205 .globl pci_sun4v_msiq_sethead
206pci_sun4v_msiq_sethead:
207 mov HV_FAST_PCI_MSIQ_SETHEAD, %o5
208 ta HV_FAST_TRAP
209 retl
210 mov %o0, %o0
211
212 /* %o0: devhandle
213 * %o1: msiqid
214 * %o2: &tail
215 *
216 * returns %o0: status
217 */
218 .globl pci_sun4v_msiq_gettail
219pci_sun4v_msiq_gettail:
220 mov HV_FAST_PCI_MSIQ_GETTAIL, %o5
221 ta HV_FAST_TRAP
222 stx %o1, [%o2]
223 retl
224 mov %o0, %o0
225
226 /* %o0: devhandle
227 * %o1: msinum
228 * %o2: &valid
229 *
230 * returns %o0: status
231 */
232 .globl pci_sun4v_msi_getvalid
233pci_sun4v_msi_getvalid:
234 mov HV_FAST_PCI_MSI_GETVALID, %o5
235 ta HV_FAST_TRAP
236 stx %o1, [%o2]
237 retl
238 mov %o0, %o0
239
240 /* %o0: devhandle
241 * %o1: msinum
242 * %o2: valid
243 *
244 * returns %o0: status
245 */
246 .globl pci_sun4v_msi_setvalid
247pci_sun4v_msi_setvalid:
248 mov HV_FAST_PCI_MSI_SETVALID, %o5
249 ta HV_FAST_TRAP
250 retl
251 mov %o0, %o0
252
253 /* %o0: devhandle
254 * %o1: msinum
255 * %o2: &msiq
256 *
257 * returns %o0: status
258 */
259 .globl pci_sun4v_msi_getmsiq
260pci_sun4v_msi_getmsiq:
261 mov HV_FAST_PCI_MSI_GETMSIQ, %o5
262 ta HV_FAST_TRAP
263 stx %o1, [%o2]
264 retl
265 mov %o0, %o0
266
267 /* %o0: devhandle
268 * %o1: msinum
269 * %o2: msitype
270 * %o3: msiq
271 *
272 * returns %o0: status
273 */
274 .globl pci_sun4v_msi_setmsiq
275pci_sun4v_msi_setmsiq:
276 mov HV_FAST_PCI_MSI_SETMSIQ, %o5
277 ta HV_FAST_TRAP
278 retl
279 mov %o0, %o0
280
281 /* %o0: devhandle
282 * %o1: msinum
283 * %o2: &state
284 *
285 * returns %o0: status
286 */
287 .globl pci_sun4v_msi_getstate
288pci_sun4v_msi_getstate:
289 mov HV_FAST_PCI_MSI_GETSTATE, %o5
290 ta HV_FAST_TRAP
291 stx %o1, [%o2]
292 retl
293 mov %o0, %o0
294
295 /* %o0: devhandle
296 * %o1: msinum
297 * %o2: state
298 *
299 * returns %o0: status
300 */
301 .globl pci_sun4v_msi_setstate
302pci_sun4v_msi_setstate:
303 mov HV_FAST_PCI_MSI_SETSTATE, %o5
304 ta HV_FAST_TRAP
305 retl
306 mov %o0, %o0
307
308 /* %o0: devhandle
309 * %o1: msinum
310 * %o2: &msiq
311 *
312 * returns %o0: status
313 */
314 .globl pci_sun4v_msg_getmsiq
315pci_sun4v_msg_getmsiq:
316 mov HV_FAST_PCI_MSG_GETMSIQ, %o5
317 ta HV_FAST_TRAP
318 stx %o1, [%o2]
319 retl
320 mov %o0, %o0
321
322 /* %o0: devhandle
323 * %o1: msinum
324 * %o2: msiq
325 *
326 * returns %o0: status
327 */
328 .globl pci_sun4v_msg_setmsiq
329pci_sun4v_msg_setmsiq:
330 mov HV_FAST_PCI_MSG_SETMSIQ, %o5
331 ta HV_FAST_TRAP
332 retl
333 mov %o0, %o0
334
335 /* %o0: devhandle
336 * %o1: msinum
337 * %o2: &valid
338 *
339 * returns %o0: status
340 */
341 .globl pci_sun4v_msg_getvalid
342pci_sun4v_msg_getvalid:
343 mov HV_FAST_PCI_MSG_GETVALID, %o5
344 ta HV_FAST_TRAP
345 stx %o1, [%o2]
346 retl
347 mov %o0, %o0
348
349 /* %o0: devhandle
350 * %o1: msinum
351 * %o2: valid
352 *
353 * returns %o0: status
354 */
355 .globl pci_sun4v_msg_setvalid
356pci_sun4v_msg_setvalid:
357 mov HV_FAST_PCI_MSG_SETVALID, %o5
358 ta HV_FAST_TRAP
359 retl
360 mov %o0, %o0
361
diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c
index bf033b31d437..451028341c75 100644
--- a/arch/sparc64/kernel/setup.c
+++ b/arch/sparc64/kernel/setup.c
@@ -315,7 +315,7 @@ void __init setup_arch(char **cmdline_p)
315{ 315{
316 /* Initialize PROM console and command line. */ 316 /* Initialize PROM console and command line. */
317 *cmdline_p = prom_getbootargs(); 317 *cmdline_p = prom_getbootargs();
318 strcpy(saved_command_line, *cmdline_p); 318 strcpy(boot_command_line, *cmdline_p);
319 319
320 if (tlb_type == hypervisor) 320 if (tlb_type == hypervisor)
321 printk("ARCH: SUN4V\n"); 321 printk("ARCH: SUN4V\n");
diff --git a/arch/sparc64/kernel/sunos_ioctl32.c b/arch/sparc64/kernel/sunos_ioctl32.c
index 3f619ead22cc..a05e43d51755 100644
--- a/arch/sparc64/kernel/sunos_ioctl32.c
+++ b/arch/sparc64/kernel/sunos_ioctl32.c
@@ -11,6 +11,7 @@
11#include <linux/errno.h> 11#include <linux/errno.h>
12#include <linux/string.h> 12#include <linux/string.h>
13#include <linux/termios.h> 13#include <linux/termios.h>
14#include <linux/tty.h>
14#include <linux/ioctl.h> 15#include <linux/ioctl.h>
15#include <linux/route.h> 16#include <linux/route.h>
16#include <linux/sockios.h> 17#include <linux/sockios.h>
diff --git a/arch/sparc64/kernel/sys_sparc32.c b/arch/sparc64/kernel/sys_sparc32.c
index e27cb71bd8e2..7876a0226285 100644
--- a/arch/sparc64/kernel/sys_sparc32.c
+++ b/arch/sparc64/kernel/sys_sparc32.c
@@ -459,70 +459,6 @@ asmlinkage long compat_sys_sysfs(int option, u32 arg1, u32 arg2)
459 return sys_sysfs(option, arg1, arg2); 459 return sys_sysfs(option, arg1, arg2);
460} 460}
461 461
462struct sysinfo32 {
463 s32 uptime;
464 u32 loads[3];
465 u32 totalram;
466 u32 freeram;
467 u32 sharedram;
468 u32 bufferram;
469 u32 totalswap;
470 u32 freeswap;
471 unsigned short procs;
472 unsigned short pad;
473 u32 totalhigh;
474 u32 freehigh;
475 u32 mem_unit;
476 char _f[20-2*sizeof(int)-sizeof(int)];
477};
478
479asmlinkage long sys32_sysinfo(struct sysinfo32 __user *info)
480{
481 struct sysinfo s;
482 int ret, err;
483 int bitcount = 0;
484 mm_segment_t old_fs = get_fs ();
485
486 set_fs(KERNEL_DS);
487 ret = sys_sysinfo((struct sysinfo __user *) &s);
488 set_fs(old_fs);
489 /* Check to see if any memory value is too large for 32-bit and
490 * scale down if needed.
491 */
492 if ((s.totalram >> 32) || (s.totalswap >> 32)) {
493 while (s.mem_unit < PAGE_SIZE) {
494 s.mem_unit <<= 1;
495 bitcount++;
496 }
497 s.totalram >>= bitcount;
498 s.freeram >>= bitcount;
499 s.sharedram >>= bitcount;
500 s.bufferram >>= bitcount;
501 s.totalswap >>= bitcount;
502 s.freeswap >>= bitcount;
503 s.totalhigh >>= bitcount;
504 s.freehigh >>= bitcount;
505 }
506
507 err = put_user (s.uptime, &info->uptime);
508 err |= __put_user (s.loads[0], &info->loads[0]);
509 err |= __put_user (s.loads[1], &info->loads[1]);
510 err |= __put_user (s.loads[2], &info->loads[2]);
511 err |= __put_user (s.totalram, &info->totalram);
512 err |= __put_user (s.freeram, &info->freeram);
513 err |= __put_user (s.sharedram, &info->sharedram);
514 err |= __put_user (s.bufferram, &info->bufferram);
515 err |= __put_user (s.totalswap, &info->totalswap);
516 err |= __put_user (s.freeswap, &info->freeswap);
517 err |= __put_user (s.procs, &info->procs);
518 err |= __put_user (s.totalhigh, &info->totalhigh);
519 err |= __put_user (s.freehigh, &info->freehigh);
520 err |= __put_user (s.mem_unit, &info->mem_unit);
521 if (err)
522 return -EFAULT;
523 return ret;
524}
525
526asmlinkage long compat_sys_sched_rr_get_interval(compat_pid_t pid, struct compat_timespec __user *interval) 462asmlinkage long compat_sys_sched_rr_get_interval(compat_pid_t pid, struct compat_timespec __user *interval)
527{ 463{
528 struct timespec t; 464 struct timespec t;
diff --git a/arch/sparc64/kernel/sys_sunos32.c b/arch/sparc64/kernel/sys_sunos32.c
index 2ebc2c051383..4cff95b7b3a4 100644
--- a/arch/sparc64/kernel/sys_sunos32.c
+++ b/arch/sparc64/kernel/sys_sunos32.c
@@ -824,10 +824,17 @@ asmlinkage int sunos_wait4(compat_pid_t pid, compat_uint_t __user *stat_addr, in
824 return ret; 824 return ret;
825} 825}
826 826
827extern int kill_pg(int, int, int);
828asmlinkage int sunos_killpg(int pgrp, int sig) 827asmlinkage int sunos_killpg(int pgrp, int sig)
829{ 828{
830 return kill_pg(pgrp, sig, 0); 829 int ret;
830
831 rcu_read_lock();
832 ret = -EINVAL;
833 if (pgrp > 0)
834 ret = kill_pgrp(find_pid(pgrp), sig, 0);
835 rcu_read_unlock();
836
837 return ret;
831} 838}
832 839
833asmlinkage int sunos_audit(void) 840asmlinkage int sunos_audit(void)
diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S
index 9a8026797ac0..948b7d2d5874 100644
--- a/arch/sparc64/kernel/systbls.S
+++ b/arch/sparc64/kernel/systbls.S
@@ -61,7 +61,7 @@ sys_call_table32:
61 .word sys32_epoll_wait, sys32_ioprio_set, sys_getppid, sys32_sigaction, sys_sgetmask 61 .word sys32_epoll_wait, sys32_ioprio_set, sys_getppid, sys32_sigaction, sys_sgetmask
62/*200*/ .word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir 62/*200*/ .word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, compat_sys_old_readdir
63 .word sys32_readahead, sys32_socketcall, sys32_syslog, sys32_lookup_dcookie, sys32_fadvise64 63 .word sys32_readahead, sys32_socketcall, sys32_syslog, sys32_lookup_dcookie, sys32_fadvise64
64/*210*/ .word sys32_fadvise64_64, sys32_tgkill, sys32_waitpid, sys_swapoff, sys32_sysinfo 64/*210*/ .word sys32_fadvise64_64, sys32_tgkill, sys32_waitpid, sys_swapoff, compat_sys_sysinfo
65 .word sys32_ipc, sys32_sigreturn, sys_clone, sys32_ioprio_get, compat_sys_adjtimex 65 .word sys32_ipc, sys32_sigreturn, sys_clone, sys32_ioprio_get, compat_sys_adjtimex
66/*220*/ .word sys32_sigprocmask, sys_ni_syscall, sys32_delete_module, sys_ni_syscall, sys32_getpgid 66/*220*/ .word sys32_sigprocmask, sys_ni_syscall, sys32_delete_module, sys_ni_syscall, sys32_getpgid
67 .word sys32_bdflush, sys32_sysfs, sys_nis_syscall, sys32_setfsuid16, sys32_setfsgid16 67 .word sys32_bdflush, sys32_sysfs, sys_nis_syscall, sys32_setfsuid16, sys32_setfsgid16
diff --git a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c
index 061e1b1fa583..f84da4f1b706 100644
--- a/arch/sparc64/kernel/time.c
+++ b/arch/sparc64/kernel/time.c
@@ -1327,7 +1327,7 @@ static int mini_rtc_release(struct inode *inode, struct file *file)
1327} 1327}
1328 1328
1329 1329
1330static struct file_operations mini_rtc_fops = { 1330static const struct file_operations mini_rtc_fops = {
1331 .owner = THIS_MODULE, 1331 .owner = THIS_MODULE,
1332 .ioctl = mini_rtc_ioctl, 1332 .ioctl = mini_rtc_ioctl,
1333 .open = mini_rtc_open, 1333 .open = mini_rtc_open,
diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S
index 4a6063f33e7a..13fa2a2e4513 100644
--- a/arch/sparc64/kernel/vmlinux.lds.S
+++ b/arch/sparc64/kernel/vmlinux.lds.S
@@ -81,10 +81,14 @@ SECTIONS
81 __sun4v_2insn_patch = .; 81 __sun4v_2insn_patch = .;
82 .sun4v_2insn_patch : { *(.sun4v_2insn_patch) } 82 .sun4v_2insn_patch : { *(.sun4v_2insn_patch) }
83 __sun4v_2insn_patch_end = .; 83 __sun4v_2insn_patch_end = .;
84
85#ifdef CONFIG_BLK_DEV_INITRD
84 . = ALIGN(8192); 86 . = ALIGN(8192);
85 __initramfs_start = .; 87 __initramfs_start = .;
86 .init.ramfs : { *(.init.ramfs) } 88 .init.ramfs : { *(.init.ramfs) }
87 __initramfs_end = .; 89 __initramfs_end = .;
90#endif
91
88 . = ALIGN(8192); 92 . = ALIGN(8192);
89 __per_cpu_start = .; 93 __per_cpu_start = .;
90 .data.percpu : { *(.data.percpu) } 94 .data.percpu : { *(.data.percpu) }
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c
index 054822a3e05e..b1a1ee0cc6bd 100644
--- a/arch/sparc64/mm/init.c
+++ b/arch/sparc64/mm/init.c
@@ -416,7 +416,7 @@ void show_mem(void)
416 printk("Free swap: %6ldkB\n", 416 printk("Free swap: %6ldkB\n",
417 nr_swap_pages << (PAGE_SHIFT-10)); 417 nr_swap_pages << (PAGE_SHIFT-10));
418 printk("%ld pages of RAM\n", num_physpages); 418 printk("%ld pages of RAM\n", num_physpages);
419 printk("%d free pages\n", nr_free_pages()); 419 printk("%lu free pages\n", nr_free_pages());
420} 420}
421 421
422void mmu_info(struct seq_file *m) 422void mmu_info(struct seq_file *m)
@@ -1467,8 +1467,8 @@ void __init paging_init(void)
1467 for (znum = 0; znum < MAX_NR_ZONES; znum++) 1467 for (znum = 0; znum < MAX_NR_ZONES; znum++)
1468 zones_size[znum] = zholes_size[znum] = 0; 1468 zones_size[znum] = zholes_size[znum] = 0;
1469 1469
1470 zones_size[ZONE_DMA] = end_pfn; 1470 zones_size[ZONE_NORMAL] = end_pfn;
1471 zholes_size[ZONE_DMA] = end_pfn - pages_avail; 1471 zholes_size[ZONE_NORMAL] = end_pfn - pages_avail;
1472 1472
1473 free_area_init_node(0, &contig_page_data, zones_size, 1473 free_area_init_node(0, &contig_page_data, zones_size,
1474 __pa(PAGE_OFFSET) >> PAGE_SHIFT, 1474 __pa(PAGE_OFFSET) >> PAGE_SHIFT,
@@ -1593,7 +1593,7 @@ void __init mem_init(void)
1593 initpages = (((unsigned long) __init_end) - ((unsigned long) __init_begin)); 1593 initpages = (((unsigned long) __init_end) - ((unsigned long) __init_begin));
1594 initpages = PAGE_ALIGN(initpages) >> PAGE_SHIFT; 1594 initpages = PAGE_ALIGN(initpages) >> PAGE_SHIFT;
1595 1595
1596 printk("Memory: %uk available (%ldk kernel code, %ldk data, %ldk init) [%016lx,%016lx]\n", 1596 printk("Memory: %luk available (%ldk kernel code, %ldk data, %ldk init) [%016lx,%016lx]\n",
1597 nr_free_pages() << (PAGE_SHIFT-10), 1597 nr_free_pages() << (PAGE_SHIFT-10),
1598 codepages << (PAGE_SHIFT-10), 1598 codepages << (PAGE_SHIFT-10),
1599 datapages << (PAGE_SHIFT-10), 1599 datapages << (PAGE_SHIFT-10),
diff --git a/arch/sparc64/solaris/socksys.c b/arch/sparc64/solaris/socksys.c
index 89a4757f192f..c2864447de82 100644
--- a/arch/sparc64/solaris/socksys.c
+++ b/arch/sparc64/solaris/socksys.c
@@ -163,7 +163,7 @@ static unsigned int socksys_poll(struct file * filp, poll_table * wait)
163 return mask; 163 return mask;
164} 164}
165 165
166static struct file_operations socksys_fops = { 166static const struct file_operations socksys_fops = {
167 .open = socksys_open, 167 .open = socksys_open,
168 .release = socksys_release, 168 .release = socksys_release,
169}; 169};
diff --git a/arch/um/Kconfig b/arch/um/Kconfig
index d32a80e6668c..b3a21ba77cd2 100644
--- a/arch/um/Kconfig
+++ b/arch/um/Kconfig
@@ -16,6 +16,9 @@ config MMU
16 bool 16 bool
17 default y 17 default y
18 18
19config NO_IOMEM
20 def_bool y
21
19mainmenu "Linux/Usermode Kernel Configuration" 22mainmenu "Linux/Usermode Kernel Configuration"
20 23
21config ISA 24config ISA
diff --git a/arch/um/drivers/chan_kern.c b/arch/um/drivers/chan_kern.c
index 7d4190e55654..7b8baf146acc 100644
--- a/arch/um/drivers/chan_kern.c
+++ b/arch/um/drivers/chan_kern.c
@@ -19,44 +19,11 @@
19#include "line.h" 19#include "line.h"
20#include "os.h" 20#include "os.h"
21 21
22/* XXX: could well be moved to somewhere else, if needed. */
23static int my_printf(const char * fmt, ...)
24 __attribute__ ((format (printf, 1, 2)));
25
26static int my_printf(const char * fmt, ...)
27{
28 /* Yes, can be called on atomic context.*/
29 char *buf = kmalloc(4096, GFP_ATOMIC);
30 va_list args;
31 int r;
32
33 if (!buf) {
34 /* We print directly fmt.
35 * Yes, yes, yes, feel free to complain. */
36 r = strlen(fmt);
37 } else {
38 va_start(args, fmt);
39 r = vsprintf(buf, fmt, args);
40 va_end(args);
41 fmt = buf;
42 }
43
44 if (r)
45 r = os_write_file(1, fmt, r);
46 return r;
47
48}
49
50#ifdef CONFIG_NOCONFIG_CHAN 22#ifdef CONFIG_NOCONFIG_CHAN
51/* Despite its name, there's no added trailing newline. */ 23static void *not_configged_init(char *str, int device,
52static int my_puts(const char * buf) 24 const struct chan_opts *opts)
53{
54 return os_write_file(1, buf, strlen(buf));
55}
56
57static void *not_configged_init(char *str, int device, struct chan_opts *opts)
58{ 25{
59 my_puts("Using a channel type which is configured out of " 26 printk("Using a channel type which is configured out of "
60 "UML\n"); 27 "UML\n");
61 return NULL; 28 return NULL;
62} 29}
@@ -64,34 +31,34 @@ static void *not_configged_init(char *str, int device, struct chan_opts *opts)
64static int not_configged_open(int input, int output, int primary, void *data, 31static int not_configged_open(int input, int output, int primary, void *data,
65 char **dev_out) 32 char **dev_out)
66{ 33{
67 my_puts("Using a channel type which is configured out of " 34 printk("Using a channel type which is configured out of "
68 "UML\n"); 35 "UML\n");
69 return -ENODEV; 36 return -ENODEV;
70} 37}
71 38
72static void not_configged_close(int fd, void *data) 39static void not_configged_close(int fd, void *data)
73{ 40{
74 my_puts("Using a channel type which is configured out of " 41 printk("Using a channel type which is configured out of "
75 "UML\n"); 42 "UML\n");
76} 43}
77 44
78static int not_configged_read(int fd, char *c_out, void *data) 45static int not_configged_read(int fd, char *c_out, void *data)
79{ 46{
80 my_puts("Using a channel type which is configured out of " 47 printk("Using a channel type which is configured out of "
81 "UML\n"); 48 "UML\n");
82 return -EIO; 49 return -EIO;
83} 50}
84 51
85static int not_configged_write(int fd, const char *buf, int len, void *data) 52static int not_configged_write(int fd, const char *buf, int len, void *data)
86{ 53{
87 my_puts("Using a channel type which is configured out of " 54 printk("Using a channel type which is configured out of "
88 "UML\n"); 55 "UML\n");
89 return -EIO; 56 return -EIO;
90} 57}
91 58
92static int not_configged_console_write(int fd, const char *buf, int len) 59static int not_configged_console_write(int fd, const char *buf, int len)
93{ 60{
94 my_puts("Using a channel type which is configured out of " 61 printk("Using a channel type which is configured out of "
95 "UML\n"); 62 "UML\n");
96 return -EIO; 63 return -EIO;
97} 64}
@@ -99,14 +66,14 @@ static int not_configged_console_write(int fd, const char *buf, int len)
99static int not_configged_window_size(int fd, void *data, unsigned short *rows, 66static int not_configged_window_size(int fd, void *data, unsigned short *rows,
100 unsigned short *cols) 67 unsigned short *cols)
101{ 68{
102 my_puts("Using a channel type which is configured out of " 69 printk("Using a channel type which is configured out of "
103 "UML\n"); 70 "UML\n");
104 return -ENODEV; 71 return -ENODEV;
105} 72}
106 73
107static void not_configged_free(void *data) 74static void not_configged_free(void *data)
108{ 75{
109 my_puts("Using a channel type which is configured out of " 76 printk("Using a channel type which is configured out of "
110 "UML\n"); 77 "UML\n");
111} 78}
112 79
@@ -255,15 +222,28 @@ void enable_chan(struct line *line)
255 } 222 }
256} 223}
257 224
225/* Items are added in IRQ context, when free_irq can't be called, and
226 * removed in process context, when it can.
227 * This handles interrupt sources which disappear, and which need to
228 * be permanently disabled. This is discovered in IRQ context, but
229 * the freeing of the IRQ must be done later.
230 */
231static DEFINE_SPINLOCK(irqs_to_free_lock);
258static LIST_HEAD(irqs_to_free); 232static LIST_HEAD(irqs_to_free);
259 233
260void free_irqs(void) 234void free_irqs(void)
261{ 235{
262 struct chan *chan; 236 struct chan *chan;
237 LIST_HEAD(list);
238 struct list_head *ele;
263 239
264 while(!list_empty(&irqs_to_free)){ 240 spin_lock_irq(&irqs_to_free_lock);
265 chan = list_entry(irqs_to_free.next, struct chan, free_list); 241 list_splice_init(&irqs_to_free, &list);
266 list_del(&chan->free_list); 242 INIT_LIST_HEAD(&irqs_to_free);
243 spin_unlock_irq(&irqs_to_free_lock);
244
245 list_for_each(ele, &list){
246 chan = list_entry(ele, struct chan, free_list);
267 247
268 if(chan->input) 248 if(chan->input)
269 free_irq(chan->line->driver->read_irq, chan); 249 free_irq(chan->line->driver->read_irq, chan);
@@ -279,7 +259,9 @@ static void close_one_chan(struct chan *chan, int delay_free_irq)
279 return; 259 return;
280 260
281 if(delay_free_irq){ 261 if(delay_free_irq){
262 spin_lock_irq(&irqs_to_free_lock);
282 list_add(&chan->free_list, &irqs_to_free); 263 list_add(&chan->free_list, &irqs_to_free);
264 spin_unlock_irq(&irqs_to_free_lock);
283 } 265 }
284 else { 266 else {
285 if(chan->input) 267 if(chan->input)
@@ -372,8 +354,7 @@ int console_write_chan(struct list_head *chans, const char *buf, int len)
372 return ret; 354 return ret;
373} 355}
374 356
375int console_open_chan(struct line *line, struct console *co, 357int console_open_chan(struct line *line, struct console *co)
376 const struct chan_opts *opts)
377{ 358{
378 int err; 359 int err;
379 360
@@ -381,7 +362,7 @@ int console_open_chan(struct line *line, struct console *co,
381 if(err) 362 if(err)
382 return err; 363 return err;
383 364
384 printk("Console initialized on /dev/%s%d\n",co->name,co->index); 365 printk("Console initialized on /dev/%s%d\n", co->name, co->index);
385 return 0; 366 return 0;
386} 367}
387 368
@@ -534,7 +515,7 @@ static const struct chan_type chan_table[] = {
534}; 515};
535 516
536static struct chan *parse_chan(struct line *line, char *str, int device, 517static struct chan *parse_chan(struct line *line, char *str, int device,
537 const struct chan_opts *opts) 518 const struct chan_opts *opts, char **error_out)
538{ 519{
539 const struct chan_type *entry; 520 const struct chan_type *entry;
540 const struct chan_ops *ops; 521 const struct chan_ops *ops;
@@ -553,19 +534,21 @@ static struct chan *parse_chan(struct line *line, char *str, int device,
553 } 534 }
554 } 535 }
555 if(ops == NULL){ 536 if(ops == NULL){
556 my_printf("parse_chan couldn't parse \"%s\"\n", 537 *error_out = "No match for configured backends";
557 str);
558 return NULL; 538 return NULL;
559 } 539 }
560 if(ops->init == NULL) 540
561 return NULL;
562 data = (*ops->init)(str, device, opts); 541 data = (*ops->init)(str, device, opts);
563 if(data == NULL) 542 if(data == NULL){
543 *error_out = "Configuration failed";
564 return NULL; 544 return NULL;
545 }
565 546
566 chan = kmalloc(sizeof(*chan), GFP_ATOMIC); 547 chan = kmalloc(sizeof(*chan), GFP_ATOMIC);
567 if(chan == NULL) 548 if(chan == NULL){
549 *error_out = "Memory allocation failed";
568 return NULL; 550 return NULL;
551 }
569 *chan = ((struct chan) { .list = LIST_HEAD_INIT(chan->list), 552 *chan = ((struct chan) { .list = LIST_HEAD_INIT(chan->list),
570 .free_list = 553 .free_list =
571 LIST_HEAD_INIT(chan->free_list), 554 LIST_HEAD_INIT(chan->free_list),
@@ -582,7 +565,7 @@ static struct chan *parse_chan(struct line *line, char *str, int device,
582} 565}
583 566
584int parse_chan_pair(char *str, struct line *line, int device, 567int parse_chan_pair(char *str, struct line *line, int device,
585 const struct chan_opts *opts) 568 const struct chan_opts *opts, char **error_out)
586{ 569{
587 struct list_head *chans = &line->chan_list; 570 struct list_head *chans = &line->chan_list;
588 struct chan *new, *chan; 571 struct chan *new, *chan;
@@ -599,14 +582,14 @@ int parse_chan_pair(char *str, struct line *line, int device,
599 in = str; 582 in = str;
600 *out = '\0'; 583 *out = '\0';
601 out++; 584 out++;
602 new = parse_chan(line, in, device, opts); 585 new = parse_chan(line, in, device, opts, error_out);
603 if(new == NULL) 586 if(new == NULL)
604 return -1; 587 return -1;
605 588
606 new->input = 1; 589 new->input = 1;
607 list_add(&new->list, chans); 590 list_add(&new->list, chans);
608 591
609 new = parse_chan(line, out, device, opts); 592 new = parse_chan(line, out, device, opts, error_out);
610 if(new == NULL) 593 if(new == NULL)
611 return -1; 594 return -1;
612 595
@@ -614,7 +597,7 @@ int parse_chan_pair(char *str, struct line *line, int device,
614 new->output = 1; 597 new->output = 1;
615 } 598 }
616 else { 599 else {
617 new = parse_chan(line, str, device, opts); 600 new = parse_chan(line, str, device, opts, error_out);
618 if(new == NULL) 601 if(new == NULL)
619 return -1; 602 return -1;
620 603
diff --git a/arch/um/drivers/harddog_kern.c b/arch/um/drivers/harddog_kern.c
index 64ff22aa077b..55601687b3bc 100644
--- a/arch/um/drivers/harddog_kern.c
+++ b/arch/um/drivers/harddog_kern.c
@@ -9,10 +9,10 @@
9 * modify it under the terms of the GNU General Public License 9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 10 * as published by the Free Software Foundation; either version
11 * 2 of the License, or (at your option) any later version. 11 * 2 of the License, or (at your option) any later version.
12 * 12 *
13 * Neither Alan Cox nor CymruNet Ltd. admit liability nor provide 13 * Neither Alan Cox nor CymruNet Ltd. admit liability nor provide
14 * warranty for any of this software. This material is provided 14 * warranty for any of this software. This material is provided
15 * "AS-IS" and at no charge. 15 * "AS-IS" and at no charge.
16 * 16 *
17 * (c) Copyright 1995 Alan Cox <alan@lxorguk.ukuu.org.uk> 17 * (c) Copyright 1995 Alan Cox <alan@lxorguk.ukuu.org.uk>
18 * 18 *
@@ -29,11 +29,11 @@
29 * Made SMP safe for 2.3.x 29 * Made SMP safe for 2.3.x
30 * 30 *
31 * 20011127 Joel Becker (jlbec@evilplan.org> 31 * 20011127 Joel Becker (jlbec@evilplan.org>
32 * Added soft_noboot; Allows testing the softdog trigger without 32 * Added soft_noboot; Allows testing the softdog trigger without
33 * requiring a recompile. 33 * requiring a recompile.
34 * Added WDIOC_GETTIMEOUT and WDIOC_SETTIMOUT. 34 * Added WDIOC_GETTIMEOUT and WDIOC_SETTIMOUT.
35 */ 35 */
36 36
37#include <linux/module.h> 37#include <linux/module.h>
38#include <linux/types.h> 38#include <linux/types.h>
39#include <linux/kernel.h> 39#include <linux/kernel.h>
@@ -44,12 +44,13 @@
44#include <linux/reboot.h> 44#include <linux/reboot.h>
45#include <linux/smp_lock.h> 45#include <linux/smp_lock.h>
46#include <linux/init.h> 46#include <linux/init.h>
47#include <linux/spinlock.h>
47#include <asm/uaccess.h> 48#include <asm/uaccess.h>
48#include "mconsole.h" 49#include "mconsole.h"
49 50
50MODULE_LICENSE("GPL"); 51MODULE_LICENSE("GPL");
51 52
52/* Locked by the BKL in harddog_open and harddog_release */ 53static DEFINE_SPINLOCK(lock);
53static int timer_alive; 54static int timer_alive;
54static int harddog_in_fd = -1; 55static int harddog_in_fd = -1;
55static int harddog_out_fd = -1; 56static int harddog_out_fd = -1;
@@ -57,18 +58,18 @@ static int harddog_out_fd = -1;
57/* 58/*
58 * Allow only one person to hold it open 59 * Allow only one person to hold it open
59 */ 60 */
60 61
61extern int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock); 62extern int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock);
62 63
63static int harddog_open(struct inode *inode, struct file *file) 64static int harddog_open(struct inode *inode, struct file *file)
64{ 65{
65 int err; 66 int err = -EBUSY;
66 char *sock = NULL; 67 char *sock = NULL;
67 68
68 lock_kernel(); 69 spin_lock(&lock);
69 if(timer_alive) 70 if(timer_alive)
70 return -EBUSY; 71 goto err;
71#ifdef CONFIG_HARDDOG_NOWAYOUT 72#ifdef CONFIG_HARDDOG_NOWAYOUT
72 __module_get(THIS_MODULE); 73 __module_get(THIS_MODULE);
73#endif 74#endif
74 75
@@ -76,11 +77,15 @@ static int harddog_open(struct inode *inode, struct file *file)
76 sock = mconsole_notify_socket(); 77 sock = mconsole_notify_socket();
77#endif 78#endif
78 err = start_watchdog(&harddog_in_fd, &harddog_out_fd, sock); 79 err = start_watchdog(&harddog_in_fd, &harddog_out_fd, sock);
79 if(err) return(err); 80 if(err)
81 goto err;
80 82
81 timer_alive = 1; 83 timer_alive = 1;
82 unlock_kernel(); 84 spin_unlock(&lock);
83 return nonseekable_open(inode, file); 85 return nonseekable_open(inode, file);
86err:
87 spin_unlock(&lock);
88 return err;
84} 89}
85 90
86extern void stop_watchdog(int in_fd, int out_fd); 91extern void stop_watchdog(int in_fd, int out_fd);
@@ -90,14 +95,16 @@ static int harddog_release(struct inode *inode, struct file *file)
90 /* 95 /*
91 * Shut off the timer. 96 * Shut off the timer.
92 */ 97 */
93 lock_kernel(); 98
99 spin_lock(&lock);
94 100
95 stop_watchdog(harddog_in_fd, harddog_out_fd); 101 stop_watchdog(harddog_in_fd, harddog_out_fd);
96 harddog_in_fd = -1; 102 harddog_in_fd = -1;
97 harddog_out_fd = -1; 103 harddog_out_fd = -1;
98 104
99 timer_alive=0; 105 timer_alive=0;
100 unlock_kernel(); 106 spin_unlock(&lock);
107
101 return 0; 108 return 0;
102} 109}
103 110
@@ -110,7 +117,7 @@ static ssize_t harddog_write(struct file *file, const char __user *data, size_t
110 * Refresh the timer. 117 * Refresh the timer.
111 */ 118 */
112 if(len) 119 if(len)
113 return(ping_watchdog(harddog_out_fd)); 120 return ping_watchdog(harddog_out_fd);
114 return 0; 121 return 0;
115} 122}
116 123
@@ -134,11 +141,11 @@ static int harddog_ioctl(struct inode *inode, struct file *file,
134 case WDIOC_GETBOOTSTATUS: 141 case WDIOC_GETBOOTSTATUS:
135 return put_user(0,(int __user *)argp); 142 return put_user(0,(int __user *)argp);
136 case WDIOC_KEEPALIVE: 143 case WDIOC_KEEPALIVE:
137 return(ping_watchdog(harddog_out_fd)); 144 return ping_watchdog(harddog_out_fd);
138 } 145 }
139} 146}
140 147
141static struct file_operations harddog_fops = { 148static const struct file_operations harddog_fops = {
142 .owner = THIS_MODULE, 149 .owner = THIS_MODULE,
143 .write = harddog_write, 150 .write = harddog_write,
144 .ioctl = harddog_ioctl, 151 .ioctl = harddog_ioctl,
@@ -165,7 +172,7 @@ static int __init harddog_init(void)
165 172
166 printk(banner); 173 printk(banner);
167 174
168 return(0); 175 return 0;
169} 176}
170 177
171static void __exit harddog_exit(void) 178static void __exit harddog_exit(void)
@@ -175,14 +182,3 @@ static void __exit harddog_exit(void)
175 182
176module_init(harddog_init); 183module_init(harddog_init);
177module_exit(harddog_exit); 184module_exit(harddog_exit);
178
179/*
180 * Overrides for Emacs so that we follow Linus's tabbing style.
181 * Emacs will notice this stuff at the end of the file and automatically
182 * adjust the settings for this buffer only. This must remain at the end
183 * of the file.
184 * ---------------------------------------------------------------------------
185 * Local variables:
186 * c-file-style: "linux"
187 * End:
188 */
diff --git a/arch/um/drivers/harddog_user.c b/arch/um/drivers/harddog_user.c
index def013b5a3c7..c495ecf263b1 100644
--- a/arch/um/drivers/harddog_user.c
+++ b/arch/um/drivers/harddog_user.c
@@ -1,4 +1,4 @@
1/* 1/*
2 * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) 2 * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL 3 * Licensed under the GPL
4 */ 4 */
@@ -38,7 +38,7 @@ int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock)
38 int in_fds[2], out_fds[2], pid, n, err; 38 int in_fds[2], out_fds[2], pid, n, err;
39 char pid_buf[sizeof("nnnnn\0")], c; 39 char pid_buf[sizeof("nnnnn\0")], c;
40 char *pid_args[] = { "/usr/bin/uml_watchdog", "-pid", pid_buf, NULL }; 40 char *pid_args[] = { "/usr/bin/uml_watchdog", "-pid", pid_buf, NULL };
41 char *mconsole_args[] = { "/usr/bin/uml_watchdog", "-mconsole", NULL, 41 char *mconsole_args[] = { "/usr/bin/uml_watchdog", "-mconsole", NULL,
42 NULL }; 42 NULL };
43 char **args = NULL; 43 char **args = NULL;
44 44
@@ -96,7 +96,7 @@ int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock)
96 } 96 }
97 *in_fd_ret = in_fds[0]; 97 *in_fd_ret = in_fds[0];
98 *out_fd_ret = out_fds[1]; 98 *out_fd_ret = out_fds[1];
99 return(0); 99 return 0;
100 100
101 out_close_in: 101 out_close_in:
102 os_close_file(in_fds[0]); 102 os_close_file(in_fds[0]);
@@ -105,7 +105,7 @@ int start_watchdog(int *in_fd_ret, int *out_fd_ret, char *sock)
105 os_close_file(out_fds[0]); 105 os_close_file(out_fds[0]);
106 os_close_file(out_fds[1]); 106 os_close_file(out_fds[1]);
107 out: 107 out:
108 return(err); 108 return err;
109} 109}
110 110
111void stop_watchdog(int in_fd, int out_fd) 111void stop_watchdog(int in_fd, int out_fd)
@@ -123,20 +123,9 @@ int ping_watchdog(int fd)
123 if(n != sizeof(c)){ 123 if(n != sizeof(c)){
124 printk("ping_watchdog - write failed, err = %d\n", -n); 124 printk("ping_watchdog - write failed, err = %d\n", -n);
125 if(n < 0) 125 if(n < 0)
126 return(n); 126 return n;
127 return(-EIO); 127 return -EIO;
128 } 128 }
129 return 1; 129 return 1;
130 130
131} 131}
132
133/*
134 * Overrides for Emacs so that we follow Linus's tabbing style.
135 * Emacs will notice this stuff at the end of the file and automatically
136 * adjust the settings for this buffer only. This must remain at the end
137 * of the file.
138 * ---------------------------------------------------------------------------
139 * Local variables:
140 * c-file-style: "linux"
141 * End:
142 */
diff --git a/arch/um/drivers/hostaudio_kern.c b/arch/um/drivers/hostaudio_kern.c
index a0d148ea63d6..10e08a8c17c3 100644
--- a/arch/um/drivers/hostaudio_kern.c
+++ b/arch/um/drivers/hostaudio_kern.c
@@ -15,19 +15,22 @@
15#include "os.h" 15#include "os.h"
16 16
17struct hostaudio_state { 17struct hostaudio_state {
18 int fd; 18 int fd;
19}; 19};
20 20
21struct hostmixer_state { 21struct hostmixer_state {
22 int fd; 22 int fd;
23}; 23};
24 24
25#define HOSTAUDIO_DEV_DSP "/dev/sound/dsp" 25#define HOSTAUDIO_DEV_DSP "/dev/sound/dsp"
26#define HOSTAUDIO_DEV_MIXER "/dev/sound/mixer" 26#define HOSTAUDIO_DEV_MIXER "/dev/sound/mixer"
27 27
28/* Only changed from linux_main at boot time */ 28/* Changed either at boot time or module load time. At boot, this is
29char *dsp = HOSTAUDIO_DEV_DSP; 29 * single-threaded; at module load, multiple modules would each have
30char *mixer = HOSTAUDIO_DEV_MIXER; 30 * their own copy of these variables.
31 */
32static char *dsp = HOSTAUDIO_DEV_DSP;
33static char *mixer = HOSTAUDIO_DEV_MIXER;
31 34
32#define DSP_HELP \ 35#define DSP_HELP \
33" This is used to specify the host dsp device to the hostaudio driver.\n" \ 36" This is used to specify the host dsp device to the hostaudio driver.\n" \
@@ -69,12 +72,12 @@ MODULE_PARM_DESC(mixer, MIXER_HELP);
69static ssize_t hostaudio_read(struct file *file, char __user *buffer, 72static ssize_t hostaudio_read(struct file *file, char __user *buffer,
70 size_t count, loff_t *ppos) 73 size_t count, loff_t *ppos)
71{ 74{
72 struct hostaudio_state *state = file->private_data; 75 struct hostaudio_state *state = file->private_data;
73 void *kbuf; 76 void *kbuf;
74 int err; 77 int err;
75 78
76#ifdef DEBUG 79#ifdef DEBUG
77 printk("hostaudio: read called, count = %d\n", count); 80 printk("hostaudio: read called, count = %d\n", count);
78#endif 81#endif
79 82
80 kbuf = kmalloc(count, GFP_KERNEL); 83 kbuf = kmalloc(count, GFP_KERNEL);
@@ -88,7 +91,7 @@ static ssize_t hostaudio_read(struct file *file, char __user *buffer,
88 if(copy_to_user(buffer, kbuf, err)) 91 if(copy_to_user(buffer, kbuf, err))
89 err = -EFAULT; 92 err = -EFAULT;
90 93
91 out: 94out:
92 kfree(kbuf); 95 kfree(kbuf);
93 return(err); 96 return(err);
94} 97}
@@ -96,12 +99,12 @@ static ssize_t hostaudio_read(struct file *file, char __user *buffer,
96static ssize_t hostaudio_write(struct file *file, const char __user *buffer, 99static ssize_t hostaudio_write(struct file *file, const char __user *buffer,
97 size_t count, loff_t *ppos) 100 size_t count, loff_t *ppos)
98{ 101{
99 struct hostaudio_state *state = file->private_data; 102 struct hostaudio_state *state = file->private_data;
100 void *kbuf; 103 void *kbuf;
101 int err; 104 int err;
102 105
103#ifdef DEBUG 106#ifdef DEBUG
104 printk("hostaudio: write called, count = %d\n", count); 107 printk("hostaudio: write called, count = %d\n", count);
105#endif 108#endif
106 109
107 kbuf = kmalloc(count, GFP_KERNEL); 110 kbuf = kmalloc(count, GFP_KERNEL);
@@ -125,24 +128,24 @@ static ssize_t hostaudio_write(struct file *file, const char __user *buffer,
125static unsigned int hostaudio_poll(struct file *file, 128static unsigned int hostaudio_poll(struct file *file,
126 struct poll_table_struct *wait) 129 struct poll_table_struct *wait)
127{ 130{
128 unsigned int mask = 0; 131 unsigned int mask = 0;
129 132
130#ifdef DEBUG 133#ifdef DEBUG
131 printk("hostaudio: poll called (unimplemented)\n"); 134 printk("hostaudio: poll called (unimplemented)\n");
132#endif 135#endif
133 136
134 return(mask); 137 return(mask);
135} 138}
136 139
137static int hostaudio_ioctl(struct inode *inode, struct file *file, 140static int hostaudio_ioctl(struct inode *inode, struct file *file,
138 unsigned int cmd, unsigned long arg) 141 unsigned int cmd, unsigned long arg)
139{ 142{
140 struct hostaudio_state *state = file->private_data; 143 struct hostaudio_state *state = file->private_data;
141 unsigned long data = 0; 144 unsigned long data = 0;
142 int err; 145 int err;
143 146
144#ifdef DEBUG 147#ifdef DEBUG
145 printk("hostaudio: ioctl called, cmd = %u\n", cmd); 148 printk("hostaudio: ioctl called, cmd = %u\n", cmd);
146#endif 149#endif
147 switch(cmd){ 150 switch(cmd){
148 case SNDCTL_DSP_SPEED: 151 case SNDCTL_DSP_SPEED:
@@ -179,42 +182,40 @@ static int hostaudio_ioctl(struct inode *inode, struct file *file,
179 182
180static int hostaudio_open(struct inode *inode, struct file *file) 183static int hostaudio_open(struct inode *inode, struct file *file)
181{ 184{
182 struct hostaudio_state *state; 185 struct hostaudio_state *state;
183 int r = 0, w = 0; 186 int r = 0, w = 0;
184 int ret; 187 int ret;
185 188
186#ifdef DEBUG 189#ifdef DEBUG
187 printk("hostaudio: open called (host: %s)\n", dsp); 190 printk("hostaudio: open called (host: %s)\n", dsp);
188#endif 191#endif
189 192
190 state = kmalloc(sizeof(struct hostaudio_state), GFP_KERNEL); 193 state = kmalloc(sizeof(struct hostaudio_state), GFP_KERNEL);
191 if(state == NULL) 194 if(state == NULL)
192 return(-ENOMEM); 195 return(-ENOMEM);
193 196
194 if(file->f_mode & FMODE_READ) r = 1; 197 if(file->f_mode & FMODE_READ) r = 1;
195 if(file->f_mode & FMODE_WRITE) w = 1; 198 if(file->f_mode & FMODE_WRITE) w = 1;
196 199
197 ret = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0); 200 ret = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0);
198 if(ret < 0){ 201 if(ret < 0){
199 kfree(state); 202 kfree(state);
200 return(ret); 203 return(ret);
201 } 204 }
202
203 state->fd = ret; 205 state->fd = ret;
204 file->private_data = state; 206 file->private_data = state;
205 return(0); 207 return(0);
206} 208}
207 209
208static int hostaudio_release(struct inode *inode, struct file *file) 210static int hostaudio_release(struct inode *inode, struct file *file)
209{ 211{
210 struct hostaudio_state *state = file->private_data; 212 struct hostaudio_state *state = file->private_data;
211 213
212#ifdef DEBUG 214#ifdef DEBUG
213 printk("hostaudio: release called\n"); 215 printk("hostaudio: release called\n");
214#endif 216#endif
215 217 os_close_file(state->fd);
216 os_close_file(state->fd); 218 kfree(state);
217 kfree(state);
218 219
219 return(0); 220 return(0);
220} 221}
@@ -224,10 +225,10 @@ static int hostaudio_release(struct inode *inode, struct file *file)
224static int hostmixer_ioctl_mixdev(struct inode *inode, struct file *file, 225static int hostmixer_ioctl_mixdev(struct inode *inode, struct file *file,
225 unsigned int cmd, unsigned long arg) 226 unsigned int cmd, unsigned long arg)
226{ 227{
227 struct hostmixer_state *state = file->private_data; 228 struct hostmixer_state *state = file->private_data;
228 229
229#ifdef DEBUG 230#ifdef DEBUG
230 printk("hostmixer: ioctl called\n"); 231 printk("hostmixer: ioctl called\n");
231#endif 232#endif
232 233
233 return(os_ioctl_generic(state->fd, cmd, arg)); 234 return(os_ioctl_generic(state->fd, cmd, arg));
@@ -235,68 +236,67 @@ static int hostmixer_ioctl_mixdev(struct inode *inode, struct file *file,
235 236
236static int hostmixer_open_mixdev(struct inode *inode, struct file *file) 237static int hostmixer_open_mixdev(struct inode *inode, struct file *file)
237{ 238{
238 struct hostmixer_state *state; 239 struct hostmixer_state *state;
239 int r = 0, w = 0; 240 int r = 0, w = 0;
240 int ret; 241 int ret;
241 242
242#ifdef DEBUG 243#ifdef DEBUG
243 printk("hostmixer: open called (host: %s)\n", mixer); 244 printk("hostmixer: open called (host: %s)\n", mixer);
244#endif 245#endif
245 246
246 state = kmalloc(sizeof(struct hostmixer_state), GFP_KERNEL); 247 state = kmalloc(sizeof(struct hostmixer_state), GFP_KERNEL);
247 if(state == NULL) return(-ENOMEM); 248 if(state == NULL) return(-ENOMEM);
248 249
249 if(file->f_mode & FMODE_READ) r = 1; 250 if(file->f_mode & FMODE_READ) r = 1;
250 if(file->f_mode & FMODE_WRITE) w = 1; 251 if(file->f_mode & FMODE_WRITE) w = 1;
251 252
252 ret = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0); 253 ret = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0);
253 254
254 if(ret < 0){ 255 if(ret < 0){
255 printk("hostaudio_open_mixdev failed to open '%s', err = %d\n", 256 printk("hostaudio_open_mixdev failed to open '%s', err = %d\n",
256 dsp, -ret); 257 dsp, -ret);
257 kfree(state); 258 kfree(state);
258 return(ret); 259 return(ret);
259 } 260 }
260 261
261 file->private_data = state; 262 file->private_data = state;
262 return(0); 263 return(0);
263} 264}
264 265
265static int hostmixer_release(struct inode *inode, struct file *file) 266static int hostmixer_release(struct inode *inode, struct file *file)
266{ 267{
267 struct hostmixer_state *state = file->private_data; 268 struct hostmixer_state *state = file->private_data;
268 269
269#ifdef DEBUG 270#ifdef DEBUG
270 printk("hostmixer: release called\n"); 271 printk("hostmixer: release called\n");
271#endif 272#endif
272 273
273 os_close_file(state->fd); 274 os_close_file(state->fd);
274 kfree(state); 275 kfree(state);
275 276
276 return(0); 277 return(0);
277} 278}
278 279
279
280/* kernel module operations */ 280/* kernel module operations */
281 281
282static const struct file_operations hostaudio_fops = { 282static const struct file_operations hostaudio_fops = {
283 .owner = THIS_MODULE, 283 .owner = THIS_MODULE,
284 .llseek = no_llseek, 284 .llseek = no_llseek,
285 .read = hostaudio_read, 285 .read = hostaudio_read,
286 .write = hostaudio_write, 286 .write = hostaudio_write,
287 .poll = hostaudio_poll, 287 .poll = hostaudio_poll,
288 .ioctl = hostaudio_ioctl, 288 .ioctl = hostaudio_ioctl,
289 .mmap = NULL, 289 .mmap = NULL,
290 .open = hostaudio_open, 290 .open = hostaudio_open,
291 .release = hostaudio_release, 291 .release = hostaudio_release,
292}; 292};
293 293
294static const struct file_operations hostmixer_fops = { 294static const struct file_operations hostmixer_fops = {
295 .owner = THIS_MODULE, 295 .owner = THIS_MODULE,
296 .llseek = no_llseek, 296 .llseek = no_llseek,
297 .ioctl = hostmixer_ioctl_mixdev, 297 .ioctl = hostmixer_ioctl_mixdev,
298 .open = hostmixer_open_mixdev, 298 .open = hostmixer_open_mixdev,
299 .release = hostmixer_release, 299 .release = hostmixer_release,
300}; 300};
301 301
302struct { 302struct {
@@ -310,42 +310,31 @@ MODULE_LICENSE("GPL");
310 310
311static int __init hostaudio_init_module(void) 311static int __init hostaudio_init_module(void)
312{ 312{
313 printk(KERN_INFO "UML Audio Relay (host dsp = %s, host mixer = %s)\n", 313 printk(KERN_INFO "UML Audio Relay (host dsp = %s, host mixer = %s)\n",
314 dsp, mixer); 314 dsp, mixer);
315 315
316 module_data.dev_audio = register_sound_dsp(&hostaudio_fops, -1); 316 module_data.dev_audio = register_sound_dsp(&hostaudio_fops, -1);
317 if(module_data.dev_audio < 0){ 317 if(module_data.dev_audio < 0){
318 printk(KERN_ERR "hostaudio: couldn't register DSP device!\n"); 318 printk(KERN_ERR "hostaudio: couldn't register DSP device!\n");
319 return -ENODEV; 319 return -ENODEV;
320 } 320 }
321 321
322 module_data.dev_mixer = register_sound_mixer(&hostmixer_fops, -1); 322 module_data.dev_mixer = register_sound_mixer(&hostmixer_fops, -1);
323 if(module_data.dev_mixer < 0){ 323 if(module_data.dev_mixer < 0){
324 printk(KERN_ERR "hostmixer: couldn't register mixer " 324 printk(KERN_ERR "hostmixer: couldn't register mixer "
325 "device!\n"); 325 "device!\n");
326 unregister_sound_dsp(module_data.dev_audio); 326 unregister_sound_dsp(module_data.dev_audio);
327 return -ENODEV; 327 return -ENODEV;
328 } 328 }
329 329
330 return 0; 330 return 0;
331} 331}
332 332
333static void __exit hostaudio_cleanup_module (void) 333static void __exit hostaudio_cleanup_module (void)
334{ 334{
335 unregister_sound_mixer(module_data.dev_mixer); 335 unregister_sound_mixer(module_data.dev_mixer);
336 unregister_sound_dsp(module_data.dev_audio); 336 unregister_sound_dsp(module_data.dev_audio);
337} 337}
338 338
339module_init(hostaudio_init_module); 339module_init(hostaudio_init_module);
340module_exit(hostaudio_cleanup_module); 340module_exit(hostaudio_cleanup_module);
341
342/*
343 * Overrides for Emacs so that we follow Linus's tabbing style.
344 * Emacs will notice this stuff at the end of the file and automatically
345 * adjust the settings for this buffer only. This must remain at the end
346 * of the file.
347 * ---------------------------------------------------------------------------
348 * Local variables:
349 * c-file-style: "linux"
350 * End:
351 */
diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c
index 83301e1ef67c..01d4ab6b0ef1 100644
--- a/arch/um/drivers/line.c
+++ b/arch/um/drivers/line.c
@@ -191,7 +191,6 @@ void line_flush_buffer(struct tty_struct *tty)
191 /*XXX: copied from line_write, verify if it is correct!*/ 191 /*XXX: copied from line_write, verify if it is correct!*/
192 if(tty->stopped) 192 if(tty->stopped)
193 return; 193 return;
194 //return 0;
195 194
196 spin_lock_irqsave(&line->lock, flags); 195 spin_lock_irqsave(&line->lock, flags);
197 err = flush_buffer(line); 196 err = flush_buffer(line);
@@ -421,42 +420,55 @@ int line_setup_irq(int fd, int input, int output, struct line *line, void *data)
421 return err; 420 return err;
422} 421}
423 422
423/* Normally, a driver like this can rely mostly on the tty layer
424 * locking, particularly when it comes to the driver structure.
425 * However, in this case, mconsole requests can come in "from the
426 * side", and race with opens and closes.
427 *
428 * mconsole config requests will want to be sure the device isn't in
429 * use, and get_config, open, and close will want a stable
430 * configuration. The checking and modification of the configuration
431 * is done under a spinlock. Checking whether the device is in use is
432 * line->tty->count > 1, also under the spinlock.
433 *
434 * tty->count serves to decide whether the device should be enabled or
435 * disabled on the host. If it's equal to 1, then we are doing the
436 * first open or last close. Otherwise, open and close just return.
437 */
438
424int line_open(struct line *lines, struct tty_struct *tty) 439int line_open(struct line *lines, struct tty_struct *tty)
425{ 440{
426 struct line *line; 441 struct line *line = &lines[tty->index];
427 int err = -ENODEV; 442 int err = -ENODEV;
428 443
429 line = &lines[tty->index]; 444 spin_lock(&line->count_lock);
430 tty->driver_data = line; 445 if(!line->valid)
446 goto out_unlock;
431 447
432 /* The IRQ which takes this lock is not yet enabled and won't be run 448 err = 0;
433 * before the end, so we don't need to use spin_lock_irq.*/ 449 if(tty->count > 1)
434 spin_lock(&line->lock); 450 goto out_unlock;
451
452 spin_unlock(&line->count_lock);
435 453
436 tty->driver_data = line; 454 tty->driver_data = line;
437 line->tty = tty; 455 line->tty = tty;
438 if(!line->valid)
439 goto out;
440 456
441 if(tty->count == 1){ 457 enable_chan(line);
442 /* Here the device is opened, if necessary, and interrupt 458 INIT_DELAYED_WORK(&line->task, line_timer_cb);
443 * is registered.
444 */
445 enable_chan(line);
446 INIT_DELAYED_WORK(&line->task, line_timer_cb);
447 459
448 if(!line->sigio){ 460 if(!line->sigio){
449 chan_enable_winch(&line->chan_list, tty); 461 chan_enable_winch(&line->chan_list, tty);
450 line->sigio = 1; 462 line->sigio = 1;
451 }
452
453 chan_window_size(&line->chan_list, &tty->winsize.ws_row,
454 &tty->winsize.ws_col);
455 } 463 }
456 464
457 err = 0; 465 chan_window_size(&line->chan_list, &tty->winsize.ws_row,
458out: 466 &tty->winsize.ws_col);
459 spin_unlock(&line->lock); 467
468 return err;
469
470out_unlock:
471 spin_unlock(&line->count_lock);
460 return err; 472 return err;
461} 473}
462 474
@@ -466,25 +478,36 @@ void line_close(struct tty_struct *tty, struct file * filp)
466{ 478{
467 struct line *line = tty->driver_data; 479 struct line *line = tty->driver_data;
468 480
469 /* XXX: I assume this should be called in process context, not with 481 /* If line_open fails (and tty->driver_data is never set),
470 * interrupts disabled! 482 * tty_open will call line_close. So just return in this case.
471 */ 483 */
472 spin_lock_irq(&line->lock); 484 if(line == NULL)
485 return;
473 486
474 /* We ignore the error anyway! */ 487 /* We ignore the error anyway! */
475 flush_buffer(line); 488 flush_buffer(line);
476 489
477 if(tty->count == 1){ 490 spin_lock(&line->count_lock);
478 line->tty = NULL; 491 if(!line->valid)
479 tty->driver_data = NULL; 492 goto out_unlock;
480 493
481 if(line->sigio){ 494 if(tty->count > 1)
482 unregister_winch(tty); 495 goto out_unlock;
483 line->sigio = 0; 496
484 } 497 spin_unlock(&line->count_lock);
498
499 line->tty = NULL;
500 tty->driver_data = NULL;
501
502 if(line->sigio){
503 unregister_winch(tty);
504 line->sigio = 0;
485 } 505 }
486 506
487 spin_unlock_irq(&line->lock); 507 return;
508
509out_unlock:
510 spin_unlock(&line->count_lock);
488} 511}
489 512
490void close_lines(struct line *lines, int nlines) 513void close_lines(struct line *lines, int nlines)
@@ -495,14 +518,44 @@ void close_lines(struct line *lines, int nlines)
495 close_chan(&lines[i].chan_list, 0); 518 close_chan(&lines[i].chan_list, 0);
496} 519}
497 520
521static int setup_one_line(struct line *lines, int n, char *init, int init_prio,
522 char **error_out)
523{
524 struct line *line = &lines[n];
525 int err = -EINVAL;
526
527 spin_lock(&line->count_lock);
528
529 if(line->tty != NULL){
530 *error_out = "Device is already open";
531 goto out;
532 }
533
534 if (line->init_pri <= init_prio){
535 line->init_pri = init_prio;
536 if (!strcmp(init, "none"))
537 line->valid = 0;
538 else {
539 line->init_str = init;
540 line->valid = 1;
541 }
542 }
543 err = 0;
544out:
545 spin_unlock(&line->count_lock);
546 return err;
547}
548
498/* Common setup code for both startup command line and mconsole initialization. 549/* Common setup code for both startup command line and mconsole initialization.
499 * @lines contains the array (of size @num) to modify; 550 * @lines contains the array (of size @num) to modify;
500 * @init is the setup string; 551 * @init is the setup string;
552 * @error_out is an error string in the case of failure;
501 */ 553 */
502 554
503int line_setup(struct line *lines, unsigned int num, char *init) 555int line_setup(struct line *lines, unsigned int num, char *init,
556 char **error_out)
504{ 557{
505 int i, n; 558 int i, n, err;
506 char *end; 559 char *end;
507 560
508 if(*init == '=') { 561 if(*init == '=') {
@@ -513,73 +566,56 @@ int line_setup(struct line *lines, unsigned int num, char *init)
513 else { 566 else {
514 n = simple_strtoul(init, &end, 0); 567 n = simple_strtoul(init, &end, 0);
515 if(*end != '='){ 568 if(*end != '='){
516 printk(KERN_ERR "line_setup failed to parse \"%s\"\n", 569 *error_out = "Couldn't parse device number";
517 init); 570 return -EINVAL;
518 return 0;
519 } 571 }
520 init = end; 572 init = end;
521 } 573 }
522 init++; 574 init++;
523 575
524 if (n >= (signed int) num) { 576 if (n >= (signed int) num) {
525 printk("line_setup - %d out of range ((0 ... %d) allowed)\n", 577 *error_out = "Device number out of range";
526 n, num - 1); 578 return -EINVAL;
527 return 0;
528 } 579 }
529 else if (n >= 0){ 580 else if (n >= 0){
530 if (lines[n].tty != NULL) { 581 err = setup_one_line(lines, n, init, INIT_ONE, error_out);
531 printk("line_setup - device %d is open\n", n); 582 if(err)
532 return 0; 583 return err;
533 }
534 if (lines[n].init_pri <= INIT_ONE){
535 lines[n].init_pri = INIT_ONE;
536 if (!strcmp(init, "none"))
537 lines[n].valid = 0;
538 else {
539 lines[n].init_str = init;
540 lines[n].valid = 1;
541 }
542 }
543 } 584 }
544 else { 585 else {
545 for(i = 0; i < num; i++){ 586 for(i = 0; i < num; i++){
546 if(lines[i].init_pri <= INIT_ALL){ 587 err = setup_one_line(lines, i, init, INIT_ALL,
547 lines[i].init_pri = INIT_ALL; 588 error_out);
548 if(!strcmp(init, "none")) lines[i].valid = 0; 589 if(err)
549 else { 590 return err;
550 lines[i].init_str = init;
551 lines[i].valid = 1;
552 }
553 }
554 } 591 }
555 } 592 }
556 return n == -1 ? num : n; 593 return n == -1 ? num : n;
557} 594}
558 595
559int line_config(struct line *lines, unsigned int num, char *str, 596int line_config(struct line *lines, unsigned int num, char *str,
560 const struct chan_opts *opts) 597 const struct chan_opts *opts, char **error_out)
561{ 598{
562 struct line *line; 599 struct line *line;
563 char *new; 600 char *new;
564 int n; 601 int n;
565 602
566 if(*str == '='){ 603 if(*str == '='){
567 printk("line_config - can't configure all devices from " 604 *error_out = "Can't configure all devices from mconsole";
568 "mconsole\n"); 605 return -EINVAL;
569 return 1;
570 } 606 }
571 607
572 new = kstrdup(str, GFP_KERNEL); 608 new = kstrdup(str, GFP_KERNEL);
573 if(new == NULL){ 609 if(new == NULL){
574 printk("line_config - kstrdup failed\n"); 610 *error_out = "Failed to allocate memory";
575 return 1; 611 return -ENOMEM;
576 } 612 }
577 n = line_setup(lines, num, new); 613 n = line_setup(lines, num, new, error_out);
578 if(n < 0) 614 if(n < 0)
579 return 1; 615 return n;
580 616
581 line = &lines[n]; 617 line = &lines[n];
582 return parse_chan_pair(line->init_str, line, n, opts); 618 return parse_chan_pair(line->init_str, line, n, opts, error_out);
583} 619}
584 620
585int line_get_config(char *name, struct line *lines, unsigned int num, char *str, 621int line_get_config(char *name, struct line *lines, unsigned int num, char *str,
@@ -602,13 +638,13 @@ int line_get_config(char *name, struct line *lines, unsigned int num, char *str,
602 638
603 line = &lines[dev]; 639 line = &lines[dev];
604 640
605 spin_lock(&line->lock); 641 spin_lock(&line->count_lock);
606 if(!line->valid) 642 if(!line->valid)
607 CONFIG_CHUNK(str, size, n, "none", 1); 643 CONFIG_CHUNK(str, size, n, "none", 1);
608 else if(line->tty == NULL) 644 else if(line->tty == NULL)
609 CONFIG_CHUNK(str, size, n, line->init_str, 1); 645 CONFIG_CHUNK(str, size, n, line->init_str, 1);
610 else n = chan_config_string(&line->chan_list, str, size, error_out); 646 else n = chan_config_string(&line->chan_list, str, size, error_out);
611 spin_unlock(&line->lock); 647 spin_unlock(&line->count_lock);
612 648
613 return n; 649 return n;
614} 650}
@@ -628,22 +664,21 @@ int line_id(char **str, int *start_out, int *end_out)
628 return n; 664 return n;
629} 665}
630 666
631int line_remove(struct line *lines, unsigned int num, int n) 667int line_remove(struct line *lines, unsigned int num, int n, char **error_out)
632{ 668{
633 int err; 669 int err;
634 char config[sizeof("conxxxx=none\0")]; 670 char config[sizeof("conxxxx=none\0")];
635 671
636 sprintf(config, "%d=none", n); 672 sprintf(config, "%d=none", n);
637 err = line_setup(lines, num, config); 673 err = line_setup(lines, num, config, error_out);
638 if(err >= 0) 674 if(err >= 0)
639 err = 0; 675 err = 0;
640 return err; 676 return err;
641} 677}
642 678
643struct tty_driver *line_register_devfs(struct lines *set, 679struct tty_driver *register_lines(struct line_driver *line_driver,
644 struct line_driver *line_driver, 680 const struct tty_operations *ops,
645 const struct tty_operations *ops, 681 struct line *lines, int nlines)
646 struct line *lines, int nlines)
647{ 682{
648 int i; 683 int i;
649 struct tty_driver *driver = alloc_tty_driver(nlines); 684 struct tty_driver *driver = alloc_tty_driver(nlines);
@@ -683,6 +718,7 @@ static LIST_HEAD(winch_handlers);
683void lines_init(struct line *lines, int nlines, struct chan_opts *opts) 718void lines_init(struct line *lines, int nlines, struct chan_opts *opts)
684{ 719{
685 struct line *line; 720 struct line *line;
721 char *error;
686 int i; 722 int i;
687 723
688 for(i = 0; i < nlines; i++){ 724 for(i = 0; i < nlines; i++){
@@ -696,8 +732,9 @@ void lines_init(struct line *lines, int nlines, struct chan_opts *opts)
696 if(line->init_str == NULL) 732 if(line->init_str == NULL)
697 printk("lines_init - kstrdup returned NULL\n"); 733 printk("lines_init - kstrdup returned NULL\n");
698 734
699 if(parse_chan_pair(line->init_str, line, i, opts)){ 735 if(parse_chan_pair(line->init_str, line, i, opts, &error)){
700 printk("parse_chan_pair failed for device %d\n", i); 736 printk("parse_chan_pair failed for device %d : %s\n",
737 i, error);
701 line->valid = 0; 738 line->valid = 0;
702 } 739 }
703 } 740 }
@@ -737,7 +774,7 @@ static irqreturn_t winch_interrupt(int irq, void *data)
737 line = tty->driver_data; 774 line = tty->driver_data;
738 chan_window_size(&line->chan_list, &tty->winsize.ws_row, 775 chan_window_size(&line->chan_list, &tty->winsize.ws_row,
739 &tty->winsize.ws_col); 776 &tty->winsize.ws_col);
740 kill_pg(tty->pgrp, SIGWINCH, 1); 777 kill_pgrp(tty->pgrp, SIGWINCH, 1);
741 } 778 }
742 out: 779 out:
743 if(winch->fd != -1) 780 if(winch->fd != -1)
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c
index 96f0189327af..178b2eff4a8c 100644
--- a/arch/um/drivers/mconsole_kern.c
+++ b/arch/um/drivers/mconsole_kern.c
@@ -33,7 +33,6 @@
33#include "irq_user.h" 33#include "irq_user.h"
34#include "init.h" 34#include "init.h"
35#include "os.h" 35#include "os.h"
36#include "umid.h"
37#include "irq_kern.h" 36#include "irq_kern.h"
38#include "choose-mode.h" 37#include "choose-mode.h"
39 38
@@ -337,13 +336,15 @@ void mconsole_stop(struct mc_request *req)
337 mconsole_reply(req, "", 0, 0); 336 mconsole_reply(req, "", 0, 0);
338} 337}
339 338
340/* This list is populated by __initcall routines. */ 339static DEFINE_SPINLOCK(mc_devices_lock);
341
342static LIST_HEAD(mconsole_devices); 340static LIST_HEAD(mconsole_devices);
343 341
344void mconsole_register_dev(struct mc_device *new) 342void mconsole_register_dev(struct mc_device *new)
345{ 343{
344 spin_lock(&mc_devices_lock);
345 BUG_ON(!list_empty(&new->list));
346 list_add(&new->list, &mconsole_devices); 346 list_add(&new->list, &mconsole_devices);
347 spin_unlock(&mc_devices_lock);
347} 348}
348 349
349static struct mc_device *mconsole_find_dev(char *name) 350static struct mc_device *mconsole_find_dev(char *name)
@@ -367,18 +368,21 @@ struct unplugged_pages {
367 void *pages[UNPLUGGED_PER_PAGE]; 368 void *pages[UNPLUGGED_PER_PAGE];
368}; 369};
369 370
371static DECLARE_MUTEX(plug_mem_mutex);
370static unsigned long long unplugged_pages_count = 0; 372static unsigned long long unplugged_pages_count = 0;
371static struct list_head unplugged_pages = LIST_HEAD_INIT(unplugged_pages); 373static LIST_HEAD(unplugged_pages);
372static int unplug_index = UNPLUGGED_PER_PAGE; 374static int unplug_index = UNPLUGGED_PER_PAGE;
373 375
374static int mem_config(char *str) 376static int mem_config(char *str, char **error_out)
375{ 377{
376 unsigned long long diff; 378 unsigned long long diff;
377 int err = -EINVAL, i, add; 379 int err = -EINVAL, i, add;
378 char *ret; 380 char *ret;
379 381
380 if(str[0] != '=') 382 if(str[0] != '='){
383 *error_out = "Expected '=' after 'mem'";
381 goto out; 384 goto out;
385 }
382 386
383 str++; 387 str++;
384 if(str[0] == '-') 388 if(str[0] == '-')
@@ -386,15 +390,21 @@ static int mem_config(char *str)
386 else if(str[0] == '+'){ 390 else if(str[0] == '+'){
387 add = 1; 391 add = 1;
388 } 392 }
389 else goto out; 393 else {
394 *error_out = "Expected increment to start with '-' or '+'";
395 goto out;
396 }
390 397
391 str++; 398 str++;
392 diff = memparse(str, &ret); 399 diff = memparse(str, &ret);
393 if(*ret != '\0') 400 if(*ret != '\0'){
401 *error_out = "Failed to parse memory increment";
394 goto out; 402 goto out;
403 }
395 404
396 diff /= PAGE_SIZE; 405 diff /= PAGE_SIZE;
397 406
407 down(&plug_mem_mutex);
398 for(i = 0; i < diff; i++){ 408 for(i = 0; i < diff; i++){
399 struct unplugged_pages *unplugged; 409 struct unplugged_pages *unplugged;
400 void *addr; 410 void *addr;
@@ -435,11 +445,14 @@ static int mem_config(char *str)
435 unplugged = list_entry(entry, 445 unplugged = list_entry(entry,
436 struct unplugged_pages, 446 struct unplugged_pages,
437 list); 447 list);
438 unplugged->pages[unplug_index++] = addr;
439 err = os_drop_memory(addr, PAGE_SIZE); 448 err = os_drop_memory(addr, PAGE_SIZE);
440 if(err) 449 if(err){
441 printk("Failed to release memory - " 450 printk("Failed to release memory - "
442 "errno = %d\n", err); 451 "errno = %d\n", err);
452 *error_out = "Failed to release memory";
453 goto out_unlock;
454 }
455 unplugged->pages[unplug_index++] = addr;
443 } 456 }
444 457
445 unplugged_pages_count++; 458 unplugged_pages_count++;
@@ -447,6 +460,8 @@ static int mem_config(char *str)
447 } 460 }
448 461
449 err = 0; 462 err = 0;
463out_unlock:
464 up(&plug_mem_mutex);
450out: 465out:
451 return err; 466 return err;
452} 467}
@@ -470,12 +485,14 @@ static int mem_id(char **str, int *start_out, int *end_out)
470 return 0; 485 return 0;
471} 486}
472 487
473static int mem_remove(int n) 488static int mem_remove(int n, char **error_out)
474{ 489{
490 *error_out = "Memory doesn't support the remove operation";
475 return -EBUSY; 491 return -EBUSY;
476} 492}
477 493
478static struct mc_device mem_mc = { 494static struct mc_device mem_mc = {
495 .list = LIST_HEAD_INIT(mem_mc.list),
479 .name = "mem", 496 .name = "mem",
480 .config = mem_config, 497 .config = mem_config,
481 .get_config = mem_get_config, 498 .get_config = mem_get_config,
@@ -542,7 +559,7 @@ static void mconsole_get_config(int (*get_config)(char *, char *, int,
542void mconsole_config(struct mc_request *req) 559void mconsole_config(struct mc_request *req)
543{ 560{
544 struct mc_device *dev; 561 struct mc_device *dev;
545 char *ptr = req->request.data, *name; 562 char *ptr = req->request.data, *name, *error_string = "";
546 int err; 563 int err;
547 564
548 ptr += strlen("config"); 565 ptr += strlen("config");
@@ -559,8 +576,8 @@ void mconsole_config(struct mc_request *req)
559 ptr++; 576 ptr++;
560 577
561 if(*ptr == '='){ 578 if(*ptr == '='){
562 err = (*dev->config)(name); 579 err = (*dev->config)(name, &error_string);
563 mconsole_reply(req, "", err, 0); 580 mconsole_reply(req, error_string, err, 0);
564 } 581 }
565 else mconsole_get_config(dev->get_config, req, name); 582 else mconsole_get_config(dev->get_config, req, name);
566} 583}
@@ -595,13 +612,16 @@ void mconsole_remove(struct mc_request *req)
595 goto out; 612 goto out;
596 } 613 }
597 614
598 err = (*dev->remove)(n); 615 err_msg = NULL;
616 err = (*dev->remove)(n, &err_msg);
599 switch(err){ 617 switch(err){
600 case -ENODEV: 618 case -ENODEV:
601 err_msg = "Device doesn't exist"; 619 if(err_msg == NULL)
620 err_msg = "Device doesn't exist";
602 break; 621 break;
603 case -EBUSY: 622 case -EBUSY:
604 err_msg = "Device is currently open"; 623 if(err_msg == NULL)
624 err_msg = "Device is currently open";
605 break; 625 break;
606 default: 626 default:
607 break; 627 break;
@@ -615,7 +635,7 @@ struct mconsole_output {
615 struct mc_request *req; 635 struct mc_request *req;
616}; 636};
617 637
618static DEFINE_SPINLOCK(console_lock); 638static DEFINE_SPINLOCK(client_lock);
619static LIST_HEAD(clients); 639static LIST_HEAD(clients);
620static char console_buf[MCONSOLE_MAX_DATA]; 640static char console_buf[MCONSOLE_MAX_DATA];
621static int console_index = 0; 641static int console_index = 0;
@@ -670,16 +690,18 @@ static void with_console(struct mc_request *req, void (*proc)(void *),
670 unsigned long flags; 690 unsigned long flags;
671 691
672 entry.req = req; 692 entry.req = req;
693 spin_lock_irqsave(&client_lock, flags);
673 list_add(&entry.list, &clients); 694 list_add(&entry.list, &clients);
674 spin_lock_irqsave(&console_lock, flags); 695 spin_unlock_irqrestore(&client_lock, flags);
675 696
676 (*proc)(arg); 697 (*proc)(arg);
677 698
678 mconsole_reply_len(req, console_buf, console_index, 0, 0); 699 mconsole_reply_len(req, console_buf, console_index, 0, 0);
679 console_index = 0; 700 console_index = 0;
680 701
681 spin_unlock_irqrestore(&console_lock, flags); 702 spin_lock_irqsave(&client_lock, flags);
682 list_del(&entry.list); 703 list_del(&entry.list);
704 spin_unlock_irqrestore(&client_lock, flags);
683} 705}
684 706
685#ifdef CONFIG_MAGIC_SYSRQ 707#ifdef CONFIG_MAGIC_SYSRQ
diff --git a/arch/um/drivers/mconsole_user.c b/arch/um/drivers/mconsole_user.c
index 75aef6f7ef6e..f02634fbf32a 100644
--- a/arch/um/drivers/mconsole_user.c
+++ b/arch/um/drivers/mconsole_user.c
@@ -16,7 +16,7 @@
16#include "user.h" 16#include "user.h"
17#include "sysdep/ptrace.h" 17#include "sysdep/ptrace.h"
18#include "mconsole.h" 18#include "mconsole.h"
19#include "umid.h" 19#include "os.h"
20#include "user_util.h" 20#include "user_util.h"
21 21
22static struct mconsole_command commands[] = { 22static struct mconsole_command commands[] = {
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c
index afe3d427ddfa..04e31f86c10a 100644
--- a/arch/um/drivers/net_kern.c
+++ b/arch/um/drivers/net_kern.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) and 2 * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) and
3 * James Leu (jleu@mindspring.net). 3 * James Leu (jleu@mindspring.net).
4 * Copyright (C) 2001 by various other people who didn't put their name here. 4 * Copyright (C) 2001 by various other people who didn't put their name here.
5 * Licensed under the GPL. 5 * Licensed under the GPL.
@@ -91,8 +91,8 @@ irqreturn_t uml_net_interrupt(int irq, void *dev_id)
91 spin_lock(&lp->lock); 91 spin_lock(&lp->lock);
92 while((err = uml_net_rx(dev)) > 0) ; 92 while((err = uml_net_rx(dev)) > 0) ;
93 if(err < 0) { 93 if(err < 0) {
94 printk(KERN_ERR 94 printk(KERN_ERR
95 "Device '%s' read returned %d, shutting it down\n", 95 "Device '%s' read returned %d, shutting it down\n",
96 dev->name, err); 96 dev->name, err);
97 /* dev_close can't be called in interrupt context, and takes 97 /* dev_close can't be called in interrupt context, and takes
98 * again lp->lock. 98 * again lp->lock.
@@ -108,7 +108,7 @@ irqreturn_t uml_net_interrupt(int irq, void *dev_id)
108 108
109out: 109out:
110 spin_unlock(&lp->lock); 110 spin_unlock(&lp->lock);
111 return(IRQ_HANDLED); 111 return IRQ_HANDLED;
112} 112}
113 113
114static int uml_net_open(struct net_device *dev) 114static int uml_net_open(struct net_device *dev)
@@ -159,7 +159,7 @@ out:
159static int uml_net_close(struct net_device *dev) 159static int uml_net_close(struct net_device *dev)
160{ 160{
161 struct uml_net_private *lp = dev->priv; 161 struct uml_net_private *lp = dev->priv;
162 162
163 netif_stop_queue(dev); 163 netif_stop_queue(dev);
164 164
165 free_irq(dev->irq, dev); 165 free_irq(dev->irq, dev);
@@ -194,7 +194,7 @@ static int uml_net_start_xmit(struct sk_buff *skb, struct net_device *dev)
194 194
195 /* this is normally done in the interrupt when tx finishes */ 195 /* this is normally done in the interrupt when tx finishes */
196 netif_wake_queue(dev); 196 netif_wake_queue(dev);
197 } 197 }
198 else if(len == 0){ 198 else if(len == 0){
199 netif_start_queue(dev); 199 netif_start_queue(dev);
200 lp->stats.tx_dropped++; 200 lp->stats.tx_dropped++;
@@ -239,7 +239,7 @@ static int uml_net_set_mac(struct net_device *dev, void *addr)
239 set_ether_mac(dev, hwaddr->sa_data); 239 set_ether_mac(dev, hwaddr->sa_data);
240 spin_unlock_irq(&lp->lock); 240 spin_unlock_irq(&lp->lock);
241 241
242 return(0); 242 return 0;
243} 243}
244 244
245static int uml_net_change_mtu(struct net_device *dev, int new_mtu) 245static int uml_net_change_mtu(struct net_device *dev, int new_mtu)
@@ -333,7 +333,7 @@ static int eth_configure(int n, void *init, char *mac,
333 struct uml_net_private *lp; 333 struct uml_net_private *lp;
334 int save, err, size; 334 int save, err, size;
335 335
336 size = transport->private_size + sizeof(struct uml_net_private) + 336 size = transport->private_size + sizeof(struct uml_net_private) +
337 sizeof(((struct uml_net_private *) 0)->user); 337 sizeof(((struct uml_net_private *) 0)->user);
338 338
339 device = kzalloc(sizeof(*device), GFP_KERNEL); 339 device = kzalloc(sizeof(*device), GFP_KERNEL);
@@ -438,7 +438,7 @@ static int eth_configure(int n, void *init, char *mac,
438 lp->tl.function = uml_net_user_timer_expire; 438 lp->tl.function = uml_net_user_timer_expire;
439 memcpy(lp->mac, device->mac, sizeof(lp->mac)); 439 memcpy(lp->mac, device->mac, sizeof(lp->mac));
440 440
441 if (transport->user->init) 441 if (transport->user->init)
442 (*transport->user->init)(&lp->user, dev); 442 (*transport->user->init)(&lp->user, dev);
443 443
444 set_ether_mac(dev, device->mac); 444 set_ether_mac(dev, device->mac);
@@ -460,38 +460,36 @@ static struct uml_net *find_device(int n)
460 device = NULL; 460 device = NULL;
461 out: 461 out:
462 spin_unlock(&devices_lock); 462 spin_unlock(&devices_lock);
463 return(device); 463 return device;
464} 464}
465 465
466static int eth_parse(char *str, int *index_out, char **str_out) 466static int eth_parse(char *str, int *index_out, char **str_out,
467 char **error_out)
467{ 468{
468 char *end; 469 char *end;
469 int n; 470 int n, err = -EINVAL;;
470 471
471 n = simple_strtoul(str, &end, 0); 472 n = simple_strtoul(str, &end, 0);
472 if(end == str){ 473 if(end == str){
473 printk(KERN_ERR "eth_setup: Failed to parse '%s'\n", str); 474 *error_out = "Bad device number";
474 return(1); 475 return err;
475 }
476 if(n < 0){
477 printk(KERN_ERR "eth_setup: device %d is negative\n", n);
478 return(1);
479 } 476 }
477
480 str = end; 478 str = end;
481 if(*str != '='){ 479 if(*str != '='){
482 printk(KERN_ERR 480 *error_out = "Expected '=' after device number";
483 "eth_setup: expected '=' after device number\n"); 481 return err;
484 return(1);
485 } 482 }
483
486 str++; 484 str++;
487 if(find_device(n)){ 485 if(find_device(n)){
488 printk(KERN_ERR "eth_setup: Device %d already configured\n", 486 *error_out = "Device already configured";
489 n); 487 return err;
490 return(1);
491 } 488 }
492 if(index_out) *index_out = n; 489
490 *index_out = n;
493 *str_out = str; 491 *str_out = str;
494 return(0); 492 return 0;
495} 493}
496 494
497struct eth_init { 495struct eth_init {
@@ -500,13 +498,11 @@ struct eth_init {
500 int index; 498 int index;
501}; 499};
502 500
503/* Filled in at boot time. Will need locking if the transports become 501static DEFINE_SPINLOCK(transports_lock);
504 * modular. 502static LIST_HEAD(transports);
505 */
506struct list_head transports = LIST_HEAD_INIT(transports);
507 503
508/* Filled in during early boot */ 504/* Filled in during early boot */
509struct list_head eth_cmd_line = LIST_HEAD_INIT(eth_cmd_line); 505static LIST_HEAD(eth_cmd_line);
510 506
511static int check_transport(struct transport *transport, char *eth, int n, 507static int check_transport(struct transport *transport, char *eth, int n,
512 void **init_out, char **mac_out) 508 void **init_out, char **mac_out)
@@ -515,23 +511,23 @@ static int check_transport(struct transport *transport, char *eth, int n,
515 511
516 len = strlen(transport->name); 512 len = strlen(transport->name);
517 if(strncmp(eth, transport->name, len)) 513 if(strncmp(eth, transport->name, len))
518 return(0); 514 return 0;
519 515
520 eth += len; 516 eth += len;
521 if(*eth == ',') 517 if(*eth == ',')
522 eth++; 518 eth++;
523 else if(*eth != '\0') 519 else if(*eth != '\0')
524 return(0); 520 return 0;
525 521
526 *init_out = kmalloc(transport->setup_size, GFP_KERNEL); 522 *init_out = kmalloc(transport->setup_size, GFP_KERNEL);
527 if(*init_out == NULL) 523 if(*init_out == NULL)
528 return(1); 524 return 1;
529 525
530 if(!transport->setup(eth, mac_out, *init_out)){ 526 if(!transport->setup(eth, mac_out, *init_out)){
531 kfree(*init_out); 527 kfree(*init_out);
532 *init_out = NULL; 528 *init_out = NULL;
533 } 529 }
534 return(1); 530 return 1;
535} 531}
536 532
537void register_transport(struct transport *new) 533void register_transport(struct transport *new)
@@ -542,7 +538,10 @@ void register_transport(struct transport *new)
542 char *mac = NULL; 538 char *mac = NULL;
543 int match; 539 int match;
544 540
541 spin_lock(&transports_lock);
542 BUG_ON(!list_empty(&new->list));
545 list_add(&new->list, &transports); 543 list_add(&new->list, &transports);
544 spin_unlock(&transports_lock);
546 545
547 list_for_each_safe(ele, next, &eth_cmd_line){ 546 list_for_each_safe(ele, next, &eth_cmd_line){
548 eth = list_entry(ele, struct eth_init, list); 547 eth = list_entry(ele, struct eth_init, list);
@@ -564,7 +563,9 @@ static int eth_setup_common(char *str, int index)
564 struct transport *transport; 563 struct transport *transport;
565 void *init; 564 void *init;
566 char *mac = NULL; 565 char *mac = NULL;
566 int found = 0;
567 567
568 spin_lock(&transports_lock);
568 list_for_each(ele, &transports){ 569 list_for_each(ele, &transports){
569 transport = list_entry(ele, struct transport, list); 570 transport = list_entry(ele, struct transport, list);
570 if(!check_transport(transport, str, index, &init, &mac)) 571 if(!check_transport(transport, str, index, &init, &mac))
@@ -573,19 +574,26 @@ static int eth_setup_common(char *str, int index)
573 eth_configure(index, init, mac, transport); 574 eth_configure(index, init, mac, transport);
574 kfree(init); 575 kfree(init);
575 } 576 }
576 return(1); 577 found = 1;
578 break;
577 } 579 }
578 return(0); 580
581 spin_unlock(&transports_lock);
582 return found;
579} 583}
580 584
581static int eth_setup(char *str) 585static int eth_setup(char *str)
582{ 586{
583 struct eth_init *new; 587 struct eth_init *new;
588 char *error;
584 int n, err; 589 int n, err;
585 590
586 err = eth_parse(str, &n, &str); 591 err = eth_parse(str, &n, &str, &error);
587 if(err) 592 if(err){
593 printk(KERN_ERR "eth_setup - Couldn't parse '%s' : %s\n",
594 str, error);
588 return 1; 595 return 1;
596 }
589 597
590 new = alloc_bootmem(sizeof(*new)); 598 new = alloc_bootmem(sizeof(*new));
591 if (new == NULL){ 599 if (new == NULL){
@@ -607,38 +615,24 @@ __uml_help(eth_setup,
607" Configure a network device.\n\n" 615" Configure a network device.\n\n"
608); 616);
609 617
610#if 0 618static int net_config(char *str, char **error_out)
611static int eth_init(void)
612{
613 struct list_head *ele, *next;
614 struct eth_init *eth;
615
616 list_for_each_safe(ele, next, &eth_cmd_line){
617 eth = list_entry(ele, struct eth_init, list);
618
619 if(eth_setup_common(eth->init, eth->index))
620 list_del(&eth->list);
621 }
622
623 return(1);
624}
625__initcall(eth_init);
626#endif
627
628static int net_config(char *str)
629{ 619{
630 int n, err; 620 int n, err;
631 621
632 err = eth_parse(str, &n, &str); 622 err = eth_parse(str, &n, &str, error_out);
633 if(err) return(err); 623 if(err)
624 return err;
634 625
626 /* This string is broken up and the pieces used by the underlying
627 * driver. So, it is freed only if eth_setup_common fails.
628 */
635 str = kstrdup(str, GFP_KERNEL); 629 str = kstrdup(str, GFP_KERNEL);
636 if(str == NULL){ 630 if(str == NULL){
637 printk(KERN_ERR "net_config failed to strdup string\n"); 631 *error_out = "net_config failed to strdup string";
638 return(-1); 632 return -ENOMEM;
639 } 633 }
640 err = !eth_setup_common(str, n); 634 err = !eth_setup_common(str, n);
641 if(err) 635 if(err)
642 kfree(str); 636 kfree(str);
643 return(err); 637 return(err);
644} 638}
@@ -658,7 +652,7 @@ static int net_id(char **str, int *start_out, int *end_out)
658 return n; 652 return n;
659} 653}
660 654
661static int net_remove(int n) 655static int net_remove(int n, char **error_out)
662{ 656{
663 struct uml_net *device; 657 struct uml_net *device;
664 struct net_device *dev; 658 struct net_device *dev;
@@ -671,7 +665,7 @@ static int net_remove(int n)
671 dev = device->dev; 665 dev = device->dev;
672 lp = dev->priv; 666 lp = dev->priv;
673 if(lp->fd > 0) 667 if(lp->fd > 0)
674 return -EBUSY; 668 return -EBUSY;
675 if(lp->remove != NULL) (*lp->remove)(&lp->user); 669 if(lp->remove != NULL) (*lp->remove)(&lp->user);
676 unregister_netdev(dev); 670 unregister_netdev(dev);
677 platform_device_unregister(&device->pdev); 671 platform_device_unregister(&device->pdev);
@@ -683,10 +677,11 @@ static int net_remove(int n)
683} 677}
684 678
685static struct mc_device net_mc = { 679static struct mc_device net_mc = {
680 .list = LIST_HEAD_INIT(net_mc.list),
686 .name = "eth", 681 .name = "eth",
687 .config = net_config, 682 .config = net_config,
688 .get_config = NULL, 683 .get_config = NULL,
689 .id = net_id, 684 .id = net_id,
690 .remove = net_remove, 685 .remove = net_remove,
691}; 686};
692 687
@@ -699,7 +694,8 @@ static int uml_inetaddr_event(struct notifier_block *this, unsigned long event,
699 void (*proc)(unsigned char *, unsigned char *, void *); 694 void (*proc)(unsigned char *, unsigned char *, void *);
700 unsigned char addr_buf[4], netmask_buf[4]; 695 unsigned char addr_buf[4], netmask_buf[4];
701 696
702 if(dev->open != uml_net_open) return(NOTIFY_DONE); 697 if(dev->open != uml_net_open)
698 return NOTIFY_DONE;
703 699
704 lp = dev->priv; 700 lp = dev->priv;
705 701
@@ -717,9 +713,10 @@ static int uml_inetaddr_event(struct notifier_block *this, unsigned long event,
717 memcpy(netmask_buf, &ifa->ifa_mask, sizeof(netmask_buf)); 713 memcpy(netmask_buf, &ifa->ifa_mask, sizeof(netmask_buf));
718 (*proc)(addr_buf, netmask_buf, &lp->user); 714 (*proc)(addr_buf, netmask_buf, &lp->user);
719 } 715 }
720 return(NOTIFY_DONE); 716 return NOTIFY_DONE;
721} 717}
722 718
719/* uml_net_init shouldn't be called twice on two CPUs at the same time */
723struct notifier_block uml_inetaddr_notifier = { 720struct notifier_block uml_inetaddr_notifier = {
724 .notifier_call = uml_inetaddr_event, 721 .notifier_call = uml_inetaddr_event,
725}; 722};
@@ -727,7 +724,7 @@ struct notifier_block uml_inetaddr_notifier = {
727static int uml_net_init(void) 724static int uml_net_init(void)
728{ 725{
729 struct list_head *ele; 726 struct list_head *ele;
730 struct uml_net_private *lp; 727 struct uml_net_private *lp;
731 struct in_device *ip; 728 struct in_device *ip;
732 struct in_ifaddr *in; 729 struct in_ifaddr *in;
733 730
@@ -738,18 +735,21 @@ static int uml_net_init(void)
738 * didn't get a chance to run for them. This fakes it so that 735 * didn't get a chance to run for them. This fakes it so that
739 * addresses which have already been set up get handled properly. 736 * addresses which have already been set up get handled properly.
740 */ 737 */
738 spin_lock(&opened_lock);
741 list_for_each(ele, &opened){ 739 list_for_each(ele, &opened){
742 lp = list_entry(ele, struct uml_net_private, list); 740 lp = list_entry(ele, struct uml_net_private, list);
743 ip = lp->dev->ip_ptr; 741 ip = lp->dev->ip_ptr;
744 if(ip == NULL) continue; 742 if(ip == NULL)
743 continue;
745 in = ip->ifa_list; 744 in = ip->ifa_list;
746 while(in != NULL){ 745 while(in != NULL){
747 uml_inetaddr_event(NULL, NETDEV_UP, in); 746 uml_inetaddr_event(NULL, NETDEV_UP, in);
748 in = in->ifa_next; 747 in = in->ifa_next;
749 } 748 }
750 } 749 }
750 spin_unlock(&opened_lock);
751 751
752 return(0); 752 return 0;
753} 753}
754 754
755__initcall(uml_net_init); 755__initcall(uml_net_init);
@@ -759,13 +759,16 @@ static void close_devices(void)
759 struct list_head *ele; 759 struct list_head *ele;
760 struct uml_net_private *lp; 760 struct uml_net_private *lp;
761 761
762 spin_lock(&opened_lock);
762 list_for_each(ele, &opened){ 763 list_for_each(ele, &opened){
763 lp = list_entry(ele, struct uml_net_private, list); 764 lp = list_entry(ele, struct uml_net_private, list);
764 free_irq(lp->dev->irq, lp->dev); 765 free_irq(lp->dev->irq, lp->dev);
765 if((lp->close != NULL) && (lp->fd >= 0)) 766 if((lp->close != NULL) && (lp->fd >= 0))
766 (*lp->close)(lp->fd, &lp->user); 767 (*lp->close)(lp->fd, &lp->user);
767 if(lp->remove != NULL) (*lp->remove)(&lp->user); 768 if(lp->remove != NULL)
769 (*lp->remove)(&lp->user);
768 } 770 }
771 spin_unlock(&opened_lock);
769} 772}
770 773
771__uml_exitcall(close_devices); 774__uml_exitcall(close_devices);
@@ -783,8 +786,8 @@ struct sk_buff *ether_adjust_skb(struct sk_buff *skb, int extra)
783 return(skb); 786 return(skb);
784} 787}
785 788
786void iter_addresses(void *d, void (*cb)(unsigned char *, unsigned char *, 789void iter_addresses(void *d, void (*cb)(unsigned char *, unsigned char *,
787 void *), 790 void *),
788 void *arg) 791 void *arg)
789{ 792{
790 struct net_device *dev = d; 793 struct net_device *dev = d;
@@ -809,11 +812,11 @@ int dev_netmask(void *d, void *m)
809 struct in_ifaddr *in; 812 struct in_ifaddr *in;
810 __be32 *mask_out = m; 813 __be32 *mask_out = m;
811 814
812 if(ip == NULL) 815 if(ip == NULL)
813 return(1); 816 return(1);
814 817
815 in = ip->ifa_list; 818 in = ip->ifa_list;
816 if(in == NULL) 819 if(in == NULL)
817 return(1); 820 return(1);
818 821
819 *mask_out = in->ifa_mask; 822 *mask_out = in->ifa_mask;
@@ -827,7 +830,7 @@ void *get_output_buffer(int *len_out)
827 ret = (void *) __get_free_pages(GFP_KERNEL, 0); 830 ret = (void *) __get_free_pages(GFP_KERNEL, 0);
828 if(ret) *len_out = PAGE_SIZE; 831 if(ret) *len_out = PAGE_SIZE;
829 else *len_out = 0; 832 else *len_out = 0;
830 return(ret); 833 return ret;
831} 834}
832 835
833void free_output_buffer(void *buffer) 836void free_output_buffer(void *buffer)
@@ -835,7 +838,7 @@ void free_output_buffer(void *buffer)
835 free_pages((unsigned long) buffer, 0); 838 free_pages((unsigned long) buffer, 0);
836} 839}
837 840
838int tap_setup_common(char *str, char *type, char **dev_name, char **mac_out, 841int tap_setup_common(char *str, char *type, char **dev_name, char **mac_out,
839 char **gate_addr) 842 char **gate_addr)
840{ 843{
841 char *remain; 844 char *remain;
@@ -854,14 +857,3 @@ unsigned short eth_protocol(struct sk_buff *skb)
854{ 857{
855 return(eth_type_trans(skb, skb->dev)); 858 return(eth_type_trans(skb, skb->dev));
856} 859}
857
858/*
859 * Overrides for Emacs so that we follow Linus's tabbing style.
860 * Emacs will notice this stuff at the end of the file and automatically
861 * adjust the settings for this buffer only. This must remain at the end
862 * of the file.
863 * ---------------------------------------------------------------------------
864 * Local variables:
865 * c-file-style: "linux"
866 * End:
867 */
diff --git a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c
index 6dfe632f1c14..1c8efd95c421 100644
--- a/arch/um/drivers/port_kern.c
+++ b/arch/um/drivers/port_kern.c
@@ -1,4 +1,4 @@
1/* 1/*
2 * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) 2 * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL 3 * Licensed under the GPL
4 */ 4 */
@@ -55,9 +55,9 @@ static irqreturn_t pipe_interrupt(int irq, void *data)
55 fd = os_rcv_fd(conn->socket[0], &conn->helper_pid); 55 fd = os_rcv_fd(conn->socket[0], &conn->helper_pid);
56 if(fd < 0){ 56 if(fd < 0){
57 if(fd == -EAGAIN) 57 if(fd == -EAGAIN)
58 return(IRQ_NONE); 58 return IRQ_NONE;
59 59
60 printk(KERN_ERR "pipe_interrupt : os_rcv_fd returned %d\n", 60 printk(KERN_ERR "pipe_interrupt : os_rcv_fd returned %d\n",
61 -fd); 61 -fd);
62 os_close_file(conn->fd); 62 os_close_file(conn->fd);
63 } 63 }
@@ -68,7 +68,7 @@ static irqreturn_t pipe_interrupt(int irq, void *data)
68 list_add(&conn->list, &conn->port->connections); 68 list_add(&conn->list, &conn->port->connections);
69 69
70 complete(&conn->port->done); 70 complete(&conn->port->done);
71 return(IRQ_HANDLED); 71 return IRQ_HANDLED;
72} 72}
73 73
74#define NO_WAITER_MSG \ 74#define NO_WAITER_MSG \
@@ -97,14 +97,14 @@ static int port_accept(struct port_list *port)
97 "connection\n"); 97 "connection\n");
98 goto out_close; 98 goto out_close;
99 } 99 }
100 *conn = ((struct connection) 100 *conn = ((struct connection)
101 { .list = LIST_HEAD_INIT(conn->list), 101 { .list = LIST_HEAD_INIT(conn->list),
102 .fd = fd, 102 .fd = fd,
103 .socket = { socket[0], socket[1] }, 103 .socket = { socket[0], socket[1] },
104 .telnetd_pid = pid, 104 .telnetd_pid = pid,
105 .port = port }); 105 .port = port });
106 106
107 if(um_request_irq(TELNETD_IRQ, socket[0], IRQ_READ, pipe_interrupt, 107 if(um_request_irq(TELNETD_IRQ, socket[0], IRQ_READ, pipe_interrupt,
108 IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM, 108 IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM,
109 "telnetd", conn)){ 109 "telnetd", conn)){
110 printk(KERN_ERR "port_accept : failed to get IRQ for " 110 printk(KERN_ERR "port_accept : failed to get IRQ for "
@@ -117,20 +117,20 @@ static int port_accept(struct port_list *port)
117 printk("No one waiting for port\n"); 117 printk("No one waiting for port\n");
118 } 118 }
119 list_add(&conn->list, &port->pending); 119 list_add(&conn->list, &port->pending);
120 return(1); 120 return 1;
121 121
122 out_free: 122 out_free:
123 kfree(conn); 123 kfree(conn);
124 out_close: 124 out_close:
125 os_close_file(fd); 125 os_close_file(fd);
126 if(pid != -1) 126 if(pid != -1)
127 os_kill_process(pid, 1); 127 os_kill_process(pid, 1);
128 out: 128 out:
129 return(ret); 129 return ret;
130} 130}
131 131
132DECLARE_MUTEX(ports_sem); 132static DECLARE_MUTEX(ports_sem);
133struct list_head ports = LIST_HEAD_INIT(ports); 133static LIST_HEAD(ports);
134 134
135void port_work_proc(struct work_struct *unused) 135void port_work_proc(struct work_struct *unused)
136{ 136{
@@ -158,8 +158,8 @@ static irqreturn_t port_interrupt(int irq, void *data)
158 158
159 port->has_connection = 1; 159 port->has_connection = 1;
160 schedule_work(&port_work); 160 schedule_work(&port_work);
161 return(IRQ_HANDLED); 161 return IRQ_HANDLED;
162} 162}
163 163
164void *port_data(int port_num) 164void *port_data(int port_num)
165{ 165{
@@ -185,14 +185,14 @@ void *port_data(int port_num)
185 port_num, -fd); 185 port_num, -fd);
186 goto out_free; 186 goto out_free;
187 } 187 }
188 if(um_request_irq(ACCEPT_IRQ, fd, IRQ_READ, port_interrupt, 188 if(um_request_irq(ACCEPT_IRQ, fd, IRQ_READ, port_interrupt,
189 IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM, "port", 189 IRQF_DISABLED | IRQF_SHARED | IRQF_SAMPLE_RANDOM,
190 port)){ 190 "port", port)){
191 printk(KERN_ERR "Failed to get IRQ for port %d\n", port_num); 191 printk(KERN_ERR "Failed to get IRQ for port %d\n", port_num);
192 goto out_close; 192 goto out_close;
193 } 193 }
194 194
195 *port = ((struct port_list) 195 *port = ((struct port_list)
196 { .list = LIST_HEAD_INIT(port->list), 196 { .list = LIST_HEAD_INIT(port->list),
197 .wait_count = ATOMIC_INIT(0), 197 .wait_count = ATOMIC_INIT(0),
198 .has_connection = 0, 198 .has_connection = 0,
@@ -222,7 +222,7 @@ void *port_data(int port_num)
222 os_close_file(fd); 222 os_close_file(fd);
223 out: 223 out:
224 up(&ports_sem); 224 up(&ports_sem);
225 return(dev); 225 return dev;
226} 226}
227 227
228int port_wait(void *data) 228int port_wait(void *data)
@@ -232,15 +232,15 @@ int port_wait(void *data)
232 struct port_list *port = dev->port; 232 struct port_list *port = dev->port;
233 int fd; 233 int fd;
234 234
235 atomic_inc(&port->wait_count); 235 atomic_inc(&port->wait_count);
236 while(1){ 236 while(1){
237 fd = -ERESTARTSYS; 237 fd = -ERESTARTSYS;
238 if(wait_for_completion_interruptible(&port->done)) 238 if(wait_for_completion_interruptible(&port->done))
239 goto out; 239 goto out;
240 240
241 spin_lock(&port->lock); 241 spin_lock(&port->lock);
242 242
243 conn = list_entry(port->connections.next, struct connection, 243 conn = list_entry(port->connections.next, struct connection,
244 list); 244 list);
245 list_del(&conn->list); 245 list_del(&conn->list);
246 spin_unlock(&port->lock); 246 spin_unlock(&port->lock);
@@ -248,12 +248,12 @@ int port_wait(void *data)
248 os_shutdown_socket(conn->socket[0], 1, 1); 248 os_shutdown_socket(conn->socket[0], 1, 1);
249 os_close_file(conn->socket[0]); 249 os_close_file(conn->socket[0]);
250 os_shutdown_socket(conn->socket[1], 1, 1); 250 os_shutdown_socket(conn->socket[1], 1, 1);
251 os_close_file(conn->socket[1]); 251 os_close_file(conn->socket[1]);
252 252
253 /* This is done here because freeing an IRQ can't be done 253 /* This is done here because freeing an IRQ can't be done
254 * within the IRQ handler. So, pipe_interrupt always ups 254 * within the IRQ handler. So, pipe_interrupt always ups
255 * the semaphore regardless of whether it got a successful 255 * the semaphore regardless of whether it got a successful
256 * connection. Then we loop here throwing out failed 256 * connection. Then we loop here throwing out failed
257 * connections until a good one is found. 257 * connections until a good one is found.
258 */ 258 */
259 free_irq(TELNETD_IRQ, conn); 259 free_irq(TELNETD_IRQ, conn);
diff --git a/arch/um/drivers/port_user.c b/arch/um/drivers/port_user.c
index bc6afaf74c1a..80508023054f 100644
--- a/arch/um/drivers/port_user.c
+++ b/arch/um/drivers/port_user.c
@@ -1,4 +1,4 @@
1/* 1/*
2 * Copyright (C) 2001 Jeff Dike (jdike@karaya.com) 2 * Copyright (C) 2001 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL 3 * Licensed under the GPL
4 */ 4 */
@@ -38,18 +38,18 @@ static void *port_init(char *str, int device, const struct chan_opts *opts)
38 if(*str != ':'){ 38 if(*str != ':'){
39 printk("port_init : channel type 'port' must specify a " 39 printk("port_init : channel type 'port' must specify a "
40 "port number\n"); 40 "port number\n");
41 return(NULL); 41 return NULL;
42 } 42 }
43 str++; 43 str++;
44 port = strtoul(str, &end, 0); 44 port = strtoul(str, &end, 0);
45 if((*end != '\0') || (end == str)){ 45 if((*end != '\0') || (end == str)){
46 printk("port_init : couldn't parse port '%s'\n", str); 46 printk("port_init : couldn't parse port '%s'\n", str);
47 return(NULL); 47 return NULL;
48 } 48 }
49 49
50 kern_data = port_data(port); 50 kern_data = port_data(port);
51 if(kern_data == NULL) 51 if(kern_data == NULL)
52 return(NULL); 52 return NULL;
53 53
54 data = um_kmalloc(sizeof(*data)); 54 data = um_kmalloc(sizeof(*data));
55 if(data == NULL) 55 if(data == NULL)
@@ -59,10 +59,10 @@ static void *port_init(char *str, int device, const struct chan_opts *opts)
59 .kernel_data = kern_data }); 59 .kernel_data = kern_data });
60 sprintf(data->dev, "%d", port); 60 sprintf(data->dev, "%d", port);
61 61
62 return(data); 62 return data;
63 err: 63 err:
64 port_kern_free(kern_data); 64 port_kern_free(kern_data);
65 return(NULL); 65 return NULL;
66} 66}
67 67
68static void port_free(void *d) 68static void port_free(void *d)
@@ -83,14 +83,14 @@ static int port_open(int input, int output, int primary, void *d,
83 if((fd >= 0) && data->raw){ 83 if((fd >= 0) && data->raw){
84 CATCH_EINTR(err = tcgetattr(fd, &data->tt)); 84 CATCH_EINTR(err = tcgetattr(fd, &data->tt));
85 if(err) 85 if(err)
86 return(err); 86 return err;
87 87
88 err = raw(fd); 88 err = raw(fd);
89 if(err) 89 if(err)
90 return(err); 90 return err;
91 } 91 }
92 *dev_out = data->dev; 92 *dev_out = data->dev;
93 return(fd); 93 return fd;
94} 94}
95 95
96static void port_close(int fd, void *d) 96static void port_close(int fd, void *d)
@@ -120,8 +120,8 @@ int port_listen_fd(int port)
120 int fd, err, arg; 120 int fd, err, arg;
121 121
122 fd = socket(PF_INET, SOCK_STREAM, 0); 122 fd = socket(PF_INET, SOCK_STREAM, 0);
123 if(fd == -1) 123 if(fd == -1)
124 return(-errno); 124 return -errno;
125 125
126 arg = 1; 126 arg = 1;
127 if(setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &arg, sizeof(arg)) < 0){ 127 if(setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &arg, sizeof(arg)) < 0){
@@ -136,7 +136,7 @@ int port_listen_fd(int port)
136 err = -errno; 136 err = -errno;
137 goto out; 137 goto out;
138 } 138 }
139 139
140 if(listen(fd, 1) < 0){ 140 if(listen(fd, 1) < 0){
141 err = -errno; 141 err = -errno;
142 goto out; 142 goto out;
@@ -146,10 +146,10 @@ int port_listen_fd(int port)
146 if(err < 0) 146 if(err < 0)
147 goto out; 147 goto out;
148 148
149 return(fd); 149 return fd;
150 out: 150 out:
151 os_close_file(fd); 151 os_close_file(fd);
152 return(err); 152 return err;
153} 153}
154 154
155struct port_pre_exec_data { 155struct port_pre_exec_data {
@@ -173,13 +173,13 @@ void port_pre_exec(void *arg)
173int port_connection(int fd, int *socket, int *pid_out) 173int port_connection(int fd, int *socket, int *pid_out)
174{ 174{
175 int new, err; 175 int new, err;
176 char *argv[] = { "/usr/sbin/in.telnetd", "-L", 176 char *argv[] = { "/usr/sbin/in.telnetd", "-L",
177 "/usr/lib/uml/port-helper", NULL }; 177 "/usr/lib/uml/port-helper", NULL };
178 struct port_pre_exec_data data; 178 struct port_pre_exec_data data;
179 179
180 new = os_accept_connection(fd); 180 new = os_accept_connection(fd);
181 if(new < 0) 181 if(new < 0)
182 return(new); 182 return new;
183 183
184 err = os_pipe(socket, 0, 0); 184 err = os_pipe(socket, 0, 0);
185 if(err < 0) 185 if(err < 0)
@@ -190,29 +190,18 @@ int port_connection(int fd, int *socket, int *pid_out)
190 .pipe_fd = socket[1] }); 190 .pipe_fd = socket[1] });
191 191
192 err = run_helper(port_pre_exec, &data, argv, NULL); 192 err = run_helper(port_pre_exec, &data, argv, NULL);
193 if(err < 0) 193 if(err < 0)
194 goto out_shutdown; 194 goto out_shutdown;
195 195
196 *pid_out = err; 196 *pid_out = err;
197 return(new); 197 return new;
198 198
199 out_shutdown: 199 out_shutdown:
200 os_shutdown_socket(socket[0], 1, 1); 200 os_shutdown_socket(socket[0], 1, 1);
201 os_close_file(socket[0]); 201 os_close_file(socket[0]);
202 os_shutdown_socket(socket[1], 1, 1); 202 os_shutdown_socket(socket[1], 1, 1);
203 os_close_file(socket[1]); 203 os_close_file(socket[1]);
204 out_close: 204 out_close:
205 os_close_file(new); 205 os_close_file(new);
206 return(err); 206 return err;
207} 207}
208
209/*
210 * Overrides for Emacs so that we follow Linus's tabbing style.
211 * Emacs will notice this stuff at the end of the file and automatically
212 * adjust the settings for this buffer only. This must remain at the end
213 * of the file.
214 * ---------------------------------------------------------------------------
215 * Local variables:
216 * c-file-style: "linux"
217 * End:
218 */
diff --git a/arch/um/drivers/random.c b/arch/um/drivers/random.c
index 73b2bdd6d2d3..e942e836f995 100644
--- a/arch/um/drivers/random.c
+++ b/arch/um/drivers/random.c
@@ -78,6 +78,7 @@ static const struct file_operations rng_chrdev_ops = {
78 .read = rng_dev_read, 78 .read = rng_dev_read,
79}; 79};
80 80
81/* rng_init shouldn't be called more than once at boot time */
81static struct miscdevice rng_miscdev = { 82static struct miscdevice rng_miscdev = {
82 RNG_MISCDEV_MINOR, 83 RNG_MISCDEV_MINOR,
83 RNG_MODULE_NAME, 84 RNG_MODULE_NAME,
diff --git a/arch/um/drivers/ssl.c b/arch/um/drivers/ssl.c
index ed9c59082d0d..fc22b9bd9153 100644
--- a/arch/um/drivers/ssl.c
+++ b/arch/um/drivers/ssl.c
@@ -38,6 +38,7 @@ static void ssl_announce(char *dev_name, int dev)
38 dev_name); 38 dev_name);
39} 39}
40 40
41/* Almost const, except that xterm_title may be changed in an initcall */
41static struct chan_opts opts = { 42static struct chan_opts opts = {
42 .announce = ssl_announce, 43 .announce = ssl_announce,
43 .xterm_title = "Serial Line #%d", 44 .xterm_title = "Serial Line #%d",
@@ -46,10 +47,12 @@ static struct chan_opts opts = {
46 .in_kernel = 1, 47 .in_kernel = 1,
47}; 48};
48 49
49static int ssl_config(char *str); 50static int ssl_config(char *str, char **error_out);
50static int ssl_get_config(char *dev, char *str, int size, char **error_out); 51static int ssl_get_config(char *dev, char *str, int size, char **error_out);
51static int ssl_remove(int n); 52static int ssl_remove(int n, char **error_out);
52 53
54
55/* Const, except for .mc.list */
53static struct line_driver driver = { 56static struct line_driver driver = {
54 .name = "UML serial line", 57 .name = "UML serial line",
55 .device_name = "ttyS", 58 .device_name = "ttyS",
@@ -61,9 +64,8 @@ static struct line_driver driver = {
61 .read_irq_name = "ssl", 64 .read_irq_name = "ssl",
62 .write_irq = SSL_WRITE_IRQ, 65 .write_irq = SSL_WRITE_IRQ,
63 .write_irq_name = "ssl-write", 66 .write_irq_name = "ssl-write",
64 .symlink_from = "serial",
65 .symlink_to = "tts",
66 .mc = { 67 .mc = {
68 .list = LIST_HEAD_INIT(driver.mc.list),
67 .name = "ssl", 69 .name = "ssl",
68 .config = ssl_config, 70 .config = ssl_config,
69 .get_config = ssl_get_config, 71 .get_config = ssl_get_config,
@@ -72,17 +74,16 @@ static struct line_driver driver = {
72 }, 74 },
73}; 75};
74 76
75/* The array is initialized by line_init, which is an initcall. The 77/* The array is initialized by line_init, at initcall time. The
76 * individual elements are protected by individual semaphores. 78 * elements are locked individually as needed.
77 */ 79 */
78static struct line serial_lines[NR_PORTS] = 80static struct line serial_lines[NR_PORTS] =
79 { [0 ... NR_PORTS - 1] = LINE_INIT(CONFIG_SSL_CHAN, &driver) }; 81 { [0 ... NR_PORTS - 1] = LINE_INIT(CONFIG_SSL_CHAN, &driver) };
80 82
81static struct lines lines = LINES_INIT(NR_PORTS); 83static int ssl_config(char *str, char **error_out)
82
83static int ssl_config(char *str)
84{ 84{
85 return line_config(serial_lines, ARRAY_SIZE(serial_lines), str, &opts); 85 return line_config(serial_lines, ARRAY_SIZE(serial_lines), str, &opts,
86 error_out);
86} 87}
87 88
88static int ssl_get_config(char *dev, char *str, int size, char **error_out) 89static int ssl_get_config(char *dev, char *str, int size, char **error_out)
@@ -91,9 +92,10 @@ static int ssl_get_config(char *dev, char *str, int size, char **error_out)
91 size, error_out); 92 size, error_out);
92} 93}
93 94
94static int ssl_remove(int n) 95static int ssl_remove(int n, char **error_out)
95{ 96{
96 return line_remove(serial_lines, ARRAY_SIZE(serial_lines), n); 97 return line_remove(serial_lines, ARRAY_SIZE(serial_lines), n,
98 error_out);
97} 99}
98 100
99static int ssl_open(struct tty_struct *tty, struct file *filp) 101static int ssl_open(struct tty_struct *tty, struct file *filp)
@@ -168,9 +170,10 @@ static int ssl_console_setup(struct console *co, char *options)
168{ 170{
169 struct line *line = &serial_lines[co->index]; 171 struct line *line = &serial_lines[co->index];
170 172
171 return console_open_chan(line, co, &opts); 173 return console_open_chan(line, co);
172} 174}
173 175
176/* No locking for register_console call - relies on single-threaded initcalls */
174static struct console ssl_cons = { 177static struct console ssl_cons = {
175 .name = "ttyS", 178 .name = "ttyS",
176 .write = ssl_console_write, 179 .write = ssl_console_write,
@@ -186,9 +189,8 @@ static int ssl_init(void)
186 189
187 printk(KERN_INFO "Initializing software serial port version %d\n", 190 printk(KERN_INFO "Initializing software serial port version %d\n",
188 ssl_version); 191 ssl_version);
189 ssl_driver = line_register_devfs(&lines, &driver, &ssl_ops, 192 ssl_driver = register_lines(&driver, &ssl_ops, serial_lines,
190 serial_lines, 193 ARRAY_SIZE(serial_lines));
191 ARRAY_SIZE(serial_lines));
192 194
193 lines_init(serial_lines, ARRAY_SIZE(serial_lines), &opts); 195 lines_init(serial_lines, ARRAY_SIZE(serial_lines), &opts);
194 196
@@ -212,7 +214,15 @@ __uml_exitcall(ssl_exit);
212 214
213static int ssl_chan_setup(char *str) 215static int ssl_chan_setup(char *str)
214{ 216{
215 return line_setup(serial_lines, ARRAY_SIZE(serial_lines), str); 217 char *error;
218 int ret;
219
220 ret = line_setup(serial_lines, ARRAY_SIZE(serial_lines), str, &error);
221 if(ret < 0)
222 printk(KERN_ERR "Failed to set up serial line with "
223 "configuration string \"%s\" : %s\n", str, error);
224
225 return 1;
216} 226}
217 227
218__setup("ssl", ssl_chan_setup); 228__setup("ssl", ssl_chan_setup);
diff --git a/arch/um/drivers/stdio_console.c b/arch/um/drivers/stdio_console.c
index 7a4897e27f42..7ff0b0fc37e7 100644
--- a/arch/um/drivers/stdio_console.c
+++ b/arch/um/drivers/stdio_console.c
@@ -30,8 +30,6 @@
30 30
31#define MAX_TTYS (16) 31#define MAX_TTYS (16)
32 32
33/* ----------------------------------------------------------------------------- */
34
35/* Referenced only by tty_driver below - presumably it's locked correctly 33/* Referenced only by tty_driver below - presumably it's locked correctly
36 * by the tty driver. 34 * by the tty driver.
37 */ 35 */
@@ -44,6 +42,7 @@ void stdio_announce(char *dev_name, int dev)
44 dev_name); 42 dev_name);
45} 43}
46 44
45/* Almost const, except that xterm_title may be changed in an initcall */
47static struct chan_opts opts = { 46static struct chan_opts opts = {
48 .announce = stdio_announce, 47 .announce = stdio_announce,
49 .xterm_title = "Virtual Console #%d", 48 .xterm_title = "Virtual Console #%d",
@@ -52,10 +51,12 @@ static struct chan_opts opts = {
52 .in_kernel = 1, 51 .in_kernel = 1,
53}; 52};
54 53
55static int con_config(char *str); 54static int con_config(char *str, char **error_out);
56static int con_get_config(char *dev, char *str, int size, char **error_out); 55static int con_get_config(char *dev, char *str, int size, char **error_out);
57static int con_remove(int n); 56static int con_remove(int n, char **con_remove);
57
58 58
59/* Const, except for .mc.list */
59static struct line_driver driver = { 60static struct line_driver driver = {
60 .name = "UML console", 61 .name = "UML console",
61 .device_name = "tty", 62 .device_name = "tty",
@@ -67,9 +68,8 @@ static struct line_driver driver = {
67 .read_irq_name = "console", 68 .read_irq_name = "console",
68 .write_irq = CONSOLE_WRITE_IRQ, 69 .write_irq = CONSOLE_WRITE_IRQ,
69 .write_irq_name = "console-write", 70 .write_irq_name = "console-write",
70 .symlink_from = "ttys",
71 .symlink_to = "vc",
72 .mc = { 71 .mc = {
72 .list = LIST_HEAD_INIT(driver.mc.list),
73 .name = "con", 73 .name = "con",
74 .config = con_config, 74 .config = con_config,
75 .get_config = con_get_config, 75 .get_config = con_get_config,
@@ -78,18 +78,16 @@ static struct line_driver driver = {
78 }, 78 },
79}; 79};
80 80
81static struct lines console_lines = LINES_INIT(MAX_TTYS); 81/* The array is initialized by line_init, at initcall time. The
82 82 * elements are locked individually as needed.
83/* The array is initialized by line_init, which is an initcall. The
84 * individual elements are protected by individual semaphores.
85 */ 83 */
86struct line vts[MAX_TTYS] = { LINE_INIT(CONFIG_CON_ZERO_CHAN, &driver), 84static struct line vts[MAX_TTYS] = { LINE_INIT(CONFIG_CON_ZERO_CHAN, &driver),
87 [ 1 ... MAX_TTYS - 1 ] = 85 [ 1 ... MAX_TTYS - 1 ] =
88 LINE_INIT(CONFIG_CON_CHAN, &driver) }; 86 LINE_INIT(CONFIG_CON_CHAN, &driver) };
89 87
90static int con_config(char *str) 88static int con_config(char *str, char **error_out)
91{ 89{
92 return line_config(vts, ARRAY_SIZE(vts), str, &opts); 90 return line_config(vts, ARRAY_SIZE(vts), str, &opts, error_out);
93} 91}
94 92
95static int con_get_config(char *dev, char *str, int size, char **error_out) 93static int con_get_config(char *dev, char *str, int size, char **error_out)
@@ -97,9 +95,9 @@ static int con_get_config(char *dev, char *str, int size, char **error_out)
97 return line_get_config(dev, vts, ARRAY_SIZE(vts), str, size, error_out); 95 return line_get_config(dev, vts, ARRAY_SIZE(vts), str, size, error_out);
98} 96}
99 97
100static int con_remove(int n) 98static int con_remove(int n, char **error_out)
101{ 99{
102 return line_remove(vts, ARRAY_SIZE(vts), n); 100 return line_remove(vts, ARRAY_SIZE(vts), n, error_out);
103} 101}
104 102
105static int con_open(struct tty_struct *tty, struct file *filp) 103static int con_open(struct tty_struct *tty, struct file *filp)
@@ -146,9 +144,10 @@ static int uml_console_setup(struct console *co, char *options)
146{ 144{
147 struct line *line = &vts[co->index]; 145 struct line *line = &vts[co->index];
148 146
149 return console_open_chan(line, co, &opts); 147 return console_open_chan(line, co);
150} 148}
151 149
150/* No locking for register_console call - relies on single-threaded initcalls */
152static struct console stdiocons = { 151static struct console stdiocons = {
153 .name = "tty", 152 .name = "tty",
154 .write = uml_console_write, 153 .write = uml_console_write,
@@ -156,16 +155,14 @@ static struct console stdiocons = {
156 .setup = uml_console_setup, 155 .setup = uml_console_setup,
157 .flags = CON_PRINTBUFFER, 156 .flags = CON_PRINTBUFFER,
158 .index = -1, 157 .index = -1,
159 .data = &vts,
160}; 158};
161 159
162int stdio_init(void) 160int stdio_init(void)
163{ 161{
164 char *new_title; 162 char *new_title;
165 163
166 console_driver = line_register_devfs(&console_lines, &driver, 164 console_driver = register_lines(&driver, &console_ops, vts,
167 &console_ops, vts, 165 ARRAY_SIZE(vts));
168 ARRAY_SIZE(vts));
169 if (console_driver == NULL) 166 if (console_driver == NULL)
170 return -1; 167 return -1;
171 printk(KERN_INFO "Initialized stdio console driver\n"); 168 printk(KERN_INFO "Initialized stdio console driver\n");
@@ -192,7 +189,15 @@ __uml_exitcall(console_exit);
192 189
193static int console_chan_setup(char *str) 190static int console_chan_setup(char *str)
194{ 191{
195 return line_setup(vts, ARRAY_SIZE(vts), str); 192 char *error;
193 int ret;
194
195 ret = line_setup(vts, ARRAY_SIZE(vts), str, &error);
196 if(ret < 0)
197 printk(KERN_ERR "Failed to set up console with "
198 "configuration string \"%s\" : %s\n", str, error);
199
200 return 1;
196} 201}
197__setup("con", console_chan_setup); 202__setup("con", console_chan_setup);
198__channel_help(console_chan_setup, "con"); 203__channel_help(console_chan_setup, "con");
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
index 49c047b75cc5..f98d26e51381 100644
--- a/arch/um/drivers/ubd_kern.c
+++ b/arch/um/drivers/ubd_kern.c
@@ -56,6 +56,7 @@
56enum ubd_req { UBD_READ, UBD_WRITE }; 56enum ubd_req { UBD_READ, UBD_WRITE };
57 57
58struct io_thread_req { 58struct io_thread_req {
59 struct request *req;
59 enum ubd_req op; 60 enum ubd_req op;
60 int fds[2]; 61 int fds[2];
61 unsigned long offsets[2]; 62 unsigned long offsets[2];
@@ -106,10 +107,6 @@ static inline void ubd_set_bit(__u64 bit, unsigned char *data)
106 107
107#define DRIVER_NAME "uml-blkdev" 108#define DRIVER_NAME "uml-blkdev"
108 109
109/* Can be taken in interrupt context, and is passed to the block layer to lock
110 * the request queue. Kernel side code knows that. */
111static DEFINE_SPINLOCK(ubd_io_lock);
112
113static DEFINE_MUTEX(ubd_lock); 110static DEFINE_MUTEX(ubd_lock);
114 111
115/* XXX - this made sense in 2.4 days, now it's only used as a boolean, and 112/* XXX - this made sense in 2.4 days, now it's only used as a boolean, and
@@ -132,12 +129,8 @@ static struct block_device_operations ubd_blops = {
132 .getgeo = ubd_getgeo, 129 .getgeo = ubd_getgeo,
133}; 130};
134 131
135/* Protected by the queue_lock */
136static request_queue_t *ubd_queue;
137
138/* Protected by ubd_lock */ 132/* Protected by ubd_lock */
139static int fake_major = MAJOR_NR; 133static int fake_major = MAJOR_NR;
140
141static struct gendisk *ubd_gendisk[MAX_DEV]; 134static struct gendisk *ubd_gendisk[MAX_DEV];
142static struct gendisk *fake_gendisk[MAX_DEV]; 135static struct gendisk *fake_gendisk[MAX_DEV];
143 136
@@ -148,10 +141,6 @@ static struct gendisk *fake_gendisk[MAX_DEV];
148#define OPEN_FLAGS ((struct openflags) { .r = 1, .w = 1, .s = 0, .c = 0, \ 141#define OPEN_FLAGS ((struct openflags) { .r = 1, .w = 1, .s = 0, .c = 0, \
149 .cl = 1 }) 142 .cl = 1 })
150#endif 143#endif
151
152/* Not protected - changed only in ubd_setup_common and then only to
153 * to enable O_SYNC.
154 */
155static struct openflags global_openflags = OPEN_FLAGS; 144static struct openflags global_openflags = OPEN_FLAGS;
156 145
157struct cow { 146struct cow {
@@ -178,6 +167,8 @@ struct ubd {
178 unsigned no_cow:1; 167 unsigned no_cow:1;
179 struct cow cow; 168 struct cow cow;
180 struct platform_device pdev; 169 struct platform_device pdev;
170 struct request_queue *queue;
171 spinlock_t lock;
181}; 172};
182 173
183#define DEFAULT_COW { \ 174#define DEFAULT_COW { \
@@ -198,8 +189,10 @@ struct ubd {
198 .no_cow = 0, \ 189 .no_cow = 0, \
199 .shared = 0, \ 190 .shared = 0, \
200 .cow = DEFAULT_COW, \ 191 .cow = DEFAULT_COW, \
192 .lock = SPIN_LOCK_UNLOCKED, \
201} 193}
202 194
195/* Protected by ubd_lock */
203struct ubd ubd_devs[MAX_DEV] = { [ 0 ... MAX_DEV - 1 ] = DEFAULT_UBD }; 196struct ubd ubd_devs[MAX_DEV] = { [ 0 ... MAX_DEV - 1 ] = DEFAULT_UBD };
204 197
205/* Only changed by fake_ide_setup which is a setup */ 198/* Only changed by fake_ide_setup which is a setup */
@@ -242,7 +235,6 @@ static void make_ide_entries(char *dev_name)
242 235
243 ent = create_proc_entry("media", S_IFREG|S_IRUGO, dir); 236 ent = create_proc_entry("media", S_IFREG|S_IRUGO, dir);
244 if(!ent) return; 237 if(!ent) return;
245 ent->nlink = 1;
246 ent->data = NULL; 238 ent->data = NULL;
247 ent->read_proc = proc_ide_read_media; 239 ent->read_proc = proc_ide_read_media;
248 ent->write_proc = NULL; 240 ent->write_proc = NULL;
@@ -286,12 +278,12 @@ static int parse_unit(char **ptr)
286 * otherwise, the str pointer is used (and owned) inside ubd_devs array, so it 278 * otherwise, the str pointer is used (and owned) inside ubd_devs array, so it
287 * should not be freed on exit. 279 * should not be freed on exit.
288 */ 280 */
289static int ubd_setup_common(char *str, int *index_out) 281static int ubd_setup_common(char *str, int *index_out, char **error_out)
290{ 282{
291 struct ubd *ubd_dev; 283 struct ubd *ubd_dev;
292 struct openflags flags = global_openflags; 284 struct openflags flags = global_openflags;
293 char *backing_file; 285 char *backing_file;
294 int n, err, i; 286 int n, err = 0, i;
295 287
296 if(index_out) *index_out = -1; 288 if(index_out) *index_out = -1;
297 n = *str; 289 n = *str;
@@ -302,56 +294,55 @@ static int ubd_setup_common(char *str, int *index_out)
302 str++; 294 str++;
303 if(!strcmp(str, "sync")){ 295 if(!strcmp(str, "sync")){
304 global_openflags = of_sync(global_openflags); 296 global_openflags = of_sync(global_openflags);
305 return(0); 297 goto out1;
306 } 298 }
299
300 err = -EINVAL;
307 major = simple_strtoul(str, &end, 0); 301 major = simple_strtoul(str, &end, 0);
308 if((*end != '\0') || (end == str)){ 302 if((*end != '\0') || (end == str)){
309 printk(KERN_ERR 303 *error_out = "Didn't parse major number";
310 "ubd_setup : didn't parse major number\n"); 304 goto out1;
311 return(1);
312 } 305 }
313 306
314 err = 1; 307 mutex_lock(&ubd_lock);
315 mutex_lock(&ubd_lock); 308 if(fake_major != MAJOR_NR){
316 if(fake_major != MAJOR_NR){ 309 *error_out = "Can't assign a fake major twice";
317 printk(KERN_ERR "Can't assign a fake major twice\n"); 310 goto out1;
318 goto out1; 311 }
319 }
320 312
321 fake_major = major; 313 fake_major = major;
322 314
323 printk(KERN_INFO "Setting extra ubd major number to %d\n", 315 printk(KERN_INFO "Setting extra ubd major number to %d\n",
324 major); 316 major);
325 err = 0; 317 err = 0;
326 out1: 318 out1:
327 mutex_unlock(&ubd_lock); 319 mutex_unlock(&ubd_lock);
328 return(err); 320 return err;
329 } 321 }
330 322
331 n = parse_unit(&str); 323 n = parse_unit(&str);
332 if(n < 0){ 324 if(n < 0){
333 printk(KERN_ERR "ubd_setup : couldn't parse unit number " 325 *error_out = "Couldn't parse device number";
334 "'%s'\n", str); 326 return -EINVAL;
335 return(1);
336 } 327 }
337 if(n >= MAX_DEV){ 328 if(n >= MAX_DEV){
338 printk(KERN_ERR "ubd_setup : index %d out of range " 329 *error_out = "Device number out of range";
339 "(%d devices, from 0 to %d)\n", n, MAX_DEV, MAX_DEV - 1); 330 return 1;
340 return(1);
341 } 331 }
342 332
343 err = 1; 333 err = -EBUSY;
344 mutex_lock(&ubd_lock); 334 mutex_lock(&ubd_lock);
345 335
346 ubd_dev = &ubd_devs[n]; 336 ubd_dev = &ubd_devs[n];
347 if(ubd_dev->file != NULL){ 337 if(ubd_dev->file != NULL){
348 printk(KERN_ERR "ubd_setup : device already configured\n"); 338 *error_out = "Device is already configured";
349 goto out; 339 goto out;
350 } 340 }
351 341
352 if (index_out) 342 if (index_out)
353 *index_out = n; 343 *index_out = n;
354 344
345 err = -EINVAL;
355 for (i = 0; i < sizeof("rscd="); i++) { 346 for (i = 0; i < sizeof("rscd="); i++) {
356 switch (*str) { 347 switch (*str) {
357 case 'r': 348 case 'r':
@@ -370,47 +361,54 @@ static int ubd_setup_common(char *str, int *index_out)
370 str++; 361 str++;
371 goto break_loop; 362 goto break_loop;
372 default: 363 default:
373 printk(KERN_ERR "ubd_setup : Expected '=' or flag letter (r, s, c, or d)\n"); 364 *error_out = "Expected '=' or flag letter "
365 "(r, s, c, or d)";
374 goto out; 366 goto out;
375 } 367 }
376 str++; 368 str++;
377 } 369 }
378 370
379 if (*str == '=') 371 if (*str == '=')
380 printk(KERN_ERR "ubd_setup : Too many flags specified\n"); 372 *error_out = "Too many flags specified";
381 else 373 else
382 printk(KERN_ERR "ubd_setup : Expected '='\n"); 374 *error_out = "Missing '='";
383 goto out; 375 goto out;
384 376
385break_loop: 377break_loop:
386 err = 0;
387 backing_file = strchr(str, ','); 378 backing_file = strchr(str, ',');
388 379
389 if (!backing_file) { 380 if (backing_file == NULL)
390 backing_file = strchr(str, ':'); 381 backing_file = strchr(str, ':');
391 }
392 382
393 if(backing_file){ 383 if(backing_file != NULL){
394 if(ubd_dev->no_cow) 384 if(ubd_dev->no_cow){
395 printk(KERN_ERR "Can't specify both 'd' and a " 385 *error_out = "Can't specify both 'd' and a cow file";
396 "cow file\n"); 386 goto out;
387 }
397 else { 388 else {
398 *backing_file = '\0'; 389 *backing_file = '\0';
399 backing_file++; 390 backing_file++;
400 } 391 }
401 } 392 }
393 err = 0;
402 ubd_dev->file = str; 394 ubd_dev->file = str;
403 ubd_dev->cow.file = backing_file; 395 ubd_dev->cow.file = backing_file;
404 ubd_dev->boot_openflags = flags; 396 ubd_dev->boot_openflags = flags;
405out: 397out:
406 mutex_unlock(&ubd_lock); 398 mutex_unlock(&ubd_lock);
407 return(err); 399 return err;
408} 400}
409 401
410static int ubd_setup(char *str) 402static int ubd_setup(char *str)
411{ 403{
412 ubd_setup_common(str, NULL); 404 char *error;
413 return(1); 405 int err;
406
407 err = ubd_setup_common(str, NULL, &error);
408 if(err)
409 printk(KERN_ERR "Failed to initialize device with \"%s\" : "
410 "%s\n", str, error);
411 return 1;
414} 412}
415 413
416__setup("ubd", ubd_setup); 414__setup("ubd", ubd_setup);
@@ -422,7 +420,7 @@ __uml_help(ubd_setup,
422" use either a ':' or a ',': the first one allows writing things like;\n" 420" use either a ':' or a ',': the first one allows writing things like;\n"
423" ubd0=~/Uml/root_cow:~/Uml/root_backing_file\n" 421" ubd0=~/Uml/root_cow:~/Uml/root_backing_file\n"
424" while with a ',' the shell would not expand the 2nd '~'.\n" 422" while with a ',' the shell would not expand the 2nd '~'.\n"
425" When using only one filename, UML will detect whether to thread it like\n" 423" When using only one filename, UML will detect whether to treat it like\n"
426" a COW file or a backing file. To override this detection, add the 'd'\n" 424" a COW file or a backing file. To override this detection, add the 'd'\n"
427" flag:\n" 425" flag:\n"
428" ubd0d=BackingFile\n" 426" ubd0d=BackingFile\n"
@@ -471,12 +469,6 @@ static void do_ubd_request(request_queue_t * q);
471/* Only changed by ubd_init, which is an initcall. */ 469/* Only changed by ubd_init, which is an initcall. */
472int thread_fd = -1; 470int thread_fd = -1;
473 471
474/* Changed by ubd_handler, which is serialized because interrupts only
475 * happen on CPU 0.
476 * XXX: currently unused.
477 */
478static int intr_count = 0;
479
480/* call ubd_finish if you need to serialize */ 472/* call ubd_finish if you need to serialize */
481static void __ubd_finish(struct request *req, int error) 473static void __ubd_finish(struct request *req, int error)
482{ 474{
@@ -499,36 +491,38 @@ static void __ubd_finish(struct request *req, int error)
499 * spin_lock_irq()/spin_lock_irqsave() */ 491 * spin_lock_irq()/spin_lock_irqsave() */
500static inline void ubd_finish(struct request *req, int error) 492static inline void ubd_finish(struct request *req, int error)
501{ 493{
502 spin_lock(&ubd_io_lock); 494 struct ubd *dev = req->rq_disk->private_data;
495
496 spin_lock(&dev->lock);
503 __ubd_finish(req, error); 497 __ubd_finish(req, error);
504 spin_unlock(&ubd_io_lock); 498 spin_unlock(&dev->lock);
505} 499}
506 500
507/* XXX - move this inside ubd_intr. */ 501/* XXX - move this inside ubd_intr. */
508/* Called without ubd_io_lock held, and only in interrupt context. */ 502/* Called without dev->lock held, and only in interrupt context. */
509static void ubd_handler(void) 503static void ubd_handler(void)
510{ 504{
511 struct io_thread_req req; 505 struct io_thread_req req;
512 struct request *rq = elv_next_request(ubd_queue); 506 struct request *rq;
507 struct ubd *dev;
513 int n; 508 int n;
514 509
515 do_ubd = 0; 510 do_ubd = 0;
516 intr_count++;
517 n = os_read_file(thread_fd, &req, sizeof(req)); 511 n = os_read_file(thread_fd, &req, sizeof(req));
518 if(n != sizeof(req)){ 512 if(n != sizeof(req)){
519 printk(KERN_ERR "Pid %d - spurious interrupt in ubd_handler, " 513 printk(KERN_ERR "Pid %d - spurious interrupt in ubd_handler, "
520 "err = %d\n", os_getpid(), -n); 514 "err = %d\n", os_getpid(), -n);
521 spin_lock(&ubd_io_lock);
522 end_request(rq, 0);
523 spin_unlock(&ubd_io_lock);
524 return; 515 return;
525 } 516 }
526 517
518 rq = req.req;
519 dev = rq->rq_disk->private_data;
520
527 ubd_finish(rq, req.error); 521 ubd_finish(rq, req.error);
528 reactivate_fd(thread_fd, UBD_IRQ); 522 reactivate_fd(thread_fd, UBD_IRQ);
529 spin_lock(&ubd_io_lock); 523 spin_lock(&dev->lock);
530 do_ubd_request(ubd_queue); 524 do_ubd_request(dev->queue);
531 spin_unlock(&ubd_io_lock); 525 spin_unlock(&dev->lock);
532} 526}
533 527
534static irqreturn_t ubd_intr(int irq, void *dev) 528static irqreturn_t ubd_intr(int irq, void *dev)
@@ -632,8 +626,7 @@ static int ubd_open_dev(struct ubd *ubd_dev)
632} 626}
633 627
634static int ubd_disk_register(int major, u64 size, int unit, 628static int ubd_disk_register(int major, u64 size, int unit,
635 struct gendisk **disk_out) 629 struct gendisk **disk_out)
636
637{ 630{
638 struct gendisk *disk; 631 struct gendisk *disk;
639 632
@@ -659,7 +652,7 @@ static int ubd_disk_register(int major, u64 size, int unit,
659 } 652 }
660 653
661 disk->private_data = &ubd_devs[unit]; 654 disk->private_data = &ubd_devs[unit];
662 disk->queue = ubd_queue; 655 disk->queue = ubd_devs[unit].queue;
663 add_disk(disk); 656 add_disk(disk);
664 657
665 *disk_out = disk; 658 *disk_out = disk;
@@ -668,28 +661,39 @@ static int ubd_disk_register(int major, u64 size, int unit,
668 661
669#define ROUND_BLOCK(n) ((n + ((1 << 9) - 1)) & (-1 << 9)) 662#define ROUND_BLOCK(n) ((n + ((1 << 9) - 1)) & (-1 << 9))
670 663
671static int ubd_add(int n) 664static int ubd_add(int n, char **error_out)
672{ 665{
673 struct ubd *ubd_dev = &ubd_devs[n]; 666 struct ubd *ubd_dev = &ubd_devs[n];
674 int err; 667 int err = 0;
675 668
676 err = -ENODEV;
677 if(ubd_dev->file == NULL) 669 if(ubd_dev->file == NULL)
678 goto out; 670 goto out;
679 671
680 err = ubd_file_size(ubd_dev, &ubd_dev->size); 672 err = ubd_file_size(ubd_dev, &ubd_dev->size);
681 if(err < 0) 673 if(err < 0){
674 *error_out = "Couldn't determine size of device's file";
682 goto out; 675 goto out;
676 }
683 677
684 ubd_dev->size = ROUND_BLOCK(ubd_dev->size); 678 ubd_dev->size = ROUND_BLOCK(ubd_dev->size);
685 679
686 err = ubd_disk_register(MAJOR_NR, ubd_dev->size, n, &ubd_gendisk[n]); 680 err = -ENOMEM;
687 if(err) 681 ubd_dev->queue = blk_init_queue(do_ubd_request, &ubd_dev->lock);
682 if (ubd_dev->queue == NULL) {
683 *error_out = "Failed to initialize device queue";
688 goto out; 684 goto out;
685 }
686 ubd_dev->queue->queuedata = ubd_dev;
687
688 err = ubd_disk_register(MAJOR_NR, ubd_dev->size, n, &ubd_gendisk[n]);
689 if(err){
690 *error_out = "Failed to register device";
691 goto out_cleanup;
692 }
689 693
690 if(fake_major != MAJOR_NR) 694 if(fake_major != MAJOR_NR)
691 ubd_disk_register(fake_major, ubd_dev->size, n, 695 ubd_disk_register(fake_major, ubd_dev->size, n,
692 &fake_gendisk[n]); 696 &fake_gendisk[n]);
693 697
694 /* perhaps this should also be under the "if (fake_major)" above */ 698 /* perhaps this should also be under the "if (fake_major)" above */
695 /* using the fake_disk->disk_name and also the fakehd_set name */ 699 /* using the fake_disk->disk_name and also the fakehd_set name */
@@ -699,30 +703,37 @@ static int ubd_add(int n)
699 err = 0; 703 err = 0;
700out: 704out:
701 return err; 705 return err;
706
707out_cleanup:
708 blk_cleanup_queue(ubd_dev->queue);
709 goto out;
702} 710}
703 711
704static int ubd_config(char *str) 712static int ubd_config(char *str, char **error_out)
705{ 713{
706 int n, ret; 714 int n, ret;
707 715
716 /* This string is possibly broken up and stored, so it's only
717 * freed if ubd_setup_common fails, or if only general options
718 * were set.
719 */
708 str = kstrdup(str, GFP_KERNEL); 720 str = kstrdup(str, GFP_KERNEL);
709 if (str == NULL) { 721 if (str == NULL) {
710 printk(KERN_ERR "ubd_config failed to strdup string\n"); 722 *error_out = "Failed to allocate memory";
711 ret = 1; 723 return -ENOMEM;
712 goto out;
713 } 724 }
714 ret = ubd_setup_common(str, &n); 725
715 if (ret) { 726 ret = ubd_setup_common(str, &n, error_out);
716 ret = -1; 727 if (ret)
717 goto err_free; 728 goto err_free;
718 } 729
719 if (n == -1) { 730 if (n == -1) {
720 ret = 0; 731 ret = 0;
721 goto err_free; 732 goto err_free;
722 } 733 }
723 734
724 mutex_lock(&ubd_lock); 735 mutex_lock(&ubd_lock);
725 ret = ubd_add(n); 736 ret = ubd_add(n, error_out);
726 if (ret) 737 if (ret)
727 ubd_devs[n].file = NULL; 738 ubd_devs[n].file = NULL;
728 mutex_unlock(&ubd_lock); 739 mutex_unlock(&ubd_lock);
@@ -777,7 +788,7 @@ static int ubd_id(char **str, int *start_out, int *end_out)
777 return n; 788 return n;
778} 789}
779 790
780static int ubd_remove(int n) 791static int ubd_remove(int n, char **error_out)
781{ 792{
782 struct ubd *ubd_dev; 793 struct ubd *ubd_dev;
783 int err = -ENODEV; 794 int err = -ENODEV;
@@ -807,6 +818,7 @@ static int ubd_remove(int n)
807 fake_gendisk[n] = NULL; 818 fake_gendisk[n] = NULL;
808 } 819 }
809 820
821 blk_cleanup_queue(ubd_dev->queue);
810 platform_device_unregister(&ubd_dev->pdev); 822 platform_device_unregister(&ubd_dev->pdev);
811 *ubd_dev = ((struct ubd) DEFAULT_UBD); 823 *ubd_dev = ((struct ubd) DEFAULT_UBD);
812 err = 0; 824 err = 0;
@@ -815,8 +827,11 @@ out:
815 return err; 827 return err;
816} 828}
817 829
818/* All these are called by mconsole in process context and without ubd-specific locks. */ 830/* All these are called by mconsole in process context and without
831 * ubd-specific locks. The structure itself is const except for .list.
832 */
819static struct mc_device ubd_mc = { 833static struct mc_device ubd_mc = {
834 .list = LIST_HEAD_INIT(ubd_mc.list),
820 .name = "ubd", 835 .name = "ubd",
821 .config = ubd_config, 836 .config = ubd_config,
822 .get_config = ubd_get_config, 837 .get_config = ubd_get_config,
@@ -836,13 +851,17 @@ static int __init ubd0_init(void)
836{ 851{
837 struct ubd *ubd_dev = &ubd_devs[0]; 852 struct ubd *ubd_dev = &ubd_devs[0];
838 853
854 mutex_lock(&ubd_lock);
839 if(ubd_dev->file == NULL) 855 if(ubd_dev->file == NULL)
840 ubd_dev->file = "root_fs"; 856 ubd_dev->file = "root_fs";
857 mutex_unlock(&ubd_lock);
858
841 return(0); 859 return(0);
842} 860}
843 861
844__initcall(ubd0_init); 862__initcall(ubd0_init);
845 863
864/* Used in ubd_init, which is an initcall */
846static struct platform_driver ubd_driver = { 865static struct platform_driver ubd_driver = {
847 .driver = { 866 .driver = {
848 .name = DRIVER_NAME, 867 .name = DRIVER_NAME,
@@ -851,17 +870,12 @@ static struct platform_driver ubd_driver = {
851 870
852static int __init ubd_init(void) 871static int __init ubd_init(void)
853{ 872{
854 int i; 873 char *error;
874 int i, err;
855 875
856 if (register_blkdev(MAJOR_NR, "ubd")) 876 if (register_blkdev(MAJOR_NR, "ubd"))
857 return -1; 877 return -1;
858 878
859 ubd_queue = blk_init_queue(do_ubd_request, &ubd_io_lock);
860 if (!ubd_queue) {
861 unregister_blkdev(MAJOR_NR, "ubd");
862 return -1;
863 }
864
865 if (fake_major != MAJOR_NR) { 879 if (fake_major != MAJOR_NR) {
866 char name[sizeof("ubd_nnn\0")]; 880 char name[sizeof("ubd_nnn\0")];
867 881
@@ -870,8 +884,14 @@ static int __init ubd_init(void)
870 return -1; 884 return -1;
871 } 885 }
872 platform_driver_register(&ubd_driver); 886 platform_driver_register(&ubd_driver);
873 for (i = 0; i < MAX_DEV; i++) 887 mutex_lock(&ubd_lock);
874 ubd_add(i); 888 for (i = 0; i < MAX_DEV; i++){
889 err = ubd_add(i, &error);
890 if(err)
891 printk(KERN_ERR "Failed to initialize ubd device %d :"
892 "%s\n", i, error);
893 }
894 mutex_unlock(&ubd_lock);
875 return 0; 895 return 0;
876} 896}
877 897
@@ -1003,7 +1023,7 @@ static void cowify_req(struct io_thread_req *req, unsigned long *bitmap,
1003 req->bitmap_words, bitmap_len); 1023 req->bitmap_words, bitmap_len);
1004} 1024}
1005 1025
1006/* Called with ubd_io_lock held */ 1026/* Called with dev->lock held */
1007static int prepare_request(struct request *req, struct io_thread_req *io_req) 1027static int prepare_request(struct request *req, struct io_thread_req *io_req)
1008{ 1028{
1009 struct gendisk *disk = req->rq_disk; 1029 struct gendisk *disk = req->rq_disk;
@@ -1022,6 +1042,7 @@ static int prepare_request(struct request *req, struct io_thread_req *io_req)
1022 offset = ((__u64) req->sector) << 9; 1042 offset = ((__u64) req->sector) << 9;
1023 len = req->current_nr_sectors << 9; 1043 len = req->current_nr_sectors << 9;
1024 1044
1045 io_req->req = req;
1025 io_req->fds[0] = (ubd_dev->cow.file != NULL) ? ubd_dev->cow.fd : ubd_dev->fd; 1046 io_req->fds[0] = (ubd_dev->cow.file != NULL) ? ubd_dev->cow.fd : ubd_dev->fd;
1026 io_req->fds[1] = ubd_dev->fd; 1047 io_req->fds[1] = ubd_dev->fd;
1027 io_req->cow_offset = -1; 1048 io_req->cow_offset = -1;
@@ -1043,7 +1064,7 @@ static int prepare_request(struct request *req, struct io_thread_req *io_req)
1043 return(0); 1064 return(0);
1044} 1065}
1045 1066
1046/* Called with ubd_io_lock held */ 1067/* Called with dev->lock held */
1047static void do_ubd_request(request_queue_t *q) 1068static void do_ubd_request(request_queue_t *q)
1048{ 1069{
1049 struct io_thread_req io_req; 1070 struct io_thread_req io_req;
@@ -1102,7 +1123,7 @@ static int ubd_ioctl(struct inode * inode, struct file * file,
1102 sizeof(ubd_id))) 1123 sizeof(ubd_id)))
1103 return(-EFAULT); 1124 return(-EFAULT);
1104 return(0); 1125 return(0);
1105 1126
1106 case CDROMVOLREAD: 1127 case CDROMVOLREAD:
1107 if(copy_from_user(&volume, (char __user *) arg, sizeof(volume))) 1128 if(copy_from_user(&volume, (char __user *) arg, sizeof(volume)))
1108 return(-EFAULT); 1129 return(-EFAULT);
diff --git a/arch/um/include/chan_kern.h b/arch/um/include/chan_kern.h
index 9003a343e148..c4b41bb1035f 100644
--- a/arch/um/include/chan_kern.h
+++ b/arch/um/include/chan_kern.h
@@ -30,14 +30,13 @@ struct chan {
30extern void chan_interrupt(struct list_head *chans, struct delayed_work *task, 30extern void chan_interrupt(struct list_head *chans, struct delayed_work *task,
31 struct tty_struct *tty, int irq); 31 struct tty_struct *tty, int irq);
32extern int parse_chan_pair(char *str, struct line *line, int device, 32extern int parse_chan_pair(char *str, struct line *line, int device,
33 const struct chan_opts *opts); 33 const struct chan_opts *opts, char **error_out);
34extern int open_chan(struct list_head *chans); 34extern int open_chan(struct list_head *chans);
35extern int write_chan(struct list_head *chans, const char *buf, int len, 35extern int write_chan(struct list_head *chans, const char *buf, int len,
36 int write_irq); 36 int write_irq);
37extern int console_write_chan(struct list_head *chans, const char *buf, 37extern int console_write_chan(struct list_head *chans, const char *buf,
38 int len); 38 int len);
39extern int console_open_chan(struct line *line, struct console *co, 39extern int console_open_chan(struct line *line, struct console *co);
40 const struct chan_opts *opts);
41extern void deactivate_chan(struct list_head *chans, int irq); 40extern void deactivate_chan(struct list_head *chans, int irq);
42extern void reactivate_chan(struct list_head *chans, int irq); 41extern void reactivate_chan(struct list_head *chans, int irq);
43extern void chan_enable_winch(struct list_head *chans, struct tty_struct *tty); 42extern void chan_enable_winch(struct list_head *chans, struct tty_struct *tty);
diff --git a/arch/um/include/chan_user.h b/arch/um/include/chan_user.h
index a795547a1dbd..38f16d812e7c 100644
--- a/arch/um/include/chan_user.h
+++ b/arch/um/include/chan_user.h
@@ -1,4 +1,4 @@
1/* 1/*
2 * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com) 2 * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL 3 * Licensed under the GPL
4 */ 4 */
@@ -9,11 +9,11 @@
9#include "init.h" 9#include "init.h"
10 10
11struct chan_opts { 11struct chan_opts {
12 void (*announce)(char *dev_name, int dev); 12 void (*const announce)(char *dev_name, int dev);
13 char *xterm_title; 13 char *xterm_title;
14 int raw; 14 const int raw;
15 unsigned long tramp_stack; 15 const unsigned long tramp_stack;
16 int in_kernel; 16 const int in_kernel;
17}; 17};
18 18
19enum chan_init_pri { INIT_STATIC, INIT_ALL, INIT_ONE }; 19enum chan_init_pri { INIT_STATIC, INIT_ALL, INIT_ONE };
@@ -54,14 +54,3 @@ __uml_help(fn, prefix "[0-9]*=<channel description>\n" \
54); 54);
55 55
56#endif 56#endif
57
58/*
59 * Overrides for Emacs so that we follow Linus's tabbing style.
60 * Emacs will notice this stuff at the end of the file and automatically
61 * adjust the settings for this buffer only. This must remain at the end
62 * of the file.
63 * ---------------------------------------------------------------------------
64 * Local variables:
65 * c-file-style: "linux"
66 * End:
67 */
diff --git a/arch/um/include/kern_util.h b/arch/um/include/kern_util.h
index cec9fcc57bf5..173af029d12b 100644
--- a/arch/um/include/kern_util.h
+++ b/arch/um/include/kern_util.h
@@ -61,7 +61,6 @@ extern int set_signals(int enable);
61extern void force_sigbus(void); 61extern void force_sigbus(void);
62extern int pid_to_processor_id(int pid); 62extern int pid_to_processor_id(int pid);
63extern void deliver_signals(void *t); 63extern void deliver_signals(void *t);
64extern int next_syscall_index(int max);
65extern int next_trap_index(int max); 64extern int next_trap_index(int max);
66extern void default_idle(void); 65extern void default_idle(void);
67extern void finish_fork(void); 66extern void finish_fork(void);
@@ -88,7 +87,6 @@ extern void timer_irq(union uml_pt_regs *regs);
88extern void unprotect_stack(unsigned long stack); 87extern void unprotect_stack(unsigned long stack);
89extern void do_uml_exitcalls(void); 88extern void do_uml_exitcalls(void);
90extern int attach_debugger(int idle_pid, int pid, int stop); 89extern int attach_debugger(int idle_pid, int pid, int stop);
91extern void bad_segv(struct faultinfo fi, unsigned long ip);
92extern int config_gdb(char *str); 90extern int config_gdb(char *str);
93extern int remove_gdb(void); 91extern int remove_gdb(void);
94extern char *uml_strdup(char *string); 92extern char *uml_strdup(char *string);
@@ -104,8 +102,6 @@ extern int clear_user_proc(void *buf, int size);
104extern int copy_to_user_proc(void *to, void *from, int size); 102extern int copy_to_user_proc(void *to, void *from, int size);
105extern int copy_from_user_proc(void *to, void *from, int size); 103extern int copy_from_user_proc(void *to, void *from, int size);
106extern int strlen_user_proc(char *str); 104extern int strlen_user_proc(char *str);
107extern void bus_handler(int sig, union uml_pt_regs *regs);
108extern void winch(int sig, union uml_pt_regs *regs);
109extern long execute_syscall(void *r); 105extern long execute_syscall(void *r);
110extern int smp_sigio_handler(void); 106extern int smp_sigio_handler(void);
111extern void *get_current(void); 107extern void *get_current(void);
@@ -120,7 +116,6 @@ extern void time_init_kern(void);
120 116
121/* Are we disallowed to sleep? Used to choose between GFP_KERNEL and GFP_ATOMIC. */ 117/* Are we disallowed to sleep? Used to choose between GFP_KERNEL and GFP_ATOMIC. */
122extern int __cant_sleep(void); 118extern int __cant_sleep(void);
123extern void segv_handler(int sig, union uml_pt_regs *regs);
124extern void sigio_handler(int sig, union uml_pt_regs *regs); 119extern void sigio_handler(int sig, union uml_pt_regs *regs);
125 120
126#endif 121#endif
diff --git a/arch/um/include/line.h b/arch/um/include/line.h
index 5f232ae89fbb..1223f2c844b4 100644
--- a/arch/um/include/line.h
+++ b/arch/um/include/line.h
@@ -11,36 +11,37 @@
11#include "linux/tty.h" 11#include "linux/tty.h"
12#include "linux/interrupt.h" 12#include "linux/interrupt.h"
13#include "linux/spinlock.h" 13#include "linux/spinlock.h"
14#include "linux/mutex.h"
14#include "chan_user.h" 15#include "chan_user.h"
15#include "mconsole_kern.h" 16#include "mconsole_kern.h"
16 17
18/* There's only one modifiable field in this - .mc.list */
17struct line_driver { 19struct line_driver {
18 char *name; 20 const char *name;
19 char *device_name; 21 const char *device_name;
20 short major; 22 const short major;
21 short minor_start; 23 const short minor_start;
22 short type; 24 const short type;
23 short subtype; 25 const short subtype;
24 int read_irq; 26 const int read_irq;
25 char *read_irq_name; 27 const char *read_irq_name;
26 int write_irq; 28 const int write_irq;
27 char *write_irq_name; 29 const char *write_irq_name;
28 char *symlink_from;
29 char *symlink_to;
30 struct mc_device mc; 30 struct mc_device mc;
31}; 31};
32 32
33struct line { 33struct line {
34 struct tty_struct *tty; 34 struct tty_struct *tty;
35 spinlock_t count_lock;
36 int valid;
37
35 char *init_str; 38 char *init_str;
36 int init_pri; 39 int init_pri;
37 struct list_head chan_list; 40 struct list_head chan_list;
38 int valid; 41
39 int count;
40 int throttled;
41 /*This lock is actually, mostly, local to*/ 42 /*This lock is actually, mostly, local to*/
42 spinlock_t lock; 43 spinlock_t lock;
43 44 int throttled;
44 /* Yes, this is a real circular buffer. 45 /* Yes, this is a real circular buffer.
45 * XXX: And this should become a struct kfifo! 46 * XXX: And this should become a struct kfifo!
46 * 47 *
@@ -57,22 +58,17 @@ struct line {
57}; 58};
58 59
59#define LINE_INIT(str, d) \ 60#define LINE_INIT(str, d) \
60 { .init_str = str, \ 61 { .count_lock = SPIN_LOCK_UNLOCKED, \
62 .init_str = str, \
61 .init_pri = INIT_STATIC, \ 63 .init_pri = INIT_STATIC, \
62 .valid = 1, \ 64 .valid = 1, \
63 .lock = SPIN_LOCK_UNLOCKED, \ 65 .lock = SPIN_LOCK_UNLOCKED, \
64 .driver = d } 66 .driver = d }
65 67
66struct lines {
67 int num;
68};
69
70#define LINES_INIT(n) { .num = n }
71
72extern void line_close(struct tty_struct *tty, struct file * filp); 68extern void line_close(struct tty_struct *tty, struct file * filp);
73extern int line_open(struct line *lines, struct tty_struct *tty); 69extern int line_open(struct line *lines, struct tty_struct *tty);
74extern int line_setup(struct line *lines, unsigned int sizeof_lines, 70extern int line_setup(struct line *lines, unsigned int sizeof_lines,
75 char *init); 71 char *init, char **error_out);
76extern int line_write(struct tty_struct *tty, const unsigned char *buf, 72extern int line_write(struct tty_struct *tty, const unsigned char *buf,
77 int len); 73 int len);
78extern void line_put_char(struct tty_struct *tty, unsigned char ch); 74extern void line_put_char(struct tty_struct *tty, unsigned char ch);
@@ -90,17 +86,18 @@ extern char *add_xterm_umid(char *base);
90extern int line_setup_irq(int fd, int input, int output, struct line *line, 86extern int line_setup_irq(int fd, int input, int output, struct line *line,
91 void *data); 87 void *data);
92extern void line_close_chan(struct line *line); 88extern void line_close_chan(struct line *line);
93extern struct tty_driver * line_register_devfs(struct lines *set, 89extern struct tty_driver *register_lines(struct line_driver *line_driver,
94 struct line_driver *line_driver, 90 const struct tty_operations *driver,
95 const struct tty_operations *driver, 91 struct line *lines, int nlines);
96 struct line *lines, int nlines);
97extern void lines_init(struct line *lines, int nlines, struct chan_opts *opts); 92extern void lines_init(struct line *lines, int nlines, struct chan_opts *opts);
98extern void close_lines(struct line *lines, int nlines); 93extern void close_lines(struct line *lines, int nlines);
99 94
100extern int line_config(struct line *lines, unsigned int sizeof_lines, 95extern int line_config(struct line *lines, unsigned int sizeof_lines,
101 char *str, const struct chan_opts *opts); 96 char *str, const struct chan_opts *opts,
97 char **error_out);
102extern int line_id(char **str, int *start_out, int *end_out); 98extern int line_id(char **str, int *start_out, int *end_out);
103extern int line_remove(struct line *lines, unsigned int sizeof_lines, int n); 99extern int line_remove(struct line *lines, unsigned int sizeof_lines, int n,
100 char **error_out);
104extern int line_get_config(char *dev, struct line *lines, 101extern int line_get_config(char *dev, struct line *lines,
105 unsigned int sizeof_lines, char *str, 102 unsigned int sizeof_lines, char *str,
106 int size, char **error_out); 103 int size, char **error_out);
diff --git a/arch/um/include/mconsole_kern.h b/arch/um/include/mconsole_kern.h
index 1ea6d928e1cd..d2fe07e78958 100644
--- a/arch/um/include/mconsole_kern.h
+++ b/arch/um/include/mconsole_kern.h
@@ -18,10 +18,10 @@ struct mconsole_entry {
18struct mc_device { 18struct mc_device {
19 struct list_head list; 19 struct list_head list;
20 char *name; 20 char *name;
21 int (*config)(char *); 21 int (*config)(char *, char **);
22 int (*get_config)(char *, char *, int, char **); 22 int (*get_config)(char *, char *, int, char **);
23 int (*id)(char **, int *, int *); 23 int (*id)(char **, int *, int *);
24 int (*remove)(int); 24 int (*remove)(int, char **);
25}; 25};
26 26
27#define CONFIG_CHUNK(str, size, current, chunk, end) \ 27#define CONFIG_CHUNK(str, size, current, chunk, end) \
@@ -50,14 +50,3 @@ static inline void mconsole_register_dev(struct mc_device *new)
50#endif 50#endif
51 51
52#endif 52#endif
53
54/*
55 * Overrides for Emacs so that we follow Linus's tabbing style.
56 * Emacs will notice this stuff at the end of the file and automatically
57 * adjust the settings for this buffer only. This must remain at the end
58 * of the file.
59 * ---------------------------------------------------------------------------
60 * Local variables:
61 * c-file-style: "linux"
62 * End:
63 */
diff --git a/arch/um/include/net_kern.h b/arch/um/include/net_kern.h
index 218f8b47fdcd..125ab42df18a 100644
--- a/arch/um/include/net_kern.h
+++ b/arch/um/include/net_kern.h
@@ -1,4 +1,4 @@
1/* 1/*
2 * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) 2 * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL 3 * Licensed under the GPL
4 */ 4 */
@@ -36,7 +36,7 @@ struct uml_net_private {
36 void (*remove)(void *); 36 void (*remove)(void *);
37 int (*read)(int, struct sk_buff **skb, struct uml_net_private *); 37 int (*read)(int, struct sk_buff **skb, struct uml_net_private *);
38 int (*write)(int, struct sk_buff **skb, struct uml_net_private *); 38 int (*write)(int, struct sk_buff **skb, struct uml_net_private *);
39 39
40 void (*add_address)(unsigned char *, unsigned char *, void *); 40 void (*add_address)(unsigned char *, unsigned char *, void *);
41 void (*delete_address)(unsigned char *, unsigned char *, void *); 41 void (*delete_address)(unsigned char *, unsigned char *, void *);
42 int (*set_mtu)(int mtu, void *); 42 int (*set_mtu)(int mtu, void *);
@@ -52,18 +52,18 @@ struct net_kern_info {
52 52
53struct transport { 53struct transport {
54 struct list_head list; 54 struct list_head list;
55 char *name; 55 const char *name;
56 int (*setup)(char *, char **, void *); 56 int (* const setup)(char *, char **, void *);
57 const struct net_user_info *user; 57 const struct net_user_info *user;
58 const struct net_kern_info *kern; 58 const struct net_kern_info *kern;
59 int private_size; 59 const int private_size;
60 int setup_size; 60 const int setup_size;
61}; 61};
62 62
63extern struct net_device *ether_init(int); 63extern struct net_device *ether_init(int);
64extern unsigned short ether_protocol(struct sk_buff *); 64extern unsigned short ether_protocol(struct sk_buff *);
65extern struct sk_buff *ether_adjust_skb(struct sk_buff *skb, int extra); 65extern struct sk_buff *ether_adjust_skb(struct sk_buff *skb, int extra);
66extern int tap_setup_common(char *str, char *type, char **dev_name, 66extern int tap_setup_common(char *str, char *type, char **dev_name,
67 char **mac_out, char **gate_addr); 67 char **mac_out, char **gate_addr);
68extern void register_transport(struct transport *new); 68extern void register_transport(struct transport *new);
69extern unsigned short eth_protocol(struct sk_buff *skb); 69extern unsigned short eth_protocol(struct sk_buff *skb);
diff --git a/arch/um/include/os.h b/arch/um/include/os.h
index 13a86bd383d3..8629bd191492 100644
--- a/arch/um/include/os.h
+++ b/arch/um/include/os.h
@@ -137,7 +137,6 @@ extern int os_new_tty_pgrp(int fd, int pid);
137extern int os_get_ifname(int fd, char *namebuf); 137extern int os_get_ifname(int fd, char *namebuf);
138extern int os_set_slip(int fd); 138extern int os_set_slip(int fd);
139extern int os_set_owner(int fd, int pid); 139extern int os_set_owner(int fd, int pid);
140extern int os_sigio_async(int master, int slave);
141extern int os_mode_fd(int fd, int mode); 140extern int os_mode_fd(int fd, int mode);
142 141
143extern int os_seek_file(int fd, __u64 offset); 142extern int os_seek_file(int fd, __u64 offset);
@@ -341,4 +340,6 @@ extern void maybe_sigio_broken(int fd, int read);
341extern void sig_handler_common_skas(int sig, void *sc_ptr); 340extern void sig_handler_common_skas(int sig, void *sc_ptr);
342extern void user_signal(int sig, union uml_pt_regs *regs, int pid); 341extern void user_signal(int sig, union uml_pt_regs *regs, int pid);
343 342
343extern int os_arch_prctl(int pid, int code, unsigned long *addr);
344
344#endif 345#endif
diff --git a/arch/um/include/sigio.h b/arch/um/include/sigio.h
index fe99ea163c2e..434f1a9ae4b3 100644
--- a/arch/um/include/sigio.h
+++ b/arch/um/include/sigio.h
@@ -12,14 +12,3 @@ extern void sigio_lock(void);
12extern void sigio_unlock(void); 12extern void sigio_unlock(void);
13 13
14#endif 14#endif
15
16/*
17 * Overrides for Emacs so that we follow Linus's tabbing style.
18 * Emacs will notice this stuff at the end of the file and automatically
19 * adjust the settings for this buffer only. This must remain at the end
20 * of the file.
21 * ---------------------------------------------------------------------------
22 * Local variables:
23 * c-file-style: "linux"
24 * End:
25 */
diff --git a/arch/um/include/tempfile.h b/arch/um/include/tempfile.h
index e36d9e0f5105..d441eac936b9 100644
--- a/arch/um/include/tempfile.h
+++ b/arch/um/include/tempfile.h
@@ -9,13 +9,3 @@
9extern int make_tempfile(const char *template, char **tempname, int do_unlink); 9extern int make_tempfile(const char *template, char **tempname, int do_unlink);
10 10
11#endif 11#endif
12/*
13 * Overrides for Emacs so that we follow Linus's tabbing style.
14 * Emacs will notice this stuff at the end of the file and automatically
15 * adjust the settings for this buffer only. This must remain at the end
16 * of the file.
17 * ---------------------------------------------------------------------------
18 * Local variables:
19 * c-file-style: "linux"
20 * End:
21 */
diff --git a/arch/um/include/umid.h b/arch/um/include/umid.h
deleted file mode 100644
index 11373c851f15..000000000000
--- a/arch/um/include/umid.h
+++ /dev/null
@@ -1,22 +0,0 @@
1/*
2 * Copyright (C) 2001 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL
4 */
5
6#ifndef __UMID_H__
7#define __UMID_H__
8
9extern int umid_file_name(char *name, char *buf, int len);
10
11#endif
12
13/*
14 * Overrides for Emacs so that we follow Linus's tabbing style.
15 * Emacs will notice this stuff at the end of the file and automatically
16 * adjust the settings for this buffer only. This must remain at the end
17 * of the file.
18 * ---------------------------------------------------------------------------
19 * Local variables:
20 * c-file-style: "linux"
21 * End:
22 */
diff --git a/arch/um/include/user_util.h b/arch/um/include/user_util.h
index 06625fefef33..023575f67343 100644
--- a/arch/um/include/user_util.h
+++ b/arch/um/include/user_util.h
@@ -38,8 +38,6 @@ extern unsigned long long highmem;
38 38
39extern char host_info[]; 39extern char host_info[];
40 40
41extern char saved_command_line[];
42
43extern unsigned long _stext, _etext, _sdata, _edata, __bss_start, _end; 41extern unsigned long _stext, _etext, _sdata, _edata, __bss_start, _end;
44extern unsigned long _unprotected_end; 42extern unsigned long _unprotected_end;
45extern unsigned long brk_start; 43extern unsigned long brk_start;
diff --git a/arch/um/kernel/Makefile b/arch/um/kernel/Makefile
index 6fa63a2a89e3..c5cf4a0827b0 100644
--- a/arch/um/kernel/Makefile
+++ b/arch/um/kernel/Makefile
@@ -7,7 +7,7 @@ extra-y := vmlinux.lds
7clean-files := 7clean-files :=
8 8
9obj-y = config.o exec.o exitcode.o init_task.o irq.o ksyms.o mem.o \ 9obj-y = config.o exec.o exitcode.o init_task.o irq.o ksyms.o mem.o \
10 physmem.o process.o ptrace.o reboot.o resource.o sigio.o \ 10 physmem.o process.o ptrace.o reboot.o sigio.o \
11 signal.o smp.o syscall.o sysrq.o time.o tlb.o trap.o uaccess.o \ 11 signal.o smp.o syscall.o sysrq.o time.o tlb.o trap.o uaccess.o \
12 um_arch.o umid.o 12 um_arch.o umid.o
13 13
diff --git a/arch/um/kernel/exec.c b/arch/um/kernel/exec.c
index 8d56ec6cca79..121166400e25 100644
--- a/arch/um/kernel/exec.c
+++ b/arch/um/kernel/exec.c
@@ -39,9 +39,9 @@ static long execve1(char *file, char __user * __user *argv,
39 char __user *__user *env) 39 char __user *__user *env)
40{ 40{
41 long error; 41 long error;
42#ifdef CONFIG_TTY_LOG
42 struct tty_struct *tty; 43 struct tty_struct *tty;
43 44
44#ifdef CONFIG_TTY_LOG
45 mutex_lock(&tty_mutex); 45 mutex_lock(&tty_mutex);
46 tty = get_current_tty(); 46 tty = get_current_tty();
47 if (tty) 47 if (tty)
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c
index 5c1e611f628d..50a288bb875a 100644
--- a/arch/um/kernel/irq.c
+++ b/arch/um/kernel/irq.c
@@ -79,7 +79,7 @@ skip:
79 return 0; 79 return 0;
80} 80}
81 81
82struct irq_fd *active_fds = NULL; 82static struct irq_fd *active_fds = NULL;
83static struct irq_fd **last_irq_ptr = &active_fds; 83static struct irq_fd **last_irq_ptr = &active_fds;
84 84
85extern void free_irqs(void); 85extern void free_irqs(void);
@@ -124,8 +124,8 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
124 if (err < 0) 124 if (err < 0)
125 goto out; 125 goto out;
126 126
127 new_fd = um_kmalloc(sizeof(*new_fd));
128 err = -ENOMEM; 127 err = -ENOMEM;
128 new_fd = kmalloc(sizeof(struct irq_fd), GFP_KERNEL);
129 if (new_fd == NULL) 129 if (new_fd == NULL)
130 goto out; 130 goto out;
131 131
@@ -176,9 +176,8 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
176 */ 176 */
177 spin_unlock_irqrestore(&irq_lock, flags); 177 spin_unlock_irqrestore(&irq_lock, flags);
178 kfree(tmp_pfd); 178 kfree(tmp_pfd);
179 tmp_pfd = NULL;
180 179
181 tmp_pfd = um_kmalloc(n); 180 tmp_pfd = kmalloc(n, GFP_KERNEL);
182 if (tmp_pfd == NULL) 181 if (tmp_pfd == NULL)
183 goto out_kfree; 182 goto out_kfree;
184 183
diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c
index c95855ba6ab5..e85d65deea0d 100644
--- a/arch/um/kernel/mem.c
+++ b/arch/um/kernel/mem.c
@@ -24,8 +24,9 @@
24#include "init.h" 24#include "init.h"
25#include "kern_constants.h" 25#include "kern_constants.h"
26 26
27/* Changed during early boot */ 27/* allocated in paging_init, zeroed in mem_init, and unchanged thereafter */
28unsigned long *empty_zero_page = NULL; 28unsigned long *empty_zero_page = NULL;
29/* allocated in paging_init and unchanged thereafter */
29unsigned long *empty_bad_page = NULL; 30unsigned long *empty_bad_page = NULL;
30pgd_t swapper_pg_dir[PTRS_PER_PGD]; 31pgd_t swapper_pg_dir[PTRS_PER_PGD];
31unsigned long long highmem; 32unsigned long long highmem;
@@ -65,8 +66,8 @@ void mem_init(void)
65{ 66{
66 max_low_pfn = (high_physmem - uml_physmem) >> PAGE_SHIFT; 67 max_low_pfn = (high_physmem - uml_physmem) >> PAGE_SHIFT;
67 68
68 /* clear the zero-page */ 69 /* clear the zero-page */
69 memset((void *) empty_zero_page, 0, PAGE_SIZE); 70 memset((void *) empty_zero_page, 0, PAGE_SIZE);
70 71
71 /* Map in the area just after the brk now that kmalloc is about 72 /* Map in the area just after the brk now that kmalloc is about
72 * to be turned on. 73 * to be turned on.
@@ -253,8 +254,10 @@ struct page *arch_validate(struct page *page, gfp_t mask, int order)
253 int i; 254 int i;
254 255
255 again: 256 again:
256 if(page == NULL) return(page); 257 if(page == NULL)
257 if(PageHighMem(page)) return(page); 258 return page;
259 if(PageHighMem(page))
260 return page;
258 261
259 addr = (unsigned long) page_address(page); 262 addr = (unsigned long) page_address(page);
260 for(i = 0; i < (1 << order); i++){ 263 for(i = 0; i < (1 << order); i++){
@@ -263,13 +266,15 @@ struct page *arch_validate(struct page *page, gfp_t mask, int order)
263 sizeof(zero), 266 sizeof(zero),
264 &current->thread.fault_addr, 267 &current->thread.fault_addr,
265 &current->thread.fault_catcher)){ 268 &current->thread.fault_catcher)){
266 if(!(mask & __GFP_WAIT)) return(NULL); 269 if(!(mask & __GFP_WAIT))
270 return NULL;
267 else break; 271 else break;
268 } 272 }
269 addr += PAGE_SIZE; 273 addr += PAGE_SIZE;
270 } 274 }
271 275
272 if(i == (1 << order)) return(page); 276 if(i == (1 << order))
277 return page;
273 page = alloc_pages(mask, order); 278 page = alloc_pages(mask, order);
274 goto again; 279 goto again;
275} 280}
@@ -283,7 +288,6 @@ void free_initmem(void)
283} 288}
284 289
285#ifdef CONFIG_BLK_DEV_INITRD 290#ifdef CONFIG_BLK_DEV_INITRD
286
287void free_initrd_mem(unsigned long start, unsigned long end) 291void free_initrd_mem(unsigned long start, unsigned long end)
288{ 292{
289 if (start < end) 293 if (start < end)
@@ -296,37 +300,36 @@ void free_initrd_mem(unsigned long start, unsigned long end)
296 totalram_pages++; 300 totalram_pages++;
297 } 301 }
298} 302}
299
300#endif 303#endif
301 304
302void show_mem(void) 305void show_mem(void)
303{ 306{
304 int pfn, total = 0, reserved = 0; 307 int pfn, total = 0, reserved = 0;
305 int shared = 0, cached = 0; 308 int shared = 0, cached = 0;
306 int highmem = 0; 309 int highmem = 0;
307 struct page *page; 310 struct page *page;
308 311
309 printk("Mem-info:\n"); 312 printk("Mem-info:\n");
310 show_free_areas(); 313 show_free_areas();
311 printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); 314 printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
312 pfn = max_mapnr; 315 pfn = max_mapnr;
313 while(pfn-- > 0) { 316 while(pfn-- > 0) {
314 page = pfn_to_page(pfn); 317 page = pfn_to_page(pfn);
315 total++; 318 total++;
316 if(PageHighMem(page)) 319 if(PageHighMem(page))
317 highmem++; 320 highmem++;
318 if(PageReserved(page)) 321 if(PageReserved(page))
319 reserved++; 322 reserved++;
320 else if(PageSwapCache(page)) 323 else if(PageSwapCache(page))
321 cached++; 324 cached++;
322 else if(page_count(page)) 325 else if(page_count(page))
323 shared += page_count(page) - 1; 326 shared += page_count(page) - 1;
324 } 327 }
325 printk("%d pages of RAM\n", total); 328 printk("%d pages of RAM\n", total);
326 printk("%d pages of HIGHMEM\n", highmem); 329 printk("%d pages of HIGHMEM\n", highmem);
327 printk("%d reserved pages\n", reserved); 330 printk("%d reserved pages\n", reserved);
328 printk("%d pages shared\n", shared); 331 printk("%d pages shared\n", shared);
329 printk("%d pages swap cached\n", cached); 332 printk("%d pages swap cached\n", cached);
330} 333}
331 334
332/* 335/*
@@ -362,28 +365,7 @@ pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
362struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address) 365struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address)
363{ 366{
364 struct page *pte; 367 struct page *pte;
365 368
366 pte = alloc_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); 369 pte = alloc_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
367 return pte; 370 return pte;
368} 371}
369
370struct iomem_region *iomem_regions = NULL;
371int iomem_size = 0;
372
373extern int parse_iomem(char *str, int *add) __init;
374
375__uml_setup("iomem=", parse_iomem,
376"iomem=<name>,<file>\n"
377" Configure <file> as an IO memory region named <name>.\n\n"
378);
379
380/*
381 * Overrides for Emacs so that we follow Linus's tabbing style.
382 * Emacs will notice this stuff at the end of the file and automatically
383 * adjust the settings for this buffer only. This must remain at the end
384 * of the file.
385 * ---------------------------------------------------------------------------
386 * Local variables:
387 * c-file-style: "linux"
388 * End:
389 */
diff --git a/arch/um/kernel/physmem.c b/arch/um/kernel/physmem.c
index abafa64b8727..638f3b5f6094 100644
--- a/arch/um/kernel/physmem.c
+++ b/arch/um/kernel/physmem.c
@@ -40,7 +40,7 @@ static struct rb_node **find_rb(void *virt)
40 while(*n != NULL){ 40 while(*n != NULL){
41 d = rb_entry(*n, struct phys_desc, rb); 41 d = rb_entry(*n, struct phys_desc, rb);
42 if(d->virt == virt) 42 if(d->virt == virt)
43 return(n); 43 return n;
44 44
45 if(d->virt > virt) 45 if(d->virt > virt)
46 n = &(*n)->rb_left; 46 n = &(*n)->rb_left;
@@ -48,7 +48,7 @@ static struct rb_node **find_rb(void *virt)
48 n = &(*n)->rb_right; 48 n = &(*n)->rb_right;
49 } 49 }
50 50
51 return(n); 51 return n;
52} 52}
53 53
54static struct phys_desc *find_phys_mapping(void *virt) 54static struct phys_desc *find_phys_mapping(void *virt)
@@ -56,9 +56,9 @@ static struct phys_desc *find_phys_mapping(void *virt)
56 struct rb_node **n = find_rb(virt); 56 struct rb_node **n = find_rb(virt);
57 57
58 if(*n == NULL) 58 if(*n == NULL)
59 return(NULL); 59 return NULL;
60 60
61 return(rb_entry(*n, struct phys_desc, rb)); 61 return rb_entry(*n, struct phys_desc, rb);
62} 62}
63 63
64static void insert_phys_mapping(struct phys_desc *desc) 64static void insert_phys_mapping(struct phys_desc *desc)
@@ -89,10 +89,10 @@ static struct desc_mapping *find_mapping(int fd)
89 list_for_each(ele, &descriptor_mappings){ 89 list_for_each(ele, &descriptor_mappings){
90 desc = list_entry(ele, struct desc_mapping, list); 90 desc = list_entry(ele, struct desc_mapping, list);
91 if(desc->fd == fd) 91 if(desc->fd == fd)
92 return(desc); 92 return desc;
93 } 93 }
94 94
95 return(NULL); 95 return NULL;
96} 96}
97 97
98static struct desc_mapping *descriptor_mapping(int fd) 98static struct desc_mapping *descriptor_mapping(int fd)
@@ -101,11 +101,11 @@ static struct desc_mapping *descriptor_mapping(int fd)
101 101
102 desc = find_mapping(fd); 102 desc = find_mapping(fd);
103 if(desc != NULL) 103 if(desc != NULL)
104 return(desc); 104 return desc;
105 105
106 desc = kmalloc(sizeof(*desc), GFP_ATOMIC); 106 desc = kmalloc(sizeof(*desc), GFP_ATOMIC);
107 if(desc == NULL) 107 if(desc == NULL)
108 return(NULL); 108 return NULL;
109 109
110 *desc = ((struct desc_mapping) 110 *desc = ((struct desc_mapping)
111 { .fd = fd, 111 { .fd = fd,
@@ -113,7 +113,7 @@ static struct desc_mapping *descriptor_mapping(int fd)
113 .pages = LIST_HEAD_INIT(desc->pages) }); 113 .pages = LIST_HEAD_INIT(desc->pages) });
114 list_add(&desc->list, &descriptor_mappings); 114 list_add(&desc->list, &descriptor_mappings);
115 115
116 return(desc); 116 return desc;
117} 117}
118 118
119int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w) 119int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w)
@@ -125,11 +125,11 @@ int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w)
125 125
126 fd_maps = descriptor_mapping(fd); 126 fd_maps = descriptor_mapping(fd);
127 if(fd_maps == NULL) 127 if(fd_maps == NULL)
128 return(-ENOMEM); 128 return -ENOMEM;
129 129
130 phys = __pa(virt); 130 phys = __pa(virt);
131 desc = find_phys_mapping(virt); 131 desc = find_phys_mapping(virt);
132 if(desc != NULL) 132 if(desc != NULL)
133 panic("Address 0x%p is already substituted\n", virt); 133 panic("Address 0x%p is already substituted\n", virt);
134 134
135 err = -ENOMEM; 135 err = -ENOMEM;
@@ -155,7 +155,7 @@ int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w)
155 rb_erase(&desc->rb, &phys_mappings); 155 rb_erase(&desc->rb, &phys_mappings);
156 kfree(desc); 156 kfree(desc);
157 out: 157 out:
158 return(err); 158 return err;
159} 159}
160 160
161static int physmem_fd = -1; 161static int physmem_fd = -1;
@@ -182,10 +182,10 @@ int physmem_remove_mapping(void *virt)
182 virt = (void *) ((unsigned long) virt & PAGE_MASK); 182 virt = (void *) ((unsigned long) virt & PAGE_MASK);
183 desc = find_phys_mapping(virt); 183 desc = find_phys_mapping(virt);
184 if(desc == NULL) 184 if(desc == NULL)
185 return(0); 185 return 0;
186 186
187 remove_mapping(desc); 187 remove_mapping(desc);
188 return(1); 188 return 1;
189} 189}
190 190
191void physmem_forget_descriptor(int fd) 191void physmem_forget_descriptor(int fd)
@@ -239,9 +239,9 @@ void arch_free_page(struct page *page, int order)
239 239
240int is_remapped(void *virt) 240int is_remapped(void *virt)
241{ 241{
242 struct phys_desc *desc = find_phys_mapping(virt); 242 struct phys_desc *desc = find_phys_mapping(virt);
243 243
244 return(desc != NULL); 244 return desc != NULL;
245} 245}
246 246
247/* Changed during early boot */ 247/* Changed during early boot */
@@ -276,7 +276,7 @@ int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem)
276 else map = alloc_bootmem_low_pages(total_len); 276 else map = alloc_bootmem_low_pages(total_len);
277 277
278 if(map == NULL) 278 if(map == NULL)
279 return(-ENOMEM); 279 return -ENOMEM;
280 280
281 for(i = 0; i < total_pages; i++){ 281 for(i = 0; i < total_pages; i++){
282 p = &map[i]; 282 p = &map[i];
@@ -286,7 +286,7 @@ int init_maps(unsigned long physmem, unsigned long iomem, unsigned long highmem)
286 } 286 }
287 287
288 max_mapnr = total_pages; 288 max_mapnr = total_pages;
289 return(0); 289 return 0;
290} 290}
291 291
292/* Changed during early boot */ 292/* Changed during early boot */
@@ -296,7 +296,7 @@ unsigned long get_kmem_end(void)
296{ 296{
297 if(kmem_top == 0) 297 if(kmem_top == 0)
298 kmem_top = CHOOSE_MODE(kmem_end_tt, kmem_end_skas); 298 kmem_top = CHOOSE_MODE(kmem_end_tt, kmem_end_skas);
299 return(kmem_top); 299 return kmem_top;
300} 300}
301 301
302void map_memory(unsigned long virt, unsigned long phys, unsigned long len, 302void map_memory(unsigned long virt, unsigned long phys, unsigned long len,
@@ -379,7 +379,7 @@ int phys_mapping(unsigned long phys, __u64 *offset_out)
379 *offset_out = phys - iomem_size; 379 *offset_out = phys - iomem_size;
380 } 380 }
381 381
382 return(fd); 382 return fd;
383} 383}
384 384
385static int __init uml_mem_setup(char *line, int *add) 385static int __init uml_mem_setup(char *line, int *add)
@@ -398,6 +398,23 @@ __uml_setup("mem=", uml_mem_setup,
398" Example: mem=64M\n\n" 398" Example: mem=64M\n\n"
399); 399);
400 400
401extern int __init parse_iomem(char *str, int *add);
402
403__uml_setup("iomem=", parse_iomem,
404"iomem=<name>,<file>\n"
405" Configure <file> as an IO memory region named <name>.\n\n"
406);
407
408/*
409 * This list is constructed in parse_iomem and addresses filled in in
410 * setup_iomem, both of which run during early boot. Afterwards, it's
411 * unchanged.
412 */
413struct iomem_region *iomem_regions = NULL;
414
415/* Initialized in parse_iomem */
416int iomem_size = 0;
417
401unsigned long find_iomem(char *driver, unsigned long *len_out) 418unsigned long find_iomem(char *driver, unsigned long *len_out)
402{ 419{
403 struct iomem_region *region = iomem_regions; 420 struct iomem_region *region = iomem_regions;
@@ -405,13 +422,13 @@ unsigned long find_iomem(char *driver, unsigned long *len_out)
405 while(region != NULL){ 422 while(region != NULL){
406 if(!strcmp(region->driver, driver)){ 423 if(!strcmp(region->driver, driver)){
407 *len_out = region->size; 424 *len_out = region->size;
408 return(region->virt); 425 return region->virt;
409 } 426 }
410 427
411 region = region->next; 428 region = region->next;
412 } 429 }
413 430
414 return(0); 431 return 0;
415} 432}
416 433
417int setup_iomem(void) 434int setup_iomem(void)
@@ -435,18 +452,7 @@ int setup_iomem(void)
435 region = region->next; 452 region = region->next;
436 } 453 }
437 454
438 return(0); 455 return 0;
439} 456}
440 457
441__initcall(setup_iomem); 458__initcall(setup_iomem);
442
443/*
444 * Overrides for Emacs so that we follow Linus's tabbing style.
445 * Emacs will notice this stuff at the end of the file and automatically
446 * adjust the settings for this buffer only. This must remain at the end
447 * of the file.
448 * ---------------------------------------------------------------------------
449 * Local variables:
450 * c-file-style: "linux"
451 * End:
452 */
diff --git a/arch/um/kernel/ptrace.c b/arch/um/kernel/ptrace.c
index 9a77fb3c269d..627742d89434 100644
--- a/arch/um/kernel/ptrace.c
+++ b/arch/um/kernel/ptrace.c
@@ -18,6 +18,7 @@
18#include "kern_util.h" 18#include "kern_util.h"
19#include "skas_ptrace.h" 19#include "skas_ptrace.h"
20#include "sysdep/ptrace.h" 20#include "sysdep/ptrace.h"
21#include "os.h"
21 22
22static inline void set_singlestepping(struct task_struct *child, int on) 23static inline void set_singlestepping(struct task_struct *child, int on)
23{ 24{
@@ -241,6 +242,12 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
241 break; 242 break;
242 } 243 }
243#endif 244#endif
245#ifdef PTRACE_ARCH_PRCTL
246 case PTRACE_ARCH_PRCTL:
247 /* XXX Calls ptrace on the host - needs some SMP thinking */
248 ret = arch_prctl_skas(child, data, (void *) addr);
249 break;
250#endif
244 default: 251 default:
245 ret = ptrace_request(child, request, addr, data); 252 ret = ptrace_request(child, request, addr, data);
246 break; 253 break;
diff --git a/arch/um/kernel/resource.c b/arch/um/kernel/resource.c
deleted file mode 100644
index 32188e12e8af..000000000000
--- a/arch/um/kernel/resource.c
+++ /dev/null
@@ -1,23 +0,0 @@
1/*
2 * Copyright (C) 2000 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL
4 */
5
6#include "linux/pci.h"
7
8unsigned long resource_fixup(struct pci_dev * dev, struct resource * res,
9 unsigned long start, unsigned long size)
10{
11 return start;
12}
13
14/*
15 * Overrides for Emacs so that we follow Linus's tabbing style.
16 * Emacs will notice this stuff at the end of the file and automatically
17 * adjust the settings for this buffer only. This must remain at the end
18 * of the file.
19 * ---------------------------------------------------------------------------
20 * Local variables:
21 * c-file-style: "linux"
22 * End:
23 */
diff --git a/arch/um/kernel/sigio.c b/arch/um/kernel/sigio.c
index 2b0ab438301c..89f9866a1354 100644
--- a/arch/um/kernel/sigio.c
+++ b/arch/um/kernel/sigio.c
@@ -23,7 +23,7 @@ static irqreturn_t sigio_interrupt(int irq, void *data)
23 23
24 os_read_file(sigio_irq_fd, &c, sizeof(c)); 24 os_read_file(sigio_irq_fd, &c, sizeof(c));
25 reactivate_fd(sigio_irq_fd, SIGIO_WRITE_IRQ); 25 reactivate_fd(sigio_irq_fd, SIGIO_WRITE_IRQ);
26 return(IRQ_HANDLED); 26 return IRQ_HANDLED;
27} 27}
28 28
29int write_sigio_irq(int fd) 29int write_sigio_irq(int fd)
@@ -36,12 +36,13 @@ int write_sigio_irq(int fd)
36 if(err){ 36 if(err){
37 printk("write_sigio_irq : um_request_irq failed, err = %d\n", 37 printk("write_sigio_irq : um_request_irq failed, err = %d\n",
38 err); 38 err);
39 return(-1); 39 return -1;
40 } 40 }
41 sigio_irq_fd = fd; 41 sigio_irq_fd = fd;
42 return(0); 42 return 0;
43} 43}
44 44
45/* These are called from os-Linux/sigio.c to protect its pollfds arrays. */
45static DEFINE_SPINLOCK(sigio_spinlock); 46static DEFINE_SPINLOCK(sigio_spinlock);
46 47
47void sigio_lock(void) 48void sigio_lock(void)
diff --git a/arch/um/kernel/skas/mem.c b/arch/um/kernel/skas/mem.c
index 0d2cce621134..7c18dfcd7d8e 100644
--- a/arch/um/kernel/skas/mem.c
+++ b/arch/um/kernel/skas/mem.c
@@ -14,13 +14,9 @@ unsigned long set_task_sizes_skas(unsigned long *task_size_out)
14 unsigned long host_task_size = ROUND_4M((unsigned long) 14 unsigned long host_task_size = ROUND_4M((unsigned long)
15 &host_task_size); 15 &host_task_size);
16 16
17#ifdef CONFIG_HOST_TASK_SIZE
18 *host_size_out = ROUND_4M(CONFIG_HOST_TASK_SIZE);
19 *task_size_out = CONFIG_HOST_TASK_SIZE;
20#else
21 if (!skas_needs_stub) 17 if (!skas_needs_stub)
22 *task_size_out = host_task_size; 18 *task_size_out = host_task_size;
23 else *task_size_out = CONFIG_STUB_START & PGDIR_MASK; 19 else *task_size_out = CONFIG_STUB_START & PGDIR_MASK;
24#endif 20
25 return host_task_size; 21 return host_task_size;
26} 22}
diff --git a/arch/um/kernel/syscall.c b/arch/um/kernel/syscall.c
index f5ed8624648b..2828c5283227 100644
--- a/arch/um/kernel/syscall.c
+++ b/arch/um/kernel/syscall.c
@@ -149,22 +149,6 @@ long sys_olduname(struct oldold_utsname __user * name)
149 return error; 149 return error;
150} 150}
151 151
152DEFINE_SPINLOCK(syscall_lock);
153
154static int syscall_index = 0;
155
156int next_syscall_index(int limit)
157{
158 int ret;
159
160 spin_lock(&syscall_lock);
161 ret = syscall_index;
162 if(++syscall_index == limit)
163 syscall_index = 0;
164 spin_unlock(&syscall_lock);
165 return(ret);
166}
167
168int kernel_execve(const char *filename, char *const argv[], char *const envp[]) 152int kernel_execve(const char *filename, char *const argv[], char *const envp[])
169{ 153{
170 mm_segment_t fs; 154 mm_segment_t fs;
diff --git a/arch/um/kernel/sysrq.c b/arch/um/kernel/sysrq.c
index 239c98054dec..f9e02b31a97a 100644
--- a/arch/um/kernel/sysrq.c
+++ b/arch/um/kernel/sysrq.c
@@ -50,7 +50,7 @@ void dump_stack(void)
50EXPORT_SYMBOL(dump_stack); 50EXPORT_SYMBOL(dump_stack);
51 51
52/*Stolen from arch/i386/kernel/traps.c */ 52/*Stolen from arch/i386/kernel/traps.c */
53static int kstack_depth_to_print = 24; 53static const int kstack_depth_to_print = 24;
54 54
55/* This recently started being used in arch-independent code too, as in 55/* This recently started being used in arch-independent code too, as in
56 * kernel/sched.c.*/ 56 * kernel/sched.c.*/
diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c
index 2e354b3ca060..b1f8b0752419 100644
--- a/arch/um/kernel/time.c
+++ b/arch/um/kernel/time.c
@@ -35,31 +35,31 @@ unsigned long long sched_clock(void)
35 return (unsigned long long)jiffies_64 * (1000000000 / HZ); 35 return (unsigned long long)jiffies_64 * (1000000000 / HZ);
36} 36}
37 37
38static unsigned long long prev_nsecs; 38static unsigned long long prev_nsecs[NR_CPUS];
39#ifdef CONFIG_UML_REAL_TIME_CLOCK 39#ifdef CONFIG_UML_REAL_TIME_CLOCK
40static long long delta; /* Deviation per interval */ 40static long long delta[NR_CPUS]; /* Deviation per interval */
41#endif 41#endif
42 42
43void timer_irq(union uml_pt_regs *regs) 43void timer_irq(union uml_pt_regs *regs)
44{ 44{
45 unsigned long long ticks = 0; 45 unsigned long long ticks = 0;
46
47#ifdef CONFIG_UML_REAL_TIME_CLOCK 46#ifdef CONFIG_UML_REAL_TIME_CLOCK
48 if(prev_nsecs){ 47 int c = cpu();
48 if(prev_nsecs[c]){
49 /* We've had 1 tick */ 49 /* We've had 1 tick */
50 unsigned long long nsecs = os_nsecs(); 50 unsigned long long nsecs = os_nsecs();
51 51
52 delta += nsecs - prev_nsecs; 52 delta[c] += nsecs - prev_nsecs[c];
53 prev_nsecs = nsecs; 53 prev_nsecs[c] = nsecs;
54 54
55 /* Protect against the host clock being set backwards */ 55 /* Protect against the host clock being set backwards */
56 if(delta < 0) 56 if(delta[c] < 0)
57 delta = 0; 57 delta[c] = 0;
58 58
59 ticks += (delta * HZ) / BILLION; 59 ticks += (delta[c] * HZ) / BILLION;
60 delta -= (ticks * BILLION) / HZ; 60 delta[c] -= (ticks * BILLION) / HZ;
61 } 61 }
62 else prev_nsecs = os_nsecs(); 62 else prev_nsecs[c] = os_nsecs();
63#else 63#else
64 ticks = 1; 64 ticks = 1;
65#endif 65#endif
@@ -69,8 +69,8 @@ void timer_irq(union uml_pt_regs *regs)
69 } 69 }
70} 70}
71 71
72/* Protects local_offset */
72static DEFINE_SPINLOCK(timer_spinlock); 73static DEFINE_SPINLOCK(timer_spinlock);
73
74static unsigned long long local_offset = 0; 74static unsigned long long local_offset = 0;
75 75
76static inline unsigned long long get_time(void) 76static inline unsigned long long get_time(void)
diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
index b5f124a2f6ae..26f15c458574 100644
--- a/arch/um/kernel/trap.c
+++ b/arch/um/kernel/trap.c
@@ -128,7 +128,18 @@ out_of_memory:
128 goto out; 128 goto out;
129} 129}
130 130
131void segv_handler(int sig, union uml_pt_regs *regs) 131static void bad_segv(struct faultinfo fi, unsigned long ip)
132{
133 struct siginfo si;
134
135 si.si_signo = SIGSEGV;
136 si.si_code = SEGV_ACCERR;
137 si.si_addr = (void __user *) FAULT_ADDRESS(fi);
138 current->thread.arch.faultinfo = fi;
139 force_sig_info(SIGSEGV, &si, current);
140}
141
142static void segv_handler(int sig, union uml_pt_regs *regs)
132{ 143{
133 struct faultinfo * fi = UPT_FAULTINFO(regs); 144 struct faultinfo * fi = UPT_FAULTINFO(regs);
134 145
@@ -205,17 +216,6 @@ unsigned long segv(struct faultinfo fi, unsigned long ip, int is_user, void *sc)
205 return(0); 216 return(0);
206} 217}
207 218
208void bad_segv(struct faultinfo fi, unsigned long ip)
209{
210 struct siginfo si;
211
212 si.si_signo = SIGSEGV;
213 si.si_code = SEGV_ACCERR;
214 si.si_addr = (void __user *) FAULT_ADDRESS(fi);
215 current->thread.arch.faultinfo = fi;
216 force_sig_info(SIGSEGV, &si, current);
217}
218
219void relay_signal(int sig, union uml_pt_regs *regs) 219void relay_signal(int sig, union uml_pt_regs *regs)
220{ 220{
221 if(arch_handle_signal(sig, regs)) 221 if(arch_handle_signal(sig, regs))
@@ -232,14 +232,14 @@ void relay_signal(int sig, union uml_pt_regs *regs)
232 force_sig(sig, current); 232 force_sig(sig, current);
233} 233}
234 234
235void bus_handler(int sig, union uml_pt_regs *regs) 235static void bus_handler(int sig, union uml_pt_regs *regs)
236{ 236{
237 if(current->thread.fault_catcher != NULL) 237 if(current->thread.fault_catcher != NULL)
238 do_longjmp(current->thread.fault_catcher, 1); 238 do_longjmp(current->thread.fault_catcher, 1);
239 else relay_signal(sig, regs); 239 else relay_signal(sig, regs);
240} 240}
241 241
242void winch(int sig, union uml_pt_regs *regs) 242static void winch(int sig, union uml_pt_regs *regs)
243{ 243{
244 do_IRQ(WINCH_IRQ, regs); 244 do_IRQ(WINCH_IRQ, regs);
245} 245}
diff --git a/arch/um/kernel/tt/gdb.c b/arch/um/kernel/tt/gdb.c
index 786e4edd86c5..8eba8f7dca68 100644
--- a/arch/um/kernel/tt/gdb.c
+++ b/arch/um/kernel/tt/gdb.c
@@ -139,7 +139,7 @@ static void config_gdb_cb(void *arg)
139 init_proxy(debugger_pid, 0, 0); 139 init_proxy(debugger_pid, 0, 0);
140} 140}
141 141
142int gdb_config(char *str) 142int gdb_config(char *str, char **error_out)
143{ 143{
144 struct gdb_data data; 144 struct gdb_data data;
145 145
@@ -154,7 +154,7 @@ void remove_gdb_cb(void *unused)
154 exit_debugger_cb(NULL); 154 exit_debugger_cb(NULL);
155} 155}
156 156
157int gdb_remove(int unused) 157int gdb_remove(int unused, char **error_out)
158{ 158{
159 initial_thread_cb(remove_gdb_cb, NULL); 159 initial_thread_cb(remove_gdb_cb, NULL);
160 return 0; 160 return 0;
diff --git a/arch/um/kernel/tt/gdb_kern.c b/arch/um/kernel/tt/gdb_kern.c
index 68e1bf63cd0a..03b06bc00771 100644
--- a/arch/um/kernel/tt/gdb_kern.c
+++ b/arch/um/kernel/tt/gdb_kern.c
@@ -8,10 +8,11 @@
8 8
9#ifdef CONFIG_MCONSOLE 9#ifdef CONFIG_MCONSOLE
10 10
11extern int gdb_config(char *str); 11extern int gdb_config(char *str, char **error_out);
12extern int gdb_remove(int n); 12extern int gdb_remove(int n, char **error_out);
13 13
14static struct mc_device gdb_mc = { 14static struct mc_device gdb_mc = {
15 .list = INIT_LIST_HEAD(gdb_mc.list),
15 .name = "gdb", 16 .name = "gdb",
16 .config = gdb_config, 17 .config = gdb_config,
17 .remove = gdb_remove, 18 .remove = gdb_remove,
diff --git a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c
index 66f43c906821..89c6dba731f8 100644
--- a/arch/um/kernel/um_arch.c
+++ b/arch/um/kernel/um_arch.c
@@ -30,7 +30,6 @@
30#include "kern.h" 30#include "kern.h"
31#include "mem_user.h" 31#include "mem_user.h"
32#include "mem.h" 32#include "mem.h"
33#include "umid.h"
34#include "initrd.h" 33#include "initrd.h"
35#include "init.h" 34#include "init.h"
36#include "os.h" 35#include "os.h"
@@ -44,9 +43,9 @@
44#define DEFAULT_COMMAND_LINE "root=98:0" 43#define DEFAULT_COMMAND_LINE "root=98:0"
45 44
46/* Changed in linux_main and setup_arch, which run before SMP is started */ 45/* Changed in linux_main and setup_arch, which run before SMP is started */
47static char command_line[COMMAND_LINE_SIZE] = { 0 }; 46static char __initdata command_line[COMMAND_LINE_SIZE] = { 0 };
48 47
49static void add_arg(char *arg) 48static void __init add_arg(char *arg)
50{ 49{
51 if (strlen(command_line) + strlen(arg) + 1 > COMMAND_LINE_SIZE) { 50 if (strlen(command_line) + strlen(arg) + 1 > COMMAND_LINE_SIZE) {
52 printf("add_arg: Too many command line arguments!\n"); 51 printf("add_arg: Too many command line arguments!\n");
@@ -331,7 +330,7 @@ EXPORT_SYMBOL(end_iomem);
331 330
332extern char __binary_start; 331extern char __binary_start;
333 332
334int linux_main(int argc, char **argv) 333int __init linux_main(int argc, char **argv)
335{ 334{
336 unsigned long avail, diff; 335 unsigned long avail, diff;
337 unsigned long virtmem_size, max_physmem; 336 unsigned long virtmem_size, max_physmem;
@@ -482,7 +481,7 @@ void __init setup_arch(char **cmdline_p)
482 atomic_notifier_chain_register(&panic_notifier_list, 481 atomic_notifier_chain_register(&panic_notifier_list,
483 &panic_exit_notifier); 482 &panic_exit_notifier);
484 paging_init(); 483 paging_init();
485 strlcpy(saved_command_line, command_line, COMMAND_LINE_SIZE); 484 strlcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
486 *cmdline_p = command_line; 485 *cmdline_p = command_line;
487 setup_hostinfo(); 486 setup_hostinfo();
488} 487}
diff --git a/arch/um/kernel/umid.c b/arch/um/kernel/umid.c
index 4eaee823bfd2..039e16efcd55 100644
--- a/arch/um/kernel/umid.c
+++ b/arch/um/kernel/umid.c
@@ -16,8 +16,10 @@ static int __init set_umid_arg(char *name, int *add)
16{ 16{
17 int err; 17 int err;
18 18
19 if(umid_inited) 19 if(umid_inited){
20 printf("umid already set\n");
20 return 0; 21 return 0;
22 }
21 23
22 *add = 0; 24 *add = 0;
23 err = set_umid(name); 25 err = set_umid(name);
diff --git a/arch/um/os-Linux/aio.c b/arch/um/os-Linux/aio.c
index f897140cc4ae..6ff12743a0bd 100644
--- a/arch/um/os-Linux/aio.c
+++ b/arch/um/os-Linux/aio.c
@@ -24,9 +24,6 @@ struct aio_thread_req {
24 struct aio_context *aio; 24 struct aio_context *aio;
25}; 25};
26 26
27static int aio_req_fd_r = -1;
28static int aio_req_fd_w = -1;
29
30#if defined(HAVE_AIO_ABI) 27#if defined(HAVE_AIO_ABI)
31#include <linux/aio_abi.h> 28#include <linux/aio_abi.h>
32 29
@@ -111,6 +108,7 @@ static int do_aio(aio_context_t ctx, enum aio_type type, int fd, char *buf,
111 return err; 108 return err;
112} 109}
113 110
111/* Initialized in an initcall and unchanged thereafter */
114static aio_context_t ctx = 0; 112static aio_context_t ctx = 0;
115 113
116static int aio_thread(void *arg) 114static int aio_thread(void *arg)
@@ -137,7 +135,7 @@ static int aio_thread(void *arg)
137 err = os_write_file(reply_fd, &reply, sizeof(reply)); 135 err = os_write_file(reply_fd, &reply, sizeof(reply));
138 if(err != sizeof(reply)) 136 if(err != sizeof(reply))
139 printk("aio_thread - write failed, fd = %d, " 137 printk("aio_thread - write failed, fd = %d, "
140 "err = %d\n", aio_req_fd_r, -err); 138 "err = %d\n", reply_fd, -err);
141 } 139 }
142 } 140 }
143 return 0; 141 return 0;
@@ -182,6 +180,11 @@ out:
182 return err; 180 return err;
183} 181}
184 182
183/* These are initialized in initcalls and not changed */
184static int aio_req_fd_r = -1;
185static int aio_req_fd_w = -1;
186static int aio_pid = -1;
187
185static int not_aio_thread(void *arg) 188static int not_aio_thread(void *arg)
186{ 189{
187 struct aio_thread_req req; 190 struct aio_thread_req req;
@@ -208,14 +211,12 @@ static int not_aio_thread(void *arg)
208 err = os_write_file(req.aio->reply_fd, &reply, sizeof(reply)); 211 err = os_write_file(req.aio->reply_fd, &reply, sizeof(reply));
209 if(err != sizeof(reply)) 212 if(err != sizeof(reply))
210 printk("not_aio_thread - write failed, fd = %d, " 213 printk("not_aio_thread - write failed, fd = %d, "
211 "err = %d\n", aio_req_fd_r, -err); 214 "err = %d\n", req.aio->reply_fd, -err);
212 } 215 }
213 216
214 return 0; 217 return 0;
215} 218}
216 219
217static int aio_pid = -1;
218
219static int init_aio_24(void) 220static int init_aio_24(void)
220{ 221{
221 unsigned long stack; 222 unsigned long stack;
@@ -308,6 +309,7 @@ static int submit_aio_26(enum aio_type type, int io_fd, char *buf, int len,
308} 309}
309#endif 310#endif
310 311
312/* Initialized in an initcall and unchanged thereafter */
311static int aio_24 = DEFAULT_24_AIO; 313static int aio_24 = DEFAULT_24_AIO;
312 314
313static int __init set_aio_24(char *name, int *add) 315static int __init set_aio_24(char *name, int *add)
diff --git a/arch/um/os-Linux/elf_aux.c b/arch/um/os-Linux/elf_aux.c
index 5a99dd3fbed0..3a8d7e3aae0a 100644
--- a/arch/um/os-Linux/elf_aux.c
+++ b/arch/um/os-Linux/elf_aux.c
@@ -21,12 +21,11 @@ typedef Elf32_auxv_t elf_auxv_t;
21typedef Elf64_auxv_t elf_auxv_t; 21typedef Elf64_auxv_t elf_auxv_t;
22#endif 22#endif
23 23
24/* These are initialized very early in boot and never changed */
24char * elf_aux_platform; 25char * elf_aux_platform;
25long elf_aux_hwcap; 26long elf_aux_hwcap;
26
27unsigned long vsyscall_ehdr; 27unsigned long vsyscall_ehdr;
28unsigned long vsyscall_end; 28unsigned long vsyscall_end;
29
30unsigned long __kernel_vsyscall; 29unsigned long __kernel_vsyscall;
31 30
32__init void scan_elf_aux( char **envp) 31__init void scan_elf_aux( char **envp)
diff --git a/arch/um/os-Linux/file.c b/arch/um/os-Linux/file.c
index 189fa677085a..371b4335f46d 100644
--- a/arch/um/os-Linux/file.c
+++ b/arch/um/os-Linux/file.c
@@ -162,25 +162,6 @@ int os_set_owner(int fd, int pid)
162 return 0; 162 return 0;
163} 163}
164 164
165/* FIXME? moved wholesale from sigio_user.c to get fcntls out of that file */
166int os_sigio_async(int master, int slave)
167{
168 int flags;
169
170 flags = fcntl(master, F_GETFL);
171 if(flags < 0)
172 return -errno;
173
174 if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) ||
175 (fcntl(master, F_SETOWN, os_getpid()) < 0))
176 return -errno;
177
178 if((fcntl(slave, F_SETFL, flags | O_NONBLOCK) < 0))
179 return -errno;
180
181 return(0);
182}
183
184int os_mode_fd(int fd, int mode) 165int os_mode_fd(int fd, int mode)
185{ 166{
186 int err; 167 int err;
diff --git a/arch/um/os-Linux/irq.c b/arch/um/os-Linux/irq.c
index d46b818c1311..d1b61d474e0a 100644
--- a/arch/um/os-Linux/irq.c
+++ b/arch/um/os-Linux/irq.c
@@ -20,6 +20,10 @@
20#include "os.h" 20#include "os.h"
21#include "um_malloc.h" 21#include "um_malloc.h"
22 22
23/*
24 * Locked by irq_lock in arch/um/kernel/irq.c. Changed by os_create_pollfd
25 * and os_free_irq_by_cb, which are called under irq_lock.
26 */
23static struct pollfd *pollfds = NULL; 27static struct pollfd *pollfds = NULL;
24static int pollfds_num = 0; 28static int pollfds_num = 0;
25static int pollfds_size = 0; 29static int pollfds_size = 0;
@@ -58,7 +62,7 @@ int os_create_pollfd(int fd, int events, void *tmp_pfd, int size_tmpfds)
58 if (pollfds_num == pollfds_size) { 62 if (pollfds_num == pollfds_size) {
59 if (size_tmpfds <= pollfds_size * sizeof(pollfds[0])) { 63 if (size_tmpfds <= pollfds_size * sizeof(pollfds[0])) {
60 /* return min size needed for new pollfds area */ 64 /* return min size needed for new pollfds area */
61 return((pollfds_size + 1) * sizeof(pollfds[0])); 65 return (pollfds_size + 1) * sizeof(pollfds[0]);
62 } 66 }
63 67
64 if (pollfds != NULL) { 68 if (pollfds != NULL) {
diff --git a/arch/um/os-Linux/mem.c b/arch/um/os-Linux/mem.c
index 4203681e508d..f1ea169db85e 100644
--- a/arch/um/os-Linux/mem.c
+++ b/arch/um/os-Linux/mem.c
@@ -20,7 +20,13 @@
20 20
21#include <sys/param.h> 21#include <sys/param.h>
22 22
23/* Modified by which_tmpdir, which is called during early boot */
23static char *default_tmpdir = "/tmp"; 24static char *default_tmpdir = "/tmp";
25
26/*
27 * Modified when creating the physical memory file and when checking
28 * the tmp filesystem for usability, both happening during early boot.
29 */
24static char *tempdir = NULL; 30static char *tempdir = NULL;
25 31
26static void __init find_tempdir(void) 32static void __init find_tempdir(void)
@@ -29,7 +35,8 @@ static void __init find_tempdir(void)
29 int i; 35 int i;
30 char *dir = NULL; 36 char *dir = NULL;
31 37
32 if(tempdir != NULL) return; /* We've already been called */ 38 if(tempdir != NULL) /* We've already been called */
39 return;
33 for(i = 0; dirs[i]; i++){ 40 for(i = 0; dirs[i]; i++){
34 dir = getenv(dirs[i]); 41 dir = getenv(dirs[i]);
35 if((dir != NULL) && (*dir != '\0')) 42 if((dir != NULL) && (*dir != '\0'))
@@ -83,6 +90,7 @@ static int next(int fd, char *buf, int size, char c)
83 return 1; 90 return 1;
84} 91}
85 92
93/* which_tmpdir is called only during early boot */
86static int checked_tmpdir = 0; 94static int checked_tmpdir = 0;
87 95
88/* Look for a tmpfs mounted at /dev/shm. I couldn't find a cleaner 96/* Look for a tmpfs mounted at /dev/shm. I couldn't find a cleaner
@@ -186,7 +194,7 @@ int make_tempfile(const char *template, char **out_tempname, int do_unlink)
186 } else { 194 } else {
187 free(tempname); 195 free(tempname);
188 } 196 }
189 return(fd); 197 return fd;
190out: 198out:
191 free(tempname); 199 free(tempname);
192 return -1; 200 return -1;
@@ -231,7 +239,7 @@ int create_tmp_file(unsigned long long len)
231 exit(1); 239 exit(1);
232 } 240 }
233 241
234 return(fd); 242 return fd;
235} 243}
236 244
237int create_mem_file(unsigned long long len) 245int create_mem_file(unsigned long long len)
@@ -245,7 +253,7 @@ int create_mem_file(unsigned long long len)
245 errno = -err; 253 errno = -err;
246 perror("exec_close"); 254 perror("exec_close");
247 } 255 }
248 return(fd); 256 return fd;
249} 257}
250 258
251 259
diff --git a/arch/um/os-Linux/start_up.c b/arch/um/os-Linux/start_up.c
index 7fe92680c7dd..5178eba9afa5 100644
--- a/arch/um/os-Linux/start_up.c
+++ b/arch/um/os-Linux/start_up.c
@@ -54,7 +54,7 @@ static int ptrace_child(void *arg)
54 perror("ptrace"); 54 perror("ptrace");
55 os_kill_process(pid, 0); 55 os_kill_process(pid, 0);
56 } 56 }
57 os_stop_process(pid); 57 kill(pid, SIGSTOP);
58 58
59 /*This syscall will be intercepted by the parent. Don't call more than 59 /*This syscall will be intercepted by the parent. Don't call more than
60 * once, please.*/ 60 * once, please.*/
@@ -73,6 +73,34 @@ static int ptrace_child(void *arg)
73 _exit(ret); 73 _exit(ret);
74} 74}
75 75
76static void fatal_perror(char *str)
77{
78 perror(str);
79 exit(1);
80}
81
82static void fatal(char *fmt, ...)
83{
84 va_list list;
85
86 va_start(list, fmt);
87 vprintf(fmt, list);
88 va_end(list);
89 fflush(stdout);
90
91 exit(1);
92}
93
94static void non_fatal(char *fmt, ...)
95{
96 va_list list;
97
98 va_start(list, fmt);
99 vprintf(fmt, list);
100 va_end(list);
101 fflush(stdout);
102}
103
76static int start_ptraced_child(void **stack_out) 104static int start_ptraced_child(void **stack_out)
77{ 105{
78 void *stack; 106 void *stack;
@@ -82,20 +110,20 @@ static int start_ptraced_child(void **stack_out)
82 stack = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC, 110 stack = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC,
83 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); 111 MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
84 if(stack == MAP_FAILED) 112 if(stack == MAP_FAILED)
85 panic("check_ptrace : mmap failed, errno = %d", errno); 113 fatal_perror("check_ptrace : mmap failed");
86 sp = (unsigned long) stack + PAGE_SIZE - sizeof(void *); 114 sp = (unsigned long) stack + PAGE_SIZE - sizeof(void *);
87 pid = clone(ptrace_child, (void *) sp, SIGCHLD, NULL); 115 pid = clone(ptrace_child, (void *) sp, SIGCHLD, NULL);
88 if(pid < 0) 116 if(pid < 0)
89 panic("start_ptraced_child : clone failed, errno = %d", errno); 117 fatal_perror("start_ptraced_child : clone failed");
90 CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); 118 CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED));
91 if(n < 0) 119 if(n < 0)
92 panic("check_ptrace : clone failed, errno = %d", errno); 120 fatal_perror("check_ptrace : clone failed");
93 if(!WIFSTOPPED(status) || (WSTOPSIG(status) != SIGSTOP)) 121 if(!WIFSTOPPED(status) || (WSTOPSIG(status) != SIGSTOP))
94 panic("check_ptrace : expected SIGSTOP, got status = %d", 122 fatal("check_ptrace : expected SIGSTOP, got status = %d",
95 status); 123 status);
96 124
97 *stack_out = stack; 125 *stack_out = stack;
98 return(pid); 126 return pid;
99} 127}
100 128
101/* When testing for SYSEMU support, if it is one of the broken versions, we 129/* When testing for SYSEMU support, if it is one of the broken versions, we
@@ -105,34 +133,34 @@ static int start_ptraced_child(void **stack_out)
105 * must work anyway! 133 * must work anyway!
106 */ 134 */
107static int stop_ptraced_child(int pid, void *stack, int exitcode, 135static int stop_ptraced_child(int pid, void *stack, int exitcode,
108 int mustpanic) 136 int mustexit)
109{ 137{
110 int status, n, ret = 0; 138 int status, n, ret = 0;
111 139
112 if(ptrace(PTRACE_CONT, pid, 0, 0) < 0) 140 if(ptrace(PTRACE_CONT, pid, 0, 0) < 0)
113 panic("check_ptrace : ptrace failed, errno = %d", errno); 141 fatal_perror("stop_ptraced_child : ptrace failed");
114 CATCH_EINTR(n = waitpid(pid, &status, 0)); 142 CATCH_EINTR(n = waitpid(pid, &status, 0));
115 if(!WIFEXITED(status) || (WEXITSTATUS(status) != exitcode)) { 143 if(!WIFEXITED(status) || (WEXITSTATUS(status) != exitcode)) {
116 int exit_with = WEXITSTATUS(status); 144 int exit_with = WEXITSTATUS(status);
117 if (exit_with == 2) 145 if (exit_with == 2)
118 printf("check_ptrace : child exited with status 2. " 146 non_fatal("check_ptrace : child exited with status 2. "
119 "Serious trouble happening! Try updating your " 147 "Serious trouble happening! Try updating "
120 "host skas patch!\nDisabling SYSEMU support."); 148 "your host skas patch!\nDisabling SYSEMU "
121 printf("check_ptrace : child exited with exitcode %d, while " 149 "support.");
122 "expecting %d; status 0x%x", exit_with, 150 non_fatal("check_ptrace : child exited with exitcode %d, while "
123 exitcode, status); 151 "expecting %d; status 0x%x\n", exit_with,
124 if (mustpanic) 152 exitcode, status);
125 panic("\n"); 153 if (mustexit)
126 else 154 exit(1);
127 printf("\n");
128 ret = -1; 155 ret = -1;
129 } 156 }
130 157
131 if(munmap(stack, PAGE_SIZE) < 0) 158 if(munmap(stack, PAGE_SIZE) < 0)
132 panic("check_ptrace : munmap failed, errno = %d", errno); 159 fatal_perror("check_ptrace : munmap failed");
133 return ret; 160 return ret;
134} 161}
135 162
163/* Changed only during early boot */
136int ptrace_faultinfo = 1; 164int ptrace_faultinfo = 1;
137int ptrace_ldt = 1; 165int ptrace_ldt = 1;
138int proc_mm = 1; 166int proc_mm = 1;
@@ -160,6 +188,7 @@ __uml_setup("mode=skas0", mode_skas0_cmd_param,
160 " specify mode=tt. Note that this was recently added - on \n" 188 " specify mode=tt. Note that this was recently added - on \n"
161 " older kernels you must use simply \"skas0\".\n\n"); 189 " older kernels you must use simply \"skas0\".\n\n");
162 190
191/* Changed only during early boot */
163static int force_sysemu_disabled = 0; 192static int force_sysemu_disabled = 0;
164 193
165static int __init nosysemu_cmd_param(char *str, int* add) 194static int __init nosysemu_cmd_param(char *str, int* add)
@@ -180,9 +209,9 @@ __uml_setup("nosysemu", nosysemu_cmd_param,
180static void __init check_sysemu(void) 209static void __init check_sysemu(void)
181{ 210{
182 void *stack; 211 void *stack;
183 int pid, n, status, count=0; 212 int pid, n, status, count=0;
184 213
185 printf("Checking syscall emulation patch for ptrace..."); 214 non_fatal("Checking syscall emulation patch for ptrace...");
186 sysemu_supported = 0; 215 sysemu_supported = 0;
187 pid = start_ptraced_child(&stack); 216 pid = start_ptraced_child(&stack);
188 217
@@ -191,31 +220,30 @@ static void __init check_sysemu(void)
191 220
192 CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); 221 CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED));
193 if (n < 0) 222 if (n < 0)
194 panic("check_sysemu : wait failed, errno = %d", errno); 223 fatal_perror("check_sysemu : wait failed");
195 if(!WIFSTOPPED(status) || (WSTOPSIG(status) != SIGTRAP)) 224 if(!WIFSTOPPED(status) || (WSTOPSIG(status) != SIGTRAP))
196 panic("check_sysemu : expected SIGTRAP, " 225 fatal("check_sysemu : expected SIGTRAP, got status = %d",
197 "got status = %d", status); 226 status);
198 227
199 n = ptrace(PTRACE_POKEUSR, pid, PT_SYSCALL_RET_OFFSET, 228 n = ptrace(PTRACE_POKEUSR, pid, PT_SYSCALL_RET_OFFSET,
200 os_getpid()); 229 os_getpid());
201 if(n < 0) 230 if(n < 0)
202 panic("check_sysemu : failed to modify system " 231 fatal_perror("check_sysemu : failed to modify system call "
203 "call return, errno = %d", errno); 232 "return");
204 233
205 if (stop_ptraced_child(pid, stack, 0, 0) < 0) 234 if (stop_ptraced_child(pid, stack, 0, 0) < 0)
206 goto fail_stopped; 235 goto fail_stopped;
207 236
208 sysemu_supported = 1; 237 sysemu_supported = 1;
209 printf("OK\n"); 238 non_fatal("OK\n");
210 set_using_sysemu(!force_sysemu_disabled); 239 set_using_sysemu(!force_sysemu_disabled);
211 240
212 printf("Checking advanced syscall emulation patch for ptrace..."); 241 non_fatal("Checking advanced syscall emulation patch for ptrace...");
213 pid = start_ptraced_child(&stack); 242 pid = start_ptraced_child(&stack);
214 243
215 if(ptrace(PTRACE_OLDSETOPTIONS, pid, 0, 244 if((ptrace(PTRACE_OLDSETOPTIONS, pid, 0,
216 (void *) PTRACE_O_TRACESYSGOOD) < 0) 245 (void *) PTRACE_O_TRACESYSGOOD) < 0))
217 panic("check_ptrace: PTRACE_OLDSETOPTIONS failed, errno = %d", 246 fatal_perror("check_ptrace: PTRACE_OLDSETOPTIONS failed");
218 errno);
219 247
220 while(1){ 248 while(1){
221 count++; 249 count++;
@@ -223,29 +251,30 @@ static void __init check_sysemu(void)
223 goto fail; 251 goto fail;
224 CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); 252 CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED));
225 if(n < 0) 253 if(n < 0)
226 panic("check_ptrace : wait failed, errno = %d", errno); 254 fatal_perror("check_ptrace : wait failed");
255
227 if(WIFSTOPPED(status) && (WSTOPSIG(status) == (SIGTRAP|0x80))){ 256 if(WIFSTOPPED(status) && (WSTOPSIG(status) == (SIGTRAP|0x80))){
228 if (!count) 257 if (!count)
229 panic("check_ptrace : SYSEMU_SINGLESTEP " 258 fatal("check_ptrace : SYSEMU_SINGLESTEP "
230 "doesn't singlestep"); 259 "doesn't singlestep");
231 n = ptrace(PTRACE_POKEUSR, pid, PT_SYSCALL_RET_OFFSET, 260 n = ptrace(PTRACE_POKEUSR, pid, PT_SYSCALL_RET_OFFSET,
232 os_getpid()); 261 os_getpid());
233 if(n < 0) 262 if(n < 0)
234 panic("check_sysemu : failed to modify system " 263 fatal_perror("check_sysemu : failed to modify "
235 "call return, errno = %d", errno); 264 "system call return");
236 break; 265 break;
237 } 266 }
238 else if(WIFSTOPPED(status) && (WSTOPSIG(status) == SIGTRAP)) 267 else if(WIFSTOPPED(status) && (WSTOPSIG(status) == SIGTRAP))
239 count++; 268 count++;
240 else 269 else
241 panic("check_ptrace : expected SIGTRAP or " 270 fatal("check_ptrace : expected SIGTRAP or "
242 "(SIGTRAP|0x80), got status = %d", status); 271 "(SIGTRAP | 0x80), got status = %d", status);
243 } 272 }
244 if (stop_ptraced_child(pid, stack, 0, 0) < 0) 273 if (stop_ptraced_child(pid, stack, 0, 0) < 0)
245 goto fail_stopped; 274 goto fail_stopped;
246 275
247 sysemu_supported = 2; 276 sysemu_supported = 2;
248 printf("OK\n"); 277 non_fatal("OK\n");
249 278
250 if ( !force_sysemu_disabled ) 279 if ( !force_sysemu_disabled )
251 set_using_sysemu(sysemu_supported); 280 set_using_sysemu(sysemu_supported);
@@ -254,7 +283,7 @@ static void __init check_sysemu(void)
254fail: 283fail:
255 stop_ptraced_child(pid, stack, 1, 0); 284 stop_ptraced_child(pid, stack, 1, 0);
256fail_stopped: 285fail_stopped:
257 printf("missing\n"); 286 non_fatal("missing\n");
258} 287}
259 288
260static void __init check_ptrace(void) 289static void __init check_ptrace(void)
@@ -262,22 +291,25 @@ static void __init check_ptrace(void)
262 void *stack; 291 void *stack;
263 int pid, syscall, n, status; 292 int pid, syscall, n, status;
264 293
265 printf("Checking that ptrace can change system call numbers..."); 294 non_fatal("Checking that ptrace can change system call numbers...");
266 pid = start_ptraced_child(&stack); 295 pid = start_ptraced_child(&stack);
267 296
268 if(ptrace(PTRACE_OLDSETOPTIONS, pid, 0, (void *)PTRACE_O_TRACESYSGOOD) < 0) 297 if((ptrace(PTRACE_OLDSETOPTIONS, pid, 0,
269 panic("check_ptrace: PTRACE_OLDSETOPTIONS failed, errno = %d", errno); 298 (void *) PTRACE_O_TRACESYSGOOD) < 0))
299 fatal_perror("check_ptrace: PTRACE_OLDSETOPTIONS failed");
270 300
271 while(1){ 301 while(1){
272 if(ptrace(PTRACE_SYSCALL, pid, 0, 0) < 0) 302 if(ptrace(PTRACE_SYSCALL, pid, 0, 0) < 0)
273 panic("check_ptrace : ptrace failed, errno = %d", 303 fatal_perror("check_ptrace : ptrace failed");
274 errno); 304
275 CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED)); 305 CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED));
276 if(n < 0) 306 if(n < 0)
277 panic("check_ptrace : wait failed, errno = %d", errno); 307 fatal_perror("check_ptrace : wait failed");
278 if(!WIFSTOPPED(status) || (WSTOPSIG(status) != (SIGTRAP|0x80))) 308
279 panic("check_ptrace : expected (SIGTRAP|0x80), " 309 if(!WIFSTOPPED(status) ||
280 "got status = %d", status); 310 (WSTOPSIG(status) != (SIGTRAP | 0x80)))
311 fatal("check_ptrace : expected (SIGTRAP|0x80), "
312 "got status = %d", status);
281 313
282 syscall = ptrace(PTRACE_PEEKUSR, pid, PT_SYSCALL_NR_OFFSET, 314 syscall = ptrace(PTRACE_PEEKUSR, pid, PT_SYSCALL_NR_OFFSET,
283 0); 315 0);
@@ -285,13 +317,13 @@ static void __init check_ptrace(void)
285 n = ptrace(PTRACE_POKEUSR, pid, PT_SYSCALL_NR_OFFSET, 317 n = ptrace(PTRACE_POKEUSR, pid, PT_SYSCALL_NR_OFFSET,
286 __NR_getppid); 318 __NR_getppid);
287 if(n < 0) 319 if(n < 0)
288 panic("check_ptrace : failed to modify system " 320 fatal_perror("check_ptrace : failed to modify "
289 "call, errno = %d", errno); 321 "system call");
290 break; 322 break;
291 } 323 }
292 } 324 }
293 stop_ptraced_child(pid, stack, 0, 1); 325 stop_ptraced_child(pid, stack, 0, 1);
294 printf("OK\n"); 326 non_fatal("OK\n");
295 check_sysemu(); 327 check_sysemu();
296} 328}
297 329
@@ -350,22 +382,22 @@ static inline void check_skas3_ptrace_faultinfo(void)
350 void *stack; 382 void *stack;
351 int pid, n; 383 int pid, n;
352 384
353 printf(" - PTRACE_FAULTINFO..."); 385 non_fatal(" - PTRACE_FAULTINFO...");
354 pid = start_ptraced_child(&stack); 386 pid = start_ptraced_child(&stack);
355 387
356 n = ptrace(PTRACE_FAULTINFO, pid, 0, &fi); 388 n = ptrace(PTRACE_FAULTINFO, pid, 0, &fi);
357 if (n < 0) { 389 if (n < 0) {
358 ptrace_faultinfo = 0; 390 ptrace_faultinfo = 0;
359 if(errno == EIO) 391 if(errno == EIO)
360 printf("not found\n"); 392 non_fatal("not found\n");
361 else 393 else
362 perror("not found"); 394 perror("not found");
363 } 395 }
364 else { 396 else {
365 if (!ptrace_faultinfo) 397 if (!ptrace_faultinfo)
366 printf("found but disabled on command line\n"); 398 non_fatal("found but disabled on command line\n");
367 else 399 else
368 printf("found\n"); 400 non_fatal("found\n");
369 } 401 }
370 402
371 init_registers(pid); 403 init_registers(pid);
@@ -383,13 +415,13 @@ static inline void check_skas3_ptrace_ldt(void)
383 .ptr = ldtbuf, 415 .ptr = ldtbuf,
384 .bytecount = sizeof(ldtbuf)}; 416 .bytecount = sizeof(ldtbuf)};
385 417
386 printf(" - PTRACE_LDT..."); 418 non_fatal(" - PTRACE_LDT...");
387 pid = start_ptraced_child(&stack); 419 pid = start_ptraced_child(&stack);
388 420
389 n = ptrace(PTRACE_LDT, pid, 0, (unsigned long) &ldt_op); 421 n = ptrace(PTRACE_LDT, pid, 0, (unsigned long) &ldt_op);
390 if (n < 0) { 422 if (n < 0) {
391 if(errno == EIO) 423 if(errno == EIO)
392 printf("not found\n"); 424 non_fatal("not found\n");
393 else { 425 else {
394 perror("not found"); 426 perror("not found");
395 } 427 }
@@ -397,9 +429,9 @@ static inline void check_skas3_ptrace_ldt(void)
397 } 429 }
398 else { 430 else {
399 if(ptrace_ldt) 431 if(ptrace_ldt)
400 printf("found\n"); 432 non_fatal("found\n");
401 else 433 else
402 printf("found, but use is disabled\n"); 434 non_fatal("found, but use is disabled\n");
403 } 435 }
404 436
405 stop_ptraced_child(pid, stack, 1, 1); 437 stop_ptraced_child(pid, stack, 1, 1);
@@ -414,22 +446,22 @@ static inline void check_skas3_ptrace_ldt(void)
414 446
415static inline void check_skas3_proc_mm(void) 447static inline void check_skas3_proc_mm(void)
416{ 448{
417 printf(" - /proc/mm..."); 449 non_fatal(" - /proc/mm...");
418 if (os_access("/proc/mm", OS_ACC_W_OK) < 0) { 450 if (access("/proc/mm", W_OK) < 0) {
419 proc_mm = 0; 451 proc_mm = 0;
420 printf("not found\n"); 452 perror("not found");
421 } 453 }
422 else { 454 else {
423 if (!proc_mm) 455 if (!proc_mm)
424 printf("found but disabled on command line\n"); 456 non_fatal("found but disabled on command line\n");
425 else 457 else
426 printf("found\n"); 458 non_fatal("found\n");
427 } 459 }
428} 460}
429 461
430int can_do_skas(void) 462int can_do_skas(void)
431{ 463{
432 printf("Checking for the skas3 patch in the host:\n"); 464 non_fatal("Checking for the skas3 patch in the host:\n");
433 465
434 check_skas3_proc_mm(); 466 check_skas3_proc_mm();
435 check_skas3_ptrace_faultinfo(); 467 check_skas3_ptrace_faultinfo();
@@ -443,16 +475,16 @@ int can_do_skas(void)
443#else 475#else
444int can_do_skas(void) 476int can_do_skas(void)
445{ 477{
446 return(0); 478 return 0;
447} 479}
448#endif 480#endif
449 481
450int __init parse_iomem(char *str, int *add) 482int __init parse_iomem(char *str, int *add)
451{ 483{
452 struct iomem_region *new; 484 struct iomem_region *new;
453 struct uml_stat buf; 485 struct stat64 buf;
454 char *file, *driver; 486 char *file, *driver;
455 int fd, err, size; 487 int fd, size;
456 488
457 driver = str; 489 driver = str;
458 file = strchr(str,','); 490 file = strchr(str,',');
@@ -462,15 +494,14 @@ int __init parse_iomem(char *str, int *add)
462 } 494 }
463 *file = '\0'; 495 *file = '\0';
464 file++; 496 file++;
465 fd = os_open_file(file, of_rdwr(OPENFLAGS()), 0); 497 fd = open(file, O_RDWR, 0);
466 if(fd < 0){ 498 if(fd < 0){
467 os_print_error(fd, "parse_iomem - Couldn't open io file"); 499 os_print_error(fd, "parse_iomem - Couldn't open io file");
468 goto out; 500 goto out;
469 } 501 }
470 502
471 err = os_stat_fd(fd, &buf); 503 if(fstat64(fd, &buf) < 0){
472 if(err < 0){ 504 perror("parse_iomem - cannot stat_fd file");
473 os_print_error(err, "parse_iomem - cannot stat_fd file");
474 goto out_close; 505 goto out_close;
475 } 506 }
476 507
@@ -480,7 +511,7 @@ int __init parse_iomem(char *str, int *add)
480 goto out_close; 511 goto out_close;
481 } 512 }
482 513
483 size = (buf.ust_size + UM_KERN_PAGE_SIZE) & ~(UM_KERN_PAGE_SIZE - 1); 514 size = (buf.st_size + UM_KERN_PAGE_SIZE) & ~(UM_KERN_PAGE_SIZE - 1);
484 515
485 *new = ((struct iomem_region) { .next = iomem_regions, 516 *new = ((struct iomem_region) { .next = iomem_regions,
486 .driver = driver, 517 .driver = driver,
@@ -491,11 +522,11 @@ int __init parse_iomem(char *str, int *add)
491 iomem_regions = new; 522 iomem_regions = new;
492 iomem_size += new->size + UM_KERN_PAGE_SIZE; 523 iomem_size += new->size + UM_KERN_PAGE_SIZE;
493 524
494 return(0); 525 return 0;
495 out_close: 526 out_close:
496 os_close_file(fd); 527 close(fd);
497 out: 528 out:
498 return(1); 529 return 1;
499} 530}
500 531
501 532
@@ -526,6 +557,24 @@ static void openpty_cb(void *arg)
526 info->err = -errno; 557 info->err = -errno;
527} 558}
528 559
560static int async_pty(int master, int slave)
561{
562 int flags;
563
564 flags = fcntl(master, F_GETFL);
565 if(flags < 0)
566 return -errno;
567
568 if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) ||
569 (fcntl(master, F_SETOWN, os_getpid()) < 0))
570 return -errno;
571
572 if((fcntl(slave, F_SETFL, flags | O_NONBLOCK) < 0))
573 return -errno;
574
575 return(0);
576}
577
529static void __init check_one_sigio(void (*proc)(int, int)) 578static void __init check_one_sigio(void (*proc)(int, int))
530{ 579{
531 struct sigaction old, new; 580 struct sigaction old, new;
@@ -551,7 +600,7 @@ static void __init check_one_sigio(void (*proc)(int, int))
551 if (err < 0) 600 if (err < 0)
552 panic("check_sigio : __raw failed, errno = %d\n", -err); 601 panic("check_sigio : __raw failed, errno = %d\n", -err);
553 602
554 err = os_sigio_async(master, slave); 603 err = async_pty(master, slave);
555 if(err < 0) 604 if(err < 0)
556 panic("tty_fds : sigio_async failed, err = %d\n", -err); 605 panic("tty_fds : sigio_async failed, err = %d\n", -err);
557 606
diff --git a/arch/um/os-Linux/sys-i386/registers.c b/arch/um/os-Linux/sys-i386/registers.c
index 7cd0369e02b3..79cd93c8c5ed 100644
--- a/arch/um/os-Linux/sys-i386/registers.c
+++ b/arch/um/os-Linux/sys-i386/registers.c
@@ -34,27 +34,27 @@ void init_thread_registers(union uml_pt_regs *to)
34int save_fp_registers(int pid, unsigned long *fp_regs) 34int save_fp_registers(int pid, unsigned long *fp_regs)
35{ 35{
36 if(ptrace(PTRACE_GETFPREGS, pid, 0, fp_regs) < 0) 36 if(ptrace(PTRACE_GETFPREGS, pid, 0, fp_regs) < 0)
37 return(-errno); 37 return -errno;
38 return(0); 38 return 0;
39} 39}
40 40
41int restore_fp_registers(int pid, unsigned long *fp_regs) 41int restore_fp_registers(int pid, unsigned long *fp_regs)
42{ 42{
43 if(ptrace(PTRACE_SETFPREGS, pid, 0, fp_regs) < 0) 43 if(ptrace(PTRACE_SETFPREGS, pid, 0, fp_regs) < 0)
44 return(-errno); 44 return -errno;
45 return(0); 45 return 0;
46} 46}
47 47
48static int move_registers(int pid, int int_op, union uml_pt_regs *regs, 48static int move_registers(int pid, int int_op, union uml_pt_regs *regs,
49 int fp_op, unsigned long *fp_regs) 49 int fp_op, unsigned long *fp_regs)
50{ 50{
51 if(ptrace(int_op, pid, 0, regs->skas.regs) < 0) 51 if(ptrace(int_op, pid, 0, regs->skas.regs) < 0)
52 return(-errno); 52 return -errno;
53 53
54 if(ptrace(fp_op, pid, 0, fp_regs) < 0) 54 if(ptrace(fp_op, pid, 0, fp_regs) < 0)
55 return(-errno); 55 return -errno;
56 56
57 return(0); 57 return 0;
58} 58}
59 59
60void save_registers(int pid, union uml_pt_regs *regs) 60void save_registers(int pid, union uml_pt_regs *regs)
diff --git a/arch/um/os-Linux/sys-x86_64/Makefile b/arch/um/os-Linux/sys-x86_64/Makefile
index f67842a7735b..7955e061a678 100644
--- a/arch/um/os-Linux/sys-x86_64/Makefile
+++ b/arch/um/os-Linux/sys-x86_64/Makefile
@@ -3,7 +3,7 @@
3# Licensed under the GPL 3# Licensed under the GPL
4# 4#
5 5
6obj-$(CONFIG_MODE_SKAS) = registers.o signal.o 6obj-$(CONFIG_MODE_SKAS) = registers.o prctl.o signal.o
7 7
8USER_OBJS := $(obj-y) 8USER_OBJS := $(obj-y)
9 9
diff --git a/arch/um/os-Linux/sys-x86_64/prctl.c b/arch/um/os-Linux/sys-x86_64/prctl.c
new file mode 100644
index 000000000000..9d34eddb517f
--- /dev/null
+++ b/arch/um/os-Linux/sys-x86_64/prctl.c
@@ -0,0 +1,12 @@
1/*
2 * Copyright (C) 2007 Jeff Dike (jdike@{addtoit.com,linux.intel.com})
3 * Licensed under the GPL
4 */
5
6#include <sys/ptrace.h>
7#include <linux/ptrace.h>
8
9int os_arch_prctl(int pid, int code, unsigned long *addr)
10{
11 return ptrace(PTRACE_ARCH_PRCTL, pid, (unsigned long) addr, code);
12}
diff --git a/arch/um/os-Linux/sys-x86_64/registers.c b/arch/um/os-Linux/sys-x86_64/registers.c
index cb8e8a263280..a2d7e0c603f7 100644
--- a/arch/um/os-Linux/sys-x86_64/registers.c
+++ b/arch/um/os-Linux/sys-x86_64/registers.c
@@ -27,12 +27,12 @@ static int move_registers(int pid, int int_op, int fp_op,
27 union uml_pt_regs *regs) 27 union uml_pt_regs *regs)
28{ 28{
29 if(ptrace(int_op, pid, 0, regs->skas.regs) < 0) 29 if(ptrace(int_op, pid, 0, regs->skas.regs) < 0)
30 return(-errno); 30 return -errno;
31 31
32 if(ptrace(fp_op, pid, 0, regs->skas.fp) < 0) 32 if(ptrace(fp_op, pid, 0, regs->skas.fp) < 0)
33 return(-errno); 33 return -errno;
34 34
35 return(0); 35 return 0;
36} 36}
37 37
38void save_registers(int pid, union uml_pt_regs *regs) 38void save_registers(int pid, union uml_pt_regs *regs)
diff --git a/arch/um/os-Linux/umid.c b/arch/um/os-Linux/umid.c
index 48092b95c8ab..b462863f7172 100644
--- a/arch/um/os-Linux/umid.c
+++ b/arch/um/os-Linux/umid.c
@@ -18,7 +18,7 @@
18#define UMID_LEN 64 18#define UMID_LEN 64
19 19
20/* Changed by set_umid, which is run early in boot */ 20/* Changed by set_umid, which is run early in boot */
21char umid[UMID_LEN] = { 0 }; 21static char umid[UMID_LEN] = { 0 };
22 22
23/* Changed by set_uml_dir and make_uml_dir, which are run early in boot */ 23/* Changed by set_uml_dir and make_uml_dir, which are run early in boot */
24static char *uml_dir = UML_DIR; 24static char *uml_dir = UML_DIR;
@@ -235,6 +235,7 @@ int __init set_umid(char *name)
235 return 0; 235 return 0;
236} 236}
237 237
238/* Changed in make_umid, which is called during early boot */
238static int umid_setup = 0; 239static int umid_setup = 0;
239 240
240int __init make_umid(void) 241int __init make_umid(void)
diff --git a/arch/um/sys-x86_64/ptrace.c b/arch/um/sys-x86_64/ptrace.c
index 147bbf05cbc2..55b66e09a98c 100644
--- a/arch/um/sys-x86_64/ptrace.c
+++ b/arch/um/sys-x86_64/ptrace.c
@@ -71,8 +71,6 @@ int poke_user(struct task_struct *child, long addr, long data)
71 71
72 if (addr < MAX_REG_OFFSET) 72 if (addr < MAX_REG_OFFSET)
73 return putreg(child, addr, data); 73 return putreg(child, addr, data);
74
75#if 0 /* Need x86_64 debugregs handling */
76 else if((addr >= offsetof(struct user, u_debugreg[0])) && 74 else if((addr >= offsetof(struct user, u_debugreg[0])) &&
77 (addr <= offsetof(struct user, u_debugreg[7]))){ 75 (addr <= offsetof(struct user, u_debugreg[7]))){
78 addr -= offsetof(struct user, u_debugreg[0]); 76 addr -= offsetof(struct user, u_debugreg[0]);
@@ -81,7 +79,6 @@ int poke_user(struct task_struct *child, long addr, long data)
81 child->thread.arch.debugregs[addr] = data; 79 child->thread.arch.debugregs[addr] = data;
82 return 0; 80 return 0;
83 } 81 }
84#endif
85 return -EIO; 82 return -EIO;
86} 83}
87 84
@@ -119,14 +116,12 @@ int peek_user(struct task_struct *child, long addr, long data)
119 if(addr < MAX_REG_OFFSET){ 116 if(addr < MAX_REG_OFFSET){
120 tmp = getreg(child, addr); 117 tmp = getreg(child, addr);
121 } 118 }
122#if 0 /* Need x86_64 debugregs handling */
123 else if((addr >= offsetof(struct user, u_debugreg[0])) && 119 else if((addr >= offsetof(struct user, u_debugreg[0])) &&
124 (addr <= offsetof(struct user, u_debugreg[7]))){ 120 (addr <= offsetof(struct user, u_debugreg[7]))){
125 addr -= offsetof(struct user, u_debugreg[0]); 121 addr -= offsetof(struct user, u_debugreg[0]);
126 addr = addr >> 2; 122 addr = addr >> 2;
127 tmp = child->thread.arch.debugregs[addr]; 123 tmp = child->thread.arch.debugregs[addr];
128 } 124 }
129#endif
130 return put_user(tmp, (unsigned long *) data); 125 return put_user(tmp, (unsigned long *) data);
131} 126}
132 127
diff --git a/arch/um/sys-x86_64/syscalls.c b/arch/um/sys-x86_64/syscalls.c
index 73ce4463f70c..01b91f9fa789 100644
--- a/arch/um/sys-x86_64/syscalls.c
+++ b/arch/um/sys-x86_64/syscalls.c
@@ -16,6 +16,7 @@
16#include "asm/prctl.h" /* XXX This should get the constants from libc */ 16#include "asm/prctl.h" /* XXX This should get the constants from libc */
17#include "choose-mode.h" 17#include "choose-mode.h"
18#include "kern.h" 18#include "kern.h"
19#include "os.h"
19 20
20asmlinkage long sys_uname64(struct new_utsname __user * name) 21asmlinkage long sys_uname64(struct new_utsname __user * name)
21{ 22{
@@ -58,40 +59,69 @@ static long arch_prctl_tt(int code, unsigned long addr)
58 59
59#ifdef CONFIG_MODE_SKAS 60#ifdef CONFIG_MODE_SKAS
60 61
61/* XXX: Must also call arch_prctl in the host, beside saving the segment bases! */ 62long arch_prctl_skas(struct task_struct *task, int code,
62static long arch_prctl_skas(int code, unsigned long addr) 63 unsigned long __user *addr)
63{ 64{
64 long ret = 0; 65 unsigned long *ptr = addr, tmp;
66 long ret;
67 int pid = task->mm->context.skas.id.u.pid;
65 68
69 /*
70 * With ARCH_SET_FS (and ARCH_SET_GS is treated similarly to
71 * be safe), we need to call arch_prctl on the host because
72 * setting %fs may result in something else happening (like a
73 * GDT or thread.fs being set instead). So, we let the host
74 * fiddle the registers and thread struct and restore the
75 * registers afterwards.
76 *
77 * So, the saved registers are stored to the process (this
78 * needed because a stub may have been the last thing to run),
79 * arch_prctl is run on the host, then the registers are read
80 * back.
81 */
66 switch(code){ 82 switch(code){
67 case ARCH_SET_FS: 83 case ARCH_SET_FS:
68 current->thread.regs.regs.skas.regs[FS_BASE / sizeof(unsigned long)] = addr;
69 break;
70 case ARCH_SET_GS: 84 case ARCH_SET_GS:
71 current->thread.regs.regs.skas.regs[GS_BASE / sizeof(unsigned long)] = addr; 85 restore_registers(pid, &current->thread.regs.regs);
86 break;
87 case ARCH_GET_FS:
88 case ARCH_GET_GS:
89 /*
90 * With these two, we read to a local pointer and
91 * put_user it to the userspace pointer that we were
92 * given. If addr isn't valid (because it hasn't been
93 * faulted in or is just bogus), we want put_user to
94 * fault it in (or return -EFAULT) instead of having
95 * the host return -EFAULT.
96 */
97 ptr = &tmp;
98 }
99
100 ret = os_arch_prctl(pid, code, ptr);
101 if(ret)
102 return ret;
103
104 switch(code){
105 case ARCH_SET_FS:
106 case ARCH_SET_GS:
107 save_registers(pid, &current->thread.regs.regs);
72 break; 108 break;
73 case ARCH_GET_FS: 109 case ARCH_GET_FS:
74 ret = put_user(current->thread.regs.regs.skas. 110 ret = put_user(tmp, addr);
75 regs[FS_BASE / sizeof(unsigned long)],
76 (unsigned long __user *)addr);
77 break; 111 break;
78 case ARCH_GET_GS: 112 case ARCH_GET_GS:
79 ret = put_user(current->thread.regs.regs.skas. 113 ret = put_user(tmp, addr);
80 regs[GS_BASE / sizeof(unsigned long)],
81 (unsigned long __user *)addr);
82 break; 114 break;
83 default:
84 ret = -EINVAL;
85 break;
86 } 115 }
87 116
88 return(ret); 117 return ret;
89} 118}
90#endif 119#endif
91 120
92long sys_arch_prctl(int code, unsigned long addr) 121long sys_arch_prctl(int code, unsigned long addr)
93{ 122{
94 return(CHOOSE_MODE_PROC(arch_prctl_tt, arch_prctl_skas, code, addr)); 123 return CHOOSE_MODE_PROC(arch_prctl_tt, arch_prctl_skas, current, code,
124 (unsigned long __user *) addr);
95} 125}
96 126
97long sys_clone(unsigned long clone_flags, unsigned long newsp, 127long sys_clone(unsigned long clone_flags, unsigned long newsp,
@@ -105,5 +135,14 @@ long sys_clone(unsigned long clone_flags, unsigned long newsp,
105 ret = do_fork(clone_flags, newsp, &current->thread.regs, 0, parent_tid, 135 ret = do_fork(clone_flags, newsp, &current->thread.regs, 0, parent_tid,
106 child_tid); 136 child_tid);
107 current->thread.forking = 0; 137 current->thread.forking = 0;
108 return(ret); 138 return ret;
139}
140
141void arch_switch_to_skas(struct task_struct *from, struct task_struct *to)
142{
143 if(to->thread.arch.fs == 0)
144 return;
145
146 arch_prctl_skas(to, ARCH_SET_FS, (void __user *) to->thread.arch.fs);
109} 147}
148
diff --git a/arch/um/sys-x86_64/tls.c b/arch/um/sys-x86_64/tls.c
index ce1bf1b81c43..febbc94be25f 100644
--- a/arch/um/sys-x86_64/tls.c
+++ b/arch/um/sys-x86_64/tls.c
@@ -1,14 +1,17 @@
1#include "linux/sched.h" 1#include "linux/sched.h"
2 2
3void debug_arch_force_load_TLS(void)
4{
5}
6
7void clear_flushed_tls(struct task_struct *task) 3void clear_flushed_tls(struct task_struct *task)
8{ 4{
9} 5}
10 6
11int arch_copy_tls(struct task_struct *t) 7int arch_copy_tls(struct task_struct *t)
12{ 8{
9 /*
10 * If CLONE_SETTLS is set, we need to save the thread id
11 * (which is argument 5, child_tid, of clone) so it can be set
12 * during context switches.
13 */
14 t->thread.arch.fs = t->thread.regs.regs.skas.regs[R8 / sizeof(long)];
15
13 return 0; 16 return 0;
14} 17}
diff --git a/arch/v850/Kconfig b/arch/v850/Kconfig
index f0d4d72e560f..dbfab8fc9b49 100644
--- a/arch/v850/Kconfig
+++ b/arch/v850/Kconfig
@@ -10,6 +10,9 @@ mainmenu "uClinux/v850 (w/o MMU) Kernel Configuration"
10config MMU 10config MMU
11 bool 11 bool
12 default n 12 default n
13config ZONE_DMA
14 bool
15 default y
13config RWSEM_GENERIC_SPINLOCK 16config RWSEM_GENERIC_SPINLOCK
14 bool 17 bool
15 default y 18 default y
diff --git a/arch/v850/kernel/anna.c b/arch/v850/kernel/anna.c
index 40892d3e3c24..0e429041a117 100644
--- a/arch/v850/kernel/anna.c
+++ b/arch/v850/kernel/anna.c
@@ -114,7 +114,7 @@ static struct v850e_intc_irq_init irq_inits[] = {
114 { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 3, 5 }, 114 { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 3, 5 },
115 { 0 } 115 { 0 }
116}; 116};
117#define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) 117#define NUM_IRQ_INITS (ARRAY_SIZE(irq_inits) - 1)
118 118
119static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; 119static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS];
120 120
diff --git a/arch/v850/kernel/as85ep1.c b/arch/v850/kernel/as85ep1.c
index 5352f8a5aa07..18437bc5c3ad 100644
--- a/arch/v850/kernel/as85ep1.c
+++ b/arch/v850/kernel/as85ep1.c
@@ -142,7 +142,7 @@ static struct v850e_intc_irq_init irq_inits[] = {
142 { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 3, 5 }, 142 { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 3, 5 },
143 { 0 } 143 { 0 }
144}; 144};
145#define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) 145#define NUM_IRQ_INITS (ARRAY_SIZE(irq_inits) - 1)
146 146
147static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; 147static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS];
148 148
diff --git a/arch/v850/kernel/fpga85e2c.c b/arch/v850/kernel/fpga85e2c.c
index cb04a6954ccb..5c4923558a75 100644
--- a/arch/v850/kernel/fpga85e2c.c
+++ b/arch/v850/kernel/fpga85e2c.c
@@ -138,7 +138,7 @@ struct v850e_intc_irq_init irq_inits[] = {
138 { "RPU", IRQ_RPU(0), IRQ_RPU_NUM, 1, 6 }, 138 { "RPU", IRQ_RPU(0), IRQ_RPU_NUM, 1, 6 },
139 { 0 } 139 { 0 }
140}; 140};
141#define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) 141#define NUM_IRQ_INITS (ARRAY_SIZE(irq_inits) - 1)
142 142
143struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; 143struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS];
144 144
diff --git a/arch/v850/kernel/gbus_int.c b/arch/v850/kernel/gbus_int.c
index 25d636e79e6a..b2bcc251f65b 100644
--- a/arch/v850/kernel/gbus_int.c
+++ b/arch/v850/kernel/gbus_int.c
@@ -16,6 +16,7 @@
16#include <linux/irq.h> 16#include <linux/irq.h>
17#include <linux/interrupt.h> 17#include <linux/interrupt.h>
18#include <linux/signal.h> 18#include <linux/signal.h>
19#include <linux/kernel.h>
19 20
20#include <asm/machdep.h> 21#include <asm/machdep.h>
21 22
@@ -36,7 +37,7 @@ struct used_gint {
36 { 1, GBUS_INT_PRIORITY_HIGH }, 37 { 1, GBUS_INT_PRIORITY_HIGH },
37 { 3, GBUS_INT_PRIORITY_LOW } 38 { 3, GBUS_INT_PRIORITY_LOW }
38}; 39};
39#define NUM_USED_GINTS (sizeof used_gint / sizeof used_gint[0]) 40#define NUM_USED_GINTS ARRAY_SIZE(used_gint)
40 41
41/* A table of which GINT is used by each GBUS interrupts (they are 42/* A table of which GINT is used by each GBUS interrupts (they are
42 assigned based on priority). */ 43 assigned based on priority). */
@@ -231,8 +232,7 @@ struct gbus_int_irq_init gbus_irq_inits[] __initdata = {
231 { "GBUS_INT", IRQ_GBUS_INT(0), IRQ_GBUS_INT_NUM, 1, 6}, 232 { "GBUS_INT", IRQ_GBUS_INT(0), IRQ_GBUS_INT_NUM, 1, 6},
232 { 0 } 233 { 0 }
233}; 234};
234#define NUM_GBUS_IRQ_INITS \ 235#define NUM_GBUS_IRQ_INITS (ARRAY_SIZE(gbus_irq_inits) - 1)
235 ((sizeof gbus_irq_inits / sizeof gbus_irq_inits[0]) - 1)
236 236
237static struct hw_interrupt_type gbus_hw_itypes[NUM_GBUS_IRQ_INITS]; 237static struct hw_interrupt_type gbus_hw_itypes[NUM_GBUS_IRQ_INITS];
238 238
diff --git a/arch/v850/kernel/ma.c b/arch/v850/kernel/ma.c
index 2aa8ab0f7edc..143774de75e1 100644
--- a/arch/v850/kernel/ma.c
+++ b/arch/v850/kernel/ma.c
@@ -43,7 +43,7 @@ static struct v850e_intc_irq_init irq_inits[] = {
43 { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 4, 5 }, 43 { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 4, 5 },
44 { 0 } 44 { 0 }
45}; 45};
46#define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) 46#define NUM_IRQ_INITS (ARRAY_SIZE(irq_inits) - 1)
47 47
48static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; 48static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS];
49 49
diff --git a/arch/v850/kernel/me2.c b/arch/v850/kernel/me2.c
index 14b0c8858aa4..38be5c194f6b 100644
--- a/arch/v850/kernel/me2.c
+++ b/arch/v850/kernel/me2.c
@@ -44,7 +44,7 @@ static struct v850e_intc_irq_init irq_inits[] = {
44 { "UBTITO", IRQ_INTUBTITO(0), IRQ_INTUBTITO_NUM, 5, 4 }, 44 { "UBTITO", IRQ_INTUBTITO(0), IRQ_INTUBTITO_NUM, 5, 4 },
45 { 0 } 45 { 0 }
46}; 46};
47#define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) 47#define NUM_IRQ_INITS (ARRAY_SIZE(irq_inits) - 1)
48 48
49static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; 49static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS];
50 50
diff --git a/arch/v850/kernel/rte_cb.c b/arch/v850/kernel/rte_cb.c
index 0f7f6cd705a2..43018e1edebd 100644
--- a/arch/v850/kernel/rte_cb.c
+++ b/arch/v850/kernel/rte_cb.c
@@ -15,6 +15,7 @@
15#include <linux/irq.h> 15#include <linux/irq.h>
16#include <linux/fs.h> 16#include <linux/fs.h>
17#include <linux/module.h> 17#include <linux/module.h>
18#include <linux/kernel.h>
18 19
19#include <asm/machdep.h> 20#include <asm/machdep.h>
20#include <asm/v850e_uart.h> 21#include <asm/v850e_uart.h>
@@ -176,8 +177,7 @@ static struct gbus_int_irq_init gbus_irq_inits[] = {
176#endif 177#endif
177 { 0 } 178 { 0 }
178}; 179};
179#define NUM_GBUS_IRQ_INITS \ 180#define NUM_GBUS_IRQ_INITS (ARRAY_SIZE(gbus_irq_inits) - 1)
180 ((sizeof gbus_irq_inits / sizeof gbus_irq_inits[0]) - 1)
181 181
182static struct hw_interrupt_type gbus_hw_itypes[NUM_GBUS_IRQ_INITS]; 182static struct hw_interrupt_type gbus_hw_itypes[NUM_GBUS_IRQ_INITS];
183 183
diff --git a/arch/v850/kernel/rte_cb_leds.c b/arch/v850/kernel/rte_cb_leds.c
index 996bd4f33ecb..aa47ab1dcd87 100644
--- a/arch/v850/kernel/rte_cb_leds.c
+++ b/arch/v850/kernel/rte_cb_leds.c
@@ -117,7 +117,7 @@ static loff_t leds_dev_lseek (struct file *file, loff_t offs, int whence)
117 return 0; 117 return 0;
118} 118}
119 119
120static struct file_operations leds_fops = { 120static const struct file_operations leds_fops = {
121 .read = leds_dev_read, 121 .read = leds_dev_read,
122 .write = leds_dev_write, 122 .write = leds_dev_write,
123 .llseek = leds_dev_lseek 123 .llseek = leds_dev_lseek
diff --git a/arch/v850/kernel/rte_mb_a_pci.c b/arch/v850/kernel/rte_mb_a_pci.c
index 35213fa9f7d8..35a4bd5515cb 100644
--- a/arch/v850/kernel/rte_mb_a_pci.c
+++ b/arch/v850/kernel/rte_mb_a_pci.c
@@ -70,8 +70,7 @@ static struct mb_pci_dev_irq mb_pci_dev_irqs[] = {
70 /* PCI slot 2 */ 70 /* PCI slot 2 */
71 { 9, IRQ_MB_A_PCI2(0), 1 } 71 { 9, IRQ_MB_A_PCI2(0), 1 }
72}; 72};
73#define NUM_MB_PCI_DEV_IRQS \ 73#define NUM_MB_PCI_DEV_IRQS ARRAY_SIZE(mb_pci_dev_irqs)
74 (sizeof mb_pci_dev_irqs / sizeof mb_pci_dev_irqs[0])
75 74
76 75
77/* PCI configuration primitives. */ 76/* PCI configuration primitives. */
diff --git a/arch/v850/kernel/rte_me2_cb.c b/arch/v850/kernel/rte_me2_cb.c
index 3be355a029e2..46803d48dffe 100644
--- a/arch/v850/kernel/rte_me2_cb.c
+++ b/arch/v850/kernel/rte_me2_cb.c
@@ -170,8 +170,7 @@ static struct cb_pic_irq_init cb_pic_irq_inits[] = {
170 { "CB_EXTTM2", IRQ_CB_EXTTM2, 1, 1, 6 }, 170 { "CB_EXTTM2", IRQ_CB_EXTTM2, 1, 1, 6 },
171 { 0 } 171 { 0 }
172}; 172};
173#define NUM_CB_PIC_IRQ_INITS \ 173#define NUM_CB_PIC_IRQ_INITS (ARRAY_SIZE(cb_pic_irq_inits) - 1)
174 ((sizeof cb_pic_irq_inits / sizeof cb_pic_irq_inits[0]) - 1)
175 174
176static struct hw_interrupt_type cb_pic_hw_itypes[NUM_CB_PIC_IRQ_INITS]; 175static struct hw_interrupt_type cb_pic_hw_itypes[NUM_CB_PIC_IRQ_INITS];
177static unsigned char cb_pic_active_irqs = 0; 176static unsigned char cb_pic_active_irqs = 0;
diff --git a/arch/v850/kernel/setup.c b/arch/v850/kernel/setup.c
index 1bf672a25692..a914f244f494 100644
--- a/arch/v850/kernel/setup.c
+++ b/arch/v850/kernel/setup.c
@@ -42,7 +42,7 @@ extern char _root_fs_image_start __attribute__ ((__weak__));
42extern char _root_fs_image_end __attribute__ ((__weak__)); 42extern char _root_fs_image_end __attribute__ ((__weak__));
43 43
44 44
45char command_line[COMMAND_LINE_SIZE]; 45char __initdata command_line[COMMAND_LINE_SIZE];
46 46
47/* Memory not used by the kernel. */ 47/* Memory not used by the kernel. */
48static unsigned long total_ram_pages; 48static unsigned long total_ram_pages;
@@ -64,8 +64,8 @@ void __init setup_arch (char **cmdline)
64{ 64{
65 /* Keep a copy of command line */ 65 /* Keep a copy of command line */
66 *cmdline = command_line; 66 *cmdline = command_line;
67 memcpy (saved_command_line, command_line, COMMAND_LINE_SIZE); 67 memcpy (boot_command_line, command_line, COMMAND_LINE_SIZE);
68 saved_command_line[COMMAND_LINE_SIZE - 1] = '\0'; 68 boot_command_line[COMMAND_LINE_SIZE - 1] = '\0';
69 69
70 console_verbose (); 70 console_verbose ();
71 71
diff --git a/arch/v850/kernel/teg.c b/arch/v850/kernel/teg.c
index 290d50665016..699248f92aae 100644
--- a/arch/v850/kernel/teg.c
+++ b/arch/v850/kernel/teg.c
@@ -43,7 +43,7 @@ static struct v850e_intc_irq_init irq_inits[] = {
43 { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 1, 5 }, 43 { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 1, 5 },
44 { 0 } 44 { 0 }
45}; 45};
46#define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) 46#define NUM_IRQ_INITS (ARRAY_SIZE(irq_inits) - 1)
47 47
48static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; 48static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS];
49 49
diff --git a/arch/v850/kernel/time.c b/arch/v850/kernel/time.c
index cd06f47c0ea7..486e3a441c86 100644
--- a/arch/v850/kernel/time.c
+++ b/arch/v850/kernel/time.c
@@ -28,14 +28,6 @@
28#define TICK_SIZE (tick_nsec / 1000) 28#define TICK_SIZE (tick_nsec / 1000)
29 29
30/* 30/*
31 * Scheduler clock - returns current time in nanosec units.
32 */
33unsigned long long sched_clock(void)
34{
35 return (unsigned long long)jiffies * (1000000000 / HZ);
36}
37
38/*
39 * timer_interrupt() needs to keep up the real-time clock, 31 * timer_interrupt() needs to keep up the real-time clock,
40 * as well as call the "do_timer()" routine every clocktick 32 * as well as call the "do_timer()" routine every clocktick
41 */ 33 */
diff --git a/arch/v850/kernel/vmlinux.lds.S b/arch/v850/kernel/vmlinux.lds.S
index 3a5fd07fe064..356308221251 100644
--- a/arch/v850/kernel/vmlinux.lds.S
+++ b/arch/v850/kernel/vmlinux.lds.S
@@ -190,12 +190,16 @@
190 __root_fs_image_start = . ; \ 190 __root_fs_image_start = . ; \
191 *(.root) \ 191 *(.root) \
192 __root_fs_image_end = . ; 192 __root_fs_image_end = . ;
193
194#ifdef CONFIG_BLK_DEV_INITRD
193/* The initramfs archive. */ 195/* The initramfs archive. */
194#define INITRAMFS_CONTENTS \ 196#define INITRAMFS_CONTENTS \
195 . = ALIGN (4) ; \ 197 . = ALIGN (4) ; \
196 ___initramfs_start = . ; \ 198 ___initramfs_start = . ; \
197 *(.init.ramfs) \ 199 *(.init.ramfs) \
198 ___initramfs_end = . ; 200 ___initramfs_end = . ;
201#endif
202
199/* Where the initial bootmap (bitmap for the boot-time memory allocator) 203/* Where the initial bootmap (bitmap for the boot-time memory allocator)
200 should be place. */ 204 should be place. */
201#define BOOTMAP_CONTENTS \ 205#define BOOTMAP_CONTENTS \
diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig
index d4275537b25b..02dd39457bcf 100644
--- a/arch/x86_64/Kconfig
+++ b/arch/x86_64/Kconfig
@@ -44,6 +44,10 @@ config MMU
44 bool 44 bool
45 default y 45 default y
46 46
47config ZONE_DMA
48 bool
49 default y
50
47config ISA 51config ISA
48 bool 52 bool
49 53
diff --git a/arch/x86_64/ia32/ia32_binfmt.c b/arch/x86_64/ia32/ia32_binfmt.c
index 5ce0bd486bbf..6efe04f3cbca 100644
--- a/arch/x86_64/ia32/ia32_binfmt.c
+++ b/arch/x86_64/ia32/ia32_binfmt.c
@@ -300,12 +300,10 @@ int ia32_setup_arg_pages(struct linux_binprm *bprm, unsigned long stack_top,
300 bprm->loader += stack_base; 300 bprm->loader += stack_base;
301 bprm->exec += stack_base; 301 bprm->exec += stack_base;
302 302
303 mpnt = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); 303 mpnt = kmem_cache_zalloc(vm_area_cachep, GFP_KERNEL);
304 if (!mpnt) 304 if (!mpnt)
305 return -ENOMEM; 305 return -ENOMEM;
306 306
307 memset(mpnt, 0, sizeof(*mpnt));
308
309 down_write(&mm->mmap_sem); 307 down_write(&mm->mmap_sem);
310 { 308 {
311 mpnt->vm_mm = mm; 309 mpnt->vm_mm = mm;
diff --git a/arch/x86_64/ia32/ia32entry.S b/arch/x86_64/ia32/ia32entry.S
index b4aa875e175b..5f32cf4de5fb 100644
--- a/arch/x86_64/ia32/ia32entry.S
+++ b/arch/x86_64/ia32/ia32entry.S
@@ -515,7 +515,7 @@ ia32_sys_call_table:
515 .quad sys32_vm86_warning /* vm86old */ 515 .quad sys32_vm86_warning /* vm86old */
516 .quad compat_sys_wait4 516 .quad compat_sys_wait4
517 .quad sys_swapoff /* 115 */ 517 .quad sys_swapoff /* 115 */
518 .quad sys32_sysinfo 518 .quad compat_sys_sysinfo
519 .quad sys32_ipc 519 .quad sys32_ipc
520 .quad sys_fsync 520 .quad sys_fsync
521 .quad stub32_sigreturn 521 .quad stub32_sigreturn
diff --git a/arch/x86_64/ia32/sys_ia32.c b/arch/x86_64/ia32/sys_ia32.c
index c9bac3af29d6..200fdde18d96 100644
--- a/arch/x86_64/ia32/sys_ia32.c
+++ b/arch/x86_64/ia32/sys_ia32.c
@@ -523,72 +523,6 @@ sys32_sysfs(int option, u32 arg1, u32 arg2)
523 return sys_sysfs(option, arg1, arg2); 523 return sys_sysfs(option, arg1, arg2);
524} 524}
525 525
526struct sysinfo32 {
527 s32 uptime;
528 u32 loads[3];
529 u32 totalram;
530 u32 freeram;
531 u32 sharedram;
532 u32 bufferram;
533 u32 totalswap;
534 u32 freeswap;
535 unsigned short procs;
536 unsigned short pad;
537 u32 totalhigh;
538 u32 freehigh;
539 u32 mem_unit;
540 char _f[20-2*sizeof(u32)-sizeof(int)];
541};
542
543asmlinkage long
544sys32_sysinfo(struct sysinfo32 __user *info)
545{
546 struct sysinfo s;
547 int ret;
548 mm_segment_t old_fs = get_fs ();
549 int bitcount = 0;
550
551 set_fs (KERNEL_DS);
552 ret = sys_sysinfo((struct sysinfo __user *)&s);
553 set_fs (old_fs);
554
555 /* Check to see if any memory value is too large for 32-bit and scale
556 * down if needed
557 */
558 if ((s.totalram >> 32) || (s.totalswap >> 32)) {
559 while (s.mem_unit < PAGE_SIZE) {
560 s.mem_unit <<= 1;
561 bitcount++;
562 }
563 s.totalram >>= bitcount;
564 s.freeram >>= bitcount;
565 s.sharedram >>= bitcount;
566 s.bufferram >>= bitcount;
567 s.totalswap >>= bitcount;
568 s.freeswap >>= bitcount;
569 s.totalhigh >>= bitcount;
570 s.freehigh >>= bitcount;
571 }
572
573 if (!access_ok(VERIFY_WRITE, info, sizeof(struct sysinfo32)) ||
574 __put_user (s.uptime, &info->uptime) ||
575 __put_user (s.loads[0], &info->loads[0]) ||
576 __put_user (s.loads[1], &info->loads[1]) ||
577 __put_user (s.loads[2], &info->loads[2]) ||
578 __put_user (s.totalram, &info->totalram) ||
579 __put_user (s.freeram, &info->freeram) ||
580 __put_user (s.sharedram, &info->sharedram) ||
581 __put_user (s.bufferram, &info->bufferram) ||
582 __put_user (s.totalswap, &info->totalswap) ||
583 __put_user (s.freeswap, &info->freeswap) ||
584 __put_user (s.procs, &info->procs) ||
585 __put_user (s.totalhigh, &info->totalhigh) ||
586 __put_user (s.freehigh, &info->freehigh) ||
587 __put_user (s.mem_unit, &info->mem_unit))
588 return -EFAULT;
589 return 0;
590}
591
592asmlinkage long 526asmlinkage long
593sys32_sched_rr_get_interval(compat_pid_t pid, struct compat_timespec __user *interval) 527sys32_sched_rr_get_interval(compat_pid_t pid, struct compat_timespec __user *interval)
594{ 528{
diff --git a/arch/x86_64/ia32/syscall32.c b/arch/x86_64/ia32/syscall32.c
index 59f1fa155915..568ff0df89e7 100644
--- a/arch/x86_64/ia32/syscall32.c
+++ b/arch/x86_64/ia32/syscall32.c
@@ -18,68 +18,34 @@ extern unsigned char syscall32_syscall[], syscall32_syscall_end[];
18extern unsigned char syscall32_sysenter[], syscall32_sysenter_end[]; 18extern unsigned char syscall32_sysenter[], syscall32_sysenter_end[];
19extern int sysctl_vsyscall32; 19extern int sysctl_vsyscall32;
20 20
21char *syscall32_page; 21static struct page *syscall32_pages[1];
22static int use_sysenter = -1; 22static int use_sysenter = -1;
23 23
24static struct page *
25syscall32_nopage(struct vm_area_struct *vma, unsigned long adr, int *type)
26{
27 struct page *p = virt_to_page(adr - vma->vm_start + syscall32_page);
28 get_page(p);
29 return p;
30}
31
32/* Prevent VMA merging */
33static void syscall32_vma_close(struct vm_area_struct *vma)
34{
35}
36
37static struct vm_operations_struct syscall32_vm_ops = {
38 .close = syscall32_vma_close,
39 .nopage = syscall32_nopage,
40};
41
42struct linux_binprm; 24struct linux_binprm;
43 25
44/* Setup a VMA at program startup for the vsyscall page */ 26/* Setup a VMA at program startup for the vsyscall page */
45int syscall32_setup_pages(struct linux_binprm *bprm, int exstack) 27int syscall32_setup_pages(struct linux_binprm *bprm, int exstack)
46{ 28{
47 int npages = (VSYSCALL32_END - VSYSCALL32_BASE) >> PAGE_SHIFT;
48 struct vm_area_struct *vma;
49 struct mm_struct *mm = current->mm; 29 struct mm_struct *mm = current->mm;
50 int ret; 30 int ret;
51 31
52 vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL); 32 down_write(&mm->mmap_sem);
53 if (!vma)
54 return -ENOMEM;
55
56 memset(vma, 0, sizeof(struct vm_area_struct));
57 /* Could randomize here */
58 vma->vm_start = VSYSCALL32_BASE;
59 vma->vm_end = VSYSCALL32_END;
60 /* MAYWRITE to allow gdb to COW and set breakpoints */
61 vma->vm_flags = VM_READ|VM_EXEC|VM_MAYREAD|VM_MAYEXEC|VM_MAYWRITE;
62 /* 33 /*
34 * MAYWRITE to allow gdb to COW and set breakpoints
35 *
63 * Make sure the vDSO gets into every core dump. 36 * Make sure the vDSO gets into every core dump.
64 * Dumping its contents makes post-mortem fully interpretable later 37 * Dumping its contents makes post-mortem fully interpretable later
65 * without matching up the same kernel and hardware config to see 38 * without matching up the same kernel and hardware config to see
66 * what PC values meant. 39 * what PC values meant.
67 */ 40 */
68 vma->vm_flags |= VM_ALWAYSDUMP; 41 /* Could randomize here */
69 vma->vm_flags |= mm->def_flags; 42 ret = install_special_mapping(mm, VSYSCALL32_BASE, PAGE_SIZE,
70 vma->vm_page_prot = protection_map[vma->vm_flags & 7]; 43 VM_READ|VM_EXEC|
71 vma->vm_ops = &syscall32_vm_ops; 44 VM_MAYREAD|VM_MAYWRITE|VM_MAYEXEC|
72 vma->vm_mm = mm; 45 VM_ALWAYSDUMP,
73 46 syscall32_pages);
74 down_write(&mm->mmap_sem);
75 if ((ret = insert_vm_struct(mm, vma))) {
76 up_write(&mm->mmap_sem);
77 kmem_cache_free(vm_area_cachep, vma);
78 return ret;
79 }
80 mm->total_vm += npages;
81 up_write(&mm->mmap_sem); 47 up_write(&mm->mmap_sem);
82 return 0; 48 return ret;
83} 49}
84 50
85const char *arch_vma_name(struct vm_area_struct *vma) 51const char *arch_vma_name(struct vm_area_struct *vma)
@@ -92,9 +58,10 @@ const char *arch_vma_name(struct vm_area_struct *vma)
92 58
93static int __init init_syscall32(void) 59static int __init init_syscall32(void)
94{ 60{
95 syscall32_page = (void *)get_zeroed_page(GFP_KERNEL); 61 char *syscall32_page = (void *)get_zeroed_page(GFP_KERNEL);
96 if (!syscall32_page) 62 if (!syscall32_page)
97 panic("Cannot allocate syscall32 page"); 63 panic("Cannot allocate syscall32 page");
64 syscall32_pages[0] = virt_to_page(syscall32_page);
98 if (use_sysenter > 0) { 65 if (use_sysenter > 0) {
99 memcpy(syscall32_page, syscall32_sysenter, 66 memcpy(syscall32_page, syscall32_sysenter,
100 syscall32_sysenter_end - syscall32_sysenter); 67 syscall32_sysenter_end - syscall32_sysenter);
diff --git a/arch/x86_64/kernel/head64.c b/arch/x86_64/kernel/head64.c
index cc230b93cd1c..5f197b0a330a 100644
--- a/arch/x86_64/kernel/head64.c
+++ b/arch/x86_64/kernel/head64.c
@@ -34,8 +34,6 @@ static void __init clear_bss(void)
34#define OLD_CL_BASE_ADDR 0x90000 34#define OLD_CL_BASE_ADDR 0x90000
35#define OLD_CL_OFFSET 0x90022 35#define OLD_CL_OFFSET 0x90022
36 36
37extern char saved_command_line[];
38
39static void __init copy_bootdata(char *real_mode_data) 37static void __init copy_bootdata(char *real_mode_data)
40{ 38{
41 int new_data; 39 int new_data;
@@ -50,7 +48,7 @@ static void __init copy_bootdata(char *real_mode_data)
50 new_data = OLD_CL_BASE_ADDR + * (u16 *) OLD_CL_OFFSET; 48 new_data = OLD_CL_BASE_ADDR + * (u16 *) OLD_CL_OFFSET;
51 } 49 }
52 command_line = (char *) ((u64)(new_data)); 50 command_line = (char *) ((u64)(new_data));
53 memcpy(saved_command_line, command_line, COMMAND_LINE_SIZE); 51 memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
54} 52}
55 53
56void __init x86_64_start_kernel(char * real_mode_data) 54void __init x86_64_start_kernel(char * real_mode_data)
diff --git a/arch/x86_64/kernel/mce.c b/arch/x86_64/kernel/mce.c
index ac085038af29..bdb54a2c9f18 100644
--- a/arch/x86_64/kernel/mce.c
+++ b/arch/x86_64/kernel/mce.c
@@ -516,7 +516,7 @@ static int mce_ioctl(struct inode *i, struct file *f,unsigned int cmd, unsigned
516 } 516 }
517} 517}
518 518
519static struct file_operations mce_chrdev_ops = { 519static const struct file_operations mce_chrdev_ops = {
520 .read = mce_read, 520 .read = mce_read,
521 .ioctl = mce_ioctl, 521 .ioctl = mce_ioctl,
522}; 522};
diff --git a/arch/x86_64/kernel/mce_amd.c b/arch/x86_64/kernel/mce_amd.c
index fa09debad4b7..93c707257637 100644
--- a/arch/x86_64/kernel/mce_amd.c
+++ b/arch/x86_64/kernel/mce_amd.c
@@ -401,7 +401,6 @@ static __cpuinit int allocate_threshold_blocks(unsigned int cpu,
401 b = kzalloc(sizeof(struct threshold_block), GFP_KERNEL); 401 b = kzalloc(sizeof(struct threshold_block), GFP_KERNEL);
402 if (!b) 402 if (!b)
403 return -ENOMEM; 403 return -ENOMEM;
404 memset(b, 0, sizeof(struct threshold_block));
405 404
406 b->block = block; 405 b->block = block;
407 b->bank = bank; 406 b->bank = bank;
@@ -490,7 +489,6 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank)
490 err = -ENOMEM; 489 err = -ENOMEM;
491 goto out; 490 goto out;
492 } 491 }
493 memset(b, 0, sizeof(struct threshold_bank));
494 492
495 kobject_set_name(&b->kobj, "threshold_bank%i", bank); 493 kobject_set_name(&b->kobj, "threshold_bank%i", bank);
496 b->kobj.parent = &per_cpu(device_mce, cpu).kobj; 494 b->kobj.parent = &per_cpu(device_mce, cpu).kobj;
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c
index af425a8049fb..60477244d1a3 100644
--- a/arch/x86_64/kernel/setup.c
+++ b/arch/x86_64/kernel/setup.c
@@ -100,7 +100,7 @@ EXPORT_SYMBOL_GPL(edid_info);
100 100
101extern int root_mountflags; 101extern int root_mountflags;
102 102
103char command_line[COMMAND_LINE_SIZE]; 103char __initdata command_line[COMMAND_LINE_SIZE];
104 104
105struct resource standard_io_resources[] = { 105struct resource standard_io_resources[] = {
106 { .name = "dma1", .start = 0x00, .end = 0x1f, 106 { .name = "dma1", .start = 0x00, .end = 0x1f,
@@ -343,7 +343,7 @@ static void discover_ebda(void)
343 343
344void __init setup_arch(char **cmdline_p) 344void __init setup_arch(char **cmdline_p)
345{ 345{
346 printk(KERN_INFO "Command line: %s\n", saved_command_line); 346 printk(KERN_INFO "Command line: %s\n", boot_command_line);
347 347
348 ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV); 348 ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV);
349 screen_info = SCREEN_INFO; 349 screen_info = SCREEN_INFO;
@@ -373,7 +373,7 @@ void __init setup_arch(char **cmdline_p)
373 373
374 early_identify_cpu(&boot_cpu_data); 374 early_identify_cpu(&boot_cpu_data);
375 375
376 strlcpy(command_line, saved_command_line, COMMAND_LINE_SIZE); 376 strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE);
377 *cmdline_p = command_line; 377 *cmdline_p = command_line;
378 378
379 parse_early_param(); 379 parse_early_param();
diff --git a/arch/x86_64/kernel/vmlinux.lds.S b/arch/x86_64/kernel/vmlinux.lds.S
index 1e54ddf2338d..c360c4225244 100644
--- a/arch/x86_64/kernel/vmlinux.lds.S
+++ b/arch/x86_64/kernel/vmlinux.lds.S
@@ -192,10 +192,14 @@ SECTIONS
192 from .altinstructions and .eh_frame */ 192 from .altinstructions and .eh_frame */
193 .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.exit.text) } 193 .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.exit.text) }
194 .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { *(.exit.data) } 194 .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { *(.exit.data) }
195
196#ifdef CONFIG_BLK_DEV_INITRD
195 . = ALIGN(4096); 197 . = ALIGN(4096);
196 __initramfs_start = .; 198 __initramfs_start = .;
197 .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { *(.init.ramfs) } 199 .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { *(.init.ramfs) }
198 __initramfs_end = .; 200 __initramfs_end = .;
201#endif
202
199 . = ALIGN(CONFIG_X86_L1_CACHE_BYTES); 203 . = ALIGN(CONFIG_X86_L1_CACHE_BYTES);
200 __per_cpu_start = .; 204 __per_cpu_start = .;
201 .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { *(.data.percpu) } 205 .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) { *(.data.percpu) }
diff --git a/arch/x86_64/mm/fault.c b/arch/x86_64/mm/fault.c
index a65fc6f1dcaf..49e8cf2e06f8 100644
--- a/arch/x86_64/mm/fault.c
+++ b/arch/x86_64/mm/fault.c
@@ -69,27 +69,6 @@ static inline int notify_page_fault(enum die_val val, const char *str,
69 return atomic_notifier_call_chain(&notify_page_fault_chain, val, &args); 69 return atomic_notifier_call_chain(&notify_page_fault_chain, val, &args);
70} 70}
71 71
72void bust_spinlocks(int yes)
73{
74 int loglevel_save = console_loglevel;
75 if (yes) {
76 oops_in_progress = 1;
77 } else {
78#ifdef CONFIG_VT
79 unblank_screen();
80#endif
81 oops_in_progress = 0;
82 /*
83 * OK, the message is on the console. Now we call printk()
84 * without oops_in_progress set so that printk will give klogd
85 * a poke. Hold onto your hats...
86 */
87 console_loglevel = 15; /* NMI oopser may have shut the console up */
88 printk(" ");
89 console_loglevel = loglevel_save;
90 }
91}
92
93/* Sometimes the CPU reports invalid exceptions on prefetch. 72/* Sometimes the CPU reports invalid exceptions on prefetch.
94 Check that here and ignore. 73 Check that here and ignore.
95 Opcode checker based on code by Richard Brunner */ 74 Opcode checker based on code by Richard Brunner */
diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig
index 2e74cb0b7807..7fbb44bea37f 100644
--- a/arch/xtensa/Kconfig
+++ b/arch/xtensa/Kconfig
@@ -7,6 +7,10 @@ config FRAME_POINTER
7 bool 7 bool
8 default n 8 default n
9 9
10config ZONE_DMA
11 bool
12 default y
13
10config XTENSA 14config XTENSA
11 bool 15 bool
12 default y 16 default y
@@ -42,6 +46,9 @@ config ARCH_HAS_ILOG2_U64
42 bool 46 bool
43 default n 47 default n
44 48
49config NO_IOPORT
50 def_bool y
51
45source "init/Kconfig" 52source "init/Kconfig"
46 53
47menu "Processor type and features" 54menu "Processor type and features"
diff --git a/arch/xtensa/kernel/setup.c b/arch/xtensa/kernel/setup.c
index b6374c09de20..1ecf6716c327 100644
--- a/arch/xtensa/kernel/setup.c
+++ b/arch/xtensa/kernel/setup.c
@@ -78,7 +78,7 @@ extern unsigned long loops_per_jiffy;
78 78
79/* Command line specified as configuration option. */ 79/* Command line specified as configuration option. */
80 80
81static char command_line[COMMAND_LINE_SIZE]; 81static char __initdata command_line[COMMAND_LINE_SIZE];
82 82
83#ifdef CONFIG_CMDLINE_BOOL 83#ifdef CONFIG_CMDLINE_BOOL
84static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE; 84static char default_command_line[COMMAND_LINE_SIZE] __initdata = CONFIG_CMDLINE;
@@ -253,8 +253,8 @@ void __init setup_arch(char **cmdline_p)
253 extern int mem_reserve(unsigned long, unsigned long, int); 253 extern int mem_reserve(unsigned long, unsigned long, int);
254 extern void bootmem_init(void); 254 extern void bootmem_init(void);
255 255
256 memcpy(saved_command_line, command_line, COMMAND_LINE_SIZE); 256 memcpy(boot_command_line, command_line, COMMAND_LINE_SIZE);
257 saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; 257 boot_command_line[COMMAND_LINE_SIZE-1] = '\0';
258 *cmdline_p = command_line; 258 *cmdline_p = command_line;
259 259
260 /* Reserve some memory regions */ 260 /* Reserve some memory regions */
diff --git a/arch/xtensa/kernel/time.c b/arch/xtensa/kernel/time.c
index a350431363a0..22949be4a5d8 100644
--- a/arch/xtensa/kernel/time.c
+++ b/arch/xtensa/kernel/time.c
@@ -38,15 +38,6 @@ unsigned long ccount_nsec; /* nsec per ccount increment */
38unsigned int last_ccount_stamp; 38unsigned int last_ccount_stamp;
39static long last_rtc_update = 0; 39static long last_rtc_update = 0;
40 40
41/*
42 * Scheduler clock - returns current tim in nanosec units.
43 */
44
45unsigned long long sched_clock(void)
46{
47 return (unsigned long long)jiffies * (1000000000 / HZ);
48}
49
50static irqreturn_t timer_interrupt(int irq, void *dev_id); 41static irqreturn_t timer_interrupt(int irq, void *dev_id);
51static struct irqaction timer_irqaction = { 42static struct irqaction timer_irqaction = {
52 .handler = timer_interrupt, 43 .handler = timer_interrupt,
diff --git a/arch/xtensa/kernel/vmlinux.lds.S b/arch/xtensa/kernel/vmlinux.lds.S
index a36c104c3a52..ab6370054cee 100644
--- a/arch/xtensa/kernel/vmlinux.lds.S
+++ b/arch/xtensa/kernel/vmlinux.lds.S
@@ -203,10 +203,12 @@ SECTIONS
203 .data.percpu : { *(.data.percpu) } 203 .data.percpu : { *(.data.percpu) }
204 __per_cpu_end = .; 204 __per_cpu_end = .;
205 205
206#ifdef CONFIG_BLK_DEV_INITRD
206 . = ALIGN(4096); 207 . = ALIGN(4096);
207 __initramfs_start =.; 208 __initramfs_start =.;
208 .init.ramfs : { *(.init.ramfs) } 209 .init.ramfs : { *(.init.ramfs) }
209 __initramfs_end = .; 210 __initramfs_end = .;
211#endif
210 212
211 /* We need this dummy segment here */ 213 /* We need this dummy segment here */
212 214