aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2006-05-05 16:50:23 -0400
committerJohn W. Linville <linville@tuxdriver.com>2006-05-05 16:50:23 -0400
commitaad61439e6a00bdb72cb649e11f6e166590c5f66 (patch)
tree2279f3c2a15f81526d14182c6acb358cafd0b359
parent3c304956755fa63ee80ca51ce38078fe1c4e8818 (diff)
parentd98550e334715b2d9e45f8f0f4e1608720108640 (diff)
Merge branch 'from-linus' into upstream
-rw-r--r--CREDITS10
-rw-r--r--Documentation/HOWTO3
-rw-r--r--Documentation/filesystems/sysfs.txt5
-rw-r--r--Documentation/pci.txt12
-rw-r--r--Documentation/power/video.txt2
-rw-r--r--Documentation/sound/alsa/Audiophile-Usb.txt81
-rw-r--r--Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl4
-rw-r--r--Makefile2
-rw-r--r--arch/alpha/lib/strncpy.S8
-rw-r--r--arch/arm/Kconfig2
-rw-r--r--arch/arm/Makefile2
-rw-r--r--arch/arm/boot/compressed/misc.c4
-rw-r--r--arch/arm/kernel/Makefile2
-rw-r--r--arch/arm/kernel/head-nommu.S4
-rw-r--r--arch/arm/mach-imx/generic.c52
-rw-r--r--arch/arm/mach-imx/mx1ads.c74
-rw-r--r--arch/arm/mach-ixp4xx/Kconfig15
-rw-r--r--arch/arm/mach-ixp4xx/Makefile3
-rw-r--r--arch/arm/vfp/vfpdouble.c2
-rw-r--r--arch/arm/vfp/vfpmodule.c2
-rw-r--r--arch/arm/vfp/vfpsingle.c2
-rw-r--r--arch/i386/Kconfig4
-rw-r--r--arch/i386/kernel/acpi/boot.c5
-rw-r--r--arch/i386/kernel/apic.c4
-rw-r--r--arch/i386/kernel/cpu/intel_cacheinfo.c2
-rw-r--r--arch/i386/kernel/kprobes.c21
-rw-r--r--arch/i386/kernel/ptrace.c7
-rw-r--r--arch/i386/kernel/setup.c4
-rw-r--r--arch/i386/kernel/smpboot.c4
-rw-r--r--arch/i386/kernel/timers/timer_tsc.c4
-rw-r--r--arch/i386/kernel/vm86.c2
-rw-r--r--arch/i386/pci/irq.c1
-rw-r--r--arch/ia64/Kconfig2
-rw-r--r--arch/ia64/configs/sn2_defconfig76
-rw-r--r--arch/ia64/ia32/binfmt_elf32.c3
-rw-r--r--arch/ia64/ia32/ia32_entry.S2
-rw-r--r--arch/ia64/kernel/entry.S1
-rw-r--r--arch/ia64/kernel/mca_drv.c54
-rw-r--r--arch/ia64/kernel/palinfo.c2
-rw-r--r--arch/ia64/kernel/ptrace.c4
-rw-r--r--arch/ia64/kernel/salinfo.c2
-rw-r--r--arch/ia64/kernel/topology.c9
-rw-r--r--arch/ia64/pci/pci.c3
-rw-r--r--arch/ia64/sn/kernel/sn2/sn_hwperf.c8
-rw-r--r--arch/ia64/sn/kernel/xpc_partition.c8
-rw-r--r--arch/ia64/sn/pci/tioce_provider.c6
-rw-r--r--arch/mips/Kconfig50
-rw-r--r--arch/mips/Kconfig.debug8
-rw-r--r--arch/mips/Makefile5
-rw-r--r--arch/mips/configs/atlas_defconfig83
-rw-r--r--arch/mips/configs/bigsur_defconfig64
-rw-r--r--arch/mips/configs/capcella_defconfig143
-rw-r--r--arch/mips/configs/cobalt_defconfig68
-rw-r--r--arch/mips/configs/db1000_defconfig70
-rw-r--r--arch/mips/configs/db1100_defconfig71
-rw-r--r--arch/mips/configs/db1200_defconfig68
-rw-r--r--arch/mips/configs/db1500_defconfig105
-rw-r--r--arch/mips/configs/db1550_defconfig73
-rw-r--r--arch/mips/configs/ddb5476_defconfig69
-rw-r--r--arch/mips/configs/ddb5477_defconfig67
-rw-r--r--arch/mips/configs/decstation_defconfig69
-rw-r--r--arch/mips/configs/e55_defconfig288
-rw-r--r--arch/mips/configs/ev64120_defconfig67
-rw-r--r--arch/mips/configs/ev96100_defconfig64
-rw-r--r--arch/mips/configs/ip22_defconfig77
-rw-r--r--arch/mips/configs/ip27_defconfig54
-rw-r--r--arch/mips/configs/ip32_defconfig67
-rw-r--r--arch/mips/configs/it8172_defconfig66
-rw-r--r--arch/mips/configs/ivr_defconfig67
-rw-r--r--arch/mips/configs/jaguar-atx_defconfig56
-rw-r--r--arch/mips/configs/jmr3927_defconfig72
-rw-r--r--arch/mips/configs/lasat200_defconfig69
-rw-r--r--arch/mips/configs/malta_defconfig86
-rw-r--r--arch/mips/configs/mipssim_defconfig64
-rw-r--r--arch/mips/configs/mpc30x_defconfig95
-rw-r--r--arch/mips/configs/ocelot_3_defconfig72
-rw-r--r--arch/mips/configs/ocelot_c_defconfig66
-rw-r--r--arch/mips/configs/ocelot_defconfig64
-rw-r--r--arch/mips/configs/ocelot_g_defconfig66
-rw-r--r--arch/mips/configs/pb1100_defconfig70
-rw-r--r--arch/mips/configs/pb1500_defconfig73
-rw-r--r--arch/mips/configs/pb1550_defconfig73
-rw-r--r--arch/mips/configs/pnx8550-jbs_defconfig76
-rw-r--r--arch/mips/configs/pnx8550-v2pci_defconfig85
-rw-r--r--arch/mips/configs/qemu_defconfig48
-rw-r--r--arch/mips/configs/rbhma4500_defconfig95
-rw-r--r--arch/mips/configs/rm200_defconfig121
-rw-r--r--arch/mips/configs/sb1250-swarm_defconfig63
-rw-r--r--arch/mips/configs/sead_defconfig50
-rw-r--r--arch/mips/configs/tb0226_defconfig218
-rw-r--r--arch/mips/configs/tb0229_defconfig282
-rw-r--r--arch/mips/configs/tb0287_defconfig104
-rw-r--r--arch/mips/configs/workpad_defconfig185
-rw-r--r--arch/mips/configs/yosemite_defconfig54
-rw-r--r--arch/mips/defconfig77
-rw-r--r--arch/mips/kernel/branch.c2
-rw-r--r--arch/mips/kernel/linux32.c64
-rw-r--r--arch/mips/kernel/ptrace.c4
-rw-r--r--arch/mips/kernel/rtlx.c11
-rw-r--r--arch/mips/kernel/vpe.c6
-rw-r--r--arch/mips/mips-boards/generic/init.c1
-rw-r--r--arch/mips/mips-boards/generic/pci.c1
-rw-r--r--arch/mips/mips-boards/malta/malta_int.c3
-rw-r--r--arch/mips/oprofile/common.c5
-rw-r--r--arch/mips/sgi-ip27/ip27-timer.c2
-rw-r--r--arch/mips/sgi-ip32/ip32-irq.c7
-rw-r--r--arch/powerpc/configs/cell_defconfig40
-rw-r--r--arch/powerpc/kernel/cputable.c16
-rw-r--r--arch/powerpc/kernel/kprobes.c14
-rw-r--r--arch/powerpc/kernel/module_64.c16
-rw-r--r--arch/powerpc/kernel/prom.c70
-rw-r--r--arch/powerpc/kernel/prom_init.c112
-rw-r--r--arch/powerpc/kernel/ptrace.c5
-rw-r--r--arch/powerpc/kernel/setup-common.c8
-rw-r--r--arch/powerpc/kernel/setup_64.c8
-rw-r--r--arch/powerpc/kernel/sysfs.c22
-rw-r--r--arch/powerpc/kernel/systbl.S14
-rw-r--r--arch/powerpc/mm/hugetlbpage.c295
-rw-r--r--arch/powerpc/mm/init_64.c7
-rw-r--r--arch/powerpc/mm/numa.c32
-rw-r--r--arch/powerpc/platforms/cell/Kconfig3
-rw-r--r--arch/powerpc/platforms/cell/setup.c78
-rw-r--r--arch/powerpc/platforms/cell/spu_base.c101
-rw-r--r--arch/powerpc/platforms/cell/spu_callbacks.c14
-rw-r--r--arch/powerpc/platforms/powermac/pci.c2
-rw-r--r--arch/powerpc/platforms/pseries/eeh_event.c8
-rw-r--r--arch/ppc/platforms/4xx/ocotea.c2
-rw-r--r--arch/ppc/platforms/mpc8272ads_setup.c114
-rw-r--r--arch/ppc/platforms/mpc866ads_setup.c140
-rw-r--r--arch/ppc/platforms/mpc885ads_setup.c131
-rw-r--r--arch/ppc/platforms/pq2ads.c31
-rw-r--r--arch/ppc/syslib/ibm440gx_common.c13
-rw-r--r--arch/ppc/syslib/ibm440gx_common.h4
-rw-r--r--arch/ppc/syslib/mpc8xx_devices.c25
-rw-r--r--arch/ppc/syslib/ppc_sys.c4
-rw-r--r--arch/ppc/syslib/pq2_sys.c8
-rw-r--r--arch/s390/appldata/appldata_base.c2
-rw-r--r--arch/s390/kernel/compat_signal.c2
-rw-r--r--arch/s390/kernel/compat_wrapper.S42
-rw-r--r--arch/s390/kernel/ptrace.c5
-rw-r--r--arch/s390/kernel/signal.c5
-rw-r--r--arch/s390/kernel/syscalls.S5
-rw-r--r--arch/s390/kernel/vmlinux.lds.S4
-rw-r--r--arch/s390/mm/extmem.c19
-rw-r--r--arch/sparc/kernel/systbls.S2
-rw-r--r--arch/sparc64/kernel/ptrace.c5
-rw-r--r--arch/sparc64/kernel/sys32.S1
-rw-r--r--arch/sparc64/kernel/systbls.S4
-rw-r--r--arch/sparc64/mm/tlb.c5
-rw-r--r--arch/um/Kconfig14
-rw-r--r--arch/um/Kconfig.i38619
-rw-r--r--arch/um/Makefile19
-rw-r--r--arch/um/defconfig240
-rw-r--r--arch/um/drivers/cow_user.c2
-rw-r--r--arch/um/kernel/irq.c93
-rw-r--r--arch/um/kernel/physmem.c2
-rw-r--r--arch/um/kernel/ptrace.c6
-rw-r--r--arch/um/kernel/skas/Makefile10
-rw-r--r--arch/um/kernel/time_kern.c2
-rw-r--r--arch/um/os-Linux/file.c2
-rw-r--r--arch/um/os-Linux/irq.c47
-rw-r--r--arch/um/os-Linux/main.c30
-rw-r--r--arch/um/os-Linux/process.c17
-rw-r--r--arch/um/os-Linux/skas/process.c6
-rw-r--r--arch/um/os-Linux/sys-i386/registers.c4
-rw-r--r--arch/um/os-Linux/sys-x86_64/registers.c4
-rw-r--r--arch/um/os-Linux/umid.c4
-rw-r--r--arch/um/os-Linux/user_syms.c7
-rw-r--r--arch/um/scripts/Makefile.rules12
-rw-r--r--arch/um/sys-i386/Makefile13
-rw-r--r--arch/um/sys-x86_64/Makefile13
-rw-r--r--arch/x86_64/ia32/ia32entry.S1
-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/ptrace.c6
-rw-r--r--arch/x86_64/kernel/setup.c19
-rw-r--r--block/ll_rw_blk.c2
-rw-r--r--drivers/Kconfig2
-rw-r--r--drivers/base/topology.c2
-rw-r--r--drivers/block/floppy.c2
-rw-r--r--drivers/char/genrtc.c8
-rw-r--r--drivers/char/keyboard.c38
-rw-r--r--drivers/char/mem.c14
-rw-r--r--drivers/char/mwave/mwavedd.c2
-rw-r--r--drivers/char/tipar.c2
-rw-r--r--drivers/cpufreq/cpufreq.c2
-rw-r--r--drivers/edac/e752x_edac.c17
-rw-r--r--drivers/infiniband/hw/ipath/ipath_debug.h15
-rw-r--r--drivers/infiniband/hw/ipath/ipath_diag.c3
-rw-r--r--drivers/infiniband/hw/ipath/ipath_driver.c18
-rw-r--r--drivers/infiniband/hw/ipath/ipath_init_chip.c36
-rw-r--r--drivers/infiniband/hw/ipath/ipath_intr.c21
-rw-r--r--drivers/infiniband/hw/ipath/ipath_kernel.h10
-rw-r--r--drivers/infiniband/hw/ipath/ipath_layer.c6
-rw-r--r--drivers/infiniband/hw/ipath/ipath_pe800.c4
-rw-r--r--drivers/infiniband/hw/ipath/ipath_registers.h31
-rw-r--r--drivers/infiniband/hw/ipath/ipath_ruc.c15
-rw-r--r--drivers/infiniband/hw/ipath/ipath_sysfs.c14
-rw-r--r--drivers/infiniband/hw/ipath/ipath_ud.c6
-rw-r--r--drivers/infiniband/hw/ipath/ipath_verbs.c39
-rw-r--r--drivers/infiniband/hw/ipath/ipath_verbs.h3
-rw-r--r--drivers/infiniband/hw/ipath/ips_common.h2
-rw-r--r--drivers/infiniband/hw/mthca/mthca_provider.c2
-rw-r--r--drivers/input/evdev.c21
-rw-r--r--drivers/input/input.c11
-rw-r--r--drivers/input/keyboard/spitzkbd.c4
-rw-r--r--drivers/input/misc/wistron_btns.c30
-rw-r--r--drivers/input/mouse/psmouse-base.c4
-rw-r--r--drivers/input/serio/i8042-io.h4
-rw-r--r--drivers/input/touchscreen/ads7846.c414
-rw-r--r--drivers/input/touchscreen/corgi_ts.c2
-rw-r--r--drivers/md/raid1.c29
-rw-r--r--drivers/md/raid10.c46
-rw-r--r--drivers/media/video/cx88/cx88-alsa.c2
-rw-r--r--drivers/mmc/at91_mci.c3
-rw-r--r--drivers/mmc/au1xmmc.c4
-rw-r--r--drivers/mmc/imxmmc.c60
-rw-r--r--drivers/mmc/mmc.c62
-rw-r--r--drivers/mmc/mmc_block.c6
-rw-r--r--drivers/mmc/mmci.c3
-rw-r--r--drivers/mmc/pxamci.c23
-rw-r--r--drivers/mmc/sdhci.c4
-rw-r--r--drivers/mmc/wbsd.c4
-rw-r--r--drivers/net/e1000/e1000_main.c1
-rw-r--r--drivers/net/forcedeth.c389
-rw-r--r--drivers/net/gianfar.c56
-rw-r--r--drivers/net/gianfar.h67
-rw-r--r--drivers/net/gianfar_ethtool.c20
-rw-r--r--drivers/net/gianfar_sysfs.c24
-rw-r--r--drivers/net/hamradio/dmascc.c1
-rw-r--r--drivers/net/hamradio/scc.c1
-rw-r--r--drivers/net/hamradio/yam.c1
-rw-r--r--drivers/net/mv643xx_eth.c2
-rw-r--r--drivers/net/sky2.c52
-rw-r--r--drivers/net/sky2.h2
-rw-r--r--drivers/net/tg3.c82
-rw-r--r--drivers/net/tg3.h1
-rw-r--r--drivers/net/via-rhine.c6
-rw-r--r--drivers/pci/msi.c4
-rw-r--r--drivers/pci/quirks.c6
-rw-r--r--drivers/pcmcia/i82365.c7
-rw-r--r--drivers/rtc/rtc-dev.c17
-rw-r--r--drivers/s390/block/dasd.c5
-rw-r--r--drivers/s390/block/dasd_devmap.c102
-rw-r--r--drivers/s390/block/dasd_eckd.c51
-rw-r--r--drivers/s390/block/dasd_eckd.h46
-rw-r--r--drivers/s390/block/dasd_int.h12
-rw-r--r--drivers/s390/char/tape_3590.c22
-rw-r--r--drivers/s390/char/tape_std.h1
-rw-r--r--drivers/s390/cio/chsc.c30
-rw-r--r--drivers/s390/cio/qdio.c36
-rw-r--r--drivers/s390/net/qeth_main.c1
-rw-r--r--drivers/s390/s390mach.c34
-rw-r--r--drivers/scsi/Kconfig4
-rw-r--r--drivers/scsi/advansys.c2
-rw-r--r--drivers/serial/cpm_uart/cpm_uart.h58
-rw-r--r--drivers/serial/cpm_uart/cpm_uart_core.c307
-rw-r--r--drivers/serial/cpm_uart/cpm_uart_cpm1.c56
-rw-r--r--drivers/serial/cpm_uart/cpm_uart_cpm2.c16
-rw-r--r--drivers/serial/imx.c40
-rw-r--r--drivers/sn/ioc3.c2
-rw-r--r--drivers/sn/ioc4.c2
-rw-r--r--drivers/usb/gadget/inode.c1
-rw-r--r--drivers/usb/gadget/net2280.c15
-rw-r--r--drivers/usb/host/ehci-pci.c2
-rw-r--r--drivers/usb/host/ohci-pci.c2
-rw-r--r--drivers/usb/host/uhci-hcd.c2
-rw-r--r--drivers/usb/serial/ftdi_sio.c3
-rw-r--r--drivers/usb/serial/ftdi_sio.h13
-rw-r--r--drivers/usb/serial/pl2303.c1
-rw-r--r--drivers/usb/serial/pl2303.h1
-rw-r--r--drivers/usb/serial/whiteheat.c1
-rw-r--r--drivers/usb/storage/unusual_devs.h9
-rw-r--r--drivers/video/Kconfig2
-rw-r--r--drivers/video/au1200fb.c1922
-rw-r--r--drivers/video/fbsysfs.c92
-rw-r--r--fs/block_dev.c2
-rw-r--r--fs/cifs/connect.c5
-rw-r--r--fs/compat.c24
-rw-r--r--fs/ext3/inode.c13
-rw-r--r--fs/ext3/ioctl.c18
-rw-r--r--fs/ext3/resize.c2
-rw-r--r--fs/fuse/dev.c35
-rw-r--r--fs/fuse/fuse_i.h12
-rw-r--r--fs/fuse/inode.c40
-rw-r--r--fs/pipe.c190
-rw-r--r--fs/splice.c581
-rw-r--r--fs/stat.c2
-rw-r--r--include/asm-arm/arch-imx/imx-uart.h10
-rw-r--r--include/asm-arm/arch-ixp4xx/io.h7
-rw-r--r--include/asm-arm/arch-ixp4xx/memory.h2
-rw-r--r--include/asm-arm/unistd.h21
-rw-r--r--include/asm-i386/i387.h4
-rw-r--r--include/asm-i386/pgtable-2level.h3
-rw-r--r--include/asm-i386/pgtable-3level.h20
-rw-r--r--include/asm-i386/pgtable.h4
-rw-r--r--include/asm-i386/unistd.h3
-rw-r--r--include/asm-ia64/acpi.h5
-rw-r--r--include/asm-ia64/machvec.h2
-rw-r--r--include/asm-ia64/sn/sn2/sn_hwperf.h6
-rw-r--r--include/asm-ia64/sn/sn_sal.h17
-rw-r--r--include/asm-ia64/thread_info.h2
-rw-r--r--include/asm-ia64/topology.h5
-rw-r--r--include/asm-ia64/unistd.h3
-rw-r--r--include/asm-mips/bitops.h56
-rw-r--r--include/asm-mips/mips-boards/generic.h1
-rw-r--r--include/asm-powerpc/cputable.h14
-rw-r--r--include/asm-powerpc/io.h6
-rw-r--r--include/asm-powerpc/page_64.h1
-rw-r--r--include/asm-powerpc/pgalloc.h2
-rw-r--r--include/asm-powerpc/spu.h1
-rw-r--r--include/asm-powerpc/topology.h24
-rw-r--r--include/asm-powerpc/uaccess.h19
-rw-r--r--include/asm-powerpc/unistd.h21
-rw-r--r--include/asm-ppc/commproc.h1
-rw-r--r--include/asm-ppc/cpm2.h2
-rw-r--r--include/asm-ppc/ppc_sys.h2
-rw-r--r--include/asm-ppc/reg_booke.h1
-rw-r--r--include/asm-s390/cache.h2
-rw-r--r--include/asm-s390/futex.h123
-rw-r--r--include/asm-sparc/unistd.h4
-rw-r--r--include/asm-sparc64/tlbflush.h2
-rw-r--r--include/asm-sparc64/unistd.h4
-rw-r--r--include/asm-x86_64/unistd.h4
-rw-r--r--include/asm-xtensa/signal.h2
-rw-r--r--include/linux/audit.h22
-rw-r--r--include/linux/debugfs.h5
-rw-r--r--include/linux/fs_uart_pd.h60
-rw-r--r--include/linux/input.h109
-rw-r--r--include/linux/kobject.h3
-rw-r--r--include/linux/list.h2
-rw-r--r--include/linux/mmc/card.h1
-rw-r--r--include/linux/mod_devicetable.h48
-rw-r--r--include/linux/netdevice.h18
-rw-r--r--include/linux/netfilter/x_tables.h12
-rw-r--r--include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h2
-rw-r--r--include/linux/netlink.h1
-rw-r--r--include/linux/pagemap.h2
-rw-r--r--include/linux/pipe_fs_i.h47
-rw-r--r--include/linux/security.h16
-rw-r--r--include/linux/selinux.h177
-rw-r--r--include/linux/signal.h4
-rw-r--r--include/linux/spi/ads7846.h7
-rw-r--r--include/linux/syscalls.h3
-rw-r--r--include/net/ax25.h10
-rw-r--r--include/net/inet_timewait_sock.h2
-rw-r--r--include/net/netrom.h8
-rw-r--r--include/net/rose.h14
-rw-r--r--include/net/sock.h2
-rw-r--r--include/sound/pcm.h6
-rw-r--r--include/sound/pcm_oss.h2
-rw-r--r--init/main.c2
-rw-r--r--ipc/msg.c11
-rw-r--r--ipc/sem.c11
-rw-r--r--ipc/shm.c19
-rw-r--r--ipc/util.c7
-rw-r--r--kernel/audit.c160
-rw-r--r--kernel/audit.h10
-rw-r--r--kernel/auditfilter.c289
-rw-r--r--kernel/auditsc.c269
-rw-r--r--kernel/exit.c3
-rw-r--r--kernel/fork.c2
-rw-r--r--kernel/hrtimer.c4
-rw-r--r--kernel/irq/manage.c6
-rw-r--r--kernel/power/main.c2
-rw-r--r--kernel/profile.c2
-rw-r--r--kernel/rcupdate.c4
-rw-r--r--kernel/sched.c2
-rw-r--r--kernel/softirq.c4
-rw-r--r--kernel/softlockup.c4
-rw-r--r--kernel/timer.c4
-rw-r--r--kernel/workqueue.c2
-rw-r--r--lib/kobject.c7
-rw-r--r--lib/kobject_uevent.c8
-rw-r--r--mm/filemap.c32
-rw-r--r--mm/memory_hotplug.c6
-rw-r--r--mm/migrate.c11
-rw-r--r--mm/page_alloc.c2
-rw-r--r--mm/slab.c5
-rw-r--r--mm/sparse.c9
-rw-r--r--mm/vmscan.c2
-rw-r--r--net/ax25/af_ax25.c93
-rw-r--r--net/ax25/ax25_addr.c9
-rw-r--r--net/ax25/ax25_ds_timer.c3
-rw-r--r--net/ax25/ax25_iface.c13
-rw-r--r--net/ax25/ax25_ip.c3
-rw-r--r--net/ax25/ax25_out.c3
-rw-r--r--net/ax25/ax25_route.c2
-rw-r--r--net/ax25/ax25_timer.c3
-rw-r--r--net/ax25/ax25_uid.c4
-rw-r--r--net/ax25/sysctl_net_ax25.c10
-rw-r--r--net/bridge/br_forward.c8
-rw-r--r--net/decnet/dn_neigh.c5
-rw-r--r--net/ipv4/af_inet.c2
-rw-r--r--net/ipv4/netfilter/Kconfig2
-rw-r--r--net/ipv4/netfilter/ip_conntrack_helper_h323.c2
-rw-r--r--net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c10
-rw-r--r--net/ipv4/netfilter/ip_conntrack_proto_sctp.c11
-rw-r--r--net/ipv4/netfilter/ip_nat_standalone.c2
-rw-r--r--net/ipv4/netfilter/ip_tables.c39
-rw-r--r--net/ipv4/tcp.c13
-rw-r--r--net/ipv4/tcp_output.c2
-rw-r--r--net/ipv4/xfrm4_output.c2
-rw-r--r--net/ipv6/netfilter/ip6_tables.c13
-rw-r--r--net/ipv6/route.c5
-rw-r--r--net/netfilter/nf_conntrack_core.c15
-rw-r--r--net/netfilter/nf_conntrack_l3proto_generic.c1
-rw-r--r--net/netfilter/nf_conntrack_proto_sctp.c11
-rw-r--r--net/netfilter/x_tables.c6
-rw-r--r--net/netlink/af_netlink.c3
-rw-r--r--net/netrom/af_netrom.c15
-rw-r--r--net/netrom/nr_dev.c1
-rw-r--r--net/rose/af_rose.c10
-rw-r--r--net/rose/rose_dev.c1
-rw-r--r--net/rose/rose_link.c6
-rw-r--r--net/rose/rose_route.c7
-rw-r--r--net/sched/act_ipt.c5
-rw-r--r--net/sched/sch_netem.c2
-rw-r--r--net/socket.c2
-rw-r--r--net/x25/x25_timer.c4
-rw-r--r--net/xfrm/xfrm_policy.c16
-rw-r--r--net/xfrm/xfrm_state.c8
-rw-r--r--scripts/mod/file2alias.c36
-rw-r--r--security/dummy.c6
-rw-r--r--security/selinux/Makefile2
-rw-r--r--security/selinux/avc.c13
-rw-r--r--security/selinux/exports.c74
-rw-r--r--security/selinux/hooks.c11
-rw-r--r--security/selinux/include/security.h5
-rw-r--r--security/selinux/ss/mls.c30
-rw-r--r--security/selinux/ss/mls.h4
-rw-r--r--security/selinux/ss/services.c235
-rw-r--r--sound/core/Kconfig12
-rw-r--r--sound/core/oss/pcm_oss.c8
-rw-r--r--sound/core/pcm.c12
-rw-r--r--sound/core/pcm_lib.c6
-rw-r--r--sound/core/pcm_memory.c8
-rw-r--r--sound/drivers/dummy.c14
-rw-r--r--sound/drivers/mpu401/mpu401.c14
-rw-r--r--sound/drivers/serial-u16550.c14
-rw-r--r--sound/drivers/virmidi.c14
-rw-r--r--sound/isa/opti9xx/miro.c3
-rw-r--r--sound/oss/Kconfig14
-rw-r--r--sound/pci/ad1889.c3
-rw-r--r--sound/pci/ali5451/ali5451.c2
-rw-r--r--sound/pci/als300.c2
-rw-r--r--sound/pci/als4000.c2
-rw-r--r--sound/pci/atiixp.c2
-rw-r--r--sound/pci/atiixp_modem.c2
-rw-r--r--sound/pci/au88x0/au8810.c2
-rw-r--r--sound/pci/au88x0/au8820.c2
-rw-r--r--sound/pci/au88x0/au8830.c2
-rw-r--r--sound/pci/azt3328.c2
-rw-r--r--sound/pci/bt87x.c4
-rw-r--r--sound/pci/ca0106/ca0106_main.c2
-rw-r--r--sound/pci/cmipci.c2
-rw-r--r--sound/pci/cs4281.c2
-rw-r--r--sound/pci/cs46xx/cs46xx.c2
-rw-r--r--sound/pci/cs5535audio/cs5535audio.c2
-rw-r--r--sound/pci/emu10k1/emu10k1.c2
-rw-r--r--sound/pci/emu10k1/emu10k1x.c3
-rw-r--r--sound/pci/ens1370.c2
-rw-r--r--sound/pci/es1938.c2
-rw-r--r--sound/pci/es1968.c3
-rw-r--r--sound/pci/fm801.c2
-rw-r--r--sound/pci/hda/hda_intel.c2
-rw-r--r--sound/pci/hda/patch_analog.c13
-rw-r--r--sound/pci/hda/patch_realtek.c1
-rw-r--r--sound/pci/hda/patch_sigmatel.c4
-rw-r--r--sound/pci/ice1712/ice1712.c3
-rw-r--r--sound/pci/ice1712/ice1724.c2
-rw-r--r--sound/pci/intel8x0.c8
-rw-r--r--sound/pci/intel8x0m.c2
-rw-r--r--sound/pci/korg1212/korg1212.c2
-rw-r--r--sound/pci/maestro3.c3
-rw-r--r--sound/pci/mixart/mixart.c3
-rw-r--r--sound/pci/nm256/nm256.c2
-rw-r--r--sound/pci/pcxhr/pcxhr.c3
-rw-r--r--sound/pci/pcxhr/pcxhr_hwdep.c4
-rw-r--r--sound/pci/riptide/riptide.c4
-rw-r--r--sound/pci/rme32.c2
-rw-r--r--sound/pci/rme96.c2
-rw-r--r--sound/pci/rme9652/hdsp.c2
-rw-r--r--sound/pci/rme9652/hdspm.c2
-rw-r--r--sound/pci/rme9652/rme9652.c2
-rw-r--r--sound/pci/sonicvibes.c2
-rw-r--r--sound/pci/trident/trident.c2
-rw-r--r--sound/pci/via82xx.c18
-rw-r--r--sound/pci/via82xx_modem.c2
-rw-r--r--sound/pci/vx222/vx222.c2
-rw-r--r--sound/pci/ymfpci/ymfpci.c2
-rw-r--r--sound/pcmcia/Kconfig4
-rw-r--r--sound/ppc/toonie.c2
-rw-r--r--sound/usb/usbquirks.h9
494 files changed, 9035 insertions, 6342 deletions
diff --git a/CREDITS b/CREDITS
index 787564bc248b..6f50be37fa0f 100644
--- a/CREDITS
+++ b/CREDITS
@@ -1194,15 +1194,9 @@ S: Brecksville, OH 44141-1334
1194S: USA 1194S: USA
1195 1195
1196N: Tristan Greaves 1196N: Tristan Greaves
1197E: Tristan.Greaves@icl.com 1197E: tristan@extricate.org
1198E: tmg296@ecs.soton.ac.uk 1198W: http://www.extricate.org/
1199W: http://www.ecs.soton.ac.uk/~tmg296
1200D: Miscellaneous ipv4 sysctl patches 1199D: Miscellaneous ipv4 sysctl patches
1201S: 15 Little Mead
1202S: Denmead
1203S: Hampshire
1204S: PO7 6HS
1205S: United Kingdom
1206 1200
1207N: Michael A. Griffith 1201N: Michael A. Griffith
1208E: grif@cs.ucr.edu 1202E: grif@cs.ucr.edu
diff --git a/Documentation/HOWTO b/Documentation/HOWTO
index 6c9e746267da..915ae8c986c6 100644
--- a/Documentation/HOWTO
+++ b/Documentation/HOWTO
@@ -603,7 +603,8 @@ start exactly where you are now.
603 603
604 604
605---------- 605----------
606Thanks to Paolo Ciarrocchi who allowed the "Development Process" section 606Thanks to Paolo Ciarrocchi who allowed the "Development Process"
607(http://linux.tar.bz/articles/2.6-development_process) section
607to be based on text he had written, and to Randy Dunlap and Gerrit 608to be based on text he had written, and to Randy Dunlap and Gerrit
608Huizenga for some of the list of things you should and should not say. 609Huizenga for some of the list of things you should and should not say.
609Also thanks to Pat Mochel, Hanna Linder, Randy Dunlap, Kay Sievers, 610Also thanks to Pat Mochel, Hanna Linder, Randy Dunlap, Kay Sievers,
diff --git a/Documentation/filesystems/sysfs.txt b/Documentation/filesystems/sysfs.txt
index c8bce82ddcac..89b1d196ca80 100644
--- a/Documentation/filesystems/sysfs.txt
+++ b/Documentation/filesystems/sysfs.txt
@@ -246,6 +246,7 @@ class/
246devices/ 246devices/
247firmware/ 247firmware/
248net/ 248net/
249fs/
249 250
250devices/ contains a filesystem representation of the device tree. It maps 251devices/ contains a filesystem representation of the device tree. It maps
251directly to the internal kernel device tree, which is a hierarchy of 252directly to the internal kernel device tree, which is a hierarchy of
@@ -264,6 +265,10 @@ drivers/ contains a directory for each device driver that is loaded
264for devices on that particular bus (this assumes that drivers do not 265for devices on that particular bus (this assumes that drivers do not
265span multiple bus types). 266span multiple bus types).
266 267
268fs/ contains a directory for some filesystems. Currently each
269filesystem wanting to export attributes must create its own hierarchy
270below fs/ (see ./fuse.txt for an example).
271
267 272
268More information can driver-model specific features can be found in 273More information can driver-model specific features can be found in
269Documentation/driver-model/. 274Documentation/driver-model/.
diff --git a/Documentation/pci.txt b/Documentation/pci.txt
index 711210b38f5f..66bbbf1d1ef6 100644
--- a/Documentation/pci.txt
+++ b/Documentation/pci.txt
@@ -259,7 +259,17 @@ on the bus need to be capable of doing it, so this is something which needs
259to be handled by platform and generic code, not individual drivers. 259to be handled by platform and generic code, not individual drivers.
260 260
261 261
2628. Obsolete functions 2628. Vendor and device identifications
263~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
264For the future, let's avoid adding device ids to include/linux/pci_ids.h.
265
266PCI_VENDOR_ID_xxx for vendors, and a hex constant for device ids.
267
268Rationale: PCI_VENDOR_ID_xxx constants are re-used, but device ids are not.
269 Further, device ids are arbitrary hex numbers, normally used only in a
270 single location, the pci_device_id table.
271
2729. Obsolete functions
263~~~~~~~~~~~~~~~~~~~~~ 273~~~~~~~~~~~~~~~~~~~~~
264There are several functions which you might come across when trying to 274There are several functions which you might come across when trying to
265port an old driver to the new PCI interface. They are no longer present 275port an old driver to the new PCI interface. They are no longer present
diff --git a/Documentation/power/video.txt b/Documentation/power/video.txt
index d18a57d1a531..43a889f8f08d 100644
--- a/Documentation/power/video.txt
+++ b/Documentation/power/video.txt
@@ -140,7 +140,7 @@ IBM TP T41p s3_bios (2), switch to X after resume
140IBM TP T42 s3_bios (2) 140IBM TP T42 s3_bios (2)
141IBM ThinkPad T42p (2373-GTG) s3_bios (2) 141IBM ThinkPad T42p (2373-GTG) s3_bios (2)
142IBM TP X20 ??? (*) 142IBM TP X20 ??? (*)
143IBM TP X30 s3_bios (2) 143IBM TP X30 s3_bios, s3_mode (4)
144IBM TP X31 / Type 2672-XXH none (1), use radeontool (http://fdd.com/software/radeon/) to turn off backlight. 144IBM TP X31 / Type 2672-XXH none (1), use radeontool (http://fdd.com/software/radeon/) to turn off backlight.
145IBM TP X32 none (1), but backlight is on and video is trashed after long suspend. s3_bios,s3_mode (4) works too. Perhaps that gets better results? 145IBM TP X32 none (1), but backlight is on and video is trashed after long suspend. s3_bios,s3_mode (4) works too. Perhaps that gets better results?
146IBM Thinkpad X40 Type 2371-7JG s3_bios,s3_mode (4) 146IBM Thinkpad X40 Type 2371-7JG s3_bios,s3_mode (4)
diff --git a/Documentation/sound/alsa/Audiophile-Usb.txt b/Documentation/sound/alsa/Audiophile-Usb.txt
index 4692c8e77dc1..b535c2a198f8 100644
--- a/Documentation/sound/alsa/Audiophile-Usb.txt
+++ b/Documentation/sound/alsa/Audiophile-Usb.txt
@@ -1,4 +1,4 @@
1 Guide to using M-Audio Audiophile USB with ALSA and Jack v1.2 1 Guide to using M-Audio Audiophile USB with ALSA and Jack v1.3
2 ======================================================== 2 ========================================================
3 3
4 Thibault Le Meur <Thibault.LeMeur@supelec.fr> 4 Thibault Le Meur <Thibault.LeMeur@supelec.fr>
@@ -22,16 +22,16 @@ The device has 4 audio interfaces, and 2 MIDI ports:
22 * Midi In (Mi) 22 * Midi In (Mi)
23 * Midi Out (Mo) 23 * Midi Out (Mo)
24 24
25The internal DAC/ADC has the following caracteristics: 25The internal DAC/ADC has the following characteristics:
26* sample depth of 16 or 24 bits 26* sample depth of 16 or 24 bits
27* sample rate from 8kHz to 96kHz 27* sample rate from 8kHz to 96kHz
28* Two ports can't use different sample depths at the same time.Moreover, the 28* Two ports can't use different sample depths at the same time. Moreover, the
29Audiophile USB documentation gives the following Warning: "Please exit any 29Audiophile USB documentation gives the following Warning: "Please exit any
30audio application running before switching between bit depths" 30audio application running before switching between bit depths"
31 31
32Due to the USB 1.1 bandwidth limitation, a limited number of interfaces can be 32Due to the USB 1.1 bandwidth limitation, a limited number of interfaces can be
33activated at the same time depending on the audio mode selected: 33activated at the same time depending on the audio mode selected:
34 * 16-bit/48kHz ==> 4 channels in/ 4 channels out 34 * 16-bit/48kHz ==> 4 channels in/4 channels out
35 - Ai+Ao+Di+Do 35 - Ai+Ao+Di+Do
36 * 24-bit/48kHz ==> 4 channels in/2 channels out, 36 * 24-bit/48kHz ==> 4 channels in/2 channels out,
37 or 2 channels in/4 channels out 37 or 2 channels in/4 channels out
@@ -41,8 +41,8 @@ activated at the same time depending on the audio mode selected:
41 41
42Important facts about the Digital interface: 42Important facts about the Digital interface:
43-------------------------------------------- 43--------------------------------------------
44 * The Do port additionnaly supports surround-encoded AC-3 and DTS passthrough, 44 * The Do port additionally supports surround-encoded AC-3 and DTS passthrough,
45though I haven't tested it under linux 45though I haven't tested it under Linux
46 - Note that in this setup only the Do interface can be enabled 46 - Note that in this setup only the Do interface can be enabled
47 * Apart from recording an audio digital stream, enabling the Di port is a way 47 * Apart from recording an audio digital stream, enabling the Di port is a way
48to synchronize the device to an external sample clock 48to synchronize the device to an external sample clock
@@ -60,24 +60,23 @@ synchronization error (for instance sound played at an odd sample rate)
60The Audiophile USB MIDI ports will be automatically supported once the 60The Audiophile USB MIDI ports will be automatically supported once the
61following modules have been loaded: 61following modules have been loaded:
62 * snd-usb-audio 62 * snd-usb-audio
63 * snd-seq
64 * snd-seq-midi 63 * snd-seq-midi
65 64
66No additionnal setting is required. 65No additional setting is required.
67 66
682.2 - Audio ports 672.2 - Audio ports
69----------------- 68-----------------
70 69
71Audio functions of the Audiophile USB device are handled by the snd-usb-audio 70Audio functions of the Audiophile USB device are handled by the snd-usb-audio
72module. This module can work in a default mode (without any device-specific 71module. This module can work in a default mode (without any device-specific
73parameter), or in an advanced mode with the device-specific parameter called 72parameter), or in an "advanced" mode with the device-specific parameter called
74"device_setup". 73"device_setup".
75 74
762.2.1 - Default Alsa driver mode 752.2.1 - Default Alsa driver mode
77 76
78The default behaviour of the snd-usb-audio driver is to parse the device 77The default behavior of the snd-usb-audio driver is to parse the device
79capabilities at startup and enable all functions inside the device (including 78capabilities at startup and enable all functions inside the device (including
80all ports at any sample rates and any sample depths supported). This approach 79all ports at any supported sample rates and sample depths). This approach
81has the advantage to let the driver easily switch from sample rates/depths 80has the advantage to let the driver easily switch from sample rates/depths
82automatically according to the need of the application claiming the device. 81automatically according to the need of the application claiming the device.
83 82
@@ -114,9 +113,9 @@ gain).
114For people having this problem, the snd-usb-audio module has a new module 113For people having this problem, the snd-usb-audio module has a new module
115parameter called "device_setup". 114parameter called "device_setup".
116 115
1172.2.2.1 - Initializing the working mode of the Audiohile USB 1162.2.2.1 - Initializing the working mode of the Audiophile USB
118 117
119As far as the Audiohile USB device is concerned, this value let the user 118As far as the Audiophile USB device is concerned, this value let the user
120specify: 119specify:
121 * the sample depth 120 * the sample depth
122 * the sample rate 121 * the sample rate
@@ -174,20 +173,20 @@ The parameter can be given:
174 173
175IMPORTANT NOTE WHEN SWITCHING CONFIGURATION: 174IMPORTANT NOTE WHEN SWITCHING CONFIGURATION:
176------------------------------------------- 175-------------------------------------------
177 * You may need to _first_ intialize the module with the correct device_setup 176 * You may need to _first_ initialize the module with the correct device_setup
178 parameter and _only_after_ turn on the Audiophile USB device 177 parameter and _only_after_ turn on the Audiophile USB device
179 * This is especially true when switching the sample depth: 178 * This is especially true when switching the sample depth:
180 - first trun off the device 179 - first turn off the device
181 - de-register the snd-usb-audio module 180 - de-register the snd-usb-audio module (modprobe -r)
182 - change the device_setup parameter (by either manually reprobing the module 181 - change the device_setup parameter by changing the device_setup
183 or changing modprobe.conf) 182 option in /etc/modprobe.conf
184 - turn on the device 183 - turn on the device
185 184
1862.2.2.3 - Audiophile USB's device_setup structure 1852.2.2.3 - Audiophile USB's device_setup structure
187 186
188If you want to understand the device_setup magic numbers for the Audiophile 187If you want to understand the device_setup magic numbers for the Audiophile
189USB, you need some very basic understanding of binary computation. However, 188USB, you need some very basic understanding of binary computation. However,
190this is not required to use the parameter and you may skip thi section. 189this is not required to use the parameter and you may skip this section.
191 190
192The device_setup is one byte long and its structure is the following: 191The device_setup is one byte long and its structure is the following:
193 192
@@ -231,11 +230,11 @@ Caution:
231 230
2322.2.3 - USB implementation details for this device 2312.2.3 - USB implementation details for this device
233 232
234You may safely skip this section if you're not interrested in driver 233You may safely skip this section if you're not interested in driver
235development. 234development.
236 235
237This section describes some internals aspect of the device and summarize the 236This section describes some internal aspects of the device and summarize the
238data I got by usb-snooping the windows and linux drivers. 237data I got by usb-snooping the windows and Linux drivers.
239 238
240The M-Audio Audiophile USB has 7 USB Interfaces: 239The M-Audio Audiophile USB has 7 USB Interfaces:
241a "USB interface": 240a "USB interface":
@@ -277,9 +276,9 @@ Here is a short description of the AltSettings capabilities:
277 - 16-bit depth, 8-48kHz sample mode 276 - 16-bit depth, 8-48kHz sample mode
278 - Synch playback (Do), audio format type III IEC1937_AC-3 277 - Synch playback (Do), audio format type III IEC1937_AC-3
279 278
280In order to ensure a correct intialization of the device, the driver 279In order to ensure a correct initialization of the device, the driver
281_must_know_ how the device will be used: 280_must_know_ how the device will be used:
282 * if DTS is choosen, only Interface 2 with AltSet nb.6 must be 281 * if DTS is chosen, only Interface 2 with AltSet nb.6 must be
283 registered 282 registered
284 * if 96KHz only AltSets nb.1 of each interface must be selected 283 * if 96KHz only AltSets nb.1 of each interface must be selected
285 * if samples are using 24bits/48KHz then AltSet 2 must me used if 284 * if samples are using 24bits/48KHz then AltSet 2 must me used if
@@ -290,7 +289,7 @@ _must_know_ how the device will be used:
290 is not connected 289 is not connected
291 290
292When device_setup is given as a parameter to the snd-usb-audio module, the 291When device_setup is given as a parameter to the snd-usb-audio module, the
293parse_audio_enpoint function uses a quirk called 292parse_audio_endpoints function uses a quirk called
294"audiophile_skip_setting_quirk" in order to prevent AltSettings not 293"audiophile_skip_setting_quirk" in order to prevent AltSettings not
295corresponding to device_setup from being registered in the driver. 294corresponding to device_setup from being registered in the driver.
296 295
@@ -317,9 +316,8 @@ However you may see the following warning message:
317using the "default" ALSA device. This is less efficient than it could be. 316using the "default" ALSA device. This is less efficient than it could be.
318Consider using a hardware device instead rather than using the plug layer." 317Consider using a hardware device instead rather than using the plug layer."
319 318
320
3213.2 - Patching alsa to use direct pcm device 3193.2 - Patching alsa to use direct pcm device
322------------------------------------------- 320--------------------------------------------
323A patch for Jack by Andreas Steinmetz adds support for Big Endian devices. 321A patch for Jack by Andreas Steinmetz adds support for Big Endian devices.
324However it has not been included in the CVS tree. 322However it has not been included in the CVS tree.
325 323
@@ -331,3 +329,32 @@ After having applied the patch you can run jackd with the following command
331line: 329line:
332 % jackd -R -dalsa -Phw:1,0 -r48000 -p128 -n2 -D -Chw:1,1 330 % jackd -R -dalsa -Phw:1,0 -r48000 -p128 -n2 -D -Chw:1,1
333 331
3323.2 - Getting 2 input and/or output interfaces in Jack
333------------------------------------------------------
334
335As you can see, starting the Jack server this way will only enable 1 stereo
336input (Di or Ai) and 1 stereo output (Ao or Do).
337
338This is due to the following restrictions:
339* Jack can only open one capture device and one playback device at a time
340* The Audiophile USB is seen as 2 (or three) Alsa devices: hw:1,0, hw:1,1
341 (and optionally hw:1,2)
342If you want to get Ai+Di and/or Ao+Do support with Jack, you would need to
343combine the Alsa devices into one logical "complex" device.
344
345If you want to give it a try, I recommend reading the information from
346this page: http://www.sound-man.co.uk/linuxaudio/ice1712multi.html
347It is related to another device (ice1712) but can be adapted to suit
348the Audiophile USB.
349
350Enabling multiple Audiophile USB interfaces for Jackd will certainly require:
351* patching Jack with the previously mentioned "Big Endian" patch
352* patching Jackd with the MMAP_COMPLEX patch (see the ice1712 page)
353* patching the alsa-lib/src/pcm/pcm_multi.c file (see the ice1712 page)
354* define a multi device (combination of hw:1,0 and hw:1,1) in your .asoundrc
355 file
356* start jackd with this device
357
358I had no success in testing this for now, but this may be due to my OS
359configuration. If you have any success with this kind of setup, please
360drop me an email.
diff --git a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
index 68eeebc17ff4..1faf76383bab 100644
--- a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
+++ b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
@@ -1172,7 +1172,7 @@
1172 } 1172 }
1173 1173
1174 /* PCI IDs */ 1174 /* PCI IDs */
1175 static struct pci_device_id snd_mychip_ids[] = { 1175 static struct pci_device_id snd_mychip_ids[] __devinitdata = {
1176 { PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR, 1176 { PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR,
1177 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, 1177 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },
1178 .... 1178 ....
@@ -1565,7 +1565,7 @@
1565 <informalexample> 1565 <informalexample>
1566 <programlisting> 1566 <programlisting>
1567<![CDATA[ 1567<![CDATA[
1568 static struct pci_device_id snd_mychip_ids[] = { 1568 static struct pci_device_id snd_mychip_ids[] __devinitdata = {
1569 { PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR, 1569 { PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR,
1570 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, 1570 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },
1571 .... 1571 ....
diff --git a/Makefile b/Makefile
index a940eaefe1c4..6bf99624bd4c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 17 3SUBLEVEL = 17
4EXTRAVERSION =-rc2 4EXTRAVERSION =-rc3
5NAME=Sliding Snow Leopard 5NAME=Sliding Snow Leopard
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
diff --git a/arch/alpha/lib/strncpy.S b/arch/alpha/lib/strncpy.S
index 338551c7113c..bbdef1be5f95 100644
--- a/arch/alpha/lib/strncpy.S
+++ b/arch/alpha/lib/strncpy.S
@@ -43,8 +43,8 @@ strncpy:
43 43
44 .align 4 44 .align 4
45$multiword: 45$multiword:
46 subq $24, 1, $2 # clear the final bits in the prev word 46 subq $27, 1, $2 # clear the final bits in the prev word
47 or $2, $24, $2 47 or $2, $27, $2
48 zapnot $1, $2, $1 48 zapnot $1, $2, $1
49 subq $18, 1, $18 49 subq $18, 1, $18
50 50
@@ -70,8 +70,8 @@ $multiword:
70 bne $18, 0b 70 bne $18, 0b
71 71
721: ldq_u $1, 0($16) # clear the leading bits in the final word 721: ldq_u $1, 0($16) # clear the leading bits in the final word
73 subq $27, 1, $2 73 subq $24, 1, $2
74 or $2, $27, $2 74 or $2, $24, $2
75 75
76 zap $1, $2, $1 76 zap $1, $2, $1
77 stq_u $1, 0($16) 77 stq_u $1, 0($16)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 1dbf6ddb300d..08b7cc900cae 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -150,8 +150,6 @@ config ARCH_IOP3XX
150 150
151config ARCH_IXP4XX 151config ARCH_IXP4XX
152 bool "IXP4xx-based" 152 bool "IXP4xx-based"
153 select DMABOUNCE
154 select PCI
155 help 153 help
156 Support for Intel's IXP4XX (XScale) family of processors. 154 Support for Intel's IXP4XX (XScale) family of processors.
157 155
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 95a96275f88a..6f8e84c1c1f2 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -66,7 +66,7 @@ tune-$(CONFIG_CPU_XSC3) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -
66tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) 66tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
67 67
68ifeq ($(CONFIG_AEABI),y) 68ifeq ($(CONFIG_AEABI),y)
69CFLAGS_ABI :=-mabi=aapcs -mno-thumb-interwork 69CFLAGS_ABI :=-mabi=aapcs-linux -mno-thumb-interwork
70else 70else
71CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,) 71CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,)
72endif 72endif
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c
index 0af3772efcb7..ace3fb5835d9 100644
--- a/arch/arm/boot/compressed/misc.c
+++ b/arch/arm/boot/compressed/misc.c
@@ -38,10 +38,10 @@ static void icedcc_putc(int ch)
38 if (--i < 0) 38 if (--i < 0)
39 return; 39 return;
40 40
41 asm("mrc p14, 0, %0, c0, c0, 0" : "=r" (status)); 41 asm volatile ("mrc p14, 0, %0, c0, c0, 0" : "=r" (status));
42 } while (status & 2); 42 } while (status & 2);
43 43
44 asm("mcr p15, 0, %0, c1, c0, 0" : : "r" (ch)); 44 asm("mcr p14, 0, %0, c1, c0, 0" : : "r" (ch));
45} 45}
46 46
47#define putc(ch) icedcc_putc(ch) 47#define putc(ch) icedcc_putc(ch)
diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile
index 2ce0e3a27a45..a601b8b55f35 100644
--- a/arch/arm/kernel/Makefile
+++ b/arch/arm/kernel/Makefile
@@ -29,7 +29,7 @@ ifneq ($(CONFIG_ARCH_EBSA110),y)
29 obj-y += io.o 29 obj-y += io.o
30endif 30endif
31 31
32head-y := head.o 32head-y := head$(MMUEXT).o
33obj-$(CONFIG_DEBUG_LL) += debug.o 33obj-$(CONFIG_DEBUG_LL) += debug.o
34 34
35extra-y := $(head-y) init_task.o vmlinux.lds 35extra-y := $(head-y) init_task.o vmlinux.lds
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index b093ab8738b5..0bea65864051 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -20,10 +20,11 @@
20#include <asm/mach-types.h> 20#include <asm/mach-types.h>
21#include <asm/procinfo.h> 21#include <asm/procinfo.h>
22#include <asm/ptrace.h> 22#include <asm/ptrace.h>
23#include <asm/constants.h> 23#include <asm/thread_info.h>
24#include <asm/system.h> 24#include <asm/system.h>
25 25
26#define PROCINFO_INITFUNC 12 26#define PROCINFO_INITFUNC 12
27#define MACHINFO_TYPE 0
27 28
28/* 29/*
29 * Kernel startup entry point. 30 * Kernel startup entry point.
@@ -79,5 +80,6 @@ __after_proc_init:
79 80
80 mov pc, r13 @ clear the BSS and jump 81 mov pc, r13 @ clear the BSS and jump
81 @ to start_kernel 82 @ to start_kernel
83 .ltorg
82 84
83#include "head-common.S" 85#include "head-common.S"
diff --git a/arch/arm/mach-imx/generic.c b/arch/arm/mach-imx/generic.c
index 9d8331be2b58..12ea58a3b84f 100644
--- a/arch/arm/mach-imx/generic.c
+++ b/arch/arm/mach-imx/generic.c
@@ -195,56 +195,6 @@ void __init imx_set_mmc_info(struct imxmmc_platform_data *info)
195} 195}
196EXPORT_SYMBOL(imx_set_mmc_info); 196EXPORT_SYMBOL(imx_set_mmc_info);
197 197
198static struct resource imx_uart1_resources[] = {
199 [0] = {
200 .start = 0x00206000,
201 .end = 0x002060FF,
202 .flags = IORESOURCE_MEM,
203 },
204 [1] = {
205 .start = (UART1_MINT_RX),
206 .end = (UART1_MINT_RX),
207 .flags = IORESOURCE_IRQ,
208 },
209 [2] = {
210 .start = (UART1_MINT_TX),
211 .end = (UART1_MINT_TX),
212 .flags = IORESOURCE_IRQ,
213 },
214};
215
216static struct platform_device imx_uart1_device = {
217 .name = "imx-uart",
218 .id = 0,
219 .num_resources = ARRAY_SIZE(imx_uart1_resources),
220 .resource = imx_uart1_resources,
221};
222
223static struct resource imx_uart2_resources[] = {
224 [0] = {
225 .start = 0x00207000,
226 .end = 0x002070FF,
227 .flags = IORESOURCE_MEM,
228 },
229 [1] = {
230 .start = (UART2_MINT_RX),
231 .end = (UART2_MINT_RX),
232 .flags = IORESOURCE_IRQ,
233 },
234 [2] = {
235 .start = (UART2_MINT_TX),
236 .end = (UART2_MINT_TX),
237 .flags = IORESOURCE_IRQ,
238 },
239};
240
241static struct platform_device imx_uart2_device = {
242 .name = "imx-uart",
243 .id = 1,
244 .num_resources = ARRAY_SIZE(imx_uart2_resources),
245 .resource = imx_uart2_resources,
246};
247
248static struct imxfb_mach_info imx_fb_info; 198static struct imxfb_mach_info imx_fb_info;
249 199
250void __init set_imx_fb_info(struct imxfb_mach_info *hard_imx_fb_info) 200void __init set_imx_fb_info(struct imxfb_mach_info *hard_imx_fb_info)
@@ -283,8 +233,6 @@ static struct platform_device imxfb_device = {
283static struct platform_device *devices[] __initdata = { 233static struct platform_device *devices[] __initdata = {
284 &imx_mmc_device, 234 &imx_mmc_device,
285 &imxfb_device, 235 &imxfb_device,
286 &imx_uart1_device,
287 &imx_uart2_device,
288}; 236};
289 237
290static struct map_desc imx_io_desc[] __initdata = { 238static struct map_desc imx_io_desc[] __initdata = {
diff --git a/arch/arm/mach-imx/mx1ads.c b/arch/arm/mach-imx/mx1ads.c
index e34d0df90aed..e1f6c0bbe1e7 100644
--- a/arch/arm/mach-imx/mx1ads.c
+++ b/arch/arm/mach-imx/mx1ads.c
@@ -26,6 +26,7 @@
26 26
27#include <asm/mach/arch.h> 27#include <asm/mach/arch.h>
28#include <asm/arch/mmc.h> 28#include <asm/arch/mmc.h>
29#include <asm/arch/imx-uart.h>
29#include <linux/interrupt.h> 30#include <linux/interrupt.h>
30#include "generic.h" 31#include "generic.h"
31 32
@@ -48,8 +49,70 @@ static struct platform_device cs89x0_device = {
48 .resource = cs89x0_resources, 49 .resource = cs89x0_resources,
49}; 50};
50 51
52static struct imxuart_platform_data uart_pdata = {
53 .flags = IMXUART_HAVE_RTSCTS,
54};
55
56static struct resource imx_uart1_resources[] = {
57 [0] = {
58 .start = 0x00206000,
59 .end = 0x002060FF,
60 .flags = IORESOURCE_MEM,
61 },
62 [1] = {
63 .start = (UART1_MINT_RX),
64 .end = (UART1_MINT_RX),
65 .flags = IORESOURCE_IRQ,
66 },
67 [2] = {
68 .start = (UART1_MINT_TX),
69 .end = (UART1_MINT_TX),
70 .flags = IORESOURCE_IRQ,
71 },
72};
73
74static struct platform_device imx_uart1_device = {
75 .name = "imx-uart",
76 .id = 0,
77 .num_resources = ARRAY_SIZE(imx_uart1_resources),
78 .resource = imx_uart1_resources,
79 .dev = {
80 .platform_data = &uart_pdata,
81 }
82};
83
84static struct resource imx_uart2_resources[] = {
85 [0] = {
86 .start = 0x00207000,
87 .end = 0x002070FF,
88 .flags = IORESOURCE_MEM,
89 },
90 [1] = {
91 .start = (UART2_MINT_RX),
92 .end = (UART2_MINT_RX),
93 .flags = IORESOURCE_IRQ,
94 },
95 [2] = {
96 .start = (UART2_MINT_TX),
97 .end = (UART2_MINT_TX),
98 .flags = IORESOURCE_IRQ,
99 },
100};
101
102static struct platform_device imx_uart2_device = {
103 .name = "imx-uart",
104 .id = 1,
105 .num_resources = ARRAY_SIZE(imx_uart2_resources),
106 .resource = imx_uart2_resources,
107 .dev = {
108 .platform_data = &uart_pdata,
109 }
110};
111
51static struct platform_device *devices[] __initdata = { 112static struct platform_device *devices[] __initdata = {
52 &cs89x0_device, 113 &cs89x0_device,
114 &imx_uart1_device,
115 &imx_uart2_device,
53}; 116};
54 117
55#ifdef CONFIG_MMC_IMX 118#ifdef CONFIG_MMC_IMX
@@ -75,6 +138,17 @@ mx1ads_init(void)
75 imx_gpio_mode(GPIO_PORTB | GPIO_GIUS | GPIO_IN | 20); 138 imx_gpio_mode(GPIO_PORTB | GPIO_GIUS | GPIO_IN | 20);
76 imx_set_mmc_info(&mx1ads_mmc_info); 139 imx_set_mmc_info(&mx1ads_mmc_info);
77#endif 140#endif
141
142 imx_gpio_mode(PC9_PF_UART1_CTS);
143 imx_gpio_mode(PC10_PF_UART1_RTS);
144 imx_gpio_mode(PC11_PF_UART1_TXD);
145 imx_gpio_mode(PC12_PF_UART1_RXD);
146
147 imx_gpio_mode(PB28_PF_UART2_CTS);
148 imx_gpio_mode(PB29_PF_UART2_RTS);
149 imx_gpio_mode(PB30_PF_UART2_TXD);
150 imx_gpio_mode(PB31_PF_UART2_RXD);
151
78 platform_add_devices(devices, ARRAY_SIZE(devices)); 152 platform_add_devices(devices, ARRAY_SIZE(devices));
79} 153}
80 154
diff --git a/arch/arm/mach-ixp4xx/Kconfig b/arch/arm/mach-ixp4xx/Kconfig
index 5bf50a2a737d..2a39f9e481ad 100644
--- a/arch/arm/mach-ixp4xx/Kconfig
+++ b/arch/arm/mach-ixp4xx/Kconfig
@@ -11,6 +11,7 @@ comment "IXP4xx Platforms"
11config MACH_NSLU2 11config MACH_NSLU2
12 bool 12 bool
13 prompt "Linksys NSLU2" 13 prompt "Linksys NSLU2"
14 select PCI
14 help 15 help
15 Say 'Y' here if you want your kernel to support Linksys's 16 Say 'Y' here if you want your kernel to support Linksys's
16 NSLU2 NAS device. For more information on this platform, 17 NSLU2 NAS device. For more information on this platform,
@@ -18,6 +19,7 @@ config MACH_NSLU2
18 19
19config ARCH_AVILA 20config ARCH_AVILA
20 bool "Avila" 21 bool "Avila"
22 select PCI
21 help 23 help
22 Say 'Y' here if you want your kernel to support the Gateworks 24 Say 'Y' here if you want your kernel to support the Gateworks
23 Avila Network Platform. For more information on this platform, 25 Avila Network Platform. For more information on this platform,
@@ -25,6 +27,7 @@ config ARCH_AVILA
25 27
26config ARCH_ADI_COYOTE 28config ARCH_ADI_COYOTE
27 bool "Coyote" 29 bool "Coyote"
30 select PCI
28 help 31 help
29 Say 'Y' here if you want your kernel to support the ADI 32 Say 'Y' here if you want your kernel to support the ADI
30 Engineering Coyote Gateway Reference Platform. For more 33 Engineering Coyote Gateway Reference Platform. For more
@@ -32,6 +35,7 @@ config ARCH_ADI_COYOTE
32 35
33config ARCH_IXDP425 36config ARCH_IXDP425
34 bool "IXDP425" 37 bool "IXDP425"
38 select PCI
35 help 39 help
36 Say 'Y' here if you want your kernel to support Intel's 40 Say 'Y' here if you want your kernel to support Intel's
37 IXDP425 Development Platform (Also known as Richfield). 41 IXDP425 Development Platform (Also known as Richfield).
@@ -39,6 +43,7 @@ config ARCH_IXDP425
39 43
40config MACH_IXDPG425 44config MACH_IXDPG425
41 bool "IXDPG425" 45 bool "IXDPG425"
46 select PCI
42 help 47 help
43 Say 'Y' here if you want your kernel to support Intel's 48 Say 'Y' here if you want your kernel to support Intel's
44 IXDPG425 Development Platform (Also known as Montajade). 49 IXDPG425 Development Platform (Also known as Montajade).
@@ -46,6 +51,7 @@ config MACH_IXDPG425
46 51
47config MACH_IXDP465 52config MACH_IXDP465
48 bool "IXDP465" 53 bool "IXDP465"
54 select PCI
49 help 55 help
50 Say 'Y' here if you want your kernel to support Intel's 56 Say 'Y' here if you want your kernel to support Intel's
51 IXDP465 Development Platform (Also known as BMP). 57 IXDP465 Development Platform (Also known as BMP).
@@ -72,6 +78,7 @@ config ARCH_PRPMC1100
72config MACH_NAS100D 78config MACH_NAS100D
73 bool 79 bool
74 prompt "NAS100D" 80 prompt "NAS100D"
81 select PCI
75 help 82 help
76 Say 'Y' here if you want your kernel to support Iomega's 83 Say 'Y' here if you want your kernel to support Iomega's
77 NAS 100d device. For more information on this platform, 84 NAS 100d device. For more information on this platform,
@@ -96,6 +103,7 @@ config CPU_IXP46X
96config MACH_GTWX5715 103config MACH_GTWX5715
97 bool "Gemtek WX5715 (Linksys WRV54G)" 104 bool "Gemtek WX5715 (Linksys WRV54G)"
98 depends on ARCH_IXP4XX 105 depends on ARCH_IXP4XX
106 select PCI
99 help 107 help
100 This board is currently inside the Linksys WRV54G Gateways. 108 This board is currently inside the Linksys WRV54G Gateways.
101 109
@@ -110,11 +118,16 @@ config MACH_GTWX5715
110 "High Speed" UART is n/c (as far as I can tell) 118 "High Speed" UART is n/c (as far as I can tell)
111 20 Pin ARM/Xscale JTAG interface on J2 119 20 Pin ARM/Xscale JTAG interface on J2
112 120
113
114comment "IXP4xx Options" 121comment "IXP4xx Options"
115 122
123config DMABOUNCE
124 bool
125 default y
126 depends on PCI
127
116config IXP4XX_INDIRECT_PCI 128config IXP4XX_INDIRECT_PCI
117 bool "Use indirect PCI memory access" 129 bool "Use indirect PCI memory access"
130 depends on PCI
118 help 131 help
119 IXP4xx provides two methods of accessing PCI memory space: 132 IXP4xx provides two methods of accessing PCI memory space:
120 133
diff --git a/arch/arm/mach-ixp4xx/Makefile b/arch/arm/mach-ixp4xx/Makefile
index 0471044fa179..5a4aaa0e0a09 100644
--- a/arch/arm/mach-ixp4xx/Makefile
+++ b/arch/arm/mach-ixp4xx/Makefile
@@ -2,8 +2,9 @@
2# Makefile for the linux kernel. 2# Makefile for the linux kernel.
3# 3#
4 4
5obj-y += common.o common-pci.o 5obj-y += common.o
6 6
7obj-$(CONFIG_PCI) += common-pci.o
7obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pci.o ixdp425-setup.o 8obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pci.o ixdp425-setup.o
8obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o 9obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o
9obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o 10obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o
diff --git a/arch/arm/vfp/vfpdouble.c b/arch/arm/vfp/vfpdouble.c
index febd115dba28..009038c8113e 100644
--- a/arch/arm/vfp/vfpdouble.c
+++ b/arch/arm/vfp/vfpdouble.c
@@ -197,7 +197,7 @@ u32 vfp_double_normaliseround(int dd, struct vfp_double *vd, u32 fpscr, u32 exce
197 dd, d, exceptions); 197 dd, d, exceptions);
198 vfp_put_double(dd, d); 198 vfp_put_double(dd, d);
199 } 199 }
200 return exceptions & ~VFP_NAN_FLAG; 200 return exceptions;
201} 201}
202 202
203/* 203/*
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
index 22f3da4e0829..37ff8145b5b5 100644
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -180,7 +180,7 @@ static u32 vfp_emulate_instruction(u32 inst, u32 fpscr, struct pt_regs *regs)
180 * emulate it. 180 * emulate it.
181 */ 181 */
182 } 182 }
183 return exceptions; 183 return exceptions & ~VFP_NAN_FLAG;
184} 184}
185 185
186/* 186/*
diff --git a/arch/arm/vfp/vfpsingle.c b/arch/arm/vfp/vfpsingle.c
index 4ac27f193934..dae2c2f46052 100644
--- a/arch/arm/vfp/vfpsingle.c
+++ b/arch/arm/vfp/vfpsingle.c
@@ -203,7 +203,7 @@ u32 vfp_single_normaliseround(int sd, struct vfp_single *vs, u32 fpscr, u32 exce
203 vfp_put_float(sd, d); 203 vfp_put_float(sd, d);
204 } 204 }
205 205
206 return exceptions & ~VFP_NAN_FLAG; 206 return exceptions;
207} 207}
208 208
209/* 209/*
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index 18ec9fe6deb6..c6fe99e57a05 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -467,7 +467,7 @@ endchoice
467 467
468choice 468choice
469 depends on EXPERIMENTAL && !X86_PAE 469 depends on EXPERIMENTAL && !X86_PAE
470 prompt "Memory split" 470 prompt "Memory split" if EMBEDDED
471 default VMSPLIT_3G 471 default VMSPLIT_3G
472 help 472 help
473 Select the desired split between kernel and user memory. 473 Select the desired split between kernel and user memory.
@@ -756,7 +756,7 @@ config PHYSICAL_START
756 756
757config HOTPLUG_CPU 757config HOTPLUG_CPU
758 bool "Support for hot-pluggable CPUs (EXPERIMENTAL)" 758 bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
759 depends on SMP && HOTPLUG && EXPERIMENTAL && !X86_VOYAGER && !X86_PC 759 depends on SMP && HOTPLUG && EXPERIMENTAL && !X86_VOYAGER
760 ---help--- 760 ---help---
761 Say Y here to experiment with turning CPUs off and on. CPUs 761 Say Y here to experiment with turning CPUs off and on. CPUs
762 can be controlled through /sys/devices/system/cpu. 762 can be controlled through /sys/devices/system/cpu.
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c
index 049a25583793..40e5aba3ad3d 100644
--- a/arch/i386/kernel/acpi/boot.c
+++ b/arch/i386/kernel/acpi/boot.c
@@ -215,7 +215,7 @@ static int __init acpi_parse_madt(unsigned long phys_addr, unsigned long size)
215{ 215{
216 struct acpi_table_madt *madt = NULL; 216 struct acpi_table_madt *madt = NULL;
217 217
218 if (!phys_addr || !size || !cpu_has_apic) 218 if (!phys_addr || !size)
219 return -EINVAL; 219 return -EINVAL;
220 220
221 madt = (struct acpi_table_madt *)__acpi_map_table(phys_addr, size); 221 madt = (struct acpi_table_madt *)__acpi_map_table(phys_addr, size);
@@ -1102,9 +1102,6 @@ int __init acpi_boot_table_init(void)
1102 dmi_check_system(acpi_dmi_table); 1102 dmi_check_system(acpi_dmi_table);
1103#endif 1103#endif
1104 1104
1105 if (!cpu_has_apic)
1106 return -ENODEV;
1107
1108 /* 1105 /*
1109 * If acpi_disabled, bail out 1106 * If acpi_disabled, bail out
1110 * One exception: acpi=ht continues far enough to enumerate LAPICs 1107 * One exception: acpi=ht continues far enough to enumerate LAPICs
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c
index 254cee9f0b7b..013b85df18c6 100644
--- a/arch/i386/kernel/apic.c
+++ b/arch/i386/kernel/apic.c
@@ -757,10 +757,6 @@ static int __init apic_set_verbosity(char *str)
757 apic_verbosity = APIC_DEBUG; 757 apic_verbosity = APIC_DEBUG;
758 else if (strcmp("verbose", str) == 0) 758 else if (strcmp("verbose", str) == 0)
759 apic_verbosity = APIC_VERBOSE; 759 apic_verbosity = APIC_VERBOSE;
760 else
761 printk(KERN_WARNING "APIC Verbosity level %s not recognised"
762 " use apic=verbose or apic=debug\n", str);
763
764 return 1; 760 return 1;
765} 761}
766 762
diff --git a/arch/i386/kernel/cpu/intel_cacheinfo.c b/arch/i386/kernel/cpu/intel_cacheinfo.c
index 9df87b03612c..c8547a6fa7e6 100644
--- a/arch/i386/kernel/cpu/intel_cacheinfo.c
+++ b/arch/i386/kernel/cpu/intel_cacheinfo.c
@@ -642,7 +642,7 @@ static void __cpuexit cache_remove_dev(struct sys_device * sys_dev)
642 return; 642 return;
643} 643}
644 644
645static int __cpuinit cacheinfo_cpu_callback(struct notifier_block *nfb, 645static int cacheinfo_cpu_callback(struct notifier_block *nfb,
646 unsigned long action, void *hcpu) 646 unsigned long action, void *hcpu)
647{ 647{
648 unsigned int cpu = (unsigned long)hcpu; 648 unsigned int cpu = (unsigned long)hcpu;
diff --git a/arch/i386/kernel/kprobes.c b/arch/i386/kernel/kprobes.c
index 043f5292e70a..38806f427849 100644
--- a/arch/i386/kernel/kprobes.c
+++ b/arch/i386/kernel/kprobes.c
@@ -242,10 +242,6 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
242 kcb->kprobe_status = KPROBE_REENTER; 242 kcb->kprobe_status = KPROBE_REENTER;
243 return 1; 243 return 1;
244 } else { 244 } else {
245 if (regs->eflags & VM_MASK) {
246 /* We are in virtual-8086 mode. Return 0 */
247 goto no_kprobe;
248 }
249 if (*addr != BREAKPOINT_INSTRUCTION) { 245 if (*addr != BREAKPOINT_INSTRUCTION) {
250 /* The breakpoint instruction was removed by 246 /* The breakpoint instruction was removed by
251 * another cpu right after we hit, no further 247 * another cpu right after we hit, no further
@@ -265,11 +261,6 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
265 261
266 p = get_kprobe(addr); 262 p = get_kprobe(addr);
267 if (!p) { 263 if (!p) {
268 if (regs->eflags & VM_MASK) {
269 /* We are in virtual-8086 mode. Return 0 */
270 goto no_kprobe;
271 }
272
273 if (*addr != BREAKPOINT_INSTRUCTION) { 264 if (*addr != BREAKPOINT_INSTRUCTION) {
274 /* 265 /*
275 * The breakpoint instruction was removed right 266 * The breakpoint instruction was removed right
@@ -452,10 +443,11 @@ static void __kprobes resume_execution(struct kprobe *p,
452 *tos &= ~(TF_MASK | IF_MASK); 443 *tos &= ~(TF_MASK | IF_MASK);
453 *tos |= kcb->kprobe_old_eflags; 444 *tos |= kcb->kprobe_old_eflags;
454 break; 445 break;
455 case 0xc3: /* ret/lret */ 446 case 0xc2: /* iret/ret/lret */
456 case 0xcb: 447 case 0xc3:
457 case 0xc2:
458 case 0xca: 448 case 0xca:
449 case 0xcb:
450 case 0xcf:
459 case 0xea: /* jmp absolute -- eip is correct */ 451 case 0xea: /* jmp absolute -- eip is correct */
460 /* eip is already adjusted, no more changes required */ 452 /* eip is already adjusted, no more changes required */
461 p->ainsn.boostable = 1; 453 p->ainsn.boostable = 1;
@@ -463,10 +455,13 @@ static void __kprobes resume_execution(struct kprobe *p,
463 case 0xe8: /* call relative - Fix return addr */ 455 case 0xe8: /* call relative - Fix return addr */
464 *tos = orig_eip + (*tos - copy_eip); 456 *tos = orig_eip + (*tos - copy_eip);
465 break; 457 break;
458 case 0x9a: /* call absolute -- same as call absolute, indirect */
459 *tos = orig_eip + (*tos - copy_eip);
460 goto no_change;
466 case 0xff: 461 case 0xff:
467 if ((p->ainsn.insn[1] & 0x30) == 0x10) { 462 if ((p->ainsn.insn[1] & 0x30) == 0x10) {
468 /* call absolute, indirect */
469 /* 463 /*
464 * call absolute, indirect
470 * Fix return addr; eip is correct. 465 * Fix return addr; eip is correct.
471 * But this is not boostable 466 * But this is not boostable
472 */ 467 */
diff --git a/arch/i386/kernel/ptrace.c b/arch/i386/kernel/ptrace.c
index 506462ef36a0..fd7eaf7866e0 100644
--- a/arch/i386/kernel/ptrace.c
+++ b/arch/i386/kernel/ptrace.c
@@ -671,7 +671,7 @@ int do_syscall_trace(struct pt_regs *regs, int entryexit)
671 671
672 if (unlikely(current->audit_context)) { 672 if (unlikely(current->audit_context)) {
673 if (entryexit) 673 if (entryexit)
674 audit_syscall_exit(current, AUDITSC_RESULT(regs->eax), 674 audit_syscall_exit(AUDITSC_RESULT(regs->eax),
675 regs->eax); 675 regs->eax);
676 /* Debug traps, when using PTRACE_SINGLESTEP, must be sent only 676 /* Debug traps, when using PTRACE_SINGLESTEP, must be sent only
677 * on the syscall exit path. Normally, when TIF_SYSCALL_AUDIT is 677 * on the syscall exit path. Normally, when TIF_SYSCALL_AUDIT is
@@ -720,14 +720,13 @@ int do_syscall_trace(struct pt_regs *regs, int entryexit)
720 ret = is_sysemu; 720 ret = is_sysemu;
721out: 721out:
722 if (unlikely(current->audit_context) && !entryexit) 722 if (unlikely(current->audit_context) && !entryexit)
723 audit_syscall_entry(current, AUDIT_ARCH_I386, regs->orig_eax, 723 audit_syscall_entry(AUDIT_ARCH_I386, regs->orig_eax,
724 regs->ebx, regs->ecx, regs->edx, regs->esi); 724 regs->ebx, regs->ecx, regs->edx, regs->esi);
725 if (ret == 0) 725 if (ret == 0)
726 return 0; 726 return 0;
727 727
728 regs->orig_eax = -1; /* force skip of syscall restarting */ 728 regs->orig_eax = -1; /* force skip of syscall restarting */
729 if (unlikely(current->audit_context)) 729 if (unlikely(current->audit_context))
730 audit_syscall_exit(current, AUDITSC_RESULT(regs->eax), 730 audit_syscall_exit(AUDITSC_RESULT(regs->eax), regs->eax);
731 regs->eax);
732 return 1; 731 return 1;
733} 732}
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
index 80cb3b2d0997..d77e89ac0d54 100644
--- a/arch/i386/kernel/setup.c
+++ b/arch/i386/kernel/setup.c
@@ -970,8 +970,10 @@ efi_memory_present_wrapper(unsigned long start, unsigned long end, void *arg)
970 * not-overlapping, which is the case 970 * not-overlapping, which is the case
971 */ 971 */
972int __init 972int __init
973e820_all_mapped(unsigned long start, unsigned long end, unsigned type) 973e820_all_mapped(unsigned long s, unsigned long e, unsigned type)
974{ 974{
975 u64 start = s;
976 u64 end = e;
975 int i; 977 int i;
976 for (i = 0; i < e820.nr_map; i++) { 978 for (i = 0; i < e820.nr_map; i++) {
977 struct e820entry *ei = &e820.map[i]; 979 struct e820entry *ei = &e820.map[i];
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
index a6969903f2d6..825b2b4ca721 100644
--- a/arch/i386/kernel/smpboot.c
+++ b/arch/i386/kernel/smpboot.c
@@ -313,7 +313,9 @@ static void __init synchronize_tsc_bp (void)
313 if (tsc_values[i] < avg) 313 if (tsc_values[i] < avg)
314 realdelta = -realdelta; 314 realdelta = -realdelta;
315 315
316 printk(KERN_INFO "CPU#%d had %ld usecs TSC skew, fixed it up.\n", i, realdelta); 316 if (realdelta > 0)
317 printk(KERN_INFO "CPU#%d had %ld usecs TSC "
318 "skew, fixed it up.\n", i, realdelta);
317 } 319 }
318 320
319 sum += delta; 321 sum += delta;
diff --git a/arch/i386/kernel/timers/timer_tsc.c b/arch/i386/kernel/timers/timer_tsc.c
index 5e41ee29c8cf..f1187ddb0d0f 100644
--- a/arch/i386/kernel/timers/timer_tsc.c
+++ b/arch/i386/kernel/timers/timer_tsc.c
@@ -279,7 +279,7 @@ time_cpufreq_notifier(struct notifier_block *nb, unsigned long val,
279{ 279{
280 struct cpufreq_freqs *freq = data; 280 struct cpufreq_freqs *freq = data;
281 281
282 if (val != CPUFREQ_RESUMECHANGE) 282 if (val != CPUFREQ_RESUMECHANGE && val != CPUFREQ_SUSPENDCHANGE)
283 write_seqlock_irq(&xtime_lock); 283 write_seqlock_irq(&xtime_lock);
284 if (!ref_freq) { 284 if (!ref_freq) {
285 if (!freq->old){ 285 if (!freq->old){
@@ -312,7 +312,7 @@ time_cpufreq_notifier(struct notifier_block *nb, unsigned long val,
312 } 312 }
313 313
314end: 314end:
315 if (val != CPUFREQ_RESUMECHANGE) 315 if (val != CPUFREQ_RESUMECHANGE && val != CPUFREQ_SUSPENDCHANGE)
316 write_sequnlock_irq(&xtime_lock); 316 write_sequnlock_irq(&xtime_lock);
317 317
318 return 0; 318 return 0;
diff --git a/arch/i386/kernel/vm86.c b/arch/i386/kernel/vm86.c
index aee14fafd13d..00e0118e717c 100644
--- a/arch/i386/kernel/vm86.c
+++ b/arch/i386/kernel/vm86.c
@@ -312,7 +312,7 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk
312 312
313 /*call audit_syscall_exit since we do not exit via the normal paths */ 313 /*call audit_syscall_exit since we do not exit via the normal paths */
314 if (unlikely(current->audit_context)) 314 if (unlikely(current->audit_context))
315 audit_syscall_exit(current, AUDITSC_RESULT(eax), eax); 315 audit_syscall_exit(AUDITSC_RESULT(eax), eax);
316 316
317 __asm__ __volatile__( 317 __asm__ __volatile__(
318 "movl %0,%%esp\n\t" 318 "movl %0,%%esp\n\t"
diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c
index 73235443fda7..06dab00aaadc 100644
--- a/arch/i386/pci/irq.c
+++ b/arch/i386/pci/irq.c
@@ -591,7 +591,6 @@ static __init int via_router_probe(struct irq_router *r,
591 case PCI_DEVICE_ID_VIA_8233A: 591 case PCI_DEVICE_ID_VIA_8233A:
592 case PCI_DEVICE_ID_VIA_8235: 592 case PCI_DEVICE_ID_VIA_8235:
593 case PCI_DEVICE_ID_VIA_8237: 593 case PCI_DEVICE_ID_VIA_8237:
594 case PCI_DEVICE_ID_VIA_8237_SATA:
595 /* FIXME: add new ones for 8233/5 */ 594 /* FIXME: add new ones for 8233/5 */
596 r->name = "VIA"; 595 r->name = "VIA";
597 r->get = pirq_via_get; 596 r->get = pirq_via_get;
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 9f40eeff0b5c..0f3076a820c3 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -413,6 +413,8 @@ config IA64_PALINFO
413config SGI_SN 413config SGI_SN
414 def_bool y if (IA64_SGI_SN2 || IA64_GENERIC) 414 def_bool y if (IA64_SGI_SN2 || IA64_GENERIC)
415 415
416source "drivers/sn/Kconfig"
417
416source "drivers/firmware/Kconfig" 418source "drivers/firmware/Kconfig"
417 419
418source "fs/Kconfig.binfmt" 420source "fs/Kconfig.binfmt"
diff --git a/arch/ia64/configs/sn2_defconfig b/arch/ia64/configs/sn2_defconfig
index a718034d68d0..f6a8853cd1b4 100644
--- a/arch/ia64/configs/sn2_defconfig
+++ b/arch/ia64/configs/sn2_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc5 3# Linux kernel version: 2.6.17-rc3
4# Mon Feb 27 16:06:38 2006 4# Thu Apr 27 11:48:23 2006
5# 5#
6 6
7# 7#
@@ -24,6 +24,7 @@ CONFIG_SYSCTL=y
24# CONFIG_AUDIT is not set 24# CONFIG_AUDIT is not set
25# CONFIG_IKCONFIG is not set 25# CONFIG_IKCONFIG is not set
26CONFIG_CPUSETS=y 26CONFIG_CPUSETS=y
27CONFIG_RELAY=y
27CONFIG_INITRAMFS_SOURCE="" 28CONFIG_INITRAMFS_SOURCE=""
28CONFIG_CC_OPTIMIZE_FOR_SIZE=y 29CONFIG_CC_OPTIMIZE_FOR_SIZE=y
29# CONFIG_EMBEDDED is not set 30# CONFIG_EMBEDDED is not set
@@ -38,10 +39,6 @@ CONFIG_BASE_FULL=y
38CONFIG_FUTEX=y 39CONFIG_FUTEX=y
39CONFIG_EPOLL=y 40CONFIG_EPOLL=y
40CONFIG_SHMEM=y 41CONFIG_SHMEM=y
41CONFIG_CC_ALIGN_FUNCTIONS=0
42CONFIG_CC_ALIGN_LABELS=0
43CONFIG_CC_ALIGN_LOOPS=0
44CONFIG_CC_ALIGN_JUMPS=0
45CONFIG_SLAB=y 42CONFIG_SLAB=y
46# CONFIG_TINY_SHMEM is not set 43# CONFIG_TINY_SHMEM is not set
47CONFIG_BASE_SMALL=0 44CONFIG_BASE_SMALL=0
@@ -53,7 +50,6 @@ CONFIG_BASE_SMALL=0
53CONFIG_MODULES=y 50CONFIG_MODULES=y
54CONFIG_MODULE_UNLOAD=y 51CONFIG_MODULE_UNLOAD=y
55# CONFIG_MODULE_FORCE_UNLOAD is not set 52# CONFIG_MODULE_FORCE_UNLOAD is not set
56CONFIG_OBSOLETE_MODPARM=y
57# CONFIG_MODVERSIONS is not set 53# CONFIG_MODVERSIONS is not set
58# CONFIG_MODULE_SRCVERSION_ALL is not set 54# CONFIG_MODULE_SRCVERSION_ALL is not set
59CONFIG_KMOD=y 55CONFIG_KMOD=y
@@ -62,6 +58,7 @@ CONFIG_STOP_MACHINE=y
62# 58#
63# Block layer 59# Block layer
64# 60#
61# CONFIG_BLK_DEV_IO_TRACE is not set
65 62
66# 63#
67# IO Schedulers 64# IO Schedulers
@@ -84,8 +81,10 @@ CONFIG_64BIT=y
84CONFIG_MMU=y 81CONFIG_MMU=y
85CONFIG_SWIOTLB=y 82CONFIG_SWIOTLB=y
86CONFIG_RWSEM_XCHGADD_ALGORITHM=y 83CONFIG_RWSEM_XCHGADD_ALGORITHM=y
84CONFIG_GENERIC_FIND_NEXT_BIT=y
87CONFIG_GENERIC_CALIBRATE_DELAY=y 85CONFIG_GENERIC_CALIBRATE_DELAY=y
88CONFIG_TIME_INTERPOLATION=y 86CONFIG_TIME_INTERPOLATION=y
87CONFIG_DMI=y
89CONFIG_EFI=y 88CONFIG_EFI=y
90CONFIG_GENERIC_IOMAP=y 89CONFIG_GENERIC_IOMAP=y
91CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y 90CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
@@ -116,7 +115,6 @@ CONFIG_IA64_SGI_SN_XP=m
116CONFIG_FORCE_MAX_ZONEORDER=17 115CONFIG_FORCE_MAX_ZONEORDER=17
117CONFIG_SMP=y 116CONFIG_SMP=y
118CONFIG_NR_CPUS=1024 117CONFIG_NR_CPUS=1024
119CONFIG_IA64_NR_NODES=256
120# CONFIG_HOTPLUG_CPU is not set 118# CONFIG_HOTPLUG_CPU is not set
121CONFIG_SCHED_SMT=y 119CONFIG_SCHED_SMT=y
122CONFIG_PREEMPT=y 120CONFIG_PREEMPT=y
@@ -136,6 +134,7 @@ CONFIG_ARCH_FLATMEM_ENABLE=y
136CONFIG_ARCH_SPARSEMEM_ENABLE=y 134CONFIG_ARCH_SPARSEMEM_ENABLE=y
137CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y 135CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
138CONFIG_NUMA=y 136CONFIG_NUMA=y
137CONFIG_NODES_SHIFT=8
139CONFIG_VIRTUAL_MEM_MAP=y 138CONFIG_VIRTUAL_MEM_MAP=y
140CONFIG_HOLES_IN_ZONE=y 139CONFIG_HOLES_IN_ZONE=y
141CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y 140CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
@@ -187,7 +186,6 @@ CONFIG_ACPI_SYSTEM=y
187CONFIG_PCI=y 186CONFIG_PCI=y
188CONFIG_PCI_DOMAINS=y 187CONFIG_PCI_DOMAINS=y
189# CONFIG_PCI_MSI is not set 188# CONFIG_PCI_MSI is not set
190CONFIG_PCI_LEGACY_PROC=y
191# CONFIG_PCI_DEBUG is not set 189# CONFIG_PCI_DEBUG is not set
192 190
193# 191#
@@ -231,6 +229,7 @@ CONFIG_SYN_COOKIES=y
231# CONFIG_INET_AH is not set 229# CONFIG_INET_AH is not set
232# CONFIG_INET_ESP is not set 230# CONFIG_INET_ESP is not set
233# CONFIG_INET_IPCOMP is not set 231# CONFIG_INET_IPCOMP is not set
232# CONFIG_INET_XFRM_TUNNEL is not set
234# CONFIG_INET_TUNNEL is not set 233# CONFIG_INET_TUNNEL is not set
235CONFIG_INET_DIAG=m 234CONFIG_INET_DIAG=m
236CONFIG_INET_TCP_DIAG=m 235CONFIG_INET_TCP_DIAG=m
@@ -238,9 +237,11 @@ CONFIG_INET_TCP_DIAG=m
238CONFIG_TCP_CONG_BIC=y 237CONFIG_TCP_CONG_BIC=y
239CONFIG_IPV6=m 238CONFIG_IPV6=m
240# CONFIG_IPV6_PRIVACY is not set 239# CONFIG_IPV6_PRIVACY is not set
240# CONFIG_IPV6_ROUTER_PREF is not set
241# CONFIG_INET6_AH is not set 241# CONFIG_INET6_AH is not set
242# CONFIG_INET6_ESP is not set 242# CONFIG_INET6_ESP is not set
243# CONFIG_INET6_IPCOMP is not set 243# CONFIG_INET6_IPCOMP is not set
244# CONFIG_INET6_XFRM_TUNNEL is not set
244# CONFIG_INET6_TUNNEL is not set 245# CONFIG_INET6_TUNNEL is not set
245# CONFIG_IPV6_TUNNEL is not set 246# CONFIG_IPV6_TUNNEL is not set
246# CONFIG_NETFILTER is not set 247# CONFIG_NETFILTER is not set
@@ -468,9 +469,14 @@ CONFIG_SCSI_SATA_VITESSE=y
468# CONFIG_SCSI_INIA100 is not set 469# CONFIG_SCSI_INIA100 is not set
469# CONFIG_SCSI_SYM53C8XX_2 is not set 470# CONFIG_SCSI_SYM53C8XX_2 is not set
470# CONFIG_SCSI_IPR is not set 471# CONFIG_SCSI_IPR is not set
471# CONFIG_SCSI_QLOGIC_FC is not set
472CONFIG_SCSI_QLOGIC_1280=y 472CONFIG_SCSI_QLOGIC_1280=y
473# CONFIG_SCSI_QLA_FC is not set 473CONFIG_SCSI_QLA_FC=y
474CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE=y
475# CONFIG_SCSI_QLA21XX is not set
476CONFIG_SCSI_QLA22XX=y
477CONFIG_SCSI_QLA2300=y
478CONFIG_SCSI_QLA2322=y
479# CONFIG_SCSI_QLA24XX is not set
474# CONFIG_SCSI_LPFC is not set 480# CONFIG_SCSI_LPFC is not set
475# CONFIG_SCSI_DC395x is not set 481# CONFIG_SCSI_DC395x is not set
476# CONFIG_SCSI_DC390T is not set 482# CONFIG_SCSI_DC390T is not set
@@ -486,6 +492,7 @@ CONFIG_MD_RAID0=y
486CONFIG_MD_RAID1=y 492CONFIG_MD_RAID1=y
487# CONFIG_MD_RAID10 is not set 493# CONFIG_MD_RAID10 is not set
488CONFIG_MD_RAID5=y 494CONFIG_MD_RAID5=y
495# CONFIG_MD_RAID5_RESHAPE is not set
489# CONFIG_MD_RAID6 is not set 496# CONFIG_MD_RAID6 is not set
490CONFIG_MD_MULTIPATH=y 497CONFIG_MD_MULTIPATH=y
491# CONFIG_MD_FAULTY is not set 498# CONFIG_MD_FAULTY is not set
@@ -694,6 +701,7 @@ CONFIG_EFI_RTC=y
694# Ftape, the floppy tape device driver 701# Ftape, the floppy tape device driver
695# 702#
696CONFIG_AGP=y 703CONFIG_AGP=y
704# CONFIG_AGP_VIA is not set
697CONFIG_AGP_SGI_TIOCA=y 705CONFIG_AGP_SGI_TIOCA=y
698# CONFIG_DRM is not set 706# CONFIG_DRM is not set
699CONFIG_RAW_DRIVER=m 707CONFIG_RAW_DRIVER=m
@@ -735,10 +743,6 @@ CONFIG_MMTIMER=y
735# 743#
736 744
737# 745#
738# Multimedia Capabilities Port drivers
739#
740
741#
742# Multimedia devices 746# Multimedia devices
743# 747#
744# CONFIG_VIDEO_DEV is not set 748# CONFIG_VIDEO_DEV is not set
@@ -747,6 +751,7 @@ CONFIG_MMTIMER=y
747# Digital Video Broadcasting Devices 751# Digital Video Broadcasting Devices
748# 752#
749# CONFIG_DVB is not set 753# CONFIG_DVB is not set
754# CONFIG_USB_DABUSB is not set
750 755
751# 756#
752# Graphics support 757# Graphics support
@@ -757,6 +762,7 @@ CONFIG_MMTIMER=y
757# Console display driver support 762# Console display driver support
758# 763#
759CONFIG_VGA_CONSOLE=y 764CONFIG_VGA_CONSOLE=y
765# CONFIG_VGACON_SOFT_SCROLLBACK is not set
760CONFIG_DUMMY_CONSOLE=y 766CONFIG_DUMMY_CONSOLE=y
761 767
762# 768#
@@ -769,6 +775,7 @@ CONFIG_DUMMY_CONSOLE=y
769# 775#
770CONFIG_USB_ARCH_HAS_HCD=y 776CONFIG_USB_ARCH_HAS_HCD=y
771CONFIG_USB_ARCH_HAS_OHCI=y 777CONFIG_USB_ARCH_HAS_OHCI=y
778CONFIG_USB_ARCH_HAS_EHCI=y
772CONFIG_USB=m 779CONFIG_USB=m
773# CONFIG_USB_DEBUG is not set 780# CONFIG_USB_DEBUG is not set
774 781
@@ -829,9 +836,7 @@ CONFIG_USB_HIDINPUT=y
829# CONFIG_USB_ACECAD is not set 836# CONFIG_USB_ACECAD is not set
830# CONFIG_USB_KBTAB is not set 837# CONFIG_USB_KBTAB is not set
831# CONFIG_USB_POWERMATE is not set 838# CONFIG_USB_POWERMATE is not set
832# CONFIG_USB_MTOUCH is not set 839# CONFIG_USB_TOUCHSCREEN is not set
833# CONFIG_USB_ITMTOUCH is not set
834# CONFIG_USB_EGALAX is not set
835# CONFIG_USB_YEALINK is not set 840# CONFIG_USB_YEALINK is not set
836# CONFIG_USB_XPAD is not set 841# CONFIG_USB_XPAD is not set
837# CONFIG_USB_ATI_REMOTE is not set 842# CONFIG_USB_ATI_REMOTE is not set
@@ -846,15 +851,6 @@ CONFIG_USB_HIDINPUT=y
846# CONFIG_USB_MICROTEK is not set 851# CONFIG_USB_MICROTEK is not set
847 852
848# 853#
849# USB Multimedia devices
850#
851# CONFIG_USB_DABUSB is not set
852
853#
854# Video4Linux support is needed for USB Multimedia device support
855#
856
857#
858# USB Network Adapters 854# USB Network Adapters
859# 855#
860# CONFIG_USB_CATC is not set 856# CONFIG_USB_CATC is not set
@@ -905,15 +901,29 @@ CONFIG_USB_MON=y
905# CONFIG_MMC is not set 901# CONFIG_MMC is not set
906 902
907# 903#
904# LED devices
905#
906# CONFIG_NEW_LEDS is not set
907
908#
909# LED drivers
910#
911
912#
913# LED Triggers
914#
915
916#
908# InfiniBand support 917# InfiniBand support
909# 918#
910CONFIG_INFINIBAND=m 919CONFIG_INFINIBAND=m
911# CONFIG_INFINIBAND_USER_MAD is not set 920# CONFIG_INFINIBAND_USER_MAD is not set
912CONFIG_INFINIBAND_USER_ACCESS=m 921CONFIG_INFINIBAND_USER_ACCESS=m
913CONFIG_INFINIBAND_MTHCA=m 922CONFIG_INFINIBAND_MTHCA=m
914# CONFIG_INFINIBAND_MTHCA_DEBUG is not set 923CONFIG_INFINIBAND_MTHCA_DEBUG=y
915CONFIG_INFINIBAND_IPOIB=m 924CONFIG_INFINIBAND_IPOIB=m
916# CONFIG_INFINIBAND_IPOIB_DEBUG is not set 925CONFIG_INFINIBAND_IPOIB_DEBUG=y
926# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
917CONFIG_INFINIBAND_SRP=m 927CONFIG_INFINIBAND_SRP=m
918 928
919# 929#
@@ -923,8 +933,13 @@ CONFIG_SGI_IOC4=y
923CONFIG_SGI_IOC3=y 933CONFIG_SGI_IOC3=y
924 934
925# 935#
926# EDAC - error detection and reporting (RAS) 936# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
937#
938
939#
940# Real Time Clock
927# 941#
942# CONFIG_RTC_CLASS is not set
928 943
929# 944#
930# File systems 945# File systems
@@ -997,7 +1012,6 @@ CONFIG_TMPFS=y
997CONFIG_HUGETLBFS=y 1012CONFIG_HUGETLBFS=y
998CONFIG_HUGETLB_PAGE=y 1013CONFIG_HUGETLB_PAGE=y
999CONFIG_RAMFS=y 1014CONFIG_RAMFS=y
1000CONFIG_RELAYFS_FS=m
1001# CONFIG_CONFIGFS_FS is not set 1015# CONFIG_CONFIGFS_FS is not set
1002 1016
1003# 1017#
diff --git a/arch/ia64/ia32/binfmt_elf32.c b/arch/ia64/ia32/binfmt_elf32.c
index 4e7a6a1ec6c7..da03c06744f1 100644
--- a/arch/ia64/ia32/binfmt_elf32.c
+++ b/arch/ia64/ia32/binfmt_elf32.c
@@ -35,6 +35,9 @@ extern void ia64_elf32_init (struct pt_regs *regs);
35 35
36static void elf32_set_personality (void); 36static void elf32_set_personality (void);
37 37
38static unsigned long __attribute ((unused))
39randomize_stack_top(unsigned long stack_top);
40
38#define setup_arg_pages(bprm,tos,exec) ia32_setup_arg_pages(bprm,exec) 41#define setup_arg_pages(bprm,tos,exec) ia32_setup_arg_pages(bprm,exec)
39#define elf_map elf32_map 42#define elf_map elf32_map
40 43
diff --git a/arch/ia64/ia32/ia32_entry.S b/arch/ia64/ia32/ia32_entry.S
index 95fe04400f6b..a32cd59b81ed 100644
--- a/arch/ia64/ia32/ia32_entry.S
+++ b/arch/ia64/ia32/ia32_entry.S
@@ -334,7 +334,7 @@ ia32_syscall_table:
334 data8 sys_setdomainname 334 data8 sys_setdomainname
335 data8 sys32_newuname 335 data8 sys32_newuname
336 data8 sys32_modify_ldt 336 data8 sys32_modify_ldt
337 data8 sys_ni_syscall /* adjtimex */ 337 data8 compat_sys_adjtimex
338 data8 sys32_mprotect /* 125 */ 338 data8 sys32_mprotect /* 125 */
339 data8 compat_sys_sigprocmask 339 data8 compat_sys_sigprocmask
340 data8 sys_ni_syscall /* create_module */ 340 data8 sys_ni_syscall /* create_module */
diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
index e30798811216..bcb80ca5cf40 100644
--- a/arch/ia64/kernel/entry.S
+++ b/arch/ia64/kernel/entry.S
@@ -1610,5 +1610,6 @@ sys_call_table:
1610 data8 sys_get_robust_list 1610 data8 sys_get_robust_list
1611 data8 sys_sync_file_range // 1300 1611 data8 sys_sync_file_range // 1300
1612 data8 sys_tee 1612 data8 sys_tee
1613 data8 sys_vmsplice
1613 1614
1614 .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls 1615 .org sys_call_table + 8*NR_syscalls // guard against failures to increase NR_syscalls
diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c
index 37c88eb55873..ca6666b51ccb 100644
--- a/arch/ia64/kernel/mca_drv.c
+++ b/arch/ia64/kernel/mca_drv.c
@@ -62,6 +62,11 @@ typedef enum {
62 ISOLATE_NONE 62 ISOLATE_NONE
63} isolate_status_t; 63} isolate_status_t;
64 64
65typedef enum {
66 MCA_NOT_RECOVERED = 0,
67 MCA_RECOVERED = 1
68} recovery_status_t;
69
65/* 70/*
66 * This pool keeps pointers to the section part of SAL error record 71 * This pool keeps pointers to the section part of SAL error record
67 */ 72 */
@@ -71,6 +76,18 @@ static struct {
71 int max_idx; /* Maximum index of section pointer list pool */ 76 int max_idx; /* Maximum index of section pointer list pool */
72} slidx_pool; 77} slidx_pool;
73 78
79static int
80fatal_mca(const char *fmt, ...)
81{
82 va_list args;
83
84 va_start(args, fmt);
85 vprintk(fmt, args);
86 va_end(args);
87
88 return MCA_NOT_RECOVERED;
89}
90
74/** 91/**
75 * mca_page_isolate - isolate a poisoned page in order not to use it later 92 * mca_page_isolate - isolate a poisoned page in order not to use it later
76 * @paddr: poisoned memory location 93 * @paddr: poisoned memory location
@@ -424,7 +441,7 @@ recover_from_read_error(slidx_table_t *slidx,
424 441
425 /* Is target address valid? */ 442 /* Is target address valid? */
426 if (!pbci->tv) 443 if (!pbci->tv)
427 return 0; 444 return fatal_mca(KERN_ALERT "MCA: target address not valid\n");
428 445
429 /* 446 /*
430 * cpu read or memory-mapped io read 447 * cpu read or memory-mapped io read
@@ -442,7 +459,7 @@ recover_from_read_error(slidx_table_t *slidx,
442 459
443 /* Is minstate valid? */ 460 /* Is minstate valid? */
444 if (!peidx_bottom(peidx) || !(peidx_bottom(peidx)->valid.minstate)) 461 if (!peidx_bottom(peidx) || !(peidx_bottom(peidx)->valid.minstate))
445 return 0; 462 return fatal_mca(KERN_ALERT "MCA: minstate not valid\n");
446 psr1 =(struct ia64_psr *)&(peidx_minstate_area(peidx)->pmsa_ipsr); 463 psr1 =(struct ia64_psr *)&(peidx_minstate_area(peidx)->pmsa_ipsr);
447 psr2 =(struct ia64_psr *)&(peidx_minstate_area(peidx)->pmsa_xpsr); 464 psr2 =(struct ia64_psr *)&(peidx_minstate_area(peidx)->pmsa_xpsr);
448 465
@@ -476,12 +493,13 @@ recover_from_read_error(slidx_table_t *slidx,
476 psr2->bn = 1; 493 psr2->bn = 1;
477 psr2->i = 0; 494 psr2->i = 0;
478 495
479 return 1; 496 return MCA_RECOVERED;
480 } 497 }
481 498
482 } 499 }
483 500
484 return 0; 501 return fatal_mca(KERN_ALERT "MCA: kernel context not recovered,"
502 " iip 0x%lx\n", pmsa->pmsa_iip);
485} 503}
486 504
487/** 505/**
@@ -567,13 +585,13 @@ recover_from_processor_error(int platform, slidx_table_t *slidx,
567 * The machine check is corrected. 585 * The machine check is corrected.
568 */ 586 */
569 if (psp->cm == 1) 587 if (psp->cm == 1)
570 return 1; 588 return MCA_RECOVERED;
571 589
572 /* 590 /*
573 * The error was not contained. Software must be reset. 591 * The error was not contained. Software must be reset.
574 */ 592 */
575 if (psp->us || psp->ci == 0) 593 if (psp->us || psp->ci == 0)
576 return 0; 594 return fatal_mca(KERN_ALERT "MCA: error not contained\n");
577 595
578 /* 596 /*
579 * The cache check and bus check bits have four possible states 597 * The cache check and bus check bits have four possible states
@@ -584,20 +602,22 @@ recover_from_processor_error(int platform, slidx_table_t *slidx,
584 * 1 1 Memory error, attempt recovery 602 * 1 1 Memory error, attempt recovery
585 */ 603 */
586 if (psp->bc == 0 || pbci == NULL) 604 if (psp->bc == 0 || pbci == NULL)
587 return 0; 605 return fatal_mca(KERN_ALERT "MCA: No bus check\n");
588 606
589 /* 607 /*
590 * Sorry, we cannot handle so many. 608 * Sorry, we cannot handle so many.
591 */ 609 */
592 if (peidx_bus_check_num(peidx) > 1) 610 if (peidx_bus_check_num(peidx) > 1)
593 return 0; 611 return fatal_mca(KERN_ALERT "MCA: Too many bus checks\n");
594 /* 612 /*
595 * Well, here is only one bus error. 613 * Well, here is only one bus error.
596 */ 614 */
597 if (pbci->ib || pbci->cc) 615 if (pbci->ib)
598 return 0; 616 return fatal_mca(KERN_ALERT "MCA: Internal Bus error\n");
617 if (pbci->cc)
618 return fatal_mca(KERN_ALERT "MCA: Cache-cache error\n");
599 if (pbci->eb && pbci->bsi > 0) 619 if (pbci->eb && pbci->bsi > 0)
600 return 0; 620 return fatal_mca(KERN_ALERT "MCA: External bus check fatal status\n");
601 621
602 /* 622 /*
603 * This is a local MCA and estimated as recoverble external bus error. 623 * This is a local MCA and estimated as recoverble external bus error.
@@ -609,7 +629,7 @@ recover_from_processor_error(int platform, slidx_table_t *slidx,
609 /* 629 /*
610 * On account of strange SAL error record, we cannot recover. 630 * On account of strange SAL error record, we cannot recover.
611 */ 631 */
612 return 0; 632 return fatal_mca(KERN_ALERT "MCA: Strange SAL record\n");
613} 633}
614 634
615/** 635/**
@@ -638,12 +658,10 @@ mca_try_to_recover(void *rec, struct ia64_sal_os_state *sos)
638 658
639 /* Now, OS can recover when there is one processor error section */ 659 /* Now, OS can recover when there is one processor error section */
640 if (n_proc_err > 1) 660 if (n_proc_err > 1)
641 return 0; 661 return fatal_mca(KERN_ALERT "MCA: Too Many Errors\n");
642 else if (n_proc_err == 0) { 662 else if (n_proc_err == 0)
643 /* Weird SAL record ... We need not to recover */ 663 /* Weird SAL record ... We need not to recover */
644 664 return fatal_mca(KERN_ALERT "MCA: Weird SAL record\n");
645 return 1;
646 }
647 665
648 /* Make index of processor error section */ 666 /* Make index of processor error section */
649 mca_make_peidx((sal_log_processor_info_t*) 667 mca_make_peidx((sal_log_processor_info_t*)
@@ -654,7 +672,7 @@ mca_try_to_recover(void *rec, struct ia64_sal_os_state *sos)
654 672
655 /* Check whether MCA is global or not */ 673 /* Check whether MCA is global or not */
656 if (is_mca_global(&peidx, &pbci, sos)) 674 if (is_mca_global(&peidx, &pbci, sos))
657 return 0; 675 return fatal_mca(KERN_ALERT "MCA: global MCA\n");
658 676
659 /* Try to recover a processor error */ 677 /* Try to recover a processor error */
660 return recover_from_processor_error(platform_err, &slidx, &peidx, 678 return recover_from_processor_error(platform_err, &slidx, &peidx,
diff --git a/arch/ia64/kernel/palinfo.c b/arch/ia64/kernel/palinfo.c
index 6386f63c413e..859fb37ff49b 100644
--- a/arch/ia64/kernel/palinfo.c
+++ b/arch/ia64/kernel/palinfo.c
@@ -959,7 +959,7 @@ remove_palinfo_proc_entries(unsigned int hcpu)
959 } 959 }
960} 960}
961 961
962static int __devinit palinfo_cpu_callback(struct notifier_block *nfb, 962static int palinfo_cpu_callback(struct notifier_block *nfb,
963 unsigned long action, 963 unsigned long action,
964 void *hcpu) 964 void *hcpu)
965{ 965{
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c
index 9887c8787e7a..e61e15e28d8b 100644
--- a/arch/ia64/kernel/ptrace.c
+++ b/arch/ia64/kernel/ptrace.c
@@ -1644,7 +1644,7 @@ syscall_trace_enter (long arg0, long arg1, long arg2, long arg3,
1644 arch = AUDIT_ARCH_IA64; 1644 arch = AUDIT_ARCH_IA64;
1645 } 1645 }
1646 1646
1647 audit_syscall_entry(current, arch, syscall, arg0, arg1, arg2, arg3); 1647 audit_syscall_entry(arch, syscall, arg0, arg1, arg2, arg3);
1648 } 1648 }
1649 1649
1650} 1650}
@@ -1662,7 +1662,7 @@ syscall_trace_leave (long arg0, long arg1, long arg2, long arg3,
1662 1662
1663 if (success != AUDITSC_SUCCESS) 1663 if (success != AUDITSC_SUCCESS)
1664 result = -result; 1664 result = -result;
1665 audit_syscall_exit(current, success, result); 1665 audit_syscall_exit(success, result);
1666 } 1666 }
1667 1667
1668 if (test_thread_flag(TIF_SYSCALL_TRACE) 1668 if (test_thread_flag(TIF_SYSCALL_TRACE)
diff --git a/arch/ia64/kernel/salinfo.c b/arch/ia64/kernel/salinfo.c
index 9d5a823479a3..663a186ad194 100644
--- a/arch/ia64/kernel/salinfo.c
+++ b/arch/ia64/kernel/salinfo.c
@@ -572,7 +572,7 @@ static struct file_operations salinfo_data_fops = {
572}; 572};
573 573
574#ifdef CONFIG_HOTPLUG_CPU 574#ifdef CONFIG_HOTPLUG_CPU
575static int __devinit 575static int
576salinfo_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu) 576salinfo_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu)
577{ 577{
578 unsigned int i, cpu = (unsigned long)hcpu; 578 unsigned int i, cpu = (unsigned long)hcpu;
diff --git a/arch/ia64/kernel/topology.c b/arch/ia64/kernel/topology.c
index b47476d655f1..4f3a16b37f8f 100644
--- a/arch/ia64/kernel/topology.c
+++ b/arch/ia64/kernel/topology.c
@@ -305,13 +305,10 @@ static struct kobj_type cache_ktype_percpu_entry = {
305 305
306static void __cpuinit cpu_cache_sysfs_exit(unsigned int cpu) 306static void __cpuinit cpu_cache_sysfs_exit(unsigned int cpu)
307{ 307{
308 if (all_cpu_cache_info[cpu].cache_leaves) { 308 kfree(all_cpu_cache_info[cpu].cache_leaves);
309 kfree(all_cpu_cache_info[cpu].cache_leaves); 309 all_cpu_cache_info[cpu].cache_leaves = NULL;
310 all_cpu_cache_info[cpu].cache_leaves = NULL;
311 }
312 all_cpu_cache_info[cpu].num_cache_leaves = 0; 310 all_cpu_cache_info[cpu].num_cache_leaves = 0;
313 memset(&all_cpu_cache_info[cpu].kobj, 0, sizeof(struct kobject)); 311 memset(&all_cpu_cache_info[cpu].kobj, 0, sizeof(struct kobject));
314
315 return; 312 return;
316} 313}
317 314
@@ -429,7 +426,7 @@ static int __cpuinit cache_remove_dev(struct sys_device * sys_dev)
429 * When a cpu is hot-plugged, do a check and initiate 426 * When a cpu is hot-plugged, do a check and initiate
430 * cache kobject if necessary 427 * cache kobject if necessary
431 */ 428 */
432static int __cpuinit cache_cpu_callback(struct notifier_block *nfb, 429static int cache_cpu_callback(struct notifier_block *nfb,
433 unsigned long action, void *hcpu) 430 unsigned long action, void *hcpu)
434{ 431{
435 unsigned int cpu = (unsigned long)hcpu; 432 unsigned int cpu = (unsigned long)hcpu;
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 9ba32b2d96d0..ab829a22f8a4 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -31,7 +31,6 @@
31#include <asm/irq.h> 31#include <asm/irq.h>
32#include <asm/hw_irq.h> 32#include <asm/hw_irq.h>
33 33
34
35/* 34/*
36 * Low-level SAL-based PCI configuration access functions. Note that SAL 35 * Low-level SAL-based PCI configuration access functions. Note that SAL
37 * calls are already serialized (via sal_lock), so we don't need another 36 * calls are already serialized (via sal_lock), so we don't need another
@@ -707,7 +706,7 @@ int ia64_pci_legacy_read(struct pci_bus *bus, u16 port, u32 *val, u8 size)
707 * 706 *
708 * Simply writes @size bytes of @val to @port. 707 * Simply writes @size bytes of @val to @port.
709 */ 708 */
710int ia64_pci_legacy_write(struct pci_dev *bus, u16 port, u32 val, u8 size) 709int ia64_pci_legacy_write(struct pci_bus *bus, u16 port, u32 val, u8 size)
711{ 710{
712 int ret = size; 711 int ret = size;
713 712
diff --git a/arch/ia64/sn/kernel/sn2/sn_hwperf.c b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
index d917afa30b27..739c948dc504 100644
--- a/arch/ia64/sn/kernel/sn2/sn_hwperf.c
+++ b/arch/ia64/sn/kernel/sn2/sn_hwperf.c
@@ -284,6 +284,8 @@ static int sn_hwperf_get_nearest_node_objdata(struct sn_hwperf_object_info *objb
284 /* find nearest node with cpus and nearest memory */ 284 /* find nearest node with cpus and nearest memory */
285 for (router=NULL, j=0; j < op->ports; j++) { 285 for (router=NULL, j=0; j < op->ports; j++) {
286 dest = sn_hwperf_findobj_id(objbuf, nobj, ptdata[j].conn_id); 286 dest = sn_hwperf_findobj_id(objbuf, nobj, ptdata[j].conn_id);
287 if (dest && SN_HWPERF_IS_ROUTER(dest))
288 router = dest;
287 if (!dest || SN_HWPERF_FOREIGN(dest) || 289 if (!dest || SN_HWPERF_FOREIGN(dest) ||
288 !SN_HWPERF_IS_NODE(dest) || SN_HWPERF_IS_IONODE(dest)) { 290 !SN_HWPERF_IS_NODE(dest) || SN_HWPERF_IS_IONODE(dest)) {
289 continue; 291 continue;
@@ -299,8 +301,6 @@ static int sn_hwperf_get_nearest_node_objdata(struct sn_hwperf_object_info *objb
299 *near_mem_node = c; 301 *near_mem_node = c;
300 found_mem++; 302 found_mem++;
301 } 303 }
302 if (SN_HWPERF_IS_ROUTER(dest))
303 router = dest;
304 } 304 }
305 305
306 if (router && (!found_cpu || !found_mem)) { 306 if (router && (!found_cpu || !found_mem)) {
@@ -493,7 +493,7 @@ static int sn_topology_show(struct seq_file *s, void *d)
493 * numalink ports 493 * numalink ports
494 */ 494 */
495 sz = obj->ports * sizeof(struct sn_hwperf_port_info); 495 sz = obj->ports * sizeof(struct sn_hwperf_port_info);
496 if ((ptdata = vmalloc(sz)) == NULL) 496 if ((ptdata = kmalloc(sz, GFP_KERNEL)) == NULL)
497 return -ENOMEM; 497 return -ENOMEM;
498 e = ia64_sn_hwperf_op(sn_hwperf_master_nasid, 498 e = ia64_sn_hwperf_op(sn_hwperf_master_nasid,
499 SN_HWPERF_ENUM_PORTS, obj->id, sz, 499 SN_HWPERF_ENUM_PORTS, obj->id, sz,
@@ -541,7 +541,7 @@ static int sn_topology_show(struct seq_file *s, void *d)
541 (SN_HWPERF_IS_NL3ROUTER(obj) || 541 (SN_HWPERF_IS_NL3ROUTER(obj) ||
542 SN_HWPERF_IS_NL3ROUTER(p)) ? "LLP3" : "LLP4"); 542 SN_HWPERF_IS_NL3ROUTER(p)) ? "LLP3" : "LLP4");
543 } 543 }
544 vfree(ptdata); 544 kfree(ptdata);
545 } 545 }
546 546
547 return 0; 547 return 0;
diff --git a/arch/ia64/sn/kernel/xpc_partition.c b/arch/ia64/sn/kernel/xpc_partition.c
index 94211429fd0c..2a89cfce4954 100644
--- a/arch/ia64/sn/kernel/xpc_partition.c
+++ b/arch/ia64/sn/kernel/xpc_partition.c
@@ -136,9 +136,7 @@ xpc_get_rsvd_page_pa(int nasid)
136 } 136 }
137 137
138 if (L1_CACHE_ALIGN(len) > buf_len) { 138 if (L1_CACHE_ALIGN(len) > buf_len) {
139 if (buf_base != NULL) { 139 kfree(buf_base);
140 kfree(buf_base);
141 }
142 buf_len = L1_CACHE_ALIGN(len); 140 buf_len = L1_CACHE_ALIGN(len);
143 buf = (u64) xpc_kmalloc_cacheline_aligned(buf_len, 141 buf = (u64) xpc_kmalloc_cacheline_aligned(buf_len,
144 GFP_KERNEL, &buf_base); 142 GFP_KERNEL, &buf_base);
@@ -159,9 +157,7 @@ xpc_get_rsvd_page_pa(int nasid)
159 } 157 }
160 } 158 }
161 159
162 if (buf_base != NULL) { 160 kfree(buf_base);
163 kfree(buf_base);
164 }
165 161
166 if (status != SALRET_OK) { 162 if (status != SALRET_OK) {
167 rp_pa = 0; 163 rp_pa = 0;
diff --git a/arch/ia64/sn/pci/tioce_provider.c b/arch/ia64/sn/pci/tioce_provider.c
index fa073cc4b565..833295624e5d 100644
--- a/arch/ia64/sn/pci/tioce_provider.c
+++ b/arch/ia64/sn/pci/tioce_provider.c
@@ -682,9 +682,6 @@ tioce_reserve_m32(struct tioce_kernel *ce_kern, u64 base, u64 limit)
682 int ate_index, last_ate, ps; 682 int ate_index, last_ate, ps;
683 struct tioce *ce_mmr; 683 struct tioce *ce_mmr;
684 684
685 if (!TIOCE_M32_ADDR(base))
686 return;
687
688 ce_mmr = (struct tioce *)ce_kern->ce_common->ce_pcibus.bs_base; 685 ce_mmr = (struct tioce *)ce_kern->ce_common->ce_pcibus.bs_base;
689 ps = ce_kern->ce_ate3240_pagesize; 686 ps = ce_kern->ce_ate3240_pagesize;
690 ate_index = ATE_PAGE(base, ps); 687 ate_index = ATE_PAGE(base, ps);
@@ -693,6 +690,9 @@ tioce_reserve_m32(struct tioce_kernel *ce_kern, u64 base, u64 limit)
693 if (ate_index < 64) 690 if (ate_index < 64)
694 ate_index = 64; 691 ate_index = 64;
695 692
693 if (last_ate >= TIOCE_NUM_M3240_ATES)
694 last_ate = TIOCE_NUM_M3240_ATES - 1;
695
696 while (ate_index <= last_ate) { 696 while (ate_index <= last_ate) {
697 u64 ate; 697 u64 ate;
698 698
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 87f0b79c6b15..ee5fbb02b28f 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1067,6 +1067,7 @@ choice
1067config CPU_MIPS32_R1 1067config CPU_MIPS32_R1
1068 bool "MIPS32 Release 1" 1068 bool "MIPS32 Release 1"
1069 depends on SYS_HAS_CPU_MIPS32_R1 1069 depends on SYS_HAS_CPU_MIPS32_R1
1070 select CPU_HAS_LLSC
1070 select CPU_HAS_PREFETCH 1071 select CPU_HAS_PREFETCH
1071 select CPU_SUPPORTS_32BIT_KERNEL 1072 select CPU_SUPPORTS_32BIT_KERNEL
1072 select CPU_SUPPORTS_HIGHMEM 1073 select CPU_SUPPORTS_HIGHMEM
@@ -1084,6 +1085,7 @@ config CPU_MIPS32_R1
1084config CPU_MIPS32_R2 1085config CPU_MIPS32_R2
1085 bool "MIPS32 Release 2" 1086 bool "MIPS32 Release 2"
1086 depends on SYS_HAS_CPU_MIPS32_R2 1087 depends on SYS_HAS_CPU_MIPS32_R2
1088 select CPU_HAS_LLSC
1087 select CPU_HAS_PREFETCH 1089 select CPU_HAS_PREFETCH
1088 select CPU_SUPPORTS_32BIT_KERNEL 1090 select CPU_SUPPORTS_32BIT_KERNEL
1089 select CPU_SUPPORTS_HIGHMEM 1091 select CPU_SUPPORTS_HIGHMEM
@@ -1097,6 +1099,7 @@ config CPU_MIPS32_R2
1097config CPU_MIPS64_R1 1099config CPU_MIPS64_R1
1098 bool "MIPS64 Release 1" 1100 bool "MIPS64 Release 1"
1099 depends on SYS_HAS_CPU_MIPS64_R1 1101 depends on SYS_HAS_CPU_MIPS64_R1
1102 select CPU_HAS_LLSC
1100 select CPU_HAS_PREFETCH 1103 select CPU_HAS_PREFETCH
1101 select CPU_SUPPORTS_32BIT_KERNEL 1104 select CPU_SUPPORTS_32BIT_KERNEL
1102 select CPU_SUPPORTS_64BIT_KERNEL 1105 select CPU_SUPPORTS_64BIT_KERNEL
@@ -1115,6 +1118,7 @@ config CPU_MIPS64_R1
1115config CPU_MIPS64_R2 1118config CPU_MIPS64_R2
1116 bool "MIPS64 Release 2" 1119 bool "MIPS64 Release 2"
1117 depends on SYS_HAS_CPU_MIPS64_R2 1120 depends on SYS_HAS_CPU_MIPS64_R2
1121 select CPU_HAS_LLSC
1118 select CPU_HAS_PREFETCH 1122 select CPU_HAS_PREFETCH
1119 select CPU_SUPPORTS_32BIT_KERNEL 1123 select CPU_SUPPORTS_32BIT_KERNEL
1120 select CPU_SUPPORTS_64BIT_KERNEL 1124 select CPU_SUPPORTS_64BIT_KERNEL
@@ -1129,6 +1133,7 @@ config CPU_MIPS64_R2
1129config CPU_R3000 1133config CPU_R3000
1130 bool "R3000" 1134 bool "R3000"
1131 depends on SYS_HAS_CPU_R3000 1135 depends on SYS_HAS_CPU_R3000
1136 select CPU_HAS_WB
1132 select CPU_SUPPORTS_32BIT_KERNEL 1137 select CPU_SUPPORTS_32BIT_KERNEL
1133 select CPU_SUPPORTS_HIGHMEM 1138 select CPU_SUPPORTS_HIGHMEM
1134 help 1139 help
@@ -1158,6 +1163,7 @@ config CPU_VR41XX
1158config CPU_R4300 1163config CPU_R4300
1159 bool "R4300" 1164 bool "R4300"
1160 depends on SYS_HAS_CPU_R4300 1165 depends on SYS_HAS_CPU_R4300
1166 select CPU_HAS_LLSC
1161 select CPU_SUPPORTS_32BIT_KERNEL 1167 select CPU_SUPPORTS_32BIT_KERNEL
1162 select CPU_SUPPORTS_64BIT_KERNEL 1168 select CPU_SUPPORTS_64BIT_KERNEL
1163 help 1169 help
@@ -1166,6 +1172,7 @@ config CPU_R4300
1166config CPU_R4X00 1172config CPU_R4X00
1167 bool "R4x00" 1173 bool "R4x00"
1168 depends on SYS_HAS_CPU_R4X00 1174 depends on SYS_HAS_CPU_R4X00
1175 select CPU_HAS_LLSC
1169 select CPU_SUPPORTS_32BIT_KERNEL 1176 select CPU_SUPPORTS_32BIT_KERNEL
1170 select CPU_SUPPORTS_64BIT_KERNEL 1177 select CPU_SUPPORTS_64BIT_KERNEL
1171 help 1178 help
@@ -1175,6 +1182,7 @@ config CPU_R4X00
1175config CPU_TX49XX 1182config CPU_TX49XX
1176 bool "R49XX" 1183 bool "R49XX"
1177 depends on SYS_HAS_CPU_TX49XX 1184 depends on SYS_HAS_CPU_TX49XX
1185 select CPU_HAS_LLSC
1178 select CPU_HAS_PREFETCH 1186 select CPU_HAS_PREFETCH
1179 select CPU_SUPPORTS_32BIT_KERNEL 1187 select CPU_SUPPORTS_32BIT_KERNEL
1180 select CPU_SUPPORTS_64BIT_KERNEL 1188 select CPU_SUPPORTS_64BIT_KERNEL
@@ -1182,6 +1190,7 @@ config CPU_TX49XX
1182config CPU_R5000 1190config CPU_R5000
1183 bool "R5000" 1191 bool "R5000"
1184 depends on SYS_HAS_CPU_R5000 1192 depends on SYS_HAS_CPU_R5000
1193 select CPU_HAS_LLSC
1185 select CPU_SUPPORTS_32BIT_KERNEL 1194 select CPU_SUPPORTS_32BIT_KERNEL
1186 select CPU_SUPPORTS_64BIT_KERNEL 1195 select CPU_SUPPORTS_64BIT_KERNEL
1187 help 1196 help
@@ -1190,12 +1199,14 @@ config CPU_R5000
1190config CPU_R5432 1199config CPU_R5432
1191 bool "R5432" 1200 bool "R5432"
1192 depends on SYS_HAS_CPU_R5432 1201 depends on SYS_HAS_CPU_R5432
1202 select CPU_HAS_LLSC
1193 select CPU_SUPPORTS_32BIT_KERNEL 1203 select CPU_SUPPORTS_32BIT_KERNEL
1194 select CPU_SUPPORTS_64BIT_KERNEL 1204 select CPU_SUPPORTS_64BIT_KERNEL
1195 1205
1196config CPU_R6000 1206config CPU_R6000
1197 bool "R6000" 1207 bool "R6000"
1198 depends on EXPERIMENTAL 1208 depends on EXPERIMENTAL
1209 select CPU_HAS_LLSC
1199 depends on SYS_HAS_CPU_R6000 1210 depends on SYS_HAS_CPU_R6000
1200 select CPU_SUPPORTS_32BIT_KERNEL 1211 select CPU_SUPPORTS_32BIT_KERNEL
1201 help 1212 help
@@ -1205,6 +1216,7 @@ config CPU_R6000
1205config CPU_NEVADA 1216config CPU_NEVADA
1206 bool "RM52xx" 1217 bool "RM52xx"
1207 depends on SYS_HAS_CPU_NEVADA 1218 depends on SYS_HAS_CPU_NEVADA
1219 select CPU_HAS_LLSC
1208 select CPU_SUPPORTS_32BIT_KERNEL 1220 select CPU_SUPPORTS_32BIT_KERNEL
1209 select CPU_SUPPORTS_64BIT_KERNEL 1221 select CPU_SUPPORTS_64BIT_KERNEL
1210 help 1222 help
@@ -1214,6 +1226,7 @@ config CPU_R8000
1214 bool "R8000" 1226 bool "R8000"
1215 depends on EXPERIMENTAL 1227 depends on EXPERIMENTAL
1216 depends on SYS_HAS_CPU_R8000 1228 depends on SYS_HAS_CPU_R8000
1229 select CPU_HAS_LLSC
1217 select CPU_HAS_PREFETCH 1230 select CPU_HAS_PREFETCH
1218 select CPU_SUPPORTS_64BIT_KERNEL 1231 select CPU_SUPPORTS_64BIT_KERNEL
1219 help 1232 help
@@ -1223,6 +1236,7 @@ config CPU_R8000
1223config CPU_R10000 1236config CPU_R10000
1224 bool "R10000" 1237 bool "R10000"
1225 depends on SYS_HAS_CPU_R10000 1238 depends on SYS_HAS_CPU_R10000
1239 select CPU_HAS_LLSC
1226 select CPU_HAS_PREFETCH 1240 select CPU_HAS_PREFETCH
1227 select CPU_SUPPORTS_32BIT_KERNEL 1241 select CPU_SUPPORTS_32BIT_KERNEL
1228 select CPU_SUPPORTS_64BIT_KERNEL 1242 select CPU_SUPPORTS_64BIT_KERNEL
@@ -1233,6 +1247,7 @@ config CPU_R10000
1233config CPU_RM7000 1247config CPU_RM7000
1234 bool "RM7000" 1248 bool "RM7000"
1235 depends on SYS_HAS_CPU_RM7000 1249 depends on SYS_HAS_CPU_RM7000
1250 select CPU_HAS_LLSC
1236 select CPU_HAS_PREFETCH 1251 select CPU_HAS_PREFETCH
1237 select CPU_SUPPORTS_32BIT_KERNEL 1252 select CPU_SUPPORTS_32BIT_KERNEL
1238 select CPU_SUPPORTS_64BIT_KERNEL 1253 select CPU_SUPPORTS_64BIT_KERNEL
@@ -1241,6 +1256,7 @@ config CPU_RM7000
1241config CPU_RM9000 1256config CPU_RM9000
1242 bool "RM9000" 1257 bool "RM9000"
1243 depends on SYS_HAS_CPU_RM9000 1258 depends on SYS_HAS_CPU_RM9000
1259 select CPU_HAS_LLSC
1244 select CPU_HAS_PREFETCH 1260 select CPU_HAS_PREFETCH
1245 select CPU_SUPPORTS_32BIT_KERNEL 1261 select CPU_SUPPORTS_32BIT_KERNEL
1246 select CPU_SUPPORTS_64BIT_KERNEL 1262 select CPU_SUPPORTS_64BIT_KERNEL
@@ -1249,6 +1265,7 @@ config CPU_RM9000
1249config CPU_SB1 1265config CPU_SB1
1250 bool "SB1" 1266 bool "SB1"
1251 depends on SYS_HAS_CPU_SB1 1267 depends on SYS_HAS_CPU_SB1
1268 select CPU_HAS_LLSC
1252 select CPU_SUPPORTS_32BIT_KERNEL 1269 select CPU_SUPPORTS_32BIT_KERNEL
1253 select CPU_SUPPORTS_64BIT_KERNEL 1270 select CPU_SUPPORTS_64BIT_KERNEL
1254 select CPU_SUPPORTS_HIGHMEM 1271 select CPU_SUPPORTS_HIGHMEM
@@ -1449,6 +1466,8 @@ choice
1449 1466
1450config MIPS_MT_SMTC 1467config MIPS_MT_SMTC
1451 bool "SMTC: Use all TCs on all VPEs for SMP" 1468 bool "SMTC: Use all TCs on all VPEs for SMP"
1469 select CPU_MIPSR2_IRQ_VI
1470 select CPU_MIPSR2_SRS
1452 select SMP 1471 select SMP
1453 1472
1454config MIPS_MT_SMP 1473config MIPS_MT_SMP
@@ -1514,38 +1533,15 @@ config 64BIT_PHYS_ADDR
1514 bool "Support for 64-bit physical address space" 1533 bool "Support for 64-bit physical address space"
1515 depends on (CPU_R4X00 || CPU_R5000 || CPU_RM7000 || CPU_RM9000 || CPU_R10000 || CPU_SB1 || CPU_MIPS32 || CPU_MIPS64) && 32BIT 1534 depends on (CPU_R4X00 || CPU_R5000 || CPU_RM7000 || CPU_RM9000 || CPU_R10000 || CPU_SB1 || CPU_MIPS32 || CPU_MIPS64) && 32BIT
1516 1535
1517config CPU_ADVANCED
1518 bool "Override CPU Options"
1519 depends on 32BIT
1520 help
1521 Saying yes here allows you to select support for various features
1522 your CPU may or may not have. Most people should say N here.
1523
1524config CPU_HAS_LLSC 1536config CPU_HAS_LLSC
1525 bool "ll/sc Instructions available" if CPU_ADVANCED 1537 bool
1526 default y if !CPU_ADVANCED && !CPU_R3000 && !CPU_VR41XX && !CPU_TX39XX
1527 help
1528 MIPS R4000 series and later provide the Load Linked (ll)
1529 and Store Conditional (sc) instructions. More information is
1530 available at <http://www.go-ecs.com/mips/miptek1.htm>.
1531
1532 Say Y here if your CPU has the ll and sc instructions. Say Y here
1533 for better performance, N if you don't know. You must say Y here
1534 for multiprocessor machines.
1535 1538
1536config CPU_HAS_WB 1539config CPU_HAS_WB
1537 bool "Writeback Buffer available" if CPU_ADVANCED 1540 bool
1538 default y if !CPU_ADVANCED && CPU_R3000 && MACH_DECSTATION
1539 help
1540 Say N here for slightly better performance. You must say Y here for
1541 machines which require flushing of write buffers in software. Saying
1542 Y is the safe option; N may result in kernel malfunction and crashes.
1543
1544menu "MIPSR2 Interrupt handling"
1545 depends on CPU_MIPSR2 && CPU_ADVANCED
1546 1541
1547config CPU_MIPSR2_IRQ_VI 1542config CPU_MIPSR2_IRQ_VI
1548 bool "Vectored interrupt mode" 1543 bool "Vectored interrupt mode"
1544 depends on CPU_MIPSR2
1549 help 1545 help
1550 Vectored interrupt mode allowing faster dispatching of interrupts. 1546 Vectored interrupt mode allowing faster dispatching of interrupts.
1551 The board support code needs to be written to take advantage of this 1547 The board support code needs to be written to take advantage of this
@@ -1555,6 +1551,7 @@ config CPU_MIPSR2_IRQ_VI
1555 1551
1556config CPU_MIPSR2_IRQ_EI 1552config CPU_MIPSR2_IRQ_EI
1557 bool "External interrupt controller mode" 1553 bool "External interrupt controller mode"
1554 depends on CPU_MIPSR2
1558 help 1555 help
1559 Extended interrupt mode takes advantage of an external interrupt 1556 Extended interrupt mode takes advantage of an external interrupt
1560 controller to allow fast dispatching from many possible interrupt 1557 controller to allow fast dispatching from many possible interrupt
@@ -1568,7 +1565,6 @@ config CPU_MIPSR2_SRS
1568 Allow the kernel to use shadow register sets for fast interrupts. 1565 Allow the kernel to use shadow register sets for fast interrupts.
1569 Interrupt handlers must be specially written to use shadow sets. 1566 Interrupt handlers must be specially written to use shadow sets.
1570 Say N unless you know that shadow register set upport is needed. 1567 Say N unless you know that shadow register set upport is needed.
1571endmenu
1572 1568
1573config CPU_HAS_SYNC 1569config CPU_HAS_SYNC
1574 bool 1570 bool
diff --git a/arch/mips/Kconfig.debug b/arch/mips/Kconfig.debug
index d3c5cc3b9c9d..515f9e611307 100644
--- a/arch/mips/Kconfig.debug
+++ b/arch/mips/Kconfig.debug
@@ -6,7 +6,13 @@ config CROSSCOMPILE
6 bool "Are you using a crosscompiler" 6 bool "Are you using a crosscompiler"
7 help 7 help
8 Say Y here if you are compiling the kernel on a different 8 Say Y here if you are compiling the kernel on a different
9 architecture than the one it is intended to run on. 9 architecture than the one it is intended to run on. This is just a
10 convenience option which will select the appropriate value for
11 the CROSS_COMPILE make variable which otherwise has to be passed on
12 the command line from mips-linux-, mipsel-linux-, mips64-linux- and
13 mips64el-linux- as appropriate for a particular kernel configuration.
14 You will have to pass the value for CROSS_COMPILE manually if the
15 name prefix for your tools is different.
10 16
11config CMDLINE 17config CMDLINE
12 string "Default kernel command string" 18 string "Default kernel command string"
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 69b9c1b8fafc..133900aca992 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -615,7 +615,10 @@ LDFLAGS += -m $(ld-emul)
615ifdef CONFIG_MIPS 615ifdef CONFIG_MIPS
616CHECKFLAGS += $(shell $(CC) $(CFLAGS) -dM -E -xc /dev/null | \ 616CHECKFLAGS += $(shell $(CC) $(CFLAGS) -dM -E -xc /dev/null | \
617 egrep -vw '__GNUC_(MAJOR|MINOR|PATCHLEVEL)__' | \ 617 egrep -vw '__GNUC_(MAJOR|MINOR|PATCHLEVEL)__' | \
618 sed -e 's/^\#define /-D/' -e 's/ /="/' -e 's/$$/"/') 618 sed -e 's/^\#define /-D/' -e "s/ /='/" -e "s/$$/'/")
619ifdef CONFIG_64BIT
620CHECKFLAGS += -m64
621endif
619endif 622endif
620 623
621OBJCOPYFLAGS += --remove-section=.reginfo 624OBJCOPYFLAGS += --remove-section=.reginfo
diff --git a/arch/mips/configs/atlas_defconfig b/arch/mips/configs/atlas_defconfig
index 9e1ae953e966..4b080bcb258f 100644
--- a/arch/mips/configs/atlas_defconfig
+++ b/arch/mips/configs/atlas_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:39:52 2006 4# Mon Apr 24 14:50:55 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_ATLAS=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -127,11 +129,11 @@ CONFIG_RM7000_CPU_SCACHE=y
127CONFIG_CPU_HAS_PREFETCH=y 129CONFIG_CPU_HAS_PREFETCH=y
128# CONFIG_MIPS_MT is not set 130# CONFIG_MIPS_MT is not set
129# CONFIG_64BIT_PHYS_ADDR is not set 131# CONFIG_64BIT_PHYS_ADDR is not set
130# CONFIG_CPU_ADVANCED is not set
131CONFIG_CPU_HAS_LLSC=y 132CONFIG_CPU_HAS_LLSC=y
132CONFIG_CPU_HAS_SYNC=y 133CONFIG_CPU_HAS_SYNC=y
133CONFIG_GENERIC_HARDIRQS=y 134CONFIG_GENERIC_HARDIRQS=y
134CONFIG_GENERIC_IRQ_PROBE=y 135CONFIG_GENERIC_IRQ_PROBE=y
136CONFIG_CPU_SUPPORTS_HIGHMEM=y
135CONFIG_ARCH_FLATMEM_ENABLE=y 137CONFIG_ARCH_FLATMEM_ENABLE=y
136CONFIG_SELECT_MEMORY_MODEL=y 138CONFIG_SELECT_MEMORY_MODEL=y
137CONFIG_FLATMEM_MANUAL=y 139CONFIG_FLATMEM_MANUAL=y
@@ -149,7 +151,6 @@ CONFIG_PREEMPT_NONE=y
149# Code maturity level options 151# Code maturity level options
150# 152#
151CONFIG_EXPERIMENTAL=y 153CONFIG_EXPERIMENTAL=y
152CONFIG_CLEAN_COMPILE=y
153CONFIG_BROKEN_ON_SMP=y 154CONFIG_BROKEN_ON_SMP=y
154CONFIG_INIT_ENV_ARG_LIMIT=32 155CONFIG_INIT_ENV_ARG_LIMIT=32
155 156
@@ -165,6 +166,7 @@ CONFIG_SYSVIPC=y
165CONFIG_SYSCTL=y 166CONFIG_SYSCTL=y
166# CONFIG_AUDIT is not set 167# CONFIG_AUDIT is not set
167# CONFIG_IKCONFIG is not set 168# CONFIG_IKCONFIG is not set
169CONFIG_RELAY=y
168CONFIG_INITRAMFS_SOURCE="" 170CONFIG_INITRAMFS_SOURCE=""
169# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 171# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
170CONFIG_EMBEDDED=y 172CONFIG_EMBEDDED=y
@@ -178,10 +180,6 @@ CONFIG_BASE_FULL=y
178CONFIG_FUTEX=y 180CONFIG_FUTEX=y
179CONFIG_EPOLL=y 181CONFIG_EPOLL=y
180CONFIG_SHMEM=y 182CONFIG_SHMEM=y
181CONFIG_CC_ALIGN_FUNCTIONS=0
182CONFIG_CC_ALIGN_LABELS=0
183CONFIG_CC_ALIGN_LOOPS=0
184CONFIG_CC_ALIGN_JUMPS=0
185CONFIG_SLAB=y 183CONFIG_SLAB=y
186# CONFIG_TINY_SHMEM is not set 184# CONFIG_TINY_SHMEM is not set
187CONFIG_BASE_SMALL=0 185CONFIG_BASE_SMALL=0
@@ -193,7 +191,6 @@ CONFIG_BASE_SMALL=0
193CONFIG_MODULES=y 191CONFIG_MODULES=y
194CONFIG_MODULE_UNLOAD=y 192CONFIG_MODULE_UNLOAD=y
195# CONFIG_MODULE_FORCE_UNLOAD is not set 193# CONFIG_MODULE_FORCE_UNLOAD is not set
196CONFIG_OBSOLETE_MODPARM=y
197CONFIG_MODVERSIONS=y 194CONFIG_MODVERSIONS=y
198CONFIG_MODULE_SRCVERSION_ALL=y 195CONFIG_MODULE_SRCVERSION_ALL=y
199CONFIG_KMOD=y 196CONFIG_KMOD=y
@@ -202,6 +199,8 @@ CONFIG_KMOD=y
202# Block layer 199# Block layer
203# 200#
204# CONFIG_LBD is not set 201# CONFIG_LBD is not set
202# CONFIG_BLK_DEV_IO_TRACE is not set
203# CONFIG_LSF is not set
205 204
206# 205#
207# IO Schedulers 206# IO Schedulers
@@ -221,7 +220,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
221# 220#
222CONFIG_HW_HAS_PCI=y 221CONFIG_HW_HAS_PCI=y
223CONFIG_PCI=y 222CONFIG_PCI=y
224CONFIG_PCI_LEGACY_PROC=y
225CONFIG_MMU=y 223CONFIG_MMU=y
226 224
227# 225#
@@ -249,6 +247,7 @@ CONFIG_NET=y
249# 247#
250# Networking options 248# Networking options
251# 249#
250# CONFIG_NETDEBUG is not set
252CONFIG_PACKET=y 251CONFIG_PACKET=y
253CONFIG_PACKET_MMAP=y 252CONFIG_PACKET_MMAP=y
254CONFIG_UNIX=y 253CONFIG_UNIX=y
@@ -281,6 +280,7 @@ CONFIG_SYN_COOKIES=y
281CONFIG_INET_AH=m 280CONFIG_INET_AH=m
282CONFIG_INET_ESP=m 281CONFIG_INET_ESP=m
283CONFIG_INET_IPCOMP=m 282CONFIG_INET_IPCOMP=m
283CONFIG_INET_XFRM_TUNNEL=m
284CONFIG_INET_TUNNEL=m 284CONFIG_INET_TUNNEL=m
285CONFIG_INET_DIAG=y 285CONFIG_INET_DIAG=y
286CONFIG_INET_TCP_DIAG=y 286CONFIG_INET_TCP_DIAG=y
@@ -322,9 +322,12 @@ CONFIG_IP_VS_NQ=m
322CONFIG_IP_VS_FTP=m 322CONFIG_IP_VS_FTP=m
323CONFIG_IPV6=m 323CONFIG_IPV6=m
324CONFIG_IPV6_PRIVACY=y 324CONFIG_IPV6_PRIVACY=y
325CONFIG_IPV6_ROUTER_PREF=y
326CONFIG_IPV6_ROUTE_INFO=y
325CONFIG_INET6_AH=m 327CONFIG_INET6_AH=m
326CONFIG_INET6_ESP=m 328CONFIG_INET6_ESP=m
327CONFIG_INET6_IPCOMP=m 329CONFIG_INET6_IPCOMP=m
330CONFIG_INET6_XFRM_TUNNEL=m
328CONFIG_INET6_TUNNEL=m 331CONFIG_INET6_TUNNEL=m
329CONFIG_IPV6_TUNNEL=m 332CONFIG_IPV6_TUNNEL=m
330CONFIG_NETFILTER=y 333CONFIG_NETFILTER=y
@@ -348,11 +351,14 @@ CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
348CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 351CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
349CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 352CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
350CONFIG_NETFILTER_XT_MATCH_DCCP=m 353CONFIG_NETFILTER_XT_MATCH_DCCP=m
354CONFIG_NETFILTER_XT_MATCH_ESP=m
351CONFIG_NETFILTER_XT_MATCH_HELPER=m 355CONFIG_NETFILTER_XT_MATCH_HELPER=m
352CONFIG_NETFILTER_XT_MATCH_LENGTH=m 356CONFIG_NETFILTER_XT_MATCH_LENGTH=m
353CONFIG_NETFILTER_XT_MATCH_LIMIT=m 357CONFIG_NETFILTER_XT_MATCH_LIMIT=m
354CONFIG_NETFILTER_XT_MATCH_MAC=m 358CONFIG_NETFILTER_XT_MATCH_MAC=m
355CONFIG_NETFILTER_XT_MATCH_MARK=m 359CONFIG_NETFILTER_XT_MATCH_MARK=m
360CONFIG_NETFILTER_XT_MATCH_POLICY=m
361CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
356CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m 362CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
357CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 363CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
358CONFIG_NETFILTER_XT_MATCH_REALM=m 364CONFIG_NETFILTER_XT_MATCH_REALM=m
@@ -376,20 +382,19 @@ CONFIG_IP_NF_IRC=m
376CONFIG_IP_NF_TFTP=m 382CONFIG_IP_NF_TFTP=m
377CONFIG_IP_NF_AMANDA=m 383CONFIG_IP_NF_AMANDA=m
378CONFIG_IP_NF_PPTP=m 384CONFIG_IP_NF_PPTP=m
385CONFIG_IP_NF_H323=m
379CONFIG_IP_NF_QUEUE=m 386CONFIG_IP_NF_QUEUE=m
380CONFIG_IP_NF_IPTABLES=m 387CONFIG_IP_NF_IPTABLES=m
381CONFIG_IP_NF_MATCH_IPRANGE=m 388CONFIG_IP_NF_MATCH_IPRANGE=m
382CONFIG_IP_NF_MATCH_MULTIPORT=m
383CONFIG_IP_NF_MATCH_TOS=m 389CONFIG_IP_NF_MATCH_TOS=m
384CONFIG_IP_NF_MATCH_RECENT=m 390CONFIG_IP_NF_MATCH_RECENT=m
385CONFIG_IP_NF_MATCH_ECN=m 391CONFIG_IP_NF_MATCH_ECN=m
386CONFIG_IP_NF_MATCH_DSCP=m 392CONFIG_IP_NF_MATCH_DSCP=m
387CONFIG_IP_NF_MATCH_AH_ESP=m 393CONFIG_IP_NF_MATCH_AH=m
388CONFIG_IP_NF_MATCH_TTL=m 394CONFIG_IP_NF_MATCH_TTL=m
389CONFIG_IP_NF_MATCH_OWNER=m 395CONFIG_IP_NF_MATCH_OWNER=m
390CONFIG_IP_NF_MATCH_ADDRTYPE=m 396CONFIG_IP_NF_MATCH_ADDRTYPE=m
391CONFIG_IP_NF_MATCH_HASHLIMIT=m 397CONFIG_IP_NF_MATCH_HASHLIMIT=m
392CONFIG_IP_NF_MATCH_POLICY=m
393CONFIG_IP_NF_FILTER=m 398CONFIG_IP_NF_FILTER=m
394CONFIG_IP_NF_TARGET_REJECT=m 399CONFIG_IP_NF_TARGET_REJECT=m
395CONFIG_IP_NF_TARGET_LOG=m 400CONFIG_IP_NF_TARGET_LOG=m
@@ -407,6 +412,7 @@ CONFIG_IP_NF_NAT_FTP=m
407CONFIG_IP_NF_NAT_TFTP=m 412CONFIG_IP_NF_NAT_TFTP=m
408CONFIG_IP_NF_NAT_AMANDA=m 413CONFIG_IP_NF_NAT_AMANDA=m
409CONFIG_IP_NF_NAT_PPTP=m 414CONFIG_IP_NF_NAT_PPTP=m
415CONFIG_IP_NF_NAT_H323=m
410CONFIG_IP_NF_MANGLE=m 416CONFIG_IP_NF_MANGLE=m
411CONFIG_IP_NF_TARGET_TOS=m 417CONFIG_IP_NF_TARGET_TOS=m
412CONFIG_IP_NF_TARGET_ECN=m 418CONFIG_IP_NF_TARGET_ECN=m
@@ -427,12 +433,10 @@ CONFIG_IP6_NF_MATCH_RT=m
427CONFIG_IP6_NF_MATCH_OPTS=m 433CONFIG_IP6_NF_MATCH_OPTS=m
428CONFIG_IP6_NF_MATCH_FRAG=m 434CONFIG_IP6_NF_MATCH_FRAG=m
429CONFIG_IP6_NF_MATCH_HL=m 435CONFIG_IP6_NF_MATCH_HL=m
430CONFIG_IP6_NF_MATCH_MULTIPORT=m
431CONFIG_IP6_NF_MATCH_OWNER=m 436CONFIG_IP6_NF_MATCH_OWNER=m
432CONFIG_IP6_NF_MATCH_IPV6HEADER=m 437CONFIG_IP6_NF_MATCH_IPV6HEADER=m
433CONFIG_IP6_NF_MATCH_AHESP=m 438CONFIG_IP6_NF_MATCH_AH=m
434CONFIG_IP6_NF_MATCH_EUI64=m 439CONFIG_IP6_NF_MATCH_EUI64=m
435CONFIG_IP6_NF_MATCH_POLICY=m
436CONFIG_IP6_NF_FILTER=m 440CONFIG_IP6_NF_FILTER=m
437CONFIG_IP6_NF_TARGET_LOG=m 441CONFIG_IP6_NF_TARGET_LOG=m
438CONFIG_IP6_NF_TARGET_REJECT=m 442CONFIG_IP6_NF_TARGET_REJECT=m
@@ -478,6 +482,11 @@ CONFIG_IP_SCTP=m
478# CONFIG_SCTP_HMAC_NONE is not set 482# CONFIG_SCTP_HMAC_NONE is not set
479# CONFIG_SCTP_HMAC_SHA1 is not set 483# CONFIG_SCTP_HMAC_SHA1 is not set
480CONFIG_SCTP_HMAC_MD5=y 484CONFIG_SCTP_HMAC_MD5=y
485
486#
487# TIPC Configuration (EXPERIMENTAL)
488#
489# CONFIG_TIPC is not set
481# CONFIG_ATM is not set 490# CONFIG_ATM is not set
482CONFIG_BRIDGE=m 491CONFIG_BRIDGE=m
483CONFIG_VLAN_8021Q=m 492CONFIG_VLAN_8021Q=m
@@ -492,11 +501,6 @@ CONFIG_IPDDP_ENCAP=y
492CONFIG_IPDDP_DECAP=y 501CONFIG_IPDDP_DECAP=y
493# CONFIG_X25 is not set 502# CONFIG_X25 is not set
494# CONFIG_LAPB is not set 503# CONFIG_LAPB is not set
495
496#
497# TIPC Configuration (EXPERIMENTAL)
498#
499# CONFIG_TIPC is not set
500CONFIG_NET_DIVERT=y 504CONFIG_NET_DIVERT=y
501# CONFIG_ECONET is not set 505# CONFIG_ECONET is not set
502# CONFIG_WAN_ROUTER is not set 506# CONFIG_WAN_ROUTER is not set
@@ -556,6 +560,9 @@ CONFIG_IEEE80211=m
556# CONFIG_IEEE80211_DEBUG is not set 560# CONFIG_IEEE80211_DEBUG is not set
557CONFIG_IEEE80211_CRYPT_WEP=m 561CONFIG_IEEE80211_CRYPT_WEP=m
558CONFIG_IEEE80211_CRYPT_CCMP=m 562CONFIG_IEEE80211_CRYPT_CCMP=m
563CONFIG_IEEE80211_SOFTMAC=m
564# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
565CONFIG_WIRELESS_EXT=y
559 566
560# 567#
561# Device Drivers 568# Device Drivers
@@ -694,9 +701,8 @@ CONFIG_SCSI_SYM53C8XX_2=y
694CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 701CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
695CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 702CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
696CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 703CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
697# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set 704CONFIG_SCSI_SYM53C8XX_MMIO=y
698# CONFIG_SCSI_IPR is not set 705# CONFIG_SCSI_IPR is not set
699# CONFIG_SCSI_QLOGIC_FC is not set
700# CONFIG_SCSI_QLOGIC_1280 is not set 706# CONFIG_SCSI_QLOGIC_1280 is not set
701# CONFIG_SCSI_QLA_FC is not set 707# CONFIG_SCSI_QLA_FC is not set
702# CONFIG_SCSI_LPFC is not set 708# CONFIG_SCSI_LPFC is not set
@@ -715,6 +721,7 @@ CONFIG_MD_RAID0=m
715CONFIG_MD_RAID1=m 721CONFIG_MD_RAID1=m
716CONFIG_MD_RAID10=m 722CONFIG_MD_RAID10=m
717CONFIG_MD_RAID5=m 723CONFIG_MD_RAID5=m
724CONFIG_MD_RAID5_RESHAPE=y
718CONFIG_MD_RAID6=m 725CONFIG_MD_RAID6=m
719CONFIG_MD_MULTIPATH=m 726CONFIG_MD_MULTIPATH=m
720CONFIG_MD_FAULTY=m 727CONFIG_MD_FAULTY=m
@@ -921,6 +928,7 @@ CONFIG_HW_CONSOLE=y
921# 928#
922CONFIG_SERIAL_8250=y 929CONFIG_SERIAL_8250=y
923CONFIG_SERIAL_8250_CONSOLE=y 930CONFIG_SERIAL_8250_CONSOLE=y
931CONFIG_SERIAL_8250_PCI=m
924CONFIG_SERIAL_8250_NR_UARTS=4 932CONFIG_SERIAL_8250_NR_UARTS=4
925CONFIG_SERIAL_8250_RUNTIME_UARTS=4 933CONFIG_SERIAL_8250_RUNTIME_UARTS=4
926# CONFIG_SERIAL_8250_EXTENDED is not set 934# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -930,6 +938,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
930# 938#
931CONFIG_SERIAL_CORE=y 939CONFIG_SERIAL_CORE=y
932CONFIG_SERIAL_CORE_CONSOLE=y 940CONFIG_SERIAL_CORE_CONSOLE=y
941# CONFIG_SERIAL_JSM is not set
933CONFIG_UNIX98_PTYS=y 942CONFIG_UNIX98_PTYS=y
934CONFIG_LEGACY_PTYS=y 943CONFIG_LEGACY_PTYS=y
935CONFIG_LEGACY_PTY_COUNT=256 944CONFIG_LEGACY_PTY_COUNT=256
@@ -988,10 +997,6 @@ CONFIG_LEGACY_PTY_COUNT=256
988# 997#
989 998
990# 999#
991# Multimedia Capabilities Port drivers
992#
993
994#
995# Multimedia devices 1000# Multimedia devices
996# 1001#
997# CONFIG_VIDEO_DEV is not set 1002# CONFIG_VIDEO_DEV is not set
@@ -1022,6 +1027,7 @@ CONFIG_DUMMY_CONSOLE=y
1022# 1027#
1023CONFIG_USB_ARCH_HAS_HCD=y 1028CONFIG_USB_ARCH_HAS_HCD=y
1024CONFIG_USB_ARCH_HAS_OHCI=y 1029CONFIG_USB_ARCH_HAS_OHCI=y
1030CONFIG_USB_ARCH_HAS_EHCI=y
1025# CONFIG_USB is not set 1031# CONFIG_USB is not set
1026 1032
1027# 1033#
@@ -1039,13 +1045,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
1039# CONFIG_MMC is not set 1045# CONFIG_MMC is not set
1040 1046
1041# 1047#
1048# LED devices
1049#
1050# CONFIG_NEW_LEDS is not set
1051
1052#
1053# LED drivers
1054#
1055
1056#
1057# LED Triggers
1058#
1059
1060#
1042# InfiniBand support 1061# InfiniBand support
1043# 1062#
1044# CONFIG_INFINIBAND is not set 1063# CONFIG_INFINIBAND is not set
1045 1064
1046# 1065#
1047# SN Devices 1066# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1067#
1068
1069#
1070# Real Time Clock
1048# 1071#
1072# CONFIG_RTC_CLASS is not set
1049 1073
1050# 1074#
1051# File systems 1075# File systems
@@ -1120,7 +1144,6 @@ CONFIG_SYSFS=y
1120# CONFIG_TMPFS is not set 1144# CONFIG_TMPFS is not set
1121# CONFIG_HUGETLB_PAGE is not set 1145# CONFIG_HUGETLB_PAGE is not set
1122CONFIG_RAMFS=y 1146CONFIG_RAMFS=y
1123CONFIG_RELAYFS_FS=m
1124# CONFIG_CONFIGFS_FS is not set 1147# CONFIG_CONFIGFS_FS is not set
1125 1148
1126# 1149#
@@ -1140,7 +1163,6 @@ CONFIG_VXFS_FS=m
1140# CONFIG_QNX4FS_FS is not set 1163# CONFIG_QNX4FS_FS is not set
1141CONFIG_SYSV_FS=m 1164CONFIG_SYSV_FS=m
1142CONFIG_UFS_FS=m 1165CONFIG_UFS_FS=m
1143# CONFIG_UFS_FS_WRITE is not set
1144 1166
1145# 1167#
1146# Network File Systems 1168# Network File Systems
@@ -1232,6 +1254,7 @@ CONFIG_NLS_UTF8=m
1232# CONFIG_MAGIC_SYSRQ is not set 1254# CONFIG_MAGIC_SYSRQ is not set
1233# CONFIG_DEBUG_KERNEL is not set 1255# CONFIG_DEBUG_KERNEL is not set
1234CONFIG_LOG_BUF_SHIFT=14 1256CONFIG_LOG_BUF_SHIFT=14
1257# CONFIG_DEBUG_FS is not set
1235CONFIG_CROSSCOMPILE=y 1258CONFIG_CROSSCOMPILE=y
1236CONFIG_CMDLINE="" 1259CONFIG_CMDLINE=""
1237 1260
diff --git a/arch/mips/configs/bigsur_defconfig b/arch/mips/configs/bigsur_defconfig
index 32984100a75e..d85cda58d650 100644
--- a/arch/mips/configs/bigsur_defconfig
+++ b/arch/mips/configs/bigsur_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:39:53 2006 4# Mon Apr 24 14:50:55 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -80,6 +80,8 @@ CONFIG_SIBYTE_CFE=y
80# CONFIG_SIBYTE_SB1250_PROF is not set 80# CONFIG_SIBYTE_SB1250_PROF is not set
81# CONFIG_SIBYTE_TBPROF is not set 81# CONFIG_SIBYTE_TBPROF is not set
82CONFIG_RWSEM_GENERIC_SPINLOCK=y 82CONFIG_RWSEM_GENERIC_SPINLOCK=y
83CONFIG_GENERIC_FIND_NEXT_BIT=y
84CONFIG_GENERIC_HWEIGHT=y
83CONFIG_GENERIC_CALIBRATE_DELAY=y 85CONFIG_GENERIC_CALIBRATE_DELAY=y
84CONFIG_DMA_COHERENT=y 86CONFIG_DMA_COHERENT=y
85CONFIG_CPU_BIG_ENDIAN=y 87CONFIG_CPU_BIG_ENDIAN=y
@@ -154,7 +156,6 @@ CONFIG_PREEMPT_NONE=y
154# Code maturity level options 156# Code maturity level options
155# 157#
156CONFIG_EXPERIMENTAL=y 158CONFIG_EXPERIMENTAL=y
157CONFIG_CLEAN_COMPILE=y
158CONFIG_LOCK_KERNEL=y 159CONFIG_LOCK_KERNEL=y
159CONFIG_INIT_ENV_ARG_LIMIT=32 160CONFIG_INIT_ENV_ARG_LIMIT=32
160 161
@@ -172,6 +173,7 @@ CONFIG_SYSCTL=y
172CONFIG_IKCONFIG=y 173CONFIG_IKCONFIG=y
173CONFIG_IKCONFIG_PROC=y 174CONFIG_IKCONFIG_PROC=y
174# CONFIG_CPUSETS is not set 175# CONFIG_CPUSETS is not set
176# CONFIG_RELAY is not set
175CONFIG_INITRAMFS_SOURCE="" 177CONFIG_INITRAMFS_SOURCE=""
176# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 178# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
177CONFIG_EMBEDDED=y 179CONFIG_EMBEDDED=y
@@ -186,10 +188,6 @@ CONFIG_BASE_FULL=y
186CONFIG_FUTEX=y 188CONFIG_FUTEX=y
187CONFIG_EPOLL=y 189CONFIG_EPOLL=y
188CONFIG_SHMEM=y 190CONFIG_SHMEM=y
189CONFIG_CC_ALIGN_FUNCTIONS=0
190CONFIG_CC_ALIGN_LABELS=0
191CONFIG_CC_ALIGN_LOOPS=0
192CONFIG_CC_ALIGN_JUMPS=0
193CONFIG_SLAB=y 191CONFIG_SLAB=y
194# CONFIG_TINY_SHMEM is not set 192# CONFIG_TINY_SHMEM is not set
195CONFIG_BASE_SMALL=0 193CONFIG_BASE_SMALL=0
@@ -201,7 +199,6 @@ CONFIG_BASE_SMALL=0
201CONFIG_MODULES=y 199CONFIG_MODULES=y
202CONFIG_MODULE_UNLOAD=y 200CONFIG_MODULE_UNLOAD=y
203# CONFIG_MODULE_FORCE_UNLOAD is not set 201# CONFIG_MODULE_FORCE_UNLOAD is not set
204CONFIG_OBSOLETE_MODPARM=y
205CONFIG_MODVERSIONS=y 202CONFIG_MODVERSIONS=y
206CONFIG_MODULE_SRCVERSION_ALL=y 203CONFIG_MODULE_SRCVERSION_ALL=y
207CONFIG_KMOD=y 204CONFIG_KMOD=y
@@ -210,6 +207,7 @@ CONFIG_STOP_MACHINE=y
210# 207#
211# Block layer 208# Block layer
212# 209#
210# CONFIG_BLK_DEV_IO_TRACE is not set
213 211
214# 212#
215# IO Schedulers 213# IO Schedulers
@@ -230,7 +228,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
230CONFIG_HW_HAS_PCI=y 228CONFIG_HW_HAS_PCI=y
231CONFIG_PCI=y 229CONFIG_PCI=y
232CONFIG_PCI_DOMAINS=y 230CONFIG_PCI_DOMAINS=y
233CONFIG_PCI_LEGACY_PROC=y
234CONFIG_PCI_DEBUG=y 231CONFIG_PCI_DEBUG=y
235CONFIG_MMU=y 232CONFIG_MMU=y
236 233
@@ -249,6 +246,7 @@ CONFIG_MMU=y
249# 246#
250CONFIG_BINFMT_ELF=y 247CONFIG_BINFMT_ELF=y
251# CONFIG_BINFMT_MISC is not set 248# CONFIG_BINFMT_MISC is not set
249CONFIG_BUILD_ELF64=y
252CONFIG_MIPS32_COMPAT=y 250CONFIG_MIPS32_COMPAT=y
253CONFIG_COMPAT=y 251CONFIG_COMPAT=y
254CONFIG_MIPS32_O32=y 252CONFIG_MIPS32_O32=y
@@ -263,6 +261,7 @@ CONFIG_NET=y
263# 261#
264# Networking options 262# Networking options
265# 263#
264# CONFIG_NETDEBUG is not set
266CONFIG_PACKET=y 265CONFIG_PACKET=y
267CONFIG_PACKET_MMAP=y 266CONFIG_PACKET_MMAP=y
268CONFIG_UNIX=y 267CONFIG_UNIX=y
@@ -284,12 +283,15 @@ CONFIG_IP_PNP_BOOTP=y
284# CONFIG_INET_AH is not set 283# CONFIG_INET_AH is not set
285# CONFIG_INET_ESP is not set 284# CONFIG_INET_ESP is not set
286# CONFIG_INET_IPCOMP is not set 285# CONFIG_INET_IPCOMP is not set
287CONFIG_INET_TUNNEL=m 286# CONFIG_INET_XFRM_TUNNEL is not set
287# CONFIG_INET_TUNNEL is not set
288CONFIG_INET_DIAG=y 288CONFIG_INET_DIAG=y
289CONFIG_INET_TCP_DIAG=y 289CONFIG_INET_TCP_DIAG=y
290# CONFIG_TCP_CONG_ADVANCED is not set 290# CONFIG_TCP_CONG_ADVANCED is not set
291CONFIG_TCP_CONG_BIC=y 291CONFIG_TCP_CONG_BIC=y
292# CONFIG_IPV6 is not set 292# CONFIG_IPV6 is not set
293# CONFIG_INET6_XFRM_TUNNEL is not set
294# CONFIG_INET6_TUNNEL is not set
293# CONFIG_NETFILTER is not set 295# CONFIG_NETFILTER is not set
294 296
295# 297#
@@ -301,6 +303,11 @@ CONFIG_TCP_CONG_BIC=y
301# SCTP Configuration (EXPERIMENTAL) 303# SCTP Configuration (EXPERIMENTAL)
302# 304#
303# CONFIG_IP_SCTP is not set 305# CONFIG_IP_SCTP is not set
306
307#
308# TIPC Configuration (EXPERIMENTAL)
309#
310# CONFIG_TIPC is not set
304# CONFIG_ATM is not set 311# CONFIG_ATM is not set
305# CONFIG_BRIDGE is not set 312# CONFIG_BRIDGE is not set
306# CONFIG_VLAN_8021Q is not set 313# CONFIG_VLAN_8021Q is not set
@@ -310,11 +317,6 @@ CONFIG_TCP_CONG_BIC=y
310# CONFIG_ATALK is not set 317# CONFIG_ATALK is not set
311# CONFIG_X25 is not set 318# CONFIG_X25 is not set
312# CONFIG_LAPB is not set 319# CONFIG_LAPB is not set
313
314#
315# TIPC Configuration (EXPERIMENTAL)
316#
317# CONFIG_TIPC is not set
318# CONFIG_NET_DIVERT is not set 320# CONFIG_NET_DIVERT is not set
319# CONFIG_ECONET is not set 321# CONFIG_ECONET is not set
320# CONFIG_WAN_ROUTER is not set 322# CONFIG_WAN_ROUTER is not set
@@ -377,7 +379,7 @@ CONFIG_BLK_DEV_LOOP=m
377CONFIG_BLK_DEV_NBD=m 379CONFIG_BLK_DEV_NBD=m
378# CONFIG_BLK_DEV_SX8 is not set 380# CONFIG_BLK_DEV_SX8 is not set
379# CONFIG_BLK_DEV_RAM is not set 381# CONFIG_BLK_DEV_RAM is not set
380CONFIG_BLK_DEV_RAM_COUNT=16 382# CONFIG_BLK_DEV_INITRD is not set
381# CONFIG_CDROM_PKTCDVD is not set 383# CONFIG_CDROM_PKTCDVD is not set
382# CONFIG_ATA_OVER_ETH is not set 384# CONFIG_ATA_OVER_ETH is not set
383 385
@@ -575,6 +577,7 @@ CONFIG_SIBYTE_SB1250_DUART_CONSOLE=y
575# 577#
576# Non-8250 serial port support 578# Non-8250 serial port support
577# 579#
580# CONFIG_SERIAL_JSM is not set
578CONFIG_UNIX98_PTYS=y 581CONFIG_UNIX98_PTYS=y
579CONFIG_LEGACY_PTYS=y 582CONFIG_LEGACY_PTYS=y
580CONFIG_LEGACY_PTY_COUNT=256 583CONFIG_LEGACY_PTY_COUNT=256
@@ -637,7 +640,6 @@ CONFIG_I2C_ALGO_SIBYTE=y
637# CONFIG_I2C_PROSAVAGE is not set 640# CONFIG_I2C_PROSAVAGE is not set
638# CONFIG_I2C_SAVAGE4 is not set 641# CONFIG_I2C_SAVAGE4 is not set
639CONFIG_I2C_SIBYTE=y 642CONFIG_I2C_SIBYTE=y
640# CONFIG_SCx200_ACB is not set
641# CONFIG_I2C_SIS5595 is not set 643# CONFIG_I2C_SIS5595 is not set
642# CONFIG_I2C_SIS630 is not set 644# CONFIG_I2C_SIS630 is not set
643# CONFIG_I2C_SIS96X is not set 645# CONFIG_I2C_SIS96X is not set
@@ -656,9 +658,7 @@ CONFIG_SENSORS_EEPROM=y
656CONFIG_SENSORS_PCF8574=y 658CONFIG_SENSORS_PCF8574=y
657CONFIG_SENSORS_PCA9539=y 659CONFIG_SENSORS_PCA9539=y
658CONFIG_SENSORS_PCF8591=y 660CONFIG_SENSORS_PCF8591=y
659CONFIG_SENSORS_RTC8564=y
660CONFIG_SENSORS_MAX6875=y 661CONFIG_SENSORS_MAX6875=y
661# CONFIG_RTC_X1205_I2C is not set
662CONFIG_I2C_DEBUG_CORE=y 662CONFIG_I2C_DEBUG_CORE=y
663CONFIG_I2C_DEBUG_ALGO=y 663CONFIG_I2C_DEBUG_ALGO=y
664CONFIG_I2C_DEBUG_BUS=y 664CONFIG_I2C_DEBUG_BUS=y
@@ -686,10 +686,6 @@ CONFIG_I2C_DEBUG_CHIP=y
686# 686#
687 687
688# 688#
689# Multimedia Capabilities Port drivers
690#
691
692#
693# Multimedia devices 689# Multimedia devices
694# 690#
695# CONFIG_VIDEO_DEV is not set 691# CONFIG_VIDEO_DEV is not set
@@ -714,6 +710,7 @@ CONFIG_I2C_DEBUG_CHIP=y
714# 710#
715CONFIG_USB_ARCH_HAS_HCD=y 711CONFIG_USB_ARCH_HAS_HCD=y
716CONFIG_USB_ARCH_HAS_OHCI=y 712CONFIG_USB_ARCH_HAS_OHCI=y
713CONFIG_USB_ARCH_HAS_EHCI=y
717# CONFIG_USB is not set 714# CONFIG_USB is not set
718 715
719# 716#
@@ -731,13 +728,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
731# CONFIG_MMC is not set 728# CONFIG_MMC is not set
732 729
733# 730#
731# LED devices
732#
733# CONFIG_NEW_LEDS is not set
734
735#
736# LED drivers
737#
738
739#
740# LED Triggers
741#
742
743#
734# InfiniBand support 744# InfiniBand support
735# 745#
736# CONFIG_INFINIBAND is not set 746# CONFIG_INFINIBAND is not set
737 747
738# 748#
739# SN Devices 749# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
750#
751
752#
753# Real Time Clock
740# 754#
755# CONFIG_RTC_CLASS is not set
741 756
742# 757#
743# File systems 758# File systems
@@ -785,7 +800,6 @@ CONFIG_SYSFS=y
785# CONFIG_TMPFS is not set 800# CONFIG_TMPFS is not set
786# CONFIG_HUGETLB_PAGE is not set 801# CONFIG_HUGETLB_PAGE is not set
787CONFIG_RAMFS=y 802CONFIG_RAMFS=y
788# CONFIG_RELAYFS_FS is not set
789# CONFIG_CONFIGFS_FS is not set 803# CONFIG_CONFIGFS_FS is not set
790 804
791# 805#
diff --git a/arch/mips/configs/capcella_defconfig b/arch/mips/configs/capcella_defconfig
index 6c2961affbd6..ca0af1683a00 100644
--- a/arch/mips/configs/capcella_defconfig
+++ b/arch/mips/configs/capcella_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:39:54 2006 4# Tue Apr 25 00:08:06 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -72,6 +72,8 @@ CONFIG_ZAO_CAPCELLA=y
72CONFIG_PCI_VR41XX=y 72CONFIG_PCI_VR41XX=y
73# CONFIG_VRC4173 is not set 73# CONFIG_VRC4173 is not set
74CONFIG_RWSEM_GENERIC_SPINLOCK=y 74CONFIG_RWSEM_GENERIC_SPINLOCK=y
75CONFIG_GENERIC_FIND_NEXT_BIT=y
76CONFIG_GENERIC_HWEIGHT=y
75CONFIG_GENERIC_CALIBRATE_DELAY=y 77CONFIG_GENERIC_CALIBRATE_DELAY=y
76CONFIG_DMA_NONCOHERENT=y 78CONFIG_DMA_NONCOHERENT=y
77CONFIG_DMA_NEED_PCI_MAP_STATE=y 79CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -90,7 +92,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
90# CONFIG_CPU_MIPS64_R2 is not set 92# CONFIG_CPU_MIPS64_R2 is not set
91# CONFIG_CPU_R3000 is not set 93# CONFIG_CPU_R3000 is not set
92# CONFIG_CPU_TX39XX is not set 94# CONFIG_CPU_TX39XX is not set
93# CONFIG_CPU_VR41XX is not set 95CONFIG_CPU_VR41XX=y
94# CONFIG_CPU_R4300 is not set 96# CONFIG_CPU_R4300 is not set
95# CONFIG_CPU_R4X00 is not set 97# CONFIG_CPU_R4X00 is not set
96# CONFIG_CPU_TX49XX is not set 98# CONFIG_CPU_TX49XX is not set
@@ -103,18 +105,21 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
103# CONFIG_CPU_RM7000 is not set 105# CONFIG_CPU_RM7000 is not set
104# CONFIG_CPU_RM9000 is not set 106# CONFIG_CPU_RM9000 is not set
105# CONFIG_CPU_SB1 is not set 107# CONFIG_CPU_SB1 is not set
108CONFIG_SYS_HAS_CPU_VR41XX=y
109CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
110CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
111CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
106 112
107# 113#
108# Kernel type 114# Kernel type
109# 115#
110# CONFIG_32BIT is not set 116CONFIG_32BIT=y
111# CONFIG_64BIT is not set 117# CONFIG_64BIT is not set
112CONFIG_PAGE_SIZE_4KB=y 118CONFIG_PAGE_SIZE_4KB=y
113# CONFIG_PAGE_SIZE_8KB is not set 119# CONFIG_PAGE_SIZE_8KB is not set
114# CONFIG_PAGE_SIZE_16KB is not set 120# CONFIG_PAGE_SIZE_16KB is not set
115# CONFIG_PAGE_SIZE_64KB is not set 121# CONFIG_PAGE_SIZE_64KB is not set
116# CONFIG_MIPS_MT is not set 122# CONFIG_MIPS_MT is not set
117CONFIG_CPU_HAS_LLSC=y
118CONFIG_CPU_HAS_SYNC=y 123CONFIG_CPU_HAS_SYNC=y
119CONFIG_GENERIC_HARDIRQS=y 124CONFIG_GENERIC_HARDIRQS=y
120CONFIG_GENERIC_IRQ_PROBE=y 125CONFIG_GENERIC_IRQ_PROBE=y
@@ -135,7 +140,6 @@ CONFIG_PREEMPT_NONE=y
135# Code maturity level options 140# Code maturity level options
136# 141#
137CONFIG_EXPERIMENTAL=y 142CONFIG_EXPERIMENTAL=y
138CONFIG_CLEAN_COMPILE=y
139CONFIG_BROKEN_ON_SMP=y 143CONFIG_BROKEN_ON_SMP=y
140CONFIG_INIT_ENV_ARG_LIMIT=32 144CONFIG_INIT_ENV_ARG_LIMIT=32
141 145
@@ -151,6 +155,7 @@ CONFIG_SYSVIPC=y
151CONFIG_SYSCTL=y 155CONFIG_SYSCTL=y
152# CONFIG_AUDIT is not set 156# CONFIG_AUDIT is not set
153# CONFIG_IKCONFIG is not set 157# CONFIG_IKCONFIG is not set
158# CONFIG_RELAY is not set
154CONFIG_INITRAMFS_SOURCE="" 159CONFIG_INITRAMFS_SOURCE=""
155# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 160# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
156CONFIG_EMBEDDED=y 161CONFIG_EMBEDDED=y
@@ -164,10 +169,6 @@ CONFIG_BASE_FULL=y
164CONFIG_FUTEX=y 169CONFIG_FUTEX=y
165CONFIG_EPOLL=y 170CONFIG_EPOLL=y
166CONFIG_SHMEM=y 171CONFIG_SHMEM=y
167CONFIG_CC_ALIGN_FUNCTIONS=0
168CONFIG_CC_ALIGN_LABELS=0
169CONFIG_CC_ALIGN_LOOPS=0
170CONFIG_CC_ALIGN_JUMPS=0
171CONFIG_SLAB=y 172CONFIG_SLAB=y
172# CONFIG_TINY_SHMEM is not set 173# CONFIG_TINY_SHMEM is not set
173CONFIG_BASE_SMALL=0 174CONFIG_BASE_SMALL=0
@@ -179,7 +180,6 @@ CONFIG_BASE_SMALL=0
179CONFIG_MODULES=y 180CONFIG_MODULES=y
180CONFIG_MODULE_UNLOAD=y 181CONFIG_MODULE_UNLOAD=y
181# CONFIG_MODULE_FORCE_UNLOAD is not set 182# CONFIG_MODULE_FORCE_UNLOAD is not set
182CONFIG_OBSOLETE_MODPARM=y
183CONFIG_MODVERSIONS=y 183CONFIG_MODVERSIONS=y
184CONFIG_MODULE_SRCVERSION_ALL=y 184CONFIG_MODULE_SRCVERSION_ALL=y
185CONFIG_KMOD=y 185CONFIG_KMOD=y
@@ -187,6 +187,9 @@ CONFIG_KMOD=y
187# 187#
188# Block layer 188# Block layer
189# 189#
190# CONFIG_LBD is not set
191# CONFIG_BLK_DEV_IO_TRACE is not set
192# CONFIG_LSF is not set
190 193
191# 194#
192# IO Schedulers 195# IO Schedulers
@@ -206,7 +209,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
206# 209#
207CONFIG_HW_HAS_PCI=y 210CONFIG_HW_HAS_PCI=y
208CONFIG_PCI=y 211CONFIG_PCI=y
209CONFIG_PCI_LEGACY_PROC=y
210CONFIG_MMU=y 212CONFIG_MMU=y
211 213
212# 214#
@@ -224,6 +226,7 @@ CONFIG_MMU=y
224# 226#
225CONFIG_BINFMT_ELF=y 227CONFIG_BINFMT_ELF=y
226# CONFIG_BINFMT_MISC is not set 228# CONFIG_BINFMT_MISC is not set
229CONFIG_TRAD_SIGNALS=y
227 230
228# 231#
229# Networking 232# Networking
@@ -233,6 +236,7 @@ CONFIG_NET=y
233# 236#
234# Networking options 237# Networking options
235# 238#
239# CONFIG_NETDEBUG is not set
236CONFIG_PACKET=y 240CONFIG_PACKET=y
237CONFIG_PACKET_MMAP=y 241CONFIG_PACKET_MMAP=y
238CONFIG_UNIX=y 242CONFIG_UNIX=y
@@ -255,12 +259,15 @@ CONFIG_IP_PNP_BOOTP=y
255# CONFIG_INET_AH is not set 259# CONFIG_INET_AH is not set
256# CONFIG_INET_ESP is not set 260# CONFIG_INET_ESP is not set
257# CONFIG_INET_IPCOMP is not set 261# CONFIG_INET_IPCOMP is not set
258CONFIG_INET_TUNNEL=m 262# CONFIG_INET_XFRM_TUNNEL is not set
263# CONFIG_INET_TUNNEL is not set
259CONFIG_INET_DIAG=y 264CONFIG_INET_DIAG=y
260CONFIG_INET_TCP_DIAG=y 265CONFIG_INET_TCP_DIAG=y
261# CONFIG_TCP_CONG_ADVANCED is not set 266# CONFIG_TCP_CONG_ADVANCED is not set
262CONFIG_TCP_CONG_BIC=y 267CONFIG_TCP_CONG_BIC=y
263# CONFIG_IPV6 is not set 268# CONFIG_IPV6 is not set
269# CONFIG_INET6_XFRM_TUNNEL is not set
270# CONFIG_INET6_TUNNEL is not set
264# CONFIG_NETFILTER is not set 271# CONFIG_NETFILTER is not set
265 272
266# 273#
@@ -272,6 +279,11 @@ CONFIG_TCP_CONG_BIC=y
272# SCTP Configuration (EXPERIMENTAL) 279# SCTP Configuration (EXPERIMENTAL)
273# 280#
274# CONFIG_IP_SCTP is not set 281# CONFIG_IP_SCTP is not set
282
283#
284# TIPC Configuration (EXPERIMENTAL)
285#
286# CONFIG_TIPC is not set
275# CONFIG_ATM is not set 287# CONFIG_ATM is not set
276# CONFIG_BRIDGE is not set 288# CONFIG_BRIDGE is not set
277# CONFIG_VLAN_8021Q is not set 289# CONFIG_VLAN_8021Q is not set
@@ -281,11 +293,6 @@ CONFIG_TCP_CONG_BIC=y
281# CONFIG_ATALK is not set 293# CONFIG_ATALK is not set
282# CONFIG_X25 is not set 294# CONFIG_X25 is not set
283# CONFIG_LAPB is not set 295# CONFIG_LAPB is not set
284
285#
286# TIPC Configuration (EXPERIMENTAL)
287#
288# CONFIG_TIPC is not set
289# CONFIG_NET_DIVERT is not set 296# CONFIG_NET_DIVERT is not set
290# CONFIG_ECONET is not set 297# CONFIG_ECONET is not set
291# CONFIG_WAN_ROUTER is not set 298# CONFIG_WAN_ROUTER is not set
@@ -302,10 +309,7 @@ CONFIG_TCP_CONG_BIC=y
302# CONFIG_HAMRADIO is not set 309# CONFIG_HAMRADIO is not set
303# CONFIG_IRDA is not set 310# CONFIG_IRDA is not set
304# CONFIG_BT is not set 311# CONFIG_BT is not set
305CONFIG_IEEE80211=m 312# CONFIG_IEEE80211 is not set
306# CONFIG_IEEE80211_DEBUG is not set
307CONFIG_IEEE80211_CRYPT_WEP=m
308CONFIG_IEEE80211_CRYPT_CCMP=m
309 313
310# 314#
311# Device Drivers 315# Device Drivers
@@ -348,10 +352,12 @@ CONFIG_CONNECTOR=m
348# CONFIG_BLK_DEV_LOOP is not set 352# CONFIG_BLK_DEV_LOOP is not set
349# CONFIG_BLK_DEV_NBD is not set 353# CONFIG_BLK_DEV_NBD is not set
350# CONFIG_BLK_DEV_SX8 is not set 354# CONFIG_BLK_DEV_SX8 is not set
351# CONFIG_BLK_DEV_RAM is not set 355CONFIG_BLK_DEV_RAM=y
352CONFIG_BLK_DEV_RAM_COUNT=16 356CONFIG_BLK_DEV_RAM_COUNT=16
357CONFIG_BLK_DEV_RAM_SIZE=4096
358# CONFIG_BLK_DEV_INITRD is not set
353# CONFIG_CDROM_PKTCDVD is not set 359# CONFIG_CDROM_PKTCDVD is not set
354CONFIG_ATA_OVER_ETH=m 360# CONFIG_ATA_OVER_ETH is not set
355 361
356# 362#
357# ATA/ATAPI/MFM/RLL support 363# ATA/ATAPI/MFM/RLL support
@@ -578,6 +584,11 @@ CONFIG_HW_CONSOLE=y
578# 584#
579# Non-8250 serial port support 585# Non-8250 serial port support
580# 586#
587CONFIG_SERIAL_CORE=y
588CONFIG_SERIAL_CORE_CONSOLE=y
589CONFIG_SERIAL_VR41XX=y
590CONFIG_SERIAL_VR41XX_CONSOLE=y
591# CONFIG_SERIAL_JSM is not set
581CONFIG_UNIX98_PTYS=y 592CONFIG_UNIX98_PTYS=y
582CONFIG_LEGACY_PTYS=y 593CONFIG_LEGACY_PTYS=y
583CONFIG_LEGACY_PTY_COUNT=256 594CONFIG_LEGACY_PTY_COUNT=256
@@ -601,6 +612,7 @@ CONFIG_LEGACY_PTY_COUNT=256
601# Ftape, the floppy tape device driver 612# Ftape, the floppy tape device driver
602# 613#
603# CONFIG_DRM is not set 614# CONFIG_DRM is not set
615CONFIG_GPIO_VR41XX=y
604# CONFIG_RAW_DRIVER is not set 616# CONFIG_RAW_DRIVER is not set
605 617
606# 618#
@@ -636,10 +648,6 @@ CONFIG_LEGACY_PTY_COUNT=256
636# 648#
637 649
638# 650#
639# Multimedia Capabilities Port drivers
640#
641
642#
643# Multimedia devices 651# Multimedia devices
644# 652#
645# CONFIG_VIDEO_DEV is not set 653# CONFIG_VIDEO_DEV is not set
@@ -670,6 +678,7 @@ CONFIG_DUMMY_CONSOLE=y
670# 678#
671CONFIG_USB_ARCH_HAS_HCD=y 679CONFIG_USB_ARCH_HAS_HCD=y
672CONFIG_USB_ARCH_HAS_OHCI=y 680CONFIG_USB_ARCH_HAS_OHCI=y
681CONFIG_USB_ARCH_HAS_EHCI=y
673# CONFIG_USB is not set 682# CONFIG_USB is not set
674 683
675# 684#
@@ -687,13 +696,48 @@ CONFIG_USB_ARCH_HAS_OHCI=y
687# CONFIG_MMC is not set 696# CONFIG_MMC is not set
688 697
689# 698#
699# LED devices
700#
701# CONFIG_NEW_LEDS is not set
702
703#
704# LED drivers
705#
706
707#
708# LED Triggers
709#
710
711#
690# InfiniBand support 712# InfiniBand support
691# 713#
692# CONFIG_INFINIBAND is not set 714# CONFIG_INFINIBAND is not set
693 715
694# 716#
695# SN Devices 717# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
718#
719
720#
721# Real Time Clock
722#
723CONFIG_RTC_LIB=y
724CONFIG_RTC_CLASS=y
725CONFIG_RTC_HCTOSYS=y
726CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
727
728#
729# RTC interfaces
730#
731CONFIG_RTC_INTF_SYSFS=y
732CONFIG_RTC_INTF_PROC=y
733CONFIG_RTC_INTF_DEV=y
734
735#
736# RTC drivers
696# 737#
738# CONFIG_RTC_DRV_M48T86 is not set
739CONFIG_RTC_DRV_VR41XX=y
740# CONFIG_RTC_DRV_TEST is not set
697 741
698# 742#
699# File systems 743# File systems
@@ -712,7 +756,7 @@ CONFIG_EXT2_FS=y
712CONFIG_INOTIFY=y 756CONFIG_INOTIFY=y
713# CONFIG_QUOTA is not set 757# CONFIG_QUOTA is not set
714CONFIG_DNOTIFY=y 758CONFIG_DNOTIFY=y
715CONFIG_AUTOFS_FS=y 759# CONFIG_AUTOFS_FS is not set
716CONFIG_AUTOFS4_FS=y 760CONFIG_AUTOFS4_FS=y
717CONFIG_FUSE_FS=m 761CONFIG_FUSE_FS=m
718 762
@@ -735,10 +779,9 @@ CONFIG_FUSE_FS=m
735CONFIG_PROC_FS=y 779CONFIG_PROC_FS=y
736CONFIG_PROC_KCORE=y 780CONFIG_PROC_KCORE=y
737CONFIG_SYSFS=y 781CONFIG_SYSFS=y
738# CONFIG_TMPFS is not set 782CONFIG_TMPFS=y
739# CONFIG_HUGETLB_PAGE is not set 783# CONFIG_HUGETLB_PAGE is not set
740CONFIG_RAMFS=y 784CONFIG_RAMFS=y
741CONFIG_RELAYFS_FS=m
742# CONFIG_CONFIGFS_FS is not set 785# CONFIG_CONFIGFS_FS is not set
743 786
744# 787#
@@ -805,44 +848,20 @@ CONFIG_MSDOS_PARTITION=y
805# CONFIG_MAGIC_SYSRQ is not set 848# CONFIG_MAGIC_SYSRQ is not set
806# CONFIG_DEBUG_KERNEL is not set 849# CONFIG_DEBUG_KERNEL is not set
807CONFIG_LOG_BUF_SHIFT=14 850CONFIG_LOG_BUF_SHIFT=14
851# CONFIG_DEBUG_FS is not set
808CONFIG_CROSSCOMPILE=y 852CONFIG_CROSSCOMPILE=y
809CONFIG_CMDLINE="mem=32M console=ttyVR0,38400" 853CONFIG_CMDLINE="mem=32M console=ttyVR0,38400"
810 854
811# 855#
812# Security options 856# Security options
813# 857#
814CONFIG_KEYS=y 858# CONFIG_KEYS is not set
815CONFIG_KEYS_DEBUG_PROC_KEYS=y
816# CONFIG_SECURITY is not set 859# CONFIG_SECURITY is not set
817 860
818# 861#
819# Cryptographic options 862# Cryptographic options
820# 863#
821CONFIG_CRYPTO=y 864# CONFIG_CRYPTO is not set
822CONFIG_CRYPTO_HMAC=y
823CONFIG_CRYPTO_NULL=m
824CONFIG_CRYPTO_MD4=m
825CONFIG_CRYPTO_MD5=m
826CONFIG_CRYPTO_SHA1=m
827CONFIG_CRYPTO_SHA256=m
828CONFIG_CRYPTO_SHA512=m
829CONFIG_CRYPTO_WP512=m
830CONFIG_CRYPTO_TGR192=m
831CONFIG_CRYPTO_DES=m
832CONFIG_CRYPTO_BLOWFISH=m
833CONFIG_CRYPTO_TWOFISH=m
834CONFIG_CRYPTO_SERPENT=m
835CONFIG_CRYPTO_AES=m
836CONFIG_CRYPTO_CAST5=m
837CONFIG_CRYPTO_CAST6=m
838CONFIG_CRYPTO_TEA=m
839CONFIG_CRYPTO_ARC4=m
840CONFIG_CRYPTO_KHAZAD=m
841CONFIG_CRYPTO_ANUBIS=m
842CONFIG_CRYPTO_DEFLATE=m
843CONFIG_CRYPTO_MICHAEL_MIC=m
844CONFIG_CRYPTO_CRC32C=m
845# CONFIG_CRYPTO_TEST is not set
846 865
847# 866#
848# Hardware crypto devices 867# Hardware crypto devices
@@ -852,8 +871,6 @@ CONFIG_CRYPTO_CRC32C=m
852# Library routines 871# Library routines
853# 872#
854# CONFIG_CRC_CCITT is not set 873# CONFIG_CRC_CCITT is not set
855CONFIG_CRC16=m 874# CONFIG_CRC16 is not set
856CONFIG_CRC32=y 875CONFIG_CRC32=y
857CONFIG_LIBCRC32C=m 876# CONFIG_LIBCRC32C is not set
858CONFIG_ZLIB_INFLATE=m
859CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/cobalt_defconfig b/arch/mips/configs/cobalt_defconfig
index 8336b21d3db2..7d269e609282 100644
--- a/arch/mips/configs/cobalt_defconfig
+++ b/arch/mips/configs/cobalt_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:39:55 2006 4# Mon Apr 24 14:50:57 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -63,7 +63,10 @@ CONFIG_MIPS_COBALT=y
63# CONFIG_TOSHIBA_JMR3927 is not set 63# CONFIG_TOSHIBA_JMR3927 is not set
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_EARLY_PRINTK=y
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 67CONFIG_RWSEM_GENERIC_SPINLOCK=y
68CONFIG_GENERIC_FIND_NEXT_BIT=y
69CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 70CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 71CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 72CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -113,7 +116,6 @@ CONFIG_PAGE_SIZE_4KB=y
113# CONFIG_PAGE_SIZE_16KB is not set 116# CONFIG_PAGE_SIZE_16KB is not set
114# CONFIG_PAGE_SIZE_64KB is not set 117# CONFIG_PAGE_SIZE_64KB is not set
115# CONFIG_MIPS_MT is not set 118# CONFIG_MIPS_MT is not set
116# CONFIG_CPU_ADVANCED is not set
117CONFIG_CPU_HAS_LLSC=y 119CONFIG_CPU_HAS_LLSC=y
118CONFIG_CPU_HAS_SYNC=y 120CONFIG_CPU_HAS_SYNC=y
119CONFIG_GENERIC_HARDIRQS=y 121CONFIG_GENERIC_HARDIRQS=y
@@ -135,7 +137,6 @@ CONFIG_PREEMPT_NONE=y
135# Code maturity level options 137# Code maturity level options
136# 138#
137CONFIG_EXPERIMENTAL=y 139CONFIG_EXPERIMENTAL=y
138CONFIG_CLEAN_COMPILE=y
139CONFIG_BROKEN_ON_SMP=y 140CONFIG_BROKEN_ON_SMP=y
140CONFIG_INIT_ENV_ARG_LIMIT=32 141CONFIG_INIT_ENV_ARG_LIMIT=32
141 142
@@ -151,6 +152,7 @@ CONFIG_SYSVIPC=y
151CONFIG_SYSCTL=y 152CONFIG_SYSCTL=y
152# CONFIG_AUDIT is not set 153# CONFIG_AUDIT is not set
153# CONFIG_IKCONFIG is not set 154# CONFIG_IKCONFIG is not set
155CONFIG_RELAY=y
154CONFIG_INITRAMFS_SOURCE="" 156CONFIG_INITRAMFS_SOURCE=""
155# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 157# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
156CONFIG_EMBEDDED=y 158CONFIG_EMBEDDED=y
@@ -164,10 +166,6 @@ CONFIG_BASE_FULL=y
164CONFIG_FUTEX=y 166CONFIG_FUTEX=y
165CONFIG_EPOLL=y 167CONFIG_EPOLL=y
166CONFIG_SHMEM=y 168CONFIG_SHMEM=y
167CONFIG_CC_ALIGN_FUNCTIONS=0
168CONFIG_CC_ALIGN_LABELS=0
169CONFIG_CC_ALIGN_LOOPS=0
170CONFIG_CC_ALIGN_JUMPS=0
171CONFIG_SLAB=y 169CONFIG_SLAB=y
172# CONFIG_TINY_SHMEM is not set 170# CONFIG_TINY_SHMEM is not set
173CONFIG_BASE_SMALL=0 171CONFIG_BASE_SMALL=0
@@ -182,6 +180,8 @@ CONFIG_BASE_SMALL=0
182# Block layer 180# Block layer
183# 181#
184# CONFIG_LBD is not set 182# CONFIG_LBD is not set
183# CONFIG_BLK_DEV_IO_TRACE is not set
184# CONFIG_LSF is not set
185 185
186# 186#
187# IO Schedulers 187# IO Schedulers
@@ -201,7 +201,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
201# 201#
202CONFIG_HW_HAS_PCI=y 202CONFIG_HW_HAS_PCI=y
203CONFIG_PCI=y 203CONFIG_PCI=y
204CONFIG_PCI_LEGACY_PROC=y
205CONFIG_MMU=y 204CONFIG_MMU=y
206 205
207# 206#
@@ -229,6 +228,7 @@ CONFIG_NET=y
229# 228#
230# Networking options 229# Networking options
231# 230#
231# CONFIG_NETDEBUG is not set
232CONFIG_PACKET=y 232CONFIG_PACKET=y
233# CONFIG_PACKET_MMAP is not set 233# CONFIG_PACKET_MMAP is not set
234CONFIG_UNIX=y 234CONFIG_UNIX=y
@@ -247,12 +247,15 @@ CONFIG_IP_FIB_HASH=y
247# CONFIG_INET_AH is not set 247# CONFIG_INET_AH is not set
248# CONFIG_INET_ESP is not set 248# CONFIG_INET_ESP is not set
249# CONFIG_INET_IPCOMP is not set 249# CONFIG_INET_IPCOMP is not set
250CONFIG_INET_TUNNEL=y 250# CONFIG_INET_XFRM_TUNNEL is not set
251# CONFIG_INET_TUNNEL is not set
251CONFIG_INET_DIAG=y 252CONFIG_INET_DIAG=y
252CONFIG_INET_TCP_DIAG=y 253CONFIG_INET_TCP_DIAG=y
253# CONFIG_TCP_CONG_ADVANCED is not set 254# CONFIG_TCP_CONG_ADVANCED is not set
254CONFIG_TCP_CONG_BIC=y 255CONFIG_TCP_CONG_BIC=y
255# CONFIG_IPV6 is not set 256# CONFIG_IPV6 is not set
257# CONFIG_INET6_XFRM_TUNNEL is not set
258# CONFIG_INET6_TUNNEL is not set
256# CONFIG_NETFILTER is not set 259# CONFIG_NETFILTER is not set
257 260
258# 261#
@@ -264,6 +267,11 @@ CONFIG_TCP_CONG_BIC=y
264# SCTP Configuration (EXPERIMENTAL) 267# SCTP Configuration (EXPERIMENTAL)
265# 268#
266# 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
267# CONFIG_ATM is not set 275# CONFIG_ATM is not set
268# CONFIG_BRIDGE is not set 276# CONFIG_BRIDGE is not set
269# CONFIG_VLAN_8021Q is not set 277# CONFIG_VLAN_8021Q is not set
@@ -273,11 +281,6 @@ CONFIG_TCP_CONG_BIC=y
273# CONFIG_ATALK is not set 281# CONFIG_ATALK is not set
274# CONFIG_X25 is not set 282# CONFIG_X25 is not set
275# CONFIG_LAPB is not set 283# CONFIG_LAPB is not set
276
277#
278# TIPC Configuration (EXPERIMENTAL)
279#
280# CONFIG_TIPC is not set
281# CONFIG_NET_DIVERT is not set 284# CONFIG_NET_DIVERT is not set
282# CONFIG_ECONET is not set 285# CONFIG_ECONET is not set
283# CONFIG_WAN_ROUTER is not set 286# CONFIG_WAN_ROUTER is not set
@@ -298,6 +301,9 @@ CONFIG_IEEE80211=y
298# CONFIG_IEEE80211_DEBUG is not set 301# CONFIG_IEEE80211_DEBUG is not set
299CONFIG_IEEE80211_CRYPT_WEP=y 302CONFIG_IEEE80211_CRYPT_WEP=y
300CONFIG_IEEE80211_CRYPT_CCMP=y 303CONFIG_IEEE80211_CRYPT_CCMP=y
304CONFIG_IEEE80211_SOFTMAC=y
305# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
306CONFIG_WIRELESS_EXT=y
301 307
302# 308#
303# Device Drivers 309# Device Drivers
@@ -343,7 +349,7 @@ CONFIG_BLK_DEV_LOOP=y
343# CONFIG_BLK_DEV_NBD is not set 349# CONFIG_BLK_DEV_NBD is not set
344# CONFIG_BLK_DEV_SX8 is not set 350# CONFIG_BLK_DEV_SX8 is not set
345# CONFIG_BLK_DEV_RAM is not set 351# CONFIG_BLK_DEV_RAM is not set
346CONFIG_BLK_DEV_RAM_COUNT=16 352# CONFIG_BLK_DEV_INITRD is not set
347CONFIG_CDROM_PKTCDVD=y 353CONFIG_CDROM_PKTCDVD=y
348CONFIG_CDROM_PKTCDVD_BUFFERS=8 354CONFIG_CDROM_PKTCDVD_BUFFERS=8
349# CONFIG_CDROM_PKTCDVD_WCACHE is not set 355# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -593,6 +599,7 @@ CONFIG_HW_CONSOLE=y
593# 599#
594CONFIG_SERIAL_8250=y 600CONFIG_SERIAL_8250=y
595CONFIG_SERIAL_8250_CONSOLE=y 601CONFIG_SERIAL_8250_CONSOLE=y
602CONFIG_SERIAL_8250_PCI=y
596CONFIG_SERIAL_8250_NR_UARTS=4 603CONFIG_SERIAL_8250_NR_UARTS=4
597CONFIG_SERIAL_8250_RUNTIME_UARTS=4 604CONFIG_SERIAL_8250_RUNTIME_UARTS=4
598# CONFIG_SERIAL_8250_EXTENDED is not set 605# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -602,6 +609,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
602# 609#
603CONFIG_SERIAL_CORE=y 610CONFIG_SERIAL_CORE=y
604CONFIG_SERIAL_CORE_CONSOLE=y 611CONFIG_SERIAL_CORE_CONSOLE=y
612# CONFIG_SERIAL_JSM is not set
605CONFIG_UNIX98_PTYS=y 613CONFIG_UNIX98_PTYS=y
606CONFIG_LEGACY_PTYS=y 614CONFIG_LEGACY_PTYS=y
607CONFIG_LEGACY_PTY_COUNT=256 615CONFIG_LEGACY_PTY_COUNT=256
@@ -660,10 +668,6 @@ CONFIG_COBALT_LCD=y
660# 668#
661 669
662# 670#
663# Multimedia Capabilities Port drivers
664#
665
666#
667# Multimedia devices 671# Multimedia devices
668# 672#
669# CONFIG_VIDEO_DEV is not set 673# CONFIG_VIDEO_DEV is not set
@@ -694,6 +698,7 @@ CONFIG_DUMMY_CONSOLE=y
694# 698#
695CONFIG_USB_ARCH_HAS_HCD=y 699CONFIG_USB_ARCH_HAS_HCD=y
696CONFIG_USB_ARCH_HAS_OHCI=y 700CONFIG_USB_ARCH_HAS_OHCI=y
701CONFIG_USB_ARCH_HAS_EHCI=y
697# CONFIG_USB is not set 702# CONFIG_USB is not set
698 703
699# 704#
@@ -711,13 +716,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
711# CONFIG_MMC is not set 716# CONFIG_MMC is not set
712 717
713# 718#
719# LED devices
720#
721# CONFIG_NEW_LEDS is not set
722
723#
724# LED drivers
725#
726
727#
728# LED Triggers
729#
730
731#
714# InfiniBand support 732# InfiniBand support
715# 733#
716# CONFIG_INFINIBAND is not set 734# CONFIG_INFINIBAND is not set
717 735
718# 736#
719# SN Devices 737# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
738#
739
740#
741# Real Time Clock
720# 742#
743# CONFIG_RTC_CLASS is not set
721 744
722# 745#
723# File systems 746# File systems
@@ -765,7 +788,6 @@ CONFIG_SYSFS=y
765# CONFIG_TMPFS is not set 788# CONFIG_TMPFS is not set
766# CONFIG_HUGETLB_PAGE is not set 789# CONFIG_HUGETLB_PAGE is not set
767CONFIG_RAMFS=y 790CONFIG_RAMFS=y
768CONFIG_RELAYFS_FS=y
769# CONFIG_CONFIGFS_FS is not set 791# CONFIG_CONFIGFS_FS is not set
770 792
771# 793#
@@ -828,6 +850,8 @@ CONFIG_MSDOS_PARTITION=y
828# CONFIG_MAGIC_SYSRQ is not set 850# CONFIG_MAGIC_SYSRQ is not set
829# CONFIG_DEBUG_KERNEL is not set 851# CONFIG_DEBUG_KERNEL is not set
830CONFIG_LOG_BUF_SHIFT=14 852CONFIG_LOG_BUF_SHIFT=14
853# CONFIG_DEBUG_FS is not set
854# CONFIG_UNWIND_INFO is not set
831CONFIG_CROSSCOMPILE=y 855CONFIG_CROSSCOMPILE=y
832CONFIG_CMDLINE="" 856CONFIG_CMDLINE=""
833 857
diff --git a/arch/mips/configs/db1000_defconfig b/arch/mips/configs/db1000_defconfig
index 7f071403c8e3..579b665e3339 100644
--- a/arch/mips/configs/db1000_defconfig
+++ b/arch/mips/configs/db1000_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:39:56 2006 4# Mon Apr 24 14:50:57 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_DB1000=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -114,11 +116,11 @@ CONFIG_PAGE_SIZE_4KB=y
114CONFIG_CPU_HAS_PREFETCH=y 116CONFIG_CPU_HAS_PREFETCH=y
115# CONFIG_MIPS_MT is not set 117# CONFIG_MIPS_MT is not set
116CONFIG_64BIT_PHYS_ADDR=y 118CONFIG_64BIT_PHYS_ADDR=y
117# CONFIG_CPU_ADVANCED is not set
118CONFIG_CPU_HAS_LLSC=y 119CONFIG_CPU_HAS_LLSC=y
119CONFIG_CPU_HAS_SYNC=y 120CONFIG_CPU_HAS_SYNC=y
120CONFIG_GENERIC_HARDIRQS=y 121CONFIG_GENERIC_HARDIRQS=y
121CONFIG_GENERIC_IRQ_PROBE=y 122CONFIG_GENERIC_IRQ_PROBE=y
123CONFIG_CPU_SUPPORTS_HIGHMEM=y
122CONFIG_ARCH_FLATMEM_ENABLE=y 124CONFIG_ARCH_FLATMEM_ENABLE=y
123CONFIG_SELECT_MEMORY_MODEL=y 125CONFIG_SELECT_MEMORY_MODEL=y
124CONFIG_FLATMEM_MANUAL=y 126CONFIG_FLATMEM_MANUAL=y
@@ -136,7 +138,6 @@ CONFIG_PREEMPT_NONE=y
136# Code maturity level options 138# Code maturity level options
137# 139#
138CONFIG_EXPERIMENTAL=y 140CONFIG_EXPERIMENTAL=y
139CONFIG_CLEAN_COMPILE=y
140CONFIG_BROKEN_ON_SMP=y 141CONFIG_BROKEN_ON_SMP=y
141CONFIG_INIT_ENV_ARG_LIMIT=32 142CONFIG_INIT_ENV_ARG_LIMIT=32
142 143
@@ -152,6 +153,7 @@ CONFIG_SYSVIPC=y
152CONFIG_SYSCTL=y 153CONFIG_SYSCTL=y
153# CONFIG_AUDIT is not set 154# CONFIG_AUDIT is not set
154# CONFIG_IKCONFIG is not set 155# CONFIG_IKCONFIG is not set
156CONFIG_RELAY=y
155CONFIG_INITRAMFS_SOURCE="" 157CONFIG_INITRAMFS_SOURCE=""
156# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 158# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
157CONFIG_EMBEDDED=y 159CONFIG_EMBEDDED=y
@@ -165,10 +167,6 @@ CONFIG_BASE_FULL=y
165CONFIG_FUTEX=y 167CONFIG_FUTEX=y
166CONFIG_EPOLL=y 168CONFIG_EPOLL=y
167CONFIG_SHMEM=y 169CONFIG_SHMEM=y
168CONFIG_CC_ALIGN_FUNCTIONS=0
169CONFIG_CC_ALIGN_LABELS=0
170CONFIG_CC_ALIGN_LOOPS=0
171CONFIG_CC_ALIGN_JUMPS=0
172CONFIG_SLAB=y 170CONFIG_SLAB=y
173# CONFIG_TINY_SHMEM is not set 171# CONFIG_TINY_SHMEM is not set
174CONFIG_BASE_SMALL=0 172CONFIG_BASE_SMALL=0
@@ -181,7 +179,6 @@ CONFIG_OBSOLETE_INTERMODULE=y
181CONFIG_MODULES=y 179CONFIG_MODULES=y
182CONFIG_MODULE_UNLOAD=y 180CONFIG_MODULE_UNLOAD=y
183# CONFIG_MODULE_FORCE_UNLOAD is not set 181# CONFIG_MODULE_FORCE_UNLOAD is not set
184CONFIG_OBSOLETE_MODPARM=y
185CONFIG_MODVERSIONS=y 182CONFIG_MODVERSIONS=y
186CONFIG_MODULE_SRCVERSION_ALL=y 183CONFIG_MODULE_SRCVERSION_ALL=y
187CONFIG_KMOD=y 184CONFIG_KMOD=y
@@ -190,6 +187,8 @@ CONFIG_KMOD=y
190# Block layer 187# Block layer
191# 188#
192# CONFIG_LBD is not set 189# CONFIG_LBD is not set
190# CONFIG_BLK_DEV_IO_TRACE is not set
191# CONFIG_LSF is not set
193 192
194# 193#
195# IO Schedulers 194# IO Schedulers
@@ -245,6 +244,7 @@ CONFIG_NET=y
245# 244#
246# Networking options 245# Networking options
247# 246#
247# CONFIG_NETDEBUG is not set
248CONFIG_PACKET=y 248CONFIG_PACKET=y
249# CONFIG_PACKET_MMAP is not set 249# CONFIG_PACKET_MMAP is not set
250CONFIG_UNIX=y 250CONFIG_UNIX=y
@@ -267,7 +267,8 @@ CONFIG_IP_PNP_BOOTP=y
267# CONFIG_INET_AH is not set 267# CONFIG_INET_AH is not set
268# CONFIG_INET_ESP is not set 268# CONFIG_INET_ESP is not set
269# CONFIG_INET_IPCOMP is not set 269# CONFIG_INET_IPCOMP is not set
270CONFIG_INET_TUNNEL=m 270# CONFIG_INET_XFRM_TUNNEL is not set
271# CONFIG_INET_TUNNEL is not set
271CONFIG_INET_DIAG=y 272CONFIG_INET_DIAG=y
272CONFIG_INET_TCP_DIAG=y 273CONFIG_INET_TCP_DIAG=y
273# CONFIG_TCP_CONG_ADVANCED is not set 274# CONFIG_TCP_CONG_ADVANCED is not set
@@ -278,6 +279,8 @@ CONFIG_TCP_CONG_BIC=y
278# 279#
279# CONFIG_IP_VS is not set 280# CONFIG_IP_VS is not set
280# CONFIG_IPV6 is not set 281# CONFIG_IPV6 is not set
282# CONFIG_INET6_XFRM_TUNNEL is not set
283# CONFIG_INET6_TUNNEL is not set
281CONFIG_NETFILTER=y 284CONFIG_NETFILTER=y
282# CONFIG_NETFILTER_DEBUG is not set 285# CONFIG_NETFILTER_DEBUG is not set
283 286
@@ -294,10 +297,13 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
294CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 297CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
295CONFIG_NETFILTER_XT_MATCH_COMMENT=m 298CONFIG_NETFILTER_XT_MATCH_COMMENT=m
296CONFIG_NETFILTER_XT_MATCH_DCCP=m 299CONFIG_NETFILTER_XT_MATCH_DCCP=m
300CONFIG_NETFILTER_XT_MATCH_ESP=m
297CONFIG_NETFILTER_XT_MATCH_LENGTH=m 301CONFIG_NETFILTER_XT_MATCH_LENGTH=m
298CONFIG_NETFILTER_XT_MATCH_LIMIT=m 302CONFIG_NETFILTER_XT_MATCH_LIMIT=m
299CONFIG_NETFILTER_XT_MATCH_MAC=m 303CONFIG_NETFILTER_XT_MATCH_MAC=m
300CONFIG_NETFILTER_XT_MATCH_MARK=m 304CONFIG_NETFILTER_XT_MATCH_MARK=m
305CONFIG_NETFILTER_XT_MATCH_POLICY=m
306CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
301CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 307CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
302CONFIG_NETFILTER_XT_MATCH_REALM=m 308CONFIG_NETFILTER_XT_MATCH_REALM=m
303CONFIG_NETFILTER_XT_MATCH_SCTP=m 309CONFIG_NETFILTER_XT_MATCH_SCTP=m
@@ -321,6 +327,11 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
321# SCTP Configuration (EXPERIMENTAL) 327# SCTP Configuration (EXPERIMENTAL)
322# 328#
323# CONFIG_IP_SCTP is not set 329# CONFIG_IP_SCTP is not set
330
331#
332# TIPC Configuration (EXPERIMENTAL)
333#
334# CONFIG_TIPC is not set
324# CONFIG_ATM is not set 335# CONFIG_ATM is not set
325# CONFIG_BRIDGE is not set 336# CONFIG_BRIDGE is not set
326# CONFIG_VLAN_8021Q is not set 337# CONFIG_VLAN_8021Q is not set
@@ -330,11 +341,6 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
330# CONFIG_ATALK is not set 341# CONFIG_ATALK is not set
331# CONFIG_X25 is not set 342# CONFIG_X25 is not set
332# CONFIG_LAPB is not set 343# CONFIG_LAPB is not set
333
334#
335# TIPC Configuration (EXPERIMENTAL)
336#
337# CONFIG_TIPC is not set
338# CONFIG_NET_DIVERT is not set 344# CONFIG_NET_DIVERT is not set
339# CONFIG_ECONET is not set 345# CONFIG_ECONET is not set
340# CONFIG_WAN_ROUTER is not set 346# CONFIG_WAN_ROUTER is not set
@@ -356,6 +362,9 @@ CONFIG_IEEE80211=m
356# CONFIG_IEEE80211_DEBUG is not set 362# CONFIG_IEEE80211_DEBUG is not set
357CONFIG_IEEE80211_CRYPT_WEP=m 363CONFIG_IEEE80211_CRYPT_WEP=m
358CONFIG_IEEE80211_CRYPT_CCMP=m 364CONFIG_IEEE80211_CRYPT_CCMP=m
365CONFIG_IEEE80211_SOFTMAC=m
366# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
367CONFIG_WIRELESS_EXT=y
359 368
360# 369#
361# Device Drivers 370# Device Drivers
@@ -412,7 +421,6 @@ CONFIG_MTD_CFI_I2=y
412# CONFIG_MTD_CFI_I8 is not set 421# CONFIG_MTD_CFI_I8 is not set
413# CONFIG_MTD_CFI_INTELEXT is not set 422# CONFIG_MTD_CFI_INTELEXT is not set
414CONFIG_MTD_CFI_AMDSTD=y 423CONFIG_MTD_CFI_AMDSTD=y
415CONFIG_MTD_CFI_AMDSTD_RETRY=0
416# CONFIG_MTD_CFI_STAA is not set 424# CONFIG_MTD_CFI_STAA is not set
417CONFIG_MTD_CFI_UTIL=y 425CONFIG_MTD_CFI_UTIL=y
418# CONFIG_MTD_RAM is not set 426# CONFIG_MTD_RAM is not set
@@ -434,7 +442,6 @@ CONFIG_MTD_ALCHEMY=y
434# CONFIG_MTD_SLRAM is not set 442# CONFIG_MTD_SLRAM is not set
435# CONFIG_MTD_PHRAM is not set 443# CONFIG_MTD_PHRAM is not set
436# CONFIG_MTD_MTDRAM is not set 444# CONFIG_MTD_MTDRAM is not set
437# CONFIG_MTD_BLKMTD is not set
438# CONFIG_MTD_BLOCK2MTD is not set 445# CONFIG_MTD_BLOCK2MTD is not set
439 446
440# 447#
@@ -471,7 +478,7 @@ CONFIG_BLK_DEV_LOOP=y
471# CONFIG_BLK_DEV_CRYPTOLOOP is not set 478# CONFIG_BLK_DEV_CRYPTOLOOP is not set
472# CONFIG_BLK_DEV_NBD is not set 479# CONFIG_BLK_DEV_NBD is not set
473# CONFIG_BLK_DEV_RAM is not set 480# CONFIG_BLK_DEV_RAM is not set
474CONFIG_BLK_DEV_RAM_COUNT=16 481# CONFIG_BLK_DEV_INITRD is not set
475CONFIG_CDROM_PKTCDVD=m 482CONFIG_CDROM_PKTCDVD=m
476CONFIG_CDROM_PKTCDVD_BUFFERS=8 483CONFIG_CDROM_PKTCDVD_BUFFERS=8
477# CONFIG_CDROM_PKTCDVD_WCACHE is not set 484# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -722,10 +729,6 @@ CONFIG_SYNCLINK_CS=m
722# 729#
723 730
724# 731#
725# Multimedia Capabilities Port drivers
726#
727
728#
729# Multimedia devices 732# Multimedia devices
730# 733#
731# CONFIG_VIDEO_DEV is not set 734# CONFIG_VIDEO_DEV is not set
@@ -756,6 +759,7 @@ CONFIG_DUMMY_CONSOLE=y
756# 759#
757CONFIG_USB_ARCH_HAS_HCD=y 760CONFIG_USB_ARCH_HAS_HCD=y
758CONFIG_USB_ARCH_HAS_OHCI=y 761CONFIG_USB_ARCH_HAS_OHCI=y
762# CONFIG_USB_ARCH_HAS_EHCI is not set
759# CONFIG_USB is not set 763# CONFIG_USB is not set
760 764
761# 765#
@@ -773,12 +777,30 @@ CONFIG_USB_ARCH_HAS_OHCI=y
773# CONFIG_MMC is not set 777# CONFIG_MMC is not set
774 778
775# 779#
780# LED devices
781#
782# CONFIG_NEW_LEDS is not set
783
784#
785# LED drivers
786#
787
788#
789# LED Triggers
790#
791
792#
776# InfiniBand support 793# InfiniBand support
777# 794#
778 795
779# 796#
780# SN Devices 797# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
798#
799
800#
801# Real Time Clock
781# 802#
803# CONFIG_RTC_CLASS is not set
782 804
783# 805#
784# File systems 806# File systems
@@ -836,7 +858,6 @@ CONFIG_SYSFS=y
836CONFIG_TMPFS=y 858CONFIG_TMPFS=y
837# CONFIG_HUGETLB_PAGE is not set 859# CONFIG_HUGETLB_PAGE is not set
838CONFIG_RAMFS=y 860CONFIG_RAMFS=y
839CONFIG_RELAYFS_FS=m
840# CONFIG_CONFIGFS_FS is not set 861# CONFIG_CONFIGFS_FS is not set
841 862
842# 863#
@@ -945,6 +966,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
945# CONFIG_MAGIC_SYSRQ is not set 966# CONFIG_MAGIC_SYSRQ is not set
946# CONFIG_DEBUG_KERNEL is not set 967# CONFIG_DEBUG_KERNEL is not set
947CONFIG_LOG_BUF_SHIFT=14 968CONFIG_LOG_BUF_SHIFT=14
969# CONFIG_DEBUG_FS is not set
948CONFIG_CROSSCOMPILE=y 970CONFIG_CROSSCOMPILE=y
949CONFIG_CMDLINE="" 971CONFIG_CMDLINE=""
950 972
diff --git a/arch/mips/configs/db1100_defconfig b/arch/mips/configs/db1100_defconfig
index 98590cac1ec5..e5eb53867422 100644
--- a/arch/mips/configs/db1100_defconfig
+++ b/arch/mips/configs/db1100_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:39:57 2006 4# Mon Apr 24 14:50:58 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_DB1100=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -114,11 +116,11 @@ CONFIG_PAGE_SIZE_4KB=y
114CONFIG_CPU_HAS_PREFETCH=y 116CONFIG_CPU_HAS_PREFETCH=y
115# CONFIG_MIPS_MT is not set 117# CONFIG_MIPS_MT is not set
116CONFIG_64BIT_PHYS_ADDR=y 118CONFIG_64BIT_PHYS_ADDR=y
117# CONFIG_CPU_ADVANCED is not set
118CONFIG_CPU_HAS_LLSC=y 119CONFIG_CPU_HAS_LLSC=y
119CONFIG_CPU_HAS_SYNC=y 120CONFIG_CPU_HAS_SYNC=y
120CONFIG_GENERIC_HARDIRQS=y 121CONFIG_GENERIC_HARDIRQS=y
121CONFIG_GENERIC_IRQ_PROBE=y 122CONFIG_GENERIC_IRQ_PROBE=y
123CONFIG_CPU_SUPPORTS_HIGHMEM=y
122CONFIG_ARCH_FLATMEM_ENABLE=y 124CONFIG_ARCH_FLATMEM_ENABLE=y
123CONFIG_SELECT_MEMORY_MODEL=y 125CONFIG_SELECT_MEMORY_MODEL=y
124CONFIG_FLATMEM_MANUAL=y 126CONFIG_FLATMEM_MANUAL=y
@@ -136,7 +138,6 @@ CONFIG_PREEMPT_NONE=y
136# Code maturity level options 138# Code maturity level options
137# 139#
138CONFIG_EXPERIMENTAL=y 140CONFIG_EXPERIMENTAL=y
139CONFIG_CLEAN_COMPILE=y
140CONFIG_BROKEN_ON_SMP=y 141CONFIG_BROKEN_ON_SMP=y
141CONFIG_INIT_ENV_ARG_LIMIT=32 142CONFIG_INIT_ENV_ARG_LIMIT=32
142 143
@@ -152,6 +153,7 @@ CONFIG_SYSVIPC=y
152CONFIG_SYSCTL=y 153CONFIG_SYSCTL=y
153# CONFIG_AUDIT is not set 154# CONFIG_AUDIT is not set
154# CONFIG_IKCONFIG is not set 155# CONFIG_IKCONFIG is not set
156CONFIG_RELAY=y
155CONFIG_INITRAMFS_SOURCE="" 157CONFIG_INITRAMFS_SOURCE=""
156# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 158# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
157CONFIG_EMBEDDED=y 159CONFIG_EMBEDDED=y
@@ -165,10 +167,6 @@ CONFIG_BASE_FULL=y
165CONFIG_FUTEX=y 167CONFIG_FUTEX=y
166CONFIG_EPOLL=y 168CONFIG_EPOLL=y
167CONFIG_SHMEM=y 169CONFIG_SHMEM=y
168CONFIG_CC_ALIGN_FUNCTIONS=0
169CONFIG_CC_ALIGN_LABELS=0
170CONFIG_CC_ALIGN_LOOPS=0
171CONFIG_CC_ALIGN_JUMPS=0
172CONFIG_SLAB=y 170CONFIG_SLAB=y
173# CONFIG_TINY_SHMEM is not set 171# CONFIG_TINY_SHMEM is not set
174CONFIG_BASE_SMALL=0 172CONFIG_BASE_SMALL=0
@@ -181,7 +179,6 @@ CONFIG_OBSOLETE_INTERMODULE=y
181CONFIG_MODULES=y 179CONFIG_MODULES=y
182CONFIG_MODULE_UNLOAD=y 180CONFIG_MODULE_UNLOAD=y
183# CONFIG_MODULE_FORCE_UNLOAD is not set 181# CONFIG_MODULE_FORCE_UNLOAD is not set
184CONFIG_OBSOLETE_MODPARM=y
185CONFIG_MODVERSIONS=y 182CONFIG_MODVERSIONS=y
186CONFIG_MODULE_SRCVERSION_ALL=y 183CONFIG_MODULE_SRCVERSION_ALL=y
187CONFIG_KMOD=y 184CONFIG_KMOD=y
@@ -190,6 +187,8 @@ CONFIG_KMOD=y
190# Block layer 187# Block layer
191# 188#
192# CONFIG_LBD is not set 189# CONFIG_LBD is not set
190# CONFIG_BLK_DEV_IO_TRACE is not set
191# CONFIG_LSF is not set
193 192
194# 193#
195# IO Schedulers 194# IO Schedulers
@@ -234,6 +233,7 @@ CONFIG_NET=y
234# 233#
235# Networking options 234# Networking options
236# 235#
236# CONFIG_NETDEBUG is not set
237CONFIG_PACKET=y 237CONFIG_PACKET=y
238# CONFIG_PACKET_MMAP is not set 238# CONFIG_PACKET_MMAP is not set
239CONFIG_UNIX=y 239CONFIG_UNIX=y
@@ -256,7 +256,8 @@ CONFIG_IP_PNP_BOOTP=y
256# CONFIG_INET_AH is not set 256# CONFIG_INET_AH is not set
257# CONFIG_INET_ESP is not set 257# CONFIG_INET_ESP is not set
258# CONFIG_INET_IPCOMP is not set 258# CONFIG_INET_IPCOMP is not set
259CONFIG_INET_TUNNEL=m 259# CONFIG_INET_XFRM_TUNNEL is not set
260# CONFIG_INET_TUNNEL is not set
260CONFIG_INET_DIAG=y 261CONFIG_INET_DIAG=y
261CONFIG_INET_TCP_DIAG=y 262CONFIG_INET_TCP_DIAG=y
262# CONFIG_TCP_CONG_ADVANCED is not set 263# CONFIG_TCP_CONG_ADVANCED is not set
@@ -267,6 +268,8 @@ CONFIG_TCP_CONG_BIC=y
267# 268#
268# CONFIG_IP_VS is not set 269# CONFIG_IP_VS is not set
269# CONFIG_IPV6 is not set 270# CONFIG_IPV6 is not set
271# CONFIG_INET6_XFRM_TUNNEL is not set
272# CONFIG_INET6_TUNNEL is not set
270CONFIG_NETFILTER=y 273CONFIG_NETFILTER=y
271# CONFIG_NETFILTER_DEBUG is not set 274# CONFIG_NETFILTER_DEBUG is not set
272 275
@@ -283,10 +286,13 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
283CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 286CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
284CONFIG_NETFILTER_XT_MATCH_COMMENT=m 287CONFIG_NETFILTER_XT_MATCH_COMMENT=m
285CONFIG_NETFILTER_XT_MATCH_DCCP=m 288CONFIG_NETFILTER_XT_MATCH_DCCP=m
289CONFIG_NETFILTER_XT_MATCH_ESP=m
286CONFIG_NETFILTER_XT_MATCH_LENGTH=m 290CONFIG_NETFILTER_XT_MATCH_LENGTH=m
287CONFIG_NETFILTER_XT_MATCH_LIMIT=m 291CONFIG_NETFILTER_XT_MATCH_LIMIT=m
288CONFIG_NETFILTER_XT_MATCH_MAC=m 292CONFIG_NETFILTER_XT_MATCH_MAC=m
289CONFIG_NETFILTER_XT_MATCH_MARK=m 293CONFIG_NETFILTER_XT_MATCH_MARK=m
294CONFIG_NETFILTER_XT_MATCH_POLICY=m
295CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
290CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 296CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
291CONFIG_NETFILTER_XT_MATCH_REALM=m 297CONFIG_NETFILTER_XT_MATCH_REALM=m
292CONFIG_NETFILTER_XT_MATCH_SCTP=m 298CONFIG_NETFILTER_XT_MATCH_SCTP=m
@@ -310,6 +316,11 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
310# SCTP Configuration (EXPERIMENTAL) 316# SCTP Configuration (EXPERIMENTAL)
311# 317#
312# CONFIG_IP_SCTP is not set 318# CONFIG_IP_SCTP is not set
319
320#
321# TIPC Configuration (EXPERIMENTAL)
322#
323# CONFIG_TIPC is not set
313# CONFIG_ATM is not set 324# CONFIG_ATM is not set
314# CONFIG_BRIDGE is not set 325# CONFIG_BRIDGE is not set
315# CONFIG_VLAN_8021Q is not set 326# CONFIG_VLAN_8021Q is not set
@@ -319,11 +330,6 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
319# CONFIG_ATALK is not set 330# CONFIG_ATALK is not set
320# CONFIG_X25 is not set 331# CONFIG_X25 is not set
321# CONFIG_LAPB is not set 332# CONFIG_LAPB is not set
322
323#
324# TIPC Configuration (EXPERIMENTAL)
325#
326# CONFIG_TIPC is not set
327# CONFIG_NET_DIVERT is not set 333# CONFIG_NET_DIVERT is not set
328# CONFIG_ECONET is not set 334# CONFIG_ECONET is not set
329# CONFIG_WAN_ROUTER is not set 335# CONFIG_WAN_ROUTER is not set
@@ -345,6 +351,9 @@ CONFIG_IEEE80211=m
345# CONFIG_IEEE80211_DEBUG is not set 351# CONFIG_IEEE80211_DEBUG is not set
346CONFIG_IEEE80211_CRYPT_WEP=m 352CONFIG_IEEE80211_CRYPT_WEP=m
347CONFIG_IEEE80211_CRYPT_CCMP=m 353CONFIG_IEEE80211_CRYPT_CCMP=m
354CONFIG_IEEE80211_SOFTMAC=m
355# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
356CONFIG_WIRELESS_EXT=y
348 357
349# 358#
350# Device Drivers 359# Device Drivers
@@ -401,7 +410,6 @@ CONFIG_MTD_CFI_I2=y
401# CONFIG_MTD_CFI_I8 is not set 410# CONFIG_MTD_CFI_I8 is not set
402# CONFIG_MTD_CFI_INTELEXT is not set 411# CONFIG_MTD_CFI_INTELEXT is not set
403CONFIG_MTD_CFI_AMDSTD=y 412CONFIG_MTD_CFI_AMDSTD=y
404CONFIG_MTD_CFI_AMDSTD_RETRY=0
405# CONFIG_MTD_CFI_STAA is not set 413# CONFIG_MTD_CFI_STAA is not set
406CONFIG_MTD_CFI_UTIL=y 414CONFIG_MTD_CFI_UTIL=y
407# CONFIG_MTD_RAM is not set 415# CONFIG_MTD_RAM is not set
@@ -423,7 +431,6 @@ CONFIG_MTD_ALCHEMY=y
423# CONFIG_MTD_SLRAM is not set 431# CONFIG_MTD_SLRAM is not set
424# CONFIG_MTD_PHRAM is not set 432# CONFIG_MTD_PHRAM is not set
425# CONFIG_MTD_MTDRAM is not set 433# CONFIG_MTD_MTDRAM is not set
426# CONFIG_MTD_BLKMTD is not set
427# CONFIG_MTD_BLOCK2MTD is not set 434# CONFIG_MTD_BLOCK2MTD is not set
428 435
429# 436#
@@ -460,7 +467,7 @@ CONFIG_BLK_DEV_LOOP=y
460# CONFIG_BLK_DEV_CRYPTOLOOP is not set 467# CONFIG_BLK_DEV_CRYPTOLOOP is not set
461# CONFIG_BLK_DEV_NBD is not set 468# CONFIG_BLK_DEV_NBD is not set
462# CONFIG_BLK_DEV_RAM is not set 469# CONFIG_BLK_DEV_RAM is not set
463CONFIG_BLK_DEV_RAM_COUNT=16 470# CONFIG_BLK_DEV_INITRD is not set
464CONFIG_CDROM_PKTCDVD=m 471CONFIG_CDROM_PKTCDVD=m
465CONFIG_CDROM_PKTCDVD_BUFFERS=8 472CONFIG_CDROM_PKTCDVD_BUFFERS=8
466# CONFIG_CDROM_PKTCDVD_WCACHE is not set 473# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -690,10 +697,6 @@ CONFIG_LEGACY_PTY_COUNT=256
690# 697#
691 698
692# 699#
693# Multimedia Capabilities Port drivers
694#
695
696#
697# Multimedia devices 700# Multimedia devices
698# 701#
699# CONFIG_VIDEO_DEV is not set 702# CONFIG_VIDEO_DEV is not set
@@ -711,6 +714,7 @@ CONFIG_FB_CFB_FILLRECT=y
711CONFIG_FB_CFB_COPYAREA=y 714CONFIG_FB_CFB_COPYAREA=y
712CONFIG_FB_CFB_IMAGEBLIT=y 715CONFIG_FB_CFB_IMAGEBLIT=y
713# CONFIG_FB_MACMODES is not set 716# CONFIG_FB_MACMODES is not set
717CONFIG_FB_FIRMWARE_EDID=y
714# CONFIG_FB_MODE_HELPERS is not set 718# CONFIG_FB_MODE_HELPERS is not set
715# CONFIG_FB_TILEBLITTING is not set 719# CONFIG_FB_TILEBLITTING is not set
716# CONFIG_FB_S1D13XXX is not set 720# CONFIG_FB_S1D13XXX is not set
@@ -755,6 +759,7 @@ CONFIG_LOGO_LINUX_CLUT224=y
755# 759#
756CONFIG_USB_ARCH_HAS_HCD=y 760CONFIG_USB_ARCH_HAS_HCD=y
757CONFIG_USB_ARCH_HAS_OHCI=y 761CONFIG_USB_ARCH_HAS_OHCI=y
762# CONFIG_USB_ARCH_HAS_EHCI is not set
758# CONFIG_USB is not set 763# CONFIG_USB is not set
759 764
760# 765#
@@ -772,12 +777,30 @@ CONFIG_USB_ARCH_HAS_OHCI=y
772# CONFIG_MMC is not set 777# CONFIG_MMC is not set
773 778
774# 779#
780# LED devices
781#
782# CONFIG_NEW_LEDS is not set
783
784#
785# LED drivers
786#
787
788#
789# LED Triggers
790#
791
792#
775# InfiniBand support 793# InfiniBand support
776# 794#
777 795
778# 796#
779# SN Devices 797# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
798#
799
800#
801# Real Time Clock
780# 802#
803# CONFIG_RTC_CLASS is not set
781 804
782# 805#
783# File systems 806# File systems
@@ -835,7 +858,6 @@ CONFIG_SYSFS=y
835CONFIG_TMPFS=y 858CONFIG_TMPFS=y
836# CONFIG_HUGETLB_PAGE is not set 859# CONFIG_HUGETLB_PAGE is not set
837CONFIG_RAMFS=y 860CONFIG_RAMFS=y
838CONFIG_RELAYFS_FS=m
839# CONFIG_CONFIGFS_FS is not set 861# CONFIG_CONFIGFS_FS is not set
840 862
841# 863#
@@ -944,6 +966,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
944# CONFIG_MAGIC_SYSRQ is not set 966# CONFIG_MAGIC_SYSRQ is not set
945# CONFIG_DEBUG_KERNEL is not set 967# CONFIG_DEBUG_KERNEL is not set
946CONFIG_LOG_BUF_SHIFT=14 968CONFIG_LOG_BUF_SHIFT=14
969# CONFIG_DEBUG_FS is not set
947CONFIG_CROSSCOMPILE=y 970CONFIG_CROSSCOMPILE=y
948CONFIG_CMDLINE="" 971CONFIG_CMDLINE=""
949 972
diff --git a/arch/mips/configs/db1200_defconfig b/arch/mips/configs/db1200_defconfig
index 92888472dca0..a43fb2329fd5 100644
--- a/arch/mips/configs/db1200_defconfig
+++ b/arch/mips/configs/db1200_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:39:58 2006 4# Mon Apr 24 14:50:58 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_DB1200=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_COHERENT=y 70CONFIG_DMA_COHERENT=y
69CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y 71CONFIG_MIPS_DISABLE_OBSOLETE_IDE=y
@@ -114,11 +116,11 @@ CONFIG_PAGE_SIZE_4KB=y
114CONFIG_CPU_HAS_PREFETCH=y 116CONFIG_CPU_HAS_PREFETCH=y
115# CONFIG_MIPS_MT is not set 117# CONFIG_MIPS_MT is not set
116CONFIG_64BIT_PHYS_ADDR=y 118CONFIG_64BIT_PHYS_ADDR=y
117# CONFIG_CPU_ADVANCED is not set
118CONFIG_CPU_HAS_LLSC=y 119CONFIG_CPU_HAS_LLSC=y
119CONFIG_CPU_HAS_SYNC=y 120CONFIG_CPU_HAS_SYNC=y
120CONFIG_GENERIC_HARDIRQS=y 121CONFIG_GENERIC_HARDIRQS=y
121CONFIG_GENERIC_IRQ_PROBE=y 122CONFIG_GENERIC_IRQ_PROBE=y
123CONFIG_CPU_SUPPORTS_HIGHMEM=y
122CONFIG_ARCH_FLATMEM_ENABLE=y 124CONFIG_ARCH_FLATMEM_ENABLE=y
123CONFIG_SELECT_MEMORY_MODEL=y 125CONFIG_SELECT_MEMORY_MODEL=y
124CONFIG_FLATMEM_MANUAL=y 126CONFIG_FLATMEM_MANUAL=y
@@ -136,7 +138,6 @@ CONFIG_PREEMPT_NONE=y
136# Code maturity level options 138# Code maturity level options
137# 139#
138CONFIG_EXPERIMENTAL=y 140CONFIG_EXPERIMENTAL=y
139CONFIG_CLEAN_COMPILE=y
140CONFIG_BROKEN_ON_SMP=y 141CONFIG_BROKEN_ON_SMP=y
141CONFIG_INIT_ENV_ARG_LIMIT=32 142CONFIG_INIT_ENV_ARG_LIMIT=32
142 143
@@ -153,6 +154,7 @@ CONFIG_SYSCTL=y
153# CONFIG_AUDIT is not set 154# CONFIG_AUDIT is not set
154CONFIG_IKCONFIG=y 155CONFIG_IKCONFIG=y
155CONFIG_IKCONFIG_PROC=y 156CONFIG_IKCONFIG_PROC=y
157# CONFIG_RELAY is not set
156CONFIG_INITRAMFS_SOURCE="" 158CONFIG_INITRAMFS_SOURCE=""
157# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 159# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
158CONFIG_EMBEDDED=y 160CONFIG_EMBEDDED=y
@@ -166,10 +168,6 @@ CONFIG_BASE_FULL=y
166CONFIG_FUTEX=y 168CONFIG_FUTEX=y
167CONFIG_EPOLL=y 169CONFIG_EPOLL=y
168CONFIG_SHMEM=y 170CONFIG_SHMEM=y
169CONFIG_CC_ALIGN_FUNCTIONS=0
170CONFIG_CC_ALIGN_LABELS=0
171CONFIG_CC_ALIGN_LOOPS=0
172CONFIG_CC_ALIGN_JUMPS=0
173CONFIG_SLAB=y 171CONFIG_SLAB=y
174# CONFIG_TINY_SHMEM is not set 172# CONFIG_TINY_SHMEM is not set
175CONFIG_BASE_SMALL=0 173CONFIG_BASE_SMALL=0
@@ -182,7 +180,6 @@ CONFIG_OBSOLETE_INTERMODULE=y
182CONFIG_MODULES=y 180CONFIG_MODULES=y
183CONFIG_MODULE_UNLOAD=y 181CONFIG_MODULE_UNLOAD=y
184# CONFIG_MODULE_FORCE_UNLOAD is not set 182# CONFIG_MODULE_FORCE_UNLOAD is not set
185CONFIG_OBSOLETE_MODPARM=y
186CONFIG_MODVERSIONS=y 183CONFIG_MODVERSIONS=y
187CONFIG_MODULE_SRCVERSION_ALL=y 184CONFIG_MODULE_SRCVERSION_ALL=y
188CONFIG_KMOD=y 185CONFIG_KMOD=y
@@ -191,6 +188,8 @@ CONFIG_KMOD=y
191# Block layer 188# Block layer
192# 189#
193# CONFIG_LBD is not set 190# CONFIG_LBD is not set
191# CONFIG_BLK_DEV_IO_TRACE is not set
192# CONFIG_LSF is not set
194 193
195# 194#
196# IO Schedulers 195# IO Schedulers
@@ -244,6 +243,7 @@ CONFIG_NET=y
244# 243#
245# Networking options 244# Networking options
246# 245#
246# CONFIG_NETDEBUG is not set
247CONFIG_PACKET=y 247CONFIG_PACKET=y
248# CONFIG_PACKET_MMAP is not set 248# CONFIG_PACKET_MMAP is not set
249CONFIG_UNIX=y 249CONFIG_UNIX=y
@@ -263,7 +263,8 @@ CONFIG_IP_FIB_HASH=y
263# CONFIG_INET_AH is not set 263# CONFIG_INET_AH is not set
264# CONFIG_INET_ESP is not set 264# CONFIG_INET_ESP is not set
265# CONFIG_INET_IPCOMP is not set 265# CONFIG_INET_IPCOMP is not set
266CONFIG_INET_TUNNEL=m 266# CONFIG_INET_XFRM_TUNNEL is not set
267# CONFIG_INET_TUNNEL is not set
267CONFIG_INET_DIAG=y 268CONFIG_INET_DIAG=y
268CONFIG_INET_TCP_DIAG=y 269CONFIG_INET_TCP_DIAG=y
269# CONFIG_TCP_CONG_ADVANCED is not set 270# CONFIG_TCP_CONG_ADVANCED is not set
@@ -274,6 +275,8 @@ CONFIG_TCP_CONG_BIC=y
274# 275#
275# CONFIG_IP_VS is not set 276# CONFIG_IP_VS is not set
276# CONFIG_IPV6 is not set 277# CONFIG_IPV6 is not set
278# CONFIG_INET6_XFRM_TUNNEL is not set
279# CONFIG_INET6_TUNNEL is not set
277CONFIG_NETFILTER=y 280CONFIG_NETFILTER=y
278# CONFIG_NETFILTER_DEBUG is not set 281# CONFIG_NETFILTER_DEBUG is not set
279 282
@@ -288,10 +291,13 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
288CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 291CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
289CONFIG_NETFILTER_XT_MATCH_COMMENT=m 292CONFIG_NETFILTER_XT_MATCH_COMMENT=m
290CONFIG_NETFILTER_XT_MATCH_DCCP=m 293CONFIG_NETFILTER_XT_MATCH_DCCP=m
294CONFIG_NETFILTER_XT_MATCH_ESP=m
291CONFIG_NETFILTER_XT_MATCH_LENGTH=m 295CONFIG_NETFILTER_XT_MATCH_LENGTH=m
292CONFIG_NETFILTER_XT_MATCH_LIMIT=m 296CONFIG_NETFILTER_XT_MATCH_LIMIT=m
293CONFIG_NETFILTER_XT_MATCH_MAC=m 297CONFIG_NETFILTER_XT_MATCH_MAC=m
294CONFIG_NETFILTER_XT_MATCH_MARK=m 298CONFIG_NETFILTER_XT_MATCH_MARK=m
299CONFIG_NETFILTER_XT_MATCH_POLICY=m
300CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
295CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 301CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
296CONFIG_NETFILTER_XT_MATCH_REALM=m 302CONFIG_NETFILTER_XT_MATCH_REALM=m
297CONFIG_NETFILTER_XT_MATCH_SCTP=m 303CONFIG_NETFILTER_XT_MATCH_SCTP=m
@@ -315,6 +321,11 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
315# SCTP Configuration (EXPERIMENTAL) 321# SCTP Configuration (EXPERIMENTAL)
316# 322#
317# CONFIG_IP_SCTP is not set 323# CONFIG_IP_SCTP is not set
324
325#
326# TIPC Configuration (EXPERIMENTAL)
327#
328# CONFIG_TIPC is not set
318# CONFIG_ATM is not set 329# CONFIG_ATM is not set
319# CONFIG_BRIDGE is not set 330# CONFIG_BRIDGE is not set
320# CONFIG_VLAN_8021Q is not set 331# CONFIG_VLAN_8021Q is not set
@@ -324,11 +335,6 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
324# CONFIG_ATALK is not set 335# CONFIG_ATALK is not set
325# CONFIG_X25 is not set 336# CONFIG_X25 is not set
326# CONFIG_LAPB is not set 337# CONFIG_LAPB is not set
327
328#
329# TIPC Configuration (EXPERIMENTAL)
330#
331# CONFIG_TIPC is not set
332# CONFIG_NET_DIVERT is not set 338# CONFIG_NET_DIVERT is not set
333# CONFIG_ECONET is not set 339# CONFIG_ECONET is not set
334# CONFIG_WAN_ROUTER is not set 340# CONFIG_WAN_ROUTER is not set
@@ -403,7 +409,6 @@ CONFIG_MTD_CFI_I2=y
403# CONFIG_MTD_CFI_I8 is not set 409# CONFIG_MTD_CFI_I8 is not set
404# CONFIG_MTD_CFI_INTELEXT is not set 410# CONFIG_MTD_CFI_INTELEXT is not set
405CONFIG_MTD_CFI_AMDSTD=y 411CONFIG_MTD_CFI_AMDSTD=y
406CONFIG_MTD_CFI_AMDSTD_RETRY=0
407# CONFIG_MTD_CFI_STAA is not set 412# CONFIG_MTD_CFI_STAA is not set
408CONFIG_MTD_CFI_UTIL=y 413CONFIG_MTD_CFI_UTIL=y
409# CONFIG_MTD_RAM is not set 414# CONFIG_MTD_RAM is not set
@@ -425,7 +430,6 @@ CONFIG_MTD_ALCHEMY=y
425# CONFIG_MTD_SLRAM is not set 430# CONFIG_MTD_SLRAM is not set
426# CONFIG_MTD_PHRAM is not set 431# CONFIG_MTD_PHRAM is not set
427# CONFIG_MTD_MTDRAM is not set 432# CONFIG_MTD_MTDRAM is not set
428# CONFIG_MTD_BLKMTD is not set
429# CONFIG_MTD_BLOCK2MTD is not set 433# CONFIG_MTD_BLOCK2MTD is not set
430 434
431# 435#
@@ -763,10 +767,6 @@ CONFIG_LEGACY_PTY_COUNT=256
763# 767#
764 768
765# 769#
766# Multimedia Capabilities Port drivers
767#
768
769#
770# Multimedia devices 770# Multimedia devices
771# 771#
772# CONFIG_VIDEO_DEV is not set 772# CONFIG_VIDEO_DEV is not set
@@ -784,6 +784,7 @@ CONFIG_FB_CFB_FILLRECT=y
784CONFIG_FB_CFB_COPYAREA=y 784CONFIG_FB_CFB_COPYAREA=y
785CONFIG_FB_CFB_IMAGEBLIT=y 785CONFIG_FB_CFB_IMAGEBLIT=y
786# CONFIG_FB_MACMODES is not set 786# CONFIG_FB_MACMODES is not set
787CONFIG_FB_FIRMWARE_EDID=y
787# CONFIG_FB_MODE_HELPERS is not set 788# CONFIG_FB_MODE_HELPERS is not set
788# CONFIG_FB_TILEBLITTING is not set 789# CONFIG_FB_TILEBLITTING is not set
789# CONFIG_FB_S1D13XXX is not set 790# CONFIG_FB_S1D13XXX is not set
@@ -794,6 +795,7 @@ CONFIG_FB_AU1200=y
794# Console display driver support 795# Console display driver support
795# 796#
796CONFIG_VGA_CONSOLE=y 797CONFIG_VGA_CONSOLE=y
798# CONFIG_VGACON_SOFT_SCROLLBACK is not set
797CONFIG_DUMMY_CONSOLE=y 799CONFIG_DUMMY_CONSOLE=y
798# CONFIG_FRAMEBUFFER_CONSOLE is not set 800# CONFIG_FRAMEBUFFER_CONSOLE is not set
799 801
@@ -816,6 +818,7 @@ CONFIG_LOGO_LINUX_CLUT224=y
816# 818#
817CONFIG_USB_ARCH_HAS_HCD=y 819CONFIG_USB_ARCH_HAS_HCD=y
818CONFIG_USB_ARCH_HAS_OHCI=y 820CONFIG_USB_ARCH_HAS_OHCI=y
821CONFIG_USB_ARCH_HAS_EHCI=y
819# CONFIG_USB is not set 822# CONFIG_USB is not set
820 823
821# 824#
@@ -832,6 +835,7 @@ CONFIG_USB_GADGET=m
832# CONFIG_USB_GADGET_GOKU is not set 835# CONFIG_USB_GADGET_GOKU is not set
833# CONFIG_USB_GADGET_LH7A40X is not set 836# CONFIG_USB_GADGET_LH7A40X is not set
834# CONFIG_USB_GADGET_OMAP is not set 837# CONFIG_USB_GADGET_OMAP is not set
838# CONFIG_USB_GADGET_AT91 is not set
835# CONFIG_USB_GADGET_DUMMY_HCD is not set 839# CONFIG_USB_GADGET_DUMMY_HCD is not set
836# CONFIG_USB_GADGET_DUALSPEED is not set 840# CONFIG_USB_GADGET_DUALSPEED is not set
837 841
@@ -844,12 +848,30 @@ CONFIG_MMC_BLOCK=y
844CONFIG_MMC_AU1X=y 848CONFIG_MMC_AU1X=y
845 849
846# 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#
847# InfiniBand support 864# InfiniBand support
848# 865#
849 866
850# 867#
851# SN Devices 868# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
869#
870
871#
872# Real Time Clock
852# 873#
874# CONFIG_RTC_CLASS is not set
853 875
854# 876#
855# File systems 877# File systems
@@ -913,7 +935,6 @@ CONFIG_SYSFS=y
913CONFIG_TMPFS=y 935CONFIG_TMPFS=y
914# CONFIG_HUGETLB_PAGE is not set 936# CONFIG_HUGETLB_PAGE is not set
915CONFIG_RAMFS=y 937CONFIG_RAMFS=y
916# CONFIG_RELAYFS_FS is not set
917# CONFIG_CONFIGFS_FS is not set 938# CONFIG_CONFIGFS_FS is not set
918 939
919# 940#
@@ -1027,6 +1048,7 @@ CONFIG_NLS_UTF8=m
1027# CONFIG_MAGIC_SYSRQ is not set 1048# CONFIG_MAGIC_SYSRQ is not set
1028# CONFIG_DEBUG_KERNEL is not set 1049# CONFIG_DEBUG_KERNEL is not set
1029CONFIG_LOG_BUF_SHIFT=14 1050CONFIG_LOG_BUF_SHIFT=14
1051# CONFIG_DEBUG_FS is not set
1030CONFIG_CROSSCOMPILE=y 1052CONFIG_CROSSCOMPILE=y
1031CONFIG_CMDLINE="mem=48M" 1053CONFIG_CMDLINE="mem=48M"
1032 1054
diff --git a/arch/mips/configs/db1500_defconfig b/arch/mips/configs/db1500_defconfig
index 5a415b1d4af0..ad632d87c4ef 100644
--- a/arch/mips/configs/db1500_defconfig
+++ b/arch/mips/configs/db1500_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:39:59 2006 4# Mon Apr 24 14:50:59 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_DB1500=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -116,11 +118,11 @@ CONFIG_PAGE_SIZE_4KB=y
116CONFIG_CPU_HAS_PREFETCH=y 118CONFIG_CPU_HAS_PREFETCH=y
117# CONFIG_MIPS_MT is not set 119# CONFIG_MIPS_MT is not set
118CONFIG_64BIT_PHYS_ADDR=y 120CONFIG_64BIT_PHYS_ADDR=y
119# CONFIG_CPU_ADVANCED is not set
120CONFIG_CPU_HAS_LLSC=y 121CONFIG_CPU_HAS_LLSC=y
121CONFIG_CPU_HAS_SYNC=y 122CONFIG_CPU_HAS_SYNC=y
122CONFIG_GENERIC_HARDIRQS=y 123CONFIG_GENERIC_HARDIRQS=y
123CONFIG_GENERIC_IRQ_PROBE=y 124CONFIG_GENERIC_IRQ_PROBE=y
125CONFIG_CPU_SUPPORTS_HIGHMEM=y
124CONFIG_ARCH_FLATMEM_ENABLE=y 126CONFIG_ARCH_FLATMEM_ENABLE=y
125CONFIG_SELECT_MEMORY_MODEL=y 127CONFIG_SELECT_MEMORY_MODEL=y
126CONFIG_FLATMEM_MANUAL=y 128CONFIG_FLATMEM_MANUAL=y
@@ -138,7 +140,6 @@ CONFIG_PREEMPT_NONE=y
138# Code maturity level options 140# Code maturity level options
139# 141#
140CONFIG_EXPERIMENTAL=y 142CONFIG_EXPERIMENTAL=y
141CONFIG_CLEAN_COMPILE=y
142CONFIG_BROKEN_ON_SMP=y 143CONFIG_BROKEN_ON_SMP=y
143CONFIG_INIT_ENV_ARG_LIMIT=32 144CONFIG_INIT_ENV_ARG_LIMIT=32
144 145
@@ -154,6 +155,7 @@ CONFIG_SYSVIPC=y
154CONFIG_SYSCTL=y 155CONFIG_SYSCTL=y
155# CONFIG_AUDIT is not set 156# CONFIG_AUDIT is not set
156# CONFIG_IKCONFIG is not set 157# CONFIG_IKCONFIG is not set
158CONFIG_RELAY=y
157CONFIG_INITRAMFS_SOURCE="" 159CONFIG_INITRAMFS_SOURCE=""
158# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 160# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
159CONFIG_EMBEDDED=y 161CONFIG_EMBEDDED=y
@@ -167,10 +169,6 @@ CONFIG_BASE_FULL=y
167CONFIG_FUTEX=y 169CONFIG_FUTEX=y
168CONFIG_EPOLL=y 170CONFIG_EPOLL=y
169CONFIG_SHMEM=y 171CONFIG_SHMEM=y
170CONFIG_CC_ALIGN_FUNCTIONS=0
171CONFIG_CC_ALIGN_LABELS=0
172CONFIG_CC_ALIGN_LOOPS=0
173CONFIG_CC_ALIGN_JUMPS=0
174CONFIG_SLAB=y 172CONFIG_SLAB=y
175# CONFIG_TINY_SHMEM is not set 173# CONFIG_TINY_SHMEM is not set
176CONFIG_BASE_SMALL=0 174CONFIG_BASE_SMALL=0
@@ -183,7 +181,6 @@ CONFIG_OBSOLETE_INTERMODULE=y
183CONFIG_MODULES=y 181CONFIG_MODULES=y
184CONFIG_MODULE_UNLOAD=y 182CONFIG_MODULE_UNLOAD=y
185# CONFIG_MODULE_FORCE_UNLOAD is not set 183# CONFIG_MODULE_FORCE_UNLOAD is not set
186CONFIG_OBSOLETE_MODPARM=y
187CONFIG_MODVERSIONS=y 184CONFIG_MODVERSIONS=y
188CONFIG_MODULE_SRCVERSION_ALL=y 185CONFIG_MODULE_SRCVERSION_ALL=y
189CONFIG_KMOD=y 186CONFIG_KMOD=y
@@ -192,6 +189,8 @@ CONFIG_KMOD=y
192# Block layer 189# Block layer
193# 190#
194# CONFIG_LBD is not set 191# CONFIG_LBD is not set
192# CONFIG_BLK_DEV_IO_TRACE is not set
193# CONFIG_LSF is not set
195 194
196# 195#
197# IO Schedulers 196# IO Schedulers
@@ -211,7 +210,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
211# 210#
212CONFIG_HW_HAS_PCI=y 211CONFIG_HW_HAS_PCI=y
213CONFIG_PCI=y 212CONFIG_PCI=y
214CONFIG_PCI_LEGACY_PROC=y
215CONFIG_MMU=y 213CONFIG_MMU=y
216 214
217# 215#
@@ -253,6 +251,7 @@ CONFIG_NET=y
253# 251#
254# Networking options 252# Networking options
255# 253#
254# CONFIG_NETDEBUG is not set
256CONFIG_PACKET=y 255CONFIG_PACKET=y
257# CONFIG_PACKET_MMAP is not set 256# CONFIG_PACKET_MMAP is not set
258CONFIG_UNIX=y 257CONFIG_UNIX=y
@@ -275,7 +274,8 @@ CONFIG_IP_PNP_BOOTP=y
275# CONFIG_INET_AH is not set 274# CONFIG_INET_AH is not set
276# CONFIG_INET_ESP is not set 275# CONFIG_INET_ESP is not set
277# CONFIG_INET_IPCOMP is not set 276# CONFIG_INET_IPCOMP is not set
278CONFIG_INET_TUNNEL=m 277# CONFIG_INET_XFRM_TUNNEL is not set
278# CONFIG_INET_TUNNEL is not set
279CONFIG_INET_DIAG=y 279CONFIG_INET_DIAG=y
280CONFIG_INET_TCP_DIAG=y 280CONFIG_INET_TCP_DIAG=y
281# CONFIG_TCP_CONG_ADVANCED is not set 281# CONFIG_TCP_CONG_ADVANCED is not set
@@ -286,6 +286,8 @@ CONFIG_TCP_CONG_BIC=y
286# 286#
287# CONFIG_IP_VS is not set 287# CONFIG_IP_VS is not set
288# CONFIG_IPV6 is not set 288# CONFIG_IPV6 is not set
289# CONFIG_INET6_XFRM_TUNNEL is not set
290# CONFIG_INET6_TUNNEL is not set
289CONFIG_NETFILTER=y 291CONFIG_NETFILTER=y
290# CONFIG_NETFILTER_DEBUG is not set 292# CONFIG_NETFILTER_DEBUG is not set
291 293
@@ -302,10 +304,13 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
302CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 304CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
303CONFIG_NETFILTER_XT_MATCH_COMMENT=m 305CONFIG_NETFILTER_XT_MATCH_COMMENT=m
304CONFIG_NETFILTER_XT_MATCH_DCCP=m 306CONFIG_NETFILTER_XT_MATCH_DCCP=m
307CONFIG_NETFILTER_XT_MATCH_ESP=m
305CONFIG_NETFILTER_XT_MATCH_LENGTH=m 308CONFIG_NETFILTER_XT_MATCH_LENGTH=m
306CONFIG_NETFILTER_XT_MATCH_LIMIT=m 309CONFIG_NETFILTER_XT_MATCH_LIMIT=m
307CONFIG_NETFILTER_XT_MATCH_MAC=m 310CONFIG_NETFILTER_XT_MATCH_MAC=m
308CONFIG_NETFILTER_XT_MATCH_MARK=m 311CONFIG_NETFILTER_XT_MATCH_MARK=m
312CONFIG_NETFILTER_XT_MATCH_POLICY=m
313CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
309CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 314CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
310CONFIG_NETFILTER_XT_MATCH_REALM=m 315CONFIG_NETFILTER_XT_MATCH_REALM=m
311CONFIG_NETFILTER_XT_MATCH_SCTP=m 316CONFIG_NETFILTER_XT_MATCH_SCTP=m
@@ -329,6 +334,11 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
329# SCTP Configuration (EXPERIMENTAL) 334# SCTP Configuration (EXPERIMENTAL)
330# 335#
331# CONFIG_IP_SCTP is not set 336# CONFIG_IP_SCTP is not set
337
338#
339# TIPC Configuration (EXPERIMENTAL)
340#
341# CONFIG_TIPC is not set
332# CONFIG_ATM is not set 342# CONFIG_ATM is not set
333# CONFIG_BRIDGE is not set 343# CONFIG_BRIDGE is not set
334# CONFIG_VLAN_8021Q is not set 344# CONFIG_VLAN_8021Q is not set
@@ -338,11 +348,6 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
338# CONFIG_ATALK is not set 348# CONFIG_ATALK is not set
339# CONFIG_X25 is not set 349# CONFIG_X25 is not set
340# CONFIG_LAPB is not set 350# CONFIG_LAPB is not set
341
342#
343# TIPC Configuration (EXPERIMENTAL)
344#
345# CONFIG_TIPC is not set
346# CONFIG_NET_DIVERT is not set 351# CONFIG_NET_DIVERT is not set
347# CONFIG_ECONET is not set 352# CONFIG_ECONET is not set
348# CONFIG_WAN_ROUTER is not set 353# CONFIG_WAN_ROUTER is not set
@@ -364,6 +369,9 @@ CONFIG_IEEE80211=m
364# CONFIG_IEEE80211_DEBUG is not set 369# CONFIG_IEEE80211_DEBUG is not set
365CONFIG_IEEE80211_CRYPT_WEP=m 370CONFIG_IEEE80211_CRYPT_WEP=m
366CONFIG_IEEE80211_CRYPT_CCMP=m 371CONFIG_IEEE80211_CRYPT_CCMP=m
372CONFIG_IEEE80211_SOFTMAC=m
373# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
374CONFIG_WIRELESS_EXT=y
367 375
368# 376#
369# Device Drivers 377# Device Drivers
@@ -420,7 +428,6 @@ CONFIG_MTD_CFI_I2=y
420# CONFIG_MTD_CFI_I8 is not set 428# CONFIG_MTD_CFI_I8 is not set
421CONFIG_MTD_CFI_INTELEXT=y 429CONFIG_MTD_CFI_INTELEXT=y
422CONFIG_MTD_CFI_AMDSTD=y 430CONFIG_MTD_CFI_AMDSTD=y
423CONFIG_MTD_CFI_AMDSTD_RETRY=0
424# CONFIG_MTD_CFI_STAA is not set 431# CONFIG_MTD_CFI_STAA is not set
425CONFIG_MTD_CFI_UTIL=y 432CONFIG_MTD_CFI_UTIL=y
426# CONFIG_MTD_RAM is not set 433# CONFIG_MTD_RAM is not set
@@ -443,7 +450,6 @@ CONFIG_MTD_ALCHEMY=y
443# CONFIG_MTD_SLRAM is not set 450# CONFIG_MTD_SLRAM is not set
444# CONFIG_MTD_PHRAM is not set 451# CONFIG_MTD_PHRAM is not set
445# CONFIG_MTD_MTDRAM is not set 452# CONFIG_MTD_MTDRAM is not set
446# CONFIG_MTD_BLKMTD is not set
447# CONFIG_MTD_BLOCK2MTD is not set 453# CONFIG_MTD_BLOCK2MTD is not set
448 454
449# 455#
@@ -486,7 +492,7 @@ CONFIG_BLK_DEV_LOOP=y
486# CONFIG_BLK_DEV_SX8 is not set 492# CONFIG_BLK_DEV_SX8 is not set
487# CONFIG_BLK_DEV_UB is not set 493# CONFIG_BLK_DEV_UB is not set
488# CONFIG_BLK_DEV_RAM is not set 494# CONFIG_BLK_DEV_RAM is not set
489CONFIG_BLK_DEV_RAM_COUNT=16 495# CONFIG_BLK_DEV_INITRD is not set
490CONFIG_CDROM_PKTCDVD=m 496CONFIG_CDROM_PKTCDVD=m
491CONFIG_CDROM_PKTCDVD_BUFFERS=8 497CONFIG_CDROM_PKTCDVD_BUFFERS=8
492# CONFIG_CDROM_PKTCDVD_WCACHE is not set 498# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -714,6 +720,7 @@ CONFIG_SERIO_RAW=m
714# 720#
715CONFIG_SERIAL_8250=y 721CONFIG_SERIAL_8250=y
716CONFIG_SERIAL_8250_CONSOLE=y 722CONFIG_SERIAL_8250_CONSOLE=y
723CONFIG_SERIAL_8250_PCI=y
717# CONFIG_SERIAL_8250_CS is not set 724# CONFIG_SERIAL_8250_CS is not set
718CONFIG_SERIAL_8250_NR_UARTS=4 725CONFIG_SERIAL_8250_NR_UARTS=4
719CONFIG_SERIAL_8250_RUNTIME_UARTS=4 726CONFIG_SERIAL_8250_RUNTIME_UARTS=4
@@ -725,6 +732,7 @@ CONFIG_SERIAL_8250_AU1X00=y
725# 732#
726CONFIG_SERIAL_CORE=y 733CONFIG_SERIAL_CORE=y
727CONFIG_SERIAL_CORE_CONSOLE=y 734CONFIG_SERIAL_CORE_CONSOLE=y
735# CONFIG_SERIAL_JSM is not set
728CONFIG_UNIX98_PTYS=y 736CONFIG_UNIX98_PTYS=y
729CONFIG_LEGACY_PTYS=y 737CONFIG_LEGACY_PTYS=y
730CONFIG_LEGACY_PTY_COUNT=256 738CONFIG_LEGACY_PTY_COUNT=256
@@ -790,10 +798,6 @@ CONFIG_SYNCLINK_CS=m
790# 798#
791 799
792# 800#
793# Multimedia Capabilities Port drivers
794#
795
796#
797# Multimedia devices 801# Multimedia devices
798# 802#
799# CONFIG_VIDEO_DEV is not set 803# CONFIG_VIDEO_DEV is not set
@@ -802,6 +806,7 @@ CONFIG_SYNCLINK_CS=m
802# Digital Video Broadcasting Devices 806# Digital Video Broadcasting Devices
803# 807#
804# CONFIG_DVB is not set 808# CONFIG_DVB is not set
809# CONFIG_USB_DABUSB is not set
805 810
806# 811#
807# Graphics support 812# Graphics support
@@ -825,9 +830,11 @@ CONFIG_SND_SEQ_DUMMY=m
825CONFIG_SND_OSSEMUL=y 830CONFIG_SND_OSSEMUL=y
826CONFIG_SND_MIXER_OSS=m 831CONFIG_SND_MIXER_OSS=m
827CONFIG_SND_PCM_OSS=m 832CONFIG_SND_PCM_OSS=m
833CONFIG_SND_PCM_OSS_PLUGINS=y
828CONFIG_SND_SEQUENCER_OSS=y 834CONFIG_SND_SEQUENCER_OSS=y
829# CONFIG_SND_DYNAMIC_MINORS is not set 835# CONFIG_SND_DYNAMIC_MINORS is not set
830CONFIG_SND_SUPPORT_OLD_API=y 836CONFIG_SND_SUPPORT_OLD_API=y
837CONFIG_SND_VERBOSE_PROCFS=y
831# CONFIG_SND_VERBOSE_PRINTK is not set 838# CONFIG_SND_VERBOSE_PRINTK is not set
832# CONFIG_SND_DEBUG is not set 839# CONFIG_SND_DEBUG is not set
833 840
@@ -846,6 +853,7 @@ CONFIG_SND_MTPAV=m
846# PCI devices 853# PCI devices
847# 854#
848# CONFIG_SND_AD1889 is not set 855# CONFIG_SND_AD1889 is not set
856# CONFIG_SND_ALS300 is not set
849# CONFIG_SND_ALI5451 is not set 857# CONFIG_SND_ALI5451 is not set
850# CONFIG_SND_ATIIXP is not set 858# CONFIG_SND_ATIIXP is not set
851# CONFIG_SND_ATIIXP_MODEM is not set 859# CONFIG_SND_ATIIXP_MODEM is not set
@@ -877,6 +885,7 @@ CONFIG_SND_MTPAV=m
877# CONFIG_SND_MIXART is not set 885# CONFIG_SND_MIXART is not set
878# CONFIG_SND_NM256 is not set 886# CONFIG_SND_NM256 is not set
879# CONFIG_SND_PCXHR is not set 887# CONFIG_SND_PCXHR is not set
888# CONFIG_SND_RIPTIDE is not set
880# CONFIG_SND_RME32 is not set 889# CONFIG_SND_RME32 is not set
881# CONFIG_SND_RME96 is not set 890# CONFIG_SND_RME96 is not set
882# CONFIG_SND_RME9652 is not set 891# CONFIG_SND_RME9652 is not set
@@ -905,34 +914,22 @@ CONFIG_SND_AU1X00=m
905# Open Sound System 914# Open Sound System
906# 915#
907CONFIG_SOUND_PRIME=y 916CONFIG_SOUND_PRIME=y
908CONFIG_OBSOLETE_OSS_DRIVER=y
909# CONFIG_SOUND_BT878 is not set 917# CONFIG_SOUND_BT878 is not set
910# CONFIG_SOUND_CMPCI is not set
911# CONFIG_SOUND_EMU10K1 is not set 918# CONFIG_SOUND_EMU10K1 is not set
912# CONFIG_SOUND_FUSION is not set 919# CONFIG_SOUND_FUSION is not set
913# CONFIG_SOUND_CS4281 is not set
914# CONFIG_SOUND_ES1370 is not set
915# CONFIG_SOUND_ES1371 is not set 920# CONFIG_SOUND_ES1371 is not set
916# CONFIG_SOUND_ESSSOLO1 is not set
917# CONFIG_SOUND_MAESTRO is not set
918# CONFIG_SOUND_MAESTRO3 is not set
919# CONFIG_SOUND_ICH is not set 921# CONFIG_SOUND_ICH is not set
920# CONFIG_SOUND_SONICVIBES is not set
921# CONFIG_SOUND_AU1000 is not set
922# CONFIG_SOUND_TRIDENT is not set 922# CONFIG_SOUND_TRIDENT is not set
923# CONFIG_SOUND_MSNDCLAS is not set 923# CONFIG_SOUND_MSNDCLAS is not set
924# CONFIG_SOUND_MSNDPIN is not set 924# CONFIG_SOUND_MSNDPIN is not set
925# CONFIG_SOUND_VIA82CXXX is not set 925# CONFIG_SOUND_VIA82CXXX is not set
926# CONFIG_SOUND_ALI5455 is not set
927# CONFIG_SOUND_FORTE is not set
928# CONFIG_SOUND_RME96XX is not set
929# CONFIG_SOUND_AD1980 is not set
930 926
931# 927#
932# USB support 928# USB support
933# 929#
934CONFIG_USB_ARCH_HAS_HCD=y 930CONFIG_USB_ARCH_HAS_HCD=y
935CONFIG_USB_ARCH_HAS_OHCI=y 931CONFIG_USB_ARCH_HAS_OHCI=y
932CONFIG_USB_ARCH_HAS_EHCI=y
936CONFIG_USB=y 933CONFIG_USB=y
937# CONFIG_USB_DEBUG is not set 934# CONFIG_USB_DEBUG is not set
938 935
@@ -958,7 +955,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
958# 955#
959# USB Device Class drivers 956# USB Device Class drivers
960# 957#
961# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
962# CONFIG_USB_ACM is not set 958# CONFIG_USB_ACM is not set
963# CONFIG_USB_PRINTER is not set 959# CONFIG_USB_PRINTER is not set
964 960
@@ -985,9 +981,7 @@ CONFIG_USB_HIDINPUT=y
985# CONFIG_USB_ACECAD is not set 981# CONFIG_USB_ACECAD is not set
986# CONFIG_USB_KBTAB is not set 982# CONFIG_USB_KBTAB is not set
987# CONFIG_USB_POWERMATE is not set 983# CONFIG_USB_POWERMATE is not set
988# CONFIG_USB_MTOUCH is not set 984# CONFIG_USB_TOUCHSCREEN is not set
989# CONFIG_USB_ITMTOUCH is not set
990# CONFIG_USB_EGALAX is not set
991CONFIG_USB_YEALINK=m 985CONFIG_USB_YEALINK=m
992# CONFIG_USB_XPAD is not set 986# CONFIG_USB_XPAD is not set
993# CONFIG_USB_ATI_REMOTE is not set 987# CONFIG_USB_ATI_REMOTE is not set
@@ -1001,15 +995,6 @@ CONFIG_USB_YEALINK=m
1001# CONFIG_USB_MDC800 is not set 995# CONFIG_USB_MDC800 is not set
1002 996
1003# 997#
1004# USB Multimedia devices
1005#
1006# CONFIG_USB_DABUSB is not set
1007
1008#
1009# Video4Linux support is needed for USB Multimedia device support
1010#
1011
1012#
1013# USB Network Adapters 998# USB Network Adapters
1014# 999#
1015# CONFIG_USB_CATC is not set 1000# CONFIG_USB_CATC is not set
@@ -1059,13 +1044,31 @@ CONFIG_USB_LD=m
1059# CONFIG_MMC is not set 1044# CONFIG_MMC is not set
1060 1045
1061# 1046#
1047# LED devices
1048#
1049# CONFIG_NEW_LEDS is not set
1050
1051#
1052# LED drivers
1053#
1054
1055#
1056# LED Triggers
1057#
1058
1059#
1062# InfiniBand support 1060# InfiniBand support
1063# 1061#
1064# CONFIG_INFINIBAND is not set 1062# CONFIG_INFINIBAND is not set
1065 1063
1066# 1064#
1067# SN Devices 1065# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1066#
1067
1068#
1069# Real Time Clock
1068# 1070#
1071# CONFIG_RTC_CLASS is not set
1069 1072
1070# 1073#
1071# File systems 1074# File systems
@@ -1123,7 +1126,6 @@ CONFIG_SYSFS=y
1123CONFIG_TMPFS=y 1126CONFIG_TMPFS=y
1124# CONFIG_HUGETLB_PAGE is not set 1127# CONFIG_HUGETLB_PAGE is not set
1125CONFIG_RAMFS=y 1128CONFIG_RAMFS=y
1126CONFIG_RELAYFS_FS=m
1127# CONFIG_CONFIGFS_FS is not set 1129# CONFIG_CONFIGFS_FS is not set
1128 1130
1129# 1131#
@@ -1232,6 +1234,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1232# CONFIG_MAGIC_SYSRQ is not set 1234# CONFIG_MAGIC_SYSRQ is not set
1233# CONFIG_DEBUG_KERNEL is not set 1235# CONFIG_DEBUG_KERNEL is not set
1234CONFIG_LOG_BUF_SHIFT=14 1236CONFIG_LOG_BUF_SHIFT=14
1237# CONFIG_DEBUG_FS is not set
1235CONFIG_CROSSCOMPILE=y 1238CONFIG_CROSSCOMPILE=y
1236CONFIG_CMDLINE="" 1239CONFIG_CMDLINE=""
1237 1240
diff --git a/arch/mips/configs/db1550_defconfig b/arch/mips/configs/db1550_defconfig
index 8dc1f18badfe..8130e23dc255 100644
--- a/arch/mips/configs/db1550_defconfig
+++ b/arch/mips/configs/db1550_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:00 2006 4# Mon Apr 24 14:51:00 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_DB1550=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -115,11 +117,11 @@ CONFIG_PAGE_SIZE_4KB=y
115CONFIG_CPU_HAS_PREFETCH=y 117CONFIG_CPU_HAS_PREFETCH=y
116# CONFIG_MIPS_MT is not set 118# CONFIG_MIPS_MT is not set
117CONFIG_64BIT_PHYS_ADDR=y 119CONFIG_64BIT_PHYS_ADDR=y
118# CONFIG_CPU_ADVANCED is not set
119CONFIG_CPU_HAS_LLSC=y 120CONFIG_CPU_HAS_LLSC=y
120CONFIG_CPU_HAS_SYNC=y 121CONFIG_CPU_HAS_SYNC=y
121CONFIG_GENERIC_HARDIRQS=y 122CONFIG_GENERIC_HARDIRQS=y
122CONFIG_GENERIC_IRQ_PROBE=y 123CONFIG_GENERIC_IRQ_PROBE=y
124CONFIG_CPU_SUPPORTS_HIGHMEM=y
123CONFIG_ARCH_FLATMEM_ENABLE=y 125CONFIG_ARCH_FLATMEM_ENABLE=y
124CONFIG_SELECT_MEMORY_MODEL=y 126CONFIG_SELECT_MEMORY_MODEL=y
125CONFIG_FLATMEM_MANUAL=y 127CONFIG_FLATMEM_MANUAL=y
@@ -137,7 +139,6 @@ CONFIG_PREEMPT_NONE=y
137# Code maturity level options 139# Code maturity level options
138# 140#
139CONFIG_EXPERIMENTAL=y 141CONFIG_EXPERIMENTAL=y
140CONFIG_CLEAN_COMPILE=y
141CONFIG_BROKEN_ON_SMP=y 142CONFIG_BROKEN_ON_SMP=y
142CONFIG_INIT_ENV_ARG_LIMIT=32 143CONFIG_INIT_ENV_ARG_LIMIT=32
143 144
@@ -153,6 +154,7 @@ CONFIG_SYSVIPC=y
153CONFIG_SYSCTL=y 154CONFIG_SYSCTL=y
154# CONFIG_AUDIT is not set 155# CONFIG_AUDIT is not set
155# CONFIG_IKCONFIG is not set 156# CONFIG_IKCONFIG is not set
157CONFIG_RELAY=y
156CONFIG_INITRAMFS_SOURCE="" 158CONFIG_INITRAMFS_SOURCE=""
157# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 159# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
158CONFIG_EMBEDDED=y 160CONFIG_EMBEDDED=y
@@ -166,10 +168,6 @@ CONFIG_BASE_FULL=y
166CONFIG_FUTEX=y 168CONFIG_FUTEX=y
167CONFIG_EPOLL=y 169CONFIG_EPOLL=y
168CONFIG_SHMEM=y 170CONFIG_SHMEM=y
169CONFIG_CC_ALIGN_FUNCTIONS=0
170CONFIG_CC_ALIGN_LABELS=0
171CONFIG_CC_ALIGN_LOOPS=0
172CONFIG_CC_ALIGN_JUMPS=0
173CONFIG_SLAB=y 171CONFIG_SLAB=y
174# CONFIG_TINY_SHMEM is not set 172# CONFIG_TINY_SHMEM is not set
175CONFIG_BASE_SMALL=0 173CONFIG_BASE_SMALL=0
@@ -182,7 +180,6 @@ CONFIG_OBSOLETE_INTERMODULE=y
182CONFIG_MODULES=y 180CONFIG_MODULES=y
183CONFIG_MODULE_UNLOAD=y 181CONFIG_MODULE_UNLOAD=y
184# CONFIG_MODULE_FORCE_UNLOAD is not set 182# CONFIG_MODULE_FORCE_UNLOAD is not set
185CONFIG_OBSOLETE_MODPARM=y
186CONFIG_MODVERSIONS=y 183CONFIG_MODVERSIONS=y
187CONFIG_MODULE_SRCVERSION_ALL=y 184CONFIG_MODULE_SRCVERSION_ALL=y
188CONFIG_KMOD=y 185CONFIG_KMOD=y
@@ -191,6 +188,8 @@ CONFIG_KMOD=y
191# Block layer 188# Block layer
192# 189#
193# CONFIG_LBD is not set 190# CONFIG_LBD is not set
191# CONFIG_BLK_DEV_IO_TRACE is not set
192# CONFIG_LSF is not set
194 193
195# 194#
196# IO Schedulers 195# IO Schedulers
@@ -210,7 +209,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
210# 209#
211CONFIG_HW_HAS_PCI=y 210CONFIG_HW_HAS_PCI=y
212CONFIG_PCI=y 211CONFIG_PCI=y
213CONFIG_PCI_LEGACY_PROC=y
214CONFIG_MMU=y 212CONFIG_MMU=y
215 213
216# 214#
@@ -252,6 +250,7 @@ CONFIG_NET=y
252# 250#
253# Networking options 251# Networking options
254# 252#
253# CONFIG_NETDEBUG is not set
255CONFIG_PACKET=y 254CONFIG_PACKET=y
256# CONFIG_PACKET_MMAP is not set 255# CONFIG_PACKET_MMAP is not set
257CONFIG_UNIX=y 256CONFIG_UNIX=y
@@ -274,7 +273,8 @@ CONFIG_IP_PNP_BOOTP=y
274# CONFIG_INET_AH is not set 273# CONFIG_INET_AH is not set
275# CONFIG_INET_ESP is not set 274# CONFIG_INET_ESP is not set
276# CONFIG_INET_IPCOMP is not set 275# CONFIG_INET_IPCOMP is not set
277CONFIG_INET_TUNNEL=m 276# CONFIG_INET_XFRM_TUNNEL is not set
277# CONFIG_INET_TUNNEL is not set
278CONFIG_INET_DIAG=y 278CONFIG_INET_DIAG=y
279CONFIG_INET_TCP_DIAG=y 279CONFIG_INET_TCP_DIAG=y
280# CONFIG_TCP_CONG_ADVANCED is not set 280# CONFIG_TCP_CONG_ADVANCED is not set
@@ -285,6 +285,8 @@ CONFIG_TCP_CONG_BIC=y
285# 285#
286# CONFIG_IP_VS is not set 286# CONFIG_IP_VS is not set
287# CONFIG_IPV6 is not set 287# CONFIG_IPV6 is not set
288# CONFIG_INET6_XFRM_TUNNEL is not set
289# CONFIG_INET6_TUNNEL is not set
288CONFIG_NETFILTER=y 290CONFIG_NETFILTER=y
289# CONFIG_NETFILTER_DEBUG is not set 291# CONFIG_NETFILTER_DEBUG is not set
290 292
@@ -301,10 +303,13 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
301CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 303CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
302CONFIG_NETFILTER_XT_MATCH_COMMENT=m 304CONFIG_NETFILTER_XT_MATCH_COMMENT=m
303CONFIG_NETFILTER_XT_MATCH_DCCP=m 305CONFIG_NETFILTER_XT_MATCH_DCCP=m
306CONFIG_NETFILTER_XT_MATCH_ESP=m
304CONFIG_NETFILTER_XT_MATCH_LENGTH=m 307CONFIG_NETFILTER_XT_MATCH_LENGTH=m
305CONFIG_NETFILTER_XT_MATCH_LIMIT=m 308CONFIG_NETFILTER_XT_MATCH_LIMIT=m
306CONFIG_NETFILTER_XT_MATCH_MAC=m 309CONFIG_NETFILTER_XT_MATCH_MAC=m
307CONFIG_NETFILTER_XT_MATCH_MARK=m 310CONFIG_NETFILTER_XT_MATCH_MARK=m
311CONFIG_NETFILTER_XT_MATCH_POLICY=m
312CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
308CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 313CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
309CONFIG_NETFILTER_XT_MATCH_REALM=m 314CONFIG_NETFILTER_XT_MATCH_REALM=m
310CONFIG_NETFILTER_XT_MATCH_SCTP=m 315CONFIG_NETFILTER_XT_MATCH_SCTP=m
@@ -328,6 +333,11 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
328# SCTP Configuration (EXPERIMENTAL) 333# SCTP Configuration (EXPERIMENTAL)
329# 334#
330# CONFIG_IP_SCTP is not set 335# CONFIG_IP_SCTP is not set
336
337#
338# TIPC Configuration (EXPERIMENTAL)
339#
340# CONFIG_TIPC is not set
331# CONFIG_ATM is not set 341# CONFIG_ATM is not set
332# CONFIG_BRIDGE is not set 342# CONFIG_BRIDGE is not set
333# CONFIG_VLAN_8021Q is not set 343# CONFIG_VLAN_8021Q is not set
@@ -337,11 +347,6 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
337# CONFIG_ATALK is not set 347# CONFIG_ATALK is not set
338# CONFIG_X25 is not set 348# CONFIG_X25 is not set
339# CONFIG_LAPB is not set 349# CONFIG_LAPB is not set
340
341#
342# TIPC Configuration (EXPERIMENTAL)
343#
344# CONFIG_TIPC is not set
345# CONFIG_NET_DIVERT is not set 350# CONFIG_NET_DIVERT is not set
346# CONFIG_ECONET is not set 351# CONFIG_ECONET is not set
347# CONFIG_WAN_ROUTER is not set 352# CONFIG_WAN_ROUTER is not set
@@ -363,6 +368,9 @@ CONFIG_IEEE80211=m
363# CONFIG_IEEE80211_DEBUG is not set 368# CONFIG_IEEE80211_DEBUG is not set
364CONFIG_IEEE80211_CRYPT_WEP=m 369CONFIG_IEEE80211_CRYPT_WEP=m
365CONFIG_IEEE80211_CRYPT_CCMP=m 370CONFIG_IEEE80211_CRYPT_CCMP=m
371CONFIG_IEEE80211_SOFTMAC=m
372# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
373CONFIG_WIRELESS_EXT=y
366 374
367# 375#
368# Device Drivers 376# Device Drivers
@@ -419,7 +427,6 @@ CONFIG_MTD_CFI_I2=y
419# CONFIG_MTD_CFI_I8 is not set 427# CONFIG_MTD_CFI_I8 is not set
420# CONFIG_MTD_CFI_INTELEXT is not set 428# CONFIG_MTD_CFI_INTELEXT is not set
421CONFIG_MTD_CFI_AMDSTD=y 429CONFIG_MTD_CFI_AMDSTD=y
422CONFIG_MTD_CFI_AMDSTD_RETRY=0
423# CONFIG_MTD_CFI_STAA is not set 430# CONFIG_MTD_CFI_STAA is not set
424CONFIG_MTD_CFI_UTIL=y 431CONFIG_MTD_CFI_UTIL=y
425# CONFIG_MTD_RAM is not set 432# CONFIG_MTD_RAM is not set
@@ -442,7 +449,6 @@ CONFIG_MTD_ALCHEMY=y
442# CONFIG_MTD_SLRAM is not set 449# CONFIG_MTD_SLRAM is not set
443# CONFIG_MTD_PHRAM is not set 450# CONFIG_MTD_PHRAM is not set
444# CONFIG_MTD_MTDRAM is not set 451# CONFIG_MTD_MTDRAM is not set
445# CONFIG_MTD_BLKMTD is not set
446# CONFIG_MTD_BLOCK2MTD is not set 452# CONFIG_MTD_BLOCK2MTD is not set
447 453
448# 454#
@@ -489,7 +495,7 @@ CONFIG_BLK_DEV_LOOP=y
489# CONFIG_BLK_DEV_NBD is not set 495# CONFIG_BLK_DEV_NBD is not set
490# CONFIG_BLK_DEV_SX8 is not set 496# CONFIG_BLK_DEV_SX8 is not set
491# CONFIG_BLK_DEV_RAM is not set 497# CONFIG_BLK_DEV_RAM is not set
492CONFIG_BLK_DEV_RAM_COUNT=16 498# CONFIG_BLK_DEV_INITRD is not set
493CONFIG_CDROM_PKTCDVD=m 499CONFIG_CDROM_PKTCDVD=m
494CONFIG_CDROM_PKTCDVD_BUFFERS=8 500CONFIG_CDROM_PKTCDVD_BUFFERS=8
495# CONFIG_CDROM_PKTCDVD_WCACHE is not set 501# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -754,6 +760,7 @@ CONFIG_SERIO_RAW=m
754# 760#
755CONFIG_SERIAL_8250=y 761CONFIG_SERIAL_8250=y
756CONFIG_SERIAL_8250_CONSOLE=y 762CONFIG_SERIAL_8250_CONSOLE=y
763CONFIG_SERIAL_8250_PCI=y
757# CONFIG_SERIAL_8250_CS is not set 764# CONFIG_SERIAL_8250_CS is not set
758CONFIG_SERIAL_8250_NR_UARTS=4 765CONFIG_SERIAL_8250_NR_UARTS=4
759CONFIG_SERIAL_8250_RUNTIME_UARTS=4 766CONFIG_SERIAL_8250_RUNTIME_UARTS=4
@@ -765,6 +772,7 @@ CONFIG_SERIAL_8250_AU1X00=y
765# 772#
766CONFIG_SERIAL_CORE=y 773CONFIG_SERIAL_CORE=y
767CONFIG_SERIAL_CORE_CONSOLE=y 774CONFIG_SERIAL_CORE_CONSOLE=y
775# CONFIG_SERIAL_JSM is not set
768CONFIG_UNIX98_PTYS=y 776CONFIG_UNIX98_PTYS=y
769CONFIG_LEGACY_PTYS=y 777CONFIG_LEGACY_PTYS=y
770CONFIG_LEGACY_PTY_COUNT=256 778CONFIG_LEGACY_PTY_COUNT=256
@@ -830,10 +838,6 @@ CONFIG_SYNCLINK_CS=m
830# 838#
831 839
832# 840#
833# Multimedia Capabilities Port drivers
834#
835
836#
837# Multimedia devices 841# Multimedia devices
838# 842#
839# CONFIG_VIDEO_DEV is not set 843# CONFIG_VIDEO_DEV is not set
@@ -858,6 +862,7 @@ CONFIG_SYNCLINK_CS=m
858# 862#
859CONFIG_USB_ARCH_HAS_HCD=y 863CONFIG_USB_ARCH_HAS_HCD=y
860CONFIG_USB_ARCH_HAS_OHCI=y 864CONFIG_USB_ARCH_HAS_OHCI=y
865CONFIG_USB_ARCH_HAS_EHCI=y
861# CONFIG_USB is not set 866# CONFIG_USB is not set
862 867
863# 868#
@@ -875,13 +880,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
875# CONFIG_MMC is not set 880# CONFIG_MMC is not set
876 881
877# 882#
883# LED devices
884#
885# CONFIG_NEW_LEDS is not set
886
887#
888# LED drivers
889#
890
891#
892# LED Triggers
893#
894
895#
878# InfiniBand support 896# InfiniBand support
879# 897#
880# CONFIG_INFINIBAND is not set 898# CONFIG_INFINIBAND is not set
881 899
882# 900#
883# SN Devices 901# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
902#
903
904#
905# Real Time Clock
884# 906#
907# CONFIG_RTC_CLASS is not set
885 908
886# 909#
887# File systems 910# File systems
@@ -939,7 +962,6 @@ CONFIG_SYSFS=y
939CONFIG_TMPFS=y 962CONFIG_TMPFS=y
940# CONFIG_HUGETLB_PAGE is not set 963# CONFIG_HUGETLB_PAGE is not set
941CONFIG_RAMFS=y 964CONFIG_RAMFS=y
942CONFIG_RELAYFS_FS=m
943# CONFIG_CONFIGFS_FS is not set 965# CONFIG_CONFIGFS_FS is not set
944 966
945# 967#
@@ -1048,6 +1070,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1048# CONFIG_MAGIC_SYSRQ is not set 1070# CONFIG_MAGIC_SYSRQ is not set
1049# CONFIG_DEBUG_KERNEL is not set 1071# CONFIG_DEBUG_KERNEL is not set
1050CONFIG_LOG_BUF_SHIFT=14 1072CONFIG_LOG_BUF_SHIFT=14
1073# CONFIG_DEBUG_FS is not set
1051CONFIG_CROSSCOMPILE=y 1074CONFIG_CROSSCOMPILE=y
1052CONFIG_CMDLINE="" 1075CONFIG_CMDLINE=""
1053 1076
diff --git a/arch/mips/configs/ddb5476_defconfig b/arch/mips/configs/ddb5476_defconfig
index 8fae63e47e5e..8d88ac1bbfeb 100644
--- a/arch/mips/configs/ddb5476_defconfig
+++ b/arch/mips/configs/ddb5476_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:02 2006 4# Mon Apr 24 14:51:00 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_DDB5476=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -114,7 +116,6 @@ CONFIG_PAGE_SIZE_4KB=y
114# CONFIG_PAGE_SIZE_16KB is not set 116# CONFIG_PAGE_SIZE_16KB is not set
115# CONFIG_PAGE_SIZE_64KB is not set 117# CONFIG_PAGE_SIZE_64KB is not set
116# CONFIG_MIPS_MT is not set 118# CONFIG_MIPS_MT is not set
117# CONFIG_CPU_ADVANCED is not set
118CONFIG_CPU_HAS_LLSC=y 119CONFIG_CPU_HAS_LLSC=y
119CONFIG_CPU_HAS_SYNC=y 120CONFIG_CPU_HAS_SYNC=y
120CONFIG_GENERIC_HARDIRQS=y 121CONFIG_GENERIC_HARDIRQS=y
@@ -136,7 +137,6 @@ CONFIG_PREEMPT_NONE=y
136# Code maturity level options 137# Code maturity level options
137# 138#
138CONFIG_EXPERIMENTAL=y 139CONFIG_EXPERIMENTAL=y
139CONFIG_CLEAN_COMPILE=y
140CONFIG_BROKEN_ON_SMP=y 140CONFIG_BROKEN_ON_SMP=y
141CONFIG_INIT_ENV_ARG_LIMIT=32 141CONFIG_INIT_ENV_ARG_LIMIT=32
142 142
@@ -152,6 +152,7 @@ CONFIG_SYSVIPC=y
152CONFIG_SYSCTL=y 152CONFIG_SYSCTL=y
153# CONFIG_AUDIT is not set 153# CONFIG_AUDIT is not set
154# CONFIG_IKCONFIG is not set 154# CONFIG_IKCONFIG is not set
155CONFIG_RELAY=y
155CONFIG_INITRAMFS_SOURCE="" 156CONFIG_INITRAMFS_SOURCE=""
156# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 157# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
157CONFIG_EMBEDDED=y 158CONFIG_EMBEDDED=y
@@ -165,10 +166,6 @@ CONFIG_BASE_FULL=y
165CONFIG_FUTEX=y 166CONFIG_FUTEX=y
166CONFIG_EPOLL=y 167CONFIG_EPOLL=y
167CONFIG_SHMEM=y 168CONFIG_SHMEM=y
168CONFIG_CC_ALIGN_FUNCTIONS=0
169CONFIG_CC_ALIGN_LABELS=0
170CONFIG_CC_ALIGN_LOOPS=0
171CONFIG_CC_ALIGN_JUMPS=0
172CONFIG_SLAB=y 169CONFIG_SLAB=y
173# CONFIG_TINY_SHMEM is not set 170# CONFIG_TINY_SHMEM is not set
174CONFIG_BASE_SMALL=0 171CONFIG_BASE_SMALL=0
@@ -183,6 +180,8 @@ CONFIG_BASE_SMALL=0
183# Block layer 180# Block layer
184# 181#
185# CONFIG_LBD is not set 182# CONFIG_LBD is not set
183# CONFIG_BLK_DEV_IO_TRACE is not set
184# CONFIG_LSF is not set
186 185
187# 186#
188# IO Schedulers 187# IO Schedulers
@@ -202,7 +201,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
202# 201#
203CONFIG_HW_HAS_PCI=y 202CONFIG_HW_HAS_PCI=y
204CONFIG_PCI=y 203CONFIG_PCI=y
205CONFIG_PCI_LEGACY_PROC=y
206CONFIG_ISA=y 204CONFIG_ISA=y
207CONFIG_MMU=y 205CONFIG_MMU=y
208 206
@@ -231,6 +229,7 @@ CONFIG_NET=y
231# 229#
232# Networking options 230# Networking options
233# 231#
232# CONFIG_NETDEBUG is not set
234CONFIG_PACKET=y 233CONFIG_PACKET=y
235# CONFIG_PACKET_MMAP is not set 234# CONFIG_PACKET_MMAP is not set
236CONFIG_UNIX=y 235CONFIG_UNIX=y
@@ -252,12 +251,15 @@ CONFIG_IP_PNP_BOOTP=y
252# CONFIG_INET_AH is not set 251# CONFIG_INET_AH is not set
253# CONFIG_INET_ESP is not set 252# CONFIG_INET_ESP is not set
254# CONFIG_INET_IPCOMP is not set 253# CONFIG_INET_IPCOMP is not set
255CONFIG_INET_TUNNEL=y 254# CONFIG_INET_XFRM_TUNNEL is not set
255# CONFIG_INET_TUNNEL is not set
256CONFIG_INET_DIAG=y 256CONFIG_INET_DIAG=y
257CONFIG_INET_TCP_DIAG=y 257CONFIG_INET_TCP_DIAG=y
258# CONFIG_TCP_CONG_ADVANCED is not set 258# CONFIG_TCP_CONG_ADVANCED is not set
259CONFIG_TCP_CONG_BIC=y 259CONFIG_TCP_CONG_BIC=y
260# CONFIG_IPV6 is not set 260# CONFIG_IPV6 is not set
261# CONFIG_INET6_XFRM_TUNNEL is not set
262# CONFIG_INET6_TUNNEL is not set
261# CONFIG_NETFILTER is not set 263# CONFIG_NETFILTER is not set
262 264
263# 265#
@@ -269,6 +271,11 @@ CONFIG_TCP_CONG_BIC=y
269# SCTP Configuration (EXPERIMENTAL) 271# SCTP Configuration (EXPERIMENTAL)
270# 272#
271# CONFIG_IP_SCTP is not set 273# CONFIG_IP_SCTP is not set
274
275#
276# TIPC Configuration (EXPERIMENTAL)
277#
278# CONFIG_TIPC is not set
272# CONFIG_ATM is not set 279# CONFIG_ATM is not set
273# CONFIG_BRIDGE is not set 280# CONFIG_BRIDGE is not set
274# CONFIG_VLAN_8021Q is not set 281# CONFIG_VLAN_8021Q is not set
@@ -278,11 +285,6 @@ CONFIG_TCP_CONG_BIC=y
278# CONFIG_ATALK is not set 285# CONFIG_ATALK is not set
279# CONFIG_X25 is not set 286# CONFIG_X25 is not set
280# CONFIG_LAPB is not set 287# CONFIG_LAPB is not set
281
282#
283# TIPC Configuration (EXPERIMENTAL)
284#
285# CONFIG_TIPC is not set
286# CONFIG_NET_DIVERT is not set 288# CONFIG_NET_DIVERT is not set
287# CONFIG_ECONET is not set 289# CONFIG_ECONET is not set
288# CONFIG_WAN_ROUTER is not set 290# CONFIG_WAN_ROUTER is not set
@@ -303,6 +305,9 @@ CONFIG_IEEE80211=y
303# CONFIG_IEEE80211_DEBUG is not set 305# CONFIG_IEEE80211_DEBUG is not set
304CONFIG_IEEE80211_CRYPT_WEP=y 306CONFIG_IEEE80211_CRYPT_WEP=y
305CONFIG_IEEE80211_CRYPT_CCMP=y 307CONFIG_IEEE80211_CRYPT_CCMP=y
308CONFIG_IEEE80211_SOFTMAC=y
309# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
310CONFIG_WIRELESS_EXT=y
306 311
307# 312#
308# Device Drivers 313# Device Drivers
@@ -348,7 +353,7 @@ CONFIG_PROC_EVENTS=y
348# CONFIG_BLK_DEV_NBD is not set 353# CONFIG_BLK_DEV_NBD is not set
349# CONFIG_BLK_DEV_SX8 is not set 354# CONFIG_BLK_DEV_SX8 is not set
350# CONFIG_BLK_DEV_RAM is not set 355# CONFIG_BLK_DEV_RAM is not set
351CONFIG_BLK_DEV_RAM_COUNT=16 356# CONFIG_BLK_DEV_INITRD is not set
352CONFIG_CDROM_PKTCDVD=y 357CONFIG_CDROM_PKTCDVD=y
353CONFIG_CDROM_PKTCDVD_BUFFERS=8 358CONFIG_CDROM_PKTCDVD_BUFFERS=8
354# CONFIG_CDROM_PKTCDVD_WCACHE is not set 359# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -571,6 +576,7 @@ CONFIG_HW_CONSOLE=y
571# 576#
572CONFIG_SERIAL_8250=y 577CONFIG_SERIAL_8250=y
573CONFIG_SERIAL_8250_CONSOLE=y 578CONFIG_SERIAL_8250_CONSOLE=y
579CONFIG_SERIAL_8250_PCI=y
574CONFIG_SERIAL_8250_NR_UARTS=4 580CONFIG_SERIAL_8250_NR_UARTS=4
575CONFIG_SERIAL_8250_RUNTIME_UARTS=4 581CONFIG_SERIAL_8250_RUNTIME_UARTS=4
576# CONFIG_SERIAL_8250_EXTENDED is not set 582# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -580,6 +586,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
580# 586#
581CONFIG_SERIAL_CORE=y 587CONFIG_SERIAL_CORE=y
582CONFIG_SERIAL_CORE_CONSOLE=y 588CONFIG_SERIAL_CORE_CONSOLE=y
589# CONFIG_SERIAL_JSM is not set
583CONFIG_UNIX98_PTYS=y 590CONFIG_UNIX98_PTYS=y
584CONFIG_LEGACY_PTYS=y 591CONFIG_LEGACY_PTYS=y
585CONFIG_LEGACY_PTY_COUNT=256 592CONFIG_LEGACY_PTY_COUNT=256
@@ -638,10 +645,6 @@ CONFIG_LEGACY_PTY_COUNT=256
638# 645#
639 646
640# 647#
641# Multimedia Capabilities Port drivers
642#
643
644#
645# Multimedia devices 648# Multimedia devices
646# 649#
647# CONFIG_VIDEO_DEV is not set 650# CONFIG_VIDEO_DEV is not set
@@ -659,6 +662,7 @@ CONFIG_FB=y
659# CONFIG_FB_CFB_COPYAREA is not set 662# CONFIG_FB_CFB_COPYAREA is not set
660# CONFIG_FB_CFB_IMAGEBLIT is not set 663# CONFIG_FB_CFB_IMAGEBLIT is not set
661# CONFIG_FB_MACMODES is not set 664# CONFIG_FB_MACMODES is not set
665CONFIG_FB_FIRMWARE_EDID=y
662# CONFIG_FB_MODE_HELPERS is not set 666# CONFIG_FB_MODE_HELPERS is not set
663# CONFIG_FB_TILEBLITTING is not set 667# CONFIG_FB_TILEBLITTING is not set
664# CONFIG_FB_CIRRUS is not set 668# CONFIG_FB_CIRRUS is not set
@@ -670,7 +674,6 @@ CONFIG_FB=y
670# CONFIG_FB_NVIDIA is not set 674# CONFIG_FB_NVIDIA is not set
671# CONFIG_FB_RIVA is not set 675# CONFIG_FB_RIVA is not set
672# CONFIG_FB_MATROX is not set 676# CONFIG_FB_MATROX is not set
673# CONFIG_FB_RADEON_OLD is not set
674# CONFIG_FB_RADEON is not set 677# CONFIG_FB_RADEON is not set
675# CONFIG_FB_ATY128 is not set 678# CONFIG_FB_ATY128 is not set
676# CONFIG_FB_ATY is not set 679# CONFIG_FB_ATY is not set
@@ -708,6 +711,7 @@ CONFIG_DUMMY_CONSOLE=y
708# 711#
709CONFIG_USB_ARCH_HAS_HCD=y 712CONFIG_USB_ARCH_HAS_HCD=y
710CONFIG_USB_ARCH_HAS_OHCI=y 713CONFIG_USB_ARCH_HAS_OHCI=y
714CONFIG_USB_ARCH_HAS_EHCI=y
711# CONFIG_USB is not set 715# CONFIG_USB is not set
712 716
713# 717#
@@ -725,13 +729,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
725# CONFIG_MMC is not set 729# CONFIG_MMC is not set
726 730
727# 731#
732# LED devices
733#
734# CONFIG_NEW_LEDS is not set
735
736#
737# LED drivers
738#
739
740#
741# LED Triggers
742#
743
744#
728# InfiniBand support 745# InfiniBand support
729# 746#
730# CONFIG_INFINIBAND is not set 747# CONFIG_INFINIBAND is not set
731 748
732# 749#
733# SN Devices 750# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
751#
752
753#
754# Real Time Clock
734# 755#
756# CONFIG_RTC_CLASS is not set
735 757
736# 758#
737# File systems 759# File systems
@@ -776,7 +798,6 @@ CONFIG_SYSFS=y
776# CONFIG_TMPFS is not set 798# CONFIG_TMPFS is not set
777# CONFIG_HUGETLB_PAGE is not set 799# CONFIG_HUGETLB_PAGE is not set
778CONFIG_RAMFS=y 800CONFIG_RAMFS=y
779CONFIG_RELAYFS_FS=y
780# CONFIG_CONFIGFS_FS is not set 801# CONFIG_CONFIGFS_FS is not set
781 802
782# 803#
@@ -840,6 +861,8 @@ CONFIG_MSDOS_PARTITION=y
840# CONFIG_MAGIC_SYSRQ is not set 861# CONFIG_MAGIC_SYSRQ is not set
841# CONFIG_DEBUG_KERNEL is not set 862# CONFIG_DEBUG_KERNEL is not set
842CONFIG_LOG_BUF_SHIFT=14 863CONFIG_LOG_BUF_SHIFT=14
864# CONFIG_DEBUG_FS is not set
865# CONFIG_UNWIND_INFO is not set
843CONFIG_CROSSCOMPILE=y 866CONFIG_CROSSCOMPILE=y
844CONFIG_CMDLINE="ip=any" 867CONFIG_CMDLINE="ip=any"
845 868
diff --git a/arch/mips/configs/ddb5477_defconfig b/arch/mips/configs/ddb5477_defconfig
index a0fcd44e7709..8c911b671415 100644
--- a/arch/mips/configs/ddb5477_defconfig
+++ b/arch/mips/configs/ddb5477_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:02 2006 4# Mon Apr 24 14:51:01 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -65,6 +65,8 @@ CONFIG_DDB5477=y
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_DDB5477_BUS_FREQUENCY=0 66CONFIG_DDB5477_BUS_FREQUENCY=0
67CONFIG_RWSEM_GENERIC_SPINLOCK=y 67CONFIG_RWSEM_GENERIC_SPINLOCK=y
68CONFIG_GENERIC_FIND_NEXT_BIT=y
69CONFIG_GENERIC_HWEIGHT=y
68CONFIG_GENERIC_CALIBRATE_DELAY=y 70CONFIG_GENERIC_CALIBRATE_DELAY=y
69CONFIG_DMA_NONCOHERENT=y 71CONFIG_DMA_NONCOHERENT=y
70CONFIG_DMA_NEED_PCI_MAP_STATE=y 72CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -114,7 +116,6 @@ CONFIG_PAGE_SIZE_4KB=y
114# CONFIG_PAGE_SIZE_16KB is not set 116# CONFIG_PAGE_SIZE_16KB is not set
115# CONFIG_PAGE_SIZE_64KB is not set 117# CONFIG_PAGE_SIZE_64KB is not set
116# CONFIG_MIPS_MT is not set 118# CONFIG_MIPS_MT is not set
117# CONFIG_CPU_ADVANCED is not set
118CONFIG_CPU_HAS_LLSC=y 119CONFIG_CPU_HAS_LLSC=y
119CONFIG_CPU_HAS_SYNC=y 120CONFIG_CPU_HAS_SYNC=y
120CONFIG_GENERIC_HARDIRQS=y 121CONFIG_GENERIC_HARDIRQS=y
@@ -136,7 +137,6 @@ CONFIG_PREEMPT_NONE=y
136# Code maturity level options 137# Code maturity level options
137# 138#
138CONFIG_EXPERIMENTAL=y 139CONFIG_EXPERIMENTAL=y
139CONFIG_CLEAN_COMPILE=y
140CONFIG_BROKEN_ON_SMP=y 140CONFIG_BROKEN_ON_SMP=y
141CONFIG_INIT_ENV_ARG_LIMIT=32 141CONFIG_INIT_ENV_ARG_LIMIT=32
142 142
@@ -152,6 +152,7 @@ CONFIG_SYSVIPC=y
152CONFIG_SYSCTL=y 152CONFIG_SYSCTL=y
153# CONFIG_AUDIT is not set 153# CONFIG_AUDIT is not set
154# CONFIG_IKCONFIG is not set 154# CONFIG_IKCONFIG is not set
155CONFIG_RELAY=y
155CONFIG_INITRAMFS_SOURCE="" 156CONFIG_INITRAMFS_SOURCE=""
156# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 157# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
157CONFIG_EMBEDDED=y 158CONFIG_EMBEDDED=y
@@ -165,10 +166,6 @@ CONFIG_BASE_FULL=y
165CONFIG_FUTEX=y 166CONFIG_FUTEX=y
166CONFIG_EPOLL=y 167CONFIG_EPOLL=y
167CONFIG_SHMEM=y 168CONFIG_SHMEM=y
168CONFIG_CC_ALIGN_FUNCTIONS=0
169CONFIG_CC_ALIGN_LABELS=0
170CONFIG_CC_ALIGN_LOOPS=0
171CONFIG_CC_ALIGN_JUMPS=0
172CONFIG_SLAB=y 169CONFIG_SLAB=y
173# CONFIG_TINY_SHMEM is not set 170# CONFIG_TINY_SHMEM is not set
174CONFIG_BASE_SMALL=0 171CONFIG_BASE_SMALL=0
@@ -183,6 +180,8 @@ CONFIG_BASE_SMALL=0
183# Block layer 180# Block layer
184# 181#
185# CONFIG_LBD is not set 182# CONFIG_LBD is not set
183# CONFIG_BLK_DEV_IO_TRACE is not set
184# CONFIG_LSF is not set
186 185
187# 186#
188# IO Schedulers 187# IO Schedulers
@@ -202,7 +201,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
202# 201#
203CONFIG_HW_HAS_PCI=y 202CONFIG_HW_HAS_PCI=y
204CONFIG_PCI=y 203CONFIG_PCI=y
205CONFIG_PCI_LEGACY_PROC=y
206CONFIG_MMU=y 204CONFIG_MMU=y
207 205
208# 206#
@@ -230,6 +228,7 @@ CONFIG_NET=y
230# 228#
231# Networking options 229# Networking options
232# 230#
231# CONFIG_NETDEBUG is not set
233CONFIG_PACKET=y 232CONFIG_PACKET=y
234# CONFIG_PACKET_MMAP is not set 233# CONFIG_PACKET_MMAP is not set
235CONFIG_UNIX=y 234CONFIG_UNIX=y
@@ -251,12 +250,15 @@ CONFIG_IP_PNP_BOOTP=y
251# CONFIG_INET_AH is not set 250# CONFIG_INET_AH is not set
252# CONFIG_INET_ESP is not set 251# CONFIG_INET_ESP is not set
253# CONFIG_INET_IPCOMP is not set 252# CONFIG_INET_IPCOMP is not set
254CONFIG_INET_TUNNEL=y 253# CONFIG_INET_XFRM_TUNNEL is not set
254# CONFIG_INET_TUNNEL is not set
255CONFIG_INET_DIAG=y 255CONFIG_INET_DIAG=y
256CONFIG_INET_TCP_DIAG=y 256CONFIG_INET_TCP_DIAG=y
257# CONFIG_TCP_CONG_ADVANCED is not set 257# CONFIG_TCP_CONG_ADVANCED is not set
258CONFIG_TCP_CONG_BIC=y 258CONFIG_TCP_CONG_BIC=y
259# CONFIG_IPV6 is not set 259# CONFIG_IPV6 is not set
260# CONFIG_INET6_XFRM_TUNNEL is not set
261# CONFIG_INET6_TUNNEL is not set
260# CONFIG_NETFILTER is not set 262# CONFIG_NETFILTER is not set
261 263
262# 264#
@@ -268,6 +270,11 @@ CONFIG_TCP_CONG_BIC=y
268# SCTP Configuration (EXPERIMENTAL) 270# SCTP Configuration (EXPERIMENTAL)
269# 271#
270# CONFIG_IP_SCTP is not set 272# CONFIG_IP_SCTP is not set
273
274#
275# TIPC Configuration (EXPERIMENTAL)
276#
277# CONFIG_TIPC is not set
271# CONFIG_ATM is not set 278# CONFIG_ATM is not set
272# CONFIG_BRIDGE is not set 279# CONFIG_BRIDGE is not set
273# CONFIG_VLAN_8021Q is not set 280# CONFIG_VLAN_8021Q is not set
@@ -277,11 +284,6 @@ CONFIG_TCP_CONG_BIC=y
277# CONFIG_ATALK is not set 284# CONFIG_ATALK is not set
278# CONFIG_X25 is not set 285# CONFIG_X25 is not set
279# CONFIG_LAPB is not set 286# CONFIG_LAPB is not set
280
281#
282# TIPC Configuration (EXPERIMENTAL)
283#
284# CONFIG_TIPC is not set
285# CONFIG_NET_DIVERT is not set 287# CONFIG_NET_DIVERT is not set
286# CONFIG_ECONET is not set 288# CONFIG_ECONET is not set
287# CONFIG_WAN_ROUTER is not set 289# CONFIG_WAN_ROUTER is not set
@@ -302,6 +304,9 @@ CONFIG_IEEE80211=y
302# CONFIG_IEEE80211_DEBUG is not set 304# CONFIG_IEEE80211_DEBUG is not set
303CONFIG_IEEE80211_CRYPT_WEP=y 305CONFIG_IEEE80211_CRYPT_WEP=y
304CONFIG_IEEE80211_CRYPT_CCMP=y 306CONFIG_IEEE80211_CRYPT_CCMP=y
307CONFIG_IEEE80211_SOFTMAC=y
308# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
309CONFIG_WIRELESS_EXT=y
305 310
306# 311#
307# Device Drivers 312# Device Drivers
@@ -346,7 +351,7 @@ CONFIG_PROC_EVENTS=y
346# CONFIG_BLK_DEV_NBD is not set 351# CONFIG_BLK_DEV_NBD is not set
347# CONFIG_BLK_DEV_SX8 is not set 352# CONFIG_BLK_DEV_SX8 is not set
348# CONFIG_BLK_DEV_RAM is not set 353# CONFIG_BLK_DEV_RAM is not set
349CONFIG_BLK_DEV_RAM_COUNT=16 354# CONFIG_BLK_DEV_INITRD is not set
350CONFIG_CDROM_PKTCDVD=y 355CONFIG_CDROM_PKTCDVD=y
351CONFIG_CDROM_PKTCDVD_BUFFERS=8 356CONFIG_CDROM_PKTCDVD_BUFFERS=8
352# CONFIG_CDROM_PKTCDVD_WCACHE is not set 357# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -556,6 +561,7 @@ CONFIG_HW_CONSOLE=y
556# 561#
557CONFIG_SERIAL_8250=y 562CONFIG_SERIAL_8250=y
558CONFIG_SERIAL_8250_CONSOLE=y 563CONFIG_SERIAL_8250_CONSOLE=y
564CONFIG_SERIAL_8250_PCI=y
559CONFIG_SERIAL_8250_NR_UARTS=4 565CONFIG_SERIAL_8250_NR_UARTS=4
560CONFIG_SERIAL_8250_RUNTIME_UARTS=4 566CONFIG_SERIAL_8250_RUNTIME_UARTS=4
561# CONFIG_SERIAL_8250_EXTENDED is not set 567# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -565,6 +571,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
565# 571#
566CONFIG_SERIAL_CORE=y 572CONFIG_SERIAL_CORE=y
567CONFIG_SERIAL_CORE_CONSOLE=y 573CONFIG_SERIAL_CORE_CONSOLE=y
574# CONFIG_SERIAL_JSM is not set
568CONFIG_UNIX98_PTYS=y 575CONFIG_UNIX98_PTYS=y
569CONFIG_LEGACY_PTYS=y 576CONFIG_LEGACY_PTYS=y
570CONFIG_LEGACY_PTY_COUNT=256 577CONFIG_LEGACY_PTY_COUNT=256
@@ -623,10 +630,6 @@ CONFIG_LEGACY_PTY_COUNT=256
623# 630#
624 631
625# 632#
626# Multimedia Capabilities Port drivers
627#
628
629#
630# Multimedia devices 633# Multimedia devices
631# 634#
632# CONFIG_VIDEO_DEV is not set 635# CONFIG_VIDEO_DEV is not set
@@ -657,6 +660,7 @@ CONFIG_DUMMY_CONSOLE=y
657# 660#
658CONFIG_USB_ARCH_HAS_HCD=y 661CONFIG_USB_ARCH_HAS_HCD=y
659CONFIG_USB_ARCH_HAS_OHCI=y 662CONFIG_USB_ARCH_HAS_OHCI=y
663CONFIG_USB_ARCH_HAS_EHCI=y
660# CONFIG_USB is not set 664# CONFIG_USB is not set
661 665
662# 666#
@@ -674,13 +678,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
674# CONFIG_MMC is not set 678# CONFIG_MMC is not set
675 679
676# 680#
681# LED devices
682#
683# CONFIG_NEW_LEDS is not set
684
685#
686# LED drivers
687#
688
689#
690# LED Triggers
691#
692
693#
677# InfiniBand support 694# InfiniBand support
678# 695#
679# CONFIG_INFINIBAND is not set 696# CONFIG_INFINIBAND is not set
680 697
681# 698#
682# SN Devices 699# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
700#
701
702#
703# Real Time Clock
683# 704#
705# CONFIG_RTC_CLASS is not set
684 706
685# 707#
686# File systems 708# File systems
@@ -725,7 +747,6 @@ CONFIG_SYSFS=y
725# CONFIG_TMPFS is not set 747# CONFIG_TMPFS is not set
726# CONFIG_HUGETLB_PAGE is not set 748# CONFIG_HUGETLB_PAGE is not set
727CONFIG_RAMFS=y 749CONFIG_RAMFS=y
728CONFIG_RELAYFS_FS=y
729# CONFIG_CONFIGFS_FS is not set 750# CONFIG_CONFIGFS_FS is not set
730 751
731# 752#
@@ -792,6 +813,8 @@ CONFIG_MSDOS_PARTITION=y
792# CONFIG_MAGIC_SYSRQ is not set 813# CONFIG_MAGIC_SYSRQ is not set
793# CONFIG_DEBUG_KERNEL is not set 814# CONFIG_DEBUG_KERNEL is not set
794CONFIG_LOG_BUF_SHIFT=14 815CONFIG_LOG_BUF_SHIFT=14
816# CONFIG_DEBUG_FS is not set
817# CONFIG_UNWIND_INFO is not set
795CONFIG_CROSSCOMPILE=y 818CONFIG_CROSSCOMPILE=y
796CONFIG_CMDLINE="ip=any" 819CONFIG_CMDLINE="ip=any"
797 820
diff --git a/arch/mips/configs/decstation_defconfig b/arch/mips/configs/decstation_defconfig
index 5a181eadd437..d838496e114f 100644
--- a/arch/mips/configs/decstation_defconfig
+++ b/arch/mips/configs/decstation_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:03 2006 4# Mon Apr 24 14:51:01 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -63,11 +63,13 @@ CONFIG_MACH_DECSTATION=y
63# CONFIG_TOSHIBA_JMR3927 is not set 63# CONFIG_TOSHIBA_JMR3927 is not set
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_EARLY_PRINTK=y
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 67CONFIG_RWSEM_GENERIC_SPINLOCK=y
68CONFIG_GENERIC_FIND_NEXT_BIT=y
69CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 70CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 71CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 72CONFIG_DMA_NEED_PCI_MAP_STATE=y
70CONFIG_EARLY_PRINTK=y
71# CONFIG_CPU_BIG_ENDIAN is not set 73# CONFIG_CPU_BIG_ENDIAN is not set
72CONFIG_CPU_LITTLE_ENDIAN=y 74CONFIG_CPU_LITTLE_ENDIAN=y
73CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y 75CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
@@ -113,7 +115,6 @@ CONFIG_PAGE_SIZE_4KB=y
113# CONFIG_PAGE_SIZE_16KB is not set 115# CONFIG_PAGE_SIZE_16KB is not set
114# CONFIG_PAGE_SIZE_64KB is not set 116# CONFIG_PAGE_SIZE_64KB is not set
115# CONFIG_MIPS_MT is not set 117# CONFIG_MIPS_MT is not set
116# CONFIG_CPU_ADVANCED is not set
117CONFIG_CPU_HAS_WB=y 118CONFIG_CPU_HAS_WB=y
118CONFIG_GENERIC_HARDIRQS=y 119CONFIG_GENERIC_HARDIRQS=y
119CONFIG_GENERIC_IRQ_PROBE=y 120CONFIG_GENERIC_IRQ_PROBE=y
@@ -135,7 +136,6 @@ CONFIG_PREEMPT_NONE=y
135# Code maturity level options 136# Code maturity level options
136# 137#
137CONFIG_EXPERIMENTAL=y 138CONFIG_EXPERIMENTAL=y
138CONFIG_CLEAN_COMPILE=y
139CONFIG_BROKEN_ON_SMP=y 139CONFIG_BROKEN_ON_SMP=y
140CONFIG_INIT_ENV_ARG_LIMIT=32 140CONFIG_INIT_ENV_ARG_LIMIT=32
141 141
@@ -151,6 +151,7 @@ CONFIG_SYSVIPC=y
151CONFIG_SYSCTL=y 151CONFIG_SYSCTL=y
152# CONFIG_AUDIT is not set 152# CONFIG_AUDIT is not set
153# CONFIG_IKCONFIG is not set 153# CONFIG_IKCONFIG is not set
154CONFIG_RELAY=y
154CONFIG_INITRAMFS_SOURCE="" 155CONFIG_INITRAMFS_SOURCE=""
155# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 156# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
156CONFIG_EMBEDDED=y 157CONFIG_EMBEDDED=y
@@ -165,10 +166,6 @@ CONFIG_BASE_FULL=y
165CONFIG_FUTEX=y 166CONFIG_FUTEX=y
166CONFIG_EPOLL=y 167CONFIG_EPOLL=y
167CONFIG_SHMEM=y 168CONFIG_SHMEM=y
168CONFIG_CC_ALIGN_FUNCTIONS=0
169CONFIG_CC_ALIGN_LABELS=0
170CONFIG_CC_ALIGN_LOOPS=0
171CONFIG_CC_ALIGN_JUMPS=0
172CONFIG_SLAB=y 169CONFIG_SLAB=y
173# CONFIG_TINY_SHMEM is not set 170# CONFIG_TINY_SHMEM is not set
174CONFIG_BASE_SMALL=0 171CONFIG_BASE_SMALL=0
@@ -180,7 +177,6 @@ CONFIG_BASE_SMALL=0
180CONFIG_MODULES=y 177CONFIG_MODULES=y
181CONFIG_MODULE_UNLOAD=y 178CONFIG_MODULE_UNLOAD=y
182# CONFIG_MODULE_FORCE_UNLOAD is not set 179# CONFIG_MODULE_FORCE_UNLOAD is not set
183CONFIG_OBSOLETE_MODPARM=y
184# CONFIG_MODVERSIONS is not set 180# CONFIG_MODVERSIONS is not set
185CONFIG_MODULE_SRCVERSION_ALL=y 181CONFIG_MODULE_SRCVERSION_ALL=y
186CONFIG_KMOD=y 182CONFIG_KMOD=y
@@ -189,6 +185,8 @@ CONFIG_KMOD=y
189# Block layer 185# Block layer
190# 186#
191# CONFIG_LBD is not set 187# CONFIG_LBD is not set
188# CONFIG_BLK_DEV_IO_TRACE is not set
189# CONFIG_LSF is not set
192 190
193# 191#
194# IO Schedulers 192# IO Schedulers
@@ -233,11 +231,10 @@ CONFIG_NET=y
233# 231#
234# Networking options 232# Networking options
235# 233#
234# CONFIG_NETDEBUG is not set
236CONFIG_PACKET=y 235CONFIG_PACKET=y
237CONFIG_PACKET_MMAP=y 236CONFIG_PACKET_MMAP=y
238CONFIG_UNIX=y 237CONFIG_UNIX=y
239CONFIG_XFRM=y
240CONFIG_XFRM_USER=m
241# CONFIG_NET_KEY is not set 238# CONFIG_NET_KEY is not set
242CONFIG_INET=y 239CONFIG_INET=y
243# CONFIG_IP_MULTICAST is not set 240# CONFIG_IP_MULTICAST is not set
@@ -254,12 +251,15 @@ CONFIG_IP_PNP_BOOTP=y
254# CONFIG_INET_AH is not set 251# CONFIG_INET_AH is not set
255# CONFIG_INET_ESP is not set 252# CONFIG_INET_ESP is not set
256# CONFIG_INET_IPCOMP is not set 253# CONFIG_INET_IPCOMP is not set
257CONFIG_INET_TUNNEL=m 254# CONFIG_INET_XFRM_TUNNEL is not set
255# CONFIG_INET_TUNNEL is not set
258CONFIG_INET_DIAG=y 256CONFIG_INET_DIAG=y
259CONFIG_INET_TCP_DIAG=y 257CONFIG_INET_TCP_DIAG=y
260# CONFIG_TCP_CONG_ADVANCED is not set 258# CONFIG_TCP_CONG_ADVANCED is not set
261CONFIG_TCP_CONG_BIC=y 259CONFIG_TCP_CONG_BIC=y
262# CONFIG_IPV6 is not set 260# CONFIG_IPV6 is not set
261# CONFIG_INET6_XFRM_TUNNEL is not set
262# CONFIG_INET6_TUNNEL is not set
263# CONFIG_NETFILTER is not set 263# CONFIG_NETFILTER is not set
264 264
265# 265#
@@ -271,6 +271,11 @@ CONFIG_TCP_CONG_BIC=y
271# SCTP Configuration (EXPERIMENTAL) 271# SCTP Configuration (EXPERIMENTAL)
272# 272#
273# CONFIG_IP_SCTP is not set 273# CONFIG_IP_SCTP is not set
274
275#
276# TIPC Configuration (EXPERIMENTAL)
277#
278# CONFIG_TIPC is not set
274# CONFIG_ATM is not set 279# CONFIG_ATM is not set
275# CONFIG_BRIDGE is not set 280# CONFIG_BRIDGE is not set
276# CONFIG_VLAN_8021Q is not set 281# CONFIG_VLAN_8021Q is not set
@@ -280,11 +285,6 @@ CONFIG_TCP_CONG_BIC=y
280# CONFIG_ATALK is not set 285# CONFIG_ATALK is not set
281# CONFIG_X25 is not set 286# CONFIG_X25 is not set
282# CONFIG_LAPB is not set 287# CONFIG_LAPB is not set
283
284#
285# TIPC Configuration (EXPERIMENTAL)
286#
287# CONFIG_TIPC is not set
288# CONFIG_NET_DIVERT is not set 288# CONFIG_NET_DIVERT is not set
289# CONFIG_ECONET is not set 289# CONFIG_ECONET is not set
290# CONFIG_WAN_ROUTER is not set 290# CONFIG_WAN_ROUTER is not set
@@ -305,6 +305,9 @@ CONFIG_IEEE80211=m
305# CONFIG_IEEE80211_DEBUG is not set 305# CONFIG_IEEE80211_DEBUG is not set
306CONFIG_IEEE80211_CRYPT_WEP=m 306CONFIG_IEEE80211_CRYPT_WEP=m
307CONFIG_IEEE80211_CRYPT_CCMP=m 307CONFIG_IEEE80211_CRYPT_CCMP=m
308CONFIG_IEEE80211_SOFTMAC=m
309# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
310CONFIG_WIRELESS_EXT=y
308 311
309# 312#
310# Device Drivers 313# Device Drivers
@@ -345,7 +348,7 @@ CONFIG_BLK_DEV_LOOP=m
345# CONFIG_BLK_DEV_CRYPTOLOOP is not set 348# CONFIG_BLK_DEV_CRYPTOLOOP is not set
346# CONFIG_BLK_DEV_NBD is not set 349# CONFIG_BLK_DEV_NBD is not set
347# CONFIG_BLK_DEV_RAM is not set 350# CONFIG_BLK_DEV_RAM is not set
348CONFIG_BLK_DEV_RAM_COUNT=16 351# CONFIG_BLK_DEV_INITRD is not set
349# CONFIG_CDROM_PKTCDVD is not set 352# CONFIG_CDROM_PKTCDVD is not set
350# CONFIG_ATA_OVER_ETH is not set 353# CONFIG_ATA_OVER_ETH is not set
351 354
@@ -567,10 +570,6 @@ CONFIG_RTC=y
567# 570#
568 571
569# 572#
570# Multimedia Capabilities Port drivers
571#
572
573#
574# Multimedia devices 573# Multimedia devices
575# 574#
576# CONFIG_VIDEO_DEV is not set 575# CONFIG_VIDEO_DEV is not set
@@ -588,6 +587,7 @@ CONFIG_FB_CFB_FILLRECT=y
588CONFIG_FB_CFB_COPYAREA=y 587CONFIG_FB_CFB_COPYAREA=y
589CONFIG_FB_CFB_IMAGEBLIT=y 588CONFIG_FB_CFB_IMAGEBLIT=y
590# CONFIG_FB_MACMODES is not set 589# CONFIG_FB_MACMODES is not set
590CONFIG_FB_FIRMWARE_EDID=y
591# CONFIG_FB_MODE_HELPERS is not set 591# CONFIG_FB_MODE_HELPERS is not set
592# CONFIG_FB_TILEBLITTING is not set 592# CONFIG_FB_TILEBLITTING is not set
593# CONFIG_FB_S1D13XXX is not set 593# CONFIG_FB_S1D13XXX is not set
@@ -617,6 +617,7 @@ CONFIG_LOGO_DEC_CLUT224=y
617# 617#
618# CONFIG_USB_ARCH_HAS_HCD is not set 618# CONFIG_USB_ARCH_HAS_HCD is not set
619# CONFIG_USB_ARCH_HAS_OHCI is not set 619# CONFIG_USB_ARCH_HAS_OHCI is not set
620# CONFIG_USB_ARCH_HAS_EHCI is not set
620 621
621# 622#
622# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 623# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -633,12 +634,30 @@ CONFIG_LOGO_DEC_CLUT224=y
633# CONFIG_MMC is not set 634# CONFIG_MMC is not set
634 635
635# 636#
637# LED devices
638#
639# CONFIG_NEW_LEDS is not set
640
641#
642# LED drivers
643#
644
645#
646# LED Triggers
647#
648
649#
636# InfiniBand support 650# InfiniBand support
637# 651#
638 652
639# 653#
640# SN Devices 654# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
655#
656
657#
658# Real Time Clock
641# 659#
660# CONFIG_RTC_CLASS is not set
642 661
643# 662#
644# File systems 663# File systems
@@ -686,7 +705,6 @@ CONFIG_SYSFS=y
686CONFIG_TMPFS=y 705CONFIG_TMPFS=y
687# CONFIG_HUGETLB_PAGE is not set 706# CONFIG_HUGETLB_PAGE is not set
688CONFIG_RAMFS=y 707CONFIG_RAMFS=y
689CONFIG_RELAYFS_FS=m
690# CONFIG_CONFIGFS_FS is not set 708# CONFIG_CONFIGFS_FS is not set
691 709
692# 710#
@@ -705,7 +723,6 @@ CONFIG_RELAYFS_FS=m
705# CONFIG_QNX4FS_FS is not set 723# CONFIG_QNX4FS_FS is not set
706# CONFIG_SYSV_FS is not set 724# CONFIG_SYSV_FS is not set
707CONFIG_UFS_FS=y 725CONFIG_UFS_FS=y
708CONFIG_UFS_FS_WRITE=y
709 726
710# 727#
711# Network File Systems 728# Network File Systems
diff --git a/arch/mips/configs/e55_defconfig b/arch/mips/configs/e55_defconfig
index 8fbfc06a6a2a..0760f4318910 100644
--- a/arch/mips/configs/e55_defconfig
+++ b/arch/mips/configs/e55_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:04 2006 4# Tue Apr 25 00:08:20 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -70,6 +70,8 @@ CONFIG_CASIO_E55=y
70# CONFIG_VICTOR_MPC30X is not set 70# CONFIG_VICTOR_MPC30X is not set
71# CONFIG_ZAO_CAPCELLA is not set 71# CONFIG_ZAO_CAPCELLA is not set
72CONFIG_RWSEM_GENERIC_SPINLOCK=y 72CONFIG_RWSEM_GENERIC_SPINLOCK=y
73CONFIG_GENERIC_FIND_NEXT_BIT=y
74CONFIG_GENERIC_HWEIGHT=y
73CONFIG_GENERIC_CALIBRATE_DELAY=y 75CONFIG_GENERIC_CALIBRATE_DELAY=y
74CONFIG_DMA_NONCOHERENT=y 76CONFIG_DMA_NONCOHERENT=y
75CONFIG_DMA_NEED_PCI_MAP_STATE=y 77CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -88,7 +90,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
88# CONFIG_CPU_MIPS64_R2 is not set 90# CONFIG_CPU_MIPS64_R2 is not set
89# CONFIG_CPU_R3000 is not set 91# CONFIG_CPU_R3000 is not set
90# CONFIG_CPU_TX39XX is not set 92# CONFIG_CPU_TX39XX is not set
91# CONFIG_CPU_VR41XX is not set 93CONFIG_CPU_VR41XX=y
92# CONFIG_CPU_R4300 is not set 94# CONFIG_CPU_R4300 is not set
93# CONFIG_CPU_R4X00 is not set 95# CONFIG_CPU_R4X00 is not set
94# CONFIG_CPU_TX49XX is not set 96# CONFIG_CPU_TX49XX is not set
@@ -101,18 +103,21 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
101# CONFIG_CPU_RM7000 is not set 103# CONFIG_CPU_RM7000 is not set
102# CONFIG_CPU_RM9000 is not set 104# CONFIG_CPU_RM9000 is not set
103# CONFIG_CPU_SB1 is not set 105# CONFIG_CPU_SB1 is not set
106CONFIG_SYS_HAS_CPU_VR41XX=y
107CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
108CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
109CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
104 110
105# 111#
106# Kernel type 112# Kernel type
107# 113#
108# CONFIG_32BIT is not set 114CONFIG_32BIT=y
109# CONFIG_64BIT is not set 115# CONFIG_64BIT is not set
110CONFIG_PAGE_SIZE_4KB=y 116CONFIG_PAGE_SIZE_4KB=y
111# CONFIG_PAGE_SIZE_8KB is not set 117# CONFIG_PAGE_SIZE_8KB is not set
112# CONFIG_PAGE_SIZE_16KB is not set 118# CONFIG_PAGE_SIZE_16KB is not set
113# CONFIG_PAGE_SIZE_64KB is not set 119# CONFIG_PAGE_SIZE_64KB is not set
114# CONFIG_MIPS_MT is not set 120# CONFIG_MIPS_MT is not set
115CONFIG_CPU_HAS_LLSC=y
116CONFIG_CPU_HAS_SYNC=y 121CONFIG_CPU_HAS_SYNC=y
117CONFIG_GENERIC_HARDIRQS=y 122CONFIG_GENERIC_HARDIRQS=y
118CONFIG_GENERIC_IRQ_PROBE=y 123CONFIG_GENERIC_IRQ_PROBE=y
@@ -133,7 +138,6 @@ CONFIG_PREEMPT_NONE=y
133# Code maturity level options 138# Code maturity level options
134# 139#
135CONFIG_EXPERIMENTAL=y 140CONFIG_EXPERIMENTAL=y
136CONFIG_CLEAN_COMPILE=y
137CONFIG_BROKEN_ON_SMP=y 141CONFIG_BROKEN_ON_SMP=y
138CONFIG_INIT_ENV_ARG_LIMIT=32 142CONFIG_INIT_ENV_ARG_LIMIT=32
139 143
@@ -144,11 +148,10 @@ CONFIG_LOCALVERSION=""
144CONFIG_LOCALVERSION_AUTO=y 148CONFIG_LOCALVERSION_AUTO=y
145CONFIG_SWAP=y 149CONFIG_SWAP=y
146CONFIG_SYSVIPC=y 150CONFIG_SYSVIPC=y
147# CONFIG_POSIX_MQUEUE is not set
148# CONFIG_BSD_PROCESS_ACCT is not set 151# CONFIG_BSD_PROCESS_ACCT is not set
149CONFIG_SYSCTL=y 152CONFIG_SYSCTL=y
150# CONFIG_AUDIT is not set
151# CONFIG_IKCONFIG is not set 153# CONFIG_IKCONFIG is not set
154# CONFIG_RELAY is not set
152CONFIG_INITRAMFS_SOURCE="" 155CONFIG_INITRAMFS_SOURCE=""
153# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 156# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
154CONFIG_EMBEDDED=y 157CONFIG_EMBEDDED=y
@@ -162,10 +165,6 @@ CONFIG_BASE_FULL=y
162CONFIG_FUTEX=y 165CONFIG_FUTEX=y
163CONFIG_EPOLL=y 166CONFIG_EPOLL=y
164CONFIG_SHMEM=y 167CONFIG_SHMEM=y
165CONFIG_CC_ALIGN_FUNCTIONS=0
166CONFIG_CC_ALIGN_LABELS=0
167CONFIG_CC_ALIGN_LOOPS=0
168CONFIG_CC_ALIGN_JUMPS=0
169CONFIG_SLAB=y 168CONFIG_SLAB=y
170# CONFIG_TINY_SHMEM is not set 169# CONFIG_TINY_SHMEM is not set
171CONFIG_BASE_SMALL=0 170CONFIG_BASE_SMALL=0
@@ -177,7 +176,6 @@ CONFIG_BASE_SMALL=0
177CONFIG_MODULES=y 176CONFIG_MODULES=y
178CONFIG_MODULE_UNLOAD=y 177CONFIG_MODULE_UNLOAD=y
179# CONFIG_MODULE_FORCE_UNLOAD is not set 178# CONFIG_MODULE_FORCE_UNLOAD is not set
180CONFIG_OBSOLETE_MODPARM=y
181CONFIG_MODVERSIONS=y 179CONFIG_MODVERSIONS=y
182CONFIG_MODULE_SRCVERSION_ALL=y 180CONFIG_MODULE_SRCVERSION_ALL=y
183CONFIG_KMOD=y 181CONFIG_KMOD=y
@@ -185,6 +183,9 @@ CONFIG_KMOD=y
185# 183#
186# Block layer 184# Block layer
187# 185#
186# CONFIG_LBD is not set
187# CONFIG_BLK_DEV_IO_TRACE is not set
188# CONFIG_LSF is not set
188 189
189# 190#
190# IO Schedulers 191# IO Schedulers
@@ -219,85 +220,12 @@ CONFIG_MMU=y
219# 220#
220CONFIG_BINFMT_ELF=y 221CONFIG_BINFMT_ELF=y
221# CONFIG_BINFMT_MISC is not set 222# CONFIG_BINFMT_MISC is not set
223CONFIG_TRAD_SIGNALS=y
222 224
223# 225#
224# Networking 226# Networking
225# 227#
226CONFIG_NET=y 228# CONFIG_NET is not set
227
228#
229# Networking options
230#
231CONFIG_PACKET=y
232CONFIG_PACKET_MMAP=y
233CONFIG_UNIX=y
234CONFIG_XFRM=y
235CONFIG_XFRM_USER=m
236CONFIG_NET_KEY=y
237CONFIG_INET=y
238CONFIG_IP_MULTICAST=y
239# CONFIG_IP_ADVANCED_ROUTER is not set
240CONFIG_IP_FIB_HASH=y
241# CONFIG_IP_PNP is not set
242# CONFIG_NET_IPIP is not set
243# CONFIG_NET_IPGRE is not set
244# CONFIG_IP_MROUTE is not set
245# CONFIG_ARPD is not set
246# CONFIG_SYN_COOKIES is not set
247# CONFIG_INET_AH is not set
248# CONFIG_INET_ESP is not set
249# CONFIG_INET_IPCOMP is not set
250CONFIG_INET_TUNNEL=m
251CONFIG_INET_DIAG=y
252CONFIG_INET_TCP_DIAG=y
253# CONFIG_TCP_CONG_ADVANCED is not set
254CONFIG_TCP_CONG_BIC=y
255# CONFIG_IPV6 is not set
256# CONFIG_NETFILTER is not set
257
258#
259# DCCP Configuration (EXPERIMENTAL)
260#
261# CONFIG_IP_DCCP is not set
262
263#
264# SCTP Configuration (EXPERIMENTAL)
265#
266# CONFIG_IP_SCTP is not set
267# CONFIG_ATM is not set
268# CONFIG_BRIDGE is not set
269# CONFIG_VLAN_8021Q is not set
270# CONFIG_DECNET is not set
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
277#
278# TIPC Configuration (EXPERIMENTAL)
279#
280# CONFIG_TIPC is not set
281# CONFIG_NET_DIVERT is not set
282# CONFIG_ECONET is not set
283# CONFIG_WAN_ROUTER is not set
284
285#
286# QoS and/or fair queueing
287#
288# CONFIG_NET_SCHED is not set
289
290#
291# Network testing
292#
293# CONFIG_NET_PKTGEN is not set
294# CONFIG_HAMRADIO is not set
295# CONFIG_IRDA is not set
296# CONFIG_BT is not set
297CONFIG_IEEE80211=m
298# CONFIG_IEEE80211_DEBUG is not set
299CONFIG_IEEE80211_CRYPT_WEP=m
300CONFIG_IEEE80211_CRYPT_CCMP=m
301 229
302# 230#
303# Device Drivers 231# Device Drivers
@@ -313,7 +241,6 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
313# 241#
314# Connector - unified userspace <-> kernelspace linker 242# Connector - unified userspace <-> kernelspace linker
315# 243#
316CONFIG_CONNECTOR=m
317 244
318# 245#
319# Memory Technology Devices (MTD) 246# Memory Technology Devices (MTD)
@@ -335,11 +262,11 @@ CONFIG_CONNECTOR=m
335# 262#
336# CONFIG_BLK_DEV_COW_COMMON is not set 263# CONFIG_BLK_DEV_COW_COMMON is not set
337# CONFIG_BLK_DEV_LOOP is not set 264# CONFIG_BLK_DEV_LOOP is not set
338# CONFIG_BLK_DEV_NBD is not set 265CONFIG_BLK_DEV_RAM=m
339# CONFIG_BLK_DEV_RAM is not set
340CONFIG_BLK_DEV_RAM_COUNT=16 266CONFIG_BLK_DEV_RAM_COUNT=16
267CONFIG_BLK_DEV_RAM_SIZE=4096
268# CONFIG_BLK_DEV_INITRD is not set
341# CONFIG_CDROM_PKTCDVD is not set 269# CONFIG_CDROM_PKTCDVD is not set
342# CONFIG_ATA_OVER_ETH is not set
343 270
344# 271#
345# ATA/ATAPI/MFM/RLL support 272# ATA/ATAPI/MFM/RLL support
@@ -398,81 +325,8 @@ CONFIG_IDE_GENERIC=y
398# 325#
399 326
400# 327#
401# Network device support
402#
403CONFIG_NETDEVICES=y
404# CONFIG_DUMMY is not set
405# CONFIG_BONDING is not set
406# CONFIG_EQUALIZER is not set
407# CONFIG_TUN is not set
408
409#
410# ARCnet devices
411#
412# CONFIG_ARCNET is not set
413
414#
415# PHY device support
416#
417CONFIG_PHYLIB=m
418
419#
420# MII PHY device drivers
421#
422CONFIG_MARVELL_PHY=m
423CONFIG_DAVICOM_PHY=m
424CONFIG_QSEMI_PHY=m
425CONFIG_LXT_PHY=m
426CONFIG_CICADA_PHY=m
427
428#
429# Ethernet (10 or 100Mbit)
430#
431CONFIG_NET_ETHERNET=y
432# CONFIG_MII is not set
433# CONFIG_NET_VENDOR_3COM is not set
434# CONFIG_NET_VENDOR_SMC is not set
435# CONFIG_DM9000 is not set
436# CONFIG_NET_VENDOR_RACAL is not set
437# CONFIG_AT1700 is not set
438# CONFIG_DEPCA is not set
439# CONFIG_HP100 is not set
440# CONFIG_NET_ISA is not set
441# CONFIG_NET_PCI is not set
442
443#
444# Ethernet (1000 Mbit)
445#
446
447#
448# Ethernet (10000 Mbit)
449#
450
451#
452# Token Ring devices
453#
454# CONFIG_TR is not set
455
456#
457# Wireless LAN (non-hamradio)
458#
459# CONFIG_NET_RADIO is not set
460
461#
462# Wan interfaces
463#
464# CONFIG_WAN is not set
465# CONFIG_PPP is not set
466# CONFIG_SLIP is not set
467# CONFIG_SHAPER is not set
468# CONFIG_NETCONSOLE is not set
469# CONFIG_NETPOLL is not set
470# CONFIG_NET_POLL_CONTROLLER is not set
471
472#
473# ISDN subsystem 328# ISDN subsystem
474# 329#
475# CONFIG_ISDN is not set
476 330
477# 331#
478# Telephony Support 332# Telephony Support
@@ -508,11 +362,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
508# 362#
509# Hardware I/O ports 363# Hardware I/O ports
510# 364#
511CONFIG_SERIO=y 365# CONFIG_SERIO is not set
512# CONFIG_SERIO_I8042 is not set
513CONFIG_SERIO_SERPORT=y
514# CONFIG_SERIO_LIBPS2 is not set
515CONFIG_SERIO_RAW=m
516# CONFIG_GAMEPORT is not set 366# CONFIG_GAMEPORT is not set
517 367
518# 368#
@@ -531,6 +381,10 @@ CONFIG_HW_CONSOLE=y
531# 381#
532# Non-8250 serial port support 382# Non-8250 serial port support
533# 383#
384CONFIG_SERIAL_CORE=y
385CONFIG_SERIAL_CORE_CONSOLE=y
386CONFIG_SERIAL_VR41XX=y
387CONFIG_SERIAL_VR41XX_CONSOLE=y
534CONFIG_UNIX98_PTYS=y 388CONFIG_UNIX98_PTYS=y
535CONFIG_LEGACY_PTYS=y 389CONFIG_LEGACY_PTYS=y
536CONFIG_LEGACY_PTY_COUNT=256 390CONFIG_LEGACY_PTY_COUNT=256
@@ -565,6 +419,7 @@ CONFIG_WATCHDOG=y
565# 419#
566# Ftape, the floppy tape device driver 420# Ftape, the floppy tape device driver
567# 421#
422CONFIG_GPIO_VR41XX=y
568# CONFIG_RAW_DRIVER is not set 423# CONFIG_RAW_DRIVER is not set
569 424
570# 425#
@@ -600,10 +455,6 @@ CONFIG_WATCHDOG=y
600# 455#
601 456
602# 457#
603# Multimedia Capabilities Port drivers
604#
605
606#
607# Multimedia devices 458# Multimedia devices
608# 459#
609# CONFIG_VIDEO_DEV is not set 460# CONFIG_VIDEO_DEV is not set
@@ -611,7 +462,6 @@ CONFIG_WATCHDOG=y
611# 462#
612# Digital Video Broadcasting Devices 463# Digital Video Broadcasting Devices
613# 464#
614# CONFIG_DVB is not set
615 465
616# 466#
617# Graphics support 467# Graphics support
@@ -635,6 +485,7 @@ CONFIG_DUMMY_CONSOLE=y
635# 485#
636# CONFIG_USB_ARCH_HAS_HCD is not set 486# CONFIG_USB_ARCH_HAS_HCD is not set
637# CONFIG_USB_ARCH_HAS_OHCI is not set 487# CONFIG_USB_ARCH_HAS_OHCI is not set
488# CONFIG_USB_ARCH_HAS_EHCI is not set
638 489
639# 490#
640# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 491# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -651,12 +502,30 @@ CONFIG_DUMMY_CONSOLE=y
651# CONFIG_MMC is not set 502# CONFIG_MMC is not set
652 503
653# 504#
505# LED devices
506#
507# CONFIG_NEW_LEDS is not set
508
509#
510# LED drivers
511#
512
513#
514# LED Triggers
515#
516
517#
654# InfiniBand support 518# InfiniBand support
655# 519#
656 520
657# 521#
658# SN Devices 522# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
523#
524
525#
526# Real Time Clock
659# 527#
528# CONFIG_RTC_CLASS is not set
660 529
661# 530#
662# File systems 531# File systems
@@ -669,13 +538,12 @@ CONFIG_EXT2_FS=y
669# CONFIG_JFS_FS is not set 538# CONFIG_JFS_FS is not set
670# CONFIG_FS_POSIX_ACL is not set 539# CONFIG_FS_POSIX_ACL is not set
671# CONFIG_XFS_FS is not set 540# CONFIG_XFS_FS is not set
672# CONFIG_OCFS2_FS is not set
673# CONFIG_MINIX_FS is not set 541# CONFIG_MINIX_FS is not set
674# CONFIG_ROMFS_FS is not set 542# CONFIG_ROMFS_FS is not set
675CONFIG_INOTIFY=y 543CONFIG_INOTIFY=y
676# CONFIG_QUOTA is not set 544# CONFIG_QUOTA is not set
677CONFIG_DNOTIFY=y 545CONFIG_DNOTIFY=y
678CONFIG_AUTOFS_FS=y 546# CONFIG_AUTOFS_FS is not set
679CONFIG_AUTOFS4_FS=y 547CONFIG_AUTOFS4_FS=y
680CONFIG_FUSE_FS=m 548CONFIG_FUSE_FS=m
681 549
@@ -698,10 +566,9 @@ CONFIG_FUSE_FS=m
698CONFIG_PROC_FS=y 566CONFIG_PROC_FS=y
699CONFIG_PROC_KCORE=y 567CONFIG_PROC_KCORE=y
700CONFIG_SYSFS=y 568CONFIG_SYSFS=y
701# CONFIG_TMPFS is not set 569CONFIG_TMPFS=y
702# CONFIG_HUGETLB_PAGE is not set 570# CONFIG_HUGETLB_PAGE is not set
703CONFIG_RAMFS=y 571CONFIG_RAMFS=y
704CONFIG_RELAYFS_FS=m
705# CONFIG_CONFIGFS_FS is not set 572# CONFIG_CONFIGFS_FS is not set
706 573
707# 574#
@@ -722,29 +589,6 @@ CONFIG_RELAYFS_FS=m
722# CONFIG_UFS_FS is not set 589# CONFIG_UFS_FS is not set
723 590
724# 591#
725# Network File Systems
726#
727CONFIG_NFS_FS=m
728# CONFIG_NFS_V3 is not set
729# CONFIG_NFS_V4 is not set
730# CONFIG_NFS_DIRECTIO is not set
731CONFIG_NFSD=m
732# CONFIG_NFSD_V3 is not set
733# CONFIG_NFSD_TCP is not set
734CONFIG_LOCKD=m
735CONFIG_EXPORTFS=m
736CONFIG_NFS_COMMON=y
737CONFIG_SUNRPC=m
738# CONFIG_RPCSEC_GSS_KRB5 is not set
739# CONFIG_RPCSEC_GSS_SPKM3 is not set
740# CONFIG_SMB_FS is not set
741# CONFIG_CIFS is not set
742# CONFIG_NCP_FS is not set
743# CONFIG_CODA_FS is not set
744# CONFIG_AFS_FS is not set
745# CONFIG_9P_FS is not set
746
747#
748# Partition Types 592# Partition Types
749# 593#
750# CONFIG_PARTITION_ADVANCED is not set 594# CONFIG_PARTITION_ADVANCED is not set
@@ -767,44 +611,20 @@ CONFIG_MSDOS_PARTITION=y
767# CONFIG_MAGIC_SYSRQ is not set 611# CONFIG_MAGIC_SYSRQ is not set
768# CONFIG_DEBUG_KERNEL is not set 612# CONFIG_DEBUG_KERNEL is not set
769CONFIG_LOG_BUF_SHIFT=14 613CONFIG_LOG_BUF_SHIFT=14
614# CONFIG_DEBUG_FS is not set
770CONFIG_CROSSCOMPILE=y 615CONFIG_CROSSCOMPILE=y
771CONFIG_CMDLINE="console=ttyVR0,19200 mem=8M" 616CONFIG_CMDLINE="console=ttyVR0,19200 mem=8M"
772 617
773# 618#
774# Security options 619# Security options
775# 620#
776CONFIG_KEYS=y 621# CONFIG_KEYS is not set
777CONFIG_KEYS_DEBUG_PROC_KEYS=y
778# CONFIG_SECURITY is not set 622# CONFIG_SECURITY is not set
779 623
780# 624#
781# Cryptographic options 625# Cryptographic options
782# 626#
783CONFIG_CRYPTO=y 627# CONFIG_CRYPTO is not set
784CONFIG_CRYPTO_HMAC=y
785CONFIG_CRYPTO_NULL=m
786CONFIG_CRYPTO_MD4=m
787CONFIG_CRYPTO_MD5=m
788CONFIG_CRYPTO_SHA1=m
789CONFIG_CRYPTO_SHA256=m
790CONFIG_CRYPTO_SHA512=m
791CONFIG_CRYPTO_WP512=m
792CONFIG_CRYPTO_TGR192=m
793CONFIG_CRYPTO_DES=m
794CONFIG_CRYPTO_BLOWFISH=m
795CONFIG_CRYPTO_TWOFISH=m
796CONFIG_CRYPTO_SERPENT=m
797CONFIG_CRYPTO_AES=m
798CONFIG_CRYPTO_CAST5=m
799CONFIG_CRYPTO_CAST6=m
800CONFIG_CRYPTO_TEA=m
801CONFIG_CRYPTO_ARC4=m
802CONFIG_CRYPTO_KHAZAD=m
803CONFIG_CRYPTO_ANUBIS=m
804CONFIG_CRYPTO_DEFLATE=m
805CONFIG_CRYPTO_MICHAEL_MIC=m
806CONFIG_CRYPTO_CRC32C=m
807# CONFIG_CRYPTO_TEST is not set
808 628
809# 629#
810# Hardware crypto devices 630# Hardware crypto devices
@@ -814,8 +634,6 @@ CONFIG_CRYPTO_CRC32C=m
814# Library routines 634# Library routines
815# 635#
816# CONFIG_CRC_CCITT is not set 636# CONFIG_CRC_CCITT is not set
817CONFIG_CRC16=m 637# CONFIG_CRC16 is not set
818CONFIG_CRC32=m 638# CONFIG_CRC32 is not set
819CONFIG_LIBCRC32C=m 639# CONFIG_LIBCRC32C is not set
820CONFIG_ZLIB_INFLATE=m
821CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/ev64120_defconfig b/arch/mips/configs/ev64120_defconfig
index f2d43be69007..7067f608b22c 100644
--- a/arch/mips/configs/ev64120_defconfig
+++ b/arch/mips/configs/ev64120_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:05 2006 4# Mon Apr 24 14:51:02 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -65,6 +65,8 @@ CONFIG_MIPS_EV64120=y
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66# CONFIG_EVB_PCI1 is not set 66# CONFIG_EVB_PCI1 is not set
67CONFIG_RWSEM_GENERIC_SPINLOCK=y 67CONFIG_RWSEM_GENERIC_SPINLOCK=y
68CONFIG_GENERIC_FIND_NEXT_BIT=y
69CONFIG_GENERIC_HWEIGHT=y
68CONFIG_GENERIC_CALIBRATE_DELAY=y 70CONFIG_GENERIC_CALIBRATE_DELAY=y
69CONFIG_DMA_NONCOHERENT=y 71CONFIG_DMA_NONCOHERENT=y
70CONFIG_DMA_NEED_PCI_MAP_STATE=y 72CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -116,7 +118,6 @@ CONFIG_PAGE_SIZE_4KB=y
116# CONFIG_PAGE_SIZE_64KB is not set 118# CONFIG_PAGE_SIZE_64KB is not set
117# CONFIG_MIPS_MT is not set 119# CONFIG_MIPS_MT is not set
118# CONFIG_64BIT_PHYS_ADDR is not set 120# CONFIG_64BIT_PHYS_ADDR is not set
119# CONFIG_CPU_ADVANCED is not set
120CONFIG_CPU_HAS_LLSC=y 121CONFIG_CPU_HAS_LLSC=y
121CONFIG_CPU_HAS_SYNC=y 122CONFIG_CPU_HAS_SYNC=y
122CONFIG_GENERIC_HARDIRQS=y 123CONFIG_GENERIC_HARDIRQS=y
@@ -138,7 +139,6 @@ CONFIG_PREEMPT_NONE=y
138# Code maturity level options 139# Code maturity level options
139# 140#
140CONFIG_EXPERIMENTAL=y 141CONFIG_EXPERIMENTAL=y
141CONFIG_CLEAN_COMPILE=y
142CONFIG_BROKEN_ON_SMP=y 142CONFIG_BROKEN_ON_SMP=y
143CONFIG_INIT_ENV_ARG_LIMIT=32 143CONFIG_INIT_ENV_ARG_LIMIT=32
144 144
@@ -154,6 +154,7 @@ CONFIG_SYSVIPC=y
154CONFIG_SYSCTL=y 154CONFIG_SYSCTL=y
155# CONFIG_AUDIT is not set 155# CONFIG_AUDIT is not set
156# CONFIG_IKCONFIG is not set 156# CONFIG_IKCONFIG is not set
157CONFIG_RELAY=y
157CONFIG_INITRAMFS_SOURCE="" 158CONFIG_INITRAMFS_SOURCE=""
158# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 159# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
159CONFIG_EMBEDDED=y 160CONFIG_EMBEDDED=y
@@ -167,10 +168,6 @@ CONFIG_BASE_FULL=y
167CONFIG_FUTEX=y 168CONFIG_FUTEX=y
168CONFIG_EPOLL=y 169CONFIG_EPOLL=y
169CONFIG_SHMEM=y 170CONFIG_SHMEM=y
170CONFIG_CC_ALIGN_FUNCTIONS=0
171CONFIG_CC_ALIGN_LABELS=0
172CONFIG_CC_ALIGN_LOOPS=0
173CONFIG_CC_ALIGN_JUMPS=0
174CONFIG_SLAB=y 171CONFIG_SLAB=y
175# CONFIG_TINY_SHMEM is not set 172# CONFIG_TINY_SHMEM is not set
176CONFIG_BASE_SMALL=0 173CONFIG_BASE_SMALL=0
@@ -182,7 +179,6 @@ CONFIG_BASE_SMALL=0
182CONFIG_MODULES=y 179CONFIG_MODULES=y
183CONFIG_MODULE_UNLOAD=y 180CONFIG_MODULE_UNLOAD=y
184# CONFIG_MODULE_FORCE_UNLOAD is not set 181# CONFIG_MODULE_FORCE_UNLOAD is not set
185CONFIG_OBSOLETE_MODPARM=y
186CONFIG_MODVERSIONS=y 182CONFIG_MODVERSIONS=y
187CONFIG_MODULE_SRCVERSION_ALL=y 183CONFIG_MODULE_SRCVERSION_ALL=y
188# CONFIG_KMOD is not set 184# CONFIG_KMOD is not set
@@ -191,6 +187,8 @@ CONFIG_MODULE_SRCVERSION_ALL=y
191# Block layer 187# Block layer
192# 188#
193# CONFIG_LBD is not set 189# CONFIG_LBD is not set
190# CONFIG_BLK_DEV_IO_TRACE is not set
191# CONFIG_LSF is not set
194 192
195# 193#
196# IO Schedulers 194# IO Schedulers
@@ -210,7 +208,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
210# 208#
211CONFIG_HW_HAS_PCI=y 209CONFIG_HW_HAS_PCI=y
212CONFIG_PCI=y 210CONFIG_PCI=y
213CONFIG_PCI_LEGACY_PROC=y
214CONFIG_MMU=y 211CONFIG_MMU=y
215 212
216# 213#
@@ -238,6 +235,7 @@ CONFIG_NET=y
238# 235#
239# Networking options 236# Networking options
240# 237#
238# CONFIG_NETDEBUG is not set
241# CONFIG_PACKET is not set 239# CONFIG_PACKET is not set
242CONFIG_UNIX=y 240CONFIG_UNIX=y
243CONFIG_XFRM=y 241CONFIG_XFRM=y
@@ -258,12 +256,15 @@ CONFIG_IP_PNP=y
258# CONFIG_INET_AH is not set 256# CONFIG_INET_AH is not set
259# CONFIG_INET_ESP is not set 257# CONFIG_INET_ESP is not set
260# CONFIG_INET_IPCOMP is not set 258# CONFIG_INET_IPCOMP is not set
261CONFIG_INET_TUNNEL=m 259# CONFIG_INET_XFRM_TUNNEL is not set
260# CONFIG_INET_TUNNEL is not set
262CONFIG_INET_DIAG=y 261CONFIG_INET_DIAG=y
263CONFIG_INET_TCP_DIAG=y 262CONFIG_INET_TCP_DIAG=y
264# CONFIG_TCP_CONG_ADVANCED is not set 263# CONFIG_TCP_CONG_ADVANCED is not set
265CONFIG_TCP_CONG_BIC=y 264CONFIG_TCP_CONG_BIC=y
266# CONFIG_IPV6 is not set 265# CONFIG_IPV6 is not set
266# CONFIG_INET6_XFRM_TUNNEL is not set
267# CONFIG_INET6_TUNNEL is not set
267# CONFIG_NETFILTER is not set 268# CONFIG_NETFILTER is not set
268 269
269# 270#
@@ -275,6 +276,11 @@ CONFIG_TCP_CONG_BIC=y
275# SCTP Configuration (EXPERIMENTAL) 276# SCTP Configuration (EXPERIMENTAL)
276# 277#
277# CONFIG_IP_SCTP is not set 278# CONFIG_IP_SCTP is not set
279
280#
281# TIPC Configuration (EXPERIMENTAL)
282#
283# CONFIG_TIPC is not set
278# CONFIG_ATM is not set 284# CONFIG_ATM is not set
279# CONFIG_BRIDGE is not set 285# CONFIG_BRIDGE is not set
280# CONFIG_VLAN_8021Q is not set 286# CONFIG_VLAN_8021Q is not set
@@ -284,11 +290,6 @@ CONFIG_TCP_CONG_BIC=y
284# CONFIG_ATALK is not set 290# CONFIG_ATALK is not set
285# CONFIG_X25 is not set 291# CONFIG_X25 is not set
286# CONFIG_LAPB is not set 292# CONFIG_LAPB is not set
287
288#
289# TIPC Configuration (EXPERIMENTAL)
290#
291# CONFIG_TIPC is not set
292# CONFIG_NET_DIVERT is not set 293# CONFIG_NET_DIVERT is not set
293# CONFIG_ECONET is not set 294# CONFIG_ECONET is not set
294# CONFIG_WAN_ROUTER is not set 295# CONFIG_WAN_ROUTER is not set
@@ -309,6 +310,9 @@ CONFIG_IEEE80211=m
309# CONFIG_IEEE80211_DEBUG is not set 310# CONFIG_IEEE80211_DEBUG is not set
310CONFIG_IEEE80211_CRYPT_WEP=m 311CONFIG_IEEE80211_CRYPT_WEP=m
311CONFIG_IEEE80211_CRYPT_CCMP=m 312CONFIG_IEEE80211_CRYPT_CCMP=m
313CONFIG_IEEE80211_SOFTMAC=m
314# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
315CONFIG_WIRELESS_EXT=y
312 316
313# 317#
314# Device Drivers 318# Device Drivers
@@ -352,7 +356,7 @@ CONFIG_CONNECTOR=m
352# CONFIG_BLK_DEV_NBD is not set 356# CONFIG_BLK_DEV_NBD is not set
353# CONFIG_BLK_DEV_SX8 is not set 357# CONFIG_BLK_DEV_SX8 is not set
354# CONFIG_BLK_DEV_RAM is not set 358# CONFIG_BLK_DEV_RAM is not set
355CONFIG_BLK_DEV_RAM_COUNT=16 359# CONFIG_BLK_DEV_INITRD is not set
356CONFIG_CDROM_PKTCDVD=m 360CONFIG_CDROM_PKTCDVD=m
357CONFIG_CDROM_PKTCDVD_BUFFERS=8 361CONFIG_CDROM_PKTCDVD_BUFFERS=8
358# CONFIG_CDROM_PKTCDVD_WCACHE is not set 362# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -550,6 +554,7 @@ CONFIG_HW_CONSOLE=y
550# 554#
551CONFIG_SERIAL_8250=y 555CONFIG_SERIAL_8250=y
552CONFIG_SERIAL_8250_CONSOLE=y 556CONFIG_SERIAL_8250_CONSOLE=y
557CONFIG_SERIAL_8250_PCI=y
553CONFIG_SERIAL_8250_NR_UARTS=4 558CONFIG_SERIAL_8250_NR_UARTS=4
554CONFIG_SERIAL_8250_RUNTIME_UARTS=4 559CONFIG_SERIAL_8250_RUNTIME_UARTS=4
555# CONFIG_SERIAL_8250_EXTENDED is not set 560# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -559,6 +564,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
559# 564#
560CONFIG_SERIAL_CORE=y 565CONFIG_SERIAL_CORE=y
561CONFIG_SERIAL_CORE_CONSOLE=y 566CONFIG_SERIAL_CORE_CONSOLE=y
567# CONFIG_SERIAL_JSM is not set
562CONFIG_UNIX98_PTYS=y 568CONFIG_UNIX98_PTYS=y
563CONFIG_LEGACY_PTYS=y 569CONFIG_LEGACY_PTYS=y
564CONFIG_LEGACY_PTY_COUNT=256 570CONFIG_LEGACY_PTY_COUNT=256
@@ -617,10 +623,6 @@ CONFIG_LEGACY_PTY_COUNT=256
617# 623#
618 624
619# 625#
620# Multimedia Capabilities Port drivers
621#
622
623#
624# Multimedia devices 626# Multimedia devices
625# 627#
626# CONFIG_VIDEO_DEV is not set 628# CONFIG_VIDEO_DEV is not set
@@ -651,6 +653,7 @@ CONFIG_DUMMY_CONSOLE=y
651# 653#
652CONFIG_USB_ARCH_HAS_HCD=y 654CONFIG_USB_ARCH_HAS_HCD=y
653CONFIG_USB_ARCH_HAS_OHCI=y 655CONFIG_USB_ARCH_HAS_OHCI=y
656CONFIG_USB_ARCH_HAS_EHCI=y
654# CONFIG_USB is not set 657# CONFIG_USB is not set
655 658
656# 659#
@@ -668,13 +671,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
668# CONFIG_MMC is not set 671# CONFIG_MMC is not set
669 672
670# 673#
674# LED devices
675#
676# CONFIG_NEW_LEDS is not set
677
678#
679# LED drivers
680#
681
682#
683# LED Triggers
684#
685
686#
671# InfiniBand support 687# InfiniBand support
672# 688#
673# CONFIG_INFINIBAND is not set 689# CONFIG_INFINIBAND is not set
674 690
675# 691#
676# SN Devices 692# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
693#
694
695#
696# Real Time Clock
677# 697#
698# CONFIG_RTC_CLASS is not set
678 699
679# 700#
680# File systems 701# File systems
@@ -719,7 +740,6 @@ CONFIG_SYSFS=y
719# CONFIG_TMPFS is not set 740# CONFIG_TMPFS is not set
720# CONFIG_HUGETLB_PAGE is not set 741# CONFIG_HUGETLB_PAGE is not set
721CONFIG_RAMFS=y 742CONFIG_RAMFS=y
722CONFIG_RELAYFS_FS=m
723# CONFIG_CONFIGFS_FS is not set 743# CONFIG_CONFIGFS_FS is not set
724 744
725# 745#
@@ -783,6 +803,7 @@ CONFIG_MSDOS_PARTITION=y
783# CONFIG_MAGIC_SYSRQ is not set 803# CONFIG_MAGIC_SYSRQ is not set
784# CONFIG_DEBUG_KERNEL is not set 804# CONFIG_DEBUG_KERNEL is not set
785CONFIG_LOG_BUF_SHIFT=14 805CONFIG_LOG_BUF_SHIFT=14
806# CONFIG_DEBUG_FS is not set
786CONFIG_CROSSCOMPILE=y 807CONFIG_CROSSCOMPILE=y
787CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs rw nfsroot=192.168.1.1:/mnt/disk2/fs.gal ip=192.168.1.211:192.168.1.1:::gt::" 808CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs rw nfsroot=192.168.1.1:/mnt/disk2/fs.gal ip=192.168.1.211:192.168.1.1:::gt::"
788 809
diff --git a/arch/mips/configs/ev96100_defconfig b/arch/mips/configs/ev96100_defconfig
index ac5841c4b698..00b56ed0e638 100644
--- a/arch/mips/configs/ev96100_defconfig
+++ b/arch/mips/configs/ev96100_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:06 2006 4# Mon Apr 24 14:51:03 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_EV96100=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -119,7 +121,6 @@ CONFIG_RM7000_CPU_SCACHE=y
119CONFIG_CPU_HAS_PREFETCH=y 121CONFIG_CPU_HAS_PREFETCH=y
120# CONFIG_MIPS_MT is not set 122# CONFIG_MIPS_MT is not set
121# CONFIG_64BIT_PHYS_ADDR is not set 123# CONFIG_64BIT_PHYS_ADDR is not set
122# CONFIG_CPU_ADVANCED is not set
123CONFIG_CPU_HAS_LLSC=y 124CONFIG_CPU_HAS_LLSC=y
124CONFIG_CPU_HAS_SYNC=y 125CONFIG_CPU_HAS_SYNC=y
125CONFIG_GENERIC_HARDIRQS=y 126CONFIG_GENERIC_HARDIRQS=y
@@ -142,7 +143,6 @@ CONFIG_PREEMPT_NONE=y
142# Code maturity level options 143# Code maturity level options
143# 144#
144CONFIG_EXPERIMENTAL=y 145CONFIG_EXPERIMENTAL=y
145CONFIG_CLEAN_COMPILE=y
146CONFIG_BROKEN_ON_SMP=y 146CONFIG_BROKEN_ON_SMP=y
147CONFIG_INIT_ENV_ARG_LIMIT=32 147CONFIG_INIT_ENV_ARG_LIMIT=32
148 148
@@ -158,6 +158,7 @@ CONFIG_SYSVIPC=y
158CONFIG_SYSCTL=y 158CONFIG_SYSCTL=y
159# CONFIG_AUDIT is not set 159# CONFIG_AUDIT is not set
160# CONFIG_IKCONFIG is not set 160# CONFIG_IKCONFIG is not set
161CONFIG_RELAY=y
161CONFIG_INITRAMFS_SOURCE="" 162CONFIG_INITRAMFS_SOURCE=""
162# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 163# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
163CONFIG_EMBEDDED=y 164CONFIG_EMBEDDED=y
@@ -171,10 +172,6 @@ CONFIG_BASE_FULL=y
171CONFIG_FUTEX=y 172CONFIG_FUTEX=y
172CONFIG_EPOLL=y 173CONFIG_EPOLL=y
173CONFIG_SHMEM=y 174CONFIG_SHMEM=y
174CONFIG_CC_ALIGN_FUNCTIONS=0
175CONFIG_CC_ALIGN_LABELS=0
176CONFIG_CC_ALIGN_LOOPS=0
177CONFIG_CC_ALIGN_JUMPS=0
178CONFIG_SLAB=y 175CONFIG_SLAB=y
179# CONFIG_TINY_SHMEM is not set 176# CONFIG_TINY_SHMEM is not set
180CONFIG_BASE_SMALL=0 177CONFIG_BASE_SMALL=0
@@ -186,7 +183,6 @@ CONFIG_BASE_SMALL=0
186CONFIG_MODULES=y 183CONFIG_MODULES=y
187CONFIG_MODULE_UNLOAD=y 184CONFIG_MODULE_UNLOAD=y
188# CONFIG_MODULE_FORCE_UNLOAD is not set 185# CONFIG_MODULE_FORCE_UNLOAD is not set
189CONFIG_OBSOLETE_MODPARM=y
190CONFIG_MODVERSIONS=y 186CONFIG_MODVERSIONS=y
191CONFIG_MODULE_SRCVERSION_ALL=y 187CONFIG_MODULE_SRCVERSION_ALL=y
192# CONFIG_KMOD is not set 188# CONFIG_KMOD is not set
@@ -195,6 +191,8 @@ CONFIG_MODULE_SRCVERSION_ALL=y
195# Block layer 191# Block layer
196# 192#
197# CONFIG_LBD is not set 193# CONFIG_LBD is not set
194# CONFIG_BLK_DEV_IO_TRACE is not set
195# CONFIG_LSF is not set
198 196
199# 197#
200# IO Schedulers 198# IO Schedulers
@@ -240,6 +238,7 @@ CONFIG_NET=y
240# 238#
241# Networking options 239# Networking options
242# 240#
241# CONFIG_NETDEBUG is not set
243# CONFIG_PACKET is not set 242# CONFIG_PACKET is not set
244CONFIG_UNIX=y 243CONFIG_UNIX=y
245CONFIG_XFRM=y 244CONFIG_XFRM=y
@@ -260,12 +259,15 @@ CONFIG_IP_PNP_BOOTP=y
260# CONFIG_INET_AH is not set 259# CONFIG_INET_AH is not set
261# CONFIG_INET_ESP is not set 260# CONFIG_INET_ESP is not set
262# CONFIG_INET_IPCOMP is not set 261# CONFIG_INET_IPCOMP is not set
263CONFIG_INET_TUNNEL=m 262# CONFIG_INET_XFRM_TUNNEL is not set
263# CONFIG_INET_TUNNEL is not set
264CONFIG_INET_DIAG=y 264CONFIG_INET_DIAG=y
265CONFIG_INET_TCP_DIAG=y 265CONFIG_INET_TCP_DIAG=y
266# CONFIG_TCP_CONG_ADVANCED is not set 266# CONFIG_TCP_CONG_ADVANCED is not set
267CONFIG_TCP_CONG_BIC=y 267CONFIG_TCP_CONG_BIC=y
268# CONFIG_IPV6 is not set 268# CONFIG_IPV6 is not set
269# CONFIG_INET6_XFRM_TUNNEL is not set
270# CONFIG_INET6_TUNNEL is not set
269# CONFIG_NETFILTER is not set 271# CONFIG_NETFILTER is not set
270 272
271# 273#
@@ -277,6 +279,11 @@ CONFIG_TCP_CONG_BIC=y
277# SCTP Configuration (EXPERIMENTAL) 279# SCTP Configuration (EXPERIMENTAL)
278# 280#
279# CONFIG_IP_SCTP is not set 281# CONFIG_IP_SCTP is not set
282
283#
284# TIPC Configuration (EXPERIMENTAL)
285#
286# CONFIG_TIPC is not set
280# CONFIG_ATM is not set 287# CONFIG_ATM is not set
281# CONFIG_BRIDGE is not set 288# CONFIG_BRIDGE is not set
282# CONFIG_VLAN_8021Q is not set 289# CONFIG_VLAN_8021Q is not set
@@ -286,11 +293,6 @@ CONFIG_TCP_CONG_BIC=y
286# CONFIG_ATALK is not set 293# CONFIG_ATALK is not set
287# CONFIG_X25 is not set 294# CONFIG_X25 is not set
288# CONFIG_LAPB is not set 295# CONFIG_LAPB is not set
289
290#
291# TIPC Configuration (EXPERIMENTAL)
292#
293# CONFIG_TIPC is not set
294# CONFIG_NET_DIVERT is not set 296# CONFIG_NET_DIVERT is not set
295# CONFIG_ECONET is not set 297# CONFIG_ECONET is not set
296# CONFIG_WAN_ROUTER is not set 298# CONFIG_WAN_ROUTER is not set
@@ -311,6 +313,9 @@ CONFIG_IEEE80211=m
311# CONFIG_IEEE80211_DEBUG is not set 313# CONFIG_IEEE80211_DEBUG is not set
312CONFIG_IEEE80211_CRYPT_WEP=m 314CONFIG_IEEE80211_CRYPT_WEP=m
313CONFIG_IEEE80211_CRYPT_CCMP=m 315CONFIG_IEEE80211_CRYPT_CCMP=m
316CONFIG_IEEE80211_SOFTMAC=m
317# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
318CONFIG_WIRELESS_EXT=y
314 319
315# 320#
316# Device Drivers 321# Device Drivers
@@ -349,7 +354,7 @@ CONFIG_CONNECTOR=m
349# CONFIG_BLK_DEV_LOOP is not set 354# CONFIG_BLK_DEV_LOOP is not set
350# CONFIG_BLK_DEV_NBD is not set 355# CONFIG_BLK_DEV_NBD is not set
351# CONFIG_BLK_DEV_RAM is not set 356# CONFIG_BLK_DEV_RAM is not set
352CONFIG_BLK_DEV_RAM_COUNT=16 357# CONFIG_BLK_DEV_INITRD is not set
353CONFIG_CDROM_PKTCDVD=m 358CONFIG_CDROM_PKTCDVD=m
354CONFIG_CDROM_PKTCDVD_BUFFERS=8 359CONFIG_CDROM_PKTCDVD_BUFFERS=8
355# CONFIG_CDROM_PKTCDVD_WCACHE is not set 360# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -567,10 +572,6 @@ CONFIG_LEGACY_PTY_COUNT=256
567# 572#
568 573
569# 574#
570# Multimedia Capabilities Port drivers
571#
572
573#
574# Multimedia devices 575# Multimedia devices
575# 576#
576# CONFIG_VIDEO_DEV is not set 577# CONFIG_VIDEO_DEV is not set
@@ -601,6 +602,7 @@ CONFIG_DUMMY_CONSOLE=y
601# 602#
602# CONFIG_USB_ARCH_HAS_HCD is not set 603# CONFIG_USB_ARCH_HAS_HCD is not set
603# CONFIG_USB_ARCH_HAS_OHCI is not set 604# CONFIG_USB_ARCH_HAS_OHCI is not set
605# CONFIG_USB_ARCH_HAS_EHCI is not set
604 606
605# 607#
606# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 608# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -617,12 +619,30 @@ CONFIG_DUMMY_CONSOLE=y
617# CONFIG_MMC is not set 619# CONFIG_MMC is not set
618 620
619# 621#
622# LED devices
623#
624# CONFIG_NEW_LEDS is not set
625
626#
627# LED drivers
628#
629
630#
631# LED Triggers
632#
633
634#
620# InfiniBand support 635# InfiniBand support
621# 636#
622 637
623# 638#
624# SN Devices 639# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
640#
641
642#
643# Real Time Clock
625# 644#
645# CONFIG_RTC_CLASS is not set
626 646
627# 647#
628# File systems 648# File systems
@@ -667,7 +687,6 @@ CONFIG_SYSFS=y
667# CONFIG_TMPFS is not set 687# CONFIG_TMPFS is not set
668# CONFIG_HUGETLB_PAGE is not set 688# CONFIG_HUGETLB_PAGE is not set
669CONFIG_RAMFS=y 689CONFIG_RAMFS=y
670CONFIG_RELAYFS_FS=m
671# CONFIG_CONFIGFS_FS is not set 690# CONFIG_CONFIGFS_FS is not set
672 691
673# 692#
@@ -731,6 +750,7 @@ CONFIG_MSDOS_PARTITION=y
731# CONFIG_MAGIC_SYSRQ is not set 750# CONFIG_MAGIC_SYSRQ is not set
732# CONFIG_DEBUG_KERNEL is not set 751# CONFIG_DEBUG_KERNEL is not set
733CONFIG_LOG_BUF_SHIFT=14 752CONFIG_LOG_BUF_SHIFT=14
753# CONFIG_DEBUG_FS is not set
734CONFIG_CROSSCOMPILE=y 754CONFIG_CROSSCOMPILE=y
735CONFIG_CMDLINE="" 755CONFIG_CMDLINE=""
736 756
diff --git a/arch/mips/configs/ip22_defconfig b/arch/mips/configs/ip22_defconfig
index 42d5cd7927cb..607e2985ffe3 100644
--- a/arch/mips/configs/ip22_defconfig
+++ b/arch/mips/configs/ip22_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:39:51 2006 4# Mon Apr 24 14:50:54 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_SGI_IP22=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_ARC=y 70CONFIG_ARC=y
69CONFIG_DMA_NONCOHERENT=y 71CONFIG_DMA_NONCOHERENT=y
@@ -121,7 +123,6 @@ CONFIG_BOARD_SCACHE=y
121CONFIG_IP22_CPU_SCACHE=y 123CONFIG_IP22_CPU_SCACHE=y
122# CONFIG_MIPS_MT is not set 124# CONFIG_MIPS_MT is not set
123# CONFIG_64BIT_PHYS_ADDR is not set 125# CONFIG_64BIT_PHYS_ADDR is not set
124# CONFIG_CPU_ADVANCED is not set
125CONFIG_CPU_HAS_LLSC=y 126CONFIG_CPU_HAS_LLSC=y
126CONFIG_CPU_HAS_SYNC=y 127CONFIG_CPU_HAS_SYNC=y
127CONFIG_GENERIC_HARDIRQS=y 128CONFIG_GENERIC_HARDIRQS=y
@@ -143,7 +144,6 @@ CONFIG_PREEMPT_VOLUNTARY=y
143# Code maturity level options 144# Code maturity level options
144# 145#
145CONFIG_EXPERIMENTAL=y 146CONFIG_EXPERIMENTAL=y
146CONFIG_CLEAN_COMPILE=y
147CONFIG_BROKEN_ON_SMP=y 147CONFIG_BROKEN_ON_SMP=y
148CONFIG_INIT_ENV_ARG_LIMIT=32 148CONFIG_INIT_ENV_ARG_LIMIT=32
149 149
@@ -160,6 +160,7 @@ CONFIG_SYSCTL=y
160# CONFIG_AUDIT is not set 160# CONFIG_AUDIT is not set
161CONFIG_IKCONFIG=y 161CONFIG_IKCONFIG=y
162CONFIG_IKCONFIG_PROC=y 162CONFIG_IKCONFIG_PROC=y
163CONFIG_RELAY=y
163CONFIG_INITRAMFS_SOURCE="" 164CONFIG_INITRAMFS_SOURCE=""
164# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 165# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
165CONFIG_EMBEDDED=y 166CONFIG_EMBEDDED=y
@@ -173,10 +174,6 @@ CONFIG_BASE_FULL=y
173CONFIG_FUTEX=y 174CONFIG_FUTEX=y
174CONFIG_EPOLL=y 175CONFIG_EPOLL=y
175CONFIG_SHMEM=y 176CONFIG_SHMEM=y
176CONFIG_CC_ALIGN_FUNCTIONS=0
177CONFIG_CC_ALIGN_LABELS=0
178CONFIG_CC_ALIGN_LOOPS=0
179CONFIG_CC_ALIGN_JUMPS=0
180CONFIG_SLAB=y 177CONFIG_SLAB=y
181# CONFIG_TINY_SHMEM is not set 178# CONFIG_TINY_SHMEM is not set
182CONFIG_BASE_SMALL=0 179CONFIG_BASE_SMALL=0
@@ -188,7 +185,6 @@ CONFIG_BASE_SMALL=0
188CONFIG_MODULES=y 185CONFIG_MODULES=y
189CONFIG_MODULE_UNLOAD=y 186CONFIG_MODULE_UNLOAD=y
190# CONFIG_MODULE_FORCE_UNLOAD is not set 187# CONFIG_MODULE_FORCE_UNLOAD is not set
191CONFIG_OBSOLETE_MODPARM=y
192CONFIG_MODVERSIONS=y 188CONFIG_MODVERSIONS=y
193CONFIG_MODULE_SRCVERSION_ALL=y 189CONFIG_MODULE_SRCVERSION_ALL=y
194CONFIG_KMOD=y 190CONFIG_KMOD=y
@@ -197,6 +193,8 @@ CONFIG_KMOD=y
197# Block layer 193# Block layer
198# 194#
199# CONFIG_LBD is not set 195# CONFIG_LBD is not set
196# CONFIG_BLK_DEV_IO_TRACE is not set
197# CONFIG_LSF is not set
200 198
201# 199#
202# IO Schedulers 200# IO Schedulers
@@ -242,6 +240,7 @@ CONFIG_NET=y
242# 240#
243# Networking options 241# Networking options
244# 242#
243# CONFIG_NETDEBUG is not set
245CONFIG_PACKET=y 244CONFIG_PACKET=y
246CONFIG_PACKET_MMAP=y 245CONFIG_PACKET_MMAP=y
247CONFIG_UNIX=y 246CONFIG_UNIX=y
@@ -264,6 +263,7 @@ CONFIG_IP_PNP_BOOTP=y
264CONFIG_INET_AH=m 263CONFIG_INET_AH=m
265CONFIG_INET_ESP=m 264CONFIG_INET_ESP=m
266CONFIG_INET_IPCOMP=m 265CONFIG_INET_IPCOMP=m
266CONFIG_INET_XFRM_TUNNEL=m
267CONFIG_INET_TUNNEL=m 267CONFIG_INET_TUNNEL=m
268CONFIG_INET_DIAG=y 268CONFIG_INET_DIAG=y
269CONFIG_INET_TCP_DIAG=y 269CONFIG_INET_TCP_DIAG=y
@@ -305,9 +305,12 @@ CONFIG_IP_VS_NQ=m
305CONFIG_IP_VS_FTP=m 305CONFIG_IP_VS_FTP=m
306CONFIG_IPV6=m 306CONFIG_IPV6=m
307CONFIG_IPV6_PRIVACY=y 307CONFIG_IPV6_PRIVACY=y
308CONFIG_IPV6_ROUTER_PREF=y
309CONFIG_IPV6_ROUTE_INFO=y
308CONFIG_INET6_AH=m 310CONFIG_INET6_AH=m
309CONFIG_INET6_ESP=m 311CONFIG_INET6_ESP=m
310CONFIG_INET6_IPCOMP=m 312CONFIG_INET6_IPCOMP=m
313CONFIG_INET6_XFRM_TUNNEL=m
311CONFIG_INET6_TUNNEL=m 314CONFIG_INET6_TUNNEL=m
312CONFIG_IPV6_TUNNEL=m 315CONFIG_IPV6_TUNNEL=m
313CONFIG_NETFILTER=y 316CONFIG_NETFILTER=y
@@ -330,11 +333,14 @@ CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
330CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 333CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
331CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 334CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
332CONFIG_NETFILTER_XT_MATCH_DCCP=m 335CONFIG_NETFILTER_XT_MATCH_DCCP=m
336CONFIG_NETFILTER_XT_MATCH_ESP=m
333CONFIG_NETFILTER_XT_MATCH_HELPER=m 337CONFIG_NETFILTER_XT_MATCH_HELPER=m
334CONFIG_NETFILTER_XT_MATCH_LENGTH=m 338CONFIG_NETFILTER_XT_MATCH_LENGTH=m
335CONFIG_NETFILTER_XT_MATCH_LIMIT=m 339CONFIG_NETFILTER_XT_MATCH_LIMIT=m
336CONFIG_NETFILTER_XT_MATCH_MAC=m 340CONFIG_NETFILTER_XT_MATCH_MAC=m
337CONFIG_NETFILTER_XT_MATCH_MARK=m 341CONFIG_NETFILTER_XT_MATCH_MARK=m
342CONFIG_NETFILTER_XT_MATCH_POLICY=m
343CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
338CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 344CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
339CONFIG_NETFILTER_XT_MATCH_REALM=m 345CONFIG_NETFILTER_XT_MATCH_REALM=m
340CONFIG_NETFILTER_XT_MATCH_SCTP=m 346CONFIG_NETFILTER_XT_MATCH_SCTP=m
@@ -357,20 +363,19 @@ CONFIG_IP_NF_IRC=m
357CONFIG_IP_NF_TFTP=m 363CONFIG_IP_NF_TFTP=m
358CONFIG_IP_NF_AMANDA=m 364CONFIG_IP_NF_AMANDA=m
359CONFIG_IP_NF_PPTP=m 365CONFIG_IP_NF_PPTP=m
366CONFIG_IP_NF_H323=m
360CONFIG_IP_NF_QUEUE=m 367CONFIG_IP_NF_QUEUE=m
361CONFIG_IP_NF_IPTABLES=m 368CONFIG_IP_NF_IPTABLES=m
362CONFIG_IP_NF_MATCH_IPRANGE=m 369CONFIG_IP_NF_MATCH_IPRANGE=m
363CONFIG_IP_NF_MATCH_MULTIPORT=m
364CONFIG_IP_NF_MATCH_TOS=m 370CONFIG_IP_NF_MATCH_TOS=m
365CONFIG_IP_NF_MATCH_RECENT=m 371CONFIG_IP_NF_MATCH_RECENT=m
366CONFIG_IP_NF_MATCH_ECN=m 372CONFIG_IP_NF_MATCH_ECN=m
367CONFIG_IP_NF_MATCH_DSCP=m 373CONFIG_IP_NF_MATCH_DSCP=m
368CONFIG_IP_NF_MATCH_AH_ESP=m 374CONFIG_IP_NF_MATCH_AH=m
369CONFIG_IP_NF_MATCH_TTL=m 375CONFIG_IP_NF_MATCH_TTL=m
370CONFIG_IP_NF_MATCH_OWNER=m 376CONFIG_IP_NF_MATCH_OWNER=m
371CONFIG_IP_NF_MATCH_ADDRTYPE=m 377CONFIG_IP_NF_MATCH_ADDRTYPE=m
372CONFIG_IP_NF_MATCH_HASHLIMIT=m 378CONFIG_IP_NF_MATCH_HASHLIMIT=m
373CONFIG_IP_NF_MATCH_POLICY=m
374CONFIG_IP_NF_FILTER=m 379CONFIG_IP_NF_FILTER=m
375CONFIG_IP_NF_TARGET_REJECT=m 380CONFIG_IP_NF_TARGET_REJECT=m
376CONFIG_IP_NF_TARGET_LOG=m 381CONFIG_IP_NF_TARGET_LOG=m
@@ -388,6 +393,7 @@ CONFIG_IP_NF_NAT_FTP=m
388CONFIG_IP_NF_NAT_TFTP=m 393CONFIG_IP_NF_NAT_TFTP=m
389CONFIG_IP_NF_NAT_AMANDA=m 394CONFIG_IP_NF_NAT_AMANDA=m
390CONFIG_IP_NF_NAT_PPTP=m 395CONFIG_IP_NF_NAT_PPTP=m
396CONFIG_IP_NF_NAT_H323=m
391CONFIG_IP_NF_MANGLE=m 397CONFIG_IP_NF_MANGLE=m
392CONFIG_IP_NF_TARGET_TOS=m 398CONFIG_IP_NF_TARGET_TOS=m
393CONFIG_IP_NF_TARGET_ECN=m 399CONFIG_IP_NF_TARGET_ECN=m
@@ -408,12 +414,10 @@ CONFIG_IP6_NF_MATCH_RT=m
408CONFIG_IP6_NF_MATCH_OPTS=m 414CONFIG_IP6_NF_MATCH_OPTS=m
409CONFIG_IP6_NF_MATCH_FRAG=m 415CONFIG_IP6_NF_MATCH_FRAG=m
410CONFIG_IP6_NF_MATCH_HL=m 416CONFIG_IP6_NF_MATCH_HL=m
411CONFIG_IP6_NF_MATCH_MULTIPORT=m
412CONFIG_IP6_NF_MATCH_OWNER=m 417CONFIG_IP6_NF_MATCH_OWNER=m
413CONFIG_IP6_NF_MATCH_IPV6HEADER=m 418CONFIG_IP6_NF_MATCH_IPV6HEADER=m
414CONFIG_IP6_NF_MATCH_AHESP=m 419CONFIG_IP6_NF_MATCH_AH=m
415CONFIG_IP6_NF_MATCH_EUI64=m 420CONFIG_IP6_NF_MATCH_EUI64=m
416CONFIG_IP6_NF_MATCH_POLICY=m
417CONFIG_IP6_NF_FILTER=m 421CONFIG_IP6_NF_FILTER=m
418CONFIG_IP6_NF_TARGET_LOG=m 422CONFIG_IP6_NF_TARGET_LOG=m
419CONFIG_IP6_NF_TARGET_REJECT=m 423CONFIG_IP6_NF_TARGET_REJECT=m
@@ -435,6 +439,11 @@ CONFIG_IP_SCTP=m
435# CONFIG_SCTP_HMAC_NONE is not set 439# CONFIG_SCTP_HMAC_NONE is not set
436# CONFIG_SCTP_HMAC_SHA1 is not set 440# CONFIG_SCTP_HMAC_SHA1 is not set
437CONFIG_SCTP_HMAC_MD5=y 441CONFIG_SCTP_HMAC_MD5=y
442
443#
444# TIPC Configuration (EXPERIMENTAL)
445#
446# CONFIG_TIPC is not set
438# CONFIG_ATM is not set 447# CONFIG_ATM is not set
439# CONFIG_BRIDGE is not set 448# CONFIG_BRIDGE is not set
440# CONFIG_VLAN_8021Q is not set 449# CONFIG_VLAN_8021Q is not set
@@ -444,11 +453,6 @@ CONFIG_SCTP_HMAC_MD5=y
444# CONFIG_ATALK is not set 453# CONFIG_ATALK is not set
445# CONFIG_X25 is not set 454# CONFIG_X25 is not set
446# CONFIG_LAPB is not set 455# CONFIG_LAPB is not set
447
448#
449# TIPC Configuration (EXPERIMENTAL)
450#
451# CONFIG_TIPC is not set
452CONFIG_NET_DIVERT=y 456CONFIG_NET_DIVERT=y
453# CONFIG_ECONET is not set 457# CONFIG_ECONET is not set
454# CONFIG_WAN_ROUTER is not set 458# CONFIG_WAN_ROUTER is not set
@@ -508,6 +512,9 @@ CONFIG_IEEE80211=m
508# CONFIG_IEEE80211_DEBUG is not set 512# CONFIG_IEEE80211_DEBUG is not set
509CONFIG_IEEE80211_CRYPT_WEP=m 513CONFIG_IEEE80211_CRYPT_WEP=m
510CONFIG_IEEE80211_CRYPT_CCMP=m 514CONFIG_IEEE80211_CRYPT_CCMP=m
515CONFIG_IEEE80211_SOFTMAC=m
516# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
517CONFIG_WIRELESS_EXT=y
511 518
512# 519#
513# Device Drivers 520# Device Drivers
@@ -546,7 +553,7 @@ CONFIG_CONNECTOR=m
546# CONFIG_BLK_DEV_LOOP is not set 553# CONFIG_BLK_DEV_LOOP is not set
547# CONFIG_BLK_DEV_NBD is not set 554# CONFIG_BLK_DEV_NBD is not set
548# CONFIG_BLK_DEV_RAM is not set 555# CONFIG_BLK_DEV_RAM is not set
549CONFIG_BLK_DEV_RAM_COUNT=16 556# CONFIG_BLK_DEV_INITRD is not set
550CONFIG_CDROM_PKTCDVD=m 557CONFIG_CDROM_PKTCDVD=m
551CONFIG_CDROM_PKTCDVD_BUFFERS=8 558CONFIG_CDROM_PKTCDVD_BUFFERS=8
552# CONFIG_CDROM_PKTCDVD_WCACHE is not set 559# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -812,10 +819,6 @@ CONFIG_MAX_RAW_DEVS=256
812# 819#
813 820
814# 821#
815# Multimedia Capabilities Port drivers
816#
817
818#
819# Multimedia devices 822# Multimedia devices
820# 823#
821# CONFIG_VIDEO_DEV is not set 824# CONFIG_VIDEO_DEV is not set
@@ -857,6 +860,7 @@ CONFIG_LOGO_SGI_CLUT224=y
857# 860#
858# CONFIG_USB_ARCH_HAS_HCD is not set 861# CONFIG_USB_ARCH_HAS_HCD is not set
859# CONFIG_USB_ARCH_HAS_OHCI is not set 862# CONFIG_USB_ARCH_HAS_OHCI is not set
863# CONFIG_USB_ARCH_HAS_EHCI is not set
860 864
861# 865#
862# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 866# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -873,12 +877,30 @@ CONFIG_LOGO_SGI_CLUT224=y
873# CONFIG_MMC is not set 877# CONFIG_MMC is not set
874 878
875# 879#
880# LED devices
881#
882# CONFIG_NEW_LEDS is not set
883
884#
885# LED drivers
886#
887
888#
889# LED Triggers
890#
891
892#
876# InfiniBand support 893# InfiniBand support
877# 894#
878 895
879# 896#
880# SN Devices 897# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
898#
899
900#
901# Real Time Clock
881# 902#
903# CONFIG_RTC_CLASS is not set
882 904
883# 905#
884# File systems 906# File systems
@@ -944,7 +966,6 @@ CONFIG_SYSFS=y
944# CONFIG_TMPFS is not set 966# CONFIG_TMPFS is not set
945# CONFIG_HUGETLB_PAGE is not set 967# CONFIG_HUGETLB_PAGE is not set
946CONFIG_RAMFS=y 968CONFIG_RAMFS=y
947CONFIG_RELAYFS_FS=m
948# CONFIG_CONFIGFS_FS is not set 969# CONFIG_CONFIGFS_FS is not set
949 970
950# 971#
@@ -963,7 +984,6 @@ CONFIG_EFS_FS=m
963# CONFIG_QNX4FS_FS is not set 984# CONFIG_QNX4FS_FS is not set
964# CONFIG_SYSV_FS is not set 985# CONFIG_SYSV_FS is not set
965CONFIG_UFS_FS=m 986CONFIG_UFS_FS=m
966# CONFIG_UFS_FS_WRITE is not set
967 987
968# 988#
969# Network File Systems 989# Network File Systems
@@ -1078,6 +1098,7 @@ CONFIG_NLS_UTF8=m
1078# CONFIG_MAGIC_SYSRQ is not set 1098# CONFIG_MAGIC_SYSRQ is not set
1079# CONFIG_DEBUG_KERNEL is not set 1099# CONFIG_DEBUG_KERNEL is not set
1080CONFIG_LOG_BUF_SHIFT=14 1100CONFIG_LOG_BUF_SHIFT=14
1101# CONFIG_DEBUG_FS is not set
1081CONFIG_CROSSCOMPILE=y 1102CONFIG_CROSSCOMPILE=y
1082CONFIG_CMDLINE="" 1103CONFIG_CMDLINE=""
1083 1104
diff --git a/arch/mips/configs/ip27_defconfig b/arch/mips/configs/ip27_defconfig
index 8c40590737e1..f724b4b2ecf2 100644
--- a/arch/mips/configs/ip27_defconfig
+++ b/arch/mips/configs/ip27_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc4 3# Linux kernel version: 2.6.17-rc2
4# Tue Feb 21 13:44:31 2006 4# Mon Apr 24 14:51:04 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -70,6 +70,8 @@ CONFIG_NUMA=y
70# CONFIG_REPLICATE_KTEXT is not set 70# CONFIG_REPLICATE_KTEXT is not set
71# CONFIG_REPLICATE_EXHANDLERS is not set 71# CONFIG_REPLICATE_EXHANDLERS is not set
72CONFIG_RWSEM_GENERIC_SPINLOCK=y 72CONFIG_RWSEM_GENERIC_SPINLOCK=y
73CONFIG_GENERIC_FIND_NEXT_BIT=y
74CONFIG_GENERIC_HWEIGHT=y
73CONFIG_GENERIC_CALIBRATE_DELAY=y 75CONFIG_GENERIC_CALIBRATE_DELAY=y
74CONFIG_ARC=y 76CONFIG_ARC=y
75CONFIG_DMA_IP27=y 77CONFIG_DMA_IP27=y
@@ -123,6 +125,7 @@ CONFIG_CPU_HAS_SYNC=y
123CONFIG_GENERIC_HARDIRQS=y 125CONFIG_GENERIC_HARDIRQS=y
124CONFIG_GENERIC_IRQ_PROBE=y 126CONFIG_GENERIC_IRQ_PROBE=y
125CONFIG_CPU_SUPPORTS_HIGHMEM=y 127CONFIG_CPU_SUPPORTS_HIGHMEM=y
128CONFIG_NODES_SHIFT=6
126CONFIG_SELECT_MEMORY_MODEL=y 129CONFIG_SELECT_MEMORY_MODEL=y
127# CONFIG_FLATMEM_MANUAL is not set 130# CONFIG_FLATMEM_MANUAL is not set
128CONFIG_DISCONTIGMEM_MANUAL=y 131CONFIG_DISCONTIGMEM_MANUAL=y
@@ -162,6 +165,7 @@ CONFIG_SYSCTL=y
162CONFIG_IKCONFIG=y 165CONFIG_IKCONFIG=y
163CONFIG_IKCONFIG_PROC=y 166CONFIG_IKCONFIG_PROC=y
164CONFIG_CPUSETS=y 167CONFIG_CPUSETS=y
168CONFIG_RELAY=y
165CONFIG_INITRAMFS_SOURCE="" 169CONFIG_INITRAMFS_SOURCE=""
166# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 170# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
167CONFIG_EMBEDDED=y 171CONFIG_EMBEDDED=y
@@ -175,10 +179,6 @@ CONFIG_BASE_FULL=y
175CONFIG_FUTEX=y 179CONFIG_FUTEX=y
176CONFIG_EPOLL=y 180CONFIG_EPOLL=y
177CONFIG_SHMEM=y 181CONFIG_SHMEM=y
178CONFIG_CC_ALIGN_FUNCTIONS=0
179CONFIG_CC_ALIGN_LABELS=0
180CONFIG_CC_ALIGN_LOOPS=0
181CONFIG_CC_ALIGN_JUMPS=0
182CONFIG_SLAB=y 182CONFIG_SLAB=y
183# CONFIG_TINY_SHMEM is not set 183# CONFIG_TINY_SHMEM is not set
184CONFIG_BASE_SMALL=0 184CONFIG_BASE_SMALL=0
@@ -190,7 +190,6 @@ CONFIG_BASE_SMALL=0
190CONFIG_MODULES=y 190CONFIG_MODULES=y
191CONFIG_MODULE_UNLOAD=y 191CONFIG_MODULE_UNLOAD=y
192# CONFIG_MODULE_FORCE_UNLOAD is not set 192# CONFIG_MODULE_FORCE_UNLOAD is not set
193CONFIG_OBSOLETE_MODPARM=y
194# CONFIG_MODVERSIONS is not set 193# CONFIG_MODVERSIONS is not set
195CONFIG_MODULE_SRCVERSION_ALL=y 194CONFIG_MODULE_SRCVERSION_ALL=y
196CONFIG_KMOD=y 195CONFIG_KMOD=y
@@ -199,6 +198,7 @@ CONFIG_STOP_MACHINE=y
199# 198#
200# Block layer 199# Block layer
201# 200#
201# CONFIG_BLK_DEV_IO_TRACE is not set
202 202
203# 203#
204# IO Schedulers 204# IO Schedulers
@@ -219,7 +219,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
219CONFIG_HW_HAS_PCI=y 219CONFIG_HW_HAS_PCI=y
220CONFIG_PCI=y 220CONFIG_PCI=y
221CONFIG_PCI_DOMAINS=y 221CONFIG_PCI_DOMAINS=y
222CONFIG_PCI_LEGACY_PROC=y
223CONFIG_MMU=y 222CONFIG_MMU=y
224 223
225# 224#
@@ -237,6 +236,7 @@ CONFIG_MMU=y
237# 236#
238CONFIG_BINFMT_ELF=y 237CONFIG_BINFMT_ELF=y
239# CONFIG_BINFMT_MISC is not set 238# CONFIG_BINFMT_MISC is not set
239# CONFIG_BUILD_ELF64 is not set
240CONFIG_MIPS32_COMPAT=y 240CONFIG_MIPS32_COMPAT=y
241CONFIG_COMPAT=y 241CONFIG_COMPAT=y
242CONFIG_MIPS32_O32=y 242CONFIG_MIPS32_O32=y
@@ -274,12 +274,15 @@ CONFIG_IP_PNP=y
274# CONFIG_INET_AH is not set 274# CONFIG_INET_AH is not set
275# CONFIG_INET_ESP is not set 275# CONFIG_INET_ESP is not set
276# CONFIG_INET_IPCOMP is not set 276# CONFIG_INET_IPCOMP is not set
277CONFIG_INET_TUNNEL=m 277# CONFIG_INET_XFRM_TUNNEL is not set
278# CONFIG_INET_TUNNEL is not set
278CONFIG_INET_DIAG=y 279CONFIG_INET_DIAG=y
279CONFIG_INET_TCP_DIAG=y 280CONFIG_INET_TCP_DIAG=y
280# CONFIG_TCP_CONG_ADVANCED is not set 281# CONFIG_TCP_CONG_ADVANCED is not set
281CONFIG_TCP_CONG_BIC=y 282CONFIG_TCP_CONG_BIC=y
282# CONFIG_IPV6 is not set 283# CONFIG_IPV6 is not set
284# CONFIG_INET6_XFRM_TUNNEL is not set
285# CONFIG_INET6_TUNNEL is not set
283# CONFIG_NETFILTER is not set 286# CONFIG_NETFILTER is not set
284 287
285# 288#
@@ -363,6 +366,9 @@ CONFIG_IEEE80211=m
363# CONFIG_IEEE80211_DEBUG is not set 366# CONFIG_IEEE80211_DEBUG is not set
364CONFIG_IEEE80211_CRYPT_WEP=m 367CONFIG_IEEE80211_CRYPT_WEP=m
365CONFIG_IEEE80211_CRYPT_CCMP=m 368CONFIG_IEEE80211_CRYPT_CCMP=m
369CONFIG_IEEE80211_SOFTMAC=m
370# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
371CONFIG_WIRELESS_EXT=y
366 372
367# 373#
368# Device Drivers 374# Device Drivers
@@ -407,7 +413,7 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
407# CONFIG_BLK_DEV_NBD is not set 413# CONFIG_BLK_DEV_NBD is not set
408# CONFIG_BLK_DEV_SX8 is not set 414# CONFIG_BLK_DEV_SX8 is not set
409# CONFIG_BLK_DEV_RAM is not set 415# CONFIG_BLK_DEV_RAM is not set
410CONFIG_BLK_DEV_RAM_COUNT=16 416# CONFIG_BLK_DEV_INITRD is not set
411CONFIG_CDROM_PKTCDVD=m 417CONFIG_CDROM_PKTCDVD=m
412CONFIG_CDROM_PKTCDVD_BUFFERS=8 418CONFIG_CDROM_PKTCDVD_BUFFERS=8
413# CONFIG_CDROM_PKTCDVD_WCACHE is not set 419# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -473,7 +479,6 @@ CONFIG_SCSI_SAS_ATTRS=m
473# CONFIG_SCSI_INIA100 is not set 479# CONFIG_SCSI_INIA100 is not set
474# CONFIG_SCSI_SYM53C8XX_2 is not set 480# CONFIG_SCSI_SYM53C8XX_2 is not set
475# CONFIG_SCSI_IPR is not set 481# CONFIG_SCSI_IPR is not set
476# CONFIG_SCSI_QLOGIC_FC is not set
477CONFIG_SCSI_QLOGIC_1280=y 482CONFIG_SCSI_QLOGIC_1280=y
478# CONFIG_SCSI_QLA_FC is not set 483# CONFIG_SCSI_QLA_FC is not set
479# CONFIG_SCSI_LPFC is not set 484# CONFIG_SCSI_LPFC is not set
@@ -491,6 +496,7 @@ CONFIG_MD_RAID0=y
491CONFIG_MD_RAID1=y 496CONFIG_MD_RAID1=y
492CONFIG_MD_RAID10=m 497CONFIG_MD_RAID10=m
493CONFIG_MD_RAID5=y 498CONFIG_MD_RAID5=y
499CONFIG_MD_RAID5_RESHAPE=y
494CONFIG_MD_RAID6=m 500CONFIG_MD_RAID6=m
495CONFIG_MD_MULTIPATH=m 501CONFIG_MD_MULTIPATH=m
496CONFIG_MD_FAULTY=m 502CONFIG_MD_FAULTY=m
@@ -654,6 +660,7 @@ CONFIG_SERIO_RAW=m
654# 660#
655CONFIG_SERIAL_8250=y 661CONFIG_SERIAL_8250=y
656CONFIG_SERIAL_8250_CONSOLE=y 662CONFIG_SERIAL_8250_CONSOLE=y
663CONFIG_SERIAL_8250_PCI=y
657CONFIG_SERIAL_8250_NR_UARTS=4 664CONFIG_SERIAL_8250_NR_UARTS=4
658CONFIG_SERIAL_8250_RUNTIME_UARTS=4 665CONFIG_SERIAL_8250_RUNTIME_UARTS=4
659CONFIG_SERIAL_8250_EXTENDED=y 666CONFIG_SERIAL_8250_EXTENDED=y
@@ -727,10 +734,6 @@ CONFIG_SGI_IP27_RTC=y
727# 734#
728 735
729# 736#
730# Multimedia Capabilities Port drivers
731#
732
733#
734# Multimedia devices 737# Multimedia devices
735# 738#
736# CONFIG_VIDEO_DEV is not set 739# CONFIG_VIDEO_DEV is not set
@@ -755,6 +758,7 @@ CONFIG_SGI_IP27_RTC=y
755# 758#
756CONFIG_USB_ARCH_HAS_HCD=y 759CONFIG_USB_ARCH_HAS_HCD=y
757CONFIG_USB_ARCH_HAS_OHCI=y 760CONFIG_USB_ARCH_HAS_OHCI=y
761CONFIG_USB_ARCH_HAS_EHCI=y
758# CONFIG_USB is not set 762# CONFIG_USB is not set
759 763
760# 764#
@@ -772,17 +776,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
772# CONFIG_MMC is not set 776# CONFIG_MMC is not set
773 777
774# 778#
779# LED devices
780#
781# CONFIG_NEW_LEDS is not set
782
783#
784# LED drivers
785#
786
787#
788# LED Triggers
789#
790
791#
775# InfiniBand support 792# InfiniBand support
776# 793#
777# CONFIG_INFINIBAND is not set 794# CONFIG_INFINIBAND is not set
778 795
779# 796#
780# SN Devices 797# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
781# 798#
782 799
783# 800#
784# EDAC - error detection and reporting (RAS) 801# Real Time Clock
785# 802#
803# CONFIG_RTC_CLASS is not set
786 804
787# 805#
788# File systems 806# File systems
@@ -840,7 +858,6 @@ CONFIG_SYSFS=y
840# CONFIG_TMPFS is not set 858# CONFIG_TMPFS is not set
841# CONFIG_HUGETLB_PAGE is not set 859# CONFIG_HUGETLB_PAGE is not set
842CONFIG_RAMFS=y 860CONFIG_RAMFS=y
843CONFIG_RELAYFS_FS=m
844# CONFIG_CONFIGFS_FS is not set 861# CONFIG_CONFIGFS_FS is not set
845 862
846# 863#
@@ -922,6 +939,7 @@ CONFIG_SGI_PARTITION=y
922# CONFIG_MAGIC_SYSRQ is not set 939# CONFIG_MAGIC_SYSRQ is not set
923# CONFIG_DEBUG_KERNEL is not set 940# CONFIG_DEBUG_KERNEL is not set
924CONFIG_LOG_BUF_SHIFT=15 941CONFIG_LOG_BUF_SHIFT=15
942# CONFIG_DEBUG_FS is not set
925CONFIG_CROSSCOMPILE=y 943CONFIG_CROSSCOMPILE=y
926CONFIG_CMDLINE="" 944CONFIG_CMDLINE=""
927 945
diff --git a/arch/mips/configs/ip32_defconfig b/arch/mips/configs/ip32_defconfig
index 7fdcaf51face..8f11d3565b2d 100644
--- a/arch/mips/configs/ip32_defconfig
+++ b/arch/mips/configs/ip32_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:09 2006 4# Mon Apr 24 14:51:05 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_SGI_IP32=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_ARC=y 70CONFIG_ARC=y
69CONFIG_DMA_IP32=y 71CONFIG_DMA_IP32=y
@@ -142,7 +144,6 @@ CONFIG_PREEMPT_VOLUNTARY=y
142# Code maturity level options 144# Code maturity level options
143# 145#
144CONFIG_EXPERIMENTAL=y 146CONFIG_EXPERIMENTAL=y
145CONFIG_CLEAN_COMPILE=y
146CONFIG_BROKEN_ON_SMP=y 147CONFIG_BROKEN_ON_SMP=y
147CONFIG_INIT_ENV_ARG_LIMIT=32 148CONFIG_INIT_ENV_ARG_LIMIT=32
148 149
@@ -159,6 +160,7 @@ CONFIG_BSD_PROCESS_ACCT=y
159CONFIG_SYSCTL=y 160CONFIG_SYSCTL=y
160# CONFIG_AUDIT is not set 161# CONFIG_AUDIT is not set
161# CONFIG_IKCONFIG is not set 162# CONFIG_IKCONFIG is not set
163CONFIG_RELAY=y
162CONFIG_INITRAMFS_SOURCE="" 164CONFIG_INITRAMFS_SOURCE=""
163# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 165# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
164CONFIG_EMBEDDED=y 166CONFIG_EMBEDDED=y
@@ -172,10 +174,6 @@ CONFIG_BASE_FULL=y
172CONFIG_FUTEX=y 174CONFIG_FUTEX=y
173CONFIG_EPOLL=y 175CONFIG_EPOLL=y
174CONFIG_SHMEM=y 176CONFIG_SHMEM=y
175CONFIG_CC_ALIGN_FUNCTIONS=0
176CONFIG_CC_ALIGN_LABELS=0
177CONFIG_CC_ALIGN_LOOPS=0
178CONFIG_CC_ALIGN_JUMPS=0
179CONFIG_SLAB=y 177CONFIG_SLAB=y
180# CONFIG_TINY_SHMEM is not set 178# CONFIG_TINY_SHMEM is not set
181CONFIG_BASE_SMALL=0 179CONFIG_BASE_SMALL=0
@@ -189,6 +187,7 @@ CONFIG_BASE_SMALL=0
189# 187#
190# Block layer 188# Block layer
191# 189#
190# CONFIG_BLK_DEV_IO_TRACE is not set
192 191
193# 192#
194# IO Schedulers 193# IO Schedulers
@@ -208,7 +207,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
208# 207#
209CONFIG_HW_HAS_PCI=y 208CONFIG_HW_HAS_PCI=y
210CONFIG_PCI=y 209CONFIG_PCI=y
211CONFIG_PCI_LEGACY_PROC=y
212CONFIG_MMU=y 210CONFIG_MMU=y
213 211
214# 212#
@@ -226,6 +224,7 @@ CONFIG_MMU=y
226# 224#
227CONFIG_BINFMT_ELF=y 225CONFIG_BINFMT_ELF=y
228CONFIG_BINFMT_MISC=y 226CONFIG_BINFMT_MISC=y
227# CONFIG_BUILD_ELF64 is not set
229CONFIG_MIPS32_COMPAT=y 228CONFIG_MIPS32_COMPAT=y
230CONFIG_COMPAT=y 229CONFIG_COMPAT=y
231CONFIG_MIPS32_O32=y 230CONFIG_MIPS32_O32=y
@@ -240,6 +239,7 @@ CONFIG_NET=y
240# 239#
241# Networking options 240# Networking options
242# 241#
242# CONFIG_NETDEBUG is not set
243CONFIG_PACKET=y 243CONFIG_PACKET=y
244CONFIG_PACKET_MMAP=y 244CONFIG_PACKET_MMAP=y
245CONFIG_UNIX=y 245CONFIG_UNIX=y
@@ -261,12 +261,15 @@ CONFIG_IP_PNP_BOOTP=y
261# CONFIG_INET_AH is not set 261# CONFIG_INET_AH is not set
262# CONFIG_INET_ESP is not set 262# CONFIG_INET_ESP is not set
263# CONFIG_INET_IPCOMP is not set 263# CONFIG_INET_IPCOMP is not set
264CONFIG_INET_TUNNEL=y 264# CONFIG_INET_XFRM_TUNNEL is not set
265# CONFIG_INET_TUNNEL is not set
265CONFIG_INET_DIAG=y 266CONFIG_INET_DIAG=y
266CONFIG_INET_TCP_DIAG=y 267CONFIG_INET_TCP_DIAG=y
267# CONFIG_TCP_CONG_ADVANCED is not set 268# CONFIG_TCP_CONG_ADVANCED is not set
268CONFIG_TCP_CONG_BIC=y 269CONFIG_TCP_CONG_BIC=y
269# CONFIG_IPV6 is not set 270# CONFIG_IPV6 is not set
271# CONFIG_INET6_XFRM_TUNNEL is not set
272# CONFIG_INET6_TUNNEL is not set
270# CONFIG_NETFILTER is not set 273# CONFIG_NETFILTER is not set
271 274
272# 275#
@@ -278,6 +281,11 @@ CONFIG_TCP_CONG_BIC=y
278# SCTP Configuration (EXPERIMENTAL) 281# SCTP Configuration (EXPERIMENTAL)
279# 282#
280# CONFIG_IP_SCTP is not set 283# CONFIG_IP_SCTP is not set
284
285#
286# TIPC Configuration (EXPERIMENTAL)
287#
288# CONFIG_TIPC is not set
281# CONFIG_ATM is not set 289# CONFIG_ATM is not set
282# CONFIG_BRIDGE is not set 290# CONFIG_BRIDGE is not set
283# CONFIG_VLAN_8021Q is not set 291# CONFIG_VLAN_8021Q is not set
@@ -287,11 +295,6 @@ CONFIG_TCP_CONG_BIC=y
287# CONFIG_ATALK is not set 295# CONFIG_ATALK is not set
288# CONFIG_X25 is not set 296# CONFIG_X25 is not set
289# CONFIG_LAPB is not set 297# CONFIG_LAPB is not set
290
291#
292# TIPC Configuration (EXPERIMENTAL)
293#
294# CONFIG_TIPC is not set
295# CONFIG_NET_DIVERT is not set 298# CONFIG_NET_DIVERT is not set
296# CONFIG_ECONET is not set 299# CONFIG_ECONET is not set
297# CONFIG_WAN_ROUTER is not set 300# CONFIG_WAN_ROUTER is not set
@@ -312,6 +315,9 @@ CONFIG_IEEE80211=y
312# CONFIG_IEEE80211_DEBUG is not set 315# CONFIG_IEEE80211_DEBUG is not set
313CONFIG_IEEE80211_CRYPT_WEP=y 316CONFIG_IEEE80211_CRYPT_WEP=y
314CONFIG_IEEE80211_CRYPT_CCMP=y 317CONFIG_IEEE80211_CRYPT_CCMP=y
318CONFIG_IEEE80211_SOFTMAC=y
319# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
320CONFIG_WIRELESS_EXT=y
315 321
316# 322#
317# Device Drivers 323# Device Drivers
@@ -357,7 +363,7 @@ CONFIG_BLK_DEV_LOOP=y
357# CONFIG_BLK_DEV_NBD is not set 363# CONFIG_BLK_DEV_NBD is not set
358# CONFIG_BLK_DEV_SX8 is not set 364# CONFIG_BLK_DEV_SX8 is not set
359# CONFIG_BLK_DEV_RAM is not set 365# CONFIG_BLK_DEV_RAM is not set
360CONFIG_BLK_DEV_RAM_COUNT=16 366# CONFIG_BLK_DEV_INITRD is not set
361CONFIG_CDROM_PKTCDVD=y 367CONFIG_CDROM_PKTCDVD=y
362CONFIG_CDROM_PKTCDVD_BUFFERS=8 368CONFIG_CDROM_PKTCDVD_BUFFERS=8
363# CONFIG_CDROM_PKTCDVD_WCACHE is not set 369# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -428,7 +434,6 @@ CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
428# CONFIG_SCSI_INIA100 is not set 434# CONFIG_SCSI_INIA100 is not set
429# CONFIG_SCSI_SYM53C8XX_2 is not set 435# CONFIG_SCSI_SYM53C8XX_2 is not set
430# CONFIG_SCSI_IPR is not set 436# CONFIG_SCSI_IPR is not set
431# CONFIG_SCSI_QLOGIC_FC is not set
432# CONFIG_SCSI_QLOGIC_1280 is not set 437# CONFIG_SCSI_QLOGIC_1280 is not set
433# CONFIG_SCSI_QLA_FC is not set 438# CONFIG_SCSI_QLA_FC is not set
434# CONFIG_SCSI_LPFC is not set 439# CONFIG_SCSI_LPFC is not set
@@ -615,6 +620,7 @@ CONFIG_HW_CONSOLE=y
615# 620#
616CONFIG_SERIAL_8250=y 621CONFIG_SERIAL_8250=y
617CONFIG_SERIAL_8250_CONSOLE=y 622CONFIG_SERIAL_8250_CONSOLE=y
623CONFIG_SERIAL_8250_PCI=y
618CONFIG_SERIAL_8250_NR_UARTS=4 624CONFIG_SERIAL_8250_NR_UARTS=4
619CONFIG_SERIAL_8250_RUNTIME_UARTS=4 625CONFIG_SERIAL_8250_RUNTIME_UARTS=4
620# CONFIG_SERIAL_8250_EXTENDED is not set 626# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -624,6 +630,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
624# 630#
625CONFIG_SERIAL_CORE=y 631CONFIG_SERIAL_CORE=y
626CONFIG_SERIAL_CORE_CONSOLE=y 632CONFIG_SERIAL_CORE_CONSOLE=y
633# CONFIG_SERIAL_JSM is not set
627CONFIG_UNIX98_PTYS=y 634CONFIG_UNIX98_PTYS=y
628CONFIG_LEGACY_PTYS=y 635CONFIG_LEGACY_PTYS=y
629CONFIG_LEGACY_PTY_COUNT=256 636CONFIG_LEGACY_PTY_COUNT=256
@@ -682,10 +689,6 @@ CONFIG_LEGACY_PTY_COUNT=256
682# 689#
683 690
684# 691#
685# Multimedia Capabilities Port drivers
686#
687
688#
689# Multimedia devices 692# Multimedia devices
690# 693#
691# CONFIG_VIDEO_DEV is not set 694# CONFIG_VIDEO_DEV is not set
@@ -716,6 +719,7 @@ CONFIG_DUMMY_CONSOLE=y
716# 719#
717CONFIG_USB_ARCH_HAS_HCD=y 720CONFIG_USB_ARCH_HAS_HCD=y
718CONFIG_USB_ARCH_HAS_OHCI=y 721CONFIG_USB_ARCH_HAS_OHCI=y
722CONFIG_USB_ARCH_HAS_EHCI=y
719# CONFIG_USB is not set 723# CONFIG_USB is not set
720 724
721# 725#
@@ -733,13 +737,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
733# CONFIG_MMC is not set 737# CONFIG_MMC is not set
734 738
735# 739#
740# LED devices
741#
742# CONFIG_NEW_LEDS is not set
743
744#
745# LED drivers
746#
747
748#
749# LED Triggers
750#
751
752#
736# InfiniBand support 753# InfiniBand support
737# 754#
738# CONFIG_INFINIBAND is not set 755# CONFIG_INFINIBAND is not set
739 756
740# 757#
741# SN Devices 758# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
759#
760
761#
762# Real Time Clock
742# 763#
764# CONFIG_RTC_CLASS is not set
743 765
744# 766#
745# File systems 767# File systems
@@ -784,7 +806,6 @@ CONFIG_SYSFS=y
784CONFIG_TMPFS=y 806CONFIG_TMPFS=y
785# CONFIG_HUGETLB_PAGE is not set 807# CONFIG_HUGETLB_PAGE is not set
786CONFIG_RAMFS=y 808CONFIG_RAMFS=y
787CONFIG_RELAYFS_FS=y
788# CONFIG_CONFIGFS_FS is not set 809# CONFIG_CONFIGFS_FS is not set
789 810
790# 811#
@@ -861,6 +882,8 @@ CONFIG_SGI_PARTITION=y
861# CONFIG_MAGIC_SYSRQ is not set 882# CONFIG_MAGIC_SYSRQ is not set
862# CONFIG_DEBUG_KERNEL is not set 883# CONFIG_DEBUG_KERNEL is not set
863CONFIG_LOG_BUF_SHIFT=14 884CONFIG_LOG_BUF_SHIFT=14
885# CONFIG_DEBUG_FS is not set
886# CONFIG_UNWIND_INFO is not set
864CONFIG_CROSSCOMPILE=y 887CONFIG_CROSSCOMPILE=y
865CONFIG_CMDLINE="" 888CONFIG_CMDLINE=""
866 889
diff --git a/arch/mips/configs/it8172_defconfig b/arch/mips/configs/it8172_defconfig
index c716996d9eca..757adf23853d 100644
--- a/arch/mips/configs/it8172_defconfig
+++ b/arch/mips/configs/it8172_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:10 2006 4# Mon Apr 24 14:51:05 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -65,6 +65,8 @@ CONFIG_MIPS_ITE8172=y
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66# CONFIG_IT8172_REVC is not set 66# CONFIG_IT8172_REVC is not set
67CONFIG_RWSEM_GENERIC_SPINLOCK=y 67CONFIG_RWSEM_GENERIC_SPINLOCK=y
68CONFIG_GENERIC_FIND_NEXT_BIT=y
69CONFIG_GENERIC_HWEIGHT=y
68CONFIG_GENERIC_CALIBRATE_DELAY=y 70CONFIG_GENERIC_CALIBRATE_DELAY=y
69CONFIG_DMA_NONCOHERENT=y 71CONFIG_DMA_NONCOHERENT=y
70CONFIG_DMA_NEED_PCI_MAP_STATE=y 72CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -115,7 +117,6 @@ CONFIG_PAGE_SIZE_4KB=y
115# CONFIG_PAGE_SIZE_16KB is not set 117# CONFIG_PAGE_SIZE_16KB is not set
116# CONFIG_PAGE_SIZE_64KB is not set 118# CONFIG_PAGE_SIZE_64KB is not set
117# CONFIG_MIPS_MT is not set 119# CONFIG_MIPS_MT is not set
118# CONFIG_CPU_ADVANCED is not set
119CONFIG_CPU_HAS_LLSC=y 120CONFIG_CPU_HAS_LLSC=y
120CONFIG_CPU_HAS_SYNC=y 121CONFIG_CPU_HAS_SYNC=y
121CONFIG_GENERIC_HARDIRQS=y 122CONFIG_GENERIC_HARDIRQS=y
@@ -137,7 +138,6 @@ CONFIG_PREEMPT_NONE=y
137# Code maturity level options 138# Code maturity level options
138# 139#
139CONFIG_EXPERIMENTAL=y 140CONFIG_EXPERIMENTAL=y
140CONFIG_CLEAN_COMPILE=y
141CONFIG_BROKEN_ON_SMP=y 141CONFIG_BROKEN_ON_SMP=y
142CONFIG_INIT_ENV_ARG_LIMIT=32 142CONFIG_INIT_ENV_ARG_LIMIT=32
143 143
@@ -154,6 +154,7 @@ CONFIG_BSD_PROCESS_ACCT=y
154CONFIG_SYSCTL=y 154CONFIG_SYSCTL=y
155# CONFIG_AUDIT is not set 155# CONFIG_AUDIT is not set
156# CONFIG_IKCONFIG is not set 156# CONFIG_IKCONFIG is not set
157CONFIG_RELAY=y
157CONFIG_INITRAMFS_SOURCE="" 158CONFIG_INITRAMFS_SOURCE=""
158# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 159# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
159CONFIG_EMBEDDED=y 160CONFIG_EMBEDDED=y
@@ -167,10 +168,6 @@ CONFIG_BASE_FULL=y
167CONFIG_FUTEX=y 168CONFIG_FUTEX=y
168CONFIG_EPOLL=y 169CONFIG_EPOLL=y
169CONFIG_SHMEM=y 170CONFIG_SHMEM=y
170CONFIG_CC_ALIGN_FUNCTIONS=0
171CONFIG_CC_ALIGN_LABELS=0
172CONFIG_CC_ALIGN_LOOPS=0
173CONFIG_CC_ALIGN_JUMPS=0
174CONFIG_SLAB=y 171CONFIG_SLAB=y
175# CONFIG_TINY_SHMEM is not set 172# CONFIG_TINY_SHMEM is not set
176CONFIG_BASE_SMALL=0 173CONFIG_BASE_SMALL=0
@@ -183,7 +180,6 @@ CONFIG_OBSOLETE_INTERMODULE=y
183CONFIG_MODULES=y 180CONFIG_MODULES=y
184CONFIG_MODULE_UNLOAD=y 181CONFIG_MODULE_UNLOAD=y
185# CONFIG_MODULE_FORCE_UNLOAD is not set 182# CONFIG_MODULE_FORCE_UNLOAD is not set
186CONFIG_OBSOLETE_MODPARM=y
187CONFIG_MODVERSIONS=y 183CONFIG_MODVERSIONS=y
188CONFIG_MODULE_SRCVERSION_ALL=y 184CONFIG_MODULE_SRCVERSION_ALL=y
189CONFIG_KMOD=y 185CONFIG_KMOD=y
@@ -192,6 +188,8 @@ CONFIG_KMOD=y
192# Block layer 188# Block layer
193# 189#
194# CONFIG_LBD is not set 190# CONFIG_LBD is not set
191# CONFIG_BLK_DEV_IO_TRACE is not set
192# CONFIG_LSF is not set
195 193
196# 194#
197# IO Schedulers 195# IO Schedulers
@@ -237,6 +235,7 @@ CONFIG_NET=y
237# 235#
238# Networking options 236# Networking options
239# 237#
238# CONFIG_NETDEBUG is not set
240CONFIG_PACKET=y 239CONFIG_PACKET=y
241CONFIG_PACKET_MMAP=y 240CONFIG_PACKET_MMAP=y
242CONFIG_UNIX=y 241CONFIG_UNIX=y
@@ -258,12 +257,15 @@ CONFIG_IP_PNP_BOOTP=y
258# CONFIG_INET_AH is not set 257# CONFIG_INET_AH is not set
259# CONFIG_INET_ESP is not set 258# CONFIG_INET_ESP is not set
260# CONFIG_INET_IPCOMP is not set 259# CONFIG_INET_IPCOMP is not set
261CONFIG_INET_TUNNEL=m 260# CONFIG_INET_XFRM_TUNNEL is not set
261# CONFIG_INET_TUNNEL is not set
262CONFIG_INET_DIAG=y 262CONFIG_INET_DIAG=y
263CONFIG_INET_TCP_DIAG=y 263CONFIG_INET_TCP_DIAG=y
264# CONFIG_TCP_CONG_ADVANCED is not set 264# CONFIG_TCP_CONG_ADVANCED is not set
265CONFIG_TCP_CONG_BIC=y 265CONFIG_TCP_CONG_BIC=y
266# CONFIG_IPV6 is not set 266# CONFIG_IPV6 is not set
267# CONFIG_INET6_XFRM_TUNNEL is not set
268# CONFIG_INET6_TUNNEL is not set
267# CONFIG_NETFILTER is not set 269# CONFIG_NETFILTER is not set
268 270
269# 271#
@@ -275,6 +277,11 @@ CONFIG_TCP_CONG_BIC=y
275# SCTP Configuration (EXPERIMENTAL) 277# SCTP Configuration (EXPERIMENTAL)
276# 278#
277# CONFIG_IP_SCTP is not set 279# CONFIG_IP_SCTP is not set
280
281#
282# TIPC Configuration (EXPERIMENTAL)
283#
284# CONFIG_TIPC is not set
278# CONFIG_ATM is not set 285# CONFIG_ATM is not set
279# CONFIG_BRIDGE is not set 286# CONFIG_BRIDGE is not set
280# CONFIG_VLAN_8021Q is not set 287# CONFIG_VLAN_8021Q is not set
@@ -284,11 +291,6 @@ CONFIG_TCP_CONG_BIC=y
284# CONFIG_ATALK is not set 291# CONFIG_ATALK is not set
285# CONFIG_X25 is not set 292# CONFIG_X25 is not set
286# CONFIG_LAPB is not set 293# CONFIG_LAPB is not set
287
288#
289# TIPC Configuration (EXPERIMENTAL)
290#
291# CONFIG_TIPC is not set
292# CONFIG_NET_DIVERT is not set 294# CONFIG_NET_DIVERT is not set
293# CONFIG_ECONET is not set 295# CONFIG_ECONET is not set
294# CONFIG_WAN_ROUTER is not set 296# CONFIG_WAN_ROUTER is not set
@@ -309,6 +311,9 @@ CONFIG_IEEE80211=m
309# CONFIG_IEEE80211_DEBUG is not set 311# CONFIG_IEEE80211_DEBUG is not set
310CONFIG_IEEE80211_CRYPT_WEP=m 312CONFIG_IEEE80211_CRYPT_WEP=m
311CONFIG_IEEE80211_CRYPT_CCMP=m 313CONFIG_IEEE80211_CRYPT_CCMP=m
314CONFIG_IEEE80211_SOFTMAC=m
315# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
316CONFIG_WIRELESS_EXT=y
312 317
313# 318#
314# Device Drivers 319# Device Drivers
@@ -387,7 +392,6 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
387# CONFIG_MTD_SLRAM is not set 392# CONFIG_MTD_SLRAM is not set
388# CONFIG_MTD_PHRAM is not set 393# CONFIG_MTD_PHRAM is not set
389# CONFIG_MTD_MTDRAM is not set 394# CONFIG_MTD_MTDRAM is not set
390# CONFIG_MTD_BLKMTD is not set
391# CONFIG_MTD_BLOCK2MTD is not set 395# CONFIG_MTD_BLOCK2MTD is not set
392 396
393# 397#
@@ -424,7 +428,7 @@ CONFIG_BLK_DEV_LOOP=y
424# CONFIG_BLK_DEV_CRYPTOLOOP is not set 428# CONFIG_BLK_DEV_CRYPTOLOOP is not set
425# CONFIG_BLK_DEV_NBD is not set 429# CONFIG_BLK_DEV_NBD is not set
426# CONFIG_BLK_DEV_RAM is not set 430# CONFIG_BLK_DEV_RAM is not set
427CONFIG_BLK_DEV_RAM_COUNT=16 431# CONFIG_BLK_DEV_INITRD is not set
428CONFIG_CDROM_PKTCDVD=m 432CONFIG_CDROM_PKTCDVD=m
429CONFIG_CDROM_PKTCDVD_BUFFERS=8 433CONFIG_CDROM_PKTCDVD_BUFFERS=8
430# CONFIG_CDROM_PKTCDVD_WCACHE is not set 434# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -666,10 +670,6 @@ CONFIG_LEGACY_PTY_COUNT=256
666# 670#
667 671
668# 672#
669# Multimedia Capabilities Port drivers
670#
671
672#
673# Multimedia devices 673# Multimedia devices
674# 674#
675# CONFIG_VIDEO_DEV is not set 675# CONFIG_VIDEO_DEV is not set
@@ -704,7 +704,6 @@ CONFIG_SOUND=y
704# Open Sound System 704# Open Sound System
705# 705#
706CONFIG_SOUND_PRIME=y 706CONFIG_SOUND_PRIME=y
707# CONFIG_OBSOLETE_OSS_DRIVER is not set
708CONFIG_SOUND_IT8172=y 707CONFIG_SOUND_IT8172=y
709# CONFIG_SOUND_MSNDCLAS is not set 708# CONFIG_SOUND_MSNDCLAS is not set
710# CONFIG_SOUND_MSNDPIN is not set 709# CONFIG_SOUND_MSNDPIN is not set
@@ -714,6 +713,7 @@ CONFIG_SOUND_IT8172=y
714# 713#
715# CONFIG_USB_ARCH_HAS_HCD is not set 714# CONFIG_USB_ARCH_HAS_HCD is not set
716# 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 717
718# 718#
719# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 719# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -730,12 +730,30 @@ CONFIG_SOUND_IT8172=y
730# CONFIG_MMC is not set 730# CONFIG_MMC is not set
731 731
732# 732#
733# LED devices
734#
735# CONFIG_NEW_LEDS is not set
736
737#
738# LED drivers
739#
740
741#
742# LED Triggers
743#
744
745#
733# InfiniBand support 746# InfiniBand support
734# 747#
735 748
736# 749#
737# SN Devices 750# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
751#
752
753#
754# Real Time Clock
738# 755#
756# CONFIG_RTC_CLASS is not set
739 757
740# 758#
741# File systems 759# File systems
@@ -780,7 +798,6 @@ CONFIG_SYSFS=y
780# CONFIG_TMPFS is not set 798# CONFIG_TMPFS is not set
781# CONFIG_HUGETLB_PAGE is not set 799# CONFIG_HUGETLB_PAGE is not set
782CONFIG_RAMFS=y 800CONFIG_RAMFS=y
783CONFIG_RELAYFS_FS=m
784# CONFIG_CONFIGFS_FS is not set 801# CONFIG_CONFIGFS_FS is not set
785 802
786# 803#
@@ -846,6 +863,7 @@ CONFIG_MSDOS_PARTITION=y
846# CONFIG_MAGIC_SYSRQ is not set 863# CONFIG_MAGIC_SYSRQ is not set
847# CONFIG_DEBUG_KERNEL is not set 864# CONFIG_DEBUG_KERNEL is not set
848CONFIG_LOG_BUF_SHIFT=14 865CONFIG_LOG_BUF_SHIFT=14
866# CONFIG_DEBUG_FS is not set
849CONFIG_CROSSCOMPILE=y 867CONFIG_CROSSCOMPILE=y
850CONFIG_CMDLINE="" 868CONFIG_CMDLINE=""
851 869
diff --git a/arch/mips/configs/ivr_defconfig b/arch/mips/configs/ivr_defconfig
index a8376d125e11..021761a8a237 100644
--- a/arch/mips/configs/ivr_defconfig
+++ b/arch/mips/configs/ivr_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:11 2006 4# Mon Apr 24 14:51:06 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_IVR=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -112,7 +114,6 @@ CONFIG_PAGE_SIZE_4KB=y
112# CONFIG_PAGE_SIZE_16KB is not set 114# CONFIG_PAGE_SIZE_16KB is not set
113# CONFIG_PAGE_SIZE_64KB is not set 115# CONFIG_PAGE_SIZE_64KB is not set
114# CONFIG_MIPS_MT is not set 116# CONFIG_MIPS_MT is not set
115# CONFIG_CPU_ADVANCED is not set
116CONFIG_CPU_HAS_LLSC=y 117CONFIG_CPU_HAS_LLSC=y
117CONFIG_CPU_HAS_SYNC=y 118CONFIG_CPU_HAS_SYNC=y
118CONFIG_GENERIC_HARDIRQS=y 119CONFIG_GENERIC_HARDIRQS=y
@@ -134,7 +135,6 @@ CONFIG_PREEMPT_NONE=y
134# Code maturity level options 135# Code maturity level options
135# 136#
136CONFIG_EXPERIMENTAL=y 137CONFIG_EXPERIMENTAL=y
137CONFIG_CLEAN_COMPILE=y
138CONFIG_BROKEN_ON_SMP=y 138CONFIG_BROKEN_ON_SMP=y
139CONFIG_INIT_ENV_ARG_LIMIT=32 139CONFIG_INIT_ENV_ARG_LIMIT=32
140 140
@@ -151,6 +151,7 @@ CONFIG_BSD_PROCESS_ACCT=y
151CONFIG_SYSCTL=y 151CONFIG_SYSCTL=y
152# CONFIG_AUDIT is not set 152# CONFIG_AUDIT is not set
153# CONFIG_IKCONFIG is not set 153# CONFIG_IKCONFIG is not set
154CONFIG_RELAY=y
154CONFIG_INITRAMFS_SOURCE="" 155CONFIG_INITRAMFS_SOURCE=""
155# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 156# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
156CONFIG_EMBEDDED=y 157CONFIG_EMBEDDED=y
@@ -164,10 +165,6 @@ CONFIG_BASE_FULL=y
164CONFIG_FUTEX=y 165CONFIG_FUTEX=y
165CONFIG_EPOLL=y 166CONFIG_EPOLL=y
166CONFIG_SHMEM=y 167CONFIG_SHMEM=y
167CONFIG_CC_ALIGN_FUNCTIONS=0
168CONFIG_CC_ALIGN_LABELS=0
169CONFIG_CC_ALIGN_LOOPS=0
170CONFIG_CC_ALIGN_JUMPS=0
171CONFIG_SLAB=y 168CONFIG_SLAB=y
172# CONFIG_TINY_SHMEM is not set 169# CONFIG_TINY_SHMEM is not set
173CONFIG_BASE_SMALL=0 170CONFIG_BASE_SMALL=0
@@ -179,7 +176,6 @@ CONFIG_BASE_SMALL=0
179CONFIG_MODULES=y 176CONFIG_MODULES=y
180CONFIG_MODULE_UNLOAD=y 177CONFIG_MODULE_UNLOAD=y
181# CONFIG_MODULE_FORCE_UNLOAD is not set 178# CONFIG_MODULE_FORCE_UNLOAD is not set
182CONFIG_OBSOLETE_MODPARM=y
183CONFIG_MODVERSIONS=y 179CONFIG_MODVERSIONS=y
184CONFIG_MODULE_SRCVERSION_ALL=y 180CONFIG_MODULE_SRCVERSION_ALL=y
185CONFIG_KMOD=y 181CONFIG_KMOD=y
@@ -188,6 +184,8 @@ CONFIG_KMOD=y
188# Block layer 184# Block layer
189# 185#
190# CONFIG_LBD is not set 186# CONFIG_LBD is not set
187# CONFIG_BLK_DEV_IO_TRACE is not set
188# CONFIG_LSF is not set
191 189
192# 190#
193# IO Schedulers 191# IO Schedulers
@@ -207,7 +205,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
207# 205#
208CONFIG_HW_HAS_PCI=y 206CONFIG_HW_HAS_PCI=y
209CONFIG_PCI=y 207CONFIG_PCI=y
210CONFIG_PCI_LEGACY_PROC=y
211CONFIG_MMU=y 208CONFIG_MMU=y
212 209
213# 210#
@@ -235,6 +232,7 @@ CONFIG_NET=y
235# 232#
236# Networking options 233# Networking options
237# 234#
235# CONFIG_NETDEBUG is not set
238CONFIG_PACKET=y 236CONFIG_PACKET=y
239CONFIG_PACKET_MMAP=y 237CONFIG_PACKET_MMAP=y
240CONFIG_UNIX=y 238CONFIG_UNIX=y
@@ -256,12 +254,15 @@ CONFIG_IP_PNP_BOOTP=y
256# CONFIG_INET_AH is not set 254# CONFIG_INET_AH is not set
257# CONFIG_INET_ESP is not set 255# CONFIG_INET_ESP is not set
258# CONFIG_INET_IPCOMP is not set 256# CONFIG_INET_IPCOMP is not set
259CONFIG_INET_TUNNEL=m 257# CONFIG_INET_XFRM_TUNNEL is not set
258# CONFIG_INET_TUNNEL is not set
260CONFIG_INET_DIAG=y 259CONFIG_INET_DIAG=y
261CONFIG_INET_TCP_DIAG=y 260CONFIG_INET_TCP_DIAG=y
262# CONFIG_TCP_CONG_ADVANCED is not set 261# CONFIG_TCP_CONG_ADVANCED is not set
263CONFIG_TCP_CONG_BIC=y 262CONFIG_TCP_CONG_BIC=y
264# CONFIG_IPV6 is not set 263# CONFIG_IPV6 is not set
264# CONFIG_INET6_XFRM_TUNNEL is not set
265# CONFIG_INET6_TUNNEL is not set
265# CONFIG_NETFILTER is not set 266# CONFIG_NETFILTER is not set
266 267
267# 268#
@@ -273,6 +274,11 @@ CONFIG_TCP_CONG_BIC=y
273# SCTP Configuration (EXPERIMENTAL) 274# SCTP Configuration (EXPERIMENTAL)
274# 275#
275# CONFIG_IP_SCTP is not set 276# CONFIG_IP_SCTP is not set
277
278#
279# TIPC Configuration (EXPERIMENTAL)
280#
281# CONFIG_TIPC is not set
276# CONFIG_ATM is not set 282# CONFIG_ATM is not set
277# CONFIG_BRIDGE is not set 283# CONFIG_BRIDGE is not set
278# CONFIG_VLAN_8021Q is not set 284# CONFIG_VLAN_8021Q is not set
@@ -282,11 +288,6 @@ CONFIG_TCP_CONG_BIC=y
282# CONFIG_ATALK is not set 288# CONFIG_ATALK is not set
283# CONFIG_X25 is not set 289# CONFIG_X25 is not set
284# CONFIG_LAPB is not set 290# CONFIG_LAPB is not set
285
286#
287# TIPC Configuration (EXPERIMENTAL)
288#
289# CONFIG_TIPC is not set
290# CONFIG_NET_DIVERT is not set 291# CONFIG_NET_DIVERT is not set
291# CONFIG_ECONET is not set 292# CONFIG_ECONET is not set
292# CONFIG_WAN_ROUTER is not set 293# CONFIG_WAN_ROUTER is not set
@@ -307,6 +308,9 @@ CONFIG_IEEE80211=m
307# CONFIG_IEEE80211_DEBUG is not set 308# CONFIG_IEEE80211_DEBUG is not set
308CONFIG_IEEE80211_CRYPT_WEP=m 309CONFIG_IEEE80211_CRYPT_WEP=m
309CONFIG_IEEE80211_CRYPT_CCMP=m 310CONFIG_IEEE80211_CRYPT_CCMP=m
311CONFIG_IEEE80211_SOFTMAC=m
312# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
313CONFIG_WIRELESS_EXT=y
310 314
311# 315#
312# Device Drivers 316# Device Drivers
@@ -350,7 +354,7 @@ CONFIG_CONNECTOR=m
350# CONFIG_BLK_DEV_NBD is not set 354# CONFIG_BLK_DEV_NBD is not set
351# CONFIG_BLK_DEV_SX8 is not set 355# CONFIG_BLK_DEV_SX8 is not set
352# CONFIG_BLK_DEV_RAM is not set 356# CONFIG_BLK_DEV_RAM is not set
353CONFIG_BLK_DEV_RAM_COUNT=16 357# CONFIG_BLK_DEV_INITRD is not set
354CONFIG_CDROM_PKTCDVD=m 358CONFIG_CDROM_PKTCDVD=m
355CONFIG_CDROM_PKTCDVD_BUFFERS=8 359CONFIG_CDROM_PKTCDVD_BUFFERS=8
356# CONFIG_CDROM_PKTCDVD_WCACHE is not set 360# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -565,6 +569,7 @@ CONFIG_IT8172_SCR1=y
565# 569#
566CONFIG_SERIAL_8250=y 570CONFIG_SERIAL_8250=y
567CONFIG_SERIAL_8250_CONSOLE=y 571CONFIG_SERIAL_8250_CONSOLE=y
572CONFIG_SERIAL_8250_PCI=y
568CONFIG_SERIAL_8250_NR_UARTS=4 573CONFIG_SERIAL_8250_NR_UARTS=4
569CONFIG_SERIAL_8250_RUNTIME_UARTS=4 574CONFIG_SERIAL_8250_RUNTIME_UARTS=4
570# CONFIG_SERIAL_8250_EXTENDED is not set 575# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -574,6 +579,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
574# 579#
575CONFIG_SERIAL_CORE=y 580CONFIG_SERIAL_CORE=y
576CONFIG_SERIAL_CORE_CONSOLE=y 581CONFIG_SERIAL_CORE_CONSOLE=y
582# CONFIG_SERIAL_JSM is not set
577CONFIG_UNIX98_PTYS=y 583CONFIG_UNIX98_PTYS=y
578CONFIG_LEGACY_PTYS=y 584CONFIG_LEGACY_PTYS=y
579CONFIG_LEGACY_PTY_COUNT=256 585CONFIG_LEGACY_PTY_COUNT=256
@@ -631,10 +637,6 @@ CONFIG_RTC=y
631# 637#
632 638
633# 639#
634# Multimedia Capabilities Port drivers
635#
636
637#
638# Multimedia devices 640# Multimedia devices
639# 641#
640# CONFIG_VIDEO_DEV is not set 642# CONFIG_VIDEO_DEV is not set
@@ -665,6 +667,7 @@ CONFIG_DUMMY_CONSOLE=y
665# 667#
666CONFIG_USB_ARCH_HAS_HCD=y 668CONFIG_USB_ARCH_HAS_HCD=y
667CONFIG_USB_ARCH_HAS_OHCI=y 669CONFIG_USB_ARCH_HAS_OHCI=y
670CONFIG_USB_ARCH_HAS_EHCI=y
668# CONFIG_USB is not set 671# CONFIG_USB is not set
669 672
670# 673#
@@ -682,13 +685,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
682# CONFIG_MMC is not set 685# CONFIG_MMC is not set
683 686
684# 687#
688# LED devices
689#
690# CONFIG_NEW_LEDS is not set
691
692#
693# LED drivers
694#
695
696#
697# LED Triggers
698#
699
700#
685# InfiniBand support 701# InfiniBand support
686# 702#
687# CONFIG_INFINIBAND is not set 703# CONFIG_INFINIBAND is not set
688 704
689# 705#
690# SN Devices 706# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
707#
708
709#
710# Real Time Clock
691# 711#
712# CONFIG_RTC_CLASS is not set
692 713
693# 714#
694# File systems 715# File systems
@@ -733,7 +754,6 @@ CONFIG_SYSFS=y
733# CONFIG_TMPFS is not set 754# CONFIG_TMPFS is not set
734# CONFIG_HUGETLB_PAGE is not set 755# CONFIG_HUGETLB_PAGE is not set
735CONFIG_RAMFS=y 756CONFIG_RAMFS=y
736CONFIG_RELAYFS_FS=m
737# CONFIG_CONFIGFS_FS is not set 757# CONFIG_CONFIGFS_FS is not set
738 758
739# 759#
@@ -797,6 +817,7 @@ CONFIG_MSDOS_PARTITION=y
797# CONFIG_MAGIC_SYSRQ is not set 817# CONFIG_MAGIC_SYSRQ is not set
798# CONFIG_DEBUG_KERNEL is not set 818# CONFIG_DEBUG_KERNEL is not set
799CONFIG_LOG_BUF_SHIFT=14 819CONFIG_LOG_BUF_SHIFT=14
820# CONFIG_DEBUG_FS is not set
800CONFIG_CROSSCOMPILE=y 821CONFIG_CROSSCOMPILE=y
801CONFIG_CMDLINE="" 822CONFIG_CMDLINE=""
802 823
diff --git a/arch/mips/configs/jaguar-atx_defconfig b/arch/mips/configs/jaguar-atx_defconfig
index 316015379dbc..08f6c30b0abc 100644
--- a/arch/mips/configs/jaguar-atx_defconfig
+++ b/arch/mips/configs/jaguar-atx_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:12 2006 4# Mon Apr 24 14:51:06 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -65,6 +65,8 @@ CONFIG_MOMENCO_JAGUAR_ATX=y
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_JAGUAR_DMALOW=y 66CONFIG_JAGUAR_DMALOW=y
67CONFIG_RWSEM_GENERIC_SPINLOCK=y 67CONFIG_RWSEM_GENERIC_SPINLOCK=y
68CONFIG_GENERIC_FIND_NEXT_BIT=y
69CONFIG_GENERIC_HWEIGHT=y
68CONFIG_GENERIC_CALIBRATE_DELAY=y 70CONFIG_GENERIC_CALIBRATE_DELAY=y
69CONFIG_DMA_NONCOHERENT=y 71CONFIG_DMA_NONCOHERENT=y
70CONFIG_DMA_NEED_PCI_MAP_STATE=y 72CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -122,7 +124,6 @@ CONFIG_RM7000_CPU_SCACHE=y
122CONFIG_CPU_HAS_PREFETCH=y 124CONFIG_CPU_HAS_PREFETCH=y
123# CONFIG_MIPS_MT is not set 125# CONFIG_MIPS_MT is not set
124# CONFIG_64BIT_PHYS_ADDR is not set 126# CONFIG_64BIT_PHYS_ADDR is not set
125# CONFIG_CPU_ADVANCED is not set
126CONFIG_CPU_HAS_LLSC=y 127CONFIG_CPU_HAS_LLSC=y
127CONFIG_CPU_HAS_SYNC=y 128CONFIG_CPU_HAS_SYNC=y
128CONFIG_GENERIC_HARDIRQS=y 129CONFIG_GENERIC_HARDIRQS=y
@@ -144,7 +145,6 @@ CONFIG_PREEMPT_NONE=y
144# Code maturity level options 145# Code maturity level options
145# 146#
146# CONFIG_EXPERIMENTAL is not set 147# CONFIG_EXPERIMENTAL is not set
147CONFIG_CLEAN_COMPILE=y
148CONFIG_BROKEN_ON_SMP=y 148CONFIG_BROKEN_ON_SMP=y
149CONFIG_INIT_ENV_ARG_LIMIT=32 149CONFIG_INIT_ENV_ARG_LIMIT=32
150 150
@@ -160,6 +160,7 @@ CONFIG_SYSCTL=y
160# CONFIG_AUDIT is not set 160# CONFIG_AUDIT is not set
161CONFIG_IKCONFIG=y 161CONFIG_IKCONFIG=y
162CONFIG_IKCONFIG_PROC=y 162CONFIG_IKCONFIG_PROC=y
163CONFIG_RELAY=y
163CONFIG_INITRAMFS_SOURCE="" 164CONFIG_INITRAMFS_SOURCE=""
164CONFIG_EMBEDDED=y 165CONFIG_EMBEDDED=y
165CONFIG_KALLSYMS=y 166CONFIG_KALLSYMS=y
@@ -172,10 +173,6 @@ CONFIG_BASE_FULL=y
172CONFIG_FUTEX=y 173CONFIG_FUTEX=y
173CONFIG_EPOLL=y 174CONFIG_EPOLL=y
174CONFIG_SHMEM=y 175CONFIG_SHMEM=y
175CONFIG_CC_ALIGN_FUNCTIONS=0
176CONFIG_CC_ALIGN_LABELS=0
177CONFIG_CC_ALIGN_LOOPS=0
178CONFIG_CC_ALIGN_JUMPS=0
179CONFIG_SLAB=y 176CONFIG_SLAB=y
180# CONFIG_TINY_SHMEM is not set 177# CONFIG_TINY_SHMEM is not set
181CONFIG_BASE_SMALL=0 178CONFIG_BASE_SMALL=0
@@ -186,7 +183,6 @@ CONFIG_BASE_SMALL=0
186# 183#
187CONFIG_MODULES=y 184CONFIG_MODULES=y
188CONFIG_MODULE_UNLOAD=y 185CONFIG_MODULE_UNLOAD=y
189CONFIG_OBSOLETE_MODPARM=y
190# CONFIG_MODVERSIONS is not set 186# CONFIG_MODVERSIONS is not set
191CONFIG_MODULE_SRCVERSION_ALL=y 187CONFIG_MODULE_SRCVERSION_ALL=y
192CONFIG_KMOD=y 188CONFIG_KMOD=y
@@ -195,6 +191,8 @@ CONFIG_KMOD=y
195# Block layer 191# Block layer
196# 192#
197# CONFIG_LBD is not set 193# CONFIG_LBD is not set
194# CONFIG_BLK_DEV_IO_TRACE is not set
195# CONFIG_LSF is not set
198 196
199# 197#
200# IO Schedulers 198# IO Schedulers
@@ -214,7 +212,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
214# 212#
215CONFIG_HW_HAS_PCI=y 213CONFIG_HW_HAS_PCI=y
216CONFIG_PCI=y 214CONFIG_PCI=y
217CONFIG_PCI_LEGACY_PROC=y
218CONFIG_MMU=y 215CONFIG_MMU=y
219 216
220# 217#
@@ -241,6 +238,7 @@ CONFIG_NET=y
241# 238#
242# Networking options 239# Networking options
243# 240#
241# CONFIG_NETDEBUG is not set
244# CONFIG_PACKET is not set 242# CONFIG_PACKET is not set
245CONFIG_UNIX=y 243CONFIG_UNIX=y
246CONFIG_XFRM=y 244CONFIG_XFRM=y
@@ -260,16 +258,19 @@ CONFIG_IP_PNP_BOOTP=y
260# CONFIG_INET_AH is not set 258# CONFIG_INET_AH is not set
261# CONFIG_INET_ESP is not set 259# CONFIG_INET_ESP is not set
262# CONFIG_INET_IPCOMP is not set 260# CONFIG_INET_IPCOMP is not set
263CONFIG_INET_TUNNEL=m 261# CONFIG_INET_XFRM_TUNNEL is not set
262# CONFIG_INET_TUNNEL is not set
264CONFIG_INET_DIAG=y 263CONFIG_INET_DIAG=y
265CONFIG_INET_TCP_DIAG=y 264CONFIG_INET_TCP_DIAG=y
266# CONFIG_TCP_CONG_ADVANCED is not set 265# CONFIG_TCP_CONG_ADVANCED is not set
267CONFIG_TCP_CONG_BIC=y 266CONFIG_TCP_CONG_BIC=y
268CONFIG_IPV6=m 267CONFIG_IPV6=m
269CONFIG_IPV6_PRIVACY=y 268CONFIG_IPV6_PRIVACY=y
269CONFIG_IPV6_ROUTER_PREF=y
270CONFIG_INET6_AH=m 270CONFIG_INET6_AH=m
271CONFIG_INET6_ESP=m 271CONFIG_INET6_ESP=m
272CONFIG_INET6_IPCOMP=m 272CONFIG_INET6_IPCOMP=m
273CONFIG_INET6_XFRM_TUNNEL=m
273CONFIG_INET6_TUNNEL=m 274CONFIG_INET6_TUNNEL=m
274CONFIG_IPV6_TUNNEL=m 275CONFIG_IPV6_TUNNEL=m
275# CONFIG_NETFILTER is not set 276# CONFIG_NETFILTER is not set
@@ -338,10 +339,9 @@ CONFIG_CONNECTOR=m
338# CONFIG_BLK_DEV_NBD is not set 339# CONFIG_BLK_DEV_NBD is not set
339# CONFIG_BLK_DEV_SX8 is not set 340# CONFIG_BLK_DEV_SX8 is not set
340# CONFIG_BLK_DEV_RAM is not set 341# CONFIG_BLK_DEV_RAM is not set
341CONFIG_BLK_DEV_RAM_COUNT=16 342# CONFIG_BLK_DEV_INITRD is not set
342CONFIG_CDROM_PKTCDVD=m 343CONFIG_CDROM_PKTCDVD=m
343CONFIG_CDROM_PKTCDVD_BUFFERS=8 344CONFIG_CDROM_PKTCDVD_BUFFERS=8
344# CONFIG_CDROM_PKTCDVD_WCACHE is not set
345CONFIG_ATA_OVER_ETH=m 345CONFIG_ATA_OVER_ETH=m
346 346
347# 347#
@@ -423,6 +423,7 @@ CONFIG_NET_PCI=y
423# CONFIG_PCNET32 is not set 423# CONFIG_PCNET32 is not set
424# CONFIG_AMD8111_ETH is not set 424# CONFIG_AMD8111_ETH is not set
425# CONFIG_ADAPTEC_STARFIRE is not set 425# CONFIG_ADAPTEC_STARFIRE is not set
426# CONFIG_FORCEDETH is not set
426# CONFIG_DGRS is not set 427# CONFIG_DGRS is not set
427CONFIG_EEPRO100=y 428CONFIG_EEPRO100=y
428# CONFIG_E100 is not set 429# CONFIG_E100 is not set
@@ -446,6 +447,7 @@ CONFIG_EEPRO100=y
446# CONFIG_HAMACHI is not set 447# CONFIG_HAMACHI is not set
447# CONFIG_R8169 is not set 448# CONFIG_R8169 is not set
448# CONFIG_SIS190 is not set 449# CONFIG_SIS190 is not set
450# CONFIG_SKGE is not set
449# CONFIG_SK98LIN is not set 451# CONFIG_SK98LIN is not set
450# CONFIG_VIA_VELOCITY is not set 452# CONFIG_VIA_VELOCITY is not set
451# CONFIG_TIGON3 is not set 453# CONFIG_TIGON3 is not set
@@ -514,6 +516,7 @@ CONFIG_MV643XX_ETH_2=y
514# 516#
515CONFIG_SERIAL_8250=y 517CONFIG_SERIAL_8250=y
516CONFIG_SERIAL_8250_CONSOLE=y 518CONFIG_SERIAL_8250_CONSOLE=y
519CONFIG_SERIAL_8250_PCI=y
517CONFIG_SERIAL_8250_NR_UARTS=4 520CONFIG_SERIAL_8250_NR_UARTS=4
518CONFIG_SERIAL_8250_RUNTIME_UARTS=4 521CONFIG_SERIAL_8250_RUNTIME_UARTS=4
519# CONFIG_SERIAL_8250_EXTENDED is not set 522# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -523,6 +526,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
523# 526#
524CONFIG_SERIAL_CORE=y 527CONFIG_SERIAL_CORE=y
525CONFIG_SERIAL_CORE_CONSOLE=y 528CONFIG_SERIAL_CORE_CONSOLE=y
529# CONFIG_SERIAL_JSM is not set
526CONFIG_UNIX98_PTYS=y 530CONFIG_UNIX98_PTYS=y
527CONFIG_LEGACY_PTYS=y 531CONFIG_LEGACY_PTYS=y
528CONFIG_LEGACY_PTY_COUNT=256 532CONFIG_LEGACY_PTY_COUNT=256
@@ -579,10 +583,6 @@ CONFIG_LEGACY_PTY_COUNT=256
579# 583#
580 584
581# 585#
582# Multimedia Capabilities Port drivers
583#
584
585#
586# Multimedia devices 586# Multimedia devices
587# 587#
588# CONFIG_VIDEO_DEV is not set 588# CONFIG_VIDEO_DEV is not set
@@ -607,6 +607,7 @@ CONFIG_LEGACY_PTY_COUNT=256
607# 607#
608CONFIG_USB_ARCH_HAS_HCD=y 608CONFIG_USB_ARCH_HAS_HCD=y
609CONFIG_USB_ARCH_HAS_OHCI=y 609CONFIG_USB_ARCH_HAS_OHCI=y
610CONFIG_USB_ARCH_HAS_EHCI=y
610# CONFIG_USB is not set 611# CONFIG_USB is not set
611 612
612# 613#
@@ -624,12 +625,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y
624# CONFIG_MMC is not set 625# CONFIG_MMC is not set
625 626
626# 627#
628# LED devices
629#
630# CONFIG_NEW_LEDS is not set
631
632#
633# LED drivers
634#
635
636#
637# LED Triggers
638#
639
640#
627# InfiniBand support 641# InfiniBand support
628# 642#
629# CONFIG_INFINIBAND is not set 643# CONFIG_INFINIBAND is not set
630 644
631# 645#
632# SN Devices 646# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
647#
648
649#
650# Real Time Clock
633# 651#
634 652
635# 653#
@@ -672,7 +690,6 @@ CONFIG_SYSFS=y
672# CONFIG_TMPFS is not set 690# CONFIG_TMPFS is not set
673# CONFIG_HUGETLB_PAGE is not set 691# CONFIG_HUGETLB_PAGE is not set
674CONFIG_RAMFS=y 692CONFIG_RAMFS=y
675CONFIG_RELAYFS_FS=m
676 693
677# 694#
678# Miscellaneous filesystems 695# Miscellaneous filesystems
@@ -718,6 +735,7 @@ CONFIG_MSDOS_PARTITION=y
718# CONFIG_MAGIC_SYSRQ is not set 735# CONFIG_MAGIC_SYSRQ is not set
719# CONFIG_DEBUG_KERNEL is not set 736# CONFIG_DEBUG_KERNEL is not set
720CONFIG_LOG_BUF_SHIFT=14 737CONFIG_LOG_BUF_SHIFT=14
738# CONFIG_DEBUG_FS is not set
721CONFIG_CROSSCOMPILE=y 739CONFIG_CROSSCOMPILE=y
722CONFIG_CMDLINE="" 740CONFIG_CMDLINE=""
723 741
diff --git a/arch/mips/configs/jmr3927_defconfig b/arch/mips/configs/jmr3927_defconfig
index 53fbef1ac25d..38b1e026e10d 100644
--- a/arch/mips/configs/jmr3927_defconfig
+++ b/arch/mips/configs/jmr3927_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:13 2006 4# Mon Apr 24 14:51:07 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_TOSHIBA_JMR3927=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -111,7 +113,6 @@ CONFIG_PAGE_SIZE_4KB=y
111# CONFIG_PAGE_SIZE_16KB is not set 113# CONFIG_PAGE_SIZE_16KB is not set
112# CONFIG_PAGE_SIZE_64KB is not set 114# CONFIG_PAGE_SIZE_64KB is not set
113# CONFIG_MIPS_MT is not set 115# CONFIG_MIPS_MT is not set
114# CONFIG_CPU_ADVANCED is not set
115CONFIG_CPU_HAS_SYNC=y 116CONFIG_CPU_HAS_SYNC=y
116CONFIG_GENERIC_HARDIRQS=y 117CONFIG_GENERIC_HARDIRQS=y
117CONFIG_GENERIC_IRQ_PROBE=y 118CONFIG_GENERIC_IRQ_PROBE=y
@@ -133,7 +134,6 @@ CONFIG_RTC_DS1742=y
133# Code maturity level options 134# Code maturity level options
134# 135#
135CONFIG_EXPERIMENTAL=y 136CONFIG_EXPERIMENTAL=y
136CONFIG_CLEAN_COMPILE=y
137CONFIG_BROKEN_ON_SMP=y 137CONFIG_BROKEN_ON_SMP=y
138CONFIG_INIT_ENV_ARG_LIMIT=32 138CONFIG_INIT_ENV_ARG_LIMIT=32
139 139
@@ -149,6 +149,7 @@ CONFIG_SYSVIPC=y
149CONFIG_SYSCTL=y 149CONFIG_SYSCTL=y
150# CONFIG_AUDIT is not set 150# CONFIG_AUDIT is not set
151# CONFIG_IKCONFIG is not set 151# CONFIG_IKCONFIG is not set
152CONFIG_RELAY=y
152CONFIG_INITRAMFS_SOURCE="" 153CONFIG_INITRAMFS_SOURCE=""
153# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 154# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
154CONFIG_EMBEDDED=y 155CONFIG_EMBEDDED=y
@@ -162,10 +163,6 @@ CONFIG_BASE_FULL=y
162CONFIG_FUTEX=y 163CONFIG_FUTEX=y
163CONFIG_EPOLL=y 164CONFIG_EPOLL=y
164CONFIG_SHMEM=y 165CONFIG_SHMEM=y
165CONFIG_CC_ALIGN_FUNCTIONS=0
166CONFIG_CC_ALIGN_LABELS=0
167CONFIG_CC_ALIGN_LOOPS=0
168CONFIG_CC_ALIGN_JUMPS=0
169CONFIG_SLAB=y 166CONFIG_SLAB=y
170# CONFIG_TINY_SHMEM is not set 167# CONFIG_TINY_SHMEM is not set
171CONFIG_BASE_SMALL=0 168CONFIG_BASE_SMALL=0
@@ -180,6 +177,8 @@ CONFIG_BASE_SMALL=0
180# Block layer 177# Block layer
181# 178#
182# CONFIG_LBD is not set 179# CONFIG_LBD is not set
180# CONFIG_BLK_DEV_IO_TRACE is not set
181# CONFIG_LSF is not set
183 182
184# 183#
185# IO Schedulers 184# IO Schedulers
@@ -199,7 +198,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
199# 198#
200CONFIG_HW_HAS_PCI=y 199CONFIG_HW_HAS_PCI=y
201CONFIG_PCI=y 200CONFIG_PCI=y
202CONFIG_PCI_LEGACY_PROC=y
203CONFIG_MMU=y 201CONFIG_MMU=y
204 202
205# 203#
@@ -227,6 +225,7 @@ CONFIG_NET=y
227# 225#
228# Networking options 226# Networking options
229# 227#
228# CONFIG_NETDEBUG is not set
230CONFIG_PACKET=y 229CONFIG_PACKET=y
231# CONFIG_PACKET_MMAP is not set 230# CONFIG_PACKET_MMAP is not set
232CONFIG_UNIX=y 231CONFIG_UNIX=y
@@ -248,12 +247,15 @@ CONFIG_IP_PNP_BOOTP=y
248# CONFIG_INET_AH is not set 247# CONFIG_INET_AH is not set
249# CONFIG_INET_ESP is not set 248# CONFIG_INET_ESP is not set
250# CONFIG_INET_IPCOMP is not set 249# CONFIG_INET_IPCOMP is not set
251CONFIG_INET_TUNNEL=y 250# CONFIG_INET_XFRM_TUNNEL is not set
251# CONFIG_INET_TUNNEL is not set
252CONFIG_INET_DIAG=y 252CONFIG_INET_DIAG=y
253CONFIG_INET_TCP_DIAG=y 253CONFIG_INET_TCP_DIAG=y
254# CONFIG_TCP_CONG_ADVANCED is not set 254# CONFIG_TCP_CONG_ADVANCED is not set
255CONFIG_TCP_CONG_BIC=y 255CONFIG_TCP_CONG_BIC=y
256# CONFIG_IPV6 is not set 256# CONFIG_IPV6 is not set
257# CONFIG_INET6_XFRM_TUNNEL is not set
258# CONFIG_INET6_TUNNEL is not set
257# CONFIG_NETFILTER is not set 259# CONFIG_NETFILTER is not set
258 260
259# 261#
@@ -265,6 +267,11 @@ CONFIG_TCP_CONG_BIC=y
265# SCTP Configuration (EXPERIMENTAL) 267# SCTP Configuration (EXPERIMENTAL)
266# 268#
267# 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
268# CONFIG_ATM is not set 275# CONFIG_ATM is not set
269# CONFIG_BRIDGE is not set 276# CONFIG_BRIDGE is not set
270# CONFIG_VLAN_8021Q is not set 277# CONFIG_VLAN_8021Q is not set
@@ -274,11 +281,6 @@ CONFIG_TCP_CONG_BIC=y
274# CONFIG_ATALK is not set 281# CONFIG_ATALK is not set
275# CONFIG_X25 is not set 282# CONFIG_X25 is not set
276# CONFIG_LAPB is not set 283# CONFIG_LAPB is not set
277
278#
279# TIPC Configuration (EXPERIMENTAL)
280#
281# CONFIG_TIPC is not set
282# CONFIG_NET_DIVERT is not set 284# CONFIG_NET_DIVERT is not set
283# CONFIG_ECONET is not set 285# CONFIG_ECONET is not set
284# CONFIG_WAN_ROUTER is not set 286# CONFIG_WAN_ROUTER is not set
@@ -299,6 +301,9 @@ CONFIG_IEEE80211=y
299# CONFIG_IEEE80211_DEBUG is not set 301# CONFIG_IEEE80211_DEBUG is not set
300CONFIG_IEEE80211_CRYPT_WEP=y 302CONFIG_IEEE80211_CRYPT_WEP=y
301CONFIG_IEEE80211_CRYPT_CCMP=y 303CONFIG_IEEE80211_CRYPT_CCMP=y
304CONFIG_IEEE80211_SOFTMAC=y
305# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
306CONFIG_WIRELESS_EXT=y
302 307
303# 308#
304# Device Drivers 309# Device Drivers
@@ -343,7 +348,7 @@ CONFIG_PROC_EVENTS=y
343# CONFIG_BLK_DEV_NBD is not set 348# CONFIG_BLK_DEV_NBD is not set
344# CONFIG_BLK_DEV_SX8 is not set 349# CONFIG_BLK_DEV_SX8 is not set
345# CONFIG_BLK_DEV_RAM is not set 350# CONFIG_BLK_DEV_RAM is not set
346CONFIG_BLK_DEV_RAM_COUNT=16 351# CONFIG_BLK_DEV_INITRD is not set
347CONFIG_CDROM_PKTCDVD=y 352CONFIG_CDROM_PKTCDVD=y
348CONFIG_CDROM_PKTCDVD_BUFFERS=8 353CONFIG_CDROM_PKTCDVD_BUFFERS=8
349# CONFIG_CDROM_PKTCDVD_WCACHE is not set 354# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -551,7 +556,12 @@ CONFIG_SERIAL_NONSTANDARD=y
551# 556#
552# Non-8250 serial port support 557# Non-8250 serial port support
553# 558#
559CONFIG_SERIAL_CORE=y
560CONFIG_SERIAL_TXX9=y
554CONFIG_HAS_TXX9_SERIAL=y 561CONFIG_HAS_TXX9_SERIAL=y
562# CONFIG_SERIAL_TXX9_CONSOLE is not set
563# CONFIG_SERIAL_TXX9_STDSERIAL is not set
564# CONFIG_SERIAL_JSM is not set
555# CONFIG_UNIX98_PTYS is not set 565# CONFIG_UNIX98_PTYS is not set
556CONFIG_LEGACY_PTYS=y 566CONFIG_LEGACY_PTYS=y
557CONFIG_LEGACY_PTY_COUNT=256 567CONFIG_LEGACY_PTY_COUNT=256
@@ -610,10 +620,6 @@ CONFIG_LEGACY_PTY_COUNT=256
610# 620#
611 621
612# 622#
613# Multimedia Capabilities Port drivers
614#
615
616#
617# Multimedia devices 623# Multimedia devices
618# 624#
619# CONFIG_VIDEO_DEV is not set 625# CONFIG_VIDEO_DEV is not set
@@ -631,6 +637,7 @@ CONFIG_FB=y
631# CONFIG_FB_CFB_COPYAREA is not set 637# CONFIG_FB_CFB_COPYAREA is not set
632# CONFIG_FB_CFB_IMAGEBLIT is not set 638# CONFIG_FB_CFB_IMAGEBLIT is not set
633# CONFIG_FB_MACMODES is not set 639# CONFIG_FB_MACMODES is not set
640CONFIG_FB_FIRMWARE_EDID=y
634# CONFIG_FB_MODE_HELPERS is not set 641# CONFIG_FB_MODE_HELPERS is not set
635# CONFIG_FB_TILEBLITTING is not set 642# CONFIG_FB_TILEBLITTING is not set
636# CONFIG_FB_CIRRUS is not set 643# CONFIG_FB_CIRRUS is not set
@@ -642,7 +649,6 @@ CONFIG_FB=y
642# CONFIG_FB_NVIDIA is not set 649# CONFIG_FB_NVIDIA is not set
643# CONFIG_FB_RIVA is not set 650# CONFIG_FB_RIVA is not set
644# CONFIG_FB_MATROX is not set 651# CONFIG_FB_MATROX is not set
645# CONFIG_FB_RADEON_OLD is not set
646# CONFIG_FB_RADEON is not set 652# CONFIG_FB_RADEON is not set
647# CONFIG_FB_ATY128 is not set 653# CONFIG_FB_ATY128 is not set
648# CONFIG_FB_ATY is not set 654# CONFIG_FB_ATY is not set
@@ -679,6 +685,7 @@ CONFIG_DUMMY_CONSOLE=y
679# 685#
680CONFIG_USB_ARCH_HAS_HCD=y 686CONFIG_USB_ARCH_HAS_HCD=y
681CONFIG_USB_ARCH_HAS_OHCI=y 687CONFIG_USB_ARCH_HAS_OHCI=y
688CONFIG_USB_ARCH_HAS_EHCI=y
682# CONFIG_USB is not set 689# CONFIG_USB is not set
683 690
684# 691#
@@ -696,13 +703,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
696# CONFIG_MMC is not set 703# CONFIG_MMC is not set
697 704
698# 705#
706# LED devices
707#
708# CONFIG_NEW_LEDS is not set
709
710#
711# LED drivers
712#
713
714#
715# LED Triggers
716#
717
718#
699# InfiniBand support 719# InfiniBand support
700# 720#
701# CONFIG_INFINIBAND is not set 721# CONFIG_INFINIBAND is not set
702 722
703# 723#
704# SN Devices 724# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
725#
726
727#
728# Real Time Clock
705# 729#
730# CONFIG_RTC_CLASS is not set
706 731
707# 732#
708# File systems 733# File systems
@@ -745,7 +770,6 @@ CONFIG_SYSFS=y
745# CONFIG_TMPFS is not set 770# CONFIG_TMPFS is not set
746# CONFIG_HUGETLB_PAGE is not set 771# CONFIG_HUGETLB_PAGE is not set
747CONFIG_RAMFS=y 772CONFIG_RAMFS=y
748CONFIG_RELAYFS_FS=y
749# CONFIG_CONFIGFS_FS is not set 773# CONFIG_CONFIGFS_FS is not set
750 774
751# 775#
@@ -809,6 +833,8 @@ CONFIG_MSDOS_PARTITION=y
809# CONFIG_MAGIC_SYSRQ is not set 833# CONFIG_MAGIC_SYSRQ is not set
810# CONFIG_DEBUG_KERNEL is not set 834# CONFIG_DEBUG_KERNEL is not set
811CONFIG_LOG_BUF_SHIFT=14 835CONFIG_LOG_BUF_SHIFT=14
836# CONFIG_DEBUG_FS is not set
837# CONFIG_UNWIND_INFO is not set
812CONFIG_CROSSCOMPILE=y 838CONFIG_CROSSCOMPILE=y
813CONFIG_CMDLINE="" 839CONFIG_CMDLINE=""
814 840
diff --git a/arch/mips/configs/lasat200_defconfig b/arch/mips/configs/lasat200_defconfig
index ef0fa9fc79d6..4d25990a0a05 100644
--- a/arch/mips/configs/lasat200_defconfig
+++ b/arch/mips/configs/lasat200_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:14 2006 4# Mon Apr 24 14:51:07 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -68,6 +68,8 @@ CONFIG_PICVUE_PROC=y
68CONFIG_DS1603=y 68CONFIG_DS1603=y
69CONFIG_LASAT_SYSCTL=y 69CONFIG_LASAT_SYSCTL=y
70CONFIG_RWSEM_GENERIC_SPINLOCK=y 70CONFIG_RWSEM_GENERIC_SPINLOCK=y
71CONFIG_GENERIC_FIND_NEXT_BIT=y
72CONFIG_GENERIC_HWEIGHT=y
71CONFIG_GENERIC_CALIBRATE_DELAY=y 73CONFIG_GENERIC_CALIBRATE_DELAY=y
72CONFIG_DMA_NONCOHERENT=y 74CONFIG_DMA_NONCOHERENT=y
73CONFIG_DMA_NEED_PCI_MAP_STATE=y 75CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -119,7 +121,6 @@ CONFIG_BOARD_SCACHE=y
119CONFIG_R5000_CPU_SCACHE=y 121CONFIG_R5000_CPU_SCACHE=y
120# CONFIG_MIPS_MT is not set 122# CONFIG_MIPS_MT is not set
121# CONFIG_64BIT_PHYS_ADDR is not set 123# CONFIG_64BIT_PHYS_ADDR is not set
122# CONFIG_CPU_ADVANCED is not set
123CONFIG_CPU_HAS_LLSC=y 124CONFIG_CPU_HAS_LLSC=y
124CONFIG_CPU_HAS_SYNC=y 125CONFIG_CPU_HAS_SYNC=y
125CONFIG_GENERIC_HARDIRQS=y 126CONFIG_GENERIC_HARDIRQS=y
@@ -141,7 +142,6 @@ CONFIG_PREEMPT_NONE=y
141# Code maturity level options 142# Code maturity level options
142# 143#
143CONFIG_EXPERIMENTAL=y 144CONFIG_EXPERIMENTAL=y
144CONFIG_CLEAN_COMPILE=y
145CONFIG_BROKEN_ON_SMP=y 145CONFIG_BROKEN_ON_SMP=y
146CONFIG_INIT_ENV_ARG_LIMIT=32 146CONFIG_INIT_ENV_ARG_LIMIT=32
147 147
@@ -157,6 +157,7 @@ CONFIG_SYSVIPC=y
157CONFIG_SYSCTL=y 157CONFIG_SYSCTL=y
158# CONFIG_AUDIT is not set 158# CONFIG_AUDIT is not set
159# CONFIG_IKCONFIG is not set 159# CONFIG_IKCONFIG is not set
160CONFIG_RELAY=y
160CONFIG_INITRAMFS_SOURCE="" 161CONFIG_INITRAMFS_SOURCE=""
161# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 162# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
162CONFIG_EMBEDDED=y 163CONFIG_EMBEDDED=y
@@ -170,10 +171,6 @@ CONFIG_BASE_FULL=y
170CONFIG_FUTEX=y 171CONFIG_FUTEX=y
171CONFIG_EPOLL=y 172CONFIG_EPOLL=y
172CONFIG_SHMEM=y 173CONFIG_SHMEM=y
173CONFIG_CC_ALIGN_FUNCTIONS=0
174CONFIG_CC_ALIGN_LABELS=0
175CONFIG_CC_ALIGN_LOOPS=0
176CONFIG_CC_ALIGN_JUMPS=0
177CONFIG_SLAB=y 174CONFIG_SLAB=y
178# CONFIG_TINY_SHMEM is not set 175# CONFIG_TINY_SHMEM is not set
179CONFIG_BASE_SMALL=0 176CONFIG_BASE_SMALL=0
@@ -186,7 +183,6 @@ CONFIG_OBSOLETE_INTERMODULE=y
186CONFIG_MODULES=y 183CONFIG_MODULES=y
187CONFIG_MODULE_UNLOAD=y 184CONFIG_MODULE_UNLOAD=y
188# CONFIG_MODULE_FORCE_UNLOAD is not set 185# CONFIG_MODULE_FORCE_UNLOAD is not set
189CONFIG_OBSOLETE_MODPARM=y
190CONFIG_MODVERSIONS=y 186CONFIG_MODVERSIONS=y
191CONFIG_MODULE_SRCVERSION_ALL=y 187CONFIG_MODULE_SRCVERSION_ALL=y
192CONFIG_KMOD=y 188CONFIG_KMOD=y
@@ -195,6 +191,8 @@ CONFIG_KMOD=y
195# Block layer 191# Block layer
196# 192#
197# CONFIG_LBD is not set 193# CONFIG_LBD is not set
194# CONFIG_BLK_DEV_IO_TRACE is not set
195# CONFIG_LSF is not set
198 196
199# 197#
200# IO Schedulers 198# IO Schedulers
@@ -214,7 +212,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
214# 212#
215CONFIG_HW_HAS_PCI=y 213CONFIG_HW_HAS_PCI=y
216CONFIG_PCI=y 214CONFIG_PCI=y
217CONFIG_PCI_LEGACY_PROC=y
218CONFIG_MMU=y 215CONFIG_MMU=y
219 216
220# 217#
@@ -242,6 +239,7 @@ CONFIG_NET=y
242# 239#
243# Networking options 240# Networking options
244# 241#
242# CONFIG_NETDEBUG is not set
245# CONFIG_PACKET is not set 243# CONFIG_PACKET is not set
246CONFIG_UNIX=y 244CONFIG_UNIX=y
247CONFIG_XFRM=y 245CONFIG_XFRM=y
@@ -259,12 +257,15 @@ CONFIG_IP_FIB_HASH=y
259# CONFIG_INET_AH is not set 257# CONFIG_INET_AH is not set
260# CONFIG_INET_ESP is not set 258# CONFIG_INET_ESP is not set
261# CONFIG_INET_IPCOMP is not set 259# CONFIG_INET_IPCOMP is not set
262CONFIG_INET_TUNNEL=m 260# CONFIG_INET_XFRM_TUNNEL is not set
261# CONFIG_INET_TUNNEL is not set
263CONFIG_INET_DIAG=y 262CONFIG_INET_DIAG=y
264CONFIG_INET_TCP_DIAG=y 263CONFIG_INET_TCP_DIAG=y
265# CONFIG_TCP_CONG_ADVANCED is not set 264# CONFIG_TCP_CONG_ADVANCED is not set
266CONFIG_TCP_CONG_BIC=y 265CONFIG_TCP_CONG_BIC=y
267# CONFIG_IPV6 is not set 266# CONFIG_IPV6 is not set
267# CONFIG_INET6_XFRM_TUNNEL is not set
268# CONFIG_INET6_TUNNEL is not set
268# CONFIG_NETFILTER is not set 269# CONFIG_NETFILTER is not set
269 270
270# 271#
@@ -276,6 +277,11 @@ CONFIG_TCP_CONG_BIC=y
276# SCTP Configuration (EXPERIMENTAL) 277# SCTP Configuration (EXPERIMENTAL)
277# 278#
278# CONFIG_IP_SCTP is not set 279# CONFIG_IP_SCTP is not set
280
281#
282# TIPC Configuration (EXPERIMENTAL)
283#
284# CONFIG_TIPC is not set
279# CONFIG_ATM is not set 285# CONFIG_ATM is not set
280# CONFIG_BRIDGE is not set 286# CONFIG_BRIDGE is not set
281# CONFIG_VLAN_8021Q is not set 287# CONFIG_VLAN_8021Q is not set
@@ -285,11 +291,6 @@ CONFIG_TCP_CONG_BIC=y
285# CONFIG_ATALK is not set 291# CONFIG_ATALK is not set
286# CONFIG_X25 is not set 292# CONFIG_X25 is not set
287# CONFIG_LAPB is not set 293# CONFIG_LAPB is not set
288
289#
290# TIPC Configuration (EXPERIMENTAL)
291#
292# CONFIG_TIPC is not set
293# CONFIG_NET_DIVERT is not set 294# CONFIG_NET_DIVERT is not set
294# CONFIG_ECONET is not set 295# CONFIG_ECONET is not set
295# CONFIG_WAN_ROUTER is not set 296# CONFIG_WAN_ROUTER is not set
@@ -310,6 +311,9 @@ CONFIG_IEEE80211=m
310# CONFIG_IEEE80211_DEBUG is not set 311# CONFIG_IEEE80211_DEBUG is not set
311CONFIG_IEEE80211_CRYPT_WEP=m 312CONFIG_IEEE80211_CRYPT_WEP=m
312CONFIG_IEEE80211_CRYPT_CCMP=m 313CONFIG_IEEE80211_CRYPT_CCMP=m
314CONFIG_IEEE80211_SOFTMAC=m
315# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
316CONFIG_WIRELESS_EXT=y
313 317
314# 318#
315# Device Drivers 319# Device Drivers
@@ -366,7 +370,6 @@ CONFIG_MTD_CFI_I2=y
366# CONFIG_MTD_CFI_I8 is not set 370# CONFIG_MTD_CFI_I8 is not set
367# CONFIG_MTD_CFI_INTELEXT is not set 371# CONFIG_MTD_CFI_INTELEXT is not set
368CONFIG_MTD_CFI_AMDSTD=y 372CONFIG_MTD_CFI_AMDSTD=y
369CONFIG_MTD_CFI_AMDSTD_RETRY=0
370# CONFIG_MTD_CFI_STAA is not set 373# CONFIG_MTD_CFI_STAA is not set
371CONFIG_MTD_CFI_UTIL=y 374CONFIG_MTD_CFI_UTIL=y
372# CONFIG_MTD_RAM is not set 375# CONFIG_MTD_RAM is not set
@@ -389,7 +392,6 @@ CONFIG_MTD_LASAT=y
389# CONFIG_MTD_SLRAM is not set 392# CONFIG_MTD_SLRAM is not set
390# CONFIG_MTD_PHRAM is not set 393# CONFIG_MTD_PHRAM is not set
391# CONFIG_MTD_MTDRAM is not set 394# CONFIG_MTD_MTDRAM is not set
392# CONFIG_MTD_BLKMTD is not set
393# CONFIG_MTD_BLOCK2MTD is not set 395# CONFIG_MTD_BLOCK2MTD is not set
394 396
395# 397#
@@ -430,7 +432,7 @@ CONFIG_MTD_LASAT=y
430# CONFIG_BLK_DEV_NBD is not set 432# CONFIG_BLK_DEV_NBD is not set
431# CONFIG_BLK_DEV_SX8 is not set 433# CONFIG_BLK_DEV_SX8 is not set
432# CONFIG_BLK_DEV_RAM is not set 434# CONFIG_BLK_DEV_RAM is not set
433CONFIG_BLK_DEV_RAM_COUNT=16 435# CONFIG_BLK_DEV_INITRD is not set
434CONFIG_CDROM_PKTCDVD=m 436CONFIG_CDROM_PKTCDVD=m
435CONFIG_CDROM_PKTCDVD_BUFFERS=8 437CONFIG_CDROM_PKTCDVD_BUFFERS=8
436# CONFIG_CDROM_PKTCDVD_WCACHE is not set 438# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -672,6 +674,7 @@ CONFIG_HW_CONSOLE=y
672# 674#
673CONFIG_SERIAL_8250=y 675CONFIG_SERIAL_8250=y
674CONFIG_SERIAL_8250_CONSOLE=y 676CONFIG_SERIAL_8250_CONSOLE=y
677CONFIG_SERIAL_8250_PCI=y
675CONFIG_SERIAL_8250_NR_UARTS=4 678CONFIG_SERIAL_8250_NR_UARTS=4
676CONFIG_SERIAL_8250_RUNTIME_UARTS=4 679CONFIG_SERIAL_8250_RUNTIME_UARTS=4
677# CONFIG_SERIAL_8250_EXTENDED is not set 680# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -681,6 +684,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
681# 684#
682CONFIG_SERIAL_CORE=y 685CONFIG_SERIAL_CORE=y
683CONFIG_SERIAL_CORE_CONSOLE=y 686CONFIG_SERIAL_CORE_CONSOLE=y
687# CONFIG_SERIAL_JSM is not set
684CONFIG_UNIX98_PTYS=y 688CONFIG_UNIX98_PTYS=y
685CONFIG_LEGACY_PTYS=y 689CONFIG_LEGACY_PTYS=y
686CONFIG_LEGACY_PTY_COUNT=256 690CONFIG_LEGACY_PTY_COUNT=256
@@ -739,10 +743,6 @@ CONFIG_LEGACY_PTY_COUNT=256
739# 743#
740 744
741# 745#
742# Multimedia Capabilities Port drivers
743#
744
745#
746# Multimedia devices 746# Multimedia devices
747# 747#
748# CONFIG_VIDEO_DEV is not set 748# CONFIG_VIDEO_DEV is not set
@@ -773,6 +773,7 @@ CONFIG_DUMMY_CONSOLE=y
773# 773#
774CONFIG_USB_ARCH_HAS_HCD=y 774CONFIG_USB_ARCH_HAS_HCD=y
775CONFIG_USB_ARCH_HAS_OHCI=y 775CONFIG_USB_ARCH_HAS_OHCI=y
776CONFIG_USB_ARCH_HAS_EHCI=y
776# CONFIG_USB is not set 777# CONFIG_USB is not set
777 778
778# 779#
@@ -790,13 +791,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
790# CONFIG_MMC is not set 791# CONFIG_MMC is not set
791 792
792# 793#
794# LED devices
795#
796# CONFIG_NEW_LEDS is not set
797
798#
799# LED drivers
800#
801
802#
803# LED Triggers
804#
805
806#
793# InfiniBand support 807# InfiniBand support
794# 808#
795# CONFIG_INFINIBAND is not set 809# CONFIG_INFINIBAND is not set
796 810
797# 811#
798# SN Devices 812# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
813#
814
815#
816# Real Time Clock
799# 817#
818# CONFIG_RTC_CLASS is not set
800 819
801# 820#
802# File systems 821# File systems
@@ -847,7 +866,6 @@ CONFIG_SYSFS=y
847# CONFIG_TMPFS is not set 866# CONFIG_TMPFS is not set
848# CONFIG_HUGETLB_PAGE is not set 867# CONFIG_HUGETLB_PAGE is not set
849CONFIG_RAMFS=y 868CONFIG_RAMFS=y
850CONFIG_RELAYFS_FS=m
851# CONFIG_CONFIGFS_FS is not set 869# CONFIG_CONFIGFS_FS is not set
852 870
853# 871#
@@ -914,6 +932,7 @@ CONFIG_MSDOS_PARTITION=y
914# CONFIG_MAGIC_SYSRQ is not set 932# CONFIG_MAGIC_SYSRQ is not set
915# CONFIG_DEBUG_KERNEL is not set 933# CONFIG_DEBUG_KERNEL is not set
916CONFIG_LOG_BUF_SHIFT=14 934CONFIG_LOG_BUF_SHIFT=14
935# CONFIG_DEBUG_FS is not set
917CONFIG_CROSSCOMPILE=y 936CONFIG_CROSSCOMPILE=y
918CONFIG_CMDLINE="" 937CONFIG_CMDLINE=""
919 938
diff --git a/arch/mips/configs/malta_defconfig b/arch/mips/configs/malta_defconfig
index 367d279efdd9..977f52be51dc 100644
--- a/arch/mips/configs/malta_defconfig
+++ b/arch/mips/configs/malta_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:15 2006 4# Mon Apr 24 14:51:08 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_MALTA=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_ARCH_MAY_HAVE_PC_FDC=y 70CONFIG_ARCH_MAY_HAVE_PC_FDC=y
69CONFIG_DMA_NONCOHERENT=y 71CONFIG_DMA_NONCOHERENT=y
@@ -128,16 +130,21 @@ CONFIG_PAGE_SIZE_4KB=y
128# CONFIG_PAGE_SIZE_64KB is not set 130# CONFIG_PAGE_SIZE_64KB is not set
129CONFIG_CPU_HAS_PREFETCH=y 131CONFIG_CPU_HAS_PREFETCH=y
130CONFIG_MIPS_MT=y 132CONFIG_MIPS_MT=y
133# CONFIG_MIPS_MT_SMTC is not set
131# CONFIG_MIPS_MT_SMP is not set 134# CONFIG_MIPS_MT_SMP is not set
132CONFIG_MIPS_VPE_LOADER=y 135CONFIG_MIPS_VPE_LOADER=y
136CONFIG_MIPS_MT_FPAFF=y
133CONFIG_MIPS_VPE_LOADER_TOM=y 137CONFIG_MIPS_VPE_LOADER_TOM=y
134CONFIG_MIPS_VPE_APSP_API=y 138CONFIG_MIPS_VPE_APSP_API=y
139CONFIG_MIPS_APSP_KSPD=y
135# CONFIG_64BIT_PHYS_ADDR is not set 140# CONFIG_64BIT_PHYS_ADDR is not set
136# CONFIG_CPU_ADVANCED is not set
137CONFIG_CPU_HAS_LLSC=y 141CONFIG_CPU_HAS_LLSC=y
142# CONFIG_CPU_MIPSR2_IRQ_VI is not set
143# CONFIG_CPU_MIPSR2_IRQ_EI is not set
138CONFIG_CPU_HAS_SYNC=y 144CONFIG_CPU_HAS_SYNC=y
139CONFIG_GENERIC_HARDIRQS=y 145CONFIG_GENERIC_HARDIRQS=y
140CONFIG_GENERIC_IRQ_PROBE=y 146CONFIG_GENERIC_IRQ_PROBE=y
147CONFIG_CPU_SUPPORTS_HIGHMEM=y
141CONFIG_ARCH_FLATMEM_ENABLE=y 148CONFIG_ARCH_FLATMEM_ENABLE=y
142CONFIG_SELECT_MEMORY_MODEL=y 149CONFIG_SELECT_MEMORY_MODEL=y
143CONFIG_FLATMEM_MANUAL=y 150CONFIG_FLATMEM_MANUAL=y
@@ -155,7 +162,6 @@ CONFIG_PREEMPT_NONE=y
155# Code maturity level options 162# Code maturity level options
156# 163#
157CONFIG_EXPERIMENTAL=y 164CONFIG_EXPERIMENTAL=y
158CONFIG_CLEAN_COMPILE=y
159CONFIG_BROKEN_ON_SMP=y 165CONFIG_BROKEN_ON_SMP=y
160CONFIG_INIT_ENV_ARG_LIMIT=32 166CONFIG_INIT_ENV_ARG_LIMIT=32
161 167
@@ -171,6 +177,7 @@ CONFIG_SYSVIPC=y
171CONFIG_SYSCTL=y 177CONFIG_SYSCTL=y
172# CONFIG_AUDIT is not set 178# CONFIG_AUDIT is not set
173# CONFIG_IKCONFIG is not set 179# CONFIG_IKCONFIG is not set
180CONFIG_RELAY=y
174CONFIG_INITRAMFS_SOURCE="" 181CONFIG_INITRAMFS_SOURCE=""
175# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 182# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
176CONFIG_EMBEDDED=y 183CONFIG_EMBEDDED=y
@@ -184,10 +191,6 @@ CONFIG_BASE_FULL=y
184CONFIG_FUTEX=y 191CONFIG_FUTEX=y
185CONFIG_EPOLL=y 192CONFIG_EPOLL=y
186CONFIG_SHMEM=y 193CONFIG_SHMEM=y
187CONFIG_CC_ALIGN_FUNCTIONS=0
188CONFIG_CC_ALIGN_LABELS=0
189CONFIG_CC_ALIGN_LOOPS=0
190CONFIG_CC_ALIGN_JUMPS=0
191CONFIG_SLAB=y 194CONFIG_SLAB=y
192# CONFIG_TINY_SHMEM is not set 195# CONFIG_TINY_SHMEM is not set
193CONFIG_BASE_SMALL=0 196CONFIG_BASE_SMALL=0
@@ -199,7 +202,6 @@ CONFIG_BASE_SMALL=0
199CONFIG_MODULES=y 202CONFIG_MODULES=y
200CONFIG_MODULE_UNLOAD=y 203CONFIG_MODULE_UNLOAD=y
201# CONFIG_MODULE_FORCE_UNLOAD is not set 204# CONFIG_MODULE_FORCE_UNLOAD is not set
202CONFIG_OBSOLETE_MODPARM=y
203CONFIG_MODVERSIONS=y 205CONFIG_MODVERSIONS=y
204CONFIG_MODULE_SRCVERSION_ALL=y 206CONFIG_MODULE_SRCVERSION_ALL=y
205CONFIG_KMOD=y 207CONFIG_KMOD=y
@@ -208,6 +210,8 @@ CONFIG_KMOD=y
208# Block layer 210# Block layer
209# 211#
210# CONFIG_LBD is not set 212# CONFIG_LBD is not set
213# CONFIG_BLK_DEV_IO_TRACE is not set
214# CONFIG_LSF is not set
211 215
212# 216#
213# IO Schedulers 217# IO Schedulers
@@ -227,7 +231,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
227# 231#
228CONFIG_HW_HAS_PCI=y 232CONFIG_HW_HAS_PCI=y
229CONFIG_PCI=y 233CONFIG_PCI=y
230CONFIG_PCI_LEGACY_PROC=y
231CONFIG_MMU=y 234CONFIG_MMU=y
232 235
233# 236#
@@ -255,6 +258,7 @@ CONFIG_NET=y
255# 258#
256# Networking options 259# Networking options
257# 260#
261# CONFIG_NETDEBUG is not set
258CONFIG_PACKET=y 262CONFIG_PACKET=y
259CONFIG_PACKET_MMAP=y 263CONFIG_PACKET_MMAP=y
260CONFIG_UNIX=y 264CONFIG_UNIX=y
@@ -287,6 +291,7 @@ CONFIG_SYN_COOKIES=y
287CONFIG_INET_AH=m 291CONFIG_INET_AH=m
288CONFIG_INET_ESP=m 292CONFIG_INET_ESP=m
289CONFIG_INET_IPCOMP=m 293CONFIG_INET_IPCOMP=m
294CONFIG_INET_XFRM_TUNNEL=m
290CONFIG_INET_TUNNEL=m 295CONFIG_INET_TUNNEL=m
291CONFIG_INET_DIAG=y 296CONFIG_INET_DIAG=y
292CONFIG_INET_TCP_DIAG=y 297CONFIG_INET_TCP_DIAG=y
@@ -328,9 +333,12 @@ CONFIG_IP_VS_NQ=m
328CONFIG_IP_VS_FTP=m 333CONFIG_IP_VS_FTP=m
329CONFIG_IPV6=m 334CONFIG_IPV6=m
330CONFIG_IPV6_PRIVACY=y 335CONFIG_IPV6_PRIVACY=y
336CONFIG_IPV6_ROUTER_PREF=y
337CONFIG_IPV6_ROUTE_INFO=y
331CONFIG_INET6_AH=m 338CONFIG_INET6_AH=m
332CONFIG_INET6_ESP=m 339CONFIG_INET6_ESP=m
333CONFIG_INET6_IPCOMP=m 340CONFIG_INET6_IPCOMP=m
341CONFIG_INET6_XFRM_TUNNEL=m
334CONFIG_INET6_TUNNEL=m 342CONFIG_INET6_TUNNEL=m
335CONFIG_IPV6_TUNNEL=m 343CONFIG_IPV6_TUNNEL=m
336CONFIG_NETFILTER=y 344CONFIG_NETFILTER=y
@@ -354,11 +362,14 @@ CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
354CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 362CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
355CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 363CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
356CONFIG_NETFILTER_XT_MATCH_DCCP=m 364CONFIG_NETFILTER_XT_MATCH_DCCP=m
365CONFIG_NETFILTER_XT_MATCH_ESP=m
357CONFIG_NETFILTER_XT_MATCH_HELPER=m 366CONFIG_NETFILTER_XT_MATCH_HELPER=m
358CONFIG_NETFILTER_XT_MATCH_LENGTH=m 367CONFIG_NETFILTER_XT_MATCH_LENGTH=m
359CONFIG_NETFILTER_XT_MATCH_LIMIT=m 368CONFIG_NETFILTER_XT_MATCH_LIMIT=m
360CONFIG_NETFILTER_XT_MATCH_MAC=m 369CONFIG_NETFILTER_XT_MATCH_MAC=m
361CONFIG_NETFILTER_XT_MATCH_MARK=m 370CONFIG_NETFILTER_XT_MATCH_MARK=m
371CONFIG_NETFILTER_XT_MATCH_POLICY=m
372CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
362# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set 373# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set
363CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 374CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
364CONFIG_NETFILTER_XT_MATCH_REALM=m 375CONFIG_NETFILTER_XT_MATCH_REALM=m
@@ -382,20 +393,19 @@ CONFIG_IP_NF_IRC=m
382CONFIG_IP_NF_TFTP=m 393CONFIG_IP_NF_TFTP=m
383CONFIG_IP_NF_AMANDA=m 394CONFIG_IP_NF_AMANDA=m
384CONFIG_IP_NF_PPTP=m 395CONFIG_IP_NF_PPTP=m
396CONFIG_IP_NF_H323=m
385CONFIG_IP_NF_QUEUE=m 397CONFIG_IP_NF_QUEUE=m
386CONFIG_IP_NF_IPTABLES=m 398CONFIG_IP_NF_IPTABLES=m
387CONFIG_IP_NF_MATCH_IPRANGE=m 399CONFIG_IP_NF_MATCH_IPRANGE=m
388CONFIG_IP_NF_MATCH_MULTIPORT=m
389CONFIG_IP_NF_MATCH_TOS=m 400CONFIG_IP_NF_MATCH_TOS=m
390CONFIG_IP_NF_MATCH_RECENT=m 401CONFIG_IP_NF_MATCH_RECENT=m
391CONFIG_IP_NF_MATCH_ECN=m 402CONFIG_IP_NF_MATCH_ECN=m
392CONFIG_IP_NF_MATCH_DSCP=m 403CONFIG_IP_NF_MATCH_DSCP=m
393CONFIG_IP_NF_MATCH_AH_ESP=m 404CONFIG_IP_NF_MATCH_AH=m
394CONFIG_IP_NF_MATCH_TTL=m 405CONFIG_IP_NF_MATCH_TTL=m
395CONFIG_IP_NF_MATCH_OWNER=m 406CONFIG_IP_NF_MATCH_OWNER=m
396CONFIG_IP_NF_MATCH_ADDRTYPE=m 407CONFIG_IP_NF_MATCH_ADDRTYPE=m
397CONFIG_IP_NF_MATCH_HASHLIMIT=m 408CONFIG_IP_NF_MATCH_HASHLIMIT=m
398CONFIG_IP_NF_MATCH_POLICY=m
399CONFIG_IP_NF_FILTER=m 409CONFIG_IP_NF_FILTER=m
400CONFIG_IP_NF_TARGET_REJECT=m 410CONFIG_IP_NF_TARGET_REJECT=m
401CONFIG_IP_NF_TARGET_LOG=m 411CONFIG_IP_NF_TARGET_LOG=m
@@ -413,6 +423,7 @@ CONFIG_IP_NF_NAT_FTP=m
413CONFIG_IP_NF_NAT_TFTP=m 423CONFIG_IP_NF_NAT_TFTP=m
414CONFIG_IP_NF_NAT_AMANDA=m 424CONFIG_IP_NF_NAT_AMANDA=m
415CONFIG_IP_NF_NAT_PPTP=m 425CONFIG_IP_NF_NAT_PPTP=m
426CONFIG_IP_NF_NAT_H323=m
416CONFIG_IP_NF_MANGLE=m 427CONFIG_IP_NF_MANGLE=m
417CONFIG_IP_NF_TARGET_TOS=m 428CONFIG_IP_NF_TARGET_TOS=m
418CONFIG_IP_NF_TARGET_ECN=m 429CONFIG_IP_NF_TARGET_ECN=m
@@ -433,12 +444,10 @@ CONFIG_IP6_NF_MATCH_RT=m
433CONFIG_IP6_NF_MATCH_OPTS=m 444CONFIG_IP6_NF_MATCH_OPTS=m
434CONFIG_IP6_NF_MATCH_FRAG=m 445CONFIG_IP6_NF_MATCH_FRAG=m
435CONFIG_IP6_NF_MATCH_HL=m 446CONFIG_IP6_NF_MATCH_HL=m
436CONFIG_IP6_NF_MATCH_MULTIPORT=m
437CONFIG_IP6_NF_MATCH_OWNER=m 447CONFIG_IP6_NF_MATCH_OWNER=m
438CONFIG_IP6_NF_MATCH_IPV6HEADER=m 448CONFIG_IP6_NF_MATCH_IPV6HEADER=m
439CONFIG_IP6_NF_MATCH_AHESP=m 449CONFIG_IP6_NF_MATCH_AH=m
440CONFIG_IP6_NF_MATCH_EUI64=m 450CONFIG_IP6_NF_MATCH_EUI64=m
441CONFIG_IP6_NF_MATCH_POLICY=m
442CONFIG_IP6_NF_FILTER=m 451CONFIG_IP6_NF_FILTER=m
443CONFIG_IP6_NF_TARGET_LOG=m 452CONFIG_IP6_NF_TARGET_LOG=m
444CONFIG_IP6_NF_TARGET_REJECT=m 453CONFIG_IP6_NF_TARGET_REJECT=m
@@ -484,6 +493,11 @@ CONFIG_IP_SCTP=m
484# CONFIG_SCTP_HMAC_NONE is not set 493# CONFIG_SCTP_HMAC_NONE is not set
485# CONFIG_SCTP_HMAC_SHA1 is not set 494# CONFIG_SCTP_HMAC_SHA1 is not set
486CONFIG_SCTP_HMAC_MD5=y 495CONFIG_SCTP_HMAC_MD5=y
496
497#
498# TIPC Configuration (EXPERIMENTAL)
499#
500# CONFIG_TIPC is not set
487# CONFIG_ATM is not set 501# CONFIG_ATM is not set
488CONFIG_BRIDGE=m 502CONFIG_BRIDGE=m
489CONFIG_VLAN_8021Q=m 503CONFIG_VLAN_8021Q=m
@@ -498,11 +512,6 @@ CONFIG_IPDDP_ENCAP=y
498CONFIG_IPDDP_DECAP=y 512CONFIG_IPDDP_DECAP=y
499# CONFIG_X25 is not set 513# CONFIG_X25 is not set
500# CONFIG_LAPB is not set 514# CONFIG_LAPB is not set
501
502#
503# TIPC Configuration (EXPERIMENTAL)
504#
505# CONFIG_TIPC is not set
506CONFIG_NET_DIVERT=y 515CONFIG_NET_DIVERT=y
507# CONFIG_ECONET is not set 516# CONFIG_ECONET is not set
508# CONFIG_WAN_ROUTER is not set 517# CONFIG_WAN_ROUTER is not set
@@ -562,6 +571,9 @@ CONFIG_IEEE80211=m
562# CONFIG_IEEE80211_DEBUG is not set 571# CONFIG_IEEE80211_DEBUG is not set
563CONFIG_IEEE80211_CRYPT_WEP=m 572CONFIG_IEEE80211_CRYPT_WEP=m
564CONFIG_IEEE80211_CRYPT_CCMP=m 573CONFIG_IEEE80211_CRYPT_CCMP=m
574CONFIG_IEEE80211_SOFTMAC=m
575# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
576CONFIG_WIRELESS_EXT=y
565 577
566# 578#
567# Device Drivers 579# Device Drivers
@@ -734,7 +746,6 @@ CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
734# CONFIG_SCSI_INIA100 is not set 746# CONFIG_SCSI_INIA100 is not set
735# CONFIG_SCSI_SYM53C8XX_2 is not set 747# CONFIG_SCSI_SYM53C8XX_2 is not set
736# CONFIG_SCSI_IPR is not set 748# CONFIG_SCSI_IPR is not set
737# CONFIG_SCSI_QLOGIC_FC is not set
738# CONFIG_SCSI_QLOGIC_1280 is not set 749# CONFIG_SCSI_QLOGIC_1280 is not set
739# CONFIG_SCSI_QLA_FC is not set 750# CONFIG_SCSI_QLA_FC is not set
740# CONFIG_SCSI_LPFC is not set 751# CONFIG_SCSI_LPFC is not set
@@ -753,6 +764,7 @@ CONFIG_MD_RAID0=m
753CONFIG_MD_RAID1=m 764CONFIG_MD_RAID1=m
754CONFIG_MD_RAID10=m 765CONFIG_MD_RAID10=m
755CONFIG_MD_RAID5=m 766CONFIG_MD_RAID5=m
767CONFIG_MD_RAID5_RESHAPE=y
756CONFIG_MD_RAID6=m 768CONFIG_MD_RAID6=m
757CONFIG_MD_MULTIPATH=m 769CONFIG_MD_MULTIPATH=m
758CONFIG_MD_FAULTY=m 770CONFIG_MD_FAULTY=m
@@ -956,6 +968,7 @@ CONFIG_HW_CONSOLE=y
956# 968#
957CONFIG_SERIAL_8250=y 969CONFIG_SERIAL_8250=y
958CONFIG_SERIAL_8250_CONSOLE=y 970CONFIG_SERIAL_8250_CONSOLE=y
971CONFIG_SERIAL_8250_PCI=y
959CONFIG_SERIAL_8250_NR_UARTS=4 972CONFIG_SERIAL_8250_NR_UARTS=4
960CONFIG_SERIAL_8250_RUNTIME_UARTS=4 973CONFIG_SERIAL_8250_RUNTIME_UARTS=4
961# CONFIG_SERIAL_8250_EXTENDED is not set 974# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -965,6 +978,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
965# 978#
966CONFIG_SERIAL_CORE=y 979CONFIG_SERIAL_CORE=y
967CONFIG_SERIAL_CORE_CONSOLE=y 980CONFIG_SERIAL_CORE_CONSOLE=y
981# CONFIG_SERIAL_JSM is not set
968CONFIG_UNIX98_PTYS=y 982CONFIG_UNIX98_PTYS=y
969CONFIG_LEGACY_PTYS=y 983CONFIG_LEGACY_PTYS=y
970CONFIG_LEGACY_PTY_COUNT=256 984CONFIG_LEGACY_PTY_COUNT=256
@@ -1022,10 +1036,6 @@ CONFIG_RTC=y
1022# 1036#
1023 1037
1024# 1038#
1025# Multimedia Capabilities Port drivers
1026#
1027
1028#
1029# Multimedia devices 1039# Multimedia devices
1030# 1040#
1031# CONFIG_VIDEO_DEV is not set 1041# CONFIG_VIDEO_DEV is not set
@@ -1056,6 +1066,7 @@ CONFIG_DUMMY_CONSOLE=y
1056# 1066#
1057CONFIG_USB_ARCH_HAS_HCD=y 1067CONFIG_USB_ARCH_HAS_HCD=y
1058CONFIG_USB_ARCH_HAS_OHCI=y 1068CONFIG_USB_ARCH_HAS_OHCI=y
1069CONFIG_USB_ARCH_HAS_EHCI=y
1059# CONFIG_USB is not set 1070# CONFIG_USB is not set
1060 1071
1061# 1072#
@@ -1073,13 +1084,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
1073# CONFIG_MMC is not set 1084# CONFIG_MMC is not set
1074 1085
1075# 1086#
1087# LED devices
1088#
1089# CONFIG_NEW_LEDS is not set
1090
1091#
1092# LED drivers
1093#
1094
1095#
1096# LED Triggers
1097#
1098
1099#
1076# InfiniBand support 1100# InfiniBand support
1077# 1101#
1078# CONFIG_INFINIBAND is not set 1102# CONFIG_INFINIBAND is not set
1079 1103
1080# 1104#
1081# SN Devices 1105# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1106#
1107
1108#
1109# Real Time Clock
1082# 1110#
1111# CONFIG_RTC_CLASS is not set
1083 1112
1084# 1113#
1085# File systems 1114# File systems
@@ -1154,7 +1183,6 @@ CONFIG_SYSFS=y
1154# CONFIG_TMPFS is not set 1183# CONFIG_TMPFS is not set
1155# CONFIG_HUGETLB_PAGE is not set 1184# CONFIG_HUGETLB_PAGE is not set
1156CONFIG_RAMFS=y 1185CONFIG_RAMFS=y
1157CONFIG_RELAYFS_FS=m
1158# CONFIG_CONFIGFS_FS is not set 1186# CONFIG_CONFIGFS_FS is not set
1159 1187
1160# 1188#
@@ -1174,7 +1202,6 @@ CONFIG_VXFS_FS=m
1174# CONFIG_QNX4FS_FS is not set 1202# CONFIG_QNX4FS_FS is not set
1175CONFIG_SYSV_FS=m 1203CONFIG_SYSV_FS=m
1176CONFIG_UFS_FS=m 1204CONFIG_UFS_FS=m
1177# CONFIG_UFS_FS_WRITE is not set
1178 1205
1179# 1206#
1180# Network File Systems 1207# Network File Systems
@@ -1266,6 +1293,7 @@ CONFIG_NLS_UTF8=m
1266# CONFIG_MAGIC_SYSRQ is not set 1293# CONFIG_MAGIC_SYSRQ is not set
1267# CONFIG_DEBUG_KERNEL is not set 1294# CONFIG_DEBUG_KERNEL is not set
1268CONFIG_LOG_BUF_SHIFT=14 1295CONFIG_LOG_BUF_SHIFT=14
1296# CONFIG_DEBUG_FS is not set
1269CONFIG_CROSSCOMPILE=y 1297CONFIG_CROSSCOMPILE=y
1270CONFIG_CMDLINE="" 1298CONFIG_CMDLINE=""
1271 1299
diff --git a/arch/mips/configs/mipssim_defconfig b/arch/mips/configs/mipssim_defconfig
index fe78961762b8..00560e0143f1 100644
--- a/arch/mips/configs/mipssim_defconfig
+++ b/arch/mips/configs/mipssim_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:16 2006 4# Mon Apr 24 14:51:09 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_SIM=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -114,16 +116,19 @@ CONFIG_PAGE_SIZE_4KB=y
114# CONFIG_PAGE_SIZE_64KB is not set 116# CONFIG_PAGE_SIZE_64KB is not set
115CONFIG_CPU_HAS_PREFETCH=y 117CONFIG_CPU_HAS_PREFETCH=y
116CONFIG_MIPS_MT=y 118CONFIG_MIPS_MT=y
119# CONFIG_MIPS_MT_SMTC is not set
117# CONFIG_MIPS_MT_SMP is not set 120# CONFIG_MIPS_MT_SMP is not set
118CONFIG_MIPS_VPE_LOADER=y 121CONFIG_MIPS_VPE_LOADER=y
122CONFIG_MIPS_MT_FPAFF=y
119CONFIG_MIPS_VPE_LOADER_TOM=y 123CONFIG_MIPS_VPE_LOADER_TOM=y
120CONFIG_MIPS_VPE_APSP_API=y 124CONFIG_MIPS_VPE_APSP_API=y
125CONFIG_MIPS_APSP_KSPD=y
121# CONFIG_64BIT_PHYS_ADDR is not set 126# CONFIG_64BIT_PHYS_ADDR is not set
122# CONFIG_CPU_ADVANCED is not set
123CONFIG_CPU_HAS_LLSC=y 127CONFIG_CPU_HAS_LLSC=y
124CONFIG_CPU_HAS_SYNC=y 128CONFIG_CPU_HAS_SYNC=y
125CONFIG_GENERIC_HARDIRQS=y 129CONFIG_GENERIC_HARDIRQS=y
126CONFIG_GENERIC_IRQ_PROBE=y 130CONFIG_GENERIC_IRQ_PROBE=y
131CONFIG_CPU_SUPPORTS_HIGHMEM=y
127CONFIG_ARCH_FLATMEM_ENABLE=y 132CONFIG_ARCH_FLATMEM_ENABLE=y
128CONFIG_SELECT_MEMORY_MODEL=y 133CONFIG_SELECT_MEMORY_MODEL=y
129CONFIG_FLATMEM_MANUAL=y 134CONFIG_FLATMEM_MANUAL=y
@@ -141,7 +146,6 @@ CONFIG_PREEMPT_NONE=y
141# Code maturity level options 146# Code maturity level options
142# 147#
143CONFIG_EXPERIMENTAL=y 148CONFIG_EXPERIMENTAL=y
144CONFIG_CLEAN_COMPILE=y
145CONFIG_BROKEN_ON_SMP=y 149CONFIG_BROKEN_ON_SMP=y
146CONFIG_INIT_ENV_ARG_LIMIT=32 150CONFIG_INIT_ENV_ARG_LIMIT=32
147 151
@@ -157,6 +161,7 @@ CONFIG_SYSVIPC=y
157CONFIG_SYSCTL=y 161CONFIG_SYSCTL=y
158# CONFIG_AUDIT is not set 162# CONFIG_AUDIT is not set
159# CONFIG_IKCONFIG is not set 163# CONFIG_IKCONFIG is not set
164# CONFIG_RELAY is not set
160CONFIG_INITRAMFS_SOURCE="" 165CONFIG_INITRAMFS_SOURCE=""
161# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 166# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
162CONFIG_EMBEDDED=y 167CONFIG_EMBEDDED=y
@@ -171,10 +176,6 @@ CONFIG_BASE_FULL=y
171CONFIG_FUTEX=y 176CONFIG_FUTEX=y
172CONFIG_EPOLL=y 177CONFIG_EPOLL=y
173CONFIG_SHMEM=y 178CONFIG_SHMEM=y
174CONFIG_CC_ALIGN_FUNCTIONS=0
175CONFIG_CC_ALIGN_LABELS=0
176CONFIG_CC_ALIGN_LOOPS=0
177CONFIG_CC_ALIGN_JUMPS=0
178CONFIG_SLAB=y 179CONFIG_SLAB=y
179# CONFIG_TINY_SHMEM is not set 180# CONFIG_TINY_SHMEM is not set
180CONFIG_BASE_SMALL=0 181CONFIG_BASE_SMALL=0
@@ -186,7 +187,6 @@ CONFIG_BASE_SMALL=0
186CONFIG_MODULES=y 187CONFIG_MODULES=y
187CONFIG_MODULE_UNLOAD=y 188CONFIG_MODULE_UNLOAD=y
188# CONFIG_MODULE_FORCE_UNLOAD is not set 189# CONFIG_MODULE_FORCE_UNLOAD is not set
189CONFIG_OBSOLETE_MODPARM=y
190CONFIG_MODVERSIONS=y 190CONFIG_MODVERSIONS=y
191CONFIG_MODULE_SRCVERSION_ALL=y 191CONFIG_MODULE_SRCVERSION_ALL=y
192CONFIG_KMOD=y 192CONFIG_KMOD=y
@@ -195,6 +195,7 @@ CONFIG_KMOD=y
195# Block layer 195# Block layer
196# 196#
197# CONFIG_LBD is not set 197# CONFIG_LBD is not set
198# CONFIG_LSF is not set
198 199
199# 200#
200# IO Schedulers 201# IO Schedulers
@@ -238,6 +239,7 @@ CONFIG_NET=y
238# 239#
239# Networking options 240# Networking options
240# 241#
242# CONFIG_NETDEBUG is not set
241CONFIG_PACKET=y 243CONFIG_PACKET=y
242CONFIG_PACKET_MMAP=y 244CONFIG_PACKET_MMAP=y
243CONFIG_UNIX=y 245CONFIG_UNIX=y
@@ -268,12 +270,15 @@ CONFIG_SYN_COOKIES=y
268# CONFIG_INET_AH is not set 270# CONFIG_INET_AH is not set
269# CONFIG_INET_ESP is not set 271# CONFIG_INET_ESP is not set
270# CONFIG_INET_IPCOMP is not set 272# CONFIG_INET_IPCOMP is not set
273# CONFIG_INET_XFRM_TUNNEL is not set
271# CONFIG_INET_TUNNEL is not set 274# CONFIG_INET_TUNNEL is not set
272CONFIG_INET_DIAG=y 275CONFIG_INET_DIAG=y
273CONFIG_INET_TCP_DIAG=y 276CONFIG_INET_TCP_DIAG=y
274# CONFIG_TCP_CONG_ADVANCED is not set 277# CONFIG_TCP_CONG_ADVANCED is not set
275CONFIG_TCP_CONG_BIC=y 278CONFIG_TCP_CONG_BIC=y
276# CONFIG_IPV6 is not set 279# CONFIG_IPV6 is not set
280# CONFIG_INET6_XFRM_TUNNEL is not set
281# CONFIG_INET6_TUNNEL is not set
277# CONFIG_NETFILTER is not set 282# CONFIG_NETFILTER is not set
278 283
279# 284#
@@ -290,6 +295,11 @@ CONFIG_IP_SCTP=m
290# CONFIG_SCTP_HMAC_NONE is not set 295# CONFIG_SCTP_HMAC_NONE is not set
291# CONFIG_SCTP_HMAC_SHA1 is not set 296# CONFIG_SCTP_HMAC_SHA1 is not set
292CONFIG_SCTP_HMAC_MD5=y 297CONFIG_SCTP_HMAC_MD5=y
298
299#
300# TIPC Configuration (EXPERIMENTAL)
301#
302# CONFIG_TIPC is not set
293# CONFIG_ATM is not set 303# CONFIG_ATM is not set
294# CONFIG_BRIDGE is not set 304# CONFIG_BRIDGE is not set
295# CONFIG_VLAN_8021Q is not set 305# CONFIG_VLAN_8021Q is not set
@@ -299,11 +309,6 @@ CONFIG_SCTP_HMAC_MD5=y
299# CONFIG_ATALK is not set 309# CONFIG_ATALK is not set
300# CONFIG_X25 is not set 310# CONFIG_X25 is not set
301# CONFIG_LAPB is not set 311# CONFIG_LAPB is not set
302
303#
304# TIPC Configuration (EXPERIMENTAL)
305#
306# CONFIG_TIPC is not set
307CONFIG_NET_DIVERT=y 312CONFIG_NET_DIVERT=y
308# CONFIG_ECONET is not set 313# CONFIG_ECONET is not set
309# CONFIG_WAN_ROUTER is not set 314# CONFIG_WAN_ROUTER is not set
@@ -397,7 +402,7 @@ CONFIG_BLK_DEV_LOOP=y
397# CONFIG_BLK_DEV_CRYPTOLOOP is not set 402# CONFIG_BLK_DEV_CRYPTOLOOP is not set
398CONFIG_BLK_DEV_NBD=y 403CONFIG_BLK_DEV_NBD=y
399# CONFIG_BLK_DEV_RAM is not set 404# CONFIG_BLK_DEV_RAM is not set
400CONFIG_BLK_DEV_RAM_COUNT=16 405# CONFIG_BLK_DEV_INITRD is not set
401# CONFIG_CDROM_PKTCDVD is not set 406# CONFIG_CDROM_PKTCDVD is not set
402# CONFIG_ATA_OVER_ETH is not set 407# CONFIG_ATA_OVER_ETH is not set
403 408
@@ -532,7 +537,7 @@ CONFIG_SERIO_SERPORT=y
532CONFIG_SERIAL_8250=y 537CONFIG_SERIAL_8250=y
533CONFIG_SERIAL_8250_CONSOLE=y 538CONFIG_SERIAL_8250_CONSOLE=y
534CONFIG_SERIAL_8250_NR_UARTS=1 539CONFIG_SERIAL_8250_NR_UARTS=1
535CONFIG_SERIAL_8250_RUNTIME_UARTS=4 540CONFIG_SERIAL_8250_RUNTIME_UARTS=1
536# CONFIG_SERIAL_8250_EXTENDED is not set 541# CONFIG_SERIAL_8250_EXTENDED is not set
537 542
538# 543#
@@ -596,10 +601,6 @@ CONFIG_LEGACY_PTY_COUNT=256
596# 601#
597 602
598# 603#
599# Multimedia Capabilities Port drivers
600#
601
602#
603# Multimedia devices 604# Multimedia devices
604# 605#
605# CONFIG_VIDEO_DEV is not set 606# CONFIG_VIDEO_DEV is not set
@@ -624,6 +625,7 @@ CONFIG_LEGACY_PTY_COUNT=256
624# 625#
625# CONFIG_USB_ARCH_HAS_HCD is not set 626# CONFIG_USB_ARCH_HAS_HCD is not set
626# CONFIG_USB_ARCH_HAS_OHCI is not set 627# CONFIG_USB_ARCH_HAS_OHCI is not set
628# CONFIG_USB_ARCH_HAS_EHCI is not set
627 629
628# 630#
629# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 631# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -640,12 +642,30 @@ CONFIG_LEGACY_PTY_COUNT=256
640# CONFIG_MMC is not set 642# CONFIG_MMC is not set
641 643
642# 644#
645# LED devices
646#
647# CONFIG_NEW_LEDS is not set
648
649#
650# LED drivers
651#
652
653#
654# LED Triggers
655#
656
657#
643# InfiniBand support 658# InfiniBand support
644# 659#
645 660
646# 661#
647# SN Devices 662# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
663#
664
665#
666# Real Time Clock
648# 667#
668# CONFIG_RTC_CLASS is not set
649 669
650# 670#
651# File systems 671# File systems
@@ -690,8 +710,6 @@ CONFIG_PROC_FS=y
690# CONFIG_TMPFS is not set 710# CONFIG_TMPFS is not set
691# CONFIG_HUGETLB_PAGE is not set 711# CONFIG_HUGETLB_PAGE is not set
692CONFIG_RAMFS=y 712CONFIG_RAMFS=y
693# CONFIG_RELAYFS_FS is not set
694# CONFIG_CONFIGFS_FS is not set
695 713
696# 714#
697# Miscellaneous filesystems 715# Miscellaneous filesystems
diff --git a/arch/mips/configs/mpc30x_defconfig b/arch/mips/configs/mpc30x_defconfig
index e4620e7f0a5e..286a018375b2 100644
--- a/arch/mips/configs/mpc30x_defconfig
+++ b/arch/mips/configs/mpc30x_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:17 2006 4# Mon Apr 24 14:51:09 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -72,6 +72,8 @@ CONFIG_VICTOR_MPC30X=y
72CONFIG_PCI_VR41XX=y 72CONFIG_PCI_VR41XX=y
73CONFIG_VRC4173=y 73CONFIG_VRC4173=y
74CONFIG_RWSEM_GENERIC_SPINLOCK=y 74CONFIG_RWSEM_GENERIC_SPINLOCK=y
75CONFIG_GENERIC_FIND_NEXT_BIT=y
76CONFIG_GENERIC_HWEIGHT=y
75CONFIG_GENERIC_CALIBRATE_DELAY=y 77CONFIG_GENERIC_CALIBRATE_DELAY=y
76CONFIG_DMA_NONCOHERENT=y 78CONFIG_DMA_NONCOHERENT=y
77CONFIG_DMA_NEED_PCI_MAP_STATE=y 79CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -90,7 +92,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
90# CONFIG_CPU_MIPS64_R2 is not set 92# CONFIG_CPU_MIPS64_R2 is not set
91# CONFIG_CPU_R3000 is not set 93# CONFIG_CPU_R3000 is not set
92# CONFIG_CPU_TX39XX is not set 94# CONFIG_CPU_TX39XX is not set
93# CONFIG_CPU_VR41XX is not set 95CONFIG_CPU_VR41XX=y
94# CONFIG_CPU_R4300 is not set 96# CONFIG_CPU_R4300 is not set
95# CONFIG_CPU_R4X00 is not set 97# CONFIG_CPU_R4X00 is not set
96# CONFIG_CPU_TX49XX is not set 98# CONFIG_CPU_TX49XX is not set
@@ -103,18 +105,21 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
103# CONFIG_CPU_RM7000 is not set 105# CONFIG_CPU_RM7000 is not set
104# CONFIG_CPU_RM9000 is not set 106# CONFIG_CPU_RM9000 is not set
105# CONFIG_CPU_SB1 is not set 107# CONFIG_CPU_SB1 is not set
108CONFIG_SYS_HAS_CPU_VR41XX=y
109CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
110CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
111CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
106 112
107# 113#
108# Kernel type 114# Kernel type
109# 115#
110# CONFIG_32BIT is not set 116CONFIG_32BIT=y
111# CONFIG_64BIT is not set 117# CONFIG_64BIT is not set
112CONFIG_PAGE_SIZE_4KB=y 118CONFIG_PAGE_SIZE_4KB=y
113# CONFIG_PAGE_SIZE_8KB is not set 119# CONFIG_PAGE_SIZE_8KB is not set
114# CONFIG_PAGE_SIZE_16KB is not set 120# CONFIG_PAGE_SIZE_16KB is not set
115# CONFIG_PAGE_SIZE_64KB is not set 121# CONFIG_PAGE_SIZE_64KB is not set
116# CONFIG_MIPS_MT is not set 122# CONFIG_MIPS_MT is not set
117CONFIG_CPU_HAS_LLSC=y
118CONFIG_CPU_HAS_SYNC=y 123CONFIG_CPU_HAS_SYNC=y
119CONFIG_GENERIC_HARDIRQS=y 124CONFIG_GENERIC_HARDIRQS=y
120CONFIG_GENERIC_IRQ_PROBE=y 125CONFIG_GENERIC_IRQ_PROBE=y
@@ -135,7 +140,6 @@ CONFIG_PREEMPT_NONE=y
135# Code maturity level options 140# Code maturity level options
136# 141#
137CONFIG_EXPERIMENTAL=y 142CONFIG_EXPERIMENTAL=y
138CONFIG_CLEAN_COMPILE=y
139CONFIG_BROKEN_ON_SMP=y 143CONFIG_BROKEN_ON_SMP=y
140CONFIG_INIT_ENV_ARG_LIMIT=32 144CONFIG_INIT_ENV_ARG_LIMIT=32
141 145
@@ -151,6 +155,7 @@ CONFIG_SYSVIPC=y
151CONFIG_SYSCTL=y 155CONFIG_SYSCTL=y
152# CONFIG_AUDIT is not set 156# CONFIG_AUDIT is not set
153# CONFIG_IKCONFIG is not set 157# CONFIG_IKCONFIG is not set
158CONFIG_RELAY=y
154CONFIG_INITRAMFS_SOURCE="" 159CONFIG_INITRAMFS_SOURCE=""
155# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 160# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
156CONFIG_EMBEDDED=y 161CONFIG_EMBEDDED=y
@@ -164,10 +169,6 @@ CONFIG_BASE_FULL=y
164CONFIG_FUTEX=y 169CONFIG_FUTEX=y
165CONFIG_EPOLL=y 170CONFIG_EPOLL=y
166CONFIG_SHMEM=y 171CONFIG_SHMEM=y
167CONFIG_CC_ALIGN_FUNCTIONS=0
168CONFIG_CC_ALIGN_LABELS=0
169CONFIG_CC_ALIGN_LOOPS=0
170CONFIG_CC_ALIGN_JUMPS=0
171CONFIG_SLAB=y 172CONFIG_SLAB=y
172# CONFIG_TINY_SHMEM is not set 173# CONFIG_TINY_SHMEM is not set
173CONFIG_BASE_SMALL=0 174CONFIG_BASE_SMALL=0
@@ -179,7 +180,6 @@ CONFIG_BASE_SMALL=0
179CONFIG_MODULES=y 180CONFIG_MODULES=y
180CONFIG_MODULE_UNLOAD=y 181CONFIG_MODULE_UNLOAD=y
181# CONFIG_MODULE_FORCE_UNLOAD is not set 182# CONFIG_MODULE_FORCE_UNLOAD is not set
182CONFIG_OBSOLETE_MODPARM=y
183CONFIG_MODVERSIONS=y 183CONFIG_MODVERSIONS=y
184CONFIG_MODULE_SRCVERSION_ALL=y 184CONFIG_MODULE_SRCVERSION_ALL=y
185CONFIG_KMOD=y 185CONFIG_KMOD=y
@@ -187,6 +187,9 @@ CONFIG_KMOD=y
187# 187#
188# Block layer 188# Block layer
189# 189#
190# CONFIG_LBD is not set
191# CONFIG_BLK_DEV_IO_TRACE is not set
192# CONFIG_LSF is not set
190 193
191# 194#
192# IO Schedulers 195# IO Schedulers
@@ -206,7 +209,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
206# 209#
207CONFIG_HW_HAS_PCI=y 210CONFIG_HW_HAS_PCI=y
208CONFIG_PCI=y 211CONFIG_PCI=y
209CONFIG_PCI_LEGACY_PROC=y
210CONFIG_MMU=y 212CONFIG_MMU=y
211 213
212# 214#
@@ -225,6 +227,7 @@ CONFIG_PCMCIA_IOCTL=y
225# CONFIG_YENTA is not set 227# CONFIG_YENTA is not set
226# CONFIG_PD6729 is not set 228# CONFIG_PD6729 is not set
227# CONFIG_I82092 is not set 229# CONFIG_I82092 is not set
230# CONFIG_PCMCIA_VRC4173 is not set
228 231
229# 232#
230# PCI Hotplug Support 233# PCI Hotplug Support
@@ -236,6 +239,7 @@ CONFIG_PCMCIA_IOCTL=y
236# 239#
237CONFIG_BINFMT_ELF=y 240CONFIG_BINFMT_ELF=y
238# CONFIG_BINFMT_MISC is not set 241# CONFIG_BINFMT_MISC is not set
242CONFIG_TRAD_SIGNALS=y
239 243
240# 244#
241# Networking 245# Networking
@@ -245,6 +249,7 @@ CONFIG_NET=y
245# 249#
246# Networking options 250# Networking options
247# 251#
252# CONFIG_NETDEBUG is not set
248CONFIG_PACKET=y 253CONFIG_PACKET=y
249CONFIG_PACKET_MMAP=y 254CONFIG_PACKET_MMAP=y
250CONFIG_UNIX=y 255CONFIG_UNIX=y
@@ -264,12 +269,15 @@ CONFIG_IP_FIB_HASH=y
264# CONFIG_INET_AH is not set 269# CONFIG_INET_AH is not set
265# CONFIG_INET_ESP is not set 270# CONFIG_INET_ESP is not set
266# CONFIG_INET_IPCOMP is not set 271# CONFIG_INET_IPCOMP is not set
267CONFIG_INET_TUNNEL=m 272# CONFIG_INET_XFRM_TUNNEL is not set
273# CONFIG_INET_TUNNEL is not set
268CONFIG_INET_DIAG=y 274CONFIG_INET_DIAG=y
269CONFIG_INET_TCP_DIAG=y 275CONFIG_INET_TCP_DIAG=y
270# CONFIG_TCP_CONG_ADVANCED is not set 276# CONFIG_TCP_CONG_ADVANCED is not set
271CONFIG_TCP_CONG_BIC=y 277CONFIG_TCP_CONG_BIC=y
272# CONFIG_IPV6 is not set 278# CONFIG_IPV6 is not set
279# CONFIG_INET6_XFRM_TUNNEL is not set
280# CONFIG_INET6_TUNNEL is not set
273# CONFIG_NETFILTER is not set 281# CONFIG_NETFILTER is not set
274 282
275# 283#
@@ -281,6 +289,11 @@ CONFIG_TCP_CONG_BIC=y
281# SCTP Configuration (EXPERIMENTAL) 289# SCTP Configuration (EXPERIMENTAL)
282# 290#
283# CONFIG_IP_SCTP is not set 291# CONFIG_IP_SCTP is not set
292
293#
294# TIPC Configuration (EXPERIMENTAL)
295#
296# CONFIG_TIPC is not set
284# CONFIG_ATM is not set 297# CONFIG_ATM is not set
285# CONFIG_BRIDGE is not set 298# CONFIG_BRIDGE is not set
286# CONFIG_VLAN_8021Q is not set 299# CONFIG_VLAN_8021Q is not set
@@ -290,11 +303,6 @@ CONFIG_TCP_CONG_BIC=y
290# CONFIG_ATALK is not set 303# CONFIG_ATALK is not set
291# CONFIG_X25 is not set 304# CONFIG_X25 is not set
292# CONFIG_LAPB is not set 305# CONFIG_LAPB is not set
293
294#
295# TIPC Configuration (EXPERIMENTAL)
296#
297# CONFIG_TIPC is not set
298# CONFIG_NET_DIVERT is not set 306# CONFIG_NET_DIVERT is not set
299# CONFIG_ECONET is not set 307# CONFIG_ECONET is not set
300# CONFIG_WAN_ROUTER is not set 308# CONFIG_WAN_ROUTER is not set
@@ -316,6 +324,9 @@ CONFIG_IEEE80211=m
316CONFIG_IEEE80211_CRYPT_WEP=m 324CONFIG_IEEE80211_CRYPT_WEP=m
317CONFIG_IEEE80211_CRYPT_CCMP=m 325CONFIG_IEEE80211_CRYPT_CCMP=m
318CONFIG_IEEE80211_CRYPT_TKIP=m 326CONFIG_IEEE80211_CRYPT_TKIP=m
327CONFIG_IEEE80211_SOFTMAC=m
328# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
329CONFIG_WIRELESS_EXT=y
319 330
320# 331#
321# Device Drivers 332# Device Drivers
@@ -360,7 +371,7 @@ CONFIG_CONNECTOR=m
360# CONFIG_BLK_DEV_SX8 is not set 371# CONFIG_BLK_DEV_SX8 is not set
361# CONFIG_BLK_DEV_UB is not set 372# CONFIG_BLK_DEV_UB is not set
362# CONFIG_BLK_DEV_RAM is not set 373# CONFIG_BLK_DEV_RAM is not set
363CONFIG_BLK_DEV_RAM_COUNT=16 374# CONFIG_BLK_DEV_INITRD is not set
364# CONFIG_CDROM_PKTCDVD is not set 375# CONFIG_CDROM_PKTCDVD is not set
365CONFIG_ATA_OVER_ETH=m 376CONFIG_ATA_OVER_ETH=m
366 377
@@ -475,6 +486,7 @@ CONFIG_MII=m
475# Wireless LAN (non-hamradio) 486# Wireless LAN (non-hamradio)
476# 487#
477CONFIG_NET_RADIO=y 488CONFIG_NET_RADIO=y
489# CONFIG_NET_WIRELESS_RTNETLINK is not set
478 490
479# 491#
480# Obsolete Wireless cards support (pre-802.11) 492# Obsolete Wireless cards support (pre-802.11)
@@ -513,6 +525,7 @@ CONFIG_PCMCIA_HERMES=m
513# 525#
514# CONFIG_PRISM54 is not set 526# CONFIG_PRISM54 is not set
515# CONFIG_HOSTAP is not set 527# CONFIG_HOSTAP is not set
528# CONFIG_BCM43XX is not set
516CONFIG_NET_WIRELESS=y 529CONFIG_NET_WIRELESS=y
517 530
518# 531#
@@ -604,6 +617,8 @@ CONFIG_HW_CONSOLE=y
604# 617#
605# Non-8250 serial port support 618# Non-8250 serial port support
606# 619#
620# CONFIG_SERIAL_VR41XX is not set
621# CONFIG_SERIAL_JSM is not set
607CONFIG_UNIX98_PTYS=y 622CONFIG_UNIX98_PTYS=y
608CONFIG_LEGACY_PTYS=y 623CONFIG_LEGACY_PTYS=y
609CONFIG_LEGACY_PTY_COUNT=256 624CONFIG_LEGACY_PTY_COUNT=256
@@ -634,6 +649,7 @@ CONFIG_LEGACY_PTY_COUNT=256
634# CONFIG_SYNCLINK_CS is not set 649# CONFIG_SYNCLINK_CS is not set
635# CONFIG_CARDMAN_4000 is not set 650# CONFIG_CARDMAN_4000 is not set
636# CONFIG_CARDMAN_4040 is not set 651# CONFIG_CARDMAN_4040 is not set
652# CONFIG_GPIO_VR41XX is not set
637# CONFIG_RAW_DRIVER is not set 653# CONFIG_RAW_DRIVER is not set
638 654
639# 655#
@@ -669,10 +685,6 @@ CONFIG_LEGACY_PTY_COUNT=256
669# 685#
670 686
671# 687#
672# Multimedia Capabilities Port drivers
673#
674
675#
676# Multimedia devices 688# Multimedia devices
677# 689#
678# CONFIG_VIDEO_DEV is not set 690# CONFIG_VIDEO_DEV is not set
@@ -681,6 +693,7 @@ CONFIG_LEGACY_PTY_COUNT=256
681# Digital Video Broadcasting Devices 693# Digital Video Broadcasting Devices
682# 694#
683# CONFIG_DVB is not set 695# CONFIG_DVB is not set
696# CONFIG_USB_DABUSB is not set
684 697
685# 698#
686# Graphics support 699# Graphics support
@@ -703,6 +716,7 @@ CONFIG_DUMMY_CONSOLE=y
703# 716#
704CONFIG_USB_ARCH_HAS_HCD=y 717CONFIG_USB_ARCH_HAS_HCD=y
705CONFIG_USB_ARCH_HAS_OHCI=y 718CONFIG_USB_ARCH_HAS_OHCI=y
719CONFIG_USB_ARCH_HAS_EHCI=y
706CONFIG_USB=m 720CONFIG_USB=m
707# CONFIG_USB_DEBUG is not set 721# CONFIG_USB_DEBUG is not set
708 722
@@ -756,9 +770,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
756# CONFIG_USB_ACECAD is not set 770# CONFIG_USB_ACECAD is not set
757# CONFIG_USB_KBTAB is not set 771# CONFIG_USB_KBTAB is not set
758# CONFIG_USB_POWERMATE is not set 772# CONFIG_USB_POWERMATE is not set
759# CONFIG_USB_MTOUCH is not set 773# CONFIG_USB_TOUCHSCREEN is not set
760# CONFIG_USB_ITMTOUCH is not set
761# CONFIG_USB_EGALAX is not set
762# CONFIG_USB_YEALINK is not set 774# CONFIG_USB_YEALINK is not set
763# CONFIG_USB_XPAD is not set 775# CONFIG_USB_XPAD is not set
764# CONFIG_USB_ATI_REMOTE is not set 776# CONFIG_USB_ATI_REMOTE is not set
@@ -772,15 +784,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
772# CONFIG_USB_MDC800 is not set 784# CONFIG_USB_MDC800 is not set
773 785
774# 786#
775# USB Multimedia devices
776#
777# CONFIG_USB_DABUSB is not set
778
779#
780# Video4Linux support is needed for USB Multimedia device support
781#
782
783#
784# USB Network Adapters 787# USB Network Adapters
785# 788#
786# CONFIG_USB_CATC is not set 789# CONFIG_USB_CATC is not set
@@ -832,13 +835,31 @@ CONFIG_USB_PEGASUS=m
832# CONFIG_MMC is not set 835# CONFIG_MMC is not set
833 836
834# 837#
838# LED devices
839#
840# CONFIG_NEW_LEDS is not set
841
842#
843# LED drivers
844#
845
846#
847# LED Triggers
848#
849
850#
835# InfiniBand support 851# InfiniBand support
836# 852#
837# CONFIG_INFINIBAND is not set 853# CONFIG_INFINIBAND is not set
838 854
839# 855#
840# SN Devices 856# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
857#
858
859#
860# Real Time Clock
841# 861#
862# CONFIG_RTC_CLASS is not set
842 863
843# 864#
844# File systems 865# File systems
@@ -883,7 +904,6 @@ CONFIG_SYSFS=y
883# CONFIG_TMPFS is not set 904# CONFIG_TMPFS is not set
884# CONFIG_HUGETLB_PAGE is not set 905# CONFIG_HUGETLB_PAGE is not set
885CONFIG_RAMFS=y 906CONFIG_RAMFS=y
886CONFIG_RELAYFS_FS=m
887# CONFIG_CONFIGFS_FS is not set 907# CONFIG_CONFIGFS_FS is not set
888 908
889# 909#
@@ -946,6 +966,7 @@ CONFIG_MSDOS_PARTITION=y
946# CONFIG_MAGIC_SYSRQ is not set 966# CONFIG_MAGIC_SYSRQ is not set
947# CONFIG_DEBUG_KERNEL is not set 967# CONFIG_DEBUG_KERNEL is not set
948CONFIG_LOG_BUF_SHIFT=14 968CONFIG_LOG_BUF_SHIFT=14
969# CONFIG_DEBUG_FS is not set
949CONFIG_CROSSCOMPILE=y 970CONFIG_CROSSCOMPILE=y
950CONFIG_CMDLINE="mem=32M console=ttyVR0,19200" 971CONFIG_CMDLINE="mem=32M console=ttyVR0,19200"
951 972
diff --git a/arch/mips/configs/ocelot_3_defconfig b/arch/mips/configs/ocelot_3_defconfig
index 925d8adef88d..1ce4310fd92a 100644
--- a/arch/mips/configs/ocelot_3_defconfig
+++ b/arch/mips/configs/ocelot_3_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:18 2006 4# Mon Apr 24 14:51:10 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MOMENCO_OCELOT_3=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -120,7 +122,6 @@ CONFIG_RM7000_CPU_SCACHE=y
120CONFIG_CPU_HAS_PREFETCH=y 122CONFIG_CPU_HAS_PREFETCH=y
121# CONFIG_MIPS_MT is not set 123# CONFIG_MIPS_MT is not set
122# CONFIG_64BIT_PHYS_ADDR is not set 124# CONFIG_64BIT_PHYS_ADDR is not set
123# CONFIG_CPU_ADVANCED is not set
124CONFIG_CPU_HAS_LLSC=y 125CONFIG_CPU_HAS_LLSC=y
125CONFIG_CPU_HAS_SYNC=y 126CONFIG_CPU_HAS_SYNC=y
126CONFIG_GENERIC_HARDIRQS=y 127CONFIG_GENERIC_HARDIRQS=y
@@ -144,7 +145,6 @@ CONFIG_PREEMPT_NONE=y
144# Code maturity level options 145# Code maturity level options
145# 146#
146CONFIG_EXPERIMENTAL=y 147CONFIG_EXPERIMENTAL=y
147CONFIG_CLEAN_COMPILE=y
148CONFIG_BROKEN_ON_SMP=y 148CONFIG_BROKEN_ON_SMP=y
149CONFIG_INIT_ENV_ARG_LIMIT=32 149CONFIG_INIT_ENV_ARG_LIMIT=32
150 150
@@ -161,6 +161,7 @@ CONFIG_SYSCTL=y
161# CONFIG_AUDIT is not set 161# CONFIG_AUDIT is not set
162CONFIG_IKCONFIG=y 162CONFIG_IKCONFIG=y
163CONFIG_IKCONFIG_PROC=y 163CONFIG_IKCONFIG_PROC=y
164CONFIG_RELAY=y
164CONFIG_INITRAMFS_SOURCE="" 165CONFIG_INITRAMFS_SOURCE=""
165# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 166# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
166CONFIG_EMBEDDED=y 167CONFIG_EMBEDDED=y
@@ -174,10 +175,6 @@ CONFIG_BASE_FULL=y
174CONFIG_FUTEX=y 175CONFIG_FUTEX=y
175CONFIG_EPOLL=y 176CONFIG_EPOLL=y
176CONFIG_SHMEM=y 177CONFIG_SHMEM=y
177CONFIG_CC_ALIGN_FUNCTIONS=0
178CONFIG_CC_ALIGN_LABELS=0
179CONFIG_CC_ALIGN_LOOPS=0
180CONFIG_CC_ALIGN_JUMPS=0
181CONFIG_SLAB=y 178CONFIG_SLAB=y
182# CONFIG_TINY_SHMEM is not set 179# CONFIG_TINY_SHMEM is not set
183CONFIG_BASE_SMALL=0 180CONFIG_BASE_SMALL=0
@@ -189,7 +186,6 @@ CONFIG_BASE_SMALL=0
189CONFIG_MODULES=y 186CONFIG_MODULES=y
190CONFIG_MODULE_UNLOAD=y 187CONFIG_MODULE_UNLOAD=y
191# CONFIG_MODULE_FORCE_UNLOAD is not set 188# CONFIG_MODULE_FORCE_UNLOAD is not set
192CONFIG_OBSOLETE_MODPARM=y
193CONFIG_MODVERSIONS=y 189CONFIG_MODVERSIONS=y
194# CONFIG_MODULE_SRCVERSION_ALL is not set 190# CONFIG_MODULE_SRCVERSION_ALL is not set
195CONFIG_KMOD=y 191CONFIG_KMOD=y
@@ -198,6 +194,8 @@ CONFIG_KMOD=y
198# Block layer 194# Block layer
199# 195#
200# CONFIG_LBD is not set 196# CONFIG_LBD is not set
197# CONFIG_BLK_DEV_IO_TRACE is not set
198# CONFIG_LSF is not set
201 199
202# 200#
203# IO Schedulers 201# IO Schedulers
@@ -217,7 +215,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
217# 215#
218CONFIG_HW_HAS_PCI=y 216CONFIG_HW_HAS_PCI=y
219CONFIG_PCI=y 217CONFIG_PCI=y
220CONFIG_PCI_LEGACY_PROC=y
221CONFIG_MMU=y 218CONFIG_MMU=y
222 219
223# 220#
@@ -245,6 +242,7 @@ CONFIG_NET=y
245# 242#
246# Networking options 243# Networking options
247# 244#
245# CONFIG_NETDEBUG is not set
248CONFIG_PACKET=y 246CONFIG_PACKET=y
249# CONFIG_PACKET_MMAP is not set 247# CONFIG_PACKET_MMAP is not set
250CONFIG_UNIX=y 248CONFIG_UNIX=y
@@ -266,6 +264,7 @@ CONFIG_IP_PNP_BOOTP=y
266# CONFIG_INET_AH is not set 264# CONFIG_INET_AH is not set
267# CONFIG_INET_ESP is not set 265# CONFIG_INET_ESP is not set
268# CONFIG_INET_IPCOMP is not set 266# CONFIG_INET_IPCOMP is not set
267# CONFIG_INET_XFRM_TUNNEL is not set
269# CONFIG_INET_TUNNEL is not set 268# CONFIG_INET_TUNNEL is not set
270CONFIG_INET_DIAG=y 269CONFIG_INET_DIAG=y
271CONFIG_INET_TCP_DIAG=y 270CONFIG_INET_TCP_DIAG=y
@@ -278,9 +277,12 @@ CONFIG_TCP_CONG_BIC=y
278# CONFIG_IP_VS is not set 277# CONFIG_IP_VS is not set
279CONFIG_IPV6=m 278CONFIG_IPV6=m
280# CONFIG_IPV6_PRIVACY is not set 279# CONFIG_IPV6_PRIVACY is not set
280CONFIG_IPV6_ROUTER_PREF=y
281CONFIG_IPV6_ROUTE_INFO=y
281# CONFIG_INET6_AH is not set 282# CONFIG_INET6_AH is not set
282# CONFIG_INET6_ESP is not set 283# CONFIG_INET6_ESP is not set
283# CONFIG_INET6_IPCOMP is not set 284# CONFIG_INET6_IPCOMP is not set
285# CONFIG_INET6_XFRM_TUNNEL is not set
284# CONFIG_INET6_TUNNEL is not set 286# CONFIG_INET6_TUNNEL is not set
285# CONFIG_IPV6_TUNNEL is not set 287# CONFIG_IPV6_TUNNEL is not set
286CONFIG_NETFILTER=y 288CONFIG_NETFILTER=y
@@ -299,10 +301,13 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
299CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 301CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
300CONFIG_NETFILTER_XT_MATCH_COMMENT=m 302CONFIG_NETFILTER_XT_MATCH_COMMENT=m
301CONFIG_NETFILTER_XT_MATCH_DCCP=m 303CONFIG_NETFILTER_XT_MATCH_DCCP=m
304CONFIG_NETFILTER_XT_MATCH_ESP=m
302CONFIG_NETFILTER_XT_MATCH_LENGTH=m 305CONFIG_NETFILTER_XT_MATCH_LENGTH=m
303CONFIG_NETFILTER_XT_MATCH_LIMIT=m 306CONFIG_NETFILTER_XT_MATCH_LIMIT=m
304CONFIG_NETFILTER_XT_MATCH_MAC=m 307CONFIG_NETFILTER_XT_MATCH_MAC=m
305CONFIG_NETFILTER_XT_MATCH_MARK=m 308CONFIG_NETFILTER_XT_MATCH_MARK=m
309CONFIG_NETFILTER_XT_MATCH_POLICY=m
310CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
306CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 311CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
307CONFIG_NETFILTER_XT_MATCH_REALM=m 312CONFIG_NETFILTER_XT_MATCH_REALM=m
308CONFIG_NETFILTER_XT_MATCH_SCTP=m 313CONFIG_NETFILTER_XT_MATCH_SCTP=m
@@ -332,6 +337,11 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
332# SCTP Configuration (EXPERIMENTAL) 337# SCTP Configuration (EXPERIMENTAL)
333# 338#
334# CONFIG_IP_SCTP is not set 339# CONFIG_IP_SCTP is not set
340
341#
342# TIPC Configuration (EXPERIMENTAL)
343#
344# CONFIG_TIPC is not set
335# CONFIG_ATM is not set 345# CONFIG_ATM is not set
336# CONFIG_BRIDGE is not set 346# CONFIG_BRIDGE is not set
337# CONFIG_VLAN_8021Q is not set 347# CONFIG_VLAN_8021Q is not set
@@ -341,11 +351,6 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
341# CONFIG_ATALK is not set 351# CONFIG_ATALK is not set
342# CONFIG_X25 is not set 352# CONFIG_X25 is not set
343# CONFIG_LAPB is not set 353# CONFIG_LAPB is not set
344
345#
346# TIPC Configuration (EXPERIMENTAL)
347#
348# CONFIG_TIPC is not set
349# CONFIG_NET_DIVERT is not set 354# CONFIG_NET_DIVERT is not set
350# CONFIG_ECONET is not set 355# CONFIG_ECONET is not set
351# CONFIG_WAN_ROUTER is not set 356# CONFIG_WAN_ROUTER is not set
@@ -367,6 +372,9 @@ CONFIG_IEEE80211=m
367# CONFIG_IEEE80211_DEBUG is not set 372# CONFIG_IEEE80211_DEBUG is not set
368CONFIG_IEEE80211_CRYPT_WEP=m 373CONFIG_IEEE80211_CRYPT_WEP=m
369CONFIG_IEEE80211_CRYPT_CCMP=m 374CONFIG_IEEE80211_CRYPT_CCMP=m
375CONFIG_IEEE80211_SOFTMAC=m
376# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
377CONFIG_WIRELESS_EXT=y
370 378
371# 379#
372# Device Drivers 380# Device Drivers
@@ -411,7 +419,7 @@ CONFIG_BLK_DEV_LOOP=y
411# CONFIG_BLK_DEV_NBD is not set 419# CONFIG_BLK_DEV_NBD is not set
412# CONFIG_BLK_DEV_SX8 is not set 420# CONFIG_BLK_DEV_SX8 is not set
413# CONFIG_BLK_DEV_RAM is not set 421# CONFIG_BLK_DEV_RAM is not set
414CONFIG_BLK_DEV_RAM_COUNT=16 422# CONFIG_BLK_DEV_INITRD is not set
415# CONFIG_CDROM_PKTCDVD is not set 423# CONFIG_CDROM_PKTCDVD is not set
416CONFIG_ATA_OVER_ETH=m 424CONFIG_ATA_OVER_ETH=m
417 425
@@ -475,7 +483,6 @@ CONFIG_ISCSI_TCP=m
475# CONFIG_SCSI_INIA100 is not set 483# CONFIG_SCSI_INIA100 is not set
476# CONFIG_SCSI_SYM53C8XX_2 is not set 484# CONFIG_SCSI_SYM53C8XX_2 is not set
477# CONFIG_SCSI_IPR is not set 485# CONFIG_SCSI_IPR is not set
478# CONFIG_SCSI_QLOGIC_FC is not set
479# CONFIG_SCSI_QLOGIC_1280 is not set 486# CONFIG_SCSI_QLOGIC_1280 is not set
480# CONFIG_SCSI_QLA_FC is not set 487# CONFIG_SCSI_QLA_FC is not set
481# CONFIG_SCSI_LPFC is not set 488# CONFIG_SCSI_LPFC is not set
@@ -690,6 +697,7 @@ CONFIG_HW_CONSOLE=y
690# 697#
691CONFIG_SERIAL_8250=y 698CONFIG_SERIAL_8250=y
692CONFIG_SERIAL_8250_CONSOLE=y 699CONFIG_SERIAL_8250_CONSOLE=y
700CONFIG_SERIAL_8250_PCI=y
693CONFIG_SERIAL_8250_NR_UARTS=4 701CONFIG_SERIAL_8250_NR_UARTS=4
694CONFIG_SERIAL_8250_RUNTIME_UARTS=4 702CONFIG_SERIAL_8250_RUNTIME_UARTS=4
695# CONFIG_SERIAL_8250_EXTENDED is not set 703# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -699,6 +707,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
699# 707#
700CONFIG_SERIAL_CORE=y 708CONFIG_SERIAL_CORE=y
701CONFIG_SERIAL_CORE_CONSOLE=y 709CONFIG_SERIAL_CORE_CONSOLE=y
710# CONFIG_SERIAL_JSM is not set
702CONFIG_UNIX98_PTYS=y 711CONFIG_UNIX98_PTYS=y
703CONFIG_LEGACY_PTYS=y 712CONFIG_LEGACY_PTYS=y
704CONFIG_LEGACY_PTY_COUNT=256 713CONFIG_LEGACY_PTY_COUNT=256
@@ -756,10 +765,6 @@ CONFIG_RTC=y
756# 765#
757 766
758# 767#
759# Multimedia Capabilities Port drivers
760#
761
762#
763# Multimedia devices 768# Multimedia devices
764# 769#
765# CONFIG_VIDEO_DEV is not set 770# CONFIG_VIDEO_DEV is not set
@@ -777,6 +782,7 @@ CONFIG_FB=y
777# CONFIG_FB_CFB_COPYAREA is not set 782# CONFIG_FB_CFB_COPYAREA is not set
778# CONFIG_FB_CFB_IMAGEBLIT is not set 783# CONFIG_FB_CFB_IMAGEBLIT is not set
779# CONFIG_FB_MACMODES is not set 784# CONFIG_FB_MACMODES is not set
785CONFIG_FB_FIRMWARE_EDID=y
780CONFIG_FB_MODE_HELPERS=y 786CONFIG_FB_MODE_HELPERS=y
781# CONFIG_FB_TILEBLITTING is not set 787# CONFIG_FB_TILEBLITTING is not set
782# CONFIG_FB_CIRRUS is not set 788# CONFIG_FB_CIRRUS is not set
@@ -788,7 +794,6 @@ CONFIG_FB_MODE_HELPERS=y
788# CONFIG_FB_NVIDIA is not set 794# CONFIG_FB_NVIDIA is not set
789# CONFIG_FB_RIVA is not set 795# CONFIG_FB_RIVA is not set
790# CONFIG_FB_MATROX is not set 796# CONFIG_FB_MATROX is not set
791# CONFIG_FB_RADEON_OLD is not set
792# CONFIG_FB_RADEON is not set 797# CONFIG_FB_RADEON is not set
793# CONFIG_FB_ATY128 is not set 798# CONFIG_FB_ATY128 is not set
794# CONFIG_FB_ATY is not set 799# CONFIG_FB_ATY is not set
@@ -832,6 +837,7 @@ CONFIG_LOGO_LINUX_CLUT224=y
832# 837#
833CONFIG_USB_ARCH_HAS_HCD=y 838CONFIG_USB_ARCH_HAS_HCD=y
834CONFIG_USB_ARCH_HAS_OHCI=y 839CONFIG_USB_ARCH_HAS_OHCI=y
840CONFIG_USB_ARCH_HAS_EHCI=y
835# CONFIG_USB is not set 841# CONFIG_USB is not set
836 842
837# 843#
@@ -849,13 +855,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
849# CONFIG_MMC is not set 855# CONFIG_MMC is not set
850 856
851# 857#
858# LED devices
859#
860# CONFIG_NEW_LEDS is not set
861
862#
863# LED drivers
864#
865
866#
867# LED Triggers
868#
869
870#
852# InfiniBand support 871# InfiniBand support
853# 872#
854# CONFIG_INFINIBAND is not set 873# CONFIG_INFINIBAND is not set
855 874
856# 875#
857# SN Devices 876# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
877#
878
879#
880# Real Time Clock
858# 881#
882# CONFIG_RTC_CLASS is not set
859 883
860# 884#
861# File systems 885# File systems
@@ -914,7 +938,6 @@ CONFIG_SYSFS=y
914CONFIG_TMPFS=y 938CONFIG_TMPFS=y
915# CONFIG_HUGETLB_PAGE is not set 939# CONFIG_HUGETLB_PAGE is not set
916CONFIG_RAMFS=y 940CONFIG_RAMFS=y
917CONFIG_RELAYFS_FS=m
918# CONFIG_CONFIGFS_FS is not set 941# CONFIG_CONFIGFS_FS is not set
919 942
920# 943#
@@ -1025,6 +1048,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1025# CONFIG_MAGIC_SYSRQ is not set 1048# CONFIG_MAGIC_SYSRQ is not set
1026# CONFIG_DEBUG_KERNEL is not set 1049# CONFIG_DEBUG_KERNEL is not set
1027CONFIG_LOG_BUF_SHIFT=14 1050CONFIG_LOG_BUF_SHIFT=14
1051# CONFIG_DEBUG_FS is not set
1028CONFIG_CROSSCOMPILE=y 1052CONFIG_CROSSCOMPILE=y
1029CONFIG_CMDLINE="ip=any root=nfs" 1053CONFIG_CMDLINE="ip=any root=nfs"
1030 1054
diff --git a/arch/mips/configs/ocelot_c_defconfig b/arch/mips/configs/ocelot_c_defconfig
index ee1cf9b9eb9a..8a6aa5012f89 100644
--- a/arch/mips/configs/ocelot_c_defconfig
+++ b/arch/mips/configs/ocelot_c_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:19 2006 4# Mon Apr 24 14:51:10 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MOMENCO_OCELOT_C=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -139,7 +141,6 @@ CONFIG_PREEMPT_NONE=y
139# Code maturity level options 141# Code maturity level options
140# 142#
141CONFIG_EXPERIMENTAL=y 143CONFIG_EXPERIMENTAL=y
142CONFIG_CLEAN_COMPILE=y
143CONFIG_BROKEN_ON_SMP=y 144CONFIG_BROKEN_ON_SMP=y
144CONFIG_INIT_ENV_ARG_LIMIT=32 145CONFIG_INIT_ENV_ARG_LIMIT=32
145 146
@@ -155,6 +156,7 @@ CONFIG_SYSVIPC=y
155CONFIG_SYSCTL=y 156CONFIG_SYSCTL=y
156# CONFIG_AUDIT is not set 157# CONFIG_AUDIT is not set
157# CONFIG_IKCONFIG is not set 158# CONFIG_IKCONFIG is not set
159CONFIG_RELAY=y
158CONFIG_INITRAMFS_SOURCE="" 160CONFIG_INITRAMFS_SOURCE=""
159# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 161# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
160CONFIG_EMBEDDED=y 162CONFIG_EMBEDDED=y
@@ -168,10 +170,6 @@ CONFIG_BASE_FULL=y
168CONFIG_FUTEX=y 170CONFIG_FUTEX=y
169CONFIG_EPOLL=y 171CONFIG_EPOLL=y
170CONFIG_SHMEM=y 172CONFIG_SHMEM=y
171CONFIG_CC_ALIGN_FUNCTIONS=0
172CONFIG_CC_ALIGN_LABELS=0
173CONFIG_CC_ALIGN_LOOPS=0
174CONFIG_CC_ALIGN_JUMPS=0
175CONFIG_SLAB=y 173CONFIG_SLAB=y
176# CONFIG_TINY_SHMEM is not set 174# CONFIG_TINY_SHMEM is not set
177CONFIG_BASE_SMALL=0 175CONFIG_BASE_SMALL=0
@@ -185,6 +183,7 @@ CONFIG_BASE_SMALL=0
185# 183#
186# Block layer 184# Block layer
187# 185#
186# CONFIG_BLK_DEV_IO_TRACE is not set
188 187
189# 188#
190# IO Schedulers 189# IO Schedulers
@@ -204,7 +203,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
204# 203#
205CONFIG_HW_HAS_PCI=y 204CONFIG_HW_HAS_PCI=y
206CONFIG_PCI=y 205CONFIG_PCI=y
207CONFIG_PCI_LEGACY_PROC=y
208CONFIG_MMU=y 206CONFIG_MMU=y
209 207
210# 208#
@@ -222,6 +220,7 @@ CONFIG_MMU=y
222# 220#
223CONFIG_BINFMT_ELF=y 221CONFIG_BINFMT_ELF=y
224# CONFIG_BINFMT_MISC is not set 222# CONFIG_BINFMT_MISC is not set
223# CONFIG_BUILD_ELF64 is not set
225CONFIG_MIPS32_COMPAT=y 224CONFIG_MIPS32_COMPAT=y
226CONFIG_COMPAT=y 225CONFIG_COMPAT=y
227CONFIG_MIPS32_O32=y 226CONFIG_MIPS32_O32=y
@@ -236,6 +235,7 @@ CONFIG_NET=y
236# 235#
237# Networking options 236# Networking options
238# 237#
238# CONFIG_NETDEBUG is not set
239# CONFIG_PACKET is not set 239# CONFIG_PACKET is not set
240CONFIG_UNIX=y 240CONFIG_UNIX=y
241CONFIG_XFRM=y 241CONFIG_XFRM=y
@@ -256,12 +256,15 @@ CONFIG_IP_PNP_DHCP=y
256# CONFIG_INET_AH is not set 256# CONFIG_INET_AH is not set
257# CONFIG_INET_ESP is not set 257# CONFIG_INET_ESP is not set
258# CONFIG_INET_IPCOMP is not set 258# CONFIG_INET_IPCOMP is not set
259CONFIG_INET_TUNNEL=y 259# CONFIG_INET_XFRM_TUNNEL is not set
260# CONFIG_INET_TUNNEL is not set
260CONFIG_INET_DIAG=y 261CONFIG_INET_DIAG=y
261CONFIG_INET_TCP_DIAG=y 262CONFIG_INET_TCP_DIAG=y
262# CONFIG_TCP_CONG_ADVANCED is not set 263# CONFIG_TCP_CONG_ADVANCED is not set
263CONFIG_TCP_CONG_BIC=y 264CONFIG_TCP_CONG_BIC=y
264# CONFIG_IPV6 is not set 265# CONFIG_IPV6 is not set
266# CONFIG_INET6_XFRM_TUNNEL is not set
267# CONFIG_INET6_TUNNEL is not set
265# CONFIG_NETFILTER is not set 268# CONFIG_NETFILTER is not set
266 269
267# 270#
@@ -273,6 +276,11 @@ CONFIG_TCP_CONG_BIC=y
273# SCTP Configuration (EXPERIMENTAL) 276# SCTP Configuration (EXPERIMENTAL)
274# 277#
275# CONFIG_IP_SCTP is not set 278# CONFIG_IP_SCTP is not set
279
280#
281# TIPC Configuration (EXPERIMENTAL)
282#
283# CONFIG_TIPC is not set
276# CONFIG_ATM is not set 284# CONFIG_ATM is not set
277# CONFIG_BRIDGE is not set 285# CONFIG_BRIDGE is not set
278# CONFIG_VLAN_8021Q is not set 286# CONFIG_VLAN_8021Q is not set
@@ -282,11 +290,6 @@ CONFIG_TCP_CONG_BIC=y
282# CONFIG_ATALK is not set 290# CONFIG_ATALK is not set
283# CONFIG_X25 is not set 291# CONFIG_X25 is not set
284# CONFIG_LAPB is not set 292# CONFIG_LAPB is not set
285
286#
287# TIPC Configuration (EXPERIMENTAL)
288#
289# CONFIG_TIPC is not set
290# CONFIG_NET_DIVERT is not set 293# CONFIG_NET_DIVERT is not set
291# CONFIG_ECONET is not set 294# CONFIG_ECONET is not set
292# CONFIG_WAN_ROUTER is not set 295# CONFIG_WAN_ROUTER is not set
@@ -307,6 +310,9 @@ CONFIG_IEEE80211=y
307# CONFIG_IEEE80211_DEBUG is not set 310# CONFIG_IEEE80211_DEBUG is not set
308CONFIG_IEEE80211_CRYPT_WEP=y 311CONFIG_IEEE80211_CRYPT_WEP=y
309CONFIG_IEEE80211_CRYPT_CCMP=y 312CONFIG_IEEE80211_CRYPT_CCMP=y
313CONFIG_IEEE80211_SOFTMAC=y
314# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
315CONFIG_WIRELESS_EXT=y
310 316
311# 317#
312# Device Drivers 318# Device Drivers
@@ -351,7 +357,7 @@ CONFIG_PROC_EVENTS=y
351# CONFIG_BLK_DEV_NBD is not set 357# CONFIG_BLK_DEV_NBD is not set
352# CONFIG_BLK_DEV_SX8 is not set 358# CONFIG_BLK_DEV_SX8 is not set
353# CONFIG_BLK_DEV_RAM is not set 359# CONFIG_BLK_DEV_RAM is not set
354CONFIG_BLK_DEV_RAM_COUNT=16 360# CONFIG_BLK_DEV_INITRD is not set
355CONFIG_CDROM_PKTCDVD=y 361CONFIG_CDROM_PKTCDVD=y
356CONFIG_CDROM_PKTCDVD_BUFFERS=8 362CONFIG_CDROM_PKTCDVD_BUFFERS=8
357# CONFIG_CDROM_PKTCDVD_WCACHE is not set 363# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -542,6 +548,7 @@ CONFIG_HW_CONSOLE=y
542# 548#
543CONFIG_SERIAL_8250=y 549CONFIG_SERIAL_8250=y
544CONFIG_SERIAL_8250_CONSOLE=y 550CONFIG_SERIAL_8250_CONSOLE=y
551CONFIG_SERIAL_8250_PCI=y
545CONFIG_SERIAL_8250_NR_UARTS=4 552CONFIG_SERIAL_8250_NR_UARTS=4
546CONFIG_SERIAL_8250_RUNTIME_UARTS=4 553CONFIG_SERIAL_8250_RUNTIME_UARTS=4
547# CONFIG_SERIAL_8250_EXTENDED is not set 554# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -551,6 +558,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
551# 558#
552CONFIG_SERIAL_CORE=y 559CONFIG_SERIAL_CORE=y
553CONFIG_SERIAL_CORE_CONSOLE=y 560CONFIG_SERIAL_CORE_CONSOLE=y
561# CONFIG_SERIAL_JSM is not set
554CONFIG_UNIX98_PTYS=y 562CONFIG_UNIX98_PTYS=y
555CONFIG_LEGACY_PTYS=y 563CONFIG_LEGACY_PTYS=y
556CONFIG_LEGACY_PTY_COUNT=256 564CONFIG_LEGACY_PTY_COUNT=256
@@ -609,10 +617,6 @@ CONFIG_LEGACY_PTY_COUNT=256
609# 617#
610 618
611# 619#
612# Multimedia Capabilities Port drivers
613#
614
615#
616# Multimedia devices 620# Multimedia devices
617# 621#
618# CONFIG_VIDEO_DEV is not set 622# CONFIG_VIDEO_DEV is not set
@@ -643,6 +647,7 @@ CONFIG_DUMMY_CONSOLE=y
643# 647#
644CONFIG_USB_ARCH_HAS_HCD=y 648CONFIG_USB_ARCH_HAS_HCD=y
645CONFIG_USB_ARCH_HAS_OHCI=y 649CONFIG_USB_ARCH_HAS_OHCI=y
650CONFIG_USB_ARCH_HAS_EHCI=y
646# CONFIG_USB is not set 651# CONFIG_USB is not set
647 652
648# 653#
@@ -660,13 +665,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
660# CONFIG_MMC is not set 665# CONFIG_MMC is not set
661 666
662# 667#
668# LED devices
669#
670# CONFIG_NEW_LEDS is not set
671
672#
673# LED drivers
674#
675
676#
677# LED Triggers
678#
679
680#
663# InfiniBand support 681# InfiniBand support
664# 682#
665# CONFIG_INFINIBAND is not set 683# CONFIG_INFINIBAND is not set
666 684
667# 685#
668# SN Devices 686# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
687#
688
689#
690# Real Time Clock
669# 691#
692# CONFIG_RTC_CLASS is not set
670 693
671# 694#
672# File systems 695# File systems
@@ -711,7 +734,6 @@ CONFIG_SYSFS=y
711# CONFIG_TMPFS is not set 734# CONFIG_TMPFS is not set
712# CONFIG_HUGETLB_PAGE is not set 735# CONFIG_HUGETLB_PAGE is not set
713CONFIG_RAMFS=y 736CONFIG_RAMFS=y
714CONFIG_RELAYFS_FS=y
715# CONFIG_CONFIGFS_FS is not set 737# CONFIG_CONFIGFS_FS is not set
716 738
717# 739#
@@ -778,6 +800,8 @@ CONFIG_MSDOS_PARTITION=y
778# CONFIG_MAGIC_SYSRQ is not set 800# CONFIG_MAGIC_SYSRQ is not set
779# CONFIG_DEBUG_KERNEL is not set 801# CONFIG_DEBUG_KERNEL is not set
780CONFIG_LOG_BUF_SHIFT=14 802CONFIG_LOG_BUF_SHIFT=14
803# CONFIG_DEBUG_FS is not set
804# CONFIG_UNWIND_INFO is not set
781CONFIG_CROSSCOMPILE=y 805CONFIG_CROSSCOMPILE=y
782CONFIG_CMDLINE="" 806CONFIG_CMDLINE=""
783 807
diff --git a/arch/mips/configs/ocelot_defconfig b/arch/mips/configs/ocelot_defconfig
index d80ff278f2af..f9ee35eeb762 100644
--- a/arch/mips/configs/ocelot_defconfig
+++ b/arch/mips/configs/ocelot_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:20 2006 4# Mon Apr 24 14:51:11 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MOMENCO_OCELOT=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -121,7 +123,6 @@ CONFIG_RM7000_CPU_SCACHE=y
121CONFIG_CPU_HAS_PREFETCH=y 123CONFIG_CPU_HAS_PREFETCH=y
122# CONFIG_MIPS_MT is not set 124# CONFIG_MIPS_MT is not set
123# CONFIG_64BIT_PHYS_ADDR is not set 125# CONFIG_64BIT_PHYS_ADDR is not set
124# CONFIG_CPU_ADVANCED is not set
125CONFIG_CPU_HAS_LLSC=y 126CONFIG_CPU_HAS_LLSC=y
126CONFIG_CPU_HAS_SYNC=y 127CONFIG_CPU_HAS_SYNC=y
127CONFIG_GENERIC_HARDIRQS=y 128CONFIG_GENERIC_HARDIRQS=y
@@ -144,7 +145,6 @@ CONFIG_PREEMPT_NONE=y
144# Code maturity level options 145# Code maturity level options
145# 146#
146CONFIG_EXPERIMENTAL=y 147CONFIG_EXPERIMENTAL=y
147CONFIG_CLEAN_COMPILE=y
148CONFIG_BROKEN_ON_SMP=y 148CONFIG_BROKEN_ON_SMP=y
149CONFIG_INIT_ENV_ARG_LIMIT=32 149CONFIG_INIT_ENV_ARG_LIMIT=32
150 150
@@ -160,6 +160,7 @@ CONFIG_SYSVIPC=y
160CONFIG_SYSCTL=y 160CONFIG_SYSCTL=y
161# CONFIG_AUDIT is not set 161# CONFIG_AUDIT is not set
162# CONFIG_IKCONFIG is not set 162# CONFIG_IKCONFIG is not set
163CONFIG_RELAY=y
163CONFIG_INITRAMFS_SOURCE="" 164CONFIG_INITRAMFS_SOURCE=""
164# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 165# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
165CONFIG_EMBEDDED=y 166CONFIG_EMBEDDED=y
@@ -173,10 +174,6 @@ CONFIG_BASE_FULL=y
173CONFIG_FUTEX=y 174CONFIG_FUTEX=y
174CONFIG_EPOLL=y 175CONFIG_EPOLL=y
175CONFIG_SHMEM=y 176CONFIG_SHMEM=y
176CONFIG_CC_ALIGN_FUNCTIONS=0
177CONFIG_CC_ALIGN_LABELS=0
178CONFIG_CC_ALIGN_LOOPS=0
179CONFIG_CC_ALIGN_JUMPS=0
180CONFIG_SLAB=y 177CONFIG_SLAB=y
181# CONFIG_TINY_SHMEM is not set 178# CONFIG_TINY_SHMEM is not set
182CONFIG_BASE_SMALL=0 179CONFIG_BASE_SMALL=0
@@ -191,6 +188,8 @@ CONFIG_BASE_SMALL=0
191# Block layer 188# Block layer
192# 189#
193# CONFIG_LBD is not set 190# CONFIG_LBD is not set
191# CONFIG_BLK_DEV_IO_TRACE is not set
192# CONFIG_LSF is not set
194 193
195# 194#
196# IO Schedulers 195# IO Schedulers
@@ -236,6 +235,7 @@ CONFIG_NET=y
236# 235#
237# Networking options 236# Networking options
238# 237#
238# CONFIG_NETDEBUG is not set
239# CONFIG_PACKET is not set 239# CONFIG_PACKET is not set
240CONFIG_UNIX=y 240CONFIG_UNIX=y
241CONFIG_XFRM=y 241CONFIG_XFRM=y
@@ -256,12 +256,15 @@ CONFIG_IP_PNP_BOOTP=y
256# CONFIG_INET_AH is not set 256# CONFIG_INET_AH is not set
257# CONFIG_INET_ESP is not set 257# CONFIG_INET_ESP is not set
258# CONFIG_INET_IPCOMP is not set 258# CONFIG_INET_IPCOMP is not set
259CONFIG_INET_TUNNEL=y 259# CONFIG_INET_XFRM_TUNNEL is not set
260# CONFIG_INET_TUNNEL is not set
260CONFIG_INET_DIAG=y 261CONFIG_INET_DIAG=y
261CONFIG_INET_TCP_DIAG=y 262CONFIG_INET_TCP_DIAG=y
262# CONFIG_TCP_CONG_ADVANCED is not set 263# CONFIG_TCP_CONG_ADVANCED is not set
263CONFIG_TCP_CONG_BIC=y 264CONFIG_TCP_CONG_BIC=y
264# CONFIG_IPV6 is not set 265# CONFIG_IPV6 is not set
266# CONFIG_INET6_XFRM_TUNNEL is not set
267# CONFIG_INET6_TUNNEL is not set
265# CONFIG_NETFILTER is not set 268# CONFIG_NETFILTER is not set
266 269
267# 270#
@@ -273,6 +276,11 @@ CONFIG_TCP_CONG_BIC=y
273# SCTP Configuration (EXPERIMENTAL) 276# SCTP Configuration (EXPERIMENTAL)
274# 277#
275# CONFIG_IP_SCTP is not set 278# CONFIG_IP_SCTP is not set
279
280#
281# TIPC Configuration (EXPERIMENTAL)
282#
283# CONFIG_TIPC is not set
276# CONFIG_ATM is not set 284# CONFIG_ATM is not set
277# CONFIG_BRIDGE is not set 285# CONFIG_BRIDGE is not set
278# CONFIG_VLAN_8021Q is not set 286# CONFIG_VLAN_8021Q is not set
@@ -282,11 +290,6 @@ CONFIG_TCP_CONG_BIC=y
282# CONFIG_ATALK is not set 290# CONFIG_ATALK is not set
283# CONFIG_X25 is not set 291# CONFIG_X25 is not set
284# CONFIG_LAPB is not set 292# CONFIG_LAPB is not set
285
286#
287# TIPC Configuration (EXPERIMENTAL)
288#
289# CONFIG_TIPC is not set
290# CONFIG_NET_DIVERT is not set 293# CONFIG_NET_DIVERT is not set
291# CONFIG_ECONET is not set 294# CONFIG_ECONET is not set
292# CONFIG_WAN_ROUTER is not set 295# CONFIG_WAN_ROUTER is not set
@@ -307,6 +310,9 @@ CONFIG_IEEE80211=y
307# CONFIG_IEEE80211_DEBUG is not set 310# CONFIG_IEEE80211_DEBUG is not set
308CONFIG_IEEE80211_CRYPT_WEP=y 311CONFIG_IEEE80211_CRYPT_WEP=y
309CONFIG_IEEE80211_CRYPT_CCMP=y 312CONFIG_IEEE80211_CRYPT_CCMP=y
313CONFIG_IEEE80211_SOFTMAC=y
314# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
315CONFIG_WIRELESS_EXT=y
310 316
311# 317#
312# Device Drivers 318# Device Drivers
@@ -346,7 +352,7 @@ CONFIG_PROC_EVENTS=y
346# CONFIG_BLK_DEV_LOOP is not set 352# CONFIG_BLK_DEV_LOOP is not set
347# CONFIG_BLK_DEV_NBD is not set 353# CONFIG_BLK_DEV_NBD is not set
348# CONFIG_BLK_DEV_RAM is not set 354# CONFIG_BLK_DEV_RAM is not set
349CONFIG_BLK_DEV_RAM_COUNT=16 355# CONFIG_BLK_DEV_INITRD is not set
350CONFIG_CDROM_PKTCDVD=y 356CONFIG_CDROM_PKTCDVD=y
351CONFIG_CDROM_PKTCDVD_BUFFERS=8 357CONFIG_CDROM_PKTCDVD_BUFFERS=8
352# CONFIG_CDROM_PKTCDVD_WCACHE is not set 358# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -563,10 +569,6 @@ CONFIG_LEGACY_PTY_COUNT=256
563# 569#
564 570
565# 571#
566# Multimedia Capabilities Port drivers
567#
568
569#
570# Multimedia devices 572# Multimedia devices
571# 573#
572# CONFIG_VIDEO_DEV is not set 574# CONFIG_VIDEO_DEV is not set
@@ -597,6 +599,7 @@ CONFIG_DUMMY_CONSOLE=y
597# 599#
598# CONFIG_USB_ARCH_HAS_HCD is not set 600# CONFIG_USB_ARCH_HAS_HCD is not set
599# CONFIG_USB_ARCH_HAS_OHCI is not set 601# CONFIG_USB_ARCH_HAS_OHCI is not set
602# CONFIG_USB_ARCH_HAS_EHCI is not set
600 603
601# 604#
602# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 605# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -613,12 +616,30 @@ CONFIG_DUMMY_CONSOLE=y
613# CONFIG_MMC is not set 616# CONFIG_MMC is not set
614 617
615# 618#
619# LED devices
620#
621# CONFIG_NEW_LEDS is not set
622
623#
624# LED drivers
625#
626
627#
628# LED Triggers
629#
630
631#
616# InfiniBand support 632# InfiniBand support
617# 633#
618 634
619# 635#
620# SN Devices 636# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
637#
638
639#
640# Real Time Clock
621# 641#
642# CONFIG_RTC_CLASS is not set
622 643
623# 644#
624# File systems 645# File systems
@@ -663,7 +684,6 @@ CONFIG_SYSFS=y
663# CONFIG_TMPFS is not set 684# CONFIG_TMPFS is not set
664# CONFIG_HUGETLB_PAGE is not set 685# CONFIG_HUGETLB_PAGE is not set
665CONFIG_RAMFS=y 686CONFIG_RAMFS=y
666CONFIG_RELAYFS_FS=y
667# CONFIG_CONFIGFS_FS is not set 687# CONFIG_CONFIGFS_FS is not set
668 688
669# 689#
@@ -730,6 +750,8 @@ CONFIG_MSDOS_PARTITION=y
730# CONFIG_MAGIC_SYSRQ is not set 750# CONFIG_MAGIC_SYSRQ is not set
731# CONFIG_DEBUG_KERNEL is not set 751# CONFIG_DEBUG_KERNEL is not set
732CONFIG_LOG_BUF_SHIFT=14 752CONFIG_LOG_BUF_SHIFT=14
753# CONFIG_DEBUG_FS is not set
754# CONFIG_UNWIND_INFO is not set
733CONFIG_CROSSCOMPILE=y 755CONFIG_CROSSCOMPILE=y
734CONFIG_CMDLINE="" 756CONFIG_CMDLINE=""
735 757
diff --git a/arch/mips/configs/ocelot_g_defconfig b/arch/mips/configs/ocelot_g_defconfig
index c0f508d180c4..b48bdee2411f 100644
--- a/arch/mips/configs/ocelot_g_defconfig
+++ b/arch/mips/configs/ocelot_g_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:21 2006 4# Mon Apr 24 14:51:11 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MOMENCO_OCELOT_G=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -142,7 +144,6 @@ CONFIG_PREEMPT_NONE=y
142# Code maturity level options 144# Code maturity level options
143# 145#
144CONFIG_EXPERIMENTAL=y 146CONFIG_EXPERIMENTAL=y
145CONFIG_CLEAN_COMPILE=y
146CONFIG_BROKEN_ON_SMP=y 147CONFIG_BROKEN_ON_SMP=y
147CONFIG_INIT_ENV_ARG_LIMIT=32 148CONFIG_INIT_ENV_ARG_LIMIT=32
148 149
@@ -158,6 +159,7 @@ CONFIG_SYSVIPC=y
158CONFIG_SYSCTL=y 159CONFIG_SYSCTL=y
159# CONFIG_AUDIT is not set 160# CONFIG_AUDIT is not set
160# CONFIG_IKCONFIG is not set 161# CONFIG_IKCONFIG is not set
162CONFIG_RELAY=y
161CONFIG_INITRAMFS_SOURCE="" 163CONFIG_INITRAMFS_SOURCE=""
162# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 164# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
163CONFIG_EMBEDDED=y 165CONFIG_EMBEDDED=y
@@ -171,10 +173,6 @@ CONFIG_BASE_FULL=y
171CONFIG_FUTEX=y 173CONFIG_FUTEX=y
172CONFIG_EPOLL=y 174CONFIG_EPOLL=y
173CONFIG_SHMEM=y 175CONFIG_SHMEM=y
174CONFIG_CC_ALIGN_FUNCTIONS=0
175CONFIG_CC_ALIGN_LABELS=0
176CONFIG_CC_ALIGN_LOOPS=0
177CONFIG_CC_ALIGN_JUMPS=0
178CONFIG_SLAB=y 176CONFIG_SLAB=y
179# CONFIG_TINY_SHMEM is not set 177# CONFIG_TINY_SHMEM is not set
180CONFIG_BASE_SMALL=0 178CONFIG_BASE_SMALL=0
@@ -188,6 +186,7 @@ CONFIG_BASE_SMALL=0
188# 186#
189# Block layer 187# Block layer
190# 188#
189# CONFIG_BLK_DEV_IO_TRACE is not set
191 190
192# 191#
193# IO Schedulers 192# IO Schedulers
@@ -207,7 +206,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
207# 206#
208CONFIG_HW_HAS_PCI=y 207CONFIG_HW_HAS_PCI=y
209CONFIG_PCI=y 208CONFIG_PCI=y
210CONFIG_PCI_LEGACY_PROC=y
211CONFIG_MMU=y 209CONFIG_MMU=y
212 210
213# 211#
@@ -225,6 +223,7 @@ CONFIG_MMU=y
225# 223#
226CONFIG_BINFMT_ELF=y 224CONFIG_BINFMT_ELF=y
227# CONFIG_BINFMT_MISC is not set 225# CONFIG_BINFMT_MISC is not set
226# CONFIG_BUILD_ELF64 is not set
228CONFIG_MIPS32_COMPAT=y 227CONFIG_MIPS32_COMPAT=y
229CONFIG_COMPAT=y 228CONFIG_COMPAT=y
230CONFIG_MIPS32_O32=y 229CONFIG_MIPS32_O32=y
@@ -239,6 +238,7 @@ CONFIG_NET=y
239# 238#
240# Networking options 239# Networking options
241# 240#
241# CONFIG_NETDEBUG is not set
242# CONFIG_PACKET is not set 242# CONFIG_PACKET is not set
243CONFIG_UNIX=y 243CONFIG_UNIX=y
244CONFIG_XFRM=y 244CONFIG_XFRM=y
@@ -259,12 +259,15 @@ CONFIG_IP_PNP_DHCP=y
259# CONFIG_INET_AH is not set 259# CONFIG_INET_AH is not set
260# CONFIG_INET_ESP is not set 260# CONFIG_INET_ESP is not set
261# CONFIG_INET_IPCOMP is not set 261# CONFIG_INET_IPCOMP is not set
262CONFIG_INET_TUNNEL=y 262# CONFIG_INET_XFRM_TUNNEL is not set
263# CONFIG_INET_TUNNEL is not set
263CONFIG_INET_DIAG=y 264CONFIG_INET_DIAG=y
264CONFIG_INET_TCP_DIAG=y 265CONFIG_INET_TCP_DIAG=y
265# CONFIG_TCP_CONG_ADVANCED is not set 266# CONFIG_TCP_CONG_ADVANCED is not set
266CONFIG_TCP_CONG_BIC=y 267CONFIG_TCP_CONG_BIC=y
267# CONFIG_IPV6 is not set 268# CONFIG_IPV6 is not set
269# CONFIG_INET6_XFRM_TUNNEL is not set
270# CONFIG_INET6_TUNNEL is not set
268# CONFIG_NETFILTER is not set 271# CONFIG_NETFILTER is not set
269 272
270# 273#
@@ -276,6 +279,11 @@ CONFIG_TCP_CONG_BIC=y
276# SCTP Configuration (EXPERIMENTAL) 279# SCTP Configuration (EXPERIMENTAL)
277# 280#
278# CONFIG_IP_SCTP is not set 281# CONFIG_IP_SCTP is not set
282
283#
284# TIPC Configuration (EXPERIMENTAL)
285#
286# CONFIG_TIPC is not set
279# CONFIG_ATM is not set 287# CONFIG_ATM is not set
280# CONFIG_BRIDGE is not set 288# CONFIG_BRIDGE is not set
281# CONFIG_VLAN_8021Q is not set 289# CONFIG_VLAN_8021Q is not set
@@ -285,11 +293,6 @@ CONFIG_TCP_CONG_BIC=y
285# CONFIG_ATALK is not set 293# CONFIG_ATALK is not set
286# CONFIG_X25 is not set 294# CONFIG_X25 is not set
287# CONFIG_LAPB is not set 295# CONFIG_LAPB is not set
288
289#
290# TIPC Configuration (EXPERIMENTAL)
291#
292# CONFIG_TIPC is not set
293# CONFIG_NET_DIVERT is not set 296# CONFIG_NET_DIVERT is not set
294# CONFIG_ECONET is not set 297# CONFIG_ECONET is not set
295# CONFIG_WAN_ROUTER is not set 298# CONFIG_WAN_ROUTER is not set
@@ -310,6 +313,9 @@ CONFIG_IEEE80211=y
310# CONFIG_IEEE80211_DEBUG is not set 313# CONFIG_IEEE80211_DEBUG is not set
311CONFIG_IEEE80211_CRYPT_WEP=y 314CONFIG_IEEE80211_CRYPT_WEP=y
312CONFIG_IEEE80211_CRYPT_CCMP=y 315CONFIG_IEEE80211_CRYPT_CCMP=y
316CONFIG_IEEE80211_SOFTMAC=y
317# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
318CONFIG_WIRELESS_EXT=y
313 319
314# 320#
315# Device Drivers 321# Device Drivers
@@ -354,7 +360,7 @@ CONFIG_PROC_EVENTS=y
354# CONFIG_BLK_DEV_NBD is not set 360# CONFIG_BLK_DEV_NBD is not set
355# CONFIG_BLK_DEV_SX8 is not set 361# CONFIG_BLK_DEV_SX8 is not set
356# CONFIG_BLK_DEV_RAM is not set 362# CONFIG_BLK_DEV_RAM is not set
357CONFIG_BLK_DEV_RAM_COUNT=16 363# CONFIG_BLK_DEV_INITRD is not set
358CONFIG_CDROM_PKTCDVD=y 364CONFIG_CDROM_PKTCDVD=y
359CONFIG_CDROM_PKTCDVD_BUFFERS=8 365CONFIG_CDROM_PKTCDVD_BUFFERS=8
360# CONFIG_CDROM_PKTCDVD_WCACHE is not set 366# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -545,6 +551,7 @@ CONFIG_HW_CONSOLE=y
545# 551#
546CONFIG_SERIAL_8250=y 552CONFIG_SERIAL_8250=y
547CONFIG_SERIAL_8250_CONSOLE=y 553CONFIG_SERIAL_8250_CONSOLE=y
554CONFIG_SERIAL_8250_PCI=y
548CONFIG_SERIAL_8250_NR_UARTS=4 555CONFIG_SERIAL_8250_NR_UARTS=4
549CONFIG_SERIAL_8250_RUNTIME_UARTS=4 556CONFIG_SERIAL_8250_RUNTIME_UARTS=4
550# CONFIG_SERIAL_8250_EXTENDED is not set 557# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -554,6 +561,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
554# 561#
555CONFIG_SERIAL_CORE=y 562CONFIG_SERIAL_CORE=y
556CONFIG_SERIAL_CORE_CONSOLE=y 563CONFIG_SERIAL_CORE_CONSOLE=y
564# CONFIG_SERIAL_JSM is not set
557CONFIG_UNIX98_PTYS=y 565CONFIG_UNIX98_PTYS=y
558CONFIG_LEGACY_PTYS=y 566CONFIG_LEGACY_PTYS=y
559CONFIG_LEGACY_PTY_COUNT=256 567CONFIG_LEGACY_PTY_COUNT=256
@@ -612,10 +620,6 @@ CONFIG_LEGACY_PTY_COUNT=256
612# 620#
613 621
614# 622#
615# Multimedia Capabilities Port drivers
616#
617
618#
619# Multimedia devices 623# Multimedia devices
620# 624#
621# CONFIG_VIDEO_DEV is not set 625# CONFIG_VIDEO_DEV is not set
@@ -646,6 +650,7 @@ CONFIG_DUMMY_CONSOLE=y
646# 650#
647CONFIG_USB_ARCH_HAS_HCD=y 651CONFIG_USB_ARCH_HAS_HCD=y
648CONFIG_USB_ARCH_HAS_OHCI=y 652CONFIG_USB_ARCH_HAS_OHCI=y
653CONFIG_USB_ARCH_HAS_EHCI=y
649# CONFIG_USB is not set 654# CONFIG_USB is not set
650 655
651# 656#
@@ -663,13 +668,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
663# CONFIG_MMC is not set 668# CONFIG_MMC is not set
664 669
665# 670#
671# LED devices
672#
673# CONFIG_NEW_LEDS is not set
674
675#
676# LED drivers
677#
678
679#
680# LED Triggers
681#
682
683#
666# InfiniBand support 684# InfiniBand support
667# 685#
668# CONFIG_INFINIBAND is not set 686# CONFIG_INFINIBAND is not set
669 687
670# 688#
671# SN Devices 689# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
690#
691
692#
693# Real Time Clock
672# 694#
695# CONFIG_RTC_CLASS is not set
673 696
674# 697#
675# File systems 698# File systems
@@ -714,7 +737,6 @@ CONFIG_SYSFS=y
714# CONFIG_TMPFS is not set 737# CONFIG_TMPFS is not set
715# CONFIG_HUGETLB_PAGE is not set 738# CONFIG_HUGETLB_PAGE is not set
716CONFIG_RAMFS=y 739CONFIG_RAMFS=y
717CONFIG_RELAYFS_FS=y
718# CONFIG_CONFIGFS_FS is not set 740# CONFIG_CONFIGFS_FS is not set
719 741
720# 742#
@@ -781,6 +803,8 @@ CONFIG_MSDOS_PARTITION=y
781# CONFIG_MAGIC_SYSRQ is not set 803# CONFIG_MAGIC_SYSRQ is not set
782# CONFIG_DEBUG_KERNEL is not set 804# CONFIG_DEBUG_KERNEL is not set
783CONFIG_LOG_BUF_SHIFT=14 805CONFIG_LOG_BUF_SHIFT=14
806# CONFIG_DEBUG_FS is not set
807# CONFIG_UNWIND_INFO is not set
784CONFIG_CROSSCOMPILE=y 808CONFIG_CROSSCOMPILE=y
785CONFIG_CMDLINE="" 809CONFIG_CMDLINE=""
786 810
diff --git a/arch/mips/configs/pb1100_defconfig b/arch/mips/configs/pb1100_defconfig
index 194b3c772bb7..01aac40634b4 100644
--- a/arch/mips/configs/pb1100_defconfig
+++ b/arch/mips/configs/pb1100_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:22 2006 4# Mon Apr 24 14:51:12 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_PB1100=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -116,11 +118,11 @@ CONFIG_PAGE_SIZE_4KB=y
116CONFIG_CPU_HAS_PREFETCH=y 118CONFIG_CPU_HAS_PREFETCH=y
117# CONFIG_MIPS_MT is not set 119# CONFIG_MIPS_MT is not set
118CONFIG_64BIT_PHYS_ADDR=y 120CONFIG_64BIT_PHYS_ADDR=y
119# CONFIG_CPU_ADVANCED is not set
120CONFIG_CPU_HAS_LLSC=y 121CONFIG_CPU_HAS_LLSC=y
121CONFIG_CPU_HAS_SYNC=y 122CONFIG_CPU_HAS_SYNC=y
122CONFIG_GENERIC_HARDIRQS=y 123CONFIG_GENERIC_HARDIRQS=y
123CONFIG_GENERIC_IRQ_PROBE=y 124CONFIG_GENERIC_IRQ_PROBE=y
125CONFIG_CPU_SUPPORTS_HIGHMEM=y
124CONFIG_ARCH_FLATMEM_ENABLE=y 126CONFIG_ARCH_FLATMEM_ENABLE=y
125CONFIG_SELECT_MEMORY_MODEL=y 127CONFIG_SELECT_MEMORY_MODEL=y
126CONFIG_FLATMEM_MANUAL=y 128CONFIG_FLATMEM_MANUAL=y
@@ -138,7 +140,6 @@ CONFIG_PREEMPT_NONE=y
138# Code maturity level options 140# Code maturity level options
139# 141#
140CONFIG_EXPERIMENTAL=y 142CONFIG_EXPERIMENTAL=y
141CONFIG_CLEAN_COMPILE=y
142CONFIG_BROKEN_ON_SMP=y 143CONFIG_BROKEN_ON_SMP=y
143CONFIG_INIT_ENV_ARG_LIMIT=32 144CONFIG_INIT_ENV_ARG_LIMIT=32
144 145
@@ -154,6 +155,7 @@ CONFIG_SYSVIPC=y
154CONFIG_SYSCTL=y 155CONFIG_SYSCTL=y
155# CONFIG_AUDIT is not set 156# CONFIG_AUDIT is not set
156# CONFIG_IKCONFIG is not set 157# CONFIG_IKCONFIG is not set
158CONFIG_RELAY=y
157CONFIG_INITRAMFS_SOURCE="" 159CONFIG_INITRAMFS_SOURCE=""
158# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 160# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
159CONFIG_EMBEDDED=y 161CONFIG_EMBEDDED=y
@@ -167,10 +169,6 @@ CONFIG_BASE_FULL=y
167CONFIG_FUTEX=y 169CONFIG_FUTEX=y
168CONFIG_EPOLL=y 170CONFIG_EPOLL=y
169CONFIG_SHMEM=y 171CONFIG_SHMEM=y
170CONFIG_CC_ALIGN_FUNCTIONS=0
171CONFIG_CC_ALIGN_LABELS=0
172CONFIG_CC_ALIGN_LOOPS=0
173CONFIG_CC_ALIGN_JUMPS=0
174CONFIG_SLAB=y 172CONFIG_SLAB=y
175# CONFIG_TINY_SHMEM is not set 173# CONFIG_TINY_SHMEM is not set
176CONFIG_BASE_SMALL=0 174CONFIG_BASE_SMALL=0
@@ -183,7 +181,6 @@ CONFIG_OBSOLETE_INTERMODULE=y
183CONFIG_MODULES=y 181CONFIG_MODULES=y
184CONFIG_MODULE_UNLOAD=y 182CONFIG_MODULE_UNLOAD=y
185# CONFIG_MODULE_FORCE_UNLOAD is not set 183# CONFIG_MODULE_FORCE_UNLOAD is not set
186CONFIG_OBSOLETE_MODPARM=y
187CONFIG_MODVERSIONS=y 184CONFIG_MODVERSIONS=y
188CONFIG_MODULE_SRCVERSION_ALL=y 185CONFIG_MODULE_SRCVERSION_ALL=y
189CONFIG_KMOD=y 186CONFIG_KMOD=y
@@ -192,6 +189,8 @@ CONFIG_KMOD=y
192# Block layer 189# Block layer
193# 190#
194# CONFIG_LBD is not set 191# CONFIG_LBD is not set
192# CONFIG_BLK_DEV_IO_TRACE is not set
193# CONFIG_LSF is not set
195 194
196# 195#
197# IO Schedulers 196# IO Schedulers
@@ -247,6 +246,7 @@ CONFIG_NET=y
247# 246#
248# Networking options 247# Networking options
249# 248#
249# CONFIG_NETDEBUG is not set
250CONFIG_PACKET=y 250CONFIG_PACKET=y
251# CONFIG_PACKET_MMAP is not set 251# CONFIG_PACKET_MMAP is not set
252CONFIG_UNIX=y 252CONFIG_UNIX=y
@@ -269,7 +269,8 @@ CONFIG_IP_PNP_BOOTP=y
269# CONFIG_INET_AH is not set 269# CONFIG_INET_AH is not set
270# CONFIG_INET_ESP is not set 270# CONFIG_INET_ESP is not set
271# CONFIG_INET_IPCOMP is not set 271# CONFIG_INET_IPCOMP is not set
272CONFIG_INET_TUNNEL=m 272# CONFIG_INET_XFRM_TUNNEL is not set
273# CONFIG_INET_TUNNEL is not set
273CONFIG_INET_DIAG=y 274CONFIG_INET_DIAG=y
274CONFIG_INET_TCP_DIAG=y 275CONFIG_INET_TCP_DIAG=y
275# CONFIG_TCP_CONG_ADVANCED is not set 276# CONFIG_TCP_CONG_ADVANCED is not set
@@ -280,6 +281,8 @@ CONFIG_TCP_CONG_BIC=y
280# 281#
281# CONFIG_IP_VS is not set 282# CONFIG_IP_VS is not set
282# CONFIG_IPV6 is not set 283# CONFIG_IPV6 is not set
284# CONFIG_INET6_XFRM_TUNNEL is not set
285# CONFIG_INET6_TUNNEL is not set
283CONFIG_NETFILTER=y 286CONFIG_NETFILTER=y
284# CONFIG_NETFILTER_DEBUG is not set 287# CONFIG_NETFILTER_DEBUG is not set
285 288
@@ -296,10 +299,13 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
296CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 299CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
297CONFIG_NETFILTER_XT_MATCH_COMMENT=m 300CONFIG_NETFILTER_XT_MATCH_COMMENT=m
298CONFIG_NETFILTER_XT_MATCH_DCCP=m 301CONFIG_NETFILTER_XT_MATCH_DCCP=m
302CONFIG_NETFILTER_XT_MATCH_ESP=m
299CONFIG_NETFILTER_XT_MATCH_LENGTH=m 303CONFIG_NETFILTER_XT_MATCH_LENGTH=m
300CONFIG_NETFILTER_XT_MATCH_LIMIT=m 304CONFIG_NETFILTER_XT_MATCH_LIMIT=m
301CONFIG_NETFILTER_XT_MATCH_MAC=m 305CONFIG_NETFILTER_XT_MATCH_MAC=m
302CONFIG_NETFILTER_XT_MATCH_MARK=m 306CONFIG_NETFILTER_XT_MATCH_MARK=m
307CONFIG_NETFILTER_XT_MATCH_POLICY=m
308CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
303CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 309CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
304CONFIG_NETFILTER_XT_MATCH_REALM=m 310CONFIG_NETFILTER_XT_MATCH_REALM=m
305CONFIG_NETFILTER_XT_MATCH_SCTP=m 311CONFIG_NETFILTER_XT_MATCH_SCTP=m
@@ -323,6 +329,11 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
323# SCTP Configuration (EXPERIMENTAL) 329# SCTP Configuration (EXPERIMENTAL)
324# 330#
325# CONFIG_IP_SCTP is not set 331# CONFIG_IP_SCTP is not set
332
333#
334# TIPC Configuration (EXPERIMENTAL)
335#
336# CONFIG_TIPC is not set
326# CONFIG_ATM is not set 337# CONFIG_ATM is not set
327# CONFIG_BRIDGE is not set 338# CONFIG_BRIDGE is not set
328# CONFIG_VLAN_8021Q is not set 339# CONFIG_VLAN_8021Q is not set
@@ -332,11 +343,6 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
332# CONFIG_ATALK is not set 343# CONFIG_ATALK is not set
333# CONFIG_X25 is not set 344# CONFIG_X25 is not set
334# CONFIG_LAPB is not set 345# CONFIG_LAPB is not set
335
336#
337# TIPC Configuration (EXPERIMENTAL)
338#
339# CONFIG_TIPC is not set
340# CONFIG_NET_DIVERT is not set 346# CONFIG_NET_DIVERT is not set
341# CONFIG_ECONET is not set 347# CONFIG_ECONET is not set
342# CONFIG_WAN_ROUTER is not set 348# CONFIG_WAN_ROUTER is not set
@@ -358,6 +364,9 @@ CONFIG_IEEE80211=m
358# CONFIG_IEEE80211_DEBUG is not set 364# CONFIG_IEEE80211_DEBUG is not set
359CONFIG_IEEE80211_CRYPT_WEP=m 365CONFIG_IEEE80211_CRYPT_WEP=m
360CONFIG_IEEE80211_CRYPT_CCMP=m 366CONFIG_IEEE80211_CRYPT_CCMP=m
367CONFIG_IEEE80211_SOFTMAC=m
368# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
369CONFIG_WIRELESS_EXT=y
361 370
362# 371#
363# Device Drivers 372# Device Drivers
@@ -414,7 +423,6 @@ CONFIG_MTD_CFI_I2=y
414# CONFIG_MTD_CFI_I8 is not set 423# CONFIG_MTD_CFI_I8 is not set
415# CONFIG_MTD_CFI_INTELEXT is not set 424# CONFIG_MTD_CFI_INTELEXT is not set
416CONFIG_MTD_CFI_AMDSTD=y 425CONFIG_MTD_CFI_AMDSTD=y
417CONFIG_MTD_CFI_AMDSTD_RETRY=0
418# CONFIG_MTD_CFI_STAA is not set 426# CONFIG_MTD_CFI_STAA is not set
419CONFIG_MTD_CFI_UTIL=y 427CONFIG_MTD_CFI_UTIL=y
420# CONFIG_MTD_RAM is not set 428# CONFIG_MTD_RAM is not set
@@ -436,7 +444,6 @@ CONFIG_MTD_ALCHEMY=y
436# CONFIG_MTD_SLRAM is not set 444# CONFIG_MTD_SLRAM is not set
437# CONFIG_MTD_PHRAM is not set 445# CONFIG_MTD_PHRAM is not set
438# CONFIG_MTD_MTDRAM is not set 446# CONFIG_MTD_MTDRAM is not set
439# CONFIG_MTD_BLKMTD is not set
440# CONFIG_MTD_BLOCK2MTD is not set 447# CONFIG_MTD_BLOCK2MTD is not set
441 448
442# 449#
@@ -473,7 +480,7 @@ CONFIG_BLK_DEV_LOOP=y
473# CONFIG_BLK_DEV_CRYPTOLOOP is not set 480# CONFIG_BLK_DEV_CRYPTOLOOP is not set
474# CONFIG_BLK_DEV_NBD is not set 481# CONFIG_BLK_DEV_NBD is not set
475# CONFIG_BLK_DEV_RAM is not set 482# CONFIG_BLK_DEV_RAM is not set
476CONFIG_BLK_DEV_RAM_COUNT=16 483# CONFIG_BLK_DEV_INITRD is not set
477CONFIG_CDROM_PKTCDVD=m 484CONFIG_CDROM_PKTCDVD=m
478CONFIG_CDROM_PKTCDVD_BUFFERS=8 485CONFIG_CDROM_PKTCDVD_BUFFERS=8
479# CONFIG_CDROM_PKTCDVD_WCACHE is not set 486# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -716,10 +723,6 @@ CONFIG_SYNCLINK_CS=m
716# 723#
717 724
718# 725#
719# Multimedia Capabilities Port drivers
720#
721
722#
723# Multimedia devices 726# Multimedia devices
724# 727#
725# CONFIG_VIDEO_DEV is not set 728# CONFIG_VIDEO_DEV is not set
@@ -750,6 +753,7 @@ CONFIG_DUMMY_CONSOLE=y
750# 753#
751CONFIG_USB_ARCH_HAS_HCD=y 754CONFIG_USB_ARCH_HAS_HCD=y
752CONFIG_USB_ARCH_HAS_OHCI=y 755CONFIG_USB_ARCH_HAS_OHCI=y
756# CONFIG_USB_ARCH_HAS_EHCI is not set
753# CONFIG_USB is not set 757# CONFIG_USB is not set
754 758
755# 759#
@@ -767,12 +771,30 @@ CONFIG_USB_ARCH_HAS_OHCI=y
767# CONFIG_MMC is not set 771# CONFIG_MMC is not set
768 772
769# 773#
774# LED devices
775#
776# CONFIG_NEW_LEDS is not set
777
778#
779# LED drivers
780#
781
782#
783# LED Triggers
784#
785
786#
770# InfiniBand support 787# InfiniBand support
771# 788#
772 789
773# 790#
774# SN Devices 791# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
792#
793
794#
795# Real Time Clock
775# 796#
797# CONFIG_RTC_CLASS is not set
776 798
777# 799#
778# File systems 800# File systems
@@ -830,7 +852,6 @@ CONFIG_SYSFS=y
830CONFIG_TMPFS=y 852CONFIG_TMPFS=y
831# CONFIG_HUGETLB_PAGE is not set 853# CONFIG_HUGETLB_PAGE is not set
832CONFIG_RAMFS=y 854CONFIG_RAMFS=y
833CONFIG_RELAYFS_FS=m
834# CONFIG_CONFIGFS_FS is not set 855# CONFIG_CONFIGFS_FS is not set
835 856
836# 857#
@@ -939,6 +960,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
939# CONFIG_MAGIC_SYSRQ is not set 960# CONFIG_MAGIC_SYSRQ is not set
940# CONFIG_DEBUG_KERNEL is not set 961# CONFIG_DEBUG_KERNEL is not set
941CONFIG_LOG_BUF_SHIFT=14 962CONFIG_LOG_BUF_SHIFT=14
963# CONFIG_DEBUG_FS is not set
942CONFIG_CROSSCOMPILE=y 964CONFIG_CROSSCOMPILE=y
943CONFIG_CMDLINE="" 965CONFIG_CMDLINE=""
944 966
diff --git a/arch/mips/configs/pb1500_defconfig b/arch/mips/configs/pb1500_defconfig
index 8985725e6a98..398c3c265b9f 100644
--- a/arch/mips/configs/pb1500_defconfig
+++ b/arch/mips/configs/pb1500_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:24 2006 4# Mon Apr 24 14:51:13 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_PB1500=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -115,11 +117,11 @@ CONFIG_PAGE_SIZE_4KB=y
115CONFIG_CPU_HAS_PREFETCH=y 117CONFIG_CPU_HAS_PREFETCH=y
116# CONFIG_MIPS_MT is not set 118# CONFIG_MIPS_MT is not set
117CONFIG_64BIT_PHYS_ADDR=y 119CONFIG_64BIT_PHYS_ADDR=y
118# CONFIG_CPU_ADVANCED is not set
119CONFIG_CPU_HAS_LLSC=y 120CONFIG_CPU_HAS_LLSC=y
120CONFIG_CPU_HAS_SYNC=y 121CONFIG_CPU_HAS_SYNC=y
121CONFIG_GENERIC_HARDIRQS=y 122CONFIG_GENERIC_HARDIRQS=y
122CONFIG_GENERIC_IRQ_PROBE=y 123CONFIG_GENERIC_IRQ_PROBE=y
124CONFIG_CPU_SUPPORTS_HIGHMEM=y
123CONFIG_ARCH_FLATMEM_ENABLE=y 125CONFIG_ARCH_FLATMEM_ENABLE=y
124CONFIG_SELECT_MEMORY_MODEL=y 126CONFIG_SELECT_MEMORY_MODEL=y
125CONFIG_FLATMEM_MANUAL=y 127CONFIG_FLATMEM_MANUAL=y
@@ -137,7 +139,6 @@ CONFIG_PREEMPT_NONE=y
137# Code maturity level options 139# Code maturity level options
138# 140#
139CONFIG_EXPERIMENTAL=y 141CONFIG_EXPERIMENTAL=y
140CONFIG_CLEAN_COMPILE=y
141CONFIG_BROKEN_ON_SMP=y 142CONFIG_BROKEN_ON_SMP=y
142CONFIG_INIT_ENV_ARG_LIMIT=32 143CONFIG_INIT_ENV_ARG_LIMIT=32
143 144
@@ -153,6 +154,7 @@ CONFIG_SYSVIPC=y
153CONFIG_SYSCTL=y 154CONFIG_SYSCTL=y
154# CONFIG_AUDIT is not set 155# CONFIG_AUDIT is not set
155# CONFIG_IKCONFIG is not set 156# CONFIG_IKCONFIG is not set
157CONFIG_RELAY=y
156CONFIG_INITRAMFS_SOURCE="" 158CONFIG_INITRAMFS_SOURCE=""
157# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 159# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
158CONFIG_EMBEDDED=y 160CONFIG_EMBEDDED=y
@@ -166,10 +168,6 @@ CONFIG_BASE_FULL=y
166CONFIG_FUTEX=y 168CONFIG_FUTEX=y
167CONFIG_EPOLL=y 169CONFIG_EPOLL=y
168CONFIG_SHMEM=y 170CONFIG_SHMEM=y
169CONFIG_CC_ALIGN_FUNCTIONS=0
170CONFIG_CC_ALIGN_LABELS=0
171CONFIG_CC_ALIGN_LOOPS=0
172CONFIG_CC_ALIGN_JUMPS=0
173CONFIG_SLAB=y 171CONFIG_SLAB=y
174# CONFIG_TINY_SHMEM is not set 172# CONFIG_TINY_SHMEM is not set
175CONFIG_BASE_SMALL=0 173CONFIG_BASE_SMALL=0
@@ -182,7 +180,6 @@ CONFIG_OBSOLETE_INTERMODULE=y
182CONFIG_MODULES=y 180CONFIG_MODULES=y
183CONFIG_MODULE_UNLOAD=y 181CONFIG_MODULE_UNLOAD=y
184# CONFIG_MODULE_FORCE_UNLOAD is not set 182# CONFIG_MODULE_FORCE_UNLOAD is not set
185CONFIG_OBSOLETE_MODPARM=y
186CONFIG_MODVERSIONS=y 183CONFIG_MODVERSIONS=y
187CONFIG_MODULE_SRCVERSION_ALL=y 184CONFIG_MODULE_SRCVERSION_ALL=y
188CONFIG_KMOD=y 185CONFIG_KMOD=y
@@ -191,6 +188,8 @@ CONFIG_KMOD=y
191# Block layer 188# Block layer
192# 189#
193# CONFIG_LBD is not set 190# CONFIG_LBD is not set
191# CONFIG_BLK_DEV_IO_TRACE is not set
192# CONFIG_LSF is not set
194 193
195# 194#
196# IO Schedulers 195# IO Schedulers
@@ -210,7 +209,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
210# 209#
211CONFIG_HW_HAS_PCI=y 210CONFIG_HW_HAS_PCI=y
212CONFIG_PCI=y 211CONFIG_PCI=y
213CONFIG_PCI_LEGACY_PROC=y
214CONFIG_MMU=y 212CONFIG_MMU=y
215 213
216# 214#
@@ -253,6 +251,7 @@ CONFIG_NET=y
253# 251#
254# Networking options 252# Networking options
255# 253#
254# CONFIG_NETDEBUG is not set
256CONFIG_PACKET=y 255CONFIG_PACKET=y
257# CONFIG_PACKET_MMAP is not set 256# CONFIG_PACKET_MMAP is not set
258CONFIG_UNIX=y 257CONFIG_UNIX=y
@@ -275,7 +274,8 @@ CONFIG_IP_PNP_BOOTP=y
275# CONFIG_INET_AH is not set 274# CONFIG_INET_AH is not set
276# CONFIG_INET_ESP is not set 275# CONFIG_INET_ESP is not set
277# CONFIG_INET_IPCOMP is not set 276# CONFIG_INET_IPCOMP is not set
278CONFIG_INET_TUNNEL=m 277# CONFIG_INET_XFRM_TUNNEL is not set
278# CONFIG_INET_TUNNEL is not set
279CONFIG_INET_DIAG=y 279CONFIG_INET_DIAG=y
280CONFIG_INET_TCP_DIAG=y 280CONFIG_INET_TCP_DIAG=y
281# CONFIG_TCP_CONG_ADVANCED is not set 281# CONFIG_TCP_CONG_ADVANCED is not set
@@ -286,6 +286,8 @@ CONFIG_TCP_CONG_BIC=y
286# 286#
287# CONFIG_IP_VS is not set 287# CONFIG_IP_VS is not set
288# CONFIG_IPV6 is not set 288# CONFIG_IPV6 is not set
289# CONFIG_INET6_XFRM_TUNNEL is not set
290# CONFIG_INET6_TUNNEL is not set
289CONFIG_NETFILTER=y 291CONFIG_NETFILTER=y
290# CONFIG_NETFILTER_DEBUG is not set 292# CONFIG_NETFILTER_DEBUG is not set
291 293
@@ -302,10 +304,13 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
302CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 304CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
303CONFIG_NETFILTER_XT_MATCH_COMMENT=m 305CONFIG_NETFILTER_XT_MATCH_COMMENT=m
304CONFIG_NETFILTER_XT_MATCH_DCCP=m 306CONFIG_NETFILTER_XT_MATCH_DCCP=m
307CONFIG_NETFILTER_XT_MATCH_ESP=m
305CONFIG_NETFILTER_XT_MATCH_LENGTH=m 308CONFIG_NETFILTER_XT_MATCH_LENGTH=m
306CONFIG_NETFILTER_XT_MATCH_LIMIT=m 309CONFIG_NETFILTER_XT_MATCH_LIMIT=m
307CONFIG_NETFILTER_XT_MATCH_MAC=m 310CONFIG_NETFILTER_XT_MATCH_MAC=m
308CONFIG_NETFILTER_XT_MATCH_MARK=m 311CONFIG_NETFILTER_XT_MATCH_MARK=m
312CONFIG_NETFILTER_XT_MATCH_POLICY=m
313CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
309CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 314CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
310CONFIG_NETFILTER_XT_MATCH_REALM=m 315CONFIG_NETFILTER_XT_MATCH_REALM=m
311CONFIG_NETFILTER_XT_MATCH_SCTP=m 316CONFIG_NETFILTER_XT_MATCH_SCTP=m
@@ -329,6 +334,11 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
329# SCTP Configuration (EXPERIMENTAL) 334# SCTP Configuration (EXPERIMENTAL)
330# 335#
331# CONFIG_IP_SCTP is not set 336# CONFIG_IP_SCTP is not set
337
338#
339# TIPC Configuration (EXPERIMENTAL)
340#
341# CONFIG_TIPC is not set
332# CONFIG_ATM is not set 342# CONFIG_ATM is not set
333# CONFIG_BRIDGE is not set 343# CONFIG_BRIDGE is not set
334# CONFIG_VLAN_8021Q is not set 344# CONFIG_VLAN_8021Q is not set
@@ -338,11 +348,6 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
338# CONFIG_ATALK is not set 348# CONFIG_ATALK is not set
339# CONFIG_X25 is not set 349# CONFIG_X25 is not set
340# CONFIG_LAPB is not set 350# CONFIG_LAPB is not set
341
342#
343# TIPC Configuration (EXPERIMENTAL)
344#
345# CONFIG_TIPC is not set
346# CONFIG_NET_DIVERT is not set 351# CONFIG_NET_DIVERT is not set
347# CONFIG_ECONET is not set 352# CONFIG_ECONET is not set
348# CONFIG_WAN_ROUTER is not set 353# CONFIG_WAN_ROUTER is not set
@@ -364,6 +369,9 @@ CONFIG_IEEE80211=m
364# CONFIG_IEEE80211_DEBUG is not set 369# CONFIG_IEEE80211_DEBUG is not set
365CONFIG_IEEE80211_CRYPT_WEP=m 370CONFIG_IEEE80211_CRYPT_WEP=m
366CONFIG_IEEE80211_CRYPT_CCMP=m 371CONFIG_IEEE80211_CRYPT_CCMP=m
372CONFIG_IEEE80211_SOFTMAC=m
373# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
374CONFIG_WIRELESS_EXT=y
367 375
368# 376#
369# Device Drivers 377# Device Drivers
@@ -420,7 +428,6 @@ CONFIG_MTD_CFI_I2=y
420# CONFIG_MTD_CFI_I8 is not set 428# CONFIG_MTD_CFI_I8 is not set
421# CONFIG_MTD_CFI_INTELEXT is not set 429# CONFIG_MTD_CFI_INTELEXT is not set
422CONFIG_MTD_CFI_AMDSTD=y 430CONFIG_MTD_CFI_AMDSTD=y
423CONFIG_MTD_CFI_AMDSTD_RETRY=0
424# CONFIG_MTD_CFI_STAA is not set 431# CONFIG_MTD_CFI_STAA is not set
425CONFIG_MTD_CFI_UTIL=y 432CONFIG_MTD_CFI_UTIL=y
426# CONFIG_MTD_RAM is not set 433# CONFIG_MTD_RAM is not set
@@ -443,7 +450,6 @@ CONFIG_MTD_ALCHEMY=y
443# CONFIG_MTD_SLRAM is not set 450# CONFIG_MTD_SLRAM is not set
444# CONFIG_MTD_PHRAM is not set 451# CONFIG_MTD_PHRAM is not set
445# CONFIG_MTD_MTDRAM is not set 452# CONFIG_MTD_MTDRAM is not set
446# CONFIG_MTD_BLKMTD is not set
447# CONFIG_MTD_BLOCK2MTD is not set 453# CONFIG_MTD_BLOCK2MTD is not set
448 454
449# 455#
@@ -485,7 +491,7 @@ CONFIG_BLK_DEV_LOOP=y
485# CONFIG_BLK_DEV_NBD is not set 491# CONFIG_BLK_DEV_NBD is not set
486# CONFIG_BLK_DEV_SX8 is not set 492# CONFIG_BLK_DEV_SX8 is not set
487# CONFIG_BLK_DEV_RAM is not set 493# CONFIG_BLK_DEV_RAM is not set
488CONFIG_BLK_DEV_RAM_COUNT=16 494# CONFIG_BLK_DEV_INITRD is not set
489CONFIG_CDROM_PKTCDVD=m 495CONFIG_CDROM_PKTCDVD=m
490CONFIG_CDROM_PKTCDVD_BUFFERS=8 496CONFIG_CDROM_PKTCDVD_BUFFERS=8
491# CONFIG_CDROM_PKTCDVD_WCACHE is not set 497# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -750,6 +756,7 @@ CONFIG_SERIO_RAW=m
750# 756#
751CONFIG_SERIAL_8250=y 757CONFIG_SERIAL_8250=y
752CONFIG_SERIAL_8250_CONSOLE=y 758CONFIG_SERIAL_8250_CONSOLE=y
759CONFIG_SERIAL_8250_PCI=y
753# CONFIG_SERIAL_8250_CS is not set 760# CONFIG_SERIAL_8250_CS is not set
754CONFIG_SERIAL_8250_NR_UARTS=4 761CONFIG_SERIAL_8250_NR_UARTS=4
755CONFIG_SERIAL_8250_RUNTIME_UARTS=4 762CONFIG_SERIAL_8250_RUNTIME_UARTS=4
@@ -761,6 +768,7 @@ CONFIG_SERIAL_8250_AU1X00=y
761# 768#
762CONFIG_SERIAL_CORE=y 769CONFIG_SERIAL_CORE=y
763CONFIG_SERIAL_CORE_CONSOLE=y 770CONFIG_SERIAL_CORE_CONSOLE=y
771# CONFIG_SERIAL_JSM is not set
764CONFIG_UNIX98_PTYS=y 772CONFIG_UNIX98_PTYS=y
765CONFIG_LEGACY_PTYS=y 773CONFIG_LEGACY_PTYS=y
766CONFIG_LEGACY_PTY_COUNT=256 774CONFIG_LEGACY_PTY_COUNT=256
@@ -826,10 +834,6 @@ CONFIG_SYNCLINK_CS=m
826# 834#
827 835
828# 836#
829# Multimedia Capabilities Port drivers
830#
831
832#
833# Multimedia devices 837# Multimedia devices
834# 838#
835# CONFIG_VIDEO_DEV is not set 839# CONFIG_VIDEO_DEV is not set
@@ -854,6 +858,7 @@ CONFIG_SYNCLINK_CS=m
854# 858#
855CONFIG_USB_ARCH_HAS_HCD=y 859CONFIG_USB_ARCH_HAS_HCD=y
856CONFIG_USB_ARCH_HAS_OHCI=y 860CONFIG_USB_ARCH_HAS_OHCI=y
861CONFIG_USB_ARCH_HAS_EHCI=y
857# CONFIG_USB is not set 862# CONFIG_USB is not set
858 863
859# 864#
@@ -871,13 +876,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
871# CONFIG_MMC is not set 876# CONFIG_MMC is not set
872 877
873# 878#
879# LED devices
880#
881# CONFIG_NEW_LEDS is not set
882
883#
884# LED drivers
885#
886
887#
888# LED Triggers
889#
890
891#
874# InfiniBand support 892# InfiniBand support
875# 893#
876# CONFIG_INFINIBAND is not set 894# CONFIG_INFINIBAND is not set
877 895
878# 896#
879# SN Devices 897# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
898#
899
900#
901# Real Time Clock
880# 902#
903# CONFIG_RTC_CLASS is not set
881 904
882# 905#
883# File systems 906# File systems
@@ -935,7 +958,6 @@ CONFIG_SYSFS=y
935CONFIG_TMPFS=y 958CONFIG_TMPFS=y
936# CONFIG_HUGETLB_PAGE is not set 959# CONFIG_HUGETLB_PAGE is not set
937CONFIG_RAMFS=y 960CONFIG_RAMFS=y
938CONFIG_RELAYFS_FS=m
939# CONFIG_CONFIGFS_FS is not set 961# CONFIG_CONFIGFS_FS is not set
940 962
941# 963#
@@ -1044,6 +1066,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1044# CONFIG_MAGIC_SYSRQ is not set 1066# CONFIG_MAGIC_SYSRQ is not set
1045# CONFIG_DEBUG_KERNEL is not set 1067# CONFIG_DEBUG_KERNEL is not set
1046CONFIG_LOG_BUF_SHIFT=14 1068CONFIG_LOG_BUF_SHIFT=14
1069# CONFIG_DEBUG_FS is not set
1047CONFIG_CROSSCOMPILE=y 1070CONFIG_CROSSCOMPILE=y
1048CONFIG_CMDLINE="" 1071CONFIG_CMDLINE=""
1049 1072
diff --git a/arch/mips/configs/pb1550_defconfig b/arch/mips/configs/pb1550_defconfig
index adbf997b540e..ea282a53bb66 100644
--- a/arch/mips/configs/pb1550_defconfig
+++ b/arch/mips/configs/pb1550_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:25 2006 4# Mon Apr 24 14:51:13 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_PB1550=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -115,11 +117,11 @@ CONFIG_PAGE_SIZE_4KB=y
115CONFIG_CPU_HAS_PREFETCH=y 117CONFIG_CPU_HAS_PREFETCH=y
116# CONFIG_MIPS_MT is not set 118# CONFIG_MIPS_MT is not set
117CONFIG_64BIT_PHYS_ADDR=y 119CONFIG_64BIT_PHYS_ADDR=y
118# CONFIG_CPU_ADVANCED is not set
119CONFIG_CPU_HAS_LLSC=y 120CONFIG_CPU_HAS_LLSC=y
120CONFIG_CPU_HAS_SYNC=y 121CONFIG_CPU_HAS_SYNC=y
121CONFIG_GENERIC_HARDIRQS=y 122CONFIG_GENERIC_HARDIRQS=y
122CONFIG_GENERIC_IRQ_PROBE=y 123CONFIG_GENERIC_IRQ_PROBE=y
124CONFIG_CPU_SUPPORTS_HIGHMEM=y
123CONFIG_ARCH_FLATMEM_ENABLE=y 125CONFIG_ARCH_FLATMEM_ENABLE=y
124CONFIG_SELECT_MEMORY_MODEL=y 126CONFIG_SELECT_MEMORY_MODEL=y
125CONFIG_FLATMEM_MANUAL=y 127CONFIG_FLATMEM_MANUAL=y
@@ -137,7 +139,6 @@ CONFIG_PREEMPT_NONE=y
137# Code maturity level options 139# Code maturity level options
138# 140#
139CONFIG_EXPERIMENTAL=y 141CONFIG_EXPERIMENTAL=y
140CONFIG_CLEAN_COMPILE=y
141CONFIG_BROKEN_ON_SMP=y 142CONFIG_BROKEN_ON_SMP=y
142CONFIG_INIT_ENV_ARG_LIMIT=32 143CONFIG_INIT_ENV_ARG_LIMIT=32
143 144
@@ -153,6 +154,7 @@ CONFIG_SYSVIPC=y
153CONFIG_SYSCTL=y 154CONFIG_SYSCTL=y
154# CONFIG_AUDIT is not set 155# CONFIG_AUDIT is not set
155# CONFIG_IKCONFIG is not set 156# CONFIG_IKCONFIG is not set
157CONFIG_RELAY=y
156CONFIG_INITRAMFS_SOURCE="" 158CONFIG_INITRAMFS_SOURCE=""
157# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 159# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
158CONFIG_EMBEDDED=y 160CONFIG_EMBEDDED=y
@@ -166,10 +168,6 @@ CONFIG_BASE_FULL=y
166CONFIG_FUTEX=y 168CONFIG_FUTEX=y
167CONFIG_EPOLL=y 169CONFIG_EPOLL=y
168CONFIG_SHMEM=y 170CONFIG_SHMEM=y
169CONFIG_CC_ALIGN_FUNCTIONS=0
170CONFIG_CC_ALIGN_LABELS=0
171CONFIG_CC_ALIGN_LOOPS=0
172CONFIG_CC_ALIGN_JUMPS=0
173CONFIG_SLAB=y 171CONFIG_SLAB=y
174# CONFIG_TINY_SHMEM is not set 172# CONFIG_TINY_SHMEM is not set
175CONFIG_BASE_SMALL=0 173CONFIG_BASE_SMALL=0
@@ -182,7 +180,6 @@ CONFIG_OBSOLETE_INTERMODULE=y
182CONFIG_MODULES=y 180CONFIG_MODULES=y
183CONFIG_MODULE_UNLOAD=y 181CONFIG_MODULE_UNLOAD=y
184# CONFIG_MODULE_FORCE_UNLOAD is not set 182# CONFIG_MODULE_FORCE_UNLOAD is not set
185CONFIG_OBSOLETE_MODPARM=y
186CONFIG_MODVERSIONS=y 183CONFIG_MODVERSIONS=y
187CONFIG_MODULE_SRCVERSION_ALL=y 184CONFIG_MODULE_SRCVERSION_ALL=y
188CONFIG_KMOD=y 185CONFIG_KMOD=y
@@ -191,6 +188,8 @@ CONFIG_KMOD=y
191# Block layer 188# Block layer
192# 189#
193# CONFIG_LBD is not set 190# CONFIG_LBD is not set
191# CONFIG_BLK_DEV_IO_TRACE is not set
192# CONFIG_LSF is not set
194 193
195# 194#
196# IO Schedulers 195# IO Schedulers
@@ -210,7 +209,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
210# 209#
211CONFIG_HW_HAS_PCI=y 210CONFIG_HW_HAS_PCI=y
212CONFIG_PCI=y 211CONFIG_PCI=y
213CONFIG_PCI_LEGACY_PROC=y
214CONFIG_MMU=y 212CONFIG_MMU=y
215 213
216# 214#
@@ -253,6 +251,7 @@ CONFIG_NET=y
253# 251#
254# Networking options 252# Networking options
255# 253#
254# CONFIG_NETDEBUG is not set
256CONFIG_PACKET=y 255CONFIG_PACKET=y
257# CONFIG_PACKET_MMAP is not set 256# CONFIG_PACKET_MMAP is not set
258CONFIG_UNIX=y 257CONFIG_UNIX=y
@@ -275,7 +274,8 @@ CONFIG_IP_PNP_BOOTP=y
275# CONFIG_INET_AH is not set 274# CONFIG_INET_AH is not set
276# CONFIG_INET_ESP is not set 275# CONFIG_INET_ESP is not set
277# CONFIG_INET_IPCOMP is not set 276# CONFIG_INET_IPCOMP is not set
278CONFIG_INET_TUNNEL=m 277# CONFIG_INET_XFRM_TUNNEL is not set
278# CONFIG_INET_TUNNEL is not set
279CONFIG_INET_DIAG=y 279CONFIG_INET_DIAG=y
280CONFIG_INET_TCP_DIAG=y 280CONFIG_INET_TCP_DIAG=y
281# CONFIG_TCP_CONG_ADVANCED is not set 281# CONFIG_TCP_CONG_ADVANCED is not set
@@ -286,6 +286,8 @@ CONFIG_TCP_CONG_BIC=y
286# 286#
287# CONFIG_IP_VS is not set 287# CONFIG_IP_VS is not set
288# CONFIG_IPV6 is not set 288# CONFIG_IPV6 is not set
289# CONFIG_INET6_XFRM_TUNNEL is not set
290# CONFIG_INET6_TUNNEL is not set
289CONFIG_NETFILTER=y 291CONFIG_NETFILTER=y
290# CONFIG_NETFILTER_DEBUG is not set 292# CONFIG_NETFILTER_DEBUG is not set
291 293
@@ -302,10 +304,13 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
302CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 304CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
303CONFIG_NETFILTER_XT_MATCH_COMMENT=m 305CONFIG_NETFILTER_XT_MATCH_COMMENT=m
304CONFIG_NETFILTER_XT_MATCH_DCCP=m 306CONFIG_NETFILTER_XT_MATCH_DCCP=m
307CONFIG_NETFILTER_XT_MATCH_ESP=m
305CONFIG_NETFILTER_XT_MATCH_LENGTH=m 308CONFIG_NETFILTER_XT_MATCH_LENGTH=m
306CONFIG_NETFILTER_XT_MATCH_LIMIT=m 309CONFIG_NETFILTER_XT_MATCH_LIMIT=m
307CONFIG_NETFILTER_XT_MATCH_MAC=m 310CONFIG_NETFILTER_XT_MATCH_MAC=m
308CONFIG_NETFILTER_XT_MATCH_MARK=m 311CONFIG_NETFILTER_XT_MATCH_MARK=m
312CONFIG_NETFILTER_XT_MATCH_POLICY=m
313CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
309CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 314CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
310CONFIG_NETFILTER_XT_MATCH_REALM=m 315CONFIG_NETFILTER_XT_MATCH_REALM=m
311CONFIG_NETFILTER_XT_MATCH_SCTP=m 316CONFIG_NETFILTER_XT_MATCH_SCTP=m
@@ -329,6 +334,11 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
329# SCTP Configuration (EXPERIMENTAL) 334# SCTP Configuration (EXPERIMENTAL)
330# 335#
331# CONFIG_IP_SCTP is not set 336# CONFIG_IP_SCTP is not set
337
338#
339# TIPC Configuration (EXPERIMENTAL)
340#
341# CONFIG_TIPC is not set
332# CONFIG_ATM is not set 342# CONFIG_ATM is not set
333# CONFIG_BRIDGE is not set 343# CONFIG_BRIDGE is not set
334# CONFIG_VLAN_8021Q is not set 344# CONFIG_VLAN_8021Q is not set
@@ -338,11 +348,6 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
338# CONFIG_ATALK is not set 348# CONFIG_ATALK is not set
339# CONFIG_X25 is not set 349# CONFIG_X25 is not set
340# CONFIG_LAPB is not set 350# CONFIG_LAPB is not set
341
342#
343# TIPC Configuration (EXPERIMENTAL)
344#
345# CONFIG_TIPC is not set
346# CONFIG_NET_DIVERT is not set 351# CONFIG_NET_DIVERT is not set
347# CONFIG_ECONET is not set 352# CONFIG_ECONET is not set
348# CONFIG_WAN_ROUTER is not set 353# CONFIG_WAN_ROUTER is not set
@@ -364,6 +369,9 @@ CONFIG_IEEE80211=m
364# CONFIG_IEEE80211_DEBUG is not set 369# CONFIG_IEEE80211_DEBUG is not set
365CONFIG_IEEE80211_CRYPT_WEP=m 370CONFIG_IEEE80211_CRYPT_WEP=m
366CONFIG_IEEE80211_CRYPT_CCMP=m 371CONFIG_IEEE80211_CRYPT_CCMP=m
372CONFIG_IEEE80211_SOFTMAC=m
373# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
374CONFIG_WIRELESS_EXT=y
367 375
368# 376#
369# Device Drivers 377# Device Drivers
@@ -420,7 +428,6 @@ CONFIG_MTD_CFI_I2=y
420# CONFIG_MTD_CFI_I8 is not set 428# CONFIG_MTD_CFI_I8 is not set
421# CONFIG_MTD_CFI_INTELEXT is not set 429# CONFIG_MTD_CFI_INTELEXT is not set
422CONFIG_MTD_CFI_AMDSTD=y 430CONFIG_MTD_CFI_AMDSTD=y
423CONFIG_MTD_CFI_AMDSTD_RETRY=0
424# CONFIG_MTD_CFI_STAA is not set 431# CONFIG_MTD_CFI_STAA is not set
425CONFIG_MTD_CFI_UTIL=y 432CONFIG_MTD_CFI_UTIL=y
426# CONFIG_MTD_RAM is not set 433# CONFIG_MTD_RAM is not set
@@ -443,7 +450,6 @@ CONFIG_MTD_ALCHEMY=y
443# CONFIG_MTD_SLRAM is not set 450# CONFIG_MTD_SLRAM is not set
444# CONFIG_MTD_PHRAM is not set 451# CONFIG_MTD_PHRAM is not set
445# CONFIG_MTD_MTDRAM is not set 452# CONFIG_MTD_MTDRAM is not set
446# CONFIG_MTD_BLKMTD is not set
447# CONFIG_MTD_BLOCK2MTD is not set 453# CONFIG_MTD_BLOCK2MTD is not set
448 454
449# 455#
@@ -485,7 +491,7 @@ CONFIG_BLK_DEV_LOOP=y
485# CONFIG_BLK_DEV_NBD is not set 491# CONFIG_BLK_DEV_NBD is not set
486# CONFIG_BLK_DEV_SX8 is not set 492# CONFIG_BLK_DEV_SX8 is not set
487# CONFIG_BLK_DEV_RAM is not set 493# CONFIG_BLK_DEV_RAM is not set
488CONFIG_BLK_DEV_RAM_COUNT=16 494# CONFIG_BLK_DEV_INITRD is not set
489CONFIG_CDROM_PKTCDVD=m 495CONFIG_CDROM_PKTCDVD=m
490CONFIG_CDROM_PKTCDVD_BUFFERS=8 496CONFIG_CDROM_PKTCDVD_BUFFERS=8
491# CONFIG_CDROM_PKTCDVD_WCACHE is not set 497# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -742,6 +748,7 @@ CONFIG_SERIO_RAW=m
742# 748#
743CONFIG_SERIAL_8250=y 749CONFIG_SERIAL_8250=y
744CONFIG_SERIAL_8250_CONSOLE=y 750CONFIG_SERIAL_8250_CONSOLE=y
751CONFIG_SERIAL_8250_PCI=y
745# CONFIG_SERIAL_8250_CS is not set 752# CONFIG_SERIAL_8250_CS is not set
746CONFIG_SERIAL_8250_NR_UARTS=4 753CONFIG_SERIAL_8250_NR_UARTS=4
747CONFIG_SERIAL_8250_RUNTIME_UARTS=4 754CONFIG_SERIAL_8250_RUNTIME_UARTS=4
@@ -753,6 +760,7 @@ CONFIG_SERIAL_8250_AU1X00=y
753# 760#
754CONFIG_SERIAL_CORE=y 761CONFIG_SERIAL_CORE=y
755CONFIG_SERIAL_CORE_CONSOLE=y 762CONFIG_SERIAL_CORE_CONSOLE=y
763# CONFIG_SERIAL_JSM is not set
756CONFIG_UNIX98_PTYS=y 764CONFIG_UNIX98_PTYS=y
757CONFIG_LEGACY_PTYS=y 765CONFIG_LEGACY_PTYS=y
758CONFIG_LEGACY_PTY_COUNT=256 766CONFIG_LEGACY_PTY_COUNT=256
@@ -818,10 +826,6 @@ CONFIG_SYNCLINK_CS=m
818# 826#
819 827
820# 828#
821# Multimedia Capabilities Port drivers
822#
823
824#
825# Multimedia devices 829# Multimedia devices
826# 830#
827# CONFIG_VIDEO_DEV is not set 831# CONFIG_VIDEO_DEV is not set
@@ -846,6 +850,7 @@ CONFIG_SYNCLINK_CS=m
846# 850#
847CONFIG_USB_ARCH_HAS_HCD=y 851CONFIG_USB_ARCH_HAS_HCD=y
848CONFIG_USB_ARCH_HAS_OHCI=y 852CONFIG_USB_ARCH_HAS_OHCI=y
853CONFIG_USB_ARCH_HAS_EHCI=y
849# CONFIG_USB is not set 854# CONFIG_USB is not set
850 855
851# 856#
@@ -863,13 +868,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
863# CONFIG_MMC is not set 868# CONFIG_MMC is not set
864 869
865# 870#
871# LED devices
872#
873# CONFIG_NEW_LEDS is not set
874
875#
876# LED drivers
877#
878
879#
880# LED Triggers
881#
882
883#
866# InfiniBand support 884# InfiniBand support
867# 885#
868# CONFIG_INFINIBAND is not set 886# CONFIG_INFINIBAND is not set
869 887
870# 888#
871# SN Devices 889# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
890#
891
892#
893# Real Time Clock
872# 894#
895# CONFIG_RTC_CLASS is not set
873 896
874# 897#
875# File systems 898# File systems
@@ -927,7 +950,6 @@ CONFIG_SYSFS=y
927CONFIG_TMPFS=y 950CONFIG_TMPFS=y
928# CONFIG_HUGETLB_PAGE is not set 951# CONFIG_HUGETLB_PAGE is not set
929CONFIG_RAMFS=y 952CONFIG_RAMFS=y
930CONFIG_RELAYFS_FS=m
931# CONFIG_CONFIGFS_FS is not set 953# CONFIG_CONFIGFS_FS is not set
932 954
933# 955#
@@ -1036,6 +1058,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1036# CONFIG_MAGIC_SYSRQ is not set 1058# CONFIG_MAGIC_SYSRQ is not set
1037# CONFIG_DEBUG_KERNEL is not set 1059# CONFIG_DEBUG_KERNEL is not set
1038CONFIG_LOG_BUF_SHIFT=14 1060CONFIG_LOG_BUF_SHIFT=14
1061# CONFIG_DEBUG_FS is not set
1039CONFIG_CROSSCOMPILE=y 1062CONFIG_CROSSCOMPILE=y
1040CONFIG_CMDLINE="" 1063CONFIG_CMDLINE=""
1041 1064
diff --git a/arch/mips/configs/pnx8550-jbs_defconfig b/arch/mips/configs/pnx8550-jbs_defconfig
index b5db700450ba..4c57e564db0b 100644
--- a/arch/mips/configs/pnx8550-jbs_defconfig
+++ b/arch/mips/configs/pnx8550-jbs_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:26 2006 4# Mon Apr 24 14:51:14 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_PNX8550_JBS=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -114,11 +116,11 @@ CONFIG_PAGE_SIZE_4KB=y
114CONFIG_CPU_HAS_PREFETCH=y 116CONFIG_CPU_HAS_PREFETCH=y
115# CONFIG_MIPS_MT is not set 117# CONFIG_MIPS_MT is not set
116# CONFIG_64BIT_PHYS_ADDR is not set 118# CONFIG_64BIT_PHYS_ADDR is not set
117# CONFIG_CPU_ADVANCED is not set
118CONFIG_CPU_HAS_LLSC=y 119CONFIG_CPU_HAS_LLSC=y
119CONFIG_CPU_HAS_SYNC=y 120CONFIG_CPU_HAS_SYNC=y
120CONFIG_GENERIC_HARDIRQS=y 121CONFIG_GENERIC_HARDIRQS=y
121CONFIG_GENERIC_IRQ_PROBE=y 122CONFIG_GENERIC_IRQ_PROBE=y
123CONFIG_CPU_SUPPORTS_HIGHMEM=y
122CONFIG_ARCH_FLATMEM_ENABLE=y 124CONFIG_ARCH_FLATMEM_ENABLE=y
123CONFIG_SELECT_MEMORY_MODEL=y 125CONFIG_SELECT_MEMORY_MODEL=y
124CONFIG_FLATMEM_MANUAL=y 126CONFIG_FLATMEM_MANUAL=y
@@ -136,7 +138,6 @@ CONFIG_PREEMPT_NONE=y
136# Code maturity level options 138# Code maturity level options
137# 139#
138CONFIG_EXPERIMENTAL=y 140CONFIG_EXPERIMENTAL=y
139CONFIG_CLEAN_COMPILE=y
140CONFIG_BROKEN_ON_SMP=y 141CONFIG_BROKEN_ON_SMP=y
141CONFIG_INIT_ENV_ARG_LIMIT=32 142CONFIG_INIT_ENV_ARG_LIMIT=32
142 143
@@ -153,6 +154,7 @@ CONFIG_SYSCTL=y
153# CONFIG_AUDIT is not set 154# CONFIG_AUDIT is not set
154CONFIG_IKCONFIG=y 155CONFIG_IKCONFIG=y
155CONFIG_IKCONFIG_PROC=y 156CONFIG_IKCONFIG_PROC=y
157# CONFIG_RELAY is not set
156CONFIG_INITRAMFS_SOURCE="" 158CONFIG_INITRAMFS_SOURCE=""
157# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 159# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
158CONFIG_EMBEDDED=y 160CONFIG_EMBEDDED=y
@@ -167,10 +169,6 @@ CONFIG_BASE_FULL=y
167CONFIG_FUTEX=y 169CONFIG_FUTEX=y
168CONFIG_EPOLL=y 170CONFIG_EPOLL=y
169CONFIG_SHMEM=y 171CONFIG_SHMEM=y
170CONFIG_CC_ALIGN_FUNCTIONS=0
171CONFIG_CC_ALIGN_LABELS=0
172CONFIG_CC_ALIGN_LOOPS=0
173CONFIG_CC_ALIGN_JUMPS=0
174CONFIG_SLAB=y 172CONFIG_SLAB=y
175# CONFIG_TINY_SHMEM is not set 173# CONFIG_TINY_SHMEM is not set
176CONFIG_BASE_SMALL=0 174CONFIG_BASE_SMALL=0
@@ -181,7 +179,6 @@ CONFIG_BASE_SMALL=0
181# 179#
182CONFIG_MODULES=y 180CONFIG_MODULES=y
183# CONFIG_MODULE_UNLOAD is not set 181# CONFIG_MODULE_UNLOAD is not set
184CONFIG_OBSOLETE_MODPARM=y
185# CONFIG_MODVERSIONS is not set 182# CONFIG_MODVERSIONS is not set
186# CONFIG_MODULE_SRCVERSION_ALL is not set 183# CONFIG_MODULE_SRCVERSION_ALL is not set
187CONFIG_KMOD=y 184CONFIG_KMOD=y
@@ -190,6 +187,8 @@ CONFIG_KMOD=y
190# Block layer 187# Block layer
191# 188#
192# CONFIG_LBD is not set 189# CONFIG_LBD is not set
190# CONFIG_BLK_DEV_IO_TRACE is not set
191# CONFIG_LSF is not set
193 192
194# 193#
195# IO Schedulers 194# IO Schedulers
@@ -209,7 +208,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
209# 208#
210CONFIG_HW_HAS_PCI=y 209CONFIG_HW_HAS_PCI=y
211CONFIG_PCI=y 210CONFIG_PCI=y
212# CONFIG_PCI_LEGACY_PROC is not set
213# CONFIG_PCI_DEBUG is not set 211# CONFIG_PCI_DEBUG is not set
214CONFIG_MMU=y 212CONFIG_MMU=y
215 213
@@ -238,6 +236,7 @@ CONFIG_NET=y
238# 236#
239# Networking options 237# Networking options
240# 238#
239# CONFIG_NETDEBUG is not set
241CONFIG_PACKET=y 240CONFIG_PACKET=y
242# CONFIG_PACKET_MMAP is not set 241# CONFIG_PACKET_MMAP is not set
243CONFIG_UNIX=y 242CONFIG_UNIX=y
@@ -257,12 +256,15 @@ CONFIG_IP_PNP_BOOTP=y
257# CONFIG_INET_AH is not set 256# CONFIG_INET_AH is not set
258# CONFIG_INET_ESP is not set 257# CONFIG_INET_ESP is not set
259# CONFIG_INET_IPCOMP is not set 258# CONFIG_INET_IPCOMP is not set
259# CONFIG_INET_XFRM_TUNNEL is not set
260# CONFIG_INET_TUNNEL is not set 260# CONFIG_INET_TUNNEL is not set
261CONFIG_INET_DIAG=y 261CONFIG_INET_DIAG=y
262CONFIG_INET_TCP_DIAG=y 262CONFIG_INET_TCP_DIAG=y
263# CONFIG_TCP_CONG_ADVANCED is not set 263# CONFIG_TCP_CONG_ADVANCED is not set
264CONFIG_TCP_CONG_BIC=y 264CONFIG_TCP_CONG_BIC=y
265# CONFIG_IPV6 is not set 265# CONFIG_IPV6 is not set
266# CONFIG_INET6_XFRM_TUNNEL is not set
267# CONFIG_INET6_TUNNEL is not set
266# CONFIG_NETFILTER is not set 268# CONFIG_NETFILTER is not set
267 269
268# 270#
@@ -274,6 +276,11 @@ CONFIG_TCP_CONG_BIC=y
274# SCTP Configuration (EXPERIMENTAL) 276# SCTP Configuration (EXPERIMENTAL)
275# 277#
276# CONFIG_IP_SCTP is not set 278# CONFIG_IP_SCTP is not set
279
280#
281# TIPC Configuration (EXPERIMENTAL)
282#
283# CONFIG_TIPC is not set
277# CONFIG_ATM is not set 284# CONFIG_ATM is not set
278# CONFIG_BRIDGE is not set 285# CONFIG_BRIDGE is not set
279# CONFIG_VLAN_8021Q is not set 286# CONFIG_VLAN_8021Q is not set
@@ -283,11 +290,6 @@ CONFIG_TCP_CONG_BIC=y
283# CONFIG_ATALK is not set 290# CONFIG_ATALK is not set
284# CONFIG_X25 is not set 291# CONFIG_X25 is not set
285# CONFIG_LAPB is not set 292# CONFIG_LAPB is not set
286
287#
288# TIPC Configuration (EXPERIMENTAL)
289#
290# CONFIG_TIPC is not set
291# CONFIG_NET_DIVERT is not set 293# CONFIG_NET_DIVERT is not set
292# CONFIG_ECONET is not set 294# CONFIG_ECONET is not set
293# CONFIG_WAN_ROUTER is not set 295# CONFIG_WAN_ROUTER is not set
@@ -469,7 +471,6 @@ CONFIG_ISCSI_TCP=m
469# CONFIG_SCSI_INIA100 is not set 471# CONFIG_SCSI_INIA100 is not set
470# CONFIG_SCSI_SYM53C8XX_2 is not set 472# CONFIG_SCSI_SYM53C8XX_2 is not set
471# CONFIG_SCSI_IPR is not set 473# CONFIG_SCSI_IPR is not set
472# CONFIG_SCSI_QLOGIC_FC is not set
473# CONFIG_SCSI_QLOGIC_1280 is not set 474# CONFIG_SCSI_QLOGIC_1280 is not set
474# CONFIG_SCSI_QLA_FC is not set 475# CONFIG_SCSI_QLA_FC is not set
475# CONFIG_SCSI_LPFC is not set 476# CONFIG_SCSI_LPFC is not set
@@ -671,6 +672,7 @@ CONFIG_HW_CONSOLE=y
671# Non-8250 serial port support 672# Non-8250 serial port support
672# 673#
673# CONFIG_SERIAL_IP3106 is not set 674# CONFIG_SERIAL_IP3106 is not set
675# CONFIG_SERIAL_JSM is not set
674CONFIG_UNIX98_PTYS=y 676CONFIG_UNIX98_PTYS=y
675CONFIG_LEGACY_PTYS=y 677CONFIG_LEGACY_PTYS=y
676CONFIG_LEGACY_PTY_COUNT=256 678CONFIG_LEGACY_PTY_COUNT=256
@@ -723,6 +725,7 @@ CONFIG_LEGACY_PTY_COUNT=256
723# 725#
724CONFIG_HWMON=y 726CONFIG_HWMON=y
725# CONFIG_HWMON_VID is not set 727# CONFIG_HWMON_VID is not set
728# CONFIG_SENSORS_F71805F is not set
726# CONFIG_HWMON_DEBUG_CHIP is not set 729# CONFIG_HWMON_DEBUG_CHIP is not set
727 730
728# 731#
@@ -730,10 +733,6 @@ CONFIG_HWMON=y
730# 733#
731 734
732# 735#
733# Multimedia Capabilities Port drivers
734#
735
736#
737# Multimedia devices 736# Multimedia devices
738# 737#
739# CONFIG_VIDEO_DEV is not set 738# CONFIG_VIDEO_DEV is not set
@@ -742,6 +741,7 @@ CONFIG_HWMON=y
742# Digital Video Broadcasting Devices 741# Digital Video Broadcasting Devices
743# 742#
744# CONFIG_DVB is not set 743# CONFIG_DVB is not set
744# CONFIG_USB_DABUSB is not set
745 745
746# 746#
747# Graphics support 747# Graphics support
@@ -764,6 +764,7 @@ CONFIG_DUMMY_CONSOLE=y
764# 764#
765CONFIG_USB_ARCH_HAS_HCD=y 765CONFIG_USB_ARCH_HAS_HCD=y
766CONFIG_USB_ARCH_HAS_OHCI=y 766CONFIG_USB_ARCH_HAS_OHCI=y
767CONFIG_USB_ARCH_HAS_EHCI=y
767CONFIG_USB=y 768CONFIG_USB=y
768# CONFIG_USB_DEBUG is not set 769# CONFIG_USB_DEBUG is not set
769 770
@@ -827,9 +828,7 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
827# CONFIG_USB_ACECAD is not set 828# CONFIG_USB_ACECAD is not set
828# CONFIG_USB_KBTAB is not set 829# CONFIG_USB_KBTAB is not set
829# CONFIG_USB_POWERMATE is not set 830# CONFIG_USB_POWERMATE is not set
830# CONFIG_USB_MTOUCH is not set 831# CONFIG_USB_TOUCHSCREEN is not set
831# CONFIG_USB_ITMTOUCH is not set
832# CONFIG_USB_EGALAX is not set
833# CONFIG_USB_YEALINK is not set 832# CONFIG_USB_YEALINK is not set
834# CONFIG_USB_XPAD is not set 833# CONFIG_USB_XPAD is not set
835# CONFIG_USB_ATI_REMOTE is not set 834# CONFIG_USB_ATI_REMOTE is not set
@@ -844,15 +843,6 @@ CONFIG_USB_STORAGE_JUMPSHOT=y
844# CONFIG_USB_MICROTEK is not set 843# CONFIG_USB_MICROTEK is not set
845 844
846# 845#
847# USB Multimedia devices
848#
849# CONFIG_USB_DABUSB is not set
850
851#
852# Video4Linux support is needed for USB Multimedia device support
853#
854
855#
856# USB Network Adapters 846# USB Network Adapters
857# 847#
858# CONFIG_USB_CATC is not set 848# CONFIG_USB_CATC is not set
@@ -902,13 +892,31 @@ CONFIG_USB_MON=y
902# CONFIG_MMC is not set 892# CONFIG_MMC is not set
903 893
904# 894#
895# LED devices
896#
897# CONFIG_NEW_LEDS is not set
898
899#
900# LED drivers
901#
902
903#
904# LED Triggers
905#
906
907#
905# InfiniBand support 908# InfiniBand support
906# 909#
907# CONFIG_INFINIBAND is not set 910# CONFIG_INFINIBAND is not set
908 911
909# 912#
910# SN Devices 913# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
914#
915
916#
917# Real Time Clock
911# 918#
919# CONFIG_RTC_CLASS is not set
912 920
913# 921#
914# File systems 922# File systems
@@ -956,7 +964,6 @@ CONFIG_SYSFS=y
956CONFIG_TMPFS=y 964CONFIG_TMPFS=y
957# CONFIG_HUGETLB_PAGE is not set 965# CONFIG_HUGETLB_PAGE is not set
958CONFIG_RAMFS=y 966CONFIG_RAMFS=y
959# CONFIG_RELAYFS_FS is not set
960# CONFIG_CONFIGFS_FS is not set 967# CONFIG_CONFIGFS_FS is not set
961 968
962# 969#
@@ -1067,6 +1074,7 @@ CONFIG_LOG_BUF_SHIFT=14
1067CONFIG_DETECT_SOFTLOCKUP=y 1074CONFIG_DETECT_SOFTLOCKUP=y
1068# CONFIG_SCHEDSTATS is not set 1075# CONFIG_SCHEDSTATS is not set
1069CONFIG_DEBUG_SLAB=y 1076CONFIG_DEBUG_SLAB=y
1077# CONFIG_DEBUG_SLAB_LEAK is not set
1070CONFIG_DEBUG_MUTEXES=y 1078CONFIG_DEBUG_MUTEXES=y
1071# CONFIG_DEBUG_SPINLOCK is not set 1079# CONFIG_DEBUG_SPINLOCK is not set
1072# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1080# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
diff --git a/arch/mips/configs/pnx8550-v2pci_defconfig b/arch/mips/configs/pnx8550-v2pci_defconfig
index 4187287f0763..3c8f35162fec 100644
--- a/arch/mips/configs/pnx8550-v2pci_defconfig
+++ b/arch/mips/configs/pnx8550-v2pci_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:28 2006 4# Mon Apr 24 14:51:14 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_PNX8550_V2PCI=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -114,12 +116,11 @@ CONFIG_PAGE_SIZE_4KB=y
114CONFIG_CPU_HAS_PREFETCH=y 116CONFIG_CPU_HAS_PREFETCH=y
115# CONFIG_MIPS_MT is not set 117# CONFIG_MIPS_MT is not set
116# CONFIG_64BIT_PHYS_ADDR is not set 118# CONFIG_64BIT_PHYS_ADDR is not set
117CONFIG_CPU_ADVANCED=y
118CONFIG_CPU_HAS_LLSC=y 119CONFIG_CPU_HAS_LLSC=y
119# CONFIG_CPU_HAS_WB is not set
120CONFIG_CPU_HAS_SYNC=y 120CONFIG_CPU_HAS_SYNC=y
121CONFIG_GENERIC_HARDIRQS=y 121CONFIG_GENERIC_HARDIRQS=y
122CONFIG_GENERIC_IRQ_PROBE=y 122CONFIG_GENERIC_IRQ_PROBE=y
123CONFIG_CPU_SUPPORTS_HIGHMEM=y
123CONFIG_ARCH_FLATMEM_ENABLE=y 124CONFIG_ARCH_FLATMEM_ENABLE=y
124CONFIG_SELECT_MEMORY_MODEL=y 125CONFIG_SELECT_MEMORY_MODEL=y
125CONFIG_FLATMEM_MANUAL=y 126CONFIG_FLATMEM_MANUAL=y
@@ -137,7 +138,6 @@ CONFIG_PREEMPT_NONE=y
137# Code maturity level options 138# Code maturity level options
138# 139#
139CONFIG_EXPERIMENTAL=y 140CONFIG_EXPERIMENTAL=y
140CONFIG_CLEAN_COMPILE=y
141CONFIG_BROKEN_ON_SMP=y 141CONFIG_BROKEN_ON_SMP=y
142CONFIG_INIT_ENV_ARG_LIMIT=32 142CONFIG_INIT_ENV_ARG_LIMIT=32
143 143
@@ -154,6 +154,7 @@ CONFIG_SYSCTL=y
154# CONFIG_AUDIT is not set 154# CONFIG_AUDIT is not set
155CONFIG_IKCONFIG=y 155CONFIG_IKCONFIG=y
156CONFIG_IKCONFIG_PROC=y 156CONFIG_IKCONFIG_PROC=y
157# CONFIG_RELAY is not set
157CONFIG_INITRAMFS_SOURCE="" 158CONFIG_INITRAMFS_SOURCE=""
158# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 159# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
159CONFIG_EMBEDDED=y 160CONFIG_EMBEDDED=y
@@ -167,10 +168,6 @@ CONFIG_BASE_FULL=y
167CONFIG_FUTEX=y 168CONFIG_FUTEX=y
168CONFIG_EPOLL=y 169CONFIG_EPOLL=y
169CONFIG_SHMEM=y 170CONFIG_SHMEM=y
170CONFIG_CC_ALIGN_FUNCTIONS=0
171CONFIG_CC_ALIGN_LABELS=0
172CONFIG_CC_ALIGN_LOOPS=0
173CONFIG_CC_ALIGN_JUMPS=0
174CONFIG_SLAB=y 171CONFIG_SLAB=y
175# CONFIG_TINY_SHMEM is not set 172# CONFIG_TINY_SHMEM is not set
176CONFIG_BASE_SMALL=0 173CONFIG_BASE_SMALL=0
@@ -181,7 +178,6 @@ CONFIG_BASE_SMALL=0
181# 178#
182CONFIG_MODULES=y 179CONFIG_MODULES=y
183# CONFIG_MODULE_UNLOAD is not set 180# CONFIG_MODULE_UNLOAD is not set
184CONFIG_OBSOLETE_MODPARM=y
185# CONFIG_MODVERSIONS is not set 181# CONFIG_MODVERSIONS is not set
186# CONFIG_MODULE_SRCVERSION_ALL is not set 182# CONFIG_MODULE_SRCVERSION_ALL is not set
187CONFIG_KMOD=y 183CONFIG_KMOD=y
@@ -190,6 +186,8 @@ CONFIG_KMOD=y
190# Block layer 186# Block layer
191# 187#
192# CONFIG_LBD is not set 188# CONFIG_LBD is not set
189# CONFIG_BLK_DEV_IO_TRACE is not set
190# CONFIG_LSF is not set
193 191
194# 192#
195# IO Schedulers 193# IO Schedulers
@@ -209,7 +207,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
209# 207#
210CONFIG_HW_HAS_PCI=y 208CONFIG_HW_HAS_PCI=y
211CONFIG_PCI=y 209CONFIG_PCI=y
212# CONFIG_PCI_LEGACY_PROC is not set
213CONFIG_MMU=y 210CONFIG_MMU=y
214 211
215# 212#
@@ -237,6 +234,7 @@ CONFIG_NET=y
237# 234#
238# Networking options 235# Networking options
239# 236#
237# CONFIG_NETDEBUG is not set
240CONFIG_PACKET=y 238CONFIG_PACKET=y
241# CONFIG_PACKET_MMAP is not set 239# CONFIG_PACKET_MMAP is not set
242CONFIG_UNIX=y 240CONFIG_UNIX=y
@@ -256,6 +254,7 @@ CONFIG_IP_PNP=y
256# CONFIG_INET_AH is not set 254# CONFIG_INET_AH is not set
257# CONFIG_INET_ESP is not set 255# CONFIG_INET_ESP is not set
258# CONFIG_INET_IPCOMP is not set 256# CONFIG_INET_IPCOMP is not set
257# CONFIG_INET_XFRM_TUNNEL is not set
259# CONFIG_INET_TUNNEL is not set 258# CONFIG_INET_TUNNEL is not set
260CONFIG_INET_DIAG=y 259CONFIG_INET_DIAG=y
261CONFIG_INET_TCP_DIAG=y 260CONFIG_INET_TCP_DIAG=y
@@ -268,9 +267,12 @@ CONFIG_TCP_CONG_BIC=y
268# CONFIG_IP_VS is not set 267# CONFIG_IP_VS is not set
269CONFIG_IPV6=m 268CONFIG_IPV6=m
270# CONFIG_IPV6_PRIVACY is not set 269# CONFIG_IPV6_PRIVACY is not set
270CONFIG_IPV6_ROUTER_PREF=y
271CONFIG_IPV6_ROUTE_INFO=y
271# CONFIG_INET6_AH is not set 272# CONFIG_INET6_AH is not set
272# CONFIG_INET6_ESP is not set 273# CONFIG_INET6_ESP is not set
273# CONFIG_INET6_IPCOMP is not set 274# CONFIG_INET6_IPCOMP is not set
275# CONFIG_INET6_XFRM_TUNNEL is not set
274# CONFIG_INET6_TUNNEL is not set 276# CONFIG_INET6_TUNNEL is not set
275# CONFIG_IPV6_TUNNEL is not set 277# CONFIG_IPV6_TUNNEL is not set
276CONFIG_NETFILTER=y 278CONFIG_NETFILTER=y
@@ -287,10 +289,12 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
287CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 289CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
288CONFIG_NETFILTER_XT_MATCH_COMMENT=m 290CONFIG_NETFILTER_XT_MATCH_COMMENT=m
289CONFIG_NETFILTER_XT_MATCH_DCCP=m 291CONFIG_NETFILTER_XT_MATCH_DCCP=m
292CONFIG_NETFILTER_XT_MATCH_ESP=m
290CONFIG_NETFILTER_XT_MATCH_LENGTH=m 293CONFIG_NETFILTER_XT_MATCH_LENGTH=m
291CONFIG_NETFILTER_XT_MATCH_LIMIT=m 294CONFIG_NETFILTER_XT_MATCH_LIMIT=m
292CONFIG_NETFILTER_XT_MATCH_MAC=m 295CONFIG_NETFILTER_XT_MATCH_MAC=m
293CONFIG_NETFILTER_XT_MATCH_MARK=m 296CONFIG_NETFILTER_XT_MATCH_MARK=m
297CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
294CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 298CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
295CONFIG_NETFILTER_XT_MATCH_REALM=m 299CONFIG_NETFILTER_XT_MATCH_REALM=m
296CONFIG_NETFILTER_XT_MATCH_SCTP=m 300CONFIG_NETFILTER_XT_MATCH_SCTP=m
@@ -320,6 +324,11 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
320# SCTP Configuration (EXPERIMENTAL) 324# SCTP Configuration (EXPERIMENTAL)
321# 325#
322# CONFIG_IP_SCTP is not set 326# CONFIG_IP_SCTP is not set
327
328#
329# TIPC Configuration (EXPERIMENTAL)
330#
331# CONFIG_TIPC is not set
323# CONFIG_ATM is not set 332# CONFIG_ATM is not set
324# CONFIG_BRIDGE is not set 333# CONFIG_BRIDGE is not set
325# CONFIG_VLAN_8021Q is not set 334# CONFIG_VLAN_8021Q is not set
@@ -329,11 +338,6 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
329# CONFIG_ATALK is not set 338# CONFIG_ATALK is not set
330# CONFIG_X25 is not set 339# CONFIG_X25 is not set
331# CONFIG_LAPB is not set 340# CONFIG_LAPB is not set
332
333#
334# TIPC Configuration (EXPERIMENTAL)
335#
336# CONFIG_TIPC is not set
337# CONFIG_NET_DIVERT is not set 341# CONFIG_NET_DIVERT is not set
338# CONFIG_ECONET is not set 342# CONFIG_ECONET is not set
339# CONFIG_WAN_ROUTER is not set 343# CONFIG_WAN_ROUTER is not set
@@ -521,7 +525,6 @@ CONFIG_AIC7XXX_DEBUG_MASK=0
521# CONFIG_SCSI_INIA100 is not set 525# CONFIG_SCSI_INIA100 is not set
522# CONFIG_SCSI_SYM53C8XX_2 is not set 526# CONFIG_SCSI_SYM53C8XX_2 is not set
523# CONFIG_SCSI_IPR is not set 527# CONFIG_SCSI_IPR is not set
524# CONFIG_SCSI_QLOGIC_FC is not set
525# CONFIG_SCSI_QLOGIC_1280 is not set 528# CONFIG_SCSI_QLOGIC_1280 is not set
526# CONFIG_SCSI_QLA_FC is not set 529# CONFIG_SCSI_QLA_FC is not set
527# CONFIG_SCSI_LPFC is not set 530# CONFIG_SCSI_LPFC is not set
@@ -757,6 +760,7 @@ CONFIG_SERIAL_NONSTANDARD=y
757# Non-8250 serial port support 760# Non-8250 serial port support
758# 761#
759# CONFIG_SERIAL_IP3106 is not set 762# CONFIG_SERIAL_IP3106 is not set
763# CONFIG_SERIAL_JSM is not set
760CONFIG_UNIX98_PTYS=y 764CONFIG_UNIX98_PTYS=y
761CONFIG_LEGACY_PTYS=y 765CONFIG_LEGACY_PTYS=y
762CONFIG_LEGACY_PTY_COUNT=256 766CONFIG_LEGACY_PTY_COUNT=256
@@ -816,7 +820,6 @@ CONFIG_I2C_ALGOBIT=m
816# CONFIG_I2C_PARPORT_LIGHT is not set 820# CONFIG_I2C_PARPORT_LIGHT is not set
817# CONFIG_I2C_PROSAVAGE is not set 821# CONFIG_I2C_PROSAVAGE is not set
818# CONFIG_I2C_SAVAGE4 is not set 822# CONFIG_I2C_SAVAGE4 is not set
819# CONFIG_SCx200_ACB is not set
820# CONFIG_I2C_SIS5595 is not set 823# CONFIG_I2C_SIS5595 is not set
821# CONFIG_I2C_SIS630 is not set 824# CONFIG_I2C_SIS630 is not set
822# CONFIG_I2C_SIS96X is not set 825# CONFIG_I2C_SIS96X is not set
@@ -835,9 +838,7 @@ CONFIG_I2C_ALGOBIT=m
835# CONFIG_SENSORS_PCF8574 is not set 838# CONFIG_SENSORS_PCF8574 is not set
836# CONFIG_SENSORS_PCA9539 is not set 839# CONFIG_SENSORS_PCA9539 is not set
837# CONFIG_SENSORS_PCF8591 is not set 840# CONFIG_SENSORS_PCF8591 is not set
838# CONFIG_SENSORS_RTC8564 is not set
839# CONFIG_SENSORS_MAX6875 is not set 841# CONFIG_SENSORS_MAX6875 is not set
840# CONFIG_RTC_X1205_I2C is not set
841# CONFIG_I2C_DEBUG_CORE is not set 842# CONFIG_I2C_DEBUG_CORE is not set
842# CONFIG_I2C_DEBUG_ALGO is not set 843# CONFIG_I2C_DEBUG_ALGO is not set
843# CONFIG_I2C_DEBUG_BUS is not set 844# CONFIG_I2C_DEBUG_BUS is not set
@@ -867,6 +868,7 @@ CONFIG_HWMON=y
867# CONFIG_SENSORS_ASB100 is not set 868# CONFIG_SENSORS_ASB100 is not set
868# CONFIG_SENSORS_ATXP1 is not set 869# CONFIG_SENSORS_ATXP1 is not set
869# CONFIG_SENSORS_DS1621 is not set 870# CONFIG_SENSORS_DS1621 is not set
871# CONFIG_SENSORS_F71805F is not set
870# CONFIG_SENSORS_FSCHER is not set 872# CONFIG_SENSORS_FSCHER is not set
871# CONFIG_SENSORS_FSCPOS is not set 873# CONFIG_SENSORS_FSCPOS is not set
872# CONFIG_SENSORS_GL518SM is not set 874# CONFIG_SENSORS_GL518SM is not set
@@ -901,10 +903,6 @@ CONFIG_HWMON=y
901# 903#
902 904
903# 905#
904# Multimedia Capabilities Port drivers
905#
906
907#
908# Multimedia devices 906# Multimedia devices
909# 907#
910# CONFIG_VIDEO_DEV is not set 908# CONFIG_VIDEO_DEV is not set
@@ -913,6 +911,7 @@ CONFIG_HWMON=y
913# Digital Video Broadcasting Devices 911# Digital Video Broadcasting Devices
914# 912#
915# CONFIG_DVB is not set 913# CONFIG_DVB is not set
914# CONFIG_USB_DABUSB is not set
916 915
917# 916#
918# Graphics support 917# Graphics support
@@ -922,6 +921,7 @@ CONFIG_FB=y
922# CONFIG_FB_CFB_COPYAREA is not set 921# CONFIG_FB_CFB_COPYAREA is not set
923# CONFIG_FB_CFB_IMAGEBLIT is not set 922# CONFIG_FB_CFB_IMAGEBLIT is not set
924# CONFIG_FB_MACMODES is not set 923# CONFIG_FB_MACMODES is not set
924CONFIG_FB_FIRMWARE_EDID=y
925# CONFIG_FB_MODE_HELPERS is not set 925# CONFIG_FB_MODE_HELPERS is not set
926# CONFIG_FB_TILEBLITTING is not set 926# CONFIG_FB_TILEBLITTING is not set
927# CONFIG_FB_CIRRUS is not set 927# CONFIG_FB_CIRRUS is not set
@@ -933,7 +933,6 @@ CONFIG_FB=y
933# CONFIG_FB_NVIDIA is not set 933# CONFIG_FB_NVIDIA is not set
934# CONFIG_FB_RIVA is not set 934# CONFIG_FB_RIVA is not set
935# CONFIG_FB_MATROX is not set 935# CONFIG_FB_MATROX is not set
936# CONFIG_FB_RADEON_OLD is not set
937# CONFIG_FB_RADEON is not set 936# CONFIG_FB_RADEON is not set
938# CONFIG_FB_ATY128 is not set 937# CONFIG_FB_ATY128 is not set
939# CONFIG_FB_ATY is not set 938# CONFIG_FB_ATY is not set
@@ -970,6 +969,7 @@ CONFIG_DUMMY_CONSOLE=y
970# 969#
971CONFIG_USB_ARCH_HAS_HCD=y 970CONFIG_USB_ARCH_HAS_HCD=y
972CONFIG_USB_ARCH_HAS_OHCI=y 971CONFIG_USB_ARCH_HAS_OHCI=y
972CONFIG_USB_ARCH_HAS_EHCI=y
973CONFIG_USB=y 973CONFIG_USB=y
974# CONFIG_USB_DEBUG is not set 974# CONFIG_USB_DEBUG is not set
975 975
@@ -1030,9 +1030,7 @@ CONFIG_USB_HIDDEV=y
1030# CONFIG_USB_ACECAD is not set 1030# CONFIG_USB_ACECAD is not set
1031# CONFIG_USB_KBTAB is not set 1031# CONFIG_USB_KBTAB is not set
1032# CONFIG_USB_POWERMATE is not set 1032# CONFIG_USB_POWERMATE is not set
1033# CONFIG_USB_MTOUCH is not set 1033# CONFIG_USB_TOUCHSCREEN is not set
1034# CONFIG_USB_ITMTOUCH is not set
1035# CONFIG_USB_EGALAX is not set
1036# CONFIG_USB_YEALINK is not set 1034# CONFIG_USB_YEALINK is not set
1037# CONFIG_USB_XPAD is not set 1035# CONFIG_USB_XPAD is not set
1038# CONFIG_USB_ATI_REMOTE is not set 1036# CONFIG_USB_ATI_REMOTE is not set
@@ -1047,15 +1045,6 @@ CONFIG_USB_HIDDEV=y
1047# CONFIG_USB_MICROTEK is not set 1045# CONFIG_USB_MICROTEK is not set
1048 1046
1049# 1047#
1050# USB Multimedia devices
1051#
1052# CONFIG_USB_DABUSB is not set
1053
1054#
1055# Video4Linux support is needed for USB Multimedia device support
1056#
1057
1058#
1059# USB Network Adapters 1048# USB Network Adapters
1060# 1049#
1061# CONFIG_USB_CATC is not set 1050# CONFIG_USB_CATC is not set
@@ -1106,13 +1095,31 @@ CONFIG_USB_MON=y
1106# CONFIG_MMC is not set 1095# CONFIG_MMC is not set
1107 1096
1108# 1097#
1098# LED devices
1099#
1100# CONFIG_NEW_LEDS is not set
1101
1102#
1103# LED drivers
1104#
1105
1106#
1107# LED Triggers
1108#
1109
1110#
1109# InfiniBand support 1111# InfiniBand support
1110# 1112#
1111# CONFIG_INFINIBAND is not set 1113# CONFIG_INFINIBAND is not set
1112 1114
1113# 1115#
1114# SN Devices 1116# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1117#
1118
1119#
1120# Real Time Clock
1115# 1121#
1122# CONFIG_RTC_CLASS is not set
1116 1123
1117# 1124#
1118# File systems 1125# File systems
@@ -1171,7 +1178,6 @@ CONFIG_SYSFS=y
1171CONFIG_TMPFS=y 1178CONFIG_TMPFS=y
1172# CONFIG_HUGETLB_PAGE is not set 1179# CONFIG_HUGETLB_PAGE is not set
1173CONFIG_RAMFS=y 1180CONFIG_RAMFS=y
1174# CONFIG_RELAYFS_FS is not set
1175# CONFIG_CONFIGFS_FS is not set 1181# CONFIG_CONFIGFS_FS is not set
1176 1182
1177# 1183#
@@ -1280,6 +1286,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1280# CONFIG_MAGIC_SYSRQ is not set 1286# CONFIG_MAGIC_SYSRQ is not set
1281# CONFIG_DEBUG_KERNEL is not set 1287# CONFIG_DEBUG_KERNEL is not set
1282CONFIG_LOG_BUF_SHIFT=14 1288CONFIG_LOG_BUF_SHIFT=14
1289# CONFIG_DEBUG_FS is not set
1283CONFIG_CROSSCOMPILE=y 1290CONFIG_CROSSCOMPILE=y
1284CONFIG_CMDLINE="" 1291CONFIG_CMDLINE=""
1285 1292
diff --git a/arch/mips/configs/qemu_defconfig b/arch/mips/configs/qemu_defconfig
index 31f5afabafa8..4bcc01dea041 100644
--- a/arch/mips/configs/qemu_defconfig
+++ b/arch/mips/configs/qemu_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc2 3# Linux kernel version: 2.6.17-rc2
4# Sun Feb 12 19:18:55 2006 4# Mon Apr 24 14:51:15 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_QEMU=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_COHERENT=y 70CONFIG_DMA_COHERENT=y
69CONFIG_GENERIC_ISA_DMA=y 71CONFIG_GENERIC_ISA_DMA=y
@@ -115,16 +117,17 @@ CONFIG_PAGE_SIZE_4KB=y
115CONFIG_CPU_HAS_PREFETCH=y 117CONFIG_CPU_HAS_PREFETCH=y
116# CONFIG_MIPS_MT is not set 118# CONFIG_MIPS_MT is not set
117# CONFIG_64BIT_PHYS_ADDR is not set 119# CONFIG_64BIT_PHYS_ADDR is not set
118# CONFIG_CPU_ADVANCED is not set
119CONFIG_CPU_HAS_LLSC=y 120CONFIG_CPU_HAS_LLSC=y
120CONFIG_CPU_HAS_SYNC=y 121CONFIG_CPU_HAS_SYNC=y
121CONFIG_GENERIC_HARDIRQS=y 122CONFIG_GENERIC_HARDIRQS=y
122CONFIG_GENERIC_IRQ_PROBE=y 123CONFIG_GENERIC_IRQ_PROBE=y
124CONFIG_CPU_SUPPORTS_HIGHMEM=y
123CONFIG_ARCH_FLATMEM_ENABLE=y 125CONFIG_ARCH_FLATMEM_ENABLE=y
124CONFIG_FLATMEM=y 126CONFIG_FLATMEM=y
125CONFIG_FLAT_NODE_MEM_MAP=y 127CONFIG_FLAT_NODE_MEM_MAP=y
126# CONFIG_SPARSEMEM_STATIC is not set 128# CONFIG_SPARSEMEM_STATIC is not set
127CONFIG_SPLIT_PTLOCK_CPUS=4 129CONFIG_SPLIT_PTLOCK_CPUS=4
130# CONFIG_SMP is not set
128CONFIG_PREEMPT_NONE=y 131CONFIG_PREEMPT_NONE=y
129# CONFIG_PREEMPT_VOLUNTARY is not set 132# CONFIG_PREEMPT_VOLUNTARY is not set
130# CONFIG_PREEMPT is not set 133# CONFIG_PREEMPT is not set
@@ -147,6 +150,7 @@ CONFIG_LOCALVERSION_AUTO=y
147CONFIG_SYSCTL=y 150CONFIG_SYSCTL=y
148# CONFIG_AUDIT is not set 151# CONFIG_AUDIT is not set
149# CONFIG_IKCONFIG is not set 152# CONFIG_IKCONFIG is not set
153CONFIG_RELAY=y
150CONFIG_INITRAMFS_SOURCE="" 154CONFIG_INITRAMFS_SOURCE=""
151CONFIG_EMBEDDED=y 155CONFIG_EMBEDDED=y
152CONFIG_KALLSYMS=y 156CONFIG_KALLSYMS=y
@@ -159,10 +163,6 @@ CONFIG_ELF_CORE=y
159# CONFIG_FUTEX is not set 163# CONFIG_FUTEX is not set
160# CONFIG_EPOLL is not set 164# CONFIG_EPOLL is not set
161# CONFIG_SHMEM is not set 165# CONFIG_SHMEM is not set
162CONFIG_CC_ALIGN_FUNCTIONS=0
163CONFIG_CC_ALIGN_LABELS=0
164CONFIG_CC_ALIGN_LOOPS=0
165CONFIG_CC_ALIGN_JUMPS=0
166CONFIG_SLAB=y 166CONFIG_SLAB=y
167CONFIG_TINY_SHMEM=y 167CONFIG_TINY_SHMEM=y
168CONFIG_BASE_SMALL=1 168CONFIG_BASE_SMALL=1
@@ -177,6 +177,8 @@ CONFIG_BASE_SMALL=1
177# Block layer 177# Block layer
178# 178#
179# CONFIG_LBD is not set 179# CONFIG_LBD is not set
180# CONFIG_BLK_DEV_IO_TRACE is not set
181# CONFIG_LSF is not set
180 182
181# 183#
182# IO Schedulers 184# IO Schedulers
@@ -196,6 +198,7 @@ CONFIG_DEFAULT_IOSCHED="noop"
196# 198#
197CONFIG_ISA=y 199CONFIG_ISA=y
198CONFIG_MMU=y 200CONFIG_MMU=y
201CONFIG_I8253=y
199 202
200# 203#
201# PCCARD (PCMCIA/CardBus) support 204# PCCARD (PCMCIA/CardBus) support
@@ -241,12 +244,15 @@ CONFIG_IP_PNP_BOOTP=y
241# CONFIG_INET_AH is not set 244# CONFIG_INET_AH is not set
242# CONFIG_INET_ESP is not set 245# CONFIG_INET_ESP is not set
243# CONFIG_INET_IPCOMP is not set 246# CONFIG_INET_IPCOMP is not set
247# CONFIG_INET_XFRM_TUNNEL is not set
244# CONFIG_INET_TUNNEL is not set 248# CONFIG_INET_TUNNEL is not set
245CONFIG_INET_DIAG=y 249CONFIG_INET_DIAG=y
246CONFIG_INET_TCP_DIAG=y 250CONFIG_INET_TCP_DIAG=y
247# CONFIG_TCP_CONG_ADVANCED is not set 251# CONFIG_TCP_CONG_ADVANCED is not set
248CONFIG_TCP_CONG_BIC=y 252CONFIG_TCP_CONG_BIC=y
249# CONFIG_IPV6 is not set 253# CONFIG_IPV6 is not set
254# CONFIG_INET6_XFRM_TUNNEL is not set
255# CONFIG_INET6_TUNNEL is not set
250# CONFIG_NETFILTER is not set 256# CONFIG_NETFILTER is not set
251# CONFIG_BRIDGE is not set 257# CONFIG_BRIDGE is not set
252# CONFIG_VLAN_8021Q is not set 258# CONFIG_VLAN_8021Q is not set
@@ -308,7 +314,7 @@ CONFIG_PROC_EVENTS=y
308# CONFIG_BLK_DEV_LOOP is not set 314# CONFIG_BLK_DEV_LOOP is not set
309# CONFIG_BLK_DEV_NBD is not set 315# CONFIG_BLK_DEV_NBD is not set
310# CONFIG_BLK_DEV_RAM is not set 316# CONFIG_BLK_DEV_RAM is not set
311CONFIG_BLK_DEV_RAM_COUNT=16 317# CONFIG_BLK_DEV_INITRD is not set
312# CONFIG_CDROM_PKTCDVD is not set 318# CONFIG_CDROM_PKTCDVD is not set
313# CONFIG_ATA_OVER_ETH is not set 319# CONFIG_ATA_OVER_ETH is not set
314 320
@@ -530,10 +536,6 @@ CONFIG_LEGACY_PTY_COUNT=256
530# 536#
531 537
532# 538#
533# Multimedia Capabilities Port drivers
534#
535
536#
537# Multimedia devices 539# Multimedia devices
538# 540#
539# CONFIG_VIDEO_DEV is not set 541# CONFIG_VIDEO_DEV is not set
@@ -552,6 +554,7 @@ CONFIG_LEGACY_PTY_COUNT=256
552# Console display driver support 554# Console display driver support
553# 555#
554CONFIG_VGA_CONSOLE=y 556CONFIG_VGA_CONSOLE=y
557# CONFIG_VGACON_SOFT_SCROLLBACK is not set
555# CONFIG_MDA_CONSOLE is not set 558# CONFIG_MDA_CONSOLE is not set
556CONFIG_DUMMY_CONSOLE=y 559CONFIG_DUMMY_CONSOLE=y
557 560
@@ -565,6 +568,7 @@ CONFIG_DUMMY_CONSOLE=y
565# 568#
566# CONFIG_USB_ARCH_HAS_HCD is not set 569# CONFIG_USB_ARCH_HAS_HCD is not set
567# CONFIG_USB_ARCH_HAS_OHCI is not set 570# CONFIG_USB_ARCH_HAS_OHCI is not set
571# CONFIG_USB_ARCH_HAS_EHCI is not set
568 572
569# 573#
570# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 574# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -581,15 +585,28 @@ CONFIG_DUMMY_CONSOLE=y
581# CONFIG_MMC is not set 585# CONFIG_MMC is not set
582 586
583# 587#
588# LED devices
589#
590# CONFIG_NEW_LEDS is not set
591
592#
593# LED drivers
594#
595
596#
597# LED Triggers
598#
599
600#
584# InfiniBand support 601# InfiniBand support
585# 602#
586 603
587# 604#
588# SN Devices 605# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
589# 606#
590 607
591# 608#
592# EDAC - error detection and reporting (RAS) 609# Real Time Clock
593# 610#
594 611
595# 612#
@@ -632,7 +649,6 @@ CONFIG_SYSFS=y
632# CONFIG_TMPFS is not set 649# CONFIG_TMPFS is not set
633# CONFIG_HUGETLB_PAGE is not set 650# CONFIG_HUGETLB_PAGE is not set
634CONFIG_RAMFS=y 651CONFIG_RAMFS=y
635CONFIG_RELAYFS_FS=y
636 652
637# 653#
638# Miscellaneous filesystems 654# Miscellaneous filesystems
@@ -680,6 +696,8 @@ CONFIG_MSDOS_PARTITION=y
680# CONFIG_MAGIC_SYSRQ is not set 696# CONFIG_MAGIC_SYSRQ is not set
681# CONFIG_DEBUG_KERNEL is not set 697# CONFIG_DEBUG_KERNEL is not set
682CONFIG_LOG_BUF_SHIFT=14 698CONFIG_LOG_BUF_SHIFT=14
699# CONFIG_DEBUG_FS is not set
700# CONFIG_UNWIND_INFO is not set
683CONFIG_CROSSCOMPILE=y 701CONFIG_CROSSCOMPILE=y
684CONFIG_CMDLINE="" 702CONFIG_CMDLINE=""
685 703
diff --git a/arch/mips/configs/rbhma4500_defconfig b/arch/mips/configs/rbhma4500_defconfig
index b126f763cf51..3d441932e43a 100644
--- a/arch/mips/configs/rbhma4500_defconfig
+++ b/arch/mips/configs/rbhma4500_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:30 2006 4# Mon Apr 24 14:51:16 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -71,6 +71,8 @@ CONFIG_TOSHIBA_RBTX4938_MPLEX_PIO58_61=y
71# CONFIG_TOSHIBA_RBTX4938_MPLEX_NAND is not set 71# CONFIG_TOSHIBA_RBTX4938_MPLEX_NAND is not set
72# CONFIG_TOSHIBA_RBTX4938_MPLEX_ATA is not set 72# CONFIG_TOSHIBA_RBTX4938_MPLEX_ATA is not set
73CONFIG_RWSEM_GENERIC_SPINLOCK=y 73CONFIG_RWSEM_GENERIC_SPINLOCK=y
74CONFIG_GENERIC_FIND_NEXT_BIT=y
75CONFIG_GENERIC_HWEIGHT=y
74CONFIG_GENERIC_CALIBRATE_DELAY=y 76CONFIG_GENERIC_CALIBRATE_DELAY=y
75CONFIG_DMA_NONCOHERENT=y 77CONFIG_DMA_NONCOHERENT=y
76CONFIG_DMA_NEED_PCI_MAP_STATE=y 78CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -121,10 +123,9 @@ CONFIG_PAGE_SIZE_4KB=y
121# CONFIG_PAGE_SIZE_8KB is not set 123# CONFIG_PAGE_SIZE_8KB is not set
122# CONFIG_PAGE_SIZE_16KB is not set 124# CONFIG_PAGE_SIZE_16KB is not set
123# CONFIG_PAGE_SIZE_64KB is not set 125# CONFIG_PAGE_SIZE_64KB is not set
126CONFIG_CPU_HAS_PREFETCH=y
124# CONFIG_MIPS_MT is not set 127# CONFIG_MIPS_MT is not set
125CONFIG_CPU_ADVANCED=y
126CONFIG_CPU_HAS_LLSC=y 128CONFIG_CPU_HAS_LLSC=y
127CONFIG_CPU_HAS_WB=y
128CONFIG_CPU_HAS_SYNC=y 129CONFIG_CPU_HAS_SYNC=y
129CONFIG_GENERIC_HARDIRQS=y 130CONFIG_GENERIC_HARDIRQS=y
130CONFIG_GENERIC_IRQ_PROBE=y 131CONFIG_GENERIC_IRQ_PROBE=y
@@ -145,7 +146,6 @@ CONFIG_PREEMPT_NONE=y
145# Code maturity level options 146# Code maturity level options
146# 147#
147CONFIG_EXPERIMENTAL=y 148CONFIG_EXPERIMENTAL=y
148CONFIG_CLEAN_COMPILE=y
149CONFIG_BROKEN_ON_SMP=y 149CONFIG_BROKEN_ON_SMP=y
150CONFIG_INIT_ENV_ARG_LIMIT=32 150CONFIG_INIT_ENV_ARG_LIMIT=32
151 151
@@ -162,6 +162,7 @@ CONFIG_SYSCTL=y
162# CONFIG_AUDIT is not set 162# CONFIG_AUDIT is not set
163CONFIG_IKCONFIG=y 163CONFIG_IKCONFIG=y
164CONFIG_IKCONFIG_PROC=y 164CONFIG_IKCONFIG_PROC=y
165CONFIG_RELAY=y
165CONFIG_INITRAMFS_SOURCE="" 166CONFIG_INITRAMFS_SOURCE=""
166# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 167# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
167CONFIG_EMBEDDED=y 168CONFIG_EMBEDDED=y
@@ -175,10 +176,6 @@ CONFIG_BASE_FULL=y
175# CONFIG_FUTEX is not set 176# CONFIG_FUTEX is not set
176# CONFIG_EPOLL is not set 177# CONFIG_EPOLL is not set
177CONFIG_SHMEM=y 178CONFIG_SHMEM=y
178CONFIG_CC_ALIGN_FUNCTIONS=0
179CONFIG_CC_ALIGN_LABELS=0
180CONFIG_CC_ALIGN_LOOPS=0
181CONFIG_CC_ALIGN_JUMPS=0
182CONFIG_SLAB=y 179CONFIG_SLAB=y
183# CONFIG_TINY_SHMEM is not set 180# CONFIG_TINY_SHMEM is not set
184CONFIG_BASE_SMALL=0 181CONFIG_BASE_SMALL=0
@@ -190,7 +187,6 @@ CONFIG_OBSOLETE_INTERMODULE=y
190# 187#
191CONFIG_MODULES=y 188CONFIG_MODULES=y
192# CONFIG_MODULE_UNLOAD is not set 189# CONFIG_MODULE_UNLOAD is not set
193CONFIG_OBSOLETE_MODPARM=y
194# CONFIG_MODVERSIONS is not set 190# CONFIG_MODVERSIONS is not set
195# CONFIG_MODULE_SRCVERSION_ALL is not set 191# CONFIG_MODULE_SRCVERSION_ALL is not set
196CONFIG_KMOD=y 192CONFIG_KMOD=y
@@ -199,6 +195,8 @@ CONFIG_KMOD=y
199# Block layer 195# Block layer
200# 196#
201# CONFIG_LBD is not set 197# CONFIG_LBD is not set
198# CONFIG_BLK_DEV_IO_TRACE is not set
199# CONFIG_LSF is not set
202 200
203# 201#
204# IO Schedulers 202# IO Schedulers
@@ -218,7 +216,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
218# 216#
219CONFIG_HW_HAS_PCI=y 217CONFIG_HW_HAS_PCI=y
220CONFIG_PCI=y 218CONFIG_PCI=y
221# CONFIG_PCI_LEGACY_PROC is not set
222CONFIG_ISA=y 219CONFIG_ISA=y
223CONFIG_MMU=y 220CONFIG_MMU=y
224 221
@@ -247,6 +244,7 @@ CONFIG_NET=y
247# 244#
248# Networking options 245# Networking options
249# 246#
247# CONFIG_NETDEBUG is not set
250CONFIG_PACKET=y 248CONFIG_PACKET=y
251# CONFIG_PACKET_MMAP is not set 249# CONFIG_PACKET_MMAP is not set
252CONFIG_UNIX=y 250CONFIG_UNIX=y
@@ -267,6 +265,7 @@ CONFIG_IP_PNP_BOOTP=y
267# CONFIG_INET_AH is not set 265# CONFIG_INET_AH is not set
268# CONFIG_INET_ESP is not set 266# CONFIG_INET_ESP is not set
269# CONFIG_INET_IPCOMP is not set 267# CONFIG_INET_IPCOMP is not set
268# CONFIG_INET_XFRM_TUNNEL is not set
270# CONFIG_INET_TUNNEL is not set 269# CONFIG_INET_TUNNEL is not set
271CONFIG_INET_DIAG=y 270CONFIG_INET_DIAG=y
272CONFIG_INET_TCP_DIAG=y 271CONFIG_INET_TCP_DIAG=y
@@ -279,9 +278,12 @@ CONFIG_TCP_CONG_BIC=y
279# CONFIG_IP_VS is not set 278# CONFIG_IP_VS is not set
280CONFIG_IPV6=m 279CONFIG_IPV6=m
281# CONFIG_IPV6_PRIVACY is not set 280# CONFIG_IPV6_PRIVACY is not set
281CONFIG_IPV6_ROUTER_PREF=y
282CONFIG_IPV6_ROUTE_INFO=y
282# CONFIG_INET6_AH is not set 283# CONFIG_INET6_AH is not set
283# CONFIG_INET6_ESP is not set 284# CONFIG_INET6_ESP is not set
284# CONFIG_INET6_IPCOMP is not set 285# CONFIG_INET6_IPCOMP is not set
286# CONFIG_INET6_XFRM_TUNNEL is not set
285# CONFIG_INET6_TUNNEL is not set 287# CONFIG_INET6_TUNNEL is not set
286# CONFIG_IPV6_TUNNEL is not set 288# CONFIG_IPV6_TUNNEL is not set
287CONFIG_NETFILTER=y 289CONFIG_NETFILTER=y
@@ -300,10 +302,12 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
300CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 302CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
301CONFIG_NETFILTER_XT_MATCH_COMMENT=m 303CONFIG_NETFILTER_XT_MATCH_COMMENT=m
302CONFIG_NETFILTER_XT_MATCH_DCCP=m 304CONFIG_NETFILTER_XT_MATCH_DCCP=m
305CONFIG_NETFILTER_XT_MATCH_ESP=m
303CONFIG_NETFILTER_XT_MATCH_LENGTH=m 306CONFIG_NETFILTER_XT_MATCH_LENGTH=m
304CONFIG_NETFILTER_XT_MATCH_LIMIT=m 307CONFIG_NETFILTER_XT_MATCH_LIMIT=m
305CONFIG_NETFILTER_XT_MATCH_MAC=m 308CONFIG_NETFILTER_XT_MATCH_MAC=m
306CONFIG_NETFILTER_XT_MATCH_MARK=m 309CONFIG_NETFILTER_XT_MATCH_MARK=m
310CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
307CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 311CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
308CONFIG_NETFILTER_XT_MATCH_REALM=m 312CONFIG_NETFILTER_XT_MATCH_REALM=m
309CONFIG_NETFILTER_XT_MATCH_SCTP=m 313CONFIG_NETFILTER_XT_MATCH_SCTP=m
@@ -333,6 +337,11 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
333# SCTP Configuration (EXPERIMENTAL) 337# SCTP Configuration (EXPERIMENTAL)
334# 338#
335# CONFIG_IP_SCTP is not set 339# CONFIG_IP_SCTP is not set
340
341#
342# TIPC Configuration (EXPERIMENTAL)
343#
344# CONFIG_TIPC is not set
336# CONFIG_ATM is not set 345# CONFIG_ATM is not set
337# CONFIG_BRIDGE is not set 346# CONFIG_BRIDGE is not set
338# CONFIG_VLAN_8021Q is not set 347# CONFIG_VLAN_8021Q is not set
@@ -342,11 +351,6 @@ CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
342# CONFIG_ATALK is not set 351# CONFIG_ATALK is not set
343# CONFIG_X25 is not set 352# CONFIG_X25 is not set
344# CONFIG_LAPB is not set 353# CONFIG_LAPB is not set
345
346#
347# TIPC Configuration (EXPERIMENTAL)
348#
349# CONFIG_TIPC is not set
350# CONFIG_NET_DIVERT is not set 354# CONFIG_NET_DIVERT is not set
351# CONFIG_ECONET is not set 355# CONFIG_ECONET is not set
352# CONFIG_WAN_ROUTER is not set 356# CONFIG_WAN_ROUTER is not set
@@ -369,6 +373,9 @@ CONFIG_IEEE80211=m
369CONFIG_IEEE80211_CRYPT_WEP=m 373CONFIG_IEEE80211_CRYPT_WEP=m
370CONFIG_IEEE80211_CRYPT_CCMP=m 374CONFIG_IEEE80211_CRYPT_CCMP=m
371CONFIG_IEEE80211_CRYPT_TKIP=m 375CONFIG_IEEE80211_CRYPT_TKIP=m
376CONFIG_IEEE80211_SOFTMAC=m
377# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
378CONFIG_WIRELESS_EXT=y
372 379
373# 380#
374# Device Drivers 381# Device Drivers
@@ -425,7 +432,6 @@ CONFIG_MTD_CFI_I2=y
425# CONFIG_MTD_CFI_I8 is not set 432# CONFIG_MTD_CFI_I8 is not set
426CONFIG_MTD_CFI_INTELEXT=y 433CONFIG_MTD_CFI_INTELEXT=y
427CONFIG_MTD_CFI_AMDSTD=y 434CONFIG_MTD_CFI_AMDSTD=y
428CONFIG_MTD_CFI_AMDSTD_RETRY=0
429# CONFIG_MTD_CFI_STAA is not set 435# CONFIG_MTD_CFI_STAA is not set
430CONFIG_MTD_CFI_UTIL=y 436CONFIG_MTD_CFI_UTIL=y
431# CONFIG_MTD_RAM is not set 437# CONFIG_MTD_RAM is not set
@@ -447,7 +453,6 @@ CONFIG_MTD_CFI_UTIL=y
447# CONFIG_MTD_SLRAM is not set 453# CONFIG_MTD_SLRAM is not set
448# CONFIG_MTD_PHRAM is not set 454# CONFIG_MTD_PHRAM is not set
449# CONFIG_MTD_MTDRAM is not set 455# CONFIG_MTD_MTDRAM is not set
450# CONFIG_MTD_BLKMTD is not set
451# CONFIG_MTD_BLOCK2MTD is not set 456# CONFIG_MTD_BLOCK2MTD is not set
452 457
453# 458#
@@ -702,6 +707,7 @@ CONFIG_NET_PCI=y
702# Wireless LAN (non-hamradio) 707# Wireless LAN (non-hamradio)
703# 708#
704CONFIG_NET_RADIO=y 709CONFIG_NET_RADIO=y
710# CONFIG_NET_WIRELESS_RTNETLINK is not set
705 711
706# 712#
707# Obsolete Wireless cards support (pre-802.11) 713# Obsolete Wireless cards support (pre-802.11)
@@ -715,6 +721,8 @@ CONFIG_NET_RADIO=y
715# 721#
716# CONFIG_IPW2100 is not set 722# CONFIG_IPW2100 is not set
717CONFIG_IPW2200=m 723CONFIG_IPW2200=m
724# CONFIG_IPW2200_MONITOR is not set
725# CONFIG_IPW_QOS is not set
718# CONFIG_IPW2200_DEBUG is not set 726# CONFIG_IPW2200_DEBUG is not set
719# CONFIG_HERMES is not set 727# CONFIG_HERMES is not set
720# CONFIG_ATMEL is not set 728# CONFIG_ATMEL is not set
@@ -724,6 +732,7 @@ CONFIG_IPW2200=m
724# 732#
725# CONFIG_PRISM54 is not set 733# CONFIG_PRISM54 is not set
726# CONFIG_HOSTAP is not set 734# CONFIG_HOSTAP is not set
735# CONFIG_BCM43XX is not set
727CONFIG_NET_WIRELESS=y 736CONFIG_NET_WIRELESS=y
728 737
729# 738#
@@ -821,7 +830,12 @@ CONFIG_HW_CONSOLE=y
821# 830#
822# Non-8250 serial port support 831# Non-8250 serial port support
823# 832#
833CONFIG_SERIAL_CORE=y
834CONFIG_SERIAL_TXX9=y
824CONFIG_HAS_TXX9_SERIAL=y 835CONFIG_HAS_TXX9_SERIAL=y
836# CONFIG_SERIAL_TXX9_CONSOLE is not set
837# CONFIG_SERIAL_TXX9_STDSERIAL is not set
838# CONFIG_SERIAL_JSM is not set
825CONFIG_UNIX98_PTYS=y 839CONFIG_UNIX98_PTYS=y
826CONFIG_LEGACY_PTYS=y 840CONFIG_LEGACY_PTYS=y
827CONFIG_LEGACY_PTY_COUNT=256 841CONFIG_LEGACY_PTY_COUNT=256
@@ -874,6 +888,7 @@ CONFIG_LEGACY_PTY_COUNT=256
874# 888#
875CONFIG_HWMON=y 889CONFIG_HWMON=y
876# CONFIG_HWMON_VID is not set 890# CONFIG_HWMON_VID is not set
891# CONFIG_SENSORS_F71805F is not set
877# CONFIG_HWMON_DEBUG_CHIP is not set 892# CONFIG_HWMON_DEBUG_CHIP is not set
878 893
879# 894#
@@ -881,10 +896,6 @@ CONFIG_HWMON=y
881# 896#
882 897
883# 898#
884# Multimedia Capabilities Port drivers
885#
886
887#
888# Multimedia devices 899# Multimedia devices
889# 900#
890# CONFIG_VIDEO_DEV is not set 901# CONFIG_VIDEO_DEV is not set
@@ -893,6 +904,7 @@ CONFIG_HWMON=y
893# Digital Video Broadcasting Devices 904# Digital Video Broadcasting Devices
894# 905#
895# CONFIG_DVB is not set 906# CONFIG_DVB is not set
907# CONFIG_USB_DABUSB is not set
896 908
897# 909#
898# Graphics support 910# Graphics support
@@ -902,6 +914,7 @@ CONFIG_FB_CFB_FILLRECT=y
902CONFIG_FB_CFB_COPYAREA=y 914CONFIG_FB_CFB_COPYAREA=y
903CONFIG_FB_CFB_IMAGEBLIT=y 915CONFIG_FB_CFB_IMAGEBLIT=y
904# CONFIG_FB_MACMODES is not set 916# CONFIG_FB_MACMODES is not set
917CONFIG_FB_FIRMWARE_EDID=y
905# CONFIG_FB_MODE_HELPERS is not set 918# CONFIG_FB_MODE_HELPERS is not set
906# CONFIG_FB_TILEBLITTING is not set 919# CONFIG_FB_TILEBLITTING is not set
907# CONFIG_FB_CIRRUS is not set 920# CONFIG_FB_CIRRUS is not set
@@ -913,7 +926,6 @@ CONFIG_FB_CFB_IMAGEBLIT=y
913# CONFIG_FB_NVIDIA is not set 926# CONFIG_FB_NVIDIA is not set
914# CONFIG_FB_RIVA is not set 927# CONFIG_FB_RIVA is not set
915# CONFIG_FB_MATROX is not set 928# CONFIG_FB_MATROX is not set
916# CONFIG_FB_RADEON_OLD is not set
917# CONFIG_FB_RADEON is not set 929# CONFIG_FB_RADEON is not set
918# CONFIG_FB_ATY128 is not set 930# CONFIG_FB_ATY128 is not set
919CONFIG_FB_ATY=y 931CONFIG_FB_ATY=y
@@ -934,6 +946,7 @@ CONFIG_FB_ATY_CT=y
934# Console display driver support 946# Console display driver support
935# 947#
936CONFIG_VGA_CONSOLE=y 948CONFIG_VGA_CONSOLE=y
949# CONFIG_VGACON_SOFT_SCROLLBACK is not set
937# CONFIG_MDA_CONSOLE is not set 950# CONFIG_MDA_CONSOLE is not set
938CONFIG_DUMMY_CONSOLE=y 951CONFIG_DUMMY_CONSOLE=y
939# CONFIG_FRAMEBUFFER_CONSOLE is not set 952# CONFIG_FRAMEBUFFER_CONSOLE is not set
@@ -954,6 +967,7 @@ CONFIG_DUMMY_CONSOLE=y
954# 967#
955CONFIG_USB_ARCH_HAS_HCD=y 968CONFIG_USB_ARCH_HAS_HCD=y
956CONFIG_USB_ARCH_HAS_OHCI=y 969CONFIG_USB_ARCH_HAS_OHCI=y
970CONFIG_USB_ARCH_HAS_EHCI=y
957CONFIG_USB=y 971CONFIG_USB=y
958# CONFIG_USB_DEBUG is not set 972# CONFIG_USB_DEBUG is not set
959 973
@@ -1003,9 +1017,7 @@ CONFIG_USB_HIDDEV=y
1003# CONFIG_USB_ACECAD is not set 1017# CONFIG_USB_ACECAD is not set
1004# CONFIG_USB_KBTAB is not set 1018# CONFIG_USB_KBTAB is not set
1005# CONFIG_USB_POWERMATE is not set 1019# CONFIG_USB_POWERMATE is not set
1006# CONFIG_USB_MTOUCH is not set 1020# CONFIG_USB_TOUCHSCREEN is not set
1007# CONFIG_USB_ITMTOUCH is not set
1008# CONFIG_USB_EGALAX is not set
1009CONFIG_USB_YEALINK=m 1021CONFIG_USB_YEALINK=m
1010# CONFIG_USB_XPAD is not set 1022# CONFIG_USB_XPAD is not set
1011# CONFIG_USB_ATI_REMOTE is not set 1023# CONFIG_USB_ATI_REMOTE is not set
@@ -1019,15 +1031,6 @@ CONFIG_USB_YEALINK=m
1019# CONFIG_USB_MDC800 is not set 1031# CONFIG_USB_MDC800 is not set
1020 1032
1021# 1033#
1022# USB Multimedia devices
1023#
1024# CONFIG_USB_DABUSB is not set
1025
1026#
1027# Video4Linux support is needed for USB Multimedia device support
1028#
1029
1030#
1031# USB Network Adapters 1034# USB Network Adapters
1032# 1035#
1033# CONFIG_USB_CATC is not set 1036# CONFIG_USB_CATC is not set
@@ -1078,13 +1081,31 @@ CONFIG_USB_MON=y
1078# CONFIG_MMC is not set 1081# CONFIG_MMC is not set
1079 1082
1080# 1083#
1084# LED devices
1085#
1086# CONFIG_NEW_LEDS is not set
1087
1088#
1089# LED drivers
1090#
1091
1092#
1093# LED Triggers
1094#
1095
1096#
1081# InfiniBand support 1097# InfiniBand support
1082# 1098#
1083# CONFIG_INFINIBAND is not set 1099# CONFIG_INFINIBAND is not set
1084 1100
1085# 1101#
1086# SN Devices 1102# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1103#
1104
1105#
1106# Real Time Clock
1087# 1107#
1108# CONFIG_RTC_CLASS is not set
1088 1109
1089# 1110#
1090# File systems 1111# File systems
@@ -1148,7 +1169,6 @@ CONFIG_SYSFS=y
1148CONFIG_TMPFS=y 1169CONFIG_TMPFS=y
1149# CONFIG_HUGETLB_PAGE is not set 1170# CONFIG_HUGETLB_PAGE is not set
1150CONFIG_RAMFS=y 1171CONFIG_RAMFS=y
1151CONFIG_RELAYFS_FS=m
1152# CONFIG_CONFIGFS_FS is not set 1172# CONFIG_CONFIGFS_FS is not set
1153 1173
1154# 1174#
@@ -1266,6 +1286,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1266# CONFIG_MAGIC_SYSRQ is not set 1286# CONFIG_MAGIC_SYSRQ is not set
1267# CONFIG_DEBUG_KERNEL is not set 1287# CONFIG_DEBUG_KERNEL is not set
1268CONFIG_LOG_BUF_SHIFT=14 1288CONFIG_LOG_BUF_SHIFT=14
1289# CONFIG_DEBUG_FS is not set
1269CONFIG_CROSSCOMPILE=y 1290CONFIG_CROSSCOMPILE=y
1270CONFIG_CMDLINE="" 1291CONFIG_CMDLINE=""
1271 1292
diff --git a/arch/mips/configs/rm200_defconfig b/arch/mips/configs/rm200_defconfig
index 463ed3dbf6ae..edfb9679a25a 100644
--- a/arch/mips/configs/rm200_defconfig
+++ b/arch/mips/configs/rm200_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:31 2006 4# Mon Apr 24 14:51:16 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_SNI_RM200_PCI=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_ARC=y 70CONFIG_ARC=y
69CONFIG_ARCH_MAY_HAVE_PC_FDC=y 71CONFIG_ARCH_MAY_HAVE_PC_FDC=y
@@ -122,7 +124,6 @@ CONFIG_PAGE_SIZE_4KB=y
122# CONFIG_PAGE_SIZE_64KB is not set 124# CONFIG_PAGE_SIZE_64KB is not set
123# CONFIG_MIPS_MT is not set 125# CONFIG_MIPS_MT is not set
124# CONFIG_64BIT_PHYS_ADDR is not set 126# CONFIG_64BIT_PHYS_ADDR is not set
125# CONFIG_CPU_ADVANCED is not set
126CONFIG_CPU_HAS_LLSC=y 127CONFIG_CPU_HAS_LLSC=y
127CONFIG_CPU_HAS_SYNC=y 128CONFIG_CPU_HAS_SYNC=y
128CONFIG_GENERIC_HARDIRQS=y 129CONFIG_GENERIC_HARDIRQS=y
@@ -145,7 +146,6 @@ CONFIG_PREEMPT_VOLUNTARY=y
145# Code maturity level options 146# Code maturity level options
146# 147#
147CONFIG_EXPERIMENTAL=y 148CONFIG_EXPERIMENTAL=y
148CONFIG_CLEAN_COMPILE=y
149CONFIG_BROKEN_ON_SMP=y 149CONFIG_BROKEN_ON_SMP=y
150CONFIG_INIT_ENV_ARG_LIMIT=32 150CONFIG_INIT_ENV_ARG_LIMIT=32
151 151
@@ -163,6 +163,7 @@ CONFIG_SYSCTL=y
163# CONFIG_AUDIT is not set 163# CONFIG_AUDIT is not set
164CONFIG_IKCONFIG=y 164CONFIG_IKCONFIG=y
165CONFIG_IKCONFIG_PROC=y 165CONFIG_IKCONFIG_PROC=y
166CONFIG_RELAY=y
166CONFIG_INITRAMFS_SOURCE="" 167CONFIG_INITRAMFS_SOURCE=""
167# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 168# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
168CONFIG_EMBEDDED=y 169CONFIG_EMBEDDED=y
@@ -176,10 +177,6 @@ CONFIG_BASE_FULL=y
176CONFIG_FUTEX=y 177CONFIG_FUTEX=y
177CONFIG_EPOLL=y 178CONFIG_EPOLL=y
178CONFIG_SHMEM=y 179CONFIG_SHMEM=y
179CONFIG_CC_ALIGN_FUNCTIONS=0
180CONFIG_CC_ALIGN_LABELS=0
181CONFIG_CC_ALIGN_LOOPS=0
182CONFIG_CC_ALIGN_JUMPS=0
183CONFIG_SLAB=y 180CONFIG_SLAB=y
184# CONFIG_TINY_SHMEM is not set 181# CONFIG_TINY_SHMEM is not set
185CONFIG_BASE_SMALL=0 182CONFIG_BASE_SMALL=0
@@ -191,7 +188,6 @@ CONFIG_BASE_SMALL=0
191CONFIG_MODULES=y 188CONFIG_MODULES=y
192CONFIG_MODULE_UNLOAD=y 189CONFIG_MODULE_UNLOAD=y
193# CONFIG_MODULE_FORCE_UNLOAD is not set 190# CONFIG_MODULE_FORCE_UNLOAD is not set
194CONFIG_OBSOLETE_MODPARM=y
195CONFIG_MODVERSIONS=y 191CONFIG_MODVERSIONS=y
196# CONFIG_MODULE_SRCVERSION_ALL is not set 192# CONFIG_MODULE_SRCVERSION_ALL is not set
197CONFIG_KMOD=y 193CONFIG_KMOD=y
@@ -200,6 +196,8 @@ CONFIG_KMOD=y
200# Block layer 196# Block layer
201# 197#
202# CONFIG_LBD is not set 198# CONFIG_LBD is not set
199# CONFIG_BLK_DEV_IO_TRACE is not set
200# CONFIG_LSF is not set
203 201
204# 202#
205# IO Schedulers 203# IO Schedulers
@@ -220,10 +218,10 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
220CONFIG_HW_HAS_EISA=y 218CONFIG_HW_HAS_EISA=y
221CONFIG_HW_HAS_PCI=y 219CONFIG_HW_HAS_PCI=y
222CONFIG_PCI=y 220CONFIG_PCI=y
223CONFIG_PCI_LEGACY_PROC=y
224CONFIG_ISA=y 221CONFIG_ISA=y
225# CONFIG_EISA is not set 222# CONFIG_EISA is not set
226CONFIG_MMU=y 223CONFIG_MMU=y
224CONFIG_I8253=y
227 225
228# 226#
229# PCCARD (PCMCIA/CardBus) support 227# PCCARD (PCMCIA/CardBus) support
@@ -250,6 +248,7 @@ CONFIG_NET=y
250# 248#
251# Networking options 249# Networking options
252# 250#
251# CONFIG_NETDEBUG is not set
253CONFIG_PACKET=m 252CONFIG_PACKET=m
254CONFIG_PACKET_MMAP=y 253CONFIG_PACKET_MMAP=y
255CONFIG_UNIX=y 254CONFIG_UNIX=y
@@ -272,6 +271,7 @@ CONFIG_IP_PIMSM_V2=y
272# CONFIG_INET_AH is not set 271# CONFIG_INET_AH is not set
273# CONFIG_INET_ESP is not set 272# CONFIG_INET_ESP is not set
274# CONFIG_INET_IPCOMP is not set 273# CONFIG_INET_IPCOMP is not set
274# CONFIG_INET_XFRM_TUNNEL is not set
275CONFIG_INET_TUNNEL=m 275CONFIG_INET_TUNNEL=m
276CONFIG_INET_DIAG=y 276CONFIG_INET_DIAG=y
277CONFIG_INET_TCP_DIAG=y 277CONFIG_INET_TCP_DIAG=y
@@ -284,9 +284,12 @@ CONFIG_TCP_CONG_BIC=y
284# CONFIG_IP_VS is not set 284# CONFIG_IP_VS is not set
285CONFIG_IPV6=m 285CONFIG_IPV6=m
286CONFIG_IPV6_PRIVACY=y 286CONFIG_IPV6_PRIVACY=y
287CONFIG_IPV6_ROUTER_PREF=y
288CONFIG_IPV6_ROUTE_INFO=y
287CONFIG_INET6_AH=m 289CONFIG_INET6_AH=m
288CONFIG_INET6_ESP=m 290CONFIG_INET6_ESP=m
289CONFIG_INET6_IPCOMP=m 291CONFIG_INET6_IPCOMP=m
292CONFIG_INET6_XFRM_TUNNEL=m
290CONFIG_INET6_TUNNEL=m 293CONFIG_INET6_TUNNEL=m
291CONFIG_IPV6_TUNNEL=m 294CONFIG_IPV6_TUNNEL=m
292CONFIG_NETFILTER=y 295CONFIG_NETFILTER=y
@@ -309,11 +312,14 @@ CONFIG_NETFILTER_XT_MATCH_COMMENT=m
309CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 312CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
310CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 313CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
311CONFIG_NETFILTER_XT_MATCH_DCCP=m 314CONFIG_NETFILTER_XT_MATCH_DCCP=m
315CONFIG_NETFILTER_XT_MATCH_ESP=m
312CONFIG_NETFILTER_XT_MATCH_HELPER=m 316CONFIG_NETFILTER_XT_MATCH_HELPER=m
313CONFIG_NETFILTER_XT_MATCH_LENGTH=m 317CONFIG_NETFILTER_XT_MATCH_LENGTH=m
314CONFIG_NETFILTER_XT_MATCH_LIMIT=m 318CONFIG_NETFILTER_XT_MATCH_LIMIT=m
315CONFIG_NETFILTER_XT_MATCH_MAC=m 319CONFIG_NETFILTER_XT_MATCH_MAC=m
316CONFIG_NETFILTER_XT_MATCH_MARK=m 320CONFIG_NETFILTER_XT_MATCH_MARK=m
321CONFIG_NETFILTER_XT_MATCH_POLICY=m
322CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
317CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m 323CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
318CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 324CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
319CONFIG_NETFILTER_XT_MATCH_REALM=m 325CONFIG_NETFILTER_XT_MATCH_REALM=m
@@ -337,20 +343,19 @@ CONFIG_IP_NF_IRC=m
337CONFIG_IP_NF_TFTP=m 343CONFIG_IP_NF_TFTP=m
338CONFIG_IP_NF_AMANDA=m 344CONFIG_IP_NF_AMANDA=m
339CONFIG_IP_NF_PPTP=m 345CONFIG_IP_NF_PPTP=m
346CONFIG_IP_NF_H323=m
340CONFIG_IP_NF_QUEUE=m 347CONFIG_IP_NF_QUEUE=m
341CONFIG_IP_NF_IPTABLES=m 348CONFIG_IP_NF_IPTABLES=m
342CONFIG_IP_NF_MATCH_IPRANGE=m 349CONFIG_IP_NF_MATCH_IPRANGE=m
343CONFIG_IP_NF_MATCH_MULTIPORT=m
344CONFIG_IP_NF_MATCH_TOS=m 350CONFIG_IP_NF_MATCH_TOS=m
345CONFIG_IP_NF_MATCH_RECENT=m 351CONFIG_IP_NF_MATCH_RECENT=m
346CONFIG_IP_NF_MATCH_ECN=m 352CONFIG_IP_NF_MATCH_ECN=m
347CONFIG_IP_NF_MATCH_DSCP=m 353CONFIG_IP_NF_MATCH_DSCP=m
348CONFIG_IP_NF_MATCH_AH_ESP=m 354CONFIG_IP_NF_MATCH_AH=m
349CONFIG_IP_NF_MATCH_TTL=m 355CONFIG_IP_NF_MATCH_TTL=m
350CONFIG_IP_NF_MATCH_OWNER=m 356CONFIG_IP_NF_MATCH_OWNER=m
351CONFIG_IP_NF_MATCH_ADDRTYPE=m 357CONFIG_IP_NF_MATCH_ADDRTYPE=m
352CONFIG_IP_NF_MATCH_HASHLIMIT=m 358CONFIG_IP_NF_MATCH_HASHLIMIT=m
353CONFIG_IP_NF_MATCH_POLICY=m
354CONFIG_IP_NF_FILTER=m 359CONFIG_IP_NF_FILTER=m
355CONFIG_IP_NF_TARGET_REJECT=m 360CONFIG_IP_NF_TARGET_REJECT=m
356CONFIG_IP_NF_TARGET_LOG=m 361CONFIG_IP_NF_TARGET_LOG=m
@@ -368,6 +373,7 @@ CONFIG_IP_NF_NAT_FTP=m
368CONFIG_IP_NF_NAT_TFTP=m 373CONFIG_IP_NF_NAT_TFTP=m
369CONFIG_IP_NF_NAT_AMANDA=m 374CONFIG_IP_NF_NAT_AMANDA=m
370CONFIG_IP_NF_NAT_PPTP=m 375CONFIG_IP_NF_NAT_PPTP=m
376CONFIG_IP_NF_NAT_H323=m
371CONFIG_IP_NF_MANGLE=m 377CONFIG_IP_NF_MANGLE=m
372CONFIG_IP_NF_TARGET_TOS=m 378CONFIG_IP_NF_TARGET_TOS=m
373CONFIG_IP_NF_TARGET_ECN=m 379CONFIG_IP_NF_TARGET_ECN=m
@@ -388,12 +394,10 @@ CONFIG_IP6_NF_MATCH_RT=m
388CONFIG_IP6_NF_MATCH_OPTS=m 394CONFIG_IP6_NF_MATCH_OPTS=m
389CONFIG_IP6_NF_MATCH_FRAG=m 395CONFIG_IP6_NF_MATCH_FRAG=m
390CONFIG_IP6_NF_MATCH_HL=m 396CONFIG_IP6_NF_MATCH_HL=m
391CONFIG_IP6_NF_MATCH_MULTIPORT=m
392CONFIG_IP6_NF_MATCH_OWNER=m 397CONFIG_IP6_NF_MATCH_OWNER=m
393CONFIG_IP6_NF_MATCH_IPV6HEADER=m 398CONFIG_IP6_NF_MATCH_IPV6HEADER=m
394CONFIG_IP6_NF_MATCH_AHESP=m 399CONFIG_IP6_NF_MATCH_AH=m
395CONFIG_IP6_NF_MATCH_EUI64=m 400CONFIG_IP6_NF_MATCH_EUI64=m
396CONFIG_IP6_NF_MATCH_POLICY=m
397CONFIG_IP6_NF_FILTER=m 401CONFIG_IP6_NF_FILTER=m
398CONFIG_IP6_NF_TARGET_LOG=m 402CONFIG_IP6_NF_TARGET_LOG=m
399CONFIG_IP6_NF_TARGET_REJECT=m 403CONFIG_IP6_NF_TARGET_REJECT=m
@@ -439,21 +443,22 @@ CONFIG_BRIDGE_EBT_ULOG=m
439# SCTP Configuration (EXPERIMENTAL) 443# SCTP Configuration (EXPERIMENTAL)
440# 444#
441# CONFIG_IP_SCTP is not set 445# CONFIG_IP_SCTP is not set
446
447#
448# TIPC Configuration (EXPERIMENTAL)
449#
450# CONFIG_TIPC is not set
442# CONFIG_ATM is not set 451# CONFIG_ATM is not set
443CONFIG_BRIDGE=m 452CONFIG_BRIDGE=m
444# CONFIG_VLAN_8021Q is not set 453# CONFIG_VLAN_8021Q is not set
445CONFIG_DECNET=m 454CONFIG_DECNET=m
446# CONFIG_DECNET_ROUTER is not set 455# CONFIG_DECNET_ROUTER is not set
456CONFIG_LLC=m
447# CONFIG_LLC2 is not set 457# CONFIG_LLC2 is not set
448# CONFIG_IPX is not set 458# CONFIG_IPX is not set
449# CONFIG_ATALK is not set 459# CONFIG_ATALK is not set
450# CONFIG_X25 is not set 460# CONFIG_X25 is not set
451# CONFIG_LAPB is not set 461# CONFIG_LAPB is not set
452
453#
454# TIPC Configuration (EXPERIMENTAL)
455#
456# CONFIG_TIPC is not set
457# CONFIG_NET_DIVERT is not set 462# CONFIG_NET_DIVERT is not set
458# CONFIG_ECONET is not set 463# CONFIG_ECONET is not set
459# CONFIG_WAN_ROUTER is not set 464# CONFIG_WAN_ROUTER is not set
@@ -533,6 +538,9 @@ CONFIG_IEEE80211=m
533# CONFIG_IEEE80211_DEBUG is not set 538# CONFIG_IEEE80211_DEBUG is not set
534CONFIG_IEEE80211_CRYPT_WEP=m 539CONFIG_IEEE80211_CRYPT_WEP=m
535CONFIG_IEEE80211_CRYPT_CCMP=m 540CONFIG_IEEE80211_CRYPT_CCMP=m
541CONFIG_IEEE80211_SOFTMAC=m
542# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
543CONFIG_WIRELESS_EXT=y
536 544
537# 545#
538# Device Drivers 546# Device Drivers
@@ -620,6 +628,7 @@ CONFIG_BLK_DEV_UB=m
620CONFIG_BLK_DEV_RAM=m 628CONFIG_BLK_DEV_RAM=m
621CONFIG_BLK_DEV_RAM_COUNT=16 629CONFIG_BLK_DEV_RAM_COUNT=16
622CONFIG_BLK_DEV_RAM_SIZE=4096 630CONFIG_BLK_DEV_RAM_SIZE=4096
631# CONFIG_BLK_DEV_INITRD is not set
623CONFIG_CDROM_PKTCDVD=m 632CONFIG_CDROM_PKTCDVD=m
624CONFIG_CDROM_PKTCDVD_BUFFERS=8 633CONFIG_CDROM_PKTCDVD_BUFFERS=8
625# CONFIG_CDROM_PKTCDVD_WCACHE is not set 634# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -700,12 +709,11 @@ CONFIG_SCSI_SYM53C8XX_2=y
700CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 709CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
701CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 710CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
702CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 711CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
703# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set 712CONFIG_SCSI_SYM53C8XX_MMIO=y
704# CONFIG_SCSI_IPR is not set 713# CONFIG_SCSI_IPR is not set
705# CONFIG_SCSI_PAS16 is not set 714# CONFIG_SCSI_PAS16 is not set
706# CONFIG_SCSI_PSI240I is not set 715# CONFIG_SCSI_PSI240I is not set
707# CONFIG_SCSI_QLOGIC_FAS is not set 716# CONFIG_SCSI_QLOGIC_FAS is not set
708# CONFIG_SCSI_QLOGIC_FC is not set
709# CONFIG_SCSI_QLOGIC_1280 is not set 717# CONFIG_SCSI_QLOGIC_1280 is not set
710# CONFIG_SCSI_QLA_FC is not set 718# CONFIG_SCSI_QLA_FC is not set
711# CONFIG_SCSI_LPFC is not set 719# CONFIG_SCSI_LPFC is not set
@@ -731,6 +739,7 @@ CONFIG_MD_RAID0=m
731CONFIG_MD_RAID1=m 739CONFIG_MD_RAID1=m
732CONFIG_MD_RAID10=m 740CONFIG_MD_RAID10=m
733CONFIG_MD_RAID5=m 741CONFIG_MD_RAID5=m
742CONFIG_MD_RAID5_RESHAPE=y
734# CONFIG_MD_RAID6 is not set 743# CONFIG_MD_RAID6 is not set
735CONFIG_MD_MULTIPATH=m 744CONFIG_MD_MULTIPATH=m
736CONFIG_MD_FAULTY=m 745CONFIG_MD_FAULTY=m
@@ -965,6 +974,7 @@ CONFIG_HW_CONSOLE=y
965# Serial drivers 974# Serial drivers
966# 975#
967CONFIG_SERIAL_8250=m 976CONFIG_SERIAL_8250=m
977CONFIG_SERIAL_8250_PCI=m
968CONFIG_SERIAL_8250_NR_UARTS=4 978CONFIG_SERIAL_8250_NR_UARTS=4
969CONFIG_SERIAL_8250_RUNTIME_UARTS=4 979CONFIG_SERIAL_8250_RUNTIME_UARTS=4
970CONFIG_SERIAL_8250_EXTENDED=y 980CONFIG_SERIAL_8250_EXTENDED=y
@@ -977,6 +987,7 @@ CONFIG_SERIAL_8250_RSA=y
977# Non-8250 serial port support 987# Non-8250 serial port support
978# 988#
979CONFIG_SERIAL_CORE=m 989CONFIG_SERIAL_CORE=m
990# CONFIG_SERIAL_JSM is not set
980CONFIG_UNIX98_PTYS=y 991CONFIG_UNIX98_PTYS=y
981CONFIG_LEGACY_PTYS=y 992CONFIG_LEGACY_PTYS=y
982CONFIG_LEGACY_PTY_COUNT=256 993CONFIG_LEGACY_PTY_COUNT=256
@@ -1027,12 +1038,19 @@ CONFIG_RTC=m
1027# Dallas's 1-wire bus 1038# Dallas's 1-wire bus
1028# 1039#
1029CONFIG_W1=m 1040CONFIG_W1=m
1030CONFIG_W1_MATROX=m 1041
1031CONFIG_W1_DS9490=m 1042#
1032# CONFIG_W1_DS9490_BRIDGE is not set 1043# 1-wire Bus Masters
1033CONFIG_W1_THERM=m 1044#
1034CONFIG_W1_SMEM=m 1045# CONFIG_W1_MASTER_MATROX is not set
1035# CONFIG_W1_DS2433 is not set 1046# CONFIG_W1_MASTER_DS9490 is not set
1047
1048#
1049# 1-wire Slaves
1050#
1051# CONFIG_W1_SLAVE_THERM is not set
1052# CONFIG_W1_SLAVE_SMEM is not set
1053# CONFIG_W1_SLAVE_DS2433 is not set
1036 1054
1037# 1055#
1038# Hardware Monitoring support 1056# Hardware Monitoring support
@@ -1045,10 +1063,6 @@ CONFIG_W1_SMEM=m
1045# 1063#
1046 1064
1047# 1065#
1048# Multimedia Capabilities Port drivers
1049#
1050
1051#
1052# Multimedia devices 1066# Multimedia devices
1053# 1067#
1054# CONFIG_VIDEO_DEV is not set 1068# CONFIG_VIDEO_DEV is not set
@@ -1057,6 +1071,7 @@ CONFIG_W1_SMEM=m
1057# Digital Video Broadcasting Devices 1071# Digital Video Broadcasting Devices
1058# 1072#
1059# CONFIG_DVB is not set 1073# CONFIG_DVB is not set
1074CONFIG_USB_DABUSB=m
1060 1075
1061# 1076#
1062# Graphics support 1077# Graphics support
@@ -1067,6 +1082,7 @@ CONFIG_W1_SMEM=m
1067# Console display driver support 1082# Console display driver support
1068# 1083#
1069CONFIG_VGA_CONSOLE=y 1084CONFIG_VGA_CONSOLE=y
1085# CONFIG_VGACON_SOFT_SCROLLBACK is not set
1070# CONFIG_MDA_CONSOLE is not set 1086# CONFIG_MDA_CONSOLE is not set
1071CONFIG_DUMMY_CONSOLE=y 1087CONFIG_DUMMY_CONSOLE=y
1072 1088
@@ -1080,6 +1096,7 @@ CONFIG_DUMMY_CONSOLE=y
1080# 1096#
1081CONFIG_USB_ARCH_HAS_HCD=y 1097CONFIG_USB_ARCH_HAS_HCD=y
1082CONFIG_USB_ARCH_HAS_OHCI=y 1098CONFIG_USB_ARCH_HAS_OHCI=y
1099CONFIG_USB_ARCH_HAS_EHCI=y
1083CONFIG_USB=m 1100CONFIG_USB=m
1084# CONFIG_USB_DEBUG is not set 1101# CONFIG_USB_DEBUG is not set
1085 1102
@@ -1151,9 +1168,7 @@ CONFIG_USB_WACOM=m
1151# CONFIG_USB_ACECAD is not set 1168# CONFIG_USB_ACECAD is not set
1152CONFIG_USB_KBTAB=m 1169CONFIG_USB_KBTAB=m
1153CONFIG_USB_POWERMATE=m 1170CONFIG_USB_POWERMATE=m
1154# CONFIG_USB_MTOUCH is not set 1171# CONFIG_USB_TOUCHSCREEN is not set
1155# CONFIG_USB_ITMTOUCH is not set
1156CONFIG_USB_EGALAX=m
1157CONFIG_USB_YEALINK=m 1172CONFIG_USB_YEALINK=m
1158CONFIG_USB_XPAD=m 1173CONFIG_USB_XPAD=m
1159# CONFIG_USB_ATI_REMOTE is not set 1174# CONFIG_USB_ATI_REMOTE is not set
@@ -1168,15 +1183,6 @@ CONFIG_USB_MDC800=m
1168CONFIG_USB_MICROTEK=m 1183CONFIG_USB_MICROTEK=m
1169 1184
1170# 1185#
1171# USB Multimedia devices
1172#
1173CONFIG_USB_DABUSB=m
1174
1175#
1176# Video4Linux support is needed for USB Multimedia device support
1177#
1178
1179#
1180# USB Network Adapters 1186# USB Network Adapters
1181# 1187#
1182CONFIG_USB_CATC=m 1188CONFIG_USB_CATC=m
@@ -1213,6 +1219,7 @@ CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
1213CONFIG_USB_SERIAL_CYPRESS_M8=m 1219CONFIG_USB_SERIAL_CYPRESS_M8=m
1214CONFIG_USB_SERIAL_EMPEG=m 1220CONFIG_USB_SERIAL_EMPEG=m
1215CONFIG_USB_SERIAL_FTDI_SIO=m 1221CONFIG_USB_SERIAL_FTDI_SIO=m
1222# CONFIG_USB_SERIAL_FUNSOFT is not set
1216CONFIG_USB_SERIAL_VISOR=m 1223CONFIG_USB_SERIAL_VISOR=m
1217CONFIG_USB_SERIAL_IPAQ=m 1224CONFIG_USB_SERIAL_IPAQ=m
1218CONFIG_USB_SERIAL_IR=m 1225CONFIG_USB_SERIAL_IR=m
@@ -1237,6 +1244,7 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
1237CONFIG_USB_SERIAL_KLSI=m 1244CONFIG_USB_SERIAL_KLSI=m
1238CONFIG_USB_SERIAL_KOBIL_SCT=m 1245CONFIG_USB_SERIAL_KOBIL_SCT=m
1239CONFIG_USB_SERIAL_MCT_U232=m 1246CONFIG_USB_SERIAL_MCT_U232=m
1247# CONFIG_USB_SERIAL_NAVMAN is not set
1240CONFIG_USB_SERIAL_PL2303=m 1248CONFIG_USB_SERIAL_PL2303=m
1241CONFIG_USB_SERIAL_HP4X=m 1249CONFIG_USB_SERIAL_HP4X=m
1242CONFIG_USB_SERIAL_SAFE=m 1250CONFIG_USB_SERIAL_SAFE=m
@@ -1281,13 +1289,31 @@ CONFIG_USB_TEST=m
1281# CONFIG_MMC is not set 1289# CONFIG_MMC is not set
1282 1290
1283# 1291#
1292# LED devices
1293#
1294# CONFIG_NEW_LEDS is not set
1295
1296#
1297# LED drivers
1298#
1299
1300#
1301# LED Triggers
1302#
1303
1304#
1284# InfiniBand support 1305# InfiniBand support
1285# 1306#
1286# CONFIG_INFINIBAND is not set 1307# CONFIG_INFINIBAND is not set
1287 1308
1288# 1309#
1289# SN Devices 1310# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
1311#
1312
1313#
1314# Real Time Clock
1290# 1315#
1316# CONFIG_RTC_CLASS is not set
1291 1317
1292# 1318#
1293# File systems 1319# File systems
@@ -1358,7 +1384,6 @@ CONFIG_SYSFS=y
1358# CONFIG_TMPFS is not set 1384# CONFIG_TMPFS is not set
1359# CONFIG_HUGETLB_PAGE is not set 1385# CONFIG_HUGETLB_PAGE is not set
1360CONFIG_RAMFS=y 1386CONFIG_RAMFS=y
1361CONFIG_RELAYFS_FS=m
1362# CONFIG_CONFIGFS_FS is not set 1387# CONFIG_CONFIGFS_FS is not set
1363 1388
1364# 1389#
@@ -1379,7 +1404,6 @@ CONFIG_HPFS_FS=m
1379CONFIG_QNX4FS_FS=m 1404CONFIG_QNX4FS_FS=m
1380CONFIG_SYSV_FS=m 1405CONFIG_SYSV_FS=m
1381CONFIG_UFS_FS=m 1406CONFIG_UFS_FS=m
1382# CONFIG_UFS_FS_WRITE is not set
1383 1407
1384# 1408#
1385# Network File Systems 1409# Network File Systems
@@ -1500,6 +1524,7 @@ CONFIG_NLS_UTF8=m
1500# CONFIG_MAGIC_SYSRQ is not set 1524# CONFIG_MAGIC_SYSRQ is not set
1501# CONFIG_DEBUG_KERNEL is not set 1525# CONFIG_DEBUG_KERNEL is not set
1502CONFIG_LOG_BUF_SHIFT=14 1526CONFIG_LOG_BUF_SHIFT=14
1527# CONFIG_DEBUG_FS is not set
1503CONFIG_CROSSCOMPILE=y 1528CONFIG_CROSSCOMPILE=y
1504CONFIG_CMDLINE="" 1529CONFIG_CMDLINE=""
1505 1530
diff --git a/arch/mips/configs/sb1250-swarm_defconfig b/arch/mips/configs/sb1250-swarm_defconfig
index da68c3f72050..e388a3dae0a9 100644
--- a/arch/mips/configs/sb1250-swarm_defconfig
+++ b/arch/mips/configs/sb1250-swarm_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:32 2006 4# Mon Apr 24 14:51:17 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -81,6 +81,8 @@ CONFIG_SIBYTE_CFE=y
81# CONFIG_SIBYTE_SB1250_PROF is not set 81# CONFIG_SIBYTE_SB1250_PROF is not set
82# CONFIG_SIBYTE_TBPROF is not set 82# CONFIG_SIBYTE_TBPROF is not set
83CONFIG_RWSEM_GENERIC_SPINLOCK=y 83CONFIG_RWSEM_GENERIC_SPINLOCK=y
84CONFIG_GENERIC_FIND_NEXT_BIT=y
85CONFIG_GENERIC_HWEIGHT=y
84CONFIG_GENERIC_CALIBRATE_DELAY=y 86CONFIG_GENERIC_CALIBRATE_DELAY=y
85CONFIG_DMA_COHERENT=y 87CONFIG_DMA_COHERENT=y
86CONFIG_CPU_BIG_ENDIAN=y 88CONFIG_CPU_BIG_ENDIAN=y
@@ -158,7 +160,6 @@ CONFIG_PREEMPT_BKL=y
158# Code maturity level options 160# Code maturity level options
159# 161#
160CONFIG_EXPERIMENTAL=y 162CONFIG_EXPERIMENTAL=y
161CONFIG_CLEAN_COMPILE=y
162CONFIG_LOCK_KERNEL=y 163CONFIG_LOCK_KERNEL=y
163CONFIG_INIT_ENV_ARG_LIMIT=32 164CONFIG_INIT_ENV_ARG_LIMIT=32
164 165
@@ -175,6 +176,7 @@ CONFIG_SYSCTL=y
175# CONFIG_AUDIT is not set 176# CONFIG_AUDIT is not set
176# CONFIG_IKCONFIG is not set 177# CONFIG_IKCONFIG is not set
177CONFIG_CPUSETS=y 178CONFIG_CPUSETS=y
179CONFIG_RELAY=y
178CONFIG_INITRAMFS_SOURCE="" 180CONFIG_INITRAMFS_SOURCE=""
179# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 181# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
180CONFIG_EMBEDDED=y 182CONFIG_EMBEDDED=y
@@ -188,10 +190,6 @@ CONFIG_BASE_FULL=y
188CONFIG_FUTEX=y 190CONFIG_FUTEX=y
189CONFIG_EPOLL=y 191CONFIG_EPOLL=y
190CONFIG_SHMEM=y 192CONFIG_SHMEM=y
191CONFIG_CC_ALIGN_FUNCTIONS=0
192CONFIG_CC_ALIGN_LABELS=0
193CONFIG_CC_ALIGN_LOOPS=0
194CONFIG_CC_ALIGN_JUMPS=0
195CONFIG_SLAB=y 193CONFIG_SLAB=y
196# CONFIG_TINY_SHMEM is not set 194# CONFIG_TINY_SHMEM is not set
197CONFIG_BASE_SMALL=0 195CONFIG_BASE_SMALL=0
@@ -203,7 +201,6 @@ CONFIG_BASE_SMALL=0
203CONFIG_MODULES=y 201CONFIG_MODULES=y
204CONFIG_MODULE_UNLOAD=y 202CONFIG_MODULE_UNLOAD=y
205# CONFIG_MODULE_FORCE_UNLOAD is not set 203# CONFIG_MODULE_FORCE_UNLOAD is not set
206CONFIG_OBSOLETE_MODPARM=y
207CONFIG_MODVERSIONS=y 204CONFIG_MODVERSIONS=y
208CONFIG_MODULE_SRCVERSION_ALL=y 205CONFIG_MODULE_SRCVERSION_ALL=y
209CONFIG_KMOD=y 206CONFIG_KMOD=y
@@ -212,6 +209,7 @@ CONFIG_STOP_MACHINE=y
212# 209#
213# Block layer 210# Block layer
214# 211#
212# CONFIG_BLK_DEV_IO_TRACE is not set
215 213
216# 214#
217# IO Schedulers 215# IO Schedulers
@@ -231,7 +229,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
231# 229#
232CONFIG_HW_HAS_PCI=y 230CONFIG_HW_HAS_PCI=y
233CONFIG_PCI=y 231CONFIG_PCI=y
234CONFIG_PCI_LEGACY_PROC=y
235CONFIG_MMU=y 232CONFIG_MMU=y
236 233
237# 234#
@@ -249,6 +246,7 @@ CONFIG_MMU=y
249# 246#
250CONFIG_BINFMT_ELF=y 247CONFIG_BINFMT_ELF=y
251# CONFIG_BINFMT_MISC is not set 248# CONFIG_BINFMT_MISC is not set
249# CONFIG_BUILD_ELF64 is not set
252CONFIG_MIPS32_COMPAT=y 250CONFIG_MIPS32_COMPAT=y
253CONFIG_COMPAT=y 251CONFIG_COMPAT=y
254CONFIG_MIPS32_O32=y 252CONFIG_MIPS32_O32=y
@@ -263,6 +261,7 @@ CONFIG_NET=y
263# 261#
264# Networking options 262# Networking options
265# 263#
264# CONFIG_NETDEBUG is not set
266CONFIG_PACKET=y 265CONFIG_PACKET=y
267CONFIG_PACKET_MMAP=y 266CONFIG_PACKET_MMAP=y
268CONFIG_UNIX=y 267CONFIG_UNIX=y
@@ -284,12 +283,15 @@ CONFIG_IP_PNP_BOOTP=y
284# CONFIG_INET_AH is not set 283# CONFIG_INET_AH is not set
285# CONFIG_INET_ESP is not set 284# CONFIG_INET_ESP is not set
286# CONFIG_INET_IPCOMP is not set 285# CONFIG_INET_IPCOMP is not set
287CONFIG_INET_TUNNEL=m 286# CONFIG_INET_XFRM_TUNNEL is not set
287# CONFIG_INET_TUNNEL is not set
288CONFIG_INET_DIAG=y 288CONFIG_INET_DIAG=y
289CONFIG_INET_TCP_DIAG=y 289CONFIG_INET_TCP_DIAG=y
290# CONFIG_TCP_CONG_ADVANCED is not set 290# CONFIG_TCP_CONG_ADVANCED is not set
291CONFIG_TCP_CONG_BIC=y 291CONFIG_TCP_CONG_BIC=y
292# CONFIG_IPV6 is not set 292# CONFIG_IPV6 is not set
293# CONFIG_INET6_XFRM_TUNNEL is not set
294# CONFIG_INET6_TUNNEL is not set
293# CONFIG_NETFILTER is not set 295# CONFIG_NETFILTER is not set
294 296
295# 297#
@@ -301,6 +303,11 @@ CONFIG_TCP_CONG_BIC=y
301# SCTP Configuration (EXPERIMENTAL) 303# SCTP Configuration (EXPERIMENTAL)
302# 304#
303# CONFIG_IP_SCTP is not set 305# CONFIG_IP_SCTP is not set
306
307#
308# TIPC Configuration (EXPERIMENTAL)
309#
310# CONFIG_TIPC is not set
304# CONFIG_ATM is not set 311# CONFIG_ATM is not set
305# CONFIG_BRIDGE is not set 312# CONFIG_BRIDGE is not set
306# CONFIG_VLAN_8021Q is not set 313# CONFIG_VLAN_8021Q is not set
@@ -310,11 +317,6 @@ CONFIG_TCP_CONG_BIC=y
310# CONFIG_ATALK is not set 317# CONFIG_ATALK is not set
311# CONFIG_X25 is not set 318# CONFIG_X25 is not set
312# CONFIG_LAPB is not set 319# CONFIG_LAPB is not set
313
314#
315# TIPC Configuration (EXPERIMENTAL)
316#
317# CONFIG_TIPC is not set
318# CONFIG_NET_DIVERT is not set 320# CONFIG_NET_DIVERT is not set
319# CONFIG_ECONET is not set 321# CONFIG_ECONET is not set
320# CONFIG_WAN_ROUTER is not set 322# CONFIG_WAN_ROUTER is not set
@@ -335,6 +337,9 @@ CONFIG_IEEE80211=m
335# CONFIG_IEEE80211_DEBUG is not set 337# CONFIG_IEEE80211_DEBUG is not set
336CONFIG_IEEE80211_CRYPT_WEP=m 338CONFIG_IEEE80211_CRYPT_WEP=m
337CONFIG_IEEE80211_CRYPT_CCMP=m 339CONFIG_IEEE80211_CRYPT_CCMP=m
340CONFIG_IEEE80211_SOFTMAC=m
341# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
342CONFIG_WIRELESS_EXT=y
338 343
339# 344#
340# Device Drivers 345# Device Drivers
@@ -589,6 +594,7 @@ CONFIG_SIBYTE_SB1250_DUART_CONSOLE=y
589# 594#
590# Non-8250 serial port support 595# Non-8250 serial port support
591# 596#
597# CONFIG_SERIAL_JSM is not set
592CONFIG_UNIX98_PTYS=y 598CONFIG_UNIX98_PTYS=y
593CONFIG_LEGACY_PTYS=y 599CONFIG_LEGACY_PTYS=y
594CONFIG_LEGACY_PTY_COUNT=256 600CONFIG_LEGACY_PTY_COUNT=256
@@ -647,10 +653,6 @@ CONFIG_LEGACY_PTY_COUNT=256
647# 653#
648 654
649# 655#
650# Multimedia Capabilities Port drivers
651#
652
653#
654# Multimedia devices 656# Multimedia devices
655# 657#
656# CONFIG_VIDEO_DEV is not set 658# CONFIG_VIDEO_DEV is not set
@@ -675,6 +677,7 @@ CONFIG_LEGACY_PTY_COUNT=256
675# 677#
676CONFIG_USB_ARCH_HAS_HCD=y 678CONFIG_USB_ARCH_HAS_HCD=y
677CONFIG_USB_ARCH_HAS_OHCI=y 679CONFIG_USB_ARCH_HAS_OHCI=y
680CONFIG_USB_ARCH_HAS_EHCI=y
678# CONFIG_USB is not set 681# CONFIG_USB is not set
679 682
680# 683#
@@ -692,13 +695,31 @@ CONFIG_USB_ARCH_HAS_OHCI=y
692# CONFIG_MMC is not set 695# CONFIG_MMC is not set
693 696
694# 697#
698# LED devices
699#
700# CONFIG_NEW_LEDS is not set
701
702#
703# LED drivers
704#
705
706#
707# LED Triggers
708#
709
710#
695# InfiniBand support 711# InfiniBand support
696# 712#
697# CONFIG_INFINIBAND is not set 713# CONFIG_INFINIBAND is not set
698 714
699# 715#
700# SN Devices 716# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
717#
718
719#
720# Real Time Clock
701# 721#
722# CONFIG_RTC_CLASS is not set
702 723
703# 724#
704# File systems 725# File systems
@@ -746,7 +767,6 @@ CONFIG_SYSFS=y
746# CONFIG_TMPFS is not set 767# CONFIG_TMPFS is not set
747# CONFIG_HUGETLB_PAGE is not set 768# CONFIG_HUGETLB_PAGE is not set
748CONFIG_RAMFS=y 769CONFIG_RAMFS=y
749CONFIG_RELAYFS_FS=m
750# CONFIG_CONFIGFS_FS is not set 770# CONFIG_CONFIGFS_FS is not set
751 771
752# 772#
@@ -812,6 +832,7 @@ CONFIG_MSDOS_PARTITION=y
812# CONFIG_MAGIC_SYSRQ is not set 832# CONFIG_MAGIC_SYSRQ is not set
813# CONFIG_DEBUG_KERNEL is not set 833# CONFIG_DEBUG_KERNEL is not set
814CONFIG_LOG_BUF_SHIFT=15 834CONFIG_LOG_BUF_SHIFT=15
835# CONFIG_DEBUG_FS is not set
815CONFIG_CROSSCOMPILE=y 836CONFIG_CROSSCOMPILE=y
816CONFIG_CMDLINE="" 837CONFIG_CMDLINE=""
817# CONFIG_SB1XXX_CORELIS is not set 838# CONFIG_SB1XXX_CORELIS is not set
diff --git a/arch/mips/configs/sead_defconfig b/arch/mips/configs/sead_defconfig
index 9a936d7b7c0c..6b8a6a416a25 100644
--- a/arch/mips/configs/sead_defconfig
+++ b/arch/mips/configs/sead_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:33 2006 4# Mon Apr 24 14:51:17 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_MIPS_SEAD=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_DMA_NONCOHERENT=y 70CONFIG_DMA_NONCOHERENT=y
69CONFIG_DMA_NEED_PCI_MAP_STATE=y 71CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -118,11 +120,11 @@ CONFIG_PAGE_SIZE_4KB=y
118CONFIG_CPU_HAS_PREFETCH=y 120CONFIG_CPU_HAS_PREFETCH=y
119# CONFIG_MIPS_MT is not set 121# CONFIG_MIPS_MT is not set
120# CONFIG_64BIT_PHYS_ADDR is not set 122# CONFIG_64BIT_PHYS_ADDR is not set
121# CONFIG_CPU_ADVANCED is not set
122CONFIG_CPU_HAS_LLSC=y 123CONFIG_CPU_HAS_LLSC=y
123CONFIG_CPU_HAS_SYNC=y 124CONFIG_CPU_HAS_SYNC=y
124CONFIG_GENERIC_HARDIRQS=y 125CONFIG_GENERIC_HARDIRQS=y
125CONFIG_GENERIC_IRQ_PROBE=y 126CONFIG_GENERIC_IRQ_PROBE=y
127CONFIG_CPU_SUPPORTS_HIGHMEM=y
126CONFIG_ARCH_FLATMEM_ENABLE=y 128CONFIG_ARCH_FLATMEM_ENABLE=y
127CONFIG_SELECT_MEMORY_MODEL=y 129CONFIG_SELECT_MEMORY_MODEL=y
128CONFIG_FLATMEM_MANUAL=y 130CONFIG_FLATMEM_MANUAL=y
@@ -140,7 +142,6 @@ CONFIG_PREEMPT_NONE=y
140# Code maturity level options 142# Code maturity level options
141# 143#
142CONFIG_EXPERIMENTAL=y 144CONFIG_EXPERIMENTAL=y
143CONFIG_CLEAN_COMPILE=y
144CONFIG_BROKEN_ON_SMP=y 145CONFIG_BROKEN_ON_SMP=y
145CONFIG_INIT_ENV_ARG_LIMIT=32 146CONFIG_INIT_ENV_ARG_LIMIT=32
146 147
@@ -154,6 +155,7 @@ CONFIG_SYSVIPC=y
154# CONFIG_BSD_PROCESS_ACCT is not set 155# CONFIG_BSD_PROCESS_ACCT is not set
155CONFIG_SYSCTL=y 156CONFIG_SYSCTL=y
156# CONFIG_IKCONFIG is not set 157# CONFIG_IKCONFIG is not set
158CONFIG_RELAY=y
157CONFIG_INITRAMFS_SOURCE="" 159CONFIG_INITRAMFS_SOURCE=""
158# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 160# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
159CONFIG_EMBEDDED=y 161CONFIG_EMBEDDED=y
@@ -167,10 +169,6 @@ CONFIG_BASE_FULL=y
167CONFIG_FUTEX=y 169CONFIG_FUTEX=y
168CONFIG_EPOLL=y 170CONFIG_EPOLL=y
169CONFIG_SHMEM=y 171CONFIG_SHMEM=y
170CONFIG_CC_ALIGN_FUNCTIONS=0
171CONFIG_CC_ALIGN_LABELS=0
172CONFIG_CC_ALIGN_LOOPS=0
173CONFIG_CC_ALIGN_JUMPS=0
174CONFIG_SLAB=y 172CONFIG_SLAB=y
175# CONFIG_TINY_SHMEM is not set 173# CONFIG_TINY_SHMEM is not set
176CONFIG_BASE_SMALL=0 174CONFIG_BASE_SMALL=0
@@ -185,6 +183,8 @@ CONFIG_BASE_SMALL=0
185# Block layer 183# Block layer
186# 184#
187# CONFIG_LBD is not set 185# CONFIG_LBD is not set
186# CONFIG_BLK_DEV_IO_TRACE is not set
187# CONFIG_LSF is not set
188 188
189# 189#
190# IO Schedulers 190# IO Schedulers
@@ -296,12 +296,6 @@ CONFIG_RAID_ATTRS=y
296# 296#
297 297
298# 298#
299# Network device support
300#
301# CONFIG_NETPOLL is not set
302# CONFIG_NET_POLL_CONTROLLER is not set
303
304#
305# ISDN subsystem 299# ISDN subsystem
306# 300#
307 301
@@ -397,10 +391,6 @@ CONFIG_LEGACY_PTY_COUNT=256
397# 391#
398 392
399# 393#
400# Multimedia Capabilities Port drivers
401#
402
403#
404# Multimedia devices 394# Multimedia devices
405# 395#
406# CONFIG_VIDEO_DEV is not set 396# CONFIG_VIDEO_DEV is not set
@@ -424,6 +414,7 @@ CONFIG_LEGACY_PTY_COUNT=256
424# 414#
425# CONFIG_USB_ARCH_HAS_HCD is not set 415# CONFIG_USB_ARCH_HAS_HCD is not set
426# CONFIG_USB_ARCH_HAS_OHCI is not set 416# CONFIG_USB_ARCH_HAS_OHCI is not set
417# CONFIG_USB_ARCH_HAS_EHCI is not set
427 418
428# 419#
429# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 420# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -440,12 +431,30 @@ CONFIG_LEGACY_PTY_COUNT=256
440# CONFIG_MMC is not set 431# CONFIG_MMC is not set
441 432
442# 433#
434# LED devices
435#
436# CONFIG_NEW_LEDS is not set
437
438#
439# LED drivers
440#
441
442#
443# LED Triggers
444#
445
446#
443# InfiniBand support 447# InfiniBand support
444# 448#
445 449
446# 450#
447# SN Devices 451# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
452#
453
454#
455# Real Time Clock
448# 456#
457# CONFIG_RTC_CLASS is not set
449 458
450# 459#
451# File systems 460# File systems
@@ -489,7 +498,6 @@ CONFIG_SYSFS=y
489# CONFIG_TMPFS is not set 498# CONFIG_TMPFS is not set
490# CONFIG_HUGETLB_PAGE is not set 499# CONFIG_HUGETLB_PAGE is not set
491CONFIG_RAMFS=y 500CONFIG_RAMFS=y
492CONFIG_RELAYFS_FS=y
493# CONFIG_CONFIGFS_FS is not set 501# CONFIG_CONFIGFS_FS is not set
494 502
495# 503#
@@ -543,6 +551,8 @@ CONFIG_PARTITION_ADVANCED=y
543# CONFIG_MAGIC_SYSRQ is not set 551# CONFIG_MAGIC_SYSRQ is not set
544# CONFIG_DEBUG_KERNEL is not set 552# CONFIG_DEBUG_KERNEL is not set
545CONFIG_LOG_BUF_SHIFT=14 553CONFIG_LOG_BUF_SHIFT=14
554# CONFIG_DEBUG_FS is not set
555# CONFIG_UNWIND_INFO is not set
546CONFIG_CROSSCOMPILE=y 556CONFIG_CROSSCOMPILE=y
547CONFIG_CMDLINE="" 557CONFIG_CMDLINE=""
548 558
diff --git a/arch/mips/configs/tb0226_defconfig b/arch/mips/configs/tb0226_defconfig
index c2dee0d1c72c..dba0bdcdcf29 100644
--- a/arch/mips/configs/tb0226_defconfig
+++ b/arch/mips/configs/tb0226_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:34 2006 4# Tue Apr 25 00:08:41 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -68,12 +68,14 @@ CONFIG_MACH_VR41XX=y
68# CONFIG_NEC_CMBVR4133 is not set 68# CONFIG_NEC_CMBVR4133 is not set
69CONFIG_TANBAC_TB022X=y 69CONFIG_TANBAC_TB022X=y
70CONFIG_TANBAC_TB0226=y 70CONFIG_TANBAC_TB0226=y
71CONFIG_TANBAC_TB0287=y 71# CONFIG_TANBAC_TB0287 is not set
72# CONFIG_VICTOR_MPC30X is not set 72# CONFIG_VICTOR_MPC30X is not set
73# CONFIG_ZAO_CAPCELLA is not set 73# CONFIG_ZAO_CAPCELLA is not set
74CONFIG_PCI_VR41XX=y 74CONFIG_PCI_VR41XX=y
75# CONFIG_VRC4173 is not set 75# CONFIG_VRC4173 is not set
76CONFIG_RWSEM_GENERIC_SPINLOCK=y 76CONFIG_RWSEM_GENERIC_SPINLOCK=y
77CONFIG_GENERIC_FIND_NEXT_BIT=y
78CONFIG_GENERIC_HWEIGHT=y
77CONFIG_GENERIC_CALIBRATE_DELAY=y 79CONFIG_GENERIC_CALIBRATE_DELAY=y
78CONFIG_DMA_NONCOHERENT=y 80CONFIG_DMA_NONCOHERENT=y
79CONFIG_DMA_NEED_PCI_MAP_STATE=y 81CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -92,7 +94,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
92# CONFIG_CPU_MIPS64_R2 is not set 94# CONFIG_CPU_MIPS64_R2 is not set
93# CONFIG_CPU_R3000 is not set 95# CONFIG_CPU_R3000 is not set
94# CONFIG_CPU_TX39XX is not set 96# CONFIG_CPU_TX39XX is not set
95# CONFIG_CPU_VR41XX is not set 97CONFIG_CPU_VR41XX=y
96# CONFIG_CPU_R4300 is not set 98# CONFIG_CPU_R4300 is not set
97# CONFIG_CPU_R4X00 is not set 99# CONFIG_CPU_R4X00 is not set
98# CONFIG_CPU_TX49XX is not set 100# CONFIG_CPU_TX49XX is not set
@@ -105,18 +107,21 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
105# CONFIG_CPU_RM7000 is not set 107# CONFIG_CPU_RM7000 is not set
106# CONFIG_CPU_RM9000 is not set 108# CONFIG_CPU_RM9000 is not set
107# CONFIG_CPU_SB1 is not set 109# CONFIG_CPU_SB1 is not set
110CONFIG_SYS_HAS_CPU_VR41XX=y
111CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
112CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
113CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
108 114
109# 115#
110# Kernel type 116# Kernel type
111# 117#
112# CONFIG_32BIT is not set 118CONFIG_32BIT=y
113# CONFIG_64BIT is not set 119# CONFIG_64BIT is not set
114CONFIG_PAGE_SIZE_4KB=y 120CONFIG_PAGE_SIZE_4KB=y
115# CONFIG_PAGE_SIZE_8KB is not set 121# CONFIG_PAGE_SIZE_8KB is not set
116# CONFIG_PAGE_SIZE_16KB is not set 122# CONFIG_PAGE_SIZE_16KB is not set
117# CONFIG_PAGE_SIZE_64KB is not set 123# CONFIG_PAGE_SIZE_64KB is not set
118# CONFIG_MIPS_MT is not set 124# CONFIG_MIPS_MT is not set
119CONFIG_CPU_HAS_LLSC=y
120CONFIG_CPU_HAS_SYNC=y 125CONFIG_CPU_HAS_SYNC=y
121CONFIG_GENERIC_HARDIRQS=y 126CONFIG_GENERIC_HARDIRQS=y
122CONFIG_GENERIC_IRQ_PROBE=y 127CONFIG_GENERIC_IRQ_PROBE=y
@@ -137,7 +142,6 @@ CONFIG_PREEMPT_NONE=y
137# Code maturity level options 142# Code maturity level options
138# 143#
139CONFIG_EXPERIMENTAL=y 144CONFIG_EXPERIMENTAL=y
140CONFIG_CLEAN_COMPILE=y
141CONFIG_BROKEN_ON_SMP=y 145CONFIG_BROKEN_ON_SMP=y
142CONFIG_INIT_ENV_ARG_LIMIT=32 146CONFIG_INIT_ENV_ARG_LIMIT=32
143 147
@@ -153,6 +157,7 @@ CONFIG_SYSVIPC=y
153CONFIG_SYSCTL=y 157CONFIG_SYSCTL=y
154# CONFIG_AUDIT is not set 158# CONFIG_AUDIT is not set
155# CONFIG_IKCONFIG is not set 159# CONFIG_IKCONFIG is not set
160# CONFIG_RELAY is not set
156CONFIG_INITRAMFS_SOURCE="" 161CONFIG_INITRAMFS_SOURCE=""
157# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 162# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
158CONFIG_EMBEDDED=y 163CONFIG_EMBEDDED=y
@@ -166,10 +171,6 @@ CONFIG_BASE_FULL=y
166CONFIG_FUTEX=y 171CONFIG_FUTEX=y
167CONFIG_EPOLL=y 172CONFIG_EPOLL=y
168CONFIG_SHMEM=y 173CONFIG_SHMEM=y
169CONFIG_CC_ALIGN_FUNCTIONS=0
170CONFIG_CC_ALIGN_LABELS=0
171CONFIG_CC_ALIGN_LOOPS=0
172CONFIG_CC_ALIGN_JUMPS=0
173CONFIG_SLAB=y 174CONFIG_SLAB=y
174# CONFIG_TINY_SHMEM is not set 175# CONFIG_TINY_SHMEM is not set
175CONFIG_BASE_SMALL=0 176CONFIG_BASE_SMALL=0
@@ -181,7 +182,6 @@ CONFIG_BASE_SMALL=0
181CONFIG_MODULES=y 182CONFIG_MODULES=y
182CONFIG_MODULE_UNLOAD=y 183CONFIG_MODULE_UNLOAD=y
183# CONFIG_MODULE_FORCE_UNLOAD is not set 184# CONFIG_MODULE_FORCE_UNLOAD is not set
184CONFIG_OBSOLETE_MODPARM=y
185CONFIG_MODVERSIONS=y 185CONFIG_MODVERSIONS=y
186CONFIG_MODULE_SRCVERSION_ALL=y 186CONFIG_MODULE_SRCVERSION_ALL=y
187CONFIG_KMOD=y 187CONFIG_KMOD=y
@@ -189,6 +189,9 @@ CONFIG_KMOD=y
189# 189#
190# Block layer 190# Block layer
191# 191#
192# CONFIG_LBD is not set
193# CONFIG_BLK_DEV_IO_TRACE is not set
194# CONFIG_LSF is not set
192 195
193# 196#
194# IO Schedulers 197# IO Schedulers
@@ -208,7 +211,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
208# 211#
209CONFIG_HW_HAS_PCI=y 212CONFIG_HW_HAS_PCI=y
210CONFIG_PCI=y 213CONFIG_PCI=y
211# CONFIG_PCI_LEGACY_PROC is not set
212CONFIG_MMU=y 214CONFIG_MMU=y
213 215
214# 216#
@@ -226,6 +228,7 @@ CONFIG_MMU=y
226# 228#
227CONFIG_BINFMT_ELF=y 229CONFIG_BINFMT_ELF=y
228# CONFIG_BINFMT_MISC is not set 230# CONFIG_BINFMT_MISC is not set
231CONFIG_TRAD_SIGNALS=y
229 232
230# 233#
231# Networking 234# Networking
@@ -235,11 +238,10 @@ CONFIG_NET=y
235# 238#
236# Networking options 239# Networking options
237# 240#
241# CONFIG_NETDEBUG is not set
238CONFIG_PACKET=y 242CONFIG_PACKET=y
239# CONFIG_PACKET_MMAP is not set 243# CONFIG_PACKET_MMAP is not set
240CONFIG_UNIX=y 244CONFIG_UNIX=y
241CONFIG_XFRM=y
242CONFIG_XFRM_USER=m
243# CONFIG_NET_KEY is not set 245# CONFIG_NET_KEY is not set
244CONFIG_INET=y 246CONFIG_INET=y
245CONFIG_IP_MULTICAST=y 247CONFIG_IP_MULTICAST=y
@@ -263,12 +265,15 @@ CONFIG_SYN_COOKIES=y
263# CONFIG_INET_AH is not set 265# CONFIG_INET_AH is not set
264# CONFIG_INET_ESP is not set 266# CONFIG_INET_ESP is not set
265# CONFIG_INET_IPCOMP is not set 267# CONFIG_INET_IPCOMP is not set
266CONFIG_INET_TUNNEL=m 268# CONFIG_INET_XFRM_TUNNEL is not set
269# CONFIG_INET_TUNNEL is not set
267CONFIG_INET_DIAG=y 270CONFIG_INET_DIAG=y
268CONFIG_INET_TCP_DIAG=y 271CONFIG_INET_TCP_DIAG=y
269# CONFIG_TCP_CONG_ADVANCED is not set 272# CONFIG_TCP_CONG_ADVANCED is not set
270CONFIG_TCP_CONG_BIC=y 273CONFIG_TCP_CONG_BIC=y
271# CONFIG_IPV6 is not set 274# CONFIG_IPV6 is not set
275# CONFIG_INET6_XFRM_TUNNEL is not set
276# CONFIG_INET6_TUNNEL is not set
272# CONFIG_NETFILTER is not set 277# CONFIG_NETFILTER is not set
273 278
274# 279#
@@ -280,6 +285,11 @@ CONFIG_TCP_CONG_BIC=y
280# SCTP Configuration (EXPERIMENTAL) 285# SCTP Configuration (EXPERIMENTAL)
281# 286#
282# CONFIG_IP_SCTP is not set 287# CONFIG_IP_SCTP is not set
288
289#
290# TIPC Configuration (EXPERIMENTAL)
291#
292# CONFIG_TIPC is not set
283# CONFIG_ATM is not set 293# CONFIG_ATM is not set
284# CONFIG_BRIDGE is not set 294# CONFIG_BRIDGE is not set
285# CONFIG_VLAN_8021Q is not set 295# CONFIG_VLAN_8021Q is not set
@@ -289,11 +299,6 @@ CONFIG_TCP_CONG_BIC=y
289# CONFIG_ATALK is not set 299# CONFIG_ATALK is not set
290# CONFIG_X25 is not set 300# CONFIG_X25 is not set
291# CONFIG_LAPB is not set 301# CONFIG_LAPB is not set
292
293#
294# TIPC Configuration (EXPERIMENTAL)
295#
296# CONFIG_TIPC is not set
297# CONFIG_NET_DIVERT is not set 302# CONFIG_NET_DIVERT is not set
298# CONFIG_ECONET is not set 303# CONFIG_ECONET is not set
299# CONFIG_WAN_ROUTER is not set 304# CONFIG_WAN_ROUTER is not set
@@ -310,10 +315,7 @@ CONFIG_TCP_CONG_BIC=y
310# CONFIG_HAMRADIO is not set 315# CONFIG_HAMRADIO is not set
311# CONFIG_IRDA is not set 316# CONFIG_IRDA is not set
312# CONFIG_BT is not set 317# CONFIG_BT is not set
313CONFIG_IEEE80211=m 318# CONFIG_IEEE80211 is not set
314# CONFIG_IEEE80211_DEBUG is not set
315CONFIG_IEEE80211_CRYPT_WEP=m
316CONFIG_IEEE80211_CRYPT_CCMP=m
317 319
318# 320#
319# Device Drivers 321# Device Drivers
@@ -358,11 +360,12 @@ CONFIG_BLK_DEV_LOOP=m
358CONFIG_BLK_DEV_NBD=m 360CONFIG_BLK_DEV_NBD=m
359# CONFIG_BLK_DEV_SX8 is not set 361# CONFIG_BLK_DEV_SX8 is not set
360# CONFIG_BLK_DEV_UB is not set 362# CONFIG_BLK_DEV_UB is not set
361CONFIG_BLK_DEV_RAM=m 363CONFIG_BLK_DEV_RAM=y
362CONFIG_BLK_DEV_RAM_COUNT=16 364CONFIG_BLK_DEV_RAM_COUNT=16
363CONFIG_BLK_DEV_RAM_SIZE=4096 365CONFIG_BLK_DEV_RAM_SIZE=4096
366# CONFIG_BLK_DEV_INITRD is not set
364# CONFIG_CDROM_PKTCDVD is not set 367# CONFIG_CDROM_PKTCDVD is not set
365CONFIG_ATA_OVER_ETH=m 368# CONFIG_ATA_OVER_ETH is not set
366 369
367# 370#
368# ATA/ATAPI/MFM/RLL support 371# ATA/ATAPI/MFM/RLL support
@@ -397,14 +400,14 @@ CONFIG_SCSI_MULTI_LUN=y
397# SCSI Transport Attributes 400# SCSI Transport Attributes
398# 401#
399# CONFIG_SCSI_SPI_ATTRS is not set 402# CONFIG_SCSI_SPI_ATTRS is not set
400CONFIG_SCSI_FC_ATTRS=y 403# CONFIG_SCSI_FC_ATTRS is not set
401CONFIG_SCSI_ISCSI_ATTRS=m 404# CONFIG_SCSI_ISCSI_ATTRS is not set
402# CONFIG_SCSI_SAS_ATTRS is not set 405# CONFIG_SCSI_SAS_ATTRS is not set
403 406
404# 407#
405# SCSI low-level drivers 408# SCSI low-level drivers
406# 409#
407CONFIG_ISCSI_TCP=m 410# CONFIG_ISCSI_TCP is not set
408# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 411# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
409# CONFIG_SCSI_3W_9XXX is not set 412# CONFIG_SCSI_3W_9XXX is not set
410# CONFIG_SCSI_ACARD is not set 413# CONFIG_SCSI_ACARD is not set
@@ -424,7 +427,6 @@ CONFIG_ISCSI_TCP=m
424# CONFIG_SCSI_INIA100 is not set 427# CONFIG_SCSI_INIA100 is not set
425# CONFIG_SCSI_SYM53C8XX_2 is not set 428# CONFIG_SCSI_SYM53C8XX_2 is not set
426# CONFIG_SCSI_IPR is not set 429# CONFIG_SCSI_IPR is not set
427# CONFIG_SCSI_QLOGIC_FC is not set
428# CONFIG_SCSI_QLOGIC_1280 is not set 430# CONFIG_SCSI_QLOGIC_1280 is not set
429# CONFIG_SCSI_QLA_FC is not set 431# CONFIG_SCSI_QLA_FC is not set
430# CONFIG_SCSI_LPFC is not set 432# CONFIG_SCSI_LPFC is not set
@@ -507,8 +509,8 @@ CONFIG_NET_PCI=y
507# CONFIG_B44 is not set 509# CONFIG_B44 is not set
508# CONFIG_FORCEDETH is not set 510# CONFIG_FORCEDETH is not set
509# CONFIG_DGRS is not set 511# CONFIG_DGRS is not set
510CONFIG_EEPRO100=y 512# CONFIG_EEPRO100 is not set
511# CONFIG_E100 is not set 513CONFIG_E100=y
512# CONFIG_FEALNX is not set 514# CONFIG_FEALNX is not set
513# CONFIG_NATSEMI is not set 515# CONFIG_NATSEMI is not set
514# CONFIG_NE2K_PCI is not set 516# CONFIG_NE2K_PCI is not set
@@ -625,6 +627,11 @@ CONFIG_HW_CONSOLE=y
625# 627#
626# Non-8250 serial port support 628# Non-8250 serial port support
627# 629#
630CONFIG_SERIAL_CORE=y
631CONFIG_SERIAL_CORE_CONSOLE=y
632CONFIG_SERIAL_VR41XX=y
633CONFIG_SERIAL_VR41XX_CONSOLE=y
634# CONFIG_SERIAL_JSM is not set
628CONFIG_UNIX98_PTYS=y 635CONFIG_UNIX98_PTYS=y
629CONFIG_LEGACY_PTYS=y 636CONFIG_LEGACY_PTYS=y
630CONFIG_LEGACY_PTY_COUNT=256 637CONFIG_LEGACY_PTY_COUNT=256
@@ -685,10 +692,6 @@ CONFIG_GPIO_VR41XX=y
685# 692#
686 693
687# 694#
688# Multimedia Capabilities Port drivers
689#
690
691#
692# Multimedia devices 695# Multimedia devices
693# 696#
694# CONFIG_VIDEO_DEV is not set 697# CONFIG_VIDEO_DEV is not set
@@ -697,6 +700,7 @@ CONFIG_GPIO_VR41XX=y
697# Digital Video Broadcasting Devices 700# Digital Video Broadcasting Devices
698# 701#
699# CONFIG_DVB is not set 702# CONFIG_DVB is not set
703# CONFIG_USB_DABUSB is not set
700 704
701# 705#
702# Graphics support 706# Graphics support
@@ -719,6 +723,7 @@ CONFIG_DUMMY_CONSOLE=y
719# 723#
720CONFIG_USB_ARCH_HAS_HCD=y 724CONFIG_USB_ARCH_HAS_HCD=y
721CONFIG_USB_ARCH_HAS_OHCI=y 725CONFIG_USB_ARCH_HAS_OHCI=y
726CONFIG_USB_ARCH_HAS_EHCI=y
722CONFIG_USB=y 727CONFIG_USB=y
723# CONFIG_USB_DEBUG is not set 728# CONFIG_USB_DEBUG is not set
724 729
@@ -756,7 +761,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
756# 761#
757# may also be needed; see USB_STORAGE Help for more information 762# may also be needed; see USB_STORAGE Help for more information
758# 763#
759CONFIG_USB_STORAGE=m 764CONFIG_USB_STORAGE=y
760# CONFIG_USB_STORAGE_DEBUG is not set 765# CONFIG_USB_STORAGE_DEBUG is not set
761# CONFIG_USB_STORAGE_DATAFAB is not set 766# CONFIG_USB_STORAGE_DATAFAB is not set
762# CONFIG_USB_STORAGE_FREECOM is not set 767# CONFIG_USB_STORAGE_FREECOM is not set
@@ -783,9 +788,7 @@ CONFIG_USB_STORAGE=m
783# CONFIG_USB_ACECAD is not set 788# CONFIG_USB_ACECAD is not set
784# CONFIG_USB_KBTAB is not set 789# CONFIG_USB_KBTAB is not set
785# CONFIG_USB_POWERMATE is not set 790# CONFIG_USB_POWERMATE is not set
786# CONFIG_USB_MTOUCH is not set 791# CONFIG_USB_TOUCHSCREEN is not set
787# CONFIG_USB_ITMTOUCH is not set
788# CONFIG_USB_EGALAX is not set
789# CONFIG_USB_YEALINK is not set 792# CONFIG_USB_YEALINK is not set
790# CONFIG_USB_XPAD is not set 793# CONFIG_USB_XPAD is not set
791# CONFIG_USB_ATI_REMOTE is not set 794# CONFIG_USB_ATI_REMOTE is not set
@@ -800,15 +803,6 @@ CONFIG_USB_STORAGE=m
800# CONFIG_USB_MICROTEK is not set 803# CONFIG_USB_MICROTEK is not set
801 804
802# 805#
803# USB Multimedia devices
804#
805# CONFIG_USB_DABUSB is not set
806
807#
808# Video4Linux support is needed for USB Multimedia device support
809#
810
811#
812# USB Network Adapters 806# USB Network Adapters
813# 807#
814# CONFIG_USB_CATC is not set 808# CONFIG_USB_CATC is not set
@@ -816,7 +810,7 @@ CONFIG_USB_STORAGE=m
816# CONFIG_USB_PEGASUS is not set 810# CONFIG_USB_PEGASUS is not set
817# CONFIG_USB_RTL8150 is not set 811# CONFIG_USB_RTL8150 is not set
818# CONFIG_USB_USBNET is not set 812# CONFIG_USB_USBNET is not set
819CONFIG_USB_MON=y 813# CONFIG_USB_MON is not set
820 814
821# 815#
822# USB port drivers 816# USB port drivers
@@ -860,13 +854,48 @@ CONFIG_USB_MON=y
860# CONFIG_MMC is not set 854# CONFIG_MMC is not set
861 855
862# 856#
857# LED devices
858#
859# CONFIG_NEW_LEDS is not set
860
861#
862# LED drivers
863#
864
865#
866# LED Triggers
867#
868
869#
863# InfiniBand support 870# InfiniBand support
864# 871#
865# CONFIG_INFINIBAND is not set 872# CONFIG_INFINIBAND is not set
866 873
867# 874#
868# SN Devices 875# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
876#
877
878#
879# Real Time Clock
880#
881CONFIG_RTC_LIB=y
882CONFIG_RTC_CLASS=y
883CONFIG_RTC_HCTOSYS=y
884CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
885
886#
887# RTC interfaces
888#
889CONFIG_RTC_INTF_SYSFS=y
890CONFIG_RTC_INTF_PROC=y
891CONFIG_RTC_INTF_DEV=y
892
893#
894# RTC drivers
869# 895#
896# CONFIG_RTC_DRV_M48T86 is not set
897CONFIG_RTC_DRV_VR41XX=y
898# CONFIG_RTC_DRV_TEST is not set
870 899
871# 900#
872# File systems 901# File systems
@@ -911,7 +940,6 @@ CONFIG_SYSFS=y
911CONFIG_TMPFS=y 940CONFIG_TMPFS=y
912# CONFIG_HUGETLB_PAGE is not set 941# CONFIG_HUGETLB_PAGE is not set
913CONFIG_RAMFS=y 942CONFIG_RAMFS=y
914CONFIG_RELAYFS_FS=m
915# CONFIG_CONFIGFS_FS is not set 943# CONFIG_CONFIGFS_FS is not set
916 944
917# 945#
@@ -952,9 +980,7 @@ CONFIG_NFS_COMMON=y
952CONFIG_SUNRPC=y 980CONFIG_SUNRPC=y
953# CONFIG_RPCSEC_GSS_KRB5 is not set 981# CONFIG_RPCSEC_GSS_KRB5 is not set
954# CONFIG_RPCSEC_GSS_SPKM3 is not set 982# CONFIG_RPCSEC_GSS_SPKM3 is not set
955CONFIG_SMB_FS=m 983# CONFIG_SMB_FS is not set
956CONFIG_SMB_NLS_DEFAULT=y
957CONFIG_SMB_NLS_REMOTE="cp932"
958# CONFIG_CIFS is not set 984# CONFIG_CIFS is not set
959# CONFIG_NCP_FS is not set 985# CONFIG_NCP_FS is not set
960# CONFIG_CODA_FS is not set 986# CONFIG_CODA_FS is not set
@@ -970,46 +996,7 @@ CONFIG_MSDOS_PARTITION=y
970# 996#
971# Native Language Support 997# Native Language Support
972# 998#
973CONFIG_NLS=y 999# CONFIG_NLS is not set
974CONFIG_NLS_DEFAULT="iso8859-1"
975CONFIG_NLS_CODEPAGE_437=m
976# CONFIG_NLS_CODEPAGE_737 is not set
977# CONFIG_NLS_CODEPAGE_775 is not set
978# CONFIG_NLS_CODEPAGE_850 is not set
979# CONFIG_NLS_CODEPAGE_852 is not set
980# CONFIG_NLS_CODEPAGE_855 is not set
981# CONFIG_NLS_CODEPAGE_857 is not set
982# CONFIG_NLS_CODEPAGE_860 is not set
983# CONFIG_NLS_CODEPAGE_861 is not set
984# CONFIG_NLS_CODEPAGE_862 is not set
985# CONFIG_NLS_CODEPAGE_863 is not set
986# CONFIG_NLS_CODEPAGE_864 is not set
987# CONFIG_NLS_CODEPAGE_865 is not set
988# CONFIG_NLS_CODEPAGE_866 is not set
989# CONFIG_NLS_CODEPAGE_869 is not set
990# CONFIG_NLS_CODEPAGE_936 is not set
991# CONFIG_NLS_CODEPAGE_950 is not set
992CONFIG_NLS_CODEPAGE_932=m
993# CONFIG_NLS_CODEPAGE_949 is not set
994# CONFIG_NLS_CODEPAGE_874 is not set
995# CONFIG_NLS_ISO8859_8 is not set
996# CONFIG_NLS_CODEPAGE_1250 is not set
997# CONFIG_NLS_CODEPAGE_1251 is not set
998# CONFIG_NLS_ASCII is not set
999CONFIG_NLS_ISO8859_1=m
1000# CONFIG_NLS_ISO8859_2 is not set
1001# CONFIG_NLS_ISO8859_3 is not set
1002# CONFIG_NLS_ISO8859_4 is not set
1003# CONFIG_NLS_ISO8859_5 is not set
1004# CONFIG_NLS_ISO8859_6 is not set
1005# CONFIG_NLS_ISO8859_7 is not set
1006# CONFIG_NLS_ISO8859_9 is not set
1007# CONFIG_NLS_ISO8859_13 is not set
1008# CONFIG_NLS_ISO8859_14 is not set
1009# CONFIG_NLS_ISO8859_15 is not set
1010# CONFIG_NLS_KOI8_R is not set
1011# CONFIG_NLS_KOI8_U is not set
1012# CONFIG_NLS_UTF8 is not set
1013 1000
1014# 1001#
1015# Profiling support 1002# Profiling support
@@ -1023,44 +1010,20 @@ CONFIG_NLS_ISO8859_1=m
1023# CONFIG_MAGIC_SYSRQ is not set 1010# CONFIG_MAGIC_SYSRQ is not set
1024# CONFIG_DEBUG_KERNEL is not set 1011# CONFIG_DEBUG_KERNEL is not set
1025CONFIG_LOG_BUF_SHIFT=14 1012CONFIG_LOG_BUF_SHIFT=14
1013# CONFIG_DEBUG_FS is not set
1026CONFIG_CROSSCOMPILE=y 1014CONFIG_CROSSCOMPILE=y
1027CONFIG_CMDLINE="mem=32M console=ttyVR0,115200" 1015CONFIG_CMDLINE="mem=32M console=ttyVR0,115200"
1028 1016
1029# 1017#
1030# Security options 1018# Security options
1031# 1019#
1032CONFIG_KEYS=y 1020# CONFIG_KEYS is not set
1033CONFIG_KEYS_DEBUG_PROC_KEYS=y
1034# CONFIG_SECURITY is not set 1021# CONFIG_SECURITY is not set
1035 1022
1036# 1023#
1037# Cryptographic options 1024# Cryptographic options
1038# 1025#
1039CONFIG_CRYPTO=y 1026# CONFIG_CRYPTO is not set
1040CONFIG_CRYPTO_HMAC=y
1041CONFIG_CRYPTO_NULL=m
1042CONFIG_CRYPTO_MD4=m
1043CONFIG_CRYPTO_MD5=m
1044CONFIG_CRYPTO_SHA1=m
1045CONFIG_CRYPTO_SHA256=m
1046CONFIG_CRYPTO_SHA512=m
1047CONFIG_CRYPTO_WP512=m
1048CONFIG_CRYPTO_TGR192=m
1049CONFIG_CRYPTO_DES=m
1050CONFIG_CRYPTO_BLOWFISH=m
1051CONFIG_CRYPTO_TWOFISH=m
1052CONFIG_CRYPTO_SERPENT=m
1053CONFIG_CRYPTO_AES=m
1054CONFIG_CRYPTO_CAST5=m
1055CONFIG_CRYPTO_CAST6=m
1056CONFIG_CRYPTO_TEA=m
1057CONFIG_CRYPTO_ARC4=m
1058CONFIG_CRYPTO_KHAZAD=m
1059CONFIG_CRYPTO_ANUBIS=m
1060CONFIG_CRYPTO_DEFLATE=m
1061CONFIG_CRYPTO_MICHAEL_MIC=m
1062CONFIG_CRYPTO_CRC32C=m
1063# CONFIG_CRYPTO_TEST is not set
1064 1027
1065# 1028#
1066# Hardware crypto devices 1029# Hardware crypto devices
@@ -1069,9 +1032,8 @@ CONFIG_CRYPTO_CRC32C=m
1069# 1032#
1070# Library routines 1033# Library routines
1071# 1034#
1072CONFIG_CRC_CCITT=m 1035# CONFIG_CRC_CCITT is not set
1073CONFIG_CRC16=m 1036# CONFIG_CRC16 is not set
1074CONFIG_CRC32=m 1037# CONFIG_CRC32 is not set
1075CONFIG_LIBCRC32C=m 1038# CONFIG_LIBCRC32C is not set
1076CONFIG_ZLIB_INFLATE=m 1039CONFIG_ZLIB_INFLATE=m
1077CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/tb0229_defconfig b/arch/mips/configs/tb0229_defconfig
index be99261d7997..5a924c1a5803 100644
--- a/arch/mips/configs/tb0229_defconfig
+++ b/arch/mips/configs/tb0229_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:35 2006 4# Tue Apr 25 00:08:59 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -68,12 +68,14 @@ CONFIG_MACH_VR41XX=y
68# CONFIG_NEC_CMBVR4133 is not set 68# CONFIG_NEC_CMBVR4133 is not set
69CONFIG_TANBAC_TB022X=y 69CONFIG_TANBAC_TB022X=y
70# CONFIG_TANBAC_TB0226 is not set 70# CONFIG_TANBAC_TB0226 is not set
71CONFIG_TANBAC_TB0287=y 71# CONFIG_TANBAC_TB0287 is not set
72# CONFIG_VICTOR_MPC30X is not set 72# CONFIG_VICTOR_MPC30X is not set
73# CONFIG_ZAO_CAPCELLA is not set 73# CONFIG_ZAO_CAPCELLA is not set
74CONFIG_PCI_VR41XX=y 74CONFIG_PCI_VR41XX=y
75# CONFIG_VRC4173 is not set 75# CONFIG_VRC4173 is not set
76CONFIG_RWSEM_GENERIC_SPINLOCK=y 76CONFIG_RWSEM_GENERIC_SPINLOCK=y
77CONFIG_GENERIC_FIND_NEXT_BIT=y
78CONFIG_GENERIC_HWEIGHT=y
77CONFIG_GENERIC_CALIBRATE_DELAY=y 79CONFIG_GENERIC_CALIBRATE_DELAY=y
78CONFIG_DMA_NONCOHERENT=y 80CONFIG_DMA_NONCOHERENT=y
79CONFIG_DMA_NEED_PCI_MAP_STATE=y 81CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -92,7 +94,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
92# CONFIG_CPU_MIPS64_R2 is not set 94# CONFIG_CPU_MIPS64_R2 is not set
93# CONFIG_CPU_R3000 is not set 95# CONFIG_CPU_R3000 is not set
94# CONFIG_CPU_TX39XX is not set 96# CONFIG_CPU_TX39XX is not set
95# CONFIG_CPU_VR41XX is not set 97CONFIG_CPU_VR41XX=y
96# CONFIG_CPU_R4300 is not set 98# CONFIG_CPU_R4300 is not set
97# CONFIG_CPU_R4X00 is not set 99# CONFIG_CPU_R4X00 is not set
98# CONFIG_CPU_TX49XX is not set 100# CONFIG_CPU_TX49XX is not set
@@ -105,18 +107,21 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
105# CONFIG_CPU_RM7000 is not set 107# CONFIG_CPU_RM7000 is not set
106# CONFIG_CPU_RM9000 is not set 108# CONFIG_CPU_RM9000 is not set
107# CONFIG_CPU_SB1 is not set 109# CONFIG_CPU_SB1 is not set
110CONFIG_SYS_HAS_CPU_VR41XX=y
111CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
112CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
113CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
108 114
109# 115#
110# Kernel type 116# Kernel type
111# 117#
112# CONFIG_32BIT is not set 118CONFIG_32BIT=y
113# CONFIG_64BIT is not set 119# CONFIG_64BIT is not set
114CONFIG_PAGE_SIZE_4KB=y 120CONFIG_PAGE_SIZE_4KB=y
115# CONFIG_PAGE_SIZE_8KB is not set 121# CONFIG_PAGE_SIZE_8KB is not set
116# CONFIG_PAGE_SIZE_16KB is not set 122# CONFIG_PAGE_SIZE_16KB is not set
117# CONFIG_PAGE_SIZE_64KB is not set 123# CONFIG_PAGE_SIZE_64KB is not set
118# CONFIG_MIPS_MT is not set 124# CONFIG_MIPS_MT is not set
119CONFIG_CPU_HAS_LLSC=y
120CONFIG_CPU_HAS_SYNC=y 125CONFIG_CPU_HAS_SYNC=y
121CONFIG_GENERIC_HARDIRQS=y 126CONFIG_GENERIC_HARDIRQS=y
122CONFIG_GENERIC_IRQ_PROBE=y 127CONFIG_GENERIC_IRQ_PROBE=y
@@ -137,7 +142,6 @@ CONFIG_PREEMPT_NONE=y
137# Code maturity level options 142# Code maturity level options
138# 143#
139CONFIG_EXPERIMENTAL=y 144CONFIG_EXPERIMENTAL=y
140CONFIG_CLEAN_COMPILE=y
141CONFIG_BROKEN_ON_SMP=y 145CONFIG_BROKEN_ON_SMP=y
142CONFIG_INIT_ENV_ARG_LIMIT=32 146CONFIG_INIT_ENV_ARG_LIMIT=32
143 147
@@ -153,6 +157,7 @@ CONFIG_SYSVIPC=y
153CONFIG_SYSCTL=y 157CONFIG_SYSCTL=y
154# CONFIG_AUDIT is not set 158# CONFIG_AUDIT is not set
155# CONFIG_IKCONFIG is not set 159# CONFIG_IKCONFIG is not set
160# CONFIG_RELAY is not set
156CONFIG_INITRAMFS_SOURCE="" 161CONFIG_INITRAMFS_SOURCE=""
157# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 162# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
158CONFIG_EMBEDDED=y 163CONFIG_EMBEDDED=y
@@ -166,10 +171,6 @@ CONFIG_BASE_FULL=y
166CONFIG_FUTEX=y 171CONFIG_FUTEX=y
167CONFIG_EPOLL=y 172CONFIG_EPOLL=y
168CONFIG_SHMEM=y 173CONFIG_SHMEM=y
169CONFIG_CC_ALIGN_FUNCTIONS=0
170CONFIG_CC_ALIGN_LABELS=0
171CONFIG_CC_ALIGN_LOOPS=0
172CONFIG_CC_ALIGN_JUMPS=0
173CONFIG_SLAB=y 174CONFIG_SLAB=y
174# CONFIG_TINY_SHMEM is not set 175# CONFIG_TINY_SHMEM is not set
175CONFIG_BASE_SMALL=0 176CONFIG_BASE_SMALL=0
@@ -181,7 +182,6 @@ CONFIG_BASE_SMALL=0
181CONFIG_MODULES=y 182CONFIG_MODULES=y
182CONFIG_MODULE_UNLOAD=y 183CONFIG_MODULE_UNLOAD=y
183# CONFIG_MODULE_FORCE_UNLOAD is not set 184# CONFIG_MODULE_FORCE_UNLOAD is not set
184CONFIG_OBSOLETE_MODPARM=y
185CONFIG_MODVERSIONS=y 185CONFIG_MODVERSIONS=y
186CONFIG_MODULE_SRCVERSION_ALL=y 186CONFIG_MODULE_SRCVERSION_ALL=y
187CONFIG_KMOD=y 187CONFIG_KMOD=y
@@ -189,6 +189,9 @@ CONFIG_KMOD=y
189# 189#
190# Block layer 190# Block layer
191# 191#
192# CONFIG_LBD is not set
193# CONFIG_BLK_DEV_IO_TRACE is not set
194# CONFIG_LSF is not set
192 195
193# 196#
194# IO Schedulers 197# IO Schedulers
@@ -208,7 +211,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
208# 211#
209CONFIG_HW_HAS_PCI=y 212CONFIG_HW_HAS_PCI=y
210CONFIG_PCI=y 213CONFIG_PCI=y
211# CONFIG_PCI_LEGACY_PROC is not set
212CONFIG_MMU=y 214CONFIG_MMU=y
213 215
214# 216#
@@ -226,6 +228,7 @@ CONFIG_MMU=y
226# 228#
227CONFIG_BINFMT_ELF=y 229CONFIG_BINFMT_ELF=y
228# CONFIG_BINFMT_MISC is not set 230# CONFIG_BINFMT_MISC is not set
231CONFIG_TRAD_SIGNALS=y
229 232
230# 233#
231# Networking 234# Networking
@@ -235,11 +238,10 @@ CONFIG_NET=y
235# 238#
236# Networking options 239# Networking options
237# 240#
241# CONFIG_NETDEBUG is not set
238CONFIG_PACKET=y 242CONFIG_PACKET=y
239# CONFIG_PACKET_MMAP is not set 243# CONFIG_PACKET_MMAP is not set
240CONFIG_UNIX=y 244CONFIG_UNIX=y
241CONFIG_XFRM=y
242CONFIG_XFRM_USER=m
243# CONFIG_NET_KEY is not set 245# CONFIG_NET_KEY is not set
244CONFIG_INET=y 246CONFIG_INET=y
245CONFIG_IP_MULTICAST=y 247CONFIG_IP_MULTICAST=y
@@ -264,12 +266,15 @@ CONFIG_SYN_COOKIES=y
264# CONFIG_INET_AH is not set 266# CONFIG_INET_AH is not set
265# CONFIG_INET_ESP is not set 267# CONFIG_INET_ESP is not set
266# CONFIG_INET_IPCOMP is not set 268# CONFIG_INET_IPCOMP is not set
269# CONFIG_INET_XFRM_TUNNEL is not set
267CONFIG_INET_TUNNEL=m 270CONFIG_INET_TUNNEL=m
268CONFIG_INET_DIAG=y 271CONFIG_INET_DIAG=y
269CONFIG_INET_TCP_DIAG=y 272CONFIG_INET_TCP_DIAG=y
270# CONFIG_TCP_CONG_ADVANCED is not set 273# CONFIG_TCP_CONG_ADVANCED is not set
271CONFIG_TCP_CONG_BIC=y 274CONFIG_TCP_CONG_BIC=y
272# CONFIG_IPV6 is not set 275# CONFIG_IPV6 is not set
276# CONFIG_INET6_XFRM_TUNNEL is not set
277# CONFIG_INET6_TUNNEL is not set
273# CONFIG_NETFILTER is not set 278# CONFIG_NETFILTER is not set
274 279
275# 280#
@@ -281,6 +286,11 @@ CONFIG_TCP_CONG_BIC=y
281# SCTP Configuration (EXPERIMENTAL) 286# SCTP Configuration (EXPERIMENTAL)
282# 287#
283# CONFIG_IP_SCTP is not set 288# CONFIG_IP_SCTP is not set
289
290#
291# TIPC Configuration (EXPERIMENTAL)
292#
293# CONFIG_TIPC is not set
284# CONFIG_ATM is not set 294# CONFIG_ATM is not set
285# CONFIG_BRIDGE is not set 295# CONFIG_BRIDGE is not set
286# CONFIG_VLAN_8021Q is not set 296# CONFIG_VLAN_8021Q is not set
@@ -290,11 +300,6 @@ CONFIG_TCP_CONG_BIC=y
290# CONFIG_ATALK is not set 300# CONFIG_ATALK is not set
291# CONFIG_X25 is not set 301# CONFIG_X25 is not set
292# CONFIG_LAPB is not set 302# CONFIG_LAPB is not set
293
294#
295# TIPC Configuration (EXPERIMENTAL)
296#
297# CONFIG_TIPC is not set
298# CONFIG_NET_DIVERT is not set 303# CONFIG_NET_DIVERT is not set
299# CONFIG_ECONET is not set 304# CONFIG_ECONET is not set
300# CONFIG_WAN_ROUTER is not set 305# CONFIG_WAN_ROUTER is not set
@@ -311,10 +316,7 @@ CONFIG_TCP_CONG_BIC=y
311# CONFIG_HAMRADIO is not set 316# CONFIG_HAMRADIO is not set
312# CONFIG_IRDA is not set 317# CONFIG_IRDA is not set
313# CONFIG_BT is not set 318# CONFIG_BT is not set
314CONFIG_IEEE80211=m 319# CONFIG_IEEE80211 is not set
315# CONFIG_IEEE80211_DEBUG is not set
316CONFIG_IEEE80211_CRYPT_WEP=m
317CONFIG_IEEE80211_CRYPT_CCMP=m
318 320
319# 321#
320# Device Drivers 322# Device Drivers
@@ -325,12 +327,12 @@ CONFIG_IEEE80211_CRYPT_CCMP=m
325# 327#
326CONFIG_STANDALONE=y 328CONFIG_STANDALONE=y
327CONFIG_PREVENT_FIRMWARE_BUILD=y 329CONFIG_PREVENT_FIRMWARE_BUILD=y
328CONFIG_FW_LOADER=m 330# CONFIG_FW_LOADER is not set
329 331
330# 332#
331# Connector - unified userspace <-> kernelspace linker 333# Connector - unified userspace <-> kernelspace linker
332# 334#
333CONFIG_CONNECTOR=m 335# CONFIG_CONNECTOR is not set
334 336
335# 337#
336# Memory Technology Devices (MTD) 338# Memory Technology Devices (MTD)
@@ -363,10 +365,8 @@ CONFIG_BLK_DEV_RAM=y
363CONFIG_BLK_DEV_RAM_COUNT=16 365CONFIG_BLK_DEV_RAM_COUNT=16
364CONFIG_BLK_DEV_RAM_SIZE=4096 366CONFIG_BLK_DEV_RAM_SIZE=4096
365# CONFIG_BLK_DEV_INITRD is not set 367# CONFIG_BLK_DEV_INITRD is not set
366CONFIG_CDROM_PKTCDVD=m 368# CONFIG_CDROM_PKTCDVD is not set
367CONFIG_CDROM_PKTCDVD_BUFFERS=8 369# CONFIG_ATA_OVER_ETH is not set
368# CONFIG_CDROM_PKTCDVD_WCACHE is not set
369CONFIG_ATA_OVER_ETH=m
370 370
371# 371#
372# ATA/ATAPI/MFM/RLL support 372# ATA/ATAPI/MFM/RLL support
@@ -443,30 +443,7 @@ CONFIG_MII=y
443# 443#
444# CONFIG_NET_TULIP is not set 444# CONFIG_NET_TULIP is not set
445# CONFIG_HP100 is not set 445# CONFIG_HP100 is not set
446CONFIG_NET_PCI=y 446# CONFIG_NET_PCI is not set
447# CONFIG_PCNET32 is not set
448# CONFIG_AMD8111_ETH is not set
449# CONFIG_ADAPTEC_STARFIRE is not set
450# CONFIG_B44 is not set
451# CONFIG_FORCEDETH is not set
452# CONFIG_DGRS is not set
453CONFIG_EEPRO100=y
454# CONFIG_E100 is not set
455# CONFIG_FEALNX is not set
456# CONFIG_NATSEMI is not set
457# CONFIG_NE2K_PCI is not set
458# CONFIG_8139CP is not set
459CONFIG_8139TOO=y
460CONFIG_8139TOO_PIO=y
461# CONFIG_8139TOO_TUNE_TWISTER is not set
462# CONFIG_8139TOO_8129 is not set
463# CONFIG_8139_OLD_RX_RESET is not set
464# CONFIG_SIS900 is not set
465# CONFIG_EPIC100 is not set
466# CONFIG_SUNDANCE is not set
467# CONFIG_TLAN is not set
468# CONFIG_VIA_RHINE is not set
469# CONFIG_LAN_SAA9730 is not set
470 447
471# 448#
472# Ethernet (1000 Mbit) 449# Ethernet (1000 Mbit)
@@ -483,7 +460,6 @@ CONFIG_R8169=y
483# CONFIG_SKGE is not set 460# CONFIG_SKGE is not set
484# CONFIG_SKY2 is not set 461# CONFIG_SKY2 is not set
485# CONFIG_SK98LIN is not set 462# CONFIG_SK98LIN is not set
486# CONFIG_VIA_VELOCITY is not set
487# CONFIG_TIGON3 is not set 463# CONFIG_TIGON3 is not set
488# CONFIG_BNX2 is not set 464# CONFIG_BNX2 is not set
489 465
@@ -510,19 +486,8 @@ CONFIG_R8169=y
510# CONFIG_WAN is not set 486# CONFIG_WAN is not set
511# CONFIG_FDDI is not set 487# CONFIG_FDDI is not set
512# CONFIG_HIPPI is not set 488# CONFIG_HIPPI is not set
513CONFIG_PPP=m 489# CONFIG_PPP is not set
514CONFIG_PPP_MULTILINK=y 490# CONFIG_SLIP is not set
515CONFIG_PPP_FILTER=y
516CONFIG_PPP_ASYNC=m
517CONFIG_PPP_SYNC_TTY=m
518CONFIG_PPP_DEFLATE=m
519CONFIG_PPP_BSDCOMP=m
520CONFIG_PPP_MPPE=m
521CONFIG_PPPOE=m
522CONFIG_SLIP=m
523CONFIG_SLIP_COMPRESSED=y
524CONFIG_SLIP_SMART=y
525CONFIG_SLIP_MODE_SLIP6=y
526# CONFIG_SHAPER is not set 491# CONFIG_SHAPER is not set
527# CONFIG_NETCONSOLE is not set 492# CONFIG_NETCONSOLE is not set
528# CONFIG_NETPOLL is not set 493# CONFIG_NETPOLL is not set
@@ -583,6 +548,11 @@ CONFIG_HW_CONSOLE=y
583# 548#
584# Non-8250 serial port support 549# Non-8250 serial port support
585# 550#
551CONFIG_SERIAL_CORE=y
552CONFIG_SERIAL_CORE_CONSOLE=y
553CONFIG_SERIAL_VR41XX=y
554CONFIG_SERIAL_VR41XX_CONSOLE=y
555# CONFIG_SERIAL_JSM is not set
586CONFIG_UNIX98_PTYS=y 556CONFIG_UNIX98_PTYS=y
587CONFIG_LEGACY_PTYS=y 557CONFIG_LEGACY_PTYS=y
588CONFIG_LEGACY_PTY_COUNT=256 558CONFIG_LEGACY_PTY_COUNT=256
@@ -607,6 +577,7 @@ CONFIG_TANBAC_TB0219=y
607# Ftape, the floppy tape device driver 577# Ftape, the floppy tape device driver
608# 578#
609# CONFIG_DRM is not set 579# CONFIG_DRM is not set
580CONFIG_GPIO_VR41XX=y
610# CONFIG_RAW_DRIVER is not set 581# CONFIG_RAW_DRIVER is not set
611 582
612# 583#
@@ -642,10 +613,6 @@ CONFIG_TANBAC_TB0219=y
642# 613#
643 614
644# 615#
645# Multimedia Capabilities Port drivers
646#
647
648#
649# Multimedia devices 616# Multimedia devices
650# 617#
651# CONFIG_VIDEO_DEV is not set 618# CONFIG_VIDEO_DEV is not set
@@ -654,6 +621,7 @@ CONFIG_TANBAC_TB0219=y
654# Digital Video Broadcasting Devices 621# Digital Video Broadcasting Devices
655# 622#
656# CONFIG_DVB is not set 623# CONFIG_DVB is not set
624# CONFIG_USB_DABUSB is not set
657 625
658# 626#
659# Graphics support 627# Graphics support
@@ -676,6 +644,7 @@ CONFIG_DUMMY_CONSOLE=y
676# 644#
677CONFIG_USB_ARCH_HAS_HCD=y 645CONFIG_USB_ARCH_HAS_HCD=y
678CONFIG_USB_ARCH_HAS_OHCI=y 646CONFIG_USB_ARCH_HAS_OHCI=y
647CONFIG_USB_ARCH_HAS_EHCI=y
679CONFIG_USB=m 648CONFIG_USB=m
680# CONFIG_USB_DEBUG is not set 649# CONFIG_USB_DEBUG is not set
681 650
@@ -731,9 +700,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
731# CONFIG_USB_ACECAD is not set 700# CONFIG_USB_ACECAD is not set
732# CONFIG_USB_KBTAB is not set 701# CONFIG_USB_KBTAB is not set
733# CONFIG_USB_POWERMATE is not set 702# CONFIG_USB_POWERMATE is not set
734# CONFIG_USB_MTOUCH is not set 703# CONFIG_USB_TOUCHSCREEN is not set
735# CONFIG_USB_ITMTOUCH is not set
736# CONFIG_USB_EGALAX is not set
737# CONFIG_USB_YEALINK is not set 704# CONFIG_USB_YEALINK is not set
738# CONFIG_USB_XPAD is not set 705# CONFIG_USB_XPAD is not set
739# CONFIG_USB_ATI_REMOTE is not set 706# CONFIG_USB_ATI_REMOTE is not set
@@ -747,15 +714,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
747# CONFIG_USB_MDC800 is not set 714# CONFIG_USB_MDC800 is not set
748 715
749# 716#
750# USB Multimedia devices
751#
752# CONFIG_USB_DABUSB is not set
753
754#
755# Video4Linux support is needed for USB Multimedia device support
756#
757
758#
759# USB Network Adapters 717# USB Network Adapters
760# 718#
761# CONFIG_USB_CATC is not set 719# CONFIG_USB_CATC is not set
@@ -807,13 +765,48 @@ CONFIG_USB_MON=y
807# CONFIG_MMC is not set 765# CONFIG_MMC is not set
808 766
809# 767#
768# LED devices
769#
770# CONFIG_NEW_LEDS is not set
771
772#
773# LED drivers
774#
775
776#
777# LED Triggers
778#
779
780#
810# InfiniBand support 781# InfiniBand support
811# 782#
812# CONFIG_INFINIBAND is not set 783# CONFIG_INFINIBAND is not set
813 784
814# 785#
815# SN Devices 786# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
787#
788
789#
790# Real Time Clock
791#
792CONFIG_RTC_LIB=y
793CONFIG_RTC_CLASS=y
794CONFIG_RTC_HCTOSYS=y
795CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
796
797#
798# RTC interfaces
799#
800CONFIG_RTC_INTF_SYSFS=y
801CONFIG_RTC_INTF_PROC=y
802CONFIG_RTC_INTF_DEV=y
803
804#
805# RTC drivers
816# 806#
807# CONFIG_RTC_DRV_M48T86 is not set
808CONFIG_RTC_DRV_VR41XX=y
809# CONFIG_RTC_DRV_TEST is not set
817 810
818# 811#
819# File systems 812# File systems
@@ -821,32 +814,16 @@ CONFIG_USB_MON=y
821CONFIG_EXT2_FS=y 814CONFIG_EXT2_FS=y
822# CONFIG_EXT2_FS_XATTR is not set 815# CONFIG_EXT2_FS_XATTR is not set
823# CONFIG_EXT2_FS_XIP is not set 816# CONFIG_EXT2_FS_XIP is not set
824CONFIG_EXT3_FS=m 817# CONFIG_EXT3_FS is not set
825CONFIG_EXT3_FS_XATTR=y
826# CONFIG_EXT3_FS_POSIX_ACL is not set
827CONFIG_EXT3_FS_SECURITY=y
828CONFIG_JBD=m
829# CONFIG_JBD_DEBUG is not set
830CONFIG_FS_MBCACHE=y
831# CONFIG_REISERFS_FS is not set 818# CONFIG_REISERFS_FS is not set
832CONFIG_JFS_FS=m 819# CONFIG_JFS_FS is not set
833# CONFIG_JFS_POSIX_ACL is not set
834# CONFIG_JFS_SECURITY is not set
835# CONFIG_JFS_DEBUG is not set
836# CONFIG_JFS_STATISTICS is not set
837# CONFIG_FS_POSIX_ACL is not set 820# CONFIG_FS_POSIX_ACL is not set
838CONFIG_XFS_FS=y 821# CONFIG_XFS_FS is not set
839CONFIG_XFS_EXPORT=y
840CONFIG_XFS_QUOTA=y
841# CONFIG_XFS_SECURITY is not set
842CONFIG_XFS_POSIX_ACL=y
843# CONFIG_XFS_RT is not set
844# CONFIG_OCFS2_FS is not set 822# CONFIG_OCFS2_FS is not set
845# CONFIG_MINIX_FS is not set 823# CONFIG_MINIX_FS is not set
846CONFIG_ROMFS_FS=m 824CONFIG_ROMFS_FS=m
847CONFIG_INOTIFY=y 825CONFIG_INOTIFY=y
848# CONFIG_QUOTA is not set 826# CONFIG_QUOTA is not set
849CONFIG_QUOTACTL=y
850CONFIG_DNOTIFY=y 827CONFIG_DNOTIFY=y
851# CONFIG_AUTOFS_FS is not set 828# CONFIG_AUTOFS_FS is not set
852CONFIG_AUTOFS4_FS=y 829CONFIG_AUTOFS4_FS=y
@@ -855,20 +832,14 @@ CONFIG_FUSE_FS=m
855# 832#
856# CD-ROM/DVD Filesystems 833# CD-ROM/DVD Filesystems
857# 834#
858CONFIG_ISO9660_FS=y 835# CONFIG_ISO9660_FS is not set
859CONFIG_JOLIET=y
860CONFIG_ZISOFS=y
861CONFIG_ZISOFS_FS=y
862# CONFIG_UDF_FS is not set 836# CONFIG_UDF_FS is not set
863 837
864# 838#
865# DOS/FAT/NT Filesystems 839# DOS/FAT/NT Filesystems
866# 840#
867CONFIG_FAT_FS=m 841# CONFIG_MSDOS_FS is not set
868CONFIG_MSDOS_FS=m 842# CONFIG_VFAT_FS is not set
869CONFIG_VFAT_FS=m
870CONFIG_FAT_DEFAULT_CODEPAGE=437
871CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
872# CONFIG_NTFS_FS is not set 843# CONFIG_NTFS_FS is not set
873 844
874# 845#
@@ -880,7 +851,6 @@ CONFIG_SYSFS=y
880CONFIG_TMPFS=y 851CONFIG_TMPFS=y
881# CONFIG_HUGETLB_PAGE is not set 852# CONFIG_HUGETLB_PAGE is not set
882CONFIG_RAMFS=y 853CONFIG_RAMFS=y
883CONFIG_RELAYFS_FS=m
884# CONFIG_CONFIGFS_FS is not set 854# CONFIG_CONFIGFS_FS is not set
885 855
886# 856#
@@ -921,9 +891,7 @@ CONFIG_NFS_COMMON=y
921CONFIG_SUNRPC=y 891CONFIG_SUNRPC=y
922# CONFIG_RPCSEC_GSS_KRB5 is not set 892# CONFIG_RPCSEC_GSS_KRB5 is not set
923# CONFIG_RPCSEC_GSS_SPKM3 is not set 893# CONFIG_RPCSEC_GSS_SPKM3 is not set
924CONFIG_SMB_FS=m 894# CONFIG_SMB_FS is not set
925CONFIG_SMB_NLS_DEFAULT=y
926CONFIG_SMB_NLS_REMOTE="cp932"
927# CONFIG_CIFS is not set 895# CONFIG_CIFS is not set
928# CONFIG_NCP_FS is not set 896# CONFIG_NCP_FS is not set
929# CONFIG_CODA_FS is not set 897# CONFIG_CODA_FS is not set
@@ -939,46 +907,7 @@ CONFIG_MSDOS_PARTITION=y
939# 907#
940# Native Language Support 908# Native Language Support
941# 909#
942CONFIG_NLS=y 910# CONFIG_NLS is not set
943CONFIG_NLS_DEFAULT="iso8859-1"
944CONFIG_NLS_CODEPAGE_437=m
945# CONFIG_NLS_CODEPAGE_737 is not set
946# CONFIG_NLS_CODEPAGE_775 is not set
947# CONFIG_NLS_CODEPAGE_850 is not set
948# CONFIG_NLS_CODEPAGE_852 is not set
949# CONFIG_NLS_CODEPAGE_855 is not set
950# CONFIG_NLS_CODEPAGE_857 is not set
951# CONFIG_NLS_CODEPAGE_860 is not set
952# CONFIG_NLS_CODEPAGE_861 is not set
953# CONFIG_NLS_CODEPAGE_862 is not set
954# CONFIG_NLS_CODEPAGE_863 is not set
955# CONFIG_NLS_CODEPAGE_864 is not set
956# CONFIG_NLS_CODEPAGE_865 is not set
957# CONFIG_NLS_CODEPAGE_866 is not set
958# CONFIG_NLS_CODEPAGE_869 is not set
959# CONFIG_NLS_CODEPAGE_936 is not set
960# CONFIG_NLS_CODEPAGE_950 is not set
961CONFIG_NLS_CODEPAGE_932=m
962# CONFIG_NLS_CODEPAGE_949 is not set
963# CONFIG_NLS_CODEPAGE_874 is not set
964# CONFIG_NLS_ISO8859_8 is not set
965# CONFIG_NLS_CODEPAGE_1250 is not set
966# CONFIG_NLS_CODEPAGE_1251 is not set
967# CONFIG_NLS_ASCII is not set
968CONFIG_NLS_ISO8859_1=m
969# CONFIG_NLS_ISO8859_2 is not set
970# CONFIG_NLS_ISO8859_3 is not set
971# CONFIG_NLS_ISO8859_4 is not set
972# CONFIG_NLS_ISO8859_5 is not set
973# CONFIG_NLS_ISO8859_6 is not set
974# CONFIG_NLS_ISO8859_7 is not set
975# CONFIG_NLS_ISO8859_9 is not set
976# CONFIG_NLS_ISO8859_13 is not set
977# CONFIG_NLS_ISO8859_14 is not set
978# CONFIG_NLS_ISO8859_15 is not set
979# CONFIG_NLS_KOI8_R is not set
980# CONFIG_NLS_KOI8_U is not set
981# CONFIG_NLS_UTF8 is not set
982 911
983# 912#
984# Profiling support 913# Profiling support
@@ -992,44 +921,20 @@ CONFIG_NLS_ISO8859_1=m
992# CONFIG_MAGIC_SYSRQ is not set 921# CONFIG_MAGIC_SYSRQ is not set
993# CONFIG_DEBUG_KERNEL is not set 922# CONFIG_DEBUG_KERNEL is not set
994CONFIG_LOG_BUF_SHIFT=14 923CONFIG_LOG_BUF_SHIFT=14
924# CONFIG_DEBUG_FS is not set
995CONFIG_CROSSCOMPILE=y 925CONFIG_CROSSCOMPILE=y
996CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs" 926CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs"
997 927
998# 928#
999# Security options 929# Security options
1000# 930#
1001CONFIG_KEYS=y 931# CONFIG_KEYS is not set
1002CONFIG_KEYS_DEBUG_PROC_KEYS=y
1003# CONFIG_SECURITY is not set 932# CONFIG_SECURITY is not set
1004 933
1005# 934#
1006# Cryptographic options 935# Cryptographic options
1007# 936#
1008CONFIG_CRYPTO=y 937# CONFIG_CRYPTO is not set
1009CONFIG_CRYPTO_HMAC=y
1010CONFIG_CRYPTO_NULL=m
1011CONFIG_CRYPTO_MD4=m
1012CONFIG_CRYPTO_MD5=m
1013CONFIG_CRYPTO_SHA1=m
1014CONFIG_CRYPTO_SHA256=m
1015CONFIG_CRYPTO_SHA512=m
1016CONFIG_CRYPTO_WP512=m
1017CONFIG_CRYPTO_TGR192=m
1018CONFIG_CRYPTO_DES=m
1019CONFIG_CRYPTO_BLOWFISH=m
1020CONFIG_CRYPTO_TWOFISH=m
1021CONFIG_CRYPTO_SERPENT=m
1022CONFIG_CRYPTO_AES=m
1023CONFIG_CRYPTO_CAST5=m
1024CONFIG_CRYPTO_CAST6=m
1025CONFIG_CRYPTO_TEA=m
1026CONFIG_CRYPTO_ARC4=m
1027CONFIG_CRYPTO_KHAZAD=m
1028CONFIG_CRYPTO_ANUBIS=m
1029CONFIG_CRYPTO_DEFLATE=m
1030CONFIG_CRYPTO_MICHAEL_MIC=m
1031CONFIG_CRYPTO_CRC32C=m
1032# CONFIG_CRYPTO_TEST is not set
1033 938
1034# 939#
1035# Hardware crypto devices 940# Hardware crypto devices
@@ -1038,9 +943,8 @@ CONFIG_CRYPTO_CRC32C=m
1038# 943#
1039# Library routines 944# Library routines
1040# 945#
1041CONFIG_CRC_CCITT=m 946# CONFIG_CRC_CCITT is not set
1042CONFIG_CRC16=m 947# CONFIG_CRC16 is not set
1043CONFIG_CRC32=y 948CONFIG_CRC32=y
1044CONFIG_LIBCRC32C=m 949# CONFIG_LIBCRC32C is not set
1045CONFIG_ZLIB_INFLATE=y 950CONFIG_ZLIB_INFLATE=m
1046CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/tb0287_defconfig b/arch/mips/configs/tb0287_defconfig
index 8a1e3ace0b2c..9f215ea350dc 100644
--- a/arch/mips/configs/tb0287_defconfig
+++ b/arch/mips/configs/tb0287_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16 3# Linux kernel version: 2.6.17-rc2
4# Wed Mar 22 11:07:34 2006 4# Tue Apr 25 00:09:17 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -74,7 +74,10 @@ CONFIG_TANBAC_TB0287=y
74CONFIG_PCI_VR41XX=y 74CONFIG_PCI_VR41XX=y
75# CONFIG_VRC4173 is not set 75# CONFIG_VRC4173 is not set
76CONFIG_RWSEM_GENERIC_SPINLOCK=y 76CONFIG_RWSEM_GENERIC_SPINLOCK=y
77CONFIG_GENERIC_FIND_NEXT_BIT=y
78CONFIG_GENERIC_HWEIGHT=y
77CONFIG_GENERIC_CALIBRATE_DELAY=y 79CONFIG_GENERIC_CALIBRATE_DELAY=y
80CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
78CONFIG_DMA_NONCOHERENT=y 81CONFIG_DMA_NONCOHERENT=y
79CONFIG_DMA_NEED_PCI_MAP_STATE=y 82CONFIG_DMA_NEED_PCI_MAP_STATE=y
80# CONFIG_CPU_BIG_ENDIAN is not set 83# CONFIG_CPU_BIG_ENDIAN is not set
@@ -107,7 +110,6 @@ CONFIG_CPU_VR41XX=y
107# CONFIG_CPU_SB1 is not set 110# CONFIG_CPU_SB1 is not set
108CONFIG_SYS_HAS_CPU_VR41XX=y 111CONFIG_SYS_HAS_CPU_VR41XX=y
109CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y 112CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
110CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
111CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y 113CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
112CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y 114CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
113 115
@@ -121,7 +123,6 @@ CONFIG_PAGE_SIZE_4KB=y
121# CONFIG_PAGE_SIZE_16KB is not set 123# CONFIG_PAGE_SIZE_16KB is not set
122# CONFIG_PAGE_SIZE_64KB is not set 124# CONFIG_PAGE_SIZE_64KB is not set
123# CONFIG_MIPS_MT is not set 125# CONFIG_MIPS_MT is not set
124# CONFIG_CPU_ADVANCED is not set
125CONFIG_CPU_HAS_SYNC=y 126CONFIG_CPU_HAS_SYNC=y
126CONFIG_GENERIC_HARDIRQS=y 127CONFIG_GENERIC_HARDIRQS=y
127CONFIG_GENERIC_IRQ_PROBE=y 128CONFIG_GENERIC_IRQ_PROBE=y
@@ -157,6 +158,7 @@ CONFIG_SYSVIPC=y
157CONFIG_SYSCTL=y 158CONFIG_SYSCTL=y
158# CONFIG_AUDIT is not set 159# CONFIG_AUDIT is not set
159# CONFIG_IKCONFIG is not set 160# CONFIG_IKCONFIG is not set
161# CONFIG_RELAY is not set
160CONFIG_INITRAMFS_SOURCE="" 162CONFIG_INITRAMFS_SOURCE=""
161# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 163# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
162CONFIG_EMBEDDED=y 164CONFIG_EMBEDDED=y
@@ -170,10 +172,6 @@ CONFIG_BASE_FULL=y
170CONFIG_FUTEX=y 172CONFIG_FUTEX=y
171CONFIG_EPOLL=y 173CONFIG_EPOLL=y
172CONFIG_SHMEM=y 174CONFIG_SHMEM=y
173CONFIG_CC_ALIGN_FUNCTIONS=0
174CONFIG_CC_ALIGN_LABELS=0
175CONFIG_CC_ALIGN_LOOPS=0
176CONFIG_CC_ALIGN_JUMPS=0
177CONFIG_SLAB=y 175CONFIG_SLAB=y
178# CONFIG_TINY_SHMEM is not set 176# CONFIG_TINY_SHMEM is not set
179CONFIG_BASE_SMALL=0 177CONFIG_BASE_SMALL=0
@@ -185,7 +183,6 @@ CONFIG_BASE_SMALL=0
185CONFIG_MODULES=y 183CONFIG_MODULES=y
186CONFIG_MODULE_UNLOAD=y 184CONFIG_MODULE_UNLOAD=y
187# CONFIG_MODULE_FORCE_UNLOAD is not set 185# CONFIG_MODULE_FORCE_UNLOAD is not set
188CONFIG_OBSOLETE_MODPARM=y
189CONFIG_MODVERSIONS=y 186CONFIG_MODVERSIONS=y
190CONFIG_MODULE_SRCVERSION_ALL=y 187CONFIG_MODULE_SRCVERSION_ALL=y
191CONFIG_KMOD=y 188CONFIG_KMOD=y
@@ -194,6 +191,8 @@ CONFIG_KMOD=y
194# Block layer 191# Block layer
195# 192#
196# CONFIG_LBD is not set 193# CONFIG_LBD is not set
194# CONFIG_BLK_DEV_IO_TRACE is not set
195# CONFIG_LSF is not set
197 196
198# 197#
199# IO Schedulers 198# IO Schedulers
@@ -213,7 +212,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
213# 212#
214CONFIG_HW_HAS_PCI=y 213CONFIG_HW_HAS_PCI=y
215CONFIG_PCI=y 214CONFIG_PCI=y
216# CONFIG_PCI_LEGACY_PROC is not set
217CONFIG_MMU=y 215CONFIG_MMU=y
218 216
219# 217#
@@ -245,8 +243,6 @@ CONFIG_NET=y
245CONFIG_PACKET=y 243CONFIG_PACKET=y
246# CONFIG_PACKET_MMAP is not set 244# CONFIG_PACKET_MMAP is not set
247CONFIG_UNIX=y 245CONFIG_UNIX=y
248CONFIG_XFRM=y
249CONFIG_XFRM_USER=m
250# CONFIG_NET_KEY is not set 246# CONFIG_NET_KEY is not set
251CONFIG_INET=y 247CONFIG_INET=y
252CONFIG_IP_MULTICAST=y 248CONFIG_IP_MULTICAST=y
@@ -271,6 +267,7 @@ CONFIG_SYN_COOKIES=y
271# CONFIG_INET_AH is not set 267# CONFIG_INET_AH is not set
272# CONFIG_INET_ESP is not set 268# CONFIG_INET_ESP is not set
273# CONFIG_INET_IPCOMP is not set 269# CONFIG_INET_IPCOMP is not set
270# CONFIG_INET_XFRM_TUNNEL is not set
274CONFIG_INET_TUNNEL=m 271CONFIG_INET_TUNNEL=m
275CONFIG_INET_DIAG=y 272CONFIG_INET_DIAG=y
276CONFIG_INET_TCP_DIAG=y 273CONFIG_INET_TCP_DIAG=y
@@ -288,6 +285,8 @@ CONFIG_TCP_CONG_HTCP=m
288# CONFIG_TCP_CONG_VEGAS is not set 285# CONFIG_TCP_CONG_VEGAS is not set
289# CONFIG_TCP_CONG_SCALABLE is not set 286# CONFIG_TCP_CONG_SCALABLE is not set
290# CONFIG_IPV6 is not set 287# CONFIG_IPV6 is not set
288# CONFIG_INET6_XFRM_TUNNEL is not set
289# CONFIG_INET6_TUNNEL is not set
291# CONFIG_NETFILTER is not set 290# CONFIG_NETFILTER is not set
292 291
293# 292#
@@ -493,7 +492,6 @@ CONFIG_BLK_DEV_SD=y
493# CONFIG_SCSI_INIA100 is not set 492# CONFIG_SCSI_INIA100 is not set
494# CONFIG_SCSI_SYM53C8XX_2 is not set 493# CONFIG_SCSI_SYM53C8XX_2 is not set
495# CONFIG_SCSI_IPR is not set 494# CONFIG_SCSI_IPR is not set
496# CONFIG_SCSI_QLOGIC_FC is not set
497# CONFIG_SCSI_QLOGIC_1280 is not set 495# CONFIG_SCSI_QLOGIC_1280 is not set
498# CONFIG_SCSI_QLA_FC is not set 496# CONFIG_SCSI_QLA_FC is not set
499# CONFIG_SCSI_LPFC is not set 497# CONFIG_SCSI_LPFC is not set
@@ -714,7 +712,6 @@ CONFIG_LEGACY_PTY_COUNT=256
714# CONFIG_WATCHDOG is not set 712# CONFIG_WATCHDOG is not set
715# CONFIG_RTC is not set 713# CONFIG_RTC is not set
716# CONFIG_GEN_RTC is not set 714# CONFIG_GEN_RTC is not set
717# CONFIG_RTC_VR41XX is not set
718# CONFIG_DTLK is not set 715# CONFIG_DTLK is not set
719# CONFIG_R3964 is not set 716# CONFIG_R3964 is not set
720# CONFIG_APPLICOM is not set 717# CONFIG_APPLICOM is not set
@@ -760,10 +757,6 @@ CONFIG_GPIO_VR41XX=y
760# 757#
761 758
762# 759#
763# Multimedia Capabilities Port drivers
764#
765
766#
767# Multimedia devices 760# Multimedia devices
768# 761#
769# CONFIG_VIDEO_DEV is not set 762# CONFIG_VIDEO_DEV is not set
@@ -772,17 +765,53 @@ CONFIG_GPIO_VR41XX=y
772# Digital Video Broadcasting Devices 765# Digital Video Broadcasting Devices
773# 766#
774# CONFIG_DVB is not set 767# CONFIG_DVB is not set
768# CONFIG_USB_DABUSB is not set
775 769
776# 770#
777# Graphics support 771# Graphics support
778# 772#
779# CONFIG_FB is not set 773CONFIG_FB=y
774CONFIG_FB_CFB_FILLRECT=y
775CONFIG_FB_CFB_COPYAREA=y
776CONFIG_FB_CFB_IMAGEBLIT=y
777# CONFIG_FB_MACMODES is not set
778CONFIG_FB_FIRMWARE_EDID=y
779# CONFIG_FB_MODE_HELPERS is not set
780# CONFIG_FB_TILEBLITTING is not set
781# CONFIG_FB_CIRRUS is not set
782# CONFIG_FB_PM2 is not set
783# CONFIG_FB_CYBER2000 is not set
784# CONFIG_FB_ASILIANT is not set
785# CONFIG_FB_IMSTT is not set
786# CONFIG_FB_S1D13XXX is not set
787# CONFIG_FB_NVIDIA is not set
788# CONFIG_FB_RIVA is not set
789# CONFIG_FB_MATROX is not set
790# CONFIG_FB_RADEON is not set
791# CONFIG_FB_ATY128 is not set
792# CONFIG_FB_ATY is not set
793# CONFIG_FB_SAVAGE is not set
794# CONFIG_FB_SIS is not set
795# CONFIG_FB_NEOMAGIC is not set
796# CONFIG_FB_KYRO is not set
797# CONFIG_FB_3DFX is not set
798# CONFIG_FB_VOODOO1 is not set
799CONFIG_FB_SMIVGX=y
800# CONFIG_FB_TRIDENT is not set
801# CONFIG_FB_VIRTUAL is not set
780 802
781# 803#
782# Console display driver support 804# Console display driver support
783# 805#
784# CONFIG_VGA_CONSOLE is not set 806# CONFIG_VGA_CONSOLE is not set
785CONFIG_DUMMY_CONSOLE=y 807CONFIG_DUMMY_CONSOLE=y
808# CONFIG_FRAMEBUFFER_CONSOLE is not set
809
810#
811# Logo configuration
812#
813# CONFIG_LOGO is not set
814# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
786 815
787# 816#
788# Sound 817# Sound
@@ -794,6 +823,7 @@ CONFIG_DUMMY_CONSOLE=y
794# 823#
795CONFIG_USB_ARCH_HAS_HCD=y 824CONFIG_USB_ARCH_HAS_HCD=y
796CONFIG_USB_ARCH_HAS_OHCI=y 825CONFIG_USB_ARCH_HAS_OHCI=y
826CONFIG_USB_ARCH_HAS_EHCI=y
797CONFIG_USB=m 827CONFIG_USB=m
798# CONFIG_USB_DEBUG is not set 828# CONFIG_USB_DEBUG is not set
799 829
@@ -863,9 +893,7 @@ CONFIG_USB_HIDINPUT=y
863# CONFIG_USB_ACECAD is not set 893# CONFIG_USB_ACECAD is not set
864# CONFIG_USB_KBTAB is not set 894# CONFIG_USB_KBTAB is not set
865# CONFIG_USB_POWERMATE is not set 895# CONFIG_USB_POWERMATE is not set
866# CONFIG_USB_MTOUCH is not set 896# CONFIG_USB_TOUCHSCREEN is not set
867# CONFIG_USB_ITMTOUCH is not set
868# CONFIG_USB_EGALAX is not set
869# CONFIG_USB_YEALINK is not set 897# CONFIG_USB_YEALINK is not set
870# CONFIG_USB_XPAD is not set 898# CONFIG_USB_XPAD is not set
871# CONFIG_USB_ATI_REMOTE is not set 899# CONFIG_USB_ATI_REMOTE is not set
@@ -880,15 +908,6 @@ CONFIG_USB_HIDINPUT=y
880# CONFIG_USB_MICROTEK is not set 908# CONFIG_USB_MICROTEK is not set
881 909
882# 910#
883# USB Multimedia devices
884#
885# CONFIG_USB_DABUSB is not set
886
887#
888# Video4Linux support is needed for USB Multimedia device support
889#
890
891#
892# USB Network Adapters 911# USB Network Adapters
893# 912#
894# CONFIG_USB_CATC is not set 913# CONFIG_USB_CATC is not set
@@ -939,6 +958,19 @@ CONFIG_USB_MON=y
939# CONFIG_MMC is not set 958# CONFIG_MMC is not set
940 959
941# 960#
961# LED devices
962#
963# CONFIG_NEW_LEDS is not set
964
965#
966# LED drivers
967#
968
969#
970# LED Triggers
971#
972
973#
942# InfiniBand support 974# InfiniBand support
943# 975#
944# CONFIG_INFINIBAND is not set 976# CONFIG_INFINIBAND is not set
@@ -948,6 +980,11 @@ CONFIG_USB_MON=y
948# 980#
949 981
950# 982#
983# Real Time Clock
984#
985# CONFIG_RTC_CLASS is not set
986
987#
951# File systems 988# File systems
952# 989#
953CONFIG_EXT2_FS=y 990CONFIG_EXT2_FS=y
@@ -1001,7 +1038,6 @@ CONFIG_SYSFS=y
1001CONFIG_TMPFS=y 1038CONFIG_TMPFS=y
1002# CONFIG_HUGETLB_PAGE is not set 1039# CONFIG_HUGETLB_PAGE is not set
1003CONFIG_RAMFS=y 1040CONFIG_RAMFS=y
1004# CONFIG_RELAYFS_FS is not set
1005# CONFIG_CONFIGFS_FS is not set 1041# CONFIG_CONFIGFS_FS is not set
1006 1042
1007# 1043#
@@ -1067,14 +1103,14 @@ CONFIG_MSDOS_PARTITION=y
1067# CONFIG_MAGIC_SYSRQ is not set 1103# CONFIG_MAGIC_SYSRQ is not set
1068# CONFIG_DEBUG_KERNEL is not set 1104# CONFIG_DEBUG_KERNEL is not set
1069CONFIG_LOG_BUF_SHIFT=14 1105CONFIG_LOG_BUF_SHIFT=14
1106# CONFIG_DEBUG_FS is not set
1070CONFIG_CROSSCOMPILE=y 1107CONFIG_CROSSCOMPILE=y
1071CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs" 1108CONFIG_CMDLINE="mem=64M console=ttyVR0,115200 ip=any root=/dev/nfs"
1072 1109
1073# 1110#
1074# Security options 1111# Security options
1075# 1112#
1076CONFIG_KEYS=y 1113# CONFIG_KEYS is not set
1077CONFIG_KEYS_DEBUG_PROC_KEYS=y
1078# CONFIG_SECURITY is not set 1114# CONFIG_SECURITY is not set
1079 1115
1080# 1116#
diff --git a/arch/mips/configs/workpad_defconfig b/arch/mips/configs/workpad_defconfig
index 7132e296d40a..ac7765eb8da7 100644
--- a/arch/mips/configs/workpad_defconfig
+++ b/arch/mips/configs/workpad_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:36 2006 4# Tue Apr 25 00:09:33 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -70,6 +70,8 @@ CONFIG_IBM_WORKPAD=y
70# CONFIG_VICTOR_MPC30X is not set 70# CONFIG_VICTOR_MPC30X is not set
71# CONFIG_ZAO_CAPCELLA is not set 71# CONFIG_ZAO_CAPCELLA is not set
72CONFIG_RWSEM_GENERIC_SPINLOCK=y 72CONFIG_RWSEM_GENERIC_SPINLOCK=y
73CONFIG_GENERIC_FIND_NEXT_BIT=y
74CONFIG_GENERIC_HWEIGHT=y
73CONFIG_GENERIC_CALIBRATE_DELAY=y 75CONFIG_GENERIC_CALIBRATE_DELAY=y
74CONFIG_DMA_NONCOHERENT=y 76CONFIG_DMA_NONCOHERENT=y
75CONFIG_DMA_NEED_PCI_MAP_STATE=y 77CONFIG_DMA_NEED_PCI_MAP_STATE=y
@@ -88,7 +90,7 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
88# CONFIG_CPU_MIPS64_R2 is not set 90# CONFIG_CPU_MIPS64_R2 is not set
89# CONFIG_CPU_R3000 is not set 91# CONFIG_CPU_R3000 is not set
90# CONFIG_CPU_TX39XX is not set 92# CONFIG_CPU_TX39XX is not set
91# CONFIG_CPU_VR41XX is not set 93CONFIG_CPU_VR41XX=y
92# CONFIG_CPU_R4300 is not set 94# CONFIG_CPU_R4300 is not set
93# CONFIG_CPU_R4X00 is not set 95# CONFIG_CPU_R4X00 is not set
94# CONFIG_CPU_TX49XX is not set 96# CONFIG_CPU_TX49XX is not set
@@ -101,18 +103,21 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5
101# CONFIG_CPU_RM7000 is not set 103# CONFIG_CPU_RM7000 is not set
102# CONFIG_CPU_RM9000 is not set 104# CONFIG_CPU_RM9000 is not set
103# CONFIG_CPU_SB1 is not set 105# CONFIG_CPU_SB1 is not set
106CONFIG_SYS_HAS_CPU_VR41XX=y
107CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
108CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
109CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
104 110
105# 111#
106# Kernel type 112# Kernel type
107# 113#
108# CONFIG_32BIT is not set 114CONFIG_32BIT=y
109# CONFIG_64BIT is not set 115# CONFIG_64BIT is not set
110CONFIG_PAGE_SIZE_4KB=y 116CONFIG_PAGE_SIZE_4KB=y
111# CONFIG_PAGE_SIZE_8KB is not set 117# CONFIG_PAGE_SIZE_8KB is not set
112# CONFIG_PAGE_SIZE_16KB is not set 118# CONFIG_PAGE_SIZE_16KB is not set
113# CONFIG_PAGE_SIZE_64KB is not set 119# CONFIG_PAGE_SIZE_64KB is not set
114# CONFIG_MIPS_MT is not set 120# CONFIG_MIPS_MT is not set
115CONFIG_CPU_HAS_LLSC=y
116CONFIG_CPU_HAS_SYNC=y 121CONFIG_CPU_HAS_SYNC=y
117CONFIG_GENERIC_HARDIRQS=y 122CONFIG_GENERIC_HARDIRQS=y
118CONFIG_GENERIC_IRQ_PROBE=y 123CONFIG_GENERIC_IRQ_PROBE=y
@@ -133,7 +138,6 @@ CONFIG_PREEMPT_NONE=y
133# Code maturity level options 138# Code maturity level options
134# 139#
135CONFIG_EXPERIMENTAL=y 140CONFIG_EXPERIMENTAL=y
136CONFIG_CLEAN_COMPILE=y
137CONFIG_BROKEN_ON_SMP=y 141CONFIG_BROKEN_ON_SMP=y
138CONFIG_INIT_ENV_ARG_LIMIT=32 142CONFIG_INIT_ENV_ARG_LIMIT=32
139 143
@@ -149,6 +153,7 @@ CONFIG_SYSVIPC=y
149CONFIG_SYSCTL=y 153CONFIG_SYSCTL=y
150# CONFIG_AUDIT is not set 154# CONFIG_AUDIT is not set
151# CONFIG_IKCONFIG is not set 155# CONFIG_IKCONFIG is not set
156# CONFIG_RELAY is not set
152CONFIG_INITRAMFS_SOURCE="" 157CONFIG_INITRAMFS_SOURCE=""
153# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 158# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
154CONFIG_EMBEDDED=y 159CONFIG_EMBEDDED=y
@@ -162,10 +167,6 @@ CONFIG_BASE_FULL=y
162CONFIG_FUTEX=y 167CONFIG_FUTEX=y
163CONFIG_EPOLL=y 168CONFIG_EPOLL=y
164CONFIG_SHMEM=y 169CONFIG_SHMEM=y
165CONFIG_CC_ALIGN_FUNCTIONS=0
166CONFIG_CC_ALIGN_LABELS=0
167CONFIG_CC_ALIGN_LOOPS=0
168CONFIG_CC_ALIGN_JUMPS=0
169CONFIG_SLAB=y 170CONFIG_SLAB=y
170# CONFIG_TINY_SHMEM is not set 171# CONFIG_TINY_SHMEM is not set
171CONFIG_BASE_SMALL=0 172CONFIG_BASE_SMALL=0
@@ -177,7 +178,6 @@ CONFIG_BASE_SMALL=0
177CONFIG_MODULES=y 178CONFIG_MODULES=y
178CONFIG_MODULE_UNLOAD=y 179CONFIG_MODULE_UNLOAD=y
179# CONFIG_MODULE_FORCE_UNLOAD is not set 180# CONFIG_MODULE_FORCE_UNLOAD is not set
180CONFIG_OBSOLETE_MODPARM=y
181CONFIG_MODVERSIONS=y 181CONFIG_MODVERSIONS=y
182CONFIG_MODULE_SRCVERSION_ALL=y 182CONFIG_MODULE_SRCVERSION_ALL=y
183CONFIG_KMOD=y 183CONFIG_KMOD=y
@@ -185,6 +185,9 @@ CONFIG_KMOD=y
185# 185#
186# Block layer 186# Block layer
187# 187#
188# CONFIG_LBD is not set
189# CONFIG_BLK_DEV_IO_TRACE is not set
190# CONFIG_LSF is not set
188 191
189# 192#
190# IO Schedulers 193# IO Schedulers
@@ -220,6 +223,7 @@ CONFIG_PCMCIA_IOCTL=y
220# CONFIG_I82365 is not set 223# CONFIG_I82365 is not set
221# CONFIG_TCIC is not set 224# CONFIG_TCIC is not set
222CONFIG_PCMCIA_PROBE=y 225CONFIG_PCMCIA_PROBE=y
226CONFIG_PCMCIA_VRC4171=y
223 227
224# 228#
225# PCI Hotplug Support 229# PCI Hotplug Support
@@ -230,6 +234,7 @@ CONFIG_PCMCIA_PROBE=y
230# 234#
231CONFIG_BINFMT_ELF=y 235CONFIG_BINFMT_ELF=y
232# CONFIG_BINFMT_MISC is not set 236# CONFIG_BINFMT_MISC is not set
237CONFIG_TRAD_SIGNALS=y
233 238
234# 239#
235# Networking 240# Networking
@@ -239,6 +244,7 @@ CONFIG_NET=y
239# 244#
240# Networking options 245# Networking options
241# 246#
247# CONFIG_NETDEBUG is not set
242CONFIG_PACKET=y 248CONFIG_PACKET=y
243CONFIG_PACKET_MMAP=y 249CONFIG_PACKET_MMAP=y
244CONFIG_UNIX=y 250CONFIG_UNIX=y
@@ -258,12 +264,15 @@ CONFIG_IP_FIB_HASH=y
258# CONFIG_INET_AH is not set 264# CONFIG_INET_AH is not set
259# CONFIG_INET_ESP is not set 265# CONFIG_INET_ESP is not set
260# CONFIG_INET_IPCOMP is not set 266# CONFIG_INET_IPCOMP is not set
261CONFIG_INET_TUNNEL=m 267# CONFIG_INET_XFRM_TUNNEL is not set
268# CONFIG_INET_TUNNEL is not set
262CONFIG_INET_DIAG=y 269CONFIG_INET_DIAG=y
263CONFIG_INET_TCP_DIAG=y 270CONFIG_INET_TCP_DIAG=y
264# CONFIG_TCP_CONG_ADVANCED is not set 271# CONFIG_TCP_CONG_ADVANCED is not set
265CONFIG_TCP_CONG_BIC=y 272CONFIG_TCP_CONG_BIC=y
266# CONFIG_IPV6 is not set 273# CONFIG_IPV6 is not set
274# CONFIG_INET6_XFRM_TUNNEL is not set
275# CONFIG_INET6_TUNNEL is not set
267# CONFIG_NETFILTER is not set 276# CONFIG_NETFILTER is not set
268 277
269# 278#
@@ -275,6 +284,11 @@ CONFIG_TCP_CONG_BIC=y
275# SCTP Configuration (EXPERIMENTAL) 284# SCTP Configuration (EXPERIMENTAL)
276# 285#
277# CONFIG_IP_SCTP is not set 286# CONFIG_IP_SCTP is not set
287
288#
289# TIPC Configuration (EXPERIMENTAL)
290#
291# CONFIG_TIPC is not set
278# CONFIG_ATM is not set 292# CONFIG_ATM is not set
279# CONFIG_BRIDGE is not set 293# CONFIG_BRIDGE is not set
280# CONFIG_VLAN_8021Q is not set 294# CONFIG_VLAN_8021Q is not set
@@ -284,11 +298,6 @@ CONFIG_TCP_CONG_BIC=y
284# CONFIG_ATALK is not set 298# CONFIG_ATALK is not set
285# CONFIG_X25 is not set 299# CONFIG_X25 is not set
286# CONFIG_LAPB is not set 300# CONFIG_LAPB is not set
287
288#
289# TIPC Configuration (EXPERIMENTAL)
290#
291# CONFIG_TIPC is not set
292# CONFIG_NET_DIVERT is not set 301# CONFIG_NET_DIVERT is not set
293# CONFIG_ECONET is not set 302# CONFIG_ECONET is not set
294# CONFIG_WAN_ROUTER is not set 303# CONFIG_WAN_ROUTER is not set
@@ -305,10 +314,8 @@ CONFIG_TCP_CONG_BIC=y
305# CONFIG_HAMRADIO is not set 314# CONFIG_HAMRADIO is not set
306# CONFIG_IRDA is not set 315# CONFIG_IRDA is not set
307# CONFIG_BT is not set 316# CONFIG_BT is not set
308CONFIG_IEEE80211=m 317# CONFIG_IEEE80211 is not set
309# CONFIG_IEEE80211_DEBUG is not set 318CONFIG_WIRELESS_EXT=y
310CONFIG_IEEE80211_CRYPT_WEP=m
311CONFIG_IEEE80211_CRYPT_CCMP=m
312 319
313# 320#
314# Device Drivers 321# Device Drivers
@@ -347,10 +354,12 @@ CONFIG_CONNECTOR=m
347# CONFIG_BLK_DEV_COW_COMMON is not set 354# CONFIG_BLK_DEV_COW_COMMON is not set
348# CONFIG_BLK_DEV_LOOP is not set 355# CONFIG_BLK_DEV_LOOP is not set
349# CONFIG_BLK_DEV_NBD is not set 356# CONFIG_BLK_DEV_NBD is not set
350# CONFIG_BLK_DEV_RAM is not set 357CONFIG_BLK_DEV_RAM=m
351CONFIG_BLK_DEV_RAM_COUNT=16 358CONFIG_BLK_DEV_RAM_COUNT=16
359CONFIG_BLK_DEV_RAM_SIZE=4096
360# CONFIG_BLK_DEV_INITRD is not set
352# CONFIG_CDROM_PKTCDVD is not set 361# CONFIG_CDROM_PKTCDVD is not set
353CONFIG_ATA_OVER_ETH=m 362# CONFIG_ATA_OVER_ETH is not set
354 363
355# 364#
356# ATA/ATAPI/MFM/RLL support 365# ATA/ATAPI/MFM/RLL support
@@ -468,7 +477,38 @@ CONFIG_MII=m
468# 477#
469# Wireless LAN (non-hamradio) 478# Wireless LAN (non-hamradio)
470# 479#
471# CONFIG_NET_RADIO is not set 480CONFIG_NET_RADIO=y
481# CONFIG_NET_WIRELESS_RTNETLINK is not set
482
483#
484# Obsolete Wireless cards support (pre-802.11)
485#
486# CONFIG_STRIP is not set
487# CONFIG_ARLAN is not set
488# CONFIG_WAVELAN is not set
489# CONFIG_PCMCIA_WAVELAN is not set
490# CONFIG_PCMCIA_NETWAVE is not set
491
492#
493# Wireless 802.11 Frequency Hopping cards support
494#
495# CONFIG_PCMCIA_RAYCS is not set
496
497#
498# Wireless 802.11b ISA/PCI cards support
499#
500CONFIG_HERMES=m
501# CONFIG_ATMEL is not set
502
503#
504# Wireless 802.11b Pcmcia/Cardbus cards support
505#
506CONFIG_PCMCIA_HERMES=m
507# CONFIG_PCMCIA_SPECTRUM is not set
508# CONFIG_AIRO_CS is not set
509# CONFIG_PCMCIA_WL3501 is not set
510# CONFIG_HOSTAP is not set
511CONFIG_NET_WIRELESS=y
472 512
473# 513#
474# PCMCIA network device support 514# PCMCIA network device support
@@ -512,10 +552,7 @@ CONFIG_INPUT=y
512# 552#
513# Userland interfaces 553# Userland interfaces
514# 554#
515CONFIG_INPUT_MOUSEDEV=y 555# CONFIG_INPUT_MOUSEDEV is not set
516CONFIG_INPUT_MOUSEDEV_PSAUX=y
517CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
518CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
519# CONFIG_INPUT_JOYDEV is not set 556# CONFIG_INPUT_JOYDEV is not set
520# CONFIG_INPUT_TSDEV is not set 557# CONFIG_INPUT_TSDEV is not set
521# CONFIG_INPUT_EVDEV is not set 558# CONFIG_INPUT_EVDEV is not set
@@ -533,11 +570,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
533# 570#
534# Hardware I/O ports 571# Hardware I/O ports
535# 572#
536CONFIG_SERIO=y 573# CONFIG_SERIO is not set
537# CONFIG_SERIO_I8042 is not set
538CONFIG_SERIO_SERPORT=y
539# CONFIG_SERIO_LIBPS2 is not set
540CONFIG_SERIO_RAW=m
541# CONFIG_GAMEPORT is not set 574# CONFIG_GAMEPORT is not set
542 575
543# 576#
@@ -556,6 +589,10 @@ CONFIG_HW_CONSOLE=y
556# 589#
557# Non-8250 serial port support 590# Non-8250 serial port support
558# 591#
592CONFIG_SERIAL_CORE=y
593CONFIG_SERIAL_CORE_CONSOLE=y
594CONFIG_SERIAL_VR41XX=y
595CONFIG_SERIAL_VR41XX_CONSOLE=y
559CONFIG_UNIX98_PTYS=y 596CONFIG_UNIX98_PTYS=y
560CONFIG_LEGACY_PTYS=y 597CONFIG_LEGACY_PTYS=y
561CONFIG_LEGACY_PTY_COUNT=256 598CONFIG_LEGACY_PTY_COUNT=256
@@ -568,20 +605,7 @@ CONFIG_LEGACY_PTY_COUNT=256
568# 605#
569# Watchdog Cards 606# Watchdog Cards
570# 607#
571CONFIG_WATCHDOG=y 608# CONFIG_WATCHDOG is not set
572# CONFIG_WATCHDOG_NOWAYOUT is not set
573
574#
575# Watchdog Device Drivers
576#
577# CONFIG_SOFT_WATCHDOG is not set
578
579#
580# ISA-based Watchdog Cards
581#
582# CONFIG_PCWATCHDOG is not set
583# CONFIG_MIXCOMWD is not set
584# CONFIG_WDT is not set
585# CONFIG_RTC is not set 609# CONFIG_RTC is not set
586# CONFIG_GEN_RTC is not set 610# CONFIG_GEN_RTC is not set
587# CONFIG_DTLK is not set 611# CONFIG_DTLK is not set
@@ -597,6 +621,7 @@ CONFIG_WATCHDOG=y
597# CONFIG_SYNCLINK_CS is not set 621# CONFIG_SYNCLINK_CS is not set
598# CONFIG_CARDMAN_4000 is not set 622# CONFIG_CARDMAN_4000 is not set
599# CONFIG_CARDMAN_4040 is not set 623# CONFIG_CARDMAN_4040 is not set
624# CONFIG_GPIO_VR41XX is not set
600# CONFIG_RAW_DRIVER is not set 625# CONFIG_RAW_DRIVER is not set
601 626
602# 627#
@@ -632,10 +657,6 @@ CONFIG_WATCHDOG=y
632# 657#
633 658
634# 659#
635# Multimedia Capabilities Port drivers
636#
637
638#
639# Multimedia devices 660# Multimedia devices
640# 661#
641# CONFIG_VIDEO_DEV is not set 662# CONFIG_VIDEO_DEV is not set
@@ -667,6 +688,7 @@ CONFIG_DUMMY_CONSOLE=y
667# 688#
668# CONFIG_USB_ARCH_HAS_HCD is not set 689# CONFIG_USB_ARCH_HAS_HCD is not set
669# CONFIG_USB_ARCH_HAS_OHCI is not set 690# CONFIG_USB_ARCH_HAS_OHCI is not set
691# CONFIG_USB_ARCH_HAS_EHCI is not set
670 692
671# 693#
672# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 694# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -683,12 +705,30 @@ CONFIG_DUMMY_CONSOLE=y
683# CONFIG_MMC is not set 705# CONFIG_MMC is not set
684 706
685# 707#
708# LED devices
709#
710# CONFIG_NEW_LEDS is not set
711
712#
713# LED drivers
714#
715
716#
717# LED Triggers
718#
719
720#
686# InfiniBand support 721# InfiniBand support
687# 722#
688 723
689# 724#
690# SN Devices 725# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
726#
727
728#
729# Real Time Clock
691# 730#
731# CONFIG_RTC_CLASS is not set
692 732
693# 733#
694# File systems 734# File systems
@@ -710,7 +750,7 @@ CONFIG_FS_POSIX_ACL=y
710CONFIG_INOTIFY=y 750CONFIG_INOTIFY=y
711# CONFIG_QUOTA is not set 751# CONFIG_QUOTA is not set
712CONFIG_DNOTIFY=y 752CONFIG_DNOTIFY=y
713CONFIG_AUTOFS_FS=y 753# CONFIG_AUTOFS_FS is not set
714CONFIG_AUTOFS4_FS=y 754CONFIG_AUTOFS4_FS=y
715CONFIG_FUSE_FS=m 755CONFIG_FUSE_FS=m
716 756
@@ -733,10 +773,9 @@ CONFIG_FUSE_FS=m
733CONFIG_PROC_FS=y 773CONFIG_PROC_FS=y
734CONFIG_PROC_KCORE=y 774CONFIG_PROC_KCORE=y
735CONFIG_SYSFS=y 775CONFIG_SYSFS=y
736# CONFIG_TMPFS is not set 776CONFIG_TMPFS=y
737# CONFIG_HUGETLB_PAGE is not set 777# CONFIG_HUGETLB_PAGE is not set
738CONFIG_RAMFS=y 778CONFIG_RAMFS=y
739CONFIG_RELAYFS_FS=m
740# CONFIG_CONFIGFS_FS is not set 779# CONFIG_CONFIGFS_FS is not set
741 780
742# 781#
@@ -802,44 +841,20 @@ CONFIG_MSDOS_PARTITION=y
802# CONFIG_MAGIC_SYSRQ is not set 841# CONFIG_MAGIC_SYSRQ is not set
803# CONFIG_DEBUG_KERNEL is not set 842# CONFIG_DEBUG_KERNEL is not set
804CONFIG_LOG_BUF_SHIFT=14 843CONFIG_LOG_BUF_SHIFT=14
844# CONFIG_DEBUG_FS is not set
805CONFIG_CROSSCOMPILE=y 845CONFIG_CROSSCOMPILE=y
806CONFIG_CMDLINE="console=ttyVR0,19200 mem=16M" 846CONFIG_CMDLINE="console=ttyVR0,19200 mem=16M"
807 847
808# 848#
809# Security options 849# Security options
810# 850#
811CONFIG_KEYS=y 851# CONFIG_KEYS is not set
812CONFIG_KEYS_DEBUG_PROC_KEYS=y
813# CONFIG_SECURITY is not set 852# CONFIG_SECURITY is not set
814 853
815# 854#
816# Cryptographic options 855# Cryptographic options
817# 856#
818CONFIG_CRYPTO=y 857# CONFIG_CRYPTO is not set
819CONFIG_CRYPTO_HMAC=y
820CONFIG_CRYPTO_NULL=m
821CONFIG_CRYPTO_MD4=m
822CONFIG_CRYPTO_MD5=m
823CONFIG_CRYPTO_SHA1=m
824CONFIG_CRYPTO_SHA256=m
825CONFIG_CRYPTO_SHA512=m
826CONFIG_CRYPTO_WP512=m
827CONFIG_CRYPTO_TGR192=m
828CONFIG_CRYPTO_DES=m
829CONFIG_CRYPTO_BLOWFISH=m
830CONFIG_CRYPTO_TWOFISH=m
831CONFIG_CRYPTO_SERPENT=m
832CONFIG_CRYPTO_AES=m
833CONFIG_CRYPTO_CAST5=m
834CONFIG_CRYPTO_CAST6=m
835CONFIG_CRYPTO_TEA=m
836CONFIG_CRYPTO_ARC4=m
837CONFIG_CRYPTO_KHAZAD=m
838CONFIG_CRYPTO_ANUBIS=m
839CONFIG_CRYPTO_DEFLATE=m
840CONFIG_CRYPTO_MICHAEL_MIC=m
841CONFIG_CRYPTO_CRC32C=m
842# CONFIG_CRYPTO_TEST is not set
843 858
844# 859#
845# Hardware crypto devices 860# Hardware crypto devices
@@ -849,8 +864,6 @@ CONFIG_CRYPTO_CRC32C=m
849# Library routines 864# Library routines
850# 865#
851# CONFIG_CRC_CCITT is not set 866# CONFIG_CRC_CCITT is not set
852CONFIG_CRC16=m 867# CONFIG_CRC16 is not set
853CONFIG_CRC32=y 868CONFIG_CRC32=y
854CONFIG_LIBCRC32C=m 869# CONFIG_LIBCRC32C is not set
855CONFIG_ZLIB_INFLATE=m
856CONFIG_ZLIB_DEFLATE=m
diff --git a/arch/mips/configs/yosemite_defconfig b/arch/mips/configs/yosemite_defconfig
index 67457850941d..b52d709de962 100644
--- a/arch/mips/configs/yosemite_defconfig
+++ b/arch/mips/configs/yosemite_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:40:37 2006 4# Mon Apr 24 14:51:20 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -65,6 +65,8 @@ CONFIG_PMC_YOSEMITE=y
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66# CONFIG_HYPERTRANSPORT is not set 66# CONFIG_HYPERTRANSPORT is not set
67CONFIG_RWSEM_GENERIC_SPINLOCK=y 67CONFIG_RWSEM_GENERIC_SPINLOCK=y
68CONFIG_GENERIC_FIND_NEXT_BIT=y
69CONFIG_GENERIC_HWEIGHT=y
68CONFIG_GENERIC_CALIBRATE_DELAY=y 70CONFIG_GENERIC_CALIBRATE_DELAY=y
69CONFIG_DMA_COHERENT=y 71CONFIG_DMA_COHERENT=y
70CONFIG_CPU_BIG_ENDIAN=y 72CONFIG_CPU_BIG_ENDIAN=y
@@ -116,7 +118,6 @@ CONFIG_PAGE_SIZE_4KB=y
116CONFIG_CPU_HAS_PREFETCH=y 118CONFIG_CPU_HAS_PREFETCH=y
117# CONFIG_MIPS_MT is not set 119# CONFIG_MIPS_MT is not set
118# CONFIG_64BIT_PHYS_ADDR is not set 120# CONFIG_64BIT_PHYS_ADDR is not set
119# CONFIG_CPU_ADVANCED is not set
120CONFIG_CPU_HAS_LLSC=y 121CONFIG_CPU_HAS_LLSC=y
121CONFIG_CPU_HAS_SYNC=y 122CONFIG_CPU_HAS_SYNC=y
122CONFIG_GENERIC_HARDIRQS=y 123CONFIG_GENERIC_HARDIRQS=y
@@ -140,7 +141,6 @@ CONFIG_PREEMPT_BKL=y
140# Code maturity level options 141# Code maturity level options
141# 142#
142# CONFIG_EXPERIMENTAL is not set 143# CONFIG_EXPERIMENTAL is not set
143CONFIG_CLEAN_COMPILE=y
144CONFIG_LOCK_KERNEL=y 144CONFIG_LOCK_KERNEL=y
145CONFIG_INIT_ENV_ARG_LIMIT=32 145CONFIG_INIT_ENV_ARG_LIMIT=32
146 146
@@ -157,6 +157,7 @@ CONFIG_SYSCTL=y
157CONFIG_IKCONFIG=y 157CONFIG_IKCONFIG=y
158CONFIG_IKCONFIG_PROC=y 158CONFIG_IKCONFIG_PROC=y
159# CONFIG_CPUSETS is not set 159# CONFIG_CPUSETS is not set
160CONFIG_RELAY=y
160CONFIG_INITRAMFS_SOURCE="" 161CONFIG_INITRAMFS_SOURCE=""
161CONFIG_EMBEDDED=y 162CONFIG_EMBEDDED=y
162CONFIG_KALLSYMS=y 163CONFIG_KALLSYMS=y
@@ -170,10 +171,6 @@ CONFIG_BASE_FULL=y
170CONFIG_FUTEX=y 171CONFIG_FUTEX=y
171CONFIG_EPOLL=y 172CONFIG_EPOLL=y
172CONFIG_SHMEM=y 173CONFIG_SHMEM=y
173CONFIG_CC_ALIGN_FUNCTIONS=0
174CONFIG_CC_ALIGN_LABELS=0
175CONFIG_CC_ALIGN_LOOPS=0
176CONFIG_CC_ALIGN_JUMPS=0
177CONFIG_SLAB=y 174CONFIG_SLAB=y
178# CONFIG_TINY_SHMEM is not set 175# CONFIG_TINY_SHMEM is not set
179CONFIG_BASE_SMALL=0 176CONFIG_BASE_SMALL=0
@@ -184,7 +181,6 @@ CONFIG_BASE_SMALL=0
184# 181#
185CONFIG_MODULES=y 182CONFIG_MODULES=y
186CONFIG_MODULE_UNLOAD=y 183CONFIG_MODULE_UNLOAD=y
187CONFIG_OBSOLETE_MODPARM=y
188# CONFIG_MODVERSIONS is not set 184# CONFIG_MODVERSIONS is not set
189# CONFIG_MODULE_SRCVERSION_ALL is not set 185# CONFIG_MODULE_SRCVERSION_ALL is not set
190CONFIG_KMOD=y 186CONFIG_KMOD=y
@@ -194,6 +190,8 @@ CONFIG_STOP_MACHINE=y
194# Block layer 190# Block layer
195# 191#
196# CONFIG_LBD is not set 192# CONFIG_LBD is not set
193# CONFIG_BLK_DEV_IO_TRACE is not set
194# CONFIG_LSF is not set
197 195
198# 196#
199# IO Schedulers 197# IO Schedulers
@@ -213,7 +211,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
213# 211#
214CONFIG_HW_HAS_PCI=y 212CONFIG_HW_HAS_PCI=y
215CONFIG_PCI=y 213CONFIG_PCI=y
216CONFIG_PCI_LEGACY_PROC=y
217# CONFIG_PCI_DEBUG is not set 214# CONFIG_PCI_DEBUG is not set
218CONFIG_MMU=y 215CONFIG_MMU=y
219 216
@@ -241,6 +238,7 @@ CONFIG_NET=y
241# 238#
242# Networking options 239# Networking options
243# 240#
241# CONFIG_NETDEBUG is not set
244CONFIG_PACKET=m 242CONFIG_PACKET=m
245CONFIG_PACKET_MMAP=y 243CONFIG_PACKET_MMAP=y
246CONFIG_UNIX=y 244CONFIG_UNIX=y
@@ -261,16 +259,19 @@ CONFIG_IP_PNP_BOOTP=y
261# CONFIG_INET_AH is not set 259# CONFIG_INET_AH is not set
262# CONFIG_INET_ESP is not set 260# CONFIG_INET_ESP is not set
263# CONFIG_INET_IPCOMP is not set 261# CONFIG_INET_IPCOMP is not set
264CONFIG_INET_TUNNEL=m 262# CONFIG_INET_XFRM_TUNNEL is not set
263# CONFIG_INET_TUNNEL is not set
265CONFIG_INET_DIAG=y 264CONFIG_INET_DIAG=y
266CONFIG_INET_TCP_DIAG=y 265CONFIG_INET_TCP_DIAG=y
267# CONFIG_TCP_CONG_ADVANCED is not set 266# CONFIG_TCP_CONG_ADVANCED is not set
268CONFIG_TCP_CONG_BIC=y 267CONFIG_TCP_CONG_BIC=y
269CONFIG_IPV6=m 268CONFIG_IPV6=m
270CONFIG_IPV6_PRIVACY=y 269CONFIG_IPV6_PRIVACY=y
270CONFIG_IPV6_ROUTER_PREF=y
271CONFIG_INET6_AH=m 271CONFIG_INET6_AH=m
272CONFIG_INET6_ESP=m 272CONFIG_INET6_ESP=m
273CONFIG_INET6_IPCOMP=m 273CONFIG_INET6_IPCOMP=m
274CONFIG_INET6_XFRM_TUNNEL=m
274CONFIG_INET6_TUNNEL=m 275CONFIG_INET6_TUNNEL=m
275CONFIG_IPV6_TUNNEL=m 276CONFIG_IPV6_TUNNEL=m
276# CONFIG_NETFILTER is not set 277# CONFIG_NETFILTER is not set
@@ -340,10 +341,9 @@ CONFIG_CONNECTOR=m
340# CONFIG_BLK_DEV_NBD is not set 341# CONFIG_BLK_DEV_NBD is not set
341# CONFIG_BLK_DEV_SX8 is not set 342# CONFIG_BLK_DEV_SX8 is not set
342# CONFIG_BLK_DEV_RAM is not set 343# CONFIG_BLK_DEV_RAM is not set
343CONFIG_BLK_DEV_RAM_COUNT=16 344# CONFIG_BLK_DEV_INITRD is not set
344CONFIG_CDROM_PKTCDVD=m 345CONFIG_CDROM_PKTCDVD=m
345CONFIG_CDROM_PKTCDVD_BUFFERS=8 346CONFIG_CDROM_PKTCDVD_BUFFERS=8
346# CONFIG_CDROM_PKTCDVD_WCACHE is not set
347CONFIG_ATA_OVER_ETH=m 347CONFIG_ATA_OVER_ETH=m
348 348
349# 349#
@@ -433,6 +433,7 @@ CONFIG_MII=y
433# CONFIG_HAMACHI is not set 433# CONFIG_HAMACHI is not set
434# CONFIG_R8169 is not set 434# CONFIG_R8169 is not set
435# CONFIG_SIS190 is not set 435# CONFIG_SIS190 is not set
436# CONFIG_SKGE is not set
436# CONFIG_SK98LIN is not set 437# CONFIG_SK98LIN is not set
437# CONFIG_TIGON3 is not set 438# CONFIG_TIGON3 is not set
438# CONFIG_BNX2 is not set 439# CONFIG_BNX2 is not set
@@ -497,6 +498,7 @@ CONFIG_TITAN_GE=y
497# 498#
498CONFIG_SERIAL_8250=y 499CONFIG_SERIAL_8250=y
499CONFIG_SERIAL_8250_CONSOLE=y 500CONFIG_SERIAL_8250_CONSOLE=y
501CONFIG_SERIAL_8250_PCI=y
500CONFIG_SERIAL_8250_NR_UARTS=4 502CONFIG_SERIAL_8250_NR_UARTS=4
501CONFIG_SERIAL_8250_RUNTIME_UARTS=4 503CONFIG_SERIAL_8250_RUNTIME_UARTS=4
502# CONFIG_SERIAL_8250_EXTENDED is not set 504# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -506,6 +508,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
506# 508#
507CONFIG_SERIAL_CORE=y 509CONFIG_SERIAL_CORE=y
508CONFIG_SERIAL_CORE_CONSOLE=y 510CONFIG_SERIAL_CORE_CONSOLE=y
511# CONFIG_SERIAL_JSM is not set
509CONFIG_UNIX98_PTYS=y 512CONFIG_UNIX98_PTYS=y
510CONFIG_LEGACY_PTYS=y 513CONFIG_LEGACY_PTYS=y
511CONFIG_LEGACY_PTY_COUNT=256 514CONFIG_LEGACY_PTY_COUNT=256
@@ -563,10 +566,6 @@ CONFIG_GEN_RTC_X=y
563# 566#
564 567
565# 568#
566# Multimedia Capabilities Port drivers
567#
568
569#
570# Multimedia devices 569# Multimedia devices
571# 570#
572# CONFIG_VIDEO_DEV is not set 571# CONFIG_VIDEO_DEV is not set
@@ -591,6 +590,7 @@ CONFIG_GEN_RTC_X=y
591# 590#
592CONFIG_USB_ARCH_HAS_HCD=y 591CONFIG_USB_ARCH_HAS_HCD=y
593CONFIG_USB_ARCH_HAS_OHCI=y 592CONFIG_USB_ARCH_HAS_OHCI=y
593CONFIG_USB_ARCH_HAS_EHCI=y
594# CONFIG_USB is not set 594# CONFIG_USB is not set
595 595
596# 596#
@@ -608,12 +608,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y
608# CONFIG_MMC is not set 608# CONFIG_MMC is not set
609 609
610# 610#
611# LED devices
612#
613# CONFIG_NEW_LEDS is not set
614
615#
616# LED drivers
617#
618
619#
620# LED Triggers
621#
622
623#
611# InfiniBand support 624# InfiniBand support
612# 625#
613# CONFIG_INFINIBAND is not set 626# CONFIG_INFINIBAND is not set
614 627
615# 628#
616# SN Devices 629# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
630#
631
632#
633# Real Time Clock
617# 634#
618 635
619# 636#
@@ -656,7 +673,6 @@ CONFIG_SYSFS=y
656CONFIG_TMPFS=y 673CONFIG_TMPFS=y
657# CONFIG_HUGETLB_PAGE is not set 674# CONFIG_HUGETLB_PAGE is not set
658CONFIG_RAMFS=y 675CONFIG_RAMFS=y
659CONFIG_RELAYFS_FS=m
660 676
661# 677#
662# Miscellaneous filesystems 678# Miscellaneous filesystems
diff --git a/arch/mips/defconfig b/arch/mips/defconfig
index 42d5cd7927cb..607e2985ffe3 100644
--- a/arch/mips/defconfig
+++ b/arch/mips/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1 3# Linux kernel version: 2.6.17-rc2
4# Fri Jan 27 15:39:51 2006 4# Mon Apr 24 14:50:54 2006
5# 5#
6CONFIG_MIPS=y 6CONFIG_MIPS=y
7 7
@@ -64,6 +64,8 @@ CONFIG_SGI_IP22=y
64# CONFIG_TOSHIBA_RBTX4927 is not set 64# CONFIG_TOSHIBA_RBTX4927 is not set
65# CONFIG_TOSHIBA_RBTX4938 is not set 65# CONFIG_TOSHIBA_RBTX4938 is not set
66CONFIG_RWSEM_GENERIC_SPINLOCK=y 66CONFIG_RWSEM_GENERIC_SPINLOCK=y
67CONFIG_GENERIC_FIND_NEXT_BIT=y
68CONFIG_GENERIC_HWEIGHT=y
67CONFIG_GENERIC_CALIBRATE_DELAY=y 69CONFIG_GENERIC_CALIBRATE_DELAY=y
68CONFIG_ARC=y 70CONFIG_ARC=y
69CONFIG_DMA_NONCOHERENT=y 71CONFIG_DMA_NONCOHERENT=y
@@ -121,7 +123,6 @@ CONFIG_BOARD_SCACHE=y
121CONFIG_IP22_CPU_SCACHE=y 123CONFIG_IP22_CPU_SCACHE=y
122# CONFIG_MIPS_MT is not set 124# CONFIG_MIPS_MT is not set
123# CONFIG_64BIT_PHYS_ADDR is not set 125# CONFIG_64BIT_PHYS_ADDR is not set
124# CONFIG_CPU_ADVANCED is not set
125CONFIG_CPU_HAS_LLSC=y 126CONFIG_CPU_HAS_LLSC=y
126CONFIG_CPU_HAS_SYNC=y 127CONFIG_CPU_HAS_SYNC=y
127CONFIG_GENERIC_HARDIRQS=y 128CONFIG_GENERIC_HARDIRQS=y
@@ -143,7 +144,6 @@ CONFIG_PREEMPT_VOLUNTARY=y
143# Code maturity level options 144# Code maturity level options
144# 145#
145CONFIG_EXPERIMENTAL=y 146CONFIG_EXPERIMENTAL=y
146CONFIG_CLEAN_COMPILE=y
147CONFIG_BROKEN_ON_SMP=y 147CONFIG_BROKEN_ON_SMP=y
148CONFIG_INIT_ENV_ARG_LIMIT=32 148CONFIG_INIT_ENV_ARG_LIMIT=32
149 149
@@ -160,6 +160,7 @@ CONFIG_SYSCTL=y
160# CONFIG_AUDIT is not set 160# CONFIG_AUDIT is not set
161CONFIG_IKCONFIG=y 161CONFIG_IKCONFIG=y
162CONFIG_IKCONFIG_PROC=y 162CONFIG_IKCONFIG_PROC=y
163CONFIG_RELAY=y
163CONFIG_INITRAMFS_SOURCE="" 164CONFIG_INITRAMFS_SOURCE=""
164# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 165# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
165CONFIG_EMBEDDED=y 166CONFIG_EMBEDDED=y
@@ -173,10 +174,6 @@ CONFIG_BASE_FULL=y
173CONFIG_FUTEX=y 174CONFIG_FUTEX=y
174CONFIG_EPOLL=y 175CONFIG_EPOLL=y
175CONFIG_SHMEM=y 176CONFIG_SHMEM=y
176CONFIG_CC_ALIGN_FUNCTIONS=0
177CONFIG_CC_ALIGN_LABELS=0
178CONFIG_CC_ALIGN_LOOPS=0
179CONFIG_CC_ALIGN_JUMPS=0
180CONFIG_SLAB=y 177CONFIG_SLAB=y
181# CONFIG_TINY_SHMEM is not set 178# CONFIG_TINY_SHMEM is not set
182CONFIG_BASE_SMALL=0 179CONFIG_BASE_SMALL=0
@@ -188,7 +185,6 @@ CONFIG_BASE_SMALL=0
188CONFIG_MODULES=y 185CONFIG_MODULES=y
189CONFIG_MODULE_UNLOAD=y 186CONFIG_MODULE_UNLOAD=y
190# CONFIG_MODULE_FORCE_UNLOAD is not set 187# CONFIG_MODULE_FORCE_UNLOAD is not set
191CONFIG_OBSOLETE_MODPARM=y
192CONFIG_MODVERSIONS=y 188CONFIG_MODVERSIONS=y
193CONFIG_MODULE_SRCVERSION_ALL=y 189CONFIG_MODULE_SRCVERSION_ALL=y
194CONFIG_KMOD=y 190CONFIG_KMOD=y
@@ -197,6 +193,8 @@ CONFIG_KMOD=y
197# Block layer 193# Block layer
198# 194#
199# CONFIG_LBD is not set 195# CONFIG_LBD is not set
196# CONFIG_BLK_DEV_IO_TRACE is not set
197# CONFIG_LSF is not set
200 198
201# 199#
202# IO Schedulers 200# IO Schedulers
@@ -242,6 +240,7 @@ CONFIG_NET=y
242# 240#
243# Networking options 241# Networking options
244# 242#
243# CONFIG_NETDEBUG is not set
245CONFIG_PACKET=y 244CONFIG_PACKET=y
246CONFIG_PACKET_MMAP=y 245CONFIG_PACKET_MMAP=y
247CONFIG_UNIX=y 246CONFIG_UNIX=y
@@ -264,6 +263,7 @@ CONFIG_IP_PNP_BOOTP=y
264CONFIG_INET_AH=m 263CONFIG_INET_AH=m
265CONFIG_INET_ESP=m 264CONFIG_INET_ESP=m
266CONFIG_INET_IPCOMP=m 265CONFIG_INET_IPCOMP=m
266CONFIG_INET_XFRM_TUNNEL=m
267CONFIG_INET_TUNNEL=m 267CONFIG_INET_TUNNEL=m
268CONFIG_INET_DIAG=y 268CONFIG_INET_DIAG=y
269CONFIG_INET_TCP_DIAG=y 269CONFIG_INET_TCP_DIAG=y
@@ -305,9 +305,12 @@ CONFIG_IP_VS_NQ=m
305CONFIG_IP_VS_FTP=m 305CONFIG_IP_VS_FTP=m
306CONFIG_IPV6=m 306CONFIG_IPV6=m
307CONFIG_IPV6_PRIVACY=y 307CONFIG_IPV6_PRIVACY=y
308CONFIG_IPV6_ROUTER_PREF=y
309CONFIG_IPV6_ROUTE_INFO=y
308CONFIG_INET6_AH=m 310CONFIG_INET6_AH=m
309CONFIG_INET6_ESP=m 311CONFIG_INET6_ESP=m
310CONFIG_INET6_IPCOMP=m 312CONFIG_INET6_IPCOMP=m
313CONFIG_INET6_XFRM_TUNNEL=m
311CONFIG_INET6_TUNNEL=m 314CONFIG_INET6_TUNNEL=m
312CONFIG_IPV6_TUNNEL=m 315CONFIG_IPV6_TUNNEL=m
313CONFIG_NETFILTER=y 316CONFIG_NETFILTER=y
@@ -330,11 +333,14 @@ CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
330CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 333CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
331CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 334CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
332CONFIG_NETFILTER_XT_MATCH_DCCP=m 335CONFIG_NETFILTER_XT_MATCH_DCCP=m
336CONFIG_NETFILTER_XT_MATCH_ESP=m
333CONFIG_NETFILTER_XT_MATCH_HELPER=m 337CONFIG_NETFILTER_XT_MATCH_HELPER=m
334CONFIG_NETFILTER_XT_MATCH_LENGTH=m 338CONFIG_NETFILTER_XT_MATCH_LENGTH=m
335CONFIG_NETFILTER_XT_MATCH_LIMIT=m 339CONFIG_NETFILTER_XT_MATCH_LIMIT=m
336CONFIG_NETFILTER_XT_MATCH_MAC=m 340CONFIG_NETFILTER_XT_MATCH_MAC=m
337CONFIG_NETFILTER_XT_MATCH_MARK=m 341CONFIG_NETFILTER_XT_MATCH_MARK=m
342CONFIG_NETFILTER_XT_MATCH_POLICY=m
343CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
338CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m 344CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
339CONFIG_NETFILTER_XT_MATCH_REALM=m 345CONFIG_NETFILTER_XT_MATCH_REALM=m
340CONFIG_NETFILTER_XT_MATCH_SCTP=m 346CONFIG_NETFILTER_XT_MATCH_SCTP=m
@@ -357,20 +363,19 @@ CONFIG_IP_NF_IRC=m
357CONFIG_IP_NF_TFTP=m 363CONFIG_IP_NF_TFTP=m
358CONFIG_IP_NF_AMANDA=m 364CONFIG_IP_NF_AMANDA=m
359CONFIG_IP_NF_PPTP=m 365CONFIG_IP_NF_PPTP=m
366CONFIG_IP_NF_H323=m
360CONFIG_IP_NF_QUEUE=m 367CONFIG_IP_NF_QUEUE=m
361CONFIG_IP_NF_IPTABLES=m 368CONFIG_IP_NF_IPTABLES=m
362CONFIG_IP_NF_MATCH_IPRANGE=m 369CONFIG_IP_NF_MATCH_IPRANGE=m
363CONFIG_IP_NF_MATCH_MULTIPORT=m
364CONFIG_IP_NF_MATCH_TOS=m 370CONFIG_IP_NF_MATCH_TOS=m
365CONFIG_IP_NF_MATCH_RECENT=m 371CONFIG_IP_NF_MATCH_RECENT=m
366CONFIG_IP_NF_MATCH_ECN=m 372CONFIG_IP_NF_MATCH_ECN=m
367CONFIG_IP_NF_MATCH_DSCP=m 373CONFIG_IP_NF_MATCH_DSCP=m
368CONFIG_IP_NF_MATCH_AH_ESP=m 374CONFIG_IP_NF_MATCH_AH=m
369CONFIG_IP_NF_MATCH_TTL=m 375CONFIG_IP_NF_MATCH_TTL=m
370CONFIG_IP_NF_MATCH_OWNER=m 376CONFIG_IP_NF_MATCH_OWNER=m
371CONFIG_IP_NF_MATCH_ADDRTYPE=m 377CONFIG_IP_NF_MATCH_ADDRTYPE=m
372CONFIG_IP_NF_MATCH_HASHLIMIT=m 378CONFIG_IP_NF_MATCH_HASHLIMIT=m
373CONFIG_IP_NF_MATCH_POLICY=m
374CONFIG_IP_NF_FILTER=m 379CONFIG_IP_NF_FILTER=m
375CONFIG_IP_NF_TARGET_REJECT=m 380CONFIG_IP_NF_TARGET_REJECT=m
376CONFIG_IP_NF_TARGET_LOG=m 381CONFIG_IP_NF_TARGET_LOG=m
@@ -388,6 +393,7 @@ CONFIG_IP_NF_NAT_FTP=m
388CONFIG_IP_NF_NAT_TFTP=m 393CONFIG_IP_NF_NAT_TFTP=m
389CONFIG_IP_NF_NAT_AMANDA=m 394CONFIG_IP_NF_NAT_AMANDA=m
390CONFIG_IP_NF_NAT_PPTP=m 395CONFIG_IP_NF_NAT_PPTP=m
396CONFIG_IP_NF_NAT_H323=m
391CONFIG_IP_NF_MANGLE=m 397CONFIG_IP_NF_MANGLE=m
392CONFIG_IP_NF_TARGET_TOS=m 398CONFIG_IP_NF_TARGET_TOS=m
393CONFIG_IP_NF_TARGET_ECN=m 399CONFIG_IP_NF_TARGET_ECN=m
@@ -408,12 +414,10 @@ CONFIG_IP6_NF_MATCH_RT=m
408CONFIG_IP6_NF_MATCH_OPTS=m 414CONFIG_IP6_NF_MATCH_OPTS=m
409CONFIG_IP6_NF_MATCH_FRAG=m 415CONFIG_IP6_NF_MATCH_FRAG=m
410CONFIG_IP6_NF_MATCH_HL=m 416CONFIG_IP6_NF_MATCH_HL=m
411CONFIG_IP6_NF_MATCH_MULTIPORT=m
412CONFIG_IP6_NF_MATCH_OWNER=m 417CONFIG_IP6_NF_MATCH_OWNER=m
413CONFIG_IP6_NF_MATCH_IPV6HEADER=m 418CONFIG_IP6_NF_MATCH_IPV6HEADER=m
414CONFIG_IP6_NF_MATCH_AHESP=m 419CONFIG_IP6_NF_MATCH_AH=m
415CONFIG_IP6_NF_MATCH_EUI64=m 420CONFIG_IP6_NF_MATCH_EUI64=m
416CONFIG_IP6_NF_MATCH_POLICY=m
417CONFIG_IP6_NF_FILTER=m 421CONFIG_IP6_NF_FILTER=m
418CONFIG_IP6_NF_TARGET_LOG=m 422CONFIG_IP6_NF_TARGET_LOG=m
419CONFIG_IP6_NF_TARGET_REJECT=m 423CONFIG_IP6_NF_TARGET_REJECT=m
@@ -435,6 +439,11 @@ CONFIG_IP_SCTP=m
435# CONFIG_SCTP_HMAC_NONE is not set 439# CONFIG_SCTP_HMAC_NONE is not set
436# CONFIG_SCTP_HMAC_SHA1 is not set 440# CONFIG_SCTP_HMAC_SHA1 is not set
437CONFIG_SCTP_HMAC_MD5=y 441CONFIG_SCTP_HMAC_MD5=y
442
443#
444# TIPC Configuration (EXPERIMENTAL)
445#
446# CONFIG_TIPC is not set
438# CONFIG_ATM is not set 447# CONFIG_ATM is not set
439# CONFIG_BRIDGE is not set 448# CONFIG_BRIDGE is not set
440# CONFIG_VLAN_8021Q is not set 449# CONFIG_VLAN_8021Q is not set
@@ -444,11 +453,6 @@ CONFIG_SCTP_HMAC_MD5=y
444# CONFIG_ATALK is not set 453# CONFIG_ATALK is not set
445# CONFIG_X25 is not set 454# CONFIG_X25 is not set
446# CONFIG_LAPB is not set 455# CONFIG_LAPB is not set
447
448#
449# TIPC Configuration (EXPERIMENTAL)
450#
451# CONFIG_TIPC is not set
452CONFIG_NET_DIVERT=y 456CONFIG_NET_DIVERT=y
453# CONFIG_ECONET is not set 457# CONFIG_ECONET is not set
454# CONFIG_WAN_ROUTER is not set 458# CONFIG_WAN_ROUTER is not set
@@ -508,6 +512,9 @@ CONFIG_IEEE80211=m
508# CONFIG_IEEE80211_DEBUG is not set 512# CONFIG_IEEE80211_DEBUG is not set
509CONFIG_IEEE80211_CRYPT_WEP=m 513CONFIG_IEEE80211_CRYPT_WEP=m
510CONFIG_IEEE80211_CRYPT_CCMP=m 514CONFIG_IEEE80211_CRYPT_CCMP=m
515CONFIG_IEEE80211_SOFTMAC=m
516# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
517CONFIG_WIRELESS_EXT=y
511 518
512# 519#
513# Device Drivers 520# Device Drivers
@@ -546,7 +553,7 @@ CONFIG_CONNECTOR=m
546# CONFIG_BLK_DEV_LOOP is not set 553# CONFIG_BLK_DEV_LOOP is not set
547# CONFIG_BLK_DEV_NBD is not set 554# CONFIG_BLK_DEV_NBD is not set
548# CONFIG_BLK_DEV_RAM is not set 555# CONFIG_BLK_DEV_RAM is not set
549CONFIG_BLK_DEV_RAM_COUNT=16 556# CONFIG_BLK_DEV_INITRD is not set
550CONFIG_CDROM_PKTCDVD=m 557CONFIG_CDROM_PKTCDVD=m
551CONFIG_CDROM_PKTCDVD_BUFFERS=8 558CONFIG_CDROM_PKTCDVD_BUFFERS=8
552# CONFIG_CDROM_PKTCDVD_WCACHE is not set 559# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -812,10 +819,6 @@ CONFIG_MAX_RAW_DEVS=256
812# 819#
813 820
814# 821#
815# Multimedia Capabilities Port drivers
816#
817
818#
819# Multimedia devices 822# Multimedia devices
820# 823#
821# CONFIG_VIDEO_DEV is not set 824# CONFIG_VIDEO_DEV is not set
@@ -857,6 +860,7 @@ CONFIG_LOGO_SGI_CLUT224=y
857# 860#
858# CONFIG_USB_ARCH_HAS_HCD is not set 861# CONFIG_USB_ARCH_HAS_HCD is not set
859# CONFIG_USB_ARCH_HAS_OHCI is not set 862# CONFIG_USB_ARCH_HAS_OHCI is not set
863# CONFIG_USB_ARCH_HAS_EHCI is not set
860 864
861# 865#
862# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 866# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -873,12 +877,30 @@ CONFIG_LOGO_SGI_CLUT224=y
873# CONFIG_MMC is not set 877# CONFIG_MMC is not set
874 878
875# 879#
880# LED devices
881#
882# CONFIG_NEW_LEDS is not set
883
884#
885# LED drivers
886#
887
888#
889# LED Triggers
890#
891
892#
876# InfiniBand support 893# InfiniBand support
877# 894#
878 895
879# 896#
880# SN Devices 897# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
898#
899
900#
901# Real Time Clock
881# 902#
903# CONFIG_RTC_CLASS is not set
882 904
883# 905#
884# File systems 906# File systems
@@ -944,7 +966,6 @@ CONFIG_SYSFS=y
944# CONFIG_TMPFS is not set 966# CONFIG_TMPFS is not set
945# CONFIG_HUGETLB_PAGE is not set 967# CONFIG_HUGETLB_PAGE is not set
946CONFIG_RAMFS=y 968CONFIG_RAMFS=y
947CONFIG_RELAYFS_FS=m
948# CONFIG_CONFIGFS_FS is not set 969# CONFIG_CONFIGFS_FS is not set
949 970
950# 971#
@@ -963,7 +984,6 @@ CONFIG_EFS_FS=m
963# CONFIG_QNX4FS_FS is not set 984# CONFIG_QNX4FS_FS is not set
964# CONFIG_SYSV_FS is not set 985# CONFIG_SYSV_FS is not set
965CONFIG_UFS_FS=m 986CONFIG_UFS_FS=m
966# CONFIG_UFS_FS_WRITE is not set
967 987
968# 988#
969# Network File Systems 989# Network File Systems
@@ -1078,6 +1098,7 @@ CONFIG_NLS_UTF8=m
1078# CONFIG_MAGIC_SYSRQ is not set 1098# CONFIG_MAGIC_SYSRQ is not set
1079# CONFIG_DEBUG_KERNEL is not set 1099# CONFIG_DEBUG_KERNEL is not set
1080CONFIG_LOG_BUF_SHIFT=14 1100CONFIG_LOG_BUF_SHIFT=14
1101# CONFIG_DEBUG_FS is not set
1081CONFIG_CROSSCOMPILE=y 1102CONFIG_CROSSCOMPILE=y
1082CONFIG_CMDLINE="" 1103CONFIG_CMDLINE=""
1083 1104
diff --git a/arch/mips/kernel/branch.c b/arch/mips/kernel/branch.c
index 374de839558d..b6232d9033cb 100644
--- a/arch/mips/kernel/branch.c
+++ b/arch/mips/kernel/branch.c
@@ -184,7 +184,7 @@ int __compute_return_epc(struct pt_regs *regs)
184 bit = (insn.i_format.rt >> 2); 184 bit = (insn.i_format.rt >> 2);
185 bit += (bit != 0); 185 bit += (bit != 0);
186 bit += 23; 186 bit += 23;
187 switch (insn.i_format.rt) { 187 switch (insn.i_format.rt & 3) {
188 case 0: /* bc1f */ 188 case 0: /* bc1f */
189 case 2: /* bc1fl */ 189 case 2: /* bc1fl */
190 if (~fcr31 & (1 << bit)) 190 if (~fcr31 & (1 << bit))
diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
index 7c953bcc5f6a..a7d2bb3cf835 100644
--- a/arch/mips/kernel/linux32.c
+++ b/arch/mips/kernel/linux32.c
@@ -356,73 +356,13 @@ asmlinkage int sys32_llseek(unsigned int fd, unsigned int offset_high,
356asmlinkage ssize_t sys32_pread(unsigned int fd, char __user * buf, 356asmlinkage ssize_t sys32_pread(unsigned int fd, char __user * buf,
357 size_t count, u32 unused, u64 a4, u64 a5) 357 size_t count, u32 unused, u64 a4, u64 a5)
358{ 358{
359 ssize_t ret; 359 return sys_pread64(fd, buf, count, merge_64(a4, a5));
360 struct file * file;
361 ssize_t (*read)(struct file *, char __user *, size_t, loff_t *);
362 loff_t pos;
363
364 ret = -EBADF;
365 file = fget(fd);
366 if (!file)
367 goto bad_file;
368 if (!(file->f_mode & FMODE_READ))
369 goto out;
370 pos = merge_64(a4, a5);
371 ret = rw_verify_area(READ, file, &pos, count);
372 if (ret < 0)
373 goto out;
374 ret = -EINVAL;
375 if (!file->f_op || !(read = file->f_op->read))
376 goto out;
377 if (pos < 0)
378 goto out;
379 ret = -ESPIPE;
380 if (!(file->f_mode & FMODE_PREAD))
381 goto out;
382 ret = read(file, buf, count, &pos);
383 if (ret > 0)
384 dnotify_parent(file->f_dentry, DN_ACCESS);
385out:
386 fput(file);
387bad_file:
388 return ret;
389} 360}
390 361
391asmlinkage ssize_t sys32_pwrite(unsigned int fd, const char __user * buf, 362asmlinkage ssize_t sys32_pwrite(unsigned int fd, const char __user * buf,
392 size_t count, u32 unused, u64 a4, u64 a5) 363 size_t count, u32 unused, u64 a4, u64 a5)
393{ 364{
394 ssize_t ret; 365 return sys_pwrite64(fd, buf, count, merge_64(a4, a5));
395 struct file * file;
396 ssize_t (*write)(struct file *, const char __user *, size_t, loff_t *);
397 loff_t pos;
398
399 ret = -EBADF;
400 file = fget(fd);
401 if (!file)
402 goto bad_file;
403 if (!(file->f_mode & FMODE_WRITE))
404 goto out;
405 pos = merge_64(a4, a5);
406 ret = rw_verify_area(WRITE, file, &pos, count);
407 if (ret < 0)
408 goto out;
409 ret = -EINVAL;
410 if (!file->f_op || !(write = file->f_op->write))
411 goto out;
412 if (pos < 0)
413 goto out;
414
415 ret = -ESPIPE;
416 if (!(file->f_mode & FMODE_PWRITE))
417 goto out;
418
419 ret = write(file, buf, count, &pos);
420 if (ret > 0)
421 dnotify_parent(file->f_dentry, DN_MODIFY);
422out:
423 fput(file);
424bad_file:
425 return ret;
426} 366}
427 367
428asmlinkage int sys32_sched_rr_get_interval(compat_pid_t pid, 368asmlinkage int sys32_sched_rr_get_interval(compat_pid_t pid,
diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c
index f3106d0771b0..9b4733c12395 100644
--- a/arch/mips/kernel/ptrace.c
+++ b/arch/mips/kernel/ptrace.c
@@ -483,7 +483,7 @@ static inline int audit_arch(void)
483asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit) 483asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit)
484{ 484{
485 if (unlikely(current->audit_context) && entryexit) 485 if (unlikely(current->audit_context) && entryexit)
486 audit_syscall_exit(current, AUDITSC_RESULT(regs->regs[2]), 486 audit_syscall_exit(AUDITSC_RESULT(regs->regs[2]),
487 regs->regs[2]); 487 regs->regs[2]);
488 488
489 if (!(current->ptrace & PT_PTRACED)) 489 if (!(current->ptrace & PT_PTRACED))
@@ -507,7 +507,7 @@ asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit)
507 } 507 }
508 out: 508 out:
509 if (unlikely(current->audit_context) && !entryexit) 509 if (unlikely(current->audit_context) && !entryexit)
510 audit_syscall_entry(current, audit_arch(), regs->regs[2], 510 audit_syscall_entry(audit_arch(), regs->regs[2],
511 regs->regs[4], regs->regs[5], 511 regs->regs[4], regs->regs[5],
512 regs->regs[6], regs->regs[7]); 512 regs->regs[6], regs->regs[7]);
513} 513}
diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c
index 6179805af9f0..caf777f83289 100644
--- a/arch/mips/kernel/rtlx.c
+++ b/arch/mips/kernel/rtlx.c
@@ -398,15 +398,14 @@ ssize_t rtlx_write(int index, void *buffer, size_t count, int user)
398 398
399static int file_open(struct inode *inode, struct file *filp) 399static int file_open(struct inode *inode, struct file *filp)
400{ 400{
401 int minor = MINOR(inode->i_rdev); 401 int minor = iminor(inode);
402 402
403 return rtlx_open(minor, (filp->f_flags & O_NONBLOCK) ? 0 : 1); 403 return rtlx_open(minor, (filp->f_flags & O_NONBLOCK) ? 0 : 1);
404} 404}
405 405
406static int file_release(struct inode *inode, struct file *filp) 406static int file_release(struct inode *inode, struct file *filp)
407{ 407{
408 int minor; 408 int minor = iminor(inode);
409 minor = MINOR(inode->i_rdev);
410 409
411 return rtlx_release(minor); 410 return rtlx_release(minor);
412} 411}
@@ -416,7 +415,7 @@ static unsigned int file_poll(struct file *file, poll_table * wait)
416 int minor; 415 int minor;
417 unsigned int mask = 0; 416 unsigned int mask = 0;
418 417
419 minor = MINOR(file->f_dentry->d_inode->i_rdev); 418 minor = iminor(file->f_dentry->d_inode);
420 419
421 poll_wait(file, &channel_wqs[minor].rt_queue, wait); 420 poll_wait(file, &channel_wqs[minor].rt_queue, wait);
422 poll_wait(file, &channel_wqs[minor].lx_queue, wait); 421 poll_wait(file, &channel_wqs[minor].lx_queue, wait);
@@ -438,7 +437,7 @@ static unsigned int file_poll(struct file *file, poll_table * wait)
438static ssize_t file_read(struct file *file, char __user * buffer, size_t count, 437static ssize_t file_read(struct file *file, char __user * buffer, size_t count,
439 loff_t * ppos) 438 loff_t * ppos)
440{ 439{
441 int minor = MINOR(file->f_dentry->d_inode->i_rdev); 440 int minor = iminor(file->f_dentry->d_inode);
442 441
443 /* data available? */ 442 /* data available? */
444 if (!rtlx_read_poll(minor, (file->f_flags & O_NONBLOCK) ? 0 : 1)) { 443 if (!rtlx_read_poll(minor, (file->f_flags & O_NONBLOCK) ? 0 : 1)) {
@@ -455,7 +454,7 @@ static ssize_t file_write(struct file *file, const char __user * buffer,
455 struct rtlx_channel *rt; 454 struct rtlx_channel *rt;
456 DECLARE_WAITQUEUE(wait, current); 455 DECLARE_WAITQUEUE(wait, current);
457 456
458 minor = MINOR(file->f_dentry->d_inode->i_rdev); 457 minor = iminor(file->f_dentry->d_inode);
459 rt = &rtlx->channel[minor]; 458 rt = &rtlx->channel[minor];
460 459
461 /* any space left... */ 460 /* any space left... */
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c
index 80ffaa6d50ad..85d7df7b18e1 100644
--- a/arch/mips/kernel/vpe.c
+++ b/arch/mips/kernel/vpe.c
@@ -1072,7 +1072,7 @@ static int vpe_open(struct inode *inode, struct file *filp)
1072 struct vpe_notifications *not; 1072 struct vpe_notifications *not;
1073 1073
1074 /* assume only 1 device at the mo. */ 1074 /* assume only 1 device at the mo. */
1075 if ((minor = MINOR(inode->i_rdev)) != 1) { 1075 if ((minor = iminor(inode)) != 1) {
1076 printk(KERN_WARNING "VPE loader: only vpe1 is supported\n"); 1076 printk(KERN_WARNING "VPE loader: only vpe1 is supported\n");
1077 return -ENODEV; 1077 return -ENODEV;
1078 } 1078 }
@@ -1133,7 +1133,7 @@ static int vpe_release(struct inode *inode, struct file *filp)
1133 struct vpe *v; 1133 struct vpe *v;
1134 Elf_Ehdr *hdr; 1134 Elf_Ehdr *hdr;
1135 1135
1136 minor = MINOR(inode->i_rdev); 1136 minor = iminor(inode);
1137 if ((v = get_vpe(minor)) == NULL) 1137 if ((v = get_vpe(minor)) == NULL)
1138 return -ENODEV; 1138 return -ENODEV;
1139 1139
@@ -1174,7 +1174,7 @@ static ssize_t vpe_write(struct file *file, const char __user * buffer,
1174 size_t ret = count; 1174 size_t ret = count;
1175 struct vpe *v; 1175 struct vpe *v;
1176 1176
1177 minor = MINOR(file->f_dentry->d_inode->i_rdev); 1177 minor = iminor(file->f_dentry->d_inode);
1178 if ((v = get_vpe(minor)) == NULL) 1178 if ((v = get_vpe(minor)) == NULL)
1179 return -ENODEV; 1179 return -ENODEV;
1180 1180
diff --git a/arch/mips/mips-boards/generic/init.c b/arch/mips/mips-boards/generic/init.c
index 17dfe6a8cab9..df4e94735604 100644
--- a/arch/mips/mips-boards/generic/init.c
+++ b/arch/mips/mips-boards/generic/init.c
@@ -337,6 +337,7 @@ void __init prom_init(void)
337 case MIPS_REVISION_CORID_CORE_MSC: 337 case MIPS_REVISION_CORID_CORE_MSC:
338 case MIPS_REVISION_CORID_CORE_FPGA2: 338 case MIPS_REVISION_CORID_CORE_FPGA2:
339 case MIPS_REVISION_CORID_CORE_FPGA3: 339 case MIPS_REVISION_CORID_CORE_FPGA3:
340 case MIPS_REVISION_CORID_CORE_24K:
340 case MIPS_REVISION_CORID_CORE_EMUL_MSC: 341 case MIPS_REVISION_CORID_CORE_EMUL_MSC:
341 _pcictrl_msc = (unsigned long)ioremap(MIPS_MSC01_PCI_REG_BASE, 0x2000); 342 _pcictrl_msc = (unsigned long)ioremap(MIPS_MSC01_PCI_REG_BASE, 0x2000);
342 343
diff --git a/arch/mips/mips-boards/generic/pci.c b/arch/mips/mips-boards/generic/pci.c
index 1f6f9df74ab2..9337f6c8873a 100644
--- a/arch/mips/mips-boards/generic/pci.c
+++ b/arch/mips/mips-boards/generic/pci.c
@@ -198,6 +198,7 @@ void __init mips_pcibios_init(void)
198 case MIPS_REVISION_CORID_CORE_MSC: 198 case MIPS_REVISION_CORID_CORE_MSC:
199 case MIPS_REVISION_CORID_CORE_FPGA2: 199 case MIPS_REVISION_CORID_CORE_FPGA2:
200 case MIPS_REVISION_CORID_CORE_FPGA3: 200 case MIPS_REVISION_CORID_CORE_FPGA3:
201 case MIPS_REVISION_CORID_CORE_24K:
201 case MIPS_REVISION_CORID_CORE_EMUL_MSC: 202 case MIPS_REVISION_CORID_CORE_EMUL_MSC:
202 /* Set up resource ranges from the controller's registers. */ 203 /* Set up resource ranges from the controller's registers. */
203 MSC_READ(MSC01_PCI_SC2PMBASL, start); 204 MSC_READ(MSC01_PCI_SC2PMBASL, start);
diff --git a/arch/mips/mips-boards/malta/malta_int.c b/arch/mips/mips-boards/malta/malta_int.c
index 64db07d4dbe5..7cc0ba4f553a 100644
--- a/arch/mips/mips-boards/malta/malta_int.c
+++ b/arch/mips/mips-boards/malta/malta_int.c
@@ -57,6 +57,7 @@ static inline int mips_pcibios_iack(void)
57 case MIPS_REVISION_CORID_CORE_MSC: 57 case MIPS_REVISION_CORID_CORE_MSC:
58 case MIPS_REVISION_CORID_CORE_FPGA2: 58 case MIPS_REVISION_CORID_CORE_FPGA2:
59 case MIPS_REVISION_CORID_CORE_FPGA3: 59 case MIPS_REVISION_CORID_CORE_FPGA3:
60 case MIPS_REVISION_CORID_CORE_24K:
60 case MIPS_REVISION_CORID_CORE_EMUL_MSC: 61 case MIPS_REVISION_CORID_CORE_EMUL_MSC:
61 MSC_READ(MSC01_PCI_IACK, irq); 62 MSC_READ(MSC01_PCI_IACK, irq);
62 irq &= 0xff; 63 irq &= 0xff;
@@ -143,6 +144,7 @@ void corehi_irqdispatch(struct pt_regs *regs)
143 case MIPS_REVISION_CORID_CORE_MSC: 144 case MIPS_REVISION_CORID_CORE_MSC:
144 case MIPS_REVISION_CORID_CORE_FPGA2: 145 case MIPS_REVISION_CORID_CORE_FPGA2:
145 case MIPS_REVISION_CORID_CORE_FPGA3: 146 case MIPS_REVISION_CORID_CORE_FPGA3:
147 case MIPS_REVISION_CORID_CORE_24K:
146 case MIPS_REVISION_CORID_CORE_EMUL_MSC: 148 case MIPS_REVISION_CORID_CORE_EMUL_MSC:
147 ll_msc_irq(regs); 149 ll_msc_irq(regs);
148 break; 150 break;
@@ -309,6 +311,7 @@ void __init arch_init_irq(void)
309 case MIPS_REVISION_CORID_CORE_MSC: 311 case MIPS_REVISION_CORID_CORE_MSC:
310 case MIPS_REVISION_CORID_CORE_FPGA2: 312 case MIPS_REVISION_CORID_CORE_FPGA2:
311 case MIPS_REVISION_CORID_CORE_FPGA3: 313 case MIPS_REVISION_CORID_CORE_FPGA3:
314 case MIPS_REVISION_CORID_CORE_24K:
312 case MIPS_REVISION_CORID_CORE_EMUL_MSC: 315 case MIPS_REVISION_CORID_CORE_EMUL_MSC:
313 if (cpu_has_veic) 316 if (cpu_has_veic)
314 init_msc_irqs (MSC01E_INT_BASE, msc_eicirqmap, msc_nr_eicirqs); 317 init_msc_irqs (MSC01E_INT_BASE, msc_eicirqmap, msc_nr_eicirqs);
diff --git a/arch/mips/oprofile/common.c b/arch/mips/oprofile/common.c
index 935dd851f480..f2b4862aaae5 100644
--- a/arch/mips/oprofile/common.c
+++ b/arch/mips/oprofile/common.c
@@ -27,7 +27,7 @@ static int op_mips_setup(void)
27 model->reg_setup(ctr); 27 model->reg_setup(ctr);
28 28
29 /* Configure the registers on all cpus. */ 29 /* Configure the registers on all cpus. */
30 on_each_cpu(model->cpu_setup, 0, 0, 1); 30 on_each_cpu(model->cpu_setup, NULL, 0, 1);
31 31
32 return 0; 32 return 0;
33} 33}
@@ -114,5 +114,6 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
114 114
115void oprofile_arch_exit(void) 115void oprofile_arch_exit(void)
116{ 116{
117 model->exit(); 117 if (model)
118 model->exit();
118} 119}
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c
index cddf1cedf007..36b662e27b6e 100644
--- a/arch/mips/sgi-ip27/ip27-timer.c
+++ b/arch/mips/sgi-ip27/ip27-timer.c
@@ -122,7 +122,7 @@ again:
122 xtime.tv_sec > last_rtc_update + 660 && 122 xtime.tv_sec > last_rtc_update + 660 &&
123 (xtime.tv_nsec / 1000) >= 500000 - ((unsigned) TICK_SIZE) / 2 && 123 (xtime.tv_nsec / 1000) >= 500000 - ((unsigned) TICK_SIZE) / 2 &&
124 (xtime.tv_nsec / 1000) <= 500000 + ((unsigned) TICK_SIZE) / 2) { 124 (xtime.tv_nsec / 1000) <= 500000 + ((unsigned) TICK_SIZE) / 2) {
125 if (rtc_set_time(xtime.tv_sec) == 0) { 125 if (rtc_mips_set_time(xtime.tv_sec) == 0) {
126 last_rtc_update = xtime.tv_sec; 126 last_rtc_update = xtime.tv_sec;
127 } else { 127 } else {
128 last_rtc_update = xtime.tv_sec - 600; 128 last_rtc_update = xtime.tv_sec - 600;
diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c
index 22a6df94b4a1..de01c9815bdd 100644
--- a/arch/mips/sgi-ip32/ip32-irq.c
+++ b/arch/mips/sgi-ip32/ip32-irq.c
@@ -507,13 +507,14 @@ static void ip32_irq0(struct pt_regs *regs)
507 int irq = 0; 507 int irq = 0;
508 508
509 crime_int = crime->istat & crime_mask; 509 crime_int = crime->istat & crime_mask;
510 irq = ffs(crime_int); 510 irq = __ffs(crime_int);
511 crime_int = 1 << (irq - 1); 511 crime_int = 1 << irq;
512 512
513 if (crime_int & CRIME_MACEISA_INT_MASK) { 513 if (crime_int & CRIME_MACEISA_INT_MASK) {
514 unsigned long mace_int = mace->perif.ctrl.istat; 514 unsigned long mace_int = mace->perif.ctrl.istat;
515 irq = ffs(mace_int & maceisa_mask) + 32; 515 irq = __ffs(mace_int & maceisa_mask) + 32;
516 } 516 }
517 irq++;
517 DBG("*irq %u*\n", irq); 518 DBG("*irq %u*\n", irq);
518 do_IRQ(irq, regs); 519 do_IRQ(irq, regs);
519} 520}
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig
index fe22e54ab2b0..dbe421dc3c11 100644
--- a/arch/powerpc/configs/cell_defconfig
+++ b/arch/powerpc/configs/cell_defconfig
@@ -9,6 +9,7 @@ CONFIG_PPC_MERGE=y
9CONFIG_MMU=y 9CONFIG_MMU=y
10CONFIG_GENERIC_HARDIRQS=y 10CONFIG_GENERIC_HARDIRQS=y
11CONFIG_RWSEM_XCHGADD_ALGORITHM=y 11CONFIG_RWSEM_XCHGADD_ALGORITHM=y
12CONFIG_GENERIC_HWEIGHT=y
12CONFIG_GENERIC_CALIBRATE_DELAY=y 13CONFIG_GENERIC_CALIBRATE_DELAY=y
13CONFIG_PPC=y 14CONFIG_PPC=y
14CONFIG_EARLY_PRINTK=y 15CONFIG_EARLY_PRINTK=y
@@ -55,6 +56,7 @@ CONFIG_SYSCTL=y
55CONFIG_IKCONFIG=y 56CONFIG_IKCONFIG=y
56CONFIG_IKCONFIG_PROC=y 57CONFIG_IKCONFIG_PROC=y
57# CONFIG_CPUSETS is not set 58# CONFIG_CPUSETS is not set
59# CONFIG_RELAY is not set
58CONFIG_INITRAMFS_SOURCE="" 60CONFIG_INITRAMFS_SOURCE=""
59CONFIG_CC_OPTIMIZE_FOR_SIZE=y 61CONFIG_CC_OPTIMIZE_FOR_SIZE=y
60# CONFIG_EMBEDDED is not set 62# CONFIG_EMBEDDED is not set
@@ -69,10 +71,6 @@ CONFIG_BASE_FULL=y
69CONFIG_FUTEX=y 71CONFIG_FUTEX=y
70CONFIG_EPOLL=y 72CONFIG_EPOLL=y
71CONFIG_SHMEM=y 73CONFIG_SHMEM=y
72CONFIG_CC_ALIGN_FUNCTIONS=0
73CONFIG_CC_ALIGN_LABELS=0
74CONFIG_CC_ALIGN_LOOPS=0
75CONFIG_CC_ALIGN_JUMPS=0
76CONFIG_SLAB=y 74CONFIG_SLAB=y
77# CONFIG_TINY_SHMEM is not set 75# CONFIG_TINY_SHMEM is not set
78CONFIG_BASE_SMALL=0 76CONFIG_BASE_SMALL=0
@@ -84,7 +82,6 @@ CONFIG_BASE_SMALL=0
84CONFIG_MODULES=y 82CONFIG_MODULES=y
85CONFIG_MODULE_UNLOAD=y 83CONFIG_MODULE_UNLOAD=y
86# CONFIG_MODULE_FORCE_UNLOAD is not set 84# CONFIG_MODULE_FORCE_UNLOAD is not set
87CONFIG_OBSOLETE_MODPARM=y
88# CONFIG_MODVERSIONS is not set 85# CONFIG_MODVERSIONS is not set
89# CONFIG_MODULE_SRCVERSION_ALL is not set 86# CONFIG_MODULE_SRCVERSION_ALL is not set
90CONFIG_KMOD=y 87CONFIG_KMOD=y
@@ -93,6 +90,7 @@ CONFIG_STOP_MACHINE=y
93# 90#
94# Block layer 91# Block layer
95# 92#
93# CONFIG_BLK_DEV_IO_TRACE is not set
96 94
97# 95#
98# IO Schedulers 96# IO Schedulers
@@ -126,6 +124,7 @@ CONFIG_RTAS_FLASH=y
126CONFIG_MMIO_NVRAM=y 124CONFIG_MMIO_NVRAM=y
127CONFIG_CELL_IIC=y 125CONFIG_CELL_IIC=y
128# CONFIG_PPC_MPC106 is not set 126# CONFIG_PPC_MPC106 is not set
127# CONFIG_PPC_970_NAP is not set
129# CONFIG_CPU_FREQ is not set 128# CONFIG_CPU_FREQ is not set
130# CONFIG_WANT_EARLY_SERIAL is not set 129# CONFIG_WANT_EARLY_SERIAL is not set
131 130
@@ -167,7 +166,6 @@ CONFIG_HAVE_MEMORY_PRESENT=y
167CONFIG_SPARSEMEM_EXTREME=y 166CONFIG_SPARSEMEM_EXTREME=y
168# CONFIG_MEMORY_HOTPLUG is not set 167# CONFIG_MEMORY_HOTPLUG is not set
169CONFIG_SPLIT_PTLOCK_CPUS=4 168CONFIG_SPLIT_PTLOCK_CPUS=4
170CONFIG_MIGRATION=y
171# CONFIG_PPC_64K_PAGES is not set 169# CONFIG_PPC_64K_PAGES is not set
172CONFIG_SCHED_SMT=y 170CONFIG_SCHED_SMT=y
173CONFIG_PROC_DEVICETREE=y 171CONFIG_PROC_DEVICETREE=y
@@ -184,7 +182,6 @@ CONFIG_GENERIC_ISA_DMA=y
184# CONFIG_PPC_INDIRECT_PCI is not set 182# CONFIG_PPC_INDIRECT_PCI is not set
185CONFIG_PCI=y 183CONFIG_PCI=y
186CONFIG_PCI_DOMAINS=y 184CONFIG_PCI_DOMAINS=y
187CONFIG_PCI_LEGACY_PROC=y
188# CONFIG_PCI_DEBUG is not set 185# CONFIG_PCI_DEBUG is not set
189 186
190# 187#
@@ -226,6 +223,7 @@ CONFIG_SYN_COOKIES=y
226# CONFIG_INET_AH is not set 223# CONFIG_INET_AH is not set
227# CONFIG_INET_ESP is not set 224# CONFIG_INET_ESP is not set
228# CONFIG_INET_IPCOMP is not set 225# CONFIG_INET_IPCOMP is not set
226# CONFIG_INET_XFRM_TUNNEL is not set
229CONFIG_INET_TUNNEL=y 227CONFIG_INET_TUNNEL=y
230CONFIG_INET_DIAG=y 228CONFIG_INET_DIAG=y
231CONFIG_INET_TCP_DIAG=y 229CONFIG_INET_TCP_DIAG=y
@@ -242,6 +240,7 @@ CONFIG_IPV6=y
242CONFIG_INET6_AH=m 240CONFIG_INET6_AH=m
243CONFIG_INET6_ESP=m 241CONFIG_INET6_ESP=m
244CONFIG_INET6_IPCOMP=m 242CONFIG_INET6_IPCOMP=m
243CONFIG_INET6_XFRM_TUNNEL=m
245CONFIG_INET6_TUNNEL=m 244CONFIG_INET6_TUNNEL=m
246CONFIG_IPV6_TUNNEL=m 245CONFIG_IPV6_TUNNEL=m
247CONFIG_NETFILTER=y 246CONFIG_NETFILTER=y
@@ -632,6 +631,7 @@ CONFIG_SERIAL_NONSTANDARD=y
632# 631#
633CONFIG_SERIAL_8250=y 632CONFIG_SERIAL_8250=y
634CONFIG_SERIAL_8250_CONSOLE=y 633CONFIG_SERIAL_8250_CONSOLE=y
634CONFIG_SERIAL_8250_PCI=y
635CONFIG_SERIAL_8250_NR_UARTS=4 635CONFIG_SERIAL_8250_NR_UARTS=4
636CONFIG_SERIAL_8250_RUNTIME_UARTS=4 636CONFIG_SERIAL_8250_RUNTIME_UARTS=4
637# CONFIG_SERIAL_8250_EXTENDED is not set 637# CONFIG_SERIAL_8250_EXTENDED is not set
@@ -717,7 +717,6 @@ CONFIG_I2C_ALGOBIT=y
717# CONFIG_I2C_PARPORT_LIGHT is not set 717# CONFIG_I2C_PARPORT_LIGHT is not set
718# CONFIG_I2C_PROSAVAGE is not set 718# CONFIG_I2C_PROSAVAGE is not set
719# CONFIG_I2C_SAVAGE4 is not set 719# CONFIG_I2C_SAVAGE4 is not set
720# CONFIG_SCx200_ACB is not set
721# CONFIG_I2C_SIS5595 is not set 720# CONFIG_I2C_SIS5595 is not set
722# CONFIG_I2C_SIS630 is not set 721# CONFIG_I2C_SIS630 is not set
723# CONFIG_I2C_SIS96X is not set 722# CONFIG_I2C_SIS96X is not set
@@ -736,9 +735,7 @@ CONFIG_I2C_ALGOBIT=y
736# CONFIG_SENSORS_PCF8574 is not set 735# CONFIG_SENSORS_PCF8574 is not set
737# CONFIG_SENSORS_PCA9539 is not set 736# CONFIG_SENSORS_PCA9539 is not set
738# CONFIG_SENSORS_PCF8591 is not set 737# CONFIG_SENSORS_PCF8591 is not set
739# CONFIG_SENSORS_RTC8564 is not set
740# CONFIG_SENSORS_MAX6875 is not set 738# CONFIG_SENSORS_MAX6875 is not set
741# CONFIG_RTC_X1205_I2C is not set
742# CONFIG_I2C_DEBUG_CORE is not set 739# CONFIG_I2C_DEBUG_CORE is not set
743# CONFIG_I2C_DEBUG_ALGO is not set 740# CONFIG_I2C_DEBUG_ALGO is not set
744# CONFIG_I2C_DEBUG_BUS is not set 741# CONFIG_I2C_DEBUG_BUS is not set
@@ -766,10 +763,6 @@ CONFIG_I2C_ALGOBIT=y
766# 763#
767 764
768# 765#
769# Multimedia Capabilities Port drivers
770#
771
772#
773# Multimedia devices 766# Multimedia devices
774# 767#
775# CONFIG_VIDEO_DEV is not set 768# CONFIG_VIDEO_DEV is not set
@@ -818,6 +811,19 @@ CONFIG_USB_ARCH_HAS_EHCI=y
818# CONFIG_MMC is not set 811# CONFIG_MMC is not set
819 812
820# 813#
814# LED devices
815#
816# CONFIG_NEW_LEDS is not set
817
818#
819# LED drivers
820#
821
822#
823# LED Triggers
824#
825
826#
821# InfiniBand support 827# InfiniBand support
822# 828#
823CONFIG_INFINIBAND=y 829CONFIG_INFINIBAND=y
@@ -834,6 +840,11 @@ CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
834# 840#
835 841
836# 842#
843# Real Time Clock
844#
845# CONFIG_RTC_CLASS is not set
846
847#
837# File systems 848# File systems
838# 849#
839CONFIG_EXT2_FS=y 850CONFIG_EXT2_FS=y
@@ -889,7 +900,6 @@ CONFIG_TMPFS=y
889CONFIG_HUGETLBFS=y 900CONFIG_HUGETLBFS=y
890CONFIG_HUGETLB_PAGE=y 901CONFIG_HUGETLB_PAGE=y
891CONFIG_RAMFS=y 902CONFIG_RAMFS=y
892# CONFIG_RELAYFS_FS is not set
893# CONFIG_CONFIGFS_FS is not set 903# CONFIG_CONFIGFS_FS is not set
894 904
895# 905#
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index 39e348a3ade2..3f7182db9ed5 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -57,6 +57,8 @@ extern void __setup_cpu_ppc970(unsigned long offset, struct cpu_spec* spec);
57 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP) 57 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
58#define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\ 58#define COMMON_USER_POWER5_PLUS (COMMON_USER_PPC64 | PPC_FEATURE_POWER5_PLUS|\
59 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP) 59 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
60#define COMMON_USER_POWER6 (COMMON_USER_PPC64 | PPC_FEATURE_ARCH_2_05 |\
61 PPC_FEATURE_SMT | PPC_FEATURE_ICACHE_SNOOP)
60#define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \ 62#define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \
61 PPC_FEATURE_BOOKE) 63 PPC_FEATURE_BOOKE)
62 64
@@ -263,6 +265,20 @@ struct cpu_spec cpu_specs[] = {
263 .oprofile_type = PPC_OPROFILE_POWER4, 265 .oprofile_type = PPC_OPROFILE_POWER4,
264 .platform = "power5+", 266 .platform = "power5+",
265 }, 267 },
268 { /* Power6 */
269 .pvr_mask = 0xffff0000,
270 .pvr_value = 0x003e0000,
271 .cpu_name = "POWER6",
272 .cpu_features = CPU_FTRS_POWER6,
273 .cpu_user_features = COMMON_USER_POWER6,
274 .icache_bsize = 128,
275 .dcache_bsize = 128,
276 .num_pmcs = 6,
277 .cpu_setup = __setup_cpu_power4,
278 .oprofile_cpu_type = "ppc64/power6",
279 .oprofile_type = PPC_OPROFILE_POWER4,
280 .platform = "power6",
281 },
266 { /* Cell Broadband Engine */ 282 { /* Cell Broadband Engine */
267 .pvr_mask = 0xffff0000, 283 .pvr_mask = 0xffff0000,
268 .pvr_value = 0x00700000, 284 .pvr_value = 0x00700000,
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c
index 856ef1a832b9..f78866367b70 100644
--- a/arch/powerpc/kernel/kprobes.c
+++ b/arch/powerpc/kernel/kprobes.c
@@ -90,15 +90,15 @@ void __kprobes arch_remove_kprobe(struct kprobe *p)
90 90
91static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) 91static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs)
92{ 92{
93 kprobe_opcode_t insn = *p->ainsn.insn;
94
95 regs->msr |= MSR_SE; 93 regs->msr |= MSR_SE;
96 94
97 /* single step inline if it is a trap variant */ 95 /*
98 if (is_trap(insn)) 96 * On powerpc we should single step on the original
99 regs->nip = (unsigned long)p->addr; 97 * instruction even if the probed insn is a trap
100 else 98 * variant as values in regs could play a part in
101 regs->nip = (unsigned long)p->ainsn.insn; 99 * if the trap is taken or not
100 */
101 regs->nip = (unsigned long)p->ainsn.insn;
102} 102}
103 103
104static void __kprobes save_previous_kprobe(struct kprobe_ctlblk *kcb) 104static void __kprobes save_previous_kprobe(struct kprobe_ctlblk *kcb)
diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c
index 928b8581fcb0..ba34001fca8e 100644
--- a/arch/powerpc/kernel/module_64.c
+++ b/arch/powerpc/kernel/module_64.c
@@ -191,11 +191,19 @@ int module_frob_arch_sections(Elf64_Ehdr *hdr,
191 (void *)hdr 191 (void *)hdr
192 + sechdrs[sechdrs[i].sh_link].sh_offset); 192 + sechdrs[sechdrs[i].sh_link].sh_offset);
193 } 193 }
194 if (!me->arch.stubs_section || !me->arch.toc_section) { 194
195 printk("%s: doesn't contain .toc or .stubs.\n", me->name); 195 if (!me->arch.stubs_section) {
196 printk("%s: doesn't contain .stubs.\n", me->name);
196 return -ENOEXEC; 197 return -ENOEXEC;
197 } 198 }
198 199
200 /* If we don't have a .toc, just use .stubs. We need to set r2
201 to some reasonable value in case the module calls out to
202 other functions via a stub, or if a function pointer escapes
203 the module by some means. */
204 if (!me->arch.toc_section)
205 me->arch.toc_section = me->arch.stubs_section;
206
199 /* Override the stubs size */ 207 /* Override the stubs size */
200 sechdrs[me->arch.stubs_section].sh_size = get_stubs_size(hdr, sechdrs); 208 sechdrs[me->arch.stubs_section].sh_size = get_stubs_size(hdr, sechdrs);
201 return 0; 209 return 0;
@@ -342,7 +350,7 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
342 break; 350 break;
343 351
344 case R_PPC64_TOC16: 352 case R_PPC64_TOC16:
345 /* Subtact TOC pointer */ 353 /* Subtract TOC pointer */
346 value -= my_r2(sechdrs, me); 354 value -= my_r2(sechdrs, me);
347 if (value + 0x8000 > 0xffff) { 355 if (value + 0x8000 > 0xffff) {
348 printk("%s: bad TOC16 relocation (%lu)\n", 356 printk("%s: bad TOC16 relocation (%lu)\n",
@@ -355,7 +363,7 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
355 break; 363 break;
356 364
357 case R_PPC64_TOC16_DS: 365 case R_PPC64_TOC16_DS:
358 /* Subtact TOC pointer */ 366 /* Subtract TOC pointer */
359 value -= my_r2(sechdrs, me); 367 value -= my_r2(sechdrs, me);
360 if ((value & 3) != 0 || value + 0x8000 > 0xffff) { 368 if ((value & 3) != 0 || value + 0x8000 > 0xffff) {
361 printk("%s: bad TOC16_DS relocation (%lu)\n", 369 printk("%s: bad TOC16_DS relocation (%lu)\n",
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index 1cb69e8fb0b1..9a07f97f0712 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -885,6 +885,74 @@ void __init unflatten_device_tree(void)
885 DBG(" <- unflatten_device_tree()\n"); 885 DBG(" <- unflatten_device_tree()\n");
886} 886}
887 887
888/*
889 * ibm,pa-features is a per-cpu property that contains a string of
890 * attribute descriptors, each of which has a 2 byte header plus up
891 * to 254 bytes worth of processor attribute bits. First header
892 * byte specifies the number of bytes following the header.
893 * Second header byte is an "attribute-specifier" type, of which
894 * zero is the only currently-defined value.
895 * Implementation: Pass in the byte and bit offset for the feature
896 * that we are interested in. The function will return -1 if the
897 * pa-features property is missing, or a 1/0 to indicate if the feature
898 * is supported/not supported. Note that the bit numbers are
899 * big-endian to match the definition in PAPR.
900 */
901static struct ibm_pa_feature {
902 unsigned long cpu_features; /* CPU_FTR_xxx bit */
903 unsigned int cpu_user_ftrs; /* PPC_FEATURE_xxx bit */
904 unsigned char pabyte; /* byte number in ibm,pa-features */
905 unsigned char pabit; /* bit number (big-endian) */
906 unsigned char invert; /* if 1, pa bit set => clear feature */
907} ibm_pa_features[] __initdata = {
908 {0, PPC_FEATURE_HAS_MMU, 0, 0, 0},
909 {0, PPC_FEATURE_HAS_FPU, 0, 1, 0},
910 {CPU_FTR_SLB, 0, 0, 2, 0},
911 {CPU_FTR_CTRL, 0, 0, 3, 0},
912 {CPU_FTR_NOEXECUTE, 0, 0, 6, 0},
913 {CPU_FTR_NODSISRALIGN, 0, 1, 1, 1},
914 {CPU_FTR_CI_LARGE_PAGE, 0, 1, 2, 0},
915};
916
917static void __init check_cpu_pa_features(unsigned long node)
918{
919 unsigned char *pa_ftrs;
920 unsigned long len, tablelen, i, bit;
921
922 pa_ftrs = of_get_flat_dt_prop(node, "ibm,pa-features", &tablelen);
923 if (pa_ftrs == NULL)
924 return;
925
926 /* find descriptor with type == 0 */
927 for (;;) {
928 if (tablelen < 3)
929 return;
930 len = 2 + pa_ftrs[0];
931 if (tablelen < len)
932 return; /* descriptor 0 not found */
933 if (pa_ftrs[1] == 0)
934 break;
935 tablelen -= len;
936 pa_ftrs += len;
937 }
938
939 /* loop over bits we know about */
940 for (i = 0; i < ARRAY_SIZE(ibm_pa_features); ++i) {
941 struct ibm_pa_feature *fp = &ibm_pa_features[i];
942
943 if (fp->pabyte >= pa_ftrs[0])
944 continue;
945 bit = (pa_ftrs[2 + fp->pabyte] >> (7 - fp->pabit)) & 1;
946 if (bit ^ fp->invert) {
947 cur_cpu_spec->cpu_features |= fp->cpu_features;
948 cur_cpu_spec->cpu_user_features |= fp->cpu_user_ftrs;
949 } else {
950 cur_cpu_spec->cpu_features &= ~fp->cpu_features;
951 cur_cpu_spec->cpu_user_features &= ~fp->cpu_user_ftrs;
952 }
953 }
954}
955
888static int __init early_init_dt_scan_cpus(unsigned long node, 956static int __init early_init_dt_scan_cpus(unsigned long node,
889 const char *uname, int depth, 957 const char *uname, int depth,
890 void *data) 958 void *data)
@@ -969,6 +1037,8 @@ static int __init early_init_dt_scan_cpus(unsigned long node,
969 } 1037 }
970#endif /* CONFIG_ALTIVEC */ 1038#endif /* CONFIG_ALTIVEC */
971 1039
1040 check_cpu_pa_features(node);
1041
972#ifdef CONFIG_PPC_PSERIES 1042#ifdef CONFIG_PPC_PSERIES
973 if (nthreads > 1) 1043 if (nthreads > 1)
974 cur_cpu_spec->cpu_features |= CPU_FTR_SMT; 1044 cur_cpu_spec->cpu_features |= CPU_FTR_SMT;
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c
index 7e4d54821a07..078fb5533541 100644
--- a/arch/powerpc/kernel/prom_init.c
+++ b/arch/powerpc/kernel/prom_init.c
@@ -636,10 +636,96 @@ static void __init early_cmdline_parse(void)
636 636
637#ifdef CONFIG_PPC_PSERIES 637#ifdef CONFIG_PPC_PSERIES
638/* 638/*
639 * To tell the firmware what our capabilities are, we have to pass 639 * There are two methods for telling firmware what our capabilities are.
640 * it a fake 32-bit ELF header containing a couple of PT_NOTE sections 640 * Newer machines have an "ibm,client-architecture-support" method on the
641 * that contain structures that contain the actual values. 641 * root node. For older machines, we have to call the "process-elf-header"
642 * method in the /packages/elf-loader node, passing it a fake 32-bit
643 * ELF header containing a couple of PT_NOTE sections that contain
644 * structures that contain various information.
642 */ 645 */
646
647/*
648 * New method - extensible architecture description vector.
649 *
650 * Because the description vector contains a mix of byte and word
651 * values, we declare it as an unsigned char array, and use this
652 * macro to put word values in.
653 */
654#define W(x) ((x) >> 24) & 0xff, ((x) >> 16) & 0xff, \
655 ((x) >> 8) & 0xff, (x) & 0xff
656
657/* Option vector bits - generic bits in byte 1 */
658#define OV_IGNORE 0x80 /* ignore this vector */
659#define OV_CESSATION_POLICY 0x40 /* halt if unsupported option present*/
660
661/* Option vector 1: processor architectures supported */
662#define OV1_PPC_2_00 0x80 /* set if we support PowerPC 2.00 */
663#define OV1_PPC_2_01 0x40 /* set if we support PowerPC 2.01 */
664#define OV1_PPC_2_02 0x20 /* set if we support PowerPC 2.02 */
665#define OV1_PPC_2_03 0x10 /* set if we support PowerPC 2.03 */
666#define OV1_PPC_2_04 0x08 /* set if we support PowerPC 2.04 */
667#define OV1_PPC_2_05 0x04 /* set if we support PowerPC 2.05 */
668
669/* Option vector 2: Open Firmware options supported */
670#define OV2_REAL_MODE 0x20 /* set if we want OF in real mode */
671
672/* Option vector 3: processor options supported */
673#define OV3_FP 0x80 /* floating point */
674#define OV3_VMX 0x40 /* VMX/Altivec */
675
676/* Option vector 5: PAPR/OF options supported */
677#define OV5_LPAR 0x80 /* logical partitioning supported */
678#define OV5_SPLPAR 0x40 /* shared-processor LPAR supported */
679/* ibm,dynamic-reconfiguration-memory property supported */
680#define OV5_DRCONF_MEMORY 0x20
681#define OV5_LARGE_PAGES 0x10 /* large pages supported */
682
683/*
684 * The architecture vector has an array of PVR mask/value pairs,
685 * followed by # option vectors - 1, followed by the option vectors.
686 */
687static unsigned char ibm_architecture_vec[] = {
688 W(0xfffe0000), W(0x003a0000), /* POWER5/POWER5+ */
689 W(0xffff0000), W(0x003e0000), /* POWER6 */
690 W(0xfffffffe), W(0x0f000001), /* all 2.04-compliant and earlier */
691 5 - 1, /* 5 option vectors */
692
693 /* option vector 1: processor architectures supported */
694 3 - 1, /* length */
695 0, /* don't ignore, don't halt */
696 OV1_PPC_2_00 | OV1_PPC_2_01 | OV1_PPC_2_02 | OV1_PPC_2_03 |
697 OV1_PPC_2_04 | OV1_PPC_2_05,
698
699 /* option vector 2: Open Firmware options supported */
700 34 - 1, /* length */
701 OV2_REAL_MODE,
702 0, 0,
703 W(0xffffffff), /* real_base */
704 W(0xffffffff), /* real_size */
705 W(0xffffffff), /* virt_base */
706 W(0xffffffff), /* virt_size */
707 W(0xffffffff), /* load_base */
708 W(64), /* 128MB min RMA */
709 W(0xffffffff), /* full client load */
710 0, /* min RMA percentage of total RAM */
711 48, /* max log_2(hash table size) */
712
713 /* option vector 3: processor options supported */
714 3 - 1, /* length */
715 0, /* don't ignore, don't halt */
716 OV3_FP | OV3_VMX,
717
718 /* option vector 4: IBM PAPR implementation */
719 2 - 1, /* length */
720 0, /* don't halt */
721
722 /* option vector 5: PAPR/OF options */
723 3 - 1, /* length */
724 0, /* don't ignore, don't halt */
725 OV5_LPAR | OV5_SPLPAR | OV5_LARGE_PAGES,
726};
727
728/* Old method - ELF header with PT_NOTE sections */
643static struct fake_elf { 729static struct fake_elf {
644 Elf32_Ehdr elfhdr; 730 Elf32_Ehdr elfhdr;
645 Elf32_Phdr phdr[2]; 731 Elf32_Phdr phdr[2];
@@ -728,8 +814,26 @@ static struct fake_elf {
728 814
729static void __init prom_send_capabilities(void) 815static void __init prom_send_capabilities(void)
730{ 816{
731 ihandle elfloader; 817 ihandle elfloader, root;
818 prom_arg_t ret;
819
820 root = call_prom("open", 1, 1, ADDR("/"));
821 if (root != 0) {
822 /* try calling the ibm,client-architecture-support method */
823 if (call_prom_ret("call-method", 3, 2, &ret,
824 ADDR("ibm,client-architecture-support"),
825 ADDR(ibm_architecture_vec)) == 0) {
826 /* the call exists... */
827 if (ret)
828 prom_printf("WARNING: ibm,client-architecture"
829 "-support call FAILED!\n");
830 call_prom("close", 1, 0, root);
831 return;
832 }
833 call_prom("close", 1, 0, root);
834 }
732 835
836 /* no ibm,client-architecture-support call, try the old way */
733 elfloader = call_prom("open", 1, 1, ADDR("/packages/elf-loader")); 837 elfloader = call_prom("open", 1, 1, ADDR("/packages/elf-loader"));
734 if (elfloader == 0) { 838 if (elfloader == 0) {
735 prom_printf("couldn't open /packages/elf-loader\n"); 839 prom_printf("couldn't open /packages/elf-loader\n");
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c
index bcb83574335b..4a677d1bd4ef 100644
--- a/arch/powerpc/kernel/ptrace.c
+++ b/arch/powerpc/kernel/ptrace.c
@@ -538,7 +538,7 @@ void do_syscall_trace_enter(struct pt_regs *regs)
538 do_syscall_trace(); 538 do_syscall_trace();
539 539
540 if (unlikely(current->audit_context)) 540 if (unlikely(current->audit_context))
541 audit_syscall_entry(current, 541 audit_syscall_entry(
542#ifdef CONFIG_PPC32 542#ifdef CONFIG_PPC32
543 AUDIT_ARCH_PPC, 543 AUDIT_ARCH_PPC,
544#else 544#else
@@ -556,8 +556,7 @@ void do_syscall_trace_leave(struct pt_regs *regs)
556#endif 556#endif
557 557
558 if (unlikely(current->audit_context)) 558 if (unlikely(current->audit_context))
559 audit_syscall_exit(current, 559 audit_syscall_exit((regs->ccr&0x1000)?AUDITSC_FAILURE:AUDITSC_SUCCESS,
560 (regs->ccr&0x1000)?AUDITSC_FAILURE:AUDITSC_SUCCESS,
561 regs->result); 560 regs->result);
562 561
563 if ((test_thread_flag(TIF_SYSCALL_TRACE) 562 if ((test_thread_flag(TIF_SYSCALL_TRACE)
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
index 1d93e73a7003..684ab1d49c65 100644
--- a/arch/powerpc/kernel/setup-common.c
+++ b/arch/powerpc/kernel/setup-common.c
@@ -516,3 +516,11 @@ void probe_machine(void)
516 516
517 printk(KERN_INFO "Using %s machine description\n", ppc_md.name); 517 printk(KERN_INFO "Using %s machine description\n", ppc_md.name);
518} 518}
519
520int check_legacy_ioport(unsigned long base_port)
521{
522 if (ppc_md.check_legacy_ioport == NULL)
523 return 0;
524 return ppc_md.check_legacy_ioport(base_port);
525}
526EXPORT_SYMBOL(check_legacy_ioport);
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index 13e91c4d70a8..4467c49903b6 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -594,14 +594,6 @@ void ppc64_terminate_msg(unsigned int src, const char *msg)
594 printk("[terminate]%04x %s\n", src, msg); 594 printk("[terminate]%04x %s\n", src, msg);
595} 595}
596 596
597int check_legacy_ioport(unsigned long base_port)
598{
599 if (ppc_md.check_legacy_ioport == NULL)
600 return 0;
601 return ppc_md.check_legacy_ioport(base_port);
602}
603EXPORT_SYMBOL(check_legacy_ioport);
604
605void cpu_die(void) 597void cpu_die(void)
606{ 598{
607 if (ppc_md.cpu_die) 599 if (ppc_md.cpu_die)
diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c
index 73560ef6f802..5bc2585c8036 100644
--- a/arch/powerpc/kernel/sysfs.c
+++ b/arch/powerpc/kernel/sysfs.c
@@ -279,7 +279,7 @@ static void unregister_cpu_online(unsigned int cpu)
279} 279}
280#endif /* CONFIG_HOTPLUG_CPU */ 280#endif /* CONFIG_HOTPLUG_CPU */
281 281
282static int __devinit sysfs_cpu_notify(struct notifier_block *self, 282static int sysfs_cpu_notify(struct notifier_block *self,
283 unsigned long action, void *hcpu) 283 unsigned long action, void *hcpu)
284{ 284{
285 unsigned int cpu = (unsigned int)(long)hcpu; 285 unsigned int cpu = (unsigned int)(long)hcpu;
@@ -297,7 +297,7 @@ static int __devinit sysfs_cpu_notify(struct notifier_block *self,
297 return NOTIFY_OK; 297 return NOTIFY_OK;
298} 298}
299 299
300static struct notifier_block __devinitdata sysfs_cpu_nb = { 300static struct notifier_block sysfs_cpu_nb = {
301 .notifier_call = sysfs_cpu_notify, 301 .notifier_call = sysfs_cpu_notify,
302}; 302};
303 303
@@ -322,13 +322,31 @@ static void register_nodes(void)
322 } 322 }
323 } 323 }
324} 324}
325
326int sysfs_add_device_to_node(struct sys_device *dev, int nid)
327{
328 struct node *node = &node_devices[nid];
329 return sysfs_create_link(&node->sysdev.kobj, &dev->kobj,
330 kobject_name(&dev->kobj));
331}
332
333void sysfs_remove_device_from_node(struct sys_device *dev, int nid)
334{
335 struct node *node = &node_devices[nid];
336 sysfs_remove_link(&node->sysdev.kobj, kobject_name(&dev->kobj));
337}
338
325#else 339#else
326static void register_nodes(void) 340static void register_nodes(void)
327{ 341{
328 return; 342 return;
329} 343}
344
330#endif 345#endif
331 346
347EXPORT_SYMBOL_GPL(sysfs_add_device_to_node);
348EXPORT_SYMBOL_GPL(sysfs_remove_device_from_node);
349
332/* Only valid if CPU is present. */ 350/* Only valid if CPU is present. */
333static ssize_t show_physical_id(struct sys_device *dev, char *buf) 351static ssize_t show_physical_id(struct sys_device *dev, char *buf)
334{ 352{
diff --git a/arch/powerpc/kernel/systbl.S b/arch/powerpc/kernel/systbl.S
index 8d1522690501..cf56a1d499ff 100644
--- a/arch/powerpc/kernel/systbl.S
+++ b/arch/powerpc/kernel/systbl.S
@@ -324,6 +324,20 @@ COMPAT_SYS(ppoll)
324SYSCALL(unshare) 324SYSCALL(unshare)
325SYSCALL(splice) 325SYSCALL(splice)
326SYSCALL(tee) 326SYSCALL(tee)
327SYSCALL(vmsplice)
328COMPAT_SYS(openat)
329SYSCALL(mkdirat)
330SYSCALL(mknodat)
331SYSCALL(fchownat)
332COMPAT_SYS(futimesat)
333SYSX(sys_newfstatat, sys_fstatat64, sys_fstatat64)
334SYSCALL(unlinkat)
335SYSCALL(renameat)
336SYSCALL(linkat)
337SYSCALL(symlinkat)
338SYSCALL(readlinkat)
339SYSCALL(fchmodat)
340SYSCALL(faccessat)
327 341
328/* 342/*
329 * please add new calls to arch/powerpc/platforms/cell/spu_callbacks.c 343 * please add new calls to arch/powerpc/platforms/cell/spu_callbacks.c
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
index 7370f9f33e29..266b8b2ceac9 100644
--- a/arch/powerpc/mm/hugetlbpage.c
+++ b/arch/powerpc/mm/hugetlbpage.c
@@ -30,13 +30,66 @@
30#define NUM_LOW_AREAS (0x100000000UL >> SID_SHIFT) 30#define NUM_LOW_AREAS (0x100000000UL >> SID_SHIFT)
31#define NUM_HIGH_AREAS (PGTABLE_RANGE >> HTLB_AREA_SHIFT) 31#define NUM_HIGH_AREAS (PGTABLE_RANGE >> HTLB_AREA_SHIFT)
32 32
33#ifdef CONFIG_PPC_64K_PAGES
34#define HUGEPTE_INDEX_SIZE (PMD_SHIFT-HPAGE_SHIFT)
35#else
36#define HUGEPTE_INDEX_SIZE (PUD_SHIFT-HPAGE_SHIFT)
37#endif
38#define PTRS_PER_HUGEPTE (1 << HUGEPTE_INDEX_SIZE)
39#define HUGEPTE_TABLE_SIZE (sizeof(pte_t) << HUGEPTE_INDEX_SIZE)
40
41#define HUGEPD_SHIFT (HPAGE_SHIFT + HUGEPTE_INDEX_SIZE)
42#define HUGEPD_SIZE (1UL << HUGEPD_SHIFT)
43#define HUGEPD_MASK (~(HUGEPD_SIZE-1))
44
45#define huge_pgtable_cache (pgtable_cache[HUGEPTE_CACHE_NUM])
46
47/* Flag to mark huge PD pointers. This means pmd_bad() and pud_bad()
48 * will choke on pointers to hugepte tables, which is handy for
49 * catching screwups early. */
50#define HUGEPD_OK 0x1
51
52typedef struct { unsigned long pd; } hugepd_t;
53
54#define hugepd_none(hpd) ((hpd).pd == 0)
55
56static inline pte_t *hugepd_page(hugepd_t hpd)
57{
58 BUG_ON(!(hpd.pd & HUGEPD_OK));
59 return (pte_t *)(hpd.pd & ~HUGEPD_OK);
60}
61
62static inline pte_t *hugepte_offset(hugepd_t *hpdp, unsigned long addr)
63{
64 unsigned long idx = ((addr >> HPAGE_SHIFT) & (PTRS_PER_HUGEPTE-1));
65 pte_t *dir = hugepd_page(*hpdp);
66
67 return dir + idx;
68}
69
70static int __hugepte_alloc(struct mm_struct *mm, hugepd_t *hpdp,
71 unsigned long address)
72{
73 pte_t *new = kmem_cache_alloc(huge_pgtable_cache,
74 GFP_KERNEL|__GFP_REPEAT);
75
76 if (! new)
77 return -ENOMEM;
78
79 spin_lock(&mm->page_table_lock);
80 if (!hugepd_none(*hpdp))
81 kmem_cache_free(huge_pgtable_cache, new);
82 else
83 hpdp->pd = (unsigned long)new | HUGEPD_OK;
84 spin_unlock(&mm->page_table_lock);
85 return 0;
86}
87
33/* Modelled after find_linux_pte() */ 88/* Modelled after find_linux_pte() */
34pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr) 89pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
35{ 90{
36 pgd_t *pg; 91 pgd_t *pg;
37 pud_t *pu; 92 pud_t *pu;
38 pmd_t *pm;
39 pte_t *pt;
40 93
41 BUG_ON(! in_hugepage_area(mm->context, addr)); 94 BUG_ON(! in_hugepage_area(mm->context, addr));
42 95
@@ -46,26 +99,14 @@ pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
46 if (!pgd_none(*pg)) { 99 if (!pgd_none(*pg)) {
47 pu = pud_offset(pg, addr); 100 pu = pud_offset(pg, addr);
48 if (!pud_none(*pu)) { 101 if (!pud_none(*pu)) {
49 pm = pmd_offset(pu, addr);
50#ifdef CONFIG_PPC_64K_PAGES 102#ifdef CONFIG_PPC_64K_PAGES
51 /* Currently, we use the normal PTE offset within full 103 pmd_t *pm;
52 * size PTE pages, thus our huge PTEs are scattered in 104 pm = pmd_offset(pu, addr);
53 * the PTE page and we do waste some. We may change 105 if (!pmd_none(*pm))
54 * that in the future, but the current mecanism keeps 106 return hugepte_offset((hugepd_t *)pm, addr);
55 * things much simpler 107#else
56 */ 108 return hugepte_offset((hugepd_t *)pu, addr);
57 if (!pmd_none(*pm)) { 109#endif
58 /* Note: pte_offset_* are all equivalent on
59 * ppc64 as we don't have HIGHMEM
60 */
61 pt = pte_offset_kernel(pm, addr);
62 return pt;
63 }
64#else /* CONFIG_PPC_64K_PAGES */
65 /* On 4k pages, we put huge PTEs in the PMD page */
66 pt = (pte_t *)pm;
67 return pt;
68#endif /* CONFIG_PPC_64K_PAGES */
69 } 110 }
70 } 111 }
71 112
@@ -76,8 +117,7 @@ pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
76{ 117{
77 pgd_t *pg; 118 pgd_t *pg;
78 pud_t *pu; 119 pud_t *pu;
79 pmd_t *pm; 120 hugepd_t *hpdp = NULL;
80 pte_t *pt;
81 121
82 BUG_ON(! in_hugepage_area(mm->context, addr)); 122 BUG_ON(! in_hugepage_area(mm->context, addr));
83 123
@@ -87,23 +127,182 @@ pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
87 pu = pud_alloc(mm, pg, addr); 127 pu = pud_alloc(mm, pg, addr);
88 128
89 if (pu) { 129 if (pu) {
130#ifdef CONFIG_PPC_64K_PAGES
131 pmd_t *pm;
90 pm = pmd_alloc(mm, pu, addr); 132 pm = pmd_alloc(mm, pu, addr);
91 if (pm) { 133 if (pm)
134 hpdp = (hugepd_t *)pm;
135#else
136 hpdp = (hugepd_t *)pu;
137#endif
138 }
139
140 if (! hpdp)
141 return NULL;
142
143 if (hugepd_none(*hpdp) && __hugepte_alloc(mm, hpdp, addr))
144 return NULL;
145
146 return hugepte_offset(hpdp, addr);
147}
148
149static void free_hugepte_range(struct mmu_gather *tlb, hugepd_t *hpdp)
150{
151 pte_t *hugepte = hugepd_page(*hpdp);
152
153 hpdp->pd = 0;
154 tlb->need_flush = 1;
155 pgtable_free_tlb(tlb, pgtable_free_cache(hugepte, HUGEPTE_CACHE_NUM,
156 HUGEPTE_TABLE_SIZE-1));
157}
158
92#ifdef CONFIG_PPC_64K_PAGES 159#ifdef CONFIG_PPC_64K_PAGES
93 /* See comment in huge_pte_offset. Note that if we ever 160static void hugetlb_free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
94 * want to put the page size in the PMD, we would have 161 unsigned long addr, unsigned long end,
95 * to open code our own pte_alloc* function in order 162 unsigned long floor, unsigned long ceiling)
96 * to populate and set the size atomically 163{
97 */ 164 pmd_t *pmd;
98 pt = pte_alloc_map(mm, pm, addr); 165 unsigned long next;
99#else /* CONFIG_PPC_64K_PAGES */ 166 unsigned long start;
100 pt = (pte_t *)pm; 167
101#endif /* CONFIG_PPC_64K_PAGES */ 168 start = addr;
102 return pt; 169 pmd = pmd_offset(pud, addr);
103 } 170 do {
171 next = pmd_addr_end(addr, end);
172 if (pmd_none(*pmd))
173 continue;
174 free_hugepte_range(tlb, (hugepd_t *)pmd);
175 } while (pmd++, addr = next, addr != end);
176
177 start &= PUD_MASK;
178 if (start < floor)
179 return;
180 if (ceiling) {
181 ceiling &= PUD_MASK;
182 if (!ceiling)
183 return;
104 } 184 }
185 if (end - 1 > ceiling - 1)
186 return;
105 187
106 return NULL; 188 pmd = pmd_offset(pud, start);
189 pud_clear(pud);
190 pmd_free_tlb(tlb, pmd);
191}
192#endif
193
194static void hugetlb_free_pud_range(struct mmu_gather *tlb, pgd_t *pgd,
195 unsigned long addr, unsigned long end,
196 unsigned long floor, unsigned long ceiling)
197{
198 pud_t *pud;
199 unsigned long next;
200 unsigned long start;
201
202 start = addr;
203 pud = pud_offset(pgd, addr);
204 do {
205 next = pud_addr_end(addr, end);
206#ifdef CONFIG_PPC_64K_PAGES
207 if (pud_none_or_clear_bad(pud))
208 continue;
209 hugetlb_free_pmd_range(tlb, pud, addr, next, floor, ceiling);
210#else
211 if (pud_none(*pud))
212 continue;
213 free_hugepte_range(tlb, (hugepd_t *)pud);
214#endif
215 } while (pud++, addr = next, addr != end);
216
217 start &= PGDIR_MASK;
218 if (start < floor)
219 return;
220 if (ceiling) {
221 ceiling &= PGDIR_MASK;
222 if (!ceiling)
223 return;
224 }
225 if (end - 1 > ceiling - 1)
226 return;
227
228 pud = pud_offset(pgd, start);
229 pgd_clear(pgd);
230 pud_free_tlb(tlb, pud);
231}
232
233/*
234 * This function frees user-level page tables of a process.
235 *
236 * Must be called with pagetable lock held.
237 */
238void hugetlb_free_pgd_range(struct mmu_gather **tlb,
239 unsigned long addr, unsigned long end,
240 unsigned long floor, unsigned long ceiling)
241{
242 pgd_t *pgd;
243 unsigned long next;
244 unsigned long start;
245
246 /*
247 * Comments below take from the normal free_pgd_range(). They
248 * apply here too. The tests against HUGEPD_MASK below are
249 * essential, because we *don't* test for this at the bottom
250 * level. Without them we'll attempt to free a hugepte table
251 * when we unmap just part of it, even if there are other
252 * active mappings using it.
253 *
254 * The next few lines have given us lots of grief...
255 *
256 * Why are we testing HUGEPD* at this top level? Because
257 * often there will be no work to do at all, and we'd prefer
258 * not to go all the way down to the bottom just to discover
259 * that.
260 *
261 * Why all these "- 1"s? Because 0 represents both the bottom
262 * of the address space and the top of it (using -1 for the
263 * top wouldn't help much: the masks would do the wrong thing).
264 * The rule is that addr 0 and floor 0 refer to the bottom of
265 * the address space, but end 0 and ceiling 0 refer to the top
266 * Comparisons need to use "end - 1" and "ceiling - 1" (though
267 * that end 0 case should be mythical).
268 *
269 * Wherever addr is brought up or ceiling brought down, we
270 * must be careful to reject "the opposite 0" before it
271 * confuses the subsequent tests. But what about where end is
272 * brought down by HUGEPD_SIZE below? no, end can't go down to
273 * 0 there.
274 *
275 * Whereas we round start (addr) and ceiling down, by different
276 * masks at different levels, in order to test whether a table
277 * now has no other vmas using it, so can be freed, we don't
278 * bother to round floor or end up - the tests don't need that.
279 */
280
281 addr &= HUGEPD_MASK;
282 if (addr < floor) {
283 addr += HUGEPD_SIZE;
284 if (!addr)
285 return;
286 }
287 if (ceiling) {
288 ceiling &= HUGEPD_MASK;
289 if (!ceiling)
290 return;
291 }
292 if (end - 1 > ceiling - 1)
293 end -= HUGEPD_SIZE;
294 if (addr > end - 1)
295 return;
296
297 start = addr;
298 pgd = pgd_offset((*tlb)->mm, addr);
299 do {
300 BUG_ON(! in_hugepage_area((*tlb)->mm->context, addr));
301 next = pgd_addr_end(addr, end);
302 if (pgd_none_or_clear_bad(pgd))
303 continue;
304 hugetlb_free_pud_range(*tlb, pgd, addr, next, floor, ceiling);
305 } while (pgd++, addr = next, addr != end);
107} 306}
108 307
109void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, 308void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
@@ -841,3 +1040,27 @@ repeat:
841 out: 1040 out:
842 return err; 1041 return err;
843} 1042}
1043
1044static void zero_ctor(void *addr, kmem_cache_t *cache, unsigned long flags)
1045{
1046 memset(addr, 0, kmem_cache_size(cache));
1047}
1048
1049static int __init hugetlbpage_init(void)
1050{
1051 if (!cpu_has_feature(CPU_FTR_16M_PAGE))
1052 return -ENODEV;
1053
1054 huge_pgtable_cache = kmem_cache_create("hugepte_cache",
1055 HUGEPTE_TABLE_SIZE,
1056 HUGEPTE_TABLE_SIZE,
1057 SLAB_HWCACHE_ALIGN |
1058 SLAB_MUST_HWCACHE_ALIGN,
1059 zero_ctor, NULL);
1060 if (! huge_pgtable_cache)
1061 panic("hugetlbpage_init(): could not create hugepte cache\n");
1062
1063 return 0;
1064}
1065
1066module_init(hugetlbpage_init);
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c
index babebd15bdc4..9e30f968c184 100644
--- a/arch/powerpc/mm/init_64.c
+++ b/arch/powerpc/mm/init_64.c
@@ -162,7 +162,14 @@ static const char *pgtable_cache_name[ARRAY_SIZE(pgtable_cache_size)] = {
162}; 162};
163#endif /* CONFIG_PPC_64K_PAGES */ 163#endif /* CONFIG_PPC_64K_PAGES */
164 164
165#ifdef CONFIG_HUGETLB_PAGE
166/* Hugepages need one extra cache, initialized in hugetlbpage.c. We
167 * can't put into the tables above, because HPAGE_SHIFT is not compile
168 * time constant. */
169kmem_cache_t *pgtable_cache[ARRAY_SIZE(pgtable_cache_size)+1];
170#else
165kmem_cache_t *pgtable_cache[ARRAY_SIZE(pgtable_cache_size)]; 171kmem_cache_t *pgtable_cache[ARRAY_SIZE(pgtable_cache_size)];
172#endif
166 173
167void pgtable_cache_init(void) 174void pgtable_cache_init(void)
168{ 175{
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index 0a335f34974c..092355f37399 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -194,7 +194,7 @@ static int *of_get_associativity(struct device_node *dev)
194/* Returns nid in the range [0..MAX_NUMNODES-1], or -1 if no useful numa 194/* Returns nid in the range [0..MAX_NUMNODES-1], or -1 if no useful numa
195 * info is found. 195 * info is found.
196 */ 196 */
197static int of_node_to_nid(struct device_node *device) 197static int of_node_to_nid_single(struct device_node *device)
198{ 198{
199 int nid = -1; 199 int nid = -1;
200 unsigned int *tmp; 200 unsigned int *tmp;
@@ -216,6 +216,28 @@ out:
216 return nid; 216 return nid;
217} 217}
218 218
219/* Walk the device tree upwards, looking for an associativity id */
220int of_node_to_nid(struct device_node *device)
221{
222 struct device_node *tmp;
223 int nid = -1;
224
225 of_node_get(device);
226 while (device) {
227 nid = of_node_to_nid_single(device);
228 if (nid != -1)
229 break;
230
231 tmp = device;
232 device = of_get_parent(tmp);
233 of_node_put(tmp);
234 }
235 of_node_put(device);
236
237 return nid;
238}
239EXPORT_SYMBOL_GPL(of_node_to_nid);
240
219/* 241/*
220 * In theory, the "ibm,associativity" property may contain multiple 242 * In theory, the "ibm,associativity" property may contain multiple
221 * associativity lists because a resource may be multiply connected 243 * associativity lists because a resource may be multiply connected
@@ -300,7 +322,7 @@ static int __cpuinit numa_setup_cpu(unsigned long lcpu)
300 goto out; 322 goto out;
301 } 323 }
302 324
303 nid = of_node_to_nid(cpu); 325 nid = of_node_to_nid_single(cpu);
304 326
305 if (nid < 0 || !node_online(nid)) 327 if (nid < 0 || !node_online(nid))
306 nid = any_online_node(NODE_MASK_ALL); 328 nid = any_online_node(NODE_MASK_ALL);
@@ -393,7 +415,7 @@ static int __init parse_numa_properties(void)
393 415
394 cpu = find_cpu_node(i); 416 cpu = find_cpu_node(i);
395 BUG_ON(!cpu); 417 BUG_ON(!cpu);
396 nid = of_node_to_nid(cpu); 418 nid = of_node_to_nid_single(cpu);
397 of_node_put(cpu); 419 of_node_put(cpu);
398 420
399 /* 421 /*
@@ -437,7 +459,7 @@ new_range:
437 * have associativity properties. If none, then 459 * have associativity properties. If none, then
438 * everything goes to default_nid. 460 * everything goes to default_nid.
439 */ 461 */
440 nid = of_node_to_nid(memory); 462 nid = of_node_to_nid_single(memory);
441 if (nid < 0) 463 if (nid < 0)
442 nid = default_nid; 464 nid = default_nid;
443 node_set_online(nid); 465 node_set_online(nid);
@@ -776,7 +798,7 @@ int hot_add_scn_to_nid(unsigned long scn_addr)
776ha_new_range: 798ha_new_range:
777 start = read_n_cells(n_mem_addr_cells, &memcell_buf); 799 start = read_n_cells(n_mem_addr_cells, &memcell_buf);
778 size = read_n_cells(n_mem_size_cells, &memcell_buf); 800 size = read_n_cells(n_mem_size_cells, &memcell_buf);
779 nid = of_node_to_nid(memory); 801 nid = of_node_to_nid_single(memory);
780 802
781 /* Domains not present at boot default to 0 */ 803 /* Domains not present at boot default to 0 */
782 if (nid < 0 || !node_online(nid)) 804 if (nid < 0 || !node_online(nid))
diff --git a/arch/powerpc/platforms/cell/Kconfig b/arch/powerpc/platforms/cell/Kconfig
index c2a3db8edb0c..6a02d51086c8 100644
--- a/arch/powerpc/platforms/cell/Kconfig
+++ b/arch/powerpc/platforms/cell/Kconfig
@@ -12,7 +12,8 @@ config SPU_FS
12 12
13config SPUFS_MMAP 13config SPUFS_MMAP
14 bool 14 bool
15 depends on SPU_FS && SPARSEMEM && !PPC_64K_PAGES 15 depends on SPU_FS && SPARSEMEM
16 select MEMORY_HOTPLUG
16 default y 17 default y
17 18
18endmenu 19endmenu
diff --git a/arch/powerpc/platforms/cell/setup.c b/arch/powerpc/platforms/cell/setup.c
index dac5d0365fde..6574b22b3cf3 100644
--- a/arch/powerpc/platforms/cell/setup.c
+++ b/arch/powerpc/platforms/cell/setup.c
@@ -29,6 +29,8 @@
29#include <linux/seq_file.h> 29#include <linux/seq_file.h>
30#include <linux/root_dev.h> 30#include <linux/root_dev.h>
31#include <linux/console.h> 31#include <linux/console.h>
32#include <linux/mutex.h>
33#include <linux/memory_hotplug.h>
32 34
33#include <asm/mmu.h> 35#include <asm/mmu.h>
34#include <asm/processor.h> 36#include <asm/processor.h>
@@ -46,6 +48,7 @@
46#include <asm/cputable.h> 48#include <asm/cputable.h>
47#include <asm/ppc-pci.h> 49#include <asm/ppc-pci.h>
48#include <asm/irq.h> 50#include <asm/irq.h>
51#include <asm/spu.h>
49 52
50#include "interrupt.h" 53#include "interrupt.h"
51#include "iommu.h" 54#include "iommu.h"
@@ -69,77 +72,6 @@ static void cell_show_cpuinfo(struct seq_file *m)
69 of_node_put(root); 72 of_node_put(root);
70} 73}
71 74
72#ifdef CONFIG_SPARSEMEM
73static int __init find_spu_node_id(struct device_node *spe)
74{
75 unsigned int *id;
76#ifdef CONFIG_NUMA
77 struct device_node *cpu;
78 cpu = spe->parent->parent;
79 id = (unsigned int *)get_property(cpu, "node-id", NULL);
80#else
81 id = NULL;
82#endif
83 return id ? *id : 0;
84}
85
86static void __init cell_spuprop_present(struct device_node *spe,
87 const char *prop, int early)
88{
89 struct address_prop {
90 unsigned long address;
91 unsigned int len;
92 } __attribute__((packed)) *p;
93 int proplen;
94
95 unsigned long start_pfn, end_pfn, pfn;
96 int node_id;
97
98 p = (void*)get_property(spe, prop, &proplen);
99 WARN_ON(proplen != sizeof (*p));
100
101 node_id = find_spu_node_id(spe);
102
103 start_pfn = p->address >> PAGE_SHIFT;
104 end_pfn = (p->address + p->len + PAGE_SIZE - 1) >> PAGE_SHIFT;
105
106 /* We need to call memory_present *before* the call to sparse_init,
107 but we can initialize the page structs only *after* that call.
108 Thus, we're being called twice. */
109 if (early)
110 memory_present(node_id, start_pfn, end_pfn);
111 else {
112 /* As the pages backing SPU LS and I/O are outside the range
113 of regular memory, their page structs were not initialized
114 by free_area_init. Do it here instead. */
115 for (pfn = start_pfn; pfn < end_pfn; pfn++) {
116 struct page *page = pfn_to_page(pfn);
117 set_page_links(page, ZONE_DMA, node_id, pfn);
118 init_page_count(page);
119 reset_page_mapcount(page);
120 SetPageReserved(page);
121 INIT_LIST_HEAD(&page->lru);
122 }
123 }
124}
125
126static void __init cell_spumem_init(int early)
127{
128 struct device_node *node;
129 for (node = of_find_node_by_type(NULL, "spe");
130 node; node = of_find_node_by_type(node, "spe")) {
131 cell_spuprop_present(node, "local-store", early);
132 cell_spuprop_present(node, "problem", early);
133 cell_spuprop_present(node, "priv1", early);
134 cell_spuprop_present(node, "priv2", early);
135 }
136}
137#else
138static void __init cell_spumem_init(int early)
139{
140}
141#endif
142
143static void cell_progress(char *s, unsigned short hex) 75static void cell_progress(char *s, unsigned short hex)
144{ 76{
145 printk("*** %04x : %s\n", hex, s ? s : ""); 77 printk("*** %04x : %s\n", hex, s ? s : "");
@@ -172,8 +104,6 @@ static void __init cell_setup_arch(void)
172#endif 104#endif
173 105
174 mmio_nvram_init(); 106 mmio_nvram_init();
175
176 cell_spumem_init(0);
177} 107}
178 108
179/* 109/*
@@ -189,8 +119,6 @@ static void __init cell_init_early(void)
189 119
190 ppc64_interrupt_controller = IC_CELL_PIC; 120 ppc64_interrupt_controller = IC_CELL_PIC;
191 121
192 cell_spumem_init(1);
193
194 DBG(" <- cell_init_early()\n"); 122 DBG(" <- cell_init_early()\n");
195} 123}
196 124
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c
index 269dda4fd0b4..ad141fe8d52d 100644
--- a/arch/powerpc/platforms/cell/spu_base.c
+++ b/arch/powerpc/platforms/cell/spu_base.c
@@ -306,19 +306,19 @@ spu_request_irqs(struct spu *spu)
306 306
307 snprintf(spu->irq_c0, sizeof (spu->irq_c0), "spe%02d.0", spu->number); 307 snprintf(spu->irq_c0, sizeof (spu->irq_c0), "spe%02d.0", spu->number);
308 ret = request_irq(irq_base + spu->isrc, 308 ret = request_irq(irq_base + spu->isrc,
309 spu_irq_class_0, 0, spu->irq_c0, spu); 309 spu_irq_class_0, SA_INTERRUPT, spu->irq_c0, spu);
310 if (ret) 310 if (ret)
311 goto out; 311 goto out;
312 312
313 snprintf(spu->irq_c1, sizeof (spu->irq_c1), "spe%02d.1", spu->number); 313 snprintf(spu->irq_c1, sizeof (spu->irq_c1), "spe%02d.1", spu->number);
314 ret = request_irq(irq_base + IIC_CLASS_STRIDE + spu->isrc, 314 ret = request_irq(irq_base + IIC_CLASS_STRIDE + spu->isrc,
315 spu_irq_class_1, 0, spu->irq_c1, spu); 315 spu_irq_class_1, SA_INTERRUPT, spu->irq_c1, spu);
316 if (ret) 316 if (ret)
317 goto out1; 317 goto out1;
318 318
319 snprintf(spu->irq_c2, sizeof (spu->irq_c2), "spe%02d.2", spu->number); 319 snprintf(spu->irq_c2, sizeof (spu->irq_c2), "spe%02d.2", spu->number);
320 ret = request_irq(irq_base + 2*IIC_CLASS_STRIDE + spu->isrc, 320 ret = request_irq(irq_base + 2*IIC_CLASS_STRIDE + spu->isrc,
321 spu_irq_class_2, 0, spu->irq_c2, spu); 321 spu_irq_class_2, SA_INTERRUPT, spu->irq_c2, spu);
322 if (ret) 322 if (ret)
323 goto out2; 323 goto out2;
324 goto out; 324 goto out;
@@ -487,10 +487,14 @@ int spu_irq_class_1_bottom(struct spu *spu)
487 ea = spu->dar; 487 ea = spu->dar;
488 dsisr = spu->dsisr; 488 dsisr = spu->dsisr;
489 if (dsisr & (MFC_DSISR_PTE_NOT_FOUND | MFC_DSISR_ACCESS_DENIED)) { 489 if (dsisr & (MFC_DSISR_PTE_NOT_FOUND | MFC_DSISR_ACCESS_DENIED)) {
490 u64 flags;
491
490 access = (_PAGE_PRESENT | _PAGE_USER); 492 access = (_PAGE_PRESENT | _PAGE_USER);
491 access |= (dsisr & MFC_DSISR_ACCESS_PUT) ? _PAGE_RW : 0UL; 493 access |= (dsisr & MFC_DSISR_ACCESS_PUT) ? _PAGE_RW : 0UL;
494 local_irq_save(flags);
492 if (hash_page(ea, access, 0x300) != 0) 495 if (hash_page(ea, access, 0x300) != 0)
493 error |= CLASS1_ENABLE_STORAGE_FAULT_INTR; 496 error |= CLASS1_ENABLE_STORAGE_FAULT_INTR;
497 local_irq_restore(flags);
494 } 498 }
495 if (error & CLASS1_ENABLE_STORAGE_FAULT_INTR) { 499 if (error & CLASS1_ENABLE_STORAGE_FAULT_INTR) {
496 if ((ret = spu_handle_mm_fault(spu)) != 0) 500 if ((ret = spu_handle_mm_fault(spu)) != 0)
@@ -516,8 +520,50 @@ void spu_irq_setaffinity(struct spu *spu, int cpu)
516} 520}
517EXPORT_SYMBOL_GPL(spu_irq_setaffinity); 521EXPORT_SYMBOL_GPL(spu_irq_setaffinity);
518 522
519static void __iomem * __init map_spe_prop(struct device_node *n, 523static int __init find_spu_node_id(struct device_node *spe)
520 const char *name) 524{
525 unsigned int *id;
526 struct device_node *cpu;
527 cpu = spe->parent->parent;
528 id = (unsigned int *)get_property(cpu, "node-id", NULL);
529 return id ? *id : 0;
530}
531
532static int __init cell_spuprop_present(struct spu *spu, struct device_node *spe,
533 const char *prop)
534{
535 static DEFINE_MUTEX(add_spumem_mutex);
536
537 struct address_prop {
538 unsigned long address;
539 unsigned int len;
540 } __attribute__((packed)) *p;
541 int proplen;
542
543 unsigned long start_pfn, nr_pages;
544 struct pglist_data *pgdata;
545 struct zone *zone;
546 int ret;
547
548 p = (void*)get_property(spe, prop, &proplen);
549 WARN_ON(proplen != sizeof (*p));
550
551 start_pfn = p->address >> PAGE_SHIFT;
552 nr_pages = ((unsigned long)p->len + PAGE_SIZE - 1) >> PAGE_SHIFT;
553
554 pgdata = NODE_DATA(spu->nid);
555 zone = pgdata->node_zones;
556
557 /* XXX rethink locking here */
558 mutex_lock(&add_spumem_mutex);
559 ret = __add_pages(zone, start_pfn, nr_pages);
560 mutex_unlock(&add_spumem_mutex);
561
562 return ret;
563}
564
565static void __iomem * __init map_spe_prop(struct spu *spu,
566 struct device_node *n, const char *name)
521{ 567{
522 struct address_prop { 568 struct address_prop {
523 unsigned long address; 569 unsigned long address;
@@ -526,6 +572,8 @@ static void __iomem * __init map_spe_prop(struct device_node *n,
526 572
527 void *p; 573 void *p;
528 int proplen; 574 int proplen;
575 void* ret = NULL;
576 int err = 0;
529 577
530 p = get_property(n, name, &proplen); 578 p = get_property(n, name, &proplen);
531 if (proplen != sizeof (struct address_prop)) 579 if (proplen != sizeof (struct address_prop))
@@ -533,7 +581,14 @@ static void __iomem * __init map_spe_prop(struct device_node *n,
533 581
534 prop = p; 582 prop = p;
535 583
536 return ioremap(prop->address, prop->len); 584 err = cell_spuprop_present(spu, n, name);
585 if (err && (err != -EEXIST))
586 goto out;
587
588 ret = ioremap(prop->address, prop->len);
589
590 out:
591 return ret;
537} 592}
538 593
539static void spu_unmap(struct spu *spu) 594static void spu_unmap(struct spu *spu)
@@ -544,44 +599,45 @@ static void spu_unmap(struct spu *spu)
544 iounmap((u8 __iomem *)spu->local_store); 599 iounmap((u8 __iomem *)spu->local_store);
545} 600}
546 601
547static int __init spu_map_device(struct spu *spu, struct device_node *spe) 602static int __init spu_map_device(struct spu *spu, struct device_node *node)
548{ 603{
549 char *prop; 604 char *prop;
550 int ret; 605 int ret;
551 606
552 ret = -ENODEV; 607 ret = -ENODEV;
553 prop = get_property(spe, "isrc", NULL); 608 prop = get_property(node, "isrc", NULL);
554 if (!prop) 609 if (!prop)
555 goto out; 610 goto out;
556 spu->isrc = *(unsigned int *)prop; 611 spu->isrc = *(unsigned int *)prop;
557 612
558 spu->name = get_property(spe, "name", NULL); 613 spu->name = get_property(node, "name", NULL);
559 if (!spu->name) 614 if (!spu->name)
560 goto out; 615 goto out;
561 616
562 prop = get_property(spe, "local-store", NULL); 617 prop = get_property(node, "local-store", NULL);
563 if (!prop) 618 if (!prop)
564 goto out; 619 goto out;
565 spu->local_store_phys = *(unsigned long *)prop; 620 spu->local_store_phys = *(unsigned long *)prop;
566 621
567 /* we use local store as ram, not io memory */ 622 /* we use local store as ram, not io memory */
568 spu->local_store = (void __force *)map_spe_prop(spe, "local-store"); 623 spu->local_store = (void __force *)
624 map_spe_prop(spu, node, "local-store");
569 if (!spu->local_store) 625 if (!spu->local_store)
570 goto out; 626 goto out;
571 627
572 prop = get_property(spe, "problem", NULL); 628 prop = get_property(node, "problem", NULL);
573 if (!prop) 629 if (!prop)
574 goto out_unmap; 630 goto out_unmap;
575 spu->problem_phys = *(unsigned long *)prop; 631 spu->problem_phys = *(unsigned long *)prop;
576 632
577 spu->problem= map_spe_prop(spe, "problem"); 633 spu->problem= map_spe_prop(spu, node, "problem");
578 if (!spu->problem) 634 if (!spu->problem)
579 goto out_unmap; 635 goto out_unmap;
580 636
581 spu->priv1= map_spe_prop(spe, "priv1"); 637 spu->priv1= map_spe_prop(spu, node, "priv1");
582 /* priv1 is not available on a hypervisor */ 638 /* priv1 is not available on a hypervisor */
583 639
584 spu->priv2= map_spe_prop(spe, "priv2"); 640 spu->priv2= map_spe_prop(spu, node, "priv2");
585 if (!spu->priv2) 641 if (!spu->priv2)
586 goto out_unmap; 642 goto out_unmap;
587 ret = 0; 643 ret = 0;
@@ -593,17 +649,6 @@ out:
593 return ret; 649 return ret;
594} 650}
595 651
596static int __init find_spu_node_id(struct device_node *spe)
597{
598 unsigned int *id;
599 struct device_node *cpu;
600
601 cpu = spe->parent->parent;
602 id = (unsigned int *)get_property(cpu, "node-id", NULL);
603
604 return id ? *id : 0;
605}
606
607static int __init create_spu(struct device_node *spe) 652static int __init create_spu(struct device_node *spe)
608{ 653{
609 struct spu *spu; 654 struct spu *spu;
@@ -620,6 +665,10 @@ static int __init create_spu(struct device_node *spe)
620 goto out_free; 665 goto out_free;
621 666
622 spu->node = find_spu_node_id(spe); 667 spu->node = find_spu_node_id(spe);
668 spu->nid = of_node_to_nid(spe);
669 if (spu->nid == -1)
670 spu->nid = 0;
671
623 spu->stop_code = 0; 672 spu->stop_code = 0;
624 spu->slb_replace = 0; 673 spu->slb_replace = 0;
625 spu->mm = NULL; 674 spu->mm = NULL;
diff --git a/arch/powerpc/platforms/cell/spu_callbacks.c b/arch/powerpc/platforms/cell/spu_callbacks.c
index deb3afb94484..95b36430aa0f 100644
--- a/arch/powerpc/platforms/cell/spu_callbacks.c
+++ b/arch/powerpc/platforms/cell/spu_callbacks.c
@@ -318,6 +318,20 @@ void *spu_syscall_table[] = {
318 [__NR_unshare] sys_unshare, 318 [__NR_unshare] sys_unshare,
319 [__NR_splice] sys_splice, 319 [__NR_splice] sys_splice,
320 [__NR_tee] sys_tee, 320 [__NR_tee] sys_tee,
321 [__NR_vmsplice] sys_vmsplice,
322 [__NR_openat] sys_openat,
323 [__NR_mkdirat] sys_mkdirat,
324 [__NR_mknodat] sys_mknodat,
325 [__NR_fchownat] sys_fchownat,
326 [__NR_futimesat] sys_futimesat,
327 [__NR_newfstatat] sys_newfstatat,
328 [__NR_unlinkat] sys_unlinkat,
329 [__NR_renameat] sys_renameat,
330 [__NR_linkat] sys_linkat,
331 [__NR_symlinkat] sys_symlinkat,
332 [__NR_readlinkat] sys_readlinkat,
333 [__NR_fchmodat] sys_fchmodat,
334 [__NR_faccessat] sys_faccessat,
321}; 335};
322 336
323long spu_sys_callback(struct spu_syscall_block *s) 337long spu_sys_callback(struct spu_syscall_block *s)
diff --git a/arch/powerpc/platforms/powermac/pci.c b/arch/powerpc/platforms/powermac/pci.c
index f5d8d15d74fa..ea179afea632 100644
--- a/arch/powerpc/platforms/powermac/pci.c
+++ b/arch/powerpc/platforms/powermac/pci.c
@@ -1097,7 +1097,7 @@ pmac_pci_enable_device_hook(struct pci_dev *dev, int initial)
1097 * (iBook second controller) 1097 * (iBook second controller)
1098 */ 1098 */
1099 if (dev->vendor == PCI_VENDOR_ID_APPLE 1099 if (dev->vendor == PCI_VENDOR_ID_APPLE
1100 && (dev->class == ((PCI_CLASS_SERIAL_USB << 8) | 0x10)) 1100 && dev->class == PCI_CLASS_SERIAL_USB_OHCI
1101 && !node) { 1101 && !node) {
1102 printk(KERN_INFO "Apple USB OHCI %s disabled by firmware\n", 1102 printk(KERN_INFO "Apple USB OHCI %s disabled by firmware\n",
1103 pci_name(dev)); 1103 pci_name(dev));
diff --git a/arch/powerpc/platforms/pseries/eeh_event.c b/arch/powerpc/platforms/pseries/eeh_event.c
index a1bda6f96fd1..40020c65c89e 100644
--- a/arch/powerpc/platforms/pseries/eeh_event.c
+++ b/arch/powerpc/platforms/pseries/eeh_event.c
@@ -118,7 +118,15 @@ int eeh_send_failure_event (struct device_node *dn,
118{ 118{
119 unsigned long flags; 119 unsigned long flags;
120 struct eeh_event *event; 120 struct eeh_event *event;
121 char *location;
121 122
123 if (!mem_init_done) {
124 printk(KERN_ERR "EEH: event during early boot not handled\n");
125 location = (char *) get_property(dn, "ibm,loc-code", NULL);
126 printk(KERN_ERR "EEH: device node = %s\n", dn->full_name);
127 printk(KERN_ERR "EEH: PCI location = %s\n", location);
128 return 1;
129 }
122 event = kmalloc(sizeof(*event), GFP_ATOMIC); 130 event = kmalloc(sizeof(*event), GFP_ATOMIC);
123 if (event == NULL) { 131 if (event == NULL) {
124 printk (KERN_ERR "EEH: out of memory, event not handled\n"); 132 printk (KERN_ERR "EEH: out of memory, event not handled\n");
diff --git a/arch/ppc/platforms/4xx/ocotea.c b/arch/ppc/platforms/4xx/ocotea.c
index f841972f1fa9..554776d4b8ac 100644
--- a/arch/ppc/platforms/4xx/ocotea.c
+++ b/arch/ppc/platforms/4xx/ocotea.c
@@ -331,7 +331,7 @@ static void __init ocotea_init(void)
331void __init platform_init(unsigned long r3, unsigned long r4, 331void __init platform_init(unsigned long r3, unsigned long r4,
332 unsigned long r5, unsigned long r6, unsigned long r7) 332 unsigned long r5, unsigned long r6, unsigned long r7)
333{ 333{
334 ibm44x_platform_init(r3, r4, r5, r6, r7); 334 ibm440gx_platform_init(r3, r4, r5, r6, r7);
335 335
336 ppc_md.setup_arch = ocotea_setup_arch; 336 ppc_md.setup_arch = ocotea_setup_arch;
337 ppc_md.show_cpuinfo = ocotea_show_cpuinfo; 337 ppc_md.show_cpuinfo = ocotea_show_cpuinfo;
diff --git a/arch/ppc/platforms/mpc8272ads_setup.c b/arch/ppc/platforms/mpc8272ads_setup.c
index bc9b94f77e39..e62b75707f7a 100644
--- a/arch/ppc/platforms/mpc8272ads_setup.c
+++ b/arch/ppc/platforms/mpc8272ads_setup.c
@@ -26,11 +26,35 @@
26#include <asm/irq.h> 26#include <asm/irq.h>
27#include <asm/ppc_sys.h> 27#include <asm/ppc_sys.h>
28#include <asm/ppcboot.h> 28#include <asm/ppcboot.h>
29#include <linux/fs_uart_pd.h>
29 30
30#include "pq2ads_pd.h" 31#include "pq2ads_pd.h"
31 32
32static void init_fcc1_ioports(void); 33static void init_fcc1_ioports(void);
33static void init_fcc2_ioports(void); 34static void init_fcc2_ioports(void);
35static void init_scc1_uart_ioports(void);
36static void init_scc4_uart_ioports(void);
37
38static struct fs_uart_platform_info mpc8272_uart_pdata[] = {
39 [fsid_scc1_uart] = {
40 .init_ioports = init_scc1_uart_ioports,
41 .fs_no = fsid_scc1_uart,
42 .brg = 1,
43 .tx_num_fifo = 4,
44 .tx_buf_size = 32,
45 .rx_num_fifo = 4,
46 .rx_buf_size = 32,
47 },
48 [fsid_scc4_uart] = {
49 .init_ioports = init_scc4_uart_ioports,
50 .fs_no = fsid_scc4_uart,
51 .brg = 4,
52 .tx_num_fifo = 4,
53 .tx_buf_size = 32,
54 .rx_num_fifo = 4,
55 .rx_buf_size = 32,
56 },
57};
34 58
35static struct fs_mii_bus_info mii_bus_info = { 59static struct fs_mii_bus_info mii_bus_info = {
36 .method = fsmii_bitbang, 60 .method = fsmii_bitbang,
@@ -201,6 +225,55 @@ static void __init mpc8272ads_fixup_enet_pdata(struct platform_device *pdev,
201 } 225 }
202} 226}
203 227
228static void mpc8272ads_fixup_uart_pdata(struct platform_device *pdev,
229 int idx)
230{
231 bd_t *bd = (bd_t *) __res;
232 struct fs_uart_platform_info *pinfo;
233 int num = ARRAY_SIZE(mpc8272_uart_pdata);
234 int id = fs_uart_id_scc2fsid(idx);
235
236 /* no need to alter anything if console */
237 if ((id <= num) && (!pdev->dev.platform_data)) {
238 pinfo = &mpc8272_uart_pdata[id];
239 pinfo->uart_clk = bd->bi_intfreq;
240 pdev->dev.platform_data = pinfo;
241 }
242}
243
244static void init_scc1_uart_ioports(void)
245{
246 cpm2_map_t* immap = ioremap(CPM_MAP_ADDR, sizeof(cpm2_map_t));
247
248 /* SCC1 is only on port D */
249 setbits32(&immap->im_ioport.iop_ppard,0x00000003);
250 clrbits32(&immap->im_ioport.iop_psord,0x00000001);
251 setbits32(&immap->im_ioport.iop_psord,0x00000002);
252 clrbits32(&immap->im_ioport.iop_pdird,0x00000001);
253 setbits32(&immap->im_ioport.iop_pdird,0x00000002);
254
255 /* Wire BRG1 to SCC1 */
256 clrbits32(&immap->im_cpmux.cmx_scr,0x00ffffff);
257
258 iounmap(immap);
259}
260
261static void init_scc4_uart_ioports(void)
262{
263 cpm2_map_t* immap = ioremap(CPM_MAP_ADDR, sizeof(cpm2_map_t));
264
265 setbits32(&immap->im_ioport.iop_ppard,0x00000600);
266 clrbits32(&immap->im_ioport.iop_psord,0x00000600);
267 clrbits32(&immap->im_ioport.iop_pdird,0x00000200);
268 setbits32(&immap->im_ioport.iop_pdird,0x00000400);
269
270 /* Wire BRG4 to SCC4 */
271 clrbits32(&immap->im_cpmux.cmx_scr,0x000000ff);
272 setbits32(&immap->im_cpmux.cmx_scr,0x0000001b);
273
274 iounmap(immap);
275}
276
204static int mpc8272ads_platform_notify(struct device *dev) 277static int mpc8272ads_platform_notify(struct device *dev)
205{ 278{
206 static const struct platform_notify_dev_map dev_map[] = { 279 static const struct platform_notify_dev_map dev_map[] = {
@@ -209,6 +282,10 @@ static int mpc8272ads_platform_notify(struct device *dev)
209 .rtn = mpc8272ads_fixup_enet_pdata 282 .rtn = mpc8272ads_fixup_enet_pdata
210 }, 283 },
211 { 284 {
285 .bus_id = "fsl-cpm-scc:uart",
286 .rtn = mpc
287 },
288 {
212 .bus_id = NULL 289 .bus_id = NULL
213 } 290 }
214 }; 291 };
@@ -230,7 +307,44 @@ int __init mpc8272ads_init(void)
230 ppc_sys_device_enable(MPC82xx_CPM_FCC1); 307 ppc_sys_device_enable(MPC82xx_CPM_FCC1);
231 ppc_sys_device_enable(MPC82xx_CPM_FCC2); 308 ppc_sys_device_enable(MPC82xx_CPM_FCC2);
232 309
310 /* to be ready for console, let's attach pdata here */
311#ifdef CONFIG_SERIAL_CPM_SCC1
312 ppc_sys_device_setfunc(MPC82xx_CPM_SCC1, PPC_SYS_FUNC_UART);
313 ppc_sys_device_enable(MPC82xx_CPM_SCC1);
314
315#endif
316
317#ifdef CONFIG_SERIAL_CPM_SCC4
318 ppc_sys_device_setfunc(MPC82xx_CPM_SCC4, PPC_SYS_FUNC_UART);
319 ppc_sys_device_enable(MPC82xx_CPM_SCC4);
320#endif
321
322
233 return 0; 323 return 0;
234} 324}
235 325
326/*
327 To prevent confusion, console selection is gross:
328 by 0 assumed SCC1 and by 1 assumed SCC4
329 */
330struct platform_device* early_uart_get_pdev(int index)
331{
332 bd_t *bd = (bd_t *) __res;
333 struct fs_uart_platform_info *pinfo;
334
335 struct platform_device* pdev = NULL;
336 if(index) { /*assume SCC4 here*/
337 pdev = &ppc_sys_platform_devices[MPC82xx_CPM_SCC4];
338 pinfo = &mpc8272<F12>_uart_pdata[1];
339 } else { /*over SCC1*/
340 pdev = &ppc_sys_platform_devices[MPC82xx_CPM_SCC1];
341 pinfo = &mpc8272_uart_pdata[0];
342 }
343
344 pinfo->uart_clk = bd->bi_intfreq;
345 pdev->dev.platform_data = pinfo;
346 ppc_sys_fixup_mem_resource(pdev, IMAP_ADDR);
347 return NULL;
348}
349
236arch_initcall(mpc8272ads_init); 350arch_initcall(mpc8272ads_init);
diff --git a/arch/ppc/platforms/mpc866ads_setup.c b/arch/ppc/platforms/mpc866ads_setup.c
index ac8fcc68afeb..d919dab61347 100644
--- a/arch/ppc/platforms/mpc866ads_setup.c
+++ b/arch/ppc/platforms/mpc866ads_setup.c
@@ -20,6 +20,7 @@
20#include <linux/device.h> 20#include <linux/device.h>
21 21
22#include <linux/fs_enet_pd.h> 22#include <linux/fs_enet_pd.h>
23#include <linux/fs_uart_pd.h>
23#include <linux/mii.h> 24#include <linux/mii.h>
24 25
25#include <asm/delay.h> 26#include <asm/delay.h>
@@ -37,6 +38,11 @@
37 38
38extern unsigned char __res[]; 39extern unsigned char __res[];
39 40
41static void setup_fec1_ioports(void);
42static void setup_scc1_ioports(void);
43static void setup_smc1_ioports(void);
44static void setup_smc2_ioports(void);
45
40static struct fs_mii_bus_info fec_mii_bus_info = { 46static struct fs_mii_bus_info fec_mii_bus_info = {
41 .method = fsmii_fec, 47 .method = fsmii_fec,
42 .id = 0, 48 .id = 0,
@@ -79,6 +85,28 @@ static struct fs_platform_info mpc8xx_scc_pdata = {
79 .phy_irq = -1, 85 .phy_irq = -1,
80 86
81 .bus_info = &scc_mii_bus_info, 87 .bus_info = &scc_mii_bus_info,
88
89};
90
91static struct fs_uart_platform_info mpc866_uart_pdata[] = {
92 [fsid_smc1_uart] = {
93 .brg = 1,
94 .fs_no = fsid_smc1_uart,
95 .init_ioports = setup_smc1_ioports,
96 .tx_num_fifo = 4,
97 .tx_buf_size = 32,
98 .rx_num_fifo = 4,
99 .rx_buf_size = 32,
100 },
101 [fsid_smc2_uart] = {
102 .brg = 2,
103 .fs_no = fsid_smc2_uart,
104 .init_ioports = setup_smc2_ioports,
105 .tx_num_fifo = 4,
106 .tx_buf_size = 32,
107 .rx_num_fifo = 4,
108 .rx_buf_size = 32,
109 },
82}; 110};
83 111
84void __init board_init(void) 112void __init board_init(void)
@@ -92,9 +120,12 @@ void __init board_init(void)
92 printk(KERN_CRIT "Could not remap BCSR1\n"); 120 printk(KERN_CRIT "Could not remap BCSR1\n");
93 return; 121 return;
94 } 122 }
123
95#ifdef CONFIG_SERIAL_CPM_SMC1 124#ifdef CONFIG_SERIAL_CPM_SMC1
96 cp->cp_simode &= ~(0xe0000000 >> 17); /* brg1 */ 125 cp->cp_simode &= ~(0xe0000000 >> 17); /* brg1 */
97 clrbits32(bcsr_io,(0x80000000 >> 7)); 126 clrbits32(bcsr_io,(0x80000000 >> 7));
127 cp->cp_smc[0].smc_smcm |= (SMCM_RX | SMCM_TX);
128 cp->cp_smc[0].smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);
98#else 129#else
99 setbits32(bcsr_io,(0x80000000 >> 7)); 130 setbits32(bcsr_io,(0x80000000 >> 7));
100 131
@@ -108,6 +139,8 @@ void __init board_init(void)
108 cp->cp_simode &= ~(0xe0000000 >> 1); 139 cp->cp_simode &= ~(0xe0000000 >> 1);
109 cp->cp_simode |= (0x20000000 >> 1); /* brg2 */ 140 cp->cp_simode |= (0x20000000 >> 1); /* brg2 */
110 clrbits32(bcsr_io,(0x80000000 >> 13)); 141 clrbits32(bcsr_io,(0x80000000 >> 13));
142 cp->cp_smc[1].smc_smcm |= (SMCM_RX | SMCM_TX);
143 cp->cp_smc[1].smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);
111#else 144#else
112 clrbits32(bcsr_io,(0x80000000 >> 13)); 145 clrbits32(bcsr_io,(0x80000000 >> 13));
113 cp->cp_pbpar &= ~(0x00000c00); 146 cp->cp_pbpar &= ~(0x00000c00);
@@ -232,6 +265,74 @@ static void mpc866ads_fixup_scc_enet_pdata(struct platform_device *pdev,
232 mpc866ads_fixup_enet_pdata(pdev, fsid_scc1 + pdev->id - 1); 265 mpc866ads_fixup_enet_pdata(pdev, fsid_scc1 + pdev->id - 1);
233} 266}
234 267
268static void setup_smc1_ioports(void)
269{
270 immap_t *immap = (immap_t *) IMAP_ADDR;
271 unsigned *bcsr_io;
272 unsigned int iobits = 0x000000c0;
273
274 bcsr_io = ioremap(BCSR1, sizeof(unsigned long));
275
276 if (bcsr_io == NULL) {
277 printk(KERN_CRIT "Could not remap BCSR1\n");
278 return;
279 }
280
281 clrbits32(bcsr_io,BCSR1_RS232EN_1);
282 iounmap(bcsr_io);
283
284 setbits32(&immap->im_cpm.cp_pbpar, iobits);
285 clrbits32(&immap->im_cpm.cp_pbdir, iobits);
286 clrbits16(&immap->im_cpm.cp_pbodr, iobits);
287
288}
289
290static void setup_smc2_ioports(void)
291{
292 immap_t *immap = (immap_t *) IMAP_ADDR;
293 unsigned *bcsr_io;
294 unsigned int iobits = 0x00000c00;
295
296 bcsr_io = ioremap(BCSR1, sizeof(unsigned long));
297
298 if (bcsr_io == NULL) {
299 printk(KERN_CRIT "Could not remap BCSR1\n");
300 return;
301 }
302
303 clrbits32(bcsr_io,BCSR1_RS232EN_2);
304
305 iounmap(bcsr_io);
306
307#ifndef CONFIG_SERIAL_CPM_ALT_SMC2
308 setbits32(&immap->im_cpm.cp_pbpar, iobits);
309 clrbits32(&immap->im_cpm.cp_pbdir, iobits);
310 clrbits16(&immap->im_cpm.cp_pbodr, iobits);
311#else
312 setbits16(&immap->im_ioport.iop_papar, iobits);
313 clrbits16(&immap->im_ioport.iop_padir, iobits);
314 clrbits16(&immap->im_ioport.iop_paodr, iobits);
315#endif
316
317}
318
319static void __init mpc866ads_fixup_uart_pdata(struct platform_device *pdev,
320 int idx)
321{
322 bd_t *bd = (bd_t *) __res;
323 struct fs_uart_platform_info *pinfo;
324 int num = ARRAY_SIZE(mpc866_uart_pdata);
325
326 int id = fs_uart_id_smc2fsid(idx);
327
328 /* no need to alter anything if console */
329 if ((id <= num) && (!pdev->dev.platform_data)) {
330 pinfo = &mpc866_uart_pdata[id];
331 pinfo->uart_clk = bd->bi_intfreq;
332 pdev->dev.platform_data = pinfo;
333 }
334}
335
235static int mpc866ads_platform_notify(struct device *dev) 336static int mpc866ads_platform_notify(struct device *dev)
236{ 337{
237 static const struct platform_notify_dev_map dev_map[] = { 338 static const struct platform_notify_dev_map dev_map[] = {
@@ -244,6 +345,10 @@ static int mpc866ads_platform_notify(struct device *dev)
244 .rtn = mpc866ads_fixup_scc_enet_pdata, 345 .rtn = mpc866ads_fixup_scc_enet_pdata,
245 }, 346 },
246 { 347 {
348 .bus_id = "fsl-cpm-smc:uart",
349 .rtn = mpc866ads_fixup_uart_pdata
350 },
351 {
247 .bus_id = NULL 352 .bus_id = NULL
248 } 353 }
249 }; 354 };
@@ -267,7 +372,42 @@ int __init mpc866ads_init(void)
267#endif 372#endif
268 ppc_sys_device_enable(MPC8xx_CPM_FEC1); 373 ppc_sys_device_enable(MPC8xx_CPM_FEC1);
269 374
375/* Since either of the uarts could be used as console, they need to ready */
376#ifdef CONFIG_SERIAL_CPM_SMC1
377 ppc_sys_device_enable(MPC8xx_CPM_SMC1);
378 ppc_sys_device_setfunc(MPC8xx_CPM_SMC1, PPC_SYS_FUNC_UART);
379#endif
380
381#ifdef CONFIG_SERIAL_CPM_SMC
382 ppc_sys_device_enable(MPC8xx_CPM_SMC2);
383 ppc_sys_device_setfunc(MPC8xx_CPM_SMC2, PPC_SYS_FUNC_UART);
384#endif
385
270 return 0; 386 return 0;
271} 387}
272 388
389/*
390 To prevent confusion, console selection is gross:
391 by 0 assumed SMC1 and by 1 assumed SMC2
392 */
393struct platform_device* early_uart_get_pdev(int index)
394{
395 bd_t *bd = (bd_t *) __res;
396 struct fs_uart_platform_info *pinfo;
397
398 struct platform_device* pdev = NULL;
399 if(index) { /*assume SMC2 here*/
400 pdev = &ppc_sys_platform_devices[MPC8xx_CPM_SMC2];
401 pinfo = &mpc866_uart_pdata[1];
402 } else { /*over SMC1*/
403 pdev = &ppc_sys_platform_devices[MPC8xx_CPM_SMC1];
404 pinfo = &mpc866_uart_pdata[0];
405 }
406
407 pinfo->uart_clk = bd->bi_intfreq;
408 pdev->dev.platform_data = pinfo;
409 ppc_sys_fixup_mem_resource(pdev, IMAP_ADDR);
410 return NULL;
411}
412
273arch_initcall(mpc866ads_init); 413arch_initcall(mpc866ads_init);
diff --git a/arch/ppc/platforms/mpc885ads_setup.c b/arch/ppc/platforms/mpc885ads_setup.c
index 50a99e5f7c68..4b88679cd31c 100644
--- a/arch/ppc/platforms/mpc885ads_setup.c
+++ b/arch/ppc/platforms/mpc885ads_setup.c
@@ -20,6 +20,7 @@
20#include <linux/device.h> 20#include <linux/device.h>
21 21
22#include <linux/fs_enet_pd.h> 22#include <linux/fs_enet_pd.h>
23#include <linux/fs_uart_pd.h>
23#include <linux/mii.h> 24#include <linux/mii.h>
24 25
25#include <asm/delay.h> 26#include <asm/delay.h>
@@ -35,9 +36,32 @@
35#include <asm/ppc_sys.h> 36#include <asm/ppc_sys.h>
36 37
37extern unsigned char __res[]; 38extern unsigned char __res[];
39static void setup_smc1_ioports(void);
40static void setup_smc2_ioports(void);
38 41
39static void __init mpc885ads_scc_phy_init(char); 42static void __init mpc885ads_scc_phy_init(char);
40 43
44static struct fs_uart_platform_info mpc885_uart_pdata[] = {
45 [fsid_smc1_uart] = {
46 .brg = 1,
47 .fs_no = fsid_smc1_uart,
48 .init_ioports = setup_smc1_ioports,
49 .tx_num_fifo = 4,
50 .tx_buf_size = 32,
51 .rx_num_fifo = 4,
52 .rx_buf_size = 32,
53 },
54 [fsid_smc2_uart] = {
55 .brg = 2,
56 .fs_no = fsid_smc2_uart,
57 .init_ioports = setup_smc2_ioports,
58 .tx_num_fifo = 4,
59 .tx_buf_size = 32,
60 .rx_num_fifo = 4,
61 .rx_buf_size = 32,
62 },
63};
64
41static struct fs_mii_bus_info fec_mii_bus_info = { 65static struct fs_mii_bus_info fec_mii_bus_info = {
42 .method = fsmii_fec, 66 .method = fsmii_fec,
43 .id = 0, 67 .id = 0,
@@ -116,6 +140,8 @@ void __init board_init(void)
116#ifdef CONFIG_SERIAL_CPM_SMC1 140#ifdef CONFIG_SERIAL_CPM_SMC1
117 cp->cp_simode &= ~(0xe0000000 >> 17); /* brg1 */ 141 cp->cp_simode &= ~(0xe0000000 >> 17); /* brg1 */
118 clrbits32(bcsr_io, BCSR1_RS232EN_1); 142 clrbits32(bcsr_io, BCSR1_RS232EN_1);
143 cp->cp_smc[0].smc_smcm |= (SMCM_RX | SMCM_TX);
144 cp->cp_smc[0].smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);
119#else 145#else
120 setbits32(bcsr_io,BCSR1_RS232EN_1); 146 setbits32(bcsr_io,BCSR1_RS232EN_1);
121 cp->cp_smc[0].smc_smcmr = 0; 147 cp->cp_smc[0].smc_smcmr = 0;
@@ -126,6 +152,8 @@ void __init board_init(void)
126 cp->cp_simode &= ~(0xe0000000 >> 1); 152 cp->cp_simode &= ~(0xe0000000 >> 1);
127 cp->cp_simode |= (0x20000000 >> 1); /* brg2 */ 153 cp->cp_simode |= (0x20000000 >> 1); /* brg2 */
128 clrbits32(bcsr_io,BCSR1_RS232EN_2); 154 clrbits32(bcsr_io,BCSR1_RS232EN_2);
155 cp->cp_smc[1].smc_smcm |= (SMCM_RX | SMCM_TX);
156 cp->cp_smc[1].smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);
129#else 157#else
130 setbits32(bcsr_io,BCSR1_RS232EN_2); 158 setbits32(bcsr_io,BCSR1_RS232EN_2);
131 cp->cp_smc[1].smc_smcmr = 0; 159 cp->cp_smc[1].smc_smcmr = 0;
@@ -343,6 +371,70 @@ static void mpc885ads_scc_phy_init(char phy_addr)
343 out_be32(&fecp->fec_mii_speed, 0); 371 out_be32(&fecp->fec_mii_speed, 0);
344} 372}
345 373
374static void setup_smc1_ioports(void)
375{
376 immap_t *immap = (immap_t *) IMAP_ADDR;
377 unsigned *bcsr_io;
378 unsigned int iobits = 0x000000c0;
379
380 bcsr_io = ioremap(BCSR1, sizeof(unsigned long));
381
382 if (bcsr_io == NULL) {
383 printk(KERN_CRIT "Could not remap BCSR1\n");
384 return;
385 }
386 clrbits32(bcsr_io,BCSR1_RS232EN_1);
387 iounmap(bcsr_io);
388
389 setbits32(&immap->im_cpm.cp_pbpar, iobits);
390 clrbits32(&immap->im_cpm.cp_pbdir, iobits);
391 clrbits16(&immap->im_cpm.cp_pbodr, iobits);
392}
393
394static void setup_smc2_ioports(void)
395{
396 immap_t *immap = (immap_t *) IMAP_ADDR;
397 unsigned *bcsr_io;
398 unsigned int iobits = 0x00000c00;
399
400 bcsr_io = ioremap(BCSR1, sizeof(unsigned long));
401
402 if (bcsr_io == NULL) {
403 printk(KERN_CRIT "Could not remap BCSR1\n");
404 return;
405 }
406 clrbits32(bcsr_io,BCSR1_RS232EN_2);
407 iounmap(bcsr_io);
408
409#ifndef CONFIG_SERIAL_CPM_ALT_SMC2
410 setbits32(&immap->im_cpm.cp_pbpar, iobits);
411 clrbits32(&immap->im_cpm.cp_pbdir, iobits);
412 clrbits16(&immap->im_cpm.cp_pbodr, iobits);
413#else
414 setbits16(&immap->im_ioport.iop_papar, iobits);
415 clrbits16(&immap->im_ioport.iop_padir, iobits);
416 clrbits16(&immap->im_ioport.iop_paodr, iobits);
417#endif
418}
419
420static void __init mpc885ads_fixup_uart_pdata(struct platform_device *pdev,
421 int idx)
422{
423 bd_t *bd = (bd_t *) __res;
424 struct fs_uart_platform_info *pinfo;
425 int num = ARRAY_SIZE(mpc885_uart_pdata);
426
427 int id = fs_uart_id_smc2fsid(idx);
428
429 /* no need to alter anything if console */
430 if ((id <= num) && (!pdev->dev.platform_data)) {
431 pinfo = &mpc885_uart_pdata[id];
432 pinfo->uart_clk = bd->bi_intfreq;
433 pdev->dev.platform_data = pinfo;
434 }
435}
436
437
346static int mpc885ads_platform_notify(struct device *dev) 438static int mpc885ads_platform_notify(struct device *dev)
347{ 439{
348 440
@@ -356,12 +448,17 @@ static int mpc885ads_platform_notify(struct device *dev)
356 .rtn = mpc885ads_fixup_scc_enet_pdata, 448 .rtn = mpc885ads_fixup_scc_enet_pdata,
357 }, 449 },
358 { 450 {
451 .bus_id = "fsl-cpm-smc:uart",
452 .rtn = mpc885ads_fixup_uart_pdata
453 },
454 {
359 .bus_id = NULL 455 .bus_id = NULL
360 } 456 }
361 }; 457 };
362 458
363 platform_notify_map(dev_map,dev); 459 platform_notify_map(dev_map,dev);
364 460
461 return 0;
365} 462}
366 463
367int __init mpc885ads_init(void) 464int __init mpc885ads_init(void)
@@ -383,7 +480,41 @@ int __init mpc885ads_init(void)
383 ppc_sys_device_enable(MPC8xx_CPM_FEC2); 480 ppc_sys_device_enable(MPC8xx_CPM_FEC2);
384#endif 481#endif
385 482
483#ifdef CONFIG_SERIAL_CPM_SMC1
484 ppc_sys_device_enable(MPC8xx_CPM_SMC1);
485 ppc_sys_device_setfunc(MPC8xx_CPM_SMC1, PPC_SYS_FUNC_UART);
486#endif
487
488#ifdef CONFIG_SERIAL_CPM_SMC2
489 ppc_sys_device_enable(MPC8xx_CPM_SMC2);
490 ppc_sys_device_setfunc(MPC8xx_CPM_SMC2, PPC_SYS_FUNC_UART);
491#endif
386 return 0; 492 return 0;
387} 493}
388 494
389arch_initcall(mpc885ads_init); 495arch_initcall(mpc885ads_init);
496
497/*
498 To prevent confusion, console selection is gross:
499 by 0 assumed SMC1 and by 1 assumed SMC2
500 */
501struct platform_device* early_uart_get_pdev(int index)
502{
503 bd_t *bd = (bd_t *) __res;
504 struct fs_uart_platform_info *pinfo;
505
506 struct platform_device* pdev = NULL;
507 if(index) { /*assume SMC2 here*/
508 pdev = &ppc_sys_platform_devices[MPC8xx_CPM_SMC2];
509 pinfo = &mpc885_uart_pdata[1];
510 } else { /*over SMC1*/
511 pdev = &ppc_sys_platform_devices[MPC8xx_CPM_SMC1];
512 pinfo = &mpc885_uart_pdata[0];
513 }
514
515 pinfo->uart_clk = bd->bi_intfreq;
516 pdev->dev.platform_data = pinfo;
517 ppc_sys_fixup_mem_resource(pdev, IMAP_ADDR);
518 return NULL;
519}
520
diff --git a/arch/ppc/platforms/pq2ads.c b/arch/ppc/platforms/pq2ads.c
index 3365fd788a7a..7fc2e02f5246 100644
--- a/arch/ppc/platforms/pq2ads.c
+++ b/arch/ppc/platforms/pq2ads.c
@@ -14,11 +14,40 @@
14 14
15#include <linux/init.h> 15#include <linux/init.h>
16 16
17#include <asm/io.h>
17#include <asm/mpc8260.h> 18#include <asm/mpc8260.h>
19#include <asm/cpm2.h>
20#include <asm/immap_cpm2.h>
18 21
19void __init 22void __init
20m82xx_board_setup(void) 23m82xx_board_setup(void)
21{ 24{
25 cpm2_map_t* immap = ioremap(CPM_MAP_ADDR, sizeof(cpm2_map_t));
26 u32 *bcsr = ioremap(BCSR_ADDR+4, sizeof(u32));
27
22 /* Enable the 2nd UART port */ 28 /* Enable the 2nd UART port */
23 *(volatile uint *)(BCSR_ADDR + 4) &= ~BCSR1_RS232_EN2; 29 clrbits32(bcsr, BCSR1_RS232_EN2);
30
31#ifdef CONFIG_SERIAL_CPM_SCC1
32 clrbits32((u32*)&immap->im_scc[0].scc_sccm, UART_SCCM_TX | UART_SCCM_RX);
33 clrbits32((u32*)&immap->im_scc[0].scc_gsmrl, SCC_GSMRL_ENR | SCC_GSMRL_ENT);
34#endif
35
36#ifdef CONFIG_SERIAL_CPM_SCC2
37 clrbits32((u32*)&immap->im_scc[1].scc_sccm, UART_SCCM_TX | UART_SCCM_RX);
38 clrbits32((u32*)&immap->im_scc[1].scc_gsmrl, SCC_GSMRL_ENR | SCC_GSMRL_ENT);
39#endif
40
41#ifdef CONFIG_SERIAL_CPM_SCC3
42 clrbits32((u32*)&immap->im_scc[2].scc_sccm, UART_SCCM_TX | UART_SCCM_RX);
43 clrbits32((u32*)&immap->im_scc[2].scc_gsmrl, SCC_GSMRL_ENR | SCC_GSMRL_ENT);
44#endif
45
46#ifdef CONFIG_SERIAL_CPM_SCC4
47 clrbits32((u32*)&immap->im_scc[3].scc_sccm, UART_SCCM_TX | UART_SCCM_RX);
48 clrbits32((u32*)&immap->im_scc[3].scc_gsmrl, SCC_GSMRL_ENR | SCC_GSMRL_ENT);
49#endif
50
51 iounmap(bcsr);
52 iounmap(immap);
24} 53}
diff --git a/arch/ppc/syslib/ibm440gx_common.c b/arch/ppc/syslib/ibm440gx_common.c
index a7dd55f1c63e..f6cc16888527 100644
--- a/arch/ppc/syslib/ibm440gx_common.c
+++ b/arch/ppc/syslib/ibm440gx_common.c
@@ -2,7 +2,7 @@
2 * PPC440GX system library 2 * PPC440GX system library
3 * 3 *
4 * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net> 4 * Eugene Surovegin <eugene.surovegin@zultys.com> or <ebs@ebshome.net>
5 * Copyright (c) 2003, 2004 Zultys Technologies 5 * Copyright (c) 2003 - 2006 Zultys Technologies
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
8 * under the terms of the GNU General Public License as published by the 8 * under the terms of the GNU General Public License as published by the
@@ -282,3 +282,14 @@ int ibm440gx_show_cpuinfo(struct seq_file *m){
282 return 0; 282 return 0;
283} 283}
284 284
285void __init ibm440gx_platform_init(unsigned long r3, unsigned long r4,
286 unsigned long r5, unsigned long r6,
287 unsigned long r7)
288{
289 /* Erratum 440_43 workaround, disable L1 cache parity checking */
290 if (!strcmp(cur_cpu_spec->cpu_name, "440GX Rev. C") ||
291 !strcmp(cur_cpu_spec->cpu_name, "440GX Rev. F"))
292 mtspr(SPRN_CCR1, mfspr(SPRN_CCR1) | CCR1_DPC);
293
294 ibm44x_platform_init(r3, r4, r5, r6, r7);
295}
diff --git a/arch/ppc/syslib/ibm440gx_common.h b/arch/ppc/syslib/ibm440gx_common.h
index a2ab9fab8e34..a03ec6022e8f 100644
--- a/arch/ppc/syslib/ibm440gx_common.h
+++ b/arch/ppc/syslib/ibm440gx_common.h
@@ -29,6 +29,10 @@
29void ibm440gx_get_clocks(struct ibm44x_clocks*, unsigned int sys_clk, 29void ibm440gx_get_clocks(struct ibm44x_clocks*, unsigned int sys_clk,
30 unsigned int ser_clk) __init; 30 unsigned int ser_clk) __init;
31 31
32/* common 440GX platform init */
33void ibm440gx_platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
34 unsigned long r6, unsigned long r7) __init;
35
32/* Enable L2 cache */ 36/* Enable L2 cache */
33void ibm440gx_l2c_enable(void) __init; 37void ibm440gx_l2c_enable(void) __init;
34 38
diff --git a/arch/ppc/syslib/mpc8xx_devices.c b/arch/ppc/syslib/mpc8xx_devices.c
index bd41ed83beb3..6f536383866e 100644
--- a/arch/ppc/syslib/mpc8xx_devices.c
+++ b/arch/ppc/syslib/mpc8xx_devices.c
@@ -170,12 +170,18 @@ struct platform_device ppc_sys_platform_devices[] = {
170 [MPC8xx_CPM_SMC1] = { 170 [MPC8xx_CPM_SMC1] = {
171 .name = "fsl-cpm-smc", 171 .name = "fsl-cpm-smc",
172 .id = 1, 172 .id = 1,
173 .num_resources = 2, 173 .num_resources = 3,
174 .resource = (struct resource[]) { 174 .resource = (struct resource[]) {
175 { 175 {
176 .name = "regs", 176 .name = "regs",
177 .start = 0xa82, 177 .start = 0xa80,
178 .end = 0xa91, 178 .end = 0xa8f,
179 .flags = IORESOURCE_MEM,
180 },
181 {
182 .name = "pram",
183 .start = 0x3e80,
184 .end = 0x3ebf,
179 .flags = IORESOURCE_MEM, 185 .flags = IORESOURCE_MEM,
180 }, 186 },
181 { 187 {
@@ -189,15 +195,22 @@ struct platform_device ppc_sys_platform_devices[] = {
189 [MPC8xx_CPM_SMC2] = { 195 [MPC8xx_CPM_SMC2] = {
190 .name = "fsl-cpm-smc", 196 .name = "fsl-cpm-smc",
191 .id = 2, 197 .id = 2,
192 .num_resources = 2, 198 .num_resources = 3,
193 .resource = (struct resource[]) { 199 .resource = (struct resource[]) {
194 { 200 {
195 .name = "regs", 201 .name = "regs",
196 .start = 0xa92, 202 .start = 0xa90,
197 .end = 0xaa1, 203 .end = 0xa9f,
198 .flags = IORESOURCE_MEM, 204 .flags = IORESOURCE_MEM,
199 }, 205 },
200 { 206 {
207 .name = "pram",
208 .start = 0x3f80,
209 .end = 0x3fbf,
210 .flags = IORESOURCE_MEM,
211
212 },
213 {
201 .name = "interrupt", 214 .name = "interrupt",
202 .start = MPC8xx_INT_SMC2, 215 .start = MPC8xx_INT_SMC2,
203 .end = MPC8xx_INT_SMC2, 216 .end = MPC8xx_INT_SMC2,
diff --git a/arch/ppc/syslib/ppc_sys.c b/arch/ppc/syslib/ppc_sys.c
index 7662c4e6e7d6..2d48018b71d9 100644
--- a/arch/ppc/syslib/ppc_sys.c
+++ b/arch/ppc/syslib/ppc_sys.c
@@ -109,9 +109,11 @@ ppc_sys_fixup_mem_resource(struct platform_device *pdev, phys_addr_t paddr)
109 int i; 109 int i;
110 for (i = 0; i < pdev->num_resources; i++) { 110 for (i = 0; i < pdev->num_resources; i++) {
111 struct resource *r = &pdev->resource[i]; 111 struct resource *r = &pdev->resource[i];
112 if ((r->flags & IORESOURCE_MEM) == IORESOURCE_MEM) { 112 if (((r->flags & IORESOURCE_MEM) == IORESOURCE_MEM) &&
113 ((r->flags & PPC_SYS_IORESOURCE_FIXUPPED) != PPC_SYS_IORESOURCE_FIXUPPED)) {
113 r->start += paddr; 114 r->start += paddr;
114 r->end += paddr; 115 r->end += paddr;
116 r->flags |= PPC_SYS_IORESOURCE_FIXUPPED;
115 } 117 }
116 } 118 }
117} 119}
diff --git a/arch/ppc/syslib/pq2_sys.c b/arch/ppc/syslib/pq2_sys.c
index 75e64f1c144d..433b0fa203e1 100644
--- a/arch/ppc/syslib/pq2_sys.c
+++ b/arch/ppc/syslib/pq2_sys.c
@@ -113,13 +113,13 @@ struct ppc_sys_spec ppc_sys_specs[] = {
113 .ppc_sys_name = "8248", 113 .ppc_sys_name = "8248",
114 .mask = 0x0000ff00, 114 .mask = 0x0000ff00,
115 .value = 0x00000c00, 115 .value = 0x00000c00,
116 .num_devices = 11, 116 .num_devices = 12,
117 .device_list = (enum ppc_sys_devices[]) 117 .device_list = (enum ppc_sys_devices[])
118 { 118 {
119 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_SCC1, 119 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_SCC1,
120 MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3, MPC82xx_CPM_SMC1, 120 MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3, MPC82xx_CPM_SCC4,
121 MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI, MPC82xx_CPM_I2C, 121 MPC82xx_CPM_SMC1, MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI,
122 MPC82xx_CPM_USB, MPC82xx_SEC1, 122 MPC82xx_CPM_I2C, MPC82xx_CPM_USB, MPC82xx_SEC1,
123 }, 123 },
124 }, 124 },
125 { 125 {
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c
index 54d35c130907..9a22434a580c 100644
--- a/arch/s390/appldata/appldata_base.c
+++ b/arch/s390/appldata/appldata_base.c
@@ -652,7 +652,7 @@ appldata_cpu_notify(struct notifier_block *self,
652 return NOTIFY_OK; 652 return NOTIFY_OK;
653} 653}
654 654
655static struct notifier_block __devinitdata appldata_nb = { 655static struct notifier_block appldata_nb = {
656 .notifier_call = appldata_cpu_notify, 656 .notifier_call = appldata_cpu_notify,
657}; 657};
658 658
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c
index 5291b5f8788d..b4c815d8ef75 100644
--- a/arch/s390/kernel/compat_signal.c
+++ b/arch/s390/kernel/compat_signal.c
@@ -430,7 +430,7 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size)
430 430
431 /* This is the X/Open sanctioned signal stack switching. */ 431 /* This is the X/Open sanctioned signal stack switching. */
432 if (ka->sa.sa_flags & SA_ONSTACK) { 432 if (ka->sa.sa_flags & SA_ONSTACK) {
433 if (! on_sig_stack(sp)) 433 if (! sas_ss_flags(sp))
434 sp = current->sas_ss_sp + current->sas_ss_size; 434 sp = current->sas_ss_sp + current->sas_ss_size;
435 } 435 }
436 436
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S
index 199da68bd7be..ef5b9c44b86b 100644
--- a/arch/s390/kernel/compat_wrapper.S
+++ b/arch/s390/kernel/compat_wrapper.S
@@ -1608,3 +1608,45 @@ compat_sys_ppoll_wrapper:
1608sys_unshare_wrapper: 1608sys_unshare_wrapper:
1609 llgfr %r2,%r2 # unsigned long 1609 llgfr %r2,%r2 # unsigned long
1610 jg sys_unshare 1610 jg sys_unshare
1611
1612 .globl compat_sys_set_robust_list_wrapper
1613compat_sys_set_robust_list_wrapper:
1614 llgtr %r2,%r2 # struct compat_robust_list_head *
1615 llgfr %r3,%r3 # size_t
1616 jg compat_sys_set_robust_list
1617
1618 .globl compat_sys_get_robust_list_wrapper
1619compat_sys_get_robust_list_wrapper:
1620 lgfr %r2,%r2 # int
1621 llgtr %r3,%r3 # compat_uptr_t_t *
1622 llgtr %r4,%r4 # compat_size_t *
1623 jg compat_sys_get_robust_list
1624
1625 .globl sys_splice_wrapper
1626sys_splice_wrapper:
1627 lgfr %r2,%r2 # int
1628 llgtr %r3,%r3 # loff_t *
1629 lgfr %r4,%r4 # int
1630 llgtr %r5,%r5 # loff_t *
1631 llgfr %r6,%r6 # size_t
1632 llgf %r0,164(%r15) # unsigned int
1633 stg %r0,160(%r15)
1634 jg sys_splice
1635
1636 .globl sys_sync_file_range_wrapper
1637sys_sync_file_range_wrapper:
1638 lgfr %r2,%r2 # int
1639 sllg %r3,%r3,32 # get high word of 64bit loff_t
1640 or %r3,%r4 # get low word of 64bit loff_t
1641 sllg %r4,%r5,32 # get high word of 64bit loff_t
1642 or %r4,%r6 # get low word of 64bit loff_t
1643 llgf %r5,164(%r15) # unsigned int
1644 jg sys_sync_file_range
1645
1646 .globl sys_tee_wrapper
1647sys_tee_wrapper:
1648 lgfr %r2,%r2 # int
1649 lgfr %r3,%r3 # int
1650 llgfr %r4,%r4 # size_t
1651 llgfr %r5,%r5 # unsigned int
1652 jg sys_tee
diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
index 37dfe33dab73..8f36504075ed 100644
--- a/arch/s390/kernel/ptrace.c
+++ b/arch/s390/kernel/ptrace.c
@@ -734,7 +734,7 @@ asmlinkage void
734syscall_trace(struct pt_regs *regs, int entryexit) 734syscall_trace(struct pt_regs *regs, int entryexit)
735{ 735{
736 if (unlikely(current->audit_context) && entryexit) 736 if (unlikely(current->audit_context) && entryexit)
737 audit_syscall_exit(current, AUDITSC_RESULT(regs->gprs[2]), regs->gprs[2]); 737 audit_syscall_exit(AUDITSC_RESULT(regs->gprs[2]), regs->gprs[2]);
738 738
739 if (!test_thread_flag(TIF_SYSCALL_TRACE)) 739 if (!test_thread_flag(TIF_SYSCALL_TRACE))
740 goto out; 740 goto out;
@@ -761,8 +761,7 @@ syscall_trace(struct pt_regs *regs, int entryexit)
761 } 761 }
762 out: 762 out:
763 if (unlikely(current->audit_context) && !entryexit) 763 if (unlikely(current->audit_context) && !entryexit)
764 audit_syscall_entry(current, 764 audit_syscall_entry(test_thread_flag(TIF_31BIT)?AUDIT_ARCH_S390:AUDIT_ARCH_S390X,
765 test_thread_flag(TIF_31BIT)?AUDIT_ARCH_S390:AUDIT_ARCH_S390X,
766 regs->gprs[2], regs->orig_gpr2, regs->gprs[3], 765 regs->gprs[2], regs->orig_gpr2, regs->gprs[3],
767 regs->gprs[4], regs->gprs[5]); 766 regs->gprs[4], regs->gprs[5]);
768} 767}
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
index ae1927e48cfb..d48cfc726b68 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -358,8 +358,9 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
358 } else { 358 } else {
359 regs->gprs[14] = (unsigned long) 359 regs->gprs[14] = (unsigned long)
360 frame->retcode | PSW_ADDR_AMODE; 360 frame->retcode | PSW_ADDR_AMODE;
361 err |= __put_user(S390_SYSCALL_OPCODE | __NR_rt_sigreturn, 361 if (__put_user(S390_SYSCALL_OPCODE | __NR_rt_sigreturn,
362 (u16 __user *)(frame->retcode)); 362 (u16 __user *)(frame->retcode)))
363 goto give_sigsegv;
363 } 364 }
364 365
365 /* Set up backchain. */ 366 /* Set up backchain. */
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
index 2f56654da821..fc2c0767202b 100644
--- a/arch/s390/kernel/syscalls.S
+++ b/arch/s390/kernel/syscalls.S
@@ -312,3 +312,8 @@ SYSCALL(sys_faccessat,sys_faccessat,sys_faccessat_wrapper) /* 300 */
312SYSCALL(sys_pselect6,sys_pselect6,compat_sys_pselect6_wrapper) 312SYSCALL(sys_pselect6,sys_pselect6,compat_sys_pselect6_wrapper)
313SYSCALL(sys_ppoll,sys_ppoll,compat_sys_ppoll_wrapper) 313SYSCALL(sys_ppoll,sys_ppoll,compat_sys_ppoll_wrapper)
314SYSCALL(sys_unshare,sys_unshare,sys_unshare_wrapper) 314SYSCALL(sys_unshare,sys_unshare,sys_unshare_wrapper)
315SYSCALL(sys_set_robust_list,sys_set_robust_list,compat_sys_set_robust_list_wrapper)
316SYSCALL(sys_get_robust_list,sys_get_robust_list,compat_sys_get_robust_list_wrapper)
317SYSCALL(sys_splice,sys_splice,sys_splice_wrapper)
318SYSCALL(sys_sync_file_range,sys_sync_file_range,sys_sync_file_range_wrapper)
319SYSCALL(sys_tee,sys_tee,sys_tee_wrapper)
diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S
index 9289face3027..9f34bb54c051 100644
--- a/arch/s390/kernel/vmlinux.lds.S
+++ b/arch/s390/kernel/vmlinux.lds.S
@@ -58,9 +58,11 @@ SECTIONS
58 . = ALIGN(4096); 58 . = ALIGN(4096);
59 .data.page_aligned : { *(.data.idt) } 59 .data.page_aligned : { *(.data.idt) }
60 60
61 . = ALIGN(32); 61 . = ALIGN(256);
62 .data.cacheline_aligned : { *(.data.cacheline_aligned) } 62 .data.cacheline_aligned : { *(.data.cacheline_aligned) }
63 63
64 . = ALIGN(256);
65 .data.read_mostly : { *(.data.read_mostly) }
64 _edata = .; /* End of data section */ 66 _edata = .; /* End of data section */
65 67
66 . = ALIGN(8192); /* init_task */ 68 . = ALIGN(8192); /* init_task */
diff --git a/arch/s390/mm/extmem.c b/arch/s390/mm/extmem.c
index a9566bcab682..9b11e3e20903 100644
--- a/arch/s390/mm/extmem.c
+++ b/arch/s390/mm/extmem.c
@@ -192,6 +192,7 @@ query_segment_type (struct dcss_segment *seg)
192 diag_cc = dcss_diag (DCSS_SEGEXT, qin, &dummy, &vmrc); 192 diag_cc = dcss_diag (DCSS_SEGEXT, qin, &dummy, &vmrc);
193 193
194 if (diag_cc > 1) { 194 if (diag_cc > 1) {
195 PRINT_WARN ("segment_type: diag returned error %ld\n", vmrc);
195 rc = dcss_diag_translate_rc (vmrc); 196 rc = dcss_diag_translate_rc (vmrc);
196 goto out_free; 197 goto out_free;
197 } 198 }
@@ -553,7 +554,7 @@ segment_save(char *name)
553 int endpfn = 0; 554 int endpfn = 0;
554 char cmd1[160]; 555 char cmd1[160];
555 char cmd2[80]; 556 char cmd2[80];
556 int i; 557 int i, response;
557 558
558 if (!MACHINE_IS_VM) 559 if (!MACHINE_IS_VM)
559 return; 560 return;
@@ -576,8 +577,20 @@ segment_save(char *name)
576 segtype_string[seg->range[i].start & 0xff]); 577 segtype_string[seg->range[i].start & 0xff]);
577 } 578 }
578 sprintf(cmd2, "SAVESEG %s", name); 579 sprintf(cmd2, "SAVESEG %s", name);
579 cpcmd(cmd1, NULL, 0, NULL); 580 response = 0;
580 cpcmd(cmd2, NULL, 0, NULL); 581 cpcmd(cmd1, NULL, 0, &response);
582 if (response) {
583 PRINT_ERR("segment_save: DEFSEG failed with response code %i\n",
584 response);
585 goto out;
586 }
587 cpcmd(cmd2, NULL, 0, &response);
588 if (response) {
589 PRINT_ERR("segment_save: SAVESEG failed with response code %i\n",
590 response);
591 goto out;
592 }
593out:
581 spin_unlock(&dcss_lock); 594 spin_unlock(&dcss_lock);
582} 595}
583 596
diff --git a/arch/sparc/kernel/systbls.S b/arch/sparc/kernel/systbls.S
index db8faa75f94d..6e1135cc03b0 100644
--- a/arch/sparc/kernel/systbls.S
+++ b/arch/sparc/kernel/systbls.S
@@ -23,7 +23,7 @@ sys_call_table:
23/*10*/ .long sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys_mknod 23/*10*/ .long sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys_mknod
24/*15*/ .long sys_chmod, sys_lchown16, sparc_brk, sys_nis_syscall, sys_lseek 24/*15*/ .long sys_chmod, sys_lchown16, sparc_brk, sys_nis_syscall, sys_lseek
25/*20*/ .long sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16 25/*20*/ .long sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16
26/*25*/ .long sys_time, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause 26/*25*/ .long sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_pause
27/*30*/ .long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice 27/*30*/ .long sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
28/*35*/ .long sys_chown, sys_sync, sys_kill, sys_newstat, sys_sendfile 28/*35*/ .long sys_chown, sys_sync, sys_kill, sys_newstat, sys_sendfile
29/*40*/ .long sys_newlstat, sys_dup, sys_pipe, sys_times, sys_getuid 29/*40*/ .long sys_newlstat, sys_dup, sys_pipe, sys_times, sys_getuid
diff --git a/arch/sparc64/kernel/ptrace.c b/arch/sparc64/kernel/ptrace.c
index 49e6dedd027d..d31975e6d6f6 100644
--- a/arch/sparc64/kernel/ptrace.c
+++ b/arch/sparc64/kernel/ptrace.c
@@ -653,7 +653,7 @@ asmlinkage void syscall_trace(struct pt_regs *regs, int syscall_exit_p)
653 if (unlikely(tstate & (TSTATE_XCARRY | TSTATE_ICARRY))) 653 if (unlikely(tstate & (TSTATE_XCARRY | TSTATE_ICARRY)))
654 result = AUDITSC_FAILURE; 654 result = AUDITSC_FAILURE;
655 655
656 audit_syscall_exit(current, result, regs->u_regs[UREG_I0]); 656 audit_syscall_exit(result, regs->u_regs[UREG_I0]);
657 } 657 }
658 658
659 if (!(current->ptrace & PT_PTRACED)) 659 if (!(current->ptrace & PT_PTRACED))
@@ -677,8 +677,7 @@ asmlinkage void syscall_trace(struct pt_regs *regs, int syscall_exit_p)
677 677
678out: 678out:
679 if (unlikely(current->audit_context) && !syscall_exit_p) 679 if (unlikely(current->audit_context) && !syscall_exit_p)
680 audit_syscall_entry(current, 680 audit_syscall_entry((test_thread_flag(TIF_32BIT) ?
681 (test_thread_flag(TIF_32BIT) ?
682 AUDIT_ARCH_SPARC : 681 AUDIT_ARCH_SPARC :
683 AUDIT_ARCH_SPARC64), 682 AUDIT_ARCH_SPARC64),
684 regs->u_regs[UREG_G1], 683 regs->u_regs[UREG_G1],
diff --git a/arch/sparc64/kernel/sys32.S b/arch/sparc64/kernel/sys32.S
index f9b75760163c..bdf1f4d02e3f 100644
--- a/arch/sparc64/kernel/sys32.S
+++ b/arch/sparc64/kernel/sys32.S
@@ -139,6 +139,7 @@ SIGN3(sys32_ioprio_set, sys_ioprio_set, %o0, %o1, %o2)
139SIGN2(sys32_splice, sys_splice, %o0, %o1) 139SIGN2(sys32_splice, sys_splice, %o0, %o1)
140SIGN2(sys32_sync_file_range, compat_sync_file_range, %o0, %o5) 140SIGN2(sys32_sync_file_range, compat_sync_file_range, %o0, %o5)
141SIGN2(sys32_tee, sys_tee, %o0, %o1) 141SIGN2(sys32_tee, sys_tee, %o0, %o1)
142SIGN1(sys32_vmsplice, compat_sys_vmsplice, %o0)
142 143
143 .globl sys32_mmap2 144 .globl sys32_mmap2
144sys32_mmap2: 145sys32_mmap2:
diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S
index 62672cd92eca..d4b39cd30310 100644
--- a/arch/sparc64/kernel/systbls.S
+++ b/arch/sparc64/kernel/systbls.S
@@ -25,7 +25,7 @@ sys_call_table32:
25/*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys32_chown16, sys32_mknod 25/*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys32_chown16, sys32_mknod
26/*15*/ .word sys_chmod, sys32_lchown16, sparc_brk, sys32_perfctr, sys32_lseek 26/*15*/ .word sys_chmod, sys32_lchown16, sparc_brk, sys32_perfctr, sys32_lseek
27/*20*/ .word sys_getpid, sys_capget, sys_capset, sys32_setuid16, sys32_getuid16 27/*20*/ .word sys_getpid, sys_capget, sys_capset, sys32_setuid16, sys32_getuid16
28/*25*/ .word compat_sys_time, sys_ptrace, sys_alarm, sys32_sigaltstack, sys32_pause 28/*25*/ .word sys32_vmsplice, sys_ptrace, sys_alarm, sys32_sigaltstack, sys32_pause
29/*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice 29/*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys32_access, sys32_nice
30 .word sys_chown, sys_sync, sys32_kill, compat_sys_newstat, sys32_sendfile 30 .word sys_chown, sys_sync, sys32_kill, compat_sys_newstat, sys32_sendfile
31/*40*/ .word compat_sys_newlstat, sys_dup, sys_pipe, compat_sys_times, sys_getuid 31/*40*/ .word compat_sys_newlstat, sys_dup, sys_pipe, compat_sys_times, sys_getuid
@@ -94,7 +94,7 @@ sys_call_table:
94/*10*/ .word sys_unlink, sys_nis_syscall, sys_chdir, sys_chown, sys_mknod 94/*10*/ .word sys_unlink, sys_nis_syscall, sys_chdir, sys_chown, sys_mknod
95/*15*/ .word sys_chmod, sys_lchown, sparc_brk, sys_perfctr, sys_lseek 95/*15*/ .word sys_chmod, sys_lchown, sparc_brk, sys_perfctr, sys_lseek
96/*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid, sys_getuid 96/*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid, sys_getuid
97/*25*/ .word sys_nis_syscall, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall 97/*25*/ .word sys_vmsplice, sys_ptrace, sys_alarm, sys_sigaltstack, sys_nis_syscall
98/*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice 98/*30*/ .word sys_utime, sys_nis_syscall, sys_nis_syscall, sys_access, sys_nice
99 .word sys_nis_syscall, sys_sync, sys_kill, sys_newstat, sys_sendfile64 99 .word sys_nis_syscall, sys_sync, sys_kill, sys_newstat, sys_sendfile64
100/*40*/ .word sys_newlstat, sys_dup, sys_pipe, sys_times, sys_nis_syscall 100/*40*/ .word sys_newlstat, sys_dup, sys_pipe, sys_times, sys_nis_syscall
diff --git a/arch/sparc64/mm/tlb.c b/arch/sparc64/mm/tlb.c
index a079cf42505e..3f10fc921b00 100644
--- a/arch/sparc64/mm/tlb.c
+++ b/arch/sparc64/mm/tlb.c
@@ -8,6 +8,7 @@
8#include <linux/percpu.h> 8#include <linux/percpu.h>
9#include <linux/mm.h> 9#include <linux/mm.h>
10#include <linux/swap.h> 10#include <linux/swap.h>
11#include <linux/preempt.h>
11 12
12#include <asm/pgtable.h> 13#include <asm/pgtable.h>
13#include <asm/pgalloc.h> 14#include <asm/pgalloc.h>
@@ -24,6 +25,8 @@ void flush_tlb_pending(void)
24{ 25{
25 struct mmu_gather *mp = &__get_cpu_var(mmu_gathers); 26 struct mmu_gather *mp = &__get_cpu_var(mmu_gathers);
26 27
28 preempt_disable();
29
27 if (mp->tlb_nr) { 30 if (mp->tlb_nr) {
28 flush_tsb_user(mp); 31 flush_tsb_user(mp);
29 32
@@ -38,6 +41,8 @@ void flush_tlb_pending(void)
38 } 41 }
39 mp->tlb_nr = 0; 42 mp->tlb_nr = 0;
40 } 43 }
44
45 preempt_enable();
41} 46}
42 47
43void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, pte_t *ptep, pte_t orig) 48void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, pte_t *ptep, pte_t orig)
diff --git a/arch/um/Kconfig b/arch/um/Kconfig
index 05fbb20636cb..76e85bbaea55 100644
--- a/arch/um/Kconfig
+++ b/arch/um/Kconfig
@@ -57,20 +57,6 @@ config STATIC_LINK
57 chroot, and you disable CONFIG_MODE_TT, you probably want to say Y 57 chroot, and you disable CONFIG_MODE_TT, you probably want to say Y
58 here. 58 here.
59 59
60config HOST_2G_2G
61 bool "2G/2G host address space split"
62 default n
63 depends on MODE_TT
64 help
65 This is needed when the host on which you run has a 2G/2G memory
66 split, instead of the customary 3G/1G.
67
68 Note that to enable such a host
69 configuration, which makes sense only in some cases, you need special
70 host patches.
71
72 So, if you do not know what to do here, say 'N'.
73
74config KERNEL_HALF_GIGS 60config KERNEL_HALF_GIGS
75 int "Kernel address space size (in .5G units)" 61 int "Kernel address space size (in .5G units)"
76 default "1" 62 default "1"
diff --git a/arch/um/Kconfig.i386 b/arch/um/Kconfig.i386
index 85e6a55b3b59..f6eb72d117b9 100644
--- a/arch/um/Kconfig.i386
+++ b/arch/um/Kconfig.i386
@@ -16,6 +16,19 @@ config SEMAPHORE_SLEEPERS
16 bool 16 bool
17 default y 17 default y
18 18
19config HOST_2G_2G
20 bool "2G/2G host address space split"
21 default n
22 help
23 This is needed when the host on which you run has a 2G/2G memory
24 split, instead of the customary 3G/1G.
25
26 Note that to enable such a host
27 configuration, which makes sense only in some cases, you need special
28 host patches.
29
30 So, if you do not know what to do here, say 'N'.
31
19config TOP_ADDR 32config TOP_ADDR
20 hex 33 hex
21 default 0xc0000000 if !HOST_2G_2G 34 default 0xc0000000 if !HOST_2G_2G
@@ -35,11 +48,13 @@ config 3_LEVEL_PGTABLES
35 48
36config STUB_CODE 49config STUB_CODE
37 hex 50 hex
38 default 0xbfffe000 51 default 0xbfffe000 if !HOST_2G_2G
52 default 0x7fffe000 if HOST_2G_2G
39 53
40config STUB_DATA 54config STUB_DATA
41 hex 55 hex
42 default 0xbffff000 56 default 0xbffff000 if !HOST_2G_2G
57 default 0x7ffff000 if HOST_2G_2G
43 58
44config STUB_START 59config STUB_START
45 hex 60 hex
diff --git a/arch/um/Makefile b/arch/um/Makefile
index a508e7a02891..f6ad832faf13 100644
--- a/arch/um/Makefile
+++ b/arch/um/Makefile
@@ -96,7 +96,8 @@ PHONY += linux
96all: linux 96all: linux
97 97
98linux: vmlinux 98linux: vmlinux
99 ln -f $< $@ 99 @echo ' LINK $@'
100 $(Q)ln -f $< $@
100 101
101define archhelp 102define archhelp
102 echo '* linux - Binary kernel image (./linux) - for backward' 103 echo '* linux - Binary kernel image (./linux) - for backward'
@@ -117,6 +118,10 @@ prepare: $(ARCH_DIR)/include/kern_constants.h
117LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static 118LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static
118LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib 119LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib
119 120
121CFLAGS_NO_HARDENING := $(call cc-option, -fno-PIC,) $(call cc-option, -fno-pic,) \
122 $(call cc-option, -fno-stack-protector,) \
123 $(call cc-option, -fno-stack-protector-all,)
124
120CPP_MODE-$(CONFIG_MODE_TT) := -DMODE_TT 125CPP_MODE-$(CONFIG_MODE_TT) := -DMODE_TT
121CONFIG_KERNEL_STACK_ORDER ?= 2 126CONFIG_KERNEL_STACK_ORDER ?= 2
122STACK_SIZE := $(shell echo $$[ 4096 * (1 << $(CONFIG_KERNEL_STACK_ORDER)) ] ) 127STACK_SIZE := $(shell echo $$[ 4096 * (1 << $(CONFIG_KERNEL_STACK_ORDER)) ] )
@@ -203,8 +208,8 @@ endef
203$(ARCH_DIR)/include/uml-config.h : include/linux/autoconf.h 208$(ARCH_DIR)/include/uml-config.h : include/linux/autoconf.h
204 $(call filechk,umlconfig) 209 $(call filechk,umlconfig)
205 210
206$(ARCH_DIR)/user-offsets.s: $(ARCH_DIR)/sys-$(SUBARCH)/user-offsets.c 211$(ARCH_DIR)/sys-$(SUBARCH)/user-offsets.s: FORCE
207 $(CC) $(USER_CFLAGS) -S -o $@ $< 212 $(Q)$(MAKE) $(build)=$(ARCH_DIR)/sys-$(SUBARCH) $@
208 213
209define filechk_gen-asm-offsets 214define filechk_gen-asm-offsets
210 (set -e; \ 215 (set -e; \
@@ -219,13 +224,11 @@ define filechk_gen-asm-offsets
219 echo ""; ) 224 echo ""; )
220endef 225endef
221 226
222$(ARCH_DIR)/include/user_constants.h: $(ARCH_DIR)/user-offsets.s 227$(ARCH_DIR)/include/user_constants.h: $(ARCH_DIR)/sys-$(SUBARCH)/user-offsets.s
223 $(call filechk,gen-asm-offsets) 228 $(call filechk,gen-asm-offsets)
224 229
225CLEAN_FILES += $(ARCH_DIR)/user-offsets.s
226
227$(ARCH_DIR)/include/kern_constants.h: $(objtree)/$(ARCH_DIR)/include 230$(ARCH_DIR)/include/kern_constants.h: $(objtree)/$(ARCH_DIR)/include
228 @echo ' SYMLINK $@' 231 @echo ' SYMLINK $@'
229 $(Q) ln -sf ../../../include/asm-um/asm-offsets.h $@ 232 $(Q)ln -sf ../../../include/asm-um/asm-offsets.h $@
230 233
231export SUBARCH USER_CFLAGS OS 234export SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING OS
diff --git a/arch/um/defconfig b/arch/um/defconfig
index 80d30d19d750..402a74dc5026 100644
--- a/arch/um/defconfig
+++ b/arch/um/defconfig
@@ -1,14 +1,13 @@
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-rc6-mm1 3# Linux kernel version: 2.6.17-rc3
4# Tue Jun 14 18:22:21 2005 4# Fri Apr 28 09:31:20 2006
5# 5#
6CONFIG_GENERIC_HARDIRQS=y 6CONFIG_GENERIC_HARDIRQS=y
7CONFIG_UML=y 7CONFIG_UML=y
8CONFIG_MMU=y 8CONFIG_MMU=y
9CONFIG_UID16=y
10CONFIG_RWSEM_GENERIC_SPINLOCK=y
11CONFIG_GENERIC_CALIBRATE_DELAY=y 9CONFIG_GENERIC_CALIBRATE_DELAY=y
10CONFIG_IRQ_RELEASE_METHOD=y
12 11
13# 12#
14# UML-specific options 13# UML-specific options
@@ -16,8 +15,50 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
16# CONFIG_MODE_TT is not set 15# CONFIG_MODE_TT is not set
17# CONFIG_STATIC_LINK is not set 16# CONFIG_STATIC_LINK is not set
18CONFIG_MODE_SKAS=y 17CONFIG_MODE_SKAS=y
18
19#
20# Host processor type and features
21#
22# CONFIG_M386 is not set
23# CONFIG_M486 is not set
24# CONFIG_M586 is not set
25# CONFIG_M586TSC is not set
26# CONFIG_M586MMX is not set
27CONFIG_M686=y
28# CONFIG_MPENTIUMII is not set
29# CONFIG_MPENTIUMIII is not set
30# CONFIG_MPENTIUMM is not set
31# CONFIG_MPENTIUM4 is not set
32# CONFIG_MK6 is not set
33# CONFIG_MK7 is not set
34# CONFIG_MK8 is not set
35# CONFIG_MCRUSOE is not set
36# CONFIG_MEFFICEON is not set
37# CONFIG_MWINCHIPC6 is not set
38# CONFIG_MWINCHIP2 is not set
39# CONFIG_MWINCHIP3D is not set
40# CONFIG_MGEODEGX1 is not set
41# CONFIG_MGEODE_LX is not set
42# CONFIG_MCYRIXIII is not set
43# CONFIG_MVIAC3_2 is not set
44# CONFIG_X86_GENERIC is not set
45CONFIG_X86_CMPXCHG=y
46CONFIG_X86_XADD=y
47CONFIG_X86_L1_CACHE_SHIFT=5
48CONFIG_RWSEM_XCHGADD_ALGORITHM=y
49CONFIG_X86_PPRO_FENCE=y
50CONFIG_X86_WP_WORKS_OK=y
51CONFIG_X86_INVLPG=y
52CONFIG_X86_BSWAP=y
53CONFIG_X86_POPAD_OK=y
54CONFIG_X86_CMPXCHG64=y
55CONFIG_X86_GOOD_APIC=y
56CONFIG_X86_USE_PPRO_CHECKSUM=y
57CONFIG_X86_TSC=y
19CONFIG_UML_X86=y 58CONFIG_UML_X86=y
20# CONFIG_64BIT is not set 59# CONFIG_64BIT is not set
60CONFIG_SEMAPHORE_SLEEPERS=y
61# CONFIG_HOST_2G_2G is not set
21CONFIG_TOP_ADDR=0xc0000000 62CONFIG_TOP_ADDR=0xc0000000
22# CONFIG_3_LEVEL_PGTABLES is not set 63# CONFIG_3_LEVEL_PGTABLES is not set
23CONFIG_STUB_CODE=0xbfffe000 64CONFIG_STUB_CODE=0xbfffe000
@@ -25,22 +66,24 @@ CONFIG_STUB_DATA=0xbffff000
25CONFIG_STUB_START=0xbfffe000 66CONFIG_STUB_START=0xbfffe000
26CONFIG_ARCH_HAS_SC_SIGNALS=y 67CONFIG_ARCH_HAS_SC_SIGNALS=y
27CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA=y 68CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA=y
69CONFIG_GENERIC_HWEIGHT=y
28CONFIG_SELECT_MEMORY_MODEL=y 70CONFIG_SELECT_MEMORY_MODEL=y
29CONFIG_FLATMEM_MANUAL=y 71CONFIG_FLATMEM_MANUAL=y
30# CONFIG_DISCONTIGMEM_MANUAL is not set 72# CONFIG_DISCONTIGMEM_MANUAL is not set
31# CONFIG_SPARSEMEM_MANUAL is not set 73# CONFIG_SPARSEMEM_MANUAL is not set
32CONFIG_FLATMEM=y 74CONFIG_FLATMEM=y
33CONFIG_FLAT_NODE_MEM_MAP=y 75CONFIG_FLAT_NODE_MEM_MAP=y
76# CONFIG_SPARSEMEM_STATIC is not set
77CONFIG_SPLIT_PTLOCK_CPUS=4
34CONFIG_LD_SCRIPT_DYN=y 78CONFIG_LD_SCRIPT_DYN=y
35CONFIG_NET=y 79CONFIG_NET=y
36CONFIG_BINFMT_ELF=y 80CONFIG_BINFMT_ELF=y
37CONFIG_BINFMT_MISC=m 81CONFIG_BINFMT_MISC=m
38# CONFIG_HOSTFS is not set 82# CONFIG_HOSTFS is not set
83# CONFIG_HPPFS is not set
39CONFIG_MCONSOLE=y 84CONFIG_MCONSOLE=y
40# CONFIG_MAGIC_SYSRQ is not set 85# CONFIG_MAGIC_SYSRQ is not set
41# CONFIG_HOST_2G_2G is not set
42CONFIG_NEST_LEVEL=0 86CONFIG_NEST_LEVEL=0
43CONFIG_KERNEL_HALF_GIGS=1
44# CONFIG_HIGHMEM is not set 87# CONFIG_HIGHMEM is not set
45CONFIG_KERNEL_STACK_ORDER=2 88CONFIG_KERNEL_STACK_ORDER=2
46CONFIG_UML_REAL_TIME_CLOCK=y 89CONFIG_UML_REAL_TIME_CLOCK=y
@@ -49,7 +92,6 @@ CONFIG_UML_REAL_TIME_CLOCK=y
49# Code maturity level options 92# Code maturity level options
50# 93#
51CONFIG_EXPERIMENTAL=y 94CONFIG_EXPERIMENTAL=y
52CONFIG_CLEAN_COMPILE=y
53CONFIG_BROKEN_ON_SMP=y 95CONFIG_BROKEN_ON_SMP=y
54CONFIG_INIT_ENV_ARG_LIMIT=32 96CONFIG_INIT_ENV_ARG_LIMIT=32
55 97
@@ -57,6 +99,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
57# General setup 99# General setup
58# 100#
59CONFIG_LOCALVERSION="" 101CONFIG_LOCALVERSION=""
102CONFIG_LOCALVERSION_AUTO=y
60CONFIG_SWAP=y 103CONFIG_SWAP=y
61CONFIG_SYSVIPC=y 104CONFIG_SYSVIPC=y
62CONFIG_POSIX_MQUEUE=y 105CONFIG_POSIX_MQUEUE=y
@@ -64,26 +107,28 @@ CONFIG_BSD_PROCESS_ACCT=y
64# CONFIG_BSD_PROCESS_ACCT_V3 is not set 107# CONFIG_BSD_PROCESS_ACCT_V3 is not set
65CONFIG_SYSCTL=y 108CONFIG_SYSCTL=y
66# CONFIG_AUDIT is not set 109# CONFIG_AUDIT is not set
67# CONFIG_HOTPLUG is not set
68CONFIG_KOBJECT_UEVENT=y
69CONFIG_IKCONFIG=y 110CONFIG_IKCONFIG=y
70CONFIG_IKCONFIG_PROC=y 111CONFIG_IKCONFIG_PROC=y
112# CONFIG_RELAY is not set
113CONFIG_INITRAMFS_SOURCE=""
114CONFIG_UID16=y
115CONFIG_CC_OPTIMIZE_FOR_SIZE=y
71# CONFIG_EMBEDDED is not set 116# CONFIG_EMBEDDED is not set
72CONFIG_KALLSYMS=y 117CONFIG_KALLSYMS=y
73# CONFIG_KALLSYMS_ALL is not set 118# CONFIG_KALLSYMS_ALL is not set
74CONFIG_KALLSYMS_EXTRA_PASS=y 119CONFIG_KALLSYMS_EXTRA_PASS=y
120CONFIG_HOTPLUG=y
75CONFIG_PRINTK=y 121CONFIG_PRINTK=y
76CONFIG_BUG=y 122CONFIG_BUG=y
123CONFIG_ELF_CORE=y
77CONFIG_BASE_FULL=y 124CONFIG_BASE_FULL=y
78CONFIG_FUTEX=y 125CONFIG_FUTEX=y
79CONFIG_EPOLL=y 126CONFIG_EPOLL=y
80CONFIG_SHMEM=y 127CONFIG_SHMEM=y
81CONFIG_CC_ALIGN_FUNCTIONS=0 128CONFIG_SLAB=y
82CONFIG_CC_ALIGN_LABELS=0
83CONFIG_CC_ALIGN_LOOPS=0
84CONFIG_CC_ALIGN_JUMPS=0
85# CONFIG_TINY_SHMEM is not set 129# CONFIG_TINY_SHMEM is not set
86CONFIG_BASE_SMALL=0 130CONFIG_BASE_SMALL=0
131# CONFIG_SLOB is not set
87 132
88# 133#
89# Loadable module support 134# Loadable module support
@@ -91,18 +136,43 @@ CONFIG_BASE_SMALL=0
91CONFIG_MODULES=y 136CONFIG_MODULES=y
92CONFIG_MODULE_UNLOAD=y 137CONFIG_MODULE_UNLOAD=y
93# CONFIG_MODULE_FORCE_UNLOAD is not set 138# CONFIG_MODULE_FORCE_UNLOAD is not set
94CONFIG_OBSOLETE_MODPARM=y
95# CONFIG_MODVERSIONS is not set 139# CONFIG_MODVERSIONS is not set
96# CONFIG_MODULE_SRCVERSION_ALL is not set 140# CONFIG_MODULE_SRCVERSION_ALL is not set
97CONFIG_KMOD=y 141CONFIG_KMOD=y
98 142
99# 143#
100# Generic Driver Options 144# Block layer
101# 145#
102CONFIG_STANDALONE=y 146# CONFIG_LBD is not set
103CONFIG_PREVENT_FIRMWARE_BUILD=y 147# CONFIG_BLK_DEV_IO_TRACE is not set
104# CONFIG_FW_LOADER is not set 148# CONFIG_LSF is not set
105# CONFIG_DEBUG_DRIVER is not set 149
150#
151# IO Schedulers
152#
153CONFIG_IOSCHED_NOOP=y
154CONFIG_IOSCHED_AS=y
155CONFIG_IOSCHED_DEADLINE=y
156CONFIG_IOSCHED_CFQ=y
157CONFIG_DEFAULT_AS=y
158# CONFIG_DEFAULT_DEADLINE is not set
159# CONFIG_DEFAULT_CFQ is not set
160# CONFIG_DEFAULT_NOOP is not set
161CONFIG_DEFAULT_IOSCHED="anticipatory"
162
163#
164# Block devices
165#
166CONFIG_BLK_DEV_UBD=y
167# CONFIG_BLK_DEV_UBD_SYNC is not set
168CONFIG_BLK_DEV_COW_COMMON=y
169# CONFIG_MMAPPER is not set
170CONFIG_BLK_DEV_LOOP=m
171# CONFIG_BLK_DEV_CRYPTOLOOP is not set
172CONFIG_BLK_DEV_NBD=m
173# CONFIG_BLK_DEV_RAM is not set
174# CONFIG_BLK_DEV_INITRD is not set
175# CONFIG_ATA_OVER_ETH is not set
106 176
107# 177#
108# Character Devices 178# Character Devices
@@ -127,50 +197,23 @@ CONFIG_UML_SOUND=m
127CONFIG_SOUND=m 197CONFIG_SOUND=m
128CONFIG_HOSTAUDIO=m 198CONFIG_HOSTAUDIO=m
129CONFIG_UML_RANDOM=y 199CONFIG_UML_RANDOM=y
130# CONFIG_MMAPPER is not set
131
132#
133# Block devices
134#
135CONFIG_BLK_DEV_UBD=y
136CONFIG_BLK_DEV_UBD_SYNC=y
137CONFIG_BLK_DEV_COW_COMMON=y
138CONFIG_BLK_DEV_LOOP=m
139# CONFIG_BLK_DEV_CRYPTOLOOP is not set
140CONFIG_BLK_DEV_NBD=m
141# CONFIG_BLK_DEV_RAM is not set
142CONFIG_BLK_DEV_RAM_COUNT=16
143CONFIG_INITRAMFS_SOURCE=""
144# CONFIG_LBD is not set
145
146#
147# IO Schedulers
148#
149CONFIG_IOSCHED_NOOP=y
150CONFIG_IOSCHED_AS=y
151CONFIG_IOSCHED_DEADLINE=y
152CONFIG_IOSCHED_CFQ=y
153# CONFIG_ATA_OVER_ETH is not set
154CONFIG_NETDEVICES=y
155 200
156# 201#
157# UML Network Devices 202# Generic Driver Options
158# 203#
159CONFIG_UML_NET=y 204CONFIG_STANDALONE=y
160CONFIG_UML_NET_ETHERTAP=y 205CONFIG_PREVENT_FIRMWARE_BUILD=y
161CONFIG_UML_NET_TUNTAP=y 206# CONFIG_FW_LOADER is not set
162CONFIG_UML_NET_SLIP=y 207# CONFIG_DEBUG_DRIVER is not set
163CONFIG_UML_NET_DAEMON=y
164CONFIG_UML_NET_MCAST=y
165CONFIG_UML_NET_SLIRP=y
166 208
167# 209#
168# Networking support 210# Networking
169# 211#
170 212
171# 213#
172# Networking options 214# Networking options
173# 215#
216# CONFIG_NETDEBUG is not set
174CONFIG_PACKET=y 217CONFIG_PACKET=y
175CONFIG_PACKET_MMAP=y 218CONFIG_PACKET_MMAP=y
176CONFIG_UNIX=y 219CONFIG_UNIX=y
@@ -178,6 +221,7 @@ CONFIG_UNIX=y
178CONFIG_INET=y 221CONFIG_INET=y
179# CONFIG_IP_MULTICAST is not set 222# CONFIG_IP_MULTICAST is not set
180# CONFIG_IP_ADVANCED_ROUTER is not set 223# CONFIG_IP_ADVANCED_ROUTER is not set
224CONFIG_IP_FIB_HASH=y
181# CONFIG_IP_PNP is not set 225# CONFIG_IP_PNP is not set
182# CONFIG_NET_IPIP is not set 226# CONFIG_NET_IPIP is not set
183# CONFIG_NET_IPGRE is not set 227# CONFIG_NET_IPGRE is not set
@@ -186,27 +230,31 @@ CONFIG_INET=y
186# CONFIG_INET_AH is not set 230# CONFIG_INET_AH is not set
187# CONFIG_INET_ESP is not set 231# CONFIG_INET_ESP is not set
188# CONFIG_INET_IPCOMP is not set 232# CONFIG_INET_IPCOMP is not set
233# CONFIG_INET_XFRM_TUNNEL is not set
189# CONFIG_INET_TUNNEL is not set 234# CONFIG_INET_TUNNEL is not set
190CONFIG_IP_TCPDIAG=y 235CONFIG_INET_DIAG=y
191# CONFIG_IP_TCPDIAG_IPV6 is not set 236CONFIG_INET_TCP_DIAG=y
192 237# CONFIG_TCP_CONG_ADVANCED is not set
193#
194# TCP congestion control
195#
196CONFIG_TCP_CONG_BIC=y 238CONFIG_TCP_CONG_BIC=y
197CONFIG_TCP_CONG_WESTWOOD=y
198CONFIG_TCP_CONG_HTCP=y
199# CONFIG_TCP_CONG_HSTCP is not set
200# CONFIG_TCP_CONG_HYBLA is not set
201# CONFIG_TCP_CONG_VEGAS is not set
202# CONFIG_TCP_CONG_SCALABLE is not set
203# CONFIG_IPV6 is not set 239# CONFIG_IPV6 is not set
240# CONFIG_INET6_XFRM_TUNNEL is not set
241# CONFIG_INET6_TUNNEL is not set
204# CONFIG_NETFILTER is not set 242# CONFIG_NETFILTER is not set
205 243
206# 244#
245# DCCP Configuration (EXPERIMENTAL)
246#
247# CONFIG_IP_DCCP is not set
248
249#
207# SCTP Configuration (EXPERIMENTAL) 250# SCTP Configuration (EXPERIMENTAL)
208# 251#
209# CONFIG_IP_SCTP is not set 252# CONFIG_IP_SCTP is not set
253
254#
255# TIPC Configuration (EXPERIMENTAL)
256#
257# CONFIG_TIPC is not set
210# CONFIG_ATM is not set 258# CONFIG_ATM is not set
211# CONFIG_BRIDGE is not set 259# CONFIG_BRIDGE is not set
212# CONFIG_VLAN_8021Q is not set 260# CONFIG_VLAN_8021Q is not set
@@ -224,27 +272,47 @@ CONFIG_TCP_CONG_HTCP=y
224# QoS and/or fair queueing 272# QoS and/or fair queueing
225# 273#
226# CONFIG_NET_SCHED is not set 274# CONFIG_NET_SCHED is not set
227# CONFIG_NET_CLS_ROUTE is not set
228 275
229# 276#
230# Network testing 277# Network testing
231# 278#
232# CONFIG_NET_PKTGEN is not set 279# CONFIG_NET_PKTGEN is not set
233# CONFIG_KGDBOE is not set
234# CONFIG_NETPOLL is not set
235# CONFIG_NETPOLL_RX is not set
236# CONFIG_NETPOLL_TRAP is not set
237# CONFIG_NET_POLL_CONTROLLER is not set
238# CONFIG_HAMRADIO is not set 280# CONFIG_HAMRADIO is not set
239# CONFIG_IRDA is not set 281# CONFIG_IRDA is not set
240# CONFIG_BT is not set 282# CONFIG_BT is not set
241# CONFIG_IEEE80211 is not set 283# CONFIG_IEEE80211 is not set
284
285#
286# UML Network Devices
287#
288CONFIG_UML_NET=y
289CONFIG_UML_NET_ETHERTAP=y
290CONFIG_UML_NET_TUNTAP=y
291CONFIG_UML_NET_SLIP=y
292CONFIG_UML_NET_DAEMON=y
293CONFIG_UML_NET_MCAST=y
294# CONFIG_UML_NET_PCAP is not set
295CONFIG_UML_NET_SLIRP=y
296
297#
298# Network device support
299#
300CONFIG_NETDEVICES=y
242CONFIG_DUMMY=m 301CONFIG_DUMMY=m
243# CONFIG_BONDING is not set 302# CONFIG_BONDING is not set
244# CONFIG_EQUALIZER is not set 303# CONFIG_EQUALIZER is not set
245CONFIG_TUN=m 304CONFIG_TUN=m
246 305
247# 306#
307# PHY device support
308#
309
310#
311# Wireless LAN (non-hamradio)
312#
313# CONFIG_NET_RADIO is not set
314
315#
248# Wan interfaces 316# Wan interfaces
249# 317#
250# CONFIG_WAN is not set 318# CONFIG_WAN is not set
@@ -263,6 +331,13 @@ CONFIG_SLIP=m
263# CONFIG_SLIP_MODE_SLIP6 is not set 331# CONFIG_SLIP_MODE_SLIP6 is not set
264# CONFIG_SHAPER is not set 332# CONFIG_SHAPER is not set
265# CONFIG_NETCONSOLE is not set 333# CONFIG_NETCONSOLE is not set
334# CONFIG_NETPOLL is not set
335# CONFIG_NET_POLL_CONTROLLER is not set
336
337#
338# Connector - unified userspace <-> kernelspace linker
339#
340# CONFIG_CONNECTOR is not set
266 341
267# 342#
268# File systems 343# File systems
@@ -274,17 +349,14 @@ CONFIG_EXT3_FS=y
274# CONFIG_EXT3_FS_XATTR is not set 349# CONFIG_EXT3_FS_XATTR is not set
275CONFIG_JBD=y 350CONFIG_JBD=y
276# CONFIG_JBD_DEBUG is not set 351# CONFIG_JBD_DEBUG is not set
277# CONFIG_REISER4_FS is not set
278CONFIG_REISERFS_FS=y 352CONFIG_REISERFS_FS=y
279# CONFIG_REISERFS_CHECK is not set 353# CONFIG_REISERFS_CHECK is not set
280# CONFIG_REISERFS_PROC_INFO is not set 354# CONFIG_REISERFS_PROC_INFO is not set
281# CONFIG_REISERFS_FS_XATTR is not set 355# CONFIG_REISERFS_FS_XATTR is not set
282# CONFIG_JFS_FS is not set 356# CONFIG_JFS_FS is not set
283 357# CONFIG_FS_POSIX_ACL is not set
284#
285# XFS support
286#
287# CONFIG_XFS_FS is not set 358# CONFIG_XFS_FS is not set
359# CONFIG_OCFS2_FS is not set
288# CONFIG_MINIX_FS is not set 360# CONFIG_MINIX_FS is not set
289# CONFIG_ROMFS_FS is not set 361# CONFIG_ROMFS_FS is not set
290CONFIG_INOTIFY=y 362CONFIG_INOTIFY=y
@@ -295,11 +367,6 @@ CONFIG_QUOTACTL=y
295CONFIG_DNOTIFY=y 367CONFIG_DNOTIFY=y
296CONFIG_AUTOFS_FS=m 368CONFIG_AUTOFS_FS=m
297CONFIG_AUTOFS4_FS=m 369CONFIG_AUTOFS4_FS=m
298
299#
300# Caches
301#
302# CONFIG_FSCACHE is not set
303# CONFIG_FUSE_FS is not set 370# CONFIG_FUSE_FS is not set
304 371
305# 372#
@@ -323,14 +390,10 @@ CONFIG_JOLIET=y
323CONFIG_PROC_FS=y 390CONFIG_PROC_FS=y
324CONFIG_PROC_KCORE=y 391CONFIG_PROC_KCORE=y
325CONFIG_SYSFS=y 392CONFIG_SYSFS=y
326# CONFIG_DEVFS_FS is not set
327# CONFIG_DEVPTS_FS_XATTR is not set
328CONFIG_TMPFS=y 393CONFIG_TMPFS=y
329# CONFIG_TMPFS_XATTR is not set
330# CONFIG_HUGETLB_PAGE is not set 394# CONFIG_HUGETLB_PAGE is not set
331CONFIG_RAMFS=y 395CONFIG_RAMFS=y
332# CONFIG_CONFIGFS_FS is not set 396# CONFIG_CONFIGFS_FS is not set
333# CONFIG_RELAYFS_FS is not set
334 397
335# 398#
336# Miscellaneous filesystems 399# Miscellaneous filesystems
@@ -430,6 +493,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
430# Library routines 493# Library routines
431# 494#
432# CONFIG_CRC_CCITT is not set 495# CONFIG_CRC_CCITT is not set
496# CONFIG_CRC16 is not set
433CONFIG_CRC32=m 497CONFIG_CRC32=m
434# CONFIG_LIBCRC32C is not set 498# CONFIG_LIBCRC32C is not set
435 499
@@ -448,12 +512,18 @@ CONFIG_LOG_BUF_SHIFT=14
448CONFIG_DETECT_SOFTLOCKUP=y 512CONFIG_DETECT_SOFTLOCKUP=y
449# CONFIG_SCHEDSTATS is not set 513# CONFIG_SCHEDSTATS is not set
450CONFIG_DEBUG_SLAB=y 514CONFIG_DEBUG_SLAB=y
515# CONFIG_DEBUG_SLAB_LEAK is not set
516# CONFIG_DEBUG_MUTEXES is not set
451# CONFIG_DEBUG_SPINLOCK is not set 517# CONFIG_DEBUG_SPINLOCK is not set
452# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 518# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
453# CONFIG_DEBUG_KOBJECT is not set 519# CONFIG_DEBUG_KOBJECT is not set
454CONFIG_DEBUG_INFO=y 520CONFIG_DEBUG_INFO=y
455# CONFIG_DEBUG_FS is not set 521# CONFIG_DEBUG_FS is not set
522# CONFIG_DEBUG_VM is not set
456CONFIG_FRAME_POINTER=y 523CONFIG_FRAME_POINTER=y
524# CONFIG_UNWIND_INFO is not set
525CONFIG_FORCED_INLINING=y
526# CONFIG_RCU_TORTURE_TEST is not set
457# CONFIG_GPROF is not set 527# CONFIG_GPROF is not set
458# CONFIG_GCOV is not set 528# CONFIG_GCOV is not set
459# CONFIG_SYSCALL_DEBUG is not set 529# CONFIG_SYSCALL_DEBUG is not set
diff --git a/arch/um/drivers/cow_user.c b/arch/um/drivers/cow_user.c
index 6ab852bfcd3a..0ec4052db9c5 100644
--- a/arch/um/drivers/cow_user.c
+++ b/arch/um/drivers/cow_user.c
@@ -100,7 +100,7 @@ struct cow_header_v3_broken {
100 __u32 alignment; 100 __u32 alignment;
101 __u32 cow_format; 101 __u32 cow_format;
102 char backing_file[PATH_LEN_V3]; 102 char backing_file[PATH_LEN_V3];
103} __attribute__((packed)); 103};
104 104
105/* COW format definitions - for now, we have only the usual COW bitmap */ 105/* COW format definitions - for now, we have only the usual COW bitmap */
106#define COW_BITMAP 0 106#define COW_BITMAP 0
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c
index c39ea3abeda4..2ffda012385e 100644
--- a/arch/um/kernel/irq.c
+++ b/arch/um/kernel/irq.c
@@ -89,16 +89,18 @@ void sigio_handler(int sig, union uml_pt_regs *regs)
89 struct irq_fd *irq_fd; 89 struct irq_fd *irq_fd;
90 int n; 90 int n;
91 91
92 if(smp_sigio_handler()) return; 92 if (smp_sigio_handler())
93 while(1){ 93 return;
94
95 while (1) {
94 n = os_waiting_for_events(active_fds); 96 n = os_waiting_for_events(active_fds);
95 if (n <= 0) { 97 if (n <= 0) {
96 if(n == -EINTR) continue; 98 if(n == -EINTR) continue;
97 else break; 99 else break;
98 } 100 }
99 101
100 for(irq_fd = active_fds; irq_fd != NULL; irq_fd = irq_fd->next){ 102 for (irq_fd = active_fds; irq_fd != NULL; irq_fd = irq_fd->next) {
101 if(irq_fd->current_events != 0){ 103 if (irq_fd->current_events != 0) {
102 irq_fd->current_events = 0; 104 irq_fd->current_events = 0;
103 do_IRQ(irq_fd->irq, regs); 105 do_IRQ(irq_fd->irq, regs);
104 } 106 }
@@ -110,19 +112,17 @@ void sigio_handler(int sig, union uml_pt_regs *regs)
110 112
111static void maybe_sigio_broken(int fd, int type) 113static void maybe_sigio_broken(int fd, int type)
112{ 114{
113 if(os_isatty(fd)){ 115 if (os_isatty(fd)) {
114 if((type == IRQ_WRITE) && !pty_output_sigio){ 116 if ((type == IRQ_WRITE) && !pty_output_sigio) {
115 write_sigio_workaround(); 117 write_sigio_workaround();
116 add_sigio_fd(fd, 0); 118 add_sigio_fd(fd, 0);
117 } 119 } else if ((type == IRQ_READ) && !pty_close_sigio) {
118 else if((type == IRQ_READ) && !pty_close_sigio){
119 write_sigio_workaround(); 120 write_sigio_workaround();
120 add_sigio_fd(fd, 1); 121 add_sigio_fd(fd, 1);
121 } 122 }
122 } 123 }
123} 124}
124 125
125
126int activate_fd(int irq, int fd, int type, void *dev_id) 126int activate_fd(int irq, int fd, int type, void *dev_id)
127{ 127{
128 struct pollfd *tmp_pfd; 128 struct pollfd *tmp_pfd;
@@ -132,16 +132,18 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
132 132
133 pid = os_getpid(); 133 pid = os_getpid();
134 err = os_set_fd_async(fd, pid); 134 err = os_set_fd_async(fd, pid);
135 if(err < 0) 135 if (err < 0)
136 goto out; 136 goto out;
137 137
138 new_fd = um_kmalloc(sizeof(*new_fd)); 138 new_fd = um_kmalloc(sizeof(*new_fd));
139 err = -ENOMEM; 139 err = -ENOMEM;
140 if(new_fd == NULL) 140 if (new_fd == NULL)
141 goto out; 141 goto out;
142 142
143 if(type == IRQ_READ) events = UM_POLLIN | UM_POLLPRI; 143 if (type == IRQ_READ)
144 else events = UM_POLLOUT; 144 events = UM_POLLIN | UM_POLLPRI;
145 else
146 events = UM_POLLOUT;
145 *new_fd = ((struct irq_fd) { .next = NULL, 147 *new_fd = ((struct irq_fd) { .next = NULL,
146 .id = dev_id, 148 .id = dev_id,
147 .fd = fd, 149 .fd = fd,
@@ -165,8 +167,8 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
165 * a semaphore. 167 * a semaphore.
166 */ 168 */
167 flags = irq_lock(); 169 flags = irq_lock();
168 for(irq_fd = active_fds; irq_fd != NULL; irq_fd = irq_fd->next){ 170 for (irq_fd = active_fds; irq_fd != NULL; irq_fd = irq_fd->next) {
169 if((irq_fd->fd == fd) && (irq_fd->type == type)){ 171 if ((irq_fd->fd == fd) && (irq_fd->type == type)) {
170 printk("Registering fd %d twice\n", fd); 172 printk("Registering fd %d twice\n", fd);
171 printk("Irqs : %d, %d\n", irq_fd->irq, irq); 173 printk("Irqs : %d, %d\n", irq_fd->irq, irq);
172 printk("Ids : 0x%p, 0x%p\n", irq_fd->id, dev_id); 174 printk("Ids : 0x%p, 0x%p\n", irq_fd->id, dev_id);
@@ -175,13 +177,13 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
175 } 177 }
176 178
177 /*-------------*/ 179 /*-------------*/
178 if(type == IRQ_WRITE) 180 if (type == IRQ_WRITE)
179 fd = -1; 181 fd = -1;
180 182
181 tmp_pfd = NULL; 183 tmp_pfd = NULL;
182 n = 0; 184 n = 0;
183 185
184 while(1){ 186 while (1) {
185 n = os_create_pollfd(fd, events, tmp_pfd, n); 187 n = os_create_pollfd(fd, events, tmp_pfd, n);
186 if (n == 0) 188 if (n == 0)
187 break; 189 break;
@@ -198,10 +200,8 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
198 * then we free the buffer tmp_fds and try again. 200 * then we free the buffer tmp_fds and try again.
199 */ 201 */
200 irq_unlock(flags); 202 irq_unlock(flags);
201 if (tmp_pfd != NULL) { 203 kfree(tmp_pfd);
202 kfree(tmp_pfd); 204 tmp_pfd = NULL;
203 tmp_pfd = NULL;
204 }
205 205
206 tmp_pfd = um_kmalloc(n); 206 tmp_pfd = um_kmalloc(n);
207 if (tmp_pfd == NULL) 207 if (tmp_pfd == NULL)
@@ -249,7 +249,7 @@ static int same_irq_and_dev(struct irq_fd *irq, void *d)
249{ 249{
250 struct irq_and_dev *data = d; 250 struct irq_and_dev *data = d;
251 251
252 return((irq->irq == data->irq) && (irq->id == data->dev)); 252 return ((irq->irq == data->irq) && (irq->id == data->dev));
253} 253}
254 254
255void free_irq_by_irq_and_dev(unsigned int irq, void *dev) 255void free_irq_by_irq_and_dev(unsigned int irq, void *dev)
@@ -262,7 +262,7 @@ void free_irq_by_irq_and_dev(unsigned int irq, void *dev)
262 262
263static int same_fd(struct irq_fd *irq, void *fd) 263static int same_fd(struct irq_fd *irq, void *fd)
264{ 264{
265 return(irq->fd == *((int *) fd)); 265 return (irq->fd == *((int *)fd));
266} 266}
267 267
268void free_irq_by_fd(int fd) 268void free_irq_by_fd(int fd)
@@ -276,16 +276,17 @@ static struct irq_fd *find_irq_by_fd(int fd, int irqnum, int *index_out)
276 int i = 0; 276 int i = 0;
277 int fdi; 277 int fdi;
278 278
279 for(irq=active_fds; irq != NULL; irq = irq->next){ 279 for (irq = active_fds; irq != NULL; irq = irq->next) {
280 if((irq->fd == fd) && (irq->irq == irqnum)) break; 280 if ((irq->fd == fd) && (irq->irq == irqnum))
281 break;
281 i++; 282 i++;
282 } 283 }
283 if(irq == NULL){ 284 if (irq == NULL) {
284 printk("find_irq_by_fd doesn't have descriptor %d\n", fd); 285 printk("find_irq_by_fd doesn't have descriptor %d\n", fd);
285 goto out; 286 goto out;
286 } 287 }
287 fdi = os_get_pollfd(i); 288 fdi = os_get_pollfd(i);
288 if((fdi != -1) && (fdi != fd)){ 289 if ((fdi != -1) && (fdi != fd)) {
289 printk("find_irq_by_fd - mismatch between active_fds and " 290 printk("find_irq_by_fd - mismatch between active_fds and "
290 "pollfds, fd %d vs %d, need %d\n", irq->fd, 291 "pollfds, fd %d vs %d, need %d\n", irq->fd,
291 fdi, fd); 292 fdi, fd);
@@ -294,7 +295,7 @@ static struct irq_fd *find_irq_by_fd(int fd, int irqnum, int *index_out)
294 } 295 }
295 *index_out = i; 296 *index_out = i;
296 out: 297 out:
297 return(irq); 298 return irq;
298} 299}
299 300
300void reactivate_fd(int fd, int irqnum) 301void reactivate_fd(int fd, int irqnum)
@@ -305,7 +306,7 @@ void reactivate_fd(int fd, int irqnum)
305 306
306 flags = irq_lock(); 307 flags = irq_lock();
307 irq = find_irq_by_fd(fd, irqnum, &i); 308 irq = find_irq_by_fd(fd, irqnum, &i);
308 if(irq == NULL){ 309 if (irq == NULL) {
309 irq_unlock(flags); 310 irq_unlock(flags);
310 return; 311 return;
311 } 312 }
@@ -326,7 +327,7 @@ void deactivate_fd(int fd, int irqnum)
326 327
327 flags = irq_lock(); 328 flags = irq_lock();
328 irq = find_irq_by_fd(fd, irqnum, &i); 329 irq = find_irq_by_fd(fd, irqnum, &i);
329 if(irq == NULL) 330 if (irq == NULL)
330 goto out; 331 goto out;
331 os_set_pollfd(i, -1); 332 os_set_pollfd(i, -1);
332 out: 333 out:
@@ -338,15 +339,15 @@ int deactivate_all_fds(void)
338 struct irq_fd *irq; 339 struct irq_fd *irq;
339 int err; 340 int err;
340 341
341 for(irq=active_fds;irq != NULL;irq = irq->next){ 342 for (irq = active_fds; irq != NULL; irq = irq->next) {
342 err = os_clear_fd_async(irq->fd); 343 err = os_clear_fd_async(irq->fd);
343 if(err) 344 if (err)
344 return(err); 345 return err;
345 } 346 }
346 /* If there is a signal already queued, after unblocking ignore it */ 347 /* If there is a signal already queued, after unblocking ignore it */
347 os_set_ioignore(); 348 os_set_ioignore();
348 349
349 return(0); 350 return 0;
350} 351}
351 352
352void forward_interrupts(int pid) 353void forward_interrupts(int pid)
@@ -356,9 +357,9 @@ void forward_interrupts(int pid)
356 int err; 357 int err;
357 358
358 flags = irq_lock(); 359 flags = irq_lock();
359 for(irq=active_fds;irq != NULL;irq = irq->next){ 360 for (irq = active_fds; irq != NULL; irq = irq->next) {
360 err = os_set_owner(irq->fd, pid); 361 err = os_set_owner(irq->fd, pid);
361 if(err < 0){ 362 if (err < 0) {
362 /* XXX Just remove the irq rather than 363 /* XXX Just remove the irq rather than
363 * print out an infinite stream of these 364 * print out an infinite stream of these
364 */ 365 */
@@ -379,7 +380,7 @@ void forward_interrupts(int pid)
379unsigned int do_IRQ(int irq, union uml_pt_regs *regs) 380unsigned int do_IRQ(int irq, union uml_pt_regs *regs)
380{ 381{
381 irq_enter(); 382 irq_enter();
382 __do_IRQ(irq, (struct pt_regs *) regs); 383 __do_IRQ(irq, (struct pt_regs *)regs);
383 irq_exit(); 384 irq_exit();
384 return 1; 385 return 1;
385} 386}
@@ -392,12 +393,12 @@ int um_request_irq(unsigned int irq, int fd, int type,
392 int err; 393 int err;
393 394
394 err = request_irq(irq, handler, irqflags, devname, dev_id); 395 err = request_irq(irq, handler, irqflags, devname, dev_id);
395 if(err) 396 if (err)
396 return(err); 397 return err;
397 398
398 if(fd != -1) 399 if (fd != -1)
399 err = activate_fd(irq, fd, type, dev_id); 400 err = activate_fd(irq, fd, type, dev_id);
400 return(err); 401 return err;
401} 402}
402EXPORT_SYMBOL(um_request_irq); 403EXPORT_SYMBOL(um_request_irq);
403EXPORT_SYMBOL(reactivate_fd); 404EXPORT_SYMBOL(reactivate_fd);
@@ -409,7 +410,7 @@ unsigned long irq_lock(void)
409 unsigned long flags; 410 unsigned long flags;
410 411
411 spin_lock_irqsave(&irq_spinlock, flags); 412 spin_lock_irqsave(&irq_spinlock, flags);
412 return(flags); 413 return flags;
413} 414}
414 415
415void irq_unlock(unsigned long flags) 416void irq_unlock(unsigned long flags)
@@ -452,7 +453,7 @@ void __init init_IRQ(void)
452 irq_desc[TIMER_IRQ].depth = 1; 453 irq_desc[TIMER_IRQ].depth = 1;
453 irq_desc[TIMER_IRQ].handler = &SIGVTALRM_irq_type; 454 irq_desc[TIMER_IRQ].handler = &SIGVTALRM_irq_type;
454 enable_irq(TIMER_IRQ); 455 enable_irq(TIMER_IRQ);
455 for(i=1;i<NR_IRQS;i++){ 456 for (i = 1; i < NR_IRQS; i++) {
456 irq_desc[i].status = IRQ_DISABLED; 457 irq_desc[i].status = IRQ_DISABLED;
457 irq_desc[i].action = NULL; 458 irq_desc[i].action = NULL;
458 irq_desc[i].depth = 1; 459 irq_desc[i].depth = 1;
@@ -467,7 +468,7 @@ int init_aio_irq(int irq, char *name, irqreturn_t (*handler)(int, void *,
467 int fds[2], err; 468 int fds[2], err;
468 469
469 err = os_pipe(fds, 1, 1); 470 err = os_pipe(fds, 1, 1);
470 if(err){ 471 if (err) {
471 printk("init_aio_irq - os_pipe failed, err = %d\n", -err); 472 printk("init_aio_irq - os_pipe failed, err = %d\n", -err);
472 goto out; 473 goto out;
473 } 474 }
@@ -475,7 +476,7 @@ int init_aio_irq(int irq, char *name, irqreturn_t (*handler)(int, void *,
475 err = um_request_irq(irq, fds[0], IRQ_READ, handler, 476 err = um_request_irq(irq, fds[0], IRQ_READ, handler,
476 SA_INTERRUPT | SA_SAMPLE_RANDOM, name, 477 SA_INTERRUPT | SA_SAMPLE_RANDOM, name,
477 (void *) (long) fds[0]); 478 (void *) (long) fds[0]);
478 if(err){ 479 if (err) {
479 printk("init_aio_irq - : um_request_irq failed, err = %d\n", 480 printk("init_aio_irq - : um_request_irq failed, err = %d\n",
480 err); 481 err);
481 goto out_close; 482 goto out_close;
@@ -488,5 +489,5 @@ int init_aio_irq(int irq, char *name, irqreturn_t (*handler)(int, void *,
488 os_close_file(fds[0]); 489 os_close_file(fds[0]);
489 os_close_file(fds[1]); 490 os_close_file(fds[1]);
490 out: 491 out:
491 return(err); 492 return err;
492} 493}
diff --git a/arch/um/kernel/physmem.c b/arch/um/kernel/physmem.c
index 0500800df1c1..fc0f0b085ca7 100644
--- a/arch/um/kernel/physmem.c
+++ b/arch/um/kernel/physmem.c
@@ -407,6 +407,8 @@ unsigned long find_iomem(char *driver, unsigned long *len_out)
407 *len_out = region->size; 407 *len_out = region->size;
408 return(region->virt); 408 return(region->virt);
409 } 409 }
410
411 region = region->next;
410 } 412 }
411 413
412 return(0); 414 return(0);
diff --git a/arch/um/kernel/ptrace.c b/arch/um/kernel/ptrace.c
index 60d2eda995c1..9a77fb3c269d 100644
--- a/arch/um/kernel/ptrace.c
+++ b/arch/um/kernel/ptrace.c
@@ -275,15 +275,13 @@ void syscall_trace(union uml_pt_regs *regs, int entryexit)
275 275
276 if (unlikely(current->audit_context)) { 276 if (unlikely(current->audit_context)) {
277 if (!entryexit) 277 if (!entryexit)
278 audit_syscall_entry(current, 278 audit_syscall_entry(HOST_AUDIT_ARCH,
279 HOST_AUDIT_ARCH,
280 UPT_SYSCALL_NR(regs), 279 UPT_SYSCALL_NR(regs),
281 UPT_SYSCALL_ARG1(regs), 280 UPT_SYSCALL_ARG1(regs),
282 UPT_SYSCALL_ARG2(regs), 281 UPT_SYSCALL_ARG2(regs),
283 UPT_SYSCALL_ARG3(regs), 282 UPT_SYSCALL_ARG3(regs),
284 UPT_SYSCALL_ARG4(regs)); 283 UPT_SYSCALL_ARG4(regs));
285 else audit_syscall_exit(current, 284 else audit_syscall_exit(AUDITSC_RESULT(UPT_SYSCALL_RET(regs)),
286 AUDITSC_RESULT(UPT_SYSCALL_RET(regs)),
287 UPT_SYSCALL_RET(regs)); 285 UPT_SYSCALL_RET(regs));
288 } 286 }
289 287
diff --git a/arch/um/kernel/skas/Makefile b/arch/um/kernel/skas/Makefile
index 57181a920d48..ea3a8e409a6e 100644
--- a/arch/um/kernel/skas/Makefile
+++ b/arch/um/kernel/skas/Makefile
@@ -6,9 +6,11 @@
6obj-y := clone.o exec_kern.o mem.o mmu.o process_kern.o \ 6obj-y := clone.o exec_kern.o mem.o mmu.o process_kern.o \
7 syscall.o tlb.o uaccess.o 7 syscall.o tlb.o uaccess.o
8 8
9USER_OBJS := clone.o 9# clone.o is in the stub, so it can't be built with profiling
10# GCC hardened also auto-enables -fpic, but we need %ebx so it can't work ->
11# disable it
10 12
11include arch/um/scripts/Makefile.rules 13CFLAGS_clone.o := $(CFLAGS_NO_HARDENING)
14UNPROFILE_OBJS := clone.o
12 15
13# clone.o is in the stub, so it can't be built with profiling 16include arch/um/scripts/Makefile.rules
14$(obj)/clone.o : c_flags = -Wp,-MD,$(depfile) $(call unprofile,$(USER_CFLAGS))
diff --git a/arch/um/kernel/time_kern.c b/arch/um/kernel/time_kern.c
index 3c7626cdba4b..528cf623f8b4 100644
--- a/arch/um/kernel/time_kern.c
+++ b/arch/um/kernel/time_kern.c
@@ -209,4 +209,4 @@ int __init timer_init(void)
209 return(0); 209 return(0);
210} 210}
211 211
212__initcall(timer_init); 212arch_initcall(timer_init);
diff --git a/arch/um/os-Linux/file.c b/arch/um/os-Linux/file.c
index 3bd10deea280..09251338d99e 100644
--- a/arch/um/os-Linux/file.c
+++ b/arch/um/os-Linux/file.c
@@ -171,7 +171,7 @@ int os_sigio_async(int master, int slave)
171 171
172 flags = fcntl(master, F_GETFL); 172 flags = fcntl(master, F_GETFL);
173 if(flags < 0) 173 if(flags < 0)
174 return errno; 174 return -errno;
175 175
176 if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) || 176 if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) ||
177 (fcntl(master, F_SETOWN, os_getpid()) < 0)) 177 (fcntl(master, F_SETOWN, os_getpid()) < 0))
diff --git a/arch/um/os-Linux/irq.c b/arch/um/os-Linux/irq.c
index e599be423da1..3788d4568d33 100644
--- a/arch/um/os-Linux/irq.c
+++ b/arch/um/os-Linux/irq.c
@@ -29,21 +29,21 @@ int os_waiting_for_events(struct irq_fd *active_fds)
29 int i, n, err; 29 int i, n, err;
30 30
31 n = poll(pollfds, pollfds_num, 0); 31 n = poll(pollfds, pollfds_num, 0);
32 if(n < 0){ 32 if (n < 0) {
33 err = -errno; 33 err = -errno;
34 if(errno != EINTR) 34 if (errno != EINTR)
35 printk("sigio_handler: os_waiting_for_events:" 35 printk("sigio_handler: os_waiting_for_events:"
36 " poll returned %d, errno = %d\n", n, errno); 36 " poll returned %d, errno = %d\n", n, errno);
37 return err; 37 return err;
38 } 38 }
39 39
40 if(n == 0) 40 if (n == 0)
41 return 0; 41 return 0;
42 42
43 irq_fd = active_fds; 43 irq_fd = active_fds;
44 44
45 for(i = 0; i < pollfds_num; i++){ 45 for (i = 0; i < pollfds_num; i++) {
46 if(pollfds[i].revents != 0){ 46 if (pollfds[i].revents != 0) {
47 irq_fd->current_events = pollfds[i].revents; 47 irq_fd->current_events = pollfds[i].revents;
48 pollfds[i].fd = -1; 48 pollfds[i].fd = -1;
49 } 49 }
@@ -54,7 +54,7 @@ int os_waiting_for_events(struct irq_fd *active_fds)
54 54
55int os_isatty(int fd) 55int os_isatty(int fd)
56{ 56{
57 return(isatty(fd)); 57 return isatty(fd);
58} 58}
59 59
60int os_create_pollfd(int fd, int events, void *tmp_pfd, int size_tmpfds) 60int os_create_pollfd(int fd, int events, void *tmp_pfd, int size_tmpfds)
@@ -65,7 +65,7 @@ int os_create_pollfd(int fd, int events, void *tmp_pfd, int size_tmpfds)
65 return((pollfds_size + 1) * sizeof(pollfds[0])); 65 return((pollfds_size + 1) * sizeof(pollfds[0]));
66 } 66 }
67 67
68 if(pollfds != NULL){ 68 if (pollfds != NULL) {
69 memcpy(tmp_pfd, pollfds, 69 memcpy(tmp_pfd, pollfds,
70 sizeof(pollfds[0]) * pollfds_size); 70 sizeof(pollfds[0]) * pollfds_size);
71 /* remove old pollfds */ 71 /* remove old pollfds */
@@ -73,18 +73,15 @@ int os_create_pollfd(int fd, int events, void *tmp_pfd, int size_tmpfds)
73 } 73 }
74 pollfds = tmp_pfd; 74 pollfds = tmp_pfd;
75 pollfds_size++; 75 pollfds_size++;
76 } else { 76 } else
77 /* remove not used tmp_pfd */ 77 kfree(tmp_pfd); /* remove not used tmp_pfd */
78 if (tmp_pfd != NULL)
79 kfree(tmp_pfd);
80 }
81 78
82 pollfds[pollfds_num] = ((struct pollfd) { .fd = fd, 79 pollfds[pollfds_num] = ((struct pollfd) { .fd = fd,
83 .events = events, 80 .events = events,
84 .revents = 0 }); 81 .revents = 0 });
85 pollfds_num++; 82 pollfds_num++;
86 83
87 return(0); 84 return 0;
88} 85}
89 86
90void os_free_irq_by_cb(int (*test)(struct irq_fd *, void *), void *arg, 87void os_free_irq_by_cb(int (*test)(struct irq_fd *, void *), void *arg,
@@ -94,11 +91,11 @@ void os_free_irq_by_cb(int (*test)(struct irq_fd *, void *), void *arg,
94 int i = 0; 91 int i = 0;
95 92
96 prev = &active_fds; 93 prev = &active_fds;
97 while(*prev != NULL){ 94 while (*prev != NULL) {
98 if((*test)(*prev, arg)){ 95 if ((*test)(*prev, arg)) {
99 struct irq_fd *old_fd = *prev; 96 struct irq_fd *old_fd = *prev;
100 if((pollfds[i].fd != -1) && 97 if ((pollfds[i].fd != -1) &&
101 (pollfds[i].fd != (*prev)->fd)){ 98 (pollfds[i].fd != (*prev)->fd)) {
102 printk("os_free_irq_by_cb - mismatch between " 99 printk("os_free_irq_by_cb - mismatch between "
103 "active_fds and pollfds, fd %d vs %d\n", 100 "active_fds and pollfds, fd %d vs %d\n",
104 (*prev)->fd, pollfds[i].fd); 101 (*prev)->fd, pollfds[i].fd);
@@ -110,7 +107,6 @@ void os_free_irq_by_cb(int (*test)(struct irq_fd *, void *), void *arg,
110 /* This moves the *whole* array after pollfds[i] 107 /* This moves the *whole* array after pollfds[i]
111 * (though it doesn't spot as such)! 108 * (though it doesn't spot as such)!
112 */ 109 */
113
114 memmove(&pollfds[i], &pollfds[i + 1], 110 memmove(&pollfds[i], &pollfds[i + 1],
115 (pollfds_num - i) * sizeof(pollfds[0])); 111 (pollfds_num - i) * sizeof(pollfds[0]));
116 if(*last_irq_ptr2 == &old_fd->next) 112 if(*last_irq_ptr2 == &old_fd->next)
@@ -129,10 +125,9 @@ void os_free_irq_by_cb(int (*test)(struct irq_fd *, void *), void *arg,
129 return; 125 return;
130} 126}
131 127
132
133int os_get_pollfd(int i) 128int os_get_pollfd(int i)
134{ 129{
135 return(pollfds[i].fd); 130 return pollfds[i].fd;
136} 131}
137 132
138void os_set_pollfd(int i, int fd) 133void os_set_pollfd(int i, int fd)
@@ -151,8 +146,10 @@ void init_irq_signals(int on_sigstack)
151 int flags; 146 int flags;
152 147
153 flags = on_sigstack ? SA_ONSTACK : 0; 148 flags = on_sigstack ? SA_ONSTACK : 0;
154 if(timer_irq_inited) h = (__sighandler_t) alarm_handler; 149 if (timer_irq_inited)
155 else h = boot_timer_handler; 150 h = (__sighandler_t)alarm_handler;
151 else
152 h = boot_timer_handler;
156 153
157 set_handler(SIGVTALRM, h, flags | SA_RESTART, 154 set_handler(SIGVTALRM, h, flags | SA_RESTART,
158 SIGUSR1, SIGIO, SIGWINCH, SIGALRM, -1); 155 SIGUSR1, SIGIO, SIGWINCH, SIGALRM, -1);
diff --git a/arch/um/os-Linux/main.c b/arch/um/os-Linux/main.c
index 2878e89a674f..3a0ac38e978b 100644
--- a/arch/um/os-Linux/main.c
+++ b/arch/um/os-Linux/main.c
@@ -74,6 +74,34 @@ static void last_ditch_exit(int sig)
74 exit(1); 74 exit(1);
75} 75}
76 76
77#define UML_LIB_PATH ":/usr/lib/uml"
78
79static void setup_env_path(void)
80{
81 char *new_path = NULL;
82 char *old_path = NULL;
83 int path_len = 0;
84
85 old_path = getenv("PATH");
86 /* if no PATH variable is set or it has an empty value
87 * just use the default + /usr/lib/uml
88 */
89 if (!old_path || (path_len = strlen(old_path)) == 0) {
90 putenv("PATH=:/bin:/usr/bin/" UML_LIB_PATH);
91 return;
92 }
93
94 /* append /usr/lib/uml to the existing path */
95 path_len += strlen("PATH=" UML_LIB_PATH) + 1;
96 new_path = malloc(path_len);
97 if (!new_path) {
98 perror("coudn't malloc to set a new PATH");
99 return;
100 }
101 snprintf(new_path, path_len, "PATH=%s" UML_LIB_PATH, old_path);
102 putenv(new_path);
103}
104
77extern int uml_exitcode; 105extern int uml_exitcode;
78 106
79extern void scan_elf_aux( char **envp); 107extern void scan_elf_aux( char **envp);
@@ -114,6 +142,8 @@ int main(int argc, char **argv, char **envp)
114 142
115 set_stklim(); 143 set_stklim();
116 144
145 setup_env_path();
146
117 new_argv = malloc((argc + 1) * sizeof(char *)); 147 new_argv = malloc((argc + 1) * sizeof(char *));
118 if(new_argv == NULL){ 148 if(new_argv == NULL){
119 perror("Mallocing argv"); 149 perror("Mallocing argv");
diff --git a/arch/um/os-Linux/process.c b/arch/um/os-Linux/process.c
index 3505f44f8a25..233be2f4f8cb 100644
--- a/arch/um/os-Linux/process.c
+++ b/arch/um/os-Linux/process.c
@@ -206,29 +206,36 @@ int os_drop_memory(void *addr, int length)
206int can_drop_memory(void) 206int can_drop_memory(void)
207{ 207{
208 void *addr; 208 void *addr;
209 int fd; 209 int fd, ok = 0;
210 210
211 printk("Checking host MADV_REMOVE support..."); 211 printk("Checking host MADV_REMOVE support...");
212 fd = create_mem_file(UM_KERN_PAGE_SIZE); 212 fd = create_mem_file(UM_KERN_PAGE_SIZE);
213 if(fd < 0){ 213 if(fd < 0){
214 printk("Creating test memory file failed, err = %d\n", -fd); 214 printk("Creating test memory file failed, err = %d\n", -fd);
215 return 0; 215 goto out;
216 } 216 }
217 217
218 addr = mmap64(NULL, UM_KERN_PAGE_SIZE, PROT_READ | PROT_WRITE, 218 addr = mmap64(NULL, UM_KERN_PAGE_SIZE, PROT_READ | PROT_WRITE,
219 MAP_SHARED, fd, 0); 219 MAP_SHARED, fd, 0);
220 if(addr == MAP_FAILED){ 220 if(addr == MAP_FAILED){
221 printk("Mapping test memory file failed, err = %d\n", -errno); 221 printk("Mapping test memory file failed, err = %d\n", -errno);
222 return 0; 222 goto out_close;
223 } 223 }
224 224
225 if(madvise(addr, UM_KERN_PAGE_SIZE, MADV_REMOVE) != 0){ 225 if(madvise(addr, UM_KERN_PAGE_SIZE, MADV_REMOVE) != 0){
226 printk("MADV_REMOVE failed, err = %d\n", -errno); 226 printk("MADV_REMOVE failed, err = %d\n", -errno);
227 return 0; 227 goto out_unmap;
228 } 228 }
229 229
230 printk("OK\n"); 230 printk("OK\n");
231 return 1; 231 ok = 1;
232
233out_unmap:
234 munmap(addr, UM_KERN_PAGE_SIZE);
235out_close:
236 close(fd);
237out:
238 return ok;
232} 239}
233 240
234void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int)) 241void init_new_thread_stack(void *sig_stack, void (*usr1_handler)(int))
diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c
index 0776bc18ca85..bd89c6b99d5d 100644
--- a/arch/um/os-Linux/skas/process.c
+++ b/arch/um/os-Linux/skas/process.c
@@ -344,12 +344,12 @@ int copy_context_skas0(unsigned long new_stack, int pid)
344 err = ptrace_setregs(pid, regs); 344 err = ptrace_setregs(pid, regs);
345 if(err < 0) 345 if(err < 0)
346 panic("copy_context_skas0 : PTRACE_SETREGS failed, " 346 panic("copy_context_skas0 : PTRACE_SETREGS failed, "
347 "pid = %d, errno = %d\n", pid, errno); 347 "pid = %d, errno = %d\n", pid, -err);
348 348
349 err = ptrace_setfpregs(pid, fp_regs); 349 err = ptrace_setfpregs(pid, fp_regs);
350 if(err < 0) 350 if(err < 0)
351 panic("copy_context_skas0 : PTRACE_SETFPREGS failed, " 351 panic("copy_context_skas0 : PTRACE_SETFPREGS failed, "
352 "pid = %d, errno = %d\n", pid, errno); 352 "pid = %d, errno = %d\n", pid, -err);
353 353
354 /* set a well known return code for detection of child write failure */ 354 /* set a well known return code for detection of child write failure */
355 child_data->err = 12345678; 355 child_data->err = 12345678;
@@ -362,7 +362,7 @@ int copy_context_skas0(unsigned long new_stack, int pid)
362 pid = data->err; 362 pid = data->err;
363 if(pid < 0) 363 if(pid < 0)
364 panic("copy_context_skas0 - stub-parent reports error %d\n", 364 panic("copy_context_skas0 - stub-parent reports error %d\n",
365 pid); 365 -pid);
366 366
367 /* Wait, until child has finished too: read child's result from 367 /* Wait, until child has finished too: read child's result from
368 * child's stack and check it. 368 * child's stack and check it.
diff --git a/arch/um/os-Linux/sys-i386/registers.c b/arch/um/os-Linux/sys-i386/registers.c
index 7a6f6b99ceff..516f66dd87e3 100644
--- a/arch/um/os-Linux/sys-i386/registers.c
+++ b/arch/um/os-Linux/sys-i386/registers.c
@@ -104,7 +104,7 @@ void init_registers(int pid)
104 err = ptrace(PTRACE_GETREGS, pid, 0, exec_regs); 104 err = ptrace(PTRACE_GETREGS, pid, 0, exec_regs);
105 if(err) 105 if(err)
106 panic("check_ptrace : PTRACE_GETREGS failed, errno = %d", 106 panic("check_ptrace : PTRACE_GETREGS failed, errno = %d",
107 err); 107 errno);
108 108
109 errno = 0; 109 errno = 0;
110 err = ptrace(PTRACE_GETFPXREGS, pid, 0, exec_fpx_regs); 110 err = ptrace(PTRACE_GETFPXREGS, pid, 0, exec_fpx_regs);
@@ -119,7 +119,7 @@ void init_registers(int pid)
119 err = ptrace(PTRACE_GETFPREGS, pid, 0, exec_fp_regs); 119 err = ptrace(PTRACE_GETFPREGS, pid, 0, exec_fp_regs);
120 if(err) 120 if(err)
121 panic("check_ptrace : PTRACE_GETFPREGS failed, errno = %d", 121 panic("check_ptrace : PTRACE_GETFPREGS failed, errno = %d",
122 err); 122 errno);
123} 123}
124 124
125void get_safe_registers(unsigned long *regs, unsigned long *fp_regs) 125void get_safe_registers(unsigned long *regs, unsigned long *fp_regs)
diff --git a/arch/um/os-Linux/sys-x86_64/registers.c b/arch/um/os-Linux/sys-x86_64/registers.c
index 001941fa1a1e..becd898d9398 100644
--- a/arch/um/os-Linux/sys-x86_64/registers.c
+++ b/arch/um/os-Linux/sys-x86_64/registers.c
@@ -62,12 +62,12 @@ void init_registers(int pid)
62 err = ptrace(PTRACE_GETREGS, pid, 0, exec_regs); 62 err = ptrace(PTRACE_GETREGS, pid, 0, exec_regs);
63 if(err) 63 if(err)
64 panic("check_ptrace : PTRACE_GETREGS failed, errno = %d", 64 panic("check_ptrace : PTRACE_GETREGS failed, errno = %d",
65 err); 65 errno);
66 66
67 err = ptrace(PTRACE_GETFPREGS, pid, 0, exec_fp_regs); 67 err = ptrace(PTRACE_GETFPREGS, pid, 0, exec_fp_regs);
68 if(err) 68 if(err)
69 panic("check_ptrace : PTRACE_GETFPREGS failed, errno = %d", 69 panic("check_ptrace : PTRACE_GETFPREGS failed, errno = %d",
70 err); 70 errno);
71} 71}
72 72
73void get_safe_registers(unsigned long *regs, unsigned long *fp_regs) 73void get_safe_registers(unsigned long *regs, unsigned long *fp_regs)
diff --git a/arch/um/os-Linux/umid.c b/arch/um/os-Linux/umid.c
index 34bfc1bb9e38..362db059fe30 100644
--- a/arch/um/os-Linux/umid.c
+++ b/arch/um/os-Linux/umid.c
@@ -178,14 +178,14 @@ static void __init create_pid_file(void)
178 fd = open(file, O_RDWR | O_CREAT | O_EXCL, 0644); 178 fd = open(file, O_RDWR | O_CREAT | O_EXCL, 0644);
179 if(fd < 0){ 179 if(fd < 0){
180 printk("Open of machine pid file \"%s\" failed: %s\n", 180 printk("Open of machine pid file \"%s\" failed: %s\n",
181 file, strerror(-fd)); 181 file, strerror(errno));
182 return; 182 return;
183 } 183 }
184 184
185 snprintf(pid, sizeof(pid), "%d\n", getpid()); 185 snprintf(pid, sizeof(pid), "%d\n", getpid());
186 n = write(fd, pid, strlen(pid)); 186 n = write(fd, pid, strlen(pid));
187 if(n != strlen(pid)) 187 if(n != strlen(pid))
188 printk("Write of pid file failed - err = %d\n", -n); 188 printk("Write of pid file failed - err = %d\n", errno);
189 189
190 close(fd); 190 close(fd);
191} 191}
diff --git a/arch/um/os-Linux/user_syms.c b/arch/um/os-Linux/user_syms.c
index 2598158e1f53..3f33165ada68 100644
--- a/arch/um/os-Linux/user_syms.c
+++ b/arch/um/os-Linux/user_syms.c
@@ -96,6 +96,13 @@ EXPORT_SYMBOL_PROTO(getuid);
96EXPORT_SYMBOL_PROTO(fsync); 96EXPORT_SYMBOL_PROTO(fsync);
97EXPORT_SYMBOL_PROTO(fdatasync); 97EXPORT_SYMBOL_PROTO(fdatasync);
98 98
99/* Export symbols used by GCC for the stack protector. */
100extern void __stack_smash_handler(void *) __attribute__((weak));
101EXPORT_SYMBOL(__stack_smash_handler);
102
103extern long __guard __attribute__((weak));
104EXPORT_SYMBOL(__guard);
105
99/* 106/*
100 * Overrides for Emacs so that we follow Linus's tabbing style. 107 * Overrides for Emacs so that we follow Linus's tabbing style.
101 * Emacs will notice this stuff at the end of the file and automatically 108 * Emacs will notice this stuff at the end of the file and automatically
diff --git a/arch/um/scripts/Makefile.rules b/arch/um/scripts/Makefile.rules
index 5e7a9c310aa5..1347dc6d5218 100644
--- a/arch/um/scripts/Makefile.rules
+++ b/arch/um/scripts/Makefile.rules
@@ -7,11 +7,19 @@ USER_SINGLE_OBJS := \
7USER_OBJS += $(filter %_user.o,$(obj-y) $(obj-m) $(USER_SINGLE_OBJS)) 7USER_OBJS += $(filter %_user.o,$(obj-y) $(obj-m) $(USER_SINGLE_OBJS))
8USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) 8USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file))
9 9
10$(USER_OBJS) $(USER_OBJS:.o=.i) $(USER_OBJS:.o=.s) $(USER_OBJS:.o=.lst): \ 10$(USER_OBJS:.o=.%): \
11 c_flags = -Wp,-MD,$(depfile) $(USER_CFLAGS) $(CFLAGS_$(notdir $@)) 11 c_flags = -Wp,-MD,$(depfile) $(USER_CFLAGS) $(CFLAGS_$(*F).o)
12$(USER_OBJS) : CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ \ 12$(USER_OBJS) : CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ \
13 -Dunix -D__unix__ -D__$(SUBARCH)__ 13 -Dunix -D__unix__ -D__$(SUBARCH)__
14 14
15# These are like USER_OBJS but filter USER_CFLAGS through unprofile instead of
16# using it directly.
17UNPROFILE_OBJS := $(foreach file,$(UNPROFILE_OBJS),$(obj)/$(file))
18
19$(UNPROFILE_OBJS:.o=.%): \
20 c_flags = -Wp,-MD,$(depfile) $(call unprofile,$(USER_CFLAGS)) $(CFLAGS_$(*F).o)
21$(UNPROFILE_OBJS) : CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ \
22 -Dunix -D__unix__ -D__$(SUBARCH)__
15 23
16# The stubs and unmap.o can't try to call mcount or update basic block data 24# The stubs and unmap.o can't try to call mcount or update basic block data
17define unprofile 25define unprofile
diff --git a/arch/um/sys-i386/Makefile b/arch/um/sys-i386/Makefile
index 98b20b7bba4f..374d61a19439 100644
--- a/arch/um/sys-i386/Makefile
+++ b/arch/um/sys-i386/Makefile
@@ -8,11 +8,16 @@ subarch-obj-y = lib/bitops.o kernel/semaphore.o
8subarch-obj-$(CONFIG_HIGHMEM) += mm/highmem.o 8subarch-obj-$(CONFIG_HIGHMEM) += mm/highmem.o
9subarch-obj-$(CONFIG_MODULES) += kernel/module.o 9subarch-obj-$(CONFIG_MODULES) += kernel/module.o
10 10
11USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o stub_segv.o 11USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o
12 12
13include arch/um/scripts/Makefile.rules 13USER_OBJS += user-offsets.s
14extra-y += user-offsets.s
14 15
15extra-$(CONFIG_MODE_TT) += unmap.o 16extra-$(CONFIG_MODE_TT) += unmap.o
16 17
17$(obj)/stub_segv.o $(obj)/unmap.o: \ 18UNPROFILE_OBJS := stub_segv.o
18 _c_flags = $(call unprofile,$(CFLAGS)) 19CFLAGS_stub_segv.o := $(CFLAGS_NO_HARDENING)
20
21include arch/um/scripts/Makefile.rules
22
23$(obj)/unmap.%: _c_flags = $(call unprofile,$(CFLAGS))
diff --git a/arch/um/sys-x86_64/Makefile b/arch/um/sys-x86_64/Makefile
index b5fc22babddf..c19794d435d6 100644
--- a/arch/um/sys-x86_64/Makefile
+++ b/arch/um/sys-x86_64/Makefile
@@ -16,11 +16,16 @@ subarch-obj-$(CONFIG_MODULES) += kernel/module.o
16 16
17ldt-y = ../sys-i386/ldt.o 17ldt-y = ../sys-i386/ldt.o
18 18
19USER_OBJS := ptrace_user.o sigcontext.o stub_segv.o 19USER_OBJS := ptrace_user.o sigcontext.o
20 20
21include arch/um/scripts/Makefile.rules 21USER_OBJS += user-offsets.s
22extra-y += user-offsets.s
22 23
23extra-$(CONFIG_MODE_TT) += unmap.o 24extra-$(CONFIG_MODE_TT) += unmap.o
24 25
25$(obj)/stub_segv.o $(obj)/unmap.o: \ 26UNPROFILE_OBJS := stub_segv.o
26 _c_flags = $(call unprofile,$(CFLAGS)) 27CFLAGS_stub_segv.o := $(CFLAGS_NO_HARDENING)
28
29include arch/um/scripts/Makefile.rules
30
31$(obj)/unmap.%: _c_flags = $(call unprofile,$(CFLAGS))
diff --git a/arch/x86_64/ia32/ia32entry.S b/arch/x86_64/ia32/ia32entry.S
index 57fc37e0fb9c..5a92fed2d1d5 100644
--- a/arch/x86_64/ia32/ia32entry.S
+++ b/arch/x86_64/ia32/ia32entry.S
@@ -695,4 +695,5 @@ ia32_sys_call_table:
695 .quad sys_splice 695 .quad sys_splice
696 .quad sys_sync_file_range 696 .quad sys_sync_file_range
697 .quad sys_tee 697 .quad sys_tee
698 .quad compat_sys_vmsplice
698ia32_syscall_end: 699ia32_syscall_end:
diff --git a/arch/x86_64/kernel/mce.c b/arch/x86_64/kernel/mce.c
index 6f0790e8b6d3..c69fc43cee7b 100644
--- a/arch/x86_64/kernel/mce.c
+++ b/arch/x86_64/kernel/mce.c
@@ -629,7 +629,7 @@ static __cpuinit void mce_remove_device(unsigned int cpu)
629#endif 629#endif
630 630
631/* Get notified when a cpu comes on/off. Be hotplug friendly. */ 631/* Get notified when a cpu comes on/off. Be hotplug friendly. */
632static __cpuinit int 632static int
633mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) 633mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
634{ 634{
635 unsigned int cpu = (unsigned long)hcpu; 635 unsigned int cpu = (unsigned long)hcpu;
diff --git a/arch/x86_64/kernel/mce_amd.c b/arch/x86_64/kernel/mce_amd.c
index d3ad7d81266d..d13b241ad094 100644
--- a/arch/x86_64/kernel/mce_amd.c
+++ b/arch/x86_64/kernel/mce_amd.c
@@ -482,7 +482,7 @@ static void threshold_remove_device(unsigned int cpu)
482#endif 482#endif
483 483
484/* get notified when a cpu comes on/off */ 484/* get notified when a cpu comes on/off */
485static __cpuinit int threshold_cpu_callback(struct notifier_block *nfb, 485static int threshold_cpu_callback(struct notifier_block *nfb,
486 unsigned long action, void *hcpu) 486 unsigned long action, void *hcpu)
487{ 487{
488 /* cpu was unsigned int to begin with */ 488 /* cpu was unsigned int to begin with */
diff --git a/arch/x86_64/kernel/ptrace.c b/arch/x86_64/kernel/ptrace.c
index da8e7903d817..2d50024c9f30 100644
--- a/arch/x86_64/kernel/ptrace.c
+++ b/arch/x86_64/kernel/ptrace.c
@@ -600,12 +600,12 @@ asmlinkage void syscall_trace_enter(struct pt_regs *regs)
600 600
601 if (unlikely(current->audit_context)) { 601 if (unlikely(current->audit_context)) {
602 if (test_thread_flag(TIF_IA32)) { 602 if (test_thread_flag(TIF_IA32)) {
603 audit_syscall_entry(current, AUDIT_ARCH_I386, 603 audit_syscall_entry(AUDIT_ARCH_I386,
604 regs->orig_rax, 604 regs->orig_rax,
605 regs->rbx, regs->rcx, 605 regs->rbx, regs->rcx,
606 regs->rdx, regs->rsi); 606 regs->rdx, regs->rsi);
607 } else { 607 } else {
608 audit_syscall_entry(current, AUDIT_ARCH_X86_64, 608 audit_syscall_entry(AUDIT_ARCH_X86_64,
609 regs->orig_rax, 609 regs->orig_rax,
610 regs->rdi, regs->rsi, 610 regs->rdi, regs->rsi,
611 regs->rdx, regs->r10); 611 regs->rdx, regs->r10);
@@ -616,7 +616,7 @@ asmlinkage void syscall_trace_enter(struct pt_regs *regs)
616asmlinkage void syscall_trace_leave(struct pt_regs *regs) 616asmlinkage void syscall_trace_leave(struct pt_regs *regs)
617{ 617{
618 if (unlikely(current->audit_context)) 618 if (unlikely(current->audit_context))
619 audit_syscall_exit(current, AUDITSC_RESULT(regs->rax), regs->rax); 619 audit_syscall_exit(AUDITSC_RESULT(regs->rax), regs->rax);
620 620
621 if ((test_thread_flag(TIF_SYSCALL_TRACE) 621 if ((test_thread_flag(TIF_SYSCALL_TRACE)
622 || test_thread_flag(TIF_SINGLESTEP)) 622 || test_thread_flag(TIF_SINGLESTEP))
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c
index 759070c82751..ebc3c33b1c6c 100644
--- a/arch/x86_64/kernel/setup.c
+++ b/arch/x86_64/kernel/setup.c
@@ -1426,3 +1426,22 @@ struct seq_operations cpuinfo_op = {
1426 .show = show_cpuinfo, 1426 .show = show_cpuinfo,
1427}; 1427};
1428 1428
1429#ifdef CONFIG_INPUT_PCSPKR
1430#include <linux/platform_device.h>
1431static __init int add_pcspkr(void)
1432{
1433 struct platform_device *pd;
1434 int ret;
1435
1436 pd = platform_device_alloc("pcspkr", -1);
1437 if (!pd)
1438 return -ENOMEM;
1439
1440 ret = platform_device_add(pd);
1441 if (ret)
1442 platform_device_put(pd);
1443
1444 return ret;
1445}
1446device_initcall(add_pcspkr);
1447#endif
diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c
index 1755c053fd68..e5041a02e21f 100644
--- a/block/ll_rw_blk.c
+++ b/block/ll_rw_blk.c
@@ -3385,7 +3385,7 @@ static int blk_cpu_notify(struct notifier_block *self, unsigned long action,
3385} 3385}
3386 3386
3387 3387
3388static struct notifier_block __devinitdata blk_cpu_notifier = { 3388static struct notifier_block blk_cpu_notifier = {
3389 .notifier_call = blk_cpu_notify, 3389 .notifier_call = blk_cpu_notify,
3390}; 3390};
3391 3391
diff --git a/drivers/Kconfig b/drivers/Kconfig
index 5c91d6afb117..aeb5ab2391e4 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -68,8 +68,6 @@ source "drivers/leds/Kconfig"
68 68
69source "drivers/infiniband/Kconfig" 69source "drivers/infiniband/Kconfig"
70 70
71source "drivers/sn/Kconfig"
72
73source "drivers/edac/Kconfig" 71source "drivers/edac/Kconfig"
74 72
75source "drivers/rtc/Kconfig" 73source "drivers/rtc/Kconfig"
diff --git a/drivers/base/topology.c b/drivers/base/topology.c
index 915810f6237e..8c52421cbc54 100644
--- a/drivers/base/topology.c
+++ b/drivers/base/topology.c
@@ -107,7 +107,7 @@ static int __cpuinit topology_remove_dev(struct sys_device * sys_dev)
107 return 0; 107 return 0;
108} 108}
109 109
110static int __cpuinit topology_cpu_callback(struct notifier_block *nfb, 110static int topology_cpu_callback(struct notifier_block *nfb,
111 unsigned long action, void *hcpu) 111 unsigned long action, void *hcpu)
112{ 112{
113 unsigned int cpu = (unsigned long)hcpu; 113 unsigned int cpu = (unsigned long)hcpu;
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
index bedb689b051f..dff1e67b1dd4 100644
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -4301,7 +4301,7 @@ static int __init floppy_init(void)
4301 } 4301 }
4302 4302
4303 use_virtual_dma = can_use_virtual_dma & 1; 4303 use_virtual_dma = can_use_virtual_dma & 1;
4304#if defined(CONFIG_PPC64) 4304#if defined(CONFIG_PPC_MERGE)
4305 if (check_legacy_ioport(FDC1)) { 4305 if (check_legacy_ioport(FDC1)) {
4306 del_timer(&fd_timeout); 4306 del_timer(&fd_timeout);
4307 err = -ENODEV; 4307 err = -ENODEV;
diff --git a/drivers/char/genrtc.c b/drivers/char/genrtc.c
index d3a2bc36129b..588fca542a98 100644
--- a/drivers/char/genrtc.c
+++ b/drivers/char/genrtc.c
@@ -200,13 +200,13 @@ static ssize_t gen_rtc_read(struct file *file, char __user *buf,
200 /* first test allows optimizer to nuke this case for 32-bit machines */ 200 /* first test allows optimizer to nuke this case for 32-bit machines */
201 if (sizeof (int) != sizeof (long) && count == sizeof (unsigned int)) { 201 if (sizeof (int) != sizeof (long) && count == sizeof (unsigned int)) {
202 unsigned int uidata = data; 202 unsigned int uidata = data;
203 retval = put_user(uidata, (unsigned long __user *)buf); 203 retval = put_user(uidata, (unsigned int __user *)buf) ?:
204 sizeof(unsigned int);
204 } 205 }
205 else { 206 else {
206 retval = put_user(data, (unsigned long __user *)buf); 207 retval = put_user(data, (unsigned long __user *)buf) ?:
208 sizeof(unsigned long);
207 } 209 }
208 if (!retval)
209 retval = sizeof(unsigned long);
210 out: 210 out:
211 current->state = TASK_RUNNING; 211 current->state = TASK_RUNNING;
212 remove_wait_queue(&gen_rtc_wait, &wait); 212 remove_wait_queue(&gen_rtc_wait, &wait);
diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c
index 935670a3cd98..5755b7e5f187 100644
--- a/drivers/char/keyboard.c
+++ b/drivers/char/keyboard.c
@@ -860,9 +860,32 @@ static void k_slock(struct vc_data *vc, unsigned char value, char up_flag, struc
860} 860}
861 861
862/* by default, 300ms interval for combination release */ 862/* by default, 300ms interval for combination release */
863static long brl_timeout = 300; 863static unsigned brl_timeout = 300;
864MODULE_PARM_DESC(brl_timeout, "Braille keys release delay in ms (0 for combination on first release, < 0 for dead characters)"); 864MODULE_PARM_DESC(brl_timeout, "Braille keys release delay in ms (0 for commit on first key release)");
865module_param(brl_timeout, long, 0644); 865module_param(brl_timeout, uint, 0644);
866
867static unsigned brl_nbchords = 1;
868MODULE_PARM_DESC(brl_nbchords, "Number of chords that produce a braille pattern (0 for dead chords)");
869module_param(brl_nbchords, uint, 0644);
870
871static void k_brlcommit(struct vc_data *vc, unsigned int pattern, char up_flag, struct pt_regs *regs)
872{
873 static unsigned long chords;
874 static unsigned committed;
875
876 if (!brl_nbchords)
877 k_deadunicode(vc, BRL_UC_ROW | pattern, up_flag, regs);
878 else {
879 committed |= pattern;
880 chords++;
881 if (chords == brl_nbchords) {
882 k_unicode(vc, BRL_UC_ROW | committed, up_flag, regs);
883 chords = 0;
884 committed = 0;
885 }
886 }
887}
888
866static void k_brl(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs) 889static void k_brl(struct vc_data *vc, unsigned char value, char up_flag, struct pt_regs *regs)
867{ 890{
868 static unsigned pressed,committing; 891 static unsigned pressed,committing;
@@ -882,11 +905,6 @@ static void k_brl(struct vc_data *vc, unsigned char value, char up_flag, struct
882 if (value > 8) 905 if (value > 8)
883 return; 906 return;
884 907
885 if (brl_timeout < 0) {
886 k_deadunicode(vc, BRL_UC_ROW | (1 << (value - 1)), up_flag, regs);
887 return;
888 }
889
890 if (up_flag) { 908 if (up_flag) {
891 if (brl_timeout) { 909 if (brl_timeout) {
892 if (!committing || 910 if (!committing ||
@@ -897,13 +915,13 @@ static void k_brl(struct vc_data *vc, unsigned char value, char up_flag, struct
897 pressed &= ~(1 << (value - 1)); 915 pressed &= ~(1 << (value - 1));
898 if (!pressed) { 916 if (!pressed) {
899 if (committing) { 917 if (committing) {
900 k_unicode(vc, BRL_UC_ROW | committing, 0, regs); 918 k_brlcommit(vc, committing, 0, regs);
901 committing = 0; 919 committing = 0;
902 } 920 }
903 } 921 }
904 } else { 922 } else {
905 if (committing) { 923 if (committing) {
906 k_unicode(vc, BRL_UC_ROW | committing, 0, regs); 924 k_brlcommit(vc, committing, 0, regs);
907 committing = 0; 925 committing = 0;
908 } 926 }
909 pressed &= ~(1 << (value - 1)); 927 pressed &= ~(1 << (value - 1));
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index 66719f9d294c..1fa9fa157c12 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -27,6 +27,7 @@
27#include <linux/crash_dump.h> 27#include <linux/crash_dump.h>
28#include <linux/backing-dev.h> 28#include <linux/backing-dev.h>
29#include <linux/bootmem.h> 29#include <linux/bootmem.h>
30#include <linux/pipe_fs_i.h>
30 31
31#include <asm/uaccess.h> 32#include <asm/uaccess.h>
32#include <asm/io.h> 33#include <asm/io.h>
@@ -578,6 +579,18 @@ static ssize_t write_null(struct file * file, const char __user * buf,
578 return count; 579 return count;
579} 580}
580 581
582static int pipe_to_null(struct pipe_inode_info *info, struct pipe_buffer *buf,
583 struct splice_desc *sd)
584{
585 return sd->len;
586}
587
588static ssize_t splice_write_null(struct pipe_inode_info *pipe,struct file *out,
589 loff_t *ppos, size_t len, unsigned int flags)
590{
591 return splice_from_pipe(pipe, out, ppos, len, flags, pipe_to_null);
592}
593
581#ifdef CONFIG_MMU 594#ifdef CONFIG_MMU
582/* 595/*
583 * For fun, we are using the MMU for this. 596 * For fun, we are using the MMU for this.
@@ -785,6 +798,7 @@ static struct file_operations null_fops = {
785 .llseek = null_lseek, 798 .llseek = null_lseek,
786 .read = read_null, 799 .read = read_null,
787 .write = write_null, 800 .write = write_null,
801 .splice_write = splice_write_null,
788}; 802};
789 803
790#if defined(CONFIG_ISA) || !defined(__mc68000__) 804#if defined(CONFIG_ISA) || !defined(__mc68000__)
diff --git a/drivers/char/mwave/mwavedd.c b/drivers/char/mwave/mwavedd.c
index 8666171e187b..d3ba2f860ef0 100644
--- a/drivers/char/mwave/mwavedd.c
+++ b/drivers/char/mwave/mwavedd.c
@@ -271,7 +271,7 @@ static int mwave_ioctl(struct inode *inode, struct file *file,
271 ipcnum, 271 ipcnum,
272 pDrvData->IPCs[ipcnum].usIntCount); 272 pDrvData->IPCs[ipcnum].usIntCount);
273 273
274 if (ipcnum > ARRAY_SIZE(pDrvData->IPCs)) { 274 if (ipcnum >= ARRAY_SIZE(pDrvData->IPCs)) {
275 PRINTK_ERROR(KERN_ERR_MWAVE 275 PRINTK_ERROR(KERN_ERR_MWAVE
276 "mwavedd::mwave_ioctl:" 276 "mwavedd::mwave_ioctl:"
277 " IOCTL_MW_REGISTER_IPC:" 277 " IOCTL_MW_REGISTER_IPC:"
diff --git a/drivers/char/tipar.c b/drivers/char/tipar.c
index eb2eb3e12d6a..079db5a935a1 100644
--- a/drivers/char/tipar.c
+++ b/drivers/char/tipar.c
@@ -515,7 +515,7 @@ tipar_init_module(void)
515 err = PTR_ERR(tipar_class); 515 err = PTR_ERR(tipar_class);
516 goto out_chrdev; 516 goto out_chrdev;
517 } 517 }
518 if (parport_register_driver(&tipar_driver) || tp_count == 0) { 518 if (parport_register_driver(&tipar_driver)) {
519 printk(KERN_ERR "tipar: unable to register with parport\n"); 519 printk(KERN_ERR "tipar: unable to register with parport\n");
520 err = -EIO; 520 err = -EIO;
521 goto out_class; 521 goto out_class;
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 9759d05b1972..29b2fa5534ae 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1497,7 +1497,7 @@ int cpufreq_update_policy(unsigned int cpu)
1497} 1497}
1498EXPORT_SYMBOL(cpufreq_update_policy); 1498EXPORT_SYMBOL(cpufreq_update_policy);
1499 1499
1500static int __cpuinit cpufreq_cpu_callback(struct notifier_block *nfb, 1500static int cpufreq_cpu_callback(struct notifier_block *nfb,
1501 unsigned long action, void *hcpu) 1501 unsigned long action, void *hcpu)
1502{ 1502{
1503 unsigned int cpu = (unsigned long)hcpu; 1503 unsigned int cpu = (unsigned long)hcpu;
diff --git a/drivers/edac/e752x_edac.c b/drivers/edac/e752x_edac.c
index 66572c5323ad..fce31936e6d7 100644
--- a/drivers/edac/e752x_edac.c
+++ b/drivers/edac/e752x_edac.c
@@ -25,6 +25,8 @@
25#include <linux/slab.h> 25#include <linux/slab.h>
26#include "edac_mc.h" 26#include "edac_mc.h"
27 27
28static int force_function_unhide;
29
28#define e752x_printk(level, fmt, arg...) \ 30#define e752x_printk(level, fmt, arg...) \
29 edac_printk(level, "e752x", fmt, ##arg) 31 edac_printk(level, "e752x", fmt, ##arg)
30 32
@@ -782,8 +784,16 @@ static int e752x_probe1(struct pci_dev *pdev, int dev_idx)
782 debugf0("%s(): mci\n", __func__); 784 debugf0("%s(): mci\n", __func__);
783 debugf0("Starting Probe1\n"); 785 debugf0("Starting Probe1\n");
784 786
785 /* enable device 0 function 1 */ 787 /* check to see if device 0 function 1 is enabled; if it isn't, we
788 * assume the BIOS has reserved it for a reason and is expecting
789 * exclusive access, we take care not to violate that assumption and
790 * fail the probe. */
786 pci_read_config_byte(pdev, E752X_DEVPRES1, &stat8); 791 pci_read_config_byte(pdev, E752X_DEVPRES1, &stat8);
792 if (!force_function_unhide && !(stat8 & (1 << 5))) {
793 printk(KERN_INFO "Contact your BIOS vendor to see if the "
794 "E752x error registers can be safely un-hidden\n");
795 goto fail;
796 }
787 stat8 |= (1 << 5); 797 stat8 |= (1 << 5);
788 pci_write_config_byte(pdev, E752X_DEVPRES1, stat8); 798 pci_write_config_byte(pdev, E752X_DEVPRES1, stat8);
789 799
@@ -1063,3 +1073,8 @@ module_exit(e752x_exit);
1063MODULE_LICENSE("GPL"); 1073MODULE_LICENSE("GPL");
1064MODULE_AUTHOR("Linux Networx (http://lnxi.com) Tom Zimmerman\n"); 1074MODULE_AUTHOR("Linux Networx (http://lnxi.com) Tom Zimmerman\n");
1065MODULE_DESCRIPTION("MC support for Intel e752x memory controllers"); 1075MODULE_DESCRIPTION("MC support for Intel e752x memory controllers");
1076
1077module_param(force_function_unhide, int, 0444);
1078MODULE_PARM_DESC(force_function_unhide, "if BIOS sets Dev0:Fun1 up as hidden:"
1079" 1=force unhide and hope BIOS doesn't fight driver for Dev0:Fun1 access");
1080
diff --git a/drivers/infiniband/hw/ipath/ipath_debug.h b/drivers/infiniband/hw/ipath/ipath_debug.h
index 593e28969c69..46762387f5f8 100644
--- a/drivers/infiniband/hw/ipath/ipath_debug.h
+++ b/drivers/infiniband/hw/ipath/ipath_debug.h
@@ -60,11 +60,11 @@
60#define __IPATH_KERNEL_SEND 0x2000 /* use kernel mode send */ 60#define __IPATH_KERNEL_SEND 0x2000 /* use kernel mode send */
61#define __IPATH_EPKTDBG 0x4000 /* print ethernet packet data */ 61#define __IPATH_EPKTDBG 0x4000 /* print ethernet packet data */
62#define __IPATH_SMADBG 0x8000 /* sma packet debug */ 62#define __IPATH_SMADBG 0x8000 /* sma packet debug */
63#define __IPATH_IPATHDBG 0x10000 /* Ethernet (IPATH) general debug on */ 63#define __IPATH_IPATHDBG 0x10000 /* Ethernet (IPATH) gen debug */
64#define __IPATH_IPATHWARN 0x20000 /* Ethernet (IPATH) warnings on */ 64#define __IPATH_IPATHWARN 0x20000 /* Ethernet (IPATH) warnings */
65#define __IPATH_IPATHERR 0x40000 /* Ethernet (IPATH) errors on */ 65#define __IPATH_IPATHERR 0x40000 /* Ethernet (IPATH) errors */
66#define __IPATH_IPATHPD 0x80000 /* Ethernet (IPATH) packet dump on */ 66#define __IPATH_IPATHPD 0x80000 /* Ethernet (IPATH) packet dump */
67#define __IPATH_IPATHTABLE 0x100000 /* Ethernet (IPATH) table dump on */ 67#define __IPATH_IPATHTABLE 0x100000 /* Ethernet (IPATH) table dump */
68 68
69#else /* _IPATH_DEBUGGING */ 69#else /* _IPATH_DEBUGGING */
70 70
@@ -79,11 +79,12 @@
79#define __IPATH_TRSAMPLE 0x0 /* generate trace buffer sample entries */ 79#define __IPATH_TRSAMPLE 0x0 /* generate trace buffer sample entries */
80#define __IPATH_VERBDBG 0x0 /* very verbose debug */ 80#define __IPATH_VERBDBG 0x0 /* very verbose debug */
81#define __IPATH_PKTDBG 0x0 /* print packet data */ 81#define __IPATH_PKTDBG 0x0 /* print packet data */
82#define __IPATH_PROCDBG 0x0 /* print process startup (init)/exit messages */ 82#define __IPATH_PROCDBG 0x0 /* process startup (init)/exit messages */
83/* print mmap/nopage stuff, not using VDBG any more */ 83/* print mmap/nopage stuff, not using VDBG any more */
84#define __IPATH_MMDBG 0x0 84#define __IPATH_MMDBG 0x0
85#define __IPATH_EPKTDBG 0x0 /* print ethernet packet data */ 85#define __IPATH_EPKTDBG 0x0 /* print ethernet packet data */
86#define __IPATH_SMADBG 0x0 /* print process startup (init)/exit messages */#define __IPATH_IPATHDBG 0x0 /* Ethernet (IPATH) table dump on */ 86#define __IPATH_SMADBG 0x0 /* process startup (init)/exit messages */
87#define __IPATH_IPATHDBG 0x0 /* Ethernet (IPATH) table dump on */
87#define __IPATH_IPATHWARN 0x0 /* Ethernet (IPATH) warnings on */ 88#define __IPATH_IPATHWARN 0x0 /* Ethernet (IPATH) warnings on */
88#define __IPATH_IPATHERR 0x0 /* Ethernet (IPATH) errors on */ 89#define __IPATH_IPATHERR 0x0 /* Ethernet (IPATH) errors on */
89#define __IPATH_IPATHPD 0x0 /* Ethernet (IPATH) packet dump on */ 90#define __IPATH_IPATHPD 0x0 /* Ethernet (IPATH) packet dump on */
diff --git a/drivers/infiniband/hw/ipath/ipath_diag.c b/drivers/infiniband/hw/ipath/ipath_diag.c
index 7d3fb6996b41..28ddceb260e8 100644
--- a/drivers/infiniband/hw/ipath/ipath_diag.c
+++ b/drivers/infiniband/hw/ipath/ipath_diag.c
@@ -277,13 +277,14 @@ static int ipath_diag_open(struct inode *in, struct file *fp)
277 277
278bail: 278bail:
279 spin_unlock_irqrestore(&ipath_devs_lock, flags); 279 spin_unlock_irqrestore(&ipath_devs_lock, flags);
280 mutex_unlock(&ipath_mutex);
281 280
282 /* Only expose a way to reset the device if we 281 /* Only expose a way to reset the device if we
283 make it into diag mode. */ 282 make it into diag mode. */
284 if (ret == 0) 283 if (ret == 0)
285 ipath_expose_reset(&dd->pcidev->dev); 284 ipath_expose_reset(&dd->pcidev->dev);
286 285
286 mutex_unlock(&ipath_mutex);
287
287 return ret; 288 return ret;
288} 289}
289 290
diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c
index e7617c3982ea..398add4d4cb1 100644
--- a/drivers/infiniband/hw/ipath/ipath_driver.c
+++ b/drivers/infiniband/hw/ipath/ipath_driver.c
@@ -418,9 +418,19 @@ static int __devinit ipath_init_one(struct pci_dev *pdev,
418 418
419 ret = pci_set_dma_mask(pdev, DMA_64BIT_MASK); 419 ret = pci_set_dma_mask(pdev, DMA_64BIT_MASK);
420 if (ret) { 420 if (ret) {
421 dev_info(&pdev->dev, "pci_set_dma_mask unit %u " 421 /*
422 "fails: %d\n", dd->ipath_unit, ret); 422 * if the 64 bit setup fails, try 32 bit. Some systems
423 goto bail_regions; 423 * do not setup 64 bit maps on systems with 2GB or less
424 * memory installed.
425 */
426 ret = pci_set_dma_mask(pdev, DMA_32BIT_MASK);
427 if (ret) {
428 dev_info(&pdev->dev, "pci_set_dma_mask unit %u "
429 "fails: %d\n", dd->ipath_unit, ret);
430 goto bail_regions;
431 }
432 else
433 ipath_dbg("No 64bit DMA mask, used 32 bit mask\n");
424 } 434 }
425 435
426 pci_set_master(pdev); 436 pci_set_master(pdev);
@@ -1949,7 +1959,7 @@ int ipath_reset_device(int unit)
1949 } 1959 }
1950 1960
1951 if (dd->ipath_pd) 1961 if (dd->ipath_pd)
1952 for (i = 1; i < dd->ipath_portcnt; i++) { 1962 for (i = 1; i < dd->ipath_cfgports; i++) {
1953 if (dd->ipath_pd[i] && dd->ipath_pd[i]->port_cnt) { 1963 if (dd->ipath_pd[i] && dd->ipath_pd[i]->port_cnt) {
1954 ipath_dbg("unit %u port %d is in use " 1964 ipath_dbg("unit %u port %d is in use "
1955 "(PID %u cmd %s), can't reset\n", 1965 "(PID %u cmd %s), can't reset\n",
diff --git a/drivers/infiniband/hw/ipath/ipath_init_chip.c b/drivers/infiniband/hw/ipath/ipath_init_chip.c
index 2823ff9c0c62..16f640e1c16e 100644
--- a/drivers/infiniband/hw/ipath/ipath_init_chip.c
+++ b/drivers/infiniband/hw/ipath/ipath_init_chip.c
@@ -53,13 +53,19 @@ MODULE_PARM_DESC(cfgports, "Set max number of ports to use");
53 53
54/* 54/*
55 * Number of buffers reserved for driver (layered drivers and SMA 55 * Number of buffers reserved for driver (layered drivers and SMA
56 * send). Reserved at end of buffer list. 56 * send). Reserved at end of buffer list. Initialized based on
57 * number of PIO buffers if not set via module interface.
58 * The problem with this is that it's global, but we'll use different
59 * numbers for different chip types. So the default value is not
60 * very useful. I've redefined it for the 1.3 release so that it's
61 * zero unless set by the user to something else, in which case we
62 * try to respect it.
57 */ 63 */
58static ushort ipath_kpiobufs = 32; 64static ushort ipath_kpiobufs;
59 65
60static int ipath_set_kpiobufs(const char *val, struct kernel_param *kp); 66static int ipath_set_kpiobufs(const char *val, struct kernel_param *kp);
61 67
62module_param_call(kpiobufs, ipath_set_kpiobufs, param_get_uint, 68module_param_call(kpiobufs, ipath_set_kpiobufs, param_get_ushort,
63 &ipath_kpiobufs, S_IWUSR | S_IRUGO); 69 &ipath_kpiobufs, S_IWUSR | S_IRUGO);
64MODULE_PARM_DESC(kpiobufs, "Set number of PIO buffers for driver"); 70MODULE_PARM_DESC(kpiobufs, "Set number of PIO buffers for driver");
65 71
@@ -531,8 +537,11 @@ static int init_housekeeping(struct ipath_devdata *dd,
531 * Don't clear ipath_flags as 8bit mode was set before 537 * Don't clear ipath_flags as 8bit mode was set before
532 * entering this func. However, we do set the linkstate to 538 * entering this func. However, we do set the linkstate to
533 * unknown, so we can watch for a transition. 539 * unknown, so we can watch for a transition.
540 * PRESENT is set because we want register reads to work,
541 * and the kernel infrastructure saw it in config space;
542 * We clear it if we have failures.
534 */ 543 */
535 dd->ipath_flags |= IPATH_LINKUNK; 544 dd->ipath_flags |= IPATH_LINKUNK | IPATH_PRESENT;
536 dd->ipath_flags &= ~(IPATH_LINKACTIVE | IPATH_LINKARMED | 545 dd->ipath_flags &= ~(IPATH_LINKACTIVE | IPATH_LINKARMED |
537 IPATH_LINKDOWN | IPATH_LINKINIT); 546 IPATH_LINKDOWN | IPATH_LINKINIT);
538 547
@@ -560,6 +569,7 @@ static int init_housekeeping(struct ipath_devdata *dd,
560 || (dd->ipath_uregbase & 0xffffffff) == 0xffffffff) { 569 || (dd->ipath_uregbase & 0xffffffff) == 0xffffffff) {
561 ipath_dev_err(dd, "Register read failures from chip, " 570 ipath_dev_err(dd, "Register read failures from chip, "
562 "giving up initialization\n"); 571 "giving up initialization\n");
572 dd->ipath_flags &= ~IPATH_PRESENT;
563 ret = -ENODEV; 573 ret = -ENODEV;
564 goto done; 574 goto done;
565 } 575 }
@@ -682,16 +692,14 @@ int ipath_init_chip(struct ipath_devdata *dd, int reinit)
682 */ 692 */
683 dd->ipath_pioavregs = ALIGN(val, sizeof(u64) * BITS_PER_BYTE / 2) 693 dd->ipath_pioavregs = ALIGN(val, sizeof(u64) * BITS_PER_BYTE / 2)
684 / (sizeof(u64) * BITS_PER_BYTE / 2); 694 / (sizeof(u64) * BITS_PER_BYTE / 2);
685 if (!ipath_kpiobufs) /* have to have at least 1, for SMA */ 695 if (ipath_kpiobufs == 0) {
686 kpiobufs = ipath_kpiobufs = 1; 696 /* not set by user, or set explictly to default */
687 else if ((dd->ipath_piobcnt2k + dd->ipath_piobcnt4k) < 697 if ((dd->ipath_piobcnt2k + dd->ipath_piobcnt4k) > 128)
688 (dd->ipath_cfgports * IPATH_MIN_USER_PORT_BUFCNT)) { 698 kpiobufs = 32;
689 dev_info(&dd->pcidev->dev, "Too few PIO buffers (%u) " 699 else
690 "for %u ports to have %u each!\n", 700 kpiobufs = 16;
691 dd->ipath_piobcnt2k + dd->ipath_piobcnt4k, 701 }
692 dd->ipath_cfgports, IPATH_MIN_USER_PORT_BUFCNT); 702 else
693 kpiobufs = 1; /* reserve just the minimum for SMA/ether */
694 } else
695 kpiobufs = ipath_kpiobufs; 703 kpiobufs = ipath_kpiobufs;
696 704
697 if (kpiobufs > 705 if (kpiobufs >
diff --git a/drivers/infiniband/hw/ipath/ipath_intr.c b/drivers/infiniband/hw/ipath/ipath_intr.c
index 0bcb428041f3..3e72a1fe3d73 100644
--- a/drivers/infiniband/hw/ipath/ipath_intr.c
+++ b/drivers/infiniband/hw/ipath/ipath_intr.c
@@ -665,14 +665,14 @@ static void handle_layer_pioavail(struct ipath_devdata *dd)
665 665
666 ret = __ipath_layer_intr(dd, IPATH_LAYER_INT_SEND_CONTINUE); 666 ret = __ipath_layer_intr(dd, IPATH_LAYER_INT_SEND_CONTINUE);
667 if (ret > 0) 667 if (ret > 0)
668 goto clear; 668 goto set;
669 669
670 ret = __ipath_verbs_piobufavail(dd); 670 ret = __ipath_verbs_piobufavail(dd);
671 if (ret > 0) 671 if (ret > 0)
672 goto clear; 672 goto set;
673 673
674 return; 674 return;
675clear: 675set:
676 set_bit(IPATH_S_PIOINTBUFAVAIL, &dd->ipath_sendctrl); 676 set_bit(IPATH_S_PIOINTBUFAVAIL, &dd->ipath_sendctrl);
677 ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl, 677 ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl,
678 dd->ipath_sendctrl); 678 dd->ipath_sendctrl);
@@ -719,11 +719,24 @@ static void handle_rcv(struct ipath_devdata *dd, u32 istat)
719irqreturn_t ipath_intr(int irq, void *data, struct pt_regs *regs) 719irqreturn_t ipath_intr(int irq, void *data, struct pt_regs *regs)
720{ 720{
721 struct ipath_devdata *dd = data; 721 struct ipath_devdata *dd = data;
722 u32 istat = ipath_read_kreg32(dd, dd->ipath_kregs->kr_intstatus); 722 u32 istat;
723 ipath_err_t estat = 0; 723 ipath_err_t estat = 0;
724 static unsigned unexpected = 0; 724 static unsigned unexpected = 0;
725 irqreturn_t ret; 725 irqreturn_t ret;
726 726
727 if(!(dd->ipath_flags & IPATH_PRESENT)) {
728 /* this is mostly so we don't try to touch the chip while
729 * it is being reset */
730 /*
731 * This return value is perhaps odd, but we do not want the
732 * interrupt core code to remove our interrupt handler
733 * because we don't appear to be handling an interrupt
734 * during a chip reset.
735 */
736 return IRQ_HANDLED;
737 }
738
739 istat = ipath_read_kreg32(dd, dd->ipath_kregs->kr_intstatus);
727 if (unlikely(!istat)) { 740 if (unlikely(!istat)) {
728 ipath_stats.sps_nullintr++; 741 ipath_stats.sps_nullintr++;
729 ret = IRQ_NONE; /* not our interrupt, or already handled */ 742 ret = IRQ_NONE; /* not our interrupt, or already handled */
diff --git a/drivers/infiniband/hw/ipath/ipath_kernel.h b/drivers/infiniband/hw/ipath/ipath_kernel.h
index 0ce5f19c9d62..e6507f8115bc 100644
--- a/drivers/infiniband/hw/ipath/ipath_kernel.h
+++ b/drivers/infiniband/hw/ipath/ipath_kernel.h
@@ -731,7 +731,7 @@ u64 ipath_read_kreg64_port(const struct ipath_devdata *, ipath_kreg,
731static inline u32 ipath_read_ureg32(const struct ipath_devdata *dd, 731static inline u32 ipath_read_ureg32(const struct ipath_devdata *dd,
732 ipath_ureg regno, int port) 732 ipath_ureg regno, int port)
733{ 733{
734 if (!dd->ipath_kregbase) 734 if (!dd->ipath_kregbase || !(dd->ipath_flags & IPATH_PRESENT))
735 return 0; 735 return 0;
736 736
737 return readl(regno + (u64 __iomem *) 737 return readl(regno + (u64 __iomem *)
@@ -762,7 +762,7 @@ static inline void ipath_write_ureg(const struct ipath_devdata *dd,
762static inline u32 ipath_read_kreg32(const struct ipath_devdata *dd, 762static inline u32 ipath_read_kreg32(const struct ipath_devdata *dd,
763 ipath_kreg regno) 763 ipath_kreg regno)
764{ 764{
765 if (!dd->ipath_kregbase) 765 if (!dd->ipath_kregbase || !(dd->ipath_flags & IPATH_PRESENT))
766 return -1; 766 return -1;
767 return readl((u32 __iomem *) & dd->ipath_kregbase[regno]); 767 return readl((u32 __iomem *) & dd->ipath_kregbase[regno]);
768} 768}
@@ -770,7 +770,7 @@ static inline u32 ipath_read_kreg32(const struct ipath_devdata *dd,
770static inline u64 ipath_read_kreg64(const struct ipath_devdata *dd, 770static inline u64 ipath_read_kreg64(const struct ipath_devdata *dd,
771 ipath_kreg regno) 771 ipath_kreg regno)
772{ 772{
773 if (!dd->ipath_kregbase) 773 if (!dd->ipath_kregbase || !(dd->ipath_flags & IPATH_PRESENT))
774 return -1; 774 return -1;
775 775
776 return readq(&dd->ipath_kregbase[regno]); 776 return readq(&dd->ipath_kregbase[regno]);
@@ -786,7 +786,7 @@ static inline void ipath_write_kreg(const struct ipath_devdata *dd,
786static inline u64 ipath_read_creg(const struct ipath_devdata *dd, 786static inline u64 ipath_read_creg(const struct ipath_devdata *dd,
787 ipath_sreg regno) 787 ipath_sreg regno)
788{ 788{
789 if (!dd->ipath_kregbase) 789 if (!dd->ipath_kregbase || !(dd->ipath_flags & IPATH_PRESENT))
790 return 0; 790 return 0;
791 791
792 return readq(regno + (u64 __iomem *) 792 return readq(regno + (u64 __iomem *)
@@ -797,7 +797,7 @@ static inline u64 ipath_read_creg(const struct ipath_devdata *dd,
797static inline u32 ipath_read_creg32(const struct ipath_devdata *dd, 797static inline u32 ipath_read_creg32(const struct ipath_devdata *dd,
798 ipath_sreg regno) 798 ipath_sreg regno)
799{ 799{
800 if (!dd->ipath_kregbase) 800 if (!dd->ipath_kregbase || !(dd->ipath_flags & IPATH_PRESENT))
801 return 0; 801 return 0;
802 return readl(regno + (u64 __iomem *) 802 return readl(regno + (u64 __iomem *)
803 (dd->ipath_cregbase + 803 (dd->ipath_cregbase +
diff --git a/drivers/infiniband/hw/ipath/ipath_layer.c b/drivers/infiniband/hw/ipath/ipath_layer.c
index 69ed1100701a..9cb5258ffed9 100644
--- a/drivers/infiniband/hw/ipath/ipath_layer.c
+++ b/drivers/infiniband/hw/ipath/ipath_layer.c
@@ -46,13 +46,15 @@
46/* Acquire before ipath_devs_lock. */ 46/* Acquire before ipath_devs_lock. */
47static DEFINE_MUTEX(ipath_layer_mutex); 47static DEFINE_MUTEX(ipath_layer_mutex);
48 48
49static int ipath_verbs_registered;
50
49u16 ipath_layer_rcv_opcode; 51u16 ipath_layer_rcv_opcode;
52
50static int (*layer_intr)(void *, u32); 53static int (*layer_intr)(void *, u32);
51static int (*layer_rcv)(void *, void *, struct sk_buff *); 54static int (*layer_rcv)(void *, void *, struct sk_buff *);
52static int (*layer_rcv_lid)(void *, void *); 55static int (*layer_rcv_lid)(void *, void *);
53static int (*verbs_piobufavail)(void *); 56static int (*verbs_piobufavail)(void *);
54static void (*verbs_rcv)(void *, void *, void *, u32); 57static void (*verbs_rcv)(void *, void *, void *, u32);
55static int ipath_verbs_registered;
56 58
57static void *(*layer_add_one)(int, struct ipath_devdata *); 59static void *(*layer_add_one)(int, struct ipath_devdata *);
58static void (*layer_remove_one)(void *); 60static void (*layer_remove_one)(void *);
@@ -586,6 +588,8 @@ void ipath_verbs_unregister(void)
586 verbs_rcv = NULL; 588 verbs_rcv = NULL;
587 verbs_timer_cb = NULL; 589 verbs_timer_cb = NULL;
588 590
591 ipath_verbs_registered = 0;
592
589 mutex_unlock(&ipath_layer_mutex); 593 mutex_unlock(&ipath_layer_mutex);
590} 594}
591 595
diff --git a/drivers/infiniband/hw/ipath/ipath_pe800.c b/drivers/infiniband/hw/ipath/ipath_pe800.c
index e1dc4f757062..6318067ab5ec 100644
--- a/drivers/infiniband/hw/ipath/ipath_pe800.c
+++ b/drivers/infiniband/hw/ipath/ipath_pe800.c
@@ -972,6 +972,8 @@ static int ipath_setup_pe_reset(struct ipath_devdata *dd)
972 /* Use ERROR so it shows up in logs, etc. */ 972 /* Use ERROR so it shows up in logs, etc. */
973 ipath_dev_err(dd, "Resetting PE-800 unit %u\n", 973 ipath_dev_err(dd, "Resetting PE-800 unit %u\n",
974 dd->ipath_unit); 974 dd->ipath_unit);
975 /* keep chip from being accessed in a few places */
976 dd->ipath_flags &= ~(IPATH_INITTED|IPATH_PRESENT);
975 val = dd->ipath_control | INFINIPATH_C_RESET; 977 val = dd->ipath_control | INFINIPATH_C_RESET;
976 ipath_write_kreg(dd, dd->ipath_kregs->kr_control, val); 978 ipath_write_kreg(dd, dd->ipath_kregs->kr_control, val);
977 mb(); 979 mb();
@@ -997,6 +999,8 @@ static int ipath_setup_pe_reset(struct ipath_devdata *dd)
997 if ((r = pci_enable_device(dd->pcidev))) 999 if ((r = pci_enable_device(dd->pcidev)))
998 ipath_dev_err(dd, "pci_enable_device failed after " 1000 ipath_dev_err(dd, "pci_enable_device failed after "
999 "reset: %d\n", r); 1001 "reset: %d\n", r);
1002 /* whether it worked or not, mark as present, again */
1003 dd->ipath_flags |= IPATH_PRESENT;
1000 val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_revision); 1004 val = ipath_read_kreg64(dd, dd->ipath_kregs->kr_revision);
1001 if (val == dd->ipath_revision) { 1005 if (val == dd->ipath_revision) {
1002 ipath_cdbg(VERBOSE, "Got matching revision " 1006 ipath_cdbg(VERBOSE, "Got matching revision "
diff --git a/drivers/infiniband/hw/ipath/ipath_registers.h b/drivers/infiniband/hw/ipath/ipath_registers.h
index 1e59750c5f63..402126eb79c9 100644
--- a/drivers/infiniband/hw/ipath/ipath_registers.h
+++ b/drivers/infiniband/hw/ipath/ipath_registers.h
@@ -34,8 +34,9 @@
34#define _IPATH_REGISTERS_H 34#define _IPATH_REGISTERS_H
35 35
36/* 36/*
37 * This file should only be included by kernel source, and by the diags. 37 * This file should only be included by kernel source, and by the diags. It
38 * It defines the registers, and their contents, for the InfiniPath HT-400 chip 38 * defines the registers, and their contents, for the InfiniPath HT-400
39 * chip.
39 */ 40 */
40 41
41/* 42/*
@@ -156,8 +157,10 @@
156#define INFINIPATH_IBCC_FLOWCTRLWATERMARK_SHIFT 8 157#define INFINIPATH_IBCC_FLOWCTRLWATERMARK_SHIFT 8
157#define INFINIPATH_IBCC_LINKINITCMD_MASK 0x3ULL 158#define INFINIPATH_IBCC_LINKINITCMD_MASK 0x3ULL
158#define INFINIPATH_IBCC_LINKINITCMD_DISABLE 1 159#define INFINIPATH_IBCC_LINKINITCMD_DISABLE 1
159#define INFINIPATH_IBCC_LINKINITCMD_POLL 2 /* cycle through TS1/TS2 till OK */ 160/* cycle through TS1/TS2 till OK */
160#define INFINIPATH_IBCC_LINKINITCMD_SLEEP 3 /* wait for TS1, then go on */ 161#define INFINIPATH_IBCC_LINKINITCMD_POLL 2
162/* wait for TS1, then go on */
163#define INFINIPATH_IBCC_LINKINITCMD_SLEEP 3
161#define INFINIPATH_IBCC_LINKINITCMD_SHIFT 16 164#define INFINIPATH_IBCC_LINKINITCMD_SHIFT 16
162#define INFINIPATH_IBCC_LINKCMD_MASK 0x3ULL 165#define INFINIPATH_IBCC_LINKCMD_MASK 0x3ULL
163#define INFINIPATH_IBCC_LINKCMD_INIT 1 /* move to 0x11 */ 166#define INFINIPATH_IBCC_LINKCMD_INIT 1 /* move to 0x11 */
@@ -182,7 +185,8 @@
182#define INFINIPATH_IBCS_LINKSTATE_SHIFT 4 185#define INFINIPATH_IBCS_LINKSTATE_SHIFT 4
183#define INFINIPATH_IBCS_TXREADY 0x40000000 186#define INFINIPATH_IBCS_TXREADY 0x40000000
184#define INFINIPATH_IBCS_TXCREDITOK 0x80000000 187#define INFINIPATH_IBCS_TXCREDITOK 0x80000000
185/* link training states (shift by INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT) */ 188/* link training states (shift by
189 INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT) */
186#define INFINIPATH_IBCS_LT_STATE_DISABLED 0x00 190#define INFINIPATH_IBCS_LT_STATE_DISABLED 0x00
187#define INFINIPATH_IBCS_LT_STATE_LINKUP 0x01 191#define INFINIPATH_IBCS_LT_STATE_LINKUP 0x01
188#define INFINIPATH_IBCS_LT_STATE_POLLACTIVE 0x02 192#define INFINIPATH_IBCS_LT_STATE_POLLACTIVE 0x02
@@ -267,10 +271,12 @@
267/* kr_serdesconfig0 bits */ 271/* kr_serdesconfig0 bits */
268#define INFINIPATH_SERDC0_RESET_MASK 0xfULL /* overal reset bits */ 272#define INFINIPATH_SERDC0_RESET_MASK 0xfULL /* overal reset bits */
269#define INFINIPATH_SERDC0_RESET_PLL 0x10000000ULL /* pll reset */ 273#define INFINIPATH_SERDC0_RESET_PLL 0x10000000ULL /* pll reset */
270#define INFINIPATH_SERDC0_TXIDLE 0xF000ULL /* tx idle enables (per lane) */ 274/* tx idle enables (per lane) */
271#define INFINIPATH_SERDC0_RXDETECT_EN 0xF0000ULL /* rx detect enables (per lane) */ 275#define INFINIPATH_SERDC0_TXIDLE 0xF000ULL
272#define INFINIPATH_SERDC0_L1PWR_DN 0xF0ULL /* L1 Power down; use with RXDETECT, 276/* rx detect enables (per lane) */
273 Otherwise not used on IB side */ 277#define INFINIPATH_SERDC0_RXDETECT_EN 0xF0000ULL
278/* L1 Power down; use with RXDETECT, Otherwise not used on IB side */
279#define INFINIPATH_SERDC0_L1PWR_DN 0xF0ULL
274 280
275/* kr_xgxsconfig bits */ 281/* kr_xgxsconfig bits */
276#define INFINIPATH_XGXS_RESET 0x7ULL 282#define INFINIPATH_XGXS_RESET 0x7ULL
@@ -390,12 +396,13 @@ struct ipath_kregs {
390 ipath_kreg kr_txintmemsize; 396 ipath_kreg kr_txintmemsize;
391 ipath_kreg kr_xgxsconfig; 397 ipath_kreg kr_xgxsconfig;
392 ipath_kreg kr_ibpllcfg; 398 ipath_kreg kr_ibpllcfg;
393 /* use these two (and the following N ports) only with ipath_k*_kreg64_port(); 399 /* use these two (and the following N ports) only with
394 * not *kreg64() */ 400 * ipath_k*_kreg64_port(); not *kreg64() */
395 ipath_kreg kr_rcvhdraddr; 401 ipath_kreg kr_rcvhdraddr;
396 ipath_kreg kr_rcvhdrtailaddr; 402 ipath_kreg kr_rcvhdrtailaddr;
397 403
398 /* remaining registers are not present on all types of infinipath chips */ 404 /* remaining registers are not present on all types of infinipath
405 chips */
399 ipath_kreg kr_rcvpktledcnt; 406 ipath_kreg kr_rcvpktledcnt;
400 ipath_kreg kr_pcierbuftestreg0; 407 ipath_kreg kr_pcierbuftestreg0;
401 ipath_kreg kr_pcierbuftestreg1; 408 ipath_kreg kr_pcierbuftestreg1;
diff --git a/drivers/infiniband/hw/ipath/ipath_ruc.c b/drivers/infiniband/hw/ipath/ipath_ruc.c
index f232e77b78ee..eb81424b3c5b 100644
--- a/drivers/infiniband/hw/ipath/ipath_ruc.c
+++ b/drivers/infiniband/hw/ipath/ipath_ruc.c
@@ -531,19 +531,12 @@ int ipath_post_rc_send(struct ipath_qp *qp, struct ib_send_wr *wr)
531 } 531 }
532 wqe->wr.num_sge = j; 532 wqe->wr.num_sge = j;
533 qp->s_head = next; 533 qp->s_head = next;
534 /*
535 * Wake up the send tasklet if the QP is not waiting
536 * for an RNR timeout.
537 */
538 next = qp->s_rnr_timeout;
539 spin_unlock_irqrestore(&qp->s_lock, flags); 534 spin_unlock_irqrestore(&qp->s_lock, flags);
540 535
541 if (next == 0) { 536 if (qp->ibqp.qp_type == IB_QPT_UC)
542 if (qp->ibqp.qp_type == IB_QPT_UC) 537 ipath_do_uc_send((unsigned long) qp);
543 ipath_do_uc_send((unsigned long) qp); 538 else
544 else 539 ipath_do_rc_send((unsigned long) qp);
545 ipath_do_rc_send((unsigned long) qp);
546 }
547 540
548 ret = 0; 541 ret = 0;
549 542
diff --git a/drivers/infiniband/hw/ipath/ipath_sysfs.c b/drivers/infiniband/hw/ipath/ipath_sysfs.c
index 32acd8048b49..f323791cc495 100644
--- a/drivers/infiniband/hw/ipath/ipath_sysfs.c
+++ b/drivers/infiniband/hw/ipath/ipath_sysfs.c
@@ -711,10 +711,22 @@ static struct attribute_group dev_attr_group = {
711 * enters diag mode. A device reset is quite likely to crash the 711 * enters diag mode. A device reset is quite likely to crash the
712 * machine entirely, so we don't want to normally make it 712 * machine entirely, so we don't want to normally make it
713 * available. 713 * available.
714 *
715 * Called with ipath_mutex held.
714 */ 716 */
715int ipath_expose_reset(struct device *dev) 717int ipath_expose_reset(struct device *dev)
716{ 718{
717 return device_create_file(dev, &dev_attr_reset); 719 static int exposed;
720 int ret;
721
722 if (!exposed) {
723 ret = device_create_file(dev, &dev_attr_reset);
724 exposed = 1;
725 }
726 else
727 ret = 0;
728
729 return ret;
718} 730}
719 731
720int ipath_driver_create_group(struct device_driver *drv) 732int ipath_driver_create_group(struct device_driver *drv)
diff --git a/drivers/infiniband/hw/ipath/ipath_ud.c b/drivers/infiniband/hw/ipath/ipath_ud.c
index 01cfb30ee160..e606daf83210 100644
--- a/drivers/infiniband/hw/ipath/ipath_ud.c
+++ b/drivers/infiniband/hw/ipath/ipath_ud.c
@@ -46,8 +46,10 @@
46 * This is called from ipath_post_ud_send() to forward a WQE addressed 46 * This is called from ipath_post_ud_send() to forward a WQE addressed
47 * to the same HCA. 47 * to the same HCA.
48 */ 48 */
49static void ipath_ud_loopback(struct ipath_qp *sqp, struct ipath_sge_state *ss, 49static void ipath_ud_loopback(struct ipath_qp *sqp,
50 u32 length, struct ib_send_wr *wr, struct ib_wc *wc) 50 struct ipath_sge_state *ss,
51 u32 length, struct ib_send_wr *wr,
52 struct ib_wc *wc)
51{ 53{
52 struct ipath_ibdev *dev = to_idev(sqp->ibqp.device); 54 struct ipath_ibdev *dev = to_idev(sqp->ibqp.device);
53 struct ipath_qp *qp; 55 struct ipath_qp *qp;
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.c b/drivers/infiniband/hw/ipath/ipath_verbs.c
index 8d2558a01f35..cb9e387c301f 100644
--- a/drivers/infiniband/hw/ipath/ipath_verbs.c
+++ b/drivers/infiniband/hw/ipath/ipath_verbs.c
@@ -449,7 +449,6 @@ static void ipath_ib_timer(void *arg)
449{ 449{
450 struct ipath_ibdev *dev = (struct ipath_ibdev *) arg; 450 struct ipath_ibdev *dev = (struct ipath_ibdev *) arg;
451 struct ipath_qp *resend = NULL; 451 struct ipath_qp *resend = NULL;
452 struct ipath_qp *rnr = NULL;
453 struct list_head *last; 452 struct list_head *last;
454 struct ipath_qp *qp; 453 struct ipath_qp *qp;
455 unsigned long flags; 454 unsigned long flags;
@@ -465,32 +464,18 @@ static void ipath_ib_timer(void *arg)
465 last = &dev->pending[dev->pending_index]; 464 last = &dev->pending[dev->pending_index];
466 while (!list_empty(last)) { 465 while (!list_empty(last)) {
467 qp = list_entry(last->next, struct ipath_qp, timerwait); 466 qp = list_entry(last->next, struct ipath_qp, timerwait);
468 if (last->next == LIST_POISON1 || 467 list_del(&qp->timerwait);
469 last->next != &qp->timerwait || 468 qp->timer_next = resend;
470 qp->timerwait.prev != last) { 469 resend = qp;
471 INIT_LIST_HEAD(last); 470 atomic_inc(&qp->refcount);
472 } else {
473 list_del(&qp->timerwait);
474 qp->timerwait.prev = (struct list_head *) resend;
475 resend = qp;
476 atomic_inc(&qp->refcount);
477 }
478 } 471 }
479 last = &dev->rnrwait; 472 last = &dev->rnrwait;
480 if (!list_empty(last)) { 473 if (!list_empty(last)) {
481 qp = list_entry(last->next, struct ipath_qp, timerwait); 474 qp = list_entry(last->next, struct ipath_qp, timerwait);
482 if (--qp->s_rnr_timeout == 0) { 475 if (--qp->s_rnr_timeout == 0) {
483 do { 476 do {
484 if (last->next == LIST_POISON1 ||
485 last->next != &qp->timerwait ||
486 qp->timerwait.prev != last) {
487 INIT_LIST_HEAD(last);
488 break;
489 }
490 list_del(&qp->timerwait); 477 list_del(&qp->timerwait);
491 qp->timerwait.prev = 478 tasklet_hi_schedule(&qp->s_task);
492 (struct list_head *) rnr;
493 rnr = qp;
494 if (list_empty(last)) 479 if (list_empty(last))
495 break; 480 break;
496 qp = list_entry(last->next, struct ipath_qp, 481 qp = list_entry(last->next, struct ipath_qp,
@@ -530,8 +515,7 @@ static void ipath_ib_timer(void *arg)
530 spin_unlock_irqrestore(&dev->pending_lock, flags); 515 spin_unlock_irqrestore(&dev->pending_lock, flags);
531 516
532 /* XXX What if timer fires again while this is running? */ 517 /* XXX What if timer fires again while this is running? */
533 for (qp = resend; qp != NULL; 518 for (qp = resend; qp != NULL; qp = qp->timer_next) {
534 qp = (struct ipath_qp *) qp->timerwait.prev) {
535 struct ib_wc wc; 519 struct ib_wc wc;
536 520
537 spin_lock_irqsave(&qp->s_lock, flags); 521 spin_lock_irqsave(&qp->s_lock, flags);
@@ -545,9 +529,6 @@ static void ipath_ib_timer(void *arg)
545 if (atomic_dec_and_test(&qp->refcount)) 529 if (atomic_dec_and_test(&qp->refcount))
546 wake_up(&qp->wait); 530 wake_up(&qp->wait);
547 } 531 }
548 for (qp = rnr; qp != NULL;
549 qp = (struct ipath_qp *) qp->timerwait.prev)
550 tasklet_hi_schedule(&qp->s_task);
551} 532}
552 533
553/** 534/**
@@ -556,9 +537,9 @@ static void ipath_ib_timer(void *arg)
556 * 537 *
557 * This is called from ipath_intr() at interrupt level when a PIO buffer is 538 * This is called from ipath_intr() at interrupt level when a PIO buffer is
558 * available after ipath_verbs_send() returned an error that no buffers were 539 * available after ipath_verbs_send() returned an error that no buffers were
559 * available. Return 0 if we consumed all the PIO buffers and we still have 540 * available. Return 1 if we consumed all the PIO buffers and we still have
560 * QPs waiting for buffers (for now, just do a tasklet_hi_schedule and 541 * QPs waiting for buffers (for now, just do a tasklet_hi_schedule and
561 * return one). 542 * return zero).
562 */ 543 */
563static int ipath_ib_piobufavail(void *arg) 544static int ipath_ib_piobufavail(void *arg)
564{ 545{
@@ -579,7 +560,7 @@ static int ipath_ib_piobufavail(void *arg)
579 spin_unlock_irqrestore(&dev->pending_lock, flags); 560 spin_unlock_irqrestore(&dev->pending_lock, flags);
580 561
581bail: 562bail:
582 return 1; 563 return 0;
583} 564}
584 565
585static int ipath_query_device(struct ib_device *ibdev, 566static int ipath_query_device(struct ib_device *ibdev,
@@ -1159,7 +1140,7 @@ static ssize_t show_stats(struct class_device *cdev, char *buf)
1159 1140
1160 len = sprintf(buf, 1141 len = sprintf(buf,
1161 "RC resends %d\n" 1142 "RC resends %d\n"
1162 "RC QACKs %d\n" 1143 "RC no QACK %d\n"
1163 "RC ACKs %d\n" 1144 "RC ACKs %d\n"
1164 "RC SEQ NAKs %d\n" 1145 "RC SEQ NAKs %d\n"
1165 "RC RDMA seq %d\n" 1146 "RC RDMA seq %d\n"
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.h b/drivers/infiniband/hw/ipath/ipath_verbs.h
index fcafbc7c9e71..4f8d59300e9b 100644
--- a/drivers/infiniband/hw/ipath/ipath_verbs.h
+++ b/drivers/infiniband/hw/ipath/ipath_verbs.h
@@ -282,7 +282,8 @@ struct ipath_srq {
282 */ 282 */
283struct ipath_qp { 283struct ipath_qp {
284 struct ib_qp ibqp; 284 struct ib_qp ibqp;
285 struct ipath_qp *next; /* link list for QPN hash table */ 285 struct ipath_qp *next; /* link list for QPN hash table */
286 struct ipath_qp *timer_next; /* link list for ipath_ib_timer() */
286 struct list_head piowait; /* link for wait PIO buf */ 287 struct list_head piowait; /* link for wait PIO buf */
287 struct list_head timerwait; /* link for waiting for timeouts */ 288 struct list_head timerwait; /* link for waiting for timeouts */
288 struct ib_ah_attr remote_ah_attr; 289 struct ib_ah_attr remote_ah_attr;
diff --git a/drivers/infiniband/hw/ipath/ips_common.h b/drivers/infiniband/hw/ipath/ips_common.h
index 410a764dfcef..ab7cbbbfd03a 100644
--- a/drivers/infiniband/hw/ipath/ips_common.h
+++ b/drivers/infiniband/hw/ipath/ips_common.h
@@ -95,7 +95,7 @@ struct ether_header {
95 __u8 seq_num; 95 __u8 seq_num;
96 __le32 len; 96 __le32 len;
97 /* MUST be of word size due to PIO write requirements */ 97 /* MUST be of word size due to PIO write requirements */
98 __u32 csum; 98 __le32 csum;
99 __le16 csum_offset; 99 __le16 csum_offset;
100 __le16 flags; 100 __le16 flags;
101 __u16 first_2_bytes; 101 __u16 first_2_bytes;
diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c
index 565a24b1756f..a2eae8a30167 100644
--- a/drivers/infiniband/hw/mthca/mthca_provider.c
+++ b/drivers/infiniband/hw/mthca/mthca_provider.c
@@ -306,7 +306,7 @@ static int mthca_query_gid(struct ib_device *ibdev, u8 port,
306 goto out; 306 goto out;
307 } 307 }
308 308
309 memcpy(gid->raw + 8, out_mad->data + (index % 8) * 16, 8); 309 memcpy(gid->raw + 8, out_mad->data + (index % 8) * 8, 8);
310 310
311 out: 311 out:
312 kfree(in_mad); 312 kfree(in_mad);
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
index a34e3d91d9ed..ba325f16d077 100644
--- a/drivers/input/evdev.c
+++ b/drivers/input/evdev.c
@@ -403,6 +403,27 @@ static long evdev_ioctl_handler(struct file *file, unsigned int cmd,
403 case EVIOCGID: 403 case EVIOCGID:
404 if (copy_to_user(p, &dev->id, sizeof(struct input_id))) 404 if (copy_to_user(p, &dev->id, sizeof(struct input_id)))
405 return -EFAULT; 405 return -EFAULT;
406 return 0;
407
408 case EVIOCGREP:
409 if (!test_bit(EV_REP, dev->evbit))
410 return -ENOSYS;
411 if (put_user(dev->rep[REP_DELAY], ip))
412 return -EFAULT;
413 if (put_user(dev->rep[REP_PERIOD], ip + 1))
414 return -EFAULT;
415 return 0;
416
417 case EVIOCSREP:
418 if (!test_bit(EV_REP, dev->evbit))
419 return -ENOSYS;
420 if (get_user(u, ip))
421 return -EFAULT;
422 if (get_user(v, ip + 1))
423 return -EFAULT;
424
425 input_event(dev, EV_REP, REP_DELAY, u);
426 input_event(dev, EV_REP, REP_PERIOD, v);
406 427
407 return 0; 428 return 0;
408 429
diff --git a/drivers/input/input.c b/drivers/input/input.c
index a935abeffffc..3038c268917d 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -155,6 +155,9 @@ void input_event(struct input_dev *dev, unsigned int type, unsigned int code, in
155 if (code > SND_MAX || !test_bit(code, dev->sndbit)) 155 if (code > SND_MAX || !test_bit(code, dev->sndbit))
156 return; 156 return;
157 157
158 if (!!test_bit(code, dev->snd) != !!value)
159 change_bit(code, dev->snd);
160
158 if (dev->event) dev->event(dev, type, code, value); 161 if (dev->event) dev->event(dev, type, code, value);
159 162
160 break; 163 break;
@@ -286,19 +289,19 @@ static struct input_device_id *input_match_device(struct input_device_id *id, st
286 for (; id->flags || id->driver_info; id++) { 289 for (; id->flags || id->driver_info; id++) {
287 290
288 if (id->flags & INPUT_DEVICE_ID_MATCH_BUS) 291 if (id->flags & INPUT_DEVICE_ID_MATCH_BUS)
289 if (id->id.bustype != dev->id.bustype) 292 if (id->bustype != dev->id.bustype)
290 continue; 293 continue;
291 294
292 if (id->flags & INPUT_DEVICE_ID_MATCH_VENDOR) 295 if (id->flags & INPUT_DEVICE_ID_MATCH_VENDOR)
293 if (id->id.vendor != dev->id.vendor) 296 if (id->vendor != dev->id.vendor)
294 continue; 297 continue;
295 298
296 if (id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT) 299 if (id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT)
297 if (id->id.product != dev->id.product) 300 if (id->product != dev->id.product)
298 continue; 301 continue;
299 302
300 if (id->flags & INPUT_DEVICE_ID_MATCH_VERSION) 303 if (id->flags & INPUT_DEVICE_ID_MATCH_VERSION)
301 if (id->id.version != dev->id.version) 304 if (id->version != dev->id.version)
302 continue; 305 continue;
303 306
304 MATCH_BIT(evbit, EV_MAX); 307 MATCH_BIT(evbit, EV_MAX);
diff --git a/drivers/input/keyboard/spitzkbd.c b/drivers/input/keyboard/spitzkbd.c
index bc61cf8cfc65..1d238a9d52d6 100644
--- a/drivers/input/keyboard/spitzkbd.c
+++ b/drivers/input/keyboard/spitzkbd.c
@@ -53,8 +53,8 @@ static unsigned char spitzkbd_keycode[NR_SCANCODES] = {
53 KEY_LEFTCTRL, KEY_1, KEY_3, KEY_5, KEY_6, KEY_7, KEY_9, KEY_0, KEY_BACKSPACE, SPITZ_KEY_EXOK, SPITZ_KEY_EXCANCEL, 0, 0, 0, 0, 0, /* 1-16 */ 53 KEY_LEFTCTRL, KEY_1, KEY_3, KEY_5, KEY_6, KEY_7, KEY_9, KEY_0, KEY_BACKSPACE, SPITZ_KEY_EXOK, SPITZ_KEY_EXCANCEL, 0, 0, 0, 0, 0, /* 1-16 */
54 0, KEY_2, KEY_4, KEY_R, KEY_Y, KEY_8, KEY_I, KEY_O, KEY_P, SPITZ_KEY_EXJOGDOWN, SPITZ_KEY_EXJOGUP, 0, 0, 0, 0, 0, /* 17-32 */ 54 0, KEY_2, KEY_4, KEY_R, KEY_Y, KEY_8, KEY_I, KEY_O, KEY_P, SPITZ_KEY_EXJOGDOWN, SPITZ_KEY_EXJOGUP, 0, 0, 0, 0, 0, /* 17-32 */
55 KEY_TAB, KEY_Q, KEY_E, KEY_T, KEY_G, KEY_U, KEY_J, KEY_K, 0, 0, 0, 0, 0, 0, 0, 0, /* 33-48 */ 55 KEY_TAB, KEY_Q, KEY_E, KEY_T, KEY_G, KEY_U, KEY_J, KEY_K, 0, 0, 0, 0, 0, 0, 0, 0, /* 33-48 */
56 SPITZ_KEY_CALENDER, KEY_W, KEY_S, KEY_F, KEY_V, KEY_H, KEY_M, KEY_L, 0, KEY_RIGHTSHIFT, 0, 0, 0, 0, 0, 0, /* 49-64 */ 56 SPITZ_KEY_ADDRESS, KEY_W, KEY_S, KEY_F, KEY_V, KEY_H, KEY_M, KEY_L, 0, KEY_RIGHTSHIFT, 0, 0, 0, 0, 0, 0, /* 49-64 */
57 SPITZ_KEY_ADDRESS, KEY_A, KEY_D, KEY_C, KEY_B, KEY_N, KEY_DOT, 0, KEY_ENTER, KEY_LEFTSHIFT, 0, 0, 0, 0, 0, 0, /* 65-80 */ 57 SPITZ_KEY_CALENDER, KEY_A, KEY_D, KEY_C, KEY_B, KEY_N, KEY_DOT, 0, KEY_ENTER, KEY_LEFTSHIFT, 0, 0, 0, 0, 0, 0, /* 65-80 */
58 SPITZ_KEY_MAIL, KEY_Z, KEY_X, KEY_MINUS, KEY_SPACE, KEY_COMMA, 0, KEY_UP, 0, 0, SPITZ_KEY_FN, 0, 0, 0, 0, 0, /* 81-96 */ 58 SPITZ_KEY_MAIL, KEY_Z, KEY_X, KEY_MINUS, KEY_SPACE, KEY_COMMA, 0, KEY_UP, 0, 0, SPITZ_KEY_FN, 0, 0, 0, 0, 0, /* 81-96 */
59 KEY_SYSRQ, SPITZ_KEY_JAP1, SPITZ_KEY_JAP2, SPITZ_KEY_CANCEL, SPITZ_KEY_OK, SPITZ_KEY_MENU, KEY_LEFT, KEY_DOWN, KEY_RIGHT, 0, 0, 0, 0, 0, 0, 0 /* 97-112 */ 59 KEY_SYSRQ, SPITZ_KEY_JAP1, SPITZ_KEY_JAP2, SPITZ_KEY_CANCEL, SPITZ_KEY_OK, SPITZ_KEY_MENU, KEY_LEFT, KEY_DOWN, KEY_RIGHT, 0, 0, 0, 0, 0, 0, 0 /* 97-112 */
60}; 60};
diff --git a/drivers/input/misc/wistron_btns.c b/drivers/input/misc/wistron_btns.c
index 4b415d9b0123..36cd2e07fce8 100644
--- a/drivers/input/misc/wistron_btns.c
+++ b/drivers/input/misc/wistron_btns.c
@@ -273,6 +273,18 @@ static struct key_entry keymap_fs_amilo_pro_v2000[] = {
273 { KE_END, 0 } 273 { KE_END, 0 }
274}; 274};
275 275
276static struct key_entry keymap_fujitsu_n3510[] = {
277 { KE_KEY, 0x11, KEY_PROG1 },
278 { KE_KEY, 0x12, KEY_PROG2 },
279 { KE_KEY, 0x36, KEY_WWW },
280 { KE_KEY, 0x31, KEY_MAIL },
281 { KE_KEY, 0x71, KEY_STOPCD },
282 { KE_KEY, 0x72, KEY_PLAYPAUSE },
283 { KE_KEY, 0x74, KEY_REWIND },
284 { KE_KEY, 0x78, KEY_FORWARD },
285 { KE_END, 0 }
286};
287
276static struct key_entry keymap_wistron_ms2141[] = { 288static struct key_entry keymap_wistron_ms2141[] = {
277 { KE_KEY, 0x11, KEY_PROG1 }, 289 { KE_KEY, 0x11, KEY_PROG1 },
278 { KE_KEY, 0x12, KEY_PROG2 }, 290 { KE_KEY, 0x12, KEY_PROG2 },
@@ -323,6 +335,24 @@ static struct dmi_system_id dmi_ids[] = {
323 }, 335 },
324 { 336 {
325 .callback = dmi_matched, 337 .callback = dmi_matched,
338 .ident = "Fujitsu-Siemens Amilo M7400",
339 .matches = {
340 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
341 DMI_MATCH(DMI_PRODUCT_NAME, "AMILO M "),
342 },
343 .driver_data = keymap_fs_amilo_pro_v2000
344 },
345 {
346 .callback = dmi_matched,
347 .ident = "Fujitsu N3510",
348 .matches = {
349 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
350 DMI_MATCH(DMI_PRODUCT_NAME, "N3510"),
351 },
352 .driver_data = keymap_fujitsu_n3510
353 },
354 {
355 .callback = dmi_matched,
326 .ident = "Acer Aspire 1500", 356 .ident = "Acer Aspire 1500",
327 .matches = { 357 .matches = {
328 DMI_MATCH(DMI_SYS_VENDOR, "Acer"), 358 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
index 32d70ed8f41d..136321a2cfdb 100644
--- a/drivers/input/mouse/psmouse-base.c
+++ b/drivers/input/mouse/psmouse-base.c
@@ -302,8 +302,10 @@ static irqreturn_t psmouse_interrupt(struct serio *serio,
302 * Check if this is a new device announcement (0xAA 0x00) 302 * Check if this is a new device announcement (0xAA 0x00)
303 */ 303 */
304 if (unlikely(psmouse->packet[0] == PSMOUSE_RET_BAT && psmouse->pktcnt <= 2)) { 304 if (unlikely(psmouse->packet[0] == PSMOUSE_RET_BAT && psmouse->pktcnt <= 2)) {
305 if (psmouse->pktcnt == 1) 305 if (psmouse->pktcnt == 1) {
306 psmouse->last = jiffies;
306 goto out; 307 goto out;
308 }
307 309
308 if (psmouse->packet[1] == PSMOUSE_RET_ID) { 310 if (psmouse->packet[1] == PSMOUSE_RET_ID) {
309 __psmouse_set_state(psmouse, PSMOUSE_IGNORE); 311 __psmouse_set_state(psmouse, PSMOUSE_IGNORE);
diff --git a/drivers/input/serio/i8042-io.h b/drivers/input/serio/i8042-io.h
index 9a9221644250..cc21914fbc72 100644
--- a/drivers/input/serio/i8042-io.h
+++ b/drivers/input/serio/i8042-io.h
@@ -67,14 +67,14 @@ static inline int i8042_platform_init(void)
67 * On some platforms touching the i8042 data register region can do really 67 * On some platforms touching the i8042 data register region can do really
68 * bad things. Because of this the region is always reserved on such boxes. 68 * bad things. Because of this the region is always reserved on such boxes.
69 */ 69 */
70#if !defined(__sh__) && !defined(__alpha__) && !defined(__mips__) && !defined(CONFIG_PPC64) 70#if !defined(__sh__) && !defined(__alpha__) && !defined(__mips__) && !defined(CONFIG_PPC_MERGE)
71 if (!request_region(I8042_DATA_REG, 16, "i8042")) 71 if (!request_region(I8042_DATA_REG, 16, "i8042"))
72 return -EBUSY; 72 return -EBUSY;
73#endif 73#endif
74 74
75 i8042_reset = 1; 75 i8042_reset = 1;
76 76
77#if defined(CONFIG_PPC64) 77#if defined(CONFIG_PPC_MERGE)
78 if (check_legacy_ioport(I8042_DATA_REG)) 78 if (check_legacy_ioport(I8042_DATA_REG))
79 return -EBUSY; 79 return -EBUSY;
80 if (!request_region(I8042_DATA_REG, 16, "i8042")) 80 if (!request_region(I8042_DATA_REG, 16, "i8042"))
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index 46d1fec2cfd8..1494175ac6fe 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -2,6 +2,8 @@
2 * ADS7846 based touchscreen and sensor driver 2 * ADS7846 based touchscreen and sensor driver
3 * 3 *
4 * Copyright (c) 2005 David Brownell 4 * Copyright (c) 2005 David Brownell
5 * Copyright (c) 2006 Nokia Corporation
6 * Various changes: Imre Deak <imre.deak@nokia.com>
5 * 7 *
6 * Using code from: 8 * Using code from:
7 * - corgi_ts.c 9 * - corgi_ts.c
@@ -34,17 +36,25 @@
34 36
35 37
36/* 38/*
37 * This code has been lightly tested on an ads7846. 39 * This code has been tested on an ads7846 / N770 device.
38 * Support for ads7843 and ads7845 has only been stubbed in. 40 * Support for ads7843 and ads7845 has only been stubbed in.
39 * 41 *
40 * Not yet done: investigate the values reported. Are x/y/pressure 42 * Not yet done: How accurate are the temperature and voltage
41 * event values sane enough for X11? How accurate are the temperature 43 * readings? (System-specific calibration should support
42 * and voltage readings? (System-specific calibration should support
43 * accuracy of 0.3 degrees C; otherwise it's 2.0 degrees.) 44 * accuracy of 0.3 degrees C; otherwise it's 2.0 degrees.)
44 * 45 *
46 * IRQ handling needs a workaround because of a shortcoming in handling
47 * edge triggered IRQs on some platforms like the OMAP1/2. These
48 * platforms don't handle the ARM lazy IRQ disabling properly, thus we
49 * have to maintain our own SW IRQ disabled status. This should be
50 * removed as soon as the affected platform's IRQ handling is fixed.
51 *
45 * app note sbaa036 talks in more detail about accurate sampling... 52 * app note sbaa036 talks in more detail about accurate sampling...
46 * that ought to help in situations like LCDs inducing noise (which 53 * that ought to help in situations like LCDs inducing noise (which
47 * can also be helped by using synch signals) and more generally. 54 * can also be helped by using synch signals) and more generally.
55 * This driver tries to utilize the measures described in the app
56 * note. The strength of filtering can be set in the board-* specific
57 * files.
48 */ 58 */
49 59
50#define TS_POLL_PERIOD msecs_to_jiffies(10) 60#define TS_POLL_PERIOD msecs_to_jiffies(10)
@@ -61,6 +71,7 @@ struct ts_event {
61 __be16 x; 71 __be16 x;
62 __be16 y; 72 __be16 y;
63 __be16 z1, z2; 73 __be16 z1, z2;
74 int ignore;
64}; 75};
65 76
66struct ads7846 { 77struct ads7846 {
@@ -71,12 +82,23 @@ struct ads7846 {
71 u16 model; 82 u16 model;
72 u16 vref_delay_usecs; 83 u16 vref_delay_usecs;
73 u16 x_plate_ohms; 84 u16 x_plate_ohms;
85 u16 pressure_max;
74 86
75 u8 read_x, read_y, read_z1, read_z2; 87 u8 read_x, read_y, read_z1, read_z2, pwrdown;
88 u16 dummy; /* for the pwrdown read */
76 struct ts_event tc; 89 struct ts_event tc;
77 90
78 struct spi_transfer xfer[8]; 91 struct spi_transfer xfer[10];
79 struct spi_message msg; 92 struct spi_message msg[5];
93 struct spi_message *last_msg;
94 int msg_idx;
95 int read_cnt;
96 int read_rep;
97 int last_read;
98
99 u16 debounce_max;
100 u16 debounce_tol;
101 u16 debounce_rep;
80 102
81 spinlock_t lock; 103 spinlock_t lock;
82 struct timer_list timer; /* P: lock */ 104 struct timer_list timer; /* P: lock */
@@ -84,6 +106,9 @@ struct ads7846 {
84 unsigned pending:1; /* P: lock */ 106 unsigned pending:1; /* P: lock */
85// FIXME remove "irq_disabled" 107// FIXME remove "irq_disabled"
86 unsigned irq_disabled:1; /* P: lock */ 108 unsigned irq_disabled:1; /* P: lock */
109 unsigned disabled:1;
110
111 int (*get_pendown_state)(void);
87}; 112};
88 113
89/* leave chip selected when we're done, for quicker re-select? */ 114/* leave chip selected when we're done, for quicker re-select? */
@@ -125,7 +150,9 @@ struct ads7846 {
125#define READ_Y (READ_12BIT_DFR(y) | ADS_PD10_ADC_ON) 150#define READ_Y (READ_12BIT_DFR(y) | ADS_PD10_ADC_ON)
126#define READ_Z1 (READ_12BIT_DFR(z1) | ADS_PD10_ADC_ON) 151#define READ_Z1 (READ_12BIT_DFR(z1) | ADS_PD10_ADC_ON)
127#define READ_Z2 (READ_12BIT_DFR(z2) | ADS_PD10_ADC_ON) 152#define READ_Z2 (READ_12BIT_DFR(z2) | ADS_PD10_ADC_ON)
128#define READ_X (READ_12BIT_DFR(x) | ADS_PD10_PDOWN) /* LAST */ 153
154#define READ_X (READ_12BIT_DFR(x) | ADS_PD10_ADC_ON)
155#define PWRDOWN (READ_12BIT_DFR(y) | ADS_PD10_PDOWN) /* LAST */
129 156
130/* single-ended samples need to first power up reference voltage; 157/* single-ended samples need to first power up reference voltage;
131 * we leave both ADC and VREF powered 158 * we leave both ADC and VREF powered
@@ -152,6 +179,15 @@ struct ser_req {
152 struct spi_transfer xfer[6]; 179 struct spi_transfer xfer[6];
153}; 180};
154 181
182static void ads7846_enable(struct ads7846 *ts);
183static void ads7846_disable(struct ads7846 *ts);
184
185static int device_suspended(struct device *dev)
186{
187 struct ads7846 *ts = dev_get_drvdata(dev);
188 return dev->power.power_state.event != PM_EVENT_ON || ts->disabled;
189}
190
155static int ads7846_read12_ser(struct device *dev, unsigned command) 191static int ads7846_read12_ser(struct device *dev, unsigned command)
156{ 192{
157 struct spi_device *spi = to_spi_device(dev); 193 struct spi_device *spi = to_spi_device(dev);
@@ -164,7 +200,7 @@ static int ads7846_read12_ser(struct device *dev, unsigned command)
164 if (!req) 200 if (!req)
165 return -ENOMEM; 201 return -ENOMEM;
166 202
167 INIT_LIST_HEAD(&req->msg.transfers); 203 spi_message_init(&req->msg);
168 204
169 /* activate reference, so it has time to settle; */ 205 /* activate reference, so it has time to settle; */
170 req->ref_on = REF_ON; 206 req->ref_on = REF_ON;
@@ -204,8 +240,10 @@ static int ads7846_read12_ser(struct device *dev, unsigned command)
204 for (i = 0; i < 6; i++) 240 for (i = 0; i < 6; i++)
205 spi_message_add_tail(&req->xfer[i], &req->msg); 241 spi_message_add_tail(&req->xfer[i], &req->msg);
206 242
243 ts->irq_disabled = 1;
207 disable_irq(spi->irq); 244 disable_irq(spi->irq);
208 status = spi_sync(spi, &req->msg); 245 status = spi_sync(spi, &req->msg);
246 ts->irq_disabled = 0;
209 enable_irq(spi->irq); 247 enable_irq(spi->irq);
210 248
211 if (req->msg.status) 249 if (req->msg.status)
@@ -233,6 +271,52 @@ SHOW(temp1)
233SHOW(vaux) 271SHOW(vaux)
234SHOW(vbatt) 272SHOW(vbatt)
235 273
274static int is_pen_down(struct device *dev)
275{
276 struct ads7846 *ts = dev_get_drvdata(dev);
277
278 return ts->pendown;
279}
280
281static ssize_t ads7846_pen_down_show(struct device *dev,
282 struct device_attribute *attr, char *buf)
283{
284 return sprintf(buf, "%u\n", is_pen_down(dev));
285}
286
287static DEVICE_ATTR(pen_down, S_IRUGO, ads7846_pen_down_show, NULL);
288
289static ssize_t ads7846_disable_show(struct device *dev,
290 struct device_attribute *attr, char *buf)
291{
292 struct ads7846 *ts = dev_get_drvdata(dev);
293
294 return sprintf(buf, "%u\n", ts->disabled);
295}
296
297static ssize_t ads7846_disable_store(struct device *dev,
298 struct device_attribute *attr,
299 const char *buf, size_t count)
300{
301 struct ads7846 *ts = dev_get_drvdata(dev);
302 char *endp;
303 int i;
304
305 i = simple_strtoul(buf, &endp, 10);
306 spin_lock_irq(&ts->lock);
307
308 if (i)
309 ads7846_disable(ts);
310 else
311 ads7846_enable(ts);
312
313 spin_unlock_irq(&ts->lock);
314
315 return count;
316}
317
318static DEVICE_ATTR(disable, 0664, ads7846_disable_show, ads7846_disable_store);
319
236/*--------------------------------------------------------------------------*/ 320/*--------------------------------------------------------------------------*/
237 321
238/* 322/*
@@ -264,7 +348,7 @@ static void ads7846_rx(void *ads)
264 if (x == MAX_12BIT) 348 if (x == MAX_12BIT)
265 x = 0; 349 x = 0;
266 350
267 if (x && z1 && ts->spi->dev.power.power_state.event == PM_EVENT_ON) { 351 if (likely(x && z1 && !device_suspended(&ts->spi->dev))) {
268 /* compute touch pressure resistance using equation #2 */ 352 /* compute touch pressure resistance using equation #2 */
269 Rt = z2; 353 Rt = z2;
270 Rt -= z1; 354 Rt -= z1;
@@ -275,6 +359,14 @@ static void ads7846_rx(void *ads)
275 } else 359 } else
276 Rt = 0; 360 Rt = 0;
277 361
362 /* Sample found inconsistent by debouncing or pressure is beyond
363 * the maximum. Don't report it to user space, repeat at least
364 * once more the measurement */
365 if (ts->tc.ignore || Rt > ts->pressure_max) {
366 mod_timer(&ts->timer, jiffies + TS_POLL_PERIOD);
367 return;
368 }
369
278 /* NOTE: "pendown" is inferred from pressure; we don't rely on 370 /* NOTE: "pendown" is inferred from pressure; we don't rely on
279 * being able to check nPENIRQ status, or "friendly" trigger modes 371 * being able to check nPENIRQ status, or "friendly" trigger modes
280 * (both-edges is much better than just-falling or low-level). 372 * (both-edges is much better than just-falling or low-level).
@@ -296,11 +388,13 @@ static void ads7846_rx(void *ads)
296 if (Rt) { 388 if (Rt) {
297 input_report_abs(input_dev, ABS_X, x); 389 input_report_abs(input_dev, ABS_X, x);
298 input_report_abs(input_dev, ABS_Y, y); 390 input_report_abs(input_dev, ABS_Y, y);
299 input_report_abs(input_dev, ABS_PRESSURE, Rt);
300 sync = 1; 391 sync = 1;
301 } 392 }
302 if (sync) 393
394 if (sync) {
395 input_report_abs(input_dev, ABS_PRESSURE, Rt);
303 input_sync(input_dev); 396 input_sync(input_dev);
397 }
304 398
305#ifdef VERBOSE 399#ifdef VERBOSE
306 if (Rt || ts->pendown) 400 if (Rt || ts->pendown)
@@ -308,80 +402,138 @@ static void ads7846_rx(void *ads)
308 x, y, Rt, Rt ? "" : " UP"); 402 x, y, Rt, Rt ? "" : " UP");
309#endif 403#endif
310 404
311 /* don't retrigger while we're suspended */
312 spin_lock_irqsave(&ts->lock, flags); 405 spin_lock_irqsave(&ts->lock, flags);
313 406
314 ts->pendown = (Rt != 0); 407 ts->pendown = (Rt != 0);
315 ts->pending = 0; 408 mod_timer(&ts->timer, jiffies + TS_POLL_PERIOD);
316 409
317 if (ts->spi->dev.power.power_state.event == PM_EVENT_ON) { 410 spin_unlock_irqrestore(&ts->lock, flags);
318 if (ts->pendown) 411}
319 mod_timer(&ts->timer, jiffies + TS_POLL_PERIOD); 412
320 else if (ts->irq_disabled) { 413static void ads7846_debounce(void *ads)
321 ts->irq_disabled = 0; 414{
322 enable_irq(ts->spi->irq); 415 struct ads7846 *ts = ads;
416 struct spi_message *m;
417 struct spi_transfer *t;
418 int val;
419 int status;
420
421 m = &ts->msg[ts->msg_idx];
422 t = list_entry(m->transfers.prev, struct spi_transfer, transfer_list);
423 val = (*(u16 *)t->rx_buf) >> 3;
424 if (!ts->read_cnt || (abs(ts->last_read - val) > ts->debounce_tol)) {
425 /* Repeat it, if this was the first read or the read
426 * wasn't consistent enough. */
427 if (ts->read_cnt < ts->debounce_max) {
428 ts->last_read = val;
429 ts->read_cnt++;
430 } else {
431 /* Maximum number of debouncing reached and still
432 * not enough number of consistent readings. Abort
433 * the whole sample, repeat it in the next sampling
434 * period.
435 */
436 ts->tc.ignore = 1;
437 ts->read_cnt = 0;
438 /* Last message will contain ads7846_rx() as the
439 * completion function.
440 */
441 m = ts->last_msg;
323 } 442 }
443 /* Start over collecting consistent readings. */
444 ts->read_rep = 0;
445 } else {
446 if (++ts->read_rep > ts->debounce_rep) {
447 /* Got a good reading for this coordinate,
448 * go for the next one. */
449 ts->tc.ignore = 0;
450 ts->msg_idx++;
451 ts->read_cnt = 0;
452 ts->read_rep = 0;
453 m++;
454 } else
455 /* Read more values that are consistent. */
456 ts->read_cnt++;
324 } 457 }
325 458 status = spi_async(ts->spi, m);
326 spin_unlock_irqrestore(&ts->lock, flags); 459 if (status)
460 dev_err(&ts->spi->dev, "spi_async --> %d\n",
461 status);
327} 462}
328 463
329static void ads7846_timer(unsigned long handle) 464static void ads7846_timer(unsigned long handle)
330{ 465{
331 struct ads7846 *ts = (void *)handle; 466 struct ads7846 *ts = (void *)handle;
332 int status = 0; 467 int status = 0;
333 unsigned long flags; 468
469 spin_lock_irq(&ts->lock);
470
471 if (unlikely(ts->msg_idx && !ts->pendown)) {
472 /* measurment cycle ended */
473 if (!device_suspended(&ts->spi->dev)) {
474 ts->irq_disabled = 0;
475 enable_irq(ts->spi->irq);
476 }
477 ts->pending = 0;
478 ts->msg_idx = 0;
479 } else {
480 /* pen is still down, continue with the measurement */
481 ts->msg_idx = 0;
482 status = spi_async(ts->spi, &ts->msg[0]);
483 if (status)
484 dev_err(&ts->spi->dev, "spi_async --> %d\n", status);
485 }
486
487 spin_unlock_irq(&ts->lock);
488}
489
490static irqreturn_t ads7846_irq(int irq, void *handle, struct pt_regs *regs)
491{
492 struct ads7846 *ts = handle;
493 unsigned long flags;
334 494
335 spin_lock_irqsave(&ts->lock, flags); 495 spin_lock_irqsave(&ts->lock, flags);
336 if (!ts->pending) { 496 if (likely(ts->get_pendown_state())) {
337 ts->pending = 1;
338 if (!ts->irq_disabled) { 497 if (!ts->irq_disabled) {
498 /* REVISIT irq logic for many ARM chips has cloned a
499 * bug wherein disabling an irq in its handler won't
500 * work;(it's disabled lazily, and too late to work.
501 * until all their irq logic is fixed, we must shadow
502 * that state here.
503 */
339 ts->irq_disabled = 1; 504 ts->irq_disabled = 1;
340 disable_irq(ts->spi->irq); 505 disable_irq(ts->spi->irq);
506 ts->pending = 1;
507 mod_timer(&ts->timer, jiffies);
341 } 508 }
342 status = spi_async(ts->spi, &ts->msg);
343 if (status)
344 dev_err(&ts->spi->dev, "spi_async --> %d\n",
345 status);
346 } 509 }
347 spin_unlock_irqrestore(&ts->lock, flags); 510 spin_unlock_irqrestore(&ts->lock, flags);
348}
349 511
350static irqreturn_t ads7846_irq(int irq, void *handle, struct pt_regs *regs)
351{
352 ads7846_timer((unsigned long) handle);
353 return IRQ_HANDLED; 512 return IRQ_HANDLED;
354} 513}
355 514
356/*--------------------------------------------------------------------------*/ 515/*--------------------------------------------------------------------------*/
357 516
358static int 517/* Must be called with ts->lock held */
359ads7846_suspend(struct spi_device *spi, pm_message_t message) 518static void ads7846_disable(struct ads7846 *ts)
360{ 519{
361 struct ads7846 *ts = dev_get_drvdata(&spi->dev); 520 if (ts->disabled)
362 unsigned long flags; 521 return;
363 522
364 spin_lock_irqsave(&ts->lock, flags); 523 ts->disabled = 1;
365
366 spi->dev.power.power_state = message;
367 524
368 /* are we waiting for IRQ, or polling? */ 525 /* are we waiting for IRQ, or polling? */
369 if (!ts->pendown) { 526 if (!ts->pending) {
370 if (!ts->irq_disabled) { 527 ts->irq_disabled = 1;
371 ts->irq_disabled = 1; 528 disable_irq(ts->spi->irq);
372 disable_irq(ts->spi->irq);
373 }
374 } else { 529 } else {
375 /* polling; force a final SPI completion; 530 /* the timer will run at least once more, and
376 * that will clean things up neatly 531 * leave everything in a clean state, IRQ disabled
377 */ 532 */
378 if (!ts->pending) 533 while (ts->pending) {
379 mod_timer(&ts->timer, jiffies); 534 spin_unlock_irq(&ts->lock);
380 535 msleep(1);
381 while (ts->pendown || ts->pending) { 536 spin_lock_irq(&ts->lock);
382 spin_unlock_irqrestore(&ts->lock, flags);
383 udelay(10);
384 spin_lock_irqsave(&ts->lock, flags);
385 } 537 }
386 } 538 }
387 539
@@ -389,17 +541,45 @@ ads7846_suspend(struct spi_device *spi, pm_message_t message)
389 * leave it that way after every request 541 * leave it that way after every request
390 */ 542 */
391 543
392 spin_unlock_irqrestore(&ts->lock, flags); 544}
545
546/* Must be called with ts->lock held */
547static void ads7846_enable(struct ads7846 *ts)
548{
549 if (!ts->disabled)
550 return;
551
552 ts->disabled = 0;
553 ts->irq_disabled = 0;
554 enable_irq(ts->spi->irq);
555}
556
557static int ads7846_suspend(struct spi_device *spi, pm_message_t message)
558{
559 struct ads7846 *ts = dev_get_drvdata(&spi->dev);
560
561 spin_lock_irq(&ts->lock);
562
563 spi->dev.power.power_state = message;
564 ads7846_disable(ts);
565
566 spin_unlock_irq(&ts->lock);
567
393 return 0; 568 return 0;
569
394} 570}
395 571
396static int ads7846_resume(struct spi_device *spi) 572static int ads7846_resume(struct spi_device *spi)
397{ 573{
398 struct ads7846 *ts = dev_get_drvdata(&spi->dev); 574 struct ads7846 *ts = dev_get_drvdata(&spi->dev);
399 575
400 ts->irq_disabled = 0; 576 spin_lock_irq(&ts->lock);
401 enable_irq(ts->spi->irq); 577
402 spi->dev.power.power_state = PMSG_ON; 578 spi->dev.power.power_state = PMSG_ON;
579 ads7846_enable(ts);
580
581 spin_unlock_irq(&ts->lock);
582
403 return 0; 583 return 0;
404} 584}
405 585
@@ -408,6 +588,7 @@ static int __devinit ads7846_probe(struct spi_device *spi)
408 struct ads7846 *ts; 588 struct ads7846 *ts;
409 struct input_dev *input_dev; 589 struct input_dev *input_dev;
410 struct ads7846_platform_data *pdata = spi->dev.platform_data; 590 struct ads7846_platform_data *pdata = spi->dev.platform_data;
591 struct spi_message *m;
411 struct spi_transfer *x; 592 struct spi_transfer *x;
412 int err; 593 int err;
413 594
@@ -428,6 +609,11 @@ static int __devinit ads7846_probe(struct spi_device *spi)
428 return -EINVAL; 609 return -EINVAL;
429 } 610 }
430 611
612 if (pdata->get_pendown_state == NULL) {
613 dev_dbg(&spi->dev, "no get_pendown_state function?\n");
614 return -EINVAL;
615 }
616
431 /* We'd set the wordsize to 12 bits ... except that some controllers 617 /* We'd set the wordsize to 12 bits ... except that some controllers
432 * will then treat the 8 bit command words as 12 bits (and drop the 618 * will then treat the 8 bit command words as 12 bits (and drop the
433 * four MSBs of the 12 bit result). Result: inputs must be shifted 619 * four MSBs of the 12 bit result). Result: inputs must be shifted
@@ -451,9 +637,21 @@ static int __devinit ads7846_probe(struct spi_device *spi)
451 ts->timer.data = (unsigned long) ts; 637 ts->timer.data = (unsigned long) ts;
452 ts->timer.function = ads7846_timer; 638 ts->timer.function = ads7846_timer;
453 639
640 spin_lock_init(&ts->lock);
641
454 ts->model = pdata->model ? : 7846; 642 ts->model = pdata->model ? : 7846;
455 ts->vref_delay_usecs = pdata->vref_delay_usecs ? : 100; 643 ts->vref_delay_usecs = pdata->vref_delay_usecs ? : 100;
456 ts->x_plate_ohms = pdata->x_plate_ohms ? : 400; 644 ts->x_plate_ohms = pdata->x_plate_ohms ? : 400;
645 ts->pressure_max = pdata->pressure_max ? : ~0;
646 if (pdata->debounce_max) {
647 ts->debounce_max = pdata->debounce_max;
648 ts->debounce_tol = pdata->debounce_tol;
649 ts->debounce_rep = pdata->debounce_rep;
650 if (ts->debounce_rep > ts->debounce_max + 1)
651 ts->debounce_rep = ts->debounce_max - 1;
652 } else
653 ts->debounce_tol = ~0;
654 ts->get_pendown_state = pdata->get_pendown_state;
457 655
458 snprintf(ts->phys, sizeof(ts->phys), "%s/input0", spi->dev.bus_id); 656 snprintf(ts->phys, sizeof(ts->phys), "%s/input0", spi->dev.bus_id);
459 657
@@ -477,60 +675,100 @@ static int __devinit ads7846_probe(struct spi_device *spi)
477 /* set up the transfers to read touchscreen state; this assumes we 675 /* set up the transfers to read touchscreen state; this assumes we
478 * use formula #2 for pressure, not #3. 676 * use formula #2 for pressure, not #3.
479 */ 677 */
480 INIT_LIST_HEAD(&ts->msg.transfers); 678 m = &ts->msg[0];
481 x = ts->xfer; 679 x = ts->xfer;
482 680
681 spi_message_init(m);
682
483 /* y- still on; turn on only y+ (and ADC) */ 683 /* y- still on; turn on only y+ (and ADC) */
484 ts->read_y = READ_Y; 684 ts->read_y = READ_Y;
485 x->tx_buf = &ts->read_y; 685 x->tx_buf = &ts->read_y;
486 x->len = 1; 686 x->len = 1;
487 spi_message_add_tail(x, &ts->msg); 687 spi_message_add_tail(x, m);
488 688
489 x++; 689 x++;
490 x->rx_buf = &ts->tc.y; 690 x->rx_buf = &ts->tc.y;
491 x->len = 2; 691 x->len = 2;
492 spi_message_add_tail(x, &ts->msg); 692 spi_message_add_tail(x, m);
693
694 m->complete = ads7846_debounce;
695 m->context = ts;
696
697 m++;
698 spi_message_init(m);
699
700 /* turn y- off, x+ on, then leave in lowpower */
701 x++;
702 ts->read_x = READ_X;
703 x->tx_buf = &ts->read_x;
704 x->len = 1;
705 spi_message_add_tail(x, m);
706
707 x++;
708 x->rx_buf = &ts->tc.x;
709 x->len = 2;
710 spi_message_add_tail(x, m);
711
712 m->complete = ads7846_debounce;
713 m->context = ts;
493 714
494 /* turn y+ off, x- on; we'll use formula #2 */ 715 /* turn y+ off, x- on; we'll use formula #2 */
495 if (ts->model == 7846) { 716 if (ts->model == 7846) {
717 m++;
718 spi_message_init(m);
719
496 x++; 720 x++;
497 ts->read_z1 = READ_Z1; 721 ts->read_z1 = READ_Z1;
498 x->tx_buf = &ts->read_z1; 722 x->tx_buf = &ts->read_z1;
499 x->len = 1; 723 x->len = 1;
500 spi_message_add_tail(x, &ts->msg); 724 spi_message_add_tail(x, m);
501 725
502 x++; 726 x++;
503 x->rx_buf = &ts->tc.z1; 727 x->rx_buf = &ts->tc.z1;
504 x->len = 2; 728 x->len = 2;
505 spi_message_add_tail(x, &ts->msg); 729 spi_message_add_tail(x, m);
730
731 m->complete = ads7846_debounce;
732 m->context = ts;
733
734 m++;
735 spi_message_init(m);
506 736
507 x++; 737 x++;
508 ts->read_z2 = READ_Z2; 738 ts->read_z2 = READ_Z2;
509 x->tx_buf = &ts->read_z2; 739 x->tx_buf = &ts->read_z2;
510 x->len = 1; 740 x->len = 1;
511 spi_message_add_tail(x, &ts->msg); 741 spi_message_add_tail(x, m);
512 742
513 x++; 743 x++;
514 x->rx_buf = &ts->tc.z2; 744 x->rx_buf = &ts->tc.z2;
515 x->len = 2; 745 x->len = 2;
516 spi_message_add_tail(x, &ts->msg); 746 spi_message_add_tail(x, m);
747
748 m->complete = ads7846_debounce;
749 m->context = ts;
517 } 750 }
518 751
519 /* turn y- off, x+ on, then leave in lowpower */ 752 /* power down */
753 m++;
754 spi_message_init(m);
755
520 x++; 756 x++;
521 ts->read_x = READ_X; 757 ts->pwrdown = PWRDOWN;
522 x->tx_buf = &ts->read_x; 758 x->tx_buf = &ts->pwrdown;
523 x->len = 1; 759 x->len = 1;
524 spi_message_add_tail(x, &ts->msg); 760 spi_message_add_tail(x, m);
525 761
526 x++; 762 x++;
527 x->rx_buf = &ts->tc.x; 763 x->rx_buf = &ts->dummy;
528 x->len = 2; 764 x->len = 2;
529 CS_CHANGE(*x); 765 CS_CHANGE(*x);
530 spi_message_add_tail(x, &ts->msg); 766 spi_message_add_tail(x, m);
531 767
532 ts->msg.complete = ads7846_rx; 768 m->complete = ads7846_rx;
533 ts->msg.context = ts; 769 m->context = ts;
770
771 ts->last_msg = m;
534 772
535 if (request_irq(spi->irq, ads7846_irq, 773 if (request_irq(spi->irq, ads7846_irq,
536 SA_SAMPLE_RANDOM | SA_TRIGGER_FALLING, 774 SA_SAMPLE_RANDOM | SA_TRIGGER_FALLING,
@@ -559,13 +797,27 @@ static int __devinit ads7846_probe(struct spi_device *spi)
559 device_create_file(&spi->dev, &dev_attr_vbatt); 797 device_create_file(&spi->dev, &dev_attr_vbatt);
560 device_create_file(&spi->dev, &dev_attr_vaux); 798 device_create_file(&spi->dev, &dev_attr_vaux);
561 799
800 device_create_file(&spi->dev, &dev_attr_pen_down);
801
802 device_create_file(&spi->dev, &dev_attr_disable);
803
562 err = input_register_device(input_dev); 804 err = input_register_device(input_dev);
563 if (err) 805 if (err)
564 goto err_free_irq; 806 goto err_remove_attr;
565 807
566 return 0; 808 return 0;
567 809
568 err_free_irq: 810 err_remove_attr:
811 device_remove_file(&spi->dev, &dev_attr_disable);
812 device_remove_file(&spi->dev, &dev_attr_pen_down);
813 if (ts->model == 7846) {
814 device_remove_file(&spi->dev, &dev_attr_temp1);
815 device_remove_file(&spi->dev, &dev_attr_temp0);
816 }
817 if (ts->model != 7845)
818 device_remove_file(&spi->dev, &dev_attr_vbatt);
819 device_remove_file(&spi->dev, &dev_attr_vaux);
820
569 free_irq(spi->irq, ts); 821 free_irq(spi->irq, ts);
570 err_free_mem: 822 err_free_mem:
571 input_free_device(input_dev); 823 input_free_device(input_dev);
@@ -577,20 +829,24 @@ static int __devexit ads7846_remove(struct spi_device *spi)
577{ 829{
578 struct ads7846 *ts = dev_get_drvdata(&spi->dev); 830 struct ads7846 *ts = dev_get_drvdata(&spi->dev);
579 831
832 input_unregister_device(ts->input);
833
580 ads7846_suspend(spi, PMSG_SUSPEND); 834 ads7846_suspend(spi, PMSG_SUSPEND);
581 free_irq(ts->spi->irq, ts);
582 if (ts->irq_disabled)
583 enable_irq(ts->spi->irq);
584 835
836 device_remove_file(&spi->dev, &dev_attr_disable);
837 device_remove_file(&spi->dev, &dev_attr_pen_down);
585 if (ts->model == 7846) { 838 if (ts->model == 7846) {
586 device_remove_file(&spi->dev, &dev_attr_temp0);
587 device_remove_file(&spi->dev, &dev_attr_temp1); 839 device_remove_file(&spi->dev, &dev_attr_temp1);
840 device_remove_file(&spi->dev, &dev_attr_temp0);
588 } 841 }
589 if (ts->model != 7845) 842 if (ts->model != 7845)
590 device_remove_file(&spi->dev, &dev_attr_vbatt); 843 device_remove_file(&spi->dev, &dev_attr_vbatt);
591 device_remove_file(&spi->dev, &dev_attr_vaux); 844 device_remove_file(&spi->dev, &dev_attr_vaux);
592 845
593 input_unregister_device(ts->input); 846 free_irq(ts->spi->irq, ts);
847 /* suspend left the IRQ disabled */
848 enable_irq(ts->spi->irq);
849
594 kfree(ts); 850 kfree(ts);
595 851
596 dev_dbg(&spi->dev, "unregistered touchscreen\n"); 852 dev_dbg(&spi->dev, "unregistered touchscreen\n");
diff --git a/drivers/input/touchscreen/corgi_ts.c b/drivers/input/touchscreen/corgi_ts.c
index 1042987856f7..5013703db0e6 100644
--- a/drivers/input/touchscreen/corgi_ts.c
+++ b/drivers/input/touchscreen/corgi_ts.c
@@ -17,7 +17,7 @@
17#include <linux/interrupt.h> 17#include <linux/interrupt.h>
18#include <linux/module.h> 18#include <linux/module.h>
19#include <linux/slab.h> 19#include <linux/slab.h>
20#include <asm/irq.h> 20//#include <asm/irq.h>
21 21
22#include <asm/arch/sharpsl.h> 22#include <asm/arch/sharpsl.h>
23#include <asm/arch/hardware.h> 23#include <asm/arch/hardware.h>
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 6081941de1b3..4070eff6f0f8 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -315,10 +315,11 @@ static int raid1_end_write_request(struct bio *bio, unsigned int bytes_done, int
315 if (r1_bio->bios[mirror] == bio) 315 if (r1_bio->bios[mirror] == bio)
316 break; 316 break;
317 317
318 if (error == -ENOTSUPP && test_bit(R1BIO_Barrier, &r1_bio->state)) { 318 if (error == -EOPNOTSUPP && test_bit(R1BIO_Barrier, &r1_bio->state)) {
319 set_bit(BarriersNotsupp, &conf->mirrors[mirror].rdev->flags); 319 set_bit(BarriersNotsupp, &conf->mirrors[mirror].rdev->flags);
320 set_bit(R1BIO_BarrierRetry, &r1_bio->state); 320 set_bit(R1BIO_BarrierRetry, &r1_bio->state);
321 r1_bio->mddev->barriers_work = 0; 321 r1_bio->mddev->barriers_work = 0;
322 /* Don't rdev_dec_pending in this branch - keep it for the retry */
322 } else { 323 } else {
323 /* 324 /*
324 * this branch is our 'one mirror IO has finished' event handler: 325 * this branch is our 'one mirror IO has finished' event handler:
@@ -365,6 +366,7 @@ static int raid1_end_write_request(struct bio *bio, unsigned int bytes_done, int
365 } 366 }
366 } 367 }
367 } 368 }
369 rdev_dec_pending(conf->mirrors[mirror].rdev, conf->mddev);
368 } 370 }
369 /* 371 /*
370 * 372 *
@@ -374,11 +376,9 @@ static int raid1_end_write_request(struct bio *bio, unsigned int bytes_done, int
374 if (atomic_dec_and_test(&r1_bio->remaining)) { 376 if (atomic_dec_and_test(&r1_bio->remaining)) {
375 if (test_bit(R1BIO_BarrierRetry, &r1_bio->state)) { 377 if (test_bit(R1BIO_BarrierRetry, &r1_bio->state)) {
376 reschedule_retry(r1_bio); 378 reschedule_retry(r1_bio);
377 /* Don't dec_pending yet, we want to hold
378 * the reference over the retry
379 */
380 goto out; 379 goto out;
381 } 380 }
381 /* it really is the end of this request */
382 if (test_bit(R1BIO_BehindIO, &r1_bio->state)) { 382 if (test_bit(R1BIO_BehindIO, &r1_bio->state)) {
383 /* free extra copy of the data pages */ 383 /* free extra copy of the data pages */
384 int i = bio->bi_vcnt; 384 int i = bio->bi_vcnt;
@@ -393,8 +393,6 @@ static int raid1_end_write_request(struct bio *bio, unsigned int bytes_done, int
393 md_write_end(r1_bio->mddev); 393 md_write_end(r1_bio->mddev);
394 raid_end_bio_io(r1_bio); 394 raid_end_bio_io(r1_bio);
395 } 395 }
396
397 rdev_dec_pending(conf->mirrors[mirror].rdev, conf->mddev);
398 out: 396 out:
399 if (to_put) 397 if (to_put)
400 bio_put(to_put); 398 bio_put(to_put);
@@ -753,18 +751,24 @@ static int make_request(request_queue_t *q, struct bio * bio)
753 const int rw = bio_data_dir(bio); 751 const int rw = bio_data_dir(bio);
754 int do_barriers; 752 int do_barriers;
755 753
756 if (unlikely(!mddev->barriers_work && bio_barrier(bio))) {
757 bio_endio(bio, bio->bi_size, -EOPNOTSUPP);
758 return 0;
759 }
760
761 /* 754 /*
762 * Register the new request and wait if the reconstruction 755 * Register the new request and wait if the reconstruction
763 * thread has put up a bar for new requests. 756 * thread has put up a bar for new requests.
764 * Continue immediately if no resync is active currently. 757 * Continue immediately if no resync is active currently.
758 * We test barriers_work *after* md_write_start as md_write_start
759 * may cause the first superblock write, and that will check out
760 * if barriers work.
765 */ 761 */
762
766 md_write_start(mddev, bio); /* wait on superblock update early */ 763 md_write_start(mddev, bio); /* wait on superblock update early */
767 764
765 if (unlikely(!mddev->barriers_work && bio_barrier(bio))) {
766 if (rw == WRITE)
767 md_write_end(mddev);
768 bio_endio(bio, bio->bi_size, -EOPNOTSUPP);
769 return 0;
770 }
771
768 wait_barrier(conf); 772 wait_barrier(conf);
769 773
770 disk_stat_inc(mddev->gendisk, ios[rw]); 774 disk_stat_inc(mddev->gendisk, ios[rw]);
@@ -1404,10 +1408,11 @@ static void raid1d(mddev_t *mddev)
1404 unplug = 1; 1408 unplug = 1;
1405 } else if (test_bit(R1BIO_BarrierRetry, &r1_bio->state)) { 1409 } else if (test_bit(R1BIO_BarrierRetry, &r1_bio->state)) {
1406 /* some requests in the r1bio were BIO_RW_BARRIER 1410 /* some requests in the r1bio were BIO_RW_BARRIER
1407 * requests which failed with -ENOTSUPP. Hohumm.. 1411 * requests which failed with -EOPNOTSUPP. Hohumm..
1408 * Better resubmit without the barrier. 1412 * Better resubmit without the barrier.
1409 * We know which devices to resubmit for, because 1413 * We know which devices to resubmit for, because
1410 * all others have had their bios[] entry cleared. 1414 * all others have had their bios[] entry cleared.
1415 * We already have a nr_pending reference on these rdevs.
1411 */ 1416 */
1412 int i; 1417 int i;
1413 clear_bit(R1BIO_BarrierRetry, &r1_bio->state); 1418 clear_bit(R1BIO_BarrierRetry, &r1_bio->state);
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 617012bc107a..1440935414e6 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -1407,43 +1407,54 @@ static void raid10d(mddev_t *mddev)
1407 if (s > (PAGE_SIZE>>9)) 1407 if (s > (PAGE_SIZE>>9))
1408 s = PAGE_SIZE >> 9; 1408 s = PAGE_SIZE >> 9;
1409 1409
1410 rcu_read_lock();
1410 do { 1411 do {
1411 int d = r10_bio->devs[sl].devnum; 1412 int d = r10_bio->devs[sl].devnum;
1412 rdev = conf->mirrors[d].rdev; 1413 rdev = rcu_dereference(conf->mirrors[d].rdev);
1413 if (rdev && 1414 if (rdev &&
1414 test_bit(In_sync, &rdev->flags) && 1415 test_bit(In_sync, &rdev->flags)) {
1415 sync_page_io(rdev->bdev, 1416 atomic_inc(&rdev->nr_pending);
1416 r10_bio->devs[sl].addr + 1417 rcu_read_unlock();
1417 sect + rdev->data_offset, 1418 success = sync_page_io(rdev->bdev,
1418 s<<9, 1419 r10_bio->devs[sl].addr +
1419 conf->tmppage, READ)) 1420 sect + rdev->data_offset,
1420 success = 1; 1421 s<<9,
1421 else { 1422 conf->tmppage, READ);
1422 sl++; 1423 rdev_dec_pending(rdev, mddev);
1423 if (sl == conf->copies) 1424 rcu_read_lock();
1424 sl = 0; 1425 if (success)
1426 break;
1425 } 1427 }
1428 sl++;
1429 if (sl == conf->copies)
1430 sl = 0;
1426 } while (!success && sl != r10_bio->read_slot); 1431 } while (!success && sl != r10_bio->read_slot);
1432 rcu_read_unlock();
1427 1433
1428 if (success) { 1434 if (success) {
1429 int start = sl; 1435 int start = sl;
1430 /* write it back and re-read */ 1436 /* write it back and re-read */
1437 rcu_read_lock();
1431 while (sl != r10_bio->read_slot) { 1438 while (sl != r10_bio->read_slot) {
1432 int d; 1439 int d;
1433 if (sl==0) 1440 if (sl==0)
1434 sl = conf->copies; 1441 sl = conf->copies;
1435 sl--; 1442 sl--;
1436 d = r10_bio->devs[sl].devnum; 1443 d = r10_bio->devs[sl].devnum;
1437 rdev = conf->mirrors[d].rdev; 1444 rdev = rcu_dereference(conf->mirrors[d].rdev);
1438 atomic_add(s, &rdev->corrected_errors);
1439 if (rdev && 1445 if (rdev &&
1440 test_bit(In_sync, &rdev->flags)) { 1446 test_bit(In_sync, &rdev->flags)) {
1447 atomic_inc(&rdev->nr_pending);
1448 rcu_read_unlock();
1449 atomic_add(s, &rdev->corrected_errors);
1441 if (sync_page_io(rdev->bdev, 1450 if (sync_page_io(rdev->bdev,
1442 r10_bio->devs[sl].addr + 1451 r10_bio->devs[sl].addr +
1443 sect + rdev->data_offset, 1452 sect + rdev->data_offset,
1444 s<<9, conf->tmppage, WRITE) == 0) 1453 s<<9, conf->tmppage, WRITE) == 0)
1445 /* Well, this device is dead */ 1454 /* Well, this device is dead */
1446 md_error(mddev, rdev); 1455 md_error(mddev, rdev);
1456 rdev_dec_pending(rdev, mddev);
1457 rcu_read_lock();
1447 } 1458 }
1448 } 1459 }
1449 sl = start; 1460 sl = start;
@@ -1453,17 +1464,22 @@ static void raid10d(mddev_t *mddev)
1453 sl = conf->copies; 1464 sl = conf->copies;
1454 sl--; 1465 sl--;
1455 d = r10_bio->devs[sl].devnum; 1466 d = r10_bio->devs[sl].devnum;
1456 rdev = conf->mirrors[d].rdev; 1467 rdev = rcu_dereference(conf->mirrors[d].rdev);
1457 if (rdev && 1468 if (rdev &&
1458 test_bit(In_sync, &rdev->flags)) { 1469 test_bit(In_sync, &rdev->flags)) {
1470 atomic_inc(&rdev->nr_pending);
1471 rcu_read_unlock();
1459 if (sync_page_io(rdev->bdev, 1472 if (sync_page_io(rdev->bdev,
1460 r10_bio->devs[sl].addr + 1473 r10_bio->devs[sl].addr +
1461 sect + rdev->data_offset, 1474 sect + rdev->data_offset,
1462 s<<9, conf->tmppage, READ) == 0) 1475 s<<9, conf->tmppage, READ) == 0)
1463 /* Well, this device is dead */ 1476 /* Well, this device is dead */
1464 md_error(mddev, rdev); 1477 md_error(mddev, rdev);
1478 rdev_dec_pending(rdev, mddev);
1479 rcu_read_lock();
1465 } 1480 }
1466 } 1481 }
1482 rcu_read_unlock();
1467 } else { 1483 } else {
1468 /* Cannot read from anywhere -- bye bye array */ 1484 /* Cannot read from anywhere -- bye bye array */
1469 md_error(mddev, conf->mirrors[r10_bio->devs[r10_bio->read_slot].devnum].rdev); 1485 md_error(mddev, conf->mirrors[r10_bio->devs[r10_bio->read_slot].devnum].rdev);
diff --git a/drivers/media/video/cx88/cx88-alsa.c b/drivers/media/video/cx88/cx88-alsa.c
index f9d87b86492c..320b3d9384ba 100644
--- a/drivers/media/video/cx88/cx88-alsa.c
+++ b/drivers/media/video/cx88/cx88-alsa.c
@@ -616,7 +616,7 @@ static struct snd_kcontrol_new snd_cx88_capture_volume = {
616 * Only boards with eeprom and byte 1 at eeprom=1 have it 616 * Only boards with eeprom and byte 1 at eeprom=1 have it
617 */ 617 */
618 618
619static struct pci_device_id cx88_audio_pci_tbl[] = { 619static struct pci_device_id cx88_audio_pci_tbl[] __devinitdata = {
620 {0x14f1,0x8801,PCI_ANY_ID,PCI_ANY_ID,0,0,0}, 620 {0x14f1,0x8801,PCI_ANY_ID,PCI_ANY_ID,0,0,0},
621 {0x14f1,0x8811,PCI_ANY_ID,PCI_ANY_ID,0,0,0}, 621 {0x14f1,0x8811,PCI_ANY_ID,PCI_ANY_ID,0,0,0},
622 {0, } 622 {0, }
diff --git a/drivers/mmc/at91_mci.c b/drivers/mmc/at91_mci.c
index 6061c2d101a0..88f0eef9cf33 100644
--- a/drivers/mmc/at91_mci.c
+++ b/drivers/mmc/at91_mci.c
@@ -621,9 +621,6 @@ static void at91_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
621 struct at91mci_host *host = mmc_priv(mmc); 621 struct at91mci_host *host = mmc_priv(mmc);
622 unsigned long at91_master_clock = clk_get_rate(mci_clk); 622 unsigned long at91_master_clock = clk_get_rate(mci_clk);
623 623
624 DBG("Clock %uHz, busmode %u, powermode %u, Vdd %u\n",
625 ios->clock, ios->bus_mode, ios->power_mode, ios->vdd);
626
627 if (host) 624 if (host)
628 host->bus_mode = ios->bus_mode; 625 host->bus_mode = ios->bus_mode;
629 else 626 else
diff --git a/drivers/mmc/au1xmmc.c b/drivers/mmc/au1xmmc.c
index c0326bbc5f28..914d62b24064 100644
--- a/drivers/mmc/au1xmmc.c
+++ b/drivers/mmc/au1xmmc.c
@@ -720,10 +720,6 @@ static void au1xmmc_set_ios(struct mmc_host* mmc, struct mmc_ios* ios)
720{ 720{
721 struct au1xmmc_host *host = mmc_priv(mmc); 721 struct au1xmmc_host *host = mmc_priv(mmc);
722 722
723 DBG("set_ios (power=%u, clock=%uHz, vdd=%u, mode=%u)\n",
724 host->id, ios->power_mode, ios->clock, ios->vdd,
725 ios->bus_mode);
726
727 if (ios->power_mode == MMC_POWER_OFF) 723 if (ios->power_mode == MMC_POWER_OFF)
728 au1xmmc_set_power(host, 0); 724 au1xmmc_set_power(host, 0);
729 else if (ios->power_mode == MMC_POWER_ON) { 725 else if (ios->power_mode == MMC_POWER_ON) {
diff --git a/drivers/mmc/imxmmc.c b/drivers/mmc/imxmmc.c
index ffb7f55d3467..79358e223f57 100644
--- a/drivers/mmc/imxmmc.c
+++ b/drivers/mmc/imxmmc.c
@@ -102,6 +102,7 @@ struct imxmci_host {
102#define IMXMCI_PEND_CPU_DATA_b 5 102#define IMXMCI_PEND_CPU_DATA_b 5
103#define IMXMCI_PEND_CARD_XCHG_b 6 103#define IMXMCI_PEND_CARD_XCHG_b 6
104#define IMXMCI_PEND_SET_INIT_b 7 104#define IMXMCI_PEND_SET_INIT_b 7
105#define IMXMCI_PEND_STARTED_b 8
105 106
106#define IMXMCI_PEND_IRQ_m (1 << IMXMCI_PEND_IRQ_b) 107#define IMXMCI_PEND_IRQ_m (1 << IMXMCI_PEND_IRQ_b)
107#define IMXMCI_PEND_DMA_END_m (1 << IMXMCI_PEND_DMA_END_b) 108#define IMXMCI_PEND_DMA_END_m (1 << IMXMCI_PEND_DMA_END_b)
@@ -111,6 +112,7 @@ struct imxmci_host {
111#define IMXMCI_PEND_CPU_DATA_m (1 << IMXMCI_PEND_CPU_DATA_b) 112#define IMXMCI_PEND_CPU_DATA_m (1 << IMXMCI_PEND_CPU_DATA_b)
112#define IMXMCI_PEND_CARD_XCHG_m (1 << IMXMCI_PEND_CARD_XCHG_b) 113#define IMXMCI_PEND_CARD_XCHG_m (1 << IMXMCI_PEND_CARD_XCHG_b)
113#define IMXMCI_PEND_SET_INIT_m (1 << IMXMCI_PEND_SET_INIT_b) 114#define IMXMCI_PEND_SET_INIT_m (1 << IMXMCI_PEND_SET_INIT_b)
115#define IMXMCI_PEND_STARTED_m (1 << IMXMCI_PEND_STARTED_b)
114 116
115static void imxmci_stop_clock(struct imxmci_host *host) 117static void imxmci_stop_clock(struct imxmci_host *host)
116{ 118{
@@ -131,23 +133,52 @@ static void imxmci_stop_clock(struct imxmci_host *host)
131 dev_dbg(mmc_dev(host->mmc), "imxmci_stop_clock blocked, no luck\n"); 133 dev_dbg(mmc_dev(host->mmc), "imxmci_stop_clock blocked, no luck\n");
132} 134}
133 135
134static void imxmci_start_clock(struct imxmci_host *host) 136static int imxmci_start_clock(struct imxmci_host *host)
135{ 137{
136 int i = 0; 138 unsigned int trials = 0;
139 unsigned int delay_limit = 128;
140 unsigned long flags;
141
137 MMC_STR_STP_CLK &= ~STR_STP_CLK_STOP_CLK; 142 MMC_STR_STP_CLK &= ~STR_STP_CLK_STOP_CLK;
138 while(i < 0x1000) {
139 if(!(i & 0x7f))
140 MMC_STR_STP_CLK |= STR_STP_CLK_START_CLK;
141 143
142 if(MMC_STATUS & STATUS_CARD_BUS_CLK_RUN) { 144 clear_bit(IMXMCI_PEND_STARTED_b, &host->pending_events);
143 /* Check twice before cut */ 145
146 /*
147 * Command start of the clock, this usually succeeds in less
148 * then 6 delay loops, but during card detection (low clockrate)
149 * it takes up to 5000 delay loops and sometimes fails for the first time
150 */
151 MMC_STR_STP_CLK |= STR_STP_CLK_START_CLK;
152
153 do {
154 unsigned int delay = delay_limit;
155
156 while(delay--){
144 if(MMC_STATUS & STATUS_CARD_BUS_CLK_RUN) 157 if(MMC_STATUS & STATUS_CARD_BUS_CLK_RUN)
145 return; 158 /* Check twice before cut */
159 if(MMC_STATUS & STATUS_CARD_BUS_CLK_RUN)
160 return 0;
161
162 if(test_bit(IMXMCI_PEND_STARTED_b, &host->pending_events))
163 return 0;
146 } 164 }
147 165
148 i++; 166 local_irq_save(flags);
149 } 167 /*
150 dev_dbg(mmc_dev(host->mmc), "imxmci_start_clock blocked, no luck\n"); 168 * Ensure, that request is not doubled under all possible circumstances.
169 * It is possible, that cock running state is missed, because some other
170 * IRQ or schedule delays this function execution and the clocks has
171 * been already stopped by other means (response processing, SDHC HW)
172 */
173 if(!test_bit(IMXMCI_PEND_STARTED_b, &host->pending_events))
174 MMC_STR_STP_CLK |= STR_STP_CLK_START_CLK;
175 local_irq_restore(flags);
176
177 } while(++trials<256);
178
179 dev_err(mmc_dev(host->mmc), "imxmci_start_clock blocked, no luck\n");
180
181 return -1;
151} 182}
152 183
153static void imxmci_softreset(void) 184static void imxmci_softreset(void)
@@ -498,7 +529,7 @@ static int imxmci_data_done(struct imxmci_host *host, unsigned int stat)
498 529
499 data_error = imxmci_finish_data(host, stat); 530 data_error = imxmci_finish_data(host, stat);
500 531
501 if (host->req->stop && (data_error == MMC_ERR_NONE)) { 532 if (host->req->stop) {
502 imxmci_stop_clock(host); 533 imxmci_stop_clock(host);
503 imxmci_start_cmd(host, host->req->stop, 0); 534 imxmci_start_cmd(host, host->req->stop, 0);
504 } else { 535 } else {
@@ -622,6 +653,7 @@ static irqreturn_t imxmci_irq(int irq, void *devid, struct pt_regs *regs)
622 atomic_set(&host->stuck_timeout, 0); 653 atomic_set(&host->stuck_timeout, 0);
623 host->status_reg = stat; 654 host->status_reg = stat;
624 set_bit(IMXMCI_PEND_IRQ_b, &host->pending_events); 655 set_bit(IMXMCI_PEND_IRQ_b, &host->pending_events);
656 set_bit(IMXMCI_PEND_STARTED_b, &host->pending_events);
625 tasklet_schedule(&host->tasklet); 657 tasklet_schedule(&host->tasklet);
626 658
627 return IRQ_RETVAL(handled);; 659 return IRQ_RETVAL(handled);;
@@ -775,10 +807,6 @@ static void imxmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
775 struct imxmci_host *host = mmc_priv(mmc); 807 struct imxmci_host *host = mmc_priv(mmc);
776 int prescaler; 808 int prescaler;
777 809
778 dev_dbg(mmc_dev(host->mmc), "clock %u power %u vdd %u width %u\n",
779 ios->clock, ios->power_mode, ios->vdd,
780 (ios->bus_width==MMC_BUS_WIDTH_4)?4:1);
781
782 if( ios->bus_width==MMC_BUS_WIDTH_4 ) { 810 if( ios->bus_width==MMC_BUS_WIDTH_4 ) {
783 host->actual_bus_width = MMC_BUS_WIDTH_4; 811 host->actual_bus_width = MMC_BUS_WIDTH_4;
784 imx_gpio_mode(PB11_PF_SD_DAT3); 812 imx_gpio_mode(PB11_PF_SD_DAT3);
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index da6ddd910fc5..1ca2c8b9c9b5 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -59,21 +59,23 @@ static const unsigned int tacc_mant[] = {
59 59
60 60
61/** 61/**
62 * mmc_request_done - finish processing an MMC command 62 * mmc_request_done - finish processing an MMC request
63 * @host: MMC host which completed command 63 * @host: MMC host which completed request
64 * @mrq: MMC request which completed 64 * @mrq: MMC request which request
65 * 65 *
66 * MMC drivers should call this function when they have completed 66 * MMC drivers should call this function when they have completed
67 * their processing of a command. This should be called before the 67 * their processing of a request.
68 * data part of the command has completed.
69 */ 68 */
70void mmc_request_done(struct mmc_host *host, struct mmc_request *mrq) 69void mmc_request_done(struct mmc_host *host, struct mmc_request *mrq)
71{ 70{
72 struct mmc_command *cmd = mrq->cmd; 71 struct mmc_command *cmd = mrq->cmd;
73 int err = mrq->cmd->error; 72 int err = cmd->error;
74 pr_debug("MMC: req done (%02x): %d: %08x %08x %08x %08x\n", 73
75 cmd->opcode, err, cmd->resp[0], cmd->resp[1], 74 pr_debug("%s: req done (CMD%u): %d/%d/%d: %08x %08x %08x %08x\n",
76 cmd->resp[2], cmd->resp[3]); 75 mmc_hostname(host), cmd->opcode, err,
76 mrq->data ? mrq->data->error : 0,
77 mrq->stop ? mrq->stop->error : 0,
78 cmd->resp[0], cmd->resp[1], cmd->resp[2], cmd->resp[3]);
77 79
78 if (err && cmd->retries) { 80 if (err && cmd->retries) {
79 cmd->retries--; 81 cmd->retries--;
@@ -97,8 +99,9 @@ EXPORT_SYMBOL(mmc_request_done);
97void 99void
98mmc_start_request(struct mmc_host *host, struct mmc_request *mrq) 100mmc_start_request(struct mmc_host *host, struct mmc_request *mrq)
99{ 101{
100 pr_debug("MMC: starting cmd %02x arg %08x flags %08x\n", 102 pr_debug("%s: starting CMD%u arg %08x flags %08x\n",
101 mrq->cmd->opcode, mrq->cmd->arg, mrq->cmd->flags); 103 mmc_hostname(host), mrq->cmd->opcode,
104 mrq->cmd->arg, mrq->cmd->flags);
102 105
103 WARN_ON(host->card_busy == NULL); 106 WARN_ON(host->card_busy == NULL);
104 107
@@ -312,6 +315,18 @@ void mmc_release_host(struct mmc_host *host)
312 315
313EXPORT_SYMBOL(mmc_release_host); 316EXPORT_SYMBOL(mmc_release_host);
314 317
318static inline void mmc_set_ios(struct mmc_host *host)
319{
320 struct mmc_ios *ios = &host->ios;
321
322 pr_debug("%s: clock %uHz busmode %u powermode %u cs %u Vdd %u width %u\n",
323 mmc_hostname(host), ios->clock, ios->bus_mode,
324 ios->power_mode, ios->chip_select, ios->vdd,
325 ios->bus_width);
326
327 host->ops->set_ios(host, ios);
328}
329
315static int mmc_select_card(struct mmc_host *host, struct mmc_card *card) 330static int mmc_select_card(struct mmc_host *host, struct mmc_card *card)
316{ 331{
317 int err; 332 int err;
@@ -364,7 +379,7 @@ static int mmc_select_card(struct mmc_host *host, struct mmc_card *card)
364 } 379 }
365 } 380 }
366 381
367 host->ops->set_ios(host, &host->ios); 382 mmc_set_ios(host);
368 383
369 return MMC_ERR_NONE; 384 return MMC_ERR_NONE;
370} 385}
@@ -415,7 +430,7 @@ static u32 mmc_select_voltage(struct mmc_host *host, u32 ocr)
415 ocr = 3 << bit; 430 ocr = 3 << bit;
416 431
417 host->ios.vdd = bit; 432 host->ios.vdd = bit;
418 host->ops->set_ios(host, &host->ios); 433 mmc_set_ios(host);
419 } else { 434 } else {
420 ocr = 0; 435 ocr = 0;
421 } 436 }
@@ -549,6 +564,7 @@ static void mmc_decode_csd(struct mmc_card *card)
549 csd->read_partial = UNSTUFF_BITS(resp, 79, 1); 564 csd->read_partial = UNSTUFF_BITS(resp, 79, 1);
550 csd->write_misalign = UNSTUFF_BITS(resp, 78, 1); 565 csd->write_misalign = UNSTUFF_BITS(resp, 78, 1);
551 csd->read_misalign = UNSTUFF_BITS(resp, 77, 1); 566 csd->read_misalign = UNSTUFF_BITS(resp, 77, 1);
567 csd->r2w_factor = UNSTUFF_BITS(resp, 26, 3);
552 csd->write_blkbits = UNSTUFF_BITS(resp, 22, 4); 568 csd->write_blkbits = UNSTUFF_BITS(resp, 22, 4);
553 csd->write_partial = UNSTUFF_BITS(resp, 21, 1); 569 csd->write_partial = UNSTUFF_BITS(resp, 21, 1);
554 } else { 570 } else {
@@ -583,6 +599,7 @@ static void mmc_decode_csd(struct mmc_card *card)
583 csd->read_partial = UNSTUFF_BITS(resp, 79, 1); 599 csd->read_partial = UNSTUFF_BITS(resp, 79, 1);
584 csd->write_misalign = UNSTUFF_BITS(resp, 78, 1); 600 csd->write_misalign = UNSTUFF_BITS(resp, 78, 1);
585 csd->read_misalign = UNSTUFF_BITS(resp, 77, 1); 601 csd->read_misalign = UNSTUFF_BITS(resp, 77, 1);
602 csd->r2w_factor = UNSTUFF_BITS(resp, 26, 3);
586 csd->write_blkbits = UNSTUFF_BITS(resp, 22, 4); 603 csd->write_blkbits = UNSTUFF_BITS(resp, 22, 4);
587 csd->write_partial = UNSTUFF_BITS(resp, 21, 1); 604 csd->write_partial = UNSTUFF_BITS(resp, 21, 1);
588 } 605 }
@@ -666,7 +683,7 @@ static void mmc_idle_cards(struct mmc_host *host)
666 struct mmc_command cmd; 683 struct mmc_command cmd;
667 684
668 host->ios.chip_select = MMC_CS_HIGH; 685 host->ios.chip_select = MMC_CS_HIGH;
669 host->ops->set_ios(host, &host->ios); 686 mmc_set_ios(host);
670 687
671 mmc_delay(1); 688 mmc_delay(1);
672 689
@@ -679,7 +696,7 @@ static void mmc_idle_cards(struct mmc_host *host)
679 mmc_delay(1); 696 mmc_delay(1);
680 697
681 host->ios.chip_select = MMC_CS_DONTCARE; 698 host->ios.chip_select = MMC_CS_DONTCARE;
682 host->ops->set_ios(host, &host->ios); 699 mmc_set_ios(host);
683 700
684 mmc_delay(1); 701 mmc_delay(1);
685} 702}
@@ -704,13 +721,13 @@ static void mmc_power_up(struct mmc_host *host)
704 host->ios.chip_select = MMC_CS_DONTCARE; 721 host->ios.chip_select = MMC_CS_DONTCARE;
705 host->ios.power_mode = MMC_POWER_UP; 722 host->ios.power_mode = MMC_POWER_UP;
706 host->ios.bus_width = MMC_BUS_WIDTH_1; 723 host->ios.bus_width = MMC_BUS_WIDTH_1;
707 host->ops->set_ios(host, &host->ios); 724 mmc_set_ios(host);
708 725
709 mmc_delay(1); 726 mmc_delay(1);
710 727
711 host->ios.clock = host->f_min; 728 host->ios.clock = host->f_min;
712 host->ios.power_mode = MMC_POWER_ON; 729 host->ios.power_mode = MMC_POWER_ON;
713 host->ops->set_ios(host, &host->ios); 730 mmc_set_ios(host);
714 731
715 mmc_delay(2); 732 mmc_delay(2);
716} 733}
@@ -723,7 +740,7 @@ static void mmc_power_off(struct mmc_host *host)
723 host->ios.chip_select = MMC_CS_DONTCARE; 740 host->ios.chip_select = MMC_CS_DONTCARE;
724 host->ios.power_mode = MMC_POWER_OFF; 741 host->ios.power_mode = MMC_POWER_OFF;
725 host->ios.bus_width = MMC_BUS_WIDTH_1; 742 host->ios.bus_width = MMC_BUS_WIDTH_1;
726 host->ops->set_ios(host, &host->ios); 743 mmc_set_ios(host);
727} 744}
728 745
729static int mmc_send_op_cond(struct mmc_host *host, u32 ocr, u32 *rocr) 746static int mmc_send_op_cond(struct mmc_host *host, u32 ocr, u32 *rocr)
@@ -971,7 +988,8 @@ static unsigned int mmc_calculate_clock(struct mmc_host *host)
971 if (!mmc_card_dead(card) && max_dtr > card->csd.max_dtr) 988 if (!mmc_card_dead(card) && max_dtr > card->csd.max_dtr)
972 max_dtr = card->csd.max_dtr; 989 max_dtr = card->csd.max_dtr;
973 990
974 pr_debug("MMC: selected %d.%03dMHz transfer rate\n", 991 pr_debug("%s: selected %d.%03dMHz transfer rate\n",
992 mmc_hostname(host),
975 max_dtr / 1000000, (max_dtr / 1000) % 1000); 993 max_dtr / 1000000, (max_dtr / 1000) % 1000);
976 994
977 return max_dtr; 995 return max_dtr;
@@ -1046,7 +1064,7 @@ static void mmc_setup(struct mmc_host *host)
1046 } else { 1064 } else {
1047 host->ios.bus_mode = MMC_BUSMODE_OPENDRAIN; 1065 host->ios.bus_mode = MMC_BUSMODE_OPENDRAIN;
1048 host->ios.clock = host->f_min; 1066 host->ios.clock = host->f_min;
1049 host->ops->set_ios(host, &host->ios); 1067 mmc_set_ios(host);
1050 1068
1051 /* 1069 /*
1052 * We should remember the OCR mask from the existing 1070 * We should remember the OCR mask from the existing
@@ -1082,7 +1100,7 @@ static void mmc_setup(struct mmc_host *host)
1082 * Ok, now switch to push-pull mode. 1100 * Ok, now switch to push-pull mode.
1083 */ 1101 */
1084 host->ios.bus_mode = MMC_BUSMODE_PUSHPULL; 1102 host->ios.bus_mode = MMC_BUSMODE_PUSHPULL;
1085 host->ops->set_ios(host, &host->ios); 1103 mmc_set_ios(host);
1086 1104
1087 mmc_read_csds(host); 1105 mmc_read_csds(host);
1088 1106
@@ -1128,7 +1146,7 @@ static void mmc_rescan(void *data)
1128 * attached cards and the host support. 1146 * attached cards and the host support.
1129 */ 1147 */
1130 host->ios.clock = mmc_calculate_clock(host); 1148 host->ios.clock = mmc_calculate_clock(host);
1131 host->ops->set_ios(host, &host->ios); 1149 mmc_set_ios(host);
1132 } 1150 }
1133 1151
1134 mmc_release_host(host); 1152 mmc_release_host(host);
diff --git a/drivers/mmc/mmc_block.c b/drivers/mmc/mmc_block.c
index 8eb2a2ede64b..06bd1f4cb9b1 100644
--- a/drivers/mmc/mmc_block.c
+++ b/drivers/mmc/mmc_block.c
@@ -187,6 +187,12 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
187 brq.cmd.opcode = MMC_WRITE_BLOCK; 187 brq.cmd.opcode = MMC_WRITE_BLOCK;
188 brq.data.flags |= MMC_DATA_WRITE; 188 brq.data.flags |= MMC_DATA_WRITE;
189 brq.data.blocks = 1; 189 brq.data.blocks = 1;
190
191 /*
192 * Scale up the timeout by the r2w factor
193 */
194 brq.data.timeout_ns <<= card->csd.r2w_factor;
195 brq.data.timeout_clks <<= card->csd.r2w_factor;
190 } 196 }
191 197
192 if (brq.data.blocks > 1) { 198 if (brq.data.blocks > 1) {
diff --git a/drivers/mmc/mmci.c b/drivers/mmc/mmci.c
index df7e861e2fc7..da8e4d7339cc 100644
--- a/drivers/mmc/mmci.c
+++ b/drivers/mmc/mmci.c
@@ -402,9 +402,6 @@ static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
402 struct mmci_host *host = mmc_priv(mmc); 402 struct mmci_host *host = mmc_priv(mmc);
403 u32 clk = 0, pwr = 0; 403 u32 clk = 0, pwr = 0;
404 404
405 DBG(host, "clock %uHz busmode %u powermode %u Vdd %u\n",
406 ios->clock, ios->bus_mode, ios->power_mode, ios->vdd);
407
408 if (ios->clock) { 405 if (ios->clock) {
409 if (ios->clock >= host->mclk) { 406 if (ios->clock >= host->mclk) {
410 clk = MCI_CLK_BYPASS; 407 clk = MCI_CLK_BYPASS;
diff --git a/drivers/mmc/pxamci.c b/drivers/mmc/pxamci.c
index eb9a8826e9b5..f97b472085cb 100644
--- a/drivers/mmc/pxamci.c
+++ b/drivers/mmc/pxamci.c
@@ -65,11 +65,6 @@ struct pxamci_host {
65 unsigned int dma_dir; 65 unsigned int dma_dir;
66}; 66};
67 67
68static inline unsigned int ns_to_clocks(unsigned int ns)
69{
70 return (ns * (CLOCKRATE / 1000000) + 999) / 1000;
71}
72
73static void pxamci_stop_clock(struct pxamci_host *host) 68static void pxamci_stop_clock(struct pxamci_host *host)
74{ 69{
75 if (readl(host->base + MMC_STAT) & STAT_CLK_EN) { 70 if (readl(host->base + MMC_STAT) & STAT_CLK_EN) {
@@ -113,6 +108,7 @@ static void pxamci_disable_irq(struct pxamci_host *host, unsigned int mask)
113static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data) 108static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
114{ 109{
115 unsigned int nob = data->blocks; 110 unsigned int nob = data->blocks;
111 unsigned long long clks;
116 unsigned int timeout; 112 unsigned int timeout;
117 u32 dcmd; 113 u32 dcmd;
118 int i; 114 int i;
@@ -125,7 +121,9 @@ static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
125 writel(nob, host->base + MMC_NOB); 121 writel(nob, host->base + MMC_NOB);
126 writel(1 << data->blksz_bits, host->base + MMC_BLKLEN); 122 writel(1 << data->blksz_bits, host->base + MMC_BLKLEN);
127 123
128 timeout = ns_to_clocks(data->timeout_ns) + data->timeout_clks; 124 clks = (unsigned long long)data->timeout_ns * CLOCKRATE;
125 do_div(clks, 1000000000UL);
126 timeout = (unsigned int)clks + (data->timeout_clks << host->clkrt);
129 writel((timeout + 255) / 256, host->base + MMC_RDTO); 127 writel((timeout + 255) / 256, host->base + MMC_RDTO);
130 128
131 if (data->flags & MMC_DATA_READ) { 129 if (data->flags & MMC_DATA_READ) {
@@ -200,7 +198,6 @@ static void pxamci_start_cmd(struct pxamci_host *host, struct mmc_command *cmd,
200 198
201static void pxamci_finish_request(struct pxamci_host *host, struct mmc_request *mrq) 199static void pxamci_finish_request(struct pxamci_host *host, struct mmc_request *mrq)
202{ 200{
203 pr_debug("PXAMCI: request done\n");
204 host->mrq = NULL; 201 host->mrq = NULL;
205 host->cmd = NULL; 202 host->cmd = NULL;
206 host->data = NULL; 203 host->data = NULL;
@@ -293,7 +290,7 @@ static int pxamci_data_done(struct pxamci_host *host, unsigned int stat)
293 pxamci_disable_irq(host, DATA_TRAN_DONE); 290 pxamci_disable_irq(host, DATA_TRAN_DONE);
294 291
295 host->data = NULL; 292 host->data = NULL;
296 if (host->mrq->stop && data->error == MMC_ERR_NONE) { 293 if (host->mrq->stop) {
297 pxamci_stop_clock(host); 294 pxamci_stop_clock(host);
298 pxamci_start_cmd(host, host->mrq->stop, 0); 295 pxamci_start_cmd(host, host->mrq->stop, 0);
299 } else { 296 } else {
@@ -311,12 +308,10 @@ static irqreturn_t pxamci_irq(int irq, void *devid, struct pt_regs *regs)
311 308
312 ireg = readl(host->base + MMC_I_REG); 309 ireg = readl(host->base + MMC_I_REG);
313 310
314 pr_debug("PXAMCI: irq %08x\n", ireg);
315
316 if (ireg) { 311 if (ireg) {
317 unsigned stat = readl(host->base + MMC_STAT); 312 unsigned stat = readl(host->base + MMC_STAT);
318 313
319 pr_debug("PXAMCI: stat %08x\n", stat); 314 pr_debug("PXAMCI: irq %08x stat %08x\n", ireg, stat);
320 315
321 if (ireg & END_CMD_RES) 316 if (ireg & END_CMD_RES)
322 handled |= pxamci_cmd_done(host, stat); 317 handled |= pxamci_cmd_done(host, stat);
@@ -370,10 +365,6 @@ static void pxamci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
370{ 365{
371 struct pxamci_host *host = mmc_priv(mmc); 366 struct pxamci_host *host = mmc_priv(mmc);
372 367
373 pr_debug("pxamci_set_ios: clock %u power %u vdd %u.%02u\n",
374 ios->clock, ios->power_mode, ios->vdd / 100,
375 ios->vdd % 100);
376
377 if (ios->clock) { 368 if (ios->clock) {
378 unsigned int clk = CLOCKRATE / ios->clock; 369 unsigned int clk = CLOCKRATE / ios->clock;
379 if (CLOCKRATE / clk > ios->clock) 370 if (CLOCKRATE / clk > ios->clock)
@@ -399,7 +390,7 @@ static void pxamci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
399 host->cmdat |= CMDAT_INIT; 390 host->cmdat |= CMDAT_INIT;
400 } 391 }
401 392
402 pr_debug("pxamci_set_ios: clkrt = %x cmdat = %x\n", 393 pr_debug("PXAMCI: clkrt = %x cmdat = %x\n",
403 host->clkrt, host->cmdat); 394 host->clkrt, host->cmdat);
404} 395}
405 396
diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
index bdbfca050029..b0053280ff2d 100644
--- a/drivers/mmc/sdhci.c
+++ b/drivers/mmc/sdhci.c
@@ -570,10 +570,6 @@ static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
570 570
571 spin_lock_irqsave(&host->lock, flags); 571 spin_lock_irqsave(&host->lock, flags);
572 572
573 DBG("clock %uHz busmode %u powermode %u cs %u Vdd %u width %u\n",
574 ios->clock, ios->bus_mode, ios->power_mode, ios->chip_select,
575 ios->vdd, ios->bus_width);
576
577 /* 573 /*
578 * Reset the chip on each power off. 574 * Reset the chip on each power off.
579 * Should clear out any weird states. 575 * Should clear out any weird states.
diff --git a/drivers/mmc/wbsd.c b/drivers/mmc/wbsd.c
index 511f7b0b31d2..39b3d97f891e 100644
--- a/drivers/mmc/wbsd.c
+++ b/drivers/mmc/wbsd.c
@@ -931,10 +931,6 @@ static void wbsd_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
931 struct wbsd_host *host = mmc_priv(mmc); 931 struct wbsd_host *host = mmc_priv(mmc);
932 u8 clk, setup, pwr; 932 u8 clk, setup, pwr;
933 933
934 DBGF("clock %uHz busmode %u powermode %u cs %u Vdd %u width %u\n",
935 ios->clock, ios->bus_mode, ios->power_mode, ios->chip_select,
936 ios->vdd, ios->bus_width);
937
938 spin_lock_bh(&host->lock); 934 spin_lock_bh(&host->lock);
939 935
940 /* 936 /*
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index add8dc4aa7b0..c99e87838f92 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -3768,6 +3768,7 @@ e1000_clean_rx_irq_ps(struct e1000_adapter *adapter,
3768 ps_page->ps_page[j] = NULL; 3768 ps_page->ps_page[j] = NULL;
3769 skb->len += length; 3769 skb->len += length;
3770 skb->data_len += length; 3770 skb->data_len += length;
3771 skb->truesize += length;
3771 } 3772 }
3772 3773
3773copydone: 3774copydone:
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
index 7627a75f4f7c..f7235c9bc421 100644
--- a/drivers/net/forcedeth.c
+++ b/drivers/net/forcedeth.c
@@ -105,6 +105,8 @@
105 * 0.50: 20 Jan 2006: Add 8021pq tagging support. 105 * 0.50: 20 Jan 2006: Add 8021pq tagging support.
106 * 0.51: 20 Jan 2006: Add 64bit consistent memory allocation for rings. 106 * 0.51: 20 Jan 2006: Add 64bit consistent memory allocation for rings.
107 * 0.52: 20 Jan 2006: Add MSI/MSIX support. 107 * 0.52: 20 Jan 2006: Add MSI/MSIX support.
108 * 0.53: 19 Mar 2006: Fix init from low power mode and add hw reset.
109 * 0.54: 21 Mar 2006: Fix spin locks for multi irqs and cleanup.
108 * 110 *
109 * Known bugs: 111 * Known bugs:
110 * We suspect that on some hardware no TX done interrupts are generated. 112 * We suspect that on some hardware no TX done interrupts are generated.
@@ -116,7 +118,7 @@
116 * DEV_NEED_TIMERIRQ will not harm you on sane hardware, only generating a few 118 * DEV_NEED_TIMERIRQ will not harm you on sane hardware, only generating a few
117 * superfluous timer interrupts from the nic. 119 * superfluous timer interrupts from the nic.
118 */ 120 */
119#define FORCEDETH_VERSION "0.52" 121#define FORCEDETH_VERSION "0.54"
120#define DRV_NAME "forcedeth" 122#define DRV_NAME "forcedeth"
121 123
122#include <linux/module.h> 124#include <linux/module.h>
@@ -160,6 +162,7 @@
160#define DEV_HAS_VLAN 0x0020 /* device supports vlan tagging and striping */ 162#define DEV_HAS_VLAN 0x0020 /* device supports vlan tagging and striping */
161#define DEV_HAS_MSI 0x0040 /* device supports MSI */ 163#define DEV_HAS_MSI 0x0040 /* device supports MSI */
162#define DEV_HAS_MSI_X 0x0080 /* device supports MSI-X */ 164#define DEV_HAS_MSI_X 0x0080 /* device supports MSI-X */
165#define DEV_HAS_POWER_CNTRL 0x0100 /* device supports power savings */
163 166
164enum { 167enum {
165 NvRegIrqStatus = 0x000, 168 NvRegIrqStatus = 0x000,
@@ -203,6 +206,8 @@ enum {
203#define NVREG_MISC1_HD 0x02 206#define NVREG_MISC1_HD 0x02
204#define NVREG_MISC1_FORCE 0x3b0f3c 207#define NVREG_MISC1_FORCE 0x3b0f3c
205 208
209 NvRegMacReset = 0x3c,
210#define NVREG_MAC_RESET_ASSERT 0x0F3
206 NvRegTransmitterControl = 0x084, 211 NvRegTransmitterControl = 0x084,
207#define NVREG_XMITCTL_START 0x01 212#define NVREG_XMITCTL_START 0x01
208 NvRegTransmitterStatus = 0x088, 213 NvRegTransmitterStatus = 0x088,
@@ -326,6 +331,10 @@ enum {
326 NvRegMSIXMap0 = 0x3e0, 331 NvRegMSIXMap0 = 0x3e0,
327 NvRegMSIXMap1 = 0x3e4, 332 NvRegMSIXMap1 = 0x3e4,
328 NvRegMSIXIrqStatus = 0x3f0, 333 NvRegMSIXIrqStatus = 0x3f0,
334
335 NvRegPowerState2 = 0x600,
336#define NVREG_POWERSTATE2_POWERUP_MASK 0x0F11
337#define NVREG_POWERSTATE2_POWERUP_REV_A3 0x0001
329}; 338};
330 339
331/* Big endian: should work, but is untested */ 340/* Big endian: should work, but is untested */
@@ -414,7 +423,8 @@ typedef union _ring_type {
414#define NV_RX3_VLAN_TAG_MASK (0x0000FFFF) 423#define NV_RX3_VLAN_TAG_MASK (0x0000FFFF)
415 424
416/* Miscelaneous hardware related defines: */ 425/* Miscelaneous hardware related defines: */
417#define NV_PCI_REGSZ 0x270 426#define NV_PCI_REGSZ_VER1 0x270
427#define NV_PCI_REGSZ_VER2 0x604
418 428
419/* various timeout delays: all in usec */ 429/* various timeout delays: all in usec */
420#define NV_TXRX_RESET_DELAY 4 430#define NV_TXRX_RESET_DELAY 4
@@ -431,6 +441,7 @@ typedef union _ring_type {
431#define NV_MIIBUSY_DELAY 50 441#define NV_MIIBUSY_DELAY 50
432#define NV_MIIPHY_DELAY 10 442#define NV_MIIPHY_DELAY 10
433#define NV_MIIPHY_DELAYMAX 10000 443#define NV_MIIPHY_DELAYMAX 10000
444#define NV_MAC_RESET_DELAY 64
434 445
435#define NV_WAKEUPPATTERNS 5 446#define NV_WAKEUPPATTERNS 5
436#define NV_WAKEUPMASKENTRIES 4 447#define NV_WAKEUPMASKENTRIES 4
@@ -552,6 +563,8 @@ struct fe_priv {
552 u32 desc_ver; 563 u32 desc_ver;
553 u32 txrxctl_bits; 564 u32 txrxctl_bits;
554 u32 vlanctl_bits; 565 u32 vlanctl_bits;
566 u32 driver_data;
567 u32 register_size;
555 568
556 void __iomem *base; 569 void __iomem *base;
557 570
@@ -698,6 +711,72 @@ static void setup_hw_rings(struct net_device *dev, int rxtx_flags)
698 } 711 }
699} 712}
700 713
714static int using_multi_irqs(struct net_device *dev)
715{
716 struct fe_priv *np = get_nvpriv(dev);
717
718 if (!(np->msi_flags & NV_MSI_X_ENABLED) ||
719 ((np->msi_flags & NV_MSI_X_ENABLED) &&
720 ((np->msi_flags & NV_MSI_X_VECTORS_MASK) == 0x1)))
721 return 0;
722 else
723 return 1;
724}
725
726static void nv_enable_irq(struct net_device *dev)
727{
728 struct fe_priv *np = get_nvpriv(dev);
729
730 if (!using_multi_irqs(dev)) {
731 if (np->msi_flags & NV_MSI_X_ENABLED)
732 enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector);
733 else
734 enable_irq(dev->irq);
735 } else {
736 enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector);
737 enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector);
738 enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector);
739 }
740}
741
742static void nv_disable_irq(struct net_device *dev)
743{
744 struct fe_priv *np = get_nvpriv(dev);
745
746 if (!using_multi_irqs(dev)) {
747 if (np->msi_flags & NV_MSI_X_ENABLED)
748 disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector);
749 else
750 disable_irq(dev->irq);
751 } else {
752 disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector);
753 disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector);
754 disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector);
755 }
756}
757
758/* In MSIX mode, a write to irqmask behaves as XOR */
759static void nv_enable_hw_interrupts(struct net_device *dev, u32 mask)
760{
761 u8 __iomem *base = get_hwbase(dev);
762
763 writel(mask, base + NvRegIrqMask);
764}
765
766static void nv_disable_hw_interrupts(struct net_device *dev, u32 mask)
767{
768 struct fe_priv *np = get_nvpriv(dev);
769 u8 __iomem *base = get_hwbase(dev);
770
771 if (np->msi_flags & NV_MSI_X_ENABLED) {
772 writel(mask, base + NvRegIrqMask);
773 } else {
774 if (np->msi_flags & NV_MSI_ENABLED)
775 writel(0, base + NvRegMSIIrqMask);
776 writel(0, base + NvRegIrqMask);
777 }
778}
779
701#define MII_READ (-1) 780#define MII_READ (-1)
702/* mii_rw: read/write a register on the PHY. 781/* mii_rw: read/write a register on the PHY.
703 * 782 *
@@ -919,6 +998,24 @@ static void nv_txrx_reset(struct net_device *dev)
919 pci_push(base); 998 pci_push(base);
920} 999}
921 1000
1001static void nv_mac_reset(struct net_device *dev)
1002{
1003 struct fe_priv *np = netdev_priv(dev);
1004 u8 __iomem *base = get_hwbase(dev);
1005
1006 dprintk(KERN_DEBUG "%s: nv_mac_reset\n", dev->name);
1007 writel(NVREG_TXRXCTL_BIT2 | NVREG_TXRXCTL_RESET | np->txrxctl_bits, base + NvRegTxRxControl);
1008 pci_push(base);
1009 writel(NVREG_MAC_RESET_ASSERT, base + NvRegMacReset);
1010 pci_push(base);
1011 udelay(NV_MAC_RESET_DELAY);
1012 writel(0, base + NvRegMacReset);
1013 pci_push(base);
1014 udelay(NV_MAC_RESET_DELAY);
1015 writel(NVREG_TXRXCTL_BIT2 | np->txrxctl_bits, base + NvRegTxRxControl);
1016 pci_push(base);
1017}
1018
922/* 1019/*
923 * nv_get_stats: dev->get_stats function 1020 * nv_get_stats: dev->get_stats function
924 * Get latest stats value from the nic. 1021 * Get latest stats value from the nic.
@@ -989,24 +1086,25 @@ static void nv_do_rx_refill(unsigned long data)
989 struct net_device *dev = (struct net_device *) data; 1086 struct net_device *dev = (struct net_device *) data;
990 struct fe_priv *np = netdev_priv(dev); 1087 struct fe_priv *np = netdev_priv(dev);
991 1088
992 1089 if (!using_multi_irqs(dev)) {
993 if (!(np->msi_flags & NV_MSI_X_ENABLED) || 1090 if (np->msi_flags & NV_MSI_X_ENABLED)
994 ((np->msi_flags & NV_MSI_X_ENABLED) && 1091 disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector);
995 ((np->msi_flags & NV_MSI_X_VECTORS_MASK) == 0x1))) { 1092 else
996 disable_irq(dev->irq); 1093 disable_irq(dev->irq);
997 } else { 1094 } else {
998 disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector); 1095 disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector);
999 } 1096 }
1000 if (nv_alloc_rx(dev)) { 1097 if (nv_alloc_rx(dev)) {
1001 spin_lock(&np->lock); 1098 spin_lock_irq(&np->lock);
1002 if (!np->in_shutdown) 1099 if (!np->in_shutdown)
1003 mod_timer(&np->oom_kick, jiffies + OOM_REFILL); 1100 mod_timer(&np->oom_kick, jiffies + OOM_REFILL);
1004 spin_unlock(&np->lock); 1101 spin_unlock_irq(&np->lock);
1005 } 1102 }
1006 if (!(np->msi_flags & NV_MSI_X_ENABLED) || 1103 if (!using_multi_irqs(dev)) {
1007 ((np->msi_flags & NV_MSI_X_ENABLED) && 1104 if (np->msi_flags & NV_MSI_X_ENABLED)
1008 ((np->msi_flags & NV_MSI_X_VECTORS_MASK) == 0x1))) { 1105 enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector);
1009 enable_irq(dev->irq); 1106 else
1107 enable_irq(dev->irq);
1010 } else { 1108 } else {
1011 enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector); 1109 enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector);
1012 } 1110 }
@@ -1331,7 +1429,7 @@ static void nv_tx_timeout(struct net_device *dev)
1331 dev->name, (unsigned long)np->ring_addr, 1429 dev->name, (unsigned long)np->ring_addr,
1332 np->next_tx, np->nic_tx); 1430 np->next_tx, np->nic_tx);
1333 printk(KERN_INFO "%s: Dumping tx registers\n", dev->name); 1431 printk(KERN_INFO "%s: Dumping tx registers\n", dev->name);
1334 for (i=0;i<0x400;i+= 32) { 1432 for (i=0;i<=np->register_size;i+= 32) {
1335 printk(KERN_INFO "%3x: %08x %08x %08x %08x %08x %08x %08x %08x\n", 1433 printk(KERN_INFO "%3x: %08x %08x %08x %08x %08x %08x %08x %08x\n",
1336 i, 1434 i,
1337 readl(base + i + 0), readl(base + i + 4), 1435 readl(base + i + 0), readl(base + i + 4),
@@ -1638,15 +1736,7 @@ static int nv_change_mtu(struct net_device *dev, int new_mtu)
1638 * guessed, there is probably a simpler approach. 1736 * guessed, there is probably a simpler approach.
1639 * Changing the MTU is a rare event, it shouldn't matter. 1737 * Changing the MTU is a rare event, it shouldn't matter.
1640 */ 1738 */
1641 if (!(np->msi_flags & NV_MSI_X_ENABLED) || 1739 nv_disable_irq(dev);
1642 ((np->msi_flags & NV_MSI_X_ENABLED) &&
1643 ((np->msi_flags & NV_MSI_X_VECTORS_MASK) == 0x1))) {
1644 disable_irq(dev->irq);
1645 } else {
1646 disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector);
1647 disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector);
1648 disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector);
1649 }
1650 spin_lock_bh(&dev->xmit_lock); 1740 spin_lock_bh(&dev->xmit_lock);
1651 spin_lock(&np->lock); 1741 spin_lock(&np->lock);
1652 /* stop engines */ 1742 /* stop engines */
@@ -1679,15 +1769,7 @@ static int nv_change_mtu(struct net_device *dev, int new_mtu)
1679 nv_start_tx(dev); 1769 nv_start_tx(dev);
1680 spin_unlock(&np->lock); 1770 spin_unlock(&np->lock);
1681 spin_unlock_bh(&dev->xmit_lock); 1771 spin_unlock_bh(&dev->xmit_lock);
1682 if (!(np->msi_flags & NV_MSI_X_ENABLED) || 1772 nv_enable_irq(dev);
1683 ((np->msi_flags & NV_MSI_X_ENABLED) &&
1684 ((np->msi_flags & NV_MSI_X_VECTORS_MASK) == 0x1))) {
1685 enable_irq(dev->irq);
1686 } else {
1687 enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector);
1688 enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector);
1689 enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector);
1690 }
1691 } 1773 }
1692 return 0; 1774 return 0;
1693} 1775}
@@ -2078,16 +2160,16 @@ static irqreturn_t nv_nic_irq_tx(int foo, void *data, struct pt_regs *regs)
2078 if (!(events & np->irqmask)) 2160 if (!(events & np->irqmask))
2079 break; 2161 break;
2080 2162
2081 spin_lock(&np->lock); 2163 spin_lock_irq(&np->lock);
2082 nv_tx_done(dev); 2164 nv_tx_done(dev);
2083 spin_unlock(&np->lock); 2165 spin_unlock_irq(&np->lock);
2084 2166
2085 if (events & (NVREG_IRQ_TX_ERR)) { 2167 if (events & (NVREG_IRQ_TX_ERR)) {
2086 dprintk(KERN_DEBUG "%s: received irq with events 0x%x. Probably TX fail.\n", 2168 dprintk(KERN_DEBUG "%s: received irq with events 0x%x. Probably TX fail.\n",
2087 dev->name, events); 2169 dev->name, events);
2088 } 2170 }
2089 if (i > max_interrupt_work) { 2171 if (i > max_interrupt_work) {
2090 spin_lock(&np->lock); 2172 spin_lock_irq(&np->lock);
2091 /* disable interrupts on the nic */ 2173 /* disable interrupts on the nic */
2092 writel(NVREG_IRQ_TX_ALL, base + NvRegIrqMask); 2174 writel(NVREG_IRQ_TX_ALL, base + NvRegIrqMask);
2093 pci_push(base); 2175 pci_push(base);
@@ -2097,7 +2179,7 @@ static irqreturn_t nv_nic_irq_tx(int foo, void *data, struct pt_regs *regs)
2097 mod_timer(&np->nic_poll, jiffies + POLL_WAIT); 2179 mod_timer(&np->nic_poll, jiffies + POLL_WAIT);
2098 } 2180 }
2099 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_tx.\n", dev->name, i); 2181 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_tx.\n", dev->name, i);
2100 spin_unlock(&np->lock); 2182 spin_unlock_irq(&np->lock);
2101 break; 2183 break;
2102 } 2184 }
2103 2185
@@ -2127,14 +2209,14 @@ static irqreturn_t nv_nic_irq_rx(int foo, void *data, struct pt_regs *regs)
2127 2209
2128 nv_rx_process(dev); 2210 nv_rx_process(dev);
2129 if (nv_alloc_rx(dev)) { 2211 if (nv_alloc_rx(dev)) {
2130 spin_lock(&np->lock); 2212 spin_lock_irq(&np->lock);
2131 if (!np->in_shutdown) 2213 if (!np->in_shutdown)
2132 mod_timer(&np->oom_kick, jiffies + OOM_REFILL); 2214 mod_timer(&np->oom_kick, jiffies + OOM_REFILL);
2133 spin_unlock(&np->lock); 2215 spin_unlock_irq(&np->lock);
2134 } 2216 }
2135 2217
2136 if (i > max_interrupt_work) { 2218 if (i > max_interrupt_work) {
2137 spin_lock(&np->lock); 2219 spin_lock_irq(&np->lock);
2138 /* disable interrupts on the nic */ 2220 /* disable interrupts on the nic */
2139 writel(NVREG_IRQ_RX_ALL, base + NvRegIrqMask); 2221 writel(NVREG_IRQ_RX_ALL, base + NvRegIrqMask);
2140 pci_push(base); 2222 pci_push(base);
@@ -2144,7 +2226,7 @@ static irqreturn_t nv_nic_irq_rx(int foo, void *data, struct pt_regs *regs)
2144 mod_timer(&np->nic_poll, jiffies + POLL_WAIT); 2226 mod_timer(&np->nic_poll, jiffies + POLL_WAIT);
2145 } 2227 }
2146 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_rx.\n", dev->name, i); 2228 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_rx.\n", dev->name, i);
2147 spin_unlock(&np->lock); 2229 spin_unlock_irq(&np->lock);
2148 break; 2230 break;
2149 } 2231 }
2150 2232
@@ -2173,14 +2255,14 @@ static irqreturn_t nv_nic_irq_other(int foo, void *data, struct pt_regs *regs)
2173 break; 2255 break;
2174 2256
2175 if (events & NVREG_IRQ_LINK) { 2257 if (events & NVREG_IRQ_LINK) {
2176 spin_lock(&np->lock); 2258 spin_lock_irq(&np->lock);
2177 nv_link_irq(dev); 2259 nv_link_irq(dev);
2178 spin_unlock(&np->lock); 2260 spin_unlock_irq(&np->lock);
2179 } 2261 }
2180 if (np->need_linktimer && time_after(jiffies, np->link_timeout)) { 2262 if (np->need_linktimer && time_after(jiffies, np->link_timeout)) {
2181 spin_lock(&np->lock); 2263 spin_lock_irq(&np->lock);
2182 nv_linkchange(dev); 2264 nv_linkchange(dev);
2183 spin_unlock(&np->lock); 2265 spin_unlock_irq(&np->lock);
2184 np->link_timeout = jiffies + LINK_TIMEOUT; 2266 np->link_timeout = jiffies + LINK_TIMEOUT;
2185 } 2267 }
2186 if (events & (NVREG_IRQ_UNKNOWN)) { 2268 if (events & (NVREG_IRQ_UNKNOWN)) {
@@ -2188,7 +2270,7 @@ static irqreturn_t nv_nic_irq_other(int foo, void *data, struct pt_regs *regs)
2188 dev->name, events); 2270 dev->name, events);
2189 } 2271 }
2190 if (i > max_interrupt_work) { 2272 if (i > max_interrupt_work) {
2191 spin_lock(&np->lock); 2273 spin_lock_irq(&np->lock);
2192 /* disable interrupts on the nic */ 2274 /* disable interrupts on the nic */
2193 writel(NVREG_IRQ_OTHER, base + NvRegIrqMask); 2275 writel(NVREG_IRQ_OTHER, base + NvRegIrqMask);
2194 pci_push(base); 2276 pci_push(base);
@@ -2198,7 +2280,7 @@ static irqreturn_t nv_nic_irq_other(int foo, void *data, struct pt_regs *regs)
2198 mod_timer(&np->nic_poll, jiffies + POLL_WAIT); 2280 mod_timer(&np->nic_poll, jiffies + POLL_WAIT);
2199 } 2281 }
2200 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_other.\n", dev->name, i); 2282 printk(KERN_DEBUG "%s: too many iterations (%d) in nv_nic_irq_other.\n", dev->name, i);
2201 spin_unlock(&np->lock); 2283 spin_unlock_irq(&np->lock);
2202 break; 2284 break;
2203 } 2285 }
2204 2286
@@ -2221,10 +2303,11 @@ static void nv_do_nic_poll(unsigned long data)
2221 * nv_nic_irq because that may decide to do otherwise 2303 * nv_nic_irq because that may decide to do otherwise
2222 */ 2304 */
2223 2305
2224 if (!(np->msi_flags & NV_MSI_X_ENABLED) || 2306 if (!using_multi_irqs(dev)) {
2225 ((np->msi_flags & NV_MSI_X_ENABLED) && 2307 if (np->msi_flags & NV_MSI_X_ENABLED)
2226 ((np->msi_flags & NV_MSI_X_VECTORS_MASK) == 0x1))) { 2308 disable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector);
2227 disable_irq(dev->irq); 2309 else
2310 disable_irq(dev->irq);
2228 mask = np->irqmask; 2311 mask = np->irqmask;
2229 } else { 2312 } else {
2230 if (np->nic_poll_irq & NVREG_IRQ_RX_ALL) { 2313 if (np->nic_poll_irq & NVREG_IRQ_RX_ALL) {
@@ -2247,11 +2330,12 @@ static void nv_do_nic_poll(unsigned long data)
2247 writel(mask, base + NvRegIrqMask); 2330 writel(mask, base + NvRegIrqMask);
2248 pci_push(base); 2331 pci_push(base);
2249 2332
2250 if (!(np->msi_flags & NV_MSI_X_ENABLED) || 2333 if (!using_multi_irqs(dev)) {
2251 ((np->msi_flags & NV_MSI_X_ENABLED) &&
2252 ((np->msi_flags & NV_MSI_X_VECTORS_MASK) == 0x1))) {
2253 nv_nic_irq((int) 0, (void *) data, (struct pt_regs *) NULL); 2334 nv_nic_irq((int) 0, (void *) data, (struct pt_regs *) NULL);
2254 enable_irq(dev->irq); 2335 if (np->msi_flags & NV_MSI_X_ENABLED)
2336 enable_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector);
2337 else
2338 enable_irq(dev->irq);
2255 } else { 2339 } else {
2256 if (np->nic_poll_irq & NVREG_IRQ_RX_ALL) { 2340 if (np->nic_poll_irq & NVREG_IRQ_RX_ALL) {
2257 nv_nic_irq_rx((int) 0, (void *) data, (struct pt_regs *) NULL); 2341 nv_nic_irq_rx((int) 0, (void *) data, (struct pt_regs *) NULL);
@@ -2488,11 +2572,11 @@ static int nv_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
2488} 2572}
2489 2573
2490#define FORCEDETH_REGS_VER 1 2574#define FORCEDETH_REGS_VER 1
2491#define FORCEDETH_REGS_SIZE 0x400 /* 256 32-bit registers */
2492 2575
2493static int nv_get_regs_len(struct net_device *dev) 2576static int nv_get_regs_len(struct net_device *dev)
2494{ 2577{
2495 return FORCEDETH_REGS_SIZE; 2578 struct fe_priv *np = netdev_priv(dev);
2579 return np->register_size;
2496} 2580}
2497 2581
2498static void nv_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *buf) 2582static void nv_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *buf)
@@ -2504,7 +2588,7 @@ static void nv_get_regs(struct net_device *dev, struct ethtool_regs *regs, void
2504 2588
2505 regs->version = FORCEDETH_REGS_VER; 2589 regs->version = FORCEDETH_REGS_VER;
2506 spin_lock_irq(&np->lock); 2590 spin_lock_irq(&np->lock);
2507 for (i=0;i<FORCEDETH_REGS_SIZE/sizeof(u32);i++) 2591 for (i = 0;i <= np->register_size/sizeof(u32); i++)
2508 rbuf[i] = readl(base + i*sizeof(u32)); 2592 rbuf[i] = readl(base + i*sizeof(u32));
2509 spin_unlock_irq(&np->lock); 2593 spin_unlock_irq(&np->lock);
2510} 2594}
@@ -2598,6 +2682,113 @@ static void set_msix_vector_map(struct net_device *dev, u32 vector, u32 irqmask)
2598 writel(readl(base + NvRegMSIXMap1) | msixmap, base + NvRegMSIXMap1); 2682 writel(readl(base + NvRegMSIXMap1) | msixmap, base + NvRegMSIXMap1);
2599} 2683}
2600 2684
2685static int nv_request_irq(struct net_device *dev)
2686{
2687 struct fe_priv *np = get_nvpriv(dev);
2688 u8 __iomem *base = get_hwbase(dev);
2689 int ret = 1;
2690 int i;
2691
2692 if (np->msi_flags & NV_MSI_X_CAPABLE) {
2693 for (i = 0; i < (np->msi_flags & NV_MSI_X_VECTORS_MASK); i++) {
2694 np->msi_x_entry[i].entry = i;
2695 }
2696 if ((ret = pci_enable_msix(np->pci_dev, np->msi_x_entry, (np->msi_flags & NV_MSI_X_VECTORS_MASK))) == 0) {
2697 np->msi_flags |= NV_MSI_X_ENABLED;
2698 if (optimization_mode == NV_OPTIMIZATION_MODE_THROUGHPUT) {
2699 /* Request irq for rx handling */
2700 if (request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector, &nv_nic_irq_rx, SA_SHIRQ, dev->name, dev) != 0) {
2701 printk(KERN_INFO "forcedeth: request_irq failed for rx %d\n", ret);
2702 pci_disable_msix(np->pci_dev);
2703 np->msi_flags &= ~NV_MSI_X_ENABLED;
2704 goto out_err;
2705 }
2706 /* Request irq for tx handling */
2707 if (request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector, &nv_nic_irq_tx, SA_SHIRQ, dev->name, dev) != 0) {
2708 printk(KERN_INFO "forcedeth: request_irq failed for tx %d\n", ret);
2709 pci_disable_msix(np->pci_dev);
2710 np->msi_flags &= ~NV_MSI_X_ENABLED;
2711 goto out_free_rx;
2712 }
2713 /* Request irq for link and timer handling */
2714 if (request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_OTHER].vector, &nv_nic_irq_other, SA_SHIRQ, dev->name, dev) != 0) {
2715 printk(KERN_INFO "forcedeth: request_irq failed for link %d\n", ret);
2716 pci_disable_msix(np->pci_dev);
2717 np->msi_flags &= ~NV_MSI_X_ENABLED;
2718 goto out_free_tx;
2719 }
2720 /* map interrupts to their respective vector */
2721 writel(0, base + NvRegMSIXMap0);
2722 writel(0, base + NvRegMSIXMap1);
2723 set_msix_vector_map(dev, NV_MSI_X_VECTOR_RX, NVREG_IRQ_RX_ALL);
2724 set_msix_vector_map(dev, NV_MSI_X_VECTOR_TX, NVREG_IRQ_TX_ALL);
2725 set_msix_vector_map(dev, NV_MSI_X_VECTOR_OTHER, NVREG_IRQ_OTHER);
2726 } else {
2727 /* Request irq for all interrupts */
2728 if (request_irq(np->msi_x_entry[NV_MSI_X_VECTOR_ALL].vector, &nv_nic_irq, SA_SHIRQ, dev->name, dev) != 0) {
2729 printk(KERN_INFO "forcedeth: request_irq failed %d\n", ret);
2730 pci_disable_msix(np->pci_dev);
2731 np->msi_flags &= ~NV_MSI_X_ENABLED;
2732 goto out_err;
2733 }
2734
2735 /* map interrupts to vector 0 */
2736 writel(0, base + NvRegMSIXMap0);
2737 writel(0, base + NvRegMSIXMap1);
2738 }
2739 }
2740 }
2741 if (ret != 0 && np->msi_flags & NV_MSI_CAPABLE) {
2742 if ((ret = pci_enable_msi(np->pci_dev)) == 0) {
2743 np->msi_flags |= NV_MSI_ENABLED;
2744 if (request_irq(np->pci_dev->irq, &nv_nic_irq, SA_SHIRQ, dev->name, dev) != 0) {
2745 printk(KERN_INFO "forcedeth: request_irq failed %d\n", ret);
2746 pci_disable_msi(np->pci_dev);
2747 np->msi_flags &= ~NV_MSI_ENABLED;
2748 goto out_err;
2749 }
2750
2751 /* map interrupts to vector 0 */
2752 writel(0, base + NvRegMSIMap0);
2753 writel(0, base + NvRegMSIMap1);
2754 /* enable msi vector 0 */
2755 writel(NVREG_MSI_VECTOR_0_ENABLED, base + NvRegMSIIrqMask);
2756 }
2757 }
2758 if (ret != 0) {
2759 if (request_irq(np->pci_dev->irq, &nv_nic_irq, SA_SHIRQ, dev->name, dev) != 0)
2760 goto out_err;
2761 }
2762
2763 return 0;
2764out_free_tx:
2765 free_irq(np->msi_x_entry[NV_MSI_X_VECTOR_TX].vector, dev);
2766out_free_rx:
2767 free_irq(np->msi_x_entry[NV_MSI_X_VECTOR_RX].vector, dev);
2768out_err:
2769 return 1;
2770}
2771
2772static void nv_free_irq(struct net_device *dev)
2773{
2774 struct fe_priv *np = get_nvpriv(dev);
2775 int i;
2776
2777 if (np->msi_flags & NV_MSI_X_ENABLED) {
2778 for (i = 0; i < (np->msi_flags & NV_MSI_X_VECTORS_MASK); i++) {
2779 free_irq(np->msi_x_entry[i].vector, dev);
2780 }
2781 pci_disable_msix(np->pci_dev);
2782 np->msi_flags &= ~NV_MSI_X_ENABLED;
2783 } else {
2784 free_irq(np->pci_dev->irq, dev);
2785 if (np->msi_flags & NV_MSI_ENABLED) {
2786 pci_disable_msi(np->pci_dev);
2787 np->msi_flags &= ~NV_MSI_ENABLED;
2788 }
2789 }
2790}
2791
2601static int nv_open(struct net_device *dev) 2792static int nv_open(struct net_device *dev)
2602{ 2793{
2603 struct fe_priv *np = netdev_priv(dev); 2794 struct fe_priv *np = netdev_priv(dev);
@@ -2608,6 +2799,8 @@ static int nv_open(struct net_device *dev)
2608 dprintk(KERN_DEBUG "nv_open: begin\n"); 2799 dprintk(KERN_DEBUG "nv_open: begin\n");
2609 2800
2610 /* 1) erase previous misconfiguration */ 2801 /* 1) erase previous misconfiguration */
2802 if (np->driver_data & DEV_HAS_POWER_CNTRL)
2803 nv_mac_reset(dev);
2611 /* 4.1-1: stop adapter: ignored, 4.3 seems to be overkill */ 2804 /* 4.1-1: stop adapter: ignored, 4.3 seems to be overkill */
2612 writel(NVREG_MCASTADDRA_FORCE, base + NvRegMulticastAddrA); 2805 writel(NVREG_MCASTADDRA_FORCE, base + NvRegMulticastAddrA);
2613 writel(0, base + NvRegMulticastAddrB); 2806 writel(0, base + NvRegMulticastAddrB);
@@ -2688,12 +2881,16 @@ static int nv_open(struct net_device *dev)
2688 udelay(10); 2881 udelay(10);
2689 writel(readl(base + NvRegPowerState) | NVREG_POWERSTATE_VALID, base + NvRegPowerState); 2882 writel(readl(base + NvRegPowerState) | NVREG_POWERSTATE_VALID, base + NvRegPowerState);
2690 2883
2691 writel(0, base + NvRegIrqMask); 2884 nv_disable_hw_interrupts(dev, np->irqmask);
2692 pci_push(base); 2885 pci_push(base);
2693 writel(NVREG_MIISTAT_MASK2, base + NvRegMIIStatus); 2886 writel(NVREG_MIISTAT_MASK2, base + NvRegMIIStatus);
2694 writel(NVREG_IRQSTAT_MASK, base + NvRegIrqStatus); 2887 writel(NVREG_IRQSTAT_MASK, base + NvRegIrqStatus);
2695 pci_push(base); 2888 pci_push(base);
2696 2889
2890 if (nv_request_irq(dev)) {
2891 goto out_drain;
2892 }
2893
2697 if (np->msi_flags & NV_MSI_X_CAPABLE) { 2894 if (np->msi_flags & NV_MSI_X_CAPABLE) {
2698 for (i = 0; i < (np->msi_flags & NV_MSI_X_VECTORS_MASK); i++) { 2895 for (i = 0; i < (np->msi_flags & NV_MSI_X_VECTORS_MASK); i++) {
2699 np->msi_x_entry[i].entry = i; 2896 np->msi_x_entry[i].entry = i;
@@ -2767,7 +2964,7 @@ static int nv_open(struct net_device *dev)
2767 } 2964 }
2768 2965
2769 /* ask for interrupts */ 2966 /* ask for interrupts */
2770 writel(np->irqmask, base + NvRegIrqMask); 2967 nv_enable_hw_interrupts(dev, np->irqmask);
2771 2968
2772 spin_lock_irq(&np->lock); 2969 spin_lock_irq(&np->lock);
2773 writel(NVREG_MCASTADDRA_FORCE, base + NvRegMulticastAddrA); 2970 writel(NVREG_MCASTADDRA_FORCE, base + NvRegMulticastAddrA);
@@ -2811,7 +3008,6 @@ static int nv_close(struct net_device *dev)
2811{ 3008{
2812 struct fe_priv *np = netdev_priv(dev); 3009 struct fe_priv *np = netdev_priv(dev);
2813 u8 __iomem *base; 3010 u8 __iomem *base;
2814 int i;
2815 3011
2816 spin_lock_irq(&np->lock); 3012 spin_lock_irq(&np->lock);
2817 np->in_shutdown = 1; 3013 np->in_shutdown = 1;
@@ -2829,31 +3025,13 @@ static int nv_close(struct net_device *dev)
2829 3025
2830 /* disable interrupts on the nic or we will lock up */ 3026 /* disable interrupts on the nic or we will lock up */
2831 base = get_hwbase(dev); 3027 base = get_hwbase(dev);
2832 if (np->msi_flags & NV_MSI_X_ENABLED) { 3028 nv_disable_hw_interrupts(dev, np->irqmask);
2833 writel(np->irqmask, base + NvRegIrqMask);
2834 } else {
2835 if (np->msi_flags & NV_MSI_ENABLED)
2836 writel(0, base + NvRegMSIIrqMask);
2837 writel(0, base + NvRegIrqMask);
2838 }
2839 pci_push(base); 3029 pci_push(base);
2840 dprintk(KERN_INFO "%s: Irqmask is zero again\n", dev->name); 3030 dprintk(KERN_INFO "%s: Irqmask is zero again\n", dev->name);
2841 3031
2842 spin_unlock_irq(&np->lock); 3032 spin_unlock_irq(&np->lock);
2843 3033
2844 if (np->msi_flags & NV_MSI_X_ENABLED) { 3034 nv_free_irq(dev);
2845 for (i = 0; i < (np->msi_flags & NV_MSI_X_VECTORS_MASK); i++) {
2846 free_irq(np->msi_x_entry[i].vector, dev);
2847 }
2848 pci_disable_msix(np->pci_dev);
2849 np->msi_flags &= ~NV_MSI_X_ENABLED;
2850 } else {
2851 free_irq(np->pci_dev->irq, dev);
2852 if (np->msi_flags & NV_MSI_ENABLED) {
2853 pci_disable_msi(np->pci_dev);
2854 np->msi_flags &= ~NV_MSI_ENABLED;
2855 }
2856 }
2857 3035
2858 drain_ring(dev); 3036 drain_ring(dev);
2859 3037
@@ -2878,6 +3056,7 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
2878 unsigned long addr; 3056 unsigned long addr;
2879 u8 __iomem *base; 3057 u8 __iomem *base;
2880 int err, i; 3058 int err, i;
3059 u32 powerstate;
2881 3060
2882 dev = alloc_etherdev(sizeof(struct fe_priv)); 3061 dev = alloc_etherdev(sizeof(struct fe_priv));
2883 err = -ENOMEM; 3062 err = -ENOMEM;
@@ -2910,6 +3089,11 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
2910 if (err < 0) 3089 if (err < 0)
2911 goto out_disable; 3090 goto out_disable;
2912 3091
3092 if (id->driver_data & (DEV_HAS_VLAN|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL))
3093 np->register_size = NV_PCI_REGSZ_VER2;
3094 else
3095 np->register_size = NV_PCI_REGSZ_VER1;
3096
2913 err = -EINVAL; 3097 err = -EINVAL;
2914 addr = 0; 3098 addr = 0;
2915 for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { 3099 for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
@@ -2918,7 +3102,7 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
2918 pci_resource_len(pci_dev, i), 3102 pci_resource_len(pci_dev, i),
2919 pci_resource_flags(pci_dev, i)); 3103 pci_resource_flags(pci_dev, i));
2920 if (pci_resource_flags(pci_dev, i) & IORESOURCE_MEM && 3104 if (pci_resource_flags(pci_dev, i) & IORESOURCE_MEM &&
2921 pci_resource_len(pci_dev, i) >= NV_PCI_REGSZ) { 3105 pci_resource_len(pci_dev, i) >= np->register_size) {
2922 addr = pci_resource_start(pci_dev, i); 3106 addr = pci_resource_start(pci_dev, i);
2923 break; 3107 break;
2924 } 3108 }
@@ -2929,24 +3113,25 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
2929 goto out_relreg; 3113 goto out_relreg;
2930 } 3114 }
2931 3115
3116 /* copy of driver data */
3117 np->driver_data = id->driver_data;
3118
2932 /* handle different descriptor versions */ 3119 /* handle different descriptor versions */
2933 if (id->driver_data & DEV_HAS_HIGH_DMA) { 3120 if (id->driver_data & DEV_HAS_HIGH_DMA) {
2934 /* packet format 3: supports 40-bit addressing */ 3121 /* packet format 3: supports 40-bit addressing */
2935 np->desc_ver = DESC_VER_3; 3122 np->desc_ver = DESC_VER_3;
3123 np->txrxctl_bits = NVREG_TXRXCTL_DESC_3;
2936 if (pci_set_dma_mask(pci_dev, DMA_39BIT_MASK)) { 3124 if (pci_set_dma_mask(pci_dev, DMA_39BIT_MASK)) {
2937 printk(KERN_INFO "forcedeth: 64-bit DMA failed, using 32-bit addressing for device %s.\n", 3125 printk(KERN_INFO "forcedeth: 64-bit DMA failed, using 32-bit addressing for device %s.\n",
2938 pci_name(pci_dev)); 3126 pci_name(pci_dev));
2939 } else { 3127 } else {
2940 if (pci_set_consistent_dma_mask(pci_dev, 0x0000007fffffffffULL)) { 3128 dev->features |= NETIF_F_HIGHDMA;
2941 printk(KERN_INFO "forcedeth: 64-bit DMA (consistent) failed for device %s.\n", 3129 printk(KERN_INFO "forcedeth: using HIGHDMA\n");
2942 pci_name(pci_dev)); 3130 }
2943 goto out_relreg; 3131 if (pci_set_consistent_dma_mask(pci_dev, 0x0000007fffffffffULL)) {
2944 } else { 3132 printk(KERN_INFO "forcedeth: 64-bit DMA (consistent) failed for device %s.\n",
2945 dev->features |= NETIF_F_HIGHDMA; 3133 pci_name(pci_dev));
2946 printk(KERN_INFO "forcedeth: using HIGHDMA\n");
2947 }
2948 } 3134 }
2949 np->txrxctl_bits = NVREG_TXRXCTL_DESC_3;
2950 } else if (id->driver_data & DEV_HAS_LARGEDESC) { 3135 } else if (id->driver_data & DEV_HAS_LARGEDESC) {
2951 /* packet format 2: supports jumbo frames */ 3136 /* packet format 2: supports jumbo frames */
2952 np->desc_ver = DESC_VER_2; 3137 np->desc_ver = DESC_VER_2;
@@ -2986,7 +3171,7 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
2986 } 3171 }
2987 3172
2988 err = -ENOMEM; 3173 err = -ENOMEM;
2989 np->base = ioremap(addr, NV_PCI_REGSZ); 3174 np->base = ioremap(addr, np->register_size);
2990 if (!np->base) 3175 if (!np->base)
2991 goto out_relreg; 3176 goto out_relreg;
2992 dev->base_addr = (unsigned long)np->base; 3177 dev->base_addr = (unsigned long)np->base;
@@ -3062,6 +3247,20 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
3062 writel(0, base + NvRegWakeUpFlags); 3247 writel(0, base + NvRegWakeUpFlags);
3063 np->wolenabled = 0; 3248 np->wolenabled = 0;
3064 3249
3250 if (id->driver_data & DEV_HAS_POWER_CNTRL) {
3251 u8 revision_id;
3252 pci_read_config_byte(pci_dev, PCI_REVISION_ID, &revision_id);
3253
3254 /* take phy and nic out of low power mode */
3255 powerstate = readl(base + NvRegPowerState2);
3256 powerstate &= ~NVREG_POWERSTATE2_POWERUP_MASK;
3257 if ((id->device == PCI_DEVICE_ID_NVIDIA_NVENET_12 ||
3258 id->device == PCI_DEVICE_ID_NVIDIA_NVENET_13) &&
3259 revision_id >= 0xA3)
3260 powerstate |= NVREG_POWERSTATE2_POWERUP_REV_A3;
3261 writel(powerstate, base + NvRegPowerState2);
3262 }
3263
3065 if (np->desc_ver == DESC_VER_1) { 3264 if (np->desc_ver == DESC_VER_1) {
3066 np->tx_flags = NV_TX_VALID; 3265 np->tx_flags = NV_TX_VALID;
3067 } else { 3266 } else {
@@ -3223,19 +3422,19 @@ static struct pci_device_id pci_tbl[] = {
3223 }, 3422 },
3224 { /* MCP51 Ethernet Controller */ 3423 { /* MCP51 Ethernet Controller */
3225 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_12), 3424 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_12),
3226 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA, 3425 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL,
3227 }, 3426 },
3228 { /* MCP51 Ethernet Controller */ 3427 { /* MCP51 Ethernet Controller */
3229 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_13), 3428 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_13),
3230 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA, 3429 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL,
3231 }, 3430 },
3232 { /* MCP55 Ethernet Controller */ 3431 { /* MCP55 Ethernet Controller */
3233 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_14), 3432 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_14),
3234 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X, 3433 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL,
3235 }, 3434 },
3236 { /* MCP55 Ethernet Controller */ 3435 { /* MCP55 Ethernet Controller */
3237 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_15), 3436 PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_15),
3238 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X, 3437 .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL,
3239 }, 3438 },
3240 {0,}, 3439 {0,},
3241}; 3440};
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index 771e25d8c417..218d31764c52 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -210,7 +210,8 @@ static int gfar_probe(struct platform_device *pdev)
210 goto regs_fail; 210 goto regs_fail;
211 } 211 }
212 212
213 spin_lock_init(&priv->lock); 213 spin_lock_init(&priv->txlock);
214 spin_lock_init(&priv->rxlock);
214 215
215 platform_set_drvdata(pdev, dev); 216 platform_set_drvdata(pdev, dev);
216 217
@@ -515,11 +516,13 @@ void stop_gfar(struct net_device *dev)
515 phy_stop(priv->phydev); 516 phy_stop(priv->phydev);
516 517
517 /* Lock it down */ 518 /* Lock it down */
518 spin_lock_irqsave(&priv->lock, flags); 519 spin_lock_irqsave(&priv->txlock, flags);
520 spin_lock(&priv->rxlock);
519 521
520 gfar_halt(dev); 522 gfar_halt(dev);
521 523
522 spin_unlock_irqrestore(&priv->lock, flags); 524 spin_unlock(&priv->rxlock);
525 spin_unlock_irqrestore(&priv->txlock, flags);
523 526
524 /* Free the IRQs */ 527 /* Free the IRQs */
525 if (priv->einfo->device_flags & FSL_GIANFAR_DEV_HAS_MULTI_INTR) { 528 if (priv->einfo->device_flags & FSL_GIANFAR_DEV_HAS_MULTI_INTR) {
@@ -605,14 +608,15 @@ void gfar_start(struct net_device *dev)
605 tempval |= DMACTRL_INIT_SETTINGS; 608 tempval |= DMACTRL_INIT_SETTINGS;
606 gfar_write(&priv->regs->dmactrl, tempval); 609 gfar_write(&priv->regs->dmactrl, tempval);
607 610
608 /* Clear THLT, so that the DMA starts polling now */
609 gfar_write(&regs->tstat, TSTAT_CLEAR_THALT);
610
611 /* Make sure we aren't stopped */ 611 /* Make sure we aren't stopped */
612 tempval = gfar_read(&priv->regs->dmactrl); 612 tempval = gfar_read(&priv->regs->dmactrl);
613 tempval &= ~(DMACTRL_GRS | DMACTRL_GTS); 613 tempval &= ~(DMACTRL_GRS | DMACTRL_GTS);
614 gfar_write(&priv->regs->dmactrl, tempval); 614 gfar_write(&priv->regs->dmactrl, tempval);
615 615
616 /* Clear THLT/RHLT, so that the DMA starts polling now */
617 gfar_write(&regs->tstat, TSTAT_CLEAR_THALT);
618 gfar_write(&regs->rstat, RSTAT_CLEAR_RHALT);
619
616 /* Unmask the interrupts we look for */ 620 /* Unmask the interrupts we look for */
617 gfar_write(&regs->imask, IMASK_DEFAULT); 621 gfar_write(&regs->imask, IMASK_DEFAULT);
618} 622}
@@ -928,12 +932,13 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev)
928 struct txfcb *fcb = NULL; 932 struct txfcb *fcb = NULL;
929 struct txbd8 *txbdp; 933 struct txbd8 *txbdp;
930 u16 status; 934 u16 status;
935 unsigned long flags;
931 936
932 /* Update transmit stats */ 937 /* Update transmit stats */
933 priv->stats.tx_bytes += skb->len; 938 priv->stats.tx_bytes += skb->len;
934 939
935 /* Lock priv now */ 940 /* Lock priv now */
936 spin_lock_irq(&priv->lock); 941 spin_lock_irqsave(&priv->txlock, flags);
937 942
938 /* Point at the first free tx descriptor */ 943 /* Point at the first free tx descriptor */
939 txbdp = priv->cur_tx; 944 txbdp = priv->cur_tx;
@@ -1004,7 +1009,7 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev)
1004 gfar_write(&priv->regs->tstat, TSTAT_CLEAR_THALT); 1009 gfar_write(&priv->regs->tstat, TSTAT_CLEAR_THALT);
1005 1010
1006 /* Unlock priv */ 1011 /* Unlock priv */
1007 spin_unlock_irq(&priv->lock); 1012 spin_unlock_irqrestore(&priv->txlock, flags);
1008 1013
1009 return 0; 1014 return 0;
1010} 1015}
@@ -1049,7 +1054,7 @@ static void gfar_vlan_rx_register(struct net_device *dev,
1049 unsigned long flags; 1054 unsigned long flags;
1050 u32 tempval; 1055 u32 tempval;
1051 1056
1052 spin_lock_irqsave(&priv->lock, flags); 1057 spin_lock_irqsave(&priv->rxlock, flags);
1053 1058
1054 priv->vlgrp = grp; 1059 priv->vlgrp = grp;
1055 1060
@@ -1076,7 +1081,7 @@ static void gfar_vlan_rx_register(struct net_device *dev,
1076 gfar_write(&priv->regs->rctrl, tempval); 1081 gfar_write(&priv->regs->rctrl, tempval);
1077 } 1082 }
1078 1083
1079 spin_unlock_irqrestore(&priv->lock, flags); 1084 spin_unlock_irqrestore(&priv->rxlock, flags);
1080} 1085}
1081 1086
1082 1087
@@ -1085,12 +1090,12 @@ static void gfar_vlan_rx_kill_vid(struct net_device *dev, uint16_t vid)
1085 struct gfar_private *priv = netdev_priv(dev); 1090 struct gfar_private *priv = netdev_priv(dev);
1086 unsigned long flags; 1091 unsigned long flags;
1087 1092
1088 spin_lock_irqsave(&priv->lock, flags); 1093 spin_lock_irqsave(&priv->rxlock, flags);
1089 1094
1090 if (priv->vlgrp) 1095 if (priv->vlgrp)
1091 priv->vlgrp->vlan_devices[vid] = NULL; 1096 priv->vlgrp->vlan_devices[vid] = NULL;
1092 1097
1093 spin_unlock_irqrestore(&priv->lock, flags); 1098 spin_unlock_irqrestore(&priv->rxlock, flags);
1094} 1099}
1095 1100
1096 1101
@@ -1179,7 +1184,7 @@ static irqreturn_t gfar_transmit(int irq, void *dev_id, struct pt_regs *regs)
1179 gfar_write(&priv->regs->ievent, IEVENT_TX_MASK); 1184 gfar_write(&priv->regs->ievent, IEVENT_TX_MASK);
1180 1185
1181 /* Lock priv */ 1186 /* Lock priv */
1182 spin_lock(&priv->lock); 1187 spin_lock(&priv->txlock);
1183 bdp = priv->dirty_tx; 1188 bdp = priv->dirty_tx;
1184 while ((bdp->status & TXBD_READY) == 0) { 1189 while ((bdp->status & TXBD_READY) == 0) {
1185 /* If dirty_tx and cur_tx are the same, then either the */ 1190 /* If dirty_tx and cur_tx are the same, then either the */
@@ -1224,7 +1229,7 @@ static irqreturn_t gfar_transmit(int irq, void *dev_id, struct pt_regs *regs)
1224 else 1229 else
1225 gfar_write(&priv->regs->txic, 0); 1230 gfar_write(&priv->regs->txic, 0);
1226 1231
1227 spin_unlock(&priv->lock); 1232 spin_unlock(&priv->txlock);
1228 1233
1229 return IRQ_HANDLED; 1234 return IRQ_HANDLED;
1230} 1235}
@@ -1305,9 +1310,10 @@ irqreturn_t gfar_receive(int irq, void *dev_id, struct pt_regs *regs)
1305{ 1310{
1306 struct net_device *dev = (struct net_device *) dev_id; 1311 struct net_device *dev = (struct net_device *) dev_id;
1307 struct gfar_private *priv = netdev_priv(dev); 1312 struct gfar_private *priv = netdev_priv(dev);
1308
1309#ifdef CONFIG_GFAR_NAPI 1313#ifdef CONFIG_GFAR_NAPI
1310 u32 tempval; 1314 u32 tempval;
1315#else
1316 unsigned long flags;
1311#endif 1317#endif
1312 1318
1313 /* Clear IEVENT, so rx interrupt isn't called again 1319 /* Clear IEVENT, so rx interrupt isn't called again
@@ -1330,7 +1336,7 @@ irqreturn_t gfar_receive(int irq, void *dev_id, struct pt_regs *regs)
1330 } 1336 }
1331#else 1337#else
1332 1338
1333 spin_lock(&priv->lock); 1339 spin_lock_irqsave(&priv->rxlock, flags);
1334 gfar_clean_rx_ring(dev, priv->rx_ring_size); 1340 gfar_clean_rx_ring(dev, priv->rx_ring_size);
1335 1341
1336 /* If we are coalescing interrupts, update the timer */ 1342 /* If we are coalescing interrupts, update the timer */
@@ -1341,7 +1347,7 @@ irqreturn_t gfar_receive(int irq, void *dev_id, struct pt_regs *regs)
1341 else 1347 else
1342 gfar_write(&priv->regs->rxic, 0); 1348 gfar_write(&priv->regs->rxic, 0);
1343 1349
1344 spin_unlock(&priv->lock); 1350 spin_unlock_irqrestore(&priv->rxlock, flags);
1345#endif 1351#endif
1346 1352
1347 return IRQ_HANDLED; 1353 return IRQ_HANDLED;
@@ -1490,13 +1496,6 @@ int gfar_clean_rx_ring(struct net_device *dev, int rx_work_limit)
1490 /* Update the current rxbd pointer to be the next one */ 1496 /* Update the current rxbd pointer to be the next one */
1491 priv->cur_rx = bdp; 1497 priv->cur_rx = bdp;
1492 1498
1493 /* If no packets have arrived since the
1494 * last one we processed, clear the IEVENT RX and
1495 * BSY bits so that another interrupt won't be
1496 * generated when we set IMASK */
1497 if (bdp->status & RXBD_EMPTY)
1498 gfar_write(&priv->regs->ievent, IEVENT_RX_MASK);
1499
1500 return howmany; 1499 return howmany;
1501} 1500}
1502 1501
@@ -1516,7 +1515,7 @@ static int gfar_poll(struct net_device *dev, int *budget)
1516 rx_work_limit -= howmany; 1515 rx_work_limit -= howmany;
1517 *budget -= howmany; 1516 *budget -= howmany;
1518 1517
1519 if (rx_work_limit >= 0) { 1518 if (rx_work_limit > 0) {
1520 netif_rx_complete(dev); 1519 netif_rx_complete(dev);
1521 1520
1522 /* Clear the halt bit in RSTAT */ 1521 /* Clear the halt bit in RSTAT */
@@ -1533,7 +1532,8 @@ static int gfar_poll(struct net_device *dev, int *budget)
1533 gfar_write(&priv->regs->rxic, 0); 1532 gfar_write(&priv->regs->rxic, 0);
1534 } 1533 }
1535 1534
1536 return (rx_work_limit < 0) ? 1 : 0; 1535 /* Return 1 if there's more work to do */
1536 return (rx_work_limit > 0) ? 0 : 1;
1537} 1537}
1538#endif 1538#endif
1539 1539
@@ -1629,7 +1629,7 @@ static void adjust_link(struct net_device *dev)
1629 struct phy_device *phydev = priv->phydev; 1629 struct phy_device *phydev = priv->phydev;
1630 int new_state = 0; 1630 int new_state = 0;
1631 1631
1632 spin_lock_irqsave(&priv->lock, flags); 1632 spin_lock_irqsave(&priv->txlock, flags);
1633 if (phydev->link) { 1633 if (phydev->link) {
1634 u32 tempval = gfar_read(&regs->maccfg2); 1634 u32 tempval = gfar_read(&regs->maccfg2);
1635 u32 ecntrl = gfar_read(&regs->ecntrl); 1635 u32 ecntrl = gfar_read(&regs->ecntrl);
@@ -1694,7 +1694,7 @@ static void adjust_link(struct net_device *dev)
1694 if (new_state && netif_msg_link(priv)) 1694 if (new_state && netif_msg_link(priv))
1695 phy_print_status(phydev); 1695 phy_print_status(phydev);
1696 1696
1697 spin_unlock_irqrestore(&priv->lock, flags); 1697 spin_unlock_irqrestore(&priv->txlock, flags);
1698} 1698}
1699 1699
1700/* Update the hash table based on the current list of multicast 1700/* Update the hash table based on the current list of multicast
diff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h
index d37d5401be6e..127c98cf3336 100644
--- a/drivers/net/gianfar.h
+++ b/drivers/net/gianfar.h
@@ -656,43 +656,62 @@ struct gfar {
656 * the buffer descriptor determines the actual condition. 656 * the buffer descriptor determines the actual condition.
657 */ 657 */
658struct gfar_private { 658struct gfar_private {
659 /* pointers to arrays of skbuffs for tx and rx */ 659 /* Fields controlled by TX lock */
660 spinlock_t txlock;
661
662 /* Pointer to the array of skbuffs */
660 struct sk_buff ** tx_skbuff; 663 struct sk_buff ** tx_skbuff;
661 struct sk_buff ** rx_skbuff;
662 664
663 /* indices pointing to the next free sbk in skb arrays */ 665 /* next free skb in the array */
664 u16 skb_curtx; 666 u16 skb_curtx;
665 u16 skb_currx;
666 667
667 /* index of the first skb which hasn't been transmitted 668 /* First skb in line to be transmitted */
668 * yet. */
669 u16 skb_dirtytx; 669 u16 skb_dirtytx;
670 670
671 /* Configuration info for the coalescing features */ 671 /* Configuration info for the coalescing features */
672 unsigned char txcoalescing; 672 unsigned char txcoalescing;
673 unsigned short txcount; 673 unsigned short txcount;
674 unsigned short txtime; 674 unsigned short txtime;
675
676 /* Buffer descriptor pointers */
677 struct txbd8 *tx_bd_base; /* First tx buffer descriptor */
678 struct txbd8 *cur_tx; /* Next free ring entry */
679 struct txbd8 *dirty_tx; /* First buffer in line
680 to be transmitted */
681 unsigned int tx_ring_size;
682
683 /* RX Locked fields */
684 spinlock_t rxlock;
685
686 /* skb array and index */
687 struct sk_buff ** rx_skbuff;
688 u16 skb_currx;
689
690 /* RX Coalescing values */
675 unsigned char rxcoalescing; 691 unsigned char rxcoalescing;
676 unsigned short rxcount; 692 unsigned short rxcount;
677 unsigned short rxtime; 693 unsigned short rxtime;
678 694
679 /* GFAR addresses */ 695 struct rxbd8 *rx_bd_base; /* First Rx buffers */
680 struct rxbd8 *rx_bd_base; /* Base addresses of Rx and Tx Buffers */
681 struct txbd8 *tx_bd_base;
682 struct rxbd8 *cur_rx; /* Next free rx ring entry */ 696 struct rxbd8 *cur_rx; /* Next free rx ring entry */
683 struct txbd8 *cur_tx; /* Next free ring entry */ 697
684 struct txbd8 *dirty_tx; /* The Ring entry to be freed. */ 698 /* RX parameters */
685 struct gfar __iomem *regs; /* Pointer to the GFAR memory mapped Registers */ 699 unsigned int rx_ring_size;
686 u32 __iomem *hash_regs[16];
687 int hash_width;
688 struct net_device_stats stats; /* linux network statistics */
689 struct gfar_extra_stats extra_stats;
690 spinlock_t lock;
691 unsigned int rx_buffer_size; 700 unsigned int rx_buffer_size;
692 unsigned int rx_stash_size; 701 unsigned int rx_stash_size;
693 unsigned int rx_stash_index; 702 unsigned int rx_stash_index;
694 unsigned int tx_ring_size; 703
695 unsigned int rx_ring_size; 704 struct vlan_group *vlgrp;
705
706 /* Unprotected fields */
707 /* Pointer to the GFAR memory mapped Registers */
708 struct gfar __iomem *regs;
709
710 /* Hash registers and their width */
711 u32 __iomem *hash_regs[16];
712 int hash_width;
713
714 /* global parameters */
696 unsigned int fifo_threshold; 715 unsigned int fifo_threshold;
697 unsigned int fifo_starve; 716 unsigned int fifo_starve;
698 unsigned int fifo_starve_off; 717 unsigned int fifo_starve_off;
@@ -702,13 +721,15 @@ struct gfar_private {
702 extended_hash:1, 721 extended_hash:1,
703 bd_stash_en:1; 722 bd_stash_en:1;
704 unsigned short padding; 723 unsigned short padding;
705 struct vlan_group *vlgrp; 724
706 /* Info structure initialized by board setup code */
707 unsigned int interruptTransmit; 725 unsigned int interruptTransmit;
708 unsigned int interruptReceive; 726 unsigned int interruptReceive;
709 unsigned int interruptError; 727 unsigned int interruptError;
728
729 /* info structure initialized by platform code */
710 struct gianfar_platform_data *einfo; 730 struct gianfar_platform_data *einfo;
711 731
732 /* PHY stuff */
712 struct phy_device *phydev; 733 struct phy_device *phydev;
713 struct mii_bus *mii_bus; 734 struct mii_bus *mii_bus;
714 int oldspeed; 735 int oldspeed;
@@ -716,6 +737,10 @@ struct gfar_private {
716 int oldlink; 737 int oldlink;
717 738
718 uint32_t msg_enable; 739 uint32_t msg_enable;
740
741 /* Network Statistics */
742 struct net_device_stats stats;
743 struct gfar_extra_stats extra_stats;
719}; 744};
720 745
721static inline u32 gfar_read(volatile unsigned __iomem *addr) 746static inline u32 gfar_read(volatile unsigned __iomem *addr)
diff --git a/drivers/net/gianfar_ethtool.c b/drivers/net/gianfar_ethtool.c
index 5de7b2e259dc..d69698c695ef 100644
--- a/drivers/net/gianfar_ethtool.c
+++ b/drivers/net/gianfar_ethtool.c
@@ -455,10 +455,14 @@ static int gfar_sringparam(struct net_device *dev, struct ethtool_ringparam *rva
455 455
456 /* Halt TX and RX, and process the frames which 456 /* Halt TX and RX, and process the frames which
457 * have already been received */ 457 * have already been received */
458 spin_lock_irqsave(&priv->lock, flags); 458 spin_lock_irqsave(&priv->txlock, flags);
459 spin_lock(&priv->rxlock);
460
459 gfar_halt(dev); 461 gfar_halt(dev);
460 gfar_clean_rx_ring(dev, priv->rx_ring_size); 462 gfar_clean_rx_ring(dev, priv->rx_ring_size);
461 spin_unlock_irqrestore(&priv->lock, flags); 463
464 spin_unlock(&priv->rxlock);
465 spin_unlock_irqrestore(&priv->txlock, flags);
462 466
463 /* Now we take down the rings to rebuild them */ 467 /* Now we take down the rings to rebuild them */
464 stop_gfar(dev); 468 stop_gfar(dev);
@@ -488,10 +492,14 @@ static int gfar_set_rx_csum(struct net_device *dev, uint32_t data)
488 492
489 /* Halt TX and RX, and process the frames which 493 /* Halt TX and RX, and process the frames which
490 * have already been received */ 494 * have already been received */
491 spin_lock_irqsave(&priv->lock, flags); 495 spin_lock_irqsave(&priv->txlock, flags);
496 spin_lock(&priv->rxlock);
497
492 gfar_halt(dev); 498 gfar_halt(dev);
493 gfar_clean_rx_ring(dev, priv->rx_ring_size); 499 gfar_clean_rx_ring(dev, priv->rx_ring_size);
494 spin_unlock_irqrestore(&priv->lock, flags); 500
501 spin_unlock(&priv->rxlock);
502 spin_unlock_irqrestore(&priv->txlock, flags);
495 503
496 /* Now we take down the rings to rebuild them */ 504 /* Now we take down the rings to rebuild them */
497 stop_gfar(dev); 505 stop_gfar(dev);
@@ -523,7 +531,7 @@ static int gfar_set_tx_csum(struct net_device *dev, uint32_t data)
523 if (!(priv->einfo->device_flags & FSL_GIANFAR_DEV_HAS_CSUM)) 531 if (!(priv->einfo->device_flags & FSL_GIANFAR_DEV_HAS_CSUM))
524 return -EOPNOTSUPP; 532 return -EOPNOTSUPP;
525 533
526 spin_lock_irqsave(&priv->lock, flags); 534 spin_lock_irqsave(&priv->txlock, flags);
527 gfar_halt(dev); 535 gfar_halt(dev);
528 536
529 if (data) 537 if (data)
@@ -532,7 +540,7 @@ static int gfar_set_tx_csum(struct net_device *dev, uint32_t data)
532 dev->features &= ~NETIF_F_IP_CSUM; 540 dev->features &= ~NETIF_F_IP_CSUM;
533 541
534 gfar_start(dev); 542 gfar_start(dev);
535 spin_unlock_irqrestore(&priv->lock, flags); 543 spin_unlock_irqrestore(&priv->txlock, flags);
536 544
537 return 0; 545 return 0;
538} 546}
diff --git a/drivers/net/gianfar_sysfs.c b/drivers/net/gianfar_sysfs.c
index 51ef181b1368..a6d5c43199cb 100644
--- a/drivers/net/gianfar_sysfs.c
+++ b/drivers/net/gianfar_sysfs.c
@@ -82,7 +82,7 @@ static ssize_t gfar_set_bd_stash(struct class_device *cdev,
82 else 82 else
83 return count; 83 return count;
84 84
85 spin_lock_irqsave(&priv->lock, flags); 85 spin_lock_irqsave(&priv->rxlock, flags);
86 86
87 /* Set the new stashing value */ 87 /* Set the new stashing value */
88 priv->bd_stash_en = new_setting; 88 priv->bd_stash_en = new_setting;
@@ -96,7 +96,7 @@ static ssize_t gfar_set_bd_stash(struct class_device *cdev,
96 96
97 gfar_write(&priv->regs->attr, temp); 97 gfar_write(&priv->regs->attr, temp);
98 98
99 spin_unlock_irqrestore(&priv->lock, flags); 99 spin_unlock_irqrestore(&priv->rxlock, flags);
100 100
101 return count; 101 return count;
102} 102}
@@ -118,7 +118,7 @@ static ssize_t gfar_set_rx_stash_size(struct class_device *cdev,
118 u32 temp; 118 u32 temp;
119 unsigned long flags; 119 unsigned long flags;
120 120
121 spin_lock_irqsave(&priv->lock, flags); 121 spin_lock_irqsave(&priv->rxlock, flags);
122 if (length > priv->rx_buffer_size) 122 if (length > priv->rx_buffer_size)
123 return count; 123 return count;
124 124
@@ -142,7 +142,7 @@ static ssize_t gfar_set_rx_stash_size(struct class_device *cdev,
142 142
143 gfar_write(&priv->regs->attr, temp); 143 gfar_write(&priv->regs->attr, temp);
144 144
145 spin_unlock_irqrestore(&priv->lock, flags); 145 spin_unlock_irqrestore(&priv->rxlock, flags);
146 146
147 return count; 147 return count;
148} 148}
@@ -166,7 +166,7 @@ static ssize_t gfar_set_rx_stash_index(struct class_device *cdev,
166 u32 temp; 166 u32 temp;
167 unsigned long flags; 167 unsigned long flags;
168 168
169 spin_lock_irqsave(&priv->lock, flags); 169 spin_lock_irqsave(&priv->rxlock, flags);
170 if (index > priv->rx_stash_size) 170 if (index > priv->rx_stash_size)
171 return count; 171 return count;
172 172
@@ -180,7 +180,7 @@ static ssize_t gfar_set_rx_stash_index(struct class_device *cdev,
180 temp |= ATTRELI_EI(index); 180 temp |= ATTRELI_EI(index);
181 gfar_write(&priv->regs->attreli, flags); 181 gfar_write(&priv->regs->attreli, flags);
182 182
183 spin_unlock_irqrestore(&priv->lock, flags); 183 spin_unlock_irqrestore(&priv->rxlock, flags);
184 184
185 return count; 185 return count;
186} 186}
@@ -205,7 +205,7 @@ static ssize_t gfar_set_fifo_threshold(struct class_device *cdev,
205 if (length > GFAR_MAX_FIFO_THRESHOLD) 205 if (length > GFAR_MAX_FIFO_THRESHOLD)
206 return count; 206 return count;
207 207
208 spin_lock_irqsave(&priv->lock, flags); 208 spin_lock_irqsave(&priv->txlock, flags);
209 209
210 priv->fifo_threshold = length; 210 priv->fifo_threshold = length;
211 211
@@ -214,7 +214,7 @@ static ssize_t gfar_set_fifo_threshold(struct class_device *cdev,
214 temp |= length; 214 temp |= length;
215 gfar_write(&priv->regs->fifo_tx_thr, temp); 215 gfar_write(&priv->regs->fifo_tx_thr, temp);
216 216
217 spin_unlock_irqrestore(&priv->lock, flags); 217 spin_unlock_irqrestore(&priv->txlock, flags);
218 218
219 return count; 219 return count;
220} 220}
@@ -240,7 +240,7 @@ static ssize_t gfar_set_fifo_starve(struct class_device *cdev,
240 if (num > GFAR_MAX_FIFO_STARVE) 240 if (num > GFAR_MAX_FIFO_STARVE)
241 return count; 241 return count;
242 242
243 spin_lock_irqsave(&priv->lock, flags); 243 spin_lock_irqsave(&priv->txlock, flags);
244 244
245 priv->fifo_starve = num; 245 priv->fifo_starve = num;
246 246
@@ -249,7 +249,7 @@ static ssize_t gfar_set_fifo_starve(struct class_device *cdev,
249 temp |= num; 249 temp |= num;
250 gfar_write(&priv->regs->fifo_tx_starve, temp); 250 gfar_write(&priv->regs->fifo_tx_starve, temp);
251 251
252 spin_unlock_irqrestore(&priv->lock, flags); 252 spin_unlock_irqrestore(&priv->txlock, flags);
253 253
254 return count; 254 return count;
255} 255}
@@ -274,7 +274,7 @@ static ssize_t gfar_set_fifo_starve_off(struct class_device *cdev,
274 if (num > GFAR_MAX_FIFO_STARVE_OFF) 274 if (num > GFAR_MAX_FIFO_STARVE_OFF)
275 return count; 275 return count;
276 276
277 spin_lock_irqsave(&priv->lock, flags); 277 spin_lock_irqsave(&priv->txlock, flags);
278 278
279 priv->fifo_starve_off = num; 279 priv->fifo_starve_off = num;
280 280
@@ -283,7 +283,7 @@ static ssize_t gfar_set_fifo_starve_off(struct class_device *cdev,
283 temp |= num; 283 temp |= num;
284 gfar_write(&priv->regs->fifo_tx_starve_shutoff, temp); 284 gfar_write(&priv->regs->fifo_tx_starve_shutoff, temp);
285 285
286 spin_unlock_irqrestore(&priv->lock, flags); 286 spin_unlock_irqrestore(&priv->txlock, flags);
287 287
288 return count; 288 return count;
289} 289}
diff --git a/drivers/net/hamradio/dmascc.c b/drivers/net/hamradio/dmascc.c
index 79a8fbcf5f93..0d5fccc984bb 100644
--- a/drivers/net/hamradio/dmascc.c
+++ b/drivers/net/hamradio/dmascc.c
@@ -582,7 +582,6 @@ static int __init setup_adapter(int card_base, int type, int n)
582 INIT_WORK(&priv->rx_work, rx_bh, priv); 582 INIT_WORK(&priv->rx_work, rx_bh, priv);
583 dev->priv = priv; 583 dev->priv = priv;
584 sprintf(dev->name, "dmascc%i", 2 * n + i); 584 sprintf(dev->name, "dmascc%i", 2 * n + i);
585 SET_MODULE_OWNER(dev);
586 dev->base_addr = card_base; 585 dev->base_addr = card_base;
587 dev->irq = irq; 586 dev->irq = irq;
588 dev->open = scc_open; 587 dev->open = scc_open;
diff --git a/drivers/net/hamradio/scc.c b/drivers/net/hamradio/scc.c
index 6ace0e914fd1..5927784df3f9 100644
--- a/drivers/net/hamradio/scc.c
+++ b/drivers/net/hamradio/scc.c
@@ -1550,7 +1550,6 @@ static unsigned char ax25_nocall[AX25_ADDR_LEN] =
1550 1550
1551static void scc_net_setup(struct net_device *dev) 1551static void scc_net_setup(struct net_device *dev)
1552{ 1552{
1553 SET_MODULE_OWNER(dev);
1554 dev->tx_queue_len = 16; /* should be enough... */ 1553 dev->tx_queue_len = 16; /* should be enough... */
1555 1554
1556 dev->open = scc_net_open; 1555 dev->open = scc_net_open;
diff --git a/drivers/net/hamradio/yam.c b/drivers/net/hamradio/yam.c
index fe22479eb202..b49884048caa 100644
--- a/drivers/net/hamradio/yam.c
+++ b/drivers/net/hamradio/yam.c
@@ -1098,7 +1098,6 @@ static void yam_setup(struct net_device *dev)
1098 1098
1099 dev->base_addr = yp->iobase; 1099 dev->base_addr = yp->iobase;
1100 dev->irq = yp->irq; 1100 dev->irq = yp->irq;
1101 SET_MODULE_OWNER(dev);
1102 1101
1103 dev->open = yam_open; 1102 dev->open = yam_open;
1104 dev->stop = yam_close; 1103 dev->stop = yam_close;
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
index ea62a3e7d586..411f4d809c47 100644
--- a/drivers/net/mv643xx_eth.c
+++ b/drivers/net/mv643xx_eth.c
@@ -1419,6 +1419,8 @@ static int mv643xx_eth_probe(struct platform_device *pdev)
1419 mv643xx_eth_update_pscr(dev, &cmd); 1419 mv643xx_eth_update_pscr(dev, &cmd);
1420 mv643xx_set_settings(dev, &cmd); 1420 mv643xx_set_settings(dev, &cmd);
1421 1421
1422 SET_MODULE_OWNER(dev);
1423 SET_NETDEV_DEV(dev, &pdev->dev);
1422 err = register_netdev(dev); 1424 err = register_netdev(dev);
1423 if (err) 1425 if (err)
1424 goto out; 1426 goto out;
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 67b0eab16589..227df9876a2c 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -51,7 +51,7 @@
51#include "sky2.h" 51#include "sky2.h"
52 52
53#define DRV_NAME "sky2" 53#define DRV_NAME "sky2"
54#define DRV_VERSION "1.1" 54#define DRV_VERSION "1.2"
55#define PFX DRV_NAME " " 55#define PFX DRV_NAME " "
56 56
57/* 57/*
@@ -925,8 +925,7 @@ static inline struct sk_buff *sky2_alloc_skb(unsigned int size, gfp_t gfp_mask)
925 skb = alloc_skb(size + RX_SKB_ALIGN, gfp_mask); 925 skb = alloc_skb(size + RX_SKB_ALIGN, gfp_mask);
926 if (likely(skb)) { 926 if (likely(skb)) {
927 unsigned long p = (unsigned long) skb->data; 927 unsigned long p = (unsigned long) skb->data;
928 skb_reserve(skb, 928 skb_reserve(skb, ALIGN(p, RX_SKB_ALIGN) - p);
929 ((p + RX_SKB_ALIGN - 1) & ~(RX_SKB_ALIGN - 1)) - p);
930 } 929 }
931 930
932 return skb; 931 return skb;
@@ -1686,13 +1685,12 @@ static void sky2_tx_timeout(struct net_device *dev)
1686} 1685}
1687 1686
1688 1687
1689#define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
1690/* Want receive buffer size to be multiple of 64 bits 1688/* Want receive buffer size to be multiple of 64 bits
1691 * and incl room for vlan and truncation 1689 * and incl room for vlan and truncation
1692 */ 1690 */
1693static inline unsigned sky2_buf_size(int mtu) 1691static inline unsigned sky2_buf_size(int mtu)
1694{ 1692{
1695 return roundup(mtu + ETH_HLEN + VLAN_HLEN, 8) + 8; 1693 return ALIGN(mtu + ETH_HLEN + VLAN_HLEN, 8) + 8;
1696} 1694}
1697 1695
1698static int sky2_change_mtu(struct net_device *dev, int new_mtu) 1696static int sky2_change_mtu(struct net_device *dev, int new_mtu)
@@ -2086,6 +2084,20 @@ static void sky2_descriptor_error(struct sky2_hw *hw, unsigned port,
2086 } 2084 }
2087} 2085}
2088 2086
2087/* If idle then force a fake soft NAPI poll once a second
2088 * to work around cases where sharing an edge triggered interrupt.
2089 */
2090static void sky2_idle(unsigned long arg)
2091{
2092 struct net_device *dev = (struct net_device *) arg;
2093
2094 local_irq_disable();
2095 if (__netif_rx_schedule_prep(dev))
2096 __netif_rx_schedule(dev);
2097 local_irq_enable();
2098}
2099
2100
2089static int sky2_poll(struct net_device *dev0, int *budget) 2101static int sky2_poll(struct net_device *dev0, int *budget)
2090{ 2102{
2091 struct sky2_hw *hw = ((struct sky2_port *) netdev_priv(dev0))->hw; 2103 struct sky2_hw *hw = ((struct sky2_port *) netdev_priv(dev0))->hw;
@@ -2093,6 +2105,7 @@ static int sky2_poll(struct net_device *dev0, int *budget)
2093 int work_done = 0; 2105 int work_done = 0;
2094 u32 status = sky2_read32(hw, B0_Y2_SP_EISR); 2106 u32 status = sky2_read32(hw, B0_Y2_SP_EISR);
2095 2107
2108 restart_poll:
2096 if (unlikely(status & ~Y2_IS_STAT_BMU)) { 2109 if (unlikely(status & ~Y2_IS_STAT_BMU)) {
2097 if (status & Y2_IS_HW_ERR) 2110 if (status & Y2_IS_HW_ERR)
2098 sky2_hw_intr(hw); 2111 sky2_hw_intr(hw);
@@ -2123,7 +2136,7 @@ static int sky2_poll(struct net_device *dev0, int *budget)
2123 } 2136 }
2124 2137
2125 if (status & Y2_IS_STAT_BMU) { 2138 if (status & Y2_IS_STAT_BMU) {
2126 work_done = sky2_status_intr(hw, work_limit); 2139 work_done += sky2_status_intr(hw, work_limit - work_done);
2127 *budget -= work_done; 2140 *budget -= work_done;
2128 dev0->quota -= work_done; 2141 dev0->quota -= work_done;
2129 2142
@@ -2133,9 +2146,24 @@ static int sky2_poll(struct net_device *dev0, int *budget)
2133 sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ); 2146 sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ);
2134 } 2147 }
2135 2148
2136 netif_rx_complete(dev0); 2149 mod_timer(&hw->idle_timer, jiffies + HZ);
2150
2151 local_irq_disable();
2152 __netif_rx_complete(dev0);
2137 2153
2138 status = sky2_read32(hw, B0_Y2_SP_LISR); 2154 status = sky2_read32(hw, B0_Y2_SP_LISR);
2155
2156 if (unlikely(status)) {
2157 /* More work pending, try and keep going */
2158 if (__netif_rx_schedule_prep(dev0)) {
2159 __netif_rx_reschedule(dev0, work_done);
2160 status = sky2_read32(hw, B0_Y2_SP_EISR);
2161 local_irq_enable();
2162 goto restart_poll;
2163 }
2164 }
2165
2166 local_irq_enable();
2139 return 0; 2167 return 0;
2140} 2168}
2141 2169
@@ -2153,8 +2181,6 @@ static irqreturn_t sky2_intr(int irq, void *dev_id, struct pt_regs *regs)
2153 prefetch(&hw->st_le[hw->st_idx]); 2181 prefetch(&hw->st_le[hw->st_idx]);
2154 if (likely(__netif_rx_schedule_prep(dev0))) 2182 if (likely(__netif_rx_schedule_prep(dev0)))
2155 __netif_rx_schedule(dev0); 2183 __netif_rx_schedule(dev0);
2156 else
2157 printk(KERN_DEBUG PFX "irq race detected\n");
2158 2184
2159 return IRQ_HANDLED; 2185 return IRQ_HANDLED;
2160} 2186}
@@ -2193,7 +2219,7 @@ static inline u32 sky2_clk2us(const struct sky2_hw *hw, u32 clk)
2193} 2219}
2194 2220
2195 2221
2196static int sky2_reset(struct sky2_hw *hw) 2222static int __devinit sky2_reset(struct sky2_hw *hw)
2197{ 2223{
2198 u16 status; 2224 u16 status;
2199 u8 t8, pmd_type; 2225 u8 t8, pmd_type;
@@ -3276,6 +3302,8 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
3276 3302
3277 sky2_write32(hw, B0_IMSK, Y2_IS_BASE); 3303 sky2_write32(hw, B0_IMSK, Y2_IS_BASE);
3278 3304
3305 setup_timer(&hw->idle_timer, sky2_idle, (unsigned long) dev);
3306
3279 pci_set_drvdata(pdev, hw); 3307 pci_set_drvdata(pdev, hw);
3280 3308
3281 return 0; 3309 return 0;
@@ -3311,13 +3339,15 @@ static void __devexit sky2_remove(struct pci_dev *pdev)
3311 if (!hw) 3339 if (!hw)
3312 return; 3340 return;
3313 3341
3342 del_timer_sync(&hw->idle_timer);
3343
3344 sky2_write32(hw, B0_IMSK, 0);
3314 dev0 = hw->dev[0]; 3345 dev0 = hw->dev[0];
3315 dev1 = hw->dev[1]; 3346 dev1 = hw->dev[1];
3316 if (dev1) 3347 if (dev1)
3317 unregister_netdev(dev1); 3348 unregister_netdev(dev1);
3318 unregister_netdev(dev0); 3349 unregister_netdev(dev0);
3319 3350
3320 sky2_write32(hw, B0_IMSK, 0);
3321 sky2_set_power_state(hw, PCI_D3hot); 3351 sky2_set_power_state(hw, PCI_D3hot);
3322 sky2_write16(hw, B0_Y2LED, LED_STAT_OFF); 3352 sky2_write16(hw, B0_Y2LED, LED_STAT_OFF);
3323 sky2_write8(hw, B0_CTST, CS_RST_SET); 3353 sky2_write8(hw, B0_CTST, CS_RST_SET);
diff --git a/drivers/net/sky2.h b/drivers/net/sky2.h
index 89dd18cd12f0..b026f5653f04 100644
--- a/drivers/net/sky2.h
+++ b/drivers/net/sky2.h
@@ -1880,6 +1880,8 @@ struct sky2_hw {
1880 struct sky2_status_le *st_le; 1880 struct sky2_status_le *st_le;
1881 u32 st_idx; 1881 u32 st_idx;
1882 dma_addr_t st_dma; 1882 dma_addr_t st_dma;
1883
1884 struct timer_list idle_timer;
1883 int msi_detected; 1885 int msi_detected;
1884 wait_queue_head_t msi_wait; 1886 wait_queue_head_t msi_wait;
1885}; 1887};
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index 73e271e59c6a..beeb612be98f 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -69,8 +69,8 @@
69 69
70#define DRV_MODULE_NAME "tg3" 70#define DRV_MODULE_NAME "tg3"
71#define PFX DRV_MODULE_NAME ": " 71#define PFX DRV_MODULE_NAME ": "
72#define DRV_MODULE_VERSION "3.56" 72#define DRV_MODULE_VERSION "3.57"
73#define DRV_MODULE_RELDATE "Apr 1, 2006" 73#define DRV_MODULE_RELDATE "Apr 28, 2006"
74 74
75#define TG3_DEF_MAC_MODE 0 75#define TG3_DEF_MAC_MODE 0
76#define TG3_DEF_RX_MODE 0 76#define TG3_DEF_RX_MODE 0
@@ -974,6 +974,8 @@ static int tg3_phy_reset_5703_4_5(struct tg3 *tp)
974 return err; 974 return err;
975} 975}
976 976
977static void tg3_link_report(struct tg3 *);
978
977/* This will reset the tigon3 PHY if there is no valid 979/* This will reset the tigon3 PHY if there is no valid
978 * link unless the FORCE argument is non-zero. 980 * link unless the FORCE argument is non-zero.
979 */ 981 */
@@ -987,6 +989,11 @@ static int tg3_phy_reset(struct tg3 *tp)
987 if (err != 0) 989 if (err != 0)
988 return -EBUSY; 990 return -EBUSY;
989 991
992 if (netif_running(tp->dev) && netif_carrier_ok(tp->dev)) {
993 netif_carrier_off(tp->dev);
994 tg3_link_report(tp);
995 }
996
990 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5703 || 997 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5703 ||
991 GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704 || 998 GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704 ||
992 GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5705) { 999 GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5705) {
@@ -1023,6 +1030,12 @@ out:
1023 tg3_writephy(tp, MII_TG3_DSP_RW_PORT, 0x14e2); 1030 tg3_writephy(tp, MII_TG3_DSP_RW_PORT, 0x14e2);
1024 tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x0400); 1031 tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x0400);
1025 } 1032 }
1033 else if (tp->tg3_flags2 & TG3_FLG2_PHY_JITTER_BUG) {
1034 tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x0c00);
1035 tg3_writephy(tp, MII_TG3_DSP_ADDRESS, 0x000a);
1036 tg3_writephy(tp, MII_TG3_DSP_RW_PORT, 0x010b);
1037 tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x0400);
1038 }
1026 /* Set Extended packet length bit (bit 14) on all chips that */ 1039 /* Set Extended packet length bit (bit 14) on all chips that */
1027 /* support jumbo frames */ 1040 /* support jumbo frames */
1028 if ((tp->phy_id & PHY_ID_MASK) == PHY_ID_BCM5401) { 1041 if ((tp->phy_id & PHY_ID_MASK) == PHY_ID_BCM5401) {
@@ -3531,7 +3544,7 @@ static irqreturn_t tg3_test_isr(int irq, void *dev_id,
3531 return IRQ_RETVAL(0); 3544 return IRQ_RETVAL(0);
3532} 3545}
3533 3546
3534static int tg3_init_hw(struct tg3 *); 3547static int tg3_init_hw(struct tg3 *, int);
3535static int tg3_halt(struct tg3 *, int, int); 3548static int tg3_halt(struct tg3 *, int, int);
3536 3549
3537#ifdef CONFIG_NET_POLL_CONTROLLER 3550#ifdef CONFIG_NET_POLL_CONTROLLER
@@ -3567,7 +3580,7 @@ static void tg3_reset_task(void *_data)
3567 tp->tg3_flags2 &= ~TG3_FLG2_RESTART_TIMER; 3580 tp->tg3_flags2 &= ~TG3_FLG2_RESTART_TIMER;
3568 3581
3569 tg3_halt(tp, RESET_KIND_SHUTDOWN, 0); 3582 tg3_halt(tp, RESET_KIND_SHUTDOWN, 0);
3570 tg3_init_hw(tp); 3583 tg3_init_hw(tp, 1);
3571 3584
3572 tg3_netif_start(tp); 3585 tg3_netif_start(tp);
3573 3586
@@ -4042,7 +4055,7 @@ static int tg3_change_mtu(struct net_device *dev, int new_mtu)
4042 4055
4043 tg3_set_mtu(dev, tp, new_mtu); 4056 tg3_set_mtu(dev, tp, new_mtu);
4044 4057
4045 tg3_init_hw(tp); 4058 tg3_init_hw(tp, 0);
4046 4059
4047 tg3_netif_start(tp); 4060 tg3_netif_start(tp);
4048 4061
@@ -5719,9 +5732,23 @@ static int tg3_set_mac_addr(struct net_device *dev, void *p)
5719 if (!netif_running(dev)) 5732 if (!netif_running(dev))
5720 return 0; 5733 return 0;
5721 5734
5722 spin_lock_bh(&tp->lock); 5735 if (tp->tg3_flags & TG3_FLAG_ENABLE_ASF) {
5723 __tg3_set_mac_addr(tp); 5736 /* Reset chip so that ASF can re-init any MAC addresses it
5724 spin_unlock_bh(&tp->lock); 5737 * needs.
5738 */
5739 tg3_netif_stop(tp);
5740 tg3_full_lock(tp, 1);
5741
5742 tg3_halt(tp, RESET_KIND_SHUTDOWN, 1);
5743 tg3_init_hw(tp, 0);
5744
5745 tg3_netif_start(tp);
5746 tg3_full_unlock(tp);
5747 } else {
5748 spin_lock_bh(&tp->lock);
5749 __tg3_set_mac_addr(tp);
5750 spin_unlock_bh(&tp->lock);
5751 }
5725 5752
5726 return 0; 5753 return 0;
5727} 5754}
@@ -5771,7 +5798,7 @@ static void __tg3_set_coalesce(struct tg3 *tp, struct ethtool_coalesce *ec)
5771} 5798}
5772 5799
5773/* tp->lock is held. */ 5800/* tp->lock is held. */
5774static int tg3_reset_hw(struct tg3 *tp) 5801static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
5775{ 5802{
5776 u32 val, rdmac_mode; 5803 u32 val, rdmac_mode;
5777 int i, err, limit; 5804 int i, err, limit;
@@ -5786,7 +5813,7 @@ static int tg3_reset_hw(struct tg3 *tp)
5786 tg3_abort_hw(tp, 1); 5813 tg3_abort_hw(tp, 1);
5787 } 5814 }
5788 5815
5789 if (tp->tg3_flags2 & TG3_FLG2_MII_SERDES) 5816 if ((tp->tg3_flags2 & TG3_FLG2_MII_SERDES) && reset_phy)
5790 tg3_phy_reset(tp); 5817 tg3_phy_reset(tp);
5791 5818
5792 err = tg3_chip_reset(tp); 5819 err = tg3_chip_reset(tp);
@@ -6327,7 +6354,7 @@ static int tg3_reset_hw(struct tg3 *tp)
6327 tw32(GRC_LOCAL_CTRL, tp->grc_local_ctrl); 6354 tw32(GRC_LOCAL_CTRL, tp->grc_local_ctrl);
6328 } 6355 }
6329 6356
6330 err = tg3_setup_phy(tp, 1); 6357 err = tg3_setup_phy(tp, reset_phy);
6331 if (err) 6358 if (err)
6332 return err; 6359 return err;
6333 6360
@@ -6400,7 +6427,7 @@ static int tg3_reset_hw(struct tg3 *tp)
6400/* Called at device open time to get the chip ready for 6427/* Called at device open time to get the chip ready for
6401 * packet processing. Invoked with tp->lock held. 6428 * packet processing. Invoked with tp->lock held.
6402 */ 6429 */
6403static int tg3_init_hw(struct tg3 *tp) 6430static int tg3_init_hw(struct tg3 *tp, int reset_phy)
6404{ 6431{
6405 int err; 6432 int err;
6406 6433
@@ -6413,7 +6440,7 @@ static int tg3_init_hw(struct tg3 *tp)
6413 6440
6414 tw32(TG3PCI_MEM_WIN_BASE_ADDR, 0); 6441 tw32(TG3PCI_MEM_WIN_BASE_ADDR, 0);
6415 6442
6416 err = tg3_reset_hw(tp); 6443 err = tg3_reset_hw(tp, reset_phy);
6417 6444
6418out: 6445out:
6419 return err; 6446 return err;
@@ -6683,7 +6710,7 @@ static int tg3_test_msi(struct tg3 *tp)
6683 tg3_full_lock(tp, 1); 6710 tg3_full_lock(tp, 1);
6684 6711
6685 tg3_halt(tp, RESET_KIND_SHUTDOWN, 1); 6712 tg3_halt(tp, RESET_KIND_SHUTDOWN, 1);
6686 err = tg3_init_hw(tp); 6713 err = tg3_init_hw(tp, 1);
6687 6714
6688 tg3_full_unlock(tp); 6715 tg3_full_unlock(tp);
6689 6716
@@ -6748,7 +6775,7 @@ static int tg3_open(struct net_device *dev)
6748 6775
6749 tg3_full_lock(tp, 0); 6776 tg3_full_lock(tp, 0);
6750 6777
6751 err = tg3_init_hw(tp); 6778 err = tg3_init_hw(tp, 1);
6752 if (err) { 6779 if (err) {
6753 tg3_halt(tp, RESET_KIND_SHUTDOWN, 1); 6780 tg3_halt(tp, RESET_KIND_SHUTDOWN, 1);
6754 tg3_free_rings(tp); 6781 tg3_free_rings(tp);
@@ -7839,7 +7866,7 @@ static int tg3_set_ringparam(struct net_device *dev, struct ethtool_ringparam *e
7839 7866
7840 if (netif_running(dev)) { 7867 if (netif_running(dev)) {
7841 tg3_halt(tp, RESET_KIND_SHUTDOWN, 1); 7868 tg3_halt(tp, RESET_KIND_SHUTDOWN, 1);
7842 tg3_init_hw(tp); 7869 tg3_init_hw(tp, 1);
7843 tg3_netif_start(tp); 7870 tg3_netif_start(tp);
7844 } 7871 }
7845 7872
@@ -7884,7 +7911,7 @@ static int tg3_set_pauseparam(struct net_device *dev, struct ethtool_pauseparam
7884 7911
7885 if (netif_running(dev)) { 7912 if (netif_running(dev)) {
7886 tg3_halt(tp, RESET_KIND_SHUTDOWN, 1); 7913 tg3_halt(tp, RESET_KIND_SHUTDOWN, 1);
7887 tg3_init_hw(tp); 7914 tg3_init_hw(tp, 1);
7888 tg3_netif_start(tp); 7915 tg3_netif_start(tp);
7889 } 7916 }
7890 7917
@@ -8522,7 +8549,7 @@ static int tg3_test_loopback(struct tg3 *tp)
8522 if (!netif_running(tp->dev)) 8549 if (!netif_running(tp->dev))
8523 return TG3_LOOPBACK_FAILED; 8550 return TG3_LOOPBACK_FAILED;
8524 8551
8525 tg3_reset_hw(tp); 8552 tg3_reset_hw(tp, 1);
8526 8553
8527 if (tg3_run_loopback(tp, TG3_MAC_LOOPBACK)) 8554 if (tg3_run_loopback(tp, TG3_MAC_LOOPBACK))
8528 err |= TG3_MAC_LOOPBACK_FAILED; 8555 err |= TG3_MAC_LOOPBACK_FAILED;
@@ -8596,7 +8623,7 @@ static void tg3_self_test(struct net_device *dev, struct ethtool_test *etest,
8596 tg3_halt(tp, RESET_KIND_SHUTDOWN, 1); 8623 tg3_halt(tp, RESET_KIND_SHUTDOWN, 1);
8597 if (netif_running(dev)) { 8624 if (netif_running(dev)) {
8598 tp->tg3_flags |= TG3_FLAG_INIT_COMPLETE; 8625 tp->tg3_flags |= TG3_FLAG_INIT_COMPLETE;
8599 tg3_init_hw(tp); 8626 tg3_init_hw(tp, 1);
8600 tg3_netif_start(tp); 8627 tg3_netif_start(tp);
8601 } 8628 }
8602 8629
@@ -9377,7 +9404,7 @@ static int tg3_nvram_write_block_buffered(struct tg3 *tp, u32 offset, u32 len,
9377 9404
9378 if ((page_off == 0) || (i == 0)) 9405 if ((page_off == 0) || (i == 0))
9379 nvram_cmd |= NVRAM_CMD_FIRST; 9406 nvram_cmd |= NVRAM_CMD_FIRST;
9380 else if (page_off == (tp->nvram_pagesize - 4)) 9407 if (page_off == (tp->nvram_pagesize - 4))
9381 nvram_cmd |= NVRAM_CMD_LAST; 9408 nvram_cmd |= NVRAM_CMD_LAST;
9382 9409
9383 if (i == (len - 4)) 9410 if (i == (len - 4))
@@ -10353,10 +10380,13 @@ static int __devinit tg3_get_invariants(struct tg3 *tp)
10353 if (tp->pci_chip_rev_id == CHIPREV_ID_5704_A0) 10380 if (tp->pci_chip_rev_id == CHIPREV_ID_5704_A0)
10354 tp->tg3_flags2 |= TG3_FLG2_PHY_5704_A0_BUG; 10381 tp->tg3_flags2 |= TG3_FLG2_PHY_5704_A0_BUG;
10355 10382
10356 if ((tp->tg3_flags2 & TG3_FLG2_5705_PLUS) && 10383 if (tp->tg3_flags2 & TG3_FLG2_5705_PLUS) {
10357 (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5755) && 10384 if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5755 ||
10358 (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5787)) 10385 GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5787)
10359 tp->tg3_flags2 |= TG3_FLG2_PHY_BER_BUG; 10386 tp->tg3_flags2 |= TG3_FLG2_PHY_JITTER_BUG;
10387 else
10388 tp->tg3_flags2 |= TG3_FLG2_PHY_BER_BUG;
10389 }
10360 10390
10361 tp->coalesce_mode = 0; 10391 tp->coalesce_mode = 0;
10362 if (GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_5700_AX && 10392 if (GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_5700_AX &&
@@ -11569,7 +11599,7 @@ static int tg3_suspend(struct pci_dev *pdev, pm_message_t state)
11569 tg3_full_lock(tp, 0); 11599 tg3_full_lock(tp, 0);
11570 11600
11571 tp->tg3_flags |= TG3_FLAG_INIT_COMPLETE; 11601 tp->tg3_flags |= TG3_FLAG_INIT_COMPLETE;
11572 tg3_init_hw(tp); 11602 tg3_init_hw(tp, 1);
11573 11603
11574 tp->timer.expires = jiffies + tp->timer_offset; 11604 tp->timer.expires = jiffies + tp->timer_offset;
11575 add_timer(&tp->timer); 11605 add_timer(&tp->timer);
@@ -11603,7 +11633,7 @@ static int tg3_resume(struct pci_dev *pdev)
11603 tg3_full_lock(tp, 0); 11633 tg3_full_lock(tp, 0);
11604 11634
11605 tp->tg3_flags |= TG3_FLAG_INIT_COMPLETE; 11635 tp->tg3_flags |= TG3_FLAG_INIT_COMPLETE;
11606 tg3_init_hw(tp); 11636 tg3_init_hw(tp, 1);
11607 11637
11608 tp->timer.expires = jiffies + tp->timer_offset; 11638 tp->timer.expires = jiffies + tp->timer_offset;
11609 add_timer(&tp->timer); 11639 add_timer(&tp->timer);
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h
index 8c8b987d1250..0e29b885d449 100644
--- a/drivers/net/tg3.h
+++ b/drivers/net/tg3.h
@@ -2215,6 +2215,7 @@ struct tg3 {
2215#define TG3_FLG2_HW_TSO_2 0x08000000 2215#define TG3_FLG2_HW_TSO_2 0x08000000
2216#define TG3_FLG2_HW_TSO (TG3_FLG2_HW_TSO_1 | TG3_FLG2_HW_TSO_2) 2216#define TG3_FLG2_HW_TSO (TG3_FLG2_HW_TSO_1 | TG3_FLG2_HW_TSO_2)
2217#define TG3_FLG2_1SHOT_MSI 0x10000000 2217#define TG3_FLG2_1SHOT_MSI 0x10000000
2218#define TG3_FLG2_PHY_JITTER_BUG 0x20000000
2218 2219
2219 u32 split_mode_max_reqs; 2220 u32 split_mode_max_reqs;
2220#define SPLIT_MODE_5704_MAX_REQ 3 2221#define SPLIT_MODE_5704_MAX_REQ 3
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
index 6a23964c1317..a6dc53b4250d 100644
--- a/drivers/net/via-rhine.c
+++ b/drivers/net/via-rhine.c
@@ -129,6 +129,7 @@
129 - Massive clean-up 129 - Massive clean-up
130 - Rewrite PHY, media handling (remove options, full_duplex, backoff) 130 - Rewrite PHY, media handling (remove options, full_duplex, backoff)
131 - Fix Tx engine race for good 131 - Fix Tx engine race for good
132 - Craig Brind: Zero padded aligned buffers for short packets.
132 133
133*/ 134*/
134 135
@@ -1326,7 +1327,12 @@ static int rhine_start_tx(struct sk_buff *skb, struct net_device *dev)
1326 rp->stats.tx_dropped++; 1327 rp->stats.tx_dropped++;
1327 return 0; 1328 return 0;
1328 } 1329 }
1330
1331 /* Padding is not copied and so must be redone. */
1329 skb_copy_and_csum_dev(skb, rp->tx_buf[entry]); 1332 skb_copy_and_csum_dev(skb, rp->tx_buf[entry]);
1333 if (skb->len < ETH_ZLEN)
1334 memset(rp->tx_buf[entry] + skb->len, 0,
1335 ETH_ZLEN - skb->len);
1330 rp->tx_skbuff_dma[entry] = 0; 1336 rp->tx_skbuff_dma[entry] = 0;
1331 rp->tx_ring[entry].addr = cpu_to_le32(rp->tx_bufs_dma + 1337 rp->tx_ring[entry].addr = cpu_to_le32(rp->tx_bufs_dma +
1332 (rp->tx_buf[entry] - 1338 (rp->tx_buf[entry] -
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index 2087a397ef16..9855c4c920b8 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -793,8 +793,10 @@ static int msix_capability_init(struct pci_dev *dev,
793 if (!entry) 793 if (!entry)
794 break; 794 break;
795 vector = get_msi_vector(dev); 795 vector = get_msi_vector(dev);
796 if (vector < 0) 796 if (vector < 0) {
797 kmem_cache_free(msi_cachep, entry);
797 break; 798 break;
799 }
798 800
799 j = entries[i].entry; 801 j = entries[i].entry;
800 entries[i].vector = vector; 802 entries[i].vector = vector;
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index c42ae2cf8d64..19e2b174d33c 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -642,13 +642,15 @@ static void quirk_via_irq(struct pci_dev *dev)
642 new_irq = dev->irq & 0xf; 642 new_irq = dev->irq & 0xf;
643 pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); 643 pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
644 if (new_irq != irq) { 644 if (new_irq != irq) {
645 printk(KERN_INFO "PCI: Via IRQ fixup for %s, from %d to %d\n", 645 printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n",
646 pci_name(dev), irq, new_irq); 646 pci_name(dev), irq, new_irq);
647 udelay(15); /* unknown if delay really needed */ 647 udelay(15); /* unknown if delay really needed */
648 pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); 648 pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq);
649 } 649 }
650} 650}
651DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_ANY_ID, quirk_via_irq); 651DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_irq);
652DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_irq);
653DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irq);
652 654
653/* 655/*
654 * VIA VT82C598 has its device ID settable and many BIOSes 656 * VIA VT82C598 has its device ID settable and many BIOSes
diff --git a/drivers/pcmcia/i82365.c b/drivers/pcmcia/i82365.c
index bd0308e89815..a2f05f485156 100644
--- a/drivers/pcmcia/i82365.c
+++ b/drivers/pcmcia/i82365.c
@@ -509,7 +509,8 @@ static irqreturn_t i365_count_irq(int irq, void *dev, struct pt_regs *regs)
509static u_int __init test_irq(u_short sock, int irq) 509static u_int __init test_irq(u_short sock, int irq)
510{ 510{
511 debug(2, " testing ISA irq %d\n", irq); 511 debug(2, " testing ISA irq %d\n", irq);
512 if (request_irq(irq, i365_count_irq, 0, "scan", i365_count_irq) != 0) 512 if (request_irq(irq, i365_count_irq, SA_PROBEIRQ, "scan",
513 i365_count_irq) != 0)
513 return 1; 514 return 1;
514 irq_hits = 0; irq_sock = sock; 515 irq_hits = 0; irq_sock = sock;
515 msleep(10); 516 msleep(10);
@@ -561,7 +562,7 @@ static u_int __init isa_scan(u_short sock, u_int mask0)
561 } else { 562 } else {
562 /* Fallback: just find interrupts that aren't in use */ 563 /* Fallback: just find interrupts that aren't in use */
563 for (i = 0; i < 16; i++) 564 for (i = 0; i < 16; i++)
564 if ((mask0 & (1 << i)) && (_check_irq(i, 0) == 0)) 565 if ((mask0 & (1 << i)) && (_check_irq(i, SA_PROBEIRQ) == 0))
565 mask1 |= (1 << i); 566 mask1 |= (1 << i);
566 printk("default"); 567 printk("default");
567 /* If scan failed, default to polled status */ 568 /* If scan failed, default to polled status */
@@ -725,7 +726,7 @@ static void __init add_pcic(int ns, int type)
725 u_int cs_mask = mask & ((cs_irq) ? (1<<cs_irq) : ~(1<<12)); 726 u_int cs_mask = mask & ((cs_irq) ? (1<<cs_irq) : ~(1<<12));
726 for (cs_irq = 15; cs_irq > 0; cs_irq--) 727 for (cs_irq = 15; cs_irq > 0; cs_irq--)
727 if ((cs_mask & (1 << cs_irq)) && 728 if ((cs_mask & (1 << cs_irq)) &&
728 (_check_irq(cs_irq, 0) == 0)) 729 (_check_irq(cs_irq, SA_PROBEIRQ) == 0))
729 break; 730 break;
730 if (cs_irq) { 731 if (cs_irq) {
731 grab_irq = 1; 732 grab_irq = 1;
diff --git a/drivers/rtc/rtc-dev.c b/drivers/rtc/rtc-dev.c
index b1e3e6179e56..6c9ad92747fd 100644
--- a/drivers/rtc/rtc-dev.c
+++ b/drivers/rtc/rtc-dev.c
@@ -58,7 +58,7 @@ rtc_dev_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
58 unsigned long data; 58 unsigned long data;
59 ssize_t ret; 59 ssize_t ret;
60 60
61 if (count < sizeof(unsigned long)) 61 if (count != sizeof(unsigned int) && count < sizeof(unsigned long))
62 return -EINVAL; 62 return -EINVAL;
63 63
64 add_wait_queue(&rtc->irq_queue, &wait); 64 add_wait_queue(&rtc->irq_queue, &wait);
@@ -90,11 +90,16 @@ rtc_dev_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
90 if (ret == 0) { 90 if (ret == 0) {
91 /* Check for any data updates */ 91 /* Check for any data updates */
92 if (rtc->ops->read_callback) 92 if (rtc->ops->read_callback)
93 data = rtc->ops->read_callback(rtc->class_dev.dev, data); 93 data = rtc->ops->read_callback(rtc->class_dev.dev,
94 94 data);
95 ret = put_user(data, (unsigned long __user *)buf); 95
96 if (ret == 0) 96 if (sizeof(int) != sizeof(long) &&
97 ret = sizeof(unsigned long); 97 count == sizeof(unsigned int))
98 ret = put_user(data, (unsigned int __user *)buf) ?:
99 sizeof(unsigned int);
100 else
101 ret = put_user(data, (unsigned long __user *)buf) ?:
102 sizeof(unsigned long);
98 } 103 }
99 return ret; 104 return ret;
100} 105}
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index a3bfebcf31ef..cfb1fff3787c 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -315,6 +315,11 @@ dasd_increase_state(struct dasd_device *device)
315 rc = dasd_state_basic_to_ready(device); 315 rc = dasd_state_basic_to_ready(device);
316 316
317 if (!rc && 317 if (!rc &&
318 device->state == DASD_STATE_UNFMT &&
319 device->target > DASD_STATE_UNFMT)
320 rc = -EPERM;
321
322 if (!rc &&
318 device->state == DASD_STATE_READY && 323 device->state == DASD_STATE_READY &&
319 device->target >= DASD_STATE_ONLINE) 324 device->target >= DASD_STATE_ONLINE)
320 rc = dasd_state_ready_to_online(device); 325 rc = dasd_state_ready_to_online(device);
diff --git a/drivers/s390/block/dasd_devmap.c b/drivers/s390/block/dasd_devmap.c
index c1c6f1381150..216bc4fba199 100644
--- a/drivers/s390/block/dasd_devmap.c
+++ b/drivers/s390/block/dasd_devmap.c
@@ -45,6 +45,7 @@ struct dasd_devmap {
45 unsigned int devindex; 45 unsigned int devindex;
46 unsigned short features; 46 unsigned short features;
47 struct dasd_device *device; 47 struct dasd_device *device;
48 struct dasd_uid uid;
48}; 49};
49 50
50/* 51/*
@@ -716,6 +717,68 @@ dasd_discipline_show(struct device *dev, struct device_attribute *attr, char *bu
716 717
717static DEVICE_ATTR(discipline, 0444, dasd_discipline_show, NULL); 718static DEVICE_ATTR(discipline, 0444, dasd_discipline_show, NULL);
718 719
720static ssize_t
721dasd_alias_show(struct device *dev, struct device_attribute *attr, char *buf)
722{
723 struct dasd_devmap *devmap;
724 int alias;
725
726 devmap = dasd_find_busid(dev->bus_id);
727 spin_lock(&dasd_devmap_lock);
728 if (!IS_ERR(devmap))
729 alias = devmap->uid.alias;
730 else
731 alias = 0;
732 spin_unlock(&dasd_devmap_lock);
733
734 return sprintf(buf, alias ? "1\n" : "0\n");
735}
736
737static DEVICE_ATTR(alias, 0444, dasd_alias_show, NULL);
738
739static ssize_t
740dasd_vendor_show(struct device *dev, struct device_attribute *attr, char *buf)
741{
742 struct dasd_devmap *devmap;
743 char *vendor;
744
745 devmap = dasd_find_busid(dev->bus_id);
746 spin_lock(&dasd_devmap_lock);
747 if (!IS_ERR(devmap) && strlen(devmap->uid.vendor) > 0)
748 vendor = devmap->uid.vendor;
749 else
750 vendor = "";
751 spin_unlock(&dasd_devmap_lock);
752
753 return snprintf(buf, PAGE_SIZE, "%s\n", vendor);
754}
755
756static DEVICE_ATTR(vendor, 0444, dasd_vendor_show, NULL);
757
758#define UID_STRLEN ( /* vendor */ 3 + 1 + /* serial */ 14 + 1 +\
759 /* SSID */ 4 + 1 + /* unit addr */ 2 + 1)
760
761static ssize_t
762dasd_uid_show(struct device *dev, struct device_attribute *attr, char *buf)
763{
764 struct dasd_devmap *devmap;
765 char uid[UID_STRLEN];
766
767 devmap = dasd_find_busid(dev->bus_id);
768 spin_lock(&dasd_devmap_lock);
769 if (!IS_ERR(devmap) && strlen(devmap->uid.vendor) > 0)
770 snprintf(uid, sizeof(uid), "%s.%s.%04x.%02x",
771 devmap->uid.vendor, devmap->uid.serial,
772 devmap->uid.ssid, devmap->uid.unit_addr);
773 else
774 uid[0] = 0;
775 spin_unlock(&dasd_devmap_lock);
776
777 return snprintf(buf, PAGE_SIZE, "%s\n", uid);
778}
779
780static DEVICE_ATTR(uid, 0444, dasd_uid_show, NULL);
781
719/* 782/*
720 * extended error-reporting 783 * extended error-reporting
721 */ 784 */
@@ -759,6 +822,9 @@ static DEVICE_ATTR(eer_enabled, 0644, dasd_eer_show, dasd_eer_store);
759static struct attribute * dasd_attrs[] = { 822static struct attribute * dasd_attrs[] = {
760 &dev_attr_readonly.attr, 823 &dev_attr_readonly.attr,
761 &dev_attr_discipline.attr, 824 &dev_attr_discipline.attr,
825 &dev_attr_alias.attr,
826 &dev_attr_vendor.attr,
827 &dev_attr_uid.attr,
762 &dev_attr_use_diag.attr, 828 &dev_attr_use_diag.attr,
763 &dev_attr_eer_enabled.attr, 829 &dev_attr_eer_enabled.attr,
764 NULL, 830 NULL,
@@ -768,6 +834,42 @@ static struct attribute_group dasd_attr_group = {
768 .attrs = dasd_attrs, 834 .attrs = dasd_attrs,
769}; 835};
770 836
837
838/*
839 * Return copy of the device unique identifier.
840 */
841int
842dasd_get_uid(struct ccw_device *cdev, struct dasd_uid *uid)
843{
844 struct dasd_devmap *devmap;
845
846 devmap = dasd_find_busid(cdev->dev.bus_id);
847 if (IS_ERR(devmap))
848 return PTR_ERR(devmap);
849 spin_lock(&dasd_devmap_lock);
850 *uid = devmap->uid;
851 spin_unlock(&dasd_devmap_lock);
852 return 0;
853}
854
855/*
856 * Register the given device unique identifier into devmap struct.
857 */
858int
859dasd_set_uid(struct ccw_device *cdev, struct dasd_uid *uid)
860{
861 struct dasd_devmap *devmap;
862
863 devmap = dasd_find_busid(cdev->dev.bus_id);
864 if (IS_ERR(devmap))
865 return PTR_ERR(devmap);
866 spin_lock(&dasd_devmap_lock);
867 devmap->uid = *uid;
868 spin_unlock(&dasd_devmap_lock);
869 return 0;
870}
871EXPORT_SYMBOL(dasd_set_uid);
872
771/* 873/*
772 * Return value of the specified feature. 874 * Return value of the specified feature.
773 */ 875 */
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index ee09ef33d08d..7d5a6cee4bd8 100644
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -446,6 +446,39 @@ dasd_eckd_cdl_reclen(int recid)
446 return LABEL_SIZE; 446 return LABEL_SIZE;
447} 447}
448 448
449/*
450 * Generate device unique id that specifies the physical device.
451 */
452static int
453dasd_eckd_generate_uid(struct dasd_device *device, struct dasd_uid *uid)
454{
455 struct dasd_eckd_private *private;
456 struct dasd_eckd_confdata *confdata;
457
458 private = (struct dasd_eckd_private *) device->private;
459 if (!private)
460 return -ENODEV;
461 confdata = &private->conf_data;
462 if (!confdata)
463 return -ENODEV;
464
465 memset(uid, 0, sizeof(struct dasd_uid));
466 strncpy(uid->vendor, confdata->ned1.HDA_manufacturer,
467 sizeof(uid->vendor) - 1);
468 EBCASC(uid->vendor, sizeof(uid->vendor) - 1);
469 strncpy(uid->serial, confdata->ned1.HDA_location,
470 sizeof(uid->serial) - 1);
471 EBCASC(uid->serial, sizeof(uid->serial) - 1);
472 uid->ssid = confdata->neq.subsystemID;
473 if (confdata->ned2.sneq.flags == 0x40) {
474 uid->alias = 1;
475 uid->unit_addr = confdata->ned2.sneq.base_unit_addr;
476 } else
477 uid->unit_addr = confdata->ned1.unit_addr;
478
479 return 0;
480}
481
449static int 482static int
450dasd_eckd_read_conf(struct dasd_device *device) 483dasd_eckd_read_conf(struct dasd_device *device)
451{ 484{
@@ -507,11 +540,15 @@ dasd_eckd_read_conf(struct dasd_device *device)
507 return 0; 540 return 0;
508} 541}
509 542
510 543/*
544 * Check device characteristics.
545 * If the device is accessible using ECKD discipline, the device is enabled.
546 */
511static int 547static int
512dasd_eckd_check_characteristics(struct dasd_device *device) 548dasd_eckd_check_characteristics(struct dasd_device *device)
513{ 549{
514 struct dasd_eckd_private *private; 550 struct dasd_eckd_private *private;
551 struct dasd_uid uid;
515 void *rdc_data; 552 void *rdc_data;
516 int rc; 553 int rc;
517 554
@@ -536,6 +573,7 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
536 573
537 /* Read Device Characteristics */ 574 /* Read Device Characteristics */
538 rdc_data = (void *) &(private->rdc_data); 575 rdc_data = (void *) &(private->rdc_data);
576 memset(rdc_data, 0, sizeof(rdc_data));
539 rc = read_dev_chars(device->cdev, &rdc_data, 64); 577 rc = read_dev_chars(device->cdev, &rdc_data, 64);
540 if (rc) { 578 if (rc) {
541 DEV_MESSAGE(KERN_WARNING, device, 579 DEV_MESSAGE(KERN_WARNING, device,
@@ -556,8 +594,17 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
556 594
557 /* Read Configuration Data */ 595 /* Read Configuration Data */
558 rc = dasd_eckd_read_conf (device); 596 rc = dasd_eckd_read_conf (device);
559 return rc; 597 if (rc)
598 return rc;
599
600 /* Generate device unique id and register in devmap */
601 rc = dasd_eckd_generate_uid(device, &uid);
602 if (rc)
603 return rc;
560 604
605 rc = dasd_set_uid(device->cdev, &uid);
606
607 return rc;
561} 608}
562 609
563static struct dasd_ccw_req * 610static struct dasd_ccw_req *
diff --git a/drivers/s390/block/dasd_eckd.h b/drivers/s390/block/dasd_eckd.h
index ad8524bb7bb3..d5734e976e1c 100644
--- a/drivers/s390/block/dasd_eckd.h
+++ b/drivers/s390/block/dasd_eckd.h
@@ -228,26 +228,36 @@ struct dasd_eckd_confdata {
228 unsigned char HDA_manufacturer[3]; 228 unsigned char HDA_manufacturer[3];
229 unsigned char HDA_location[2]; 229 unsigned char HDA_location[2];
230 unsigned char HDA_seqno[12]; 230 unsigned char HDA_seqno[12];
231 __u16 ID; 231 __u8 ID;
232 __u8 unit_addr;
232 } __attribute__ ((packed)) ned1; 233 } __attribute__ ((packed)) ned1;
233 struct { 234 union {
234 struct { 235 struct {
235 unsigned char identifier:2; 236 struct {
236 unsigned char token_id:1; 237 unsigned char identifier:2;
237 unsigned char sno_valid:1; 238 unsigned char token_id:1;
238 unsigned char subst_sno:1; 239 unsigned char sno_valid:1;
239 unsigned char recNED:1; 240 unsigned char subst_sno:1;
240 unsigned char emuNED:1; 241 unsigned char recNED:1;
241 unsigned char reserved:1; 242 unsigned char emuNED:1;
242 } __attribute__ ((packed)) flags; 243 unsigned char reserved:1;
243 __u8 descriptor; 244 } __attribute__ ((packed)) flags;
244 __u8 reserved[2]; 245 __u8 descriptor;
245 unsigned char dev_type[6]; 246 __u8 reserved[2];
246 unsigned char dev_model[3]; 247 unsigned char dev_type[6];
247 unsigned char DASD_manufacturer[3]; 248 unsigned char dev_model[3];
248 unsigned char DASD_location[2]; 249 unsigned char DASD_manufacturer[3];
249 unsigned char DASD_seqno[12]; 250 unsigned char DASD_location[2];
250 __u16 ID; 251 unsigned char DASD_seqno[12];
252 __u16 ID;
253 } __attribute__ ((packed)) ned;
254 struct {
255 unsigned char flags; /* byte 0 */
256 unsigned char res2[7]; /* byte 1- 7 */
257 unsigned char sua_flags; /* byte 8 */
258 __u8 base_unit_addr; /* byte 9 */
259 unsigned char res3[22]; /* byte 10-31 */
260 } __attribute__ ((packed)) sneq;
251 } __attribute__ ((packed)) ned2; 261 } __attribute__ ((packed)) ned2;
252 struct { 262 struct {
253 struct { 263 struct {
diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h
index 4293ba827523..d4b13e300a76 100644
--- a/drivers/s390/block/dasd_int.h
+++ b/drivers/s390/block/dasd_int.h
@@ -268,6 +268,16 @@ struct dasd_discipline {
268 268
269extern struct dasd_discipline *dasd_diag_discipline_pointer; 269extern struct dasd_discipline *dasd_diag_discipline_pointer;
270 270
271/*
272 * Unique identifier for dasd device.
273 */
274struct dasd_uid {
275 __u8 alias;
276 char vendor[4];
277 char serial[15];
278 __u16 ssid;
279 __u8 unit_addr;
280};
271 281
272/* 282/*
273 * Notification numbers for extended error reporting notifications: 283 * Notification numbers for extended error reporting notifications:
@@ -516,6 +526,8 @@ void dasd_devmap_exit(void);
516struct dasd_device *dasd_create_device(struct ccw_device *); 526struct dasd_device *dasd_create_device(struct ccw_device *);
517void dasd_delete_device(struct dasd_device *); 527void dasd_delete_device(struct dasd_device *);
518 528
529int dasd_get_uid(struct ccw_device *, struct dasd_uid *);
530int dasd_set_uid(struct ccw_device *, struct dasd_uid *);
519int dasd_get_feature(struct ccw_device *, int); 531int dasd_get_feature(struct ccw_device *, int);
520int dasd_set_feature(struct ccw_device *, int, int); 532int dasd_set_feature(struct ccw_device *, int, int);
521 533
diff --git a/drivers/s390/char/tape_3590.c b/drivers/s390/char/tape_3590.c
index c3915f60a3aa..d71ef1adea59 100644
--- a/drivers/s390/char/tape_3590.c
+++ b/drivers/s390/char/tape_3590.c
@@ -230,14 +230,16 @@ tape_3590_read_attmsg(struct tape_device *device)
230 * These functions are used to schedule follow-up actions from within an 230 * These functions are used to schedule follow-up actions from within an
231 * interrupt context (like unsolicited interrupts). 231 * interrupt context (like unsolicited interrupts).
232 */ 232 */
233struct work_handler_data {
234 struct tape_device *device;
235 enum tape_op op;
236 struct work_struct work;
237};
238
233static void 239static void
234tape_3590_work_handler(void *data) 240tape_3590_work_handler(void *data)
235{ 241{
236 struct { 242 struct work_handler_data *p = data;
237 struct tape_device *device;
238 enum tape_op op;
239 struct work_struct work;
240 } *p = data;
241 243
242 switch (p->op) { 244 switch (p->op) {
243 case TO_MSEN: 245 case TO_MSEN:
@@ -257,11 +259,7 @@ tape_3590_work_handler(void *data)
257static int 259static int
258tape_3590_schedule_work(struct tape_device *device, enum tape_op op) 260tape_3590_schedule_work(struct tape_device *device, enum tape_op op)
259{ 261{
260 struct { 262 struct work_handler_data *p;
261 struct tape_device *device;
262 enum tape_op op;
263 struct work_struct work;
264 } *p;
265 263
266 if ((p = kzalloc(sizeof(*p), GFP_ATOMIC)) == NULL) 264 if ((p = kzalloc(sizeof(*p), GFP_ATOMIC)) == NULL)
267 return -ENOMEM; 265 return -ENOMEM;
@@ -316,7 +314,7 @@ tape_3590_bread(struct tape_device *device, struct request *req)
316 314
317 rq_for_each_bio(bio, req) { 315 rq_for_each_bio(bio, req) {
318 bio_for_each_segment(bv, bio, i) { 316 bio_for_each_segment(bv, bio, i) {
319 dst = kmap(bv->bv_page) + bv->bv_offset; 317 dst = page_address(bv->bv_page) + bv->bv_offset;
320 for (off = 0; off < bv->bv_len; 318 for (off = 0; off < bv->bv_len;
321 off += TAPEBLOCK_HSEC_SIZE) { 319 off += TAPEBLOCK_HSEC_SIZE) {
322 ccw->flags = CCW_FLAG_CC; 320 ccw->flags = CCW_FLAG_CC;
@@ -1168,6 +1166,7 @@ tape_3590_setup_device(struct tape_device *device)
1168static void 1166static void
1169tape_3590_cleanup_device(struct tape_device *device) 1167tape_3590_cleanup_device(struct tape_device *device)
1170{ 1168{
1169 flush_scheduled_work();
1171 tape_std_unassign(device); 1170 tape_std_unassign(device);
1172 1171
1173 kfree(device->discdata); 1172 kfree(device->discdata);
@@ -1234,6 +1233,7 @@ static struct tape_discipline tape_discipline_3590 = {
1234 1233
1235static struct ccw_device_id tape_3590_ids[] = { 1234static struct ccw_device_id tape_3590_ids[] = {
1236 {CCW_DEVICE_DEVTYPE(0x3590, 0, 0x3590, 0), .driver_info = tape_3590}, 1235 {CCW_DEVICE_DEVTYPE(0x3590, 0, 0x3590, 0), .driver_info = tape_3590},
1236 {CCW_DEVICE_DEVTYPE(0x3592, 0, 0x3592, 0), .driver_info = tape_3592},
1237 { /* end of list */ } 1237 { /* end of list */ }
1238}; 1238};
1239 1239
diff --git a/drivers/s390/char/tape_std.h b/drivers/s390/char/tape_std.h
index 2d311798edf4..1fc952359341 100644
--- a/drivers/s390/char/tape_std.h
+++ b/drivers/s390/char/tape_std.h
@@ -153,6 +153,7 @@ enum s390_tape_type {
153 tape_3480, 153 tape_3480,
154 tape_3490, 154 tape_3490,
155 tape_3590, 155 tape_3590,
156 tape_3592,
156}; 157};
157 158
158#endif // _TAPE_STD_H 159#endif // _TAPE_STD_H
diff --git a/drivers/s390/cio/chsc.c b/drivers/s390/cio/chsc.c
index 6412b2c3edd3..72187e54dcac 100644
--- a/drivers/s390/cio/chsc.c
+++ b/drivers/s390/cio/chsc.c
@@ -242,28 +242,10 @@ s390_subchannel_remove_chpid(struct device *dev, void *data)
242 if (sch->vpm == mask) 242 if (sch->vpm == mask)
243 goto out_unreg; 243 goto out_unreg;
244 244
245 if ((sch->schib.scsw.actl & (SCSW_ACTL_CLEAR_PEND | 245 if ((sch->schib.scsw.actl & SCSW_ACTL_DEVACT) &&
246 SCSW_ACTL_HALT_PEND | 246 (sch->schib.scsw.actl & SCSW_ACTL_SCHACT) &&
247 SCSW_ACTL_START_PEND | 247 (sch->schib.pmcw.lpum == mask) &&
248 SCSW_ACTL_RESUME_PEND)) && 248 (sch->vpm == 0)) {
249 (sch->schib.pmcw.lpum == mask)) {
250 int cc = cio_cancel(sch);
251
252 if (cc == -ENODEV)
253 goto out_unreg;
254
255 if (cc == -EINVAL) {
256 cc = cio_clear(sch);
257 if (cc == -ENODEV)
258 goto out_unreg;
259 /* Call handler. */
260 if (sch->driver && sch->driver->termination)
261 sch->driver->termination(&sch->dev);
262 goto out_unlock;
263 }
264 } else if ((sch->schib.scsw.actl & SCSW_ACTL_DEVACT) &&
265 (sch->schib.scsw.actl & SCSW_ACTL_SCHACT) &&
266 (sch->schib.pmcw.lpum == mask)) {
267 int cc; 249 int cc;
268 250
269 cc = cio_clear(sch); 251 cc = cio_clear(sch);
@@ -653,13 +635,13 @@ __chp_add(struct subchannel_id schid, void *data)
653 if (sch->schib.pmcw.chpid[i] == chp->id) { 635 if (sch->schib.pmcw.chpid[i] == chp->id) {
654 if (stsch(sch->schid, &sch->schib) != 0) { 636 if (stsch(sch->schid, &sch->schib) != 0) {
655 /* Endgame. */ 637 /* Endgame. */
656 spin_unlock(&sch->lock); 638 spin_unlock_irq(&sch->lock);
657 return -ENXIO; 639 return -ENXIO;
658 } 640 }
659 break; 641 break;
660 } 642 }
661 if (i==8) { 643 if (i==8) {
662 spin_unlock(&sch->lock); 644 spin_unlock_irq(&sch->lock);
663 return 0; 645 return 0;
664 } 646 }
665 sch->lpm = ((sch->schib.pmcw.pim & 647 sch->lpm = ((sch->schib.pmcw.pim &
diff --git a/drivers/s390/cio/qdio.c b/drivers/s390/cio/qdio.c
index 814f9258ce00..96f519281d92 100644
--- a/drivers/s390/cio/qdio.c
+++ b/drivers/s390/cio/qdio.c
@@ -38,6 +38,7 @@
38#include <linux/kernel.h> 38#include <linux/kernel.h>
39#include <linux/proc_fs.h> 39#include <linux/proc_fs.h>
40#include <linux/timer.h> 40#include <linux/timer.h>
41#include <linux/mempool.h>
41 42
42#include <asm/ccwdev.h> 43#include <asm/ccwdev.h>
43#include <asm/io.h> 44#include <asm/io.h>
@@ -80,6 +81,8 @@ static int indicator_used[INDICATORS_PER_CACHELINE];
80static __u32 * volatile indicators; 81static __u32 * volatile indicators;
81static __u32 volatile spare_indicator; 82static __u32 volatile spare_indicator;
82static atomic_t spare_indicator_usecount; 83static atomic_t spare_indicator_usecount;
84#define QDIO_MEMPOOL_SCSSC_ELEMENTS 2
85static mempool_t *qdio_mempool_scssc;
83 86
84static debug_info_t *qdio_dbf_setup; 87static debug_info_t *qdio_dbf_setup;
85static debug_info_t *qdio_dbf_sbal; 88static debug_info_t *qdio_dbf_sbal;
@@ -1637,7 +1640,7 @@ next:
1637 1640
1638 } 1641 }
1639 kfree(irq_ptr->qdr); 1642 kfree(irq_ptr->qdr);
1640 kfree(irq_ptr); 1643 free_page((unsigned long) irq_ptr);
1641} 1644}
1642 1645
1643static void 1646static void
@@ -2304,7 +2307,7 @@ qdio_get_ssqd_information(struct qdio_irq *irq_ptr)
2304 2307
2305 QDIO_DBF_TEXT0(0,setup,"getssqd"); 2308 QDIO_DBF_TEXT0(0,setup,"getssqd");
2306 qdioac = 0; 2309 qdioac = 0;
2307 ssqd_area = (void *)get_zeroed_page(GFP_KERNEL | GFP_DMA); 2310 ssqd_area = mempool_alloc(qdio_mempool_scssc, GFP_ATOMIC);
2308 if (!ssqd_area) { 2311 if (!ssqd_area) {
2309 QDIO_PRINT_WARN("Could not get memory for chsc. Using all " \ 2312 QDIO_PRINT_WARN("Could not get memory for chsc. Using all " \
2310 "SIGAs for sch x%x.\n", irq_ptr->schid.sch_no); 2313 "SIGAs for sch x%x.\n", irq_ptr->schid.sch_no);
@@ -2364,7 +2367,7 @@ qdio_get_ssqd_information(struct qdio_irq *irq_ptr)
2364out: 2367out:
2365 qdio_check_subchannel_qebsm(irq_ptr, qdioac, 2368 qdio_check_subchannel_qebsm(irq_ptr, qdioac,
2366 ssqd_area->sch_token); 2369 ssqd_area->sch_token);
2367 free_page ((unsigned long) ssqd_area); 2370 mempool_free(ssqd_area, qdio_mempool_scssc);
2368 irq_ptr->qdioac = qdioac; 2371 irq_ptr->qdioac = qdioac;
2369} 2372}
2370 2373
@@ -2458,7 +2461,7 @@ tiqdio_set_subchannel_ind(struct qdio_irq *irq_ptr, int reset_to_zero)
2458 virt_to_phys((volatile void *)irq_ptr->dev_st_chg_ind); 2461 virt_to_phys((volatile void *)irq_ptr->dev_st_chg_ind);
2459 } 2462 }
2460 2463
2461 scssc_area = (void *)get_zeroed_page(GFP_KERNEL | GFP_DMA); 2464 scssc_area = mempool_alloc(qdio_mempool_scssc, GFP_ATOMIC);
2462 if (!scssc_area) { 2465 if (!scssc_area) {
2463 QDIO_PRINT_WARN("No memory for setting indicators on " \ 2466 QDIO_PRINT_WARN("No memory for setting indicators on " \
2464 "subchannel 0.%x.%x.\n", 2467 "subchannel 0.%x.%x.\n",
@@ -2514,7 +2517,7 @@ tiqdio_set_subchannel_ind(struct qdio_irq *irq_ptr, int reset_to_zero)
2514 QDIO_DBF_HEX2(0,setup,&real_addr_dev_st_chg_ind,sizeof(unsigned long)); 2517 QDIO_DBF_HEX2(0,setup,&real_addr_dev_st_chg_ind,sizeof(unsigned long));
2515 result = 0; 2518 result = 0;
2516out: 2519out:
2517 free_page ((unsigned long) scssc_area); 2520 mempool_free(scssc_area, qdio_mempool_scssc);
2518 return result; 2521 return result;
2519 2522
2520} 2523}
@@ -2543,7 +2546,7 @@ tiqdio_set_delay_target(struct qdio_irq *irq_ptr, unsigned long delay_target)
2543 if (!irq_ptr->is_thinint_irq) 2546 if (!irq_ptr->is_thinint_irq)
2544 return -ENODEV; 2547 return -ENODEV;
2545 2548
2546 scsscf_area = (void *)get_zeroed_page(GFP_KERNEL | GFP_DMA); 2549 scsscf_area = mempool_alloc(qdio_mempool_scssc, GFP_ATOMIC);
2547 if (!scsscf_area) { 2550 if (!scsscf_area) {
2548 QDIO_PRINT_WARN("No memory for setting delay target on " \ 2551 QDIO_PRINT_WARN("No memory for setting delay target on " \
2549 "subchannel 0.%x.%x.\n", 2552 "subchannel 0.%x.%x.\n",
@@ -2581,7 +2584,7 @@ tiqdio_set_delay_target(struct qdio_irq *irq_ptr, unsigned long delay_target)
2581 QDIO_DBF_HEX2(0,trace,&delay_target,sizeof(unsigned long)); 2584 QDIO_DBF_HEX2(0,trace,&delay_target,sizeof(unsigned long));
2582 result = 0; /* not critical */ 2585 result = 0; /* not critical */
2583out: 2586out:
2584 free_page ((unsigned long) scsscf_area); 2587 mempool_free(scsscf_area, qdio_mempool_scssc);
2585 return result; 2588 return result;
2586} 2589}
2587 2590
@@ -2980,7 +2983,7 @@ qdio_allocate(struct qdio_initialize *init_data)
2980 qdio_allocate_do_dbf(init_data); 2983 qdio_allocate_do_dbf(init_data);
2981 2984
2982 /* create irq */ 2985 /* create irq */
2983 irq_ptr = kzalloc(sizeof(struct qdio_irq), GFP_KERNEL | GFP_DMA); 2986 irq_ptr = (void *) get_zeroed_page(GFP_KERNEL | GFP_DMA);
2984 2987
2985 QDIO_DBF_TEXT0(0,setup,"irq_ptr:"); 2988 QDIO_DBF_TEXT0(0,setup,"irq_ptr:");
2986 QDIO_DBF_HEX0(0,setup,&irq_ptr,sizeof(void*)); 2989 QDIO_DBF_HEX0(0,setup,&irq_ptr,sizeof(void*));
@@ -2995,7 +2998,7 @@ qdio_allocate(struct qdio_initialize *init_data)
2995 /* QDR must be in DMA area since CCW data address is only 32 bit */ 2998 /* QDR must be in DMA area since CCW data address is only 32 bit */
2996 irq_ptr->qdr=kmalloc(sizeof(struct qdr), GFP_KERNEL | GFP_DMA); 2999 irq_ptr->qdr=kmalloc(sizeof(struct qdr), GFP_KERNEL | GFP_DMA);
2997 if (!(irq_ptr->qdr)) { 3000 if (!(irq_ptr->qdr)) {
2998 kfree(irq_ptr); 3001 free_page((unsigned long) irq_ptr);
2999 QDIO_PRINT_ERR("kmalloc of irq_ptr->qdr failed!\n"); 3002 QDIO_PRINT_ERR("kmalloc of irq_ptr->qdr failed!\n");
3000 return -ENOMEM; 3003 return -ENOMEM;
3001 } 3004 }
@@ -3780,6 +3783,16 @@ oom:
3780 return -ENOMEM; 3783 return -ENOMEM;
3781} 3784}
3782 3785
3786static void *qdio_mempool_alloc(gfp_t gfp_mask, void *size)
3787{
3788 return (void *) get_zeroed_page(gfp_mask|GFP_DMA);
3789}
3790
3791static void qdio_mempool_free(void *element, void *size)
3792{
3793 free_page((unsigned long) element);
3794}
3795
3783static int __init 3796static int __init
3784init_QDIO(void) 3797init_QDIO(void)
3785{ 3798{
@@ -3809,6 +3822,10 @@ init_QDIO(void)
3809 3822
3810 qdio_add_procfs_entry(); 3823 qdio_add_procfs_entry();
3811 3824
3825 qdio_mempool_scssc = mempool_create(QDIO_MEMPOOL_SCSSC_ELEMENTS,
3826 qdio_mempool_alloc,
3827 qdio_mempool_free, NULL);
3828
3812 if (tiqdio_check_chsc_availability()) 3829 if (tiqdio_check_chsc_availability())
3813 QDIO_PRINT_ERR("Not all CHSCs supported. Continuing.\n"); 3830 QDIO_PRINT_ERR("Not all CHSCs supported. Continuing.\n");
3814 3831
@@ -3824,6 +3841,7 @@ cleanup_QDIO(void)
3824 qdio_remove_procfs_entry(); 3841 qdio_remove_procfs_entry();
3825 qdio_release_qdio_memory(); 3842 qdio_release_qdio_memory();
3826 qdio_unregister_dbf_views(); 3843 qdio_unregister_dbf_views();
3844 mempool_destroy(qdio_mempool_scssc);
3827 3845
3828 printk("qdio: %s: module removed\n",version); 3846 printk("qdio: %s: module removed\n",version);
3829} 3847}
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
index b3c6e7907790..cb14642d97aa 100644
--- a/drivers/s390/net/qeth_main.c
+++ b/drivers/s390/net/qeth_main.c
@@ -8014,7 +8014,6 @@ static int (*qeth_old_arp_constructor) (struct neighbour *);
8014 8014
8015static struct neigh_ops arp_direct_ops_template = { 8015static struct neigh_ops arp_direct_ops_template = {
8016 .family = AF_INET, 8016 .family = AF_INET,
8017 .destructor = NULL,
8018 .solicit = NULL, 8017 .solicit = NULL,
8019 .error_report = NULL, 8018 .error_report = NULL,
8020 .output = dev_queue_xmit, 8019 .output = dev_queue_xmit,
diff --git a/drivers/s390/s390mach.c b/drivers/s390/s390mach.c
index 3bf466603512..f99e55308b32 100644
--- a/drivers/s390/s390mach.c
+++ b/drivers/s390/s390mach.c
@@ -13,6 +13,7 @@
13#include <linux/sched.h> 13#include <linux/sched.h>
14#include <linux/errno.h> 14#include <linux/errno.h>
15#include <linux/workqueue.h> 15#include <linux/workqueue.h>
16#include <linux/time.h>
16 17
17#include <asm/lowcore.h> 18#include <asm/lowcore.h>
18 19
@@ -362,12 +363,19 @@ s390_revalidate_registers(struct mci *mci)
362 return kill_task; 363 return kill_task;
363} 364}
364 365
366#define MAX_IPD_COUNT 29
367#define MAX_IPD_TIME (5 * 60 * USEC_PER_SEC) /* 5 minutes */
368
365/* 369/*
366 * machine check handler. 370 * machine check handler.
367 */ 371 */
368void 372void
369s390_do_machine_check(struct pt_regs *regs) 373s390_do_machine_check(struct pt_regs *regs)
370{ 374{
375 static DEFINE_SPINLOCK(ipd_lock);
376 static unsigned long long last_ipd;
377 static int ipd_count;
378 unsigned long long tmp;
371 struct mci *mci; 379 struct mci *mci;
372 struct mcck_struct *mcck; 380 struct mcck_struct *mcck;
373 int umode; 381 int umode;
@@ -404,11 +412,27 @@ s390_do_machine_check(struct pt_regs *regs)
404 s390_handle_damage("processing backup machine " 412 s390_handle_damage("processing backup machine "
405 "check with damage."); 413 "check with damage.");
406 } 414 }
407 if (!umode) 415
408 s390_handle_damage("processing backup machine " 416 /*
409 "check in kernel mode."); 417 * Nullifying exigent condition, therefore we might
410 mcck->kill_task = 1; 418 * retry this instruction.
411 mcck->mcck_code = *(unsigned long long *) mci; 419 */
420
421 spin_lock(&ipd_lock);
422
423 tmp = get_clock();
424
425 if (((tmp - last_ipd) >> 12) < MAX_IPD_TIME)
426 ipd_count++;
427 else
428 ipd_count = 1;
429
430 last_ipd = tmp;
431
432 if (ipd_count == MAX_IPD_COUNT)
433 s390_handle_damage("too many ipd retries.");
434
435 spin_unlock(&ipd_lock);
412 } 436 }
413 else { 437 else {
414 /* Processing damage -> stopping machine */ 438 /* Processing damage -> stopping machine */
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 3e7302692dbe..a480a3742d47 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -446,7 +446,9 @@ config SCSI_DPT_I2O
446 446
447config SCSI_ADVANSYS 447config SCSI_ADVANSYS
448 tristate "AdvanSys SCSI support" 448 tristate "AdvanSys SCSI support"
449 depends on (ISA || EISA || PCI) && SCSI && BROKEN 449 depends on SCSI
450 depends on ISA || EISA || PCI
451 depends on BROKEN || X86_32
450 help 452 help
451 This is a driver for all SCSI host adapters manufactured by 453 This is a driver for all SCSI host adapters manufactured by
452 AdvanSys. It is documented in the kernel source in 454 AdvanSys. It is documented in the kernel source in
diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
index 28b93057b607..2a419634b256 100644
--- a/drivers/scsi/advansys.c
+++ b/drivers/scsi/advansys.c
@@ -2051,7 +2051,7 @@ STATIC ASC_DCNT AscGetMaxDmaCount(ushort);
2051#define ADV_VADDR_TO_U32 virt_to_bus 2051#define ADV_VADDR_TO_U32 virt_to_bus
2052#define ADV_U32_TO_VADDR bus_to_virt 2052#define ADV_U32_TO_VADDR bus_to_virt
2053 2053
2054#define AdvPortAddr ulong /* Virtual memory address size */ 2054#define AdvPortAddr void __iomem * /* Virtual memory address size */
2055 2055
2056/* 2056/*
2057 * Define Adv Library required memory access macros. 2057 * Define Adv Library required memory access macros.
diff --git a/drivers/serial/cpm_uart/cpm_uart.h b/drivers/serial/cpm_uart/cpm_uart.h
index 73c8a088c160..3b35cb779539 100644
--- a/drivers/serial/cpm_uart/cpm_uart.h
+++ b/drivers/serial/cpm_uart/cpm_uart.h
@@ -5,11 +5,20 @@
5 * 5 *
6 * Copyright (C) 2004 Freescale Semiconductor, Inc. 6 * Copyright (C) 2004 Freescale Semiconductor, Inc.
7 * 7 *
8 * 2006 (c) MontaVista Software, Inc.
9 * Vitaly Bordug <vbordug@ru.mvista.com>
10 *
11 * This file is licensed under the terms of the GNU General Public License
12 * version 2. This program is licensed "as is" without any warranty of any
13 * kind, whether express or implied.
14 *
8 */ 15 */
9#ifndef CPM_UART_H 16#ifndef CPM_UART_H
10#define CPM_UART_H 17#define CPM_UART_H
11 18
12#include <linux/config.h> 19#include <linux/config.h>
20#include <linux/platform_device.h>
21#include <linux/fs_uart_pd.h>
13 22
14#if defined(CONFIG_CPM2) 23#if defined(CONFIG_CPM2)
15#include "cpm_uart_cpm2.h" 24#include "cpm_uart_cpm2.h"
@@ -26,14 +35,14 @@
26#define FLAG_SMC 0x00000002 35#define FLAG_SMC 0x00000002
27#define FLAG_CONSOLE 0x00000001 36#define FLAG_CONSOLE 0x00000001
28 37
29#define UART_SMC1 0 38#define UART_SMC1 fsid_smc1_uart
30#define UART_SMC2 1 39#define UART_SMC2 fsid_smc2_uart
31#define UART_SCC1 2 40#define UART_SCC1 fsid_scc1_uart
32#define UART_SCC2 3 41#define UART_SCC2 fsid_scc2_uart
33#define UART_SCC3 4 42#define UART_SCC3 fsid_scc3_uart
34#define UART_SCC4 5 43#define UART_SCC4 fsid_scc4_uart
35 44
36#define UART_NR 6 45#define UART_NR fs_uart_nr
37 46
38#define RX_NUM_FIFO 4 47#define RX_NUM_FIFO 4
39#define RX_BUF_SIZE 32 48#define RX_BUF_SIZE 32
@@ -64,6 +73,7 @@ struct uart_cpm_port {
64 uint dp_addr; 73 uint dp_addr;
65 void *mem_addr; 74 void *mem_addr;
66 dma_addr_t dma_addr; 75 dma_addr_t dma_addr;
76 u32 mem_size;
67 /* helpers */ 77 /* helpers */
68 int baud; 78 int baud;
69 int bits; 79 int bits;
@@ -90,4 +100,38 @@ void scc2_lineif(struct uart_cpm_port *pinfo);
90void scc3_lineif(struct uart_cpm_port *pinfo); 100void scc3_lineif(struct uart_cpm_port *pinfo);
91void scc4_lineif(struct uart_cpm_port *pinfo); 101void scc4_lineif(struct uart_cpm_port *pinfo);
92 102
103/*
104 virtual to phys transtalion
105*/
106static inline unsigned long cpu2cpm_addr(void* addr, struct uart_cpm_port *pinfo)
107{
108 int offset;
109 u32 val = (u32)addr;
110 /* sane check */
111 if (likely((val >= (u32)pinfo->mem_addr)) &&
112 (val<((u32)pinfo->mem_addr + pinfo->mem_size))) {
113 offset = val - (u32)pinfo->mem_addr;
114 return pinfo->dma_addr+offset;
115 }
116 /* something nasty happened */
117 BUG();
118 return 0;
119}
120
121static inline void *cpm2cpu_addr(unsigned long addr, struct uart_cpm_port *pinfo)
122{
123 int offset;
124 u32 val = addr;
125 /* sane check */
126 if (likely((val >= pinfo->dma_addr) &&
127 (val<(pinfo->dma_addr + pinfo->mem_size)))) {
128 offset = val - (u32)pinfo->dma_addr;
129 return (void*)(pinfo->mem_addr+offset);
130 }
131 /* something nasty happened */
132 BUG();
133 return 0;
134}
135
136
93#endif /* CPM_UART_H */ 137#endif /* CPM_UART_H */
diff --git a/drivers/serial/cpm_uart/cpm_uart_core.c b/drivers/serial/cpm_uart/cpm_uart_core.c
index b7bf4c698a47..969f94900431 100644
--- a/drivers/serial/cpm_uart/cpm_uart_core.c
+++ b/drivers/serial/cpm_uart/cpm_uart_core.c
@@ -12,7 +12,8 @@
12 * 12 *
13 * Copyright (C) 2004 Freescale Semiconductor, Inc. 13 * Copyright (C) 2004 Freescale Semiconductor, Inc.
14 * (C) 2004 Intracom, S.A. 14 * (C) 2004 Intracom, S.A.
15 * (C) 2005 MontaVista Software, Inc. by Vitaly Bordug <vbordug@ru.mvista.com> 15 * (C) 2005-2006 MontaVista Software, Inc.
16 * Vitaly Bordug <vbordug@ru.mvista.com>
16 * 17 *
17 * This program is free software; you can redistribute it and/or modify 18 * This program is free software; you can redistribute it and/or modify
18 * it under the terms of the GNU General Public License as published by 19 * it under the terms of the GNU General Public License as published by
@@ -41,6 +42,7 @@
41#include <linux/device.h> 42#include <linux/device.h>
42#include <linux/bootmem.h> 43#include <linux/bootmem.h>
43#include <linux/dma-mapping.h> 44#include <linux/dma-mapping.h>
45#include <linux/fs_uart_pd.h>
44 46
45#include <asm/io.h> 47#include <asm/io.h>
46#include <asm/irq.h> 48#include <asm/irq.h>
@@ -60,7 +62,7 @@
60/* Track which ports are configured as uarts */ 62/* Track which ports are configured as uarts */
61int cpm_uart_port_map[UART_NR]; 63int cpm_uart_port_map[UART_NR];
62/* How many ports did we config as uarts */ 64/* How many ports did we config as uarts */
63int cpm_uart_nr; 65int cpm_uart_nr = 0;
64 66
65/**************************************************************/ 67/**************************************************************/
66 68
@@ -71,18 +73,51 @@ static void cpm_uart_initbd(struct uart_cpm_port *pinfo);
71 73
72/**************************************************************/ 74/**************************************************************/
73 75
74static inline unsigned long cpu2cpm_addr(void *addr) 76
77/* Place-holder for board-specific stuff */
78struct platform_device* __attribute__ ((weak)) __init
79early_uart_get_pdev(int index)
80{
81 return NULL;
82}
83
84
85static void cpm_uart_count(void)
75{ 86{
76 if ((unsigned long)addr >= CPM_ADDR) 87 cpm_uart_nr = 0;
77 return (unsigned long)addr; 88#ifdef CONFIG_SERIAL_CPM_SMC1
78 return virt_to_bus(addr); 89 cpm_uart_port_map[cpm_uart_nr++] = UART_SMC1;
90#endif
91#ifdef CONFIG_SERIAL_CPM_SMC2
92 cpm_uart_port_map[cpm_uart_nr++] = UART_SMC2;
93#endif
94#ifdef CONFIG_SERIAL_CPM_SCC1
95 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC1;
96#endif
97#ifdef CONFIG_SERIAL_CPM_SCC2
98 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC2;
99#endif
100#ifdef CONFIG_SERIAL_CPM_SCC3
101 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC3;
102#endif
103#ifdef CONFIG_SERIAL_CPM_SCC4
104 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC4;
105#endif
79} 106}
80 107
81static inline void *cpm2cpu_addr(unsigned long addr) 108/* Get UART number by its id */
109static int cpm_uart_id2nr(int id)
82{ 110{
83 if (addr >= CPM_ADDR) 111 int i;
84 return (void *)addr; 112 if (id < UART_NR) {
85 return bus_to_virt(addr); 113 for (i=0; i<UART_NR; i++) {
114 if (cpm_uart_port_map[i] == id)
115 return i;
116 }
117 }
118
119 /* not found or invalid argument */
120 return -1;
86} 121}
87 122
88/* 123/*
@@ -258,7 +293,7 @@ static void cpm_uart_int_rx(struct uart_port *port, struct pt_regs *regs)
258 } 293 }
259 294
260 /* get pointer */ 295 /* get pointer */
261 cp = cpm2cpu_addr(bdp->cbd_bufaddr); 296 cp = cpm2cpu_addr(bdp->cbd_bufaddr, pinfo);
262 297
263 /* loop through the buffer */ 298 /* loop through the buffer */
264 while (i-- > 0) { 299 while (i-- > 0) {
@@ -438,7 +473,11 @@ static void cpm_uart_shutdown(struct uart_port *port)
438 } 473 }
439 474
440 /* Shut them really down and reinit buffer descriptors */ 475 /* Shut them really down and reinit buffer descriptors */
441 cpm_line_cr_cmd(line, CPM_CR_STOP_TX); 476 if (IS_SMC(pinfo))
477 cpm_line_cr_cmd(line, CPM_CR_STOP_TX);
478 else
479 cpm_line_cr_cmd(line, CPM_CR_GRA_STOP_TX);
480
442 cpm_uart_initbd(pinfo); 481 cpm_uart_initbd(pinfo);
443 } 482 }
444} 483}
@@ -601,7 +640,7 @@ static int cpm_uart_tx_pump(struct uart_port *port)
601 /* Pick next descriptor and fill from buffer */ 640 /* Pick next descriptor and fill from buffer */
602 bdp = pinfo->tx_cur; 641 bdp = pinfo->tx_cur;
603 642
604 p = cpm2cpu_addr(bdp->cbd_bufaddr); 643 p = cpm2cpu_addr(bdp->cbd_bufaddr, pinfo);
605 644
606 *p++ = port->x_char; 645 *p++ = port->x_char;
607 bdp->cbd_datlen = 1; 646 bdp->cbd_datlen = 1;
@@ -628,7 +667,7 @@ static int cpm_uart_tx_pump(struct uart_port *port)
628 667
629 while (!(bdp->cbd_sc & BD_SC_READY) && (xmit->tail != xmit->head)) { 668 while (!(bdp->cbd_sc & BD_SC_READY) && (xmit->tail != xmit->head)) {
630 count = 0; 669 count = 0;
631 p = cpm2cpu_addr(bdp->cbd_bufaddr); 670 p = cpm2cpu_addr(bdp->cbd_bufaddr, pinfo);
632 while (count < pinfo->tx_fifosize) { 671 while (count < pinfo->tx_fifosize) {
633 *p++ = xmit->buf[xmit->tail]; 672 *p++ = xmit->buf[xmit->tail];
634 xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); 673 xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);
@@ -677,12 +716,12 @@ static void cpm_uart_initbd(struct uart_cpm_port *pinfo)
677 mem_addr = pinfo->mem_addr; 716 mem_addr = pinfo->mem_addr;
678 bdp = pinfo->rx_cur = pinfo->rx_bd_base; 717 bdp = pinfo->rx_cur = pinfo->rx_bd_base;
679 for (i = 0; i < (pinfo->rx_nrfifos - 1); i++, bdp++) { 718 for (i = 0; i < (pinfo->rx_nrfifos - 1); i++, bdp++) {
680 bdp->cbd_bufaddr = cpu2cpm_addr(mem_addr); 719 bdp->cbd_bufaddr = cpu2cpm_addr(mem_addr, pinfo);
681 bdp->cbd_sc = BD_SC_EMPTY | BD_SC_INTRPT; 720 bdp->cbd_sc = BD_SC_EMPTY | BD_SC_INTRPT;
682 mem_addr += pinfo->rx_fifosize; 721 mem_addr += pinfo->rx_fifosize;
683 } 722 }
684 723
685 bdp->cbd_bufaddr = cpu2cpm_addr(mem_addr); 724 bdp->cbd_bufaddr = cpu2cpm_addr(mem_addr, pinfo);
686 bdp->cbd_sc = BD_SC_WRAP | BD_SC_EMPTY | BD_SC_INTRPT; 725 bdp->cbd_sc = BD_SC_WRAP | BD_SC_EMPTY | BD_SC_INTRPT;
687 726
688 /* Set the physical address of the host memory 727 /* Set the physical address of the host memory
@@ -692,12 +731,12 @@ static void cpm_uart_initbd(struct uart_cpm_port *pinfo)
692 mem_addr = pinfo->mem_addr + L1_CACHE_ALIGN(pinfo->rx_nrfifos * pinfo->rx_fifosize); 731 mem_addr = pinfo->mem_addr + L1_CACHE_ALIGN(pinfo->rx_nrfifos * pinfo->rx_fifosize);
693 bdp = pinfo->tx_cur = pinfo->tx_bd_base; 732 bdp = pinfo->tx_cur = pinfo->tx_bd_base;
694 for (i = 0; i < (pinfo->tx_nrfifos - 1); i++, bdp++) { 733 for (i = 0; i < (pinfo->tx_nrfifos - 1); i++, bdp++) {
695 bdp->cbd_bufaddr = cpu2cpm_addr(mem_addr); 734 bdp->cbd_bufaddr = cpu2cpm_addr(mem_addr, pinfo);
696 bdp->cbd_sc = BD_SC_INTRPT; 735 bdp->cbd_sc = BD_SC_INTRPT;
697 mem_addr += pinfo->tx_fifosize; 736 mem_addr += pinfo->tx_fifosize;
698 } 737 }
699 738
700 bdp->cbd_bufaddr = cpu2cpm_addr(mem_addr); 739 bdp->cbd_bufaddr = cpu2cpm_addr(mem_addr, pinfo);
701 bdp->cbd_sc = BD_SC_WRAP | BD_SC_INTRPT; 740 bdp->cbd_sc = BD_SC_WRAP | BD_SC_INTRPT;
702} 741}
703 742
@@ -829,14 +868,6 @@ static int cpm_uart_request_port(struct uart_port *port)
829 if (pinfo->flags & FLAG_CONSOLE) 868 if (pinfo->flags & FLAG_CONSOLE)
830 return 0; 869 return 0;
831 870
832 /*
833 * Setup any port IO, connect any baud rate generators,
834 * etc. This is expected to be handled by board
835 * dependant code
836 */
837 if (pinfo->set_lineif)
838 pinfo->set_lineif(pinfo);
839
840 if (IS_SMC(pinfo)) { 871 if (IS_SMC(pinfo)) {
841 pinfo->smcp->smc_smcm &= ~(SMCM_RX | SMCM_TX); 872 pinfo->smcp->smc_smcm &= ~(SMCM_RX | SMCM_TX);
842 pinfo->smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN); 873 pinfo->smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);
@@ -988,6 +1019,58 @@ struct uart_cpm_port cpm_uart_ports[UART_NR] = {
988 }, 1019 },
989}; 1020};
990 1021
1022int cpm_uart_drv_get_platform_data(struct platform_device *pdev, int is_con)
1023{
1024 struct resource *r;
1025 struct fs_uart_platform_info *pdata = pdev->dev.platform_data;
1026 int idx = pdata->fs_no; /* It is UART_SMCx or UART_SCCx index */
1027 struct uart_cpm_port *pinfo;
1028 int line;
1029 u32 mem, pram;
1030
1031 line = cpm_uart_id2nr(idx);
1032 if(line < 0) {
1033 printk(KERN_ERR"%s(): port %d is not registered", __FUNCTION__, idx);
1034 return -1;
1035 }
1036
1037 pinfo = (struct uart_cpm_port *) &cpm_uart_ports[idx];
1038
1039 pinfo->brg = pdata->brg;
1040
1041 if (!is_con) {
1042 pinfo->port.line = line;
1043 pinfo->port.flags = UPF_BOOT_AUTOCONF;
1044 }
1045
1046 if (!(r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs")))
1047 return -EINVAL;
1048 mem = r->start;
1049
1050 if (!(r = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pram")))
1051 return -EINVAL;
1052 pram = r->start;
1053
1054 if(idx > fsid_smc2_uart) {
1055 pinfo->sccp = (scc_t *)mem;
1056 pinfo->sccup = (scc_uart_t *)pram;
1057 } else {
1058 pinfo->smcp = (smc_t *)mem;
1059 pinfo->smcup = (smc_uart_t *)pram;
1060 }
1061 pinfo->tx_nrfifos = pdata->tx_num_fifo;
1062 pinfo->tx_fifosize = pdata->tx_buf_size;
1063
1064 pinfo->rx_nrfifos = pdata->rx_num_fifo;
1065 pinfo->rx_fifosize = pdata->rx_buf_size;
1066
1067 pinfo->port.uartclk = pdata->uart_clk;
1068 pinfo->port.mapbase = (unsigned long)mem;
1069 pinfo->port.irq = platform_get_irq(pdev, 0);
1070
1071 return 0;
1072}
1073
991#ifdef CONFIG_SERIAL_CPM_CONSOLE 1074#ifdef CONFIG_SERIAL_CPM_CONSOLE
992/* 1075/*
993 * Print a string to the serial port trying not to disturb 1076 * Print a string to the serial port trying not to disturb
@@ -1027,7 +1110,7 @@ static void cpm_uart_console_write(struct console *co, const char *s,
1027 * If the buffer address is in the CPM DPRAM, don't 1110 * If the buffer address is in the CPM DPRAM, don't
1028 * convert it. 1111 * convert it.
1029 */ 1112 */
1030 cp = cpm2cpu_addr(bdp->cbd_bufaddr); 1113 cp = cpm2cpu_addr(bdp->cbd_bufaddr, pinfo);
1031 1114
1032 *cp = *s; 1115 *cp = *s;
1033 1116
@@ -1044,7 +1127,7 @@ static void cpm_uart_console_write(struct console *co, const char *s,
1044 while ((bdp->cbd_sc & BD_SC_READY) != 0) 1127 while ((bdp->cbd_sc & BD_SC_READY) != 0)
1045 ; 1128 ;
1046 1129
1047 cp = cpm2cpu_addr(bdp->cbd_bufaddr); 1130 cp = cpm2cpu_addr(bdp->cbd_bufaddr, pinfo);
1048 1131
1049 *cp = 13; 1132 *cp = 13;
1050 bdp->cbd_datlen = 1; 1133 bdp->cbd_datlen = 1;
@@ -1067,9 +1150,7 @@ static void cpm_uart_console_write(struct console *co, const char *s,
1067 pinfo->tx_cur = (volatile cbd_t *) bdp; 1150 pinfo->tx_cur = (volatile cbd_t *) bdp;
1068} 1151}
1069 1152
1070/* 1153
1071 * Setup console. Be careful is called early !
1072 */
1073static int __init cpm_uart_console_setup(struct console *co, char *options) 1154static int __init cpm_uart_console_setup(struct console *co, char *options)
1074{ 1155{
1075 struct uart_port *port; 1156 struct uart_port *port;
@@ -1080,9 +1161,27 @@ static int __init cpm_uart_console_setup(struct console *co, char *options)
1080 int flow = 'n'; 1161 int flow = 'n';
1081 int ret; 1162 int ret;
1082 1163
1164 struct fs_uart_platform_info *pdata;
1165 struct platform_device* pdev = early_uart_get_pdev(co->index);
1166
1083 port = 1167 port =
1084 (struct uart_port *)&cpm_uart_ports[cpm_uart_port_map[co->index]]; 1168 (struct uart_port *)&cpm_uart_ports[cpm_uart_port_map[co->index]];
1085 pinfo = (struct uart_cpm_port *)port; 1169 pinfo = (struct uart_cpm_port *)port;
1170 if (!pdev) {
1171 pr_info("cpm_uart: console: compat mode\n");
1172 /* compatibility - will be cleaned up */
1173 cpm_uart_init_portdesc();
1174
1175 if (pinfo->set_lineif)
1176 pinfo->set_lineif(pinfo);
1177 } else {
1178 pdata = pdev->dev.platform_data;
1179 if (pdata)
1180 if (pdata->init_ioports)
1181 pdata->init_ioports();
1182
1183 cpm_uart_drv_get_platform_data(pdev, 1);
1184 }
1086 1185
1087 pinfo->flags |= FLAG_CONSOLE; 1186 pinfo->flags |= FLAG_CONSOLE;
1088 1187
@@ -1097,14 +1196,6 @@ static int __init cpm_uart_console_setup(struct console *co, char *options)
1097 baud = 9600; 1196 baud = 9600;
1098 } 1197 }
1099 1198
1100 /*
1101 * Setup any port IO, connect any baud rate generators,
1102 * etc. This is expected to be handled by board
1103 * dependant code
1104 */
1105 if (pinfo->set_lineif)
1106 pinfo->set_lineif(pinfo);
1107
1108 if (IS_SMC(pinfo)) { 1199 if (IS_SMC(pinfo)) {
1109 pinfo->smcp->smc_smcm &= ~(SMCM_RX | SMCM_TX); 1200 pinfo->smcp->smc_smcm &= ~(SMCM_RX | SMCM_TX);
1110 pinfo->smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN); 1201 pinfo->smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);
@@ -1143,11 +1234,8 @@ static struct console cpm_scc_uart_console = {
1143 1234
1144int __init cpm_uart_console_init(void) 1235int __init cpm_uart_console_init(void)
1145{ 1236{
1146 int ret = cpm_uart_init_portdesc(); 1237 register_console(&cpm_scc_uart_console);
1147 1238 return 0;
1148 if (!ret)
1149 register_console(&cpm_scc_uart_console);
1150 return ret;
1151} 1239}
1152 1240
1153console_initcall(cpm_uart_console_init); 1241console_initcall(cpm_uart_console_init);
@@ -1165,44 +1253,129 @@ static struct uart_driver cpm_reg = {
1165 .minor = SERIAL_CPM_MINOR, 1253 .minor = SERIAL_CPM_MINOR,
1166 .cons = CPM_UART_CONSOLE, 1254 .cons = CPM_UART_CONSOLE,
1167}; 1255};
1168 1256static int cpm_uart_drv_probe(struct device *dev)
1169static int __init cpm_uart_init(void)
1170{ 1257{
1171 int ret, i; 1258 struct platform_device *pdev = to_platform_device(dev);
1172 1259 struct fs_uart_platform_info *pdata;
1173 printk(KERN_INFO "Serial: CPM driver $Revision: 0.01 $\n"); 1260 int ret = -ENODEV;
1174 1261
1175#ifndef CONFIG_SERIAL_CPM_CONSOLE 1262 if(!pdev) {
1176 ret = cpm_uart_init_portdesc(); 1263 printk(KERN_ERR"CPM UART: platform data missing!\n");
1177 if (ret)
1178 return ret; 1264 return ret;
1179#endif 1265 }
1180 1266
1181 cpm_reg.nr = cpm_uart_nr; 1267 pdata = pdev->dev.platform_data;
1182 ret = uart_register_driver(&cpm_reg); 1268 pr_debug("cpm_uart_drv_probe: Adding CPM UART %d\n", cpm_uart_id2nr(pdata->fs_no));
1183 1269
1184 if (ret) 1270 if ((ret = cpm_uart_drv_get_platform_data(pdev, 0)))
1185 return ret; 1271 return ret;
1186 1272
1187 for (i = 0; i < cpm_uart_nr; i++) { 1273 if (pdata->init_ioports)
1188 int con = cpm_uart_port_map[i]; 1274 pdata->init_ioports();
1189 cpm_uart_ports[con].port.line = i;
1190 cpm_uart_ports[con].port.flags = UPF_BOOT_AUTOCONF;
1191 uart_add_one_port(&cpm_reg, &cpm_uart_ports[con].port);
1192 }
1193 1275
1194 return ret; 1276 ret = uart_add_one_port(&cpm_reg, &cpm_uart_ports[pdata->fs_no].port);
1277
1278 return ret;
1195} 1279}
1196 1280
1197static void __exit cpm_uart_exit(void) 1281static int cpm_uart_drv_remove(struct device *dev)
1198{ 1282{
1283 struct platform_device *pdev = to_platform_device(dev);
1284 struct fs_uart_platform_info *pdata = pdev->dev.platform_data;
1285
1286 pr_debug("cpm_uart_drv_remove: Removing CPM UART %d\n",
1287 cpm_uart_id2nr(pdata->fs_no));
1288
1289 uart_remove_one_port(&cpm_reg, &cpm_uart_ports[pdata->fs_no].port);
1290 return 0;
1291}
1292
1293static struct device_driver cpm_smc_uart_driver = {
1294 .name = "fsl-cpm-smc:uart",
1295 .bus = &platform_bus_type,
1296 .probe = cpm_uart_drv_probe,
1297 .remove = cpm_uart_drv_remove,
1298};
1299
1300static struct device_driver cpm_scc_uart_driver = {
1301 .name = "fsl-cpm-scc:uart",
1302 .bus = &platform_bus_type,
1303 .probe = cpm_uart_drv_probe,
1304 .remove = cpm_uart_drv_remove,
1305};
1306
1307/*
1308 This is supposed to match uart devices on platform bus,
1309 */
1310static int match_is_uart (struct device* dev, void* data)
1311{
1312 struct platform_device* pdev = container_of(dev, struct platform_device, dev);
1313 int ret = 0;
1314 /* this was setfunc as uart */
1315 if(strstr(pdev->name,":uart")) {
1316 ret = 1;
1317 }
1318 return ret;
1319}
1320
1321
1322static int cpm_uart_init(void) {
1323
1324 int ret;
1199 int i; 1325 int i;
1326 struct device *dev;
1327 printk(KERN_INFO "Serial: CPM driver $Revision: 0.02 $\n");
1328
1329 /* lookup the bus for uart devices */
1330 dev = bus_find_device(&platform_bus_type, NULL, 0, match_is_uart);
1331
1332 /* There are devices on the bus - all should be OK */
1333 if (dev) {
1334 cpm_uart_count();
1335 cpm_reg.nr = cpm_uart_nr;
1336
1337 if (!(ret = uart_register_driver(&cpm_reg))) {
1338 if ((ret = driver_register(&cpm_smc_uart_driver))) {
1339 uart_unregister_driver(&cpm_reg);
1340 return ret;
1341 }
1342 if ((ret = driver_register(&cpm_scc_uart_driver))) {
1343 driver_unregister(&cpm_scc_uart_driver);
1344 uart_unregister_driver(&cpm_reg);
1345 }
1346 }
1347 } else {
1348 /* No capable platform devices found - falling back to legacy mode */
1349 pr_info("cpm_uart: WARNING: no UART devices found on platform bus!\n");
1350 pr_info(
1351 "cpm_uart: the driver will guess configuration, but this mode is no longer supported.\n");
1352#ifndef CONFIG_SERIAL_CPM_CONSOLE
1353 ret = cpm_uart_init_portdesc();
1354 if (ret)
1355 return ret;
1356#endif
1357
1358 cpm_reg.nr = cpm_uart_nr;
1359 ret = uart_register_driver(&cpm_reg);
1360
1361 if (ret)
1362 return ret;
1363
1364 for (i = 0; i < cpm_uart_nr; i++) {
1365 int con = cpm_uart_port_map[i];
1366 cpm_uart_ports[con].port.line = i;
1367 cpm_uart_ports[con].port.flags = UPF_BOOT_AUTOCONF;
1368 uart_add_one_port(&cpm_reg, &cpm_uart_ports[con].port);
1369 }
1200 1370
1201 for (i = 0; i < cpm_uart_nr; i++) {
1202 int con = cpm_uart_port_map[i];
1203 uart_remove_one_port(&cpm_reg, &cpm_uart_ports[con].port);
1204 } 1371 }
1372 return ret;
1373}
1205 1374
1375static void __exit cpm_uart_exit(void)
1376{
1377 driver_unregister(&cpm_scc_uart_driver);
1378 driver_unregister(&cpm_smc_uart_driver);
1206 uart_unregister_driver(&cpm_reg); 1379 uart_unregister_driver(&cpm_reg);
1207} 1380}
1208 1381
diff --git a/drivers/serial/cpm_uart/cpm_uart_cpm1.c b/drivers/serial/cpm_uart/cpm_uart_cpm1.c
index d789ee55cbb7..17406a05ce1f 100644
--- a/drivers/serial/cpm_uart/cpm_uart_cpm1.c
+++ b/drivers/serial/cpm_uart/cpm_uart_cpm1.c
@@ -8,6 +8,8 @@
8 * 8 *
9 * Copyright (C) 2004 Freescale Semiconductor, Inc. 9 * Copyright (C) 2004 Freescale Semiconductor, Inc.
10 * (C) 2004 Intracom, S.A. 10 * (C) 2004 Intracom, S.A.
11 * (C) 2006 MontaVista Software, Inc.
12 * Vitaly Bordug <vbordug@ru.mvista.com>
11 * 13 *
12 * This program is free software; you can redistribute it and/or modify 14 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by 15 * it under the terms of the GNU General Public License as published by
@@ -81,58 +83,11 @@ void cpm_line_cr_cmd(int line, int cmd)
81 83
82void smc1_lineif(struct uart_cpm_port *pinfo) 84void smc1_lineif(struct uart_cpm_port *pinfo)
83{ 85{
84 volatile cpm8xx_t *cp = cpmp;
85
86 (void)cp; /* fix warning */
87#if defined (CONFIG_MPC885ADS)
88 /* Enable SMC1 transceivers */
89 {
90 cp->cp_pepar |= 0x000000c0;
91 cp->cp_pedir &= ~0x000000c0;
92 cp->cp_peso &= ~0x00000040;
93 cp->cp_peso |= 0x00000080;
94 }
95#elif defined (CONFIG_MPC86XADS)
96 unsigned int iobits = 0x000000c0;
97
98 if (!pinfo->is_portb) {
99 cp->cp_pbpar |= iobits;
100 cp->cp_pbdir &= ~iobits;
101 cp->cp_pbodr &= ~iobits;
102 } else {
103 ((immap_t *)IMAP_ADDR)->im_ioport.iop_papar |= iobits;
104 ((immap_t *)IMAP_ADDR)->im_ioport.iop_padir &= ~iobits;
105 ((immap_t *)IMAP_ADDR)->im_ioport.iop_paodr &= ~iobits;
106 }
107#endif
108 pinfo->brg = 1; 86 pinfo->brg = 1;
109} 87}
110 88
111void smc2_lineif(struct uart_cpm_port *pinfo) 89void smc2_lineif(struct uart_cpm_port *pinfo)
112{ 90{
113 volatile cpm8xx_t *cp = cpmp;
114
115 (void)cp; /* fix warning */
116#if defined (CONFIG_MPC885ADS)
117 cp->cp_pepar |= 0x00000c00;
118 cp->cp_pedir &= ~0x00000c00;
119 cp->cp_peso &= ~0x00000400;
120 cp->cp_peso |= 0x00000800;
121#elif defined (CONFIG_MPC86XADS)
122 unsigned int iobits = 0x00000c00;
123
124 if (!pinfo->is_portb) {
125 cp->cp_pbpar |= iobits;
126 cp->cp_pbdir &= ~iobits;
127 cp->cp_pbodr &= ~iobits;
128 } else {
129 ((immap_t *)IMAP_ADDR)->im_ioport.iop_papar |= iobits;
130 ((immap_t *)IMAP_ADDR)->im_ioport.iop_padir &= ~iobits;
131 ((immap_t *)IMAP_ADDR)->im_ioport.iop_paodr &= ~iobits;
132 }
133
134#endif
135
136 pinfo->brg = 2; 91 pinfo->brg = 2;
137} 92}
138 93
@@ -191,7 +146,7 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con)
191 /* was hostalloc but changed cause it blows away the */ 146 /* was hostalloc but changed cause it blows away the */
192 /* large tlb mapping when pinning the kernel area */ 147 /* large tlb mapping when pinning the kernel area */
193 mem_addr = (u8 *) cpm_dpram_addr(cpm_dpalloc(memsz, 8)); 148 mem_addr = (u8 *) cpm_dpram_addr(cpm_dpalloc(memsz, 8));
194 dma_addr = 0; 149 dma_addr = (u32)mem_addr;
195 } else 150 } else
196 mem_addr = dma_alloc_coherent(NULL, memsz, &dma_addr, 151 mem_addr = dma_alloc_coherent(NULL, memsz, &dma_addr,
197 GFP_KERNEL); 152 GFP_KERNEL);
@@ -204,8 +159,9 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con)
204 } 159 }
205 160
206 pinfo->dp_addr = dp_offset; 161 pinfo->dp_addr = dp_offset;
207 pinfo->mem_addr = mem_addr; 162 pinfo->mem_addr = mem_addr; /* virtual address*/
208 pinfo->dma_addr = dma_addr; 163 pinfo->dma_addr = dma_addr; /* physical address*/
164 pinfo->mem_size = memsz;
209 165
210 pinfo->rx_buf = mem_addr; 166 pinfo->rx_buf = mem_addr;
211 pinfo->tx_buf = pinfo->rx_buf + L1_CACHE_ALIGN(pinfo->rx_nrfifos 167 pinfo->tx_buf = pinfo->rx_buf + L1_CACHE_ALIGN(pinfo->rx_nrfifos
diff --git a/drivers/serial/cpm_uart/cpm_uart_cpm2.c b/drivers/serial/cpm_uart/cpm_uart_cpm2.c
index fd9e53ed3feb..4b2de08f46d0 100644
--- a/drivers/serial/cpm_uart/cpm_uart_cpm2.c
+++ b/drivers/serial/cpm_uart/cpm_uart_cpm2.c
@@ -8,6 +8,8 @@
8 * 8 *
9 * Copyright (C) 2004 Freescale Semiconductor, Inc. 9 * Copyright (C) 2004 Freescale Semiconductor, Inc.
10 * (C) 2004 Intracom, S.A. 10 * (C) 2004 Intracom, S.A.
11 * (C) 2006 MontaVista Software, Inc.
12 * Vitaly Bordug <vbordug@ru.mvista.com>
11 * 13 *
12 * This program is free software; you can redistribute it and/or modify 14 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by 15 * it under the terms of the GNU General Public License as published by
@@ -142,14 +144,6 @@ void scc2_lineif(struct uart_cpm_port *pinfo)
142 * be supported in a sane fashion. 144 * be supported in a sane fashion.
143 */ 145 */
144#ifndef CONFIG_STX_GP3 146#ifndef CONFIG_STX_GP3
145#ifdef CONFIG_MPC8560_ADS
146 volatile iop_cpm2_t *io = &cpm2_immr->im_ioport;
147 io->iop_ppard |= 0x00000018;
148 io->iop_psord &= ~0x00000008; /* Rx */
149 io->iop_psord &= ~0x00000010; /* Tx */
150 io->iop_pdird &= ~0x00000008; /* Rx */
151 io->iop_pdird |= 0x00000010; /* Tx */
152#else
153 volatile iop_cpm2_t *io = &cpm2_immr->im_ioport; 147 volatile iop_cpm2_t *io = &cpm2_immr->im_ioport;
154 io->iop_pparb |= 0x008b0000; 148 io->iop_pparb |= 0x008b0000;
155 io->iop_pdirb |= 0x00880000; 149 io->iop_pdirb |= 0x00880000;
@@ -157,7 +151,6 @@ void scc2_lineif(struct uart_cpm_port *pinfo)
157 io->iop_pdirb &= ~0x00030000; 151 io->iop_pdirb &= ~0x00030000;
158 io->iop_psorb &= ~0x00030000; 152 io->iop_psorb &= ~0x00030000;
159#endif 153#endif
160#endif
161 cpm2_immr->im_cpmux.cmx_scr &= 0xff00ffff; 154 cpm2_immr->im_cpmux.cmx_scr &= 0xff00ffff;
162 cpm2_immr->im_cpmux.cmx_scr |= 0x00090000; 155 cpm2_immr->im_cpmux.cmx_scr |= 0x00090000;
163 pinfo->brg = 2; 156 pinfo->brg = 2;
@@ -218,8 +211,10 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con)
218 211
219 memsz = L1_CACHE_ALIGN(pinfo->rx_nrfifos * pinfo->rx_fifosize) + 212 memsz = L1_CACHE_ALIGN(pinfo->rx_nrfifos * pinfo->rx_fifosize) +
220 L1_CACHE_ALIGN(pinfo->tx_nrfifos * pinfo->tx_fifosize); 213 L1_CACHE_ALIGN(pinfo->tx_nrfifos * pinfo->tx_fifosize);
221 if (is_con) 214 if (is_con) {
222 mem_addr = alloc_bootmem(memsz); 215 mem_addr = alloc_bootmem(memsz);
216 dma_addr = mem_addr;
217 }
223 else 218 else
224 mem_addr = dma_alloc_coherent(NULL, memsz, &dma_addr, 219 mem_addr = dma_alloc_coherent(NULL, memsz, &dma_addr,
225 GFP_KERNEL); 220 GFP_KERNEL);
@@ -234,6 +229,7 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con)
234 pinfo->dp_addr = dp_offset; 229 pinfo->dp_addr = dp_offset;
235 pinfo->mem_addr = mem_addr; 230 pinfo->mem_addr = mem_addr;
236 pinfo->dma_addr = dma_addr; 231 pinfo->dma_addr = dma_addr;
232 pinfo->mem_size = memsz;
237 233
238 pinfo->rx_buf = mem_addr; 234 pinfo->rx_buf = mem_addr;
239 pinfo->tx_buf = pinfo->rx_buf + L1_CACHE_ALIGN(pinfo->rx_nrfifos 235 pinfo->tx_buf = pinfo->rx_buf + L1_CACHE_ALIGN(pinfo->rx_nrfifos
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c
index c3b7a6673e9c..d202eb4f3848 100644
--- a/drivers/serial/imx.c
+++ b/drivers/serial/imx.c
@@ -45,6 +45,7 @@
45#include <asm/io.h> 45#include <asm/io.h>
46#include <asm/irq.h> 46#include <asm/irq.h>
47#include <asm/hardware.h> 47#include <asm/hardware.h>
48#include <asm/arch/imx-uart.h>
48 49
49/* We've been assigned a range on the "Low-density serial ports" major */ 50/* We've been assigned a range on the "Low-density serial ports" major */
50#define SERIAL_IMX_MAJOR 204 51#define SERIAL_IMX_MAJOR 204
@@ -73,7 +74,8 @@ struct imx_port {
73 struct uart_port port; 74 struct uart_port port;
74 struct timer_list timer; 75 struct timer_list timer;
75 unsigned int old_status; 76 unsigned int old_status;
76 int txirq,rxirq,rtsirq; 77 int txirq,rxirq,rtsirq;
78 int have_rtscts:1;
77}; 79};
78 80
79/* 81/*
@@ -491,8 +493,12 @@ imx_set_termios(struct uart_port *port, struct termios *termios,
491 ucr2 = UCR2_SRST | UCR2_IRTS; 493 ucr2 = UCR2_SRST | UCR2_IRTS;
492 494
493 if (termios->c_cflag & CRTSCTS) { 495 if (termios->c_cflag & CRTSCTS) {
494 ucr2 &= ~UCR2_IRTS; 496 if( sport->have_rtscts ) {
495 ucr2 |= UCR2_CTSC; 497 ucr2 &= ~UCR2_IRTS;
498 ucr2 |= UCR2_CTSC;
499 } else {
500 termios->c_cflag &= ~CRTSCTS;
501 }
496 } 502 }
497 503
498 if (termios->c_cflag & CSTOPB) 504 if (termios->c_cflag & CSTOPB)
@@ -719,27 +725,6 @@ static void __init imx_init_ports(void)
719 imx_ports[i].timer.function = imx_timeout; 725 imx_ports[i].timer.function = imx_timeout;
720 imx_ports[i].timer.data = (unsigned long)&imx_ports[i]; 726 imx_ports[i].timer.data = (unsigned long)&imx_ports[i];
721 } 727 }
722
723 imx_gpio_mode(PC9_PF_UART1_CTS);
724 imx_gpio_mode(PC10_PF_UART1_RTS);
725 imx_gpio_mode(PC11_PF_UART1_TXD);
726 imx_gpio_mode(PC12_PF_UART1_RXD);
727 imx_gpio_mode(PB28_PF_UART2_CTS);
728 imx_gpio_mode(PB29_PF_UART2_RTS);
729
730 imx_gpio_mode(PB30_PF_UART2_TXD);
731 imx_gpio_mode(PB31_PF_UART2_RXD);
732
733#if 0 /* We don't need these, on the mx1 the _modem_ side of the uart
734 * is implemented.
735 */
736 imx_gpio_mode(PD7_AF_UART2_DTR);
737 imx_gpio_mode(PD8_AF_UART2_DCD);
738 imx_gpio_mode(PD9_AF_UART2_RI);
739 imx_gpio_mode(PD10_AF_UART2_DSR);
740#endif
741
742
743} 728}
744 729
745#ifdef CONFIG_SERIAL_IMX_CONSOLE 730#ifdef CONFIG_SERIAL_IMX_CONSOLE
@@ -932,7 +917,14 @@ static int serial_imx_resume(struct platform_device *dev)
932 917
933static int serial_imx_probe(struct platform_device *dev) 918static int serial_imx_probe(struct platform_device *dev)
934{ 919{
920 struct imxuart_platform_data *pdata;
921
935 imx_ports[dev->id].port.dev = &dev->dev; 922 imx_ports[dev->id].port.dev = &dev->dev;
923
924 pdata = (struct imxuart_platform_data *)dev->dev.platform_data;
925 if(pdata && (pdata->flags & IMXUART_HAVE_RTSCTS))
926 imx_ports[dev->id].have_rtscts = 1;
927
936 uart_add_one_port(&imx_reg, &imx_ports[dev->id].port); 928 uart_add_one_port(&imx_reg, &imx_ports[dev->id].port);
937 platform_set_drvdata(dev, &imx_ports[dev->id]); 929 platform_set_drvdata(dev, &imx_ports[dev->id]);
938 return 0; 930 return 0;
diff --git a/drivers/sn/ioc3.c b/drivers/sn/ioc3.c
index 0b49ff78efc1..501316b198e5 100644
--- a/drivers/sn/ioc3.c
+++ b/drivers/sn/ioc3.c
@@ -678,7 +678,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
678 /* Track PCI-device specific data */ 678 /* Track PCI-device specific data */
679 pci_set_drvdata(pdev, idd); 679 pci_set_drvdata(pdev, idd);
680 down_write(&ioc3_devices_rwsem); 680 down_write(&ioc3_devices_rwsem);
681 list_add(&idd->list, &ioc3_devices); 681 list_add_tail(&idd->list, &ioc3_devices);
682 idd->id = ioc3_counter++; 682 idd->id = ioc3_counter++;
683 up_write(&ioc3_devices_rwsem); 683 up_write(&ioc3_devices_rwsem);
684 684
diff --git a/drivers/sn/ioc4.c b/drivers/sn/ioc4.c
index 67140a5804f5..cdeff909403e 100644
--- a/drivers/sn/ioc4.c
+++ b/drivers/sn/ioc4.c
@@ -310,7 +310,7 @@ ioc4_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
310 pci_set_drvdata(idd->idd_pdev, idd); 310 pci_set_drvdata(idd->idd_pdev, idd);
311 311
312 mutex_lock(&ioc4_mutex); 312 mutex_lock(&ioc4_mutex);
313 list_add(&idd->idd_list, &ioc4_devices); 313 list_add_tail(&idd->idd_list, &ioc4_devices);
314 314
315 /* Add this IOC4 to all submodules */ 315 /* Add this IOC4 to all submodules */
316 list_for_each_entry(is, &ioc4_submodules, is_list) { 316 list_for_each_entry(is, &ioc4_submodules, is_list) {
diff --git a/drivers/usb/gadget/inode.c b/drivers/usb/gadget/inode.c
index 42b457030b03..0eb010a3f5bc 100644
--- a/drivers/usb/gadget/inode.c
+++ b/drivers/usb/gadget/inode.c
@@ -1614,6 +1614,7 @@ static int activate_ep_files (struct dev_data *dev)
1614 data, &ep_config_operations, 1614 data, &ep_config_operations,
1615 &data->dentry); 1615 &data->dentry);
1616 if (!data->inode) { 1616 if (!data->inode) {
1617 usb_ep_free_request(ep, data->req);
1617 kfree (data); 1618 kfree (data);
1618 goto enomem; 1619 goto enomem;
1619 } 1620 }
diff --git a/drivers/usb/gadget/net2280.c b/drivers/usb/gadget/net2280.c
index 6a4b93ad1082..0b9293493957 100644
--- a/drivers/usb/gadget/net2280.c
+++ b/drivers/usb/gadget/net2280.c
@@ -2166,7 +2166,7 @@ static void handle_ep_small (struct net2280_ep *ep)
2166 ep->stopped = 1; 2166 ep->stopped = 1;
2167 set_halt (ep); 2167 set_halt (ep);
2168 mode = 2; 2168 mode = 2;
2169 } else if (!req && ep->stopped) 2169 } else if (!req && !ep->stopped)
2170 write_fifo (ep, NULL); 2170 write_fifo (ep, NULL);
2171 } 2171 }
2172 } else { 2172 } else {
@@ -2280,9 +2280,7 @@ static void handle_ep_small (struct net2280_ep *ep)
2280 /* if we wrote it all, we're usually done */ 2280 /* if we wrote it all, we're usually done */
2281 if (req->req.actual == req->req.length) { 2281 if (req->req.actual == req->req.length) {
2282 if (ep->num == 0) { 2282 if (ep->num == 0) {
2283 /* wait for control status */ 2283 /* send zlps until the status stage */
2284 if (mode != 2)
2285 req = NULL;
2286 } else if (!req->req.zero || len != ep->ep.maxpacket) 2284 } else if (!req->req.zero || len != ep->ep.maxpacket)
2287 mode = 2; 2285 mode = 2;
2288 } 2286 }
@@ -2744,6 +2742,10 @@ static irqreturn_t net2280_irq (int irq, void *_dev, struct pt_regs * r)
2744{ 2742{
2745 struct net2280 *dev = _dev; 2743 struct net2280 *dev = _dev;
2746 2744
2745 /* shared interrupt, not ours */
2746 if (!(readl(&dev->regs->irqstat0) & (1 << INTA_ASSERTED)))
2747 return IRQ_NONE;
2748
2747 spin_lock (&dev->lock); 2749 spin_lock (&dev->lock);
2748 2750
2749 /* handle disconnect, dma, and more */ 2751 /* handle disconnect, dma, and more */
@@ -2831,13 +2833,13 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id)
2831 } 2833 }
2832 2834
2833 /* alloc, and start init */ 2835 /* alloc, and start init */
2834 dev = kmalloc (sizeof *dev, SLAB_KERNEL); 2836 dev = kzalloc (sizeof *dev, SLAB_KERNEL);
2835 if (dev == NULL){ 2837 if (dev == NULL){
2836 retval = -ENOMEM; 2838 retval = -ENOMEM;
2837 goto done; 2839 goto done;
2838 } 2840 }
2839 2841
2840 memset (dev, 0, sizeof *dev); 2842 pci_set_drvdata (pdev, dev);
2841 spin_lock_init (&dev->lock); 2843 spin_lock_init (&dev->lock);
2842 dev->pdev = pdev; 2844 dev->pdev = pdev;
2843 dev->gadget.ops = &net2280_ops; 2845 dev->gadget.ops = &net2280_ops;
@@ -2950,7 +2952,6 @@ static int net2280_probe (struct pci_dev *pdev, const struct pci_device_id *id)
2950 dev->chiprev = get_idx_reg (dev->regs, REG_CHIPREV) & 0xffff; 2952 dev->chiprev = get_idx_reg (dev->regs, REG_CHIPREV) & 0xffff;
2951 2953
2952 /* done */ 2954 /* done */
2953 pci_set_drvdata (pdev, dev);
2954 INFO (dev, "%s\n", driver_desc); 2955 INFO (dev, "%s\n", driver_desc);
2955 INFO (dev, "irq %s, pci mem %p, chip rev %04x\n", 2956 INFO (dev, "irq %s, pci mem %p, chip rev %04x\n",
2956 bufp, base, dev->chiprev); 2957 bufp, base, dev->chiprev);
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index 1e03f1a5a5fd..a1bd2bea6deb 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -350,7 +350,7 @@ static const struct hc_driver ehci_pci_hc_driver = {
350/* PCI driver selection metadata; PCI hotplugging uses this */ 350/* PCI driver selection metadata; PCI hotplugging uses this */
351static const struct pci_device_id pci_ids [] = { { 351static const struct pci_device_id pci_ids [] = { {
352 /* handle any USB 2.0 EHCI controller */ 352 /* handle any USB 2.0 EHCI controller */
353 PCI_DEVICE_CLASS(((PCI_CLASS_SERIAL_USB << 8) | 0x20), ~0), 353 PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_EHCI, ~0),
354 .driver_data = (unsigned long) &ehci_pci_hc_driver, 354 .driver_data = (unsigned long) &ehci_pci_hc_driver,
355 }, 355 },
356 { /* end: all zeroes */ } 356 { /* end: all zeroes */ }
diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
index 1bfe96f4d045..b268537e389e 100644
--- a/drivers/usb/host/ohci-pci.c
+++ b/drivers/usb/host/ohci-pci.c
@@ -206,7 +206,7 @@ static const struct hc_driver ohci_pci_hc_driver = {
206 206
207static const struct pci_device_id pci_ids [] = { { 207static const struct pci_device_id pci_ids [] = { {
208 /* handle any USB OHCI controller */ 208 /* handle any USB OHCI controller */
209 PCI_DEVICE_CLASS((PCI_CLASS_SERIAL_USB << 8) | 0x10, ~0), 209 PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_OHCI, ~0),
210 .driver_data = (unsigned long) &ohci_pci_hc_driver, 210 .driver_data = (unsigned long) &ohci_pci_hc_driver,
211 }, { /* end: all zeroes */ } 211 }, { /* end: all zeroes */ }
212}; 212};
diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c
index c0c4db78b590..d225e11f4055 100644
--- a/drivers/usb/host/uhci-hcd.c
+++ b/drivers/usb/host/uhci-hcd.c
@@ -858,7 +858,7 @@ static const struct hc_driver uhci_driver = {
858 858
859static const struct pci_device_id uhci_pci_ids[] = { { 859static const struct pci_device_id uhci_pci_ids[] = { {
860 /* handle any USB UHCI controller */ 860 /* handle any USB UHCI controller */
861 PCI_DEVICE_CLASS(((PCI_CLASS_SERIAL_USB << 8) | 0x00), ~0), 861 PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_UHCI, ~0),
862 .driver_data = (unsigned long) &uhci_driver, 862 .driver_data = (unsigned long) &uhci_driver,
863 }, { /* end: all zeroes */ } 863 }, { /* end: all zeroes */ }
864}; 864};
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c
index f5851db67f5b..82151207d814 100644
--- a/drivers/usb/serial/ftdi_sio.c
+++ b/drivers/usb/serial/ftdi_sio.c
@@ -308,6 +308,7 @@ static struct ftdi_sio_quirk ftdi_HE_TIRA1_quirk = {
308 308
309static struct usb_device_id id_table_combined [] = { 309static struct usb_device_id id_table_combined [] = {
310 { USB_DEVICE(FTDI_VID, FTDI_IRTRANS_PID) }, 310 { USB_DEVICE(FTDI_VID, FTDI_IRTRANS_PID) },
311 { USB_DEVICE(FTDI_VID, FTDI_IPLUS_PID) },
311 { USB_DEVICE(FTDI_VID, FTDI_SIO_PID) }, 312 { USB_DEVICE(FTDI_VID, FTDI_SIO_PID) },
312 { USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) }, 313 { USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) },
313 { USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) }, 314 { USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) },
@@ -493,6 +494,8 @@ static struct usb_device_id id_table_combined [] = {
493 { USB_DEVICE(FTDI_VID, FTDI_WESTREX_MODEL_777_PID) }, 494 { USB_DEVICE(FTDI_VID, FTDI_WESTREX_MODEL_777_PID) },
494 { USB_DEVICE(FTDI_VID, FTDI_WESTREX_MODEL_8900F_PID) }, 495 { USB_DEVICE(FTDI_VID, FTDI_WESTREX_MODEL_8900F_PID) },
495 { USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) }, 496 { USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) },
497 { USB_DEVICE(FTDI_VID, FTDI_RRCIRKITS_LOCOBUFFER_PID) },
498 { USB_DEVICE(FTDI_VID, FTDI_ASK_RDR400_PID) },
496 { USB_DEVICE(ICOM_ID1_VID, ICOM_ID1_PID) }, 499 { USB_DEVICE(ICOM_ID1_VID, ICOM_ID1_PID) },
497 { USB_DEVICE(PAPOUCH_VID, PAPOUCH_TMU_PID) }, 500 { USB_DEVICE(PAPOUCH_VID, PAPOUCH_TMU_PID) },
498 { }, /* Optional parameter entry */ 501 { }, /* Optional parameter entry */
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h
index 2155f0e4a378..2c55a5ea9c99 100644
--- a/drivers/usb/serial/ftdi_sio.h
+++ b/drivers/usb/serial/ftdi_sio.h
@@ -39,6 +39,9 @@
39/* www.thoughttechnology.com/ TT-USB provide with procomp use ftdi_sio */ 39/* www.thoughttechnology.com/ TT-USB provide with procomp use ftdi_sio */
40#define FTDI_TTUSB_PID 0xFF20 /* Product Id */ 40#define FTDI_TTUSB_PID 0xFF20 /* Product Id */
41 41
42/* iPlus device */
43#define FTDI_IPLUS_PID 0xD070 /* Product Id */
44
42/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */ 45/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */
43/* they use the ftdi chipset for the USB interface and the vendor id is the same */ 46/* they use the ftdi chipset for the USB interface and the vendor id is the same */
44#define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */ 47#define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */
@@ -153,6 +156,11 @@
153#define ICOM_ID1_PID 0x0004 156#define ICOM_ID1_PID 0x0004
154 157
155/* 158/*
159 * ASK.fr devices
160 */
161#define FTDI_ASK_RDR400_PID 0xC991 /* ASK RDR 400 series card reader */
162
163/*
156 * DSS-20 Sync Station for Sony Ericsson P800 164 * DSS-20 Sync Station for Sony Ericsson P800
157 */ 165 */
158 166
@@ -400,6 +408,11 @@
400#define FTDI_WESTREX_MODEL_8900F_PID 0xDC01 /* Model 8900F */ 408#define FTDI_WESTREX_MODEL_8900F_PID 0xDC01 /* Model 8900F */
401 409
402/* 410/*
411 * RR-CirKits LocoBuffer USB (http://www.rr-cirkits.com)
412 */
413#define FTDI_RRCIRKITS_LOCOBUFFER_PID 0xc7d0 /* LocoBuffer USB */
414
415/*
403 * Eclo (http://www.eclo.pt/) product IDs. 416 * Eclo (http://www.eclo.pt/) product IDs.
404 * PID 0xEA90 submitted by Martin Grill. 417 * PID 0xEA90 submitted by Martin Grill.
405 */ 418 */
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index ccf746b27d4e..c96714bb1cb8 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -61,6 +61,7 @@ static struct usb_device_id id_table [] = {
61 { USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID) }, 61 { USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID) },
62 { USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID_UCSGT) }, 62 { USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID_UCSGT) },
63 { USB_DEVICE(ITEGNO_VENDOR_ID, ITEGNO_PRODUCT_ID) }, 63 { USB_DEVICE(ITEGNO_VENDOR_ID, ITEGNO_PRODUCT_ID) },
64 { USB_DEVICE(ITEGNO_VENDOR_ID, ITEGNO_PRODUCT_ID_2080) },
64 { USB_DEVICE(MA620_VENDOR_ID, MA620_PRODUCT_ID) }, 65 { USB_DEVICE(MA620_VENDOR_ID, MA620_PRODUCT_ID) },
65 { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID) }, 66 { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID) },
66 { USB_DEVICE(TRIPP_VENDOR_ID, TRIPP_PRODUCT_ID) }, 67 { USB_DEVICE(TRIPP_VENDOR_ID, TRIPP_PRODUCT_ID) },
diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h
index 09f379b19e98..7f29e81d3e35 100644
--- a/drivers/usb/serial/pl2303.h
+++ b/drivers/usb/serial/pl2303.h
@@ -26,6 +26,7 @@
26 26
27#define ITEGNO_VENDOR_ID 0x0eba 27#define ITEGNO_VENDOR_ID 0x0eba
28#define ITEGNO_PRODUCT_ID 0x1080 28#define ITEGNO_PRODUCT_ID 0x1080
29#define ITEGNO_PRODUCT_ID_2080 0x2080
29 30
30#define MA620_VENDOR_ID 0x0df7 31#define MA620_VENDOR_ID 0x0df7
31#define MA620_PRODUCT_ID 0x0620 32#define MA620_PRODUCT_ID 0x0620
diff --git a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c
index 557411c6e7c7..f806553cd9a4 100644
--- a/drivers/usb/serial/whiteheat.c
+++ b/drivers/usb/serial/whiteheat.c
@@ -508,6 +508,7 @@ no_firmware:
508 err("%s: Unable to retrieve firmware version, try replugging\n", serial->type->description); 508 err("%s: Unable to retrieve firmware version, try replugging\n", serial->type->description);
509 err("%s: If the firmware is not running (status led not blinking)\n", serial->type->description); 509 err("%s: If the firmware is not running (status led not blinking)\n", serial->type->description);
510 err("%s: please contact support@connecttech.com\n", serial->type->description); 510 err("%s: please contact support@connecttech.com\n", serial->type->description);
511 kfree(result);
511 return -ENODEV; 512 return -ENODEV;
512 513
513no_command_private: 514no_command_private:
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h
index c4a9dcff5f2b..aec5ea8682d5 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -411,7 +411,7 @@ UNUSUAL_DEV( 0x050d, 0x0115, 0x0133, 0x0133,
411UNUSUAL_DEV( 0x0525, 0xa140, 0x0100, 0x0100, 411UNUSUAL_DEV( 0x0525, 0xa140, 0x0100, 0x0100,
412 "Iomega", 412 "Iomega",
413 "USB Clik! 40", 413 "USB Clik! 40",
414 US_SC_8070, US_PR_BULK, NULL, 414 US_SC_8070, US_PR_DEVICE, NULL,
415 US_FL_FIX_INQUIRY ), 415 US_FL_FIX_INQUIRY ),
416 416
417/* Yakumo Mega Image 37 417/* Yakumo Mega Image 37
@@ -773,6 +773,13 @@ UNUSUAL_DEV( 0x069b, 0x3004, 0x0001, 0x0001,
773 US_SC_DEVICE, US_PR_DEVICE, NULL, 773 US_SC_DEVICE, US_PR_DEVICE, NULL,
774 US_FL_FIX_CAPACITY ), 774 US_FL_FIX_CAPACITY ),
775 775
776/* Reported by Olivier Blondeau <zeitoun@gmail.com> */
777UNUSUAL_DEV( 0x0727, 0x0306, 0x0100, 0x0100,
778 "ATMEL",
779 "SND1 Storage",
780 US_SC_DEVICE, US_PR_DEVICE, NULL,
781 US_FL_IGNORE_RESIDUE),
782
776/* Submitted by Roman Hodek <roman@hodek.net> */ 783/* Submitted by Roman Hodek <roman@hodek.net> */
777UNUSUAL_DEV( 0x0781, 0x0001, 0x0200, 0x0200, 784UNUSUAL_DEV( 0x0781, 0x0001, 0x0200, 0x0200,
778 "Sandisk", 785 "Sandisk",
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index 9060e7137441..4587087d777a 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -400,6 +400,8 @@ config FB_ASILIANT
400 select FB_CFB_FILLRECT 400 select FB_CFB_FILLRECT
401 select FB_CFB_COPYAREA 401 select FB_CFB_COPYAREA
402 select FB_CFB_IMAGEBLIT 402 select FB_CFB_IMAGEBLIT
403 help
404 This is the frame buffer device driver for the Asiliant 69030 chipset
403 405
404config FB_IMSTT 406config FB_IMSTT
405 bool "IMS Twin Turbo display support" 407 bool "IMS Twin Turbo display support"
diff --git a/drivers/video/au1200fb.c b/drivers/video/au1200fb.c
index b367de30b98c..600d3e0e08b7 100644
--- a/drivers/video/au1200fb.c
+++ b/drivers/video/au1200fb.c
@@ -1920,1925 +1920,3 @@ module_exit(au1200fb_cleanup);
1920 1920
1921MODULE_DESCRIPTION(DRIVER_DESC); 1921MODULE_DESCRIPTION(DRIVER_DESC);
1922MODULE_LICENSE("GPL"); 1922MODULE_LICENSE("GPL");
1923/*
1924 * BRIEF MODULE DESCRIPTION
1925 * Au1200 LCD Driver.
1926 *
1927 * Copyright 2004-2005 AMD
1928 * Author: AMD
1929 *
1930 * Based on:
1931 * linux/drivers/video/skeletonfb.c -- Skeleton for a frame buffer device
1932 * Created 28 Dec 1997 by Geert Uytterhoeven
1933 *
1934 * This program is free software; you can redistribute it and/or modify it
1935 * under the terms of the GNU General Public License as published by the
1936 * Free Software Foundation; either version 2 of the License, or (at your
1937 * option) any later version.
1938 *
1939 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
1940 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
1941 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
1942 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
1943 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
1944 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
1945 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
1946 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1947 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
1948 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1949 *
1950 * You should have received a copy of the GNU General Public License along
1951 * with this program; if not, write to the Free Software Foundation, Inc.,
1952 * 675 Mass Ave, Cambridge, MA 02139, USA.
1953 */
1954
1955#include <linux/module.h>
1956#include <linux/platform_device.h>
1957#include <linux/kernel.h>
1958#include <linux/errno.h>
1959#include <linux/string.h>
1960#include <linux/mm.h>
1961#include <linux/fb.h>
1962#include <linux/init.h>
1963#include <linux/interrupt.h>
1964#include <linux/ctype.h>
1965#include <linux/dma-mapping.h>
1966
1967#include <asm/mach-au1x00/au1000.h>
1968#include "au1200fb.h"
1969
1970#ifdef CONFIG_PM
1971#include <asm/mach-au1x00/au1xxx_pm.h>
1972#endif
1973
1974#ifndef CONFIG_FB_AU1200_DEVS
1975#define CONFIG_FB_AU1200_DEVS 4
1976#endif
1977
1978#define DRIVER_NAME "au1200fb"
1979#define DRIVER_DESC "LCD controller driver for AU1200 processors"
1980
1981#define DEBUG 1
1982
1983#define print_err(f, arg...) printk(KERN_ERR DRIVER_NAME ": " f "\n", ## arg)
1984#define print_warn(f, arg...) printk(KERN_WARNING DRIVER_NAME ": " f "\n", ## arg)
1985#define print_info(f, arg...) printk(KERN_INFO DRIVER_NAME ": " f "\n", ## arg)
1986
1987#if DEBUG
1988#define print_dbg(f, arg...) printk(KERN_DEBUG __FILE__ ": " f "\n", ## arg)
1989#else
1990#define print_dbg(f, arg...) do {} while (0)
1991#endif
1992
1993
1994#define AU1200_LCD_FB_IOCTL 0x46FF
1995
1996#define AU1200_LCD_SET_SCREEN 1
1997#define AU1200_LCD_GET_SCREEN 2
1998#define AU1200_LCD_SET_WINDOW 3
1999#define AU1200_LCD_GET_WINDOW 4
2000#define AU1200_LCD_SET_PANEL 5
2001#define AU1200_LCD_GET_PANEL 6
2002
2003#define SCREEN_SIZE (1<< 1)
2004#define SCREEN_BACKCOLOR (1<< 2)
2005#define SCREEN_BRIGHTNESS (1<< 3)
2006#define SCREEN_COLORKEY (1<< 4)
2007#define SCREEN_MASK (1<< 5)
2008
2009struct au1200_lcd_global_regs_t {
2010 unsigned int flags;
2011 unsigned int xsize;
2012 unsigned int ysize;
2013 unsigned int backcolor;
2014 unsigned int brightness;
2015 unsigned int colorkey;
2016 unsigned int mask;
2017 unsigned int panel_choice;
2018 char panel_desc[80];
2019
2020};
2021
2022#define WIN_POSITION (1<< 0)
2023#define WIN_ALPHA_COLOR (1<< 1)
2024#define WIN_ALPHA_MODE (1<< 2)
2025#define WIN_PRIORITY (1<< 3)
2026#define WIN_CHANNEL (1<< 4)
2027#define WIN_BUFFER_FORMAT (1<< 5)
2028#define WIN_COLOR_ORDER (1<< 6)
2029#define WIN_PIXEL_ORDER (1<< 7)
2030#define WIN_SIZE (1<< 8)
2031#define WIN_COLORKEY_MODE (1<< 9)
2032#define WIN_DOUBLE_BUFFER_MODE (1<< 10)
2033#define WIN_RAM_ARRAY_MODE (1<< 11)
2034#define WIN_BUFFER_SCALE (1<< 12)
2035#define WIN_ENABLE (1<< 13)
2036
2037struct au1200_lcd_window_regs_t {
2038 unsigned int flags;
2039 unsigned int xpos;
2040 unsigned int ypos;
2041 unsigned int alpha_color;
2042 unsigned int alpha_mode;
2043 unsigned int priority;
2044 unsigned int channel;
2045 unsigned int buffer_format;
2046 unsigned int color_order;
2047 unsigned int pixel_order;
2048 unsigned int xsize;
2049 unsigned int ysize;
2050 unsigned int colorkey_mode;
2051 unsigned int double_buffer_mode;
2052 unsigned int ram_array_mode;
2053 unsigned int xscale;
2054 unsigned int yscale;
2055 unsigned int enable;
2056};
2057
2058
2059struct au1200_lcd_iodata_t {
2060 unsigned int subcmd;
2061 struct au1200_lcd_global_regs_t global;
2062 struct au1200_lcd_window_regs_t window;
2063};
2064
2065#if defined(__BIG_ENDIAN)
2066#define LCD_CONTROL_DEFAULT_PO LCD_CONTROL_PO_11
2067#else
2068#define LCD_CONTROL_DEFAULT_PO LCD_CONTROL_PO_00
2069#endif
2070#define LCD_CONTROL_DEFAULT_SBPPF LCD_CONTROL_SBPPF_565
2071
2072/* Private, per-framebuffer management information (independent of the panel itself) */
2073struct au1200fb_device {
2074 struct fb_info fb_info; /* FB driver info record */
2075
2076 int plane;
2077 unsigned char* fb_mem; /* FrameBuffer memory map */
2078 unsigned int fb_len;
2079 dma_addr_t fb_phys;
2080};
2081
2082static struct au1200fb_device _au1200fb_devices[CONFIG_FB_AU1200_DEVS];
2083/********************************************************************/
2084
2085/* LCD controller restrictions */
2086#define AU1200_LCD_MAX_XRES 1280
2087#define AU1200_LCD_MAX_YRES 1024
2088#define AU1200_LCD_MAX_BPP 32
2089#define AU1200_LCD_MAX_CLK 96000000 /* fixme: this needs to go away ? */
2090#define AU1200_LCD_NBR_PALETTE_ENTRIES 256
2091
2092/* Default number of visible screen buffer to allocate */
2093#define AU1200FB_NBR_VIDEO_BUFFERS 1
2094
2095/********************************************************************/
2096
2097static struct au1200_lcd *lcd = (struct au1200_lcd *) AU1200_LCD_ADDR;
2098static int window_index = 2; /* default is zero */
2099static int panel_index = 2; /* default is zero */
2100static struct window_settings *win;
2101static struct panel_settings *panel;
2102static int noblanking = 1;
2103static int nohwcursor = 0;
2104
2105struct window_settings {
2106 unsigned char name[64];
2107 uint32 mode_backcolor;
2108 uint32 mode_colorkey;
2109 uint32 mode_colorkeymsk;
2110 struct {
2111 int xres;
2112 int yres;
2113 int xpos;
2114 int ypos;
2115 uint32 mode_winctrl1; /* winctrl1[FRM,CCO,PO,PIPE] */
2116 uint32 mode_winenable;
2117 } w[4];
2118};
2119
2120#if defined(__BIG_ENDIAN)
2121#define LCD_WINCTRL1_PO_16BPP LCD_WINCTRL1_PO_00
2122#else
2123#define LCD_WINCTRL1_PO_16BPP LCD_WINCTRL1_PO_01
2124#endif
2125
2126extern int board_au1200fb_panel_init (void);
2127extern int board_au1200fb_panel_shutdown (void);
2128
2129#ifdef CONFIG_PM
2130int au1200fb_pm_callback(au1xxx_power_dev_t *dev,
2131 au1xxx_request_t request, void *data);
2132au1xxx_power_dev_t *LCD_pm_dev;
2133#endif
2134
2135/*
2136 * Default window configurations
2137 */
2138static struct window_settings windows[] = {
2139 { /* Index 0 */
2140 "0-FS gfx, 1-video, 2-ovly gfx, 3-ovly gfx",
2141 /* mode_backcolor */ 0x006600ff,
2142 /* mode_colorkey,msk*/ 0, 0,
2143 {
2144 {
2145 /* xres, yres, xpos, ypos */ 0, 0, 0, 0,
2146 /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565 |
2147 LCD_WINCTRL1_PO_16BPP,
2148 /* mode_winenable*/ LCD_WINENABLE_WEN0,
2149 },
2150 {
2151 /* xres, yres, xpos, ypos */ 100, 100, 100, 100,
2152 /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565 |
2153 LCD_WINCTRL1_PO_16BPP |
2154 LCD_WINCTRL1_PIPE,
2155 /* mode_winenable*/ LCD_WINENABLE_WEN1,
2156 },
2157 {
2158 /* xres, yres, xpos, ypos */ 0, 0, 0, 0,
2159 /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565 |
2160 LCD_WINCTRL1_PO_16BPP,
2161 /* mode_winenable*/ 0,
2162 },
2163 {
2164 /* xres, yres, xpos, ypos */ 0, 0, 0, 0,
2165 /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565 |
2166 LCD_WINCTRL1_PO_16BPP |
2167 LCD_WINCTRL1_PIPE,
2168 /* mode_winenable*/ 0,
2169 },
2170 },
2171 },
2172
2173 { /* Index 1 */
2174 "0-FS gfx, 1-video, 2-ovly gfx, 3-ovly gfx",
2175 /* mode_backcolor */ 0x006600ff,
2176 /* mode_colorkey,msk*/ 0, 0,
2177 {
2178 {
2179 /* xres, yres, xpos, ypos */ 320, 240, 5, 5,
2180 /* mode_winctrl1 */ LCD_WINCTRL1_FRM_24BPP |
2181 LCD_WINCTRL1_PO_00,
2182 /* mode_winenable*/ LCD_WINENABLE_WEN0,
2183 },
2184 {
2185 /* xres, yres, xpos, ypos */ 0, 0, 0, 0,
2186 /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565
2187 | LCD_WINCTRL1_PO_16BPP,
2188 /* mode_winenable*/ 0,
2189 },
2190 {
2191 /* xres, yres, xpos, ypos */ 100, 100, 0, 0,
2192 /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565 |
2193 LCD_WINCTRL1_PO_16BPP |
2194 LCD_WINCTRL1_PIPE,
2195 /* mode_winenable*/ 0/*LCD_WINENABLE_WEN2*/,
2196 },
2197 {
2198 /* xres, yres, xpos, ypos */ 200, 25, 0, 0,
2199 /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565 |
2200 LCD_WINCTRL1_PO_16BPP |
2201 LCD_WINCTRL1_PIPE,
2202 /* mode_winenable*/ 0,
2203 },
2204 },
2205 },
2206 { /* Index 2 */
2207 "0-FS gfx, 1-video, 2-ovly gfx, 3-ovly gfx",
2208 /* mode_backcolor */ 0x006600ff,
2209 /* mode_colorkey,msk*/ 0, 0,
2210 {
2211 {
2212 /* xres, yres, xpos, ypos */ 0, 0, 0, 0,
2213 /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565 |
2214 LCD_WINCTRL1_PO_16BPP,
2215 /* mode_winenable*/ LCD_WINENABLE_WEN0,
2216 },
2217 {
2218 /* xres, yres, xpos, ypos */ 0, 0, 0, 0,
2219 /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565 |
2220 LCD_WINCTRL1_PO_16BPP,
2221 /* mode_winenable*/ 0,
2222 },
2223 {
2224 /* xres, yres, xpos, ypos */ 0, 0, 0, 0,
2225 /* mode_winctrl1 */ LCD_WINCTRL1_FRM_32BPP |
2226 LCD_WINCTRL1_PO_00|LCD_WINCTRL1_PIPE,
2227 /* mode_winenable*/ 0/*LCD_WINENABLE_WEN2*/,
2228 },
2229 {
2230 /* xres, yres, xpos, ypos */ 0, 0, 0, 0,
2231 /* mode_winctrl1 */ LCD_WINCTRL1_FRM_16BPP565 |
2232 LCD_WINCTRL1_PO_16BPP |
2233 LCD_WINCTRL1_PIPE,
2234 /* mode_winenable*/ 0,
2235 },
2236 },
2237 },
2238 /* Need VGA 640 @ 24bpp, @ 32bpp */
2239 /* Need VGA 800 @ 24bpp, @ 32bpp */
2240 /* Need VGA 1024 @ 24bpp, @ 32bpp */
2241};
2242
2243/*
2244 * Controller configurations for various panels.
2245 */
2246
2247struct panel_settings
2248{
2249 const char name[25]; /* Full name <vendor>_<model> */
2250
2251 struct fb_monspecs monspecs; /* FB monitor specs */
2252
2253 /* panel timings */
2254 uint32 mode_screen;
2255 uint32 mode_horztiming;
2256 uint32 mode_verttiming;
2257 uint32 mode_clkcontrol;
2258 uint32 mode_pwmdiv;
2259 uint32 mode_pwmhi;
2260 uint32 mode_outmask;
2261 uint32 mode_fifoctrl;
2262 uint32 mode_toyclksrc;
2263 uint32 mode_backlight;
2264 uint32 mode_auxpll;
2265 int (*device_init)(void);
2266 int (*device_shutdown)(void);
2267#define Xres min_xres
2268#define Yres min_yres
2269 u32 min_xres; /* Minimum horizontal resolution */
2270 u32 max_xres; /* Maximum horizontal resolution */
2271 u32 min_yres; /* Minimum vertical resolution */
2272 u32 max_yres; /* Maximum vertical resolution */
2273};
2274
2275/********************************************************************/
2276/* fixme: Maybe a modedb for the CRT ? otherwise panels should be as-is */
2277
2278/* List of panels known to work with the AU1200 LCD controller.
2279 * To add a new panel, enter the same specifications as the
2280 * Generic_TFT one, and MAKE SURE that it doesn't conflicts
2281 * with the controller restrictions. Restrictions are:
2282 *
2283 * STN color panels: max_bpp <= 12
2284 * STN mono panels: max_bpp <= 4
2285 * TFT panels: max_bpp <= 16
2286 * max_xres <= 800
2287 * max_yres <= 600
2288 */
2289static struct panel_settings known_lcd_panels[] =
2290{
2291 [0] = { /* QVGA 320x240 H:33.3kHz V:110Hz */
2292 .name = "QVGA_320x240",
2293 .monspecs = {
2294 .modedb = NULL,
2295 .modedb_len = 0,
2296 .hfmin = 30000,
2297 .hfmax = 70000,
2298 .vfmin = 60,
2299 .vfmax = 60,
2300 .dclkmin = 6000000,
2301 .dclkmax = 28000000,
2302 .input = FB_DISP_RGB,
2303 },
2304 .mode_screen = LCD_SCREEN_SX_N(320) |
2305 LCD_SCREEN_SY_N(240),
2306 .mode_horztiming = 0x00c4623b,
2307 .mode_verttiming = 0x00502814,
2308 .mode_clkcontrol = 0x00020002, /* /4=24Mhz */
2309 .mode_pwmdiv = 0x00000000,
2310 .mode_pwmhi = 0x00000000,
2311 .mode_outmask = 0x00FFFFFF,
2312 .mode_fifoctrl = 0x2f2f2f2f,
2313 .mode_toyclksrc = 0x00000004, /* AUXPLL directly */
2314 .mode_backlight = 0x00000000,
2315 .mode_auxpll = 8, /* 96MHz AUXPLL */
2316 .device_init = NULL,
2317 .device_shutdown = NULL,
2318 320, 320,
2319 240, 240,
2320 },
2321
2322 [1] = { /* VGA 640x480 H:30.3kHz V:58Hz */
2323 .name = "VGA_640x480",
2324 .monspecs = {
2325 .modedb = NULL,
2326 .modedb_len = 0,
2327 .hfmin = 30000,
2328 .hfmax = 70000,
2329 .vfmin = 60,
2330 .vfmax = 60,
2331 .dclkmin = 6000000,
2332 .dclkmax = 28000000,
2333 .input = FB_DISP_RGB,
2334 },
2335 .mode_screen = 0x13f9df80,
2336 .mode_horztiming = 0x003c5859,
2337 .mode_verttiming = 0x00741201,
2338 .mode_clkcontrol = 0x00020001, /* /4=24Mhz */
2339 .mode_pwmdiv = 0x00000000,
2340 .mode_pwmhi = 0x00000000,
2341 .mode_outmask = 0x00FFFFFF,
2342 .mode_fifoctrl = 0x2f2f2f2f,
2343 .mode_toyclksrc = 0x00000004, /* AUXPLL directly */
2344 .mode_backlight = 0x00000000,
2345 .mode_auxpll = 8, /* 96MHz AUXPLL */
2346 .device_init = NULL,
2347 .device_shutdown = NULL,
2348 640, 480,
2349 640, 480,
2350 },
2351
2352 [2] = { /* SVGA 800x600 H:46.1kHz V:69Hz */
2353 .name = "SVGA_800x600",
2354 .monspecs = {
2355 .modedb = NULL,
2356 .modedb_len = 0,
2357 .hfmin = 30000,
2358 .hfmax = 70000,
2359 .vfmin = 60,
2360 .vfmax = 60,
2361 .dclkmin = 6000000,
2362 .dclkmax = 28000000,
2363 .input = FB_DISP_RGB,
2364 },
2365 .mode_screen = 0x18fa5780,
2366 .mode_horztiming = 0x00dc7e77,
2367 .mode_verttiming = 0x00584805,
2368 .mode_clkcontrol = 0x00020000, /* /2=48Mhz */
2369 .mode_pwmdiv = 0x00000000,
2370 .mode_pwmhi = 0x00000000,
2371 .mode_outmask = 0x00FFFFFF,
2372 .mode_fifoctrl = 0x2f2f2f2f,
2373 .mode_toyclksrc = 0x00000004, /* AUXPLL directly */
2374 .mode_backlight = 0x00000000,
2375 .mode_auxpll = 8, /* 96MHz AUXPLL */
2376 .device_init = NULL,
2377 .device_shutdown = NULL,
2378 800, 800,
2379 600, 600,
2380 },
2381
2382 [3] = { /* XVGA 1024x768 H:56.2kHz V:70Hz */
2383 .name = "XVGA_1024x768",
2384 .monspecs = {
2385 .modedb = NULL,
2386 .modedb_len = 0,
2387 .hfmin = 30000,
2388 .hfmax = 70000,
2389 .vfmin = 60,
2390 .vfmax = 60,
2391 .dclkmin = 6000000,
2392 .dclkmax = 28000000,
2393 .input = FB_DISP_RGB,
2394 },
2395 .mode_screen = 0x1ffaff80,
2396 .mode_horztiming = 0x007d0e57,
2397 .mode_verttiming = 0x00740a01,
2398 .mode_clkcontrol = 0x000A0000, /* /1 */
2399 .mode_pwmdiv = 0x00000000,
2400 .mode_pwmhi = 0x00000000,
2401 .mode_outmask = 0x00FFFFFF,
2402 .mode_fifoctrl = 0x2f2f2f2f,
2403 .mode_toyclksrc = 0x00000004, /* AUXPLL directly */
2404 .mode_backlight = 0x00000000,
2405 .mode_auxpll = 6, /* 72MHz AUXPLL */
2406 .device_init = NULL,
2407 .device_shutdown = NULL,
2408 1024, 1024,
2409 768, 768,
2410 },
2411
2412 [4] = { /* XVGA XVGA 1280x1024 H:68.5kHz V:65Hz */
2413 .name = "XVGA_1280x1024",
2414 .monspecs = {
2415 .modedb = NULL,
2416 .modedb_len = 0,
2417 .hfmin = 30000,
2418 .hfmax = 70000,
2419 .vfmin = 60,
2420 .vfmax = 60,
2421 .dclkmin = 6000000,
2422 .dclkmax = 28000000,
2423 .input = FB_DISP_RGB,
2424 },
2425 .mode_screen = 0x27fbff80,
2426 .mode_horztiming = 0x00cdb2c7,
2427 .mode_verttiming = 0x00600002,
2428 .mode_clkcontrol = 0x000A0000, /* /1 */
2429 .mode_pwmdiv = 0x00000000,
2430 .mode_pwmhi = 0x00000000,
2431 .mode_outmask = 0x00FFFFFF,
2432 .mode_fifoctrl = 0x2f2f2f2f,
2433 .mode_toyclksrc = 0x00000004, /* AUXPLL directly */
2434 .mode_backlight = 0x00000000,
2435 .mode_auxpll = 10, /* 120MHz AUXPLL */
2436 .device_init = NULL,
2437 .device_shutdown = NULL,
2438 1280, 1280,
2439 1024, 1024,
2440 },
2441
2442 [5] = { /* Samsung 1024x768 TFT */
2443 .name = "Samsung_1024x768_TFT",
2444 .monspecs = {
2445 .modedb = NULL,
2446 .modedb_len = 0,
2447 .hfmin = 30000,
2448 .hfmax = 70000,
2449 .vfmin = 60,
2450 .vfmax = 60,
2451 .dclkmin = 6000000,
2452 .dclkmax = 28000000,
2453 .input = FB_DISP_RGB,
2454 },
2455 .mode_screen = 0x1ffaff80,
2456 .mode_horztiming = 0x018cc677,
2457 .mode_verttiming = 0x00241217,
2458 .mode_clkcontrol = 0x00000000, /* SCB 0x1 /4=24Mhz */
2459 .mode_pwmdiv = 0x8000063f, /* SCB 0x0 */
2460 .mode_pwmhi = 0x03400000, /* SCB 0x0 */
2461 .mode_outmask = 0x00FFFFFF,
2462 .mode_fifoctrl = 0x2f2f2f2f,
2463 .mode_toyclksrc = 0x00000004, /* AUXPLL directly */
2464 .mode_backlight = 0x00000000,
2465 .mode_auxpll = 8, /* 96MHz AUXPLL */
2466 .device_init = board_au1200fb_panel_init,
2467 .device_shutdown = board_au1200fb_panel_shutdown,
2468 1024, 1024,
2469 768, 768,
2470 },
2471
2472 [6] = { /* Toshiba 640x480 TFT */
2473 .name = "Toshiba_640x480_TFT",
2474 .monspecs = {
2475 .modedb = NULL,
2476 .modedb_len = 0,
2477 .hfmin = 30000,
2478 .hfmax = 70000,
2479 .vfmin = 60,
2480 .vfmax = 60,
2481 .dclkmin = 6000000,
2482 .dclkmax = 28000000,
2483 .input = FB_DISP_RGB,
2484 },
2485 .mode_screen = LCD_SCREEN_SX_N(640) |
2486 LCD_SCREEN_SY_N(480),
2487 .mode_horztiming = LCD_HORZTIMING_HPW_N(96) |
2488 LCD_HORZTIMING_HND1_N(13) | LCD_HORZTIMING_HND2_N(51),
2489 .mode_verttiming = LCD_VERTTIMING_VPW_N(2) |
2490 LCD_VERTTIMING_VND1_N(11) | LCD_VERTTIMING_VND2_N(32),
2491 .mode_clkcontrol = 0x00000000, /* /4=24Mhz */
2492 .mode_pwmdiv = 0x8000063f,
2493 .mode_pwmhi = 0x03400000,
2494 .mode_outmask = 0x00fcfcfc,
2495 .mode_fifoctrl = 0x2f2f2f2f,
2496 .mode_toyclksrc = 0x00000004, /* AUXPLL directly */
2497 .mode_backlight = 0x00000000,
2498 .mode_auxpll = 8, /* 96MHz AUXPLL */
2499 .device_init = board_au1200fb_panel_init,
2500 .device_shutdown = board_au1200fb_panel_shutdown,
2501 640, 480,
2502 640, 480,
2503 },
2504
2505 [7] = { /* Sharp 320x240 TFT */
2506 .name = "Sharp_320x240_TFT",
2507 .monspecs = {
2508 .modedb = NULL,
2509 .modedb_len = 0,
2510 .hfmin = 12500,
2511 .hfmax = 20000,
2512 .vfmin = 38,
2513 .vfmax = 81,
2514 .dclkmin = 4500000,
2515 .dclkmax = 6800000,
2516 .input = FB_DISP_RGB,
2517 },
2518 .mode_screen = LCD_SCREEN_SX_N(320) |
2519 LCD_SCREEN_SY_N(240),
2520 .mode_horztiming = LCD_HORZTIMING_HPW_N(60) |
2521 LCD_HORZTIMING_HND1_N(13) | LCD_HORZTIMING_HND2_N(2),
2522 .mode_verttiming = LCD_VERTTIMING_VPW_N(2) |
2523 LCD_VERTTIMING_VND1_N(2) | LCD_VERTTIMING_VND2_N(5),
2524 .mode_clkcontrol = LCD_CLKCONTROL_PCD_N(7), /*16=6Mhz*/
2525 .mode_pwmdiv = 0x8000063f,
2526 .mode_pwmhi = 0x03400000,
2527 .mode_outmask = 0x00fcfcfc,
2528 .mode_fifoctrl = 0x2f2f2f2f,
2529 .mode_toyclksrc = 0x00000004, /* AUXPLL directly */
2530 .mode_backlight = 0x00000000,
2531 .mode_auxpll = 8, /* 96MHz AUXPLL */
2532 .device_init = board_au1200fb_panel_init,
2533 .device_shutdown = board_au1200fb_panel_shutdown,
2534 320, 320,
2535 240, 240,
2536 },
2537
2538 [8] = { /* Toppoly TD070WGCB2 7" 856x480 TFT */
2539 .name = "Toppoly_TD070WGCB2",
2540 .monspecs = {
2541 .modedb = NULL,
2542 .modedb_len = 0,
2543 .hfmin = 30000,
2544 .hfmax = 70000,
2545 .vfmin = 60,
2546 .vfmax = 60,
2547 .dclkmin = 6000000,
2548 .dclkmax = 28000000,
2549 .input = FB_DISP_RGB,
2550 },
2551 .mode_screen = LCD_SCREEN_SX_N(856) |
2552 LCD_SCREEN_SY_N(480),
2553 .mode_horztiming = LCD_HORZTIMING_HND2_N(43) |
2554 LCD_HORZTIMING_HND1_N(43) | LCD_HORZTIMING_HPW_N(114),
2555 .mode_verttiming = LCD_VERTTIMING_VND2_N(20) |
2556 LCD_VERTTIMING_VND1_N(21) | LCD_VERTTIMING_VPW_N(4),
2557 .mode_clkcontrol = 0x00020001, /* /4=24Mhz */
2558 .mode_pwmdiv = 0x8000063f,
2559 .mode_pwmhi = 0x03400000,
2560 .mode_outmask = 0x00fcfcfc,
2561 .mode_fifoctrl = 0x2f2f2f2f,
2562 .mode_toyclksrc = 0x00000004, /* AUXPLL directly */
2563 .mode_backlight = 0x00000000,
2564 .mode_auxpll = 8, /* 96MHz AUXPLL */
2565 .device_init = board_au1200fb_panel_init,
2566 .device_shutdown = board_au1200fb_panel_shutdown,
2567 856, 856,
2568 480, 480,
2569 },
2570};
2571
2572#define NUM_PANELS (ARRAY_SIZE(known_lcd_panels))
2573
2574/********************************************************************/
2575
2576#ifdef CONFIG_PM
2577static int set_brightness(unsigned int brightness)
2578{
2579 unsigned int hi1, divider;
2580
2581 /* limit brightness pwm duty to >= 30/1600 */
2582 if (brightness < 30) {
2583 brightness = 30;
2584 }
2585 divider = (lcd->pwmdiv & 0x3FFFF) + 1;
2586 hi1 = (lcd->pwmhi >> 16) + 1;
2587 hi1 = (((brightness & 0xFF) + 1) * divider >> 8);
2588 lcd->pwmhi &= 0xFFFF;
2589 lcd->pwmhi |= (hi1 << 16);
2590
2591 return brightness;
2592}
2593#endif /* CONFIG_PM */
2594
2595static int winbpp (unsigned int winctrl1)
2596{
2597 int bits = 0;
2598
2599 /* how many bits are needed for each pixel format */
2600 switch (winctrl1 & LCD_WINCTRL1_FRM) {
2601 case LCD_WINCTRL1_FRM_1BPP:
2602 bits = 1;
2603 break;
2604 case LCD_WINCTRL1_FRM_2BPP:
2605 bits = 2;
2606 break;
2607 case LCD_WINCTRL1_FRM_4BPP:
2608 bits = 4;
2609 break;
2610 case LCD_WINCTRL1_FRM_8BPP:
2611 bits = 8;
2612 break;
2613 case LCD_WINCTRL1_FRM_12BPP:
2614 case LCD_WINCTRL1_FRM_16BPP655:
2615 case LCD_WINCTRL1_FRM_16BPP565:
2616 case LCD_WINCTRL1_FRM_16BPP556:
2617 case LCD_WINCTRL1_FRM_16BPPI1555:
2618 case LCD_WINCTRL1_FRM_16BPPI5551:
2619 case LCD_WINCTRL1_FRM_16BPPA1555:
2620 case LCD_WINCTRL1_FRM_16BPPA5551:
2621 bits = 16;
2622 break;
2623 case LCD_WINCTRL1_FRM_24BPP:
2624 case LCD_WINCTRL1_FRM_32BPP:
2625 bits = 32;
2626 break;
2627 }
2628
2629 return bits;
2630}
2631
2632static int fbinfo2index (struct fb_info *fb_info)
2633{
2634 int i;
2635
2636 for (i = 0; i < CONFIG_FB_AU1200_DEVS; ++i) {
2637 if (fb_info == (struct fb_info *)(&_au1200fb_devices[i].fb_info))
2638 return i;
2639 }
2640 printk("au1200fb: ERROR: fbinfo2index failed!\n");
2641 return -1;
2642}
2643
2644static int au1200_setlocation (struct au1200fb_device *fbdev, int plane,
2645 int xpos, int ypos)
2646{
2647 uint32 winctrl0, winctrl1, winenable, fb_offset = 0;
2648 int xsz, ysz;
2649
2650 /* FIX!!! NOT CHECKING FOR COMPLETE OFFSCREEN YET */
2651
2652 winctrl0 = lcd->window[plane].winctrl0;
2653 winctrl1 = lcd->window[plane].winctrl1;
2654 winctrl0 &= (LCD_WINCTRL0_A | LCD_WINCTRL0_AEN);
2655 winctrl1 &= ~(LCD_WINCTRL1_SZX | LCD_WINCTRL1_SZY);
2656
2657 /* Check for off-screen adjustments */
2658 xsz = win->w[plane].xres;
2659 ysz = win->w[plane].yres;
2660 if ((xpos + win->w[plane].xres) > panel->Xres) {
2661 /* Off-screen to the right */
2662 xsz = panel->Xres - xpos; /* off by 1 ??? */
2663 /*printk("off screen right\n");*/
2664 }
2665
2666 if ((ypos + win->w[plane].yres) > panel->Yres) {
2667 /* Off-screen to the bottom */
2668 ysz = panel->Yres - ypos; /* off by 1 ??? */
2669 /*printk("off screen bottom\n");*/
2670 }
2671
2672 if (xpos < 0) {
2673 /* Off-screen to the left */
2674 xsz = win->w[plane].xres + xpos;
2675 fb_offset += (((0 - xpos) * winbpp(lcd->window[plane].winctrl1))/8);
2676 xpos = 0;
2677 /*printk("off screen left\n");*/
2678 }
2679
2680 if (ypos < 0) {
2681 /* Off-screen to the top */
2682 ysz = win->w[plane].yres + ypos;
2683 /* fixme: fb_offset += ((0-ypos)*fb_pars[plane].line_length); */
2684 ypos = 0;
2685 /*printk("off screen top\n");*/
2686 }
2687
2688 /* record settings */
2689 win->w[plane].xpos = xpos;
2690 win->w[plane].ypos = ypos;
2691
2692 xsz -= 1;
2693 ysz -= 1;
2694 winctrl0 |= (xpos << 21);
2695 winctrl0 |= (ypos << 10);
2696 winctrl1 |= (xsz << 11);
2697 winctrl1 |= (ysz << 0);
2698
2699 /* Disable the window while making changes, then restore WINEN */
2700 winenable = lcd->winenable & (1 << plane);
2701 au_sync();
2702 lcd->winenable &= ~(1 << plane);
2703 lcd->window[plane].winctrl0 = winctrl0;
2704 lcd->window[plane].winctrl1 = winctrl1;
2705 lcd->window[plane].winbuf0 =
2706 lcd->window[plane].winbuf1 = fbdev->fb_phys;
2707 lcd->window[plane].winbufctrl = 0; /* select winbuf0 */
2708 lcd->winenable |= winenable;
2709 au_sync();
2710
2711 return 0;
2712}
2713
2714static void au1200_setpanel (struct panel_settings *newpanel)
2715{
2716 /*
2717 * Perform global setup/init of LCD controller
2718 */
2719 uint32 winenable;
2720
2721 /* Make sure all windows disabled */
2722 winenable = lcd->winenable;
2723 lcd->winenable = 0;
2724 au_sync();
2725 /*
2726 * Ensure everything is disabled before reconfiguring
2727 */
2728 if (lcd->screen & LCD_SCREEN_SEN) {
2729 /* Wait for vertical sync period */
2730 lcd->intstatus = LCD_INT_SS;
2731 while ((lcd->intstatus & LCD_INT_SS) == 0) {
2732 au_sync();
2733 }
2734
2735 lcd->screen &= ~LCD_SCREEN_SEN; /*disable the controller*/
2736
2737 do {
2738 lcd->intstatus = lcd->intstatus; /*clear interrupts*/
2739 au_sync();
2740 /*wait for controller to shut down*/
2741 } while ((lcd->intstatus & LCD_INT_SD) == 0);
2742
2743 /* Call shutdown of current panel (if up) */
2744 /* this must occur last, because if an external clock is driving
2745 the controller, the clock cannot be turned off before first
2746 shutting down the controller.
2747 */
2748 if (panel->device_shutdown != NULL)
2749 panel->device_shutdown();
2750 }
2751
2752 /* Newpanel == NULL indicates a shutdown operation only */
2753 if (newpanel == NULL)
2754 return;
2755
2756 panel = newpanel;
2757
2758 printk("Panel(%s), %dx%d\n", panel->name, panel->Xres, panel->Yres);
2759
2760 /*
2761 * Setup clocking if internal LCD clock source (assumes sys_auxpll valid)
2762 */
2763 if (!(panel->mode_clkcontrol & LCD_CLKCONTROL_EXT))
2764 {
2765 uint32 sys_clksrc;
2766 au_writel(panel->mode_auxpll, SYS_AUXPLL);
2767 sys_clksrc = au_readl(SYS_CLKSRC) & ~0x0000001f;
2768 sys_clksrc |= panel->mode_toyclksrc;
2769 au_writel(sys_clksrc, SYS_CLKSRC);
2770 }
2771
2772 /*
2773 * Configure panel timings
2774 */
2775 lcd->screen = panel->mode_screen;
2776 lcd->horztiming = panel->mode_horztiming;
2777 lcd->verttiming = panel->mode_verttiming;
2778 lcd->clkcontrol = panel->mode_clkcontrol;
2779 lcd->pwmdiv = panel->mode_pwmdiv;
2780 lcd->pwmhi = panel->mode_pwmhi;
2781 lcd->outmask = panel->mode_outmask;
2782 lcd->fifoctrl = panel->mode_fifoctrl;
2783 au_sync();
2784
2785 /* fixme: Check window settings to make sure still valid
2786 * for new geometry */
2787#if 0
2788 au1200_setlocation(fbdev, 0, win->w[0].xpos, win->w[0].ypos);
2789 au1200_setlocation(fbdev, 1, win->w[1].xpos, win->w[1].ypos);
2790 au1200_setlocation(fbdev, 2, win->w[2].xpos, win->w[2].ypos);
2791 au1200_setlocation(fbdev, 3, win->w[3].xpos, win->w[3].ypos);
2792#endif
2793 lcd->winenable = winenable;
2794
2795 /*
2796 * Re-enable screen now that it is configured
2797 */
2798 lcd->screen |= LCD_SCREEN_SEN;
2799 au_sync();
2800
2801 /* Call init of panel */
2802 if (panel->device_init != NULL) panel->device_init();
2803
2804 /* FIX!!!! not appropriate on panel change!!! Global setup/init */
2805 lcd->intenable = 0;
2806 lcd->intstatus = ~0;
2807 lcd->backcolor = win->mode_backcolor;
2808
2809 /* Setup Color Key - FIX!!! */
2810 lcd->colorkey = win->mode_colorkey;
2811 lcd->colorkeymsk = win->mode_colorkeymsk;
2812
2813 /* Setup HWCursor - FIX!!! Need to support this eventually */
2814 lcd->hwc.cursorctrl = 0;
2815 lcd->hwc.cursorpos = 0;
2816 lcd->hwc.cursorcolor0 = 0;
2817 lcd->hwc.cursorcolor1 = 0;
2818 lcd->hwc.cursorcolor2 = 0;
2819 lcd->hwc.cursorcolor3 = 0;
2820
2821
2822#if 0
2823#define D(X) printk("%25s: %08X\n", #X, X)
2824 D(lcd->screen);
2825 D(lcd->horztiming);
2826 D(lcd->verttiming);
2827 D(lcd->clkcontrol);
2828 D(lcd->pwmdiv);
2829 D(lcd->pwmhi);
2830 D(lcd->outmask);
2831 D(lcd->fifoctrl);
2832 D(lcd->window[0].winctrl0);
2833 D(lcd->window[0].winctrl1);
2834 D(lcd->window[0].winctrl2);
2835 D(lcd->window[0].winbuf0);
2836 D(lcd->window[0].winbuf1);
2837 D(lcd->window[0].winbufctrl);
2838 D(lcd->window[1].winctrl0);
2839 D(lcd->window[1].winctrl1);
2840 D(lcd->window[1].winctrl2);
2841 D(lcd->window[1].winbuf0);
2842 D(lcd->window[1].winbuf1);
2843 D(lcd->window[1].winbufctrl);
2844 D(lcd->window[2].winctrl0);
2845 D(lcd->window[2].winctrl1);
2846 D(lcd->window[2].winctrl2);
2847 D(lcd->window[2].winbuf0);
2848 D(lcd->window[2].winbuf1);
2849 D(lcd->window[2].winbufctrl);
2850 D(lcd->window[3].winctrl0);
2851 D(lcd->window[3].winctrl1);
2852 D(lcd->window[3].winctrl2);
2853 D(lcd->window[3].winbuf0);
2854 D(lcd->window[3].winbuf1);
2855 D(lcd->window[3].winbufctrl);
2856 D(lcd->winenable);
2857 D(lcd->intenable);
2858 D(lcd->intstatus);
2859 D(lcd->backcolor);
2860 D(lcd->winenable);
2861 D(lcd->colorkey);
2862 D(lcd->colorkeymsk);
2863 D(lcd->hwc.cursorctrl);
2864 D(lcd->hwc.cursorpos);
2865 D(lcd->hwc.cursorcolor0);
2866 D(lcd->hwc.cursorcolor1);
2867 D(lcd->hwc.cursorcolor2);
2868 D(lcd->hwc.cursorcolor3);
2869#endif
2870}
2871
2872static void au1200_setmode(struct au1200fb_device *fbdev)
2873{
2874 int plane = fbdev->plane;
2875 /* Window/plane setup */
2876 lcd->window[plane].winctrl1 = ( 0
2877 | LCD_WINCTRL1_PRI_N(plane)
2878 | win->w[plane].mode_winctrl1 /* FRM,CCO,PO,PIPE */
2879 ) ;
2880
2881 au1200_setlocation(fbdev, plane, win->w[plane].xpos, win->w[plane].ypos);
2882
2883 lcd->window[plane].winctrl2 = ( 0
2884 | LCD_WINCTRL2_CKMODE_00
2885 | LCD_WINCTRL2_DBM
2886 | LCD_WINCTRL2_BX_N( fbdev->fb_info.fix.line_length)
2887 | LCD_WINCTRL2_SCX_1
2888 | LCD_WINCTRL2_SCY_1
2889 ) ;
2890 lcd->winenable |= win->w[plane].mode_winenable;
2891 au_sync();
2892}
2893
2894
2895/* Inline helpers */
2896
2897/*#define panel_is_dual(panel) ((panel->mode_screen & LCD_SCREEN_PT) == LCD_SCREEN_PT_010)*/
2898/*#define panel_is_active(panel)((panel->mode_screen & LCD_SCREEN_PT) == LCD_SCREEN_PT_010)*/
2899
2900#define panel_is_color(panel) ((panel->mode_screen & LCD_SCREEN_PT) <= LCD_SCREEN_PT_CDSTN)
2901
2902/* Bitfields format supported by the controller. */
2903static struct fb_bitfield rgb_bitfields[][4] = {
2904 /* Red, Green, Blue, Transp */
2905 [LCD_WINCTRL1_FRM_16BPP655 >> 25] =
2906 { { 10, 6, 0 }, { 5, 5, 0 }, { 0, 5, 0 }, { 0, 0, 0 } },
2907
2908 [LCD_WINCTRL1_FRM_16BPP565 >> 25] =
2909 { { 11, 5, 0 }, { 5, 6, 0 }, { 0, 5, 0 }, { 0, 0, 0 } },
2910
2911 [LCD_WINCTRL1_FRM_16BPP556 >> 25] =
2912 { { 11, 5, 0 }, { 6, 5, 0 }, { 0, 6, 0 }, { 0, 0, 0 } },
2913
2914 [LCD_WINCTRL1_FRM_16BPPI1555 >> 25] =
2915 { { 10, 5, 0 }, { 5, 5, 0 }, { 0, 5, 0 }, { 0, 0, 0 } },
2916
2917 [LCD_WINCTRL1_FRM_16BPPI5551 >> 25] =
2918 { { 11, 5, 0 }, { 6, 5, 0 }, { 1, 5, 0 }, { 0, 0, 0 } },
2919
2920 [LCD_WINCTRL1_FRM_16BPPA1555 >> 25] =
2921 { { 10, 5, 0 }, { 5, 5, 0 }, { 0, 5, 0 }, { 15, 1, 0 } },
2922
2923 [LCD_WINCTRL1_FRM_16BPPA5551 >> 25] =
2924 { { 11, 5, 0 }, { 6, 5, 0 }, { 1, 5, 0 }, { 0, 1, 0 } },
2925
2926 [LCD_WINCTRL1_FRM_24BPP >> 25] =
2927 { { 16, 8, 0 }, { 8, 8, 0 }, { 0, 8, 0 }, { 0, 0, 0 } },
2928
2929 [LCD_WINCTRL1_FRM_32BPP >> 25] =
2930 { { 16, 8, 0 }, { 8, 8, 0 }, { 0, 8, 0 }, { 24, 0, 0 } },
2931};
2932
2933/*-------------------------------------------------------------------------*/
2934
2935/* Helpers */
2936
2937static void au1200fb_update_fbinfo(struct fb_info *fbi)
2938{
2939 /* FIX!!!! This also needs to take the window pixel format into account!!! */
2940
2941 /* Update var-dependent FB info */
2942 if (panel_is_color(panel)) {
2943 if (fbi->var.bits_per_pixel <= 8) {
2944 /* palettized */
2945 fbi->fix.visual = FB_VISUAL_PSEUDOCOLOR;
2946 fbi->fix.line_length = fbi->var.xres_virtual /
2947 (8/fbi->var.bits_per_pixel);
2948 } else {
2949 /* non-palettized */
2950 fbi->fix.visual = FB_VISUAL_TRUECOLOR;
2951 fbi->fix.line_length = fbi->var.xres_virtual * (fbi->var.bits_per_pixel / 8);
2952 }
2953 } else {
2954 /* mono FIX!!! mono 8 and 4 bits */
2955 fbi->fix.visual = FB_VISUAL_MONO10;
2956 fbi->fix.line_length = fbi->var.xres_virtual / 8;
2957 }
2958
2959 fbi->screen_size = fbi->fix.line_length * fbi->var.yres_virtual;
2960 print_dbg("line length: %d\n", fbi->fix.line_length);
2961 print_dbg("bits_per_pixel: %d\n", fbi->var.bits_per_pixel);
2962}
2963
2964/*-------------------------------------------------------------------------*/
2965
2966/* AU1200 framebuffer driver */
2967
2968/* fb_check_var
2969 * Validate var settings with hardware restrictions and modify it if necessary
2970 */
2971static int au1200fb_fb_check_var(struct fb_var_screeninfo *var,
2972 struct fb_info *fbi)
2973{
2974 struct au1200fb_device *fbdev = (struct au1200fb_device *)fbi;
2975 u32 pixclock;
2976 int screen_size, plane;
2977
2978 plane = fbdev->plane;
2979
2980 /* Make sure that the mode respect all LCD controller and
2981 * panel restrictions. */
2982 var->xres = win->w[plane].xres;
2983 var->yres = win->w[plane].yres;
2984
2985 /* No need for virtual resolution support */
2986 var->xres_virtual = var->xres;
2987 var->yres_virtual = var->yres;
2988
2989 var->bits_per_pixel = winbpp(win->w[plane].mode_winctrl1);
2990
2991 screen_size = var->xres_virtual * var->yres_virtual;
2992 if (var->bits_per_pixel > 8) screen_size *= (var->bits_per_pixel / 8);
2993 else screen_size /= (8/var->bits_per_pixel);
2994
2995 if (fbdev->fb_len < screen_size)
2996 return -EINVAL; /* Virtual screen is to big, abort */
2997
2998 /* FIX!!!! what are the implicaitons of ignoring this for windows ??? */
2999 /* The max LCD clock is fixed to 48MHz (value of AUX_CLK). The pixel
3000 * clock can only be obtain by dividing this value by an even integer.
3001 * Fallback to a slower pixel clock if necessary. */
3002 pixclock = max((u32)(PICOS2KHZ(var->pixclock) * 1000), fbi->monspecs.dclkmin);
3003 pixclock = min(pixclock, min(fbi->monspecs.dclkmax, (u32)AU1200_LCD_MAX_CLK/2));
3004
3005 if (AU1200_LCD_MAX_CLK % pixclock) {
3006 int diff = AU1200_LCD_MAX_CLK % pixclock;
3007 pixclock -= diff;
3008 }
3009
3010 var->pixclock = KHZ2PICOS(pixclock/1000);
3011#if 0
3012 if (!panel_is_active(panel)) {
3013 int pcd = AU1200_LCD_MAX_CLK / (pixclock * 2) - 1;
3014
3015 if (!panel_is_color(panel)
3016 && (panel->control_base & LCD_CONTROL_MPI) && (pcd < 3)) {
3017 /* STN 8bit mono panel support is up to 6MHz pixclock */
3018 var->pixclock = KHZ2PICOS(6000);
3019 } else if (!pcd) {
3020 /* Other STN panel support is up to 12MHz */
3021 var->pixclock = KHZ2PICOS(12000);
3022 }
3023 }
3024#endif
3025 /* Set bitfield accordingly */
3026 switch (var->bits_per_pixel) {
3027 case 16:
3028 {
3029 /* 16bpp True color.
3030 * These must be set to MATCH WINCTRL[FORM] */
3031 int idx;
3032 idx = (win->w[0].mode_winctrl1 & LCD_WINCTRL1_FRM) >> 25;
3033 var->red = rgb_bitfields[idx][0];
3034 var->green = rgb_bitfields[idx][1];
3035 var->blue = rgb_bitfields[idx][2];
3036 var->transp = rgb_bitfields[idx][3];
3037 break;
3038 }
3039
3040 case 32:
3041 {
3042 /* 32bpp True color.
3043 * These must be set to MATCH WINCTRL[FORM] */
3044 int idx;
3045 idx = (win->w[0].mode_winctrl1 & LCD_WINCTRL1_FRM) >> 25;
3046 var->red = rgb_bitfields[idx][0];
3047 var->green = rgb_bitfields[idx][1];
3048 var->blue = rgb_bitfields[idx][2];
3049 var->transp = rgb_bitfields[idx][3];
3050 break;
3051 }
3052 default:
3053 print_dbg("Unsupported depth %dbpp", var->bits_per_pixel);
3054 return -EINVAL;
3055 }
3056
3057 return 0;
3058}
3059
3060/* fb_set_par
3061 * Set hardware with var settings. This will enable the controller with a
3062 * specific mode, normally validated with the fb_check_var method
3063 */
3064static int au1200fb_fb_set_par(struct fb_info *fbi)
3065{
3066 struct au1200fb_device *fbdev = (struct au1200fb_device *)fbi;
3067
3068 au1200fb_update_fbinfo(fbi);
3069 au1200_setmode(fbdev);
3070
3071 return 0;
3072}
3073
3074/* fb_setcolreg
3075 * Set color in LCD palette.
3076 */
3077static int au1200fb_fb_setcolreg(unsigned regno, unsigned red, unsigned green,
3078 unsigned blue, unsigned transp, struct fb_info *fbi)
3079{
3080 volatile u32 *palette = lcd->palette;
3081 u32 value;
3082
3083 if (regno > (AU1200_LCD_NBR_PALETTE_ENTRIES - 1))
3084 return -EINVAL;
3085
3086 if (fbi->var.grayscale) {
3087 /* Convert color to grayscale */
3088 red = green = blue =
3089 (19595 * red + 38470 * green + 7471 * blue) >> 16;
3090 }
3091
3092 if (fbi->fix.visual == FB_VISUAL_TRUECOLOR) {
3093 /* Place color in the pseudopalette */
3094 if (regno > 16)
3095 return -EINVAL;
3096
3097 palette = (u32*) fbi->pseudo_palette;
3098
3099 red >>= (16 - fbi->var.red.length);
3100 green >>= (16 - fbi->var.green.length);
3101 blue >>= (16 - fbi->var.blue.length);
3102
3103 value = (red << fbi->var.red.offset) |
3104 (green << fbi->var.green.offset)|
3105 (blue << fbi->var.blue.offset);
3106 value &= 0xFFFF;
3107
3108 } else if (1 /*FIX!!! panel_is_active(fbdev->panel)*/) {
3109 /* COLOR TFT PALLETTIZED (use RGB 565) */
3110 value = (red & 0xF800)|((green >> 5) &
3111 0x07E0)|((blue >> 11) & 0x001F);
3112 value &= 0xFFFF;
3113
3114 } else if (0 /*panel_is_color(fbdev->panel)*/) {
3115 /* COLOR STN MODE */
3116 value = 0x1234;
3117 value &= 0xFFF;
3118 } else {
3119 /* MONOCHROME MODE */
3120 value = (green >> 12) & 0x000F;
3121 value &= 0xF;
3122 }
3123
3124 palette[regno] = value;
3125
3126 return 0;
3127}
3128
3129/* fb_blank
3130 * Blank the screen. Depending on the mode, the screen will be
3131 * activated with the backlight color, or desactivated
3132 */
3133static int au1200fb_fb_blank(int blank_mode, struct fb_info *fbi)
3134{
3135 /* Short-circuit screen blanking */
3136 if (noblanking)
3137 return 0;
3138
3139 switch (blank_mode) {
3140
3141 case FB_BLANK_UNBLANK:
3142 case FB_BLANK_NORMAL:
3143 /* printk("turn on panel\n"); */
3144 au1200_setpanel(panel);
3145 break;
3146 case FB_BLANK_VSYNC_SUSPEND:
3147 case FB_BLANK_HSYNC_SUSPEND:
3148 case FB_BLANK_POWERDOWN:
3149 /* printk("turn off panel\n"); */
3150 au1200_setpanel(NULL);
3151 break;
3152 default:
3153 break;
3154
3155 }
3156
3157 /* FB_BLANK_NORMAL is a soft blank */
3158 return (blank_mode == FB_BLANK_NORMAL) ? -EINVAL : 0;
3159}
3160
3161/* fb_mmap
3162 * Map video memory in user space. We don't use the generic fb_mmap
3163 * method mainly to allow the use of the TLB streaming flag (CCA=6)
3164 */
3165static int au1200fb_fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
3166
3167{
3168 unsigned int len;
3169 unsigned long start=0, off;
3170 struct au1200fb_device *fbdev = (struct au1200fb_device *) info;
3171
3172#ifdef CONFIG_PM
3173 au1xxx_pm_access(LCD_pm_dev);
3174#endif
3175
3176 if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT)) {
3177 return -EINVAL;
3178 }
3179
3180 start = fbdev->fb_phys & PAGE_MASK;
3181 len = PAGE_ALIGN((start & ~PAGE_MASK) + fbdev->fb_len);
3182
3183 off = vma->vm_pgoff << PAGE_SHIFT;
3184
3185 if ((vma->vm_end - vma->vm_start + off) > len) {
3186 return -EINVAL;
3187 }
3188
3189 off += start;
3190 vma->vm_pgoff = off >> PAGE_SHIFT;
3191
3192 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
3193 pgprot_val(vma->vm_page_prot) |= _CACHE_MASK; /* CCA=7 */
3194
3195 vma->vm_flags |= VM_IO;
3196
3197 return io_remap_pfn_range(vma, vma->vm_start, off >> PAGE_SHIFT,
3198 vma->vm_end - vma->vm_start,
3199 vma->vm_page_prot);
3200
3201 return 0;
3202}
3203
3204static void set_global(u_int cmd, struct au1200_lcd_global_regs_t *pdata)
3205{
3206
3207 unsigned int hi1, divider;
3208
3209 /* SCREEN_SIZE: user cannot reset size, must switch panel choice */
3210
3211 if (pdata->flags & SCREEN_BACKCOLOR)
3212 lcd->backcolor = pdata->backcolor;
3213
3214 if (pdata->flags & SCREEN_BRIGHTNESS) {
3215
3216 // limit brightness pwm duty to >= 30/1600
3217 if (pdata->brightness < 30) {
3218 pdata->brightness = 30;
3219 }
3220 divider = (lcd->pwmdiv & 0x3FFFF) + 1;
3221 hi1 = (lcd->pwmhi >> 16) + 1;
3222 hi1 = (((pdata->brightness & 0xFF)+1) * divider >> 8);
3223 lcd->pwmhi &= 0xFFFF;
3224 lcd->pwmhi |= (hi1 << 16);
3225 }
3226
3227 if (pdata->flags & SCREEN_COLORKEY)
3228 lcd->colorkey = pdata->colorkey;
3229
3230 if (pdata->flags & SCREEN_MASK)
3231 lcd->colorkeymsk = pdata->mask;
3232 au_sync();
3233}
3234
3235static void get_global(u_int cmd, struct au1200_lcd_global_regs_t *pdata)
3236{
3237 unsigned int hi1, divider;
3238
3239 pdata->xsize = ((lcd->screen & LCD_SCREEN_SX) >> 19) + 1;
3240 pdata->ysize = ((lcd->screen & LCD_SCREEN_SY) >> 8) + 1;
3241
3242 pdata->backcolor = lcd->backcolor;
3243 pdata->colorkey = lcd->colorkey;
3244 pdata->mask = lcd->colorkeymsk;
3245
3246 // brightness
3247 hi1 = (lcd->pwmhi >> 16) + 1;
3248 divider = (lcd->pwmdiv & 0x3FFFF) + 1;
3249 pdata->brightness = ((hi1 << 8) / divider) - 1;
3250 au_sync();
3251}
3252
3253static void set_window(unsigned int plane,
3254 struct au1200_lcd_window_regs_t *pdata)
3255{
3256 unsigned int val, bpp;
3257
3258 /* Window control register 0 */
3259 if (pdata->flags & WIN_POSITION) {
3260 val = lcd->window[plane].winctrl0 & ~(LCD_WINCTRL0_OX |
3261 LCD_WINCTRL0_OY);
3262 val |= ((pdata->xpos << 21) & LCD_WINCTRL0_OX);
3263 val |= ((pdata->ypos << 10) & LCD_WINCTRL0_OY);
3264 lcd->window[plane].winctrl0 = val;
3265 }
3266 if (pdata->flags & WIN_ALPHA_COLOR) {
3267 val = lcd->window[plane].winctrl0 & ~(LCD_WINCTRL0_A);
3268 val |= ((pdata->alpha_color << 2) & LCD_WINCTRL0_A);
3269 lcd->window[plane].winctrl0 = val;
3270 }
3271 if (pdata->flags & WIN_ALPHA_MODE) {
3272 val = lcd->window[plane].winctrl0 & ~(LCD_WINCTRL0_AEN);
3273 val |= ((pdata->alpha_mode << 1) & LCD_WINCTRL0_AEN);
3274 lcd->window[plane].winctrl0 = val;
3275 }
3276
3277 /* Window control register 1 */
3278 if (pdata->flags & WIN_PRIORITY) {
3279 val = lcd->window[plane].winctrl1 & ~(LCD_WINCTRL1_PRI);
3280 val |= ((pdata->priority << 30) & LCD_WINCTRL1_PRI);
3281 lcd->window[plane].winctrl1 = val;
3282 }
3283 if (pdata->flags & WIN_CHANNEL) {
3284 val = lcd->window[plane].winctrl1 & ~(LCD_WINCTRL1_PIPE);
3285 val |= ((pdata->channel << 29) & LCD_WINCTRL1_PIPE);
3286 lcd->window[plane].winctrl1 = val;
3287 }
3288 if (pdata->flags & WIN_BUFFER_FORMAT) {
3289 val = lcd->window[plane].winctrl1 & ~(LCD_WINCTRL1_FRM);
3290 val |= ((pdata->buffer_format << 25) & LCD_WINCTRL1_FRM);
3291 lcd->window[plane].winctrl1 = val;
3292 }
3293 if (pdata->flags & WIN_COLOR_ORDER) {
3294 val = lcd->window[plane].winctrl1 & ~(LCD_WINCTRL1_CCO);
3295 val |= ((pdata->color_order << 24) & LCD_WINCTRL1_CCO);
3296 lcd->window[plane].winctrl1 = val;
3297 }
3298 if (pdata->flags & WIN_PIXEL_ORDER) {
3299 val = lcd->window[plane].winctrl1 & ~(LCD_WINCTRL1_PO);
3300 val |= ((pdata->pixel_order << 22) & LCD_WINCTRL1_PO);
3301 lcd->window[plane].winctrl1 = val;
3302 }
3303 if (pdata->flags & WIN_SIZE) {
3304 val = lcd->window[plane].winctrl1 & ~(LCD_WINCTRL1_SZX |
3305 LCD_WINCTRL1_SZY);
3306 val |= (((pdata->xsize << 11) - 1) & LCD_WINCTRL1_SZX);
3307 val |= (((pdata->ysize) - 1) & LCD_WINCTRL1_SZY);
3308 lcd->window[plane].winctrl1 = val;
3309 /* program buffer line width */
3310 bpp = winbpp(val) / 8;
3311 val = lcd->window[plane].winctrl2 & ~(LCD_WINCTRL2_BX);
3312 val |= (((pdata->xsize * bpp) << 8) & LCD_WINCTRL2_BX);
3313 lcd->window[plane].winctrl2 = val;
3314 }
3315
3316 /* Window control register 2 */
3317 if (pdata->flags & WIN_COLORKEY_MODE) {
3318 val = lcd->window[plane].winctrl2 & ~(LCD_WINCTRL2_CKMODE);
3319 val |= ((pdata->colorkey_mode << 24) & LCD_WINCTRL2_CKMODE);
3320 lcd->window[plane].winctrl2 = val;
3321 }
3322 if (pdata->flags & WIN_DOUBLE_BUFFER_MODE) {
3323 val = lcd->window[plane].winctrl2 & ~(LCD_WINCTRL2_DBM);
3324 val |= ((pdata->double_buffer_mode << 23) & LCD_WINCTRL2_DBM);
3325 lcd->window[plane].winctrl2 = val;
3326 }
3327 if (pdata->flags & WIN_RAM_ARRAY_MODE) {
3328 val = lcd->window[plane].winctrl2 & ~(LCD_WINCTRL2_RAM);
3329 val |= ((pdata->ram_array_mode << 21) & LCD_WINCTRL2_RAM);
3330 lcd->window[plane].winctrl2 = val;
3331 }
3332
3333 /* Buffer line width programmed with WIN_SIZE */
3334
3335 if (pdata->flags & WIN_BUFFER_SCALE) {
3336 val = lcd->window[plane].winctrl2 & ~(LCD_WINCTRL2_SCX |
3337 LCD_WINCTRL2_SCY);
3338 val |= ((pdata->xsize << 11) & LCD_WINCTRL2_SCX);
3339 val |= ((pdata->ysize) & LCD_WINCTRL2_SCY);
3340 lcd->window[plane].winctrl2 = val;
3341 }
3342
3343 if (pdata->flags & WIN_ENABLE) {
3344 val = lcd->winenable;
3345 val &= ~(1<<plane);
3346 val |= (pdata->enable & 1) << plane;
3347 lcd->winenable = val;
3348 }
3349 au_sync();
3350}
3351
3352static void get_window(unsigned int plane,
3353 struct au1200_lcd_window_regs_t *pdata)
3354{
3355 /* Window control register 0 */
3356 pdata->xpos = (lcd->window[plane].winctrl0 & LCD_WINCTRL0_OX) >> 21;
3357 pdata->ypos = (lcd->window[plane].winctrl0 & LCD_WINCTRL0_OY) >> 10;
3358 pdata->alpha_color = (lcd->window[plane].winctrl0 & LCD_WINCTRL0_A) >> 2;
3359 pdata->alpha_mode = (lcd->window[plane].winctrl0 & LCD_WINCTRL0_AEN) >> 1;
3360
3361 /* Window control register 1 */
3362 pdata->priority = (lcd->window[plane].winctrl1& LCD_WINCTRL1_PRI) >> 30;
3363 pdata->channel = (lcd->window[plane].winctrl1 & LCD_WINCTRL1_PIPE) >> 29;
3364 pdata->buffer_format = (lcd->window[plane].winctrl1 & LCD_WINCTRL1_FRM) >> 25;
3365 pdata->color_order = (lcd->window[plane].winctrl1 & LCD_WINCTRL1_CCO) >> 24;
3366 pdata->pixel_order = (lcd->window[plane].winctrl1 & LCD_WINCTRL1_PO) >> 22;
3367 pdata->xsize = ((lcd->window[plane].winctrl1 & LCD_WINCTRL1_SZX) >> 11) + 1;
3368 pdata->ysize = (lcd->window[plane].winctrl1 & LCD_WINCTRL1_SZY) + 1;
3369
3370 /* Window control register 2 */
3371 pdata->colorkey_mode = (lcd->window[plane].winctrl2 & LCD_WINCTRL2_CKMODE) >> 24;
3372 pdata->double_buffer_mode = (lcd->window[plane].winctrl2 & LCD_WINCTRL2_DBM) >> 23;
3373 pdata->ram_array_mode = (lcd->window[plane].winctrl2 & LCD_WINCTRL2_RAM) >> 21;
3374
3375 pdata->enable = (lcd->winenable >> plane) & 1;
3376 au_sync();
3377}
3378
3379static int au1200fb_ioctl(struct fb_info *info, unsigned int cmd,
3380 unsigned long arg)
3381{
3382 int plane;
3383 int val;
3384
3385#ifdef CONFIG_PM
3386 au1xxx_pm_access(LCD_pm_dev);
3387#endif
3388
3389 plane = fbinfo2index(info);
3390 print_dbg("au1200fb: ioctl %d on plane %d\n", cmd, plane);
3391
3392 if (cmd == AU1200_LCD_FB_IOCTL) {
3393 struct au1200_lcd_iodata_t iodata;
3394
3395 if (copy_from_user(&iodata, (void __user *) arg, sizeof(iodata)))
3396 return -EFAULT;
3397
3398 print_dbg("FB IOCTL called\n");
3399
3400 switch (iodata.subcmd) {
3401 case AU1200_LCD_SET_SCREEN:
3402 print_dbg("AU1200_LCD_SET_SCREEN\n");
3403 set_global(cmd, &iodata.global);
3404 break;
3405
3406 case AU1200_LCD_GET_SCREEN:
3407 print_dbg("AU1200_LCD_GET_SCREEN\n");
3408 get_global(cmd, &iodata.global);
3409 break;
3410
3411 case AU1200_LCD_SET_WINDOW:
3412 print_dbg("AU1200_LCD_SET_WINDOW\n");
3413 set_window(plane, &iodata.window);
3414 break;
3415
3416 case AU1200_LCD_GET_WINDOW:
3417 print_dbg("AU1200_LCD_GET_WINDOW\n");
3418 get_window(plane, &iodata.window);
3419 break;
3420
3421 case AU1200_LCD_SET_PANEL:
3422 print_dbg("AU1200_LCD_SET_PANEL\n");
3423 if ((iodata.global.panel_choice >= 0) &&
3424 (iodata.global.panel_choice <
3425 NUM_PANELS))
3426 {
3427 struct panel_settings *newpanel;
3428 panel_index = iodata.global.panel_choice;
3429 newpanel = &known_lcd_panels[panel_index];
3430 au1200_setpanel(newpanel);
3431 }
3432 break;
3433
3434 case AU1200_LCD_GET_PANEL:
3435 print_dbg("AU1200_LCD_GET_PANEL\n");
3436 iodata.global.panel_choice = panel_index;
3437 break;
3438
3439 default:
3440 return -EINVAL;
3441 }
3442
3443 val = copy_to_user((void __user *) arg, &iodata, sizeof(iodata));
3444 if (val) {
3445 print_dbg("error: could not copy %d bytes\n", val);
3446 return -EFAULT;
3447 }
3448 }
3449
3450 return 0;
3451}
3452
3453
3454static struct fb_ops au1200fb_fb_ops = {
3455 .owner = THIS_MODULE,
3456 .fb_check_var = au1200fb_fb_check_var,
3457 .fb_set_par = au1200fb_fb_set_par,
3458 .fb_setcolreg = au1200fb_fb_setcolreg,
3459 .fb_blank = au1200fb_fb_blank,
3460 .fb_fillrect = cfb_fillrect,
3461 .fb_copyarea = cfb_copyarea,
3462 .fb_imageblit = cfb_imageblit,
3463 .fb_sync = NULL,
3464 .fb_ioctl = au1200fb_ioctl,
3465 .fb_mmap = au1200fb_fb_mmap,
3466};
3467
3468/*-------------------------------------------------------------------------*/
3469
3470static irqreturn_t au1200fb_handle_irq(int irq, void* dev_id, struct pt_regs *regs)
3471{
3472 /* Nothing to do for now, just clear any pending interrupt */
3473 lcd->intstatus = lcd->intstatus;
3474 au_sync();
3475
3476 return IRQ_HANDLED;
3477}
3478
3479/*-------------------------------------------------------------------------*/
3480
3481/* AU1200 LCD device probe helpers */
3482
3483static int au1200fb_init_fbinfo(struct au1200fb_device *fbdev)
3484{
3485 struct fb_info *fbi = &fbdev->fb_info;
3486 int bpp;
3487
3488 memset(fbi, 0, sizeof(struct fb_info));
3489 fbi->fbops = &au1200fb_fb_ops;
3490
3491 bpp = winbpp(win->w[fbdev->plane].mode_winctrl1);
3492
3493 /* Copy monitor specs from panel data */
3494 /* fixme: we're setting up LCD controller windows, so these dont give a
3495 damn as to what the monitor specs are (the panel itself does, but that
3496 isnt done here...so maybe need a generic catchall monitor setting??? */
3497 memcpy(&fbi->monspecs, &panel->monspecs, sizeof(struct fb_monspecs));
3498
3499 /* We first try the user mode passed in argument. If that failed,
3500 * or if no one has been specified, we default to the first mode of the
3501 * panel list. Note that after this call, var data will be set */
3502 if (!fb_find_mode(&fbi->var,
3503 fbi,
3504 NULL, /* drv_info.opt_mode, */
3505 fbi->monspecs.modedb,
3506 fbi->monspecs.modedb_len,
3507 fbi->monspecs.modedb,
3508 bpp)) {
3509
3510 print_err("Cannot find valid mode for panel %s", panel->name);
3511 return -EFAULT;
3512 }
3513
3514 fbi->pseudo_palette = kmalloc(sizeof(u32) * 16, GFP_KERNEL);
3515 if (!fbi->pseudo_palette) {
3516 return -ENOMEM;
3517 }
3518 memset(fbi->pseudo_palette, 0, sizeof(u32) * 16);
3519
3520 if (fb_alloc_cmap(&fbi->cmap, AU1200_LCD_NBR_PALETTE_ENTRIES, 0) < 0) {
3521 print_err("Fail to allocate colormap (%d entries)",
3522 AU1200_LCD_NBR_PALETTE_ENTRIES);
3523 kfree(fbi->pseudo_palette);
3524 return -EFAULT;
3525 }
3526
3527 strncpy(fbi->fix.id, "AU1200", sizeof(fbi->fix.id));
3528 fbi->fix.smem_start = fbdev->fb_phys;
3529 fbi->fix.smem_len = fbdev->fb_len;
3530 fbi->fix.type = FB_TYPE_PACKED_PIXELS;
3531 fbi->fix.xpanstep = 0;
3532 fbi->fix.ypanstep = 0;
3533 fbi->fix.mmio_start = 0;
3534 fbi->fix.mmio_len = 0;
3535 fbi->fix.accel = FB_ACCEL_NONE;
3536
3537 fbi->screen_base = (char __iomem *) fbdev->fb_mem;
3538
3539 au1200fb_update_fbinfo(fbi);
3540
3541 return 0;
3542}
3543
3544/*-------------------------------------------------------------------------*/
3545
3546/* AU1200 LCD controller device driver */
3547
3548static int au1200fb_drv_probe(struct device *dev)
3549{
3550 struct au1200fb_device *fbdev;
3551 unsigned long page;
3552 int bpp, plane, ret;
3553
3554 if (!dev)
3555 return -EINVAL;
3556
3557 for (plane = 0; plane < CONFIG_FB_AU1200_DEVS; ++plane) {
3558 bpp = winbpp(win->w[plane].mode_winctrl1);
3559 if (win->w[plane].xres == 0)
3560 win->w[plane].xres = panel->Xres;
3561 if (win->w[plane].yres == 0)
3562 win->w[plane].yres = panel->Yres;
3563
3564 fbdev = &_au1200fb_devices[plane];
3565 memset(fbdev, 0, sizeof(struct au1200fb_device));
3566 fbdev->plane = plane;
3567
3568 /* Allocate the framebuffer to the maximum screen size */
3569 fbdev->fb_len = (win->w[plane].xres * win->w[plane].yres * bpp) / 8;
3570
3571 fbdev->fb_mem = dma_alloc_noncoherent(dev,
3572 PAGE_ALIGN(fbdev->fb_len),
3573 &fbdev->fb_phys, GFP_KERNEL);
3574 if (!fbdev->fb_mem) {
3575 print_err("fail to allocate frambuffer (size: %dK))",
3576 fbdev->fb_len / 1024);
3577 return -ENOMEM;
3578 }
3579
3580 /*
3581 * Set page reserved so that mmap will work. This is necessary
3582 * since we'll be remapping normal memory.
3583 */
3584 for (page = (unsigned long)fbdev->fb_phys;
3585 page < PAGE_ALIGN((unsigned long)fbdev->fb_phys +
3586 fbdev->fb_len);
3587 page += PAGE_SIZE) {
3588 SetPageReserved(pfn_to_page(page >> PAGE_SHIFT)); /* LCD DMA is NOT coherent on Au1200 */
3589 }
3590 print_dbg("Framebuffer memory map at %p", fbdev->fb_mem);
3591 print_dbg("phys=0x%08x, size=%dK", fbdev->fb_phys, fbdev->fb_len / 1024);
3592
3593 /* Init FB data */
3594 if ((ret = au1200fb_init_fbinfo(fbdev)) < 0)
3595 goto failed;
3596
3597 /* Register new framebuffer */
3598 if ((ret = register_framebuffer(&fbdev->fb_info)) < 0) {
3599 print_err("cannot register new framebuffer");
3600 goto failed;
3601 }
3602
3603 au1200fb_fb_set_par(&fbdev->fb_info);
3604
3605#if !defined(CONFIG_FRAMEBUFFER_CONSOLE) && defined(CONFIG_LOGO)
3606 if (plane == 0)
3607 if (fb_prepare_logo(&fbdev->fb_info, FB_ROTATE_UR)) {
3608 /* Start display and show logo on boot */
3609 fb_set_cmap(&fbdev->fb_info.cmap,
3610 &fbdev->fb_info);
3611
3612 fb_show_logo(&fbdev->fb_info, FB_ROTATE_UR);
3613 }
3614#endif
3615 }
3616
3617 /* Now hook interrupt too */
3618 if ((ret = request_irq(AU1200_LCD_INT, au1200fb_handle_irq,
3619 SA_INTERRUPT | SA_SHIRQ, "lcd", (void *)dev)) < 0) {
3620 print_err("fail to request interrupt line %d (err: %d)",
3621 AU1200_LCD_INT, ret);
3622 goto failed;
3623 }
3624
3625 return 0;
3626
3627failed:
3628 /* NOTE: This only does the current plane/window that failed; others are still active */
3629 if (fbdev->fb_mem)
3630 dma_free_noncoherent(dev, PAGE_ALIGN(fbdev->fb_len),
3631 fbdev->fb_mem, fbdev->fb_phys);
3632 if (fbdev->fb_info.cmap.len != 0)
3633 fb_dealloc_cmap(&fbdev->fb_info.cmap);
3634 if (fbdev->fb_info.pseudo_palette)
3635 kfree(fbdev->fb_info.pseudo_palette);
3636 if (plane == 0)
3637 free_irq(AU1200_LCD_INT, (void*)dev);
3638 return ret;
3639}
3640
3641static int au1200fb_drv_remove(struct device *dev)
3642{
3643 struct au1200fb_device *fbdev;
3644 int plane;
3645
3646 if (!dev)
3647 return -ENODEV;
3648
3649 /* Turn off the panel */
3650 au1200_setpanel(NULL);
3651
3652 for (plane = 0; plane < CONFIG_FB_AU1200_DEVS; ++plane)
3653 {
3654 fbdev = &_au1200fb_devices[plane];
3655
3656 /* Clean up all probe data */
3657 unregister_framebuffer(&fbdev->fb_info);
3658 if (fbdev->fb_mem)
3659 dma_free_noncoherent(dev, PAGE_ALIGN(fbdev->fb_len),
3660 fbdev->fb_mem, fbdev->fb_phys);
3661 if (fbdev->fb_info.cmap.len != 0)
3662 fb_dealloc_cmap(&fbdev->fb_info.cmap);
3663 if (fbdev->fb_info.pseudo_palette)
3664 kfree(fbdev->fb_info.pseudo_palette);
3665 }
3666
3667 free_irq(AU1200_LCD_INT, (void *)dev);
3668
3669 return 0;
3670}
3671
3672#ifdef CONFIG_PM
3673static int au1200fb_drv_suspend(struct device *dev, u32 state, u32 level)
3674{
3675 /* TODO */
3676 return 0;
3677}
3678
3679static int au1200fb_drv_resume(struct device *dev, u32 level)
3680{
3681 /* TODO */
3682 return 0;
3683}
3684#endif /* CONFIG_PM */
3685
3686static struct device_driver au1200fb_driver = {
3687 .name = "au1200-lcd",
3688 .bus = &platform_bus_type,
3689 .probe = au1200fb_drv_probe,
3690 .remove = au1200fb_drv_remove,
3691#ifdef CONFIG_PM
3692 .suspend = au1200fb_drv_suspend,
3693 .resume = au1200fb_drv_resume,
3694#endif
3695};
3696
3697/*-------------------------------------------------------------------------*/
3698
3699/* Kernel driver */
3700
3701static void au1200fb_setup(void)
3702{
3703 char* options = NULL;
3704 char* this_opt;
3705 int num_panels = ARRAY_SIZE(known_lcd_panels);
3706 int panel_idx = -1;
3707
3708 fb_get_options(DRIVER_NAME, &options);
3709
3710 if (options) {
3711 while ((this_opt = strsep(&options,",")) != NULL) {
3712 /* Panel option - can be panel name,
3713 * "bs" for board-switch, or number/index */
3714 if (!strncmp(this_opt, "panel:", 6)) {
3715 int i;
3716 long int li;
3717 char *endptr;
3718 this_opt += 6;
3719 /* First check for index, which allows
3720 * to short circuit this mess */
3721 li = simple_strtol(this_opt, &endptr, 0);
3722 if (*endptr == '\0') {
3723 panel_idx = (int)li;
3724 }
3725 else if (strcmp(this_opt, "bs") == 0) {
3726 extern int board_au1200fb_panel(void);
3727 panel_idx = board_au1200fb_panel();
3728 }
3729
3730 else
3731 for (i = 0; i < num_panels; i++) {
3732 if (!strcmp(this_opt, known_lcd_panels[i].name)) {
3733 panel_idx = i;
3734 break;
3735 }
3736 }
3737
3738 if ((panel_idx < 0) || (panel_idx >= num_panels)) {
3739 print_warn("Panel %s not supported!", this_opt);
3740 }
3741 else
3742 panel_index = panel_idx;
3743 }
3744
3745 else if (strncmp(this_opt, "nohwcursor", 10) == 0) {
3746 nohwcursor = 1;
3747 }
3748
3749 /* Unsupported option */
3750 else {
3751 print_warn("Unsupported option \"%s\"", this_opt);
3752 }
3753 }
3754 }
3755}
3756
3757#ifdef CONFIG_PM
3758static int au1200fb_pm_callback(au1xxx_power_dev_t *dev,
3759 au1xxx_request_t request, void *data) {
3760 int retval = -1;
3761 unsigned int d = 0;
3762 unsigned int brightness = 0;
3763
3764 if (request == AU1XXX_PM_SLEEP) {
3765 board_au1200fb_panel_shutdown();
3766 }
3767 else if (request == AU1XXX_PM_WAKEUP) {
3768 if(dev->prev_state == SLEEP_STATE)
3769 {
3770 int plane;
3771 au1200_setpanel(panel);
3772 for (plane = 0; plane < CONFIG_FB_AU1200_DEVS; ++plane) {
3773 struct au1200fb_device *fbdev;
3774 fbdev = &_au1200fb_devices[plane];
3775 au1200fb_fb_set_par(&fbdev->fb_info);
3776 }
3777 }
3778
3779 d = *((unsigned int*)data);
3780 if(d <=10) brightness = 26;
3781 else if(d<=20) brightness = 51;
3782 else if(d<=30) brightness = 77;
3783 else if(d<=40) brightness = 102;
3784 else if(d<=50) brightness = 128;
3785 else if(d<=60) brightness = 153;
3786 else if(d<=70) brightness = 179;
3787 else if(d<=80) brightness = 204;
3788 else if(d<=90) brightness = 230;
3789 else brightness = 255;
3790 set_brightness(brightness);
3791 } else if (request == AU1XXX_PM_GETSTATUS) {
3792 return dev->cur_state;
3793 } else if (request == AU1XXX_PM_ACCESS) {
3794 if (dev->cur_state != SLEEP_STATE)
3795 return retval;
3796 else {
3797 au1200_setpanel(panel);
3798 }
3799 } else if (request == AU1XXX_PM_IDLE) {
3800 } else if (request == AU1XXX_PM_CLEANUP) {
3801 }
3802
3803 return retval;
3804}
3805#endif
3806
3807static int __init au1200fb_init(void)
3808{
3809 print_info("" DRIVER_DESC "");
3810
3811 /* Setup driver with options */
3812 au1200fb_setup();
3813
3814 /* Point to the panel selected */
3815 panel = &known_lcd_panels[panel_index];
3816 win = &windows[window_index];
3817
3818 printk(DRIVER_NAME ": Panel %d %s\n", panel_index, panel->name);
3819 printk(DRIVER_NAME ": Win %d %s\n", window_index, win->name);
3820
3821 /* Kickstart the panel, the framebuffers/windows come soon enough */
3822 au1200_setpanel(panel);
3823
3824 #ifdef CONFIG_PM
3825 LCD_pm_dev = new_au1xxx_power_device("LCD", &au1200fb_pm_callback, NULL);
3826 if ( LCD_pm_dev == NULL)
3827 printk(KERN_INFO "Unable to create a power management device entry for the au1200fb.\n");
3828 else
3829 printk(KERN_INFO "Power management device entry for the au1200fb loaded.\n");
3830 #endif
3831
3832 return driver_register(&au1200fb_driver);
3833}
3834
3835static void __exit au1200fb_cleanup(void)
3836{
3837 driver_unregister(&au1200fb_driver);
3838}
3839
3840module_init(au1200fb_init);
3841module_exit(au1200fb_cleanup);
3842
3843MODULE_DESCRIPTION(DRIVER_DESC);
3844MODULE_LICENSE("GPL");
diff --git a/drivers/video/fbsysfs.c b/drivers/video/fbsysfs.c
index b72b05250a9d..34e07399756b 100644
--- a/drivers/video/fbsysfs.c
+++ b/drivers/video/fbsysfs.c
@@ -305,94 +305,6 @@ static ssize_t show_stride(struct class_device *class_device, char *buf)
305 return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->fix.line_length); 305 return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->fix.line_length);
306} 306}
307 307
308/* Format for cmap is "%02x%c%4x%4x%4x\n" */
309/* %02x entry %c transp %4x red %4x blue %4x green \n */
310/* 256 rows at 16 chars equals 4096, the normal page size */
311/* the code will automatically adjust for different page sizes */
312static ssize_t store_cmap(struct class_device *class_device, const char *buf,
313 size_t count)
314{
315 struct fb_info *fb_info = class_get_devdata(class_device);
316 int rc, i, start, length, transp = 0;
317
318 if ((count > PAGE_SIZE) || ((count % 16) != 0))
319 return -EINVAL;
320
321 if (!fb_info->fbops->fb_setcolreg && !fb_info->fbops->fb_setcmap)
322 return -EINVAL;
323
324 sscanf(buf, "%02x", &start);
325 length = count / 16;
326
327 for (i = 0; i < length; i++)
328 if (buf[i * 16 + 2] != ' ')
329 transp = 1;
330
331 /* If we can batch, do it */
332 if (fb_info->fbops->fb_setcmap && length > 1) {
333 struct fb_cmap umap;
334
335 memset(&umap, 0, sizeof(umap));
336 if ((rc = fb_alloc_cmap(&umap, length, transp)))
337 return rc;
338
339 umap.start = start;
340 for (i = 0; i < length; i++) {
341 sscanf(&buf[i * 16 + 3], "%4hx", &umap.red[i]);
342 sscanf(&buf[i * 16 + 7], "%4hx", &umap.blue[i]);
343 sscanf(&buf[i * 16 + 11], "%4hx", &umap.green[i]);
344 if (transp)
345 umap.transp[i] = (buf[i * 16 + 2] != ' ');
346 }
347 rc = fb_info->fbops->fb_setcmap(&umap, fb_info);
348 fb_copy_cmap(&umap, &fb_info->cmap);
349 fb_dealloc_cmap(&umap);
350
351 return rc ?: count;
352 }
353 for (i = 0; i < length; i++) {
354 u16 red, blue, green, tsp;
355
356 sscanf(&buf[i * 16 + 3], "%4hx", &red);
357 sscanf(&buf[i * 16 + 7], "%4hx", &blue);
358 sscanf(&buf[i * 16 + 11], "%4hx", &green);
359 tsp = (buf[i * 16 + 2] != ' ');
360 if ((rc = fb_info->fbops->fb_setcolreg(start++,
361 red, green, blue, tsp, fb_info)))
362 return rc;
363
364 fb_info->cmap.red[i] = red;
365 fb_info->cmap.blue[i] = blue;
366 fb_info->cmap.green[i] = green;
367 if (transp)
368 fb_info->cmap.transp[i] = tsp;
369 }
370 return count;
371}
372
373static ssize_t show_cmap(struct class_device *class_device, char *buf)
374{
375 struct fb_info *fb_info = class_get_devdata(class_device);
376 unsigned int i;
377
378 if (!fb_info->cmap.red || !fb_info->cmap.blue ||
379 !fb_info->cmap.green)
380 return -EINVAL;
381
382 if (fb_info->cmap.len > PAGE_SIZE / 16)
383 return -EINVAL;
384
385 /* don't mess with the format, the buffer is PAGE_SIZE */
386 /* 256 entries at 16 chars per line equals 4096 = PAGE_SIZE */
387 for (i = 0; i < fb_info->cmap.len; i++) {
388 snprintf(&buf[ i * 16], PAGE_SIZE - i * 16, "%02x%c%4x%4x%4x\n", i + fb_info->cmap.start,
389 ((fb_info->cmap.transp && fb_info->cmap.transp[i]) ? '*' : ' '),
390 fb_info->cmap.red[i], fb_info->cmap.blue[i],
391 fb_info->cmap.green[i]);
392 }
393 return 16 * fb_info->cmap.len;
394}
395
396static ssize_t store_blank(struct class_device *class_device, const char * buf, 308static ssize_t store_blank(struct class_device *class_device, const char * buf,
397 size_t count) 309 size_t count)
398{ 310{
@@ -502,10 +414,12 @@ static ssize_t show_fbstate(struct class_device *class_device, char *buf)
502 return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->state); 414 return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->state);
503} 415}
504 416
417/* When cmap is added back in it should be a binary attribute
418 * not a text one. Consideration should also be given to converting
419 * fbdev to use configfs instead of sysfs */
505static struct class_device_attribute class_device_attrs[] = { 420static struct class_device_attribute class_device_attrs[] = {
506 __ATTR(bits_per_pixel, S_IRUGO|S_IWUSR, show_bpp, store_bpp), 421 __ATTR(bits_per_pixel, S_IRUGO|S_IWUSR, show_bpp, store_bpp),
507 __ATTR(blank, S_IRUGO|S_IWUSR, show_blank, store_blank), 422 __ATTR(blank, S_IRUGO|S_IWUSR, show_blank, store_blank),
508 __ATTR(color_map, S_IRUGO|S_IWUSR, show_cmap, store_cmap),
509 __ATTR(console, S_IRUGO|S_IWUSR, show_console, store_console), 423 __ATTR(console, S_IRUGO|S_IWUSR, show_console, store_console),
510 __ATTR(cursor, S_IRUGO|S_IWUSR, show_cursor, store_cursor), 424 __ATTR(cursor, S_IRUGO|S_IWUSR, show_cursor, store_cursor),
511 __ATTR(mode, S_IRUGO|S_IWUSR, show_mode, store_mode), 425 __ATTR(mode, S_IRUGO|S_IWUSR, show_mode, store_mode),
diff --git a/fs/block_dev.c b/fs/block_dev.c
index af88c43043d5..f5958f413bd1 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1104,6 +1104,8 @@ const struct file_operations def_blk_fops = {
1104 .readv = generic_file_readv, 1104 .readv = generic_file_readv,
1105 .writev = generic_file_write_nolock, 1105 .writev = generic_file_write_nolock,
1106 .sendfile = generic_file_sendfile, 1106 .sendfile = generic_file_sendfile,
1107 .splice_read = generic_file_splice_read,
1108 .splice_write = generic_file_splice_write,
1107}; 1109};
1108 1110
1109int ioctl_by_bdev(struct block_device *bdev, unsigned cmd, unsigned long arg) 1111int ioctl_by_bdev(struct block_device *bdev, unsigned cmd, unsigned long arg)
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index aaf151cb5822..d2ec806a4f32 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -3447,10 +3447,13 @@ int cifs_setup_session(unsigned int xid, struct cifsSesInfo *pSesInfo,
3447 pSesInfo->server->secMode, 3447 pSesInfo->server->secMode,
3448 pSesInfo->server->capabilities, 3448 pSesInfo->server->capabilities,
3449 pSesInfo->server->timeZone)); 3449 pSesInfo->server->timeZone));
3450#ifdef CONFIG_CIFS_EXPERIMENTAL
3450 if(experimEnabled > 1) 3451 if(experimEnabled > 1)
3451 rc = CIFS_SessSetup(xid, pSesInfo, CIFS_NTLM /* type */, 3452 rc = CIFS_SessSetup(xid, pSesInfo, CIFS_NTLM /* type */,
3452 &ntlmv2_flag, nls_info); 3453 &ntlmv2_flag, nls_info);
3453 else if (extended_security 3454 else
3455#endif
3456 if (extended_security
3454 && (pSesInfo->capabilities & CAP_EXTENDED_SECURITY) 3457 && (pSesInfo->capabilities & CAP_EXTENDED_SECURITY)
3455 && (pSesInfo->server->secType == NTLMSSP)) { 3458 && (pSesInfo->server->secType == NTLMSSP)) {
3456 cFYI(1, ("New style sesssetup")); 3459 cFYI(1, ("New style sesssetup"));
diff --git a/fs/compat.c b/fs/compat.c
index 7f8e26ea427c..970888aad843 100644
--- a/fs/compat.c
+++ b/fs/compat.c
@@ -1217,6 +1217,10 @@ static ssize_t compat_do_readv_writev(int type, struct file *file,
1217 if (ret < 0) 1217 if (ret < 0)
1218 goto out; 1218 goto out;
1219 1219
1220 ret = security_file_permission(file, type == READ ? MAY_READ:MAY_WRITE);
1221 if (ret)
1222 goto out;
1223
1220 fnv = NULL; 1224 fnv = NULL;
1221 if (type == READ) { 1225 if (type == READ) {
1222 fn = file->f_op->read; 1226 fn = file->f_op->read;
@@ -1313,6 +1317,26 @@ out:
1313 return ret; 1317 return ret;
1314} 1318}
1315 1319
1320asmlinkage long
1321compat_sys_vmsplice(int fd, const struct compat_iovec __user *iov32,
1322 unsigned int nr_segs, unsigned int flags)
1323{
1324 unsigned i;
1325 struct iovec *iov;
1326 if (nr_segs > UIO_MAXIOV)
1327 return -EINVAL;
1328 iov = compat_alloc_user_space(nr_segs * sizeof(struct iovec));
1329 for (i = 0; i < nr_segs; i++) {
1330 struct compat_iovec v;
1331 if (get_user(v.iov_base, &iov32[i].iov_base) ||
1332 get_user(v.iov_len, &iov32[i].iov_len) ||
1333 put_user(compat_ptr(v.iov_base), &iov[i].iov_base) ||
1334 put_user(v.iov_len, &iov[i].iov_len))
1335 return -EFAULT;
1336 }
1337 return sys_vmsplice(fd, iov, nr_segs, flags);
1338}
1339
1316/* 1340/*
1317 * Exactly like fs/open.c:sys_open(), except that it doesn't set the 1341 * Exactly like fs/open.c:sys_open(), except that it doesn't set the
1318 * O_LARGEFILE flag. 1342 * O_LARGEFILE flag.
diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c
index 48ae0339af17..2edd7eec88fd 100644
--- a/fs/ext3/inode.c
+++ b/fs/ext3/inode.c
@@ -711,7 +711,7 @@ static int ext3_splice_branch(handle_t *handle, struct inode *inode,
711 * direct blocks blocks 711 * direct blocks blocks
712 */ 712 */
713 if (num == 0 && blks > 1) { 713 if (num == 0 && blks > 1) {
714 current_block = le32_to_cpu(where->key + 1); 714 current_block = le32_to_cpu(where->key) + 1;
715 for (i = 1; i < blks; i++) 715 for (i = 1; i < blks; i++)
716 *(where->p + i ) = cpu_to_le32(current_block++); 716 *(where->p + i ) = cpu_to_le32(current_block++);
717 } 717 }
@@ -724,7 +724,7 @@ static int ext3_splice_branch(handle_t *handle, struct inode *inode,
724 if (block_i) { 724 if (block_i) {
725 block_i->last_alloc_logical_block = block + blks - 1; 725 block_i->last_alloc_logical_block = block + blks - 1;
726 block_i->last_alloc_physical_block = 726 block_i->last_alloc_physical_block =
727 le32_to_cpu(where[num].key + blks - 1); 727 le32_to_cpu(where[num].key) + blks - 1;
728 } 728 }
729 729
730 /* We are done with atomic stuff, now do the rest of housekeeping */ 730 /* We are done with atomic stuff, now do the rest of housekeeping */
@@ -814,11 +814,13 @@ int ext3_get_blocks_handle(handle_t *handle, struct inode *inode,
814 814
815 /* Simplest case - block found, no allocation needed */ 815 /* Simplest case - block found, no allocation needed */
816 if (!partial) { 816 if (!partial) {
817 first_block = chain[depth - 1].key; 817 first_block = le32_to_cpu(chain[depth - 1].key);
818 clear_buffer_new(bh_result); 818 clear_buffer_new(bh_result);
819 count++; 819 count++;
820 /*map more blocks*/ 820 /*map more blocks*/
821 while (count < maxblocks && count <= blocks_to_boundary) { 821 while (count < maxblocks && count <= blocks_to_boundary) {
822 unsigned long blk;
823
822 if (!verify_chain(chain, partial)) { 824 if (!verify_chain(chain, partial)) {
823 /* 825 /*
824 * Indirect block might be removed by 826 * Indirect block might be removed by
@@ -831,8 +833,9 @@ int ext3_get_blocks_handle(handle_t *handle, struct inode *inode,
831 count = 0; 833 count = 0;
832 break; 834 break;
833 } 835 }
834 if (le32_to_cpu(*(chain[depth-1].p+count) == 836 blk = le32_to_cpu(*(chain[depth-1].p + count));
835 (first_block + count))) 837
838 if (blk == first_block + count)
836 count++; 839 count++;
837 else 840 else
838 break; 841 break;
diff --git a/fs/ext3/ioctl.c b/fs/ext3/ioctl.c
index aaf1da17b6d4..8c22aa9a7fbb 100644
--- a/fs/ext3/ioctl.c
+++ b/fs/ext3/ioctl.c
@@ -48,6 +48,7 @@ int ext3_ioctl (struct inode * inode, struct file * filp, unsigned int cmd,
48 if (!S_ISDIR(inode->i_mode)) 48 if (!S_ISDIR(inode->i_mode))
49 flags &= ~EXT3_DIRSYNC_FL; 49 flags &= ~EXT3_DIRSYNC_FL;
50 50
51 mutex_lock(&inode->i_mutex);
51 oldflags = ei->i_flags; 52 oldflags = ei->i_flags;
52 53
53 /* The JOURNAL_DATA flag is modifiable only by root */ 54 /* The JOURNAL_DATA flag is modifiable only by root */
@@ -60,8 +61,10 @@ int ext3_ioctl (struct inode * inode, struct file * filp, unsigned int cmd,
60 * This test looks nicer. Thanks to Pauline Middelink 61 * This test looks nicer. Thanks to Pauline Middelink
61 */ 62 */
62 if ((flags ^ oldflags) & (EXT3_APPEND_FL | EXT3_IMMUTABLE_FL)) { 63 if ((flags ^ oldflags) & (EXT3_APPEND_FL | EXT3_IMMUTABLE_FL)) {
63 if (!capable(CAP_LINUX_IMMUTABLE)) 64 if (!capable(CAP_LINUX_IMMUTABLE)) {
65 mutex_unlock(&inode->i_mutex);
64 return -EPERM; 66 return -EPERM;
67 }
65 } 68 }
66 69
67 /* 70 /*
@@ -69,14 +72,18 @@ int ext3_ioctl (struct inode * inode, struct file * filp, unsigned int cmd,
69 * the relevant capability. 72 * the relevant capability.
70 */ 73 */
71 if ((jflag ^ oldflags) & (EXT3_JOURNAL_DATA_FL)) { 74 if ((jflag ^ oldflags) & (EXT3_JOURNAL_DATA_FL)) {
72 if (!capable(CAP_SYS_RESOURCE)) 75 if (!capable(CAP_SYS_RESOURCE)) {
76 mutex_unlock(&inode->i_mutex);
73 return -EPERM; 77 return -EPERM;
78 }
74 } 79 }
75 80
76 81
77 handle = ext3_journal_start(inode, 1); 82 handle = ext3_journal_start(inode, 1);
78 if (IS_ERR(handle)) 83 if (IS_ERR(handle)) {
84 mutex_unlock(&inode->i_mutex);
79 return PTR_ERR(handle); 85 return PTR_ERR(handle);
86 }
80 if (IS_SYNC(inode)) 87 if (IS_SYNC(inode))
81 handle->h_sync = 1; 88 handle->h_sync = 1;
82 err = ext3_reserve_inode_write(handle, inode, &iloc); 89 err = ext3_reserve_inode_write(handle, inode, &iloc);
@@ -93,11 +100,14 @@ int ext3_ioctl (struct inode * inode, struct file * filp, unsigned int cmd,
93 err = ext3_mark_iloc_dirty(handle, inode, &iloc); 100 err = ext3_mark_iloc_dirty(handle, inode, &iloc);
94flags_err: 101flags_err:
95 ext3_journal_stop(handle); 102 ext3_journal_stop(handle);
96 if (err) 103 if (err) {
104 mutex_unlock(&inode->i_mutex);
97 return err; 105 return err;
106 }
98 107
99 if ((jflag ^ oldflags) & (EXT3_JOURNAL_DATA_FL)) 108 if ((jflag ^ oldflags) & (EXT3_JOURNAL_DATA_FL))
100 err = ext3_change_inode_journal_flag(inode, jflag); 109 err = ext3_change_inode_journal_flag(inode, jflag);
110 mutex_unlock(&inode->i_mutex);
101 return err; 111 return err;
102 } 112 }
103 case EXT3_IOC_GETVERSION: 113 case EXT3_IOC_GETVERSION:
diff --git a/fs/ext3/resize.c b/fs/ext3/resize.c
index c5ffa8523968..8aac5334680d 100644
--- a/fs/ext3/resize.c
+++ b/fs/ext3/resize.c
@@ -213,7 +213,7 @@ static int setup_new_group_blocks(struct super_block *sb,
213 goto exit_bh; 213 goto exit_bh;
214 } 214 }
215 lock_buffer(bh); 215 lock_buffer(bh);
216 memcpy(gdb->b_data, sbi->s_group_desc[i], bh->b_size); 216 memcpy(gdb->b_data, sbi->s_group_desc[i]->b_data, bh->b_size);
217 set_buffer_uptodate(gdb); 217 set_buffer_uptodate(gdb);
218 unlock_buffer(bh); 218 unlock_buffer(bh);
219 ext3_journal_dirty_metadata(handle, gdb); 219 ext3_journal_dirty_metadata(handle, gdb);
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
index cc750c68fe70..104a62dadb94 100644
--- a/fs/fuse/dev.c
+++ b/fs/fuse/dev.c
@@ -128,14 +128,24 @@ void fuse_put_request(struct fuse_conn *fc, struct fuse_req *req)
128 } 128 }
129} 129}
130 130
131void fuse_remove_background(struct fuse_conn *fc, struct fuse_req *req) 131/*
132 * Called with sbput_sem held for read (request_end) or write
133 * (fuse_put_super). By the time fuse_put_super() is finished, all
134 * inodes belonging to background requests must be released, so the
135 * iputs have to be done within the locked region.
136 */
137void fuse_release_background(struct fuse_conn *fc, struct fuse_req *req)
132{ 138{
133 list_del_init(&req->bg_entry); 139 iput(req->inode);
140 iput(req->inode2);
141 spin_lock(&fc->lock);
142 list_del(&req->bg_entry);
134 if (fc->num_background == FUSE_MAX_BACKGROUND) { 143 if (fc->num_background == FUSE_MAX_BACKGROUND) {
135 fc->blocked = 0; 144 fc->blocked = 0;
136 wake_up_all(&fc->blocked_waitq); 145 wake_up_all(&fc->blocked_waitq);
137 } 146 }
138 fc->num_background--; 147 fc->num_background--;
148 spin_unlock(&fc->lock);
139} 149}
140 150
141/* 151/*
@@ -165,27 +175,22 @@ static void request_end(struct fuse_conn *fc, struct fuse_req *req)
165 wake_up(&req->waitq); 175 wake_up(&req->waitq);
166 fuse_put_request(fc, req); 176 fuse_put_request(fc, req);
167 } else { 177 } else {
168 struct inode *inode = req->inode;
169 struct inode *inode2 = req->inode2;
170 struct file *file = req->file;
171 void (*end) (struct fuse_conn *, struct fuse_req *) = req->end; 178 void (*end) (struct fuse_conn *, struct fuse_req *) = req->end;
172 req->end = NULL; 179 req->end = NULL;
173 req->inode = NULL;
174 req->inode2 = NULL;
175 req->file = NULL;
176 if (!list_empty(&req->bg_entry))
177 fuse_remove_background(fc, req);
178 spin_unlock(&fc->lock); 180 spin_unlock(&fc->lock);
181 down_read(&fc->sbput_sem);
182 if (fc->mounted)
183 fuse_release_background(fc, req);
184 up_read(&fc->sbput_sem);
185
186 /* fput must go outside sbput_sem, otherwise it can deadlock */
187 if (req->file)
188 fput(req->file);
179 189
180 if (end) 190 if (end)
181 end(fc, req); 191 end(fc, req);
182 else 192 else
183 fuse_put_request(fc, req); 193 fuse_put_request(fc, req);
184
185 if (file)
186 fput(file);
187 iput(inode);
188 iput(inode2);
189 } 194 }
190} 195}
191 196
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index 59661c481d9d..0474202cb5dc 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -258,9 +258,15 @@ struct fuse_conn {
258 /** waitq for blocked connection */ 258 /** waitq for blocked connection */
259 wait_queue_head_t blocked_waitq; 259 wait_queue_head_t blocked_waitq;
260 260
261 /** RW semaphore for exclusion with fuse_put_super() */
262 struct rw_semaphore sbput_sem;
263
261 /** The next unique request id */ 264 /** The next unique request id */
262 u64 reqctr; 265 u64 reqctr;
263 266
267 /** Mount is active */
268 unsigned mounted;
269
264 /** Connection established, cleared on umount, connection 270 /** Connection established, cleared on umount, connection
265 abort and device release */ 271 abort and device release */
266 unsigned connected; 272 unsigned connected;
@@ -471,11 +477,11 @@ void request_send_noreply(struct fuse_conn *fc, struct fuse_req *req);
471void request_send_background(struct fuse_conn *fc, struct fuse_req *req); 477void request_send_background(struct fuse_conn *fc, struct fuse_req *req);
472 478
473/** 479/**
474 * Remove request from the the background list 480 * Release inodes and file associated with background request
475 */ 481 */
476void fuse_remove_background(struct fuse_conn *fc, struct fuse_req *req); 482void fuse_release_background(struct fuse_conn *fc, struct fuse_req *req);
477 483
478/** Abort all requests */ 484/* Abort all requests */
479void fuse_abort_conn(struct fuse_conn *fc); 485void fuse_abort_conn(struct fuse_conn *fc);
480 486
481/** 487/**
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 43a6fc0db8a7..7627022446b2 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -204,26 +204,17 @@ static void fuse_put_super(struct super_block *sb)
204{ 204{
205 struct fuse_conn *fc = get_fuse_conn_super(sb); 205 struct fuse_conn *fc = get_fuse_conn_super(sb);
206 206
207 down_write(&fc->sbput_sem);
208 while (!list_empty(&fc->background))
209 fuse_release_background(fc,
210 list_entry(fc->background.next,
211 struct fuse_req, bg_entry));
212
207 spin_lock(&fc->lock); 213 spin_lock(&fc->lock);
214 fc->mounted = 0;
208 fc->connected = 0; 215 fc->connected = 0;
209 while (!list_empty(&fc->background)) {
210 struct fuse_req *req = list_entry(fc->background.next,
211 struct fuse_req, bg_entry);
212 struct inode *inode = req->inode;
213 struct inode *inode2 = req->inode2;
214
215 /* File would hold a reference to vfsmount */
216 BUG_ON(req->file);
217 req->inode = NULL;
218 req->inode2 = NULL;
219 fuse_remove_background(fc, req);
220
221 spin_unlock(&fc->lock);
222 iput(inode);
223 iput(inode2);
224 spin_lock(&fc->lock);
225 }
226 spin_unlock(&fc->lock); 216 spin_unlock(&fc->lock);
217 up_write(&fc->sbput_sem);
227 /* Flush all readers on this fs */ 218 /* Flush all readers on this fs */
228 kill_fasync(&fc->fasync, SIGIO, POLL_IN); 219 kill_fasync(&fc->fasync, SIGIO, POLL_IN);
229 wake_up_all(&fc->waitq); 220 wake_up_all(&fc->waitq);
@@ -395,6 +386,7 @@ static struct fuse_conn *new_conn(void)
395 INIT_LIST_HEAD(&fc->processing); 386 INIT_LIST_HEAD(&fc->processing);
396 INIT_LIST_HEAD(&fc->io); 387 INIT_LIST_HEAD(&fc->io);
397 INIT_LIST_HEAD(&fc->background); 388 INIT_LIST_HEAD(&fc->background);
389 init_rwsem(&fc->sbput_sem);
398 kobj_set_kset_s(fc, connections_subsys); 390 kobj_set_kset_s(fc, connections_subsys);
399 kobject_init(&fc->kobj); 391 kobject_init(&fc->kobj);
400 atomic_set(&fc->num_waiting, 0); 392 atomic_set(&fc->num_waiting, 0);
@@ -508,11 +500,6 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
508 if (file->f_op != &fuse_dev_operations) 500 if (file->f_op != &fuse_dev_operations)
509 return -EINVAL; 501 return -EINVAL;
510 502
511 /* Setting file->private_data can't race with other mount()
512 instances, since BKL is held for ->get_sb() */
513 if (file->private_data)
514 return -EINVAL;
515
516 fc = new_conn(); 503 fc = new_conn();
517 if (!fc) 504 if (!fc)
518 return -ENOMEM; 505 return -ENOMEM;
@@ -548,7 +535,14 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
548 if (err) 535 if (err)
549 goto err_free_req; 536 goto err_free_req;
550 537
538 /* Setting file->private_data can't race with other mount()
539 instances, since BKL is held for ->get_sb() */
540 err = -EINVAL;
541 if (file->private_data)
542 goto err_kobject_del;
543
551 sb->s_root = root_dentry; 544 sb->s_root = root_dentry;
545 fc->mounted = 1;
552 fc->connected = 1; 546 fc->connected = 1;
553 kobject_get(&fc->kobj); 547 kobject_get(&fc->kobj);
554 file->private_data = fc; 548 file->private_data = fc;
@@ -563,6 +557,8 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent)
563 557
564 return 0; 558 return 0;
565 559
560 err_kobject_del:
561 kobject_del(&fc->kobj);
566 err_free_req: 562 err_free_req:
567 fuse_request_free(init_req); 563 fuse_request_free(init_req);
568 err_put_root: 564 err_put_root:
diff --git a/fs/pipe.c b/fs/pipe.c
index 7fefb10db8d9..5acd8954aaa0 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -55,7 +55,8 @@ void pipe_wait(struct pipe_inode_info *pipe)
55} 55}
56 56
57static int 57static int
58pipe_iov_copy_from_user(void *to, struct iovec *iov, unsigned long len) 58pipe_iov_copy_from_user(void *to, struct iovec *iov, unsigned long len,
59 int atomic)
59{ 60{
60 unsigned long copy; 61 unsigned long copy;
61 62
@@ -64,8 +65,13 @@ pipe_iov_copy_from_user(void *to, struct iovec *iov, unsigned long len)
64 iov++; 65 iov++;
65 copy = min_t(unsigned long, len, iov->iov_len); 66 copy = min_t(unsigned long, len, iov->iov_len);
66 67
67 if (copy_from_user(to, iov->iov_base, copy)) 68 if (atomic) {
68 return -EFAULT; 69 if (__copy_from_user_inatomic(to, iov->iov_base, copy))
70 return -EFAULT;
71 } else {
72 if (copy_from_user(to, iov->iov_base, copy))
73 return -EFAULT;
74 }
69 to += copy; 75 to += copy;
70 len -= copy; 76 len -= copy;
71 iov->iov_base += copy; 77 iov->iov_base += copy;
@@ -75,7 +81,8 @@ pipe_iov_copy_from_user(void *to, struct iovec *iov, unsigned long len)
75} 81}
76 82
77static int 83static int
78pipe_iov_copy_to_user(struct iovec *iov, const void *from, unsigned long len) 84pipe_iov_copy_to_user(struct iovec *iov, const void *from, unsigned long len,
85 int atomic)
79{ 86{
80 unsigned long copy; 87 unsigned long copy;
81 88
@@ -84,8 +91,13 @@ pipe_iov_copy_to_user(struct iovec *iov, const void *from, unsigned long len)
84 iov++; 91 iov++;
85 copy = min_t(unsigned long, len, iov->iov_len); 92 copy = min_t(unsigned long, len, iov->iov_len);
86 93
87 if (copy_to_user(iov->iov_base, from, copy)) 94 if (atomic) {
88 return -EFAULT; 95 if (__copy_to_user_inatomic(iov->iov_base, from, copy))
96 return -EFAULT;
97 } else {
98 if (copy_to_user(iov->iov_base, from, copy))
99 return -EFAULT;
100 }
89 from += copy; 101 from += copy;
90 len -= copy; 102 len -= copy;
91 iov->iov_base += copy; 103 iov->iov_base += copy;
@@ -94,13 +106,52 @@ pipe_iov_copy_to_user(struct iovec *iov, const void *from, unsigned long len)
94 return 0; 106 return 0;
95} 107}
96 108
109/*
110 * Attempt to pre-fault in the user memory, so we can use atomic copies.
111 * Returns the number of bytes not faulted in.
112 */
113static int iov_fault_in_pages_write(struct iovec *iov, unsigned long len)
114{
115 while (!iov->iov_len)
116 iov++;
117
118 while (len > 0) {
119 unsigned long this_len;
120
121 this_len = min_t(unsigned long, len, iov->iov_len);
122 if (fault_in_pages_writeable(iov->iov_base, this_len))
123 break;
124
125 len -= this_len;
126 iov++;
127 }
128
129 return len;
130}
131
132/*
133 * Pre-fault in the user memory, so we can use atomic copies.
134 */
135static void iov_fault_in_pages_read(struct iovec *iov, unsigned long len)
136{
137 while (!iov->iov_len)
138 iov++;
139
140 while (len > 0) {
141 unsigned long this_len;
142
143 this_len = min_t(unsigned long, len, iov->iov_len);
144 fault_in_pages_readable(iov->iov_base, this_len);
145 len -= this_len;
146 iov++;
147 }
148}
149
97static void anon_pipe_buf_release(struct pipe_inode_info *pipe, 150static void anon_pipe_buf_release(struct pipe_inode_info *pipe,
98 struct pipe_buffer *buf) 151 struct pipe_buffer *buf)
99{ 152{
100 struct page *page = buf->page; 153 struct page *page = buf->page;
101 154
102 buf->flags &= ~PIPE_BUF_FLAG_STOLEN;
103
104 /* 155 /*
105 * If nobody else uses this page, and we don't already have a 156 * If nobody else uses this page, and we don't already have a
106 * temporary page, let's keep track of it as a one-deep 157 * temporary page, let's keep track of it as a one-deep
@@ -112,38 +163,58 @@ static void anon_pipe_buf_release(struct pipe_inode_info *pipe,
112 page_cache_release(page); 163 page_cache_release(page);
113} 164}
114 165
115static void * anon_pipe_buf_map(struct file *file, struct pipe_inode_info *pipe, 166void *generic_pipe_buf_map(struct pipe_inode_info *pipe,
116 struct pipe_buffer *buf) 167 struct pipe_buffer *buf, int atomic)
117{ 168{
169 if (atomic) {
170 buf->flags |= PIPE_BUF_FLAG_ATOMIC;
171 return kmap_atomic(buf->page, KM_USER0);
172 }
173
118 return kmap(buf->page); 174 return kmap(buf->page);
119} 175}
120 176
121static void anon_pipe_buf_unmap(struct pipe_inode_info *pipe, 177void generic_pipe_buf_unmap(struct pipe_inode_info *pipe,
122 struct pipe_buffer *buf) 178 struct pipe_buffer *buf, void *map_data)
123{ 179{
124 kunmap(buf->page); 180 if (buf->flags & PIPE_BUF_FLAG_ATOMIC) {
181 buf->flags &= ~PIPE_BUF_FLAG_ATOMIC;
182 kunmap_atomic(map_data, KM_USER0);
183 } else
184 kunmap(buf->page);
125} 185}
126 186
127static int anon_pipe_buf_steal(struct pipe_inode_info *pipe, 187int generic_pipe_buf_steal(struct pipe_inode_info *pipe,
128 struct pipe_buffer *buf) 188 struct pipe_buffer *buf)
129{ 189{
130 buf->flags |= PIPE_BUF_FLAG_STOLEN; 190 struct page *page = buf->page;
131 return 0; 191
192 if (page_count(page) == 1) {
193 lock_page(page);
194 return 0;
195 }
196
197 return 1;
132} 198}
133 199
134static void anon_pipe_buf_get(struct pipe_inode_info *info, 200void generic_pipe_buf_get(struct pipe_inode_info *info, struct pipe_buffer *buf)
135 struct pipe_buffer *buf)
136{ 201{
137 page_cache_get(buf->page); 202 page_cache_get(buf->page);
138} 203}
139 204
205int generic_pipe_buf_pin(struct pipe_inode_info *info, struct pipe_buffer *buf)
206{
207 return 0;
208}
209
140static struct pipe_buf_operations anon_pipe_buf_ops = { 210static struct pipe_buf_operations anon_pipe_buf_ops = {
141 .can_merge = 1, 211 .can_merge = 1,
142 .map = anon_pipe_buf_map, 212 .map = generic_pipe_buf_map,
143 .unmap = anon_pipe_buf_unmap, 213 .unmap = generic_pipe_buf_unmap,
214 .pin = generic_pipe_buf_pin,
144 .release = anon_pipe_buf_release, 215 .release = anon_pipe_buf_release,
145 .steal = anon_pipe_buf_steal, 216 .steal = generic_pipe_buf_steal,
146 .get = anon_pipe_buf_get, 217 .get = generic_pipe_buf_get,
147}; 218};
148 219
149static ssize_t 220static ssize_t
@@ -174,22 +245,33 @@ pipe_readv(struct file *filp, const struct iovec *_iov,
174 struct pipe_buf_operations *ops = buf->ops; 245 struct pipe_buf_operations *ops = buf->ops;
175 void *addr; 246 void *addr;
176 size_t chars = buf->len; 247 size_t chars = buf->len;
177 int error; 248 int error, atomic;
178 249
179 if (chars > total_len) 250 if (chars > total_len)
180 chars = total_len; 251 chars = total_len;
181 252
182 addr = ops->map(filp, pipe, buf); 253 error = ops->pin(pipe, buf);
183 if (IS_ERR(addr)) { 254 if (error) {
184 if (!ret) 255 if (!ret)
185 ret = PTR_ERR(addr); 256 error = ret;
186 break; 257 break;
187 } 258 }
188 error = pipe_iov_copy_to_user(iov, addr + buf->offset, chars); 259
189 ops->unmap(pipe, buf); 260 atomic = !iov_fault_in_pages_write(iov, chars);
261redo:
262 addr = ops->map(pipe, buf, atomic);
263 error = pipe_iov_copy_to_user(iov, addr + buf->offset, chars, atomic);
264 ops->unmap(pipe, buf, addr);
190 if (unlikely(error)) { 265 if (unlikely(error)) {
266 /*
267 * Just retry with the slow path if we failed.
268 */
269 if (atomic) {
270 atomic = 0;
271 goto redo;
272 }
191 if (!ret) 273 if (!ret)
192 ret = -EFAULT; 274 ret = error;
193 break; 275 break;
194 } 276 }
195 ret += chars; 277 ret += chars;
@@ -293,21 +375,28 @@ pipe_writev(struct file *filp, const struct iovec *_iov,
293 int offset = buf->offset + buf->len; 375 int offset = buf->offset + buf->len;
294 376
295 if (ops->can_merge && offset + chars <= PAGE_SIZE) { 377 if (ops->can_merge && offset + chars <= PAGE_SIZE) {
378 int error, atomic = 1;
296 void *addr; 379 void *addr;
297 int error;
298 380
299 addr = ops->map(filp, pipe, buf); 381 error = ops->pin(pipe, buf);
300 if (IS_ERR(addr)) { 382 if (error)
301 error = PTR_ERR(addr);
302 goto out; 383 goto out;
303 } 384
385 iov_fault_in_pages_read(iov, chars);
386redo1:
387 addr = ops->map(pipe, buf, atomic);
304 error = pipe_iov_copy_from_user(offset + addr, iov, 388 error = pipe_iov_copy_from_user(offset + addr, iov,
305 chars); 389 chars, atomic);
306 ops->unmap(pipe, buf); 390 ops->unmap(pipe, buf, addr);
307 ret = error; 391 ret = error;
308 do_wakeup = 1; 392 do_wakeup = 1;
309 if (error) 393 if (error) {
394 if (atomic) {
395 atomic = 0;
396 goto redo1;
397 }
310 goto out; 398 goto out;
399 }
311 buf->len += chars; 400 buf->len += chars;
312 total_len -= chars; 401 total_len -= chars;
313 ret = chars; 402 ret = chars;
@@ -330,7 +419,8 @@ pipe_writev(struct file *filp, const struct iovec *_iov,
330 int newbuf = (pipe->curbuf + bufs) & (PIPE_BUFFERS-1); 419 int newbuf = (pipe->curbuf + bufs) & (PIPE_BUFFERS-1);
331 struct pipe_buffer *buf = pipe->bufs + newbuf; 420 struct pipe_buffer *buf = pipe->bufs + newbuf;
332 struct page *page = pipe->tmp_page; 421 struct page *page = pipe->tmp_page;
333 int error; 422 char *src;
423 int error, atomic = 1;
334 424
335 if (!page) { 425 if (!page) {
336 page = alloc_page(GFP_HIGHUSER); 426 page = alloc_page(GFP_HIGHUSER);
@@ -350,11 +440,27 @@ pipe_writev(struct file *filp, const struct iovec *_iov,
350 if (chars > total_len) 440 if (chars > total_len)
351 chars = total_len; 441 chars = total_len;
352 442
353 error = pipe_iov_copy_from_user(kmap(page), iov, chars); 443 iov_fault_in_pages_read(iov, chars);
354 kunmap(page); 444redo2:
445 if (atomic)
446 src = kmap_atomic(page, KM_USER0);
447 else
448 src = kmap(page);
449
450 error = pipe_iov_copy_from_user(src, iov, chars,
451 atomic);
452 if (atomic)
453 kunmap_atomic(src, KM_USER0);
454 else
455 kunmap(page);
456
355 if (unlikely(error)) { 457 if (unlikely(error)) {
458 if (atomic) {
459 atomic = 0;
460 goto redo2;
461 }
356 if (!ret) 462 if (!ret)
357 ret = -EFAULT; 463 ret = error;
358 break; 464 break;
359 } 465 }
360 ret += chars; 466 ret += chars;
diff --git a/fs/splice.c b/fs/splice.c
index 0559e7577a04..a285fd746dc0 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -27,15 +27,22 @@
27#include <linux/buffer_head.h> 27#include <linux/buffer_head.h>
28#include <linux/module.h> 28#include <linux/module.h>
29#include <linux/syscalls.h> 29#include <linux/syscalls.h>
30#include <linux/uio.h>
31
32struct partial_page {
33 unsigned int offset;
34 unsigned int len;
35};
30 36
31/* 37/*
32 * Passed to the actors 38 * Passed to splice_to_pipe
33 */ 39 */
34struct splice_desc { 40struct splice_pipe_desc {
35 unsigned int len, total_len; /* current and remaining length */ 41 struct page **pages; /* page map */
42 struct partial_page *partial; /* pages[] may not be contig */
43 int nr_pages; /* number of pages in map */
36 unsigned int flags; /* splice flags */ 44 unsigned int flags; /* splice flags */
37 struct file *file; /* file to read/write */ 45 struct pipe_buf_operations *ops;/* ops associated with output pipe */
38 loff_t pos; /* file position */
39}; 46};
40 47
41/* 48/*
@@ -44,7 +51,7 @@ struct splice_desc {
44 * addition of remove_mapping(). If success is returned, the caller may 51 * addition of remove_mapping(). If success is returned, the caller may
45 * attempt to reuse this page for another destination. 52 * attempt to reuse this page for another destination.
46 */ 53 */
47static int page_cache_pipe_buf_steal(struct pipe_inode_info *info, 54static int page_cache_pipe_buf_steal(struct pipe_inode_info *pipe,
48 struct pipe_buffer *buf) 55 struct pipe_buffer *buf)
49{ 56{
50 struct page *page = buf->page; 57 struct page *page = buf->page;
@@ -71,21 +78,19 @@ static int page_cache_pipe_buf_steal(struct pipe_inode_info *info,
71 return 1; 78 return 1;
72 } 79 }
73 80
74 buf->flags |= PIPE_BUF_FLAG_STOLEN | PIPE_BUF_FLAG_LRU; 81 buf->flags |= PIPE_BUF_FLAG_LRU;
75 return 0; 82 return 0;
76} 83}
77 84
78static void page_cache_pipe_buf_release(struct pipe_inode_info *info, 85static void page_cache_pipe_buf_release(struct pipe_inode_info *pipe,
79 struct pipe_buffer *buf) 86 struct pipe_buffer *buf)
80{ 87{
81 page_cache_release(buf->page); 88 page_cache_release(buf->page);
82 buf->page = NULL; 89 buf->flags &= ~PIPE_BUF_FLAG_LRU;
83 buf->flags &= ~(PIPE_BUF_FLAG_STOLEN | PIPE_BUF_FLAG_LRU);
84} 90}
85 91
86static void *page_cache_pipe_buf_map(struct file *file, 92static int page_cache_pipe_buf_pin(struct pipe_inode_info *pipe,
87 struct pipe_inode_info *info, 93 struct pipe_buffer *buf)
88 struct pipe_buffer *buf)
89{ 94{
90 struct page *page = buf->page; 95 struct page *page = buf->page;
91 int err; 96 int err;
@@ -111,51 +116,59 @@ static void *page_cache_pipe_buf_map(struct file *file,
111 } 116 }
112 117
113 /* 118 /*
114 * Page is ok afterall, fall through to mapping. 119 * Page is ok afterall, we are done.
115 */ 120 */
116 unlock_page(page); 121 unlock_page(page);
117 } 122 }
118 123
119 return kmap(page); 124 return 0;
120error: 125error:
121 unlock_page(page); 126 unlock_page(page);
122 return ERR_PTR(err); 127 return err;
123} 128}
124 129
125static void page_cache_pipe_buf_unmap(struct pipe_inode_info *info, 130static struct pipe_buf_operations page_cache_pipe_buf_ops = {
126 struct pipe_buffer *buf) 131 .can_merge = 0,
127{ 132 .map = generic_pipe_buf_map,
128 kunmap(buf->page); 133 .unmap = generic_pipe_buf_unmap,
129} 134 .pin = page_cache_pipe_buf_pin,
135 .release = page_cache_pipe_buf_release,
136 .steal = page_cache_pipe_buf_steal,
137 .get = generic_pipe_buf_get,
138};
130 139
131static void page_cache_pipe_buf_get(struct pipe_inode_info *info, 140static int user_page_pipe_buf_steal(struct pipe_inode_info *pipe,
132 struct pipe_buffer *buf) 141 struct pipe_buffer *buf)
133{ 142{
134 page_cache_get(buf->page); 143 if (!(buf->flags & PIPE_BUF_FLAG_GIFT))
144 return 1;
145
146 buf->flags |= PIPE_BUF_FLAG_LRU;
147 return generic_pipe_buf_steal(pipe, buf);
135} 148}
136 149
137static struct pipe_buf_operations page_cache_pipe_buf_ops = { 150static struct pipe_buf_operations user_page_pipe_buf_ops = {
138 .can_merge = 0, 151 .can_merge = 0,
139 .map = page_cache_pipe_buf_map, 152 .map = generic_pipe_buf_map,
140 .unmap = page_cache_pipe_buf_unmap, 153 .unmap = generic_pipe_buf_unmap,
154 .pin = generic_pipe_buf_pin,
141 .release = page_cache_pipe_buf_release, 155 .release = page_cache_pipe_buf_release,
142 .steal = page_cache_pipe_buf_steal, 156 .steal = user_page_pipe_buf_steal,
143 .get = page_cache_pipe_buf_get, 157 .get = generic_pipe_buf_get,
144}; 158};
145 159
146/* 160/*
147 * Pipe output worker. This sets up our pipe format with the page cache 161 * Pipe output worker. This sets up our pipe format with the page cache
148 * pipe buffer operations. Otherwise very similar to the regular pipe_writev(). 162 * pipe buffer operations. Otherwise very similar to the regular pipe_writev().
149 */ 163 */
150static ssize_t move_to_pipe(struct pipe_inode_info *pipe, struct page **pages, 164static ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
151 int nr_pages, unsigned long len, 165 struct splice_pipe_desc *spd)
152 unsigned int offset, unsigned int flags)
153{ 166{
154 int ret, do_wakeup, i; 167 int ret, do_wakeup, page_nr;
155 168
156 ret = 0; 169 ret = 0;
157 do_wakeup = 0; 170 do_wakeup = 0;
158 i = 0; 171 page_nr = 0;
159 172
160 if (pipe->inode) 173 if (pipe->inode)
161 mutex_lock(&pipe->inode->i_mutex); 174 mutex_lock(&pipe->inode->i_mutex);
@@ -171,27 +184,22 @@ static ssize_t move_to_pipe(struct pipe_inode_info *pipe, struct page **pages,
171 if (pipe->nrbufs < PIPE_BUFFERS) { 184 if (pipe->nrbufs < PIPE_BUFFERS) {
172 int newbuf = (pipe->curbuf + pipe->nrbufs) & (PIPE_BUFFERS - 1); 185 int newbuf = (pipe->curbuf + pipe->nrbufs) & (PIPE_BUFFERS - 1);
173 struct pipe_buffer *buf = pipe->bufs + newbuf; 186 struct pipe_buffer *buf = pipe->bufs + newbuf;
174 struct page *page = pages[i++];
175 unsigned long this_len;
176 187
177 this_len = PAGE_CACHE_SIZE - offset; 188 buf->page = spd->pages[page_nr];
178 if (this_len > len) 189 buf->offset = spd->partial[page_nr].offset;
179 this_len = len; 190 buf->len = spd->partial[page_nr].len;
191 buf->ops = spd->ops;
192 if (spd->flags & SPLICE_F_GIFT)
193 buf->flags |= PIPE_BUF_FLAG_GIFT;
180 194
181 buf->page = page;
182 buf->offset = offset;
183 buf->len = this_len;
184 buf->ops = &page_cache_pipe_buf_ops;
185 pipe->nrbufs++; 195 pipe->nrbufs++;
196 page_nr++;
197 ret += buf->len;
198
186 if (pipe->inode) 199 if (pipe->inode)
187 do_wakeup = 1; 200 do_wakeup = 1;
188 201
189 ret += this_len; 202 if (!--spd->nr_pages)
190 len -= this_len;
191 offset = 0;
192 if (!--nr_pages)
193 break;
194 if (!len)
195 break; 203 break;
196 if (pipe->nrbufs < PIPE_BUFFERS) 204 if (pipe->nrbufs < PIPE_BUFFERS)
197 continue; 205 continue;
@@ -199,7 +207,7 @@ static ssize_t move_to_pipe(struct pipe_inode_info *pipe, struct page **pages,
199 break; 207 break;
200 } 208 }
201 209
202 if (flags & SPLICE_F_NONBLOCK) { 210 if (spd->flags & SPLICE_F_NONBLOCK) {
203 if (!ret) 211 if (!ret)
204 ret = -EAGAIN; 212 ret = -EAGAIN;
205 break; 213 break;
@@ -234,8 +242,8 @@ static ssize_t move_to_pipe(struct pipe_inode_info *pipe, struct page **pages,
234 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); 242 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
235 } 243 }
236 244
237 while (i < nr_pages) 245 while (page_nr < spd->nr_pages)
238 page_cache_release(pages[i++]); 246 page_cache_release(spd->pages[page_nr++]);
239 247
240 return ret; 248 return ret;
241} 249}
@@ -246,17 +254,24 @@ __generic_file_splice_read(struct file *in, loff_t *ppos,
246 unsigned int flags) 254 unsigned int flags)
247{ 255{
248 struct address_space *mapping = in->f_mapping; 256 struct address_space *mapping = in->f_mapping;
249 unsigned int loff, offset, nr_pages; 257 unsigned int loff, nr_pages;
250 struct page *pages[PIPE_BUFFERS]; 258 struct page *pages[PIPE_BUFFERS];
259 struct partial_page partial[PIPE_BUFFERS];
251 struct page *page; 260 struct page *page;
252 pgoff_t index, end_index; 261 pgoff_t index, end_index;
253 loff_t isize; 262 loff_t isize;
254 size_t bytes; 263 size_t total_len;
255 int i, error; 264 int error, page_nr;
265 struct splice_pipe_desc spd = {
266 .pages = pages,
267 .partial = partial,
268 .flags = flags,
269 .ops = &page_cache_pipe_buf_ops,
270 };
256 271
257 index = *ppos >> PAGE_CACHE_SHIFT; 272 index = *ppos >> PAGE_CACHE_SHIFT;
258 loff = offset = *ppos & ~PAGE_CACHE_MASK; 273 loff = *ppos & ~PAGE_CACHE_MASK;
259 nr_pages = (len + offset + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; 274 nr_pages = (len + loff + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
260 275
261 if (nr_pages > PIPE_BUFFERS) 276 if (nr_pages > PIPE_BUFFERS)
262 nr_pages = PIPE_BUFFERS; 277 nr_pages = PIPE_BUFFERS;
@@ -266,47 +281,83 @@ __generic_file_splice_read(struct file *in, loff_t *ppos,
266 * read-ahead if this is a non-zero offset (we are likely doing small 281 * read-ahead if this is a non-zero offset (we are likely doing small
267 * chunk splice and the page is already there) for a single page. 282 * chunk splice and the page is already there) for a single page.
268 */ 283 */
269 if (!offset || nr_pages > 1) 284 if (!loff || nr_pages > 1)
270 do_page_cache_readahead(mapping, in, index, nr_pages); 285 page_cache_readahead(mapping, &in->f_ra, in, index, nr_pages);
271 286
272 /* 287 /*
273 * Now fill in the holes: 288 * Now fill in the holes:
274 */ 289 */
275 error = 0; 290 error = 0;
276 bytes = 0; 291 total_len = 0;
277 for (i = 0; i < nr_pages; i++, index++) {
278 unsigned int this_len;
279 292
280 if (!len) 293 /*
281 break; 294 * Lookup the (hopefully) full range of pages we need.
295 */
296 spd.nr_pages = find_get_pages_contig(mapping, index, nr_pages, pages);
282 297
298 /*
299 * If find_get_pages_contig() returned fewer pages than we needed,
300 * allocate the rest.
301 */
302 index += spd.nr_pages;
303 while (spd.nr_pages < nr_pages) {
283 /* 304 /*
284 * this_len is the max we'll use from this page 305 * Page could be there, find_get_pages_contig() breaks on
285 */ 306 * the first hole.
286 this_len = min(len, PAGE_CACHE_SIZE - loff);
287find_page:
288 /*
289 * lookup the page for this index
290 */ 307 */
291 page = find_get_page(mapping, index); 308 page = find_get_page(mapping, index);
292 if (!page) { 309 if (!page) {
293 /* 310 /*
294 * page didn't exist, allocate one 311 * Make sure the read-ahead engine is notified
312 * about this failure.
313 */
314 handle_ra_miss(mapping, &in->f_ra, index);
315
316 /*
317 * page didn't exist, allocate one.
295 */ 318 */
296 page = page_cache_alloc_cold(mapping); 319 page = page_cache_alloc_cold(mapping);
297 if (!page) 320 if (!page)
298 break; 321 break;
299 322
300 error = add_to_page_cache_lru(page, mapping, index, 323 error = add_to_page_cache_lru(page, mapping, index,
301 mapping_gfp_mask(mapping)); 324 mapping_gfp_mask(mapping));
302 if (unlikely(error)) { 325 if (unlikely(error)) {
303 page_cache_release(page); 326 page_cache_release(page);
327 if (error == -EEXIST)
328 continue;
304 break; 329 break;
305 } 330 }
306 331 /*
307 goto readpage; 332 * add_to_page_cache() locks the page, unlock it
333 * to avoid convoluting the logic below even more.
334 */
335 unlock_page(page);
308 } 336 }
309 337
338 pages[spd.nr_pages++] = page;
339 index++;
340 }
341
342 /*
343 * Now loop over the map and see if we need to start IO on any
344 * pages, fill in the partial map, etc.
345 */
346 index = *ppos >> PAGE_CACHE_SHIFT;
347 nr_pages = spd.nr_pages;
348 spd.nr_pages = 0;
349 for (page_nr = 0; page_nr < nr_pages; page_nr++) {
350 unsigned int this_len;
351
352 if (!len)
353 break;
354
355 /*
356 * this_len is the max we'll use from this page
357 */
358 this_len = min_t(unsigned long, len, PAGE_CACHE_SIZE - loff);
359 page = pages[page_nr];
360
310 /* 361 /*
311 * If the page isn't uptodate, we may need to start io on it 362 * If the page isn't uptodate, we may need to start io on it
312 */ 363 */
@@ -327,7 +378,6 @@ find_page:
327 */ 378 */
328 if (!page->mapping) { 379 if (!page->mapping) {
329 unlock_page(page); 380 unlock_page(page);
330 page_cache_release(page);
331 break; 381 break;
332 } 382 }
333 /* 383 /*
@@ -338,16 +388,20 @@ find_page:
338 goto fill_it; 388 goto fill_it;
339 } 389 }
340 390
341readpage:
342 /* 391 /*
343 * need to read in the page 392 * need to read in the page
344 */ 393 */
345 error = mapping->a_ops->readpage(in, page); 394 error = mapping->a_ops->readpage(in, page);
346
347 if (unlikely(error)) { 395 if (unlikely(error)) {
348 page_cache_release(page); 396 /*
397 * We really should re-lookup the page here,
398 * but it complicates things a lot. Instead
399 * lets just do what we already stored, and
400 * we'll get it the next time we are called.
401 */
349 if (error == AOP_TRUNCATED_PAGE) 402 if (error == AOP_TRUNCATED_PAGE)
350 goto find_page; 403 error = 0;
404
351 break; 405 break;
352 } 406 }
353 407
@@ -356,10 +410,8 @@ readpage:
356 */ 410 */
357 isize = i_size_read(mapping->host); 411 isize = i_size_read(mapping->host);
358 end_index = (isize - 1) >> PAGE_CACHE_SHIFT; 412 end_index = (isize - 1) >> PAGE_CACHE_SHIFT;
359 if (unlikely(!isize || index > end_index)) { 413 if (unlikely(!isize || index > end_index))
360 page_cache_release(page);
361 break; 414 break;
362 }
363 415
364 /* 416 /*
365 * if this is the last page, see if we need to shrink 417 * if this is the last page, see if we need to shrink
@@ -367,26 +419,35 @@ readpage:
367 */ 419 */
368 if (end_index == index) { 420 if (end_index == index) {
369 loff = PAGE_CACHE_SIZE - (isize & ~PAGE_CACHE_MASK); 421 loff = PAGE_CACHE_SIZE - (isize & ~PAGE_CACHE_MASK);
370 if (bytes + loff > isize) { 422 if (total_len + loff > isize)
371 page_cache_release(page);
372 break; 423 break;
373 }
374 /* 424 /*
375 * force quit after adding this page 425 * force quit after adding this page
376 */ 426 */
377 nr_pages = i; 427 len = this_len;
378 this_len = min(this_len, loff); 428 this_len = min(this_len, loff);
429 loff = 0;
379 } 430 }
380 } 431 }
381fill_it: 432fill_it:
382 pages[i] = page; 433 partial[page_nr].offset = loff;
383 bytes += this_len; 434 partial[page_nr].len = this_len;
384 len -= this_len; 435 len -= this_len;
436 total_len += this_len;
385 loff = 0; 437 loff = 0;
438 spd.nr_pages++;
439 index++;
386 } 440 }
387 441
388 if (i) 442 /*
389 return move_to_pipe(pipe, pages, i, bytes, offset, flags); 443 * Release any pages at the end, if we quit early. 'i' is how far
444 * we got, 'nr_pages' is how many pages are in the map.
445 */
446 while (page_nr < nr_pages)
447 page_cache_release(pages[page_nr++]);
448
449 if (spd.nr_pages)
450 return splice_to_pipe(pipe, &spd);
390 451
391 return error; 452 return error;
392} 453}
@@ -439,38 +500,24 @@ EXPORT_SYMBOL(generic_file_splice_read);
439 500
440/* 501/*
441 * Send 'sd->len' bytes to socket from 'sd->file' at position 'sd->pos' 502 * Send 'sd->len' bytes to socket from 'sd->file' at position 'sd->pos'
442 * using sendpage(). 503 * using sendpage(). Return the number of bytes sent.
443 */ 504 */
444static int pipe_to_sendpage(struct pipe_inode_info *info, 505static int pipe_to_sendpage(struct pipe_inode_info *pipe,
445 struct pipe_buffer *buf, struct splice_desc *sd) 506 struct pipe_buffer *buf, struct splice_desc *sd)
446{ 507{
447 struct file *file = sd->file; 508 struct file *file = sd->file;
448 loff_t pos = sd->pos; 509 loff_t pos = sd->pos;
449 unsigned int offset; 510 int ret, more;
450 ssize_t ret;
451 void *ptr;
452 int more;
453 511
454 /* 512 ret = buf->ops->pin(pipe, buf);
455 * Sub-optimal, but we are limited by the pipe ->map. We don't 513 if (!ret) {
456 * need a kmap'ed buffer here, we just want to make sure we 514 more = (sd->flags & SPLICE_F_MORE) || sd->len < sd->total_len;
457 * have the page pinned if the pipe page originates from the
458 * page cache.
459 */
460 ptr = buf->ops->map(file, info, buf);
461 if (IS_ERR(ptr))
462 return PTR_ERR(ptr);
463
464 offset = pos & ~PAGE_CACHE_MASK;
465 more = (sd->flags & SPLICE_F_MORE) || sd->len < sd->total_len;
466 515
467 ret = file->f_op->sendpage(file, buf->page, offset, sd->len, &pos,more); 516 ret = file->f_op->sendpage(file, buf->page, buf->offset,
468 517 sd->len, &pos, more);
469 buf->ops->unmap(info, buf); 518 }
470 if (ret == sd->len)
471 return 0;
472 519
473 return -EIO; 520 return ret;
474} 521}
475 522
476/* 523/*
@@ -493,43 +540,51 @@ static int pipe_to_sendpage(struct pipe_inode_info *info,
493 * SPLICE_F_MOVE isn't set, or we cannot move the page, we simply create 540 * SPLICE_F_MOVE isn't set, or we cannot move the page, we simply create
494 * a new page in the output file page cache and fill/dirty that. 541 * a new page in the output file page cache and fill/dirty that.
495 */ 542 */
496static int pipe_to_file(struct pipe_inode_info *info, struct pipe_buffer *buf, 543static int pipe_to_file(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
497 struct splice_desc *sd) 544 struct splice_desc *sd)
498{ 545{
499 struct file *file = sd->file; 546 struct file *file = sd->file;
500 struct address_space *mapping = file->f_mapping; 547 struct address_space *mapping = file->f_mapping;
501 gfp_t gfp_mask = mapping_gfp_mask(mapping); 548 gfp_t gfp_mask = mapping_gfp_mask(mapping);
502 unsigned int offset; 549 unsigned int offset, this_len;
503 struct page *page; 550 struct page *page;
504 pgoff_t index; 551 pgoff_t index;
505 char *src;
506 int ret; 552 int ret;
507 553
508 /* 554 /*
509 * make sure the data in this buffer is uptodate 555 * make sure the data in this buffer is uptodate
510 */ 556 */
511 src = buf->ops->map(file, info, buf); 557 ret = buf->ops->pin(pipe, buf);
512 if (IS_ERR(src)) 558 if (unlikely(ret))
513 return PTR_ERR(src); 559 return ret;
514 560
515 index = sd->pos >> PAGE_CACHE_SHIFT; 561 index = sd->pos >> PAGE_CACHE_SHIFT;
516 offset = sd->pos & ~PAGE_CACHE_MASK; 562 offset = sd->pos & ~PAGE_CACHE_MASK;
517 563
564 this_len = sd->len;
565 if (this_len + offset > PAGE_CACHE_SIZE)
566 this_len = PAGE_CACHE_SIZE - offset;
567
518 /* 568 /*
519 * Reuse buf page, if SPLICE_F_MOVE is set. 569 * Reuse buf page, if SPLICE_F_MOVE is set and we are doing a full
570 * page.
520 */ 571 */
521 if (sd->flags & SPLICE_F_MOVE) { 572 if ((sd->flags & SPLICE_F_MOVE) && this_len == PAGE_CACHE_SIZE) {
522 /* 573 /*
523 * If steal succeeds, buf->page is now pruned from the vm 574 * If steal succeeds, buf->page is now pruned from the
524 * side (LRU and page cache) and we can reuse it. The page 575 * pagecache and we can reuse it. The page will also be
525 * will also be looked on successful return. 576 * locked on successful return.
526 */ 577 */
527 if (buf->ops->steal(info, buf)) 578 if (buf->ops->steal(pipe, buf))
528 goto find_page; 579 goto find_page;
529 580
530 page = buf->page; 581 page = buf->page;
531 if (add_to_page_cache(page, mapping, index, gfp_mask)) 582 if (add_to_page_cache(page, mapping, index, gfp_mask)) {
583 unlock_page(page);
532 goto find_page; 584 goto find_page;
585 }
586
587 page_cache_get(page);
533 588
534 if (!(buf->flags & PIPE_BUF_FLAG_LRU)) 589 if (!(buf->flags & PIPE_BUF_FLAG_LRU))
535 lru_cache_add(page); 590 lru_cache_add(page);
@@ -558,7 +613,7 @@ find_page:
558 * the full page. 613 * the full page.
559 */ 614 */
560 if (!PageUptodate(page)) { 615 if (!PageUptodate(page)) {
561 if (sd->len < PAGE_CACHE_SIZE) { 616 if (this_len < PAGE_CACHE_SIZE) {
562 ret = mapping->a_ops->readpage(file, page); 617 ret = mapping->a_ops->readpage(file, page);
563 if (unlikely(ret)) 618 if (unlikely(ret))
564 goto out; 619 goto out;
@@ -582,51 +637,67 @@ find_page:
582 } 637 }
583 } 638 }
584 639
585 ret = mapping->a_ops->prepare_write(file, page, 0, sd->len); 640 ret = mapping->a_ops->prepare_write(file, page, offset, offset+this_len);
586 if (ret == AOP_TRUNCATED_PAGE) { 641 if (unlikely(ret)) {
642 loff_t isize = i_size_read(mapping->host);
643
644 if (ret != AOP_TRUNCATED_PAGE)
645 unlock_page(page);
587 page_cache_release(page); 646 page_cache_release(page);
588 goto find_page; 647 if (ret == AOP_TRUNCATED_PAGE)
589 } else if (ret) 648 goto find_page;
649
650 /*
651 * prepare_write() may have instantiated a few blocks
652 * outside i_size. Trim these off again.
653 */
654 if (sd->pos + this_len > isize)
655 vmtruncate(mapping->host, isize);
656
590 goto out; 657 goto out;
658 }
591 659
592 if (!(buf->flags & PIPE_BUF_FLAG_STOLEN)) { 660 if (buf->page != page) {
593 char *dst = kmap_atomic(page, KM_USER0); 661 /*
662 * Careful, ->map() uses KM_USER0!
663 */
664 char *src = buf->ops->map(pipe, buf, 1);
665 char *dst = kmap_atomic(page, KM_USER1);
594 666
595 memcpy(dst + offset, src + buf->offset, sd->len); 667 memcpy(dst + offset, src + buf->offset, this_len);
596 flush_dcache_page(page); 668 flush_dcache_page(page);
597 kunmap_atomic(dst, KM_USER0); 669 kunmap_atomic(dst, KM_USER1);
670 buf->ops->unmap(pipe, buf, src);
598 } 671 }
599 672
600 ret = mapping->a_ops->commit_write(file, page, 0, sd->len); 673 ret = mapping->a_ops->commit_write(file, page, offset, offset+this_len);
601 if (ret == AOP_TRUNCATED_PAGE) { 674 if (!ret) {
675 /*
676 * Return the number of bytes written and mark page as
677 * accessed, we are now done!
678 */
679 ret = this_len;
680 mark_page_accessed(page);
681 balance_dirty_pages_ratelimited(mapping);
682 } else if (ret == AOP_TRUNCATED_PAGE) {
602 page_cache_release(page); 683 page_cache_release(page);
603 goto find_page; 684 goto find_page;
604 } else if (ret) 685 }
605 goto out;
606
607 mark_page_accessed(page);
608 balance_dirty_pages_ratelimited(mapping);
609out: 686out:
610 if (!(buf->flags & PIPE_BUF_FLAG_STOLEN)) 687 page_cache_release(page);
611 page_cache_release(page);
612
613 unlock_page(page); 688 unlock_page(page);
614out_nomem: 689out_nomem:
615 buf->ops->unmap(info, buf);
616 return ret; 690 return ret;
617} 691}
618 692
619typedef int (splice_actor)(struct pipe_inode_info *, struct pipe_buffer *,
620 struct splice_desc *);
621
622/* 693/*
623 * Pipe input worker. Most of this logic works like a regular pipe, the 694 * Pipe input worker. Most of this logic works like a regular pipe, the
624 * key here is the 'actor' worker passed in that actually moves the data 695 * key here is the 'actor' worker passed in that actually moves the data
625 * to the wanted destination. See pipe_to_file/pipe_to_sendpage above. 696 * to the wanted destination. See pipe_to_file/pipe_to_sendpage above.
626 */ 697 */
627static ssize_t move_from_pipe(struct pipe_inode_info *pipe, struct file *out, 698ssize_t splice_from_pipe(struct pipe_inode_info *pipe, struct file *out,
628 loff_t *ppos, size_t len, unsigned int flags, 699 loff_t *ppos, size_t len, unsigned int flags,
629 splice_actor *actor) 700 splice_actor *actor)
630{ 701{
631 int ret, do_wakeup, err; 702 int ret, do_wakeup, err;
632 struct splice_desc sd; 703 struct splice_desc sd;
@@ -652,16 +723,22 @@ static ssize_t move_from_pipe(struct pipe_inode_info *pipe, struct file *out,
652 sd.len = sd.total_len; 723 sd.len = sd.total_len;
653 724
654 err = actor(pipe, buf, &sd); 725 err = actor(pipe, buf, &sd);
655 if (err) { 726 if (err <= 0) {
656 if (!ret && err != -ENODATA) 727 if (!ret && err != -ENODATA)
657 ret = err; 728 ret = err;
658 729
659 break; 730 break;
660 } 731 }
661 732
662 ret += sd.len; 733 ret += err;
663 buf->offset += sd.len; 734 buf->offset += err;
664 buf->len -= sd.len; 735 buf->len -= err;
736
737 sd.len -= err;
738 sd.pos += err;
739 sd.total_len -= err;
740 if (sd.len)
741 continue;
665 742
666 if (!buf->len) { 743 if (!buf->len) {
667 buf->ops = NULL; 744 buf->ops = NULL;
@@ -672,8 +749,6 @@ static ssize_t move_from_pipe(struct pipe_inode_info *pipe, struct file *out,
672 do_wakeup = 1; 749 do_wakeup = 1;
673 } 750 }
674 751
675 sd.pos += sd.len;
676 sd.total_len -= sd.len;
677 if (!sd.total_len) 752 if (!sd.total_len)
678 break; 753 break;
679 } 754 }
@@ -741,7 +816,7 @@ generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
741 struct address_space *mapping = out->f_mapping; 816 struct address_space *mapping = out->f_mapping;
742 ssize_t ret; 817 ssize_t ret;
743 818
744 ret = move_from_pipe(pipe, out, ppos, len, flags, pipe_to_file); 819 ret = splice_from_pipe(pipe, out, ppos, len, flags, pipe_to_file);
745 if (ret > 0) { 820 if (ret > 0) {
746 struct inode *inode = mapping->host; 821 struct inode *inode = mapping->host;
747 822
@@ -783,7 +858,7 @@ EXPORT_SYMBOL(generic_file_splice_write);
783ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe, struct file *out, 858ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe, struct file *out,
784 loff_t *ppos, size_t len, unsigned int flags) 859 loff_t *ppos, size_t len, unsigned int flags)
785{ 860{
786 return move_from_pipe(pipe, out, ppos, len, flags, pipe_to_sendpage); 861 return splice_from_pipe(pipe, out, ppos, len, flags, pipe_to_sendpage);
787} 862}
788 863
789EXPORT_SYMBOL(generic_splice_sendpage); 864EXPORT_SYMBOL(generic_splice_sendpage);
@@ -870,7 +945,7 @@ long do_splice_direct(struct file *in, loff_t *ppos, struct file *out,
870 945
871 /* 946 /*
872 * We don't have an immediate reader, but we'll read the stuff 947 * We don't have an immediate reader, but we'll read the stuff
873 * out of the pipe right after the move_to_pipe(). So set 948 * out of the pipe right after the splice_to_pipe(). So set
874 * PIPE_READERS appropriately. 949 * PIPE_READERS appropriately.
875 */ 950 */
876 pipe->readers = 1; 951 pipe->readers = 1;
@@ -1010,6 +1085,184 @@ static long do_splice(struct file *in, loff_t __user *off_in,
1010 return -EINVAL; 1085 return -EINVAL;
1011} 1086}
1012 1087
1088/*
1089 * Map an iov into an array of pages and offset/length tupples. With the
1090 * partial_page structure, we can map several non-contiguous ranges into
1091 * our ones pages[] map instead of splitting that operation into pieces.
1092 * Could easily be exported as a generic helper for other users, in which
1093 * case one would probably want to add a 'max_nr_pages' parameter as well.
1094 */
1095static int get_iovec_page_array(const struct iovec __user *iov,
1096 unsigned int nr_vecs, struct page **pages,
1097 struct partial_page *partial, int aligned)
1098{
1099 int buffers = 0, error = 0;
1100
1101 /*
1102 * It's ok to take the mmap_sem for reading, even
1103 * across a "get_user()".
1104 */
1105 down_read(&current->mm->mmap_sem);
1106
1107 while (nr_vecs) {
1108 unsigned long off, npages;
1109 void __user *base;
1110 size_t len;
1111 int i;
1112
1113 /*
1114 * Get user address base and length for this iovec.
1115 */
1116 error = get_user(base, &iov->iov_base);
1117 if (unlikely(error))
1118 break;
1119 error = get_user(len, &iov->iov_len);
1120 if (unlikely(error))
1121 break;
1122
1123 /*
1124 * Sanity check this iovec. 0 read succeeds.
1125 */
1126 if (unlikely(!len))
1127 break;
1128 error = -EFAULT;
1129 if (unlikely(!base))
1130 break;
1131
1132 /*
1133 * Get this base offset and number of pages, then map
1134 * in the user pages.
1135 */
1136 off = (unsigned long) base & ~PAGE_MASK;
1137
1138 /*
1139 * If asked for alignment, the offset must be zero and the
1140 * length a multiple of the PAGE_SIZE.
1141 */
1142 error = -EINVAL;
1143 if (aligned && (off || len & ~PAGE_MASK))
1144 break;
1145
1146 npages = (off + len + PAGE_SIZE - 1) >> PAGE_SHIFT;
1147 if (npages > PIPE_BUFFERS - buffers)
1148 npages = PIPE_BUFFERS - buffers;
1149
1150 error = get_user_pages(current, current->mm,
1151 (unsigned long) base, npages, 0, 0,
1152 &pages[buffers], NULL);
1153
1154 if (unlikely(error <= 0))
1155 break;
1156
1157 /*
1158 * Fill this contiguous range into the partial page map.
1159 */
1160 for (i = 0; i < error; i++) {
1161 const int plen = min_t(size_t, len, PAGE_SIZE - off);
1162
1163 partial[buffers].offset = off;
1164 partial[buffers].len = plen;
1165
1166 off = 0;
1167 len -= plen;
1168 buffers++;
1169 }
1170
1171 /*
1172 * We didn't complete this iov, stop here since it probably
1173 * means we have to move some of this into a pipe to
1174 * be able to continue.
1175 */
1176 if (len)
1177 break;
1178
1179 /*
1180 * Don't continue if we mapped fewer pages than we asked for,
1181 * or if we mapped the max number of pages that we have
1182 * room for.
1183 */
1184 if (error < npages || buffers == PIPE_BUFFERS)
1185 break;
1186
1187 nr_vecs--;
1188 iov++;
1189 }
1190
1191 up_read(&current->mm->mmap_sem);
1192
1193 if (buffers)
1194 return buffers;
1195
1196 return error;
1197}
1198
1199/*
1200 * vmsplice splices a user address range into a pipe. It can be thought of
1201 * as splice-from-memory, where the regular splice is splice-from-file (or
1202 * to file). In both cases the output is a pipe, naturally.
1203 *
1204 * Note that vmsplice only supports splicing _from_ user memory to a pipe,
1205 * not the other way around. Splicing from user memory is a simple operation
1206 * that can be supported without any funky alignment restrictions or nasty
1207 * vm tricks. We simply map in the user memory and fill them into a pipe.
1208 * The reverse isn't quite as easy, though. There are two possible solutions
1209 * for that:
1210 *
1211 * - memcpy() the data internally, at which point we might as well just
1212 * do a regular read() on the buffer anyway.
1213 * - Lots of nasty vm tricks, that are neither fast nor flexible (it
1214 * has restriction limitations on both ends of the pipe).
1215 *
1216 * Alas, it isn't here.
1217 *
1218 */
1219static long do_vmsplice(struct file *file, const struct iovec __user *iov,
1220 unsigned long nr_segs, unsigned int flags)
1221{
1222 struct pipe_inode_info *pipe = file->f_dentry->d_inode->i_pipe;
1223 struct page *pages[PIPE_BUFFERS];
1224 struct partial_page partial[PIPE_BUFFERS];
1225 struct splice_pipe_desc spd = {
1226 .pages = pages,
1227 .partial = partial,
1228 .flags = flags,
1229 .ops = &user_page_pipe_buf_ops,
1230 };
1231
1232 if (unlikely(!pipe))
1233 return -EBADF;
1234 if (unlikely(nr_segs > UIO_MAXIOV))
1235 return -EINVAL;
1236 else if (unlikely(!nr_segs))
1237 return 0;
1238
1239 spd.nr_pages = get_iovec_page_array(iov, nr_segs, pages, partial,
1240 flags & SPLICE_F_GIFT);
1241 if (spd.nr_pages <= 0)
1242 return spd.nr_pages;
1243
1244 return splice_to_pipe(pipe, &spd);
1245}
1246
1247asmlinkage long sys_vmsplice(int fd, const struct iovec __user *iov,
1248 unsigned long nr_segs, unsigned int flags)
1249{
1250 struct file *file;
1251 long error;
1252 int fput;
1253
1254 error = -EBADF;
1255 file = fget_light(fd, &fput);
1256 if (file) {
1257 if (file->f_mode & FMODE_WRITE)
1258 error = do_vmsplice(file, iov, nr_segs, flags);
1259
1260 fput_light(file, fput);
1261 }
1262
1263 return error;
1264}
1265
1013asmlinkage long sys_splice(int fd_in, loff_t __user *off_in, 1266asmlinkage long sys_splice(int fd_in, loff_t __user *off_in,
1014 int fd_out, loff_t __user *off_out, 1267 int fd_out, loff_t __user *off_out,
1015 size_t len, unsigned int flags) 1268 size_t len, unsigned int flags)
@@ -1092,6 +1345,12 @@ static int link_pipe(struct pipe_inode_info *ipipe,
1092 obuf = opipe->bufs + nbuf; 1345 obuf = opipe->bufs + nbuf;
1093 *obuf = *ibuf; 1346 *obuf = *ibuf;
1094 1347
1348 /*
1349 * Don't inherit the gift flag, we need to
1350 * prevent multiple steals of this page.
1351 */
1352 obuf->flags &= ~PIPE_BUF_FLAG_GIFT;
1353
1095 if (obuf->len > len) 1354 if (obuf->len > len)
1096 obuf->len = len; 1355 obuf->len = len;
1097 1356
diff --git a/fs/stat.c b/fs/stat.c
index 9948cc1685a4..0f282face322 100644
--- a/fs/stat.c
+++ b/fs/stat.c
@@ -261,7 +261,7 @@ asmlinkage long sys_newlstat(char __user *filename, struct stat __user *statbuf)
261 return error; 261 return error;
262} 262}
263 263
264#ifndef __ARCH_WANT_STAT64 264#if !defined(__ARCH_WANT_STAT64) || defined(__ARCH_WANT_SYS_NEWFSTATAT)
265asmlinkage long sys_newfstatat(int dfd, char __user *filename, 265asmlinkage long sys_newfstatat(int dfd, char __user *filename,
266 struct stat __user *statbuf, int flag) 266 struct stat __user *statbuf, int flag)
267{ 267{
diff --git a/include/asm-arm/arch-imx/imx-uart.h b/include/asm-arm/arch-imx/imx-uart.h
new file mode 100644
index 000000000000..3a685e1780ea
--- /dev/null
+++ b/include/asm-arm/arch-imx/imx-uart.h
@@ -0,0 +1,10 @@
1#ifndef ASMARM_ARCH_UART_H
2#define ASMARM_ARCH_UART_H
3
4#define IMXUART_HAVE_RTSCTS (1<<0)
5
6struct imxuart_platform_data {
7 unsigned int flags;
8};
9
10#endif
diff --git a/include/asm-arm/arch-ixp4xx/io.h b/include/asm-arm/arch-ixp4xx/io.h
index 942b622455bc..b59520e56fc7 100644
--- a/include/asm-arm/arch-ixp4xx/io.h
+++ b/include/asm-arm/arch-ixp4xx/io.h
@@ -260,6 +260,12 @@ out:
260 260
261#endif 261#endif
262 262
263#ifndef CONFIG_PCI
264
265#define __io(v) v
266
267#else
268
263/* 269/*
264 * IXP4xx does not have a transparent cpu -> PCI I/O translation 270 * IXP4xx does not have a transparent cpu -> PCI I/O translation
265 * window. Instead, it has a set of registers that must be tweaked 271 * window. Instead, it has a set of registers that must be tweaked
@@ -578,6 +584,7 @@ __ixp4xx_iowrite32_rep(void __iomem *addr, const void *vaddr, u32 count)
578 584
579#define ioport_map(port, nr) ((void __iomem*)(port + PIO_OFFSET)) 585#define ioport_map(port, nr) ((void __iomem*)(port + PIO_OFFSET))
580#define ioport_unmap(addr) 586#define ioport_unmap(addr)
587#endif // !CONFIG_PCI
581 588
582#endif // __ASM_ARM_ARCH_IO_H 589#endif // __ASM_ARM_ARCH_IO_H
583 590
diff --git a/include/asm-arm/arch-ixp4xx/memory.h b/include/asm-arm/arch-ixp4xx/memory.h
index ee211d28a3ef..af9667b57ab3 100644
--- a/include/asm-arm/arch-ixp4xx/memory.h
+++ b/include/asm-arm/arch-ixp4xx/memory.h
@@ -14,7 +14,7 @@
14 */ 14 */
15#define PHYS_OFFSET UL(0x00000000) 15#define PHYS_OFFSET UL(0x00000000)
16 16
17#ifndef __ASSEMBLY__ 17#if !defined(__ASSEMBLY__) && defined(CONFIG_PCI)
18 18
19void ixp4xx_adjust_zones(int node, unsigned long *size, unsigned long *holes); 19void ixp4xx_adjust_zones(int node, unsigned long *size, unsigned long *holes);
20 20
diff --git a/include/asm-arm/unistd.h b/include/asm-arm/unistd.h
index ee8dfea549bc..26f2f4828e03 100644
--- a/include/asm-arm/unistd.h
+++ b/include/asm-arm/unistd.h
@@ -410,7 +410,8 @@ type name(void) { \
410 __asm__ __volatile__ ( \ 410 __asm__ __volatile__ ( \
411 __syscall(name) \ 411 __syscall(name) \
412 : "=r" (__res_r0) \ 412 : "=r" (__res_r0) \
413 : __SYS_REG_LIST() ); \ 413 : __SYS_REG_LIST() \
414 : "memory" ); \
414 __res = __res_r0; \ 415 __res = __res_r0; \
415 __syscall_return(type,__res); \ 416 __syscall_return(type,__res); \
416} 417}
@@ -424,7 +425,8 @@ type name(type1 arg1) { \
424 __asm__ __volatile__ ( \ 425 __asm__ __volatile__ ( \
425 __syscall(name) \ 426 __syscall(name) \
426 : "=r" (__res_r0) \ 427 : "=r" (__res_r0) \
427 : __SYS_REG_LIST( "0" (__r0) ) ); \ 428 : __SYS_REG_LIST( "0" (__r0) ) \
429 : "memory" ); \
428 __res = __res_r0; \ 430 __res = __res_r0; \
429 __syscall_return(type,__res); \ 431 __syscall_return(type,__res); \
430} 432}
@@ -439,7 +441,8 @@ type name(type1 arg1,type2 arg2) { \
439 __asm__ __volatile__ ( \ 441 __asm__ __volatile__ ( \
440 __syscall(name) \ 442 __syscall(name) \
441 : "=r" (__res_r0) \ 443 : "=r" (__res_r0) \
442 : __SYS_REG_LIST( "0" (__r0), "r" (__r1) ) ); \ 444 : __SYS_REG_LIST( "0" (__r0), "r" (__r1) ) \
445 : "memory" ); \
443 __res = __res_r0; \ 446 __res = __res_r0; \
444 __syscall_return(type,__res); \ 447 __syscall_return(type,__res); \
445} 448}
@@ -456,7 +459,8 @@ type name(type1 arg1,type2 arg2,type3 arg3) { \
456 __asm__ __volatile__ ( \ 459 __asm__ __volatile__ ( \
457 __syscall(name) \ 460 __syscall(name) \
458 : "=r" (__res_r0) \ 461 : "=r" (__res_r0) \
459 : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2) ) ); \ 462 : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2) ) \
463 : "memory" ); \
460 __res = __res_r0; \ 464 __res = __res_r0; \
461 __syscall_return(type,__res); \ 465 __syscall_return(type,__res); \
462} 466}
@@ -474,7 +478,8 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \
474 __asm__ __volatile__ ( \ 478 __asm__ __volatile__ ( \
475 __syscall(name) \ 479 __syscall(name) \
476 : "=r" (__res_r0) \ 480 : "=r" (__res_r0) \
477 : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), "r" (__r3) ) ); \ 481 : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), "r" (__r3) ) \
482 : "memory" ); \
478 __res = __res_r0; \ 483 __res = __res_r0; \
479 __syscall_return(type,__res); \ 484 __syscall_return(type,__res); \
480} 485}
@@ -494,7 +499,8 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { \
494 __syscall(name) \ 499 __syscall(name) \
495 : "=r" (__res_r0) \ 500 : "=r" (__res_r0) \
496 : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \ 501 : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \
497 "r" (__r3), "r" (__r4) ) ); \ 502 "r" (__r3), "r" (__r4) ) \
503 : "memory" ); \
498 __res = __res_r0; \ 504 __res = __res_r0; \
499 __syscall_return(type,__res); \ 505 __syscall_return(type,__res); \
500} 506}
@@ -514,7 +520,8 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6
514 __syscall(name) \ 520 __syscall(name) \
515 : "=r" (__res_r0) \ 521 : "=r" (__res_r0) \
516 : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \ 522 : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \
517 "r" (__r3), "r" (__r4), "r" (__r5) ) ); \ 523 "r" (__r3), "r" (__r4), "r" (__r5) ) \
524 : "memory" ); \
518 __res = __res_r0; \ 525 __res = __res_r0; \
519 __syscall_return(type,__res); \ 526 __syscall_return(type,__res); \
520} 527}
diff --git a/include/asm-i386/i387.h b/include/asm-i386/i387.h
index 7b1f01191e70..bc1d6edae1ed 100644
--- a/include/asm-i386/i387.h
+++ b/include/asm-i386/i387.h
@@ -58,13 +58,13 @@ static inline void __save_init_fpu( struct task_struct *tsk )
58 alternative_input( 58 alternative_input(
59 "fnsave %[fx] ;fwait;" GENERIC_NOP8 GENERIC_NOP4, 59 "fnsave %[fx] ;fwait;" GENERIC_NOP8 GENERIC_NOP4,
60 "fxsave %[fx]\n" 60 "fxsave %[fx]\n"
61 "bt $7,%[fsw] ; jc 1f ; fnclex\n1:", 61 "bt $7,%[fsw] ; jnc 1f ; fnclex\n1:",
62 X86_FEATURE_FXSR, 62 X86_FEATURE_FXSR,
63 [fx] "m" (tsk->thread.i387.fxsave), 63 [fx] "m" (tsk->thread.i387.fxsave),
64 [fsw] "m" (tsk->thread.i387.fxsave.swd) : "memory"); 64 [fsw] "m" (tsk->thread.i387.fxsave.swd) : "memory");
65 /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception 65 /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception
66 is pending. Clear the x87 state here by setting it to fixed 66 is pending. Clear the x87 state here by setting it to fixed
67 values. __per_cpu_offset[0] is a random variable that should be in L1 */ 67 values. safe_address is a random variable that should be in L1 */
68 alternative_input( 68 alternative_input(
69 GENERIC_NOP8 GENERIC_NOP2, 69 GENERIC_NOP8 GENERIC_NOP2,
70 "emms\n\t" /* clear stack tags */ 70 "emms\n\t" /* clear stack tags */
diff --git a/include/asm-i386/pgtable-2level.h b/include/asm-i386/pgtable-2level.h
index 27bde973abc7..2756d4b04c27 100644
--- a/include/asm-i386/pgtable-2level.h
+++ b/include/asm-i386/pgtable-2level.h
@@ -18,6 +18,9 @@
18#define set_pte_atomic(pteptr, pteval) set_pte(pteptr,pteval) 18#define set_pte_atomic(pteptr, pteval) set_pte(pteptr,pteval)
19#define set_pmd(pmdptr, pmdval) (*(pmdptr) = (pmdval)) 19#define set_pmd(pmdptr, pmdval) (*(pmdptr) = (pmdval))
20 20
21#define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
22#define pmd_clear(xp) do { set_pmd(xp, __pmd(0)); } while (0)
23
21#define ptep_get_and_clear(mm,addr,xp) __pte(xchg(&(xp)->pte_low, 0)) 24#define ptep_get_and_clear(mm,addr,xp) __pte(xchg(&(xp)->pte_low, 0))
22#define pte_same(a, b) ((a).pte_low == (b).pte_low) 25#define pte_same(a, b) ((a).pte_low == (b).pte_low)
23#define pte_page(x) pfn_to_page(pte_pfn(x)) 26#define pte_page(x) pfn_to_page(pte_pfn(x))
diff --git a/include/asm-i386/pgtable-3level.h b/include/asm-i386/pgtable-3level.h
index 36a5aa63cbbf..dccb1b3337ad 100644
--- a/include/asm-i386/pgtable-3level.h
+++ b/include/asm-i386/pgtable-3level.h
@@ -85,6 +85,26 @@ static inline void pud_clear (pud_t * pud) { }
85#define pmd_offset(pud, address) ((pmd_t *) pud_page(*(pud)) + \ 85#define pmd_offset(pud, address) ((pmd_t *) pud_page(*(pud)) + \
86 pmd_index(address)) 86 pmd_index(address))
87 87
88/*
89 * For PTEs and PDEs, we must clear the P-bit first when clearing a page table
90 * entry, so clear the bottom half first and enforce ordering with a compiler
91 * barrier.
92 */
93static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
94{
95 ptep->pte_low = 0;
96 smp_wmb();
97 ptep->pte_high = 0;
98}
99
100static inline void pmd_clear(pmd_t *pmd)
101{
102 u32 *tmp = (u32 *)pmd;
103 *tmp = 0;
104 smp_wmb();
105 *(tmp + 1) = 0;
106}
107
88static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) 108static inline pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
89{ 109{
90 pte_t res; 110 pte_t res;
diff --git a/include/asm-i386/pgtable.h b/include/asm-i386/pgtable.h
index ee056c41a9fb..672c3f76b9df 100644
--- a/include/asm-i386/pgtable.h
+++ b/include/asm-i386/pgtable.h
@@ -204,12 +204,10 @@ extern unsigned long long __PAGE_KERNEL, __PAGE_KERNEL_EXEC;
204extern unsigned long pg0[]; 204extern unsigned long pg0[];
205 205
206#define pte_present(x) ((x).pte_low & (_PAGE_PRESENT | _PAGE_PROTNONE)) 206#define pte_present(x) ((x).pte_low & (_PAGE_PRESENT | _PAGE_PROTNONE))
207#define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
208 207
209/* To avoid harmful races, pmd_none(x) should check only the lower when PAE */ 208/* To avoid harmful races, pmd_none(x) should check only the lower when PAE */
210#define pmd_none(x) (!(unsigned long)pmd_val(x)) 209#define pmd_none(x) (!(unsigned long)pmd_val(x))
211#define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT) 210#define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT)
212#define pmd_clear(xp) do { set_pmd(xp, __pmd(0)); } while (0)
213#define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE) 211#define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
214 212
215 213
@@ -268,7 +266,7 @@ static inline pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long
268 pte_t pte; 266 pte_t pte;
269 if (full) { 267 if (full) {
270 pte = *ptep; 268 pte = *ptep;
271 *ptep = __pte(0); 269 pte_clear(mm, addr, ptep);
272 } else { 270 } else {
273 pte = ptep_get_and_clear(mm, addr, ptep); 271 pte = ptep_get_and_clear(mm, addr, ptep);
274 } 272 }
diff --git a/include/asm-i386/unistd.h b/include/asm-i386/unistd.h
index d81d6cfc1bb4..eb4b152c82fc 100644
--- a/include/asm-i386/unistd.h
+++ b/include/asm-i386/unistd.h
@@ -321,8 +321,9 @@
321#define __NR_splice 313 321#define __NR_splice 313
322#define __NR_sync_file_range 314 322#define __NR_sync_file_range 314
323#define __NR_tee 315 323#define __NR_tee 315
324#define __NR_vmsplice 316
324 325
325#define NR_syscalls 316 326#define NR_syscalls 317
326 327
327/* 328/*
328 * user-visible error numbers are in the range -1 - -128: see 329 * user-visible error numbers are in the range -1 - -128: see
diff --git a/include/asm-ia64/acpi.h b/include/asm-ia64/acpi.h
index d734585a23cf..09a5dd0e44a8 100644
--- a/include/asm-ia64/acpi.h
+++ b/include/asm-ia64/acpi.h
@@ -110,9 +110,8 @@ extern void prefill_possible_map(void);
110extern int additional_cpus; 110extern int additional_cpus;
111 111
112#ifdef CONFIG_ACPI_NUMA 112#ifdef CONFIG_ACPI_NUMA
113/* Proximity bitmap length; _PXM is at most 255 (8 bit)*/ 113#if MAX_NUMNODES > 256
114#ifdef CONFIG_IA64_NR_NODES 114#define MAX_PXM_DOMAINS MAX_NUMNODES
115#define MAX_PXM_DOMAINS CONFIG_IA64_NR_NODES
116#else 115#else
117#define MAX_PXM_DOMAINS (256) 116#define MAX_PXM_DOMAINS (256)
118#endif 117#endif
diff --git a/include/asm-ia64/machvec.h b/include/asm-ia64/machvec.h
index c3e4ed8a3e17..a9c995a86c21 100644
--- a/include/asm-ia64/machvec.h
+++ b/include/asm-ia64/machvec.h
@@ -347,9 +347,11 @@ extern ia64_mv_dma_supported swiotlb_dma_supported;
347#endif 347#endif
348#ifndef platform_pci_legacy_read 348#ifndef platform_pci_legacy_read
349# define platform_pci_legacy_read ia64_pci_legacy_read 349# define platform_pci_legacy_read ia64_pci_legacy_read
350extern int ia64_pci_legacy_read(struct pci_bus *bus, u16 port, u32 *val, u8 size);
350#endif 351#endif
351#ifndef platform_pci_legacy_write 352#ifndef platform_pci_legacy_write
352# define platform_pci_legacy_write ia64_pci_legacy_write 353# define platform_pci_legacy_write ia64_pci_legacy_write
354extern int ia64_pci_legacy_write(struct pci_bus *bus, u16 port, u32 val, u8 size);
353#endif 355#endif
354#ifndef platform_inb 356#ifndef platform_inb
355# define platform_inb __ia64_inb 357# define platform_inb __ia64_inb
diff --git a/include/asm-ia64/sn/sn2/sn_hwperf.h b/include/asm-ia64/sn/sn2/sn_hwperf.h
index 291ef3d69da2..e61ebac38cdd 100644
--- a/include/asm-ia64/sn/sn2/sn_hwperf.h
+++ b/include/asm-ia64/sn/sn2/sn_hwperf.h
@@ -45,8 +45,12 @@ struct sn_hwperf_object_info {
45#define SN_HWPERF_IS_NODE(x) ((x) && strstr((x)->name, "SHub")) 45#define SN_HWPERF_IS_NODE(x) ((x) && strstr((x)->name, "SHub"))
46#define SN_HWPERF_IS_NODE_SHUB2(x) ((x) && strstr((x)->name, "SHub 2.")) 46#define SN_HWPERF_IS_NODE_SHUB2(x) ((x) && strstr((x)->name, "SHub 2."))
47#define SN_HWPERF_IS_IONODE(x) ((x) && strstr((x)->name, "TIO")) 47#define SN_HWPERF_IS_IONODE(x) ((x) && strstr((x)->name, "TIO"))
48#define SN_HWPERF_IS_ROUTER(x) ((x) && strstr((x)->name, "Router"))
49#define SN_HWPERF_IS_NL3ROUTER(x) ((x) && strstr((x)->name, "NL3Router")) 48#define SN_HWPERF_IS_NL3ROUTER(x) ((x) && strstr((x)->name, "NL3Router"))
49#define SN_HWPERF_IS_NL4ROUTER(x) ((x) && strstr((x)->name, "NL4Router"))
50#define SN_HWPERF_IS_OLDROUTER(x) ((x) && strstr((x)->name, "Router"))
51#define SN_HWPERF_IS_ROUTER(x) (SN_HWPERF_IS_NL3ROUTER(x) || \
52 SN_HWPERF_IS_NL4ROUTER(x) || \
53 SN_HWPERF_IS_OLDROUTER(x))
50#define SN_HWPERF_FOREIGN(x) ((x) && !(x)->sn_hwp_this_part && !(x)->sn_hwp_is_shared) 54#define SN_HWPERF_FOREIGN(x) ((x) && !(x)->sn_hwp_this_part && !(x)->sn_hwp_is_shared)
51#define SN_HWPERF_SAME_OBJTYPE(x,y) ((SN_HWPERF_IS_NODE(x) && SN_HWPERF_IS_NODE(y)) ||\ 55#define SN_HWPERF_SAME_OBJTYPE(x,y) ((SN_HWPERF_IS_NODE(x) && SN_HWPERF_IS_NODE(y)) ||\
52 (SN_HWPERF_IS_IONODE(x) && SN_HWPERF_IS_IONODE(y)) ||\ 56 (SN_HWPERF_IS_IONODE(x) && SN_HWPERF_IS_IONODE(y)) ||\
diff --git a/include/asm-ia64/sn/sn_sal.h b/include/asm-ia64/sn/sn_sal.h
index bf4cc867a698..51aca022cf39 100644
--- a/include/asm-ia64/sn/sn_sal.h
+++ b/include/asm-ia64/sn/sn_sal.h
@@ -8,7 +8,7 @@
8 * License. See the file "COPYING" in the main directory of this archive 8 * License. See the file "COPYING" in the main directory of this archive
9 * for more details. 9 * for more details.
10 * 10 *
11 * Copyright (c) 2000-2005 Silicon Graphics, Inc. All rights reserved. 11 * Copyright (c) 2000-2006 Silicon Graphics, Inc. All rights reserved.
12 */ 12 */
13 13
14 14
@@ -85,6 +85,7 @@
85 85
86#define SN_SAL_GET_PROM_FEATURE_SET 0x02000065 86#define SN_SAL_GET_PROM_FEATURE_SET 0x02000065
87#define SN_SAL_SET_OS_FEATURE_SET 0x02000066 87#define SN_SAL_SET_OS_FEATURE_SET 0x02000066
88#define SN_SAL_INJECT_ERROR 0x02000067
88 89
89/* 90/*
90 * Service-specific constants 91 * Service-specific constants
@@ -705,10 +706,8 @@ static inline int
705sn_change_memprotect(u64 paddr, u64 len, u64 perms, u64 *nasid_array) 706sn_change_memprotect(u64 paddr, u64 len, u64 perms, u64 *nasid_array)
706{ 707{
707 struct ia64_sal_retval ret_stuff; 708 struct ia64_sal_retval ret_stuff;
708 int cnodeid;
709 unsigned long irq_flags; 709 unsigned long irq_flags;
710 710
711 cnodeid = nasid_to_cnodeid(get_node_number(paddr));
712 local_irq_save(irq_flags); 711 local_irq_save(irq_flags);
713 ia64_sal_oemcall_nolock(&ret_stuff, SN_SAL_MEMPROTECT, paddr, len, 712 ia64_sal_oemcall_nolock(&ret_stuff, SN_SAL_MEMPROTECT, paddr, len,
714 (u64)nasid_array, perms, 0, 0, 0); 713 (u64)nasid_array, perms, 0, 0, 0);
@@ -1140,4 +1139,16 @@ ia64_sn_set_os_feature(int feature)
1140 return rv.status; 1139 return rv.status;
1141} 1140}
1142 1141
1142static inline int
1143sn_inject_error(u64 paddr, u64 *data, u64 *ecc)
1144{
1145 struct ia64_sal_retval ret_stuff;
1146 unsigned long irq_flags;
1147
1148 local_irq_save(irq_flags);
1149 ia64_sal_oemcall_nolock(&ret_stuff, SN_SAL_INJECT_ERROR, paddr, (u64)data,
1150 (u64)ecc, 0, 0, 0, 0);
1151 local_irq_restore(irq_flags);
1152 return ret_stuff.status;
1153}
1143#endif /* _ASM_IA64_SN_SN_SAL_H */ 1154#endif /* _ASM_IA64_SN_SN_SAL_H */
diff --git a/include/asm-ia64/thread_info.h b/include/asm-ia64/thread_info.h
index 56394a2c7055..e5392c4d30c6 100644
--- a/include/asm-ia64/thread_info.h
+++ b/include/asm-ia64/thread_info.h
@@ -67,7 +67,7 @@ struct thread_info {
67#define end_of_stack(p) (unsigned long *)((void *)(p) + IA64_RBS_OFFSET) 67#define end_of_stack(p) (unsigned long *)((void *)(p) + IA64_RBS_OFFSET)
68 68
69#define __HAVE_ARCH_TASK_STRUCT_ALLOCATOR 69#define __HAVE_ARCH_TASK_STRUCT_ALLOCATOR
70#define alloc_task_struct() ((task_t *)__get_free_pages(GFP_KERNEL, KERNEL_STACK_SIZE_ORDER)) 70#define alloc_task_struct() ((task_t *)__get_free_pages(GFP_KERNEL | __GFP_COMP, KERNEL_STACK_SIZE_ORDER))
71#define free_task_struct(tsk) free_pages((unsigned long) (tsk), KERNEL_STACK_SIZE_ORDER) 71#define free_task_struct(tsk) free_pages((unsigned long) (tsk), KERNEL_STACK_SIZE_ORDER)
72 72
73#endif /* !__ASSEMBLY */ 73#endif /* !__ASSEMBLY */
diff --git a/include/asm-ia64/topology.h b/include/asm-ia64/topology.h
index 3ee19dfa46df..616b5ed2aa72 100644
--- a/include/asm-ia64/topology.h
+++ b/include/asm-ia64/topology.h
@@ -23,6 +23,11 @@
23#define PENALTY_FOR_NODE_WITH_CPUS 255 23#define PENALTY_FOR_NODE_WITH_CPUS 255
24 24
25/* 25/*
26 * Distance above which we begin to use zone reclaim
27 */
28#define RECLAIM_DISTANCE 15
29
30/*
26 * Returns the number of the node containing CPU 'cpu' 31 * Returns the number of the node containing CPU 'cpu'
27 */ 32 */
28#define cpu_to_node(cpu) (int)(cpu_to_node_map[cpu]) 33#define cpu_to_node(cpu) (int)(cpu_to_node_map[cpu])
diff --git a/include/asm-ia64/unistd.h b/include/asm-ia64/unistd.h
index a40ebec6aeeb..7107763168bf 100644
--- a/include/asm-ia64/unistd.h
+++ b/include/asm-ia64/unistd.h
@@ -290,12 +290,13 @@
290#define __NR_get_robust_list 1299 290#define __NR_get_robust_list 1299
291#define __NR_sync_file_range 1300 291#define __NR_sync_file_range 1300
292#define __NR_tee 1301 292#define __NR_tee 1301
293#define __NR_vmsplice 1302
293 294
294#ifdef __KERNEL__ 295#ifdef __KERNEL__
295 296
296#include <linux/config.h> 297#include <linux/config.h>
297 298
298#define NR_syscalls 278 /* length of syscall table */ 299#define NR_syscalls 279 /* length of syscall table */
299 300
300#define __ARCH_WANT_SYS_RT_SIGACTION 301#define __ARCH_WANT_SYS_RT_SIGACTION
301 302
diff --git a/include/asm-mips/bitops.h b/include/asm-mips/bitops.h
index a1728f8c0705..d2f444537e4b 100644
--- a/include/asm-mips/bitops.h
+++ b/include/asm-mips/bitops.h
@@ -467,64 +467,56 @@ static inline unsigned long __ffs(unsigned long word)
467} 467}
468 468
469/* 469/*
470 * ffs - find first bit set. 470 * fls - find last bit set.
471 * @word: The word to search 471 * @word: The word to search
472 * 472 *
473 * Returns 1..SZLONG 473 * This is defined the same way as ffs.
474 * Returns 0 if no bit exists 474 * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
475 */ 475 */
476 476static inline int fls(int word)
477static inline unsigned long ffs(unsigned long word)
478{ 477{
479 if (!word) 478 __asm__ ("clz %0, %1" : "=r" (word) : "r" (word));
480 return 0;
481 479
482 return __ffs(word) + 1; 480 return 32 - word;
483} 481}
484 482
485/* 483#if defined(CONFIG_64BIT) && defined(CONFIG_CPU_MIPS64)
486 * ffz - find first zero in word. 484static inline int fls64(__u64 word)
487 * @word: The word to search
488 *
489 * Undefined if no zero exists, so code should check against ~0UL first.
490 */
491static inline unsigned long ffz(unsigned long word)
492{ 485{
493 return __ffs (~word); 486 __asm__ ("dclz %0, %1" : "=r" (word) : "r" (word));
487
488 return 64 - word;
494} 489}
490#else
491#include <asm-generic/bitops/fls64.h>
492#endif
495 493
496/* 494/*
497 * fls - find last bit set. 495 * ffs - find first bit set.
498 * @word: The word to search 496 * @word: The word to search
499 * 497 *
500 * Returns 1..SZLONG 498 * This is defined the same way as
501 * Returns 0 if no bit exists 499 * the libc and compiler builtin ffs routines, therefore
500 * differs in spirit from the above ffz (man ffs).
502 */ 501 */
503static inline unsigned long fls(unsigned long word) 502static inline int ffs(int word)
504{ 503{
505#ifdef CONFIG_CPU_MIPS32 504 if (!word)
506 __asm__ ("clz %0, %1" : "=r" (word) : "r" (word)); 505 return 0;
507
508 return 32 - word;
509#endif
510
511#ifdef CONFIG_CPU_MIPS64
512 __asm__ ("dclz %0, %1" : "=r" (word) : "r" (word));
513 506
514 return 64 - word; 507 return fls(word & -word);
515#endif
516} 508}
517 509
518#else 510#else
519 511
520#include <asm-generic/bitops/__ffs.h> 512#include <asm-generic/bitops/__ffs.h>
521#include <asm-generic/bitops/ffs.h> 513#include <asm-generic/bitops/ffs.h>
522#include <asm-generic/bitops/ffz.h>
523#include <asm-generic/bitops/fls.h> 514#include <asm-generic/bitops/fls.h>
515#include <asm-generic/bitops/fls64.h>
524 516
525#endif /*defined(CONFIG_CPU_MIPS32) || defined(CONFIG_CPU_MIPS64) */ 517#endif /*defined(CONFIG_CPU_MIPS32) || defined(CONFIG_CPU_MIPS64) */
526 518
527#include <asm-generic/bitops/fls64.h> 519#include <asm-generic/bitops/ffz.h>
528#include <asm-generic/bitops/find.h> 520#include <asm-generic/bitops/find.h>
529 521
530#ifdef __KERNEL__ 522#ifdef __KERNEL__
diff --git a/include/asm-mips/mips-boards/generic.h b/include/asm-mips/mips-boards/generic.h
index 25b6ffc26623..fa8b913cc3e0 100644
--- a/include/asm-mips/mips-boards/generic.h
+++ b/include/asm-mips/mips-boards/generic.h
@@ -67,6 +67,7 @@
67#define MIPS_REVISION_CORID_CORE_FPGA2 7 67#define MIPS_REVISION_CORID_CORE_FPGA2 7
68#define MIPS_REVISION_CORID_CORE_FPGAR2 8 68#define MIPS_REVISION_CORID_CORE_FPGAR2 8
69#define MIPS_REVISION_CORID_CORE_FPGA3 9 69#define MIPS_REVISION_CORID_CORE_FPGA3 9
70#define MIPS_REVISION_CORID_CORE_24K 10
70 71
71/**** Artificial corid defines ****/ 72/**** Artificial corid defines ****/
72/* 73/*
diff --git a/include/asm-powerpc/cputable.h b/include/asm-powerpc/cputable.h
index 4321483cce51..9fcf0162d859 100644
--- a/include/asm-powerpc/cputable.h
+++ b/include/asm-powerpc/cputable.h
@@ -22,6 +22,7 @@
22#define PPC_FEATURE_BOOKE 0x00008000 22#define PPC_FEATURE_BOOKE 0x00008000
23#define PPC_FEATURE_SMT 0x00004000 23#define PPC_FEATURE_SMT 0x00004000
24#define PPC_FEATURE_ICACHE_SNOOP 0x00002000 24#define PPC_FEATURE_ICACHE_SNOOP 0x00002000
25#define PPC_FEATURE_ARCH_2_05 0x00001000
25 26
26#ifdef __KERNEL__ 27#ifdef __KERNEL__
27#ifndef __ASSEMBLY__ 28#ifndef __ASSEMBLY__
@@ -320,6 +321,11 @@ extern void do_cpu_ftr_fixups(unsigned long offset);
320 CPU_FTR_MMCRA | CPU_FTR_SMT | \ 321 CPU_FTR_MMCRA | CPU_FTR_SMT | \
321 CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE | \ 322 CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE | \
322 CPU_FTR_MMCRA_SIHV | CPU_FTR_PURR) 323 CPU_FTR_MMCRA_SIHV | CPU_FTR_PURR)
324#define CPU_FTRS_POWER6 (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \
325 CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | \
326 CPU_FTR_MMCRA | CPU_FTR_SMT | \
327 CPU_FTR_COHERENT_ICACHE | CPU_FTR_LOCKLESS_TLBIE | \
328 CPU_FTR_PURR | CPU_FTR_CI_LARGE_PAGE)
323#define CPU_FTRS_CELL (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \ 329#define CPU_FTRS_CELL (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_USE_TB | \
324 CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | \ 330 CPU_FTR_HPTE_TABLE | CPU_FTR_PPCAS_ARCH_V2 | \
325 CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | \ 331 CPU_FTR_ALTIVEC_COMP | CPU_FTR_MMCRA | CPU_FTR_SMT | \
@@ -331,8 +337,8 @@ extern void do_cpu_ftr_fixups(unsigned long offset);
331#ifdef __powerpc64__ 337#ifdef __powerpc64__
332#define CPU_FTRS_POSSIBLE \ 338#define CPU_FTRS_POSSIBLE \
333 (CPU_FTRS_POWER3 | CPU_FTRS_RS64 | CPU_FTRS_POWER4 | \ 339 (CPU_FTRS_POWER3 | CPU_FTRS_RS64 | CPU_FTRS_POWER4 | \
334 CPU_FTRS_PPC970 | CPU_FTRS_POWER5 | CPU_FTRS_CELL | \ 340 CPU_FTRS_PPC970 | CPU_FTRS_POWER5 | CPU_FTRS_POWER6 | \
335 CPU_FTR_CI_LARGE_PAGE) 341 CPU_FTRS_CELL | CPU_FTR_CI_LARGE_PAGE)
336#else 342#else
337enum { 343enum {
338 CPU_FTRS_POSSIBLE = 344 CPU_FTRS_POSSIBLE =
@@ -376,8 +382,8 @@ enum {
376#ifdef __powerpc64__ 382#ifdef __powerpc64__
377#define CPU_FTRS_ALWAYS \ 383#define CPU_FTRS_ALWAYS \
378 (CPU_FTRS_POWER3 & CPU_FTRS_RS64 & CPU_FTRS_POWER4 & \ 384 (CPU_FTRS_POWER3 & CPU_FTRS_RS64 & CPU_FTRS_POWER4 & \
379 CPU_FTRS_PPC970 & CPU_FTRS_POWER5 & CPU_FTRS_CELL & \ 385 CPU_FTRS_PPC970 & CPU_FTRS_POWER5 & CPU_FTRS_POWER6 & \
380 CPU_FTRS_POSSIBLE) 386 CPU_FTRS_CELL & CPU_FTRS_POSSIBLE)
381#else 387#else
382enum { 388enum {
383 CPU_FTRS_ALWAYS = 389 CPU_FTRS_ALWAYS =
diff --git a/include/asm-powerpc/io.h b/include/asm-powerpc/io.h
index 68efbea379c9..f1c2469b8844 100644
--- a/include/asm-powerpc/io.h
+++ b/include/asm-powerpc/io.h
@@ -9,6 +9,9 @@
9 * 2 of the License, or (at your option) any later version. 9 * 2 of the License, or (at your option) any later version.
10 */ 10 */
11 11
12/* Check of existence of legacy devices */
13extern int check_legacy_ioport(unsigned long base_port);
14
12#ifndef CONFIG_PPC64 15#ifndef CONFIG_PPC64
13#include <asm-ppc/io.h> 16#include <asm-ppc/io.h>
14#else 17#else
@@ -437,9 +440,6 @@ out:
437#define dma_cache_wback(_start,_size) do { } while (0) 440#define dma_cache_wback(_start,_size) do { } while (0)
438#define dma_cache_wback_inv(_start,_size) do { } while (0) 441#define dma_cache_wback_inv(_start,_size) do { } while (0)
439 442
440/* Check of existence of legacy devices */
441extern int check_legacy_ioport(unsigned long base_port);
442
443 443
444/* 444/*
445 * Convert a physical pointer to a virtual kernel pointer for /dev/mem 445 * Convert a physical pointer to a virtual kernel pointer for /dev/mem
diff --git a/include/asm-powerpc/page_64.h b/include/asm-powerpc/page_64.h
index 3fb061bab9ec..eab779c21995 100644
--- a/include/asm-powerpc/page_64.h
+++ b/include/asm-powerpc/page_64.h
@@ -101,6 +101,7 @@ extern unsigned int HPAGE_SHIFT;
101 - (1U << GET_HTLB_AREA(addr))) & 0xffff) 101 - (1U << GET_HTLB_AREA(addr))) & 0xffff)
102 102
103#define ARCH_HAS_HUGEPAGE_ONLY_RANGE 103#define ARCH_HAS_HUGEPAGE_ONLY_RANGE
104#define ARCH_HAS_HUGETLB_FREE_PGD_RANGE
104#define ARCH_HAS_PREPARE_HUGEPAGE_RANGE 105#define ARCH_HAS_PREPARE_HUGEPAGE_RANGE
105#define ARCH_HAS_SETCLEAR_HUGE_PTE 106#define ARCH_HAS_SETCLEAR_HUGE_PTE
106 107
diff --git a/include/asm-powerpc/pgalloc.h b/include/asm-powerpc/pgalloc.h
index a00ee002cd11..9f0917c68659 100644
--- a/include/asm-powerpc/pgalloc.h
+++ b/include/asm-powerpc/pgalloc.h
@@ -17,11 +17,13 @@ extern kmem_cache_t *pgtable_cache[];
17#define PTE_CACHE_NUM 0 17#define PTE_CACHE_NUM 0
18#define PMD_CACHE_NUM 1 18#define PMD_CACHE_NUM 1
19#define PGD_CACHE_NUM 2 19#define PGD_CACHE_NUM 2
20#define HUGEPTE_CACHE_NUM 3
20#else 21#else
21#define PTE_CACHE_NUM 0 22#define PTE_CACHE_NUM 0
22#define PMD_CACHE_NUM 1 23#define PMD_CACHE_NUM 1
23#define PUD_CACHE_NUM 1 24#define PUD_CACHE_NUM 1
24#define PGD_CACHE_NUM 0 25#define PGD_CACHE_NUM 0
26#define HUGEPTE_CACHE_NUM 2
25#endif 27#endif
26 28
27/* 29/*
diff --git a/include/asm-powerpc/spu.h b/include/asm-powerpc/spu.h
index f431d8b0b651..7cfcff3ef027 100644
--- a/include/asm-powerpc/spu.h
+++ b/include/asm-powerpc/spu.h
@@ -117,6 +117,7 @@ struct spu {
117 struct list_head list; 117 struct list_head list;
118 struct list_head sched_list; 118 struct list_head sched_list;
119 int number; 119 int number;
120 int nid;
120 u32 isrc; 121 u32 isrc;
121 u32 node; 122 u32 node;
122 u64 flags; 123 u64 flags;
diff --git a/include/asm-powerpc/topology.h b/include/asm-powerpc/topology.h
index 1e19cd00af25..87362a05542b 100644
--- a/include/asm-powerpc/topology.h
+++ b/include/asm-powerpc/topology.h
@@ -4,6 +4,9 @@
4 4
5#include <linux/config.h> 5#include <linux/config.h>
6 6
7struct sys_device;
8struct device_node;
9
7#ifdef CONFIG_NUMA 10#ifdef CONFIG_NUMA
8 11
9#include <asm/mmzone.h> 12#include <asm/mmzone.h>
@@ -27,6 +30,8 @@ static inline int node_to_first_cpu(int node)
27 return first_cpu(tmp); 30 return first_cpu(tmp);
28} 31}
29 32
33int of_node_to_nid(struct device_node *device);
34
30#define pcibus_to_node(node) (-1) 35#define pcibus_to_node(node) (-1)
31#define pcibus_to_cpumask(bus) (cpu_online_map) 36#define pcibus_to_cpumask(bus) (cpu_online_map)
32 37
@@ -57,10 +62,29 @@ static inline int node_to_first_cpu(int node)
57 62
58extern void __init dump_numa_cpu_topology(void); 63extern void __init dump_numa_cpu_topology(void);
59 64
65extern int sysfs_add_device_to_node(struct sys_device *dev, int nid);
66extern void sysfs_remove_device_from_node(struct sys_device *dev, int nid);
67
60#else 68#else
61 69
70static inline int of_node_to_nid(struct device_node *device)
71{
72 return 0;
73}
74
62static inline void dump_numa_cpu_topology(void) {} 75static inline void dump_numa_cpu_topology(void) {}
63 76
77static inline int sysfs_add_device_to_node(struct sys_device *dev, int nid)
78{
79 return 0;
80}
81
82static inline void sysfs_remove_device_from_node(struct sys_device *dev,
83 int nid)
84{
85}
86
87
64#include <asm-generic/topology.h> 88#include <asm-generic/topology.h>
65 89
66#endif /* CONFIG_NUMA */ 90#endif /* CONFIG_NUMA */
diff --git a/include/asm-powerpc/uaccess.h b/include/asm-powerpc/uaccess.h
index 3872e924cdd6..d83fc29c2bbf 100644
--- a/include/asm-powerpc/uaccess.h
+++ b/include/asm-powerpc/uaccess.h
@@ -7,6 +7,7 @@
7#include <linux/sched.h> 7#include <linux/sched.h>
8#include <linux/errno.h> 8#include <linux/errno.h>
9#include <asm/processor.h> 9#include <asm/processor.h>
10#include <asm/page.h>
10 11
11#define VERIFY_READ 0 12#define VERIFY_READ 0
12#define VERIFY_WRITE 1 13#define VERIFY_WRITE 1
@@ -179,9 +180,11 @@ do { \
179#define __put_user_nocheck(x, ptr, size) \ 180#define __put_user_nocheck(x, ptr, size) \
180({ \ 181({ \
181 long __pu_err; \ 182 long __pu_err; \
182 might_sleep(); \ 183 __typeof__(*(ptr)) __user *__pu_addr = (ptr); \
184 if (!is_kernel_addr((unsigned long)__pu_addr)) \
185 might_sleep(); \
183 __chk_user_ptr(ptr); \ 186 __chk_user_ptr(ptr); \
184 __put_user_size((x), (ptr), (size), __pu_err); \ 187 __put_user_size((x), __pu_addr, (size), __pu_err); \
185 __pu_err; \ 188 __pu_err; \
186}) 189})
187 190
@@ -258,9 +261,11 @@ do { \
258({ \ 261({ \
259 long __gu_err; \ 262 long __gu_err; \
260 unsigned long __gu_val; \ 263 unsigned long __gu_val; \
264 const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \
261 __chk_user_ptr(ptr); \ 265 __chk_user_ptr(ptr); \
262 might_sleep(); \ 266 if (!is_kernel_addr((unsigned long)__gu_addr)) \
263 __get_user_size(__gu_val, (ptr), (size), __gu_err); \ 267 might_sleep(); \
268 __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \
264 (x) = (__typeof__(*(ptr)))__gu_val; \ 269 (x) = (__typeof__(*(ptr)))__gu_val; \
265 __gu_err; \ 270 __gu_err; \
266}) 271})
@@ -270,9 +275,11 @@ do { \
270({ \ 275({ \
271 long __gu_err; \ 276 long __gu_err; \
272 long long __gu_val; \ 277 long long __gu_val; \
278 const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \
273 __chk_user_ptr(ptr); \ 279 __chk_user_ptr(ptr); \
274 might_sleep(); \ 280 if (!is_kernel_addr((unsigned long)__gu_addr)) \
275 __get_user_size(__gu_val, (ptr), (size), __gu_err); \ 281 might_sleep(); \
282 __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \
276 (x) = (__typeof__(*(ptr)))__gu_val; \ 283 (x) = (__typeof__(*(ptr)))__gu_val; \
277 __gu_err; \ 284 __gu_err; \
278}) 285})
diff --git a/include/asm-powerpc/unistd.h b/include/asm-powerpc/unistd.h
index c612f1a62772..908acb44cb8a 100644
--- a/include/asm-powerpc/unistd.h
+++ b/include/asm-powerpc/unistd.h
@@ -303,8 +303,26 @@
303#define __NR_unshare 282 303#define __NR_unshare 282
304#define __NR_splice 283 304#define __NR_splice 283
305#define __NR_tee 284 305#define __NR_tee 284
306#define __NR_vmsplice 285
307#define __NR_openat 286
308#define __NR_mkdirat 287
309#define __NR_mknodat 288
310#define __NR_fchownat 289
311#define __NR_futimesat 290
312#ifdef __powerpc64__
313#define __NR_newfstatat 291
314#else
315#define __NR_fstatat64 291
316#endif
317#define __NR_unlinkat 292
318#define __NR_renameat 293
319#define __NR_linkat 294
320#define __NR_symlinkat 295
321#define __NR_readlinkat 296
322#define __NR_fchmodat 297
323#define __NR_faccessat 298
306 324
307#define __NR_syscalls 285 325#define __NR_syscalls 299
308 326
309#ifdef __KERNEL__ 327#ifdef __KERNEL__
310#define __NR__exit __NR_exit 328#define __NR__exit __NR_exit
@@ -457,6 +475,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6
457#ifdef CONFIG_PPC64 475#ifdef CONFIG_PPC64
458#define __ARCH_WANT_COMPAT_SYS_TIME 476#define __ARCH_WANT_COMPAT_SYS_TIME
459#define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND 477#define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND
478#define __ARCH_WANT_SYS_NEWFSTATAT
460#endif 479#endif
461 480
462/* 481/*
diff --git a/include/asm-ppc/commproc.h b/include/asm-ppc/commproc.h
index 973e60908234..31f362966a58 100644
--- a/include/asm-ppc/commproc.h
+++ b/include/asm-ppc/commproc.h
@@ -35,6 +35,7 @@
35#define CPM_CR_INIT_TX ((ushort)0x0002) 35#define CPM_CR_INIT_TX ((ushort)0x0002)
36#define CPM_CR_HUNT_MODE ((ushort)0x0003) 36#define CPM_CR_HUNT_MODE ((ushort)0x0003)
37#define CPM_CR_STOP_TX ((ushort)0x0004) 37#define CPM_CR_STOP_TX ((ushort)0x0004)
38#define CPM_CR_GRA_STOP_TX ((ushort)0x0005)
38#define CPM_CR_RESTART_TX ((ushort)0x0006) 39#define CPM_CR_RESTART_TX ((ushort)0x0006)
39#define CPM_CR_CLOSE_RX_BD ((ushort)0x0007) 40#define CPM_CR_CLOSE_RX_BD ((ushort)0x0007)
40#define CPM_CR_SET_GADDR ((ushort)0x0008) 41#define CPM_CR_SET_GADDR ((ushort)0x0008)
diff --git a/include/asm-ppc/cpm2.h b/include/asm-ppc/cpm2.h
index b638b87cebe3..c70344b91049 100644
--- a/include/asm-ppc/cpm2.h
+++ b/include/asm-ppc/cpm2.h
@@ -69,7 +69,7 @@
69#define CPM_CR_INIT_TX ((ushort)0x0002) 69#define CPM_CR_INIT_TX ((ushort)0x0002)
70#define CPM_CR_HUNT_MODE ((ushort)0x0003) 70#define CPM_CR_HUNT_MODE ((ushort)0x0003)
71#define CPM_CR_STOP_TX ((ushort)0x0004) 71#define CPM_CR_STOP_TX ((ushort)0x0004)
72#define CPM_CR_GRA_STOP_TX ((ushort)0x0005) 72#define CPM_CR_GRA_STOP_TX ((ushort)0x0005)
73#define CPM_CR_RESTART_TX ((ushort)0x0006) 73#define CPM_CR_RESTART_TX ((ushort)0x0006)
74#define CPM_CR_SET_GADDR ((ushort)0x0008) 74#define CPM_CR_SET_GADDR ((ushort)0x0008)
75#define CPM_CR_START_IDMA ((ushort)0x0009) 75#define CPM_CR_START_IDMA ((ushort)0x0009)
diff --git a/include/asm-ppc/ppc_sys.h b/include/asm-ppc/ppc_sys.h
index 4b94f7059ebe..40f197af6508 100644
--- a/include/asm-ppc/ppc_sys.h
+++ b/include/asm-ppc/ppc_sys.h
@@ -39,6 +39,8 @@
39#error "need definition of ppc_sys_devices" 39#error "need definition of ppc_sys_devices"
40#endif 40#endif
41 41
42#define PPC_SYS_IORESOURCE_FIXUPPED 0x00000001
43
42struct ppc_sys_spec { 44struct ppc_sys_spec {
43 /* PPC sys is matched via (ID & mask) == value, id could be 45 /* PPC sys is matched via (ID & mask) == value, id could be
44 * PVR, SVR, IMMR, * etc. */ 46 * PVR, SVR, IMMR, * etc. */
diff --git a/include/asm-ppc/reg_booke.h b/include/asm-ppc/reg_booke.h
index 00ad9c754c78..4944c0fb8bea 100644
--- a/include/asm-ppc/reg_booke.h
+++ b/include/asm-ppc/reg_booke.h
@@ -237,6 +237,7 @@ do { \
237#endif 237#endif
238 238
239/* Bit definitions for CCR1. */ 239/* Bit definitions for CCR1. */
240#define CCR1_DPC 0x00000100 /* Disable L1 I-Cache/D-Cache parity checking */
240#define CCR1_TCS 0x00000080 /* Timer Clock Select */ 241#define CCR1_TCS 0x00000080 /* Timer Clock Select */
241 242
242/* Bit definitions for the MCSR. */ 243/* Bit definitions for the MCSR. */
diff --git a/include/asm-s390/cache.h b/include/asm-s390/cache.h
index e20cdd9074db..cdf431b061bb 100644
--- a/include/asm-s390/cache.h
+++ b/include/asm-s390/cache.h
@@ -16,4 +16,6 @@
16 16
17#define ARCH_KMALLOC_MINALIGN 8 17#define ARCH_KMALLOC_MINALIGN 8
18 18
19#define __read_mostly __attribute__((__section__(".data.read_mostly")))
20
19#endif 21#endif
diff --git a/include/asm-s390/futex.h b/include/asm-s390/futex.h
index 6a332a9f099c..40c25e166a9b 100644
--- a/include/asm-s390/futex.h
+++ b/include/asm-s390/futex.h
@@ -1,6 +1,121 @@
1#ifndef _ASM_FUTEX_H 1#ifndef _ASM_S390_FUTEX_H
2#define _ASM_FUTEX_H 2#define _ASM_S390_FUTEX_H
3 3
4#include <asm-generic/futex.h> 4#ifdef __KERNEL__
5 5
6#endif 6#include <linux/futex.h>
7#include <asm/errno.h>
8#include <asm/uaccess.h>
9
10#ifndef __s390x__
11#define __futex_atomic_fixup \
12 ".section __ex_table,\"a\"\n" \
13 " .align 4\n" \
14 " .long 0b,2b,1b,2b\n" \
15 ".previous"
16#else /* __s390x__ */
17#define __futex_atomic_fixup \
18 ".section __ex_table,\"a\"\n" \
19 " .align 8\n" \
20 " .quad 0b,2b,1b,2b\n" \
21 ".previous"
22#endif /* __s390x__ */
23
24#define __futex_atomic_op(insn, ret, oldval, newval, uaddr, oparg) \
25 asm volatile(" l %1,0(%6)\n" \
26 "0: " insn \
27 " cs %1,%2,0(%6)\n" \
28 "1: jl 0b\n" \
29 " lhi %0,0\n" \
30 "2:\n" \
31 __futex_atomic_fixup \
32 : "=d" (ret), "=&d" (oldval), "=&d" (newval), \
33 "=m" (*uaddr) \
34 : "0" (-EFAULT), "d" (oparg), "a" (uaddr), \
35 "m" (*uaddr) : "cc" );
36
37static inline int futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
38{
39 int op = (encoded_op >> 28) & 7;
40 int cmp = (encoded_op >> 24) & 15;
41 int oparg = (encoded_op << 8) >> 20;
42 int cmparg = (encoded_op << 20) >> 20;
43 int oldval = 0, newval, ret;
44 if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
45 oparg = 1 << oparg;
46
47 if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
48 return -EFAULT;
49
50 inc_preempt_count();
51
52 switch (op) {
53 case FUTEX_OP_SET:
54 __futex_atomic_op("lr %2,%5\n",
55 ret, oldval, newval, uaddr, oparg);
56 break;
57 case FUTEX_OP_ADD:
58 __futex_atomic_op("lr %2,%1\nar %2,%5\n",
59 ret, oldval, newval, uaddr, oparg);
60 break;
61 case FUTEX_OP_OR:
62 __futex_atomic_op("lr %2,%1\nor %2,%5\n",
63 ret, oldval, newval, uaddr, oparg);
64 break;
65 case FUTEX_OP_ANDN:
66 __futex_atomic_op("lr %2,%1\nnr %2,%5\n",
67 ret, oldval, newval, uaddr, oparg);
68 break;
69 case FUTEX_OP_XOR:
70 __futex_atomic_op("lr %2,%1\nxr %2,%5\n",
71 ret, oldval, newval, uaddr, oparg);
72 break;
73 default:
74 ret = -ENOSYS;
75 }
76
77 dec_preempt_count();
78
79 if (!ret) {
80 switch (cmp) {
81 case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
82 case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
83 case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
84 case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
85 case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
86 case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
87 default: ret = -ENOSYS;
88 }
89 }
90 return ret;
91}
92
93static inline int
94futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
95{
96 int ret;
97
98 if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
99 return -EFAULT;
100 asm volatile(" cs %1,%4,0(%5)\n"
101 "0: lr %0,%1\n"
102 "1:\n"
103#ifndef __s390x__
104 ".section __ex_table,\"a\"\n"
105 " .align 4\n"
106 " .long 0b,1b\n"
107 ".previous"
108#else /* __s390x__ */
109 ".section __ex_table,\"a\"\n"
110 " .align 8\n"
111 " .quad 0b,1b\n"
112 ".previous"
113#endif /* __s390x__ */
114 : "=d" (ret), "+d" (oldval), "=m" (*uaddr)
115 : "0" (-EFAULT), "d" (newval), "a" (uaddr), "m" (*uaddr)
116 : "cc", "memory" );
117 return oldval;
118}
119
120#endif /* __KERNEL__ */
121#endif /* _ASM_S390_FUTEX_H */
diff --git a/include/asm-sparc/unistd.h b/include/asm-sparc/unistd.h
index 45feff893b8e..f5611a721fbd 100644
--- a/include/asm-sparc/unistd.h
+++ b/include/asm-sparc/unistd.h
@@ -41,7 +41,7 @@
41#define __NR_capset 22 /* Linux Specific */ 41#define __NR_capset 22 /* Linux Specific */
42#define __NR_setuid 23 /* Implemented via setreuid in SunOS */ 42#define __NR_setuid 23 /* Implemented via setreuid in SunOS */
43#define __NR_getuid 24 /* Common */ 43#define __NR_getuid 24 /* Common */
44/* #define __NR_time alias 25 ENOSYS under SunOS */ 44#define __NR_vmsplice 25 /* ENOSYS under SunOS */
45#define __NR_ptrace 26 /* Common */ 45#define __NR_ptrace 26 /* Common */
46#define __NR_alarm 27 /* Implemented via setitimer in SunOS */ 46#define __NR_alarm 27 /* Implemented via setitimer in SunOS */
47#define __NR_sigaltstack 28 /* Common */ 47#define __NR_sigaltstack 28 /* Common */
@@ -271,7 +271,7 @@
271#define __NR_getsid 252 271#define __NR_getsid 252
272#define __NR_fdatasync 253 272#define __NR_fdatasync 253
273#define __NR_nfsservctl 254 273#define __NR_nfsservctl 254
274#define __NR_sys_sync_file_range 255 274#define __NR_sync_file_range 255
275#define __NR_clock_settime 256 275#define __NR_clock_settime 256
276#define __NR_clock_gettime 257 276#define __NR_clock_gettime 257
277#define __NR_clock_getres 258 277#define __NR_clock_getres 258
diff --git a/include/asm-sparc64/tlbflush.h b/include/asm-sparc64/tlbflush.h
index 9ad5d9c51d42..e3a7c453b500 100644
--- a/include/asm-sparc64/tlbflush.h
+++ b/include/asm-sparc64/tlbflush.h
@@ -22,8 +22,6 @@ extern void flush_tlb_pending(void);
22/* Local cpu only. */ 22/* Local cpu only. */
23extern void __flush_tlb_all(void); 23extern void __flush_tlb_all(void);
24 24
25extern void __flush_tlb_page(unsigned long context, unsigned long page, unsigned long r);
26
27extern void __flush_tlb_kernel_range(unsigned long start, unsigned long end); 25extern void __flush_tlb_kernel_range(unsigned long start, unsigned long end);
28 26
29#ifndef CONFIG_SMP 27#ifndef CONFIG_SMP
diff --git a/include/asm-sparc64/unistd.h b/include/asm-sparc64/unistd.h
index 597f6923a46e..68705748bec0 100644
--- a/include/asm-sparc64/unistd.h
+++ b/include/asm-sparc64/unistd.h
@@ -41,7 +41,7 @@
41#define __NR_capset 22 /* Linux Specific */ 41#define __NR_capset 22 /* Linux Specific */
42#define __NR_setuid 23 /* Implemented via setreuid in SunOS */ 42#define __NR_setuid 23 /* Implemented via setreuid in SunOS */
43#define __NR_getuid 24 /* Common */ 43#define __NR_getuid 24 /* Common */
44/* #define __NR_time alias 25 ENOSYS under SunOS */ 44#define __NR_vmsplice 25 /* ENOSYS under SunOS */
45#define __NR_ptrace 26 /* Common */ 45#define __NR_ptrace 26 /* Common */
46#define __NR_alarm 27 /* Implemented via setitimer in SunOS */ 46#define __NR_alarm 27 /* Implemented via setitimer in SunOS */
47#define __NR_sigaltstack 28 /* Common */ 47#define __NR_sigaltstack 28 /* Common */
@@ -273,7 +273,7 @@
273#define __NR_getsid 252 273#define __NR_getsid 252
274#define __NR_fdatasync 253 274#define __NR_fdatasync 253
275#define __NR_nfsservctl 254 275#define __NR_nfsservctl 254
276#define __NR_sys_sync_file_range 255 276#define __NR_sync_file_range 255
277#define __NR_clock_settime 256 277#define __NR_clock_settime 256
278#define __NR_clock_gettime 257 278#define __NR_clock_gettime 257
279#define __NR_clock_getres 258 279#define __NR_clock_getres 258
diff --git a/include/asm-x86_64/unistd.h b/include/asm-x86_64/unistd.h
index 98c36eae567c..feb77cb8c044 100644
--- a/include/asm-x86_64/unistd.h
+++ b/include/asm-x86_64/unistd.h
@@ -615,8 +615,10 @@ __SYSCALL(__NR_splice, sys_splice)
615__SYSCALL(__NR_tee, sys_tee) 615__SYSCALL(__NR_tee, sys_tee)
616#define __NR_sync_file_range 277 616#define __NR_sync_file_range 277
617__SYSCALL(__NR_sync_file_range, sys_sync_file_range) 617__SYSCALL(__NR_sync_file_range, sys_sync_file_range)
618#define __NR_vmsplice 278
619__SYSCALL(__NR_vmsplice, sys_vmsplice)
618 620
619#define __NR_syscall_max __NR_sync_file_range 621#define __NR_syscall_max __NR_vmsplice
620 622
621#ifndef __NO_STUBS 623#ifndef __NO_STUBS
622 624
diff --git a/include/asm-xtensa/signal.h b/include/asm-xtensa/signal.h
index 5d6fc9cdf58d..a99c9aec64ec 100644
--- a/include/asm-xtensa/signal.h
+++ b/include/asm-xtensa/signal.h
@@ -118,9 +118,9 @@ typedef struct {
118 * SA_INTERRUPT is also used by the irq handling routines. 118 * SA_INTERRUPT is also used by the irq handling routines.
119 * SA_SHIRQ is for shared interrupt support on PCI and EISA. 119 * SA_SHIRQ is for shared interrupt support on PCI and EISA.
120 */ 120 */
121#define SA_PROBE SA_ONESHOT
122#define SA_SAMPLE_RANDOM SA_RESTART 121#define SA_SAMPLE_RANDOM SA_RESTART
123#define SA_SHIRQ 0x04000000 122#define SA_SHIRQ 0x04000000
123#define SA_PROBEIRQ 0x08000000
124#endif 124#endif
125 125
126#define SIG_BLOCK 0 /* for blocking signals */ 126#define SIG_BLOCK 0 /* for blocking signals */
diff --git a/include/linux/audit.h b/include/linux/audit.h
index 1c47c59058c1..b74c148f14e3 100644
--- a/include/linux/audit.h
+++ b/include/linux/audit.h
@@ -83,6 +83,7 @@
83#define AUDIT_CONFIG_CHANGE 1305 /* Audit system configuration change */ 83#define AUDIT_CONFIG_CHANGE 1305 /* Audit system configuration change */
84#define AUDIT_SOCKADDR 1306 /* sockaddr copied as syscall arg */ 84#define AUDIT_SOCKADDR 1306 /* sockaddr copied as syscall arg */
85#define AUDIT_CWD 1307 /* Current working directory */ 85#define AUDIT_CWD 1307 /* Current working directory */
86#define AUDIT_IPC_SET_PERM 1311 /* IPC new permissions record type */
86 87
87#define AUDIT_AVC 1400 /* SE Linux avc denial or grant */ 88#define AUDIT_AVC 1400 /* SE Linux avc denial or grant */
88#define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */ 89#define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */
@@ -145,6 +146,11 @@
145#define AUDIT_PERS 10 146#define AUDIT_PERS 10
146#define AUDIT_ARCH 11 147#define AUDIT_ARCH 11
147#define AUDIT_MSGTYPE 12 148#define AUDIT_MSGTYPE 12
149#define AUDIT_SE_USER 13 /* security label user */
150#define AUDIT_SE_ROLE 14 /* security label role */
151#define AUDIT_SE_TYPE 15 /* security label type */
152#define AUDIT_SE_SEN 16 /* security label sensitivity label */
153#define AUDIT_SE_CLR 17 /* security label clearance label */
148 154
149 /* These are ONLY useful when checking 155 /* These are ONLY useful when checking
150 * at syscall exit time (AUDIT_AT_EXIT). */ 156 * at syscall exit time (AUDIT_AT_EXIT). */
@@ -287,10 +293,10 @@ struct netlink_skb_parms;
287 /* Public API */ 293 /* Public API */
288extern int audit_alloc(struct task_struct *task); 294extern int audit_alloc(struct task_struct *task);
289extern void audit_free(struct task_struct *task); 295extern void audit_free(struct task_struct *task);
290extern void audit_syscall_entry(struct task_struct *task, int arch, 296extern void audit_syscall_entry(int arch,
291 int major, unsigned long a0, unsigned long a1, 297 int major, unsigned long a0, unsigned long a1,
292 unsigned long a2, unsigned long a3); 298 unsigned long a2, unsigned long a3);
293extern void audit_syscall_exit(struct task_struct *task, int failed, long return_code); 299extern void audit_syscall_exit(int failed, long return_code);
294extern void audit_getname(const char *name); 300extern void audit_getname(const char *name);
295extern void audit_putname(const char *name); 301extern void audit_putname(const char *name);
296extern void __audit_inode(const char *name, const struct inode *inode, unsigned flags); 302extern void __audit_inode(const char *name, const struct inode *inode, unsigned flags);
@@ -314,7 +320,8 @@ extern void auditsc_get_stamp(struct audit_context *ctx,
314 struct timespec *t, unsigned int *serial); 320 struct timespec *t, unsigned int *serial);
315extern int audit_set_loginuid(struct task_struct *task, uid_t loginuid); 321extern int audit_set_loginuid(struct task_struct *task, uid_t loginuid);
316extern uid_t audit_get_loginuid(struct audit_context *ctx); 322extern uid_t audit_get_loginuid(struct audit_context *ctx);
317extern int audit_ipc_perms(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode, struct kern_ipc_perm *ipcp); 323extern int audit_ipc_obj(struct kern_ipc_perm *ipcp);
324extern int audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode, struct kern_ipc_perm *ipcp);
318extern int audit_socketcall(int nargs, unsigned long *args); 325extern int audit_socketcall(int nargs, unsigned long *args);
319extern int audit_sockaddr(int len, void *addr); 326extern int audit_sockaddr(int len, void *addr);
320extern int audit_avc_path(struct dentry *dentry, struct vfsmount *mnt); 327extern int audit_avc_path(struct dentry *dentry, struct vfsmount *mnt);
@@ -323,8 +330,8 @@ extern int audit_set_macxattr(const char *name);
323#else 330#else
324#define audit_alloc(t) ({ 0; }) 331#define audit_alloc(t) ({ 0; })
325#define audit_free(t) do { ; } while (0) 332#define audit_free(t) do { ; } while (0)
326#define audit_syscall_entry(t,ta,a,b,c,d,e) do { ; } while (0) 333#define audit_syscall_entry(ta,a,b,c,d,e) do { ; } while (0)
327#define audit_syscall_exit(t,f,r) do { ; } while (0) 334#define audit_syscall_exit(f,r) do { ; } while (0)
328#define audit_getname(n) do { ; } while (0) 335#define audit_getname(n) do { ; } while (0)
329#define audit_putname(n) do { ; } while (0) 336#define audit_putname(n) do { ; } while (0)
330#define __audit_inode(n,i,f) do { ; } while (0) 337#define __audit_inode(n,i,f) do { ; } while (0)
@@ -333,7 +340,8 @@ extern int audit_set_macxattr(const char *name);
333#define audit_inode_child(d,i,p) do { ; } while (0) 340#define audit_inode_child(d,i,p) do { ; } while (0)
334#define auditsc_get_stamp(c,t,s) do { BUG(); } while (0) 341#define auditsc_get_stamp(c,t,s) do { BUG(); } while (0)
335#define audit_get_loginuid(c) ({ -1; }) 342#define audit_get_loginuid(c) ({ -1; })
336#define audit_ipc_perms(q,u,g,m,i) ({ 0; }) 343#define audit_ipc_obj(i) ({ 0; })
344#define audit_ipc_set_perm(q,u,g,m,i) ({ 0; })
337#define audit_socketcall(n,a) ({ 0; }) 345#define audit_socketcall(n,a) ({ 0; })
338#define audit_sockaddr(len, addr) ({ 0; }) 346#define audit_sockaddr(len, addr) ({ 0; })
339#define audit_avc_path(dentry, mnt) ({ 0; }) 347#define audit_avc_path(dentry, mnt) ({ 0; })
@@ -366,7 +374,7 @@ extern void audit_log_d_path(struct audit_buffer *ab,
366extern int audit_filter_user(struct netlink_skb_parms *cb, int type); 374extern int audit_filter_user(struct netlink_skb_parms *cb, int type);
367extern int audit_filter_type(int type); 375extern int audit_filter_type(int type);
368extern int audit_receive_filter(int type, int pid, int uid, int seq, 376extern int audit_receive_filter(int type, int pid, int uid, int seq,
369 void *data, size_t datasz, uid_t loginuid); 377 void *data, size_t datasz, uid_t loginuid, u32 sid);
370#else 378#else
371#define audit_log(c,g,t,f,...) do { ; } while (0) 379#define audit_log(c,g,t,f,...) do { ; } while (0)
372#define audit_log_start(c,g,t) ({ NULL; }) 380#define audit_log_start(c,g,t) ({ NULL; })
diff --git a/include/linux/debugfs.h b/include/linux/debugfs.h
index 176e2d371577..047567d34ca7 100644
--- a/include/linux/debugfs.h
+++ b/include/linux/debugfs.h
@@ -58,9 +58,8 @@ struct dentry *debugfs_create_blob(const char *name, mode_t mode,
58 */ 58 */
59 59
60static inline struct dentry *debugfs_create_file(const char *name, mode_t mode, 60static inline struct dentry *debugfs_create_file(const char *name, mode_t mode,
61 struct dentry *parent, 61 struct dentry *parent, void *data,
62 void *data, 62 const struct file_operations *fops)
63 struct file_operations *fops)
64{ 63{
65 return ERR_PTR(-ENODEV); 64 return ERR_PTR(-ENODEV);
66} 65}
diff --git a/include/linux/fs_uart_pd.h b/include/linux/fs_uart_pd.h
new file mode 100644
index 000000000000..f5975126b712
--- /dev/null
+++ b/include/linux/fs_uart_pd.h
@@ -0,0 +1,60 @@
1/*
2 * Platform information definitions for the CPM Uart driver.
3 *
4 * 2006 (c) MontaVista Software, Inc.
5 * Vitaly Bordug <vbordug@ru.mvista.com>
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#ifndef FS_UART_PD_H
13#define FS_UART_PD_H
14
15#include <linux/version.h>
16#include <asm/types.h>
17
18enum fs_uart_id {
19 fsid_smc1_uart,
20 fsid_smc2_uart,
21 fsid_scc1_uart,
22 fsid_scc2_uart,
23 fsid_scc3_uart,
24 fsid_scc4_uart,
25 fs_uart_nr,
26};
27
28static inline int fs_uart_id_scc2fsid(int id)
29{
30 return fsid_scc1_uart + id - 1;
31}
32
33static inline int fs_uart_id_fsid2scc(int id)
34{
35 return id - fsid_scc1_uart + 1;
36}
37
38static inline int fs_uart_id_smc2fsid(int id)
39{
40 return fsid_smc1_uart + id - 1;
41}
42
43static inline int fs_uart_id_fsid2smc(int id)
44{
45 return id - fsid_smc1_uart + 1;
46}
47
48struct fs_uart_platform_info {
49 void(*init_ioports)(void);
50 /* device specific information */
51 int fs_no; /* controller index */
52 u32 uart_clk;
53 u8 tx_num_fifo;
54 u8 tx_buf_size;
55 u8 rx_num_fifo;
56 u8 rx_buf_size;
57 u8 brg;
58};
59
60#endif
diff --git a/include/linux/input.h b/include/linux/input.h
index b0e612dda0cf..50e338d2ffda 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -12,8 +12,6 @@
12#ifdef __KERNEL__ 12#ifdef __KERNEL__
13#include <linux/time.h> 13#include <linux/time.h>
14#include <linux/list.h> 14#include <linux/list.h>
15#include <linux/device.h>
16#include <linux/mod_devicetable.h>
17#else 15#else
18#include <sys/time.h> 16#include <sys/time.h>
19#include <sys/ioctl.h> 17#include <sys/ioctl.h>
@@ -58,6 +56,8 @@ struct input_absinfo {
58 56
59#define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */ 57#define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */
60#define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */ 58#define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */
59#define EVIOCGREP _IOR('E', 0x03, int[2]) /* get repeat settings */
60#define EVIOCSREP _IOW('E', 0x03, int[2]) /* set repeat settings */
61#define EVIOCGKEYCODE _IOR('E', 0x04, int[2]) /* get keycode */ 61#define EVIOCGKEYCODE _IOR('E', 0x04, int[2]) /* get keycode */
62#define EVIOCSKEYCODE _IOW('E', 0x04, int[2]) /* set keycode */ 62#define EVIOCSKEYCODE _IOW('E', 0x04, int[2]) /* set keycode */
63 63
@@ -577,15 +577,15 @@ struct input_absinfo {
577 * Switch events 577 * Switch events
578 */ 578 */
579 579
580#define SW_0 0x00 580#define SW_0 0x00
581#define SW_1 0x01 581#define SW_1 0x01
582#define SW_2 0x02 582#define SW_2 0x02
583#define SW_3 0x03 583#define SW_3 0x03
584#define SW_4 0x04 584#define SW_4 0x04
585#define SW_5 0x05 585#define SW_5 0x05
586#define SW_6 0x06 586#define SW_6 0x06
587#define SW_7 0x07 587#define SW_7 0x07
588#define SW_MAX 0x0f 588#define SW_MAX 0x0f
589 589
590/* 590/*
591 * Misc events 591 * Misc events
@@ -805,52 +805,16 @@ struct ff_effect {
805 805
806#define FF_MAX 0x7f 806#define FF_MAX 0x7f
807 807
808struct input_device_id {
809
810 kernel_ulong_t flags;
811
812 struct input_id id;
813
814 kernel_ulong_t evbit[EV_MAX/BITS_PER_LONG+1];
815 kernel_ulong_t keybit[KEY_MAX/BITS_PER_LONG+1];
816 kernel_ulong_t relbit[REL_MAX/BITS_PER_LONG+1];
817 kernel_ulong_t absbit[ABS_MAX/BITS_PER_LONG+1];
818 kernel_ulong_t mscbit[MSC_MAX/BITS_PER_LONG+1];
819 kernel_ulong_t ledbit[LED_MAX/BITS_PER_LONG+1];
820 kernel_ulong_t sndbit[SND_MAX/BITS_PER_LONG+1];
821 kernel_ulong_t ffbit[FF_MAX/BITS_PER_LONG+1];
822 kernel_ulong_t swbit[SW_MAX/BITS_PER_LONG+1];
823
824 kernel_ulong_t driver_info;
825};
826
827/*
828 * Structure for hotplug & device<->driver matching.
829 */
830
831#define INPUT_DEVICE_ID_MATCH_BUS 1
832#define INPUT_DEVICE_ID_MATCH_VENDOR 2
833#define INPUT_DEVICE_ID_MATCH_PRODUCT 4
834#define INPUT_DEVICE_ID_MATCH_VERSION 8
835
836#define INPUT_DEVICE_ID_MATCH_EVBIT 0x010
837#define INPUT_DEVICE_ID_MATCH_KEYBIT 0x020
838#define INPUT_DEVICE_ID_MATCH_RELBIT 0x040
839#define INPUT_DEVICE_ID_MATCH_ABSBIT 0x080
840#define INPUT_DEVICE_ID_MATCH_MSCIT 0x100
841#define INPUT_DEVICE_ID_MATCH_LEDBIT 0x200
842#define INPUT_DEVICE_ID_MATCH_SNDBIT 0x400
843#define INPUT_DEVICE_ID_MATCH_FFBIT 0x800
844#define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000
845
846#ifdef __KERNEL__ 808#ifdef __KERNEL__
847 809
848/* 810/*
849 * In-kernel definitions. 811 * In-kernel definitions.
850 */ 812 */
851 813
814#include <linux/device.h>
852#include <linux/fs.h> 815#include <linux/fs.h>
853#include <linux/timer.h> 816#include <linux/timer.h>
817#include <linux/mod_devicetable.h>
854 818
855#define NBITS(x) (((x)/BITS_PER_LONG)+1) 819#define NBITS(x) (((x)/BITS_PER_LONG)+1)
856#define BIT(x) (1UL<<((x)%BITS_PER_LONG)) 820#define BIT(x) (1UL<<((x)%BITS_PER_LONG))
@@ -951,9 +915,49 @@ struct input_dev {
951}; 915};
952#define to_input_dev(d) container_of(d, struct input_dev, cdev) 916#define to_input_dev(d) container_of(d, struct input_dev, cdev)
953 917
954#define INPUT_DEVICE_ID_MATCH_DEVICE\ 918/*
919 * Verify that we are in sync with input_device_id mod_devicetable.h #defines
920 */
921
922#if EV_MAX != INPUT_DEVICE_ID_EV_MAX
923#error "EV_MAX and INPUT_DEVICE_ID_EV_MAX do not match"
924#endif
925
926#if KEY_MAX != INPUT_DEVICE_ID_KEY_MAX
927#error "KEY_MAX and INPUT_DEVICE_ID_KEY_MAX do not match"
928#endif
929
930#if REL_MAX != INPUT_DEVICE_ID_REL_MAX
931#error "REL_MAX and INPUT_DEVICE_ID_REL_MAX do not match"
932#endif
933
934#if ABS_MAX != INPUT_DEVICE_ID_ABS_MAX
935#error "ABS_MAX and INPUT_DEVICE_ID_ABS_MAX do not match"
936#endif
937
938#if MSC_MAX != INPUT_DEVICE_ID_MSC_MAX
939#error "MSC_MAX and INPUT_DEVICE_ID_MSC_MAX do not match"
940#endif
941
942#if LED_MAX != INPUT_DEVICE_ID_LED_MAX
943#error "LED_MAX and INPUT_DEVICE_ID_LED_MAX do not match"
944#endif
945
946#if SND_MAX != INPUT_DEVICE_ID_SND_MAX
947#error "SND_MAX and INPUT_DEVICE_ID_SND_MAX do not match"
948#endif
949
950#if FF_MAX != INPUT_DEVICE_ID_FF_MAX
951#error "FF_MAX and INPUT_DEVICE_ID_FF_MAX do not match"
952#endif
953
954#if SW_MAX != INPUT_DEVICE_ID_SW_MAX
955#error "SW_MAX and INPUT_DEVICE_ID_SW_MAX do not match"
956#endif
957
958#define INPUT_DEVICE_ID_MATCH_DEVICE \
955 (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT) 959 (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT)
956#define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION\ 960#define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION \
957 (INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION) 961 (INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION)
958 962
959struct input_handle; 963struct input_handle;
@@ -1016,7 +1020,8 @@ static inline void input_put_device(struct input_dev *dev)
1016 1020
1017static inline void input_free_device(struct input_dev *dev) 1021static inline void input_free_device(struct input_dev *dev)
1018{ 1022{
1019 input_put_device(dev); 1023 if (dev)
1024 input_put_device(dev);
1020} 1025}
1021 1026
1022int input_register_device(struct input_dev *); 1027int input_register_device(struct input_dev *);
diff --git a/include/linux/kobject.h b/include/linux/kobject.h
index dcd0623be892..c187c53cecd0 100644
--- a/include/linux/kobject.h
+++ b/include/linux/kobject.h
@@ -257,9 +257,8 @@ struct subsys_attribute {
257}; 257};
258 258
259extern int subsys_create_file(struct subsystem * , struct subsys_attribute *); 259extern int subsys_create_file(struct subsystem * , struct subsys_attribute *);
260extern void subsys_remove_file(struct subsystem * , struct subsys_attribute *);
261 260
262#if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET) 261#if defined(CONFIG_HOTPLUG)
263void kobject_uevent(struct kobject *kobj, enum kobject_action action); 262void kobject_uevent(struct kobject *kobj, enum kobject_action action);
264 263
265int add_uevent_var(char **envp, int num_envp, int *cur_index, 264int add_uevent_var(char **envp, int num_envp, int *cur_index,
diff --git a/include/linux/list.h b/include/linux/list.h
index 67258b47e9ca..76f05718342c 100644
--- a/include/linux/list.h
+++ b/include/linux/list.h
@@ -619,7 +619,7 @@ static inline void hlist_del_rcu(struct hlist_node *n)
619 619
620static inline void hlist_del_init(struct hlist_node *n) 620static inline void hlist_del_init(struct hlist_node *n)
621{ 621{
622 if (n->pprev) { 622 if (!hlist_unhashed(n)) {
623 __hlist_del(n); 623 __hlist_del(n);
624 INIT_HLIST_NODE(n); 624 INIT_HLIST_NODE(n);
625 } 625 }
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index 30dd978c1ec8..991a37382a22 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -28,6 +28,7 @@ struct mmc_csd {
28 unsigned short cmdclass; 28 unsigned short cmdclass;
29 unsigned short tacc_clks; 29 unsigned short tacc_clks;
30 unsigned int tacc_ns; 30 unsigned int tacc_ns;
31 unsigned int r2w_factor;
31 unsigned int max_dtr; 32 unsigned int max_dtr;
32 unsigned int read_blkbits; 33 unsigned int read_blkbits;
33 unsigned int write_blkbits; 34 unsigned int write_blkbits;
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
index 7b08c11ec4cc..f6977708585c 100644
--- a/include/linux/mod_devicetable.h
+++ b/include/linux/mod_devicetable.h
@@ -249,4 +249,52 @@ struct i2c_device_id {
249 __u16 id; 249 __u16 id;
250}; 250};
251 251
252/* Input */
253#define INPUT_DEVICE_ID_EV_MAX 0x1f
254#define INPUT_DEVICE_ID_KEY_MAX 0x1ff
255#define INPUT_DEVICE_ID_REL_MAX 0x0f
256#define INPUT_DEVICE_ID_ABS_MAX 0x3f
257#define INPUT_DEVICE_ID_MSC_MAX 0x07
258#define INPUT_DEVICE_ID_LED_MAX 0x0f
259#define INPUT_DEVICE_ID_SND_MAX 0x07
260#define INPUT_DEVICE_ID_FF_MAX 0x7f
261#define INPUT_DEVICE_ID_SW_MAX 0x0f
262
263#define INPUT_DEVICE_ID_MATCH_BUS 1
264#define INPUT_DEVICE_ID_MATCH_VENDOR 2
265#define INPUT_DEVICE_ID_MATCH_PRODUCT 4
266#define INPUT_DEVICE_ID_MATCH_VERSION 8
267
268#define INPUT_DEVICE_ID_MATCH_EVBIT 0x0010
269#define INPUT_DEVICE_ID_MATCH_KEYBIT 0x0020
270#define INPUT_DEVICE_ID_MATCH_RELBIT 0x0040
271#define INPUT_DEVICE_ID_MATCH_ABSBIT 0x0080
272#define INPUT_DEVICE_ID_MATCH_MSCIT 0x0100
273#define INPUT_DEVICE_ID_MATCH_LEDBIT 0x0200
274#define INPUT_DEVICE_ID_MATCH_SNDBIT 0x0400
275#define INPUT_DEVICE_ID_MATCH_FFBIT 0x0800
276#define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000
277
278struct input_device_id {
279
280 kernel_ulong_t flags;
281
282 __u16 bustype;
283 __u16 vendor;
284 __u16 product;
285 __u16 version;
286
287 kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1];
288 kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1];
289 kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1];
290 kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1];
291 kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1];
292 kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1];
293 kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1];
294 kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1];
295 kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1];
296
297 kernel_ulong_t driver_info;
298};
299
252#endif /* LINUX_MOD_DEVICETABLE_H */ 300#endif /* LINUX_MOD_DEVICETABLE_H */
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 40ccf8cc4239..01db7b88a2b1 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -829,19 +829,21 @@ static inline void netif_rx_schedule(struct net_device *dev)
829 __netif_rx_schedule(dev); 829 __netif_rx_schedule(dev);
830} 830}
831 831
832/* Try to reschedule poll. Called by dev->poll() after netif_rx_complete(). 832
833 * Do not inline this? 833static inline void __netif_rx_reschedule(struct net_device *dev, int undo)
834 */ 834{
835 dev->quota += undo;
836 list_add_tail(&dev->poll_list, &__get_cpu_var(softnet_data).poll_list);
837 __raise_softirq_irqoff(NET_RX_SOFTIRQ);
838}
839
840/* Try to reschedule poll. Called by dev->poll() after netif_rx_complete(). */
835static inline int netif_rx_reschedule(struct net_device *dev, int undo) 841static inline int netif_rx_reschedule(struct net_device *dev, int undo)
836{ 842{
837 if (netif_rx_schedule_prep(dev)) { 843 if (netif_rx_schedule_prep(dev)) {
838 unsigned long flags; 844 unsigned long flags;
839
840 dev->quota += undo;
841
842 local_irq_save(flags); 845 local_irq_save(flags);
843 list_add_tail(&dev->poll_list, &__get_cpu_var(softnet_data).poll_list); 846 __netif_rx_reschedule(dev, undo);
844 __raise_softirq_irqoff(NET_RX_SOFTIRQ);
845 local_irq_restore(flags); 847 local_irq_restore(flags);
846 return 1; 848 return 1;
847 } 849 }
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h
index f6bdef82a322..48cc32d83f77 100644
--- a/include/linux/netfilter/x_tables.h
+++ b/include/linux/netfilter/x_tables.h
@@ -337,6 +337,10 @@ struct compat_xt_entry_match
337 char name[XT_FUNCTION_MAXNAMELEN - 1]; 337 char name[XT_FUNCTION_MAXNAMELEN - 1];
338 u_int8_t revision; 338 u_int8_t revision;
339 } user; 339 } user;
340 struct {
341 u_int16_t match_size;
342 compat_uptr_t match;
343 } kernel;
340 u_int16_t match_size; 344 u_int16_t match_size;
341 } u; 345 } u;
342 unsigned char data[0]; 346 unsigned char data[0];
@@ -350,6 +354,10 @@ struct compat_xt_entry_target
350 char name[XT_FUNCTION_MAXNAMELEN - 1]; 354 char name[XT_FUNCTION_MAXNAMELEN - 1];
351 u_int8_t revision; 355 u_int8_t revision;
352 } user; 356 } user;
357 struct {
358 u_int16_t target_size;
359 compat_uptr_t target;
360 } kernel;
353 u_int16_t target_size; 361 u_int16_t target_size;
354 } u; 362 } u;
355 unsigned char data[0]; 363 unsigned char data[0];
@@ -361,7 +369,11 @@ struct compat_xt_entry_target
361 369
362struct compat_xt_counters 370struct compat_xt_counters
363{ 371{
372#if defined(CONFIG_X86_64) || defined(CONFIG_IA64)
364 u_int32_t cnt[4]; 373 u_int32_t cnt[4];
374#else
375 u_int64_t cnt[2];
376#endif
365}; 377};
366 378
367struct compat_xt_counters_info 379struct compat_xt_counters_info
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h b/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h
index 0bd828081c0c..c6e9a0b6d30b 100644
--- a/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h
+++ b/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h
@@ -2,7 +2,7 @@
2 * ip_conntrack_helper_h323_asn1.h - BER and PER decoding library for H.323 2 * ip_conntrack_helper_h323_asn1.h - BER and PER decoding library for H.323
3 * conntrack/NAT module. 3 * conntrack/NAT module.
4 * 4 *
5 * Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@hotmail.com> 5 * Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@users.sourceforge.net>
6 * 6 *
7 * This source code is licensed under General Public License version 2. 7 * This source code is licensed under General Public License version 2.
8 * 8 *
diff --git a/include/linux/netlink.h b/include/linux/netlink.h
index f8f3d1c927f8..87b8a5703ebc 100644
--- a/include/linux/netlink.h
+++ b/include/linux/netlink.h
@@ -143,6 +143,7 @@ struct netlink_skb_parms
143 __u32 dst_group; 143 __u32 dst_group;
144 kernel_cap_t eff_cap; 144 kernel_cap_t eff_cap;
145 __u32 loginuid; /* Login (audit) uid */ 145 __u32 loginuid; /* Login (audit) uid */
146 __u32 sid; /* SELinux security id */
146}; 147};
147 148
148#define NETLINK_CB(skb) (*(struct netlink_skb_parms*)&((skb)->cb)) 149#define NETLINK_CB(skb) (*(struct netlink_skb_parms*)&((skb)->cb))
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
index 9539efd4f7e6..7a1af574dedf 100644
--- a/include/linux/pagemap.h
+++ b/include/linux/pagemap.h
@@ -78,6 +78,8 @@ extern struct page * find_or_create_page(struct address_space *mapping,
78 unsigned long index, gfp_t gfp_mask); 78 unsigned long index, gfp_t gfp_mask);
79unsigned find_get_pages(struct address_space *mapping, pgoff_t start, 79unsigned find_get_pages(struct address_space *mapping, pgoff_t start,
80 unsigned int nr_pages, struct page **pages); 80 unsigned int nr_pages, struct page **pages);
81unsigned find_get_pages_contig(struct address_space *mapping, pgoff_t start,
82 unsigned int nr_pages, struct page **pages);
81unsigned find_get_pages_tag(struct address_space *mapping, pgoff_t *index, 83unsigned find_get_pages_tag(struct address_space *mapping, pgoff_t *index,
82 int tag, unsigned int nr_pages, struct page **pages); 84 int tag, unsigned int nr_pages, struct page **pages);
83 85
diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h
index ef7f33c0be19..ea4f7cd7bfd8 100644
--- a/include/linux/pipe_fs_i.h
+++ b/include/linux/pipe_fs_i.h
@@ -5,8 +5,9 @@
5 5
6#define PIPE_BUFFERS (16) 6#define PIPE_BUFFERS (16)
7 7
8#define PIPE_BUF_FLAG_STOLEN 0x01 8#define PIPE_BUF_FLAG_LRU 0x01 /* page is on the LRU */
9#define PIPE_BUF_FLAG_LRU 0x02 9#define PIPE_BUF_FLAG_ATOMIC 0x02 /* was atomically mapped */
10#define PIPE_BUF_FLAG_GIFT 0x04 /* page is a gift */
10 11
11struct pipe_buffer { 12struct pipe_buffer {
12 struct page *page; 13 struct page *page;
@@ -15,10 +16,23 @@ struct pipe_buffer {
15 unsigned int flags; 16 unsigned int flags;
16}; 17};
17 18
19/*
20 * Note on the nesting of these functions:
21 *
22 * ->pin()
23 * ->steal()
24 * ...
25 * ->map()
26 * ...
27 * ->unmap()
28 *
29 * That is, ->map() must be called on a pinned buffer, same goes for ->steal().
30 */
18struct pipe_buf_operations { 31struct pipe_buf_operations {
19 int can_merge; 32 int can_merge;
20 void * (*map)(struct file *, struct pipe_inode_info *, struct pipe_buffer *); 33 void * (*map)(struct pipe_inode_info *, struct pipe_buffer *, int);
21 void (*unmap)(struct pipe_inode_info *, struct pipe_buffer *); 34 void (*unmap)(struct pipe_inode_info *, struct pipe_buffer *, void *);
35 int (*pin)(struct pipe_inode_info *, struct pipe_buffer *);
22 void (*release)(struct pipe_inode_info *, struct pipe_buffer *); 36 void (*release)(struct pipe_inode_info *, struct pipe_buffer *);
23 int (*steal)(struct pipe_inode_info *, struct pipe_buffer *); 37 int (*steal)(struct pipe_inode_info *, struct pipe_buffer *);
24 void (*get)(struct pipe_inode_info *, struct pipe_buffer *); 38 void (*get)(struct pipe_inode_info *, struct pipe_buffer *);
@@ -51,6 +65,13 @@ struct pipe_inode_info * alloc_pipe_info(struct inode * inode);
51void free_pipe_info(struct inode * inode); 65void free_pipe_info(struct inode * inode);
52void __free_pipe_info(struct pipe_inode_info *); 66void __free_pipe_info(struct pipe_inode_info *);
53 67
68/* Generic pipe buffer ops functions */
69void *generic_pipe_buf_map(struct pipe_inode_info *, struct pipe_buffer *, int);
70void generic_pipe_buf_unmap(struct pipe_inode_info *, struct pipe_buffer *, void *);
71void generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *);
72int generic_pipe_buf_pin(struct pipe_inode_info *, struct pipe_buffer *);
73int generic_pipe_buf_steal(struct pipe_inode_info *, struct pipe_buffer *);
74
54/* 75/*
55 * splice is tied to pipes as a transport (at least for now), so we'll just 76 * splice is tied to pipes as a transport (at least for now), so we'll just
56 * add the splice flags here. 77 * add the splice flags here.
@@ -60,5 +81,23 @@ void __free_pipe_info(struct pipe_inode_info *);
60 /* we may still block on the fd we splice */ 81 /* we may still block on the fd we splice */
61 /* from/to, of course */ 82 /* from/to, of course */
62#define SPLICE_F_MORE (0x04) /* expect more data */ 83#define SPLICE_F_MORE (0x04) /* expect more data */
84#define SPLICE_F_GIFT (0x08) /* pages passed in are a gift */
85
86/*
87 * Passed to the actors
88 */
89struct splice_desc {
90 unsigned int len, total_len; /* current and remaining length */
91 unsigned int flags; /* splice flags */
92 struct file *file; /* file to read/write */
93 loff_t pos; /* file position */
94};
95
96typedef int (splice_actor)(struct pipe_inode_info *, struct pipe_buffer *,
97 struct splice_desc *);
98
99extern ssize_t splice_from_pipe(struct pipe_inode_info *, struct file *,
100 loff_t *, size_t, unsigned int,
101 splice_actor *);
63 102
64#endif 103#endif
diff --git a/include/linux/security.h b/include/linux/security.h
index aaa0a5cdbf75..1bab48f6aeac 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -869,11 +869,6 @@ struct swap_info_struct;
869 * @ipcp contains the kernel IPC permission structure 869 * @ipcp contains the kernel IPC permission structure
870 * @flag contains the desired (requested) permission set 870 * @flag contains the desired (requested) permission set
871 * Return 0 if permission is granted. 871 * Return 0 if permission is granted.
872 * @ipc_getsecurity:
873 * Copy the security label associated with the ipc object into
874 * @buffer. @buffer may be NULL to request the size of the buffer
875 * required. @size indicates the size of @buffer in bytes. Return
876 * number of bytes used/required on success.
877 * 872 *
878 * Security hooks for individual messages held in System V IPC message queues 873 * Security hooks for individual messages held in System V IPC message queues
879 * @msg_msg_alloc_security: 874 * @msg_msg_alloc_security:
@@ -1223,7 +1218,6 @@ struct security_operations {
1223 void (*task_to_inode)(struct task_struct *p, struct inode *inode); 1218 void (*task_to_inode)(struct task_struct *p, struct inode *inode);
1224 1219
1225 int (*ipc_permission) (struct kern_ipc_perm * ipcp, short flag); 1220 int (*ipc_permission) (struct kern_ipc_perm * ipcp, short flag);
1226 int (*ipc_getsecurity)(struct kern_ipc_perm *ipcp, void *buffer, size_t size);
1227 1221
1228 int (*msg_msg_alloc_security) (struct msg_msg * msg); 1222 int (*msg_msg_alloc_security) (struct msg_msg * msg);
1229 void (*msg_msg_free_security) (struct msg_msg * msg); 1223 void (*msg_msg_free_security) (struct msg_msg * msg);
@@ -1887,11 +1881,6 @@ static inline int security_ipc_permission (struct kern_ipc_perm *ipcp,
1887 return security_ops->ipc_permission (ipcp, flag); 1881 return security_ops->ipc_permission (ipcp, flag);
1888} 1882}
1889 1883
1890static inline int security_ipc_getsecurity(struct kern_ipc_perm *ipcp, void *buffer, size_t size)
1891{
1892 return security_ops->ipc_getsecurity(ipcp, buffer, size);
1893}
1894
1895static inline int security_msg_msg_alloc (struct msg_msg * msg) 1884static inline int security_msg_msg_alloc (struct msg_msg * msg)
1896{ 1885{
1897 return security_ops->msg_msg_alloc_security (msg); 1886 return security_ops->msg_msg_alloc_security (msg);
@@ -2532,11 +2521,6 @@ static inline int security_ipc_permission (struct kern_ipc_perm *ipcp,
2532 return 0; 2521 return 0;
2533} 2522}
2534 2523
2535static inline int security_ipc_getsecurity(struct kern_ipc_perm *ipcp, void *buffer, size_t size)
2536{
2537 return -EOPNOTSUPP;
2538}
2539
2540static inline int security_msg_msg_alloc (struct msg_msg * msg) 2524static inline int security_msg_msg_alloc (struct msg_msg * msg)
2541{ 2525{
2542 return 0; 2526 return 0;
diff --git a/include/linux/selinux.h b/include/linux/selinux.h
new file mode 100644
index 000000000000..4047bcde4484
--- /dev/null
+++ b/include/linux/selinux.h
@@ -0,0 +1,177 @@
1/*
2 * SELinux services exported to the rest of the kernel.
3 *
4 * Author: James Morris <jmorris@redhat.com>
5 *
6 * Copyright (C) 2005 Red Hat, Inc., James Morris <jmorris@redhat.com>
7 * Copyright (C) 2006 Trusted Computer Solutions, Inc. <dgoeddel@trustedcs.com>
8 * Copyright (C) 2006 IBM Corporation, Timothy R. Chavez <tinytim@us.ibm.com>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2,
12 * as published by the Free Software Foundation.
13 */
14#ifndef _LINUX_SELINUX_H
15#define _LINUX_SELINUX_H
16
17struct selinux_audit_rule;
18struct audit_context;
19struct inode;
20struct kern_ipc_perm;
21
22#ifdef CONFIG_SECURITY_SELINUX
23
24/**
25 * selinux_audit_rule_init - alloc/init an selinux audit rule structure.
26 * @field: the field this rule refers to
27 * @op: the operater the rule uses
28 * @rulestr: the text "target" of the rule
29 * @rule: pointer to the new rule structure returned via this
30 *
31 * Returns 0 if successful, -errno if not. On success, the rule structure
32 * will be allocated internally. The caller must free this structure with
33 * selinux_audit_rule_free() after use.
34 */
35int selinux_audit_rule_init(u32 field, u32 op, char *rulestr,
36 struct selinux_audit_rule **rule);
37
38/**
39 * selinux_audit_rule_free - free an selinux audit rule structure.
40 * @rule: pointer to the audit rule to be freed
41 *
42 * This will free all memory associated with the given rule.
43 * If @rule is NULL, no operation is performed.
44 */
45void selinux_audit_rule_free(struct selinux_audit_rule *rule);
46
47/**
48 * selinux_audit_rule_match - determine if a context ID matches a rule.
49 * @ctxid: the context ID to check
50 * @field: the field this rule refers to
51 * @op: the operater the rule uses
52 * @rule: pointer to the audit rule to check against
53 * @actx: the audit context (can be NULL) associated with the check
54 *
55 * Returns 1 if the context id matches the rule, 0 if it does not, and
56 * -errno on failure.
57 */
58int selinux_audit_rule_match(u32 ctxid, u32 field, u32 op,
59 struct selinux_audit_rule *rule,
60 struct audit_context *actx);
61
62/**
63 * selinux_audit_set_callback - set the callback for policy reloads.
64 * @callback: the function to call when the policy is reloaded
65 *
66 * This sets the function callback function that will update the rules
67 * upon policy reloads. This callback should rebuild all existing rules
68 * using selinux_audit_rule_init().
69 */
70void selinux_audit_set_callback(int (*callback)(void));
71
72/**
73 * selinux_task_ctxid - determine a context ID for a process.
74 * @tsk: the task object
75 * @ctxid: ID value returned via this
76 *
77 * On return, ctxid will contain an ID for the context. This value
78 * should only be used opaquely.
79 */
80void selinux_task_ctxid(struct task_struct *tsk, u32 *ctxid);
81
82/**
83 * selinux_ctxid_to_string - map a security context ID to a string
84 * @ctxid: security context ID to be converted.
85 * @ctx: address of context string to be returned
86 * @ctxlen: length of returned context string.
87 *
88 * Returns 0 if successful, -errno if not. On success, the context
89 * string will be allocated internally, and the caller must call
90 * kfree() on it after use.
91 */
92int selinux_ctxid_to_string(u32 ctxid, char **ctx, u32 *ctxlen);
93
94/**
95 * selinux_get_inode_sid - get the inode's security context ID
96 * @inode: inode structure to get the sid from.
97 * @sid: pointer to security context ID to be filled in.
98 *
99 * Returns nothing
100 */
101void selinux_get_inode_sid(const struct inode *inode, u32 *sid);
102
103/**
104 * selinux_get_ipc_sid - get the ipc security context ID
105 * @ipcp: ipc structure to get the sid from.
106 * @sid: pointer to security context ID to be filled in.
107 *
108 * Returns nothing
109 */
110void selinux_get_ipc_sid(const struct kern_ipc_perm *ipcp, u32 *sid);
111
112/**
113 * selinux_get_task_sid - return the SID of task
114 * @tsk: the task whose SID will be returned
115 * @sid: pointer to security context ID to be filled in.
116 *
117 * Returns nothing
118 */
119void selinux_get_task_sid(struct task_struct *tsk, u32 *sid);
120
121
122#else
123
124static inline int selinux_audit_rule_init(u32 field, u32 op,
125 char *rulestr,
126 struct selinux_audit_rule **rule)
127{
128 return -ENOTSUPP;
129}
130
131static inline void selinux_audit_rule_free(struct selinux_audit_rule *rule)
132{
133 return;
134}
135
136static inline int selinux_audit_rule_match(u32 ctxid, u32 field, u32 op,
137 struct selinux_audit_rule *rule,
138 struct audit_context *actx)
139{
140 return 0;
141}
142
143static inline void selinux_audit_set_callback(int (*callback)(void))
144{
145 return;
146}
147
148static inline void selinux_task_ctxid(struct task_struct *tsk, u32 *ctxid)
149{
150 *ctxid = 0;
151}
152
153static inline int selinux_ctxid_to_string(u32 ctxid, char **ctx, u32 *ctxlen)
154{
155 *ctx = NULL;
156 *ctxlen = 0;
157 return 0;
158}
159
160static inline void selinux_get_inode_sid(const struct inode *inode, u32 *sid)
161{
162 *sid = 0;
163}
164
165static inline void selinux_get_ipc_sid(const struct kern_ipc_perm *ipcp, u32 *sid)
166{
167 *sid = 0;
168}
169
170static inline void selinux_get_task_sid(struct task_struct *tsk, u32 *sid)
171{
172 *sid = 0;
173}
174
175#endif /* CONFIG_SECURITY_SELINUX */
176
177#endif /* _LINUX_SELINUX_H */
diff --git a/include/linux/signal.h b/include/linux/signal.h
index 162a8fd10b29..70739f51a09f 100644
--- a/include/linux/signal.h
+++ b/include/linux/signal.h
@@ -14,10 +14,12 @@
14 * 14 *
15 * SA_INTERRUPT is also used by the irq handling routines. 15 * SA_INTERRUPT is also used by the irq handling routines.
16 * SA_SHIRQ is for shared interrupt support on PCI and EISA. 16 * SA_SHIRQ is for shared interrupt support on PCI and EISA.
17 * SA_PROBEIRQ is set by callers when they expect sharing mismatches to occur
17 */ 18 */
18#define SA_PROBE SA_ONESHOT
19#define SA_SAMPLE_RANDOM SA_RESTART 19#define SA_SAMPLE_RANDOM SA_RESTART
20#define SA_SHIRQ 0x04000000 20#define SA_SHIRQ 0x04000000
21#define SA_PROBEIRQ 0x08000000
22
21/* 23/*
22 * As above, these correspond to the IORESOURCE_IRQ_* defines in 24 * As above, these correspond to the IORESOURCE_IRQ_* defines in
23 * linux/ioport.h to select the interrupt line behaviour. When 25 * linux/ioport.h to select the interrupt line behaviour. When
diff --git a/include/linux/spi/ads7846.h b/include/linux/spi/ads7846.h
index 72261e0f2ac1..adb3dafd33e9 100644
--- a/include/linux/spi/ads7846.h
+++ b/include/linux/spi/ads7846.h
@@ -14,5 +14,12 @@ struct ads7846_platform_data {
14 u16 x_min, x_max; 14 u16 x_min, x_max;
15 u16 y_min, y_max; 15 u16 y_min, y_max;
16 u16 pressure_min, pressure_max; 16 u16 pressure_min, pressure_max;
17
18 u16 debounce_max; /* max number of additional readings
19 * per sample */
20 u16 debounce_tol; /* tolerance used for filtering */
21 u16 debounce_rep; /* additional consecutive good readings
22 * required after the first two */
23 int (*get_pendown_state)(void);
17}; 24};
18 25
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index d3ebc0e68b2b..3996960fc565 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -574,6 +574,9 @@ asmlinkage long sys_splice(int fd_in, loff_t __user *off_in,
574 int fd_out, loff_t __user *off_out, 574 int fd_out, loff_t __user *off_out,
575 size_t len, unsigned int flags); 575 size_t len, unsigned int flags);
576 576
577asmlinkage long sys_vmsplice(int fd, const struct iovec __user *iov,
578 unsigned long nr_segs, unsigned int flags);
579
577asmlinkage long sys_tee(int fdin, int fdout, size_t len, unsigned int flags); 580asmlinkage long sys_tee(int fdin, int fdout, size_t len, unsigned int flags);
578 581
579asmlinkage long sys_sync_file_range(int fd, loff_t offset, loff_t nbytes, 582asmlinkage long sys_sync_file_range(int fd, loff_t offset, loff_t nbytes,
diff --git a/include/net/ax25.h b/include/net/ax25.h
index d052b221dbcd..5bd997487054 100644
--- a/include/net/ax25.h
+++ b/include/net/ax25.h
@@ -145,14 +145,14 @@ enum {
145#define AX25_DEF_CONMODE 2 /* Connected mode allowed */ 145#define AX25_DEF_CONMODE 2 /* Connected mode allowed */
146#define AX25_DEF_WINDOW 2 /* Window=2 */ 146#define AX25_DEF_WINDOW 2 /* Window=2 */
147#define AX25_DEF_EWINDOW 32 /* Module-128 Window=32 */ 147#define AX25_DEF_EWINDOW 32 /* Module-128 Window=32 */
148#define AX25_DEF_T1 (10 * HZ) /* T1=10s */ 148#define AX25_DEF_T1 10000 /* T1=10s */
149#define AX25_DEF_T2 (3 * HZ) /* T2=3s */ 149#define AX25_DEF_T2 3000 /* T2=3s */
150#define AX25_DEF_T3 (300 * HZ) /* T3=300s */ 150#define AX25_DEF_T3 300000 /* T3=300s */
151#define AX25_DEF_N2 10 /* N2=10 */ 151#define AX25_DEF_N2 10 /* N2=10 */
152#define AX25_DEF_IDLE (0 * 60 * HZ) /* Idle=None */ 152#define AX25_DEF_IDLE 0 /* Idle=None */
153#define AX25_DEF_PACLEN 256 /* Paclen=256 */ 153#define AX25_DEF_PACLEN 256 /* Paclen=256 */
154#define AX25_DEF_PROTOCOL AX25_PROTO_STD_SIMPLEX /* Standard AX.25 */ 154#define AX25_DEF_PROTOCOL AX25_PROTO_STD_SIMPLEX /* Standard AX.25 */
155#define AX25_DEF_DS_TIMEOUT (3 * 60 * HZ) /* DAMA timeout 3 minutes */ 155#define AX25_DEF_DS_TIMEOUT 180000 /* DAMA timeout 3 minutes */
156 156
157typedef struct ax25_uid_assoc { 157typedef struct ax25_uid_assoc {
158 struct hlist_node uid_node; 158 struct hlist_node uid_node;
diff --git a/include/net/inet_timewait_sock.h b/include/net/inet_timewait_sock.h
index 1da294c47522..e837f98fdb50 100644
--- a/include/net/inet_timewait_sock.h
+++ b/include/net/inet_timewait_sock.h
@@ -150,7 +150,7 @@ static inline void inet_twsk_add_bind_node(struct inet_timewait_sock *tw,
150 150
151static inline int inet_twsk_dead_hashed(const struct inet_timewait_sock *tw) 151static inline int inet_twsk_dead_hashed(const struct inet_timewait_sock *tw)
152{ 152{
153 return tw->tw_death_node.pprev != NULL; 153 return !hlist_unhashed(&tw->tw_death_node);
154} 154}
155 155
156static inline void inet_twsk_dead_node_init(struct inet_timewait_sock *tw) 156static inline void inet_twsk_dead_node_init(struct inet_timewait_sock *tw)
diff --git a/include/net/netrom.h b/include/net/netrom.h
index a5ee53bce62f..e0ca112024a3 100644
--- a/include/net/netrom.h
+++ b/include/net/netrom.h
@@ -42,11 +42,11 @@ enum {
42#define NR_COND_PEER_RX_BUSY 0x04 42#define NR_COND_PEER_RX_BUSY 0x04
43#define NR_COND_OWN_RX_BUSY 0x08 43#define NR_COND_OWN_RX_BUSY 0x08
44 44
45#define NR_DEFAULT_T1 (120 * HZ) /* Outstanding frames - 120 seconds */ 45#define NR_DEFAULT_T1 120000 /* Outstanding frames - 120 seconds */
46#define NR_DEFAULT_T2 (5 * HZ) /* Response delay - 5 seconds */ 46#define NR_DEFAULT_T2 5000 /* Response delay - 5 seconds */
47#define NR_DEFAULT_N2 3 /* Number of Retries - 3 */ 47#define NR_DEFAULT_N2 3 /* Number of Retries - 3 */
48#define NR_DEFAULT_T4 (180 * HZ) /* Busy Delay - 180 seconds */ 48#define NR_DEFAULT_T4 180000 /* Busy Delay - 180 seconds */
49#define NR_DEFAULT_IDLE (0 * 60 * HZ) /* No Activity Timeout - none */ 49#define NR_DEFAULT_IDLE 0 /* No Activity Timeout - none */
50#define NR_DEFAULT_WINDOW 4 /* Default Window Size - 4 */ 50#define NR_DEFAULT_WINDOW 4 /* Default Window Size - 4 */
51#define NR_DEFAULT_OBS 6 /* Default Obsolescence Count - 6 */ 51#define NR_DEFAULT_OBS 6 /* Default Obsolescence Count - 6 */
52#define NR_DEFAULT_QUAL 10 /* Default Neighbour Quality - 10 */ 52#define NR_DEFAULT_QUAL 10 /* Default Neighbour Quality - 10 */
diff --git a/include/net/rose.h b/include/net/rose.h
index 3249b979605a..012b09ed2401 100644
--- a/include/net/rose.h
+++ b/include/net/rose.h
@@ -49,14 +49,14 @@ enum {
49 ROSE_STATE_5 /* Deferred Call Acceptance */ 49 ROSE_STATE_5 /* Deferred Call Acceptance */
50}; 50};
51 51
52#define ROSE_DEFAULT_T0 (180 * HZ) /* Default T10 T20 value */ 52#define ROSE_DEFAULT_T0 180000 /* Default T10 T20 value */
53#define ROSE_DEFAULT_T1 (200 * HZ) /* Default T11 T21 value */ 53#define ROSE_DEFAULT_T1 200000 /* Default T11 T21 value */
54#define ROSE_DEFAULT_T2 (180 * HZ) /* Default T12 T22 value */ 54#define ROSE_DEFAULT_T2 180000 /* Default T12 T22 value */
55#define ROSE_DEFAULT_T3 (180 * HZ) /* Default T13 T23 value */ 55#define ROSE_DEFAULT_T3 180000 /* Default T13 T23 value */
56#define ROSE_DEFAULT_HB (5 * HZ) /* Default Holdback value */ 56#define ROSE_DEFAULT_HB 5000 /* Default Holdback value */
57#define ROSE_DEFAULT_IDLE (0 * 60 * HZ) /* No Activity Timeout - none */ 57#define ROSE_DEFAULT_IDLE 0 /* No Activity Timeout - none */
58#define ROSE_DEFAULT_ROUTING 1 /* Default routing flag */ 58#define ROSE_DEFAULT_ROUTING 1 /* Default routing flag */
59#define ROSE_DEFAULT_FAIL_TIMEOUT (120 * HZ) /* Time until link considered usable */ 59#define ROSE_DEFAULT_FAIL_TIMEOUT 120000 /* Time until link considered usable */
60#define ROSE_DEFAULT_MAXVC 50 /* Maximum number of VCs per neighbour */ 60#define ROSE_DEFAULT_MAXVC 50 /* Maximum number of VCs per neighbour */
61#define ROSE_DEFAULT_WINDOW_SIZE 7 /* Default window size */ 61#define ROSE_DEFAULT_WINDOW_SIZE 7 /* Default window size */
62 62
diff --git a/include/net/sock.h b/include/net/sock.h
index ff8b0dad7b0f..c9fad6fb629b 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -279,7 +279,7 @@ static inline int sk_unhashed(const struct sock *sk)
279 279
280static inline int sk_hashed(const struct sock *sk) 280static inline int sk_hashed(const struct sock *sk)
281{ 281{
282 return sk->sk_node.pprev != NULL; 282 return !sk_unhashed(sk);
283} 283}
284 284
285static __inline__ void sk_node_init(struct hlist_node *node) 285static __inline__ void sk_node_init(struct hlist_node *node)
diff --git a/include/sound/pcm.h b/include/sound/pcm.h
index df70e7592ab5..373425895faa 100644
--- a/include/sound/pcm.h
+++ b/include/sound/pcm.h
@@ -374,12 +374,14 @@ struct snd_pcm_substream {
374 /* -- OSS things -- */ 374 /* -- OSS things -- */
375 struct snd_pcm_oss_substream oss; 375 struct snd_pcm_oss_substream oss;
376#endif 376#endif
377#ifdef CONFIG_SND_VERBOSE_PROCFS
377 struct snd_info_entry *proc_root; 378 struct snd_info_entry *proc_root;
378 struct snd_info_entry *proc_info_entry; 379 struct snd_info_entry *proc_info_entry;
379 struct snd_info_entry *proc_hw_params_entry; 380 struct snd_info_entry *proc_hw_params_entry;
380 struct snd_info_entry *proc_sw_params_entry; 381 struct snd_info_entry *proc_sw_params_entry;
381 struct snd_info_entry *proc_status_entry; 382 struct snd_info_entry *proc_status_entry;
382 struct snd_info_entry *proc_prealloc_entry; 383 struct snd_info_entry *proc_prealloc_entry;
384#endif
383 /* misc flags */ 385 /* misc flags */
384 unsigned int no_mmap_ctrl: 1; 386 unsigned int no_mmap_ctrl: 1;
385 unsigned int hw_opened: 1; 387 unsigned int hw_opened: 1;
@@ -400,12 +402,14 @@ struct snd_pcm_str {
400 struct snd_pcm_oss_stream oss; 402 struct snd_pcm_oss_stream oss;
401#endif 403#endif
402 struct snd_pcm_file *files; 404 struct snd_pcm_file *files;
405#ifdef CONFIG_SND_VERBOSE_PROCFS
403 struct snd_info_entry *proc_root; 406 struct snd_info_entry *proc_root;
404 struct snd_info_entry *proc_info_entry; 407 struct snd_info_entry *proc_info_entry;
405#ifdef CONFIG_SND_DEBUG 408#ifdef CONFIG_SND_PCM_XRUN_DEBUG
406 unsigned int xrun_debug; /* 0 = disabled, 1 = verbose, 2 = stacktrace */ 409 unsigned int xrun_debug; /* 0 = disabled, 1 = verbose, 2 = stacktrace */
407 struct snd_info_entry *proc_xrun_debug_entry; 410 struct snd_info_entry *proc_xrun_debug_entry;
408#endif 411#endif
412#endif
409}; 413};
410 414
411struct snd_pcm { 415struct snd_pcm {
diff --git a/include/sound/pcm_oss.h b/include/sound/pcm_oss.h
index 39df2baca18a..c854647b6f3c 100644
--- a/include/sound/pcm_oss.h
+++ b/include/sound/pcm_oss.h
@@ -75,7 +75,9 @@ struct snd_pcm_oss_substream {
75struct snd_pcm_oss_stream { 75struct snd_pcm_oss_stream {
76 struct snd_pcm_oss_setup *setup_list; /* setup list */ 76 struct snd_pcm_oss_setup *setup_list; /* setup list */
77 struct mutex setup_mutex; 77 struct mutex setup_mutex;
78#ifdef CONFIG_SND_VERBOSE_PROCFS
78 struct snd_info_entry *proc_entry; 79 struct snd_info_entry *proc_entry;
80#endif
79}; 81};
80 82
81struct snd_pcm_oss { 83struct snd_pcm_oss {
diff --git a/init/main.c b/init/main.c
index 4a2f0898dda1..f715b9b89753 100644
--- a/init/main.c
+++ b/init/main.c
@@ -582,7 +582,7 @@ static void __init do_initcalls(void)
582 582
583 result = (*call)(); 583 result = (*call)();
584 584
585 if (result && (result != -ENODEV || initcall_debug)) { 585 if (result && result != -ENODEV && initcall_debug) {
586 sprintf(msgbuf, "error code %d", result); 586 sprintf(msgbuf, "error code %d", result);
587 msg = msgbuf; 587 msg = msgbuf;
588 } 588 }
diff --git a/ipc/msg.c b/ipc/msg.c
index 48a7f17a7236..7d1340ccb16b 100644
--- a/ipc/msg.c
+++ b/ipc/msg.c
@@ -13,6 +13,9 @@
13 * mostly rewritten, threaded and wake-one semantics added 13 * mostly rewritten, threaded and wake-one semantics added
14 * MSGMAX limit removed, sysctl's added 14 * MSGMAX limit removed, sysctl's added
15 * (c) 1999 Manfred Spraul <manfred@colorfullife.com> 15 * (c) 1999 Manfred Spraul <manfred@colorfullife.com>
16 *
17 * support for audit of ipc object properties and permission changes
18 * Dustin Kirkland <dustin.kirkland@us.ibm.com>
16 */ 19 */
17 20
18#include <linux/capability.h> 21#include <linux/capability.h>
@@ -447,6 +450,11 @@ asmlinkage long sys_msgctl (int msqid, int cmd, struct msqid_ds __user *buf)
447 if (msg_checkid(msq,msqid)) 450 if (msg_checkid(msq,msqid))
448 goto out_unlock_up; 451 goto out_unlock_up;
449 ipcp = &msq->q_perm; 452 ipcp = &msq->q_perm;
453
454 err = audit_ipc_obj(ipcp);
455 if (err)
456 goto out_unlock_up;
457
450 err = -EPERM; 458 err = -EPERM;
451 if (current->euid != ipcp->cuid && 459 if (current->euid != ipcp->cuid &&
452 current->euid != ipcp->uid && !capable(CAP_SYS_ADMIN)) 460 current->euid != ipcp->uid && !capable(CAP_SYS_ADMIN))
@@ -460,7 +468,8 @@ asmlinkage long sys_msgctl (int msqid, int cmd, struct msqid_ds __user *buf)
460 switch (cmd) { 468 switch (cmd) {
461 case IPC_SET: 469 case IPC_SET:
462 { 470 {
463 if ((err = audit_ipc_perms(setbuf.qbytes, setbuf.uid, setbuf.gid, setbuf.mode, ipcp))) 471 err = audit_ipc_set_perm(setbuf.qbytes, setbuf.uid, setbuf.gid, setbuf.mode, ipcp);
472 if (err)
464 goto out_unlock_up; 473 goto out_unlock_up;
465 474
466 err = -EPERM; 475 err = -EPERM;
diff --git a/ipc/sem.c b/ipc/sem.c
index 642659cd596b..7919f8ece6ba 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -61,6 +61,9 @@
61 * (c) 2001 Red Hat Inc <alan@redhat.com> 61 * (c) 2001 Red Hat Inc <alan@redhat.com>
62 * Lockless wakeup 62 * Lockless wakeup
63 * (c) 2003 Manfred Spraul <manfred@colorfullife.com> 63 * (c) 2003 Manfred Spraul <manfred@colorfullife.com>
64 *
65 * support for audit of ipc object properties and permission changes
66 * Dustin Kirkland <dustin.kirkland@us.ibm.com>
64 */ 67 */
65 68
66#include <linux/config.h> 69#include <linux/config.h>
@@ -820,6 +823,11 @@ static int semctl_down(int semid, int semnum, int cmd, int version, union semun
820 goto out_unlock; 823 goto out_unlock;
821 } 824 }
822 ipcp = &sma->sem_perm; 825 ipcp = &sma->sem_perm;
826
827 err = audit_ipc_obj(ipcp);
828 if (err)
829 goto out_unlock;
830
823 if (current->euid != ipcp->cuid && 831 if (current->euid != ipcp->cuid &&
824 current->euid != ipcp->uid && !capable(CAP_SYS_ADMIN)) { 832 current->euid != ipcp->uid && !capable(CAP_SYS_ADMIN)) {
825 err=-EPERM; 833 err=-EPERM;
@@ -836,7 +844,8 @@ static int semctl_down(int semid, int semnum, int cmd, int version, union semun
836 err = 0; 844 err = 0;
837 break; 845 break;
838 case IPC_SET: 846 case IPC_SET:
839 if ((err = audit_ipc_perms(0, setbuf.uid, setbuf.gid, setbuf.mode, ipcp))) 847 err = audit_ipc_set_perm(0, setbuf.uid, setbuf.gid, setbuf.mode, ipcp);
848 if (err)
840 goto out_unlock; 849 goto out_unlock;
841 ipcp->uid = setbuf.uid; 850 ipcp->uid = setbuf.uid;
842 ipcp->gid = setbuf.gid; 851 ipcp->gid = setbuf.gid;
diff --git a/ipc/shm.c b/ipc/shm.c
index 1c2faf62bc73..809896851902 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -13,6 +13,8 @@
13 * Shared /dev/zero support, Kanoj Sarcar <kanoj@sgi.com> 13 * Shared /dev/zero support, Kanoj Sarcar <kanoj@sgi.com>
14 * Move the mm functionality over to mm/shmem.c, Christoph Rohland <cr@sap.com> 14 * Move the mm functionality over to mm/shmem.c, Christoph Rohland <cr@sap.com>
15 * 15 *
16 * support for audit of ipc object properties and permission changes
17 * Dustin Kirkland <dustin.kirkland@us.ibm.com>
16 */ 18 */
17 19
18#include <linux/config.h> 20#include <linux/config.h>
@@ -542,6 +544,10 @@ asmlinkage long sys_shmctl (int shmid, int cmd, struct shmid_ds __user *buf)
542 if(err) 544 if(err)
543 goto out_unlock; 545 goto out_unlock;
544 546
547 err = audit_ipc_obj(&(shp->shm_perm));
548 if (err)
549 goto out_unlock;
550
545 if (!capable(CAP_IPC_LOCK)) { 551 if (!capable(CAP_IPC_LOCK)) {
546 err = -EPERM; 552 err = -EPERM;
547 if (current->euid != shp->shm_perm.uid && 553 if (current->euid != shp->shm_perm.uid &&
@@ -594,6 +600,10 @@ asmlinkage long sys_shmctl (int shmid, int cmd, struct shmid_ds __user *buf)
594 if(err) 600 if(err)
595 goto out_unlock_up; 601 goto out_unlock_up;
596 602
603 err = audit_ipc_obj(&(shp->shm_perm));
604 if (err)
605 goto out_unlock_up;
606
597 if (current->euid != shp->shm_perm.uid && 607 if (current->euid != shp->shm_perm.uid &&
598 current->euid != shp->shm_perm.cuid && 608 current->euid != shp->shm_perm.cuid &&
599 !capable(CAP_SYS_ADMIN)) { 609 !capable(CAP_SYS_ADMIN)) {
@@ -627,12 +637,15 @@ asmlinkage long sys_shmctl (int shmid, int cmd, struct shmid_ds __user *buf)
627 err=-EINVAL; 637 err=-EINVAL;
628 if(shp==NULL) 638 if(shp==NULL)
629 goto out_up; 639 goto out_up;
630 if ((err = audit_ipc_perms(0, setbuf.uid, setbuf.gid,
631 setbuf.mode, &(shp->shm_perm))))
632 goto out_unlock_up;
633 err = shm_checkid(shp,shmid); 640 err = shm_checkid(shp,shmid);
634 if(err) 641 if(err)
635 goto out_unlock_up; 642 goto out_unlock_up;
643 err = audit_ipc_obj(&(shp->shm_perm));
644 if (err)
645 goto out_unlock_up;
646 err = audit_ipc_set_perm(0, setbuf.uid, setbuf.gid, setbuf.mode, &(shp->shm_perm));
647 if (err)
648 goto out_unlock_up;
636 err=-EPERM; 649 err=-EPERM;
637 if (current->euid != shp->shm_perm.uid && 650 if (current->euid != shp->shm_perm.uid &&
638 current->euid != shp->shm_perm.cuid && 651 current->euid != shp->shm_perm.cuid &&
diff --git a/ipc/util.c b/ipc/util.c
index b3dcfad3b4f7..8193299f45f6 100644
--- a/ipc/util.c
+++ b/ipc/util.c
@@ -10,6 +10,8 @@
10 * Manfred Spraul <manfred@colorfullife.com> 10 * Manfred Spraul <manfred@colorfullife.com>
11 * Oct 2002 - One lock per IPC id. RCU ipc_free for lock-free grow_ary(). 11 * Oct 2002 - One lock per IPC id. RCU ipc_free for lock-free grow_ary().
12 * Mingming Cao <cmm@us.ibm.com> 12 * Mingming Cao <cmm@us.ibm.com>
13 * Mar 2006 - support for audit of ipc object properties
14 * Dustin Kirkland <dustin.kirkland@us.ibm.com>
13 */ 15 */
14 16
15#include <linux/config.h> 17#include <linux/config.h>
@@ -27,6 +29,7 @@
27#include <linux/workqueue.h> 29#include <linux/workqueue.h>
28#include <linux/seq_file.h> 30#include <linux/seq_file.h>
29#include <linux/proc_fs.h> 31#include <linux/proc_fs.h>
32#include <linux/audit.h>
30 33
31#include <asm/unistd.h> 34#include <asm/unistd.h>
32 35
@@ -464,8 +467,10 @@ void ipc_rcu_putref(void *ptr)
464 467
465int ipcperms (struct kern_ipc_perm *ipcp, short flag) 468int ipcperms (struct kern_ipc_perm *ipcp, short flag)
466{ /* flag will most probably be 0 or S_...UGO from <linux/stat.h> */ 469{ /* flag will most probably be 0 or S_...UGO from <linux/stat.h> */
467 int requested_mode, granted_mode; 470 int requested_mode, granted_mode, err;
468 471
472 if (unlikely((err = audit_ipc_obj(ipcp))))
473 return err;
469 requested_mode = (flag >> 6) | (flag >> 3) | flag; 474 requested_mode = (flag >> 6) | (flag >> 3) | flag;
470 granted_mode = ipcp->mode; 475 granted_mode = ipcp->mode;
471 if (current->euid == ipcp->cuid || current->euid == ipcp->uid) 476 if (current->euid == ipcp->cuid || current->euid == ipcp->uid)
diff --git a/kernel/audit.c b/kernel/audit.c
index c8ccbd09048f..df57b493e1cb 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -55,6 +55,9 @@
55#include <net/netlink.h> 55#include <net/netlink.h>
56#include <linux/skbuff.h> 56#include <linux/skbuff.h>
57#include <linux/netlink.h> 57#include <linux/netlink.h>
58#include <linux/selinux.h>
59
60#include "audit.h"
58 61
59/* No auditing will take place until audit_initialized != 0. 62/* No auditing will take place until audit_initialized != 0.
60 * (Initialization happens after skb_init is called.) */ 63 * (Initialization happens after skb_init is called.) */
@@ -227,49 +230,103 @@ void audit_log_lost(const char *message)
227 } 230 }
228} 231}
229 232
230static int audit_set_rate_limit(int limit, uid_t loginuid) 233static int audit_set_rate_limit(int limit, uid_t loginuid, u32 sid)
231{ 234{
232 int old = audit_rate_limit; 235 int old = audit_rate_limit;
233 audit_rate_limit = limit; 236
234 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE, 237 if (sid) {
238 char *ctx = NULL;
239 u32 len;
240 int rc;
241 if ((rc = selinux_ctxid_to_string(sid, &ctx, &len)))
242 return rc;
243 else
244 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
245 "audit_rate_limit=%d old=%d by auid=%u subj=%s",
246 limit, old, loginuid, ctx);
247 kfree(ctx);
248 } else
249 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
235 "audit_rate_limit=%d old=%d by auid=%u", 250 "audit_rate_limit=%d old=%d by auid=%u",
236 audit_rate_limit, old, loginuid); 251 limit, old, loginuid);
252 audit_rate_limit = limit;
237 return old; 253 return old;
238} 254}
239 255
240static int audit_set_backlog_limit(int limit, uid_t loginuid) 256static int audit_set_backlog_limit(int limit, uid_t loginuid, u32 sid)
241{ 257{
242 int old = audit_backlog_limit; 258 int old = audit_backlog_limit;
243 audit_backlog_limit = limit; 259
244 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE, 260 if (sid) {
261 char *ctx = NULL;
262 u32 len;
263 int rc;
264 if ((rc = selinux_ctxid_to_string(sid, &ctx, &len)))
265 return rc;
266 else
267 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
268 "audit_backlog_limit=%d old=%d by auid=%u subj=%s",
269 limit, old, loginuid, ctx);
270 kfree(ctx);
271 } else
272 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
245 "audit_backlog_limit=%d old=%d by auid=%u", 273 "audit_backlog_limit=%d old=%d by auid=%u",
246 audit_backlog_limit, old, loginuid); 274 limit, old, loginuid);
275 audit_backlog_limit = limit;
247 return old; 276 return old;
248} 277}
249 278
250static int audit_set_enabled(int state, uid_t loginuid) 279static int audit_set_enabled(int state, uid_t loginuid, u32 sid)
251{ 280{
252 int old = audit_enabled; 281 int old = audit_enabled;
282
253 if (state != 0 && state != 1) 283 if (state != 0 && state != 1)
254 return -EINVAL; 284 return -EINVAL;
255 audit_enabled = state; 285
256 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE, 286 if (sid) {
287 char *ctx = NULL;
288 u32 len;
289 int rc;
290 if ((rc = selinux_ctxid_to_string(sid, &ctx, &len)))
291 return rc;
292 else
293 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
294 "audit_enabled=%d old=%d by auid=%u subj=%s",
295 state, old, loginuid, ctx);
296 kfree(ctx);
297 } else
298 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
257 "audit_enabled=%d old=%d by auid=%u", 299 "audit_enabled=%d old=%d by auid=%u",
258 audit_enabled, old, loginuid); 300 state, old, loginuid);
301 audit_enabled = state;
259 return old; 302 return old;
260} 303}
261 304
262static int audit_set_failure(int state, uid_t loginuid) 305static int audit_set_failure(int state, uid_t loginuid, u32 sid)
263{ 306{
264 int old = audit_failure; 307 int old = audit_failure;
308
265 if (state != AUDIT_FAIL_SILENT 309 if (state != AUDIT_FAIL_SILENT
266 && state != AUDIT_FAIL_PRINTK 310 && state != AUDIT_FAIL_PRINTK
267 && state != AUDIT_FAIL_PANIC) 311 && state != AUDIT_FAIL_PANIC)
268 return -EINVAL; 312 return -EINVAL;
269 audit_failure = state; 313
270 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE, 314 if (sid) {
315 char *ctx = NULL;
316 u32 len;
317 int rc;
318 if ((rc = selinux_ctxid_to_string(sid, &ctx, &len)))
319 return rc;
320 else
321 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
322 "audit_failure=%d old=%d by auid=%u subj=%s",
323 state, old, loginuid, ctx);
324 kfree(ctx);
325 } else
326 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
271 "audit_failure=%d old=%d by auid=%u", 327 "audit_failure=%d old=%d by auid=%u",
272 audit_failure, old, loginuid); 328 state, old, loginuid);
329 audit_failure = state;
273 return old; 330 return old;
274} 331}
275 332
@@ -387,7 +444,7 @@ static int audit_netlink_ok(kernel_cap_t eff_cap, u16 msg_type)
387 444
388static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) 445static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
389{ 446{
390 u32 uid, pid, seq; 447 u32 uid, pid, seq, sid;
391 void *data; 448 void *data;
392 struct audit_status *status_get, status_set; 449 struct audit_status *status_get, status_set;
393 int err; 450 int err;
@@ -413,6 +470,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
413 pid = NETLINK_CREDS(skb)->pid; 470 pid = NETLINK_CREDS(skb)->pid;
414 uid = NETLINK_CREDS(skb)->uid; 471 uid = NETLINK_CREDS(skb)->uid;
415 loginuid = NETLINK_CB(skb).loginuid; 472 loginuid = NETLINK_CB(skb).loginuid;
473 sid = NETLINK_CB(skb).sid;
416 seq = nlh->nlmsg_seq; 474 seq = nlh->nlmsg_seq;
417 data = NLMSG_DATA(nlh); 475 data = NLMSG_DATA(nlh);
418 476
@@ -433,25 +491,43 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
433 return -EINVAL; 491 return -EINVAL;
434 status_get = (struct audit_status *)data; 492 status_get = (struct audit_status *)data;
435 if (status_get->mask & AUDIT_STATUS_ENABLED) { 493 if (status_get->mask & AUDIT_STATUS_ENABLED) {
436 err = audit_set_enabled(status_get->enabled, loginuid); 494 err = audit_set_enabled(status_get->enabled,
495 loginuid, sid);
437 if (err < 0) return err; 496 if (err < 0) return err;
438 } 497 }
439 if (status_get->mask & AUDIT_STATUS_FAILURE) { 498 if (status_get->mask & AUDIT_STATUS_FAILURE) {
440 err = audit_set_failure(status_get->failure, loginuid); 499 err = audit_set_failure(status_get->failure,
500 loginuid, sid);
441 if (err < 0) return err; 501 if (err < 0) return err;
442 } 502 }
443 if (status_get->mask & AUDIT_STATUS_PID) { 503 if (status_get->mask & AUDIT_STATUS_PID) {
444 int old = audit_pid; 504 int old = audit_pid;
505 if (sid) {
506 char *ctx = NULL;
507 u32 len;
508 int rc;
509 if ((rc = selinux_ctxid_to_string(
510 sid, &ctx, &len)))
511 return rc;
512 else
513 audit_log(NULL, GFP_KERNEL,
514 AUDIT_CONFIG_CHANGE,
515 "audit_pid=%d old=%d by auid=%u subj=%s",
516 status_get->pid, old,
517 loginuid, ctx);
518 kfree(ctx);
519 } else
520 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
521 "audit_pid=%d old=%d by auid=%u",
522 status_get->pid, old, loginuid);
445 audit_pid = status_get->pid; 523 audit_pid = status_get->pid;
446 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
447 "audit_pid=%d old=%d by auid=%u",
448 audit_pid, old, loginuid);
449 } 524 }
450 if (status_get->mask & AUDIT_STATUS_RATE_LIMIT) 525 if (status_get->mask & AUDIT_STATUS_RATE_LIMIT)
451 audit_set_rate_limit(status_get->rate_limit, loginuid); 526 audit_set_rate_limit(status_get->rate_limit,
527 loginuid, sid);
452 if (status_get->mask & AUDIT_STATUS_BACKLOG_LIMIT) 528 if (status_get->mask & AUDIT_STATUS_BACKLOG_LIMIT)
453 audit_set_backlog_limit(status_get->backlog_limit, 529 audit_set_backlog_limit(status_get->backlog_limit,
454 loginuid); 530 loginuid, sid);
455 break; 531 break;
456 case AUDIT_USER: 532 case AUDIT_USER:
457 case AUDIT_FIRST_USER_MSG...AUDIT_LAST_USER_MSG: 533 case AUDIT_FIRST_USER_MSG...AUDIT_LAST_USER_MSG:
@@ -465,8 +541,23 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
465 ab = audit_log_start(NULL, GFP_KERNEL, msg_type); 541 ab = audit_log_start(NULL, GFP_KERNEL, msg_type);
466 if (ab) { 542 if (ab) {
467 audit_log_format(ab, 543 audit_log_format(ab,
468 "user pid=%d uid=%u auid=%u msg='%.1024s'", 544 "user pid=%d uid=%u auid=%u",
469 pid, uid, loginuid, (char *)data); 545 pid, uid, loginuid);
546 if (sid) {
547 char *ctx = NULL;
548 u32 len;
549 if (selinux_ctxid_to_string(
550 sid, &ctx, &len)) {
551 audit_log_format(ab,
552 " ssid=%u", sid);
553 /* Maybe call audit_panic? */
554 } else
555 audit_log_format(ab,
556 " subj=%s", ctx);
557 kfree(ctx);
558 }
559 audit_log_format(ab, " msg='%.1024s'",
560 (char *)data);
470 audit_set_pid(ab, pid); 561 audit_set_pid(ab, pid);
471 audit_log_end(ab); 562 audit_log_end(ab);
472 } 563 }
@@ -480,7 +571,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
480 case AUDIT_LIST: 571 case AUDIT_LIST:
481 err = audit_receive_filter(nlh->nlmsg_type, NETLINK_CB(skb).pid, 572 err = audit_receive_filter(nlh->nlmsg_type, NETLINK_CB(skb).pid,
482 uid, seq, data, nlmsg_len(nlh), 573 uid, seq, data, nlmsg_len(nlh),
483 loginuid); 574 loginuid, sid);
484 break; 575 break;
485 case AUDIT_ADD_RULE: 576 case AUDIT_ADD_RULE:
486 case AUDIT_DEL_RULE: 577 case AUDIT_DEL_RULE:
@@ -490,7 +581,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
490 case AUDIT_LIST_RULES: 581 case AUDIT_LIST_RULES:
491 err = audit_receive_filter(nlh->nlmsg_type, NETLINK_CB(skb).pid, 582 err = audit_receive_filter(nlh->nlmsg_type, NETLINK_CB(skb).pid,
492 uid, seq, data, nlmsg_len(nlh), 583 uid, seq, data, nlmsg_len(nlh),
493 loginuid); 584 loginuid, sid);
494 break; 585 break;
495 case AUDIT_SIGNAL_INFO: 586 case AUDIT_SIGNAL_INFO:
496 sig_data.uid = audit_sig_uid; 587 sig_data.uid = audit_sig_uid;
@@ -564,6 +655,11 @@ static int __init audit_init(void)
564 skb_queue_head_init(&audit_skb_queue); 655 skb_queue_head_init(&audit_skb_queue);
565 audit_initialized = 1; 656 audit_initialized = 1;
566 audit_enabled = audit_default; 657 audit_enabled = audit_default;
658
659 /* Register the callback with selinux. This callback will be invoked
660 * when a new policy is loaded. */
661 selinux_audit_set_callback(&selinux_audit_rule_update);
662
567 audit_log(NULL, GFP_KERNEL, AUDIT_KERNEL, "initialized"); 663 audit_log(NULL, GFP_KERNEL, AUDIT_KERNEL, "initialized");
568 return 0; 664 return 0;
569} 665}
diff --git a/kernel/audit.h b/kernel/audit.h
index bc5392076e2b..6f733920fd32 100644
--- a/kernel/audit.h
+++ b/kernel/audit.h
@@ -54,9 +54,11 @@ enum audit_state {
54 54
55/* Rule lists */ 55/* Rule lists */
56struct audit_field { 56struct audit_field {
57 u32 type; 57 u32 type;
58 u32 val; 58 u32 val;
59 u32 op; 59 u32 op;
60 char *se_str;
61 struct selinux_audit_rule *se_rule;
60}; 62};
61 63
62struct audit_krule { 64struct audit_krule {
@@ -86,3 +88,5 @@ extern void audit_send_reply(int pid, int seq, int type,
86extern void audit_log_lost(const char *message); 88extern void audit_log_lost(const char *message);
87extern void audit_panic(const char *message); 89extern void audit_panic(const char *message);
88extern struct mutex audit_netlink_mutex; 90extern struct mutex audit_netlink_mutex;
91
92extern int selinux_audit_rule_update(void);
diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c
index d3a8539f3a83..7c134906d689 100644
--- a/kernel/auditfilter.c
+++ b/kernel/auditfilter.c
@@ -23,6 +23,7 @@
23#include <linux/audit.h> 23#include <linux/audit.h>
24#include <linux/kthread.h> 24#include <linux/kthread.h>
25#include <linux/netlink.h> 25#include <linux/netlink.h>
26#include <linux/selinux.h>
26#include "audit.h" 27#include "audit.h"
27 28
28/* There are three lists of rules -- one to search at task creation 29/* There are three lists of rules -- one to search at task creation
@@ -42,6 +43,13 @@ struct list_head audit_filter_list[AUDIT_NR_FILTERS] = {
42 43
43static inline void audit_free_rule(struct audit_entry *e) 44static inline void audit_free_rule(struct audit_entry *e)
44{ 45{
46 int i;
47 if (e->rule.fields)
48 for (i = 0; i < e->rule.field_count; i++) {
49 struct audit_field *f = &e->rule.fields[i];
50 kfree(f->se_str);
51 selinux_audit_rule_free(f->se_rule);
52 }
45 kfree(e->rule.fields); 53 kfree(e->rule.fields);
46 kfree(e); 54 kfree(e);
47} 55}
@@ -52,9 +60,29 @@ static inline void audit_free_rule_rcu(struct rcu_head *head)
52 audit_free_rule(e); 60 audit_free_rule(e);
53} 61}
54 62
63/* Initialize an audit filterlist entry. */
64static inline struct audit_entry *audit_init_entry(u32 field_count)
65{
66 struct audit_entry *entry;
67 struct audit_field *fields;
68
69 entry = kzalloc(sizeof(*entry), GFP_KERNEL);
70 if (unlikely(!entry))
71 return NULL;
72
73 fields = kzalloc(sizeof(*fields) * field_count, GFP_KERNEL);
74 if (unlikely(!fields)) {
75 kfree(entry);
76 return NULL;
77 }
78 entry->rule.fields = fields;
79
80 return entry;
81}
82
55/* Unpack a filter field's string representation from user-space 83/* Unpack a filter field's string representation from user-space
56 * buffer. */ 84 * buffer. */
57static __attribute__((unused)) char *audit_unpack_string(void **bufp, size_t *remain, size_t len) 85static char *audit_unpack_string(void **bufp, size_t *remain, size_t len)
58{ 86{
59 char *str; 87 char *str;
60 88
@@ -84,7 +112,6 @@ static inline struct audit_entry *audit_to_entry_common(struct audit_rule *rule)
84{ 112{
85 unsigned listnr; 113 unsigned listnr;
86 struct audit_entry *entry; 114 struct audit_entry *entry;
87 struct audit_field *fields;
88 int i, err; 115 int i, err;
89 116
90 err = -EINVAL; 117 err = -EINVAL;
@@ -108,23 +135,14 @@ static inline struct audit_entry *audit_to_entry_common(struct audit_rule *rule)
108 goto exit_err; 135 goto exit_err;
109 136
110 err = -ENOMEM; 137 err = -ENOMEM;
111 entry = kmalloc(sizeof(*entry), GFP_KERNEL); 138 entry = audit_init_entry(rule->field_count);
112 if (unlikely(!entry)) 139 if (!entry)
113 goto exit_err;
114 fields = kmalloc(sizeof(*fields) * rule->field_count, GFP_KERNEL);
115 if (unlikely(!fields)) {
116 kfree(entry);
117 goto exit_err; 140 goto exit_err;
118 }
119
120 memset(&entry->rule, 0, sizeof(struct audit_krule));
121 memset(fields, 0, sizeof(struct audit_field));
122 141
123 entry->rule.flags = rule->flags & AUDIT_FILTER_PREPEND; 142 entry->rule.flags = rule->flags & AUDIT_FILTER_PREPEND;
124 entry->rule.listnr = listnr; 143 entry->rule.listnr = listnr;
125 entry->rule.action = rule->action; 144 entry->rule.action = rule->action;
126 entry->rule.field_count = rule->field_count; 145 entry->rule.field_count = rule->field_count;
127 entry->rule.fields = fields;
128 146
129 for (i = 0; i < AUDIT_BITMASK_SIZE; i++) 147 for (i = 0; i < AUDIT_BITMASK_SIZE; i++)
130 entry->rule.mask[i] = rule->mask[i]; 148 entry->rule.mask[i] = rule->mask[i];
@@ -150,15 +168,20 @@ static struct audit_entry *audit_rule_to_entry(struct audit_rule *rule)
150 for (i = 0; i < rule->field_count; i++) { 168 for (i = 0; i < rule->field_count; i++) {
151 struct audit_field *f = &entry->rule.fields[i]; 169 struct audit_field *f = &entry->rule.fields[i];
152 170
153 if (rule->fields[i] & AUDIT_UNUSED_BITS) {
154 err = -EINVAL;
155 goto exit_free;
156 }
157
158 f->op = rule->fields[i] & (AUDIT_NEGATE|AUDIT_OPERATORS); 171 f->op = rule->fields[i] & (AUDIT_NEGATE|AUDIT_OPERATORS);
159 f->type = rule->fields[i] & ~(AUDIT_NEGATE|AUDIT_OPERATORS); 172 f->type = rule->fields[i] & ~(AUDIT_NEGATE|AUDIT_OPERATORS);
160 f->val = rule->values[i]; 173 f->val = rule->values[i];
161 174
175 if (f->type & AUDIT_UNUSED_BITS ||
176 f->type == AUDIT_SE_USER ||
177 f->type == AUDIT_SE_ROLE ||
178 f->type == AUDIT_SE_TYPE ||
179 f->type == AUDIT_SE_SEN ||
180 f->type == AUDIT_SE_CLR) {
181 err = -EINVAL;
182 goto exit_free;
183 }
184
162 entry->rule.vers_ops = (f->op & AUDIT_OPERATORS) ? 2 : 1; 185 entry->rule.vers_ops = (f->op & AUDIT_OPERATORS) ? 2 : 1;
163 186
164 /* Support for legacy operators where 187 /* Support for legacy operators where
@@ -188,8 +211,9 @@ static struct audit_entry *audit_data_to_entry(struct audit_rule_data *data,
188 int err = 0; 211 int err = 0;
189 struct audit_entry *entry; 212 struct audit_entry *entry;
190 void *bufp; 213 void *bufp;
191 /* size_t remain = datasz - sizeof(struct audit_rule_data); */ 214 size_t remain = datasz - sizeof(struct audit_rule_data);
192 int i; 215 int i;
216 char *str;
193 217
194 entry = audit_to_entry_common((struct audit_rule *)data); 218 entry = audit_to_entry_common((struct audit_rule *)data);
195 if (IS_ERR(entry)) 219 if (IS_ERR(entry))
@@ -207,10 +231,35 @@ static struct audit_entry *audit_data_to_entry(struct audit_rule_data *data,
207 231
208 f->op = data->fieldflags[i] & AUDIT_OPERATORS; 232 f->op = data->fieldflags[i] & AUDIT_OPERATORS;
209 f->type = data->fields[i]; 233 f->type = data->fields[i];
234 f->val = data->values[i];
235 f->se_str = NULL;
236 f->se_rule = NULL;
210 switch(f->type) { 237 switch(f->type) {
211 /* call type-specific conversion routines here */ 238 case AUDIT_SE_USER:
212 default: 239 case AUDIT_SE_ROLE:
213 f->val = data->values[i]; 240 case AUDIT_SE_TYPE:
241 case AUDIT_SE_SEN:
242 case AUDIT_SE_CLR:
243 str = audit_unpack_string(&bufp, &remain, f->val);
244 if (IS_ERR(str))
245 goto exit_free;
246 entry->rule.buflen += f->val;
247
248 err = selinux_audit_rule_init(f->type, f->op, str,
249 &f->se_rule);
250 /* Keep currently invalid fields around in case they
251 * become valid after a policy reload. */
252 if (err == -EINVAL) {
253 printk(KERN_WARNING "audit rule for selinux "
254 "\'%s\' is invalid\n", str);
255 err = 0;
256 }
257 if (err) {
258 kfree(str);
259 goto exit_free;
260 } else
261 f->se_str = str;
262 break;
214 } 263 }
215 } 264 }
216 265
@@ -286,7 +335,14 @@ static struct audit_rule_data *audit_krule_to_data(struct audit_krule *krule)
286 data->fields[i] = f->type; 335 data->fields[i] = f->type;
287 data->fieldflags[i] = f->op; 336 data->fieldflags[i] = f->op;
288 switch(f->type) { 337 switch(f->type) {
289 /* call type-specific conversion routines here */ 338 case AUDIT_SE_USER:
339 case AUDIT_SE_ROLE:
340 case AUDIT_SE_TYPE:
341 case AUDIT_SE_SEN:
342 case AUDIT_SE_CLR:
343 data->buflen += data->values[i] =
344 audit_pack_string(&bufp, f->se_str);
345 break;
290 default: 346 default:
291 data->values[i] = f->val; 347 data->values[i] = f->val;
292 } 348 }
@@ -314,7 +370,14 @@ static int audit_compare_rule(struct audit_krule *a, struct audit_krule *b)
314 return 1; 370 return 1;
315 371
316 switch(a->fields[i].type) { 372 switch(a->fields[i].type) {
317 /* call type-specific comparison routines here */ 373 case AUDIT_SE_USER:
374 case AUDIT_SE_ROLE:
375 case AUDIT_SE_TYPE:
376 case AUDIT_SE_SEN:
377 case AUDIT_SE_CLR:
378 if (strcmp(a->fields[i].se_str, b->fields[i].se_str))
379 return 1;
380 break;
318 default: 381 default:
319 if (a->fields[i].val != b->fields[i].val) 382 if (a->fields[i].val != b->fields[i].val)
320 return 1; 383 return 1;
@@ -328,6 +391,81 @@ static int audit_compare_rule(struct audit_krule *a, struct audit_krule *b)
328 return 0; 391 return 0;
329} 392}
330 393
394/* Duplicate selinux field information. The se_rule is opaque, so must be
395 * re-initialized. */
396static inline int audit_dupe_selinux_field(struct audit_field *df,
397 struct audit_field *sf)
398{
399 int ret = 0;
400 char *se_str;
401
402 /* our own copy of se_str */
403 se_str = kstrdup(sf->se_str, GFP_KERNEL);
404 if (unlikely(IS_ERR(se_str)))
405 return -ENOMEM;
406 df->se_str = se_str;
407
408 /* our own (refreshed) copy of se_rule */
409 ret = selinux_audit_rule_init(df->type, df->op, df->se_str,
410 &df->se_rule);
411 /* Keep currently invalid fields around in case they
412 * become valid after a policy reload. */
413 if (ret == -EINVAL) {
414 printk(KERN_WARNING "audit rule for selinux \'%s\' is "
415 "invalid\n", df->se_str);
416 ret = 0;
417 }
418
419 return ret;
420}
421
422/* Duplicate an audit rule. This will be a deep copy with the exception
423 * of the watch - that pointer is carried over. The selinux specific fields
424 * will be updated in the copy. The point is to be able to replace the old
425 * rule with the new rule in the filterlist, then free the old rule. */
426static struct audit_entry *audit_dupe_rule(struct audit_krule *old)
427{
428 u32 fcount = old->field_count;
429 struct audit_entry *entry;
430 struct audit_krule *new;
431 int i, err = 0;
432
433 entry = audit_init_entry(fcount);
434 if (unlikely(!entry))
435 return ERR_PTR(-ENOMEM);
436
437 new = &entry->rule;
438 new->vers_ops = old->vers_ops;
439 new->flags = old->flags;
440 new->listnr = old->listnr;
441 new->action = old->action;
442 for (i = 0; i < AUDIT_BITMASK_SIZE; i++)
443 new->mask[i] = old->mask[i];
444 new->buflen = old->buflen;
445 new->field_count = old->field_count;
446 memcpy(new->fields, old->fields, sizeof(struct audit_field) * fcount);
447
448 /* deep copy this information, updating the se_rule fields, because
449 * the originals will all be freed when the old rule is freed. */
450 for (i = 0; i < fcount; i++) {
451 switch (new->fields[i].type) {
452 case AUDIT_SE_USER:
453 case AUDIT_SE_ROLE:
454 case AUDIT_SE_TYPE:
455 case AUDIT_SE_SEN:
456 case AUDIT_SE_CLR:
457 err = audit_dupe_selinux_field(&new->fields[i],
458 &old->fields[i]);
459 }
460 if (err) {
461 audit_free_rule(entry);
462 return ERR_PTR(err);
463 }
464 }
465
466 return entry;
467}
468
331/* Add rule to given filterlist if not a duplicate. Protected by 469/* Add rule to given filterlist if not a duplicate. Protected by
332 * audit_netlink_mutex. */ 470 * audit_netlink_mutex. */
333static inline int audit_add_rule(struct audit_entry *entry, 471static inline int audit_add_rule(struct audit_entry *entry,
@@ -448,9 +586,10 @@ static int audit_list_rules(void *_dest)
448 * @data: payload data 586 * @data: payload data
449 * @datasz: size of payload data 587 * @datasz: size of payload data
450 * @loginuid: loginuid of sender 588 * @loginuid: loginuid of sender
589 * @sid: SE Linux Security ID of sender
451 */ 590 */
452int audit_receive_filter(int type, int pid, int uid, int seq, void *data, 591int audit_receive_filter(int type, int pid, int uid, int seq, void *data,
453 size_t datasz, uid_t loginuid) 592 size_t datasz, uid_t loginuid, u32 sid)
454{ 593{
455 struct task_struct *tsk; 594 struct task_struct *tsk;
456 int *dest; 595 int *dest;
@@ -493,9 +632,23 @@ int audit_receive_filter(int type, int pid, int uid, int seq, void *data,
493 632
494 err = audit_add_rule(entry, 633 err = audit_add_rule(entry,
495 &audit_filter_list[entry->rule.listnr]); 634 &audit_filter_list[entry->rule.listnr]);
496 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE, 635 if (sid) {
497 "auid=%u add rule to list=%d res=%d\n", 636 char *ctx = NULL;
498 loginuid, entry->rule.listnr, !err); 637 u32 len;
638 if (selinux_ctxid_to_string(sid, &ctx, &len)) {
639 /* Maybe call audit_panic? */
640 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
641 "auid=%u ssid=%u add rule to list=%d res=%d",
642 loginuid, sid, entry->rule.listnr, !err);
643 } else
644 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
645 "auid=%u subj=%s add rule to list=%d res=%d",
646 loginuid, ctx, entry->rule.listnr, !err);
647 kfree(ctx);
648 } else
649 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
650 "auid=%u add rule to list=%d res=%d",
651 loginuid, entry->rule.listnr, !err);
499 652
500 if (err) 653 if (err)
501 audit_free_rule(entry); 654 audit_free_rule(entry);
@@ -511,9 +664,24 @@ int audit_receive_filter(int type, int pid, int uid, int seq, void *data,
511 664
512 err = audit_del_rule(entry, 665 err = audit_del_rule(entry,
513 &audit_filter_list[entry->rule.listnr]); 666 &audit_filter_list[entry->rule.listnr]);
514 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE, 667
515 "auid=%u remove rule from list=%d res=%d\n", 668 if (sid) {
516 loginuid, entry->rule.listnr, !err); 669 char *ctx = NULL;
670 u32 len;
671 if (selinux_ctxid_to_string(sid, &ctx, &len)) {
672 /* Maybe call audit_panic? */
673 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
674 "auid=%u ssid=%u remove rule from list=%d res=%d",
675 loginuid, sid, entry->rule.listnr, !err);
676 } else
677 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
678 "auid=%u subj=%s remove rule from list=%d res=%d",
679 loginuid, ctx, entry->rule.listnr, !err);
680 kfree(ctx);
681 } else
682 audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
683 "auid=%u remove rule from list=%d res=%d",
684 loginuid, entry->rule.listnr, !err);
517 685
518 audit_free_rule(entry); 686 audit_free_rule(entry);
519 break; 687 break;
@@ -628,3 +796,62 @@ unlock_and_return:
628 rcu_read_unlock(); 796 rcu_read_unlock();
629 return result; 797 return result;
630} 798}
799
800/* Check to see if the rule contains any selinux fields. Returns 1 if there
801 are selinux fields specified in the rule, 0 otherwise. */
802static inline int audit_rule_has_selinux(struct audit_krule *rule)
803{
804 int i;
805
806 for (i = 0; i < rule->field_count; i++) {
807 struct audit_field *f = &rule->fields[i];
808 switch (f->type) {
809 case AUDIT_SE_USER:
810 case AUDIT_SE_ROLE:
811 case AUDIT_SE_TYPE:
812 case AUDIT_SE_SEN:
813 case AUDIT_SE_CLR:
814 return 1;
815 }
816 }
817
818 return 0;
819}
820
821/* This function will re-initialize the se_rule field of all applicable rules.
822 * It will traverse the filter lists serarching for rules that contain selinux
823 * specific filter fields. When such a rule is found, it is copied, the
824 * selinux field is re-initialized, and the old rule is replaced with the
825 * updated rule. */
826int selinux_audit_rule_update(void)
827{
828 struct audit_entry *entry, *n, *nentry;
829 int i, err = 0;
830
831 /* audit_netlink_mutex synchronizes the writers */
832 mutex_lock(&audit_netlink_mutex);
833
834 for (i = 0; i < AUDIT_NR_FILTERS; i++) {
835 list_for_each_entry_safe(entry, n, &audit_filter_list[i], list) {
836 if (!audit_rule_has_selinux(&entry->rule))
837 continue;
838
839 nentry = audit_dupe_rule(&entry->rule);
840 if (unlikely(IS_ERR(nentry))) {
841 /* save the first error encountered for the
842 * return value */
843 if (!err)
844 err = PTR_ERR(nentry);
845 audit_panic("error updating selinux filters");
846 list_del_rcu(&entry->list);
847 } else {
848 list_replace_rcu(&entry->list, &nentry->list);
849 }
850 call_rcu(&entry->rcu, audit_free_rule_rcu);
851 }
852 }
853
854 mutex_unlock(&audit_netlink_mutex);
855
856 return err;
857}
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
index 7f160df21a23..1c03a4ed1b27 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -58,6 +58,7 @@
58#include <linux/security.h> 58#include <linux/security.h>
59#include <linux/list.h> 59#include <linux/list.h>
60#include <linux/tty.h> 60#include <linux/tty.h>
61#include <linux/selinux.h>
61 62
62#include "audit.h" 63#include "audit.h"
63 64
@@ -89,7 +90,7 @@ struct audit_names {
89 uid_t uid; 90 uid_t uid;
90 gid_t gid; 91 gid_t gid;
91 dev_t rdev; 92 dev_t rdev;
92 char *ctx; 93 u32 osid;
93}; 94};
94 95
95struct audit_aux_data { 96struct audit_aux_data {
@@ -106,7 +107,7 @@ struct audit_aux_data_ipcctl {
106 uid_t uid; 107 uid_t uid;
107 gid_t gid; 108 gid_t gid;
108 mode_t mode; 109 mode_t mode;
109 char *ctx; 110 u32 osid;
110}; 111};
111 112
112struct audit_aux_data_socketcall { 113struct audit_aux_data_socketcall {
@@ -167,7 +168,8 @@ static int audit_filter_rules(struct task_struct *tsk,
167 struct audit_context *ctx, 168 struct audit_context *ctx,
168 enum audit_state *state) 169 enum audit_state *state)
169{ 170{
170 int i, j; 171 int i, j, need_sid = 1;
172 u32 sid;
171 173
172 for (i = 0; i < rule->field_count; i++) { 174 for (i = 0; i < rule->field_count; i++) {
173 struct audit_field *f = &rule->fields[i]; 175 struct audit_field *f = &rule->fields[i];
@@ -257,6 +259,27 @@ static int audit_filter_rules(struct task_struct *tsk,
257 if (ctx) 259 if (ctx)
258 result = audit_comparator(ctx->loginuid, f->op, f->val); 260 result = audit_comparator(ctx->loginuid, f->op, f->val);
259 break; 261 break;
262 case AUDIT_SE_USER:
263 case AUDIT_SE_ROLE:
264 case AUDIT_SE_TYPE:
265 case AUDIT_SE_SEN:
266 case AUDIT_SE_CLR:
267 /* NOTE: this may return negative values indicating
268 a temporary error. We simply treat this as a
269 match for now to avoid losing information that
270 may be wanted. An error message will also be
271 logged upon error */
272 if (f->se_rule) {
273 if (need_sid) {
274 selinux_task_ctxid(tsk, &sid);
275 need_sid = 0;
276 }
277 result = selinux_audit_rule_match(sid, f->type,
278 f->op,
279 f->se_rule,
280 ctx);
281 }
282 break;
260 case AUDIT_ARG0: 283 case AUDIT_ARG0:
261 case AUDIT_ARG1: 284 case AUDIT_ARG1:
262 case AUDIT_ARG2: 285 case AUDIT_ARG2:
@@ -329,7 +352,6 @@ static enum audit_state audit_filter_syscall(struct task_struct *tsk,
329 return AUDIT_BUILD_CONTEXT; 352 return AUDIT_BUILD_CONTEXT;
330} 353}
331 354
332/* This should be called with task_lock() held. */
333static inline struct audit_context *audit_get_context(struct task_struct *tsk, 355static inline struct audit_context *audit_get_context(struct task_struct *tsk,
334 int return_valid, 356 int return_valid,
335 int return_code) 357 int return_code)
@@ -391,9 +413,6 @@ static inline void audit_free_names(struct audit_context *context)
391#endif 413#endif
392 414
393 for (i = 0; i < context->name_count; i++) { 415 for (i = 0; i < context->name_count; i++) {
394 char *p = context->names[i].ctx;
395 context->names[i].ctx = NULL;
396 kfree(p);
397 if (context->names[i].name) 416 if (context->names[i].name)
398 __putname(context->names[i].name); 417 __putname(context->names[i].name);
399 } 418 }
@@ -416,11 +435,6 @@ static inline void audit_free_aux(struct audit_context *context)
416 dput(axi->dentry); 435 dput(axi->dentry);
417 mntput(axi->mnt); 436 mntput(axi->mnt);
418 } 437 }
419 if ( aux->type == AUDIT_IPC ) {
420 struct audit_aux_data_ipcctl *axi = (void *)aux;
421 if (axi->ctx)
422 kfree(axi->ctx);
423 }
424 438
425 context->aux = aux->next; 439 context->aux = aux->next;
426 kfree(aux); 440 kfree(aux);
@@ -506,7 +520,7 @@ static inline void audit_free_context(struct audit_context *context)
506 printk(KERN_ERR "audit: freed %d contexts\n", count); 520 printk(KERN_ERR "audit: freed %d contexts\n", count);
507} 521}
508 522
509static void audit_log_task_context(struct audit_buffer *ab, gfp_t gfp_mask) 523static void audit_log_task_context(struct audit_buffer *ab)
510{ 524{
511 char *ctx = NULL; 525 char *ctx = NULL;
512 ssize_t len = 0; 526 ssize_t len = 0;
@@ -518,7 +532,7 @@ static void audit_log_task_context(struct audit_buffer *ab, gfp_t gfp_mask)
518 return; 532 return;
519 } 533 }
520 534
521 ctx = kmalloc(len, gfp_mask); 535 ctx = kmalloc(len, GFP_KERNEL);
522 if (!ctx) 536 if (!ctx)
523 goto error_path; 537 goto error_path;
524 538
@@ -536,47 +550,46 @@ error_path:
536 return; 550 return;
537} 551}
538 552
539static void audit_log_task_info(struct audit_buffer *ab, gfp_t gfp_mask) 553static void audit_log_task_info(struct audit_buffer *ab, struct task_struct *tsk)
540{ 554{
541 char name[sizeof(current->comm)]; 555 char name[sizeof(tsk->comm)];
542 struct mm_struct *mm = current->mm; 556 struct mm_struct *mm = tsk->mm;
543 struct vm_area_struct *vma; 557 struct vm_area_struct *vma;
544 558
545 get_task_comm(name, current); 559 /* tsk == current */
560
561 get_task_comm(name, tsk);
546 audit_log_format(ab, " comm="); 562 audit_log_format(ab, " comm=");
547 audit_log_untrustedstring(ab, name); 563 audit_log_untrustedstring(ab, name);
548 564
549 if (!mm) 565 if (mm) {
550 return; 566 down_read(&mm->mmap_sem);
551 567 vma = mm->mmap;
552 /* 568 while (vma) {
553 * this is brittle; all callers that pass GFP_ATOMIC will have 569 if ((vma->vm_flags & VM_EXECUTABLE) &&
554 * NULL current->mm and we won't get here. 570 vma->vm_file) {
555 */ 571 audit_log_d_path(ab, "exe=",
556 down_read(&mm->mmap_sem); 572 vma->vm_file->f_dentry,
557 vma = mm->mmap; 573 vma->vm_file->f_vfsmnt);
558 while (vma) { 574 break;
559 if ((vma->vm_flags & VM_EXECUTABLE) && 575 }
560 vma->vm_file) { 576 vma = vma->vm_next;
561 audit_log_d_path(ab, "exe=",
562 vma->vm_file->f_dentry,
563 vma->vm_file->f_vfsmnt);
564 break;
565 } 577 }
566 vma = vma->vm_next; 578 up_read(&mm->mmap_sem);
567 } 579 }
568 up_read(&mm->mmap_sem); 580 audit_log_task_context(ab);
569 audit_log_task_context(ab, gfp_mask);
570} 581}
571 582
572static void audit_log_exit(struct audit_context *context, gfp_t gfp_mask) 583static void audit_log_exit(struct audit_context *context, struct task_struct *tsk)
573{ 584{
574 int i; 585 int i, call_panic = 0;
575 struct audit_buffer *ab; 586 struct audit_buffer *ab;
576 struct audit_aux_data *aux; 587 struct audit_aux_data *aux;
577 const char *tty; 588 const char *tty;
578 589
579 ab = audit_log_start(context, gfp_mask, AUDIT_SYSCALL); 590 /* tsk == current */
591
592 ab = audit_log_start(context, GFP_KERNEL, AUDIT_SYSCALL);
580 if (!ab) 593 if (!ab)
581 return; /* audit_panic has been called */ 594 return; /* audit_panic has been called */
582 audit_log_format(ab, "arch=%x syscall=%d", 595 audit_log_format(ab, "arch=%x syscall=%d",
@@ -587,8 +600,8 @@ static void audit_log_exit(struct audit_context *context, gfp_t gfp_mask)
587 audit_log_format(ab, " success=%s exit=%ld", 600 audit_log_format(ab, " success=%s exit=%ld",
588 (context->return_valid==AUDITSC_SUCCESS)?"yes":"no", 601 (context->return_valid==AUDITSC_SUCCESS)?"yes":"no",
589 context->return_code); 602 context->return_code);
590 if (current->signal->tty && current->signal->tty->name) 603 if (tsk->signal && tsk->signal->tty && tsk->signal->tty->name)
591 tty = current->signal->tty->name; 604 tty = tsk->signal->tty->name;
592 else 605 else
593 tty = "(none)"; 606 tty = "(none)";
594 audit_log_format(ab, 607 audit_log_format(ab,
@@ -607,12 +620,12 @@ static void audit_log_exit(struct audit_context *context, gfp_t gfp_mask)
607 context->gid, 620 context->gid,
608 context->euid, context->suid, context->fsuid, 621 context->euid, context->suid, context->fsuid,
609 context->egid, context->sgid, context->fsgid, tty); 622 context->egid, context->sgid, context->fsgid, tty);
610 audit_log_task_info(ab, gfp_mask); 623 audit_log_task_info(ab, tsk);
611 audit_log_end(ab); 624 audit_log_end(ab);
612 625
613 for (aux = context->aux; aux; aux = aux->next) { 626 for (aux = context->aux; aux; aux = aux->next) {
614 627
615 ab = audit_log_start(context, gfp_mask, aux->type); 628 ab = audit_log_start(context, GFP_KERNEL, aux->type);
616 if (!ab) 629 if (!ab)
617 continue; /* audit_panic has been called */ 630 continue; /* audit_panic has been called */
618 631
@@ -620,8 +633,39 @@ static void audit_log_exit(struct audit_context *context, gfp_t gfp_mask)
620 case AUDIT_IPC: { 633 case AUDIT_IPC: {
621 struct audit_aux_data_ipcctl *axi = (void *)aux; 634 struct audit_aux_data_ipcctl *axi = (void *)aux;
622 audit_log_format(ab, 635 audit_log_format(ab,
623 " qbytes=%lx iuid=%u igid=%u mode=%x obj=%s", 636 " qbytes=%lx iuid=%u igid=%u mode=%x",
624 axi->qbytes, axi->uid, axi->gid, axi->mode, axi->ctx); 637 axi->qbytes, axi->uid, axi->gid, axi->mode);
638 if (axi->osid != 0) {
639 char *ctx = NULL;
640 u32 len;
641 if (selinux_ctxid_to_string(
642 axi->osid, &ctx, &len)) {
643 audit_log_format(ab, " osid=%u",
644 axi->osid);
645 call_panic = 1;
646 } else
647 audit_log_format(ab, " obj=%s", ctx);
648 kfree(ctx);
649 }
650 break; }
651
652 case AUDIT_IPC_SET_PERM: {
653 struct audit_aux_data_ipcctl *axi = (void *)aux;
654 audit_log_format(ab,
655 " new qbytes=%lx new iuid=%u new igid=%u new mode=%x",
656 axi->qbytes, axi->uid, axi->gid, axi->mode);
657 if (axi->osid != 0) {
658 char *ctx = NULL;
659 u32 len;
660 if (selinux_ctxid_to_string(
661 axi->osid, &ctx, &len)) {
662 audit_log_format(ab, " osid=%u",
663 axi->osid);
664 call_panic = 1;
665 } else
666 audit_log_format(ab, " obj=%s", ctx);
667 kfree(ctx);
668 }
625 break; } 669 break; }
626 670
627 case AUDIT_SOCKETCALL: { 671 case AUDIT_SOCKETCALL: {
@@ -649,7 +693,7 @@ static void audit_log_exit(struct audit_context *context, gfp_t gfp_mask)
649 } 693 }
650 694
651 if (context->pwd && context->pwdmnt) { 695 if (context->pwd && context->pwdmnt) {
652 ab = audit_log_start(context, gfp_mask, AUDIT_CWD); 696 ab = audit_log_start(context, GFP_KERNEL, AUDIT_CWD);
653 if (ab) { 697 if (ab) {
654 audit_log_d_path(ab, "cwd=", context->pwd, context->pwdmnt); 698 audit_log_d_path(ab, "cwd=", context->pwd, context->pwdmnt);
655 audit_log_end(ab); 699 audit_log_end(ab);
@@ -659,7 +703,7 @@ static void audit_log_exit(struct audit_context *context, gfp_t gfp_mask)
659 unsigned long ino = context->names[i].ino; 703 unsigned long ino = context->names[i].ino;
660 unsigned long pino = context->names[i].pino; 704 unsigned long pino = context->names[i].pino;
661 705
662 ab = audit_log_start(context, gfp_mask, AUDIT_PATH); 706 ab = audit_log_start(context, GFP_KERNEL, AUDIT_PATH);
663 if (!ab) 707 if (!ab)
664 continue; /* audit_panic has been called */ 708 continue; /* audit_panic has been called */
665 709
@@ -685,32 +729,35 @@ static void audit_log_exit(struct audit_context *context, gfp_t gfp_mask)
685 context->names[i].gid, 729 context->names[i].gid,
686 MAJOR(context->names[i].rdev), 730 MAJOR(context->names[i].rdev),
687 MINOR(context->names[i].rdev)); 731 MINOR(context->names[i].rdev));
688 if (context->names[i].ctx) { 732 if (context->names[i].osid != 0) {
689 audit_log_format(ab, " obj=%s", 733 char *ctx = NULL;
690 context->names[i].ctx); 734 u32 len;
735 if (selinux_ctxid_to_string(
736 context->names[i].osid, &ctx, &len)) {
737 audit_log_format(ab, " osid=%u",
738 context->names[i].osid);
739 call_panic = 2;
740 } else
741 audit_log_format(ab, " obj=%s", ctx);
742 kfree(ctx);
691 } 743 }
692 744
693 audit_log_end(ab); 745 audit_log_end(ab);
694 } 746 }
747 if (call_panic)
748 audit_panic("error converting sid to string");
695} 749}
696 750
697/** 751/**
698 * audit_free - free a per-task audit context 752 * audit_free - free a per-task audit context
699 * @tsk: task whose audit context block to free 753 * @tsk: task whose audit context block to free
700 * 754 *
701 * Called from copy_process and __put_task_struct. 755 * Called from copy_process and do_exit
702 */ 756 */
703void audit_free(struct task_struct *tsk) 757void audit_free(struct task_struct *tsk)
704{ 758{
705 struct audit_context *context; 759 struct audit_context *context;
706 760
707 /*
708 * No need to lock the task - when we execute audit_free()
709 * then the task has no external references anymore, and
710 * we are tearing it down. (The locking also confuses
711 * DEBUG_LOCKDEP - this freeing may occur in softirq
712 * contexts as well, via RCU.)
713 */
714 context = audit_get_context(tsk, 0, 0); 761 context = audit_get_context(tsk, 0, 0);
715 if (likely(!context)) 762 if (likely(!context))
716 return; 763 return;
@@ -719,8 +766,9 @@ void audit_free(struct task_struct *tsk)
719 * function (e.g., exit_group), then free context block. 766 * function (e.g., exit_group), then free context block.
720 * We use GFP_ATOMIC here because we might be doing this 767 * We use GFP_ATOMIC here because we might be doing this
721 * in the context of the idle thread */ 768 * in the context of the idle thread */
769 /* that can happen only if we are called from do_exit() */
722 if (context->in_syscall && context->auditable) 770 if (context->in_syscall && context->auditable)
723 audit_log_exit(context, GFP_ATOMIC); 771 audit_log_exit(context, tsk);
724 772
725 audit_free_context(context); 773 audit_free_context(context);
726} 774}
@@ -743,10 +791,11 @@ void audit_free(struct task_struct *tsk)
743 * will only be written if another part of the kernel requests that it 791 * will only be written if another part of the kernel requests that it
744 * be written). 792 * be written).
745 */ 793 */
746void audit_syscall_entry(struct task_struct *tsk, int arch, int major, 794void audit_syscall_entry(int arch, int major,
747 unsigned long a1, unsigned long a2, 795 unsigned long a1, unsigned long a2,
748 unsigned long a3, unsigned long a4) 796 unsigned long a3, unsigned long a4)
749{ 797{
798 struct task_struct *tsk = current;
750 struct audit_context *context = tsk->audit_context; 799 struct audit_context *context = tsk->audit_context;
751 enum audit_state state; 800 enum audit_state state;
752 801
@@ -824,22 +873,18 @@ void audit_syscall_entry(struct task_struct *tsk, int arch, int major,
824 * message), then write out the syscall information. In call cases, 873 * message), then write out the syscall information. In call cases,
825 * free the names stored from getname(). 874 * free the names stored from getname().
826 */ 875 */
827void audit_syscall_exit(struct task_struct *tsk, int valid, long return_code) 876void audit_syscall_exit(int valid, long return_code)
828{ 877{
878 struct task_struct *tsk = current;
829 struct audit_context *context; 879 struct audit_context *context;
830 880
831 get_task_struct(tsk);
832 task_lock(tsk);
833 context = audit_get_context(tsk, valid, return_code); 881 context = audit_get_context(tsk, valid, return_code);
834 task_unlock(tsk);
835 882
836 /* Not having a context here is ok, since the parent may have
837 * called __put_task_struct. */
838 if (likely(!context)) 883 if (likely(!context))
839 goto out; 884 return;
840 885
841 if (context->in_syscall && context->auditable) 886 if (context->in_syscall && context->auditable)
842 audit_log_exit(context, GFP_KERNEL); 887 audit_log_exit(context, tsk);
843 888
844 context->in_syscall = 0; 889 context->in_syscall = 0;
845 context->auditable = 0; 890 context->auditable = 0;
@@ -854,8 +899,6 @@ void audit_syscall_exit(struct task_struct *tsk, int valid, long return_code)
854 audit_free_aux(context); 899 audit_free_aux(context);
855 tsk->audit_context = context; 900 tsk->audit_context = context;
856 } 901 }
857 out:
858 put_task_struct(tsk);
859} 902}
860 903
861/** 904/**
@@ -936,40 +979,11 @@ void audit_putname(const char *name)
936#endif 979#endif
937} 980}
938 981
939void audit_inode_context(int idx, const struct inode *inode) 982static void audit_inode_context(int idx, const struct inode *inode)
940{ 983{
941 struct audit_context *context = current->audit_context; 984 struct audit_context *context = current->audit_context;
942 const char *suffix = security_inode_xattr_getsuffix();
943 char *ctx = NULL;
944 int len = 0;
945
946 if (!suffix)
947 goto ret;
948
949 len = security_inode_getsecurity(inode, suffix, NULL, 0, 0);
950 if (len == -EOPNOTSUPP)
951 goto ret;
952 if (len < 0)
953 goto error_path;
954
955 ctx = kmalloc(len, GFP_KERNEL);
956 if (!ctx)
957 goto error_path;
958 985
959 len = security_inode_getsecurity(inode, suffix, ctx, len, 0); 986 selinux_get_inode_sid(inode, &context->names[idx].osid);
960 if (len < 0)
961 goto error_path;
962
963 kfree(context->names[idx].ctx);
964 context->names[idx].ctx = ctx;
965 goto ret;
966
967error_path:
968 if (ctx)
969 kfree(ctx);
970 audit_panic("error in audit_inode_context");
971ret:
972 return;
973} 987}
974 988
975 989
@@ -1155,40 +1169,37 @@ uid_t audit_get_loginuid(struct audit_context *ctx)
1155 return ctx ? ctx->loginuid : -1; 1169 return ctx ? ctx->loginuid : -1;
1156} 1170}
1157 1171
1158static char *audit_ipc_context(struct kern_ipc_perm *ipcp) 1172/**
1173 * audit_ipc_obj - record audit data for ipc object
1174 * @ipcp: ipc permissions
1175 *
1176 * Returns 0 for success or NULL context or < 0 on error.
1177 */
1178int audit_ipc_obj(struct kern_ipc_perm *ipcp)
1159{ 1179{
1180 struct audit_aux_data_ipcctl *ax;
1160 struct audit_context *context = current->audit_context; 1181 struct audit_context *context = current->audit_context;
1161 char *ctx = NULL;
1162 int len = 0;
1163 1182
1164 if (likely(!context)) 1183 if (likely(!context))
1165 return NULL; 1184 return 0;
1166
1167 len = security_ipc_getsecurity(ipcp, NULL, 0);
1168 if (len == -EOPNOTSUPP)
1169 goto ret;
1170 if (len < 0)
1171 goto error_path;
1172
1173 ctx = kmalloc(len, GFP_ATOMIC);
1174 if (!ctx)
1175 goto error_path;
1176 1185
1177 len = security_ipc_getsecurity(ipcp, ctx, len); 1186 ax = kmalloc(sizeof(*ax), GFP_ATOMIC);
1178 if (len < 0) 1187 if (!ax)
1179 goto error_path; 1188 return -ENOMEM;
1180 1189
1181 return ctx; 1190 ax->uid = ipcp->uid;
1191 ax->gid = ipcp->gid;
1192 ax->mode = ipcp->mode;
1193 selinux_get_ipc_sid(ipcp, &ax->osid);
1182 1194
1183error_path: 1195 ax->d.type = AUDIT_IPC;
1184 kfree(ctx); 1196 ax->d.next = context->aux;
1185 audit_panic("error in audit_ipc_context"); 1197 context->aux = (void *)ax;
1186ret: 1198 return 0;
1187 return NULL;
1188} 1199}
1189 1200
1190/** 1201/**
1191 * audit_ipc_perms - record audit data for ipc 1202 * audit_ipc_set_perm - record audit data for new ipc permissions
1192 * @qbytes: msgq bytes 1203 * @qbytes: msgq bytes
1193 * @uid: msgq user id 1204 * @uid: msgq user id
1194 * @gid: msgq group id 1205 * @gid: msgq group id
@@ -1196,7 +1207,7 @@ ret:
1196 * 1207 *
1197 * Returns 0 for success or NULL context or < 0 on error. 1208 * Returns 0 for success or NULL context or < 0 on error.
1198 */ 1209 */
1199int audit_ipc_perms(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode, struct kern_ipc_perm *ipcp) 1210int audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode, struct kern_ipc_perm *ipcp)
1200{ 1211{
1201 struct audit_aux_data_ipcctl *ax; 1212 struct audit_aux_data_ipcctl *ax;
1202 struct audit_context *context = current->audit_context; 1213 struct audit_context *context = current->audit_context;
@@ -1212,9 +1223,9 @@ int audit_ipc_perms(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode, str
1212 ax->uid = uid; 1223 ax->uid = uid;
1213 ax->gid = gid; 1224 ax->gid = gid;
1214 ax->mode = mode; 1225 ax->mode = mode;
1215 ax->ctx = audit_ipc_context(ipcp); 1226 selinux_get_ipc_sid(ipcp, &ax->osid);
1216 1227
1217 ax->d.type = AUDIT_IPC; 1228 ax->d.type = AUDIT_IPC_SET_PERM;
1218 ax->d.next = context->aux; 1229 ax->d.next = context->aux;
1219 context->aux = (void *)ax; 1230 context->aux = (void *)ax;
1220 return 0; 1231 return 0;
diff --git a/kernel/exit.c b/kernel/exit.c
index f86434d7b3d1..e95b93282210 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -35,6 +35,7 @@
35#include <linux/futex.h> 35#include <linux/futex.h>
36#include <linux/compat.h> 36#include <linux/compat.h>
37#include <linux/pipe_fs_i.h> 37#include <linux/pipe_fs_i.h>
38#include <linux/audit.h> /* for audit_free() */
38 39
39#include <asm/uaccess.h> 40#include <asm/uaccess.h>
40#include <asm/unistd.h> 41#include <asm/unistd.h>
@@ -910,6 +911,8 @@ fastcall NORET_TYPE void do_exit(long code)
910 if (unlikely(tsk->compat_robust_list)) 911 if (unlikely(tsk->compat_robust_list))
911 compat_exit_robust_list(tsk); 912 compat_exit_robust_list(tsk);
912#endif 913#endif
914 if (unlikely(tsk->audit_context))
915 audit_free(tsk);
913 exit_mm(tsk); 916 exit_mm(tsk);
914 917
915 exit_sem(tsk); 918 exit_sem(tsk);
diff --git a/kernel/fork.c b/kernel/fork.c
index d2fa57d480d4..ac8100e3088a 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -114,8 +114,6 @@ void __put_task_struct(struct task_struct *tsk)
114 WARN_ON(atomic_read(&tsk->usage)); 114 WARN_ON(atomic_read(&tsk->usage));
115 WARN_ON(tsk == current); 115 WARN_ON(tsk == current);
116 116
117 if (unlikely(tsk->audit_context))
118 audit_free(tsk);
119 security_task_free(tsk); 117 security_task_free(tsk);
120 free_uid(tsk->user); 118 free_uid(tsk->user);
121 put_group_info(tsk->group_info); 119 put_group_info(tsk->group_info);
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
index d2a7296c8251..b7f0388bd71c 100644
--- a/kernel/hrtimer.c
+++ b/kernel/hrtimer.c
@@ -836,7 +836,7 @@ static void migrate_hrtimers(int cpu)
836} 836}
837#endif /* CONFIG_HOTPLUG_CPU */ 837#endif /* CONFIG_HOTPLUG_CPU */
838 838
839static int __devinit hrtimer_cpu_notify(struct notifier_block *self, 839static int hrtimer_cpu_notify(struct notifier_block *self,
840 unsigned long action, void *hcpu) 840 unsigned long action, void *hcpu)
841{ 841{
842 long cpu = (long)hcpu; 842 long cpu = (long)hcpu;
@@ -860,7 +860,7 @@ static int __devinit hrtimer_cpu_notify(struct notifier_block *self,
860 return NOTIFY_OK; 860 return NOTIFY_OK;
861} 861}
862 862
863static struct notifier_block __devinitdata hrtimers_nb = { 863static struct notifier_block hrtimers_nb = {
864 .notifier_call = hrtimer_cpu_notify, 864 .notifier_call = hrtimer_cpu_notify,
865}; 865};
866 866
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index ac766ad573e8..1279e3499534 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -246,8 +246,10 @@ int setup_irq(unsigned int irq, struct irqaction * new)
246 246
247mismatch: 247mismatch:
248 spin_unlock_irqrestore(&desc->lock, flags); 248 spin_unlock_irqrestore(&desc->lock, flags);
249 printk(KERN_ERR "%s: irq handler mismatch\n", __FUNCTION__); 249 if (!(new->flags & SA_PROBEIRQ)) {
250 dump_stack(); 250 printk(KERN_ERR "%s: irq handler mismatch\n", __FUNCTION__);
251 dump_stack();
252 }
251 return -EBUSY; 253 return -EBUSY;
252} 254}
253 255
diff --git a/kernel/power/main.c b/kernel/power/main.c
index ee371f50ccaa..a6d9ef46009e 100644
--- a/kernel/power/main.c
+++ b/kernel/power/main.c
@@ -272,7 +272,7 @@ static ssize_t state_store(struct subsystem * subsys, const char * buf, size_t n
272 if (*s && !strncmp(buf, *s, len)) 272 if (*s && !strncmp(buf, *s, len))
273 break; 273 break;
274 } 274 }
275 if (*s) 275 if (state < PM_SUSPEND_MAX && *s)
276 error = enter_state(state); 276 error = enter_state(state);
277 else 277 else
278 error = -EINVAL; 278 error = -EINVAL;
diff --git a/kernel/profile.c b/kernel/profile.c
index 5a730fdb1a2c..68afe121e507 100644
--- a/kernel/profile.c
+++ b/kernel/profile.c
@@ -299,7 +299,7 @@ out:
299} 299}
300 300
301#ifdef CONFIG_HOTPLUG_CPU 301#ifdef CONFIG_HOTPLUG_CPU
302static int __devinit profile_cpu_callback(struct notifier_block *info, 302static int profile_cpu_callback(struct notifier_block *info,
303 unsigned long action, void *__cpu) 303 unsigned long action, void *__cpu)
304{ 304{
305 int node, cpu = (unsigned long)__cpu; 305 int node, cpu = (unsigned long)__cpu;
diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c
index 13458bbaa1be..6d32ff26f948 100644
--- a/kernel/rcupdate.c
+++ b/kernel/rcupdate.c
@@ -520,7 +520,7 @@ static void __devinit rcu_online_cpu(int cpu)
520 tasklet_init(&per_cpu(rcu_tasklet, cpu), rcu_process_callbacks, 0UL); 520 tasklet_init(&per_cpu(rcu_tasklet, cpu), rcu_process_callbacks, 0UL);
521} 521}
522 522
523static int __devinit rcu_cpu_notify(struct notifier_block *self, 523static int rcu_cpu_notify(struct notifier_block *self,
524 unsigned long action, void *hcpu) 524 unsigned long action, void *hcpu)
525{ 525{
526 long cpu = (long)hcpu; 526 long cpu = (long)hcpu;
@@ -537,7 +537,7 @@ static int __devinit rcu_cpu_notify(struct notifier_block *self,
537 return NOTIFY_OK; 537 return NOTIFY_OK;
538} 538}
539 539
540static struct notifier_block __devinitdata rcu_nb = { 540static struct notifier_block rcu_nb = {
541 .notifier_call = rcu_cpu_notify, 541 .notifier_call = rcu_cpu_notify,
542}; 542};
543 543
diff --git a/kernel/sched.c b/kernel/sched.c
index 365f0b90b4de..4c64f85698ae 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -4814,7 +4814,7 @@ static int migration_call(struct notifier_block *nfb, unsigned long action,
4814/* Register at highest priority so that task migration (migrate_all_tasks) 4814/* Register at highest priority so that task migration (migrate_all_tasks)
4815 * happens before everything else. 4815 * happens before everything else.
4816 */ 4816 */
4817static struct notifier_block __devinitdata migration_notifier = { 4817static struct notifier_block migration_notifier = {
4818 .notifier_call = migration_call, 4818 .notifier_call = migration_call,
4819 .priority = 10 4819 .priority = 10
4820}; 4820};
diff --git a/kernel/softirq.c b/kernel/softirq.c
index ec8fed42a86f..336f92d64e2e 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -446,7 +446,7 @@ static void takeover_tasklets(unsigned int cpu)
446} 446}
447#endif /* CONFIG_HOTPLUG_CPU */ 447#endif /* CONFIG_HOTPLUG_CPU */
448 448
449static int __devinit cpu_callback(struct notifier_block *nfb, 449static int cpu_callback(struct notifier_block *nfb,
450 unsigned long action, 450 unsigned long action,
451 void *hcpu) 451 void *hcpu)
452{ 452{
@@ -484,7 +484,7 @@ static int __devinit cpu_callback(struct notifier_block *nfb,
484 return NOTIFY_OK; 484 return NOTIFY_OK;
485} 485}
486 486
487static struct notifier_block __devinitdata cpu_nfb = { 487static struct notifier_block cpu_nfb = {
488 .notifier_call = cpu_callback 488 .notifier_call = cpu_callback
489}; 489};
490 490
diff --git a/kernel/softlockup.c b/kernel/softlockup.c
index ced91e1ff564..14c7faf02909 100644
--- a/kernel/softlockup.c
+++ b/kernel/softlockup.c
@@ -104,7 +104,7 @@ static int watchdog(void * __bind_cpu)
104/* 104/*
105 * Create/destroy watchdog threads as CPUs come and go: 105 * Create/destroy watchdog threads as CPUs come and go:
106 */ 106 */
107static int __devinit 107static int
108cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) 108cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
109{ 109{
110 int hotcpu = (unsigned long)hcpu; 110 int hotcpu = (unsigned long)hcpu;
@@ -140,7 +140,7 @@ cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
140 return NOTIFY_OK; 140 return NOTIFY_OK;
141} 141}
142 142
143static struct notifier_block __devinitdata cpu_nfb = { 143static struct notifier_block cpu_nfb = {
144 .notifier_call = cpu_callback 144 .notifier_call = cpu_callback
145}; 145};
146 146
diff --git a/kernel/timer.c b/kernel/timer.c
index 883773788836..67eaf0f54096 100644
--- a/kernel/timer.c
+++ b/kernel/timer.c
@@ -1314,7 +1314,7 @@ static void __devinit migrate_timers(int cpu)
1314} 1314}
1315#endif /* CONFIG_HOTPLUG_CPU */ 1315#endif /* CONFIG_HOTPLUG_CPU */
1316 1316
1317static int __devinit timer_cpu_notify(struct notifier_block *self, 1317static int timer_cpu_notify(struct notifier_block *self,
1318 unsigned long action, void *hcpu) 1318 unsigned long action, void *hcpu)
1319{ 1319{
1320 long cpu = (long)hcpu; 1320 long cpu = (long)hcpu;
@@ -1334,7 +1334,7 @@ static int __devinit timer_cpu_notify(struct notifier_block *self,
1334 return NOTIFY_OK; 1334 return NOTIFY_OK;
1335} 1335}
1336 1336
1337static struct notifier_block __devinitdata timers_nb = { 1337static struct notifier_block timers_nb = {
1338 .notifier_call = timer_cpu_notify, 1338 .notifier_call = timer_cpu_notify,
1339}; 1339};
1340 1340
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index e9e464a90376..880fb415a8f6 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -547,7 +547,7 @@ static void take_over_work(struct workqueue_struct *wq, unsigned int cpu)
547} 547}
548 548
549/* We're holding the cpucontrol mutex here */ 549/* We're holding the cpucontrol mutex here */
550static int __devinit workqueue_cpu_callback(struct notifier_block *nfb, 550static int workqueue_cpu_callback(struct notifier_block *nfb,
551 unsigned long action, 551 unsigned long action,
552 void *hcpu) 552 void *hcpu)
553{ 553{
diff --git a/lib/kobject.c b/lib/kobject.c
index 01d957513940..b46350c27837 100644
--- a/lib/kobject.c
+++ b/lib/kobject.c
@@ -422,7 +422,6 @@ struct kobject *kobject_add_dir(struct kobject *parent, const char *name)
422 422
423 return k; 423 return k;
424} 424}
425EXPORT_SYMBOL_GPL(kobject_add_dir);
426 425
427/** 426/**
428 * kset_init - initialize a kset for use 427 * kset_init - initialize a kset for use
@@ -569,7 +568,7 @@ int subsys_create_file(struct subsystem * s, struct subsys_attribute * a)
569 * @s: subsystem. 568 * @s: subsystem.
570 * @a: attribute desciptor. 569 * @a: attribute desciptor.
571 */ 570 */
572 571#if 0
573void subsys_remove_file(struct subsystem * s, struct subsys_attribute * a) 572void subsys_remove_file(struct subsystem * s, struct subsys_attribute * a)
574{ 573{
575 if (subsys_get(s)) { 574 if (subsys_get(s)) {
@@ -577,6 +576,7 @@ void subsys_remove_file(struct subsystem * s, struct subsys_attribute * a)
577 subsys_put(s); 576 subsys_put(s);
578 } 577 }
579} 578}
579#endif /* 0 */
580 580
581EXPORT_SYMBOL(kobject_init); 581EXPORT_SYMBOL(kobject_init);
582EXPORT_SYMBOL(kobject_register); 582EXPORT_SYMBOL(kobject_register);
@@ -588,10 +588,7 @@ EXPORT_SYMBOL(kobject_del);
588 588
589EXPORT_SYMBOL(kset_register); 589EXPORT_SYMBOL(kset_register);
590EXPORT_SYMBOL(kset_unregister); 590EXPORT_SYMBOL(kset_unregister);
591EXPORT_SYMBOL(kset_find_obj);
592 591
593EXPORT_SYMBOL(subsystem_init);
594EXPORT_SYMBOL(subsystem_register); 592EXPORT_SYMBOL(subsystem_register);
595EXPORT_SYMBOL(subsystem_unregister); 593EXPORT_SYMBOL(subsystem_unregister);
596EXPORT_SYMBOL(subsys_create_file); 594EXPORT_SYMBOL(subsys_create_file);
597EXPORT_SYMBOL(subsys_remove_file);
diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c
index 982226daf939..7f20e7b857cb 100644
--- a/lib/kobject_uevent.c
+++ b/lib/kobject_uevent.c
@@ -25,11 +25,13 @@
25#define BUFFER_SIZE 2048 /* buffer for the variables */ 25#define BUFFER_SIZE 2048 /* buffer for the variables */
26#define NUM_ENVP 32 /* number of env pointers */ 26#define NUM_ENVP 32 /* number of env pointers */
27 27
28#if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET) 28#if defined(CONFIG_HOTPLUG)
29u64 uevent_seqnum; 29u64 uevent_seqnum;
30char uevent_helper[UEVENT_HELPER_PATH_LEN] = "/sbin/hotplug"; 30char uevent_helper[UEVENT_HELPER_PATH_LEN] = "/sbin/hotplug";
31static DEFINE_SPINLOCK(sequence_lock); 31static DEFINE_SPINLOCK(sequence_lock);
32#if defined(CONFIG_NET)
32static struct sock *uevent_sock; 33static struct sock *uevent_sock;
34#endif
33 35
34static char *action_to_string(enum kobject_action action) 36static char *action_to_string(enum kobject_action action)
35{ 37{
@@ -155,6 +157,7 @@ void kobject_uevent(struct kobject *kobj, enum kobject_action action)
155 spin_unlock(&sequence_lock); 157 spin_unlock(&sequence_lock);
156 sprintf(seq_buff, "SEQNUM=%llu", (unsigned long long)seq); 158 sprintf(seq_buff, "SEQNUM=%llu", (unsigned long long)seq);
157 159
160#if defined(CONFIG_NET)
158 /* send netlink message */ 161 /* send netlink message */
159 if (uevent_sock) { 162 if (uevent_sock) {
160 struct sk_buff *skb; 163 struct sk_buff *skb;
@@ -179,6 +182,7 @@ void kobject_uevent(struct kobject *kobj, enum kobject_action action)
179 netlink_broadcast(uevent_sock, skb, 0, 1, GFP_KERNEL); 182 netlink_broadcast(uevent_sock, skb, 0, 1, GFP_KERNEL);
180 } 183 }
181 } 184 }
185#endif
182 186
183 /* call uevent_helper, usually only enabled during early boot */ 187 /* call uevent_helper, usually only enabled during early boot */
184 if (uevent_helper[0]) { 188 if (uevent_helper[0]) {
@@ -249,6 +253,7 @@ int add_uevent_var(char **envp, int num_envp, int *cur_index,
249} 253}
250EXPORT_SYMBOL_GPL(add_uevent_var); 254EXPORT_SYMBOL_GPL(add_uevent_var);
251 255
256#if defined(CONFIG_NET)
252static int __init kobject_uevent_init(void) 257static int __init kobject_uevent_init(void)
253{ 258{
254 uevent_sock = netlink_kernel_create(NETLINK_KOBJECT_UEVENT, 1, NULL, 259 uevent_sock = netlink_kernel_create(NETLINK_KOBJECT_UEVENT, 1, NULL,
@@ -264,5 +269,6 @@ static int __init kobject_uevent_init(void)
264} 269}
265 270
266postcore_initcall(kobject_uevent_init); 271postcore_initcall(kobject_uevent_init);
272#endif
267 273
268#endif /* CONFIG_HOTPLUG */ 274#endif /* CONFIG_HOTPLUG */
diff --git a/mm/filemap.c b/mm/filemap.c
index 3ef20739e725..fd57442186cb 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -697,6 +697,38 @@ unsigned find_get_pages(struct address_space *mapping, pgoff_t start,
697 return ret; 697 return ret;
698} 698}
699 699
700/**
701 * find_get_pages_contig - gang contiguous pagecache lookup
702 * @mapping: The address_space to search
703 * @index: The starting page index
704 * @nr_pages: The maximum number of pages
705 * @pages: Where the resulting pages are placed
706 *
707 * find_get_pages_contig() works exactly like find_get_pages(), except
708 * that the returned number of pages are guaranteed to be contiguous.
709 *
710 * find_get_pages_contig() returns the number of pages which were found.
711 */
712unsigned find_get_pages_contig(struct address_space *mapping, pgoff_t index,
713 unsigned int nr_pages, struct page **pages)
714{
715 unsigned int i;
716 unsigned int ret;
717
718 read_lock_irq(&mapping->tree_lock);
719 ret = radix_tree_gang_lookup(&mapping->page_tree,
720 (void **)pages, index, nr_pages);
721 for (i = 0; i < ret; i++) {
722 if (pages[i]->mapping == NULL || pages[i]->index != index)
723 break;
724
725 page_cache_get(pages[i]);
726 index++;
727 }
728 read_unlock_irq(&mapping->tree_lock);
729 return i;
730}
731
700/* 732/*
701 * Like find_get_pages, except we only return pages which are tagged with 733 * Like find_get_pages, except we only return pages which are tagged with
702 * `tag'. We update *index to index the next page for the traversal. 734 * `tag'. We update *index to index the next page for the traversal.
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 1fe76d963ac2..1ae2b2cc3a54 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -69,12 +69,16 @@ int __add_pages(struct zone *zone, unsigned long phys_start_pfn,
69 for (i = 0; i < nr_pages; i += PAGES_PER_SECTION) { 69 for (i = 0; i < nr_pages; i += PAGES_PER_SECTION) {
70 err = __add_section(zone, phys_start_pfn + i); 70 err = __add_section(zone, phys_start_pfn + i);
71 71
72 if (err) 72 /* We want to keep adding the rest of the
73 * sections if the first ones already exist
74 */
75 if (err && (err != -EEXIST))
73 break; 76 break;
74 } 77 }
75 78
76 return err; 79 return err;
77} 80}
81EXPORT_SYMBOL_GPL(__add_pages);
78 82
79static void grow_zone_span(struct zone *zone, 83static void grow_zone_span(struct zone *zone,
80 unsigned long start_pfn, unsigned long end_pfn) 84 unsigned long start_pfn, unsigned long end_pfn)
diff --git a/mm/migrate.c b/mm/migrate.c
index d444229f2599..1c25040693d2 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -439,6 +439,17 @@ redo:
439 goto unlock_both; 439 goto unlock_both;
440 } 440 }
441 441
442 /* Make sure the dirty bit is up to date */
443 if (try_to_unmap(page, 1) == SWAP_FAIL) {
444 rc = -EPERM;
445 goto unlock_both;
446 }
447
448 if (page_mapcount(page)) {
449 rc = -EAGAIN;
450 goto unlock_both;
451 }
452
442 /* 453 /*
443 * Default handling if a filesystem does not provide 454 * Default handling if a filesystem does not provide
444 * a migration function. We can only migrate clean 455 * a migration function. We can only migrate clean
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 123c60586740..ea77c999047e 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1962,7 +1962,7 @@ static inline void free_zone_pagesets(int cpu)
1962 } 1962 }
1963} 1963}
1964 1964
1965static int __cpuinit pageset_cpuup_callback(struct notifier_block *nfb, 1965static int pageset_cpuup_callback(struct notifier_block *nfb,
1966 unsigned long action, 1966 unsigned long action,
1967 void *hcpu) 1967 void *hcpu)
1968{ 1968{
diff --git a/mm/slab.c b/mm/slab.c
index e6ef9bd52335..c32af7e7581e 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -979,7 +979,8 @@ static void __drain_alien_cache(struct kmem_cache *cachep,
979 * That way we could avoid the overhead of putting the objects 979 * That way we could avoid the overhead of putting the objects
980 * into the free lists and getting them back later. 980 * into the free lists and getting them back later.
981 */ 981 */
982 transfer_objects(rl3->shared, ac, ac->limit); 982 if (rl3->shared)
983 transfer_objects(rl3->shared, ac, ac->limit);
983 984
984 free_block(cachep, ac->entry, ac->avail, node); 985 free_block(cachep, ac->entry, ac->avail, node);
985 ac->avail = 0; 986 ac->avail = 0;
@@ -1036,7 +1037,7 @@ static inline void free_alien_cache(struct array_cache **ac_ptr)
1036 1037
1037#endif 1038#endif
1038 1039
1039static int __devinit cpuup_callback(struct notifier_block *nfb, 1040static int cpuup_callback(struct notifier_block *nfb,
1040 unsigned long action, void *hcpu) 1041 unsigned long action, void *hcpu)
1041{ 1042{
1042 long cpu = (long)hcpu; 1043 long cpu = (long)hcpu;
diff --git a/mm/sparse.c b/mm/sparse.c
index 0a51f36ba3a1..d7c32de99ee8 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -32,7 +32,10 @@ static struct mem_section *sparse_index_alloc(int nid)
32 unsigned long array_size = SECTIONS_PER_ROOT * 32 unsigned long array_size = SECTIONS_PER_ROOT *
33 sizeof(struct mem_section); 33 sizeof(struct mem_section);
34 34
35 section = alloc_bootmem_node(NODE_DATA(nid), array_size); 35 if (system_state == SYSTEM_RUNNING)
36 section = kmalloc_node(array_size, GFP_KERNEL, nid);
37 else
38 section = alloc_bootmem_node(NODE_DATA(nid), array_size);
36 39
37 if (section) 40 if (section)
38 memset(section, 0, array_size); 41 memset(section, 0, array_size);
@@ -281,9 +284,9 @@ int sparse_add_one_section(struct zone *zone, unsigned long start_pfn,
281 284
282 ret = sparse_init_one_section(ms, section_nr, memmap); 285 ret = sparse_init_one_section(ms, section_nr, memmap);
283 286
284 if (ret <= 0)
285 __kfree_section_memmap(memmap, nr_pages);
286out: 287out:
287 pgdat_resize_unlock(pgdat, &flags); 288 pgdat_resize_unlock(pgdat, &flags);
289 if (ret <= 0)
290 __kfree_section_memmap(memmap, nr_pages);
288 return ret; 291 return ret;
289} 292}
diff --git a/mm/vmscan.c b/mm/vmscan.c
index acdf001d6941..4649a63a8cb6 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1328,7 +1328,7 @@ repeat:
1328 not required for correctness. So if the last cpu in a node goes 1328 not required for correctness. So if the last cpu in a node goes
1329 away, we get changed to run anywhere: as the first one comes back, 1329 away, we get changed to run anywhere: as the first one comes back,
1330 restore their cpu bindings. */ 1330 restore their cpu bindings. */
1331static int __devinit cpu_callback(struct notifier_block *nfb, 1331static int cpu_callback(struct notifier_block *nfb,
1332 unsigned long action, void *hcpu) 1332 unsigned long action, void *hcpu)
1333{ 1333{
1334 pg_data_t *pgdat; 1334 pg_data_t *pgdat;
diff --git a/net/ax25/af_ax25.c b/net/ax25/af_ax25.c
index dbf9b47681f7..a2e0dd047e9f 100644
--- a/net/ax25/af_ax25.c
+++ b/net/ax25/af_ax25.c
@@ -228,6 +228,8 @@ ax25_cb *ax25_find_cb(ax25_address *src_addr, ax25_address *dest_addr,
228 return NULL; 228 return NULL;
229} 229}
230 230
231EXPORT_SYMBOL(ax25_find_cb);
232
231void ax25_send_to_raw(ax25_address *addr, struct sk_buff *skb, int proto) 233void ax25_send_to_raw(ax25_address *addr, struct sk_buff *skb, int proto)
232{ 234{
233 ax25_cb *s; 235 ax25_cb *s;
@@ -424,6 +426,26 @@ static int ax25_ctl_ioctl(const unsigned int cmd, void __user *arg)
424 return 0; 426 return 0;
425} 427}
426 428
429static void ax25_fillin_cb_from_dev(ax25_cb *ax25, ax25_dev *ax25_dev)
430{
431 ax25->rtt = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T1]) / 2;
432 ax25->t1 = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T1]);
433 ax25->t2 = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T2]);
434 ax25->t3 = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T3]);
435 ax25->n2 = ax25_dev->values[AX25_VALUES_N2];
436 ax25->paclen = ax25_dev->values[AX25_VALUES_PACLEN];
437 ax25->idle = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_IDLE]);
438 ax25->backoff = ax25_dev->values[AX25_VALUES_BACKOFF];
439
440 if (ax25_dev->values[AX25_VALUES_AXDEFMODE]) {
441 ax25->modulus = AX25_EMODULUS;
442 ax25->window = ax25_dev->values[AX25_VALUES_EWINDOW];
443 } else {
444 ax25->modulus = AX25_MODULUS;
445 ax25->window = ax25_dev->values[AX25_VALUES_WINDOW];
446 }
447}
448
427/* 449/*
428 * Fill in a created AX.25 created control block with the default 450 * Fill in a created AX.25 created control block with the default
429 * values for a particular device. 451 * values for a particular device.
@@ -433,39 +455,28 @@ void ax25_fillin_cb(ax25_cb *ax25, ax25_dev *ax25_dev)
433 ax25->ax25_dev = ax25_dev; 455 ax25->ax25_dev = ax25_dev;
434 456
435 if (ax25->ax25_dev != NULL) { 457 if (ax25->ax25_dev != NULL) {
436 ax25->rtt = ax25_dev->values[AX25_VALUES_T1] / 2; 458 ax25_fillin_cb_from_dev(ax25, ax25_dev);
437 ax25->t1 = ax25_dev->values[AX25_VALUES_T1]; 459 return;
438 ax25->t2 = ax25_dev->values[AX25_VALUES_T2]; 460 }
439 ax25->t3 = ax25_dev->values[AX25_VALUES_T3]; 461
440 ax25->n2 = ax25_dev->values[AX25_VALUES_N2]; 462 /*
441 ax25->paclen = ax25_dev->values[AX25_VALUES_PACLEN]; 463 * No device, use kernel / AX.25 spec default values
442 ax25->idle = ax25_dev->values[AX25_VALUES_IDLE]; 464 */
443 ax25->backoff = ax25_dev->values[AX25_VALUES_BACKOFF]; 465 ax25->rtt = msecs_to_jiffies(AX25_DEF_T1) / 2;
444 466 ax25->t1 = msecs_to_jiffies(AX25_DEF_T1);
445 if (ax25_dev->values[AX25_VALUES_AXDEFMODE]) { 467 ax25->t2 = msecs_to_jiffies(AX25_DEF_T2);
446 ax25->modulus = AX25_EMODULUS; 468 ax25->t3 = msecs_to_jiffies(AX25_DEF_T3);
447 ax25->window = ax25_dev->values[AX25_VALUES_EWINDOW]; 469 ax25->n2 = AX25_DEF_N2;
448 } else { 470 ax25->paclen = AX25_DEF_PACLEN;
449 ax25->modulus = AX25_MODULUS; 471 ax25->idle = msecs_to_jiffies(AX25_DEF_IDLE);
450 ax25->window = ax25_dev->values[AX25_VALUES_WINDOW]; 472 ax25->backoff = AX25_DEF_BACKOFF;
451 } 473
474 if (AX25_DEF_AXDEFMODE) {
475 ax25->modulus = AX25_EMODULUS;
476 ax25->window = AX25_DEF_EWINDOW;
452 } else { 477 } else {
453 ax25->rtt = AX25_DEF_T1 / 2; 478 ax25->modulus = AX25_MODULUS;
454 ax25->t1 = AX25_DEF_T1; 479 ax25->window = AX25_DEF_WINDOW;
455 ax25->t2 = AX25_DEF_T2;
456 ax25->t3 = AX25_DEF_T3;
457 ax25->n2 = AX25_DEF_N2;
458 ax25->paclen = AX25_DEF_PACLEN;
459 ax25->idle = AX25_DEF_IDLE;
460 ax25->backoff = AX25_DEF_BACKOFF;
461
462 if (AX25_DEF_AXDEFMODE) {
463 ax25->modulus = AX25_EMODULUS;
464 ax25->window = AX25_DEF_EWINDOW;
465 } else {
466 ax25->modulus = AX25_MODULUS;
467 ax25->window = AX25_DEF_WINDOW;
468 }
469 } 480 }
470} 481}
471 482
@@ -1979,24 +1990,6 @@ static struct notifier_block ax25_dev_notifier = {
1979 .notifier_call =ax25_device_event, 1990 .notifier_call =ax25_device_event,
1980}; 1991};
1981 1992
1982EXPORT_SYMBOL(ax25_hard_header);
1983EXPORT_SYMBOL(ax25_rebuild_header);
1984EXPORT_SYMBOL(ax25_findbyuid);
1985EXPORT_SYMBOL(ax25_find_cb);
1986EXPORT_SYMBOL(ax25_linkfail_register);
1987EXPORT_SYMBOL(ax25_linkfail_release);
1988EXPORT_SYMBOL(ax25_listen_register);
1989EXPORT_SYMBOL(ax25_listen_release);
1990EXPORT_SYMBOL(ax25_protocol_register);
1991EXPORT_SYMBOL(ax25_protocol_release);
1992EXPORT_SYMBOL(ax25_send_frame);
1993EXPORT_SYMBOL(ax25_uid_policy);
1994EXPORT_SYMBOL(ax25cmp);
1995EXPORT_SYMBOL(ax2asc);
1996EXPORT_SYMBOL(asc2ax);
1997EXPORT_SYMBOL(null_ax25_address);
1998EXPORT_SYMBOL(ax25_display_timer);
1999
2000static int __init ax25_init(void) 1993static int __init ax25_init(void)
2001{ 1994{
2002 int rc = proto_register(&ax25_proto, 0); 1995 int rc = proto_register(&ax25_proto, 0);
diff --git a/net/ax25/ax25_addr.c b/net/ax25/ax25_addr.c
index 0164a155b8c4..5f0896ad0042 100644
--- a/net/ax25/ax25_addr.c
+++ b/net/ax25/ax25_addr.c
@@ -11,6 +11,7 @@
11#include <linux/socket.h> 11#include <linux/socket.h>
12#include <linux/in.h> 12#include <linux/in.h>
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/module.h>
14#include <linux/sched.h> 15#include <linux/sched.h>
15#include <linux/timer.h> 16#include <linux/timer.h>
16#include <linux/string.h> 17#include <linux/string.h>
@@ -33,6 +34,8 @@
33 */ 34 */
34ax25_address null_ax25_address = {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00}}; 35ax25_address null_ax25_address = {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00}};
35 36
37EXPORT_SYMBOL(null_ax25_address);
38
36/* 39/*
37 * ax25 -> ascii conversion 40 * ax25 -> ascii conversion
38 */ 41 */
@@ -64,6 +67,8 @@ char *ax2asc(char *buf, ax25_address *a)
64 67
65} 68}
66 69
70EXPORT_SYMBOL(ax2asc);
71
67/* 72/*
68 * ascii -> ax25 conversion 73 * ascii -> ax25 conversion
69 */ 74 */
@@ -97,6 +102,8 @@ void asc2ax(ax25_address *addr, char *callsign)
97 addr->ax25_call[6] &= 0x1E; 102 addr->ax25_call[6] &= 0x1E;
98} 103}
99 104
105EXPORT_SYMBOL(asc2ax);
106
100/* 107/*
101 * Compare two ax.25 addresses 108 * Compare two ax.25 addresses
102 */ 109 */
@@ -116,6 +123,8 @@ int ax25cmp(ax25_address *a, ax25_address *b)
116 return 2; /* Partial match */ 123 return 2; /* Partial match */
117} 124}
118 125
126EXPORT_SYMBOL(ax25cmp);
127
119/* 128/*
120 * Compare two AX.25 digipeater paths. 129 * Compare two AX.25 digipeater paths.
121 */ 130 */
diff --git a/net/ax25/ax25_ds_timer.c b/net/ax25/ax25_ds_timer.c
index 061083efc1dc..5961459935eb 100644
--- a/net/ax25/ax25_ds_timer.c
+++ b/net/ax25/ax25_ds_timer.c
@@ -61,7 +61,8 @@ void ax25_ds_set_timer(ax25_dev *ax25_dev)
61 return; 61 return;
62 62
63 del_timer(&ax25_dev->dama.slave_timer); 63 del_timer(&ax25_dev->dama.slave_timer);
64 ax25_dev->dama.slave_timeout = ax25_dev->values[AX25_VALUES_DS_TIMEOUT] / 10; 64 ax25_dev->dama.slave_timeout =
65 msecs_to_jiffies(ax25_dev->values[AX25_VALUES_DS_TIMEOUT]) / 10;
65 ax25_ds_add_timer(ax25_dev); 66 ax25_ds_add_timer(ax25_dev);
66} 67}
67 68
diff --git a/net/ax25/ax25_iface.c b/net/ax25/ax25_iface.c
index d68aff100729..3bb152710b77 100644
--- a/net/ax25/ax25_iface.c
+++ b/net/ax25/ax25_iface.c
@@ -12,6 +12,7 @@
12#include <linux/socket.h> 12#include <linux/socket.h>
13#include <linux/in.h> 13#include <linux/in.h>
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/module.h>
15#include <linux/sched.h> 16#include <linux/sched.h>
16#include <linux/spinlock.h> 17#include <linux/spinlock.h>
17#include <linux/timer.h> 18#include <linux/timer.h>
@@ -74,6 +75,8 @@ int ax25_protocol_register(unsigned int pid,
74 return 1; 75 return 1;
75} 76}
76 77
78EXPORT_SYMBOL(ax25_protocol_register);
79
77void ax25_protocol_release(unsigned int pid) 80void ax25_protocol_release(unsigned int pid)
78{ 81{
79 struct protocol_struct *s, *protocol; 82 struct protocol_struct *s, *protocol;
@@ -106,6 +109,8 @@ void ax25_protocol_release(unsigned int pid)
106 write_unlock(&protocol_list_lock); 109 write_unlock(&protocol_list_lock);
107} 110}
108 111
112EXPORT_SYMBOL(ax25_protocol_release);
113
109int ax25_linkfail_register(void (*func)(ax25_cb *, int)) 114int ax25_linkfail_register(void (*func)(ax25_cb *, int))
110{ 115{
111 struct linkfail_struct *linkfail; 116 struct linkfail_struct *linkfail;
@@ -123,6 +128,8 @@ int ax25_linkfail_register(void (*func)(ax25_cb *, int))
123 return 1; 128 return 1;
124} 129}
125 130
131EXPORT_SYMBOL(ax25_linkfail_register);
132
126void ax25_linkfail_release(void (*func)(ax25_cb *, int)) 133void ax25_linkfail_release(void (*func)(ax25_cb *, int))
127{ 134{
128 struct linkfail_struct *s, *linkfail; 135 struct linkfail_struct *s, *linkfail;
@@ -155,6 +162,8 @@ void ax25_linkfail_release(void (*func)(ax25_cb *, int))
155 spin_unlock_bh(&linkfail_lock); 162 spin_unlock_bh(&linkfail_lock);
156} 163}
157 164
165EXPORT_SYMBOL(ax25_linkfail_release);
166
158int ax25_listen_register(ax25_address *callsign, struct net_device *dev) 167int ax25_listen_register(ax25_address *callsign, struct net_device *dev)
159{ 168{
160 struct listen_struct *listen; 169 struct listen_struct *listen;
@@ -176,6 +185,8 @@ int ax25_listen_register(ax25_address *callsign, struct net_device *dev)
176 return 1; 185 return 1;
177} 186}
178 187
188EXPORT_SYMBOL(ax25_listen_register);
189
179void ax25_listen_release(ax25_address *callsign, struct net_device *dev) 190void ax25_listen_release(ax25_address *callsign, struct net_device *dev)
180{ 191{
181 struct listen_struct *s, *listen; 192 struct listen_struct *s, *listen;
@@ -208,6 +219,8 @@ void ax25_listen_release(ax25_address *callsign, struct net_device *dev)
208 spin_unlock_bh(&listen_lock); 219 spin_unlock_bh(&listen_lock);
209} 220}
210 221
222EXPORT_SYMBOL(ax25_listen_release);
223
211int (*ax25_protocol_function(unsigned int pid))(struct sk_buff *, ax25_cb *) 224int (*ax25_protocol_function(unsigned int pid))(struct sk_buff *, ax25_cb *)
212{ 225{
213 int (*res)(struct sk_buff *, ax25_cb *) = NULL; 226 int (*res)(struct sk_buff *, ax25_cb *) = NULL;
diff --git a/net/ax25/ax25_ip.c b/net/ax25/ax25_ip.c
index d643dac3eccc..a0b534f80f17 100644
--- a/net/ax25/ax25_ip.c
+++ b/net/ax25/ax25_ip.c
@@ -12,6 +12,7 @@
12#include <linux/socket.h> 12#include <linux/socket.h>
13#include <linux/in.h> 13#include <linux/in.h>
14#include <linux/kernel.h> 14#include <linux/kernel.h>
15#include <linux/module.h>
15#include <linux/sched.h> 16#include <linux/sched.h>
16#include <linux/timer.h> 17#include <linux/timer.h>
17#include <linux/string.h> 18#include <linux/string.h>
@@ -221,3 +222,5 @@ int ax25_rebuild_header(struct sk_buff *skb)
221 222
222#endif 223#endif
223 224
225EXPORT_SYMBOL(ax25_hard_header);
226EXPORT_SYMBOL(ax25_rebuild_header);
diff --git a/net/ax25/ax25_out.c b/net/ax25/ax25_out.c
index 5fc048dcd39a..5d99852b239c 100644
--- a/net/ax25/ax25_out.c
+++ b/net/ax25/ax25_out.c
@@ -14,6 +14,7 @@
14#include <linux/socket.h> 14#include <linux/socket.h>
15#include <linux/in.h> 15#include <linux/in.h>
16#include <linux/kernel.h> 16#include <linux/kernel.h>
17#include <linux/module.h>
17#include <linux/sched.h> 18#include <linux/sched.h>
18#include <linux/timer.h> 19#include <linux/timer.h>
19#include <linux/string.h> 20#include <linux/string.h>
@@ -104,6 +105,8 @@ ax25_cb *ax25_send_frame(struct sk_buff *skb, int paclen, ax25_address *src, ax2
104 return ax25; /* We had to create it */ 105 return ax25; /* We had to create it */
105} 106}
106 107
108EXPORT_SYMBOL(ax25_send_frame);
109
107/* 110/*
108 * All outgoing AX.25 I frames pass via this routine. Therefore this is 111 * All outgoing AX.25 I frames pass via this routine. Therefore this is
109 * where the fragmentation of frames takes place. If fragment is set to 112 * where the fragmentation of frames takes place. If fragment is set to
diff --git a/net/ax25/ax25_route.c b/net/ax25/ax25_route.c
index f04f8630fd28..5ac98250797b 100644
--- a/net/ax25/ax25_route.c
+++ b/net/ax25/ax25_route.c
@@ -360,7 +360,7 @@ struct file_operations ax25_route_fops = {
360/* 360/*
361 * Find AX.25 route 361 * Find AX.25 route
362 * 362 *
363 * Only routes with a refernce rout of zero can be destroyed. 363 * Only routes with a reference count of zero can be destroyed.
364 */ 364 */
365static ax25_route *ax25_get_route(ax25_address *addr, struct net_device *dev) 365static ax25_route *ax25_get_route(ax25_address *addr, struct net_device *dev)
366{ 366{
diff --git a/net/ax25/ax25_timer.c b/net/ax25/ax25_timer.c
index 7a6b50a14554..ec254057f212 100644
--- a/net/ax25/ax25_timer.c
+++ b/net/ax25/ax25_timer.c
@@ -18,6 +18,7 @@
18#include <linux/socket.h> 18#include <linux/socket.h>
19#include <linux/in.h> 19#include <linux/in.h>
20#include <linux/kernel.h> 20#include <linux/kernel.h>
21#include <linux/module.h>
21#include <linux/jiffies.h> 22#include <linux/jiffies.h>
22#include <linux/timer.h> 23#include <linux/timer.h>
23#include <linux/string.h> 24#include <linux/string.h>
@@ -137,6 +138,8 @@ unsigned long ax25_display_timer(struct timer_list *timer)
137 return timer->expires - jiffies; 138 return timer->expires - jiffies;
138} 139}
139 140
141EXPORT_SYMBOL(ax25_display_timer);
142
140static void ax25_heartbeat_expiry(unsigned long param) 143static void ax25_heartbeat_expiry(unsigned long param)
141{ 144{
142 int proto = AX25_PROTO_STD_SIMPLEX; 145 int proto = AX25_PROTO_STD_SIMPLEX;
diff --git a/net/ax25/ax25_uid.c b/net/ax25/ax25_uid.c
index b8b5854bce9a..5e9a81e8b214 100644
--- a/net/ax25/ax25_uid.c
+++ b/net/ax25/ax25_uid.c
@@ -49,6 +49,8 @@ static DEFINE_RWLOCK(ax25_uid_lock);
49 49
50int ax25_uid_policy = 0; 50int ax25_uid_policy = 0;
51 51
52EXPORT_SYMBOL(ax25_uid_policy);
53
52ax25_uid_assoc *ax25_findbyuid(uid_t uid) 54ax25_uid_assoc *ax25_findbyuid(uid_t uid)
53{ 55{
54 ax25_uid_assoc *ax25_uid, *res = NULL; 56 ax25_uid_assoc *ax25_uid, *res = NULL;
@@ -67,6 +69,8 @@ ax25_uid_assoc *ax25_findbyuid(uid_t uid)
67 return res; 69 return res;
68} 70}
69 71
72EXPORT_SYMBOL(ax25_findbyuid);
73
70int ax25_uid_ioctl(int cmd, struct sockaddr_ax25 *sax) 74int ax25_uid_ioctl(int cmd, struct sockaddr_ax25 *sax)
71{ 75{
72 ax25_uid_assoc *ax25_uid; 76 ax25_uid_assoc *ax25_uid;
diff --git a/net/ax25/sysctl_net_ax25.c b/net/ax25/sysctl_net_ax25.c
index 894a22558d9d..bdb64c36df12 100644
--- a/net/ax25/sysctl_net_ax25.c
+++ b/net/ax25/sysctl_net_ax25.c
@@ -18,14 +18,14 @@ static int min_backoff[1], max_backoff[] = {2};
18static int min_conmode[1], max_conmode[] = {2}; 18static int min_conmode[1], max_conmode[] = {2};
19static int min_window[] = {1}, max_window[] = {7}; 19static int min_window[] = {1}, max_window[] = {7};
20static int min_ewindow[] = {1}, max_ewindow[] = {63}; 20static int min_ewindow[] = {1}, max_ewindow[] = {63};
21static int min_t1[] = {1}, max_t1[] = {30 * HZ}; 21static int min_t1[] = {1}, max_t1[] = {30000};
22static int min_t2[] = {1}, max_t2[] = {20 * HZ}; 22static int min_t2[] = {1}, max_t2[] = {20000};
23static int min_t3[1], max_t3[] = {3600 * HZ}; 23static int min_t3[1], max_t3[] = {3600000};
24static int min_idle[1], max_idle[] = {65535 * HZ}; 24static int min_idle[1], max_idle[] = {65535000};
25static int min_n2[] = {1}, max_n2[] = {31}; 25static int min_n2[] = {1}, max_n2[] = {31};
26static int min_paclen[] = {1}, max_paclen[] = {512}; 26static int min_paclen[] = {1}, max_paclen[] = {512};
27static int min_proto[1], max_proto[] = { AX25_PROTO_MAX }; 27static int min_proto[1], max_proto[] = { AX25_PROTO_MAX };
28static int min_ds_timeout[1], max_ds_timeout[] = {65535 * HZ}; 28static int min_ds_timeout[1], max_ds_timeout[] = {65535000};
29 29
30static struct ctl_table_header *ax25_table_header; 30static struct ctl_table_header *ax25_table_header;
31 31
diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
index 2d24fb400e0c..56f3aa47e758 100644
--- a/net/bridge/br_forward.c
+++ b/net/bridge/br_forward.c
@@ -16,6 +16,7 @@
16#include <linux/kernel.h> 16#include <linux/kernel.h>
17#include <linux/netdevice.h> 17#include <linux/netdevice.h>
18#include <linux/skbuff.h> 18#include <linux/skbuff.h>
19#include <linux/if_vlan.h>
19#include <linux/netfilter_bridge.h> 20#include <linux/netfilter_bridge.h>
20#include "br_private.h" 21#include "br_private.h"
21 22
@@ -29,10 +30,15 @@ static inline int should_deliver(const struct net_bridge_port *p,
29 return 1; 30 return 1;
30} 31}
31 32
33static inline unsigned packet_length(const struct sk_buff *skb)
34{
35 return skb->len - (skb->protocol == htons(ETH_P_8021Q) ? VLAN_HLEN : 0);
36}
37
32int br_dev_queue_push_xmit(struct sk_buff *skb) 38int br_dev_queue_push_xmit(struct sk_buff *skb)
33{ 39{
34 /* drop mtu oversized packets except tso */ 40 /* drop mtu oversized packets except tso */
35 if (skb->len > skb->dev->mtu && !skb_shinfo(skb)->tso_size) 41 if (packet_length(skb) > skb->dev->mtu && !skb_shinfo(skb)->tso_size)
36 kfree_skb(skb); 42 kfree_skb(skb);
37 else { 43 else {
38#ifdef CONFIG_BRIDGE_NETFILTER 44#ifdef CONFIG_BRIDGE_NETFILTER
diff --git a/net/decnet/dn_neigh.c b/net/decnet/dn_neigh.c
index 7c8692c26bfe..66e230c3b328 100644
--- a/net/decnet/dn_neigh.c
+++ b/net/decnet/dn_neigh.c
@@ -493,7 +493,6 @@ struct elist_cb_state {
493static void neigh_elist_cb(struct neighbour *neigh, void *_info) 493static void neigh_elist_cb(struct neighbour *neigh, void *_info)
494{ 494{
495 struct elist_cb_state *s = _info; 495 struct elist_cb_state *s = _info;
496 struct dn_dev *dn_db;
497 struct dn_neigh *dn; 496 struct dn_neigh *dn;
498 497
499 if (neigh->dev != s->dev) 498 if (neigh->dev != s->dev)
@@ -503,10 +502,6 @@ static void neigh_elist_cb(struct neighbour *neigh, void *_info)
503 if (!(dn->flags & (DN_NDFLAG_R1|DN_NDFLAG_R2))) 502 if (!(dn->flags & (DN_NDFLAG_R1|DN_NDFLAG_R2)))
504 return; 503 return;
505 504
506 dn_db = (struct dn_dev *) s->dev->dn_ptr;
507 if (dn_db->parms.forwarding == 1 && (dn->flags & DN_NDFLAG_R2))
508 return;
509
510 if (s->t == s->n) 505 if (s->t == s->n)
511 s->rs = dn_find_slot(s->ptr, s->n, dn->priority); 506 s->rs = dn_find_slot(s->ptr, s->n, dn->priority);
512 else 507 else
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index dc206f1f914f..0a277453526b 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -1257,7 +1257,7 @@ out_unregister_udp_proto:
1257 goto out; 1257 goto out;
1258} 1258}
1259 1259
1260module_init(inet_init); 1260fs_initcall(inet_init);
1261 1261
1262/* ------------------------------------------------------------------------ */ 1262/* ------------------------------------------------------------------------ */
1263 1263
diff --git a/net/ipv4/netfilter/Kconfig b/net/ipv4/netfilter/Kconfig
index c60fd5c4ea1e..3d560dec63ab 100644
--- a/net/ipv4/netfilter/Kconfig
+++ b/net/ipv4/netfilter/Kconfig
@@ -345,7 +345,7 @@ config IP_NF_TARGET_LOG
345 To compile it as a module, choose M here. If unsure, say N. 345 To compile it as a module, choose M here. If unsure, say N.
346 346
347config IP_NF_TARGET_ULOG 347config IP_NF_TARGET_ULOG
348 tristate "ULOG target support (OBSOLETE)" 348 tristate "ULOG target support"
349 depends on IP_NF_IPTABLES 349 depends on IP_NF_IPTABLES
350 ---help--- 350 ---help---
351 351
diff --git a/net/ipv4/netfilter/ip_conntrack_helper_h323.c b/net/ipv4/netfilter/ip_conntrack_helper_h323.c
index 2c2fb700d835..518f581d39ec 100644
--- a/net/ipv4/netfilter/ip_conntrack_helper_h323.c
+++ b/net/ipv4/netfilter/ip_conntrack_helper_h323.c
@@ -162,6 +162,8 @@ static int get_tpkt_data(struct sk_buff **pskb, struct ip_conntrack *ct,
162 162
163 /* Validate TPKT length */ 163 /* Validate TPKT length */
164 tpktlen = tpkt[2] * 256 + tpkt[3]; 164 tpktlen = tpkt[2] * 256 + tpkt[3];
165 if (tpktlen < 4)
166 goto clear_out;
165 if (tpktlen > tcpdatalen) { 167 if (tpktlen > tcpdatalen) {
166 if (tcpdatalen == 4) { /* Separate TPKT header */ 168 if (tcpdatalen == 4) { /* Separate TPKT header */
167 /* Netmeeting sends TPKT header and data separately */ 169 /* Netmeeting sends TPKT header and data separately */
diff --git a/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c b/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c
index 48078002e450..355a53a5b6cd 100644
--- a/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c
+++ b/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c
@@ -2,7 +2,7 @@
2 * ip_conntrack_helper_h323_asn1.c - BER and PER decoding library for H.323 2 * ip_conntrack_helper_h323_asn1.c - BER and PER decoding library for H.323
3 * conntrack/NAT module. 3 * conntrack/NAT module.
4 * 4 *
5 * Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@hotmail.com> 5 * Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@users.sourceforge.net>
6 * 6 *
7 * This source code is licensed under General Public License version 2. 7 * This source code is licensed under General Public License version 2.
8 * 8 *
@@ -703,6 +703,10 @@ int decode_choice(bitstr_t * bs, field_t * f, char *base, int level)
703 type = get_bits(bs, f->sz); 703 type = get_bits(bs, f->sz);
704 } 704 }
705 705
706 /* Write Type */
707 if (base)
708 *(unsigned *) base = type;
709
706 /* Check Range */ 710 /* Check Range */
707 if (type >= f->ub) { /* Newer version? */ 711 if (type >= f->ub) { /* Newer version? */
708 BYTE_ALIGN(bs); 712 BYTE_ALIGN(bs);
@@ -712,10 +716,6 @@ int decode_choice(bitstr_t * bs, field_t * f, char *base, int level)
712 return H323_ERROR_NONE; 716 return H323_ERROR_NONE;
713 } 717 }
714 718
715 /* Write Type */
716 if (base)
717 *(unsigned *) base = type;
718
719 /* Transfer to son level */ 719 /* Transfer to son level */
720 son = &f->fields[type]; 720 son = &f->fields[type];
721 if (son->attr & STOP) { 721 if (son->attr & STOP) {
diff --git a/net/ipv4/netfilter/ip_conntrack_proto_sctp.c b/net/ipv4/netfilter/ip_conntrack_proto_sctp.c
index 5259abd0fb42..0416073c5600 100644
--- a/net/ipv4/netfilter/ip_conntrack_proto_sctp.c
+++ b/net/ipv4/netfilter/ip_conntrack_proto_sctp.c
@@ -235,12 +235,15 @@ static int do_basic_checks(struct ip_conntrack *conntrack,
235 flag = 1; 235 flag = 1;
236 } 236 }
237 237
238 /* Cookie Ack/Echo chunks not the first OR 238 /*
239 Init / Init Ack / Shutdown compl chunks not the only chunks */ 239 * Cookie Ack/Echo chunks not the first OR
240 if ((sch->type == SCTP_CID_COOKIE_ACK 240 * Init / Init Ack / Shutdown compl chunks not the only chunks
241 * OR zero-length.
242 */
243 if (((sch->type == SCTP_CID_COOKIE_ACK
241 || sch->type == SCTP_CID_COOKIE_ECHO 244 || sch->type == SCTP_CID_COOKIE_ECHO
242 || flag) 245 || flag)
243 && count !=0 ) { 246 && count !=0) || !sch->length) {
244 DEBUGP("Basic checks failed\n"); 247 DEBUGP("Basic checks failed\n");
245 return 1; 248 return 1;
246 } 249 }
diff --git a/net/ipv4/netfilter/ip_nat_standalone.c b/net/ipv4/netfilter/ip_nat_standalone.c
index 8f760b28617e..67e676783da9 100644
--- a/net/ipv4/netfilter/ip_nat_standalone.c
+++ b/net/ipv4/netfilter/ip_nat_standalone.c
@@ -219,8 +219,10 @@ ip_nat_out(unsigned int hooknum,
219 const struct net_device *out, 219 const struct net_device *out,
220 int (*okfn)(struct sk_buff *)) 220 int (*okfn)(struct sk_buff *))
221{ 221{
222#ifdef CONFIG_XFRM
222 struct ip_conntrack *ct; 223 struct ip_conntrack *ct;
223 enum ip_conntrack_info ctinfo; 224 enum ip_conntrack_info ctinfo;
225#endif
224 unsigned int ret; 226 unsigned int ret;
225 227
226 /* root is playing with raw sockets. */ 228 /* root is playing with raw sockets. */
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
index d25ac8ba6eba..cee3397ec277 100644
--- a/net/ipv4/netfilter/ip_tables.c
+++ b/net/ipv4/netfilter/ip_tables.c
@@ -956,15 +956,16 @@ struct compat_ipt_standard_target
956 compat_int_t verdict; 956 compat_int_t verdict;
957}; 957};
958 958
959#define IPT_ST_OFFSET (sizeof(struct ipt_standard_target) - \
960 sizeof(struct compat_ipt_standard_target))
961
962struct compat_ipt_standard 959struct compat_ipt_standard
963{ 960{
964 struct compat_ipt_entry entry; 961 struct compat_ipt_entry entry;
965 struct compat_ipt_standard_target target; 962 struct compat_ipt_standard_target target;
966}; 963};
967 964
965#define IPT_ST_LEN XT_ALIGN(sizeof(struct ipt_standard_target))
966#define IPT_ST_COMPAT_LEN COMPAT_XT_ALIGN(sizeof(struct compat_ipt_standard_target))
967#define IPT_ST_OFFSET (IPT_ST_LEN - IPT_ST_COMPAT_LEN)
968
968static int compat_ipt_standard_fn(void *target, 969static int compat_ipt_standard_fn(void *target,
969 void **dstptr, int *size, int convert) 970 void **dstptr, int *size, int convert)
970{ 971{
@@ -975,35 +976,29 @@ static int compat_ipt_standard_fn(void *target,
975 ret = 0; 976 ret = 0;
976 switch (convert) { 977 switch (convert) {
977 case COMPAT_TO_USER: 978 case COMPAT_TO_USER:
978 pst = (struct ipt_standard_target *)target; 979 pst = target;
979 memcpy(&compat_st.target, &pst->target, 980 memcpy(&compat_st.target, &pst->target,
980 sizeof(struct ipt_entry_target)); 981 sizeof(compat_st.target));
981 compat_st.verdict = pst->verdict; 982 compat_st.verdict = pst->verdict;
982 if (compat_st.verdict > 0) 983 if (compat_st.verdict > 0)
983 compat_st.verdict -= 984 compat_st.verdict -=
984 compat_calc_jump(compat_st.verdict); 985 compat_calc_jump(compat_st.verdict);
985 compat_st.target.u.user.target_size = 986 compat_st.target.u.user.target_size = IPT_ST_COMPAT_LEN;
986 sizeof(struct compat_ipt_standard_target); 987 if (copy_to_user(*dstptr, &compat_st, IPT_ST_COMPAT_LEN))
987 if (__copy_to_user(*dstptr, &compat_st,
988 sizeof(struct compat_ipt_standard_target)))
989 ret = -EFAULT; 988 ret = -EFAULT;
990 *size -= IPT_ST_OFFSET; 989 *size -= IPT_ST_OFFSET;
991 *dstptr += sizeof(struct compat_ipt_standard_target); 990 *dstptr += IPT_ST_COMPAT_LEN;
992 break; 991 break;
993 case COMPAT_FROM_USER: 992 case COMPAT_FROM_USER:
994 pcompat_st = 993 pcompat_st = target;
995 (struct compat_ipt_standard_target *)target; 994 memcpy(&st.target, &pcompat_st->target, IPT_ST_COMPAT_LEN);
996 memcpy(&st.target, &pcompat_st->target,
997 sizeof(struct ipt_entry_target));
998 st.verdict = pcompat_st->verdict; 995 st.verdict = pcompat_st->verdict;
999 if (st.verdict > 0) 996 if (st.verdict > 0)
1000 st.verdict += compat_calc_jump(st.verdict); 997 st.verdict += compat_calc_jump(st.verdict);
1001 st.target.u.user.target_size = 998 st.target.u.user.target_size = IPT_ST_LEN;
1002 sizeof(struct ipt_standard_target); 999 memcpy(*dstptr, &st, IPT_ST_LEN);
1003 memcpy(*dstptr, &st,
1004 sizeof(struct ipt_standard_target));
1005 *size += IPT_ST_OFFSET; 1000 *size += IPT_ST_OFFSET;
1006 *dstptr += sizeof(struct ipt_standard_target); 1001 *dstptr += IPT_ST_LEN;
1007 break; 1002 break;
1008 case COMPAT_CALC_SIZE: 1003 case COMPAT_CALC_SIZE:
1009 *size += IPT_ST_OFFSET; 1004 *size += IPT_ST_OFFSET;
@@ -1446,7 +1441,7 @@ static int compat_copy_entry_to_user(struct ipt_entry *e,
1446 ret = -EFAULT; 1441 ret = -EFAULT;
1447 origsize = *size; 1442 origsize = *size;
1448 ce = (struct compat_ipt_entry __user *)*dstptr; 1443 ce = (struct compat_ipt_entry __user *)*dstptr;
1449 if (__copy_to_user(ce, e, sizeof(struct ipt_entry))) 1444 if (copy_to_user(ce, e, sizeof(struct ipt_entry)))
1450 goto out; 1445 goto out;
1451 1446
1452 *dstptr += sizeof(struct compat_ipt_entry); 1447 *dstptr += sizeof(struct compat_ipt_entry);
@@ -1464,9 +1459,9 @@ static int compat_copy_entry_to_user(struct ipt_entry *e,
1464 goto out; 1459 goto out;
1465 ret = -EFAULT; 1460 ret = -EFAULT;
1466 next_offset = e->next_offset - (origsize - *size); 1461 next_offset = e->next_offset - (origsize - *size);
1467 if (__put_user(target_offset, &ce->target_offset)) 1462 if (put_user(target_offset, &ce->target_offset))
1468 goto out; 1463 goto out;
1469 if (__put_user(next_offset, &ce->next_offset)) 1464 if (put_user(next_offset, &ce->next_offset))
1470 goto out; 1465 goto out;
1471 return 0; 1466 return 0;
1472out: 1467out:
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 87f68e787d0c..e2b7b8055037 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -1468,6 +1468,7 @@ void tcp_close(struct sock *sk, long timeout)
1468{ 1468{
1469 struct sk_buff *skb; 1469 struct sk_buff *skb;
1470 int data_was_unread = 0; 1470 int data_was_unread = 0;
1471 int state;
1471 1472
1472 lock_sock(sk); 1473 lock_sock(sk);
1473 sk->sk_shutdown = SHUTDOWN_MASK; 1474 sk->sk_shutdown = SHUTDOWN_MASK;
@@ -1544,6 +1545,11 @@ void tcp_close(struct sock *sk, long timeout)
1544 sk_stream_wait_close(sk, timeout); 1545 sk_stream_wait_close(sk, timeout);
1545 1546
1546adjudge_to_death: 1547adjudge_to_death:
1548 state = sk->sk_state;
1549 sock_hold(sk);
1550 sock_orphan(sk);
1551 atomic_inc(sk->sk_prot->orphan_count);
1552
1547 /* It is the last release_sock in its life. It will remove backlog. */ 1553 /* It is the last release_sock in its life. It will remove backlog. */
1548 release_sock(sk); 1554 release_sock(sk);
1549 1555
@@ -1555,8 +1561,9 @@ adjudge_to_death:
1555 bh_lock_sock(sk); 1561 bh_lock_sock(sk);
1556 BUG_TRAP(!sock_owned_by_user(sk)); 1562 BUG_TRAP(!sock_owned_by_user(sk));
1557 1563
1558 sock_hold(sk); 1564 /* Have we already been destroyed by a softirq or backlog? */
1559 sock_orphan(sk); 1565 if (state != TCP_CLOSE && sk->sk_state == TCP_CLOSE)
1566 goto out;
1560 1567
1561 /* This is a (useful) BSD violating of the RFC. There is a 1568 /* This is a (useful) BSD violating of the RFC. There is a
1562 * problem with TCP as specified in that the other end could 1569 * problem with TCP as specified in that the other end could
@@ -1584,7 +1591,6 @@ adjudge_to_death:
1584 if (tmo > TCP_TIMEWAIT_LEN) { 1591 if (tmo > TCP_TIMEWAIT_LEN) {
1585 inet_csk_reset_keepalive_timer(sk, tcp_fin_time(sk)); 1592 inet_csk_reset_keepalive_timer(sk, tcp_fin_time(sk));
1586 } else { 1593 } else {
1587 atomic_inc(sk->sk_prot->orphan_count);
1588 tcp_time_wait(sk, TCP_FIN_WAIT2, tmo); 1594 tcp_time_wait(sk, TCP_FIN_WAIT2, tmo);
1589 goto out; 1595 goto out;
1590 } 1596 }
@@ -1603,7 +1609,6 @@ adjudge_to_death:
1603 NET_INC_STATS_BH(LINUX_MIB_TCPABORTONMEMORY); 1609 NET_INC_STATS_BH(LINUX_MIB_TCPABORTONMEMORY);
1604 } 1610 }
1605 } 1611 }
1606 atomic_inc(sk->sk_prot->orphan_count);
1607 1612
1608 if (sk->sk_state == TCP_CLOSE) 1613 if (sk->sk_state == TCP_CLOSE)
1609 inet_csk_destroy_sock(sk); 1614 inet_csk_destroy_sock(sk);
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index a28ae593b976..743016baa048 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -465,7 +465,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
465 TCP_INC_STATS(TCP_MIB_OUTSEGS); 465 TCP_INC_STATS(TCP_MIB_OUTSEGS);
466 466
467 err = icsk->icsk_af_ops->queue_xmit(skb, 0); 467 err = icsk->icsk_af_ops->queue_xmit(skb, 0);
468 if (unlikely(err <= 0)) 468 if (likely(err <= 0))
469 return err; 469 return err;
470 470
471 tcp_enter_cwr(sk); 471 tcp_enter_cwr(sk);
diff --git a/net/ipv4/xfrm4_output.c b/net/ipv4/xfrm4_output.c
index 32ad229b4fed..4ef8efaf6a67 100644
--- a/net/ipv4/xfrm4_output.c
+++ b/net/ipv4/xfrm4_output.c
@@ -62,7 +62,7 @@ static void xfrm4_encap(struct sk_buff *skb)
62 top_iph->frag_off = (flags & XFRM_STATE_NOPMTUDISC) ? 62 top_iph->frag_off = (flags & XFRM_STATE_NOPMTUDISC) ?
63 0 : (iph->frag_off & htons(IP_DF)); 63 0 : (iph->frag_off & htons(IP_DF));
64 if (!top_iph->frag_off) 64 if (!top_iph->frag_off)
65 __ip_select_ident(top_iph, dst, 0); 65 __ip_select_ident(top_iph, dst->child, 0);
66 66
67 top_iph->ttl = dst_metric(dst->child, RTAX_HOPLIMIT); 67 top_iph->ttl = dst_metric(dst->child, RTAX_HOPLIMIT);
68 68
diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c
index 642b4b11464f..0a673038344f 100644
--- a/net/ipv6/netfilter/ip6_tables.c
+++ b/net/ipv6/netfilter/ip6_tables.c
@@ -288,19 +288,6 @@ ip6t_do_table(struct sk_buff **pskb,
288 table_base = (void *)private->entries[smp_processor_id()]; 288 table_base = (void *)private->entries[smp_processor_id()];
289 e = get_entry(table_base, private->hook_entry[hook]); 289 e = get_entry(table_base, private->hook_entry[hook]);
290 290
291#ifdef CONFIG_NETFILTER_DEBUG
292 /* Check noone else using our table */
293 if (((struct ip6t_entry *)table_base)->comefrom != 0xdead57ac
294 && ((struct ip6t_entry *)table_base)->comefrom != 0xeeeeeeec) {
295 printk("ASSERT: CPU #%u, %s comefrom(%p) = %X\n",
296 smp_processor_id(),
297 table->name,
298 &((struct ip6t_entry *)table_base)->comefrom,
299 ((struct ip6t_entry *)table_base)->comefrom);
300 }
301 ((struct ip6t_entry *)table_base)->comefrom = 0x57acc001;
302#endif
303
304 /* For return from builtin chain */ 291 /* For return from builtin chain */
305 back = get_entry(table_base, private->underflow[hook]); 292 back = get_entry(table_base, private->underflow[hook]);
306 293
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 79078747a646..0190e39096b9 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -317,7 +317,7 @@ static struct rt6_info *rt6_select(struct rt6_info **head, int oif,
317 __FUNCTION__, head, head ? *head : NULL, oif); 317 __FUNCTION__, head, head ? *head : NULL, oif);
318 318
319 for (rt = rt0, metric = rt0->rt6i_metric; 319 for (rt = rt0, metric = rt0->rt6i_metric;
320 rt && rt->rt6i_metric == metric; 320 rt && rt->rt6i_metric == metric && (!last || rt != rt0);
321 rt = rt->u.next) { 321 rt = rt->u.next) {
322 int m; 322 int m;
323 323
@@ -343,9 +343,12 @@ static struct rt6_info *rt6_select(struct rt6_info **head, int oif,
343 (strict & RT6_SELECT_F_REACHABLE) && 343 (strict & RT6_SELECT_F_REACHABLE) &&
344 last && last != rt0) { 344 last && last != rt0) {
345 /* no entries matched; do round-robin */ 345 /* no entries matched; do round-robin */
346 static spinlock_t lock = SPIN_LOCK_UNLOCKED;
347 spin_lock(&lock);
346 *head = rt0->u.next; 348 *head = rt0->u.next;
347 rt0->u.next = last->u.next; 349 rt0->u.next = last->u.next;
348 last->u.next = rt0; 350 last->u.next = rt0;
351 spin_unlock(&lock);
349 } 352 }
350 353
351 RT6_TRACE("%s() => %p, score=%d\n", 354 RT6_TRACE("%s() => %p, score=%d\n",
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c
index e581190fb6c3..f9b83f91371a 100644
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -178,9 +178,6 @@ static struct {
178 /* allocated slab cache + modules which uses this slab cache */ 178 /* allocated slab cache + modules which uses this slab cache */
179 int use; 179 int use;
180 180
181 /* Initialization */
182 int (*init_conntrack)(struct nf_conn *, u_int32_t);
183
184} nf_ct_cache[NF_CT_F_NUM]; 181} nf_ct_cache[NF_CT_F_NUM];
185 182
186/* protect members of nf_ct_cache except of "use" */ 183/* protect members of nf_ct_cache except of "use" */
@@ -208,10 +205,8 @@ nf_ct_proto_find_get(u_int16_t l3proto, u_int8_t protocol)
208 205
209 preempt_disable(); 206 preempt_disable();
210 p = __nf_ct_proto_find(l3proto, protocol); 207 p = __nf_ct_proto_find(l3proto, protocol);
211 if (p) { 208 if (!try_module_get(p->me))
212 if (!try_module_get(p->me)) 209 p = &nf_conntrack_generic_protocol;
213 p = &nf_conntrack_generic_protocol;
214 }
215 preempt_enable(); 210 preempt_enable();
216 211
217 return p; 212 return p;
@@ -229,10 +224,8 @@ nf_ct_l3proto_find_get(u_int16_t l3proto)
229 224
230 preempt_disable(); 225 preempt_disable();
231 p = __nf_ct_l3proto_find(l3proto); 226 p = __nf_ct_l3proto_find(l3proto);
232 if (p) { 227 if (!try_module_get(p->me))
233 if (!try_module_get(p->me)) 228 p = &nf_conntrack_generic_l3proto;
234 p = &nf_conntrack_generic_l3proto;
235 }
236 preempt_enable(); 229 preempt_enable();
237 230
238 return p; 231 return p;
diff --git a/net/netfilter/nf_conntrack_l3proto_generic.c b/net/netfilter/nf_conntrack_l3proto_generic.c
index 7de4f06c63c5..3fc58e454d4e 100644
--- a/net/netfilter/nf_conntrack_l3proto_generic.c
+++ b/net/netfilter/nf_conntrack_l3proto_generic.c
@@ -94,5 +94,4 @@ struct nf_conntrack_l3proto nf_conntrack_generic_l3proto = {
94 .print_conntrack = generic_print_conntrack, 94 .print_conntrack = generic_print_conntrack,
95 .prepare = generic_prepare, 95 .prepare = generic_prepare,
96 .get_features = generic_get_features, 96 .get_features = generic_get_features,
97 .me = THIS_MODULE,
98}; 97};
diff --git a/net/netfilter/nf_conntrack_proto_sctp.c b/net/netfilter/nf_conntrack_proto_sctp.c
index 9cccc325b687..0c6da496cfa9 100644
--- a/net/netfilter/nf_conntrack_proto_sctp.c
+++ b/net/netfilter/nf_conntrack_proto_sctp.c
@@ -240,12 +240,15 @@ static int do_basic_checks(struct nf_conn *conntrack,
240 flag = 1; 240 flag = 1;
241 } 241 }
242 242
243 /* Cookie Ack/Echo chunks not the first OR 243 /*
244 Init / Init Ack / Shutdown compl chunks not the only chunks */ 244 * Cookie Ack/Echo chunks not the first OR
245 if ((sch->type == SCTP_CID_COOKIE_ACK 245 * Init / Init Ack / Shutdown compl chunks not the only chunks
246 * OR zero-length.
247 */
248 if (((sch->type == SCTP_CID_COOKIE_ACK
246 || sch->type == SCTP_CID_COOKIE_ECHO 249 || sch->type == SCTP_CID_COOKIE_ECHO
247 || flag) 250 || flag)
248 && count !=0 ) { 251 && count !=0) || !sch->length) {
249 DEBUGP("Basic checks failed\n"); 252 DEBUGP("Basic checks failed\n");
250 return 1; 253 return 1;
251 } 254 }
diff --git a/net/netfilter/x_tables.c b/net/netfilter/x_tables.c
index 00cf0a4f4d92..99293c63ff73 100644
--- a/net/netfilter/x_tables.c
+++ b/net/netfilter/x_tables.c
@@ -289,7 +289,7 @@ int xt_compat_match(void *match, void **dstptr, int *size, int convert)
289 case COMPAT_TO_USER: 289 case COMPAT_TO_USER:
290 pm = (struct xt_entry_match *)match; 290 pm = (struct xt_entry_match *)match;
291 msize = pm->u.user.match_size; 291 msize = pm->u.user.match_size;
292 if (__copy_to_user(*dstptr, pm, msize)) { 292 if (copy_to_user(*dstptr, pm, msize)) {
293 ret = -EFAULT; 293 ret = -EFAULT;
294 break; 294 break;
295 } 295 }
@@ -366,7 +366,7 @@ int xt_compat_target(void *target, void **dstptr, int *size, int convert)
366 case COMPAT_TO_USER: 366 case COMPAT_TO_USER:
367 pt = (struct xt_entry_target *)target; 367 pt = (struct xt_entry_target *)target;
368 tsize = pt->u.user.target_size; 368 tsize = pt->u.user.target_size;
369 if (__copy_to_user(*dstptr, pt, tsize)) { 369 if (copy_to_user(*dstptr, pt, tsize)) {
370 ret = -EFAULT; 370 ret = -EFAULT;
371 break; 371 break;
372 } 372 }
@@ -529,6 +529,7 @@ int xt_register_table(struct xt_table *table,
529 529
530 /* Simplifies replace_table code. */ 530 /* Simplifies replace_table code. */
531 table->private = bootstrap; 531 table->private = bootstrap;
532 rwlock_init(&table->lock);
532 if (!xt_replace_table(table, 0, newinfo, &ret)) 533 if (!xt_replace_table(table, 0, newinfo, &ret))
533 goto unlock; 534 goto unlock;
534 535
@@ -538,7 +539,6 @@ int xt_register_table(struct xt_table *table,
538 /* save number of initial entries */ 539 /* save number of initial entries */
539 private->initial_entries = private->number; 540 private->initial_entries = private->number;
540 541
541 rwlock_init(&table->lock);
542 list_prepend(&xt[table->af].tables, table); 542 list_prepend(&xt[table->af].tables, table);
543 543
544 ret = 0; 544 ret = 0;
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
index 2a233ffcf618..3862e73d14d7 100644
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -56,12 +56,12 @@
56#include <linux/mm.h> 56#include <linux/mm.h>
57#include <linux/types.h> 57#include <linux/types.h>
58#include <linux/audit.h> 58#include <linux/audit.h>
59#include <linux/selinux.h>
59 60
60#include <net/sock.h> 61#include <net/sock.h>
61#include <net/scm.h> 62#include <net/scm.h>
62#include <net/netlink.h> 63#include <net/netlink.h>
63 64
64#define Nprintk(a...)
65#define NLGRPSZ(x) (ALIGN(x, sizeof(unsigned long) * 8) / 8) 65#define NLGRPSZ(x) (ALIGN(x, sizeof(unsigned long) * 8) / 8)
66 66
67struct netlink_sock { 67struct netlink_sock {
@@ -1157,6 +1157,7 @@ static int netlink_sendmsg(struct kiocb *kiocb, struct socket *sock,
1157 NETLINK_CB(skb).dst_pid = dst_pid; 1157 NETLINK_CB(skb).dst_pid = dst_pid;
1158 NETLINK_CB(skb).dst_group = dst_group; 1158 NETLINK_CB(skb).dst_group = dst_group;
1159 NETLINK_CB(skb).loginuid = audit_get_loginuid(current->audit_context); 1159 NETLINK_CB(skb).loginuid = audit_get_loginuid(current->audit_context);
1160 selinux_get_task_sid(current, &(NETLINK_CB(skb).sid));
1160 memcpy(NETLINK_CREDS(skb), &siocb->scm->creds, sizeof(struct ucred)); 1161 memcpy(NETLINK_CREDS(skb), &siocb->scm->creds, sizeof(struct ucred));
1161 1162
1162 /* What can I do? Netlink is asynchronous, so that 1163 /* What can I do? Netlink is asynchronous, so that
diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c
index d44981f5a619..ecd288beca7c 100644
--- a/net/netrom/af_netrom.c
+++ b/net/netrom/af_netrom.c
@@ -425,11 +425,16 @@ static int nr_create(struct socket *sock, int protocol)
425 425
426 nr_init_timers(sk); 426 nr_init_timers(sk);
427 427
428 nr->t1 = sysctl_netrom_transport_timeout; 428 nr->t1 =
429 nr->t2 = sysctl_netrom_transport_acknowledge_delay; 429 msecs_to_jiffies(sysctl_netrom_transport_timeout);
430 nr->n2 = sysctl_netrom_transport_maximum_tries; 430 nr->t2 =
431 nr->t4 = sysctl_netrom_transport_busy_delay; 431 msecs_to_jiffies(sysctl_netrom_transport_acknowledge_delay);
432 nr->idle = sysctl_netrom_transport_no_activity_timeout; 432 nr->n2 =
433 msecs_to_jiffies(sysctl_netrom_transport_maximum_tries);
434 nr->t4 =
435 msecs_to_jiffies(sysctl_netrom_transport_busy_delay);
436 nr->idle =
437 msecs_to_jiffies(sysctl_netrom_transport_no_activity_timeout);
433 nr->window = sysctl_netrom_transport_requested_window_size; 438 nr->window = sysctl_netrom_transport_requested_window_size;
434 439
435 nr->bpqext = 1; 440 nr->bpqext = 1;
diff --git a/net/netrom/nr_dev.c b/net/netrom/nr_dev.c
index 509afddae569..621e5586ab03 100644
--- a/net/netrom/nr_dev.c
+++ b/net/netrom/nr_dev.c
@@ -185,7 +185,6 @@ static struct net_device_stats *nr_get_stats(struct net_device *dev)
185 185
186void nr_setup(struct net_device *dev) 186void nr_setup(struct net_device *dev)
187{ 187{
188 SET_MODULE_OWNER(dev);
189 dev->mtu = NR_MAX_PACKET_SIZE; 188 dev->mtu = NR_MAX_PACKET_SIZE;
190 dev->hard_start_xmit = nr_xmit; 189 dev->hard_start_xmit = nr_xmit;
191 dev->open = nr_open; 190 dev->open = nr_open;
diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c
index ea65396d1619..ef4538ac84f0 100644
--- a/net/rose/af_rose.c
+++ b/net/rose/af_rose.c
@@ -518,11 +518,11 @@ static int rose_create(struct socket *sock, int protocol)
518 init_timer(&rose->timer); 518 init_timer(&rose->timer);
519 init_timer(&rose->idletimer); 519 init_timer(&rose->idletimer);
520 520
521 rose->t1 = sysctl_rose_call_request_timeout; 521 rose->t1 = msecs_to_jiffies(sysctl_rose_call_request_timeout);
522 rose->t2 = sysctl_rose_reset_request_timeout; 522 rose->t2 = msecs_to_jiffies(sysctl_rose_reset_request_timeout);
523 rose->t3 = sysctl_rose_clear_request_timeout; 523 rose->t3 = msecs_to_jiffies(sysctl_rose_clear_request_timeout);
524 rose->hb = sysctl_rose_ack_hold_back_timeout; 524 rose->hb = msecs_to_jiffies(sysctl_rose_ack_hold_back_timeout);
525 rose->idle = sysctl_rose_no_activity_timeout; 525 rose->idle = msecs_to_jiffies(sysctl_rose_no_activity_timeout);
526 526
527 rose->state = ROSE_STATE_0; 527 rose->state = ROSE_STATE_0;
528 528
diff --git a/net/rose/rose_dev.c b/net/rose/rose_dev.c
index d297af737d10..2a1bf8e119e5 100644
--- a/net/rose/rose_dev.c
+++ b/net/rose/rose_dev.c
@@ -135,7 +135,6 @@ static struct net_device_stats *rose_get_stats(struct net_device *dev)
135 135
136void rose_setup(struct net_device *dev) 136void rose_setup(struct net_device *dev)
137{ 137{
138 SET_MODULE_OWNER(dev);
139 dev->mtu = ROSE_MAX_PACKET_SIZE - 2; 138 dev->mtu = ROSE_MAX_PACKET_SIZE - 2;
140 dev->hard_start_xmit = rose_xmit; 139 dev->hard_start_xmit = rose_xmit;
141 dev->open = rose_open; 140 dev->open = rose_open;
diff --git a/net/rose/rose_link.c b/net/rose/rose_link.c
index 09e9e9d04d92..bd86a63960ce 100644
--- a/net/rose/rose_link.c
+++ b/net/rose/rose_link.c
@@ -40,7 +40,8 @@ void rose_start_ftimer(struct rose_neigh *neigh)
40 40
41 neigh->ftimer.data = (unsigned long)neigh; 41 neigh->ftimer.data = (unsigned long)neigh;
42 neigh->ftimer.function = &rose_ftimer_expiry; 42 neigh->ftimer.function = &rose_ftimer_expiry;
43 neigh->ftimer.expires = jiffies + sysctl_rose_link_fail_timeout; 43 neigh->ftimer.expires =
44 jiffies + msecs_to_jiffies(sysctl_rose_link_fail_timeout);
44 45
45 add_timer(&neigh->ftimer); 46 add_timer(&neigh->ftimer);
46} 47}
@@ -51,7 +52,8 @@ static void rose_start_t0timer(struct rose_neigh *neigh)
51 52
52 neigh->t0timer.data = (unsigned long)neigh; 53 neigh->t0timer.data = (unsigned long)neigh;
53 neigh->t0timer.function = &rose_t0timer_expiry; 54 neigh->t0timer.function = &rose_t0timer_expiry;
54 neigh->t0timer.expires = jiffies + sysctl_rose_restart_request_timeout; 55 neigh->t0timer.expires =
56 jiffies + msecs_to_jiffies(sysctl_rose_restart_request_timeout);
55 57
56 add_timer(&neigh->t0timer); 58 add_timer(&neigh->t0timer);
57} 59}
diff --git a/net/rose/rose_route.c b/net/rose/rose_route.c
index 8631b65a7312..a22542fa1bc8 100644
--- a/net/rose/rose_route.c
+++ b/net/rose/rose_route.c
@@ -48,8 +48,6 @@ static DEFINE_SPINLOCK(rose_route_list_lock);
48 48
49struct rose_neigh *rose_loopback_neigh; 49struct rose_neigh *rose_loopback_neigh;
50 50
51static void rose_remove_neigh(struct rose_neigh *);
52
53/* 51/*
54 * Add a new route to a node, and in the process add the node and the 52 * Add a new route to a node, and in the process add the node and the
55 * neighbour if it is new. 53 * neighbour if it is new.
@@ -235,11 +233,8 @@ static void rose_remove_neigh(struct rose_neigh *rose_neigh)
235 233
236 skb_queue_purge(&rose_neigh->queue); 234 skb_queue_purge(&rose_neigh->queue);
237 235
238 spin_lock_bh(&rose_neigh_list_lock);
239
240 if ((s = rose_neigh_list) == rose_neigh) { 236 if ((s = rose_neigh_list) == rose_neigh) {
241 rose_neigh_list = rose_neigh->next; 237 rose_neigh_list = rose_neigh->next;
242 spin_unlock_bh(&rose_neigh_list_lock);
243 kfree(rose_neigh->digipeat); 238 kfree(rose_neigh->digipeat);
244 kfree(rose_neigh); 239 kfree(rose_neigh);
245 return; 240 return;
@@ -248,7 +243,6 @@ static void rose_remove_neigh(struct rose_neigh *rose_neigh)
248 while (s != NULL && s->next != NULL) { 243 while (s != NULL && s->next != NULL) {
249 if (s->next == rose_neigh) { 244 if (s->next == rose_neigh) {
250 s->next = rose_neigh->next; 245 s->next = rose_neigh->next;
251 spin_unlock_bh(&rose_neigh_list_lock);
252 kfree(rose_neigh->digipeat); 246 kfree(rose_neigh->digipeat);
253 kfree(rose_neigh); 247 kfree(rose_neigh);
254 return; 248 return;
@@ -256,7 +250,6 @@ static void rose_remove_neigh(struct rose_neigh *rose_neigh)
256 250
257 s = s->next; 251 s = s->next;
258 } 252 }
259 spin_unlock_bh(&rose_neigh_list_lock);
260} 253}
261 254
262/* 255/*
diff --git a/net/sched/act_ipt.c b/net/sched/act_ipt.c
index 6056d20ef429..37640c6fc014 100644
--- a/net/sched/act_ipt.c
+++ b/net/sched/act_ipt.c
@@ -69,6 +69,11 @@ ipt_init_target(struct ipt_entry_target *t, char *table, unsigned int hook)
69 DPRINTK("ipt_init_target: found %s\n", target->name); 69 DPRINTK("ipt_init_target: found %s\n", target->name);
70 t->u.kernel.target = target; 70 t->u.kernel.target = target;
71 71
72 ret = xt_check_target(target, AF_INET, t->u.target_size - sizeof(*t),
73 table, hook, 0, 0);
74 if (ret)
75 return ret;
76
72 if (t->u.kernel.target->checkentry 77 if (t->u.kernel.target->checkentry
73 && !t->u.kernel.target->checkentry(table, NULL, 78 && !t->u.kernel.target->checkentry(table, NULL,
74 t->u.kernel.target, t->data, 79 t->u.kernel.target, t->data,
diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c
index 7228d30512c7..5a4a4d0ae502 100644
--- a/net/sched/sch_netem.c
+++ b/net/sched/sch_netem.c
@@ -167,7 +167,7 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch)
167 if (count == 0) { 167 if (count == 0) {
168 sch->qstats.drops++; 168 sch->qstats.drops++;
169 kfree_skb(skb); 169 kfree_skb(skb);
170 return NET_XMIT_DROP; 170 return NET_XMIT_BYPASS;
171 } 171 }
172 172
173 /* 173 /*
diff --git a/net/socket.c b/net/socket.c
index 0ce12dfc7a71..02948b622bd2 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -267,6 +267,8 @@ int move_addr_to_user(void *kaddr, int klen, void __user *uaddr, int __user *ule
267 return -EINVAL; 267 return -EINVAL;
268 if(len) 268 if(len)
269 { 269 {
270 if (audit_sockaddr(klen, kaddr))
271 return -ENOMEM;
270 if(copy_to_user(uaddr,kaddr,len)) 272 if(copy_to_user(uaddr,kaddr,len))
271 return -EFAULT; 273 return -EFAULT;
272 } 274 }
diff --git a/net/x25/x25_timer.c b/net/x25/x25_timer.c
index 0a92e1da3922..71ff3088f6fe 100644
--- a/net/x25/x25_timer.c
+++ b/net/x25/x25_timer.c
@@ -114,8 +114,9 @@ static void x25_heartbeat_expiry(unsigned long param)
114 if (sock_flag(sk, SOCK_DESTROY) || 114 if (sock_flag(sk, SOCK_DESTROY) ||
115 (sk->sk_state == TCP_LISTEN && 115 (sk->sk_state == TCP_LISTEN &&
116 sock_flag(sk, SOCK_DEAD))) { 116 sock_flag(sk, SOCK_DEAD))) {
117 bh_unlock_sock(sk);
117 x25_destroy_socket(sk); 118 x25_destroy_socket(sk);
118 goto unlock; 119 return;
119 } 120 }
120 break; 121 break;
121 122
@@ -128,7 +129,6 @@ static void x25_heartbeat_expiry(unsigned long param)
128 } 129 }
129restart_heartbeat: 130restart_heartbeat:
130 x25_start_heartbeat(sk); 131 x25_start_heartbeat(sk);
131unlock:
132 bh_unlock_sock(sk); 132 bh_unlock_sock(sk);
133} 133}
134 134
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index c3725fe2a8fb..b469c8b54613 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -57,12 +57,12 @@ int xfrm_register_type(struct xfrm_type *type, unsigned short family)
57 return -EAFNOSUPPORT; 57 return -EAFNOSUPPORT;
58 typemap = afinfo->type_map; 58 typemap = afinfo->type_map;
59 59
60 write_lock(&typemap->lock); 60 write_lock_bh(&typemap->lock);
61 if (likely(typemap->map[type->proto] == NULL)) 61 if (likely(typemap->map[type->proto] == NULL))
62 typemap->map[type->proto] = type; 62 typemap->map[type->proto] = type;
63 else 63 else
64 err = -EEXIST; 64 err = -EEXIST;
65 write_unlock(&typemap->lock); 65 write_unlock_bh(&typemap->lock);
66 xfrm_policy_put_afinfo(afinfo); 66 xfrm_policy_put_afinfo(afinfo);
67 return err; 67 return err;
68} 68}
@@ -78,12 +78,12 @@ int xfrm_unregister_type(struct xfrm_type *type, unsigned short family)
78 return -EAFNOSUPPORT; 78 return -EAFNOSUPPORT;
79 typemap = afinfo->type_map; 79 typemap = afinfo->type_map;
80 80
81 write_lock(&typemap->lock); 81 write_lock_bh(&typemap->lock);
82 if (unlikely(typemap->map[type->proto] != type)) 82 if (unlikely(typemap->map[type->proto] != type))
83 err = -ENOENT; 83 err = -ENOENT;
84 else 84 else
85 typemap->map[type->proto] = NULL; 85 typemap->map[type->proto] = NULL;
86 write_unlock(&typemap->lock); 86 write_unlock_bh(&typemap->lock);
87 xfrm_policy_put_afinfo(afinfo); 87 xfrm_policy_put_afinfo(afinfo);
88 return err; 88 return err;
89} 89}
@@ -1251,7 +1251,7 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo)
1251 return -EINVAL; 1251 return -EINVAL;
1252 if (unlikely(afinfo->family >= NPROTO)) 1252 if (unlikely(afinfo->family >= NPROTO))
1253 return -EAFNOSUPPORT; 1253 return -EAFNOSUPPORT;
1254 write_lock(&xfrm_policy_afinfo_lock); 1254 write_lock_bh(&xfrm_policy_afinfo_lock);
1255 if (unlikely(xfrm_policy_afinfo[afinfo->family] != NULL)) 1255 if (unlikely(xfrm_policy_afinfo[afinfo->family] != NULL))
1256 err = -ENOBUFS; 1256 err = -ENOBUFS;
1257 else { 1257 else {
@@ -1268,7 +1268,7 @@ int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo)
1268 afinfo->garbage_collect = __xfrm_garbage_collect; 1268 afinfo->garbage_collect = __xfrm_garbage_collect;
1269 xfrm_policy_afinfo[afinfo->family] = afinfo; 1269 xfrm_policy_afinfo[afinfo->family] = afinfo;
1270 } 1270 }
1271 write_unlock(&xfrm_policy_afinfo_lock); 1271 write_unlock_bh(&xfrm_policy_afinfo_lock);
1272 return err; 1272 return err;
1273} 1273}
1274EXPORT_SYMBOL(xfrm_policy_register_afinfo); 1274EXPORT_SYMBOL(xfrm_policy_register_afinfo);
@@ -1280,7 +1280,7 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo)
1280 return -EINVAL; 1280 return -EINVAL;
1281 if (unlikely(afinfo->family >= NPROTO)) 1281 if (unlikely(afinfo->family >= NPROTO))
1282 return -EAFNOSUPPORT; 1282 return -EAFNOSUPPORT;
1283 write_lock(&xfrm_policy_afinfo_lock); 1283 write_lock_bh(&xfrm_policy_afinfo_lock);
1284 if (likely(xfrm_policy_afinfo[afinfo->family] != NULL)) { 1284 if (likely(xfrm_policy_afinfo[afinfo->family] != NULL)) {
1285 if (unlikely(xfrm_policy_afinfo[afinfo->family] != afinfo)) 1285 if (unlikely(xfrm_policy_afinfo[afinfo->family] != afinfo))
1286 err = -EINVAL; 1286 err = -EINVAL;
@@ -1294,7 +1294,7 @@ int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo)
1294 afinfo->garbage_collect = NULL; 1294 afinfo->garbage_collect = NULL;
1295 } 1295 }
1296 } 1296 }
1297 write_unlock(&xfrm_policy_afinfo_lock); 1297 write_unlock_bh(&xfrm_policy_afinfo_lock);
1298 return err; 1298 return err;
1299} 1299}
1300EXPORT_SYMBOL(xfrm_policy_unregister_afinfo); 1300EXPORT_SYMBOL(xfrm_policy_unregister_afinfo);
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index 3dc3e1f3b7aa..93a2f36ad3db 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -1061,7 +1061,7 @@ int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo)
1061 return -EINVAL; 1061 return -EINVAL;
1062 if (unlikely(afinfo->family >= NPROTO)) 1062 if (unlikely(afinfo->family >= NPROTO))
1063 return -EAFNOSUPPORT; 1063 return -EAFNOSUPPORT;
1064 write_lock(&xfrm_state_afinfo_lock); 1064 write_lock_bh(&xfrm_state_afinfo_lock);
1065 if (unlikely(xfrm_state_afinfo[afinfo->family] != NULL)) 1065 if (unlikely(xfrm_state_afinfo[afinfo->family] != NULL))
1066 err = -ENOBUFS; 1066 err = -ENOBUFS;
1067 else { 1067 else {
@@ -1069,7 +1069,7 @@ int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo)
1069 afinfo->state_byspi = xfrm_state_byspi; 1069 afinfo->state_byspi = xfrm_state_byspi;
1070 xfrm_state_afinfo[afinfo->family] = afinfo; 1070 xfrm_state_afinfo[afinfo->family] = afinfo;
1071 } 1071 }
1072 write_unlock(&xfrm_state_afinfo_lock); 1072 write_unlock_bh(&xfrm_state_afinfo_lock);
1073 return err; 1073 return err;
1074} 1074}
1075EXPORT_SYMBOL(xfrm_state_register_afinfo); 1075EXPORT_SYMBOL(xfrm_state_register_afinfo);
@@ -1081,7 +1081,7 @@ int xfrm_state_unregister_afinfo(struct xfrm_state_afinfo *afinfo)
1081 return -EINVAL; 1081 return -EINVAL;
1082 if (unlikely(afinfo->family >= NPROTO)) 1082 if (unlikely(afinfo->family >= NPROTO))
1083 return -EAFNOSUPPORT; 1083 return -EAFNOSUPPORT;
1084 write_lock(&xfrm_state_afinfo_lock); 1084 write_lock_bh(&xfrm_state_afinfo_lock);
1085 if (likely(xfrm_state_afinfo[afinfo->family] != NULL)) { 1085 if (likely(xfrm_state_afinfo[afinfo->family] != NULL)) {
1086 if (unlikely(xfrm_state_afinfo[afinfo->family] != afinfo)) 1086 if (unlikely(xfrm_state_afinfo[afinfo->family] != afinfo))
1087 err = -EINVAL; 1087 err = -EINVAL;
@@ -1091,7 +1091,7 @@ int xfrm_state_unregister_afinfo(struct xfrm_state_afinfo *afinfo)
1091 afinfo->state_bydst = NULL; 1091 afinfo->state_bydst = NULL;
1092 } 1092 }
1093 } 1093 }
1094 write_unlock(&xfrm_state_afinfo_lock); 1094 write_unlock_bh(&xfrm_state_afinfo_lock);
1095 return err; 1095 return err;
1096} 1096}
1097EXPORT_SYMBOL(xfrm_state_unregister_afinfo); 1097EXPORT_SYMBOL(xfrm_state_unregister_afinfo);
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index 84e21201f3c0..37f67c23e11b 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -374,10 +374,10 @@ static void do_input(char *alias,
374 kernel_ulong_t *arr, unsigned int min, unsigned int max) 374 kernel_ulong_t *arr, unsigned int min, unsigned int max)
375{ 375{
376 unsigned int i; 376 unsigned int i;
377 for (i = min; i < max; i++) { 377
378 if (arr[i/BITS_PER_LONG] & (1 << (i%BITS_PER_LONG))) 378 for (i = min; i < max; i++)
379 sprintf(alias+strlen(alias), "%X,*", i); 379 if (arr[i / BITS_PER_LONG] & (1 << (i%BITS_PER_LONG)))
380 } 380 sprintf(alias + strlen(alias), "%X,*", i);
381} 381}
382 382
383/* input:b0v0p0e0-eXkXrXaXmXlXsXfXwX where X is comma-separated %02X. */ 383/* input:b0v0p0e0-eXkXrXaXmXlXsXfXwX where X is comma-separated %02X. */
@@ -386,39 +386,37 @@ static int do_input_entry(const char *filename, struct input_device_id *id,
386{ 386{
387 sprintf(alias, "input:"); 387 sprintf(alias, "input:");
388 388
389 ADD(alias, "b", id->flags&INPUT_DEVICE_ID_MATCH_BUS, id->id.bustype); 389 ADD(alias, "b", id->flags & INPUT_DEVICE_ID_MATCH_BUS, id->bustype);
390 ADD(alias, "v", id->flags&INPUT_DEVICE_ID_MATCH_VENDOR, id->id.vendor); 390 ADD(alias, "v", id->flags & INPUT_DEVICE_ID_MATCH_VENDOR, id->vendor);
391 ADD(alias, "p", id->flags&INPUT_DEVICE_ID_MATCH_PRODUCT, 391 ADD(alias, "p", id->flags & INPUT_DEVICE_ID_MATCH_PRODUCT, id->product);
392 id->id.product); 392 ADD(alias, "e", id->flags & INPUT_DEVICE_ID_MATCH_VERSION, id->version);
393 ADD(alias, "e", id->flags&INPUT_DEVICE_ID_MATCH_VERSION,
394 id->id.version);
395 393
396 sprintf(alias + strlen(alias), "-e*"); 394 sprintf(alias + strlen(alias), "-e*");
397 if (id->flags&INPUT_DEVICE_ID_MATCH_EVBIT) 395 if (id->flags & INPUT_DEVICE_ID_MATCH_EVBIT)
398 do_input(alias, id->evbit, 0, EV_MAX); 396 do_input(alias, id->evbit, 0, EV_MAX);
399 sprintf(alias + strlen(alias), "k*"); 397 sprintf(alias + strlen(alias), "k*");
400 if (id->flags&INPUT_DEVICE_ID_MATCH_KEYBIT) 398 if (id->flags & INPUT_DEVICE_ID_MATCH_KEYBIT)
401 do_input(alias, id->keybit, KEY_MIN_INTERESTING, KEY_MAX); 399 do_input(alias, id->keybit, KEY_MIN_INTERESTING, KEY_MAX);
402 sprintf(alias + strlen(alias), "r*"); 400 sprintf(alias + strlen(alias), "r*");
403 if (id->flags&INPUT_DEVICE_ID_MATCH_RELBIT) 401 if (id->flags & INPUT_DEVICE_ID_MATCH_RELBIT)
404 do_input(alias, id->relbit, 0, REL_MAX); 402 do_input(alias, id->relbit, 0, REL_MAX);
405 sprintf(alias + strlen(alias), "a*"); 403 sprintf(alias + strlen(alias), "a*");
406 if (id->flags&INPUT_DEVICE_ID_MATCH_ABSBIT) 404 if (id->flags & INPUT_DEVICE_ID_MATCH_ABSBIT)
407 do_input(alias, id->absbit, 0, ABS_MAX); 405 do_input(alias, id->absbit, 0, ABS_MAX);
408 sprintf(alias + strlen(alias), "m*"); 406 sprintf(alias + strlen(alias), "m*");
409 if (id->flags&INPUT_DEVICE_ID_MATCH_MSCIT) 407 if (id->flags & INPUT_DEVICE_ID_MATCH_MSCIT)
410 do_input(alias, id->mscbit, 0, MSC_MAX); 408 do_input(alias, id->mscbit, 0, MSC_MAX);
411 sprintf(alias + strlen(alias), "l*"); 409 sprintf(alias + strlen(alias), "l*");
412 if (id->flags&INPUT_DEVICE_ID_MATCH_LEDBIT) 410 if (id->flags & INPUT_DEVICE_ID_MATCH_LEDBIT)
413 do_input(alias, id->ledbit, 0, LED_MAX); 411 do_input(alias, id->ledbit, 0, LED_MAX);
414 sprintf(alias + strlen(alias), "s*"); 412 sprintf(alias + strlen(alias), "s*");
415 if (id->flags&INPUT_DEVICE_ID_MATCH_SNDBIT) 413 if (id->flags & INPUT_DEVICE_ID_MATCH_SNDBIT)
416 do_input(alias, id->sndbit, 0, SND_MAX); 414 do_input(alias, id->sndbit, 0, SND_MAX);
417 sprintf(alias + strlen(alias), "f*"); 415 sprintf(alias + strlen(alias), "f*");
418 if (id->flags&INPUT_DEVICE_ID_MATCH_FFBIT) 416 if (id->flags & INPUT_DEVICE_ID_MATCH_FFBIT)
419 do_input(alias, id->ffbit, 0, FF_MAX); 417 do_input(alias, id->ffbit, 0, FF_MAX);
420 sprintf(alias + strlen(alias), "w*"); 418 sprintf(alias + strlen(alias), "w*");
421 if (id->flags&INPUT_DEVICE_ID_MATCH_SWBIT) 419 if (id->flags & INPUT_DEVICE_ID_MATCH_SWBIT)
422 do_input(alias, id->swbit, 0, SW_MAX); 420 do_input(alias, id->swbit, 0, SW_MAX);
423 return 1; 421 return 1;
424} 422}
diff --git a/security/dummy.c b/security/dummy.c
index fd99429278e9..8ccccccc12ac 100644
--- a/security/dummy.c
+++ b/security/dummy.c
@@ -563,11 +563,6 @@ static int dummy_ipc_permission (struct kern_ipc_perm *ipcp, short flag)
563 return 0; 563 return 0;
564} 564}
565 565
566static int dummy_ipc_getsecurity(struct kern_ipc_perm *ipcp, void *buffer, size_t size)
567{
568 return -EOPNOTSUPP;
569}
570
571static int dummy_msg_msg_alloc_security (struct msg_msg *msg) 566static int dummy_msg_msg_alloc_security (struct msg_msg *msg)
572{ 567{
573 return 0; 568 return 0;
@@ -976,7 +971,6 @@ void security_fixup_ops (struct security_operations *ops)
976 set_to_dummy_if_null(ops, task_reparent_to_init); 971 set_to_dummy_if_null(ops, task_reparent_to_init);
977 set_to_dummy_if_null(ops, task_to_inode); 972 set_to_dummy_if_null(ops, task_to_inode);
978 set_to_dummy_if_null(ops, ipc_permission); 973 set_to_dummy_if_null(ops, ipc_permission);
979 set_to_dummy_if_null(ops, ipc_getsecurity);
980 set_to_dummy_if_null(ops, msg_msg_alloc_security); 974 set_to_dummy_if_null(ops, msg_msg_alloc_security);
981 set_to_dummy_if_null(ops, msg_msg_free_security); 975 set_to_dummy_if_null(ops, msg_msg_free_security);
982 set_to_dummy_if_null(ops, msg_queue_alloc_security); 976 set_to_dummy_if_null(ops, msg_queue_alloc_security);
diff --git a/security/selinux/Makefile b/security/selinux/Makefile
index 688c0a267b62..faf2e02e4410 100644
--- a/security/selinux/Makefile
+++ b/security/selinux/Makefile
@@ -4,7 +4,7 @@
4 4
5obj-$(CONFIG_SECURITY_SELINUX) := selinux.o ss/ 5obj-$(CONFIG_SECURITY_SELINUX) := selinux.o ss/
6 6
7selinux-y := avc.o hooks.o selinuxfs.o netlink.o nlmsgtab.o netif.o 7selinux-y := avc.o hooks.o selinuxfs.o netlink.o nlmsgtab.o netif.o exports.o
8 8
9selinux-$(CONFIG_SECURITY_NETWORK_XFRM) += xfrm.o 9selinux-$(CONFIG_SECURITY_NETWORK_XFRM) += xfrm.o
10 10
diff --git a/security/selinux/avc.c b/security/selinux/avc.c
index ac5d69bb3377..a300702da527 100644
--- a/security/selinux/avc.c
+++ b/security/selinux/avc.c
@@ -800,7 +800,7 @@ out:
800int avc_ss_reset(u32 seqno) 800int avc_ss_reset(u32 seqno)
801{ 801{
802 struct avc_callback_node *c; 802 struct avc_callback_node *c;
803 int i, rc = 0; 803 int i, rc = 0, tmprc;
804 unsigned long flag; 804 unsigned long flag;
805 struct avc_node *node; 805 struct avc_node *node;
806 806
@@ -813,15 +813,16 @@ int avc_ss_reset(u32 seqno)
813 813
814 for (c = avc_callbacks; c; c = c->next) { 814 for (c = avc_callbacks; c; c = c->next) {
815 if (c->events & AVC_CALLBACK_RESET) { 815 if (c->events & AVC_CALLBACK_RESET) {
816 rc = c->callback(AVC_CALLBACK_RESET, 816 tmprc = c->callback(AVC_CALLBACK_RESET,
817 0, 0, 0, 0, NULL); 817 0, 0, 0, 0, NULL);
818 if (rc) 818 /* save the first error encountered for the return
819 goto out; 819 value and continue processing the callbacks */
820 if (!rc)
821 rc = tmprc;
820 } 822 }
821 } 823 }
822 824
823 avc_latest_notif_update(seqno, 0); 825 avc_latest_notif_update(seqno, 0);
824out:
825 return rc; 826 return rc;
826} 827}
827 828
diff --git a/security/selinux/exports.c b/security/selinux/exports.c
new file mode 100644
index 000000000000..ae4c73eb3085
--- /dev/null
+++ b/security/selinux/exports.c
@@ -0,0 +1,74 @@
1/*
2 * SELinux services exported to the rest of the kernel.
3 *
4 * Author: James Morris <jmorris@redhat.com>
5 *
6 * Copyright (C) 2005 Red Hat, Inc., James Morris <jmorris@redhat.com>
7 * Copyright (C) 2006 Trusted Computer Solutions, Inc. <dgoeddel@trustedcs.com>
8 * Copyright (C) 2006 IBM Corporation, Timothy R. Chavez <tinytim@us.ibm.com>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2,
12 * as published by the Free Software Foundation.
13 */
14#include <linux/types.h>
15#include <linux/kernel.h>
16#include <linux/module.h>
17#include <linux/selinux.h>
18#include <linux/fs.h>
19#include <linux/ipc.h>
20
21#include "security.h"
22#include "objsec.h"
23
24void selinux_task_ctxid(struct task_struct *tsk, u32 *ctxid)
25{
26 struct task_security_struct *tsec = tsk->security;
27 if (selinux_enabled)
28 *ctxid = tsec->sid;
29 else
30 *ctxid = 0;
31}
32
33int selinux_ctxid_to_string(u32 ctxid, char **ctx, u32 *ctxlen)
34{
35 if (selinux_enabled)
36 return security_sid_to_context(ctxid, ctx, ctxlen);
37 else {
38 *ctx = NULL;
39 *ctxlen = 0;
40 }
41
42 return 0;
43}
44
45void selinux_get_inode_sid(const struct inode *inode, u32 *sid)
46{
47 if (selinux_enabled) {
48 struct inode_security_struct *isec = inode->i_security;
49 *sid = isec->sid;
50 return;
51 }
52 *sid = 0;
53}
54
55void selinux_get_ipc_sid(const struct kern_ipc_perm *ipcp, u32 *sid)
56{
57 if (selinux_enabled) {
58 struct ipc_security_struct *isec = ipcp->security;
59 *sid = isec->sid;
60 return;
61 }
62 *sid = 0;
63}
64
65void selinux_get_task_sid(struct task_struct *tsk, u32 *sid)
66{
67 if (selinux_enabled) {
68 struct task_security_struct *tsec = tsk->security;
69 *sid = tsec->sid;
70 return;
71 }
72 *sid = 0;
73}
74
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index b61b9554bc27..d987048d3f33 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -101,6 +101,8 @@ static int __init selinux_enabled_setup(char *str)
101 return 1; 101 return 1;
102} 102}
103__setup("selinux=", selinux_enabled_setup); 103__setup("selinux=", selinux_enabled_setup);
104#else
105int selinux_enabled = 1;
104#endif 106#endif
105 107
106/* Original (dummy) security module. */ 108/* Original (dummy) security module. */
@@ -4052,13 +4054,6 @@ static int selinux_ipc_permission(struct kern_ipc_perm *ipcp, short flag)
4052 return ipc_has_perm(ipcp, av); 4054 return ipc_has_perm(ipcp, av);
4053} 4055}
4054 4056
4055static int selinux_ipc_getsecurity(struct kern_ipc_perm *ipcp, void *buffer, size_t size)
4056{
4057 struct ipc_security_struct *isec = ipcp->security;
4058
4059 return selinux_getsecurity(isec->sid, buffer, size);
4060}
4061
4062/* module stacking operations */ 4057/* module stacking operations */
4063static int selinux_register_security (const char *name, struct security_operations *ops) 4058static int selinux_register_security (const char *name, struct security_operations *ops)
4064{ 4059{
@@ -4321,7 +4316,6 @@ static struct security_operations selinux_ops = {
4321 .task_to_inode = selinux_task_to_inode, 4316 .task_to_inode = selinux_task_to_inode,
4322 4317
4323 .ipc_permission = selinux_ipc_permission, 4318 .ipc_permission = selinux_ipc_permission,
4324 .ipc_getsecurity = selinux_ipc_getsecurity,
4325 4319
4326 .msg_msg_alloc_security = selinux_msg_msg_alloc_security, 4320 .msg_msg_alloc_security = selinux_msg_msg_alloc_security,
4327 .msg_msg_free_security = selinux_msg_msg_free_security, 4321 .msg_msg_free_security = selinux_msg_msg_free_security,
@@ -4543,6 +4537,7 @@ int selinux_disable(void)
4543 printk(KERN_INFO "SELinux: Disabled at runtime.\n"); 4537 printk(KERN_INFO "SELinux: Disabled at runtime.\n");
4544 4538
4545 selinux_disabled = 1; 4539 selinux_disabled = 1;
4540 selinux_enabled = 0;
4546 4541
4547 /* Reset security_ops to the secondary module, dummy or capability. */ 4542 /* Reset security_ops to the secondary module, dummy or capability. */
4548 security_ops = secondary_ops; 4543 security_ops = secondary_ops;
diff --git a/security/selinux/include/security.h b/security/selinux/include/security.h
index 5f016c98056f..063af47bb231 100644
--- a/security/selinux/include/security.h
+++ b/security/selinux/include/security.h
@@ -29,12 +29,7 @@
29#define POLICYDB_VERSION_MIN POLICYDB_VERSION_BASE 29#define POLICYDB_VERSION_MIN POLICYDB_VERSION_BASE
30#define POLICYDB_VERSION_MAX POLICYDB_VERSION_AVTAB 30#define POLICYDB_VERSION_MAX POLICYDB_VERSION_AVTAB
31 31
32#ifdef CONFIG_SECURITY_SELINUX_BOOTPARAM
33extern int selinux_enabled; 32extern int selinux_enabled;
34#else
35#define selinux_enabled 1
36#endif
37
38extern int selinux_mls_enabled; 33extern int selinux_mls_enabled;
39 34
40int security_load_policy(void * data, size_t len); 35int security_load_policy(void * data, size_t len);
diff --git a/security/selinux/ss/mls.c b/security/selinux/ss/mls.c
index 84047f69f9c1..7bc5b6440f70 100644
--- a/security/selinux/ss/mls.c
+++ b/security/selinux/ss/mls.c
@@ -8,7 +8,7 @@
8 * 8 *
9 * Support for enhanced MLS infrastructure. 9 * Support for enhanced MLS infrastructure.
10 * 10 *
11 * Copyright (C) 2004-2005 Trusted Computer Solutions, Inc. 11 * Copyright (C) 2004-2006 Trusted Computer Solutions, Inc.
12 */ 12 */
13 13
14#include <linux/kernel.h> 14#include <linux/kernel.h>
@@ -385,6 +385,34 @@ out:
385} 385}
386 386
387/* 387/*
388 * Set the MLS fields in the security context structure
389 * `context' based on the string representation in
390 * the string `str'. This function will allocate temporary memory with the
391 * given constraints of gfp_mask.
392 */
393int mls_from_string(char *str, struct context *context, gfp_t gfp_mask)
394{
395 char *tmpstr, *freestr;
396 int rc;
397
398 if (!selinux_mls_enabled)
399 return -EINVAL;
400
401 /* we need freestr because mls_context_to_sid will change
402 the value of tmpstr */
403 tmpstr = freestr = kstrdup(str, gfp_mask);
404 if (!tmpstr) {
405 rc = -ENOMEM;
406 } else {
407 rc = mls_context_to_sid(':', &tmpstr, context,
408 NULL, SECSID_NULL);
409 kfree(freestr);
410 }
411
412 return rc;
413}
414
415/*
388 * Copies the effective MLS range from `src' into `dst'. 416 * Copies the effective MLS range from `src' into `dst'.
389 */ 417 */
390static inline int mls_scopy_context(struct context *dst, 418static inline int mls_scopy_context(struct context *dst,
diff --git a/security/selinux/ss/mls.h b/security/selinux/ss/mls.h
index 03de697c8058..fbb42f07dd7c 100644
--- a/security/selinux/ss/mls.h
+++ b/security/selinux/ss/mls.h
@@ -8,7 +8,7 @@
8 * 8 *
9 * Support for enhanced MLS infrastructure. 9 * Support for enhanced MLS infrastructure.
10 * 10 *
11 * Copyright (C) 2004-2005 Trusted Computer Solutions, Inc. 11 * Copyright (C) 2004-2006 Trusted Computer Solutions, Inc.
12 */ 12 */
13 13
14#ifndef _SS_MLS_H_ 14#ifndef _SS_MLS_H_
@@ -27,6 +27,8 @@ int mls_context_to_sid(char oldc,
27 struct sidtab *s, 27 struct sidtab *s,
28 u32 def_sid); 28 u32 def_sid);
29 29
30int mls_from_string(char *str, struct context *context, gfp_t gfp_mask);
31
30int mls_convert_context(struct policydb *oldp, 32int mls_convert_context(struct policydb *oldp,
31 struct policydb *newp, 33 struct policydb *newp,
32 struct context *context); 34 struct context *context);
diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
index 61492485de84..7177e98df7f3 100644
--- a/security/selinux/ss/services.c
+++ b/security/selinux/ss/services.c
@@ -7,12 +7,13 @@
7 * Updated: Trusted Computer Solutions, Inc. <dgoeddel@trustedcs.com> 7 * Updated: Trusted Computer Solutions, Inc. <dgoeddel@trustedcs.com>
8 * 8 *
9 * Support for enhanced MLS infrastructure. 9 * Support for enhanced MLS infrastructure.
10 * Support for context based audit filters.
10 * 11 *
11 * Updated: Frank Mayer <mayerf@tresys.com> and Karl MacMillan <kmacmillan@tresys.com> 12 * Updated: Frank Mayer <mayerf@tresys.com> and Karl MacMillan <kmacmillan@tresys.com>
12 * 13 *
13 * Added conditional policy language extensions 14 * Added conditional policy language extensions
14 * 15 *
15 * Copyright (C) 2004-2005 Trusted Computer Solutions, Inc. 16 * Copyright (C) 2004-2006 Trusted Computer Solutions, Inc.
16 * Copyright (C) 2003 - 2004 Tresys Technology, LLC 17 * Copyright (C) 2003 - 2004 Tresys Technology, LLC
17 * Copyright (C) 2003 Red Hat, Inc., James Morris <jmorris@redhat.com> 18 * Copyright (C) 2003 Red Hat, Inc., James Morris <jmorris@redhat.com>
18 * This program is free software; you can redistribute it and/or modify 19 * This program is free software; you can redistribute it and/or modify
@@ -1811,3 +1812,235 @@ out:
1811 POLICY_RDUNLOCK; 1812 POLICY_RDUNLOCK;
1812 return rc; 1813 return rc;
1813} 1814}
1815
1816struct selinux_audit_rule {
1817 u32 au_seqno;
1818 struct context au_ctxt;
1819};
1820
1821void selinux_audit_rule_free(struct selinux_audit_rule *rule)
1822{
1823 if (rule) {
1824 context_destroy(&rule->au_ctxt);
1825 kfree(rule);
1826 }
1827}
1828
1829int selinux_audit_rule_init(u32 field, u32 op, char *rulestr,
1830 struct selinux_audit_rule **rule)
1831{
1832 struct selinux_audit_rule *tmprule;
1833 struct role_datum *roledatum;
1834 struct type_datum *typedatum;
1835 struct user_datum *userdatum;
1836 int rc = 0;
1837
1838 *rule = NULL;
1839
1840 if (!ss_initialized)
1841 return -ENOTSUPP;
1842
1843 switch (field) {
1844 case AUDIT_SE_USER:
1845 case AUDIT_SE_ROLE:
1846 case AUDIT_SE_TYPE:
1847 /* only 'equals' and 'not equals' fit user, role, and type */
1848 if (op != AUDIT_EQUAL && op != AUDIT_NOT_EQUAL)
1849 return -EINVAL;
1850 break;
1851 case AUDIT_SE_SEN:
1852 case AUDIT_SE_CLR:
1853 /* we do not allow a range, indicated by the presense of '-' */
1854 if (strchr(rulestr, '-'))
1855 return -EINVAL;
1856 break;
1857 default:
1858 /* only the above fields are valid */
1859 return -EINVAL;
1860 }
1861
1862 tmprule = kzalloc(sizeof(struct selinux_audit_rule), GFP_KERNEL);
1863 if (!tmprule)
1864 return -ENOMEM;
1865
1866 context_init(&tmprule->au_ctxt);
1867
1868 POLICY_RDLOCK;
1869
1870 tmprule->au_seqno = latest_granting;
1871
1872 switch (field) {
1873 case AUDIT_SE_USER:
1874 userdatum = hashtab_search(policydb.p_users.table, rulestr);
1875 if (!userdatum)
1876 rc = -EINVAL;
1877 else
1878 tmprule->au_ctxt.user = userdatum->value;
1879 break;
1880 case AUDIT_SE_ROLE:
1881 roledatum = hashtab_search(policydb.p_roles.table, rulestr);
1882 if (!roledatum)
1883 rc = -EINVAL;
1884 else
1885 tmprule->au_ctxt.role = roledatum->value;
1886 break;
1887 case AUDIT_SE_TYPE:
1888 typedatum = hashtab_search(policydb.p_types.table, rulestr);
1889 if (!typedatum)
1890 rc = -EINVAL;
1891 else
1892 tmprule->au_ctxt.type = typedatum->value;
1893 break;
1894 case AUDIT_SE_SEN:
1895 case AUDIT_SE_CLR:
1896 rc = mls_from_string(rulestr, &tmprule->au_ctxt, GFP_ATOMIC);
1897 break;
1898 }
1899
1900 POLICY_RDUNLOCK;
1901
1902 if (rc) {
1903 selinux_audit_rule_free(tmprule);
1904 tmprule = NULL;
1905 }
1906
1907 *rule = tmprule;
1908
1909 return rc;
1910}
1911
1912int selinux_audit_rule_match(u32 ctxid, u32 field, u32 op,
1913 struct selinux_audit_rule *rule,
1914 struct audit_context *actx)
1915{
1916 struct context *ctxt;
1917 struct mls_level *level;
1918 int match = 0;
1919
1920 if (!rule) {
1921 audit_log(actx, GFP_ATOMIC, AUDIT_SELINUX_ERR,
1922 "selinux_audit_rule_match: missing rule\n");
1923 return -ENOENT;
1924 }
1925
1926 POLICY_RDLOCK;
1927
1928 if (rule->au_seqno < latest_granting) {
1929 audit_log(actx, GFP_ATOMIC, AUDIT_SELINUX_ERR,
1930 "selinux_audit_rule_match: stale rule\n");
1931 match = -ESTALE;
1932 goto out;
1933 }
1934
1935 ctxt = sidtab_search(&sidtab, ctxid);
1936 if (!ctxt) {
1937 audit_log(actx, GFP_ATOMIC, AUDIT_SELINUX_ERR,
1938 "selinux_audit_rule_match: unrecognized SID %d\n",
1939 ctxid);
1940 match = -ENOENT;
1941 goto out;
1942 }
1943
1944 /* a field/op pair that is not caught here will simply fall through
1945 without a match */
1946 switch (field) {
1947 case AUDIT_SE_USER:
1948 switch (op) {
1949 case AUDIT_EQUAL:
1950 match = (ctxt->user == rule->au_ctxt.user);
1951 break;
1952 case AUDIT_NOT_EQUAL:
1953 match = (ctxt->user != rule->au_ctxt.user);
1954 break;
1955 }
1956 break;
1957 case AUDIT_SE_ROLE:
1958 switch (op) {
1959 case AUDIT_EQUAL:
1960 match = (ctxt->role == rule->au_ctxt.role);
1961 break;
1962 case AUDIT_NOT_EQUAL:
1963 match = (ctxt->role != rule->au_ctxt.role);
1964 break;
1965 }
1966 break;
1967 case AUDIT_SE_TYPE:
1968 switch (op) {
1969 case AUDIT_EQUAL:
1970 match = (ctxt->type == rule->au_ctxt.type);
1971 break;
1972 case AUDIT_NOT_EQUAL:
1973 match = (ctxt->type != rule->au_ctxt.type);
1974 break;
1975 }
1976 break;
1977 case AUDIT_SE_SEN:
1978 case AUDIT_SE_CLR:
1979 level = (op == AUDIT_SE_SEN ?
1980 &ctxt->range.level[0] : &ctxt->range.level[1]);
1981 switch (op) {
1982 case AUDIT_EQUAL:
1983 match = mls_level_eq(&rule->au_ctxt.range.level[0],
1984 level);
1985 break;
1986 case AUDIT_NOT_EQUAL:
1987 match = !mls_level_eq(&rule->au_ctxt.range.level[0],
1988 level);
1989 break;
1990 case AUDIT_LESS_THAN:
1991 match = (mls_level_dom(&rule->au_ctxt.range.level[0],
1992 level) &&
1993 !mls_level_eq(&rule->au_ctxt.range.level[0],
1994 level));
1995 break;
1996 case AUDIT_LESS_THAN_OR_EQUAL:
1997 match = mls_level_dom(&rule->au_ctxt.range.level[0],
1998 level);
1999 break;
2000 case AUDIT_GREATER_THAN:
2001 match = (mls_level_dom(level,
2002 &rule->au_ctxt.range.level[0]) &&
2003 !mls_level_eq(level,
2004 &rule->au_ctxt.range.level[0]));
2005 break;
2006 case AUDIT_GREATER_THAN_OR_EQUAL:
2007 match = mls_level_dom(level,
2008 &rule->au_ctxt.range.level[0]);
2009 break;
2010 }
2011 }
2012
2013out:
2014 POLICY_RDUNLOCK;
2015 return match;
2016}
2017
2018static int (*aurule_callback)(void) = NULL;
2019
2020static int aurule_avc_callback(u32 event, u32 ssid, u32 tsid,
2021 u16 class, u32 perms, u32 *retained)
2022{
2023 int err = 0;
2024
2025 if (event == AVC_CALLBACK_RESET && aurule_callback)
2026 err = aurule_callback();
2027 return err;
2028}
2029
2030static int __init aurule_init(void)
2031{
2032 int err;
2033
2034 err = avc_add_callback(aurule_avc_callback, AVC_CALLBACK_RESET,
2035 SECSID_NULL, SECSID_NULL, SECCLASS_NULL, 0);
2036 if (err)
2037 panic("avc_add_callback() failed, error %d\n", err);
2038
2039 return err;
2040}
2041__initcall(aurule_init);
2042
2043void selinux_audit_set_callback(int (*callback)(void))
2044{
2045 aurule_callback = callback;
2046}
diff --git a/sound/core/Kconfig b/sound/core/Kconfig
index 8efc1b12f3a8..4262a1c87731 100644
--- a/sound/core/Kconfig
+++ b/sound/core/Kconfig
@@ -142,7 +142,7 @@ config SND_SUPPORT_OLD_API
142 142
143config SND_VERBOSE_PROCFS 143config SND_VERBOSE_PROCFS
144 bool "Verbose procfs contents" 144 bool "Verbose procfs contents"
145 depends on SND 145 depends on SND && PROC_FS
146 default y 146 default y
147 help 147 help
148 Say Y here to include code for verbose procfs contents (provides 148 Say Y here to include code for verbose procfs contents (provides
@@ -171,3 +171,13 @@ config SND_DEBUG_DETECT
171 help 171 help
172 Say Y here to enable extra-verbose log messages printed when 172 Say Y here to enable extra-verbose log messages printed when
173 detecting devices. 173 detecting devices.
174
175config SND_PCM_XRUN_DEBUG
176 bool "Enable PCM ring buffer overrun/underrun debugging"
177 default n
178 depends on SND_DEBUG && SND_VERBOSE_PROCFS
179 help
180 Say Y to enable the PCM ring buffer overrun/underrun debugging.
181 It is usually not required, but if you have trouble with
182 sound clicking when system is loaded, it may help to determine
183 the process or driver which causes the scheduling gaps.
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
index c5978d6c6080..ac990bf0b48f 100644
--- a/sound/core/oss/pcm_oss.c
+++ b/sound/core/oss/pcm_oss.c
@@ -1242,6 +1242,8 @@ static int snd_pcm_oss_set_format(struct snd_pcm_oss_file *pcm_oss_file, int for
1242 1242
1243 if (format != AFMT_QUERY) { 1243 if (format != AFMT_QUERY) {
1244 formats = snd_pcm_oss_get_formats(pcm_oss_file); 1244 formats = snd_pcm_oss_get_formats(pcm_oss_file);
1245 if (formats < 0)
1246 return formats;
1245 if (!(formats & format)) 1247 if (!(formats & format))
1246 format = AFMT_U8; 1248 format = AFMT_U8;
1247 for (idx = 1; idx >= 0; --idx) { 1249 for (idx = 1; idx >= 0; --idx) {
@@ -2212,7 +2214,7 @@ static int snd_pcm_oss_mmap(struct file *file, struct vm_area_struct *area)
2212 return 0; 2214 return 0;
2213} 2215}
2214 2216
2215#ifdef CONFIG_PROC_FS 2217#ifdef CONFIG_SND_VERBOSE_PROCFS
2216/* 2218/*
2217 * /proc interface 2219 * /proc interface
2218 */ 2220 */
@@ -2366,10 +2368,10 @@ static void snd_pcm_oss_proc_done(struct snd_pcm *pcm)
2366 } 2368 }
2367 } 2369 }
2368} 2370}
2369#else /* !CONFIG_PROC_FS */ 2371#else /* !CONFIG_SND_VERBOSE_PROCFS */
2370#define snd_pcm_oss_proc_init(pcm) 2372#define snd_pcm_oss_proc_init(pcm)
2371#define snd_pcm_oss_proc_done(pcm) 2373#define snd_pcm_oss_proc_done(pcm)
2372#endif /* CONFIG_PROC_FS */ 2374#endif /* CONFIG_SND_VERBOSE_PROCFS */
2373 2375
2374/* 2376/*
2375 * ENTRY functions 2377 * ENTRY functions
diff --git a/sound/core/pcm.c b/sound/core/pcm.c
index 122e10a61ab9..84b00038236d 100644
--- a/sound/core/pcm.c
+++ b/sound/core/pcm.c
@@ -142,7 +142,7 @@ static int snd_pcm_control_ioctl(struct snd_card *card,
142 return -ENOIOCTLCMD; 142 return -ENOIOCTLCMD;
143} 143}
144 144
145#if defined(CONFIG_PROC_FS) && defined(CONFIG_SND_VERBOSE_PROCFS) 145#ifdef CONFIG_SND_VERBOSE_PROCFS
146 146
147#define STATE(v) [SNDRV_PCM_STATE_##v] = #v 147#define STATE(v) [SNDRV_PCM_STATE_##v] = #v
148#define STREAM(v) [SNDRV_PCM_STREAM_##v] = #v 148#define STREAM(v) [SNDRV_PCM_STREAM_##v] = #v
@@ -436,7 +436,7 @@ static void snd_pcm_substream_proc_status_read(struct snd_info_entry *entry,
436 snd_iprintf(buffer, "appl_ptr : %ld\n", runtime->control->appl_ptr); 436 snd_iprintf(buffer, "appl_ptr : %ld\n", runtime->control->appl_ptr);
437} 437}
438 438
439#ifdef CONFIG_SND_DEBUG 439#ifdef CONFIG_SND_PCM_XRUN_DEBUG
440static void snd_pcm_xrun_debug_read(struct snd_info_entry *entry, 440static void snd_pcm_xrun_debug_read(struct snd_info_entry *entry,
441 struct snd_info_buffer *buffer) 441 struct snd_info_buffer *buffer)
442{ 442{
@@ -480,7 +480,7 @@ static int snd_pcm_stream_proc_init(struct snd_pcm_str *pstr)
480 } 480 }
481 pstr->proc_info_entry = entry; 481 pstr->proc_info_entry = entry;
482 482
483#ifdef CONFIG_SND_DEBUG 483#ifdef CONFIG_SND_PCM_XRUN_DEBUG
484 if ((entry = snd_info_create_card_entry(pcm->card, "xrun_debug", 484 if ((entry = snd_info_create_card_entry(pcm->card, "xrun_debug",
485 pstr->proc_root)) != NULL) { 485 pstr->proc_root)) != NULL) {
486 entry->c.text.read_size = 64; 486 entry->c.text.read_size = 64;
@@ -501,7 +501,7 @@ static int snd_pcm_stream_proc_init(struct snd_pcm_str *pstr)
501 501
502static int snd_pcm_stream_proc_done(struct snd_pcm_str *pstr) 502static int snd_pcm_stream_proc_done(struct snd_pcm_str *pstr)
503{ 503{
504#ifdef CONFIG_SND_DEBUG 504#ifdef CONFIG_SND_PCM_XRUN_DEBUG
505 if (pstr->proc_xrun_debug_entry) { 505 if (pstr->proc_xrun_debug_entry) {
506 snd_info_unregister(pstr->proc_xrun_debug_entry); 506 snd_info_unregister(pstr->proc_xrun_debug_entry);
507 pstr->proc_xrun_debug_entry = NULL; 507 pstr->proc_xrun_debug_entry = NULL;
@@ -599,12 +599,12 @@ static int snd_pcm_substream_proc_done(struct snd_pcm_substream *substream)
599 } 599 }
600 return 0; 600 return 0;
601} 601}
602#else /* !CONFIG_PROC_FS */ 602#else /* !CONFIG_SND_VERBOSE_PROCFS */
603static inline int snd_pcm_stream_proc_init(struct snd_pcm_str *pstr) { return 0; } 603static inline int snd_pcm_stream_proc_init(struct snd_pcm_str *pstr) { return 0; }
604static inline int snd_pcm_stream_proc_done(struct snd_pcm_str *pstr) { return 0; } 604static inline int snd_pcm_stream_proc_done(struct snd_pcm_str *pstr) { return 0; }
605static inline int snd_pcm_substream_proc_init(struct snd_pcm_substream *substream) { return 0; } 605static inline int snd_pcm_substream_proc_init(struct snd_pcm_substream *substream) { return 0; }
606static inline int snd_pcm_substream_proc_done(struct snd_pcm_substream *substream) { return 0; } 606static inline int snd_pcm_substream_proc_done(struct snd_pcm_substream *substream) { return 0; }
607#endif /* CONFIG_PROC_FS */ 607#endif /* CONFIG_SND_VERBOSE_PROCFS */
608 608
609/** 609/**
610 * snd_pcm_new_stream - create a new PCM stream 610 * snd_pcm_new_stream - create a new PCM stream
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c
index 230a940d00bd..eedc6cb038bb 100644
--- a/sound/core/pcm_lib.c
+++ b/sound/core/pcm_lib.c
@@ -130,7 +130,7 @@ void snd_pcm_playback_silence(struct snd_pcm_substream *substream, snd_pcm_ufram
130static void xrun(struct snd_pcm_substream *substream) 130static void xrun(struct snd_pcm_substream *substream)
131{ 131{
132 snd_pcm_stop(substream, SNDRV_PCM_STATE_XRUN); 132 snd_pcm_stop(substream, SNDRV_PCM_STATE_XRUN);
133#ifdef CONFIG_SND_DEBUG 133#ifdef CONFIG_SND_PCM_XRUN_DEBUG
134 if (substream->pstr->xrun_debug) { 134 if (substream->pstr->xrun_debug) {
135 snd_printd(KERN_DEBUG "XRUN: pcmC%dD%d%c\n", 135 snd_printd(KERN_DEBUG "XRUN: pcmC%dD%d%c\n",
136 substream->pcm->card->number, 136 substream->pcm->card->number,
@@ -204,7 +204,7 @@ static inline int snd_pcm_update_hw_ptr_interrupt(struct snd_pcm_substream *subs
204 delta = hw_ptr_interrupt - new_hw_ptr; 204 delta = hw_ptr_interrupt - new_hw_ptr;
205 if (delta > 0) { 205 if (delta > 0) {
206 if ((snd_pcm_uframes_t)delta < runtime->buffer_size / 2) { 206 if ((snd_pcm_uframes_t)delta < runtime->buffer_size / 2) {
207#ifdef CONFIG_SND_DEBUG 207#ifdef CONFIG_SND_PCM_XRUN_DEBUG
208 if (runtime->periods > 1 && substream->pstr->xrun_debug) { 208 if (runtime->periods > 1 && substream->pstr->xrun_debug) {
209 snd_printd(KERN_ERR "Unexpected hw_pointer value [1] (stream = %i, delta: -%ld, max jitter = %ld): wrong interrupt acknowledge?\n", substream->stream, (long) delta, runtime->buffer_size / 2); 209 snd_printd(KERN_ERR "Unexpected hw_pointer value [1] (stream = %i, delta: -%ld, max jitter = %ld): wrong interrupt acknowledge?\n", substream->stream, (long) delta, runtime->buffer_size / 2);
210 if (substream->pstr->xrun_debug > 1) 210 if (substream->pstr->xrun_debug > 1)
@@ -249,7 +249,7 @@ int snd_pcm_update_hw_ptr(struct snd_pcm_substream *substream)
249 delta = old_hw_ptr - new_hw_ptr; 249 delta = old_hw_ptr - new_hw_ptr;
250 if (delta > 0) { 250 if (delta > 0) {
251 if ((snd_pcm_uframes_t)delta < runtime->buffer_size / 2) { 251 if ((snd_pcm_uframes_t)delta < runtime->buffer_size / 2) {
252#ifdef CONFIG_SND_DEBUG 252#ifdef CONFIG_SND_PCM_XRUN_DEBUG
253 if (runtime->periods > 2 && substream->pstr->xrun_debug) { 253 if (runtime->periods > 2 && substream->pstr->xrun_debug) {
254 snd_printd(KERN_ERR "Unexpected hw_pointer value [2] (stream = %i, delta: -%ld, max jitter = %ld): wrong interrupt acknowledge?\n", substream->stream, (long) delta, runtime->buffer_size / 2); 254 snd_printd(KERN_ERR "Unexpected hw_pointer value [2] (stream = %i, delta: -%ld, max jitter = %ld): wrong interrupt acknowledge?\n", substream->stream, (long) delta, runtime->buffer_size / 2);
255 if (substream->pstr->xrun_debug > 1) 255 if (substream->pstr->xrun_debug > 1)
diff --git a/sound/core/pcm_memory.c b/sound/core/pcm_memory.c
index a0119ae67dcd..428f8c169ee1 100644
--- a/sound/core/pcm_memory.c
+++ b/sound/core/pcm_memory.c
@@ -100,8 +100,10 @@ static void snd_pcm_lib_preallocate_dma_free(struct snd_pcm_substream *substream
100int snd_pcm_lib_preallocate_free(struct snd_pcm_substream *substream) 100int snd_pcm_lib_preallocate_free(struct snd_pcm_substream *substream)
101{ 101{
102 snd_pcm_lib_preallocate_dma_free(substream); 102 snd_pcm_lib_preallocate_dma_free(substream);
103#ifdef CONFIG_SND_VERBOSE_PROCFS
103 snd_info_unregister(substream->proc_prealloc_entry); 104 snd_info_unregister(substream->proc_prealloc_entry);
104 substream->proc_prealloc_entry = NULL; 105 substream->proc_prealloc_entry = NULL;
106#endif
105 return 0; 107 return 0;
106} 108}
107 109
@@ -124,7 +126,7 @@ int snd_pcm_lib_preallocate_free_for_all(struct snd_pcm *pcm)
124 return 0; 126 return 0;
125} 127}
126 128
127#ifdef CONFIG_PROC_FS 129#ifdef CONFIG_SND_VERBOSE_PROCFS
128/* 130/*
129 * read callback for prealloc proc file 131 * read callback for prealloc proc file
130 * 132 *
@@ -203,9 +205,9 @@ static inline void preallocate_info_init(struct snd_pcm_substream *substream)
203 substream->proc_prealloc_entry = entry; 205 substream->proc_prealloc_entry = entry;
204} 206}
205 207
206#else /* !CONFIG_PROC_FS */ 208#else /* !CONFIG_SND_VERBOSE_PROCFS */
207#define preallocate_info_init(s) 209#define preallocate_info_init(s)
208#endif 210#endif /* CONFIG_SND_VERBOSE_PROCFS */
209 211
210/* 212/*
211 * pre-allocate the buffer and create a proc file for the substream 213 * pre-allocate the buffer and create a proc file for the substream
diff --git a/sound/drivers/dummy.c b/sound/drivers/dummy.c
index e35fd5779a9d..ae0df549fac7 100644
--- a/sound/drivers/dummy.c
+++ b/sound/drivers/dummy.c
@@ -675,10 +675,8 @@ static int __init alsa_card_dummy_init(void)
675 continue; 675 continue;
676 device = platform_device_register_simple(SND_DUMMY_DRIVER, 676 device = platform_device_register_simple(SND_DUMMY_DRIVER,
677 i, NULL, 0); 677 i, NULL, 0);
678 if (IS_ERR(device)) { 678 if (IS_ERR(device))
679 err = PTR_ERR(device); 679 continue;
680 goto errout;
681 }
682 devices[i] = device; 680 devices[i] = device;
683 cards++; 681 cards++;
684 } 682 }
@@ -686,14 +684,10 @@ static int __init alsa_card_dummy_init(void)
686#ifdef MODULE 684#ifdef MODULE
687 printk(KERN_ERR "Dummy soundcard not found or device busy\n"); 685 printk(KERN_ERR "Dummy soundcard not found or device busy\n");
688#endif 686#endif
689 err = -ENODEV; 687 snd_dummy_unregister_all();
690 goto errout; 688 return -ENODEV;
691 } 689 }
692 return 0; 690 return 0;
693
694 errout:
695 snd_dummy_unregister_all();
696 return err;
697} 691}
698 692
699static void __exit alsa_card_dummy_exit(void) 693static void __exit alsa_card_dummy_exit(void)
diff --git a/sound/drivers/mpu401/mpu401.c b/sound/drivers/mpu401/mpu401.c
index 9ea3059a7064..da7ef26995c3 100644
--- a/sound/drivers/mpu401/mpu401.c
+++ b/sound/drivers/mpu401/mpu401.c
@@ -251,10 +251,8 @@ static int __init alsa_card_mpu401_init(void)
251#endif 251#endif
252 device = platform_device_register_simple(SND_MPU401_DRIVER, 252 device = platform_device_register_simple(SND_MPU401_DRIVER,
253 i, NULL, 0); 253 i, NULL, 0);
254 if (IS_ERR(device)) { 254 if (IS_ERR(device))
255 err = PTR_ERR(device); 255 continue;
256 goto errout;
257 }
258 platform_devices[i] = device; 256 platform_devices[i] = device;
259 snd_mpu401_devices++; 257 snd_mpu401_devices++;
260 } 258 }
@@ -266,14 +264,10 @@ static int __init alsa_card_mpu401_init(void)
266#ifdef MODULE 264#ifdef MODULE
267 printk(KERN_ERR "MPU-401 device not found or device busy\n"); 265 printk(KERN_ERR "MPU-401 device not found or device busy\n");
268#endif 266#endif
269 err = -ENODEV; 267 snd_mpu401_unregister_all();
270 goto errout; 268 return -ENODEV;
271 } 269 }
272 return 0; 270 return 0;
273
274 errout:
275 snd_mpu401_unregister_all();
276 return err;
277} 271}
278 272
279static void __exit alsa_card_mpu401_exit(void) 273static void __exit alsa_card_mpu401_exit(void)
diff --git a/sound/drivers/serial-u16550.c b/sound/drivers/serial-u16550.c
index 1a7fbefe4740..c01b4c5118b9 100644
--- a/sound/drivers/serial-u16550.c
+++ b/sound/drivers/serial-u16550.c
@@ -996,10 +996,8 @@ static int __init alsa_card_serial_init(void)
996 continue; 996 continue;
997 device = platform_device_register_simple(SND_SERIAL_DRIVER, 997 device = platform_device_register_simple(SND_SERIAL_DRIVER,
998 i, NULL, 0); 998 i, NULL, 0);
999 if (IS_ERR(device)) { 999 if (IS_ERR(device))
1000 err = PTR_ERR(device); 1000 continue;
1001 goto errout;
1002 }
1003 devices[i] = device; 1001 devices[i] = device;
1004 cards++; 1002 cards++;
1005 } 1003 }
@@ -1007,14 +1005,10 @@ static int __init alsa_card_serial_init(void)
1007#ifdef MODULE 1005#ifdef MODULE
1008 printk(KERN_ERR "serial midi soundcard not found or device busy\n"); 1006 printk(KERN_ERR "serial midi soundcard not found or device busy\n");
1009#endif 1007#endif
1010 err = -ENODEV; 1008 snd_serial_unregister_all();
1011 goto errout; 1009 return -ENODEV;
1012 } 1010 }
1013 return 0; 1011 return 0;
1014
1015 errout:
1016 snd_serial_unregister_all();
1017 return err;
1018} 1012}
1019 1013
1020static void __exit alsa_card_serial_exit(void) 1014static void __exit alsa_card_serial_exit(void)
diff --git a/sound/drivers/virmidi.c b/sound/drivers/virmidi.c
index a3ee306239c9..26eb2499d442 100644
--- a/sound/drivers/virmidi.c
+++ b/sound/drivers/virmidi.c
@@ -169,10 +169,8 @@ static int __init alsa_card_virmidi_init(void)
169 continue; 169 continue;
170 device = platform_device_register_simple(SND_VIRMIDI_DRIVER, 170 device = platform_device_register_simple(SND_VIRMIDI_DRIVER,
171 i, NULL, 0); 171 i, NULL, 0);
172 if (IS_ERR(device)) { 172 if (IS_ERR(device))
173 err = PTR_ERR(device); 173 continue;
174 goto errout;
175 }
176 devices[i] = device; 174 devices[i] = device;
177 cards++; 175 cards++;
178 } 176 }
@@ -180,14 +178,10 @@ static int __init alsa_card_virmidi_init(void)
180#ifdef MODULE 178#ifdef MODULE
181 printk(KERN_ERR "Card-VirMIDI soundcard not found or device busy\n"); 179 printk(KERN_ERR "Card-VirMIDI soundcard not found or device busy\n");
182#endif 180#endif
183 err = -ENODEV; 181 snd_virmidi_unregister_all();
184 goto errout; 182 return -ENODEV;
185 } 183 }
186 return 0; 184 return 0;
187
188 errout:
189 snd_virmidi_unregister_all();
190 return err;
191} 185}
192 186
193static void __exit alsa_card_virmidi_exit(void) 187static void __exit alsa_card_virmidi_exit(void)
diff --git a/sound/isa/opti9xx/miro.c b/sound/isa/opti9xx/miro.c
index 83d64bc07ff0..e6bfcf74c1c1 100644
--- a/sound/isa/opti9xx/miro.c
+++ b/sound/isa/opti9xx/miro.c
@@ -1179,20 +1179,17 @@ static int __init snd_card_miro_aci_detect(struct snd_card *card, struct snd_mir
1179 /* force ACI into a known state */ 1179 /* force ACI into a known state */
1180 for (i = 0; i < 3; i++) 1180 for (i = 0; i < 3; i++)
1181 if (aci_cmd(miro, ACI_ERROR_OP, -1, -1) < 0) { 1181 if (aci_cmd(miro, ACI_ERROR_OP, -1, -1) < 0) {
1182 snd_card_free(card);
1183 snd_printk(KERN_ERR "can't force aci into known state.\n"); 1182 snd_printk(KERN_ERR "can't force aci into known state.\n");
1184 return -ENXIO; 1183 return -ENXIO;
1185 } 1184 }
1186 1185
1187 if ((miro->aci_vendor=aci_cmd(miro, ACI_READ_IDCODE, -1, -1)) < 0 || 1186 if ((miro->aci_vendor=aci_cmd(miro, ACI_READ_IDCODE, -1, -1)) < 0 ||
1188 (miro->aci_product=aci_cmd(miro, ACI_READ_IDCODE, -1, -1)) < 0) { 1187 (miro->aci_product=aci_cmd(miro, ACI_READ_IDCODE, -1, -1)) < 0) {
1189 snd_card_free(card);
1190 snd_printk(KERN_ERR "can't read aci id on 0x%lx.\n", miro->aci_port); 1188 snd_printk(KERN_ERR "can't read aci id on 0x%lx.\n", miro->aci_port);
1191 return -ENXIO; 1189 return -ENXIO;
1192 } 1190 }
1193 1191
1194 if ((miro->aci_version=aci_cmd(miro, ACI_READ_VERSION, -1, -1)) < 0) { 1192 if ((miro->aci_version=aci_cmd(miro, ACI_READ_VERSION, -1, -1)) < 0) {
1195 snd_card_free(card);
1196 snd_printk(KERN_ERR "can't read aci version on 0x%lx.\n", 1193 snd_printk(KERN_ERR "can't read aci version on 0x%lx.\n",
1197 miro->aci_port); 1194 miro->aci_port);
1198 return -ENXIO; 1195 return -ENXIO;
diff --git a/sound/oss/Kconfig b/sound/oss/Kconfig
index 6275266dde2e..558c6ed443be 100644
--- a/sound/oss/Kconfig
+++ b/sound/oss/Kconfig
@@ -478,6 +478,20 @@ config SOUND_ACI_MIXER
478 478
479 This driver is also available as a module and will be called aci. 479 This driver is also available as a module and will be called aci.
480 480
481config SOUND_CS4232
482 tristate "Crystal CS4232 based (PnP) cards"
483 depends on SOUND_OSS
484 help
485 Say Y here if you have a card based on the Crystal CS4232 chip set,
486 which uses its own Plug and Play protocol.
487
488 If you compile the driver into the kernel, you have to add
489 "cs4232=<io>,<irq>,<dma>,<dma2>,<mpuio>,<mpuirq>" to the kernel
490 command line.
491
492 See <file:Documentation/sound/oss/CS4232> for more information on
493 configuring this card.
494
481config SOUND_VMIDI 495config SOUND_VMIDI
482 tristate "Loopback MIDI device support" 496 tristate "Loopback MIDI device support"
483 depends on SOUND_OSS 497 depends on SOUND_OSS
diff --git a/sound/pci/ad1889.c b/sound/pci/ad1889.c
index c6c8333acc62..eece1c7e55a0 100644
--- a/sound/pci/ad1889.c
+++ b/sound/pci/ad1889.c
@@ -39,7 +39,6 @@
39#include <linux/interrupt.h> 39#include <linux/interrupt.h>
40#include <linux/compiler.h> 40#include <linux/compiler.h>
41#include <linux/delay.h> 41#include <linux/delay.h>
42#include <linux/dma-mapping.h>
43 42
44#include <sound/driver.h> 43#include <sound/driver.h>
45#include <sound/core.h> 44#include <sound/core.h>
@@ -1052,7 +1051,7 @@ snd_ad1889_remove(struct pci_dev *pci)
1052 pci_set_drvdata(pci, NULL); 1051 pci_set_drvdata(pci, NULL);
1053} 1052}
1054 1053
1055static struct pci_device_id snd_ad1889_ids[] = { 1054static struct pci_device_id snd_ad1889_ids[] __devinitdata = {
1056 { PCI_DEVICE(PCI_VENDOR_ID_ANALOG_DEVICES, PCI_DEVICE_ID_AD1889JS) }, 1055 { PCI_DEVICE(PCI_VENDOR_ID_ANALOG_DEVICES, PCI_DEVICE_ID_AD1889JS) },
1057 { 0, }, 1056 { 0, },
1058}; 1057};
diff --git a/sound/pci/ali5451/ali5451.c b/sound/pci/ali5451/ali5451.c
index fc92b6896c24..e2dbc2118902 100644
--- a/sound/pci/ali5451/ali5451.c
+++ b/sound/pci/ali5451/ali5451.c
@@ -279,7 +279,7 @@ struct snd_ali {
279#endif 279#endif
280}; 280};
281 281
282static struct pci_device_id snd_ali_ids[] = { 282static struct pci_device_id snd_ali_ids[] __devinitdata = {
283 {PCI_DEVICE(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M5451), 0, 0, 0}, 283 {PCI_DEVICE(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M5451), 0, 0, 0},
284 {0, } 284 {0, }
285}; 285};
diff --git a/sound/pci/als300.c b/sound/pci/als300.c
index 91899f87f037..901b08ae9174 100644
--- a/sound/pci/als300.c
+++ b/sound/pci/als300.c
@@ -146,7 +146,7 @@ struct snd_als300_substream_data {
146 int block_counter_register; 146 int block_counter_register;
147}; 147};
148 148
149static struct pci_device_id snd_als300_ids[] = { 149static struct pci_device_id snd_als300_ids[] __devinitdata = {
150 { 0x4005, 0x0300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_ALS300 }, 150 { 0x4005, 0x0300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_ALS300 },
151 { 0x4005, 0x0308, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_ALS300_PLUS }, 151 { 0x4005, 0x0308, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_ALS300_PLUS },
152 { 0, } 152 { 0, }
diff --git a/sound/pci/als4000.c b/sound/pci/als4000.c
index 100d8127a411..60423b1c678b 100644
--- a/sound/pci/als4000.c
+++ b/sound/pci/als4000.c
@@ -116,7 +116,7 @@ struct snd_card_als4000 {
116#endif 116#endif
117}; 117};
118 118
119static struct pci_device_id snd_als4000_ids[] = { 119static struct pci_device_id snd_als4000_ids[] __devinitdata = {
120 { 0x4005, 0x4000, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* ALS4000 */ 120 { 0x4005, 0x4000, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* ALS4000 */
121 { 0, } 121 { 0, }
122}; 122};
diff --git a/sound/pci/atiixp.c b/sound/pci/atiixp.c
index 12e618851262..d0f759d86d3d 100644
--- a/sound/pci/atiixp.c
+++ b/sound/pci/atiixp.c
@@ -284,7 +284,7 @@ struct atiixp {
284 284
285/* 285/*
286 */ 286 */
287static struct pci_device_id snd_atiixp_ids[] = { 287static struct pci_device_id snd_atiixp_ids[] __devinitdata = {
288 { 0x1002, 0x4341, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* SB200 */ 288 { 0x1002, 0x4341, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* SB200 */
289 { 0x1002, 0x4361, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* SB300 */ 289 { 0x1002, 0x4361, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* SB300 */
290 { 0x1002, 0x4370, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* SB400 */ 290 { 0x1002, 0x4370, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* SB400 */
diff --git a/sound/pci/atiixp_modem.c b/sound/pci/atiixp_modem.c
index 1d3766044643..12a34c39caa7 100644
--- a/sound/pci/atiixp_modem.c
+++ b/sound/pci/atiixp_modem.c
@@ -262,7 +262,7 @@ struct atiixp_modem {
262 262
263/* 263/*
264 */ 264 */
265static struct pci_device_id snd_atiixp_ids[] = { 265static struct pci_device_id snd_atiixp_ids[] __devinitdata = {
266 { 0x1002, 0x434d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* SB200 */ 266 { 0x1002, 0x434d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* SB200 */
267 { 0x1002, 0x4378, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* SB400 */ 267 { 0x1002, 0x4378, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* SB400 */
268 { 0, } 268 { 0, }
diff --git a/sound/pci/au88x0/au8810.c b/sound/pci/au88x0/au8810.c
index fce22c7af0ea..bd3352998ad0 100644
--- a/sound/pci/au88x0/au8810.c
+++ b/sound/pci/au88x0/au8810.c
@@ -1,6 +1,6 @@
1#include "au8810.h" 1#include "au8810.h"
2#include "au88x0.h" 2#include "au88x0.h"
3static struct pci_device_id snd_vortex_ids[] = { 3static struct pci_device_id snd_vortex_ids[] __devinitdata = {
4 {PCI_VENDOR_ID_AUREAL, PCI_DEVICE_ID_AUREAL_ADVANTAGE, 4 {PCI_VENDOR_ID_AUREAL, PCI_DEVICE_ID_AUREAL_ADVANTAGE,
5 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1,}, 5 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1,},
6 {0,} 6 {0,}
diff --git a/sound/pci/au88x0/au8820.c b/sound/pci/au88x0/au8820.c
index d1fbcce07257..7e3fd8372d8d 100644
--- a/sound/pci/au88x0/au8820.c
+++ b/sound/pci/au88x0/au8820.c
@@ -1,6 +1,6 @@
1#include "au8820.h" 1#include "au8820.h"
2#include "au88x0.h" 2#include "au88x0.h"
3static struct pci_device_id snd_vortex_ids[] = { 3static struct pci_device_id snd_vortex_ids[] __devinitdata = {
4 {PCI_VENDOR_ID_AUREAL, PCI_DEVICE_ID_AUREAL_VORTEX_1, 4 {PCI_VENDOR_ID_AUREAL, PCI_DEVICE_ID_AUREAL_VORTEX_1,
5 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,}, 5 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,},
6 {0,} 6 {0,}
diff --git a/sound/pci/au88x0/au8830.c b/sound/pci/au88x0/au8830.c
index d4f2717c14fb..b840f6608a61 100644
--- a/sound/pci/au88x0/au8830.c
+++ b/sound/pci/au88x0/au8830.c
@@ -1,6 +1,6 @@
1#include "au8830.h" 1#include "au8830.h"
2#include "au88x0.h" 2#include "au88x0.h"
3static struct pci_device_id snd_vortex_ids[] = { 3static struct pci_device_id snd_vortex_ids[] __devinitdata = {
4 {PCI_VENDOR_ID_AUREAL, PCI_DEVICE_ID_AUREAL_VORTEX_2, 4 {PCI_VENDOR_ID_AUREAL, PCI_DEVICE_ID_AUREAL_VORTEX_2,
5 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,}, 5 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,},
6 {0,} 6 {0,}
diff --git a/sound/pci/azt3328.c b/sound/pci/azt3328.c
index 680077e1e057..52a364524262 100644
--- a/sound/pci/azt3328.c
+++ b/sound/pci/azt3328.c
@@ -216,7 +216,7 @@ struct snd_azf3328 {
216 int irq; 216 int irq;
217}; 217};
218 218
219static const struct pci_device_id snd_azf3328_ids[] = { 219static const struct pci_device_id snd_azf3328_ids[] __devinitdata = {
220 { 0x122D, 0x50DC, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* PCI168/3328 */ 220 { 0x122D, 0x50DC, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* PCI168/3328 */
221 { 0x122D, 0x80DA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* 3328 */ 221 { 0x122D, 0x80DA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* 3328 */
222 { 0, } 222 { 0, }
diff --git a/sound/pci/bt87x.c b/sound/pci/bt87x.c
index 7b44a8db033d..9ee07d4aac1e 100644
--- a/sound/pci/bt87x.c
+++ b/sound/pci/bt87x.c
@@ -774,7 +774,7 @@ static int __devinit snd_bt87x_create(struct snd_card *card,
774 .driver_data = rate } 774 .driver_data = rate }
775 775
776/* driver_data is the default digital_rate value for that device */ 776/* driver_data is the default digital_rate value for that device */
777static struct pci_device_id snd_bt87x_ids[] = { 777static struct pci_device_id snd_bt87x_ids[] __devinitdata = {
778 /* Hauppauge WinTV series */ 778 /* Hauppauge WinTV series */
779 BT_DEVICE(PCI_DEVICE_ID_BROOKTREE_878, 0x0070, 0x13eb, 32000), 779 BT_DEVICE(PCI_DEVICE_ID_BROOKTREE_878, 0x0070, 0x13eb, 32000),
780 /* Hauppauge WinTV series */ 780 /* Hauppauge WinTV series */
@@ -911,7 +911,7 @@ static void __devexit snd_bt87x_remove(struct pci_dev *pci)
911 911
912/* default entries for all Bt87x cards - it's not exported */ 912/* default entries for all Bt87x cards - it's not exported */
913/* driver_data is set to 0 to call detection */ 913/* driver_data is set to 0 to call detection */
914static struct pci_device_id snd_bt87x_default_ids[] = { 914static struct pci_device_id snd_bt87x_default_ids[] __devinitdata = {
915 BT_DEVICE(PCI_DEVICE_ID_BROOKTREE_878, PCI_ANY_ID, PCI_ANY_ID, 0), 915 BT_DEVICE(PCI_DEVICE_ID_BROOKTREE_878, PCI_ANY_ID, PCI_ANY_ID, 0),
916 BT_DEVICE(PCI_DEVICE_ID_BROOKTREE_879, PCI_ANY_ID, PCI_ANY_ID, 0), 916 BT_DEVICE(PCI_DEVICE_ID_BROOKTREE_879, PCI_ANY_ID, PCI_ANY_ID, 0),
917 { } 917 { }
diff --git a/sound/pci/ca0106/ca0106_main.c b/sound/pci/ca0106/ca0106_main.c
index 9477838a9c88..fd8bfebfbd54 100644
--- a/sound/pci/ca0106/ca0106_main.c
+++ b/sound/pci/ca0106/ca0106_main.c
@@ -1561,7 +1561,7 @@ static void __devexit snd_ca0106_remove(struct pci_dev *pci)
1561} 1561}
1562 1562
1563// PCI IDs 1563// PCI IDs
1564static struct pci_device_id snd_ca0106_ids[] = { 1564static struct pci_device_id snd_ca0106_ids[] __devinitdata = {
1565 { 0x1102, 0x0007, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* Audigy LS or Live 24bit */ 1565 { 0x1102, 0x0007, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* Audigy LS or Live 24bit */
1566 { 0, } 1566 { 0, }
1567}; 1567};
diff --git a/sound/pci/cmipci.c b/sound/pci/cmipci.c
index 2ecbddbbdcf0..e5ce2dabd081 100644
--- a/sound/pci/cmipci.c
+++ b/sound/pci/cmipci.c
@@ -2609,7 +2609,7 @@ static inline void snd_cmipci_proc_init(struct cmipci *cm) {}
2609#endif 2609#endif
2610 2610
2611 2611
2612static struct pci_device_id snd_cmipci_ids[] = { 2612static struct pci_device_id snd_cmipci_ids[] __devinitdata = {
2613 {PCI_VENDOR_ID_CMEDIA, PCI_DEVICE_ID_CMEDIA_CM8338A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 2613 {PCI_VENDOR_ID_CMEDIA, PCI_DEVICE_ID_CMEDIA_CM8338A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
2614 {PCI_VENDOR_ID_CMEDIA, PCI_DEVICE_ID_CMEDIA_CM8338B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 2614 {PCI_VENDOR_ID_CMEDIA, PCI_DEVICE_ID_CMEDIA_CM8338B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
2615 {PCI_VENDOR_ID_CMEDIA, PCI_DEVICE_ID_CMEDIA_CM8738, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 2615 {PCI_VENDOR_ID_CMEDIA, PCI_DEVICE_ID_CMEDIA_CM8738, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
diff --git a/sound/pci/cs4281.c b/sound/pci/cs4281.c
index ac4e73f69c1d..b3c94d83450a 100644
--- a/sound/pci/cs4281.c
+++ b/sound/pci/cs4281.c
@@ -494,7 +494,7 @@ struct cs4281 {
494 494
495static irqreturn_t snd_cs4281_interrupt(int irq, void *dev_id, struct pt_regs *regs); 495static irqreturn_t snd_cs4281_interrupt(int irq, void *dev_id, struct pt_regs *regs);
496 496
497static struct pci_device_id snd_cs4281_ids[] = { 497static struct pci_device_id snd_cs4281_ids[] __devinitdata = {
498 { 0x1013, 0x6005, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4281 */ 498 { 0x1013, 0x6005, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4281 */
499 { 0, } 499 { 0, }
500}; 500};
diff --git a/sound/pci/cs46xx/cs46xx.c b/sound/pci/cs46xx/cs46xx.c
index c590602e20cd..848d772ae3c6 100644
--- a/sound/pci/cs46xx/cs46xx.c
+++ b/sound/pci/cs46xx/cs46xx.c
@@ -65,7 +65,7 @@ MODULE_PARM_DESC(thinkpad, "Force to enable Thinkpad's CLKRUN control.");
65module_param_array(mmap_valid, bool, NULL, 0444); 65module_param_array(mmap_valid, bool, NULL, 0444);
66MODULE_PARM_DESC(mmap_valid, "Support OSS mmap."); 66MODULE_PARM_DESC(mmap_valid, "Support OSS mmap.");
67 67
68static struct pci_device_id snd_cs46xx_ids[] = { 68static struct pci_device_id snd_cs46xx_ids[] __devinitdata = {
69 { 0x1013, 0x6001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4280 */ 69 { 0x1013, 0x6001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4280 */
70 { 0x1013, 0x6003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4612 */ 70 { 0x1013, 0x6003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4612 */
71 { 0x1013, 0x6004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4615 */ 71 { 0x1013, 0x6004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4615 */
diff --git a/sound/pci/cs5535audio/cs5535audio.c b/sound/pci/cs5535audio/cs5535audio.c
index 9fc7f3827461..2c1213a35dcc 100644
--- a/sound/pci/cs5535audio/cs5535audio.c
+++ b/sound/pci/cs5535audio/cs5535audio.c
@@ -45,7 +45,7 @@ static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
45static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; 45static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
46static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; 46static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
47 47
48static struct pci_device_id snd_cs5535audio_ids[] = { 48static struct pci_device_id snd_cs5535audio_ids[] __devinitdata = {
49 { PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_CS5535_AUDIO, 49 { PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_CS5535_AUDIO,
50 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, 50 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },
51 { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_AUDIO, 51 { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_AUDIO,
diff --git a/sound/pci/emu10k1/emu10k1.c b/sound/pci/emu10k1/emu10k1.c
index 2dfa932f7825..42b11ba1d210 100644
--- a/sound/pci/emu10k1/emu10k1.c
+++ b/sound/pci/emu10k1/emu10k1.c
@@ -77,7 +77,7 @@ MODULE_PARM_DESC(subsystem, "Force card subsystem model.");
77/* 77/*
78 * Class 0401: 1102:0008 (rev 00) Subsystem: 1102:1001 -> Audigy2 Value Model:SB0400 78 * Class 0401: 1102:0008 (rev 00) Subsystem: 1102:1001 -> Audigy2 Value Model:SB0400
79 */ 79 */
80static struct pci_device_id snd_emu10k1_ids[] = { 80static struct pci_device_id snd_emu10k1_ids[] __devinitdata = {
81 { 0x1102, 0x0002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* EMU10K1 */ 81 { 0x1102, 0x0002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* EMU10K1 */
82 { 0x1102, 0x0004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1 }, /* Audigy */ 82 { 0x1102, 0x0004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1 }, /* Audigy */
83 { 0x1102, 0x0008, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1 }, /* Audigy 2 Value SB0400 */ 83 { 0x1102, 0x0008, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1 }, /* Audigy 2 Value SB0400 */
diff --git a/sound/pci/emu10k1/emu10k1x.c b/sound/pci/emu10k1/emu10k1x.c
index 3e332f398162..d51290c18167 100644
--- a/sound/pci/emu10k1/emu10k1x.c
+++ b/sound/pci/emu10k1/emu10k1x.c
@@ -36,7 +36,6 @@
36#include <linux/dma-mapping.h> 36#include <linux/dma-mapping.h>
37#include <linux/slab.h> 37#include <linux/slab.h>
38#include <linux/moduleparam.h> 38#include <linux/moduleparam.h>
39#include <linux/dma-mapping.h>
40#include <sound/core.h> 39#include <sound/core.h>
41#include <sound/initval.h> 40#include <sound/initval.h>
42#include <sound/pcm.h> 41#include <sound/pcm.h>
@@ -1596,7 +1595,7 @@ static void __devexit snd_emu10k1x_remove(struct pci_dev *pci)
1596} 1595}
1597 1596
1598// PCI IDs 1597// PCI IDs
1599static struct pci_device_id snd_emu10k1x_ids[] = { 1598static struct pci_device_id snd_emu10k1x_ids[] __devinitdata = {
1600 { 0x1102, 0x0006, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* Dell OEM version (EMU10K1) */ 1599 { 0x1102, 0x0006, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* Dell OEM version (EMU10K1) */
1601 { 0, } 1600 { 0, }
1602}; 1601};
diff --git a/sound/pci/ens1370.c b/sound/pci/ens1370.c
index a5533c86b0b6..ca9e34e88f62 100644
--- a/sound/pci/ens1370.c
+++ b/sound/pci/ens1370.c
@@ -446,7 +446,7 @@ struct ensoniq {
446 446
447static irqreturn_t snd_audiopci_interrupt(int irq, void *dev_id, struct pt_regs *regs); 447static irqreturn_t snd_audiopci_interrupt(int irq, void *dev_id, struct pt_regs *regs);
448 448
449static struct pci_device_id snd_audiopci_ids[] = { 449static struct pci_device_id snd_audiopci_ids[] __devinitdata = {
450#ifdef CHIP1370 450#ifdef CHIP1370
451 { 0x1274, 0x5000, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* ES1370 */ 451 { 0x1274, 0x5000, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* ES1370 */
452#endif 452#endif
diff --git a/sound/pci/es1938.c b/sound/pci/es1938.c
index 4d62fe439177..6f9094ca4fb4 100644
--- a/sound/pci/es1938.c
+++ b/sound/pci/es1938.c
@@ -242,7 +242,7 @@ struct es1938 {
242 242
243static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *regs); 243static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *regs);
244 244
245static struct pci_device_id snd_es1938_ids[] = { 245static struct pci_device_id snd_es1938_ids[] __devinitdata = {
246 { 0x125d, 0x1969, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* Solo-1 */ 246 { 0x125d, 0x1969, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* Solo-1 */
247 { 0, } 247 { 0, }
248}; 248};
diff --git a/sound/pci/es1968.c b/sound/pci/es1968.c
index e3ad17f53c29..5ff4175c7b6d 100644
--- a/sound/pci/es1968.c
+++ b/sound/pci/es1968.c
@@ -104,7 +104,6 @@
104#include <linux/slab.h> 104#include <linux/slab.h>
105#include <linux/gameport.h> 105#include <linux/gameport.h>
106#include <linux/moduleparam.h> 106#include <linux/moduleparam.h>
107#include <linux/dma-mapping.h>
108#include <linux/mutex.h> 107#include <linux/mutex.h>
109 108
110#include <sound/core.h> 109#include <sound/core.h>
@@ -593,7 +592,7 @@ struct es1968 {
593 592
594static irqreturn_t snd_es1968_interrupt(int irq, void *dev_id, struct pt_regs *regs); 593static irqreturn_t snd_es1968_interrupt(int irq, void *dev_id, struct pt_regs *regs);
595 594
596static struct pci_device_id snd_es1968_ids[] = { 595static struct pci_device_id snd_es1968_ids[] __devinitdata = {
597 /* Maestro 1 */ 596 /* Maestro 1 */
598 { 0x1285, 0x0100, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_MULTIMEDIA_AUDIO << 8, 0xffff00, TYPE_MAESTRO }, 597 { 0x1285, 0x0100, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_MULTIMEDIA_AUDIO << 8, 0xffff00, TYPE_MAESTRO },
599 /* Maestro 2 */ 598 /* Maestro 2 */
diff --git a/sound/pci/fm801.c b/sound/pci/fm801.c
index 6ab4aefbccf8..d72fc28c580e 100644
--- a/sound/pci/fm801.c
+++ b/sound/pci/fm801.c
@@ -199,7 +199,7 @@ struct fm801 {
199#endif 199#endif
200}; 200};
201 201
202static struct pci_device_id snd_fm801_ids[] = { 202static struct pci_device_id snd_fm801_ids[] __devinitdata = {
203 { 0x1319, 0x0801, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_MULTIMEDIA_AUDIO << 8, 0xffff00, 0, }, /* FM801 */ 203 { 0x1319, 0x0801, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_MULTIMEDIA_AUDIO << 8, 0xffff00, 0, }, /* FM801 */
204 { 0x5213, 0x0510, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_MULTIMEDIA_AUDIO << 8, 0xffff00, 0, }, /* Gallant Odyssey Sound 4 */ 204 { 0x5213, 0x0510, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_MULTIMEDIA_AUDIO << 8, 0xffff00, 0, }, /* Gallant Odyssey Sound 4 */
205 { 0, } 205 { 0, }
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 0ad60ae29011..e821d65afa11 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -1614,7 +1614,7 @@ static void __devexit azx_remove(struct pci_dev *pci)
1614} 1614}
1615 1615
1616/* PCI IDs */ 1616/* PCI IDs */
1617static struct pci_device_id azx_ids[] = { 1617static struct pci_device_id azx_ids[] __devinitdata = {
1618 { 0x8086, 0x2668, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH6 */ 1618 { 0x8086, 0x2668, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH6 */
1619 { 0x8086, 0x27d8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH7 */ 1619 { 0x8086, 0x27d8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ICH7 */
1620 { 0x8086, 0x269a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ESB2 */ 1620 { 0x8086, 0x269a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, AZX_DRIVER_ICH }, /* ESB2 */
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c
index bcfca159c6a2..40f000ba1362 100644
--- a/sound/pci/hda/patch_analog.c
+++ b/sound/pci/hda/patch_analog.c
@@ -799,10 +799,14 @@ static struct hda_board_config ad1986a_cfg_tbl[] = {
799 { .modelname = "laptop-eapd", .config = AD1986A_LAPTOP_EAPD }, 799 { .modelname = "laptop-eapd", .config = AD1986A_LAPTOP_EAPD },
800 { .pci_subvendor = 0x144d, .pci_subdevice = 0xc024, 800 { .pci_subvendor = 0x144d, .pci_subdevice = 0xc024,
801 .config = AD1986A_LAPTOP_EAPD }, /* Samsung R65-T2300 Charis */ 801 .config = AD1986A_LAPTOP_EAPD }, /* Samsung R65-T2300 Charis */
802 { .pci_subvendor = 0x1043, .pci_subdevice = 0x1153,
803 .config = AD1986A_LAPTOP_EAPD }, /* ASUS M9 */
802 { .pci_subvendor = 0x1043, .pci_subdevice = 0x1213, 804 { .pci_subvendor = 0x1043, .pci_subdevice = 0x1213,
803 .config = AD1986A_LAPTOP_EAPD }, /* ASUS A6J */ 805 .config = AD1986A_LAPTOP_EAPD }, /* ASUS A6J */
804 { .pci_subvendor = 0x1043, .pci_subdevice = 0x11f7, 806 { .pci_subvendor = 0x1043, .pci_subdevice = 0x11f7,
805 .config = AD1986A_LAPTOP_EAPD }, /* ASUS U5A */ 807 .config = AD1986A_LAPTOP_EAPD }, /* ASUS U5A */
808 { .pci_subvendor = 0x1043, .pci_subdevice = 0x1297,
809 .config = AD1986A_LAPTOP_EAPD }, /* ASUS Z62F */
806 { .pci_subvendor = 0x103c, .pci_subdevice = 0x30af, 810 { .pci_subvendor = 0x103c, .pci_subdevice = 0x30af,
807 .config = AD1986A_LAPTOP_EAPD }, /* HP Compaq Presario B2800 */ 811 .config = AD1986A_LAPTOP_EAPD }, /* HP Compaq Presario B2800 */
808 {} 812 {}
@@ -1330,12 +1334,8 @@ enum { AD1981_BASIC, AD1981_HP };
1330 1334
1331static struct hda_board_config ad1981_cfg_tbl[] = { 1335static struct hda_board_config ad1981_cfg_tbl[] = {
1332 { .modelname = "hp", .config = AD1981_HP }, 1336 { .modelname = "hp", .config = AD1981_HP },
1333 { .pci_subvendor = 0x103c, .pci_subdevice = 0x30aa, 1337 /* All HP models */
1334 .config = AD1981_HP }, /* HP nx6320 */ 1338 { .pci_subvendor = 0x103c, .config = AD1981_HP },
1335 { .pci_subvendor = 0x103c, .pci_subdevice = 0x309f,
1336 .config = AD1981_HP }, /* HP nx9420 AngelFire */
1337 { .pci_subvendor = 0x103c, .pci_subdevice = 0x30a2,
1338 .config = AD1981_HP }, /* HP nx9420 AngelFire */
1339 { .modelname = "basic", .config = AD1981_BASIC }, 1339 { .modelname = "basic", .config = AD1981_BASIC },
1340 {} 1340 {}
1341}; 1341};
@@ -2623,5 +2623,6 @@ struct hda_codec_preset snd_hda_preset_analog[] = {
2623 { .id = 0x11d41983, .name = "AD1983", .patch = patch_ad1983 }, 2623 { .id = 0x11d41983, .name = "AD1983", .patch = patch_ad1983 },
2624 { .id = 0x11d41986, .name = "AD1986A", .patch = patch_ad1986a }, 2624 { .id = 0x11d41986, .name = "AD1986A", .patch = patch_ad1986a },
2625 { .id = 0x11d41988, .name = "AD1988", .patch = patch_ad1988 }, 2625 { .id = 0x11d41988, .name = "AD1988", .patch = patch_ad1988 },
2626 { .id = 0x11d4198b, .name = "AD1988B", .patch = patch_ad1988 },
2626 {} /* terminator */ 2627 {} /* terminator */
2627}; 2628};
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 66bbdb60f50b..f0e9a9c90780 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -2148,6 +2148,7 @@ static struct hda_board_config alc880_cfg_tbl[] = {
2148 { .pci_subvendor = 0x1025, .pci_subdevice = 0x0087, .config = ALC880_6ST_DIG }, 2148 { .pci_subvendor = 0x1025, .pci_subdevice = 0x0087, .config = ALC880_6ST_DIG },
2149 { .pci_subvendor = 0x1297, .pci_subdevice = 0xc790, .config = ALC880_6ST_DIG }, /* Shuttle ST20G5 */ 2149 { .pci_subvendor = 0x1297, .pci_subdevice = 0xc790, .config = ALC880_6ST_DIG }, /* Shuttle ST20G5 */
2150 { .pci_subvendor = 0x1509, .pci_subdevice = 0x925d, .config = ALC880_6ST_DIG }, /* FIC P4M-915GD1 */ 2150 { .pci_subvendor = 0x1509, .pci_subdevice = 0x925d, .config = ALC880_6ST_DIG }, /* FIC P4M-915GD1 */
2151 { .pci_subvendor = 0x1695, .pci_subdevice = 0x4012, .config = ALC880_5ST_DIG }, /* Epox EP-5LDA+ GLi */
2151 2152
2152 { .modelname = "asus", .config = ALC880_ASUS }, 2153 { .modelname = "asus", .config = ALC880_ASUS },
2153 { .pci_subvendor = 0x1043, .pci_subdevice = 0x1964, .config = ALC880_ASUS_DIG }, 2154 { .pci_subvendor = 0x1043, .pci_subdevice = 0x1964, .config = ALC880_ASUS_DIG },
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index 715260787953..8c440fb98603 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -1212,8 +1212,8 @@ static hda_nid_t vaio_mux_nids[] = { 0x15 };
1212static struct hda_input_mux vaio_mux = { 1212static struct hda_input_mux vaio_mux = {
1213 .num_items = 2, 1213 .num_items = 2,
1214 .items = { 1214 .items = {
1215 /* { "HP", 0x0 }, 1215 /* { "HP", 0x0 }, */
1216 { "Unknown", 0x1 }, */ 1216 { "Line", 0x1 },
1217 { "Mic", 0x2 }, 1217 { "Mic", 0x2 },
1218 { "PCM", 0x3 }, 1218 { "PCM", 0x3 },
1219 } 1219 }
diff --git a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c
index 32f8415558a5..c56793b381e2 100644
--- a/sound/pci/ice1712/ice1712.c
+++ b/sound/pci/ice1712/ice1712.c
@@ -56,7 +56,6 @@
56#include <linux/dma-mapping.h> 56#include <linux/dma-mapping.h>
57#include <linux/slab.h> 57#include <linux/slab.h>
58#include <linux/moduleparam.h> 58#include <linux/moduleparam.h>
59#include <linux/dma-mapping.h>
60#include <linux/mutex.h> 59#include <linux/mutex.h>
61 60
62#include <sound/core.h> 61#include <sound/core.h>
@@ -108,7 +107,7 @@ module_param_array(dxr_enable, int, NULL, 0444);
108MODULE_PARM_DESC(dxr_enable, "Enable DXR support for Terratec DMX6FIRE."); 107MODULE_PARM_DESC(dxr_enable, "Enable DXR support for Terratec DMX6FIRE.");
109 108
110 109
111static struct pci_device_id snd_ice1712_ids[] = { 110static struct pci_device_id snd_ice1712_ids[] __devinitdata = {
112 { PCI_VENDOR_ID_ICE, PCI_DEVICE_ID_ICE_1712, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* ICE1712 */ 111 { PCI_VENDOR_ID_ICE, PCI_DEVICE_ID_ICE_1712, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, /* ICE1712 */
113 { 0, } 112 { 0, }
114}; 113};
diff --git a/sound/pci/ice1712/ice1724.c b/sound/pci/ice1712/ice1724.c
index fce616c2761f..b1c007e022d2 100644
--- a/sound/pci/ice1712/ice1724.c
+++ b/sound/pci/ice1712/ice1724.c
@@ -86,7 +86,7 @@ MODULE_PARM_DESC(model, "Use the given board model.");
86 86
87 87
88/* Both VT1720 and VT1724 have the same PCI IDs */ 88/* Both VT1720 and VT1724 have the same PCI IDs */
89static struct pci_device_id snd_vt1724_ids[] = { 89static struct pci_device_id snd_vt1724_ids[] __devinitdata = {
90 { PCI_VENDOR_ID_ICE, PCI_DEVICE_ID_VT1724, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, 90 { PCI_VENDOR_ID_ICE, PCI_DEVICE_ID_VT1724, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
91 { 0, } 91 { 0, }
92}; 92};
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
index ebbf2cf4ca0f..0df7602568e2 100644
--- a/sound/pci/intel8x0.c
+++ b/sound/pci/intel8x0.c
@@ -413,7 +413,7 @@ struct intel8x0 {
413 u32 int_sta_mask; /* interrupt status mask */ 413 u32 int_sta_mask; /* interrupt status mask */
414}; 414};
415 415
416static struct pci_device_id snd_intel8x0_ids[] = { 416static struct pci_device_id snd_intel8x0_ids[] __devinitdata = {
417 { 0x8086, 0x2415, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* 82801AA */ 417 { 0x8086, 0x2415, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* 82801AA */
418 { 0x8086, 0x2425, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* 82901AB */ 418 { 0x8086, 0x2425, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* 82901AB */
419 { 0x8086, 0x2445, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* 82801BA */ 419 { 0x8086, 0x2445, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* 82801BA */
@@ -1293,6 +1293,7 @@ static int snd_intel8x0_ali_ac97spdifout_close(struct snd_pcm_substream *substre
1293 return 0; 1293 return 0;
1294} 1294}
1295 1295
1296#if 0 // NYI
1296static int snd_intel8x0_ali_spdifin_open(struct snd_pcm_substream *substream) 1297static int snd_intel8x0_ali_spdifin_open(struct snd_pcm_substream *substream)
1297{ 1298{
1298 struct intel8x0 *chip = snd_pcm_substream_chip(substream); 1299 struct intel8x0 *chip = snd_pcm_substream_chip(substream);
@@ -1308,7 +1309,6 @@ static int snd_intel8x0_ali_spdifin_close(struct snd_pcm_substream *substream)
1308 return 0; 1309 return 0;
1309} 1310}
1310 1311
1311#if 0 // NYI
1312static int snd_intel8x0_ali_spdifout_open(struct snd_pcm_substream *substream) 1312static int snd_intel8x0_ali_spdifout_open(struct snd_pcm_substream *substream)
1313{ 1313{
1314 struct intel8x0 *chip = snd_pcm_substream_chip(substream); 1314 struct intel8x0 *chip = snd_pcm_substream_chip(substream);
@@ -1435,6 +1435,7 @@ static struct snd_pcm_ops snd_intel8x0_ali_ac97spdifout_ops = {
1435 .pointer = snd_intel8x0_pcm_pointer, 1435 .pointer = snd_intel8x0_pcm_pointer,
1436}; 1436};
1437 1437
1438#if 0 // NYI
1438static struct snd_pcm_ops snd_intel8x0_ali_spdifin_ops = { 1439static struct snd_pcm_ops snd_intel8x0_ali_spdifin_ops = {
1439 .open = snd_intel8x0_ali_spdifin_open, 1440 .open = snd_intel8x0_ali_spdifin_open,
1440 .close = snd_intel8x0_ali_spdifin_close, 1441 .close = snd_intel8x0_ali_spdifin_close,
@@ -1446,7 +1447,6 @@ static struct snd_pcm_ops snd_intel8x0_ali_spdifin_ops = {
1446 .pointer = snd_intel8x0_pcm_pointer, 1447 .pointer = snd_intel8x0_pcm_pointer,
1447}; 1448};
1448 1449
1449#if 0 // NYI
1450static struct snd_pcm_ops snd_intel8x0_ali_spdifout_ops = { 1450static struct snd_pcm_ops snd_intel8x0_ali_spdifout_ops = {
1451 .open = snd_intel8x0_ali_spdifout_open, 1451 .open = snd_intel8x0_ali_spdifout_open,
1452 .close = snd_intel8x0_ali_spdifout_close, 1452 .close = snd_intel8x0_ali_spdifout_close,
@@ -1582,7 +1582,7 @@ static struct ich_pcm_table ali_pcms[] __devinitdata = {
1582 { 1582 {
1583 .suffix = "IEC958", 1583 .suffix = "IEC958",
1584 .playback_ops = &snd_intel8x0_ali_ac97spdifout_ops, 1584 .playback_ops = &snd_intel8x0_ali_ac97spdifout_ops,
1585 .capture_ops = &snd_intel8x0_ali_spdifin_ops, 1585 /* .capture_ops = &snd_intel8x0_ali_spdifin_ops, */
1586 .prealloc_size = 64 * 1024, 1586 .prealloc_size = 64 * 1024,
1587 .prealloc_max_size = 128 * 1024, 1587 .prealloc_max_size = 128 * 1024,
1588 .ac97_idx = ALID_AC97SPDIFOUT, 1588 .ac97_idx = ALID_AC97SPDIFOUT,
diff --git a/sound/pci/intel8x0m.c b/sound/pci/intel8x0m.c
index 47e26aaa9ad7..720635f0cb81 100644
--- a/sound/pci/intel8x0m.c
+++ b/sound/pci/intel8x0m.c
@@ -224,7 +224,7 @@ struct intel8x0m {
224 unsigned int pcm_pos_shift; 224 unsigned int pcm_pos_shift;
225}; 225};
226 226
227static struct pci_device_id snd_intel8x0m_ids[] = { 227static struct pci_device_id snd_intel8x0m_ids[] __devinitdata = {
228 { 0x8086, 0x2416, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* 82801AA */ 228 { 0x8086, 0x2416, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* 82801AA */
229 { 0x8086, 0x2426, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* 82901AB */ 229 { 0x8086, 0x2426, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* 82901AB */
230 { 0x8086, 0x2446, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* 82801BA */ 230 { 0x8086, 0x2446, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DEVICE_INTEL }, /* 82801BA */
diff --git a/sound/pci/korg1212/korg1212.c b/sound/pci/korg1212/korg1212.c
index 4721c096335e..e39fad1a4200 100644
--- a/sound/pci/korg1212/korg1212.c
+++ b/sound/pci/korg1212/korg1212.c
@@ -424,7 +424,7 @@ module_param_array(enable, bool, NULL, 0444);
424MODULE_PARM_DESC(enable, "Enable Korg 1212 soundcard."); 424MODULE_PARM_DESC(enable, "Enable Korg 1212 soundcard.");
425MODULE_AUTHOR("Haroldo Gamal <gamal@alternex.com.br>"); 425MODULE_AUTHOR("Haroldo Gamal <gamal@alternex.com.br>");
426 426
427static struct pci_device_id snd_korg1212_ids[] = { 427static struct pci_device_id snd_korg1212_ids[] __devinitdata = {
428 { 428 {
429 .vendor = 0x10b5, 429 .vendor = 0x10b5,
430 .device = 0x906d, 430 .device = 0x906d,
diff --git a/sound/pci/maestro3.c b/sound/pci/maestro3.c
index 9c90d901e6b9..1928e06b6d82 100644
--- a/sound/pci/maestro3.c
+++ b/sound/pci/maestro3.c
@@ -41,7 +41,6 @@
41#include <linux/slab.h> 41#include <linux/slab.h>
42#include <linux/vmalloc.h> 42#include <linux/vmalloc.h>
43#include <linux/moduleparam.h> 43#include <linux/moduleparam.h>
44#include <linux/dma-mapping.h>
45#include <sound/core.h> 44#include <sound/core.h>
46#include <sound/info.h> 45#include <sound/info.h>
47#include <sound/control.h> 46#include <sound/control.h>
@@ -870,7 +869,7 @@ struct snd_m3 {
870/* 869/*
871 * pci ids 870 * pci ids
872 */ 871 */
873static struct pci_device_id snd_m3_ids[] = { 872static struct pci_device_id snd_m3_ids[] __devinitdata = {
874 {PCI_VENDOR_ID_ESS, PCI_DEVICE_ID_ESS_ALLEGRO_1, PCI_ANY_ID, PCI_ANY_ID, 873 {PCI_VENDOR_ID_ESS, PCI_DEVICE_ID_ESS_ALLEGRO_1, PCI_ANY_ID, PCI_ANY_ID,
875 PCI_CLASS_MULTIMEDIA_AUDIO << 8, 0xffff00, 0}, 874 PCI_CLASS_MULTIMEDIA_AUDIO << 8, 0xffff00, 0},
876 {PCI_VENDOR_ID_ESS, PCI_DEVICE_ID_ESS_ALLEGRO, PCI_ANY_ID, PCI_ANY_ID, 875 {PCI_VENDOR_ID_ESS, PCI_DEVICE_ID_ESS_ALLEGRO, PCI_ANY_ID, PCI_ANY_ID,
diff --git a/sound/pci/mixart/mixart.c b/sound/pci/mixart/mixart.c
index b5a095052d4c..09cc0786495a 100644
--- a/sound/pci/mixart/mixart.c
+++ b/sound/pci/mixart/mixart.c
@@ -28,7 +28,6 @@
28#include <linux/dma-mapping.h> 28#include <linux/dma-mapping.h>
29#include <linux/moduleparam.h> 29#include <linux/moduleparam.h>
30#include <linux/mutex.h> 30#include <linux/mutex.h>
31#include <linux/dma-mapping.h>
32 31
33#include <sound/core.h> 32#include <sound/core.h>
34#include <sound/initval.h> 33#include <sound/initval.h>
@@ -62,7 +61,7 @@ MODULE_PARM_DESC(enable, "Enable Digigram " CARD_NAME " soundcard.");
62/* 61/*
63 */ 62 */
64 63
65static struct pci_device_id snd_mixart_ids[] = { 64static struct pci_device_id snd_mixart_ids[] __devinitdata = {
66 { 0x1057, 0x0003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* MC8240 */ 65 { 0x1057, 0x0003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* MC8240 */
67 { 0, } 66 { 0, }
68}; 67};
diff --git a/sound/pci/nm256/nm256.c b/sound/pci/nm256/nm256.c
index cc297abc9d11..b92d6600deb9 100644
--- a/sound/pci/nm256/nm256.c
+++ b/sound/pci/nm256/nm256.c
@@ -263,7 +263,7 @@ struct nm256 {
263/* 263/*
264 * PCI ids 264 * PCI ids
265 */ 265 */
266static struct pci_device_id snd_nm256_ids[] = { 266static struct pci_device_id snd_nm256_ids[] __devinitdata = {
267 {PCI_VENDOR_ID_NEOMAGIC, PCI_DEVICE_ID_NEOMAGIC_NM256AV_AUDIO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 267 {PCI_VENDOR_ID_NEOMAGIC, PCI_DEVICE_ID_NEOMAGIC_NM256AV_AUDIO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
268 {PCI_VENDOR_ID_NEOMAGIC, PCI_DEVICE_ID_NEOMAGIC_NM256ZX_AUDIO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 268 {PCI_VENDOR_ID_NEOMAGIC, PCI_DEVICE_ID_NEOMAGIC_NM256ZX_AUDIO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
269 {PCI_VENDOR_ID_NEOMAGIC, PCI_DEVICE_ID_NEOMAGIC_NM256XL_PLUS_AUDIO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 269 {PCI_VENDOR_ID_NEOMAGIC, PCI_DEVICE_ID_NEOMAGIC_NM256XL_PLUS_AUDIO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
diff --git a/sound/pci/pcxhr/pcxhr.c b/sound/pci/pcxhr/pcxhr.c
index 35875c8aa299..dafa2235abaa 100644
--- a/sound/pci/pcxhr/pcxhr.c
+++ b/sound/pci/pcxhr/pcxhr.c
@@ -30,7 +30,6 @@
30#include <linux/delay.h> 30#include <linux/delay.h>
31#include <linux/moduleparam.h> 31#include <linux/moduleparam.h>
32#include <linux/mutex.h> 32#include <linux/mutex.h>
33#include <linux/dma-mapping.h>
34 33
35#include <sound/core.h> 34#include <sound/core.h>
36#include <sound/initval.h> 35#include <sound/initval.h>
@@ -74,7 +73,7 @@ enum {
74 PCI_ID_LAST 73 PCI_ID_LAST
75}; 74};
76 75
77static struct pci_device_id pcxhr_ids[] = { 76static struct pci_device_id pcxhr_ids[] __devinitdata = {
78 { 0x10b5, 0x9656, 0x1369, 0xb001, 0, 0, PCI_ID_VX882HR, }, /* VX882HR */ 77 { 0x10b5, 0x9656, 0x1369, 0xb001, 0, 0, PCI_ID_VX882HR, }, /* VX882HR */
79 { 0x10b5, 0x9656, 0x1369, 0xb101, 0, 0, PCI_ID_PCX882HR, }, /* PCX882HR */ 78 { 0x10b5, 0x9656, 0x1369, 0xb101, 0, 0, PCI_ID_PCX882HR, }, /* PCX882HR */
80 { 0x10b5, 0x9656, 0x1369, 0xb201, 0, 0, PCI_ID_VX881HR, }, /* VX881HR */ 79 { 0x10b5, 0x9656, 0x1369, 0xb201, 0, 0, PCI_ID_VX881HR, }, /* VX881HR */
diff --git a/sound/pci/pcxhr/pcxhr_hwdep.c b/sound/pci/pcxhr/pcxhr_hwdep.c
index 03517c10e99c..369c19fea985 100644
--- a/sound/pci/pcxhr/pcxhr_hwdep.c
+++ b/sound/pci/pcxhr/pcxhr_hwdep.c
@@ -385,8 +385,8 @@ static int pcxhr_hwdep_dsp_load(struct snd_hwdep *hw,
385 fw.size = dsp->length; 385 fw.size = dsp->length;
386 fw.data = vmalloc(fw.size); 386 fw.data = vmalloc(fw.size);
387 if (! fw.data) { 387 if (! fw.data) {
388 snd_printk(KERN_ERR "pcxhr: cannot allocate dsp image (%d bytes)\n", 388 snd_printk(KERN_ERR "pcxhr: cannot allocate dsp image (%lu bytes)\n",
389 fw.size); 389 (unsigned long)fw.size);
390 return -ENOMEM; 390 return -ENOMEM;
391 } 391 }
392 if (copy_from_user(fw.data, dsp->image, dsp->length)) { 392 if (copy_from_user(fw.data, dsp->image, dsp->length)) {
diff --git a/sound/pci/riptide/riptide.c b/sound/pci/riptide/riptide.c
index f148ee434a6b..d8cc985d7241 100644
--- a/sound/pci/riptide/riptide.c
+++ b/sound/pci/riptide/riptide.c
@@ -506,7 +506,7 @@ static int riptide_reset(struct cmdif *cif, struct snd_riptide *chip);
506/* 506/*
507 */ 507 */
508 508
509static struct pci_device_id snd_riptide_ids[] = { 509static struct pci_device_id snd_riptide_ids[] __devinitdata = {
510 { 510 {
511 .vendor = 0x127a,.device = 0x4310, 511 .vendor = 0x127a,.device = 0x4310,
512 .subvendor = PCI_ANY_ID,.subdevice = PCI_ANY_ID, 512 .subvendor = PCI_ANY_ID,.subdevice = PCI_ANY_ID,
@@ -527,7 +527,7 @@ static struct pci_device_id snd_riptide_ids[] = {
527}; 527};
528 528
529#ifdef SUPPORT_JOYSTICK 529#ifdef SUPPORT_JOYSTICK
530static struct pci_device_id snd_riptide_joystick_ids[] = { 530static struct pci_device_id snd_riptide_joystick_ids[] __devinitdata = {
531 { 531 {
532 .vendor = 0x127a,.device = 0x4312, 532 .vendor = 0x127a,.device = 0x4312,
533 .subvendor = PCI_ANY_ID,.subdevice = PCI_ANY_ID, 533 .subvendor = PCI_ANY_ID,.subdevice = PCI_ANY_ID,
diff --git a/sound/pci/rme32.c b/sound/pci/rme32.c
index ab78544bf042..55b1d4838d97 100644
--- a/sound/pci/rme32.c
+++ b/sound/pci/rme32.c
@@ -227,7 +227,7 @@ struct rme32 {
227 struct snd_kcontrol *spdif_ctl; 227 struct snd_kcontrol *spdif_ctl;
228}; 228};
229 229
230static struct pci_device_id snd_rme32_ids[] = { 230static struct pci_device_id snd_rme32_ids[] __devinitdata = {
231 {PCI_VENDOR_ID_XILINX_RME, PCI_DEVICE_ID_RME_DIGI32, 231 {PCI_VENDOR_ID_XILINX_RME, PCI_DEVICE_ID_RME_DIGI32,
232 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,}, 232 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0,},
233 {PCI_VENDOR_ID_XILINX_RME, PCI_DEVICE_ID_RME_DIGI32_8, 233 {PCI_VENDOR_ID_XILINX_RME, PCI_DEVICE_ID_RME_DIGI32_8,
diff --git a/sound/pci/rme96.c b/sound/pci/rme96.c
index 6c2a9f4a7659..3c1bc533d511 100644
--- a/sound/pci/rme96.c
+++ b/sound/pci/rme96.c
@@ -232,7 +232,7 @@ struct rme96 {
232 struct snd_kcontrol *spdif_ctl; 232 struct snd_kcontrol *spdif_ctl;
233}; 233};
234 234
235static struct pci_device_id snd_rme96_ids[] = { 235static struct pci_device_id snd_rme96_ids[] __devinitdata = {
236 { PCI_VENDOR_ID_XILINX, PCI_DEVICE_ID_RME_DIGI96, 236 { PCI_VENDOR_ID_XILINX, PCI_DEVICE_ID_RME_DIGI96,
237 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, 237 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },
238 { PCI_VENDOR_ID_XILINX, PCI_DEVICE_ID_RME_DIGI96_8, 238 { PCI_VENDOR_ID_XILINX, PCI_DEVICE_ID_RME_DIGI96_8,
diff --git a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c
index ebf7a2b86c23..61f82f0d5cc6 100644
--- a/sound/pci/rme9652/hdsp.c
+++ b/sound/pci/rme9652/hdsp.c
@@ -568,7 +568,7 @@ static void snd_hammerfall_free_buffer(struct snd_dma_buffer *dmab, struct pci_d
568} 568}
569 569
570 570
571static struct pci_device_id snd_hdsp_ids[] = { 571static struct pci_device_id snd_hdsp_ids[] __devinitdata = {
572 { 572 {
573 .vendor = PCI_VENDOR_ID_XILINX, 573 .vendor = PCI_VENDOR_ID_XILINX,
574 .device = PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP, 574 .device = PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP,
diff --git a/sound/pci/rme9652/hdspm.c b/sound/pci/rme9652/hdspm.c
index b5538efd146b..722b9e6ce54a 100644
--- a/sound/pci/rme9652/hdspm.c
+++ b/sound/pci/rme9652/hdspm.c
@@ -426,7 +426,7 @@ static char channel_map_madi_qs[HDSPM_MAX_CHANNELS] = {
426}; 426};
427 427
428 428
429static struct pci_device_id snd_hdspm_ids[] = { 429static struct pci_device_id snd_hdspm_ids[] __devinitdata = {
430 { 430 {
431 .vendor = PCI_VENDOR_ID_XILINX, 431 .vendor = PCI_VENDOR_ID_XILINX,
432 .device = PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP_MADI, 432 .device = PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP_MADI,
diff --git a/sound/pci/rme9652/rme9652.c b/sound/pci/rme9652/rme9652.c
index a687eb63236f..75d6406303d3 100644
--- a/sound/pci/rme9652/rme9652.c
+++ b/sound/pci/rme9652/rme9652.c
@@ -315,7 +315,7 @@ static void snd_hammerfall_free_buffer(struct snd_dma_buffer *dmab, struct pci_d
315} 315}
316 316
317 317
318static struct pci_device_id snd_rme9652_ids[] = { 318static struct pci_device_id snd_rme9652_ids[] __devinitdata = {
319 { 319 {
320 .vendor = 0x10ee, 320 .vendor = 0x10ee,
321 .device = 0x3fc4, 321 .device = 0x3fc4,
diff --git a/sound/pci/sonicvibes.c b/sound/pci/sonicvibes.c
index 2d66a09fe5ee..91f8bf3ae9fa 100644
--- a/sound/pci/sonicvibes.c
+++ b/sound/pci/sonicvibes.c
@@ -243,7 +243,7 @@ struct sonicvibes {
243#endif 243#endif
244}; 244};
245 245
246static struct pci_device_id snd_sonic_ids[] = { 246static struct pci_device_id snd_sonic_ids[] __devinitdata = {
247 { 0x5333, 0xca00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, 247 { 0x5333, 0xca00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },
248 { 0, } 248 { 0, }
249}; 249};
diff --git a/sound/pci/trident/trident.c b/sound/pci/trident/trident.c
index b4538045049f..9624a5f2b875 100644
--- a/sound/pci/trident/trident.c
+++ b/sound/pci/trident/trident.c
@@ -63,7 +63,7 @@ MODULE_PARM_DESC(pcm_channels, "Number of hardware channels assigned for PCM.");
63module_param_array(wavetable_size, int, NULL, 0444); 63module_param_array(wavetable_size, int, NULL, 0444);
64MODULE_PARM_DESC(wavetable_size, "Maximum memory size in kB for wavetable synth."); 64MODULE_PARM_DESC(wavetable_size, "Maximum memory size in kB for wavetable synth.");
65 65
66static struct pci_device_id snd_trident_ids[] = { 66static struct pci_device_id snd_trident_ids[] __devinitdata = {
67 {PCI_DEVICE(PCI_VENDOR_ID_TRIDENT, PCI_DEVICE_ID_TRIDENT_4DWAVE_DX), 67 {PCI_DEVICE(PCI_VENDOR_ID_TRIDENT, PCI_DEVICE_ID_TRIDENT_4DWAVE_DX),
68 PCI_CLASS_MULTIMEDIA_AUDIO << 8, 0xffff00, 0}, 68 PCI_CLASS_MULTIMEDIA_AUDIO << 8, 0xffff00, 0},
69 {PCI_DEVICE(PCI_VENDOR_ID_TRIDENT, PCI_DEVICE_ID_TRIDENT_4DWAVE_NX), 69 {PCI_DEVICE(PCI_VENDOR_ID_TRIDENT, PCI_DEVICE_ID_TRIDENT_4DWAVE_NX),
diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c
index 0f171dd1377b..39daf62d2bad 100644
--- a/sound/pci/via82xx.c
+++ b/sound/pci/via82xx.c
@@ -123,6 +123,7 @@ module_param(enable, bool, 0444);
123#define VIA_REV_8233A 0x40 /* 1 rec, 1 multi-pb, spdf */ 123#define VIA_REV_8233A 0x40 /* 1 rec, 1 multi-pb, spdf */
124#define VIA_REV_8235 0x50 /* 2 rec, 4 pb, 1 multi-pb, spdif */ 124#define VIA_REV_8235 0x50 /* 2 rec, 4 pb, 1 multi-pb, spdif */
125#define VIA_REV_8237 0x60 125#define VIA_REV_8237 0x60
126#define VIA_REV_8251 0x70
126 127
127/* 128/*
128 * Direct registers 129 * Direct registers
@@ -395,7 +396,7 @@ struct via82xx {
395#endif 396#endif
396}; 397};
397 398
398static struct pci_device_id snd_via82xx_ids[] = { 399static struct pci_device_id snd_via82xx_ids[] __devinitdata = {
399 /* 0x1106, 0x3058 */ 400 /* 0x1106, 0x3058 */
400 { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, PCI_ANY_ID, PCI_ANY_ID, 0, 0, TYPE_CARD_VIA686, }, /* 686A */ 401 { PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, PCI_ANY_ID, PCI_ANY_ID, 0, 0, TYPE_CARD_VIA686, }, /* 686A */
401 /* 0x1106, 0x3059 */ 402 /* 0x1106, 0x3059 */
@@ -862,6 +863,11 @@ static snd_pcm_uframes_t snd_via8233_pcm_pointer(struct snd_pcm_substream *subst
862 if (!status) 863 if (!status)
863 status = inb(VIADEV_REG(viadev, OFFSET_STATUS)); 864 status = inb(VIADEV_REG(viadev, OFFSET_STATUS));
864 865
866 /* An apparent bug in the 8251 is worked around by sending a
867 * REG_CTRL_START. */
868 if (chip->revision == VIA_REV_8251 && (status & VIA_REG_STAT_EOL))
869 snd_via82xx_pcm_trigger(substream, SNDRV_PCM_TRIGGER_START);
870
865 if (!(status & VIA_REG_STAT_ACTIVE)) { 871 if (!(status & VIA_REG_STAT_ACTIVE)) {
866 res = 0; 872 res = 0;
867 goto unlock; 873 goto unlock;
@@ -2313,6 +2319,7 @@ static struct via823x_info via823x_cards[] __devinitdata = {
2313 { VIA_REV_8233A, "VIA 8233A", TYPE_VIA8233A }, 2319 { VIA_REV_8233A, "VIA 8233A", TYPE_VIA8233A },
2314 { VIA_REV_8235, "VIA 8235", TYPE_VIA8233 }, 2320 { VIA_REV_8235, "VIA 8235", TYPE_VIA8233 },
2315 { VIA_REV_8237, "VIA 8237", TYPE_VIA8233 }, 2321 { VIA_REV_8237, "VIA 8237", TYPE_VIA8233 },
2322 { VIA_REV_8251, "VIA 8251", TYPE_VIA8233 },
2316}; 2323};
2317 2324
2318/* 2325/*
@@ -2325,7 +2332,7 @@ struct dxs_whitelist {
2325 short action; /* new dxs_support value */ 2332 short action; /* new dxs_support value */
2326}; 2333};
2327 2334
2328static int __devinit check_dxs_list(struct pci_dev *pci) 2335static int __devinit check_dxs_list(struct pci_dev *pci, int revision)
2329{ 2336{
2330 static struct dxs_whitelist whitelist[] = { 2337 static struct dxs_whitelist whitelist[] = {
2331 { .subvendor = 0x1005, .subdevice = 0x4710, .action = VIA_DXS_ENABLE }, /* Avance Logic Mobo */ 2338 { .subvendor = 0x1005, .subdevice = 0x4710, .action = VIA_DXS_ENABLE }, /* Avance Logic Mobo */
@@ -2342,6 +2349,7 @@ static int __devinit check_dxs_list(struct pci_dev *pci)
2342 { .subvendor = 0x1043, .subdevice = 0x810d, .action = VIA_DXS_SRC }, /* ASUS */ 2349 { .subvendor = 0x1043, .subdevice = 0x810d, .action = VIA_DXS_SRC }, /* ASUS */
2343 { .subvendor = 0x1043, .subdevice = 0x812a, .action = VIA_DXS_SRC }, /* ASUS A8V Deluxe */ 2350 { .subvendor = 0x1043, .subdevice = 0x812a, .action = VIA_DXS_SRC }, /* ASUS A8V Deluxe */
2344 { .subvendor = 0x1043, .subdevice = 0x8174, .action = VIA_DXS_SRC }, /* ASUS */ 2351 { .subvendor = 0x1043, .subdevice = 0x8174, .action = VIA_DXS_SRC }, /* ASUS */
2352 { .subvendor = 0x1043, .subdevice = 0x81b9, .action = VIA_DXS_SRC }, /* ASUS A8V-MX */
2345 { .subvendor = 0x1071, .subdevice = 0x8375, .action = VIA_DXS_NO_VRA }, /* Vobis/Yakumo/Mitac notebook */ 2353 { .subvendor = 0x1071, .subdevice = 0x8375, .action = VIA_DXS_NO_VRA }, /* Vobis/Yakumo/Mitac notebook */
2346 { .subvendor = 0x1071, .subdevice = 0x8399, .action = VIA_DXS_NO_VRA }, /* Umax AB 595T (VIA K8N800A - VT8237) */ 2354 { .subvendor = 0x1071, .subdevice = 0x8399, .action = VIA_DXS_NO_VRA }, /* Umax AB 595T (VIA K8N800A - VT8237) */
2347 { .subvendor = 0x10cf, .subdevice = 0x118e, .action = VIA_DXS_ENABLE }, /* FSC laptop */ 2355 { .subvendor = 0x10cf, .subdevice = 0x118e, .action = VIA_DXS_ENABLE }, /* FSC laptop */
@@ -2405,6 +2413,10 @@ static int __devinit check_dxs_list(struct pci_dev *pci)
2405 } 2413 }
2406 } 2414 }
2407 2415
2416 /* for newer revision, default to DXS_SRC */
2417 if (revision >= VIA_REV_8235)
2418 return VIA_DXS_SRC;
2419
2408 /* 2420 /*
2409 * not detected, try 48k rate only to be sure. 2421 * not detected, try 48k rate only to be sure.
2410 */ 2422 */
@@ -2449,7 +2461,7 @@ static int __devinit snd_via82xx_probe(struct pci_dev *pci,
2449 } 2461 }
2450 if (chip_type != TYPE_VIA8233A) { 2462 if (chip_type != TYPE_VIA8233A) {
2451 if (dxs_support == VIA_DXS_AUTO) 2463 if (dxs_support == VIA_DXS_AUTO)
2452 dxs_support = check_dxs_list(pci); 2464 dxs_support = check_dxs_list(pci, revision);
2453 /* force to use VIA8233 or 8233A model according to 2465 /* force to use VIA8233 or 8233A model according to
2454 * dxs_support module option 2466 * dxs_support module option
2455 */ 2467 */
diff --git a/sound/pci/via82xx_modem.c b/sound/pci/via82xx_modem.c
index 22ce4d309929..ef97e50cd6c2 100644
--- a/sound/pci/via82xx_modem.c
+++ b/sound/pci/via82xx_modem.c
@@ -261,7 +261,7 @@ struct via82xx_modem {
261 struct snd_info_entry *proc_entry; 261 struct snd_info_entry *proc_entry;
262}; 262};
263 263
264static struct pci_device_id snd_via82xx_modem_ids[] = { 264static struct pci_device_id snd_via82xx_modem_ids[] __devinitdata = {
265 { 0x1106, 0x3068, PCI_ANY_ID, PCI_ANY_ID, 0, 0, TYPE_CARD_VIA82XX_MODEM, }, 265 { 0x1106, 0x3068, PCI_ANY_ID, PCI_ANY_ID, 0, 0, TYPE_CARD_VIA82XX_MODEM, },
266 { 0, } 266 { 0, }
267}; 267};
diff --git a/sound/pci/vx222/vx222.c b/sound/pci/vx222/vx222.c
index c816ddf1b215..0f1ebb010a5e 100644
--- a/sound/pci/vx222/vx222.c
+++ b/sound/pci/vx222/vx222.c
@@ -60,7 +60,7 @@ enum {
60 VX_PCI_VX222_NEW 60 VX_PCI_VX222_NEW
61}; 61};
62 62
63static struct pci_device_id snd_vx222_ids[] = { 63static struct pci_device_id snd_vx222_ids[] __devinitdata = {
64 { 0x10b5, 0x9050, 0x1369, PCI_ANY_ID, 0, 0, VX_PCI_VX222_OLD, }, /* PLX */ 64 { 0x10b5, 0x9050, 0x1369, PCI_ANY_ID, 0, 0, VX_PCI_VX222_OLD, }, /* PLX */
65 { 0x10b5, 0x9030, 0x1369, PCI_ANY_ID, 0, 0, VX_PCI_VX222_NEW, }, /* PLX */ 65 { 0x10b5, 0x9030, 0x1369, PCI_ANY_ID, 0, 0, VX_PCI_VX222_NEW, }, /* PLX */
66 { 0, } 66 { 0, }
diff --git a/sound/pci/ymfpci/ymfpci.c b/sound/pci/ymfpci/ymfpci.c
index db57ce939fa8..65ebf5f1933a 100644
--- a/sound/pci/ymfpci/ymfpci.c
+++ b/sound/pci/ymfpci/ymfpci.c
@@ -70,7 +70,7 @@ MODULE_PARM_DESC(rear_switch, "Enable shared rear/line-in switch");
70module_param_array(rear_swap, bool, NULL, 0444); 70module_param_array(rear_swap, bool, NULL, 0444);
71MODULE_PARM_DESC(rear_swap, "Swap rear channels (must be enabled for correct IEC958 (S/PDIF)) output"); 71MODULE_PARM_DESC(rear_swap, "Swap rear channels (must be enabled for correct IEC958 (S/PDIF)) output");
72 72
73static struct pci_device_id snd_ymfpci_ids[] = { 73static struct pci_device_id snd_ymfpci_ids[] __devinitdata = {
74 { 0x1073, 0x0004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* YMF724 */ 74 { 0x1073, 0x0004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* YMF724 */
75 { 0x1073, 0x000d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* YMF724F */ 75 { 0x1073, 0x000d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* YMF724F */
76 { 0x1073, 0x000a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* YMF740 */ 76 { 0x1073, 0x000a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* YMF740 */
diff --git a/sound/pcmcia/Kconfig b/sound/pcmcia/Kconfig
index 5d1b0b762efa..c9fa1a2bc58b 100644
--- a/sound/pcmcia/Kconfig
+++ b/sound/pcmcia/Kconfig
@@ -5,7 +5,7 @@ menu "PCMCIA devices"
5 5
6config SND_VXPOCKET 6config SND_VXPOCKET
7 tristate "Digigram VXpocket" 7 tristate "Digigram VXpocket"
8 depends on SND && PCMCIA && ISA 8 depends on SND && PCMCIA
9 select SND_VX_LIB 9 select SND_VX_LIB
10 help 10 help
11 Say Y here to include support for Digigram VXpocket and 11 Say Y here to include support for Digigram VXpocket and
@@ -16,7 +16,7 @@ config SND_VXPOCKET
16 16
17config SND_PDAUDIOCF 17config SND_PDAUDIOCF
18 tristate "Sound Core PDAudioCF" 18 tristate "Sound Core PDAudioCF"
19 depends on SND && PCMCIA && ISA 19 depends on SND && PCMCIA
20 select SND_PCM 20 select SND_PCM
21 help 21 help
22 Say Y here to include support for Sound Core PDAudioCF 22 Say Y here to include support for Sound Core PDAudioCF
diff --git a/sound/ppc/toonie.c b/sound/ppc/toonie.c
index 4e595172e423..1ac7c8552f50 100644
--- a/sound/ppc/toonie.c
+++ b/sound/ppc/toonie.c
@@ -335,7 +335,7 @@ static void toonie_cleanup(struct snd_pmac *chip)
335 chip->mixer_data = NULL; 335 chip->mixer_data = NULL;
336} 336}
337 337
338int snd_pmac_toonie_init(struct snd_pmac *chip) 338int __init snd_pmac_toonie_init(struct snd_pmac *chip)
339{ 339{
340 struct pmac_toonie *mix; 340 struct pmac_toonie *mix;
341 341
diff --git a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h
index 0992a0923f1a..9351846d7a9d 100644
--- a/sound/usb/usbquirks.h
+++ b/sound/usb/usbquirks.h
@@ -1531,6 +1531,15 @@ YAMAHA_DEVICE(0x7010, "UB99"),
1531 } 1531 }
1532}, 1532},
1533{ 1533{
1534 USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0014),
1535 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1536 .vendor_name = "TerraTec",
1537 .product_name = "PHASE 26",
1538 .ifnum = 3,
1539 .type = QUIRK_MIDI_STANDARD_INTERFACE
1540 }
1541},
1542{
1534 USB_DEVICE(0x0ccd, 0x0035), 1543 USB_DEVICE(0x0ccd, 0x0035),
1535 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1544 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
1536 .vendor_name = "Miditech", 1545 .vendor_name = "Miditech",